UNPKG

@ts-rest/nest

Version:

Nest server integration for @ts-rest

49 lines (48 loc) 2.08 kB
import { AppRoute, AppRouter, Without, ServerInferResponses } from '@ts-rest/core'; import { TsRestRequestShape } from './ts-rest-request.decorator'; type AppRouterMethodShape<T extends AppRoute> = (...args: any[]) => Promise<ServerInferResponses<T>>; type AppRouterControllerShape<T extends AppRouter> = Without<{ [K in keyof T]: T[K] extends AppRoute ? AppRouterMethodShape<T[K]> : never; } & { handler?: (...args: any[]) => unknown; }, never>; type AppRouterRequestShapes<T extends AppRouter> = Without<{ [K in keyof T]: T[K] extends AppRoute ? TsRestRequestShape<T[K]> : never; }, never>; type AppRouterResponseShapes<T extends AppRouter> = Without<{ [K in keyof T]: T[K] extends AppRoute ? ServerInferResponses<T[K]> : never; }, never>; /** * @deprecated Please use `TsRestHandler` instead - will be removed in v4 */ export declare const initNestServer: <T extends AppRouter>(router: T) => { controllerShape: AppRouterControllerShape<T>; routeShapes: AppRouterRequestShapes<T>; responseShapes: AppRouterResponseShapes<T>; route: T; }; /** * @deprecated Please use `TsRestHandler` instead - will be removed in v4 */ export type NestControllerContract<T extends AppRouter> = Pick<T, { [K in keyof T]-?: T[K] extends AppRoute ? K : never; }[keyof T]>; /** * @deprecated Please use `TsRestHandler` instead - will be removed in v4 */ export type NestControllerInterface<T extends AppRouter> = AppRouterControllerShape<T>; /** * @deprecated Please use `TsRestHandler` instead - will be removed in v4 */ export type NestRequestShapes<T extends AppRouter> = AppRouterRequestShapes<T>; /** * @deprecated Please use `TsRestHandler` instead - will be removed in v4 */ export type NestResponseShapes<T extends AppRouter> = AppRouterResponseShapes<T>; /** * Returns the contract containing only non-nested routes required by a NestJS controller * * @deprecated Please use `TsRestHandler` instead - will be removed in v4 */ export declare const nestControllerContract: <T extends AppRouter>(router: T) => NestControllerContract<T>; export {};