1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const gem_version_1 = require("./ruby/gem-version");
|
4 | function gt(v1, v2) {
|
5 | return compare(v1, v2) > 0;
|
6 | }
|
7 | exports.gt = gt;
|
8 | function gte(v1, v2) {
|
9 | return compare(v1, v2) >= 0;
|
10 | }
|
11 | exports.gte = gte;
|
12 | function lt(v1, v2) {
|
13 | return compare(v1, v2) < 0;
|
14 | }
|
15 | exports.lt = lt;
|
16 | function lte(v1, v2) {
|
17 | return compare(v1, v2) <= 0;
|
18 | }
|
19 | exports.lte = lte;
|
20 | function eq(v1, v2) {
|
21 | return compare(v1, v2) === 0;
|
22 | }
|
23 | exports.eq = eq;
|
24 | function neq(v1, v2) {
|
25 | return !eq(v1, v2);
|
26 | }
|
27 | exports.neq = neq;
|
28 | function _strictEq(v1, v2) {
|
29 | return gem_version_1.GemVersion.create(v1).isIdentical(gem_version_1.GemVersion.create(v2));
|
30 | }
|
31 | function _strictNeq(v1, v2) {
|
32 | return !_strictEq(v1, v2);
|
33 | }
|
34 | function 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 | }
|
56 | exports.cmp = cmp;
|
57 | function compare(v1, v2) {
|
58 | return gem_version_1.GemVersion.create(v1).compare(gem_version_1.GemVersion.create(v2));
|
59 | }
|
60 | exports.compare = compare;
|
61 | function rcompare(v1, v2) {
|
62 | return gem_version_1.GemVersion.create(v2).compare(gem_version_1.GemVersion.create(v1));
|
63 | }
|
64 | exports.rcompare = rcompare;
|
65 | function 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 | }
|
89 | exports.diff = diff;
|
90 |
|
\ | No newline at end of file |