import type { KoaAdapterOptions } from "./adapter.js"; import type { VextAdapter } from "../../types/adapter.js"; import type { VextApp } from "../../types/app.js"; /** * Koa Adapter 导出入口 * * 提供 koaAdapter() 工厂函数,用户通过此函数创建 Koa 适配器实例。 * 是 VextAdapter 接口的第四个实现(Hono → Fastify → Express → Koa), * 用于验证 Adapter 抽象层的完备性和通用性。 * * 使用方式(在用户项目的 src/config/default.ts 中): * * ```typescript * // 方式 1: 零配置(推荐) * import { koaAdapter } from 'vextjs/adapters/koa' * export default { * adapter: koaAdapter(), * } * * // 方式 2: 自定义选项 * import { koaAdapter } from 'vextjs/adapters/koa' * export default { * adapter: koaAdapter({ bodyLimit: '5mb' }), * } * ``` * * 内置注册方式(adapter-resolver.ts 中): * adapter-resolver 将 'koa' 字符串映射到此工厂函数, * 用户可在配置中使用 adapter: 'koa'(零 import)。 * * @module adapters/koa * @see adapters/hono/index.ts(Hono Adapter 导出入口) * @see adapters/fastify/index.ts(Fastify Adapter 导出入口) * @see adapters/express/index.ts(Express Adapter 导出入口) */ export type { KoaAdapterOptions } from "./adapter.js"; /** * koaAdapter — 创建 Koa 适配器工厂函数 * * 返回一个「延迟工厂」函数,该函数在 adapter-resolver 调用时 * 接收 VextApp 实例并创建完整的 VextAdapter。 * * 这种两阶段初始化设计与 adapter-resolver 的工作方式对齐: * 1. 用户调用 koaAdapter(options) → 返回工厂函数(捕获 options) * 2. adapter-resolver 调用 factory(app) → 返回 VextAdapter 实例 * * @param options Koa 适配器选项(可选) * @returns 适配器工厂函数 (app: VextApp) => VextAdapter * * @example * // 内置方式(config.adapter = 'koa',零 import) * export default { adapter: 'koa' } * * @example * // 工厂方式(自定义选项) * import { koaAdapter } from 'vextjs/adapters/koa' * export default { adapter: koaAdapter({ bodyLimit: '5mb' }) } */ export declare function koaAdapter(options?: KoaAdapterOptions): (app: VextApp) => VextAdapter; /** * createKoaAdapterDirect — 直接创建 Koa Adapter(内部使用) * * 供 adapter-resolver 的 BUILT_IN_ADAPTERS 映射表使用。 * 不暴露给用户(用户应使用 koaAdapter() 工厂函数)。 * * @internal */ export { createKoaAdapter } from "./adapter.js";