UNPKG

@snyk/ruby-semver

Version:

node-semver compatible API with RubyGems semantics

90 lines 2.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const gem_version_1 = require("./ruby/gem-version"); function gt(v1, v2) { return compare(v1, v2) > 0; } exports.gt = gt; function gte(v1, v2) { return compare(v1, v2) >= 0; } exports.gte = gte; function lt(v1, v2) { return compare(v1, v2) < 0; } exports.lt = lt; function lte(v1, v2) { return compare(v1, v2) <= 0; } exports.lte = lte; function eq(v1, v2) { return compare(v1, v2) === 0; } exports.eq = eq; function neq(v1, v2) { return !eq(v1, v2); } exports.neq = neq; function _strictEq(v1, v2) { return gem_version_1.GemVersion.create(v1).isIdentical(gem_version_1.GemVersion.create(v2)); } function _strictNeq(v1, v2) { return !_strictEq(v1, v2); } function cmp(v1, comparator, v2) { switch (comparator) { case '>': return gt(v1, v2); case '>=': return gte(v1, v2); case '<': return lt(v1, v2); case '<=': return lte(v1, v2); case '==': return eq(v1, v2); case '!=': return neq(v1, v2); case '===': return _strictEq(v1, v2); case '!==': return _strictNeq(v1, v2); default: throw new Error(`Invalid comparator: ${comparator}`); } } exports.cmp = cmp; function compare(v1, v2) { return gem_version_1.GemVersion.create(v1).compare(gem_version_1.GemVersion.create(v2)); } exports.compare = compare; function rcompare(v1, v2) { return gem_version_1.GemVersion.create(v2).compare(gem_version_1.GemVersion.create(v1)); } exports.rcompare = rcompare; function diff(v1, v2) { if (eq(v1, v2)) { return null; } const version1 = gem_version_1.GemVersion.create(v1); const version2 = gem_version_1.GemVersion.create(v2); let hasPrerelease; const segments = [version1.getSegments(), version2.getSegments()] .map((seg) => { const prereleaseIndex = seg.findIndex((v) => String(v).match(/[a-zA-Z]/)); if (prereleaseIndex === -1) { return seg; } hasPrerelease = true; return seg.slice(0, prereleaseIndex); }) .sort((a, b) => b.length - a.length); const diffPosition = segments[0].findIndex((v, i) => v !== segments[1][i]); if (diffPosition === -1 && hasPrerelease) { return 'prerelease'; } const diffType = ['major', 'minor'][diffPosition] || 'patch'; return (hasPrerelease ? 'pre' : '') + diffType; } exports.diff = diff; //# sourceMappingURL=comparison.js.map