semver 5.1.1 → 5.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -35
- package/package.json +9 -4
- package/semver.js +121 -13
- package/.npmignore +0 -4
- package/.travis.yml +0 -7
- package/test/big-numbers.js +0 -31
- package/test/clean.js +0 -29
- package/test/gtr.js +0 -173
- package/test/index.js +0 -698
- package/test/ltr.js +0 -181
- package/test/major-minor-patch.js +0 -72
package/README.md
CHANGED
|
@@ -1,53 +1,65 @@
|
|
|
1
1
|
semver(1) -- The semantic versioner for npm
|
|
2
2
|
===========================================
|
|
3
3
|
|
|
4
|
+
## Install
|
|
5
|
+
|
|
6
|
+
```bash
|
|
7
|
+
npm install --save semver
|
|
8
|
+
````
|
|
9
|
+
|
|
4
10
|
## Usage
|
|
5
11
|
|
|
6
|
-
|
|
12
|
+
As a node module:
|
|
7
13
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
```js
|
|
15
|
+
const semver = require('semver')
|
|
16
|
+
|
|
17
|
+
semver.valid('1.2.3') // '1.2.3'
|
|
18
|
+
semver.valid('a.b.c') // null
|
|
19
|
+
semver.clean(' =v1.2.3 ') // '1.2.3'
|
|
20
|
+
semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
|
|
21
|
+
semver.gt('1.2.3', '9.8.7') // false
|
|
22
|
+
semver.lt('1.2.3', '9.8.7') // true
|
|
23
|
+
```
|
|
14
24
|
|
|
15
25
|
As a command-line utility:
|
|
16
26
|
|
|
17
|
-
|
|
27
|
+
```
|
|
28
|
+
$ semver -h
|
|
18
29
|
|
|
19
|
-
|
|
30
|
+
SemVer 5.3.0
|
|
20
31
|
|
|
21
|
-
|
|
22
|
-
|
|
32
|
+
A JavaScript implementation of the http://semver.org/ specification
|
|
33
|
+
Copyright Isaac Z. Schlueter
|
|
23
34
|
|
|
24
|
-
|
|
25
|
-
|
|
35
|
+
Usage: semver [options] <version> [<version> [...]]
|
|
36
|
+
Prints valid versions sorted by SemVer precedence
|
|
26
37
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
38
|
+
Options:
|
|
39
|
+
-r --range <range>
|
|
40
|
+
Print versions that match the specified range.
|
|
30
41
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
42
|
+
-i --increment [<level>]
|
|
43
|
+
Increment a version by the specified level. Level can
|
|
44
|
+
be one of: major, minor, patch, premajor, preminor,
|
|
45
|
+
prepatch, or prerelease. Default level is 'patch'.
|
|
46
|
+
Only one version may be specified.
|
|
36
47
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
48
|
+
--preid <identifier>
|
|
49
|
+
Identifier to be used to prefix premajor, preminor,
|
|
50
|
+
prepatch or prerelease version increments.
|
|
40
51
|
|
|
41
|
-
|
|
42
|
-
|
|
52
|
+
-l --loose
|
|
53
|
+
Interpret versions and ranges loosely
|
|
43
54
|
|
|
44
|
-
|
|
45
|
-
|
|
55
|
+
Program exits successfully if any valid version satisfies
|
|
56
|
+
all supplied ranges, and prints all satisfying versions.
|
|
46
57
|
|
|
47
|
-
|
|
58
|
+
If no satisfying versions are found, then exits failure.
|
|
48
59
|
|
|
49
|
-
|
|
50
|
-
|
|
60
|
+
Versions are printed in ascending order, so supplying
|
|
61
|
+
multiple versions to the utility will just sort them.
|
|
62
|
+
```
|
|
51
63
|
|
|
52
64
|
## Versions
|
|
53
65
|
|
|
@@ -124,20 +136,20 @@ The method `.inc` takes an additional `identifier` string argument that
|
|
|
124
136
|
will append the value of the string as a prerelease identifier:
|
|
125
137
|
|
|
126
138
|
```javascript
|
|
127
|
-
|
|
128
|
-
'1.2.4-beta.0'
|
|
139
|
+
semver.inc('1.2.3', 'prerelease', 'beta')
|
|
140
|
+
// '1.2.4-beta.0'
|
|
129
141
|
```
|
|
130
142
|
|
|
131
143
|
command-line example:
|
|
132
144
|
|
|
133
|
-
```
|
|
145
|
+
```bash
|
|
134
146
|
$ semver 1.2.3 -i prerelease --preid beta
|
|
135
147
|
1.2.4-beta.0
|
|
136
148
|
```
|
|
137
149
|
|
|
138
150
|
Which then can be used to increment further:
|
|
139
151
|
|
|
140
|
-
```
|
|
152
|
+
```bash
|
|
141
153
|
$ semver 1.2.4-beta.0 -i prerelease
|
|
142
154
|
1.2.4-beta.1
|
|
143
155
|
```
|
|
@@ -289,9 +301,13 @@ strings that they parse.
|
|
|
289
301
|
same as `prepatch`. It increments the patch version, then makes a
|
|
290
302
|
prerelease. If the input version is already a prerelease it simply
|
|
291
303
|
increments it.
|
|
304
|
+
* `prerelease(v)`: Returns an array of prerelease components, or null
|
|
305
|
+
if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]`
|
|
292
306
|
* `major(v)`: Return the major version number.
|
|
293
307
|
* `minor(v)`: Return the minor version number.
|
|
294
308
|
* `patch(v)`: Return the patch version number.
|
|
309
|
+
* `intersects(r1, r2, loose)`: Return true if the two supplied ranges
|
|
310
|
+
or comparators intersect.
|
|
295
311
|
|
|
296
312
|
### Comparison
|
|
297
313
|
|
|
@@ -315,6 +331,9 @@ strings that they parse.
|
|
|
315
331
|
(`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`),
|
|
316
332
|
or null if the versions are the same.
|
|
317
333
|
|
|
334
|
+
### Comparators
|
|
335
|
+
|
|
336
|
+
* `intersects(comparator)`: Return true if the comparators intersect
|
|
318
337
|
|
|
319
338
|
### Ranges
|
|
320
339
|
|
|
@@ -323,6 +342,8 @@ strings that they parse.
|
|
|
323
342
|
range.
|
|
324
343
|
* `maxSatisfying(versions, range)`: Return the highest version in the list
|
|
325
344
|
that satisfies the range, or `null` if none of them do.
|
|
345
|
+
* `minSatisfying(versions, range)`: Return the lowest version in the list
|
|
346
|
+
that satisfies the range, or `null` if none of them do.
|
|
326
347
|
* `gtr(version, range)`: Return `true` if version is greater than all the
|
|
327
348
|
versions possible in the range.
|
|
328
349
|
* `ltr(version, range)`: Return `true` if version is less than all the
|
|
@@ -331,6 +352,7 @@ strings that they parse.
|
|
|
331
352
|
the bounds of the range in either the high or low direction. The
|
|
332
353
|
`hilo` argument must be either the string `'>'` or `'<'`. (This is
|
|
333
354
|
the function called by `gtr` and `ltr`.)
|
|
355
|
+
* `intersects(range)`: Return true if any of the ranges comparators intersect
|
|
334
356
|
|
|
335
357
|
Note that, since ranges may be non-contiguous, a version might not be
|
|
336
358
|
greater than a range, less than a range, *or* satisfy a range! For
|
package/package.json
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "semver",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.4.1",
|
|
4
4
|
"description": "The semantic version parser used by npm.",
|
|
5
5
|
"main": "semver.js",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"test": "tap test/*.js"
|
|
7
|
+
"test": "tap test/*.js --cov -J"
|
|
8
8
|
},
|
|
9
9
|
"devDependencies": {
|
|
10
|
-
"tap": "^
|
|
10
|
+
"tap": "^10.7.0"
|
|
11
11
|
},
|
|
12
12
|
"license": "ISC",
|
|
13
13
|
"repository": "https://github.com/npm/node-semver",
|
|
14
14
|
"bin": {
|
|
15
15
|
"semver": "./bin/semver"
|
|
16
|
-
}
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"bin",
|
|
19
|
+
"range.bnf",
|
|
20
|
+
"semver.js"
|
|
21
|
+
]
|
|
17
22
|
}
|
package/semver.js
CHANGED
|
@@ -314,9 +314,9 @@ function SemVer(version, loose) {
|
|
|
314
314
|
else
|
|
315
315
|
this.prerelease = m[4].split('.').map(function(id) {
|
|
316
316
|
if (/^[0-9]+$/.test(id)) {
|
|
317
|
-
var num = +id
|
|
317
|
+
var num = +id;
|
|
318
318
|
if (num >= 0 && num < MAX_SAFE_INTEGER)
|
|
319
|
-
return num
|
|
319
|
+
return num;
|
|
320
320
|
}
|
|
321
321
|
return id;
|
|
322
322
|
});
|
|
@@ -563,7 +563,7 @@ function patch(a, loose) {
|
|
|
563
563
|
|
|
564
564
|
exports.compare = compare;
|
|
565
565
|
function compare(a, b, loose) {
|
|
566
|
-
return new SemVer(a, loose).compare(b);
|
|
566
|
+
return new SemVer(a, loose).compare(new SemVer(b, loose));
|
|
567
567
|
}
|
|
568
568
|
|
|
569
569
|
exports.compareLoose = compareLoose;
|
|
@@ -704,11 +704,59 @@ Comparator.prototype.test = function(version) {
|
|
|
704
704
|
return cmp(version, this.operator, this.semver, this.loose);
|
|
705
705
|
};
|
|
706
706
|
|
|
707
|
+
Comparator.prototype.intersects = function(comp, loose) {
|
|
708
|
+
if (!(comp instanceof Comparator)) {
|
|
709
|
+
throw new TypeError('a Comparator is required');
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
var rangeTmp;
|
|
713
|
+
|
|
714
|
+
if (this.operator === '') {
|
|
715
|
+
rangeTmp = new Range(comp.value, loose);
|
|
716
|
+
return satisfies(this.value, rangeTmp, loose);
|
|
717
|
+
} else if (comp.operator === '') {
|
|
718
|
+
rangeTmp = new Range(this.value, loose);
|
|
719
|
+
return satisfies(comp.semver, rangeTmp, loose);
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
var sameDirectionIncreasing =
|
|
723
|
+
(this.operator === '>=' || this.operator === '>') &&
|
|
724
|
+
(comp.operator === '>=' || comp.operator === '>');
|
|
725
|
+
var sameDirectionDecreasing =
|
|
726
|
+
(this.operator === '<=' || this.operator === '<') &&
|
|
727
|
+
(comp.operator === '<=' || comp.operator === '<');
|
|
728
|
+
var sameSemVer = this.semver.version === comp.semver.version;
|
|
729
|
+
var differentDirectionsInclusive =
|
|
730
|
+
(this.operator === '>=' || this.operator === '<=') &&
|
|
731
|
+
(comp.operator === '>=' || comp.operator === '<=');
|
|
732
|
+
var oppositeDirectionsLessThan =
|
|
733
|
+
cmp(this.semver, '<', comp.semver, loose) &&
|
|
734
|
+
((this.operator === '>=' || this.operator === '>') &&
|
|
735
|
+
(comp.operator === '<=' || comp.operator === '<'));
|
|
736
|
+
var oppositeDirectionsGreaterThan =
|
|
737
|
+
cmp(this.semver, '>', comp.semver, loose) &&
|
|
738
|
+
((this.operator === '<=' || this.operator === '<') &&
|
|
739
|
+
(comp.operator === '>=' || comp.operator === '>'));
|
|
740
|
+
|
|
741
|
+
return sameDirectionIncreasing || sameDirectionDecreasing ||
|
|
742
|
+
(sameSemVer && differentDirectionsInclusive) ||
|
|
743
|
+
oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;
|
|
744
|
+
};
|
|
745
|
+
|
|
707
746
|
|
|
708
747
|
exports.Range = Range;
|
|
709
748
|
function Range(range, loose) {
|
|
710
|
-
if (
|
|
711
|
-
|
|
749
|
+
if (range instanceof Range) {
|
|
750
|
+
if (range.loose === loose) {
|
|
751
|
+
return range;
|
|
752
|
+
} else {
|
|
753
|
+
return new Range(range.raw, loose);
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
if (range instanceof Comparator) {
|
|
758
|
+
return new Range(range.value, loose);
|
|
759
|
+
}
|
|
712
760
|
|
|
713
761
|
if (!(this instanceof Range))
|
|
714
762
|
return new Range(range, loose);
|
|
@@ -783,6 +831,22 @@ Range.prototype.parseRange = function(range) {
|
|
|
783
831
|
return set;
|
|
784
832
|
};
|
|
785
833
|
|
|
834
|
+
Range.prototype.intersects = function(range, loose) {
|
|
835
|
+
if (!(range instanceof Range)) {
|
|
836
|
+
throw new TypeError('a Range is required');
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
return this.set.some(function(thisComparators) {
|
|
840
|
+
return thisComparators.every(function(thisComparator) {
|
|
841
|
+
return range.set.some(function(rangeComparators) {
|
|
842
|
+
return rangeComparators.every(function(rangeComparator) {
|
|
843
|
+
return thisComparator.intersects(rangeComparator, loose);
|
|
844
|
+
});
|
|
845
|
+
});
|
|
846
|
+
});
|
|
847
|
+
});
|
|
848
|
+
};
|
|
849
|
+
|
|
786
850
|
// Mostly just for testing and legacy API reasons
|
|
787
851
|
exports.toComparators = toComparators;
|
|
788
852
|
function toComparators(range, loose) {
|
|
@@ -966,11 +1030,11 @@ function replaceXRange(comp, loose) {
|
|
|
966
1030
|
} else if (gtlt === '<=') {
|
|
967
1031
|
// <=0.7.x is actually <0.8.0, since any 0.7.x should
|
|
968
1032
|
// pass. Similarly, <=7.x is actually <8.0.0, etc.
|
|
969
|
-
gtlt = '<'
|
|
1033
|
+
gtlt = '<';
|
|
970
1034
|
if (xm)
|
|
971
|
-
M = +M + 1
|
|
1035
|
+
M = +M + 1;
|
|
972
1036
|
else
|
|
973
|
-
m = +m + 1
|
|
1037
|
+
m = +m + 1;
|
|
974
1038
|
}
|
|
975
1039
|
|
|
976
1040
|
ret = gtlt + M + '.' + m + '.' + p;
|
|
@@ -1087,11 +1151,42 @@ function satisfies(version, range, loose) {
|
|
|
1087
1151
|
|
|
1088
1152
|
exports.maxSatisfying = maxSatisfying;
|
|
1089
1153
|
function maxSatisfying(versions, range, loose) {
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
})
|
|
1154
|
+
var max = null;
|
|
1155
|
+
var maxSV = null;
|
|
1156
|
+
try {
|
|
1157
|
+
var rangeObj = new Range(range, loose);
|
|
1158
|
+
} catch (er) {
|
|
1159
|
+
return null;
|
|
1160
|
+
}
|
|
1161
|
+
versions.forEach(function (v) {
|
|
1162
|
+
if (rangeObj.test(v)) { // satisfies(v, range, loose)
|
|
1163
|
+
if (!max || maxSV.compare(v) === -1) { // compare(max, v, true)
|
|
1164
|
+
max = v;
|
|
1165
|
+
maxSV = new SemVer(max, loose);
|
|
1166
|
+
}
|
|
1167
|
+
}
|
|
1168
|
+
})
|
|
1169
|
+
return max;
|
|
1170
|
+
}
|
|
1171
|
+
|
|
1172
|
+
exports.minSatisfying = minSatisfying;
|
|
1173
|
+
function minSatisfying(versions, range, loose) {
|
|
1174
|
+
var min = null;
|
|
1175
|
+
var minSV = null;
|
|
1176
|
+
try {
|
|
1177
|
+
var rangeObj = new Range(range, loose);
|
|
1178
|
+
} catch (er) {
|
|
1179
|
+
return null;
|
|
1180
|
+
}
|
|
1181
|
+
versions.forEach(function (v) {
|
|
1182
|
+
if (rangeObj.test(v)) { // satisfies(v, range, loose)
|
|
1183
|
+
if (!min || minSV.compare(v) === 1) { // compare(min, v, true)
|
|
1184
|
+
min = v;
|
|
1185
|
+
minSV = new SemVer(min, loose);
|
|
1186
|
+
}
|
|
1187
|
+
}
|
|
1188
|
+
})
|
|
1189
|
+
return min;
|
|
1095
1190
|
}
|
|
1096
1191
|
|
|
1097
1192
|
exports.validRange = validRange;
|
|
@@ -1186,3 +1281,16 @@ function outside(version, range, hilo, loose) {
|
|
|
1186
1281
|
}
|
|
1187
1282
|
return true;
|
|
1188
1283
|
}
|
|
1284
|
+
|
|
1285
|
+
exports.prerelease = prerelease;
|
|
1286
|
+
function prerelease(version, loose) {
|
|
1287
|
+
var parsed = parse(version, loose);
|
|
1288
|
+
return (parsed && parsed.prerelease.length) ? parsed.prerelease : null;
|
|
1289
|
+
}
|
|
1290
|
+
|
|
1291
|
+
exports.intersects = intersects;
|
|
1292
|
+
function intersects(r1, r2, loose) {
|
|
1293
|
+
r1 = new Range(r1, loose)
|
|
1294
|
+
r2 = new Range(r2, loose)
|
|
1295
|
+
return r1.intersects(r2)
|
|
1296
|
+
}
|
package/.npmignore
DELETED
package/.travis.yml
DELETED
package/test/big-numbers.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
var test = require('tap').test
|
|
2
|
-
var semver = require('../')
|
|
3
|
-
|
|
4
|
-
test('long version is too long', function (t) {
|
|
5
|
-
var v = '1.2.' + new Array(256).join('1')
|
|
6
|
-
t.throws(function () {
|
|
7
|
-
new semver.SemVer(v)
|
|
8
|
-
})
|
|
9
|
-
t.equal(semver.valid(v, false), null)
|
|
10
|
-
t.equal(semver.valid(v, true), null)
|
|
11
|
-
t.equal(semver.inc(v, 'patch'), null)
|
|
12
|
-
t.end()
|
|
13
|
-
})
|
|
14
|
-
|
|
15
|
-
test('big number is like too long version', function (t) {
|
|
16
|
-
var v = '1.2.' + new Array(100).join('1')
|
|
17
|
-
t.throws(function () {
|
|
18
|
-
new semver.SemVer(v)
|
|
19
|
-
})
|
|
20
|
-
t.equal(semver.valid(v, false), null)
|
|
21
|
-
t.equal(semver.valid(v, true), null)
|
|
22
|
-
t.equal(semver.inc(v, 'patch'), null)
|
|
23
|
-
t.end()
|
|
24
|
-
})
|
|
25
|
-
|
|
26
|
-
test('parsing null does not throw', function (t) {
|
|
27
|
-
t.equal(semver.parse(null), null)
|
|
28
|
-
t.equal(semver.parse({}), null)
|
|
29
|
-
t.equal(semver.parse(new semver.SemVer('1.2.3')).version, '1.2.3')
|
|
30
|
-
t.end()
|
|
31
|
-
})
|
package/test/clean.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
var tap = require('tap');
|
|
2
|
-
var test = tap.test;
|
|
3
|
-
var semver = require('../semver.js');
|
|
4
|
-
var clean = semver.clean;
|
|
5
|
-
|
|
6
|
-
test('\nclean tests', function(t) {
|
|
7
|
-
// [range, version]
|
|
8
|
-
// Version should be detectable despite extra characters
|
|
9
|
-
[
|
|
10
|
-
['1.2.3', '1.2.3'],
|
|
11
|
-
[' 1.2.3 ', '1.2.3'],
|
|
12
|
-
[' 1.2.3-4 ', '1.2.3-4'],
|
|
13
|
-
[' 1.2.3-pre ', '1.2.3-pre'],
|
|
14
|
-
[' =v1.2.3 ', '1.2.3'],
|
|
15
|
-
['v1.2.3', '1.2.3'],
|
|
16
|
-
[' v1.2.3 ', '1.2.3'],
|
|
17
|
-
['\t1.2.3', '1.2.3'],
|
|
18
|
-
['>1.2.3', null],
|
|
19
|
-
['~1.2.3', null],
|
|
20
|
-
['<=1.2.3', null],
|
|
21
|
-
['1.2.x', null]
|
|
22
|
-
].forEach(function(tuple) {
|
|
23
|
-
var range = tuple[0];
|
|
24
|
-
var version = tuple[1];
|
|
25
|
-
var msg = 'clean(' + range + ') = ' + version;
|
|
26
|
-
t.equal(clean(range), version, msg);
|
|
27
|
-
});
|
|
28
|
-
t.end();
|
|
29
|
-
});
|
package/test/gtr.js
DELETED
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
var tap = require('tap');
|
|
2
|
-
var test = tap.test;
|
|
3
|
-
var semver = require('../semver.js');
|
|
4
|
-
var gtr = semver.gtr;
|
|
5
|
-
|
|
6
|
-
test('\ngtr tests', function(t) {
|
|
7
|
-
// [range, version, loose]
|
|
8
|
-
// Version should be greater than range
|
|
9
|
-
[
|
|
10
|
-
['~1.2.2', '1.3.0'],
|
|
11
|
-
['~0.6.1-1', '0.7.1-1'],
|
|
12
|
-
['1.0.0 - 2.0.0', '2.0.1'],
|
|
13
|
-
['1.0.0', '1.0.1-beta1'],
|
|
14
|
-
['1.0.0', '2.0.0'],
|
|
15
|
-
['<=2.0.0', '2.1.1'],
|
|
16
|
-
['<=2.0.0', '3.2.9'],
|
|
17
|
-
['<2.0.0', '2.0.0'],
|
|
18
|
-
['0.1.20 || 1.2.4', '1.2.5'],
|
|
19
|
-
['2.x.x', '3.0.0'],
|
|
20
|
-
['1.2.x', '1.3.0'],
|
|
21
|
-
['1.2.x || 2.x', '3.0.0'],
|
|
22
|
-
['2.*.*', '5.0.1'],
|
|
23
|
-
['1.2.*', '1.3.3'],
|
|
24
|
-
['1.2.* || 2.*', '4.0.0'],
|
|
25
|
-
['2', '3.0.0'],
|
|
26
|
-
['2.3', '2.4.2'],
|
|
27
|
-
['~2.4', '2.5.0'], // >=2.4.0 <2.5.0
|
|
28
|
-
['~2.4', '2.5.5'],
|
|
29
|
-
['~>3.2.1', '3.3.0'], // >=3.2.1 <3.3.0
|
|
30
|
-
['~1', '2.2.3'], // >=1.0.0 <2.0.0
|
|
31
|
-
['~>1', '2.2.4'],
|
|
32
|
-
['~> 1', '3.2.3'],
|
|
33
|
-
['~1.0', '1.1.2'], // >=1.0.0 <1.1.0
|
|
34
|
-
['~ 1.0', '1.1.0'],
|
|
35
|
-
['<1.2', '1.2.0'],
|
|
36
|
-
['< 1.2', '1.2.1'],
|
|
37
|
-
['1', '2.0.0beta', true],
|
|
38
|
-
['~v0.5.4-pre', '0.6.0'],
|
|
39
|
-
['~v0.5.4-pre', '0.6.1-pre'],
|
|
40
|
-
['=0.7.x', '0.8.0'],
|
|
41
|
-
['=0.7.x', '0.8.0-asdf'],
|
|
42
|
-
['<0.7.x', '0.7.0'],
|
|
43
|
-
['~1.2.2', '1.3.0'],
|
|
44
|
-
['1.0.0 - 2.0.0', '2.2.3'],
|
|
45
|
-
['1.0.0', '1.0.1'],
|
|
46
|
-
['<=2.0.0', '3.0.0'],
|
|
47
|
-
['<=2.0.0', '2.9999.9999'],
|
|
48
|
-
['<=2.0.0', '2.2.9'],
|
|
49
|
-
['<2.0.0', '2.9999.9999'],
|
|
50
|
-
['<2.0.0', '2.2.9'],
|
|
51
|
-
['2.x.x', '3.1.3'],
|
|
52
|
-
['1.2.x', '1.3.3'],
|
|
53
|
-
['1.2.x || 2.x', '3.1.3'],
|
|
54
|
-
['2.*.*', '3.1.3'],
|
|
55
|
-
['1.2.*', '1.3.3'],
|
|
56
|
-
['1.2.* || 2.*', '3.1.3'],
|
|
57
|
-
['2', '3.1.2'],
|
|
58
|
-
['2.3', '2.4.1'],
|
|
59
|
-
['~2.4', '2.5.0'], // >=2.4.0 <2.5.0
|
|
60
|
-
['~>3.2.1', '3.3.2'], // >=3.2.1 <3.3.0
|
|
61
|
-
['~1', '2.2.3'], // >=1.0.0 <2.0.0
|
|
62
|
-
['~>1', '2.2.3'],
|
|
63
|
-
['~1.0', '1.1.0'], // >=1.0.0 <1.1.0
|
|
64
|
-
['<1', '1.0.0'],
|
|
65
|
-
['1', '2.0.0beta', true],
|
|
66
|
-
['<1', '1.0.0beta', true],
|
|
67
|
-
['< 1', '1.0.0beta', true],
|
|
68
|
-
['=0.7.x', '0.8.2'],
|
|
69
|
-
['<0.7.x', '0.7.2']
|
|
70
|
-
].forEach(function(tuple) {
|
|
71
|
-
var range = tuple[0];
|
|
72
|
-
var version = tuple[1];
|
|
73
|
-
var loose = tuple[2] || false;
|
|
74
|
-
var msg = 'gtr(' + version + ', ' + range + ', ' + loose + ')';
|
|
75
|
-
t.ok(gtr(version, range, loose), msg);
|
|
76
|
-
});
|
|
77
|
-
t.end();
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
test('\nnegative gtr tests', function(t) {
|
|
81
|
-
// [range, version, loose]
|
|
82
|
-
// Version should NOT be greater than range
|
|
83
|
-
[
|
|
84
|
-
['~0.6.1-1', '0.6.1-1'],
|
|
85
|
-
['1.0.0 - 2.0.0', '1.2.3'],
|
|
86
|
-
['1.0.0 - 2.0.0', '0.9.9'],
|
|
87
|
-
['1.0.0', '1.0.0'],
|
|
88
|
-
['>=*', '0.2.4'],
|
|
89
|
-
['', '1.0.0', true],
|
|
90
|
-
['*', '1.2.3'],
|
|
91
|
-
['*', 'v1.2.3-foo'],
|
|
92
|
-
['>=1.0.0', '1.0.0'],
|
|
93
|
-
['>=1.0.0', '1.0.1'],
|
|
94
|
-
['>=1.0.0', '1.1.0'],
|
|
95
|
-
['>1.0.0', '1.0.1'],
|
|
96
|
-
['>1.0.0', '1.1.0'],
|
|
97
|
-
['<=2.0.0', '2.0.0'],
|
|
98
|
-
['<=2.0.0', '1.9999.9999'],
|
|
99
|
-
['<=2.0.0', '0.2.9'],
|
|
100
|
-
['<2.0.0', '1.9999.9999'],
|
|
101
|
-
['<2.0.0', '0.2.9'],
|
|
102
|
-
['>= 1.0.0', '1.0.0'],
|
|
103
|
-
['>= 1.0.0', '1.0.1'],
|
|
104
|
-
['>= 1.0.0', '1.1.0'],
|
|
105
|
-
['> 1.0.0', '1.0.1'],
|
|
106
|
-
['> 1.0.0', '1.1.0'],
|
|
107
|
-
['<= 2.0.0', '2.0.0'],
|
|
108
|
-
['<= 2.0.0', '1.9999.9999'],
|
|
109
|
-
['<= 2.0.0', '0.2.9'],
|
|
110
|
-
['< 2.0.0', '1.9999.9999'],
|
|
111
|
-
['<\t2.0.0', '0.2.9'],
|
|
112
|
-
['>=0.1.97', 'v0.1.97'],
|
|
113
|
-
['>=0.1.97', '0.1.97'],
|
|
114
|
-
['0.1.20 || 1.2.4', '1.2.4'],
|
|
115
|
-
['0.1.20 || >1.2.4', '1.2.4'],
|
|
116
|
-
['0.1.20 || 1.2.4', '1.2.3'],
|
|
117
|
-
['0.1.20 || 1.2.4', '0.1.20'],
|
|
118
|
-
['>=0.2.3 || <0.0.1', '0.0.0'],
|
|
119
|
-
['>=0.2.3 || <0.0.1', '0.2.3'],
|
|
120
|
-
['>=0.2.3 || <0.0.1', '0.2.4'],
|
|
121
|
-
['||', '1.3.4'],
|
|
122
|
-
['2.x.x', '2.1.3'],
|
|
123
|
-
['1.2.x', '1.2.3'],
|
|
124
|
-
['1.2.x || 2.x', '2.1.3'],
|
|
125
|
-
['1.2.x || 2.x', '1.2.3'],
|
|
126
|
-
['x', '1.2.3'],
|
|
127
|
-
['2.*.*', '2.1.3'],
|
|
128
|
-
['1.2.*', '1.2.3'],
|
|
129
|
-
['1.2.* || 2.*', '2.1.3'],
|
|
130
|
-
['1.2.* || 2.*', '1.2.3'],
|
|
131
|
-
['1.2.* || 2.*', '1.2.3'],
|
|
132
|
-
['*', '1.2.3'],
|
|
133
|
-
['2', '2.1.2'],
|
|
134
|
-
['2.3', '2.3.1'],
|
|
135
|
-
['~2.4', '2.4.0'], // >=2.4.0 <2.5.0
|
|
136
|
-
['~2.4', '2.4.5'],
|
|
137
|
-
['~>3.2.1', '3.2.2'], // >=3.2.1 <3.3.0
|
|
138
|
-
['~1', '1.2.3'], // >=1.0.0 <2.0.0
|
|
139
|
-
['~>1', '1.2.3'],
|
|
140
|
-
['~> 1', '1.2.3'],
|
|
141
|
-
['~1.0', '1.0.2'], // >=1.0.0 <1.1.0
|
|
142
|
-
['~ 1.0', '1.0.2'],
|
|
143
|
-
['>=1', '1.0.0'],
|
|
144
|
-
['>= 1', '1.0.0'],
|
|
145
|
-
['<1.2', '1.1.1'],
|
|
146
|
-
['< 1.2', '1.1.1'],
|
|
147
|
-
['1', '1.0.0beta', true],
|
|
148
|
-
['~v0.5.4-pre', '0.5.5'],
|
|
149
|
-
['~v0.5.4-pre', '0.5.4'],
|
|
150
|
-
['=0.7.x', '0.7.2'],
|
|
151
|
-
['>=0.7.x', '0.7.2'],
|
|
152
|
-
['=0.7.x', '0.7.0-asdf'],
|
|
153
|
-
['>=0.7.x', '0.7.0-asdf'],
|
|
154
|
-
['<=0.7.x', '0.6.2'],
|
|
155
|
-
['>0.2.3 >0.2.4 <=0.2.5', '0.2.5'],
|
|
156
|
-
['>=0.2.3 <=0.2.4', '0.2.4'],
|
|
157
|
-
['1.0.0 - 2.0.0', '2.0.0'],
|
|
158
|
-
['^1', '0.0.0-0'],
|
|
159
|
-
['^3.0.0', '2.0.0'],
|
|
160
|
-
['^1.0.0 || ~2.0.1', '2.0.0'],
|
|
161
|
-
['^0.1.0 || ~3.0.1 || 5.0.0', '3.2.0'],
|
|
162
|
-
['^0.1.0 || ~3.0.1 || 5.0.0', '1.0.0beta', true],
|
|
163
|
-
['^0.1.0 || ~3.0.1 || 5.0.0', '5.0.0-0', true],
|
|
164
|
-
['^0.1.0 || ~3.0.1 || >4 <=5.0.0', '3.5.0']
|
|
165
|
-
].forEach(function(tuple) {
|
|
166
|
-
var range = tuple[0];
|
|
167
|
-
var version = tuple[1];
|
|
168
|
-
var loose = tuple[2] || false;
|
|
169
|
-
var msg = '!gtr(' + version + ', ' + range + ', ' + loose + ')';
|
|
170
|
-
t.notOk(gtr(version, range, loose), msg);
|
|
171
|
-
});
|
|
172
|
-
t.end();
|
|
173
|
-
});
|