semver 5.0.3 → 5.3.0
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 +55 -8
- package/package.json +8 -3
- package/range.bnf +16 -0
- package/semver.js +21 -18
- package/.npmignore +0 -4
- package/.travis.yml +0 -5
- 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
|
@@ -4,6 +4,8 @@ semver(1) -- The semantic versioner for npm
|
|
|
4
4
|
## Usage
|
|
5
5
|
|
|
6
6
|
$ npm install semver
|
|
7
|
+
$ node
|
|
8
|
+
var semver = require('semver')
|
|
7
9
|
|
|
8
10
|
semver.valid('1.2.3') // '1.2.3'
|
|
9
11
|
semver.valid('a.b.c') // null
|
|
@@ -16,18 +18,35 @@ As a command-line utility:
|
|
|
16
18
|
|
|
17
19
|
$ semver -h
|
|
18
20
|
|
|
19
|
-
|
|
20
|
-
Test if version(s) satisfy the supplied range(s), and sort them.
|
|
21
|
+
SemVer 5.1.0
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
A JavaScript implementation of the http://semver.org/ specification
|
|
24
|
+
Copyright Isaac Z. Schlueter
|
|
25
|
+
|
|
26
|
+
Usage: semver [options] <version> [<version> [...]]
|
|
27
|
+
Prints valid versions sorted by SemVer precedence
|
|
28
|
+
|
|
29
|
+
Options:
|
|
30
|
+
-r --range <range>
|
|
31
|
+
Print versions that match the specified range.
|
|
32
|
+
|
|
33
|
+
-i --increment [<level>]
|
|
34
|
+
Increment a version by the specified level. Level can
|
|
35
|
+
be one of: major, minor, patch, premajor, preminor,
|
|
36
|
+
prepatch, or prerelease. Default level is 'patch'.
|
|
37
|
+
Only one version may be specified.
|
|
38
|
+
|
|
39
|
+
--preid <identifier>
|
|
40
|
+
Identifier to be used to prefix premajor, preminor,
|
|
41
|
+
prepatch or prerelease version increments.
|
|
42
|
+
|
|
43
|
+
-l --loose
|
|
44
|
+
Interpret versions and ranges loosely
|
|
25
45
|
|
|
26
46
|
Program exits successfully if any valid version satisfies
|
|
27
47
|
all supplied ranges, and prints all satisfying versions.
|
|
28
48
|
|
|
29
|
-
If no versions are
|
|
30
|
-
then exits failure.
|
|
49
|
+
If no satisfying versions are found, then exits failure.
|
|
31
50
|
|
|
32
51
|
Versions are printed in ascending order, so supplying
|
|
33
52
|
multiple versions to the utility will just sort them.
|
|
@@ -107,7 +126,7 @@ The method `.inc` takes an additional `identifier` string argument that
|
|
|
107
126
|
will append the value of the string as a prerelease identifier:
|
|
108
127
|
|
|
109
128
|
```javascript
|
|
110
|
-
> semver.inc('1.2.3', '
|
|
129
|
+
> semver.inc('1.2.3', 'prerelease', 'beta')
|
|
111
130
|
'1.2.4-beta.0'
|
|
112
131
|
```
|
|
113
132
|
|
|
@@ -228,6 +247,30 @@ zero.
|
|
|
228
247
|
* `^1.x` := `>=1.0.0 <2.0.0`
|
|
229
248
|
* `^0.x` := `>=0.0.0 <1.0.0`
|
|
230
249
|
|
|
250
|
+
### Range Grammar
|
|
251
|
+
|
|
252
|
+
Putting all this together, here is a Backus-Naur grammar for ranges,
|
|
253
|
+
for the benefit of parser authors:
|
|
254
|
+
|
|
255
|
+
```bnf
|
|
256
|
+
range-set ::= range ( logical-or range ) *
|
|
257
|
+
logical-or ::= ( ' ' ) * '||' ( ' ' ) *
|
|
258
|
+
range ::= hyphen | simple ( ' ' simple ) * | ''
|
|
259
|
+
hyphen ::= partial ' - ' partial
|
|
260
|
+
simple ::= primitive | partial | tilde | caret
|
|
261
|
+
primitive ::= ( '<' | '>' | '>=' | '<=' | '=' | ) partial
|
|
262
|
+
partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
|
|
263
|
+
xr ::= 'x' | 'X' | '*' | nr
|
|
264
|
+
nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) *
|
|
265
|
+
tilde ::= '~' partial
|
|
266
|
+
caret ::= '^' partial
|
|
267
|
+
qualifier ::= ( '-' pre )? ( '+' build )?
|
|
268
|
+
pre ::= parts
|
|
269
|
+
build ::= parts
|
|
270
|
+
parts ::= part ( '.' part ) *
|
|
271
|
+
part ::= nr | [-0-9A-Za-z]+
|
|
272
|
+
```
|
|
273
|
+
|
|
231
274
|
## Functions
|
|
232
275
|
|
|
233
276
|
All methods and classes take a final `loose` boolean argument that, if
|
|
@@ -248,6 +291,8 @@ strings that they parse.
|
|
|
248
291
|
same as `prepatch`. It increments the patch version, then makes a
|
|
249
292
|
prerelease. If the input version is already a prerelease it simply
|
|
250
293
|
increments it.
|
|
294
|
+
* `prerelease(v)`: Returns an array of prerelease components, or null
|
|
295
|
+
if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]`
|
|
251
296
|
* `major(v)`: Return the major version number.
|
|
252
297
|
* `minor(v)`: Return the minor version number.
|
|
253
298
|
* `patch(v)`: Return the patch version number.
|
|
@@ -282,6 +327,8 @@ strings that they parse.
|
|
|
282
327
|
range.
|
|
283
328
|
* `maxSatisfying(versions, range)`: Return the highest version in the list
|
|
284
329
|
that satisfies the range, or `null` if none of them do.
|
|
330
|
+
* `minSatisfying(versions, range)`: Return the lowest version in the list
|
|
331
|
+
that satisfies the range, or `null` if none of them do.
|
|
285
332
|
* `gtr(version, range)`: Return `true` if version is greater than all the
|
|
286
333
|
versions possible in the range.
|
|
287
334
|
* `ltr(version, range)`: Return `true` if version is less than all the
|
package/package.json
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "semver",
|
|
3
|
-
"version": "5.0
|
|
3
|
+
"version": "5.3.0",
|
|
4
4
|
"description": "The semantic version parser used by npm.",
|
|
5
5
|
"main": "semver.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"test": "tap test/*.js"
|
|
8
8
|
},
|
|
9
9
|
"devDependencies": {
|
|
10
|
-
"tap": "^
|
|
10
|
+
"tap": "^2.0.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/range.bnf
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
range-set ::= range ( logical-or range ) *
|
|
2
|
+
logical-or ::= ( ' ' ) * '||' ( ' ' ) *
|
|
3
|
+
range ::= hyphen | simple ( ' ' simple ) * | ''
|
|
4
|
+
hyphen ::= partial ' - ' partial
|
|
5
|
+
simple ::= primitive | partial | tilde | caret
|
|
6
|
+
primitive ::= ( '<' | '>' | '>=' | '<=' | '=' | ) partial
|
|
7
|
+
partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
|
|
8
|
+
xr ::= 'x' | 'X' | '*' | nr
|
|
9
|
+
nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) *
|
|
10
|
+
tilde ::= '~' partial
|
|
11
|
+
caret ::= '^' partial
|
|
12
|
+
qualifier ::= ( '-' pre )? ( '+' build )?
|
|
13
|
+
pre ::= parts
|
|
14
|
+
build ::= parts
|
|
15
|
+
parts ::= part ( '.' part ) *
|
|
16
|
+
part ::= nr | [-0-9A-Za-z]+
|
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
|
});
|
|
@@ -332,10 +332,6 @@ SemVer.prototype.format = function() {
|
|
|
332
332
|
return this.version;
|
|
333
333
|
};
|
|
334
334
|
|
|
335
|
-
SemVer.prototype.inspect = function() {
|
|
336
|
-
return '<SemVer "' + this + '">';
|
|
337
|
-
};
|
|
338
|
-
|
|
339
335
|
SemVer.prototype.toString = function() {
|
|
340
336
|
return this.version;
|
|
341
337
|
};
|
|
@@ -692,10 +688,6 @@ Comparator.prototype.parse = function(comp) {
|
|
|
692
688
|
this.semver = new SemVer(m[2], this.loose);
|
|
693
689
|
};
|
|
694
690
|
|
|
695
|
-
Comparator.prototype.inspect = function() {
|
|
696
|
-
return '<SemVer Comparator "' + this + '">';
|
|
697
|
-
};
|
|
698
|
-
|
|
699
691
|
Comparator.prototype.toString = function() {
|
|
700
692
|
return this.value;
|
|
701
693
|
};
|
|
@@ -739,10 +731,6 @@ function Range(range, loose) {
|
|
|
739
731
|
this.format();
|
|
740
732
|
}
|
|
741
733
|
|
|
742
|
-
Range.prototype.inspect = function() {
|
|
743
|
-
return '<SemVer Range "' + this.range + '">';
|
|
744
|
-
};
|
|
745
|
-
|
|
746
734
|
Range.prototype.format = function() {
|
|
747
735
|
this.range = this.set.map(function(comps) {
|
|
748
736
|
return comps.join(' ').trim();
|
|
@@ -848,7 +836,7 @@ function replaceTilde(comp, loose) {
|
|
|
848
836
|
else if (isX(m))
|
|
849
837
|
ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
|
|
850
838
|
else if (isX(p))
|
|
851
|
-
// ~1.2 == >=1.2.0
|
|
839
|
+
// ~1.2 == >=1.2.0 <1.3.0
|
|
852
840
|
ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
|
|
853
841
|
else if (pr) {
|
|
854
842
|
debug('replaceTilde pr', pr);
|
|
@@ -978,11 +966,11 @@ function replaceXRange(comp, loose) {
|
|
|
978
966
|
} else if (gtlt === '<=') {
|
|
979
967
|
// <=0.7.x is actually <0.8.0, since any 0.7.x should
|
|
980
968
|
// pass. Similarly, <=7.x is actually <8.0.0, etc.
|
|
981
|
-
gtlt = '<'
|
|
969
|
+
gtlt = '<';
|
|
982
970
|
if (xm)
|
|
983
|
-
M = +M + 1
|
|
971
|
+
M = +M + 1;
|
|
984
972
|
else
|
|
985
|
-
m = +m + 1
|
|
973
|
+
m = +m + 1;
|
|
986
974
|
}
|
|
987
975
|
|
|
988
976
|
ret = gtlt + M + '.' + m + '.' + p;
|
|
@@ -1106,6 +1094,15 @@ function maxSatisfying(versions, range, loose) {
|
|
|
1106
1094
|
})[0] || null;
|
|
1107
1095
|
}
|
|
1108
1096
|
|
|
1097
|
+
exports.minSatisfying = minSatisfying;
|
|
1098
|
+
function minSatisfying(versions, range, loose) {
|
|
1099
|
+
return versions.filter(function(version) {
|
|
1100
|
+
return satisfies(version, range, loose);
|
|
1101
|
+
}).sort(function(a, b) {
|
|
1102
|
+
return compare(a, b, loose);
|
|
1103
|
+
})[0] || null;
|
|
1104
|
+
}
|
|
1105
|
+
|
|
1109
1106
|
exports.validRange = validRange;
|
|
1110
1107
|
function validRange(range, loose) {
|
|
1111
1108
|
try {
|
|
@@ -1198,3 +1195,9 @@ function outside(version, range, hilo, loose) {
|
|
|
1198
1195
|
}
|
|
1199
1196
|
return true;
|
|
1200
1197
|
}
|
|
1198
|
+
|
|
1199
|
+
exports.prerelease = prerelease;
|
|
1200
|
+
function prerelease(version, loose) {
|
|
1201
|
+
var parsed = parse(version, loose);
|
|
1202
|
+
return (parsed && parsed.prerelease.length) ? parsed.prerelease : null;
|
|
1203
|
+
}
|
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
|
-
});
|