raviqqe / oneRPC

The router-less serverless RPC framework for TypeScript

Home Page:https://raviqqe.github.io/oneRPC

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

oneRPC

GitHub Action Codecov npm License

The router-less serverless RPC framework.

oneRPC is a minimal RPC library to convert a server-side function of a type, (input: T) => Promise<S> into (request: Request) => Promise<Response> and make it callable from the client side in a type-safe way.

Currently, we support Next.js Route Handlers and AWS Lambda.

Features

  • ๐Ÿ”ฎ Seamless client-server communication

    You can call remote procedures just as seamless as calling local functions.

  • ๐Ÿ›ก๏ธ Type safe

    Server-client communication is made safe with request and response types in TypeScript which are used by both client and server.

  • ๐Ÿ”ฅ Serverless first

    Routing is delegated to other frameworks or infrastructures.

  • ๐Ÿค HTTP friendly

    You can leverage full potential of HTTP functionalities, such as cache control headers.

  • ๐Ÿ Minimal dependencies

    It depends only on Web APIs. Thus, it works on many platforms including Node.js, Deno, and edge runtimes.

  • ๐ŸŒŠ Streaming support

    Stream responses are transferred as JSON Lines and clients can consume them chunk by chunk.

Documentation

Here.

Examples

For all examples, see a examples directory.

Next.js with Route Handlers

app/api/foo/route.ts:

import { query } from "onerpc";
import { z } from "zod";

export const GET = query(z.number(), z.string(), (x) => `Hello, ${x}!`, {
  path: "/api/foo",
});

app/page.tsx:

import { type GET } from "@/app/api/foo/route";
import { query } from "onerpc/client";

export default async (): Promise<JSX.Element> => (
  <div>{await query<typeof GET>("/api/foo", 42))}</div>
);

References

License

MIT

About

The router-less serverless RPC framework for TypeScript

https://raviqqe.github.io/oneRPC

License:MIT License


Languages

Language:TypeScript 99.9%Language:JavaScript 0.1%