UNPKG

@beenotung/tslib

Version:
53 lines 1.97 kB
"use strict"; 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