/** * scalar-assets.ts — 本地 Scalar 资产自动检测、安装与路由注册 * * 封装 @scalar/api-reference 包的完整生命周期: * - 本地包检测(基于用户项目根目录的模块解析) * - 自动包管理器识别(npm / pnpm / yarn / bun) * - 首次启动自动安装(execSync,输出对用户可见) * - 文件内容读取与内存缓存 * - 本地静态路由注册(GET /_vext/scalar.js) * * 设计原则: * - 本地优先,零 CDN 依赖(openapi.enabled: true 时强制本地服务) * - 用户配置 scalar.cdnUrl 时完全跳过(尊重显式配置) * - 安装失败时抛出明确错误(不静默降级回 CDN) * * @module lib/openapi/scalar-assets * @changelog * - v0.2.2: 初始版本(本地资产自动安装 + 本地路由注册) */ import type { VextApp } from "../../types/app.js"; /** * 注册本地 Scalar 资产路由(自动安装 + 本地服务,无 CDN 回退) * * 执行流程: * 1. 用户配置了 cdnUrl → 立即返回 null(不干预用户配置) * 2. 本地包已安装 → 读取文件 → 注册路由 → 返回本地路由路径 * 3. 本地包未安装 → 自动安装 → 读取文件 → 注册路由 → 返回本地路由路径 * 4. 任意步骤失败 → throw Error(含具体原因 + 手动修复命令) * * @param app VextApp 实例 * @param userConfiguredCdnUrl 用户在 scalar.cdnUrl 中配置的地址(若存在则跳过) * @returns 本地路由路径('/_vext/scalar.js')或 null(用户已配置 cdnUrl) * @throws 包安装失败 / 文件读取失败时 */ export declare function registerScalarAssets(app: VextApp, userConfiguredCdnUrl?: string): string | null;