UNPKG

bridgets

Version:

<p align="center"> <a href="https://bridgets.co"> <img src="http://bridgets.co/assets/logo-short.svg" height="48" /> <h1 align="center">BridgeTS</h1> </a> </p>

46 lines 2 kB
import { ControllerI } from '../Controller/'; import { BridgeHandler, Handler, FilesConfig } from '../Handler'; export declare type BridgeRoutes = { [key: string | number | symbol]: BridgeRoutes | ControllerI; }; export interface ServerRoutes { [key: string]: { endpoint: Handler; filesConfig?: FilesConfig; }; } export declare type Method = 'POST' | 'PATCH' | 'GET' | 'DELETE' | 'PUT'; declare type BridgeHandlerReturnType<H extends BridgeHandler> = H extends BridgeHandler<infer ResolveFct, infer Middlewares> ? { body: Parameters<ResolveFct>[0]['body']; query: Parameters<ResolveFct>[0]['query']; headers: Parameters<ResolveFct>[0]['headers']; return: (ReturnType<ResolveFct> extends Promise<infer RetWithoutPromise> ? RetWithoutPromise : ReturnType<ResolveFct>) | Extract<BridgeHandlerReturnType<Middlewares[number]>['return'], { error: any; }> | (Parameters<ResolveFct>[0]['body'] extends Record<any, any> ? { error: { name: 'Body schema validation error'; status: 422; data: any; }; } : never) | (Parameters<ResolveFct>[0]['headers'] extends Record<any, any> ? { error: { name: 'Headers schema validation error'; status: 422; data: any; }; } : never) | (Parameters<ResolveFct>[0]['query'] extends Record<any, any> ? { error: { name: 'Query schema validation error'; status: 422; data: any; }; } : never); } : {}; declare type ControllerSDK<T extends ControllerI> = { [key in keyof T]: T[key] extends BridgeHandler<any, any> ? BridgeHandlerReturnType<T[key]> : T[key] extends ControllerI ? ControllerSDK<T[key]> : never; }; export declare type RoutesToSDK<T extends BridgeRoutes> = { [key in keyof T]: T[key] extends ControllerI ? ControllerSDK<T[key]> : T[key] extends BridgeRoutes ? RoutesToSDK<T[key]> : never; }; export {}; //# sourceMappingURL=types.d.ts.map