api-morph
Version:
A modern TypeScript-first OpenAPI document generator that analyzes your code and JSDoc comments to automatically generate comprehensive and accurate API documentation.
57 lines (56 loc) • 2.11 kB
TypeScript
import { GenerateSwaggerUIHTMLOptions } from "./swagger-CGaHMoKZ.js";
import { ZodError, ZodType, z as z$1 } from "zod/v4";
import Koa, { Context, Next } from "koa";
//#region src/koa/middlewares/zodValidator.d.ts
/**
* 类型化的Koa中间件函数,提供类型安全的ctx参数
*/
type TypedMiddleware<TParams = unknown, TQuery = unknown, TBody = unknown, THeaders = unknown> = (ctx: Context & {
params: TParams;
query: TQuery;
headers: THeaders;
request: Omit<Context["request"], "query" | "headers" | "body"> & {
query: TQuery;
headers: THeaders;
body: TBody;
};
}, next: Next) => Promise<void>;
/**
* Koa 校验配置选项
*/
interface ValidationOptions<TParams extends ZodType = ZodType, TQuery extends ZodType = ZodType, TBody extends ZodType = ZodType, THeaders extends ZodType = ZodType> {
/** 请求体 schema */
body?: TBody;
/** 查询参数 schema */
query?: TQuery;
/** 路径参数 schema */
params?: TParams;
/** 请求头 schema */
headers?: THeaders;
/** 自定义错误处理函数 */
onError?: ErrorRequestHandler;
}
/**
* Koa 错误请求处理函数
*/
type ErrorRequestHandler = (err: ZodError, ctx: Context, next: Next) => void | Promise<void>;
/**
* 创建类型安全的 Koa Zod 校验中间件
*
* @param options 校验配置选项
* @returns 类型化的Koa中间件,提供对应schema字段的类型提示
*/
declare function zodValidator<TParams extends ZodType, TQuery extends ZodType, TBody extends ZodType, THeaders extends ZodType>(options: ValidationOptions<TParams, TQuery, TBody, THeaders>): TypedMiddleware<z$1.output<TParams>, z$1.output<TQuery>, z$1.output<TBody>, z$1.output<THeaders>>;
//#endregion
//#region src/koa/swagger.d.ts
/**
* 设置 SwaggerUI 的静态资源和路由
* @param path SwaggerUI 路径
* @param app Koa 应用实例
* @param options 选项
*
* @category Koa
*/
declare function setupSwaggerUI(path: string, app: Koa, options?: GenerateSwaggerUIHTMLOptions): void;
//#endregion
export { ErrorRequestHandler, TypedMiddleware, ValidationOptions, setupSwaggerUI, zodValidator };