@nexica/nestjs-trpc
Version:
NestJS TRPC Bridge
33 lines (32 loc) • 1.63 kB
TypeScript
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 {};