/** * 速率限制中间件 * 防止 API 滥用,保护服务器资源 */ import type { Context, Middleware } from "koa"; export interface RateLimitConfig { /** 时间窗口(毫秒) */ windowMs: number; /** 每个 IP 在时间窗口内的最大请求数 */ max: number; /** 是否跳过成功请求(只限制失败请求) */ skipSuccessfulRequests?: boolean; /** 是否跳过失败请求(只限制成功请求) */ skipFailedRequests?: boolean; /** 自定义键生成函数 */ keyGenerator?: (ctx: Context) => string; /** 跳过函数 */ skip?: (ctx: Context) => boolean; /** 自定义错误消息 */ message?: string; /** 自定义状态码 */ statusCode?: number; } export type RateLimitMiddleware = Middleware & { close(): void; }; export interface DefaultRateLimitOptions { /** 不计入通用预算的宿主端点,例如健康与指标探针。 */ skip?: (ctx: Context) => boolean; } /** * 创建速率限制中间件 */ export declare function createRateLimit(config: RateLimitConfig): RateLimitMiddleware; /** 默认速率限制工厂。BaseApp 每个实例单独创建,避免嵌入式宿主共享内存预算。 */ export declare function createDefaultRateLimit(options?: DefaultRateLimitOptions): RateLimitMiddleware; /** @deprecated BaseApp 使用每实例工厂;仅为既有嵌入式调用保留共享中间件。 */ export declare const defaultRateLimit: RateLimitMiddleware;