3

Telefunc

 1 year ago
source link: https://telefunc.com/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
telefunc.6a5581b5.svg

Telefunc

// CreateTodo.telefunc.js
// Environment: Node.js server

import { shield, Abort, getContext } from 'telefunc'

// Telefunc makes functions exported in `*.telefunc.js`
// remotely callable from the browser.
export { onNewTodo }

// `shield()` is auto-generated when using TypeScript
shield(onNewTodo, [{ text: shield.type.string }])
async function onNewTodo({ text }) {
  const { user } = getContext()
  if (user === null) throw Abort()

  // With an ORM:
  const todoItem = new Todo({text, authorId: user.id})
  await todoItem.save()

  // Or with SQL:
  await execute(
    "INSERT INTO todo_items VALUES (:text, :authorId)",
    { text, authorId: user.id }
  )
}
Server
// CreateTodo.jsx
// Environment: Browser

// The `CreateTodo.telefunc.js` file is not loaded:
// Telefunc transforms `*.telefunc.js` imports into a
// thin HTTP client.
import { onNewTodo } from './CreateTodo.telefunc.js'

async function onClick(form) {
  const text = form.input.value
  // Behind the scenes, Telefunc makes an HTTP request
  await onNewTodo({ text })
}

function CreateTodo() {
  return (
    <form>
      <input input="text"></input>
      <button onClick={onClick}>Add To-Do</button>
    </form>
  )
}
Browser

💫 Simple

With Telefunc, you get a simple frontend-backend relationship: it's just a set of remote functions.

Your frontend can directly use any SQL/ORM query to retrieve & mutate data.

shield.67066f51.svg Permissions

Telefunc enables programmatically defined permissions. It's both simple and flexible.

Telefunc introduces new techniques that enable advanced permissions and increased safety.

🔌 Any Stack

Telefunc supports Next.js, CRA, Nuxt, SvelteKit, Vite, vite-plugin-ssr, React Native and any framework based on Webpack, Babel, Parcel or Vite.

You want to change your stack? Bring Telefunc along.

⚡ Performance

The frontend can directly tap into the full power of the server. You can use highly tailored & optimized SQL/ORM queries for highly performant data retrieval and mutations.

typescript.139ae451.svg TypeScript

Seamless TypeScript support out-of-the-box.

Use your types across the frontend and backend for end-to-end type safety, including runtime validation.

💎 Rock-solid

The source code of Telefunc has no known bug (bugs are fixed swiftly) and every release is assailed against a heavy suite of automated tests.

Have a question? Want a feature? Found a bug? Join our Discord or open a GitHub ticket.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK