Buckets:
| const parse = require('./parse.js') | |
| const diff = (version1, version2) => { | |
| const v1 = parse(version1, null, true) | |
| const v2 = parse(version2, null, true) | |
| const comparison = v1.compare(v2) | |
| if (comparison === 0) { | |
| return null | |
| } | |
| const v1Higher = comparison > 0 | |
| const highVersion = v1Higher ? v1 : v2 | |
| const lowVersion = v1Higher ? v2 : v1 | |
| const highHasPre = !!highVersion.prerelease.length | |
| const lowHasPre = !!lowVersion.prerelease.length | |
| if (lowHasPre && !highHasPre) { | |
| // Going from prerelease -> no prerelease requires some special casing | |
| // If the low version has only a major, then it will always be a major | |
| // Some examples: | |
| // 1.0.0-1 -> 1.0.0 | |
| // 1.0.0-1 -> 1.1.1 | |
| // 1.0.0-1 -> 2.0.0 | |
| if (!lowVersion.patch && !lowVersion.minor) { | |
| return 'major' | |
| } | |
| // If the main part has no difference | |
| if (lowVersion.compareMain(highVersion) === 0) { | |
| if (lowVersion.minor && !lowVersion.patch) { | |
| return 'minor' | |
| } | |
| return 'patch' | |
| } | |
| } | |
| // add the `pre` prefix if we are going to a prerelease version | |
| const prefix = highHasPre ? 'pre' : '' | |
| if (v1.major !== v2.major) { | |
| return prefix + 'major' | |
| } | |
| if (v1.minor !== v2.minor) { | |
| return prefix + 'minor' | |
| } | |
| if (v1.patch !== v2.patch) { | |
| return prefix + 'patch' | |
| } | |
| // high and low are preleases | |
| return 'prerelease' | |
| } | |
| module.exports = diff | |
Xet Storage Details
- Size:
- 1.42 kB
- Xet hash:
- e6684ec8a587f76d23fb016fbcce59a421522dbee1e15884eec07f0014a1b2fb
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.