UNPKG

@nexica/nestjs-trpc

Version:
33 lines (32 loc) 1.63 kB
import type { CreateExpressContextOptions } from '@trpc/server/adapters/express'; import type { CreateFastifyContextOptions } from '@trpc/server/adapters/fastify'; import type { CreateWSSContextFnOptions } from '@trpc/server/adapters/ws'; export type ContextOptions = CreateExpressContextOptions | CreateFastifyContextOptions | CreateWSSContextFnOptions; export interface TRPCContext<TAppContext = Record<string, unknown>> { create(opts: ContextOptions): TAppContext | Promise<TAppContext>; } type BaseEnhancedContext = { readonly _contextType: 'express' | 'fastify' | 'websocket'; isWebSocketRequest(): boolean; isHttpRequest(): boolean; getConnectionType(): 'express' | 'fastify' | 'websocket' | 'unknown'; getAuthorizationHeader(): string | null; getBearerToken(): string | null; getHeader(headerName: string): string | string[] | null; getClientIP(): string | null; getUserAgent(): string | null; isExpressContext(): this is EnhancedExpressContext; isFastifyContext(): this is EnhancedFastifyContext; isWebSocketContext(): this is EnhancedWebSocketContext; }; export type EnhancedExpressContext = BaseEnhancedContext & CreateExpressContextOptions & { readonly _contextType: 'express'; }; export type EnhancedFastifyContext = BaseEnhancedContext & CreateFastifyContextOptions & { readonly _contextType: 'fastify'; }; export type EnhancedWebSocketContext = BaseEnhancedContext & CreateWSSContextFnOptions & { readonly _contextType: 'websocket'; }; export type EnhancedContext = EnhancedExpressContext | EnhancedFastifyContext | EnhancedWebSocketContext; export {};