/** * collector.ts — RouteMetadataCollector 路由元信息收集器 * * 在 router-loader 扫描 routes/ 目录阶段,每注册一条路由时调用 addRoute() * 收集路由的 HTTP 方法、完整路径、options 配置、来源文件路径。 * * 收集完成后,将 RouteMetadata[] 传递给 OpenAPIGenerator 生成 OpenAPI 文档。 * * 生命周期: * 1. bootstrap 创建 collector 实例(若 openapi.enabled) * 2. loadRoutes() 接收 collector 作为可选参数 * 3. router-loader 每注册一条路由时调用 collector.addRoute() * 4. bootstrap 调用 collector.getRoutes() 获取所有路由元信息 * 5. OpenAPIGenerator.generate(routes) 生成 OpenAPI 文档 * 6. dev 模式热重载时调用 collector.clear() 重新收集 * * @module lib/openapi/collector * @see 14-openapi.md §3(RouteMetadataCollector) */ import type { RouteOptions } from "../../types/app.js"; import type { RouteMetadata } from "./types.js"; /** * RouteMetadataCollector — 路由元信息收集器 * * 由 bootstrap 在 router-loader 之前创建,传入 loadRoutes()。 * router-loader 在注册每条路由到 adapter 时,同步调用 addRoute() 收集元信息。 * * @example * ```typescript * const collector = new RouteMetadataCollector() * * // router-loader 内部 * collector.addRoute('GET', '/users', routeOptions, 'routes/users.ts') * collector.addRoute('POST', '/users', routeOptions, 'routes/users.ts') * * // bootstrap 中 * const routes = collector.getRoutes() * const spec = generator.generate(routes) * ``` */ export declare class RouteMetadataCollector { private routes; /** * 收集单条路由的元信息 * * 由 router-loader 在注册每条路由时调用。 * 如果路由设置了 docs.hidden = true,则跳过收集(不出现在 OpenAPI 文档中)。 * * @param method HTTP 方法(大写:GET / POST / PUT / PATCH / DELETE 等) * @param path 完整路由路径(含前缀,如 /api/users/:id) * @param options 路由 options 原始对象(含 validate / middlewares / docs) * @param sourceFile 路由文件来源路径(用于 tag 推断) */ addRoute(method: string, path: string, options: RouteOptions, sourceFile: string): void; /** * 获取所有收集到的路由元信息 * * 返回副本数组,防止外部修改影响内部状态。 * * @returns RouteMetadata[] 路由元信息列表 */ getRoutes(): RouteMetadata[]; /** * 获取收集到的路由数量 * * @returns 已收集的路由条数 */ getCount(): number; /** * 清空所有收集到的路由元信息 * * dev 模式热重载时调用,清空后重新扫描 routes/ 收集。 * 确保文档反映最新的路由状态。 */ clear(): void; }