midwinter
Version:
A next-gen middleware engine built for the WinterCG environments.
26 lines (23 loc) • 1.46 kB
TypeScript
import { A as AnyMiddleware, M as Middleware, b as MergeCtx, e as MergeMeta, c as RequestHandler, d as EndMiddleware } from './types-xEg9liKj.js';
import { A as AnyCtx, a as AnyMeta } from './util-CHs1TI3T.js';
/**
* A simple way to construct complex middleware pipelines with type-safety
* and introspectability.
*/
declare class Midwinter<TCtx extends AnyCtx = {}, TMeta extends AnyMeta = {}, TCtxInitial extends AnyCtx = TCtx> {
private meta;
private middlewares;
constructor(meta?: TMeta, middlewares?: AnyMiddleware[]);
/**
* Registers a middleware with the current middleware stack.
*
* @param middleware
* @returns A new midwinter instance with any context or meta changes applied, and the new
* middleware registered.
*/
use<TCtxUpdate extends AnyCtx | void = void, TMetaUpdate extends AnyMeta | void = void>(middleware: Middleware<TCtxUpdate, TCtx, TMetaUpdate, TMeta>): Midwinter<MergeCtx<TCtxUpdate, TCtx>, MergeMeta<TMetaUpdate, TMeta>, TCtxInitial>;
use<TNewCtx extends AnyCtx = AnyCtx, TNewMeta extends AnyMeta = AnyMeta>(midwinter: Midwinter<TNewCtx, TNewMeta, TCtx>): Midwinter<MergeCtx<TNewCtx, TCtx>, MergeMeta<TNewMeta, TMeta>, TCtxInitial>;
end(): RequestHandler<TMeta, Response | undefined>;
end<TMetaUpdate extends AnyMeta | void = void>(middleware: EndMiddleware<TCtx, TMetaUpdate, TMeta>): RequestHandler<MergeMeta<TMetaUpdate, TMeta>>;
}
export { Midwinter as M };