UNPKG

trpc-remix-call

Version:

Trpc adapter for Remix with api handler and server side call.

32 lines (29 loc) 1.71 kB
import { LoaderFunctionArgs, ActionFunctionArgs } from '@remix-run/node'; import { AnyRouter, TRPCError } from '@trpc/server'; type CreateRemixCallerParams<Ctx, CallerResponse> = { caller: (ctx: Ctx) => CallerResponse; adapter: (request: Request) => Promise<Ctx>; onContextReady?: (ctx: Ctx) => Promise<void>; }; declare const createRemixCaller: <Ctx, CallerResponse>({ caller, adapter, onContextReady, }: CreateRemixCallerParams<Ctx, CallerResponse>) => RemixCaller<CallerResponse>; type RemixCaller<CallerResponse> = (request: Request) => Promise<CallerResponse>; type CreateSafeRemixCallerParams<Ctx, CallerResponse, Err> = CreateRemixCallerParams<Ctx, CallerResponse> & { formatError: (error: TRPCError) => Promise<Err>; }; declare const createSafeRemixCaller: <Ctx, CallerResponse, Err>({ caller, adapter, onContextReady, formatError, }: CreateSafeRemixCallerParams<Ctx, CallerResponse, Err>) => <Res>(request: Request, callBack: (caller: CallerResponse) => Promise<Res>) => Promise<{ readonly success: true; readonly data: Awaited<Res>; readonly error: null; } | { readonly success: false; readonly error: Awaited<Err>; readonly data: null; }>; type CreateRemixHandlerParams<Router extends AnyRouter, Ctx> = { router: Router; adapter: (request: Request) => Promise<Ctx>; onContextReady?: (ctx: Ctx) => Promise<void>; endpoint: string; }; declare const createTrpcRemixHandler: <Router extends AnyRouter, Ctx>({ router, adapter, onContextReady, endpoint, }: CreateRemixHandlerParams<Router, Ctx>) => (args: LoaderFunctionArgs | ActionFunctionArgs) => Promise<Response>; export { createRemixCaller, createSafeRemixCaller, createTrpcRemixHandler };