@beenotung/tslib
Version:
utils library in Typescript
53 lines • 1.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSemverDiffType = exports.SemverDiffType = exports.is_compatible = exports.is_newer = exports.is_semver = exports.to_semver = void 0;
const enum_1 = require("./enum");
const lang_1 = require("./lang");
function to_semver(s) {
const res = s.split('.').map(x => +x);
if (res.length !== 3 || res.find(x => !lang_1.isNumber(x))) {
throw new TypeError('input is not a valid semver string');
}
return res;
}
exports.to_semver = to_semver;
function is_semver(s) {
try {
return to_semver(s).length === 3;
}
catch (e) {
return false;
}
}
exports.is_semver = is_semver;
function is_newer(base, compare) {
return (compare[0] > base[0] ||
(compare[0] === base[0] &&
(compare[1] > base[1] ||
(compare[1] === base[1] && compare[2] > base[2]))));
}
exports.is_newer = is_newer;
function is_compatible(base, compare) {
return (compare[0] === base[0] &&
((compare[1] === base[1] && compare[2] <= base[2]) || compare[1] <= base[1]));
}
exports.is_compatible = is_compatible;
var SemverDiffType;
(function (SemverDiffType) {
SemverDiffType[SemverDiffType["breaking"] = 0] = "breaking";
SemverDiffType[SemverDiffType["compatible"] = 1] = "compatible";
SemverDiffType[SemverDiffType["same"] = 2] = "same";
SemverDiffType[SemverDiffType["newer"] = 3] = "newer";
})(SemverDiffType = exports.SemverDiffType || (exports.SemverDiffType = {}));
enum_1.enum_only_string(SemverDiffType);
function getSemverDiffType(base, compare) {
return base.join('.') === compare.join('.')
? SemverDiffType.same
: is_newer(base, compare)
? SemverDiffType.newer
: is_compatible(base, compare)
? SemverDiffType.compatible
: SemverDiffType.breaking;
}
exports.getSemverDiffType = getSemverDiffType;
//# sourceMappingURL=semver.js.map