import { Startup } from "@ipare/core"; import { GLOBAL_PIPE_BAG } from "./constant"; import { GlobalPipeType } from "./global-pipe-type"; import { GlobalPipeItem, PipeItem } from "./pipes"; export { Query, Body, Param, Header, Ctx } from "./decorators"; export { PipeTransform, PipeItem, ParseBoolPipe, ParseBoolPipeOptions, ParseFloatPipe, ParseIntPipe, DefaultValuePipe, DefaultValuePipeOptions, TrimPipe, TrimPipeOptions, TransformArgs, PipeReqType, } from "./pipes"; export { PipeReqRecord, getPipeRecords } from "./pipe-req-record"; declare module "@ipare/core" { interface Startup { useGlobalPipe( type: GlobalPipeType, pipe: PipeItem ): this; } } Startup.prototype.useGlobalPipe = function ( type: GlobalPipeType, pipe: PipeItem ) { return this.use(async (ctx, next) => { const pipes = ctx.get[]>(GLOBAL_PIPE_BAG) ?? []; pipes.push({ pipe, type, }); ctx.set(GLOBAL_PIPE_BAG, pipes); await next(); }); };