UNPKG

@analogjs/trpc

Version:

Angular/Nitro-based tRPC integration

18 lines (17 loc) 1.69 kB
import type { AnyMutationProcedure, AnyProcedure, AnyQueryProcedure, AnyRouter, IntersectionError, ProcedureArgs, ProcedureRouterRecord } from '@trpc/server'; import { inferTransformedProcedureOutput } from '@trpc/server/shared'; import { Observable as RxJSObservable } from 'rxjs'; import { CreateTRPCClientOptions } from './shared-internal'; type Resolver<TProcedure extends AnyProcedure> = (...args: ProcedureArgs<TProcedure['_def']>) => RxJSObservable<inferTransformedProcedureOutput<TProcedure>>; type DecorateProcedure<TProcedure extends AnyProcedure, TRouter extends AnyRouter> = TProcedure extends AnyQueryProcedure ? { query: Resolver<TProcedure>; } : TProcedure extends AnyMutationProcedure ? { mutate: Resolver<TProcedure>; } : never; type DecoratedProcedureRecord<TProcedures extends ProcedureRouterRecord, TRouter extends AnyRouter> = { [TKey in keyof TProcedures]: TProcedures[TKey] extends AnyRouter ? DecoratedProcedureRecord<TProcedures[TKey]['_def']['record'], TProcedures[TKey]> : TProcedures[TKey] extends AnyProcedure ? DecorateProcedure<TProcedures[TKey], TRouter> : never; }; type UntypedClientProperties = 'links' | 'runtime' | 'requestId' | '$request' | 'query' | 'mutation'; export type CreateTrpcProxyClient<TRouter extends AnyRouter> = DecoratedProcedureRecord<TRouter['_def']['record'], TRouter> extends infer TProcedureRecord ? UntypedClientProperties & keyof TProcedureRecord extends never ? TProcedureRecord : IntersectionError<UntypedClientProperties & keyof TProcedureRecord> : never; export declare function createTRPCRxJSProxyClient<TRouter extends AnyRouter>(opts: CreateTRPCClientOptions<TRouter>): CreateTrpcProxyClient<TRouter>; export {};