UNPKG

midwinter

Version:

A next-gen middleware engine built for the WinterCG environments.

21 lines (18 loc) 2.22 kB
import { b as Awaitable, A as AnyCtx, a as AnyMeta, M as MergeObjectsShallow, U as UnknownValues } from './util-CHs1TI3T.js'; type ResponseHandler = (response: Response) => Awaitable<Response | undefined | void>; type MiddlewareReturn<TCtxUpdate extends AnyCtx | void = void> = TCtxUpdate | Response | ResponseHandler | void; type AnyMiddleware = Middleware<any, any, any, any>; type EndMiddlewareHandler<TCtx extends AnyCtx = AnyCtx, TMetaIn extends AnyMeta = AnyMeta> = (request: Request, ctx: TCtx, meta: Readonly<TMetaIn>) => Awaitable<Response>; type MiddlewareHandler<TCtxUpdate extends AnyCtx | void = AnyCtx, TCtx extends AnyCtx = AnyCtx, TMetaIn extends AnyMeta = AnyMeta> = (request: Request, ctx: TCtx & AnyCtx, meta: Readonly<UnknownValues<TMetaIn & AnyMeta>>) => Awaitable<MiddlewareReturn<TCtxUpdate>>; type RequestHandler<TMeta extends AnyMeta = AnyMeta, TResult extends Response | undefined = Response> = ((request: Request) => Promise<TResult>) & { meta: TMeta; }; type Middleware<TCtxUpdate extends AnyCtx | void | undefined = AnyCtx, TCtx extends AnyCtx = AnyCtx, TMetaUpdate extends AnyMeta | void = void, TMetaIn extends AnyMeta = AnyMeta> = void extends TMetaUpdate ? MiddlewareHandler<TCtxUpdate, TCtx, TMetaIn> : MiddlewareHandler<TCtxUpdate, TCtx, TMetaIn> & { meta: TMetaUpdate; }; type EndMiddleware<TCtx extends AnyCtx = AnyCtx, TMetaUpdate extends AnyMeta | void = void, TMetaIn extends AnyMeta = AnyMeta> = void extends TMetaUpdate ? EndMiddlewareHandler<TCtx, TMetaIn> : EndMiddlewareHandler<TCtx, TMetaIn> & { meta: TMetaUpdate; }; type MergeCtx<TUpdates extends AnyCtx | void, TCtx extends AnyCtx | void> = void extends TUpdates ? TCtx : undefined extends TUpdates ? MergeObjectsShallow<TCtx, Partial<TUpdates>> : MergeObjectsShallow<TCtx, TUpdates>; type MergeMeta<TUpdates extends AnyMeta | void, TMeta extends AnyMeta | void> = void extends TUpdates ? TMeta : undefined extends TUpdates ? MergeObjectsShallow<TMeta, Partial<TUpdates>> : MergeObjectsShallow<TMeta, TUpdates>; export type { AnyMiddleware as A, EndMiddlewareHandler as E, Middleware as M, ResponseHandler as R, MiddlewareReturn as a, MergeCtx as b, RequestHandler as c, EndMiddleware as d, MergeMeta as e };