oRPC Client-Side Clients
Call your oRPC procedures remotely as if they were local functions.
Файлы2
Открыть в GitHubSKILL.mdskills/orpc-client-side/SKILL.md
GitHubClient-Side Clients
Call your procedures remotely as if they were local functions.
Installation
npm install @orpc/client@latest
Creating a Client
Uses RPCLink; ensure your server uses RPCHandler or follows the RPC Protocol.
import { createORPCClient, onError } from '@orpc/client'
import { RPCLink } from '@orpc/client/fetch'
import { RouterClient } from '@orpc/server'
import { ContractRouterClient } from '@orpc/contract'
const link = new RPCLink({
url: 'http://localhost:3000/rpc',
headers: () => ({ authorization: 'Bearer token' }),
interceptors: [onError(error => console.error(error))],
})
const client: RouterClient<typeof router> = createORPCClient(link)
// or with a contract:
const client: ContractRouterClient<typeof contract> = createORPCClient(link)
Calling Procedures
const planet = await client.planet.find({ id: 1 })
Merging Clients
const clientA: RouterClient<typeof routerA> = createORPCClient(linkA)
const clientB: RouterClient<typeof routerB> = createORPCClient(linkB)
export const orpc = { a: clientA, b: clientB }
Type Utilities
import type {
InferClientInputs, InferClientBodyInputs,
InferClientOutputs, InferClientBodyOutputs,
InferClientErrors, InferClientErrorUnion,
InferClientContext
} from '@orpc/client'
type Inputs = InferClientInputs<typeof client>
type BodyInputs = InferClientBodyInputs<typeof client>
type Outputs = InferClientOutputs<typeof client>
type BodyOutputs = InferClientBodyOutputs<typeof client>
type Errors = InferClientErrors<typeof client>
type AllErrors = InferClientErrorUnion<typeof client>
type Context = InferClientContext<typeof client>
InferClientInputs/InferClientOutputs: full input/output types per endpointInferClientBodyInputs/InferClientBodyOutputs: only thebodyportionInferClientErrors: type-safe error map per endpointInferClientErrorUnion: union of all possible errorsInferClientContext: client context type