UNPKG

2.59 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const gem_version_1 = require("./ruby/gem-version");
4function gt(v1, v2) {
5 return compare(v1, v2) > 0;
6}
7exports.gt = gt;
8function gte(v1, v2) {
9 return compare(v1, v2) >= 0;
10}
11exports.gte = gte;
12function lt(v1, v2) {
13 return compare(v1, v2) < 0;
14}
15exports.lt = lt;
16function lte(v1, v2) {
17 return compare(v1, v2) <= 0;
18}
19exports.lte = lte;
20function eq(v1, v2) {
21 return compare(v1, v2) === 0;
22}
23exports.eq = eq;
24function neq(v1, v2) {
25 return !eq(v1, v2);
26}
27exports.neq = neq;
28function _strictEq(v1, v2) {
29 return gem_version_1.GemVersion.create(v1).isIdentical(gem_version_1.GemVersion.create(v2));
30}
31function _strictNeq(v1, v2) {
32 return !_strictEq(v1, v2);
33}
34function cmp(v1, comparator, v2) {
35 switch (comparator) {
36 case '>':
37 return gt(v1, v2);
38 case '>=':
39 return gte(v1, v2);
40 case '<':
41 return lt(v1, v2);
42 case '<=':
43 return lte(v1, v2);
44 case '==':
45 return eq(v1, v2);
46 case '!=':
47 return neq(v1, v2);
48 case '===':
49 return _strictEq(v1, v2);
50 case '!==':
51 return _strictNeq(v1, v2);
52 default:
53 throw new Error(`Invalid comparator: ${comparator}`);
54 }
55}
56exports.cmp = cmp;
57function compare(v1, v2) {
58 return gem_version_1.GemVersion.create(v1).compare(gem_version_1.GemVersion.create(v2));
59}
60exports.compare = compare;
61function rcompare(v1, v2) {
62 return gem_version_1.GemVersion.create(v2).compare(gem_version_1.GemVersion.create(v1));
63}
64exports.rcompare = rcompare;
65function diff(v1, v2) {
66 if (eq(v1, v2)) {
67 return null;
68 }
69 const version1 = gem_version_1.GemVersion.create(v1);
70 const version2 = gem_version_1.GemVersion.create(v2);
71 let hasPrerelease;
72 const segments = [version1.getSegments(), version2.getSegments()]
73 .map((seg) => {
74 const prereleaseIndex = seg.findIndex((v) => String(v).match(/[a-zA-Z]/));
75 if (prereleaseIndex === -1) {
76 return seg;
77 }
78 hasPrerelease = true;
79 return seg.slice(0, prereleaseIndex);
80 })
81 .sort((a, b) => b.length - a.length);
82 const diffPosition = segments[0].findIndex((v, i) => v !== segments[1][i]);
83 if (diffPosition === -1 && hasPrerelease) {
84 return 'prerelease';
85 }
86 const diffType = ['major', 'minor'][diffPosition] || 'patch';
87 return (hasPrerelease ? 'pre' : '') + diffType;
88}
89exports.diff = diff;
90//# sourceMappingURL=comparison.js.map
\No newline at end of file