40 lines
867 B
JavaScript
40 lines
867 B
JavaScript
const parse = require('./parse')
|
|
const eq = require('./eq')
|
|
|
|
const diff = (version1, version2) => {
|
|
const v1 = parse(version1)
|
|
const v2 = parse(version2)
|
|
if (eq(v1, v2)) {
|
|
return null
|
|
} else {
|
|
const hasPre = v1.prerelease.length || v2.prerelease.length
|
|
const prefix = hasPre ? 'pre' : ''
|
|
const defaultResult = hasPre ? 'prerelease' : ''
|
|
|
|
if (v1.major !== v2.major) {
|
|
return prefix + 'major'
|
|
}
|
|
if (v1.minor !== v2.minor) {
|
|
return prefix + 'minor'
|
|
}
|
|
|
|
if (v1.patch !== v2.patch) {
|
|
return prefix + 'patch'
|
|
}
|
|
|
|
if (!v1.prerelease.length || !v2.prerelease.length) {
|
|
if (v1.patch) {
|
|
return 'patch'
|
|
}
|
|
if (v1.minor) {
|
|
return 'minor'
|
|
}
|
|
if (v1.major) {
|
|
return 'major'
|
|
}
|
|
}
|
|
return defaultResult // may be undefined
|
|
}
|
|
}
|
|
module.exports = diff
|