1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.emptyVersion = emptyVersion;
|
7 | exports.getRangeLowerBound = getRangeLowerBound;
|
8 | exports.getRangeUpperBound = getRangeUpperBound;
|
9 | exports.stringToVersion = stringToVersion;
|
10 | exports.versionToString = versionToString;
|
11 |
|
12 | var semver = _interopRequireWildcard(require("semver"));
|
13 |
|
14 | function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
15 |
|
16 | function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
17 |
|
18 | function emptyVersion() {
|
19 | return {
|
20 | range: '<=',
|
21 | major: 'x',
|
22 | minor: 'x',
|
23 | patch: 'x',
|
24 | prerel: null
|
25 | };
|
26 | }
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 | function getRangeLowerBound(rangeRaw) {
|
35 | const range = typeof rangeRaw === 'string' ? new semver.Range(rangeRaw) : rangeRaw;
|
36 |
|
37 |
|
38 |
|
39 | if (range.set[0].length === 1) {
|
40 | return '0.0.0';
|
41 | }
|
42 |
|
43 | return range.set[0][0].semver.version;
|
44 | }
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 | function getRangeUpperBound(rangeRaw) {
|
53 | const range = typeof rangeRaw === 'string' ? new semver.Range(rangeRaw) : rangeRaw;
|
54 |
|
55 |
|
56 |
|
57 | if (range.set[0].length === 1) {
|
58 | return range.set[0][0].semver.version;
|
59 | }
|
60 |
|
61 | return range.set[0][1].semver.version;
|
62 | }
|
63 |
|
64 |
|
65 |
|
66 | const VER = 'v([0-9]+).([0-9]+|x).([0-9]+|x)(-.*)?';
|
67 | const VERSION_RE = new RegExp(`^([><]=?)?${VER}(_([><]=?)${VER})?$`);
|
68 |
|
69 | function stringToVersion(verStr) {
|
70 | const versionParts = verStr.match(VERSION_RE);
|
71 |
|
72 | if (versionParts == null) {
|
73 | throw new Error(`${verStr} is a malformed version string. Expected a version formatted ` + 'as `' + VERSION_RE.toString() + '`');
|
74 | }
|
75 |
|
76 | const [_1, range, majorStr, minorStr, patchStr, prerel, _2, upperRange, upperMajor, upperMinor, upperPatch, upperPrerel] = versionParts;
|
77 |
|
78 | if (range != null && range !== '>=' && range !== '<=') {
|
79 | throw new Error(`'${verStr}': Invalid version range: ${range}`);
|
80 | }
|
81 |
|
82 | if (upperRange != null && upperRange !== '>=' && upperRange !== '<=') {
|
83 | throw new Error(`'${verStr}': Invalid version upper-bound range: ${upperRange}`);
|
84 | }
|
85 |
|
86 | const major = _validateVersionNumberPart(verStr, 'major', majorStr);
|
87 |
|
88 | const minor = minorStr !== 'x' ? _validateVersionNumberPart(verStr, 'minor', minorStr) : minorStr;
|
89 | const patch = patchStr !== 'x' ? _validateVersionNumberPart(verStr, 'patch', patchStr) : patchStr;
|
90 | const upperBound = upperMajor ? {
|
91 | range: upperRange,
|
92 | major: _validateVersionNumberPart(verStr, 'upper-bound major', upperMajor),
|
93 | minor: upperMinor !== 'x' ? _validateVersionNumberPart(verStr, 'upper-bound minor', upperMinor) : upperMinor,
|
94 | patch: upperPatch !== 'x' ? _validateVersionNumberPart(verStr, 'upper-bound patch', upperPatch) : upperPatch,
|
95 | prerel: upperPrerel.substr(1)
|
96 | } : undefined;
|
97 |
|
98 | if (range === '<=' && major === minor === patch === 0) {
|
99 | throw new Error(`It doesn't make sense to have a version range of '<=v0.0.0'!`);
|
100 | }
|
101 |
|
102 | return {
|
103 | range,
|
104 | major,
|
105 | minor,
|
106 | patch,
|
107 | prerel: prerel != null ? prerel.substr(1) : prerel,
|
108 | upperBound
|
109 | };
|
110 | }
|
111 |
|
112 | function versionToString(ver) {
|
113 | const rangeStr = ver.range ? ver.range : '';
|
114 | const upperStr = ver.upperBound ? `_${versionToString(ver.upperBound)}` : '';
|
115 | const prerel = ver.prerel == null ? '' : `-${ver.prerel}`;
|
116 | return `${rangeStr}v${ver.major}.${ver.minor}.${ver.patch}${prerel}${upperStr}`;
|
117 | }
|
118 |
|
119 | function _validateVersionNumberPart(context, partName, part) {
|
120 | const num = parseInt(part, 10);
|
121 |
|
122 | if (String(num) !== part) {
|
123 | throw new Error(`${context}: Invalid ${partName} number. Expected a number.`);
|
124 | }
|
125 |
|
126 | return num;
|
127 | } |
\ | No newline at end of file |