UNPKG

@benpsnyder/analogjs-esm-trpc

Version:

Angular/Nitro-based tRPC integration

73 lines (67 loc) 4.33 kB
import * as _angular_core from '@angular/core'; import { InjectionToken, Provider } from '@angular/core'; import * as _benpsnyder_analogjs_esm_trpc from '@benpsnyder/analogjs-esm-trpc'; import { TRPCLink, CreateTRPCClientOptions as CreateTRPCClientOptions$1, HttpBatchLinkOptions, HTTPHeaders } from '@trpc/client'; import { AnyRouter, DefaultDataTransformer, DataTransformerOptions, CombinedDataTransformer, ClientDataTransformerOptions, ProcedureRouterRecord, AnyProcedure, AnyQueryProcedure, ProcedureArgs, AnyMutationProcedure, IntersectionError } from '@trpc/server'; import { inferTransformedProcedureOutput } from '@trpc/server/shared'; import { Observable } from 'rxjs'; type CreateTRPCClientOptions<TRouter extends AnyRouter> = CreateTRPCClientBaseOptions<TRouter> & { links: TRPCLink<TRouter>[]; }; type CreateTRPCClientBaseOptions<TRouter extends AnyRouter> = TRouter['_def']['_config']['transformer'] extends DefaultDataTransformer ? { /** * Data transformer * * You must use the same transformer on the backend and frontend * @link https://trpc.io/docs/data-transformers **/ transformer?: 'You must set a transformer on the backend router'; } : TRouter['_def']['_config']['transformer'] extends DataTransformerOptions ? { /** * Data transformer * * You must use the same transformer on the backend and frontend * @link https://trpc.io/docs/data-transformers **/ transformer: TRouter['_def']['_config']['transformer'] extends CombinedDataTransformer ? DataTransformerOptions : TRouter['_def']['_config']['transformer']; } : { /** * Data transformer * * You must use the same transformer on the backend and frontend * @link https://trpc.io/docs/data-transformers **/ transformer?: /** @deprecated **/ ClientDataTransformerOptions | CombinedDataTransformer; }; type Resolver<TProcedure extends AnyProcedure> = (...args: ProcedureArgs<TProcedure['_def']>) => Observable<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'; type CreateTrpcProxyClient<TRouter extends AnyRouter> = DecoratedProcedureRecord<TRouter['_def']['record'], TRouter> extends infer TProcedureRecord ? UntypedClientProperties & keyof TProcedureRecord extends never ? TProcedureRecord : IntersectionError<UntypedClientProperties & keyof TProcedureRecord> : never; declare function createTRPCRxJSProxyClient<TRouter extends AnyRouter>(opts: CreateTRPCClientOptions<TRouter>): CreateTrpcProxyClient<TRouter>; type TrpcOptions<T extends AnyRouter> = { url: string; options?: Partial<CreateTRPCClientOptions$1<T>>; batchLinkOptions?: Omit<HttpBatchLinkOptions, 'url' | 'headers'>; }; type TrpcClient<AppRouter extends AnyRouter> = ReturnType<typeof createTRPCRxJSProxyClient<AppRouter>>; declare const createTrpcClient: <AppRouter extends AnyRouter>({ url, options, batchLinkOptions, }: TrpcOptions<AppRouter>) => { TrpcClient: InjectionToken<_benpsnyder_analogjs_esm_trpc.CreateTrpcProxyClient<AppRouter>>; provideTrpcClient: () => Provider[]; TrpcHeaders: _angular_core.WritableSignal<HTTPHeaders>; /** @deprecated use TrpcClient instead */ tRPCClient: InjectionToken<_benpsnyder_analogjs_esm_trpc.CreateTrpcProxyClient<AppRouter>>; /** @deprecated use provideTrpcClient instead */ provideTRPCClient: () => Provider[]; /** @deprecated use TrpcHeaders instead */ tRPCHeaders: _angular_core.WritableSignal<HTTPHeaders>; }; declare function waitFor<T>(prom: Promise<T> | Observable<T>): Promise<T>; export { createTrpcClient, waitFor }; export type { CreateTrpcProxyClient, TrpcClient, TrpcOptions };