@ark7/router
Version:
Ark7 Router layer framework.
55 lines (54 loc) • 2.02 kB
TypeScript
import 'reflect-metadata';
import * as Router from 'koa-router';
import { A7Controller } from './controller';
export declare enum Method {
GET = "get",
POST = "post",
PUT = "put",
DELETE = "delete"
}
export declare function injectHandler(handler: string): (ctx: any, next: any) => Promise<void>;
/**
* Metadata injected to the A7Controller class.
*/
export declare class A7ControllerMetadata {
private className;
/** Global middlewares applied to all the handlers. */
private middlewares;
/** Subsidiaries under the current controller. */
private subsidiaries;
/** Koa router options. */
private routerOptions;
constructor(className: string,
/** Global middlewares applied to all the handlers. */
middlewares?: Router.IMiddleware[],
/** Subsidiaries under the current controller. */
subsidiaries?: A7ControllerSubsidiary[],
/** Koa router options. */
routerOptions?: Router.IRouterOptions);
static getMetadata(cls: any): A7ControllerMetadata;
koaRouter(controller: A7Controller): Router;
extendOptions(options: Router.IRouterOptions): this;
defineMetadata(cls: any): this;
pushMiddlewaresInFront(middlewares: Router.IMiddleware[]): this;
clone(): A7ControllerMetadata;
getSubsidiaryByName(name: string): A7ControllerSubsidiary;
getOrCreateSubsidiary(name: string, path?: string): A7ControllerSubsidiary;
}
export declare enum A7ControllerSubsidiaryType {
HANDLER = "HANDLER",
SUB_CONTROLLER = "SUB_CONTROLLER"
}
export declare class A7ControllerSubsidiary {
name: string;
type?: A7ControllerSubsidiaryType;
path?: string;
middlewares: Router.IMiddleware[];
method?: Method;
cls?: typeof A7Controller;
constructor(name: string);
get composedMiddleware(): Router.IMiddleware;
pushMiddlewaresInFront(middlewares: Router.IMiddleware[]): this;
pushMiddlewaresBack(middlewares: Router.IMiddleware[]): this;
}
export declare const METADATA_KEY = "ark7:router:metadata";