UNPKG

arrow-express

Version:

Library to bootstrap express applications with zero configuration

48 lines (47 loc) 2.26 kB
import { RouteConfigurator } from "../route/route"; import Express from "express"; import { IsUndefinedOrNeverOrUnknown } from "../utils/types"; export type ControllerHandler<Context = unknown, RootContext = unknown> = (request: Express.Request, response: Express.Response, rootContext?: RootContext) => Promise<Context>; export declare class ControllerConfiguration<C = unknown, R = unknown> { private _prefix; private _controllers; private _routes; private _handler; /** * Register child controller in controller * @param controller - controller to register */ registerController(controller: ControllerConfiguration<any, GetFinalControllerContext<C, R>>): this; /** * Register array of controllers in controller * @param controllers - routes used in controller */ registerControllers(...controllers: ControllerConfiguration<any, GetFinalControllerContext<C, R>>[]): this; /** * Register route in controller * @param route - route used in controller */ registerRoute(route: RouteConfigurator<GetFinalControllerContext<C, R>, any>): this; /** * Register array of routes in controller * @param routes - routes used in controller */ registerRoutes(...routes: RouteConfigurator<GetFinalControllerContext<C, R>, any>[]): this; /** * Register controller prefix which will be used by all routes * @param prefix - eg: 'login' */ prefix(prefix: string): this; /** * Register controller handler which will be used by all routes * @param handler - ControllerHandler function */ handler<NewContext>(handler: ControllerHandler<NewContext, R>): ControllerConfiguration<NewContext, R>; getPrefix(): string; getRoutes(): RouteConfigurator<GetFinalControllerContext<C, R>>[]; getControllers(): ControllerConfiguration<any, GetFinalControllerContext<C, R>>[]; getHandler(): ControllerHandler<GetFinalControllerContext<C, R>, R> | undefined; } export declare function Controller<C = unknown, R = unknown>(): ControllerConfiguration<GetFinalControllerContext<C, R>, R>; type GetFinalControllerContext<Context, RootContext> = IsUndefinedOrNeverOrUnknown<Context> extends true ? RootContext : Context; export {};