/** * 语义化版本工具:单一真源,供 server / tui / path-repair / models 共用, * 避免各处各写一份比较/提取逻辑导致 debug.MMDDHHMM 后缀排序不一致。 */ /** 提取文本中的第一个语义化版本号,没有则返回 null。 */ export declare function extractSemver(text: string): string | null; /** * 比较两个语义化版本号,返回正数 = a > b,负数 = a < b,0 = 相等。 * - 容忍前导 `v`(如 nvm/fnm 的 v18.0.0 目录名)。 * - 主版本逐段数值比较;相等时按 semver 规则:无 prerelease > 有 prerelease。 * - 两者都有 prerelease 时按 `.` 分段比较(数字段数值比、非数字段字典序), * 贴近标准 semver,避免 debug.MMDDHHMM 后缀因纯字典序而跨月/跨年排反。 */ export declare function compareSemver(a: string, b: string): number; /** * Android APK 安装序比较 —— 与 android/app/build.gradle 的 computeVersionCode 镜像一致, * 回答「这个包能否覆盖安装到那个包之上 / 该不该提示升级」。返回正数 = a 比 b 新。 * * 与标准 semver(compareSemver)的关键差异:同主版本三段时,带 `-debug` 后缀的包 * 【更新】而不是更旧 —— debug 包是 tag 之后的 master 构建(versionCode = base+1, * release 是 base+0),系统安装器只认 versionCode。若在这里沿用 semver 的 * 「prerelease < release」规则,就会提示用户从 debug「升级」到同号 release, * 下载后被系统按降级拒装。 * * - 三段数值比较优先; * - 同三段:带 -debug > 不带(镜像 versionCode base+1 > base+0); * - 两个 debug:按后缀分段比较(debug.MMDDHHMM 时间戳数值比),versionCode 相同、 * 系统允许互装,比较结果只用于「是否提示更新」。 */ export declare function compareApkInstallOrder(a: string, b: string): number; /** * Wand Web 包的更新顺序。普通版本继续遵守 semver;但同一 X.Y.Z 下的 * `-debug.*` 是该 tag 之后的本地源码构建,产品语义上比同号 release 新。 */ export declare function compareWandInstallOrder(a: string, b: string): number;