honion
Version:
20 lines (19 loc) • 1.47 kB
TypeScript
import { Context } from "../context";
import { LambdaMiddleware } from "./lambda.middleware";
export type MiddlewareConstructor<TC extends Context = Context, TM extends Middleware<TC> = Middleware<TC>> = {
new (...args: any[]): TM;
};
export type MiddlewareItem = LambdaMiddleware | ((ctx: Context) => Middleware) | [(ctx: Context) => Middleware, MiddlewareConstructor] | ((ctx: Context) => Promise<Middleware>) | [(ctx: Context) => Promise<Middleware>, MiddlewareConstructor] | ((ctx: Context) => MiddlewareConstructor) | [(ctx: Context) => MiddlewareConstructor, MiddlewareConstructor] | ((ctx: Context) => Promise<MiddlewareConstructor>) | Middleware | MiddlewareConstructor;
export declare function createMiddleware(ctx: Context, middleware: MiddlewareItem): Promise<Middleware>;
export declare abstract class Middleware<TC extends Context = Context> {
#private;
get ctx(): TC;
get logger(): import("..").ILogger;
set logger(val: import("..").ILogger);
isPrevInstanceOf<TM extends Middleware<TC> = Middleware<TC>>(target: MiddlewareConstructor<TC, TM>): target is MiddlewareConstructor<TC, TM>;
isNextInstanceOf<TM extends Middleware<TC> = Middleware<TC>>(target: MiddlewareConstructor<TC, TM>): target is MiddlewareConstructor<TC, TM>;
abstract invoke(): void | Promise<void>;
protected next(): Promise<void>;
private init;
}
export declare function invokeMiddlewares(ctx: Context, mds: MiddlewareItem[]): Promise<void>;