import type { VextMiddleware } from "../types/middleware.js"; import type { VextInternalHooks, VextRouteHookInfo } from "../types/hooks.js"; /** * 路由 validate 配置类型 * * 与 RouteOptions.validate 对齐。 * 每个位置的值是 DSL 定义对象(schema-dsl 场景)或任意 schema(Zod 等场景)。 */ export interface ValidateConfig { query?: Record; body?: Record; param?: Record; header?: Record; } /** * 编译后的校验函数类型 * * compile() 返回的校验函数,接收原始数据,返回校验结果。 */ type CompiledValidator = (data: unknown) => { valid: boolean; data?: unknown; errors?: Array<{ field: string; message: string; }>; }; /** * buildValidateMiddleware — 构建路由级校验中间件 * * 在路由注册阶段(启动时)由 router-loader 调用,非每次请求时调用。 * 将 RouteOptions.validate 配置预编译为中间件。 * * @param validateConfig 路由的 validate 配置(来自 RouteOptions.validate) * @param getValidator 获取当前校验引擎的 getter(支持插件替换) * @returns VextMiddleware 或 null(无 validate 配置时返回 null,不插入中间件链) * * @example * ```typescript * // router-loader 内部 * const validateMw = buildValidateMiddleware(route.options.validate, () => app.getValidator()) * if (validateMw) { * chain.push(validateMw) * } * ``` */ export declare function buildValidateMiddleware(validateConfig: ValidateConfig | undefined, getValidator: () => { compile(schema: Record): CompiledValidator; }, hooks?: VextInternalHooks, route?: VextRouteHookInfo): VextMiddleware | null; export {};