XuqmGroup-RNSDK/packages/common/src/version.ts

28 行
993 B
TypeScript

import semver from 'semver'
export function normalizeVersion(version: string): string {
const normalized = semver.valid(version.trim())
if (!normalized) throw new Error(`[XuqmSDK] Invalid semantic version: ${version}`)
return normalized
}
export function compareVersions(left: string, right: string): number {
return semver.compare(normalizeVersion(left), normalizeVersion(right))
}
export function isVersionUpgrade(current: string, candidate: string): boolean {
return compareVersions(candidate, current) > 0
}
export function satisfiesVersion(version: string, range: string): boolean {
return semver.satisfies(normalizeVersion(version), range.trim(), {
includePrerelease: true,
})
}
export function compatibleMajorRange(minimumVersion: string): string {
const minimum = semver.parse(normalizeVersion(minimumVersion))
if (!minimum) throw new Error(`[XuqmSDK] Invalid semantic version: ${minimumVersion}`)
return `>=${minimum.version} <${minimum.major + 1}.0.0`
}