semver 2.0.11 → 2.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/Makefile +1 -1
- package/README.md +74 -27
- package/bin/semver +7 -1
- package/package.json +1 -1
- package/semver.browser.js +194 -6
- package/semver.browser.js.gz +0 -0
- package/semver.js +194 -6
- package/semver.min.js +1 -1
- package/semver.min.js.gz +0 -0
- package/test/gtr.js +173 -0
- package/test/index.js +57 -6
- package/test/ltr.js +174 -0
- package/r.js +0 -4
package/Makefile
CHANGED
package/README.md
CHANGED
|
@@ -34,7 +34,7 @@ As a command-line utility:
|
|
|
34
34
|
|
|
35
35
|
## Versions
|
|
36
36
|
|
|
37
|
-
A "version" is described by the v2.0.0 specification found at
|
|
37
|
+
A "version" is described by the `v2.0.0` specification found at
|
|
38
38
|
<http://semver.org/>.
|
|
39
39
|
|
|
40
40
|
A leading `"="` or `"v"` character is stripped off and ignored.
|
|
@@ -43,9 +43,10 @@ A leading `"="` or `"v"` character is stripped off and ignored.
|
|
|
43
43
|
|
|
44
44
|
The following range styles are supported:
|
|
45
45
|
|
|
46
|
-
* `1.2.3` A specific version. When nothing else will do.
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
* `1.2.3` A specific version. When nothing else will do. Must be a full
|
|
47
|
+
version number, with major, minor, and patch versions specified.
|
|
48
|
+
Note that build metadata is still ignored, so `1.2.3+build2012` will
|
|
49
|
+
satisfy this range.
|
|
49
50
|
* `>1.2.3` Greater than a specific version.
|
|
50
51
|
* `<1.2.3` Less than a specific version. If there is no prerelease
|
|
51
52
|
tag on the version range, then no prerelease version will be allowed
|
|
@@ -56,14 +57,33 @@ The following range styles are supported:
|
|
|
56
57
|
* `<=1.2.3` Less than or equal to. In this case, prerelease versions
|
|
57
58
|
ARE allowed, so `1.2.3-beta` would satisfy.
|
|
58
59
|
* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`
|
|
59
|
-
* `~1.2.3` := `>=1.2.3-0 <1.3.0-0` "Reasonably close to 1.2.3". When
|
|
60
|
+
* `~1.2.3` := `>=1.2.3-0 <1.3.0-0` "Reasonably close to `1.2.3`". When
|
|
60
61
|
using tilde operators, prerelease versions are supported as well,
|
|
61
62
|
but a prerelease of the next significant digit will NOT be
|
|
62
63
|
satisfactory, so `1.3.0-beta` will not satisfy `~1.2.3`.
|
|
63
|
-
*
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
* `^1.2.3` := `>=1.2.3-0 <2.0.0-0` "Compatible with `1.2.3`". When
|
|
65
|
+
using caret operators, anything from the specified version (including
|
|
66
|
+
prerelease) will be supported up to, but not including, the next
|
|
67
|
+
major version (or its prereleases). `1.5.1` will satisfy `^1.2.3`,
|
|
68
|
+
while `1.2.2` and `2.0.0-beta` will not.
|
|
69
|
+
* `^0.1.3` := `>=0.1.3-0 <0.2.0-0` "Compatible with `0.1.3`". `0.x.x` versions are
|
|
70
|
+
special: the first non-zero component indicates potentially breaking changes,
|
|
71
|
+
meaning the caret operator matches any version with the same first non-zero
|
|
72
|
+
component starting at the specified version.
|
|
73
|
+
* `^0.0.2` := `=0.0.2` "Only the version `0.0.2` is considered compatible"
|
|
74
|
+
* `~1.2` := `>=1.2.0-0 <1.3.0-0` "Any version starting with `1.2`"
|
|
75
|
+
* `^1.2` := `>=1.2.0-0 <2.0.0-0` "Any version compatible with `1.2`"
|
|
76
|
+
* `1.2.x` := `>=1.2.0-0 <1.3.0-0` "Any version starting with `1.2`"
|
|
77
|
+
* `1.2.*` Same as `1.2.x`.
|
|
78
|
+
* `1.2` Same as `1.2.x`.
|
|
79
|
+
* `~1` := `>=1.0.0-0 <2.0.0-0` "Any version starting with `1`"
|
|
80
|
+
* `^1` := `>=1.0.0-0 <2.0.0-0` "Any version compatible with `1`"
|
|
81
|
+
* `1.x` := `>=1.0.0-0 <2.0.0-0` "Any version starting with `1`"
|
|
82
|
+
* `1.*` Same as `1.x`.
|
|
83
|
+
* `1` Same as `1.x`.
|
|
84
|
+
* `*` Any version whatsoever.
|
|
85
|
+
* `x` Same as `*`.
|
|
86
|
+
* `""` (just an empty string) Same as `*`.
|
|
67
87
|
|
|
68
88
|
|
|
69
89
|
Ranges can be joined with either a space (which implies "and") or a
|
|
@@ -78,34 +98,61 @@ The resulting output will always be 100% strict, of course.
|
|
|
78
98
|
Strict-mode Comparators and Ranges will be strict about the SemVer
|
|
79
99
|
strings that they parse.
|
|
80
100
|
|
|
81
|
-
* valid(v)
|
|
82
|
-
* inc(v, release)
|
|
83
|
-
(major
|
|
101
|
+
* `valid(v)`: Return the parsed version, or null if it's not valid.
|
|
102
|
+
* `inc(v, release)`: Return the version incremented by the release
|
|
103
|
+
type (`major`, `premajor`, `minor`, `preminor`, `patch`,
|
|
104
|
+
`prepatch`, or `prerelease`), or null if it's not valid
|
|
105
|
+
* `premajor` in one call will bump the version up to the next major
|
|
106
|
+
version and down to a prerelease of that major version.
|
|
107
|
+
`preminor`, and `prepatch` work the same way.
|
|
108
|
+
* If called from a non-prerelease version, the `prerelease` will work the
|
|
109
|
+
same as `prepatch`. It increments the patch version, then makes a
|
|
110
|
+
prerelease. If the input version is already a prerelease it simply
|
|
111
|
+
increments it.
|
|
84
112
|
|
|
85
113
|
### Comparison
|
|
86
114
|
|
|
87
|
-
* gt(v1, v2)
|
|
88
|
-
* gte(v1, v2)
|
|
89
|
-
* lt(v1, v2)
|
|
90
|
-
* lte(v1, v2)
|
|
91
|
-
* eq(v1, v2)
|
|
115
|
+
* `gt(v1, v2)`: `v1 > v2`
|
|
116
|
+
* `gte(v1, v2)`: `v1 >= v2`
|
|
117
|
+
* `lt(v1, v2)`: `v1 < v2`
|
|
118
|
+
* `lte(v1, v2)`: `v1 <= v2`
|
|
119
|
+
* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent,
|
|
92
120
|
even if they're not the exact same string. You already know how to
|
|
93
121
|
compare strings.
|
|
94
|
-
* neq(v1, v2)
|
|
95
|
-
* cmp(v1, comparator, v2)
|
|
122
|
+
* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`.
|
|
123
|
+
* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call
|
|
96
124
|
the corresponding function above. `"==="` and `"!=="` do simple
|
|
97
125
|
string comparison, but are included for completeness. Throws if an
|
|
98
126
|
invalid comparison string is provided.
|
|
99
|
-
* compare(v1, v2)
|
|
100
|
-
v2 is greater. Sorts in ascending order if passed to Array.sort()
|
|
101
|
-
* rcompare(v1, v2)
|
|
102
|
-
in descending order when passed to Array.sort()
|
|
127
|
+
* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if
|
|
128
|
+
`v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
|
|
129
|
+
* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions
|
|
130
|
+
in descending order when passed to `Array.sort()`.
|
|
103
131
|
|
|
104
132
|
|
|
105
133
|
### Ranges
|
|
106
134
|
|
|
107
|
-
* validRange(range)
|
|
108
|
-
* satisfies(version, range)
|
|
135
|
+
* `validRange(range)`: Return the valid range or null if it's not valid
|
|
136
|
+
* `satisfies(version, range)`: Return true if the version satisfies the
|
|
109
137
|
range.
|
|
110
|
-
* maxSatisfying(versions, range)
|
|
111
|
-
that satisfies the range, or null if none of them do.
|
|
138
|
+
* `maxSatisfying(versions, range)`: Return the highest version in the list
|
|
139
|
+
that satisfies the range, or `null` if none of them do.
|
|
140
|
+
* `gtr(version, range)`: Return `true` if version is greater than all the
|
|
141
|
+
versions possible in the range.
|
|
142
|
+
* `ltr(version, range)`: Return `true` if version is less than all the
|
|
143
|
+
versions possible in the range.
|
|
144
|
+
* `outside(version, range, hilo)`: Return true if the version is outside
|
|
145
|
+
the bounds of the range in either the high or low direction. The
|
|
146
|
+
`hilo` argument must be either the string `'>'` or `'<'`. (This is
|
|
147
|
+
the function called by `gtr` and `ltr`.)
|
|
148
|
+
|
|
149
|
+
Note that, since ranges may be non-contiguous, a version might not be
|
|
150
|
+
greater than a range, less than a range, *or* satisfy a range! For
|
|
151
|
+
example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`
|
|
152
|
+
until `2.0.0`, so the version `1.2.10` would not be greater than the
|
|
153
|
+
range (because `2.0.1` satisfies, which is higher), nor less than the
|
|
154
|
+
range (since `1.2.8` satisfies, which is lower), and it also does not
|
|
155
|
+
satisfy the range.
|
|
156
|
+
|
|
157
|
+
If you want to know if a version satisfies or does not satisfy a
|
|
158
|
+
range, use the `satisfies(version, range)` function.
|
package/bin/semver
CHANGED
|
@@ -13,6 +13,7 @@ var argv = process.argv.slice(2)
|
|
|
13
13
|
, version = require("../package.json").version
|
|
14
14
|
, loose = false
|
|
15
15
|
, semver = require("../semver")
|
|
16
|
+
, reverse = false
|
|
16
17
|
|
|
17
18
|
main()
|
|
18
19
|
|
|
@@ -26,6 +27,9 @@ function main () {
|
|
|
26
27
|
argv.unshift(a.slice(i + 1))
|
|
27
28
|
}
|
|
28
29
|
switch (a) {
|
|
30
|
+
case "-rv": case "-rev": case "--rev": case "--reverse":
|
|
31
|
+
reverse = true
|
|
32
|
+
break
|
|
29
33
|
case "-l": case "--loose":
|
|
30
34
|
loose = true
|
|
31
35
|
break
|
|
@@ -35,6 +39,7 @@ function main () {
|
|
|
35
39
|
case "-i": case "--inc": case "--increment":
|
|
36
40
|
switch (argv[0]) {
|
|
37
41
|
case "major": case "minor": case "patch": case "prerelease":
|
|
42
|
+
case "premajor": case "preminor": case "prepatch":
|
|
38
43
|
inc = argv.shift()
|
|
39
44
|
break
|
|
40
45
|
default:
|
|
@@ -77,8 +82,9 @@ function failInc () {
|
|
|
77
82
|
function fail () { process.exit(1) }
|
|
78
83
|
|
|
79
84
|
function success () {
|
|
85
|
+
var compare = reverse ? "rcompare" : "compare"
|
|
80
86
|
versions.sort(function (a, b) {
|
|
81
|
-
return semver
|
|
87
|
+
return semver[compare](a, b, loose)
|
|
82
88
|
}).map(function (v) {
|
|
83
89
|
return semver.clean(v, loose)
|
|
84
90
|
}).map(function (v) {
|
package/package.json
CHANGED
package/semver.browser.js
CHANGED
|
@@ -151,14 +151,29 @@ var LONETILDE = R++;
|
|
|
151
151
|
src[LONETILDE] = '(?:~>?)';
|
|
152
152
|
|
|
153
153
|
var TILDETRIM = R++;
|
|
154
|
-
src[TILDETRIM] = src[LONETILDE] + '\\s+';
|
|
155
|
-
|
|
154
|
+
src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+';
|
|
155
|
+
re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g');
|
|
156
|
+
var tildeTrimReplace = '$1~';
|
|
156
157
|
|
|
157
158
|
var TILDE = R++;
|
|
158
159
|
src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$';
|
|
159
160
|
var TILDELOOSE = R++;
|
|
160
161
|
src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$';
|
|
161
162
|
|
|
163
|
+
// Caret ranges.
|
|
164
|
+
// Meaning is "at least and backwards compatible with"
|
|
165
|
+
var LONECARET = R++;
|
|
166
|
+
src[LONECARET] = '(?:\\^)';
|
|
167
|
+
|
|
168
|
+
var CARETTRIM = R++;
|
|
169
|
+
src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+';
|
|
170
|
+
re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g');
|
|
171
|
+
var caretTrimReplace = '$1^';
|
|
172
|
+
|
|
173
|
+
var CARET = R++;
|
|
174
|
+
src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$';
|
|
175
|
+
var CARETLOOSE = R++;
|
|
176
|
+
src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$';
|
|
162
177
|
|
|
163
178
|
// A simple gt/lt/eq thing, or just "" to indicate "any version"
|
|
164
179
|
var COMPARATORLOOSE = R++;
|
|
@@ -233,6 +248,8 @@ function SemVer(version, loose) {
|
|
|
233
248
|
return version;
|
|
234
249
|
else
|
|
235
250
|
version = version.version;
|
|
251
|
+
} else if (typeof version !== 'string') {
|
|
252
|
+
throw new TypeError('Invalid Version: ' + version);
|
|
236
253
|
}
|
|
237
254
|
|
|
238
255
|
if (!(this instanceof SemVer))
|
|
@@ -305,7 +322,7 @@ SemVer.prototype.comparePre = function(other) {
|
|
|
305
322
|
return -1;
|
|
306
323
|
else if (!this.prerelease.length && other.prerelease.length)
|
|
307
324
|
return 1;
|
|
308
|
-
else if (!this.prerelease.
|
|
325
|
+
else if (!this.prerelease.length && !other.prerelease.length)
|
|
309
326
|
return 0;
|
|
310
327
|
|
|
311
328
|
var i = 0;
|
|
@@ -326,19 +343,49 @@ SemVer.prototype.comparePre = function(other) {
|
|
|
326
343
|
} while (++i);
|
|
327
344
|
};
|
|
328
345
|
|
|
346
|
+
// preminor will bump the version up to the next minor release, and immediately
|
|
347
|
+
// down to pre-release. premajor and prepatch work the same way.
|
|
329
348
|
SemVer.prototype.inc = function(release) {
|
|
330
349
|
switch (release) {
|
|
350
|
+
case 'premajor':
|
|
351
|
+
this.inc('major');
|
|
352
|
+
this.inc('pre');
|
|
353
|
+
break;
|
|
354
|
+
case 'preminor':
|
|
355
|
+
this.inc('minor');
|
|
356
|
+
this.inc('pre');
|
|
357
|
+
break;
|
|
358
|
+
case 'prepatch':
|
|
359
|
+
this.inc('patch');
|
|
360
|
+
this.inc('pre');
|
|
361
|
+
break;
|
|
362
|
+
// If the input is a non-prerelease version, this acts the same as
|
|
363
|
+
// prepatch.
|
|
364
|
+
case 'prerelease':
|
|
365
|
+
if (this.prerelease.length === 0)
|
|
366
|
+
this.inc('patch');
|
|
367
|
+
this.inc('pre');
|
|
368
|
+
break;
|
|
331
369
|
case 'major':
|
|
332
370
|
this.major++;
|
|
333
371
|
this.minor = -1;
|
|
334
372
|
case 'minor':
|
|
335
373
|
this.minor++;
|
|
336
|
-
this.patch =
|
|
374
|
+
this.patch = 0;
|
|
375
|
+
this.prerelease = [];
|
|
376
|
+
break;
|
|
337
377
|
case 'patch':
|
|
338
|
-
this.
|
|
378
|
+
// If this is not a pre-release version, it will increment the patch.
|
|
379
|
+
// If it is a pre-release it will bump up to the same patch version.
|
|
380
|
+
// 1.2.0-5 patches to 1.2.0
|
|
381
|
+
// 1.2.0 patches to 1.2.1
|
|
382
|
+
if (this.prerelease.length === 0)
|
|
383
|
+
this.patch++;
|
|
339
384
|
this.prerelease = [];
|
|
340
385
|
break;
|
|
341
|
-
|
|
386
|
+
// This probably shouldn't be used publically.
|
|
387
|
+
// 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
|
|
388
|
+
case 'pre':
|
|
342
389
|
if (this.prerelease.length === 0)
|
|
343
390
|
this.prerelease = [0];
|
|
344
391
|
else {
|
|
@@ -592,6 +639,9 @@ Range.prototype.parseRange = function(range) {
|
|
|
592
639
|
// `~ 1.2.3` => `~1.2.3`
|
|
593
640
|
range = range.replace(re[TILDETRIM], tildeTrimReplace);
|
|
594
641
|
|
|
642
|
+
// `^ 1.2.3` => `^1.2.3`
|
|
643
|
+
range = range.replace(re[CARETTRIM], caretTrimReplace);
|
|
644
|
+
|
|
595
645
|
// normalize spaces
|
|
596
646
|
range = range.split(/\s+/).join(' ');
|
|
597
647
|
|
|
@@ -629,6 +679,8 @@ function toComparators(range, loose) {
|
|
|
629
679
|
// already replaced the hyphen ranges
|
|
630
680
|
// turn into a set of JUST comparators.
|
|
631
681
|
function parseComparator(comp, loose) {
|
|
682
|
+
;
|
|
683
|
+
comp = replaceCarets(comp, loose);
|
|
632
684
|
;
|
|
633
685
|
comp = replaceTildes(comp, loose);
|
|
634
686
|
;
|
|
@@ -684,6 +736,63 @@ function replaceTilde(comp, loose) {
|
|
|
684
736
|
});
|
|
685
737
|
}
|
|
686
738
|
|
|
739
|
+
// ^ --> * (any, kinda silly)
|
|
740
|
+
// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
|
|
741
|
+
// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
|
|
742
|
+
// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
|
|
743
|
+
// ^1.2.3 --> >=1.2.3 <2.0.0
|
|
744
|
+
// ^1.2.0 --> >=1.2.0 <2.0.0
|
|
745
|
+
function replaceCarets(comp, loose) {
|
|
746
|
+
return comp.trim().split(/\s+/).map(function(comp) {
|
|
747
|
+
return replaceCaret(comp, loose);
|
|
748
|
+
}).join(' ');
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
function replaceCaret(comp, loose) {
|
|
752
|
+
var r = loose ? re[CARETLOOSE] : re[CARET];
|
|
753
|
+
return comp.replace(r, function(_, M, m, p, pr) {
|
|
754
|
+
;
|
|
755
|
+
var ret;
|
|
756
|
+
|
|
757
|
+
if (isX(M))
|
|
758
|
+
ret = '';
|
|
759
|
+
else if (isX(m))
|
|
760
|
+
ret = '>=' + M + '.0.0-0 <' + (+M + 1) + '.0.0-0';
|
|
761
|
+
else if (isX(p)) {
|
|
762
|
+
if (M === '0')
|
|
763
|
+
ret = '>=' + M + '.' + m + '.0-0 <' + M + '.' + (+m + 1) + '.0-0';
|
|
764
|
+
else
|
|
765
|
+
ret = '>=' + M + '.' + m + '.0-0 <' + (+M + 1) + '.0.0-0';
|
|
766
|
+
} else if (pr) {
|
|
767
|
+
;
|
|
768
|
+
if (pr.charAt(0) !== '-')
|
|
769
|
+
pr = '-' + pr;
|
|
770
|
+
if (M === '0') {
|
|
771
|
+
if (m === '0')
|
|
772
|
+
ret = '=' + M + '.' + m + '.' + p + pr;
|
|
773
|
+
else
|
|
774
|
+
ret = '>=' + M + '.' + m + '.' + p + pr +
|
|
775
|
+
' <' + M + '.' + (+m + 1) + '.0-0';
|
|
776
|
+
} else
|
|
777
|
+
ret = '>=' + M + '.' + m + '.' + p + pr +
|
|
778
|
+
' <' + (+M + 1) + '.0.0-0';
|
|
779
|
+
} else {
|
|
780
|
+
if (M === '0') {
|
|
781
|
+
if (m === '0')
|
|
782
|
+
ret = '=' + M + '.' + m + '.' + p;
|
|
783
|
+
else
|
|
784
|
+
ret = '>=' + M + '.' + m + '.' + p + '-0' +
|
|
785
|
+
' <' + M + '.' + (+m + 1) + '.0-0';
|
|
786
|
+
} else
|
|
787
|
+
ret = '>=' + M + '.' + m + '.' + p + '-0' +
|
|
788
|
+
' <' + (+M + 1) + '.0.0-0';
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
;
|
|
792
|
+
return ret;
|
|
793
|
+
});
|
|
794
|
+
}
|
|
795
|
+
|
|
687
796
|
function replaceXRanges(comp, loose) {
|
|
688
797
|
;
|
|
689
798
|
return comp.split(/\s+/).map(function(comp) {
|
|
@@ -840,6 +949,85 @@ function validRange(range, loose) {
|
|
|
840
949
|
}
|
|
841
950
|
}
|
|
842
951
|
|
|
952
|
+
// Determine if version is less than all the versions possible in the range
|
|
953
|
+
exports.ltr = ltr;
|
|
954
|
+
function ltr(version, range, loose) {
|
|
955
|
+
return outside(version, range, '<', loose);
|
|
956
|
+
}
|
|
957
|
+
|
|
958
|
+
// Determine if version is greater than all the versions possible in the range.
|
|
959
|
+
exports.gtr = gtr;
|
|
960
|
+
function gtr(version, range, loose) {
|
|
961
|
+
return outside(version, range, '>', loose);
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
exports.outside = outside;
|
|
965
|
+
function outside(version, range, hilo, loose) {
|
|
966
|
+
version = new SemVer(version, loose);
|
|
967
|
+
range = new Range(range, loose);
|
|
968
|
+
|
|
969
|
+
var gtfn, ltefn, ltfn, comp, ecomp;
|
|
970
|
+
switch (hilo) {
|
|
971
|
+
case '>':
|
|
972
|
+
gtfn = gt;
|
|
973
|
+
ltefn = lte;
|
|
974
|
+
ltfn = lt;
|
|
975
|
+
comp = '>';
|
|
976
|
+
ecomp = '>=';
|
|
977
|
+
break;
|
|
978
|
+
case '<':
|
|
979
|
+
gtfn = lt;
|
|
980
|
+
ltefn = gte;
|
|
981
|
+
ltfn = gt;
|
|
982
|
+
comp = '<';
|
|
983
|
+
ecomp = '<=';
|
|
984
|
+
break;
|
|
985
|
+
default:
|
|
986
|
+
throw new TypeError('Must provide a hilo val of "<" or ">"');
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
// If it satisifes the range it is not outside
|
|
990
|
+
if (satisfies(version, range, loose)) {
|
|
991
|
+
return false;
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
// From now on, variable terms are as if we're in "gtr" mode.
|
|
995
|
+
// but note that everything is flipped for the "ltr" function.
|
|
996
|
+
|
|
997
|
+
for (var i = 0; i < range.set.length; ++i) {
|
|
998
|
+
var comparators = range.set[i];
|
|
999
|
+
|
|
1000
|
+
var high = null;
|
|
1001
|
+
var low = null;
|
|
1002
|
+
|
|
1003
|
+
comparators.forEach(function(comparator) {
|
|
1004
|
+
high = high || comparator;
|
|
1005
|
+
low = low || comparator;
|
|
1006
|
+
if (gtfn(comparator.semver, high.semver, loose)) {
|
|
1007
|
+
high = comparator;
|
|
1008
|
+
} else if (ltfn(comparator.semver, low.semver, loose)) {
|
|
1009
|
+
low = comparator;
|
|
1010
|
+
}
|
|
1011
|
+
});
|
|
1012
|
+
|
|
1013
|
+
// If the edge version comparator has a operator then our version
|
|
1014
|
+
// isn't outside it
|
|
1015
|
+
if (high.operator === comp || high.operator === ecomp) {
|
|
1016
|
+
return false;
|
|
1017
|
+
}
|
|
1018
|
+
|
|
1019
|
+
// If the lowest version comparator has an operator and our version
|
|
1020
|
+
// is less than it then it isn't higher than the range
|
|
1021
|
+
if ((!low.operator || low.operator === comp) &&
|
|
1022
|
+
ltefn(version, low.semver)) {
|
|
1023
|
+
return false;
|
|
1024
|
+
} else if (low.operator === ecomp && ltfn(version, low.semver)) {
|
|
1025
|
+
return false;
|
|
1026
|
+
}
|
|
1027
|
+
}
|
|
1028
|
+
return true;
|
|
1029
|
+
}
|
|
1030
|
+
|
|
843
1031
|
// Use the define() function if we're in AMD land
|
|
844
1032
|
if (typeof define === 'function' && define.amd)
|
|
845
1033
|
define(exports);
|
package/semver.browser.js.gz
CHANGED
|
Binary file
|
package/semver.js
CHANGED
|
@@ -161,14 +161,29 @@ var LONETILDE = R++;
|
|
|
161
161
|
src[LONETILDE] = '(?:~>?)';
|
|
162
162
|
|
|
163
163
|
var TILDETRIM = R++;
|
|
164
|
-
src[TILDETRIM] = src[LONETILDE] + '\\s+';
|
|
165
|
-
|
|
164
|
+
src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+';
|
|
165
|
+
re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g');
|
|
166
|
+
var tildeTrimReplace = '$1~';
|
|
166
167
|
|
|
167
168
|
var TILDE = R++;
|
|
168
169
|
src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$';
|
|
169
170
|
var TILDELOOSE = R++;
|
|
170
171
|
src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$';
|
|
171
172
|
|
|
173
|
+
// Caret ranges.
|
|
174
|
+
// Meaning is "at least and backwards compatible with"
|
|
175
|
+
var LONECARET = R++;
|
|
176
|
+
src[LONECARET] = '(?:\\^)';
|
|
177
|
+
|
|
178
|
+
var CARETTRIM = R++;
|
|
179
|
+
src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+';
|
|
180
|
+
re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g');
|
|
181
|
+
var caretTrimReplace = '$1^';
|
|
182
|
+
|
|
183
|
+
var CARET = R++;
|
|
184
|
+
src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$';
|
|
185
|
+
var CARETLOOSE = R++;
|
|
186
|
+
src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$';
|
|
172
187
|
|
|
173
188
|
// A simple gt/lt/eq thing, or just "" to indicate "any version"
|
|
174
189
|
var COMPARATORLOOSE = R++;
|
|
@@ -243,6 +258,8 @@ function SemVer(version, loose) {
|
|
|
243
258
|
return version;
|
|
244
259
|
else
|
|
245
260
|
version = version.version;
|
|
261
|
+
} else if (typeof version !== 'string') {
|
|
262
|
+
throw new TypeError('Invalid Version: ' + version);
|
|
246
263
|
}
|
|
247
264
|
|
|
248
265
|
if (!(this instanceof SemVer))
|
|
@@ -315,7 +332,7 @@ SemVer.prototype.comparePre = function(other) {
|
|
|
315
332
|
return -1;
|
|
316
333
|
else if (!this.prerelease.length && other.prerelease.length)
|
|
317
334
|
return 1;
|
|
318
|
-
else if (!this.prerelease.
|
|
335
|
+
else if (!this.prerelease.length && !other.prerelease.length)
|
|
319
336
|
return 0;
|
|
320
337
|
|
|
321
338
|
var i = 0;
|
|
@@ -336,19 +353,49 @@ SemVer.prototype.comparePre = function(other) {
|
|
|
336
353
|
} while (++i);
|
|
337
354
|
};
|
|
338
355
|
|
|
356
|
+
// preminor will bump the version up to the next minor release, and immediately
|
|
357
|
+
// down to pre-release. premajor and prepatch work the same way.
|
|
339
358
|
SemVer.prototype.inc = function(release) {
|
|
340
359
|
switch (release) {
|
|
360
|
+
case 'premajor':
|
|
361
|
+
this.inc('major');
|
|
362
|
+
this.inc('pre');
|
|
363
|
+
break;
|
|
364
|
+
case 'preminor':
|
|
365
|
+
this.inc('minor');
|
|
366
|
+
this.inc('pre');
|
|
367
|
+
break;
|
|
368
|
+
case 'prepatch':
|
|
369
|
+
this.inc('patch');
|
|
370
|
+
this.inc('pre');
|
|
371
|
+
break;
|
|
372
|
+
// If the input is a non-prerelease version, this acts the same as
|
|
373
|
+
// prepatch.
|
|
374
|
+
case 'prerelease':
|
|
375
|
+
if (this.prerelease.length === 0)
|
|
376
|
+
this.inc('patch');
|
|
377
|
+
this.inc('pre');
|
|
378
|
+
break;
|
|
341
379
|
case 'major':
|
|
342
380
|
this.major++;
|
|
343
381
|
this.minor = -1;
|
|
344
382
|
case 'minor':
|
|
345
383
|
this.minor++;
|
|
346
|
-
this.patch =
|
|
384
|
+
this.patch = 0;
|
|
385
|
+
this.prerelease = [];
|
|
386
|
+
break;
|
|
347
387
|
case 'patch':
|
|
348
|
-
this.
|
|
388
|
+
// If this is not a pre-release version, it will increment the patch.
|
|
389
|
+
// If it is a pre-release it will bump up to the same patch version.
|
|
390
|
+
// 1.2.0-5 patches to 1.2.0
|
|
391
|
+
// 1.2.0 patches to 1.2.1
|
|
392
|
+
if (this.prerelease.length === 0)
|
|
393
|
+
this.patch++;
|
|
349
394
|
this.prerelease = [];
|
|
350
395
|
break;
|
|
351
|
-
|
|
396
|
+
// This probably shouldn't be used publically.
|
|
397
|
+
// 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
|
|
398
|
+
case 'pre':
|
|
352
399
|
if (this.prerelease.length === 0)
|
|
353
400
|
this.prerelease = [0];
|
|
354
401
|
else {
|
|
@@ -602,6 +649,9 @@ Range.prototype.parseRange = function(range) {
|
|
|
602
649
|
// `~ 1.2.3` => `~1.2.3`
|
|
603
650
|
range = range.replace(re[TILDETRIM], tildeTrimReplace);
|
|
604
651
|
|
|
652
|
+
// `^ 1.2.3` => `^1.2.3`
|
|
653
|
+
range = range.replace(re[CARETTRIM], caretTrimReplace);
|
|
654
|
+
|
|
605
655
|
// normalize spaces
|
|
606
656
|
range = range.split(/\s+/).join(' ');
|
|
607
657
|
|
|
@@ -640,6 +690,8 @@ function toComparators(range, loose) {
|
|
|
640
690
|
// turn into a set of JUST comparators.
|
|
641
691
|
function parseComparator(comp, loose) {
|
|
642
692
|
debug('comp', comp);
|
|
693
|
+
comp = replaceCarets(comp, loose);
|
|
694
|
+
debug('caret', comp);
|
|
643
695
|
comp = replaceTildes(comp, loose);
|
|
644
696
|
debug('tildes', comp);
|
|
645
697
|
comp = replaceXRanges(comp, loose);
|
|
@@ -694,6 +746,63 @@ function replaceTilde(comp, loose) {
|
|
|
694
746
|
});
|
|
695
747
|
}
|
|
696
748
|
|
|
749
|
+
// ^ --> * (any, kinda silly)
|
|
750
|
+
// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
|
|
751
|
+
// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
|
|
752
|
+
// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
|
|
753
|
+
// ^1.2.3 --> >=1.2.3 <2.0.0
|
|
754
|
+
// ^1.2.0 --> >=1.2.0 <2.0.0
|
|
755
|
+
function replaceCarets(comp, loose) {
|
|
756
|
+
return comp.trim().split(/\s+/).map(function(comp) {
|
|
757
|
+
return replaceCaret(comp, loose);
|
|
758
|
+
}).join(' ');
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
function replaceCaret(comp, loose) {
|
|
762
|
+
var r = loose ? re[CARETLOOSE] : re[CARET];
|
|
763
|
+
return comp.replace(r, function(_, M, m, p, pr) {
|
|
764
|
+
debug('caret', comp, _, M, m, p, pr);
|
|
765
|
+
var ret;
|
|
766
|
+
|
|
767
|
+
if (isX(M))
|
|
768
|
+
ret = '';
|
|
769
|
+
else if (isX(m))
|
|
770
|
+
ret = '>=' + M + '.0.0-0 <' + (+M + 1) + '.0.0-0';
|
|
771
|
+
else if (isX(p)) {
|
|
772
|
+
if (M === '0')
|
|
773
|
+
ret = '>=' + M + '.' + m + '.0-0 <' + M + '.' + (+m + 1) + '.0-0';
|
|
774
|
+
else
|
|
775
|
+
ret = '>=' + M + '.' + m + '.0-0 <' + (+M + 1) + '.0.0-0';
|
|
776
|
+
} else if (pr) {
|
|
777
|
+
debug('replaceCaret pr', pr);
|
|
778
|
+
if (pr.charAt(0) !== '-')
|
|
779
|
+
pr = '-' + pr;
|
|
780
|
+
if (M === '0') {
|
|
781
|
+
if (m === '0')
|
|
782
|
+
ret = '=' + M + '.' + m + '.' + p + pr;
|
|
783
|
+
else
|
|
784
|
+
ret = '>=' + M + '.' + m + '.' + p + pr +
|
|
785
|
+
' <' + M + '.' + (+m + 1) + '.0-0';
|
|
786
|
+
} else
|
|
787
|
+
ret = '>=' + M + '.' + m + '.' + p + pr +
|
|
788
|
+
' <' + (+M + 1) + '.0.0-0';
|
|
789
|
+
} else {
|
|
790
|
+
if (M === '0') {
|
|
791
|
+
if (m === '0')
|
|
792
|
+
ret = '=' + M + '.' + m + '.' + p;
|
|
793
|
+
else
|
|
794
|
+
ret = '>=' + M + '.' + m + '.' + p + '-0' +
|
|
795
|
+
' <' + M + '.' + (+m + 1) + '.0-0';
|
|
796
|
+
} else
|
|
797
|
+
ret = '>=' + M + '.' + m + '.' + p + '-0' +
|
|
798
|
+
' <' + (+M + 1) + '.0.0-0';
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
debug('caret return', ret);
|
|
802
|
+
return ret;
|
|
803
|
+
});
|
|
804
|
+
}
|
|
805
|
+
|
|
697
806
|
function replaceXRanges(comp, loose) {
|
|
698
807
|
debug('replaceXRanges', comp, loose);
|
|
699
808
|
return comp.split(/\s+/).map(function(comp) {
|
|
@@ -850,6 +959,85 @@ function validRange(range, loose) {
|
|
|
850
959
|
}
|
|
851
960
|
}
|
|
852
961
|
|
|
962
|
+
// Determine if version is less than all the versions possible in the range
|
|
963
|
+
exports.ltr = ltr;
|
|
964
|
+
function ltr(version, range, loose) {
|
|
965
|
+
return outside(version, range, '<', loose);
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
// Determine if version is greater than all the versions possible in the range.
|
|
969
|
+
exports.gtr = gtr;
|
|
970
|
+
function gtr(version, range, loose) {
|
|
971
|
+
return outside(version, range, '>', loose);
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
exports.outside = outside;
|
|
975
|
+
function outside(version, range, hilo, loose) {
|
|
976
|
+
version = new SemVer(version, loose);
|
|
977
|
+
range = new Range(range, loose);
|
|
978
|
+
|
|
979
|
+
var gtfn, ltefn, ltfn, comp, ecomp;
|
|
980
|
+
switch (hilo) {
|
|
981
|
+
case '>':
|
|
982
|
+
gtfn = gt;
|
|
983
|
+
ltefn = lte;
|
|
984
|
+
ltfn = lt;
|
|
985
|
+
comp = '>';
|
|
986
|
+
ecomp = '>=';
|
|
987
|
+
break;
|
|
988
|
+
case '<':
|
|
989
|
+
gtfn = lt;
|
|
990
|
+
ltefn = gte;
|
|
991
|
+
ltfn = gt;
|
|
992
|
+
comp = '<';
|
|
993
|
+
ecomp = '<=';
|
|
994
|
+
break;
|
|
995
|
+
default:
|
|
996
|
+
throw new TypeError('Must provide a hilo val of "<" or ">"');
|
|
997
|
+
}
|
|
998
|
+
|
|
999
|
+
// If it satisifes the range it is not outside
|
|
1000
|
+
if (satisfies(version, range, loose)) {
|
|
1001
|
+
return false;
|
|
1002
|
+
}
|
|
1003
|
+
|
|
1004
|
+
// From now on, variable terms are as if we're in "gtr" mode.
|
|
1005
|
+
// but note that everything is flipped for the "ltr" function.
|
|
1006
|
+
|
|
1007
|
+
for (var i = 0; i < range.set.length; ++i) {
|
|
1008
|
+
var comparators = range.set[i];
|
|
1009
|
+
|
|
1010
|
+
var high = null;
|
|
1011
|
+
var low = null;
|
|
1012
|
+
|
|
1013
|
+
comparators.forEach(function(comparator) {
|
|
1014
|
+
high = high || comparator;
|
|
1015
|
+
low = low || comparator;
|
|
1016
|
+
if (gtfn(comparator.semver, high.semver, loose)) {
|
|
1017
|
+
high = comparator;
|
|
1018
|
+
} else if (ltfn(comparator.semver, low.semver, loose)) {
|
|
1019
|
+
low = comparator;
|
|
1020
|
+
}
|
|
1021
|
+
});
|
|
1022
|
+
|
|
1023
|
+
// If the edge version comparator has a operator then our version
|
|
1024
|
+
// isn't outside it
|
|
1025
|
+
if (high.operator === comp || high.operator === ecomp) {
|
|
1026
|
+
return false;
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1029
|
+
// If the lowest version comparator has an operator and our version
|
|
1030
|
+
// is less than it then it isn't higher than the range
|
|
1031
|
+
if ((!low.operator || low.operator === comp) &&
|
|
1032
|
+
ltefn(version, low.semver)) {
|
|
1033
|
+
return false;
|
|
1034
|
+
} else if (low.operator === ecomp && ltfn(version, low.semver)) {
|
|
1035
|
+
return false;
|
|
1036
|
+
}
|
|
1037
|
+
}
|
|
1038
|
+
return true;
|
|
1039
|
+
}
|
|
1040
|
+
|
|
853
1041
|
// Use the define() function if we're in AMD land
|
|
854
1042
|
if (typeof define === 'function' && define.amd)
|
|
855
1043
|
define(exports);
|
package/semver.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e){if(typeof module==="object"&&module.exports===e)e=module.exports=O;e.SEMVER_SPEC_VERSION="2.0.0";var r=e.re=[];var t=e.src=[];var n=0;var i=n++;t[i]="0|[1-9]\\d*";var s=n++;t[s]="[0-9]+";var o=n++;t[o]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var a=n++;t[a]="("+t[i]+")\\."+"("+t[i]+")\\."+"("+t[i]+")";var u=n++;t[u]="("+t[s]+")\\."+"("+t[s]+")\\."+"("+t[s]+")";var f=n++;t[f]="(?:"+t[i]+"|"+t[o]+")";var c=n++;t[c]="(?:"+t[s]+"|"+t[o]+")";var l=n++;t[l]="(?:-("+t[f]+"(?:\\."+t[f]+")*))";var p=n++;t[p]="(?:-?("+t[c]+"(?:\\."+t[c]+")*))";var h=n++;t[h]="[0-9A-Za-z-]+";var v=n++;t[v]="(?:\\+("+t[h]+"(?:\\."+t[h]+")*))";var m=n++;var g="v?"+t[a]+t[l]+"?"+t[v]+"?";t[m]="^"+g+"$";var d="[v=\\s]*"+t[u]+t[p]+"?"+t[v]+"?";var w=n++;t[w]="^"+d+"$";var y=n++;t[y]="((?:<|>)?=?)";var $=n++;t[$]=t[s]+"|x|X|\\*";var j=n++;t[j]=t[i]+"|x|X|\\*";var b=n++;t[b]="[v=\\s]*("+t[j]+")"+"(?:\\.("+t[j]+")"+"(?:\\.("+t[j]+")"+"(?:("+t[l]+")"+")?)?)?";var S=n++;t[S]="[v=\\s]*("+t[$]+")"+"(?:\\.("+t[$]+")"+"(?:\\.("+t[$]+")"+"(?:("+t[p]+")"+")?)?)?";var E=n++;t[E]="^"+t[y]+"\\s*"+t[b]+"$";var k=n++;t[k]="^"+t[y]+"\\s*"+t[S]+"$";var x=n++;t[x]="(?:~>?)";var R=n++;t[R]=t[x]+"\\s+";var V="~";var I=n++;t[I]="^"+t[x]+t[b]+"$";var C=n++;t[C]="^"+t[x]+t[S]+"$";var A=n++;t[A]="^"+t[y]+"\\s*("+d+")$|^$";var T=n++;t[T]="^"+t[y]+"\\s*("+g+")$|^$";var z=n++;t[z]="(\\s*)"+t[y]+"\\s*("+d+"|"+t[b]+")";r[z]=new RegExp(t[z],"g");var M="$1$2$3";var P=n++;t[P]="^\\s*("+t[b]+")"+"\\s+-\\s+"+"("+t[b]+")"+"\\s*$";var Z=n++;t[Z]="^\\s*("+t[S]+")"+"\\s+-\\s+"+"("+t[S]+")"+"\\s*$";var q=n++;t[q]="(<|>)?=?\\s*\\*";for(var L=0;L<n;L++){if(!r[L])r[L]=new RegExp(t[L])}e.parse=X;function X(e,t){var n=t?r[w]:r[m];return n.test(e)?new O(e,t):null}e.valid=_;function _(e,r){var t=X(e,r);return t?t.version:null}e.clean=N;function N(e,r){var t=X(e,r);return t?t.version:null}e.SemVer=O;function O(e,t){if(e instanceof O){if(e.loose===t)return e;else e=e.version}if(!(this instanceof O))return new O(e,t);this.loose=t;var n=e.trim().match(t?r[w]:r[m]);if(!n)throw new TypeError("Invalid Version: "+e);this.raw=e;this.major=+n[1];this.minor=+n[2];this.patch=+n[3];if(!n[4])this.prerelease=[];else this.prerelease=n[4].split(".").map(function(e){return/^[0-9]+$/.test(e)?+e:e});this.build=n[5]?n[5].split("."):[];this.format()}O.prototype.format=function(){this.version=this.major+"."+this.minor+"."+this.patch;if(this.prerelease.length)this.version+="-"+this.prerelease.join(".");return this.version};O.prototype.inspect=function(){return'<SemVer "'+this+'">'};O.prototype.toString=function(){return this.version};O.prototype.compare=function(e){if(!(e instanceof O))e=new O(e,this.loose);return this.compareMain(e)||this.comparePre(e)};O.prototype.compareMain=function(e){if(!(e instanceof O))e=new O(e,this.loose);return F(this.major,e.major)||F(this.minor,e.minor)||F(this.patch,e.patch)};O.prototype.comparePre=function(e){if(!(e instanceof O))e=new O(e,this.loose);if(this.prerelease.length&&!e.prerelease.length)return-1;else if(!this.prerelease.length&&e.prerelease.length)return 1;else if(!this.prerelease.lenth&&!e.prerelease.length)return 0;var r=0;do{var t=this.prerelease[r];var n=e.prerelease[r];if(t===undefined&&n===undefined)return 0;else if(n===undefined)return 1;else if(t===undefined)return-1;else if(t===n)continue;else return F(t,n)}while(++r)};O.prototype.inc=function(e){switch(e){case"major":this.major++;this.minor=-1;case"minor":this.minor++;this.patch=-1;case"patch":this.patch++;this.prerelease=[];break;case"prerelease":if(this.prerelease.length===0)this.prerelease=[0];else{var r=this.prerelease.length;while(--r>=0){if(typeof this.prerelease[r]==="number"){this.prerelease[r]++;r=-2}}if(r===-1)this.prerelease.push(0)}break;default:throw new Error("invalid increment argument: "+e)}this.format();return this};e.inc=B;function B(e,r,t){try{return new O(e,t).inc(r).version}catch(n){return null}}e.compareIdentifiers=F;var D=/^[0-9]+$/;function F(e,r){var t=D.test(e);var n=D.test(r);if(t&&n){e=+e;r=+r}return t&&!n?-1:n&&!t?1:e<r?-1:e>r?1:0}e.rcompareIdentifiers=G;function G(e,r){return F(r,e)}e.compare=H;function H(e,r,t){return new O(e,t).compare(r)}e.compareLoose=J;function J(e,r){return H(e,r,true)}e.rcompare=K;function K(e,r,t){return H(r,e,t)}e.sort=Q;function Q(r,t){return r.sort(function(r,n){return e.compare(r,n,t)})}e.rsort=U;function U(r,t){return r.sort(function(r,n){return e.rcompare(r,n,t)})}e.gt=W;function W(e,r,t){return H(e,r,t)>0}e.lt=Y;function Y(e,r,t){return H(e,r,t)<0}e.eq=er;function er(e,r,t){return H(e,r,t)===0}e.neq=rr;function rr(e,r,t){return H(e,r,t)!==0}e.gte=tr;function tr(e,r,t){return H(e,r,t)>=0}e.lte=nr;function nr(e,r,t){return H(e,r,t)<=0}e.cmp=ir;function ir(e,r,t,n){var i;switch(r){case"===":i=e===t;break;case"!==":i=e!==t;break;case"":case"=":case"==":i=er(e,t,n);break;case"!=":i=rr(e,t,n);break;case">":i=W(e,t,n);break;case">=":i=tr(e,t,n);break;case"<":i=Y(e,t,n);break;case"<=":i=nr(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return i}e.Comparator=sr;function sr(e,r){if(e instanceof sr){if(e.loose===r)return e;else e=e.value}if(!(this instanceof sr))return new sr(e,r);this.loose=r;this.parse(e);if(this.semver===or)this.value="";else this.value=this.operator+this.semver.version}var or={};sr.prototype.parse=function(e){var t=this.loose?r[A]:r[T];var n=e.match(t);if(!n)throw new TypeError("Invalid comparator: "+e);this.operator=n[1];if(!n[2])this.semver=or;else{this.semver=new O(n[2],this.loose);if(this.operator==="<"&&!this.semver.prerelease.length){this.semver.prerelease=["0"];this.semver.format()}}};sr.prototype.inspect=function(){return'<SemVer Comparator "'+this+'">'};sr.prototype.toString=function(){return this.value};sr.prototype.test=function(e){return this.semver===or?true:ir(e,this.operator,this.semver,this.loose)};e.Range=ar;function ar(e,r){if(e instanceof ar&&e.loose===r)return e;if(!(this instanceof ar))return new ar(e,r);this.loose=r;this.raw=e;this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length});if(!this.set.length){throw new TypeError("Invalid SemVer Range: "+e)}this.format()}ar.prototype.inspect=function(){return'<SemVer Range "'+this.range+'">'};ar.prototype.format=function(){this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim();return this.range};ar.prototype.toString=function(){return this.range};ar.prototype.parseRange=function(e){var t=this.loose;e=e.trim();var n=t?r[Z]:r[P];e=e.replace(n,gr);e=e.replace(r[z],M);e=e.replace(r[R],V);e=e.split(/\s+/).join(" ");var i=t?r[A]:r[T];var s=e.split(" ").map(function(e){return fr(e,t)}).join(" ").split(/\s+/);if(this.loose){s=s.filter(function(e){return!!e.match(i)})}s=s.map(function(e){return new sr(e,t)});return s};e.toComparators=ur;function ur(e,r){return new ar(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})}function fr(e,r){e=lr(e,r);e=hr(e,r);e=mr(e,r);return e}function cr(e){return!e||e.toLowerCase()==="x"||e==="*"}function lr(e,r){return e.trim().split(/\s+/).map(function(e){return pr(e,r)}).join(" ")}function pr(e,t){var n=t?r[C]:r[I];return e.replace(n,function(e,r,t,n,i){var s;if(cr(r))s="";else if(cr(t))s=">="+r+".0.0-0 <"+(+r+1)+".0.0-0";else if(cr(n))s=">="+r+"."+t+".0-0 <"+r+"."+(+t+1)+".0-0";else if(i){if(i.charAt(0)!=="-")i="-"+i;s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0-0"}else s=">="+r+"."+t+"."+n+"-0"+" <"+r+"."+(+t+1)+".0-0";return s})}function hr(e,r){return e.split(/\s+/).map(function(e){return vr(e,r)}).join(" ")}function vr(e,t){e=e.trim();var n=t?r[k]:r[E];return e.replace(n,function(e,r,t,n,i,s){var o=cr(t);var a=o||cr(n);var u=a||cr(i);var f=u;if(r==="="&&f)r="";if(r&&f){if(o)t=0;if(a)n=0;if(u)i=0;if(r===">"){r=">=";if(o){}else if(a){t=+t+1;n=0;i=0}else if(u){n=+n+1;i=0}}e=r+t+"."+n+"."+i+"-0"}else if(o){e="*"}else if(a){e=">="+t+".0.0-0 <"+(+t+1)+".0.0-0"}else if(u){e=">="+t+"."+n+".0-0 <"+t+"."+(+n+1)+".0-0"}return e})}function mr(e,t){return e.trim().replace(r[q],"")}function gr(e,r,t,n,i,s,o,a,u,f,c,l,p){if(cr(t))r="";else if(cr(n))r=">="+t+".0.0-0";else if(cr(i))r=">="+t+"."+n+".0-0";else r=">="+r;if(cr(u))a="";else if(cr(f))a="<"+(+u+1)+".0.0-0";else if(cr(c))a="<"+u+"."+(+f+1)+".0-0";else if(l)a="<="+u+"."+f+"."+c+"-"+l;else a="<="+a;return(r+" "+a).trim()}ar.prototype.test=function(e){if(!e)return false;for(var r=0;r<this.set.length;r++){if(dr(this.set[r],e))return true}return false};function dr(e,r){for(var t=0;t<e.length;t++){if(!e[t].test(r))return false}return true}e.satisfies=wr;function wr(e,r,t){try{r=new ar(r,t)}catch(n){return false}return r.test(e)}e.maxSatisfying=yr;function yr(e,r,t){return e.filter(function(e){return wr(e,r,t)}).sort(function(e,r){return K(e,r,t)})[0]||null}e.validRange=$r;function $r(e,r){try{return new ar(e,r).range||"*"}catch(t){return null}}if(typeof define==="function"&&define.amd)define(e)}(typeof exports==="object"?exports:typeof define==="function"&&define.amd?{}:semver={});
|
|
1
|
+
(function(e){if(typeof module==="object"&&module.exports===e)e=module.exports=H;e.SEMVER_SPEC_VERSION="2.0.0";var r=e.re=[];var t=e.src=[];var n=0;var i=n++;t[i]="0|[1-9]\\d*";var s=n++;t[s]="[0-9]+";var a=n++;t[a]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var o=n++;t[o]="("+t[i]+")\\."+"("+t[i]+")\\."+"("+t[i]+")";var f=n++;t[f]="("+t[s]+")\\."+"("+t[s]+")\\."+"("+t[s]+")";var u=n++;t[u]="(?:"+t[i]+"|"+t[a]+")";var c=n++;t[c]="(?:"+t[s]+"|"+t[a]+")";var l=n++;t[l]="(?:-("+t[u]+"(?:\\."+t[u]+")*))";var p=n++;t[p]="(?:-?("+t[c]+"(?:\\."+t[c]+")*))";var h=n++;t[h]="[0-9A-Za-z-]+";var v=n++;t[v]="(?:\\+("+t[h]+"(?:\\."+t[h]+")*))";var m=n++;var g="v?"+t[o]+t[l]+"?"+t[v]+"?";t[m]="^"+g+"$";var w="[v=\\s]*"+t[f]+t[p]+"?"+t[v]+"?";var d=n++;t[d]="^"+w+"$";var y=n++;t[y]="((?:<|>)?=?)";var b=n++;t[b]=t[s]+"|x|X|\\*";var $=n++;t[$]=t[i]+"|x|X|\\*";var j=n++;t[j]="[v=\\s]*("+t[$]+")"+"(?:\\.("+t[$]+")"+"(?:\\.("+t[$]+")"+"(?:("+t[l]+")"+")?)?)?";var k=n++;t[k]="[v=\\s]*("+t[b]+")"+"(?:\\.("+t[b]+")"+"(?:\\.("+t[b]+")"+"(?:("+t[p]+")"+")?)?)?";var E=n++;t[E]="^"+t[y]+"\\s*"+t[j]+"$";var x=n++;t[x]="^"+t[y]+"\\s*"+t[k]+"$";var R=n++;t[R]="(?:~>?)";var S=n++;t[S]="(\\s*)"+t[R]+"\\s+";r[S]=new RegExp(t[S],"g");var V="$1~";var I=n++;t[I]="^"+t[R]+t[j]+"$";var T=n++;t[T]="^"+t[R]+t[k]+"$";var A=n++;t[A]="(?:\\^)";var C=n++;t[C]="(\\s*)"+t[A]+"\\s+";r[C]=new RegExp(t[C],"g");var M="$1^";var z=n++;t[z]="^"+t[A]+t[j]+"$";var P=n++;t[P]="^"+t[A]+t[k]+"$";var Z=n++;t[Z]="^"+t[y]+"\\s*("+w+")$|^$";var q=n++;t[q]="^"+t[y]+"\\s*("+g+")$|^$";var L=n++;t[L]="(\\s*)"+t[y]+"\\s*("+w+"|"+t[j]+")";r[L]=new RegExp(t[L],"g");var X="$1$2$3";var _=n++;t[_]="^\\s*("+t[j]+")"+"\\s+-\\s+"+"("+t[j]+")"+"\\s*$";var N=n++;t[N]="^\\s*("+t[k]+")"+"\\s+-\\s+"+"("+t[k]+")"+"\\s*$";var O=n++;t[O]="(<|>)?=?\\s*\\*";for(var B=0;B<n;B++){if(!r[B])r[B]=new RegExp(t[B])}e.parse=D;function D(e,t){var n=t?r[d]:r[m];return n.test(e)?new H(e,t):null}e.valid=F;function F(e,r){var t=D(e,r);return t?t.version:null}e.clean=G;function G(e,r){var t=D(e,r);return t?t.version:null}e.SemVer=H;function H(e,t){if(e instanceof H){if(e.loose===t)return e;else e=e.version}else if(typeof e!=="string"){throw new TypeError("Invalid Version: "+e)}if(!(this instanceof H))return new H(e,t);this.loose=t;var n=e.trim().match(t?r[d]:r[m]);if(!n)throw new TypeError("Invalid Version: "+e);this.raw=e;this.major=+n[1];this.minor=+n[2];this.patch=+n[3];if(!n[4])this.prerelease=[];else this.prerelease=n[4].split(".").map(function(e){return/^[0-9]+$/.test(e)?+e:e});this.build=n[5]?n[5].split("."):[];this.format()}H.prototype.format=function(){this.version=this.major+"."+this.minor+"."+this.patch;if(this.prerelease.length)this.version+="-"+this.prerelease.join(".");return this.version};H.prototype.inspect=function(){return'<SemVer "'+this+'">'};H.prototype.toString=function(){return this.version};H.prototype.compare=function(e){if(!(e instanceof H))e=new H(e,this.loose);return this.compareMain(e)||this.comparePre(e)};H.prototype.compareMain=function(e){if(!(e instanceof H))e=new H(e,this.loose);return Q(this.major,e.major)||Q(this.minor,e.minor)||Q(this.patch,e.patch)};H.prototype.comparePre=function(e){if(!(e instanceof H))e=new H(e,this.loose);if(this.prerelease.length&&!e.prerelease.length)return-1;else if(!this.prerelease.length&&e.prerelease.length)return 1;else if(!this.prerelease.length&&!e.prerelease.length)return 0;var r=0;do{var t=this.prerelease[r];var n=e.prerelease[r];if(t===undefined&&n===undefined)return 0;else if(n===undefined)return 1;else if(t===undefined)return-1;else if(t===n)continue;else return Q(t,n)}while(++r)};H.prototype.inc=function(e){switch(e){case"premajor":this.inc("major");this.inc("pre");break;case"preminor":this.inc("minor");this.inc("pre");break;case"prepatch":this.inc("patch");this.inc("pre");break;case"prerelease":if(this.prerelease.length===0)this.inc("patch");this.inc("pre");break;case"major":this.major++;this.minor=-1;case"minor":this.minor++;this.patch=0;this.prerelease=[];break;case"patch":if(this.prerelease.length===0)this.patch++;this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else{var r=this.prerelease.length;while(--r>=0){if(typeof this.prerelease[r]==="number"){this.prerelease[r]++;r=-2}}if(r===-1)this.prerelease.push(0)}break;default:throw new Error("invalid increment argument: "+e)}this.format();return this};e.inc=J;function J(e,r,t){try{return new H(e,t).inc(r).version}catch(n){return null}}e.compareIdentifiers=Q;var K=/^[0-9]+$/;function Q(e,r){var t=K.test(e);var n=K.test(r);if(t&&n){e=+e;r=+r}return t&&!n?-1:n&&!t?1:e<r?-1:e>r?1:0}e.rcompareIdentifiers=U;function U(e,r){return Q(r,e)}e.compare=W;function W(e,r,t){return new H(e,t).compare(r)}e.compareLoose=Y;function Y(e,r){return W(e,r,true)}e.rcompare=er;function er(e,r,t){return W(r,e,t)}e.sort=rr;function rr(r,t){return r.sort(function(r,n){return e.compare(r,n,t)})}e.rsort=tr;function tr(r,t){return r.sort(function(r,n){return e.rcompare(r,n,t)})}e.gt=nr;function nr(e,r,t){return W(e,r,t)>0}e.lt=ir;function ir(e,r,t){return W(e,r,t)<0}e.eq=sr;function sr(e,r,t){return W(e,r,t)===0}e.neq=ar;function ar(e,r,t){return W(e,r,t)!==0}e.gte=or;function or(e,r,t){return W(e,r,t)>=0}e.lte=fr;function fr(e,r,t){return W(e,r,t)<=0}e.cmp=ur;function ur(e,r,t,n){var i;switch(r){case"===":i=e===t;break;case"!==":i=e!==t;break;case"":case"=":case"==":i=sr(e,t,n);break;case"!=":i=ar(e,t,n);break;case">":i=nr(e,t,n);break;case">=":i=or(e,t,n);break;case"<":i=ir(e,t,n);break;case"<=":i=fr(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return i}e.Comparator=cr;function cr(e,r){if(e instanceof cr){if(e.loose===r)return e;else e=e.value}if(!(this instanceof cr))return new cr(e,r);this.loose=r;this.parse(e);if(this.semver===lr)this.value="";else this.value=this.operator+this.semver.version}var lr={};cr.prototype.parse=function(e){var t=this.loose?r[Z]:r[q];var n=e.match(t);if(!n)throw new TypeError("Invalid comparator: "+e);this.operator=n[1];if(!n[2])this.semver=lr;else{this.semver=new H(n[2],this.loose);if(this.operator==="<"&&!this.semver.prerelease.length){this.semver.prerelease=["0"];this.semver.format()}}};cr.prototype.inspect=function(){return'<SemVer Comparator "'+this+'">'};cr.prototype.toString=function(){return this.value};cr.prototype.test=function(e){return this.semver===lr?true:ur(e,this.operator,this.semver,this.loose)};e.Range=pr;function pr(e,r){if(e instanceof pr&&e.loose===r)return e;if(!(this instanceof pr))return new pr(e,r);this.loose=r;this.raw=e;this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length});if(!this.set.length){throw new TypeError("Invalid SemVer Range: "+e)}this.format()}pr.prototype.inspect=function(){return'<SemVer Range "'+this.range+'">'};pr.prototype.format=function(){this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim();return this.range};pr.prototype.toString=function(){return this.range};pr.prototype.parseRange=function(e){var t=this.loose;e=e.trim();var n=t?r[N]:r[_];e=e.replace(n,kr);e=e.replace(r[L],X);e=e.replace(r[S],V);e=e.replace(r[C],M);e=e.split(/\s+/).join(" ");var i=t?r[Z]:r[q];var s=e.split(" ").map(function(e){return vr(e,t)}).join(" ").split(/\s+/);if(this.loose){s=s.filter(function(e){return!!e.match(i)})}s=s.map(function(e){return new cr(e,t)});return s};e.toComparators=hr;function hr(e,r){return new pr(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})}function vr(e,r){e=dr(e,r);e=gr(e,r);e=br(e,r);e=jr(e,r);return e}function mr(e){return!e||e.toLowerCase()==="x"||e==="*"}function gr(e,r){return e.trim().split(/\s+/).map(function(e){return wr(e,r)}).join(" ")}function wr(e,t){var n=t?r[T]:r[I];return e.replace(n,function(e,r,t,n,i){var s;if(mr(r))s="";else if(mr(t))s=">="+r+".0.0-0 <"+(+r+1)+".0.0-0";else if(mr(n))s=">="+r+"."+t+".0-0 <"+r+"."+(+t+1)+".0-0";else if(i){if(i.charAt(0)!=="-")i="-"+i;s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0-0"}else s=">="+r+"."+t+"."+n+"-0"+" <"+r+"."+(+t+1)+".0-0";return s})}function dr(e,r){return e.trim().split(/\s+/).map(function(e){return yr(e,r)}).join(" ")}function yr(e,t){var n=t?r[P]:r[z];return e.replace(n,function(e,r,t,n,i){var s;if(mr(r))s="";else if(mr(t))s=">="+r+".0.0-0 <"+(+r+1)+".0.0-0";else if(mr(n)){if(r==="0")s=">="+r+"."+t+".0-0 <"+r+"."+(+t+1)+".0-0";else s=">="+r+"."+t+".0-0 <"+(+r+1)+".0.0-0"}else if(i){if(i.charAt(0)!=="-")i="-"+i;if(r==="0"){if(t==="0")s="="+r+"."+t+"."+n+i;else s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0-0"}else s=">="+r+"."+t+"."+n+i+" <"+(+r+1)+".0.0-0"}else{if(r==="0"){if(t==="0")s="="+r+"."+t+"."+n;else s=">="+r+"."+t+"."+n+"-0"+" <"+r+"."+(+t+1)+".0-0"}else s=">="+r+"."+t+"."+n+"-0"+" <"+(+r+1)+".0.0-0"}return s})}function br(e,r){return e.split(/\s+/).map(function(e){return $r(e,r)}).join(" ")}function $r(e,t){e=e.trim();var n=t?r[x]:r[E];return e.replace(n,function(e,r,t,n,i,s){var a=mr(t);var o=a||mr(n);var f=o||mr(i);var u=f;if(r==="="&&u)r="";if(r&&u){if(a)t=0;if(o)n=0;if(f)i=0;if(r===">"){r=">=";if(a){}else if(o){t=+t+1;n=0;i=0}else if(f){n=+n+1;i=0}}e=r+t+"."+n+"."+i+"-0"}else if(a){e="*"}else if(o){e=">="+t+".0.0-0 <"+(+t+1)+".0.0-0"}else if(f){e=">="+t+"."+n+".0-0 <"+t+"."+(+n+1)+".0-0"}return e})}function jr(e,t){return e.trim().replace(r[O],"")}function kr(e,r,t,n,i,s,a,o,f,u,c,l,p){if(mr(t))r="";else if(mr(n))r=">="+t+".0.0-0";else if(mr(i))r=">="+t+"."+n+".0-0";else r=">="+r;if(mr(f))o="";else if(mr(u))o="<"+(+f+1)+".0.0-0";else if(mr(c))o="<"+f+"."+(+u+1)+".0-0";else if(l)o="<="+f+"."+u+"."+c+"-"+l;else o="<="+o;return(r+" "+o).trim()}pr.prototype.test=function(e){if(!e)return false;for(var r=0;r<this.set.length;r++){if(Er(this.set[r],e))return true}return false};function Er(e,r){for(var t=0;t<e.length;t++){if(!e[t].test(r))return false}return true}e.satisfies=xr;function xr(e,r,t){try{r=new pr(r,t)}catch(n){return false}return r.test(e)}e.maxSatisfying=Rr;function Rr(e,r,t){return e.filter(function(e){return xr(e,r,t)}).sort(function(e,r){return er(e,r,t)})[0]||null}e.validRange=Sr;function Sr(e,r){try{return new pr(e,r).range||"*"}catch(t){return null}}e.ltr=Vr;function Vr(e,r,t){return Tr(e,r,"<",t)}e.gtr=Ir;function Ir(e,r,t){return Tr(e,r,">",t)}e.outside=Tr;function Tr(e,r,t,n){e=new H(e,n);r=new pr(r,n);var i,s,a,o,f;switch(t){case">":i=nr;s=fr;a=ir;o=">";f=">=";break;case"<":i=ir;s=or;a=nr;o="<";f="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(xr(e,r,n)){return false}for(var u=0;u<r.set.length;++u){var c=r.set[u];var l=null;var p=null;c.forEach(function(e){l=l||e;p=p||e;if(i(e.semver,l.semver,n)){l=e}else if(a(e.semver,p.semver,n)){p=e}});if(l.operator===o||l.operator===f){return false}if((!p.operator||p.operator===o)&&s(e,p.semver)){return false}else if(p.operator===f&&a(e,p.semver)){return false}}return true}if(typeof define==="function"&&define.amd)define(e)})(typeof exports==="object"?exports:typeof define==="function"&&define.amd?{}:semver={});
|
package/semver.min.js.gz
CHANGED
|
Binary file
|
package/test/gtr.js
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
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
|
+
});
|
package/test/index.js
CHANGED
|
@@ -207,7 +207,15 @@ test('\nrange tests', function(t) {
|
|
|
207
207
|
['>=1.2.1 >=1.2.3', '1.2.3'],
|
|
208
208
|
['<=1.2.3', '1.2.3-beta'],
|
|
209
209
|
['>1.2', '1.3.0-beta'],
|
|
210
|
-
['>=1.2', '1.2.8']
|
|
210
|
+
['>=1.2', '1.2.8'],
|
|
211
|
+
['^1.2.3', '1.8.1'],
|
|
212
|
+
['^1.2.3', '1.2.3-beta'],
|
|
213
|
+
['^0.1.2', '0.1.2'],
|
|
214
|
+
['^0.1', '0.1.2'],
|
|
215
|
+
['^1.2', '1.4.2'],
|
|
216
|
+
['^1.2 ^1', '1.4.2'],
|
|
217
|
+
['^1.2', '1.2.0-pre'],
|
|
218
|
+
['^1.2.3', '1.2.3-pre']
|
|
211
219
|
].forEach(function(v) {
|
|
212
220
|
var range = v[0];
|
|
213
221
|
var ver = v[1];
|
|
@@ -268,9 +276,13 @@ test('\nnegative range tests', function(t) {
|
|
|
268
276
|
['<1.2.3', '1.2.3-beta'],
|
|
269
277
|
['=1.2.3', '1.2.3-beta'],
|
|
270
278
|
['>1.2', '1.2.8'],
|
|
279
|
+
['^1.2.3', '2.0.0-alpha'],
|
|
280
|
+
['^1.2.3', '1.2.2'],
|
|
281
|
+
['^1.2', '1.1.9'],
|
|
271
282
|
// invalid ranges never satisfied!
|
|
272
283
|
['blerg', '1.2.3'],
|
|
273
|
-
['git+https://user:password0123@github.com/foo', '123.0.0', true]
|
|
284
|
+
['git+https://user:password0123@github.com/foo', '123.0.0', true],
|
|
285
|
+
['^1.2.3', '2.0.0-pre']
|
|
274
286
|
].forEach(function(v) {
|
|
275
287
|
var range = v[0];
|
|
276
288
|
var ver = v[1];
|
|
@@ -290,8 +302,15 @@ test('\nincrement versions test', function(t) {
|
|
|
290
302
|
['1.2.3tag', 'major', '2.0.0', true],
|
|
291
303
|
['1.2.3-tag', 'major', '2.0.0'],
|
|
292
304
|
['1.2.3', 'fake', null],
|
|
305
|
+
['1.2.0-0', 'patch', '1.2.0'],
|
|
293
306
|
['fake', 'major', null],
|
|
294
|
-
['1.2.3', '
|
|
307
|
+
['1.2.3-4', 'major', '2.0.0'],
|
|
308
|
+
['1.2.3-4', 'minor', '1.3.0'],
|
|
309
|
+
['1.2.3-4', 'patch', '1.2.3'],
|
|
310
|
+
['1.2.3-alpha.0.beta', 'major', '2.0.0'],
|
|
311
|
+
['1.2.3-alpha.0.beta', 'minor', '1.3.0'],
|
|
312
|
+
['1.2.3-alpha.0.beta', 'patch', '1.2.3'],
|
|
313
|
+
['1.2.4', 'prerelease', '1.2.5-0'],
|
|
295
314
|
['1.2.3-0', 'prerelease', '1.2.3-1'],
|
|
296
315
|
['1.2.3-alpha.0', 'prerelease', '1.2.3-alpha.1'],
|
|
297
316
|
['1.2.3-alpha.1', 'prerelease', '1.2.3-alpha.2'],
|
|
@@ -307,7 +326,13 @@ test('\nincrement versions test', function(t) {
|
|
|
307
326
|
['1.2.3-alpha.10.beta.2', 'prerelease', '1.2.3-alpha.10.beta.3'],
|
|
308
327
|
['1.2.3-alpha.9.beta', 'prerelease', '1.2.3-alpha.10.beta'],
|
|
309
328
|
['1.2.3-alpha.10.beta', 'prerelease', '1.2.3-alpha.11.beta'],
|
|
310
|
-
['1.2.3-alpha.11.beta', 'prerelease', '1.2.3-alpha.12.beta']
|
|
329
|
+
['1.2.3-alpha.11.beta', 'prerelease', '1.2.3-alpha.12.beta'],
|
|
330
|
+
['1.2.0', 'preminor', '1.3.0-0'],
|
|
331
|
+
['1.2.0', 'premajor', '2.0.0-0'],
|
|
332
|
+
['1.2.0', 'preminor', '1.3.0-0'],
|
|
333
|
+
['1.2.0', 'premajor', '2.0.0-0']
|
|
334
|
+
|
|
335
|
+
|
|
311
336
|
].forEach(function(v) {
|
|
312
337
|
var pre = v[0];
|
|
313
338
|
var what = v[1];
|
|
@@ -374,6 +399,16 @@ test('\nvalid range test', function(t) {
|
|
|
374
399
|
['~> 1', '>=1.0.0-0 <2.0.0-0'],
|
|
375
400
|
['~1.0', '>=1.0.0-0 <1.1.0-0'],
|
|
376
401
|
['~ 1.0', '>=1.0.0-0 <1.1.0-0'],
|
|
402
|
+
['^0', '>=0.0.0-0 <1.0.0-0'],
|
|
403
|
+
['^ 1', '>=1.0.0-0 <2.0.0-0'],
|
|
404
|
+
['^0.1', '>=0.1.0-0 <0.2.0-0'],
|
|
405
|
+
['^1.0', '>=1.0.0-0 <2.0.0-0'],
|
|
406
|
+
['^1.2', '>=1.2.0-0 <2.0.0-0'],
|
|
407
|
+
['^0.0.1', '=0.0.1'],
|
|
408
|
+
['^0.0.1-beta', '=0.0.1-beta'],
|
|
409
|
+
['^0.1.2', '>=0.1.2-0 <0.2.0-0'],
|
|
410
|
+
['^1.2.3', '>=1.2.3-0 <2.0.0-0'],
|
|
411
|
+
['^1.2.3-beta.4', '>=1.2.3-beta.4 <2.0.0-0'],
|
|
377
412
|
['<1', '<1.0.0-0'],
|
|
378
413
|
['< 1', '<1.0.0-0'],
|
|
379
414
|
['>=1', '>=1.0.0-0'],
|
|
@@ -384,7 +419,8 @@ test('\nvalid range test', function(t) {
|
|
|
384
419
|
['>01.02.03', '>1.2.3', true],
|
|
385
420
|
['>01.02.03', null],
|
|
386
421
|
['~1.2.3beta', '>=1.2.3-beta <1.3.0-0', true],
|
|
387
|
-
['~1.2.3beta', null]
|
|
422
|
+
['~1.2.3beta', null],
|
|
423
|
+
['^ 1.2 ^ 1', '>=1.2.0-0 <2.0.0-0 >=1.0.0-0 <2.0.0-0']
|
|
388
424
|
].forEach(function(v) {
|
|
389
425
|
var pre = v[0];
|
|
390
426
|
var wanted = v[1];
|
|
@@ -477,6 +513,21 @@ test('\ncomparators test', function(t) {
|
|
|
477
513
|
t.end();
|
|
478
514
|
});
|
|
479
515
|
|
|
516
|
+
test('\ninvalid version numbers', function(t) {
|
|
517
|
+
['1.2.3.4',
|
|
518
|
+
'NOT VALID',
|
|
519
|
+
1.2,
|
|
520
|
+
null,
|
|
521
|
+
'Infinity.NaN.Infinity'
|
|
522
|
+
].forEach(function(v) {
|
|
523
|
+
t.throws(function() {
|
|
524
|
+
new SemVer(v);
|
|
525
|
+
}, {name:'TypeError', message:'Invalid Version: ' + v});
|
|
526
|
+
});
|
|
527
|
+
|
|
528
|
+
t.end();
|
|
529
|
+
});
|
|
530
|
+
|
|
480
531
|
test('\nstrict vs loose version numbers', function(t) {
|
|
481
532
|
[['=1.2.3', '1.2.3'],
|
|
482
533
|
['01.02.03', '1.2.3'],
|
|
@@ -519,7 +570,7 @@ test('\nstrict vs loose ranges', function(t) {
|
|
|
519
570
|
test('\nmax satisfying', function(t) {
|
|
520
571
|
[[['1.2.3', '1.2.4'], '1.2', '1.2.4'],
|
|
521
572
|
[['1.2.4', '1.2.3'], '1.2', '1.2.4'],
|
|
522
|
-
[['1.2.3','1.2.4','1.2.5','1.2.6'], '~1.2.3', '1.2.6'],
|
|
573
|
+
[['1.2.3', '1.2.4', '1.2.5', '1.2.6'], '~1.2.3', '1.2.6'],
|
|
523
574
|
[['1.1.0', '1.2.0', '1.2.1', '1.3.0', '2.0.0b1', '2.0.0b2', '2.0.0b3', '2.0.0', '2.1.0'], '~2.0.0', '2.0.0', true]
|
|
524
575
|
].forEach(function(v) {
|
|
525
576
|
var versions = v[0];
|
package/test/ltr.js
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
var tap = require('tap');
|
|
2
|
+
var test = tap.test;
|
|
3
|
+
var semver = require('../semver.js');
|
|
4
|
+
var ltr = semver.ltr;
|
|
5
|
+
|
|
6
|
+
test('\nltr tests', function(t) {
|
|
7
|
+
// [range, version, loose]
|
|
8
|
+
// Version should be less than range
|
|
9
|
+
[
|
|
10
|
+
['~1.2.2', '1.2.1'],
|
|
11
|
+
['~0.6.1-1', '0.6.1-0'],
|
|
12
|
+
['1.0.0 - 2.0.0', '0.0.1'],
|
|
13
|
+
['1.0.0-beta.2', '1.0.0-beta.1'],
|
|
14
|
+
['1.0.0', '0.0.0'],
|
|
15
|
+
['>=2.0.0', '1.1.1'],
|
|
16
|
+
['>=2.0.0', '1.2.9'],
|
|
17
|
+
['>2.0.0', '2.0.0'],
|
|
18
|
+
['0.1.20 || 1.2.4', '0.1.5'],
|
|
19
|
+
['2.x.x', '1.0.0'],
|
|
20
|
+
['1.2.x', '1.1.0'],
|
|
21
|
+
['1.2.x || 2.x', '1.0.0'],
|
|
22
|
+
['2.*.*', '1.0.1'],
|
|
23
|
+
['1.2.*', '1.1.3'],
|
|
24
|
+
['1.2.* || 2.*', '1.1.9999'],
|
|
25
|
+
['2', '1.0.0'],
|
|
26
|
+
['2.3', '2.2.2'],
|
|
27
|
+
['~2.4', '2.3.0'], // >=2.4.0 <2.5.0
|
|
28
|
+
['~2.4', '2.3.5'],
|
|
29
|
+
['~>3.2.1', '3.2.0'], // >=3.2.1 <3.3.0
|
|
30
|
+
['~1', '0.2.3'], // >=1.0.0 <2.0.0
|
|
31
|
+
['~>1', '0.2.4'],
|
|
32
|
+
['~> 1', '0.2.3'],
|
|
33
|
+
['~1.0', '0.1.2'], // >=1.0.0 <1.1.0
|
|
34
|
+
['~ 1.0', '0.1.0'],
|
|
35
|
+
['>1.2', '1.2.0'],
|
|
36
|
+
['> 1.2', '1.2.1'],
|
|
37
|
+
['1', '0.0.0beta', true],
|
|
38
|
+
['~v0.5.4-pre', '0.5.4-alpha'],
|
|
39
|
+
['~v0.5.4-pre', '0.5.4-alpha'],
|
|
40
|
+
['=0.7.x', '0.6.0'],
|
|
41
|
+
['=0.7.x', '0.6.0-asdf'],
|
|
42
|
+
['>=0.7.x', '0.6.0'],
|
|
43
|
+
['~1.2.2', '1.2.1'],
|
|
44
|
+
['1.0.0 - 2.0.0', '0.2.3'],
|
|
45
|
+
['1.0.0', '0.0.1'],
|
|
46
|
+
['>=2.0.0', '1.0.0'],
|
|
47
|
+
['>=2.0.0', '1.9999.9999'],
|
|
48
|
+
['>=2.0.0', '1.2.9'],
|
|
49
|
+
['>2.0.0', '2.0.0'],
|
|
50
|
+
['>2.0.0', '1.2.9'],
|
|
51
|
+
['2.x.x', '1.1.3'],
|
|
52
|
+
['1.2.x', '1.1.3'],
|
|
53
|
+
['1.2.x || 2.x', '1.1.3'],
|
|
54
|
+
['2.*.*', '1.1.3'],
|
|
55
|
+
['1.2.*', '1.1.3'],
|
|
56
|
+
['1.2.* || 2.*', '1.1.3'],
|
|
57
|
+
['2', '1.9999.9999'],
|
|
58
|
+
['2.3', '2.2.1'],
|
|
59
|
+
['~2.4', '2.3.0'], // >=2.4.0 <2.5.0
|
|
60
|
+
['~>3.2.1', '2.3.2'], // >=3.2.1 <3.3.0
|
|
61
|
+
['~1', '0.2.3'], // >=1.0.0 <2.0.0
|
|
62
|
+
['~>1', '0.2.3'],
|
|
63
|
+
['~1.0', '0.0.0'], // >=1.0.0 <1.1.0
|
|
64
|
+
['>1', '1.0.0'],
|
|
65
|
+
['2', '1.0.0beta', true],
|
|
66
|
+
['>1', '1.0.0beta', true],
|
|
67
|
+
['> 1', '1.0.0beta', true],
|
|
68
|
+
['=0.7.x', '0.6.2'],
|
|
69
|
+
['>=0.7.x', '0.6.2']
|
|
70
|
+
].forEach(function(tuple) {
|
|
71
|
+
var range = tuple[0];
|
|
72
|
+
var version = tuple[1];
|
|
73
|
+
var loose = tuple[2] || false;
|
|
74
|
+
var msg = 'ltr(' + version + ', ' + range + ', ' + loose + ')';
|
|
75
|
+
t.ok(ltr(version, range, loose), msg);
|
|
76
|
+
});
|
|
77
|
+
t.end();
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
test('\nnegative ltr tests', function(t) {
|
|
81
|
+
// [range, version, loose]
|
|
82
|
+
// Version should NOT be greater than range
|
|
83
|
+
[
|
|
84
|
+
['~ 1.0', '1.1.0'],
|
|
85
|
+
['~0.6.1-1', '0.6.1-1'],
|
|
86
|
+
['1.0.0 - 2.0.0', '1.2.3'],
|
|
87
|
+
['1.0.0 - 2.0.0', '2.9.9'],
|
|
88
|
+
['1.0.0', '1.0.0'],
|
|
89
|
+
['>=*', '0.2.4'],
|
|
90
|
+
['', '1.0.0', true],
|
|
91
|
+
['*', '1.2.3'],
|
|
92
|
+
['*', 'v1.2.3-foo'],
|
|
93
|
+
['>=1.0.0', '1.0.0'],
|
|
94
|
+
['>=1.0.0', '1.0.1'],
|
|
95
|
+
['>=1.0.0', '1.1.0'],
|
|
96
|
+
['>1.0.0', '1.0.1'],
|
|
97
|
+
['>1.0.0', '1.1.0'],
|
|
98
|
+
['<=2.0.0', '2.0.0'],
|
|
99
|
+
['<=2.0.0', '1.9999.9999'],
|
|
100
|
+
['<=2.0.0', '0.2.9'],
|
|
101
|
+
['<2.0.0', '1.9999.9999'],
|
|
102
|
+
['<2.0.0', '0.2.9'],
|
|
103
|
+
['>= 1.0.0', '1.0.0'],
|
|
104
|
+
['>= 1.0.0', '1.0.1'],
|
|
105
|
+
['>= 1.0.0', '1.1.0'],
|
|
106
|
+
['> 1.0.0', '1.0.1'],
|
|
107
|
+
['> 1.0.0', '1.1.0'],
|
|
108
|
+
['<= 2.0.0', '2.0.0'],
|
|
109
|
+
['<= 2.0.0', '1.9999.9999'],
|
|
110
|
+
['<= 2.0.0', '0.2.9'],
|
|
111
|
+
['< 2.0.0', '1.9999.9999'],
|
|
112
|
+
['<\t2.0.0', '0.2.9'],
|
|
113
|
+
['>=0.1.97', 'v0.1.97'],
|
|
114
|
+
['>=0.1.97', '0.1.97'],
|
|
115
|
+
['0.1.20 || 1.2.4', '1.2.4'],
|
|
116
|
+
['0.1.20 || >1.2.4', '1.2.4'],
|
|
117
|
+
['0.1.20 || 1.2.4', '1.2.3'],
|
|
118
|
+
['0.1.20 || 1.2.4', '0.1.20'],
|
|
119
|
+
['>=0.2.3 || <0.0.1', '0.0.0'],
|
|
120
|
+
['>=0.2.3 || <0.0.1', '0.2.3'],
|
|
121
|
+
['>=0.2.3 || <0.0.1', '0.2.4'],
|
|
122
|
+
['||', '1.3.4'],
|
|
123
|
+
['2.x.x', '2.1.3'],
|
|
124
|
+
['1.2.x', '1.2.3'],
|
|
125
|
+
['1.2.x || 2.x', '2.1.3'],
|
|
126
|
+
['1.2.x || 2.x', '1.2.3'],
|
|
127
|
+
['x', '1.2.3'],
|
|
128
|
+
['2.*.*', '2.1.3'],
|
|
129
|
+
['1.2.*', '1.2.3'],
|
|
130
|
+
['1.2.* || 2.*', '2.1.3'],
|
|
131
|
+
['1.2.* || 2.*', '1.2.3'],
|
|
132
|
+
['1.2.* || 2.*', '1.2.3'],
|
|
133
|
+
['*', '1.2.3'],
|
|
134
|
+
['2', '2.1.2'],
|
|
135
|
+
['2.3', '2.3.1'],
|
|
136
|
+
['~2.4', '2.4.0'], // >=2.4.0 <2.5.0
|
|
137
|
+
['~2.4', '2.4.5'],
|
|
138
|
+
['~>3.2.1', '3.2.2'], // >=3.2.1 <3.3.0
|
|
139
|
+
['~1', '1.2.3'], // >=1.0.0 <2.0.0
|
|
140
|
+
['~>1', '1.2.3'],
|
|
141
|
+
['~> 1', '1.2.3'],
|
|
142
|
+
['~1.0', '1.0.2'], // >=1.0.0 <1.1.0
|
|
143
|
+
['~ 1.0', '1.0.2'],
|
|
144
|
+
['>=1', '1.0.0'],
|
|
145
|
+
['>= 1', '1.0.0'],
|
|
146
|
+
['<1.2', '1.1.1'],
|
|
147
|
+
['< 1.2', '1.1.1'],
|
|
148
|
+
['1', '1.0.0beta', true],
|
|
149
|
+
['~v0.5.4-pre', '0.5.5'],
|
|
150
|
+
['~v0.5.4-pre', '0.5.4'],
|
|
151
|
+
['=0.7.x', '0.7.2'],
|
|
152
|
+
['>=0.7.x', '0.7.2'],
|
|
153
|
+
['=0.7.x', '0.7.0-asdf'],
|
|
154
|
+
['>=0.7.x', '0.7.0-asdf'],
|
|
155
|
+
['<=0.7.x', '0.6.2'],
|
|
156
|
+
['>0.2.3 >0.2.4 <=0.2.5', '0.2.5'],
|
|
157
|
+
['>=0.2.3 <=0.2.4', '0.2.4'],
|
|
158
|
+
['1.0.0 - 2.0.0', '2.0.0'],
|
|
159
|
+
['^1', '1.0.0-0'],
|
|
160
|
+
['^3.0.0', '4.0.0'],
|
|
161
|
+
['^1.0.0 || ~2.0.1', '2.0.0'],
|
|
162
|
+
['^0.1.0 || ~3.0.1 || 5.0.0', '3.2.0'],
|
|
163
|
+
['^0.1.0 || ~3.0.1 || 5.0.0', '1.0.0beta', true],
|
|
164
|
+
['^0.1.0 || ~3.0.1 || 5.0.0', '5.0.0-0', true],
|
|
165
|
+
['^0.1.0 || ~3.0.1 || >4 <=5.0.0', '3.5.0']
|
|
166
|
+
].forEach(function(tuple) {
|
|
167
|
+
var range = tuple[0];
|
|
168
|
+
var version = tuple[1];
|
|
169
|
+
var loose = tuple[2] || false;
|
|
170
|
+
var msg = '!ltr(' + version + ', ' + range + ', ' + loose + ')';
|
|
171
|
+
t.notOk(ltr(version, range, loose), msg);
|
|
172
|
+
});
|
|
173
|
+
t.end();
|
|
174
|
+
});
|
package/r.js
DELETED