@ts-rest/nest
Version:
Nest server integration for @ts-rest
49 lines (48 loc) • 2.08 kB
TypeScript
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 {};