arrow-express
Version:
Library to bootstrap express applications with zero configuration
48 lines (47 loc) • 2.26 kB
TypeScript
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 {};