handler-chain
Version:
A generic chain-of-responsibility design pattern.
10 lines (6 loc) • 609 B
TypeScript
type Handler<Result, Request> = (request: Request) => Result;
type Enhancer<Result, Request> = (next: Handler<Result, Request>) => Handler<Result, Request>;
type Middleware<Result, Request, Init> = (init: Init) => Enhancer<Result, Request>;
declare function applyMiddleware<Result, Request, Init>(...middleware: readonly Middleware<Result, Request, Init>[]): Middleware<Result, Request, Init>;
declare function composeEnhancer<Result, Request>(...enhancers: Enhancer<Result, Request>[]): Enhancer<Result, Request>;
export { type Enhancer, type Handler, type Middleware, applyMiddleware, composeEnhancer };