import { TRPCError } from './error/TRPCError'; import { ParseFn } from './internals/getParseFn'; import { GetRawInputFn, MiddlewareMarker, Overwrite } from './internals/utils'; import { ProcedureType, Simplify } from './types'; /** * @internal */ interface MiddlewareResultBase { /** * All middlewares should pass through their `next()`'s output. * Requiring this marker makes sure that can't be forgotten at compile-time. */ readonly marker: MiddlewareMarker; } /** * @internal */ interface MiddlewareOKResult<_TContextOverride> extends MiddlewareResultBase { ok: true; data: unknown; } /** * @internal */ interface MiddlewareErrorResult<_TContextOverride> extends MiddlewareResultBase { ok: false; error: TRPCError; } /** * @internal */ export type MiddlewareResult<_TContextOverride> = MiddlewareErrorResult<_TContextOverride> | MiddlewareOKResult<_TContextOverride>; /** * @internal */ export interface MiddlewareBuilder { /** * Create a new builder based on the current middleware builder */ unstable_pipe<$ContextOverridesOut>(fn: MiddlewareFunction | MiddlewareBuilder, TMeta, $ContextOverridesOut, TInputIn>): MiddlewareBuilder, TInputIn>; /** * List of middlewares within this middleware builder */ _middlewares: MiddlewareFunction[]; } /** * @internal */ export type MiddlewareFunction = { (opts: { ctx: Simplify>; type: ProcedureType; path: string; input: TInputIn; getRawInput: GetRawInputFn; meta: TMeta | undefined; next: { (): Promise>; <$ContextOverride>(opts: { ctx?: $ContextOverride; input?: unknown; }): Promise>; (opts: { getRawInput: GetRawInputFn; }): Promise>; }; }): Promise>; _type?: string | undefined; }; export type AnyMiddlewareFunction = MiddlewareFunction; export type AnyMiddlewareBuilder = MiddlewareBuilder; /** * @internal */ export declare function createMiddlewareFactory(): <$ContextOverrides>(fn: MiddlewareFunction) => MiddlewareBuilder; /** * Create a standalone middleware * @see https://trpc.io/docs/server/middlewares#experimental-standalone-middlewares */ export declare const experimental_standaloneMiddleware: () => { create: <$ContextOverrides>(fn: MiddlewareFunction) => MiddlewareBuilder; }; /** * @internal * Please note, `trpc-openapi` uses this function. */ export declare function createInputMiddleware(parse: ParseFn): AnyMiddlewareFunction; /** * @internal */ export declare function createOutputMiddleware(parse: ParseFn): AnyMiddlewareFunction; export {}; //# sourceMappingURL=middleware.d.ts.map