depresolve/src/helpers.ts

39 lines
987 B
TypeScript

import { VersionChangeType, VersionInfo } from './resolver'
export const parseSemver = (version: string): VersionInfo => {
const regex = /([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([a-z0-9-.]+))?(?:\+([a-z0-9-.]+))?/gi
const match = regex.exec(version)
if (!match) {
throw Error(`Invalid semver '${version}'`)
}
const [, major, minor, patch, prerelease, build] = match
return {
version,
major: parseInt(major),
minor: parseInt(minor),
patch: parseInt(patch),
prerelease,
build,
}
}
export const compareVersions = (versionA: VersionInfo, versionB: VersionInfo): VersionChangeType | null => {
if (versionA.major !== versionB.major) {
return 'major'
}
if (versionA.minor !== versionB.minor) {
return 'minor'
}
if (versionA.patch !== versionB.patch) {
return 'patch'
}
if (versionA.prerelease !== versionB.prerelease) {
return 'prerelease'
}
if (versionA.build !== versionB.build) {
return 'build'
}
return null
}