UNPKG

@analogjs/trpc

Version:

Angular/Nitro-based tRPC integration

41 lines (40 loc) 1.94 kB
/** * ALl credit goes to the awesome trpc-nuxt plugin https://github.com/wobsoriano/trpc-nuxt * Since Analog currently uses Nitro as the underlying server we can * simply reuse the hard work done by Robert Soriano and friends * **/ import type { ResponseMeta } from '@trpc/server/http'; import type { AnyRouter, inferRouterContext, inferRouterError, ProcedureType } from '@trpc/server'; import { TRPCError } from '@trpc/server'; import type { H3Event } from 'h3'; import type { TRPCResponse } from '@trpc/server/rpc'; type MaybePromise<T> = T | Promise<T>; export type CreateContextFn<TRouter extends AnyRouter> = (event: H3Event) => MaybePromise<inferRouterContext<TRouter>>; export interface ResponseMetaFnPayload<TRouter extends AnyRouter> { data: TRPCResponse<unknown, inferRouterError<TRouter>>[]; ctx?: inferRouterContext<TRouter>; paths?: string[]; type: ProcedureType | 'unknown'; errors: TRPCError[]; } export type ResponseMetaFn<TRouter extends AnyRouter> = (opts: ResponseMetaFnPayload<TRouter>) => ResponseMeta; export interface OnErrorPayload<TRouter extends AnyRouter> { error: TRPCError; type: ProcedureType | 'unknown'; path: string | undefined; req: H3Event['node']['req']; input: unknown; ctx: undefined | inferRouterContext<TRouter>; } export type OnErrorFn<TRouter extends AnyRouter> = (opts: OnErrorPayload<TRouter>) => void; export interface ResolveHTTPRequestOptions<TRouter extends AnyRouter> { router: TRouter; createContext?: CreateContextFn<TRouter>; responseMeta?: ResponseMetaFn<TRouter>; onError?: OnErrorFn<TRouter>; batching?: { enabled: boolean; }; } export declare function createTrpcNitroHandler<TRouter extends AnyRouter>({ router, createContext, responseMeta, onError, batching, }: ResolveHTTPRequestOptions<TRouter>): import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<string | undefined>>; export {};