28 行
993 B
TypeScript
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`
|
|
}
|