import type { VextAdapter } from "../../types/adapter.js"; import type { VextApp } from "../../types/app.js"; /** * Native Adapter 选项 * * 用户通过 nativeAdapter(options) 工厂函数传入, * 控制 Native Adapter 的初始化行为。 * * 所有选项均可选,默认值已为 vext 场景优化。 * * Native Adapter 不依赖任何第三方 HTTP 框架(无 Fastify / Express / Koa / Hono), * 直接使用 Node.js 原生 http.createServer + route-core(轻量路由核心)。 * 这是 vext 的最高性能适配器选项。 */ export interface NativeAdapterOptions { /** * 忽略尾部斜杠(默认 true) * /users 和 /users/ 视为相同路由 */ ignoreTrailingSlash?: boolean; /** * 大小写敏感(默认 false) * /Users 和 /users 视为相同路由 */ caseSensitive?: boolean; /** * 最大参数长度(默认 500) * 路由参数(如 :id)的最大字符数 */ maxParamLength?: number; } /** * createNativeAdapter — 创建基于 http.createServer + route-core 的 VextAdapter 实例 * * 将 Node.js 原生 HTTP 服务器作为底层,配合 route-core 路由核心, * 实现 VextAdapter 接口。这是 vext 的第五个 adapter 实现, * 也是唯一不依赖第三方 HTTP 框架的实现。 * * 架构说明: * - 路由匹配:route-core(只负责 method/path 匹配与 params 提取) * - HTTP 层:Node.js 原生 http.createServer,零框架开销 * - 中间件链执行:vext 自己的 executeChain(洋葱模型) * - 请求/响应对象:直接从 IncomingMessage / ServerResponse 构造 VextRequest / VextResponse * - 全局中间件:通过 registerMiddleware() 收集,在每个路由执行时拼接到链头 * * 与其他 Adapter 的核心差异: * - 无第三方框架依赖(Fastify / Express / Koa / Hono 均被跳过) * - 请求对象直接从 IncomingMessage 构造,无中间包装层 * - 响应对象直接操作 ServerResponse,无框架 reply / ctx 层 * - Body 读取:直接从 IncomingMessage 数据流读取 Buffer → string * - JSON 序列化:直接 serverResponse.end(JSON.stringify(...)) * - 路由匹配:route-core prepared lookup 直接在 http handler 中调用 * * 性能预期: * 相比 Fastify Adapter,Native Adapter 省去了: * 1. Fastify 框架初始化开销(plugin 系统、hook 系统) * 2. Fastify 的 request/reply 对象构造 * 3. Fastify 的 content-type parser 管道 * 4. Fastify 的 serialization 管道 * 5. Fastify 的 lifecycle hooks 调用 * 预估 RPS 提升 +44-73%(相对 vext-Fastify) * * HTTP 服务器: * - listen() 创建 http.createServer 并开始监听 * - close() 关闭服务器 * - buildHandler() 返回 (req, res) => void 处理函数, * 用于 dev 模式热重载的 HotSwappableHandler 原子替换 * * @param options Native 适配器配置选项 * @param app VextApp 实例(用于传递给 createVextRequest 的 app 引用) * @returns VextAdapter 实例 * * @see adapters/fastify/adapter.ts(Fastify Adapter 对应实现) * @see adapters/express/adapter.ts(Express Adapter 对应实现) * @see adapters/koa/adapter.ts(Koa Adapter 对应实现) * @see adapters/hono/adapter.ts(Hono Adapter 对应实现) */ export declare function createNativeAdapter(options: NativeAdapterOptions, app: VextApp): VextAdapter;