onerpc
v0.5.3
Published
The RPC library for the serverless and TypeScript era.
Downloads
4,018
Readme
oneRPC
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>
);