honion
Version:
24 lines (23 loc) • 1.35 kB
TypeScript
import { Context } from "../context";
import { Middleware, MiddlewareConstructor } from "./middleware";
export type MdHook<TC extends Context, TM extends Middleware<TC>, U extends TM | MiddlewareConstructor<TC> | Error = any> = (ctx: TC, md: U, error?: Error) => void | Promise<void | boolean> | TM | undefined | Promise<TM | undefined> | boolean | Promise<boolean>;
export declare enum HookType {
BeforeInvoke = 0,
AfterInvoke = 1,
BeforeNext = 2,
Constructor = 3,
Error = 4
}
export interface HookItem<TC extends Context, TM extends Middleware<TC>> {
hook: MdHook<TC, TM>;
type: HookType;
}
export declare class HookMiddleware<TC extends Context, TM extends Middleware<TC>> extends Middleware<TC> {
#private;
constructor(mh: MdHook<TC, TM>, type: HookType);
invoke(): Promise<void>;
}
export declare function execHooks(ctx: Context, middleware: Middleware, type: HookType.Error, error: Error): Promise<boolean>;
export declare function execHooks(ctx: Context, middleware: MiddlewareConstructor, type: HookType.Constructor): Promise<Middleware>;
export declare function execHooks(ctx: Context, middleware: Middleware, type: HookType.BeforeInvoke | HookType.BeforeNext): Promise<boolean | void>;
export declare function execHooks(ctx: Context, middleware: Middleware, type: HookType.AfterInvoke): Promise<void>;