@analogjs/trpc
Version:
Angular/Nitro-based tRPC integration
41 lines (40 loc) • 1.94 kB
TypeScript
/**
* 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 {};