semver 2.2.0 → 2.3.2

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 CHANGED
@@ -6,7 +6,7 @@ files = semver.browser.js \
6
6
  all: $(files)
7
7
 
8
8
  clean:
9
- rm $(files)
9
+ rm -f $(files)
10
10
 
11
11
  semver.browser.js: head.js semver.js foot.js
12
12
  ( cat head.js; \
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. Note that
47
- build metadata is still ignored, so `1.2.3+build2012` will satisfy
48
- this range.
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,26 +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
- * `^1.2.3` := `>=1.2.3-0 <2.0.0-0` "Compatible with 1.2.3". When
64
+ * `^1.2.3` := `>=1.2.3-0 <2.0.0-0` "Compatible with `1.2.3`". When
64
65
  using caret operators, anything from the specified version (including
65
66
  prerelease) will be supported up to, but not including, the next
66
67
  major version (or its prereleases). `1.5.1` will satisfy `^1.2.3`,
67
68
  while `1.2.2` and `2.0.0-beta` will not.
68
- * `^0.1.3` := `>=0.1.3-0 <0.2.0-0` "Compatible with 0.1.3". 0.x.x versions are
69
+ * `^0.1.3` := `>=0.1.3-0 <0.2.0-0` "Compatible with `0.1.3`". `0.x.x` versions are
69
70
  special: the first non-zero component indicates potentially breaking changes,
70
71
  meaning the caret operator matches any version with the same first non-zero
71
72
  component starting at the specified version.
72
- * `^0.0.2` := `=0.0.2` "Only the version 0.0.2 is considered compatible"
73
- * `~1.2` := `>=1.2.0-0 <1.3.0-0` "Any version starting with 1.2"
74
- * `^1.2` := `>=1.2.0-0 <2.0.0-0` "Any version compatible with 1.2"
75
- * `1.2.x` := `>=1.2.0-0 <1.3.0-0` "Any version starting with 1.2"
76
- * `~1` := `>=1.0.0-0 <2.0.0-0` "Any version starting with 1"
77
- * `^1` := `>=1.0.0-0 <2.0.0-0` "Any version compatible with 1"
78
- * `1.x` := `>=1.0.0-0 <2.0.0-0` "Any version starting with 1"
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 `*`.
79
87
 
80
88
 
81
89
  Ranges can be joined with either a space (which implies "and") or a
@@ -90,42 +98,50 @@ The resulting output will always be 100% strict, of course.
90
98
  Strict-mode Comparators and Ranges will be strict about the SemVer
91
99
  strings that they parse.
92
100
 
93
- * valid(v): Return the parsed version, or null if it's not valid.
94
- * inc(v, release): Return the version incremented by the release type
95
- (major, minor, patch, or prerelease), or null if it's not valid.
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.
96
112
 
97
113
  ### Comparison
98
114
 
99
- * gt(v1, v2): `v1 > v2`
100
- * gte(v1, v2): `v1 >= v2`
101
- * lt(v1, v2): `v1 < v2`
102
- * lte(v1, v2): `v1 <= v2`
103
- * eq(v1, v2): `v1 == v2` This is true if they're logically equivalent,
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,
104
120
  even if they're not the exact same string. You already know how to
105
121
  compare strings.
106
- * neq(v1, v2): `v1 != v2` The opposite of eq.
107
- * cmp(v1, comparator, v2): Pass in a comparison string, and it'll call
122
+ * `neq(v1, v2)`: `v1 != v2` The opposite of `eq`.
123
+ * `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call
108
124
  the corresponding function above. `"==="` and `"!=="` do simple
109
125
  string comparison, but are included for completeness. Throws if an
110
126
  invalid comparison string is provided.
111
- * compare(v1, v2): Return 0 if v1 == v2, or 1 if v1 is greater, or -1 if
112
- v2 is greater. Sorts in ascending order if passed to Array.sort().
113
- * rcompare(v1, v2): The reverse of compare. Sorts an array of versions
114
- 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()`.
115
131
 
116
132
 
117
133
  ### Ranges
118
134
 
119
- * validRange(range): Return the valid range or null if it's not valid
120
- * satisfies(version, range): Return true if the version satisfies the
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
121
137
  range.
122
- * maxSatisfying(versions, range): Return the highest version in the list
123
- that satisfies the range, or null if none of them do.
124
- * gtr(version, range): Return true if version is greater than all the
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
125
141
  versions possible in the range.
126
- * ltr(version, range): Return true if version is less than all the
142
+ * `ltr(version, range)`: Return `true` if version is less than all the
127
143
  versions possible in the range.
128
- * outside(version, range, hilo): Return true if the version is outside
144
+ * `outside(version, range, hilo)`: Return true if the version is outside
129
145
  the bounds of the range in either the high or low direction. The
130
146
  `hilo` argument must be either the string `'>'` or `'<'`. (This is
131
147
  the function called by `gtr` and `ltr`.)
@@ -134,8 +150,8 @@ Note that, since ranges may be non-contiguous, a version might not be
134
150
  greater than a range, less than a range, *or* satisfy a range! For
135
151
  example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`
136
152
  until `2.0.0`, so the version `1.2.10` would not be greater than the
137
- range (because 2.0.1 satisfies, which is higher), nor less than the
138
- range (since 1.2.8 satisfies, which is lower), and it also does not
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
139
155
  satisfy the range.
140
156
 
141
157
  If you want to know if a version satisfies or does not satisfy a
package/bin/semver CHANGED
@@ -39,6 +39,7 @@ function main () {
39
39
  case "-i": case "--inc": case "--increment":
40
40
  switch (argv[0]) {
41
41
  case "major": case "minor": case "patch": case "prerelease":
42
+ case "premajor": case "preminor": case "prepatch":
42
43
  inc = argv.shift()
43
44
  break
44
45
  default:
@@ -106,8 +107,8 @@ function help () {
106
107
  ,""
107
108
  ,"-i --increment [<level>]"
108
109
  ," Increment a version by the specified level. Level can"
109
- ," be one of: major, minor, patch, or prerelease"
110
- ," Default level is 'patch'."
110
+ ," be one of: major, minor, patch, premajor, preminor,"
111
+ ," prepatch, or prerelease. Default level is 'patch'."
111
112
  ," Only one version may be specified."
112
113
  ,""
113
114
  ,"-l --loose"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "semver",
3
- "version": "2.2.0",
3
+ "version": "2.3.2",
4
4
  "description": "The semantic version parser used by npm.",
5
5
  "main": "semver.js",
6
6
  "browser": "semver.browser.js",
package/semver.browser.js CHANGED
@@ -248,6 +248,8 @@ function SemVer(version, loose) {
248
248
  return version;
249
249
  else
250
250
  version = version.version;
251
+ } else if (typeof version !== 'string') {
252
+ throw new TypeError('Invalid Version: ' + version);
251
253
  }
252
254
 
253
255
  if (!(this instanceof SemVer))
@@ -320,7 +322,7 @@ SemVer.prototype.comparePre = function(other) {
320
322
  return -1;
321
323
  else if (!this.prerelease.length && other.prerelease.length)
322
324
  return 1;
323
- else if (!this.prerelease.lenth && !other.prerelease.length)
325
+ else if (!this.prerelease.length && !other.prerelease.length)
324
326
  return 0;
325
327
 
326
328
  var i = 0;
@@ -341,19 +343,53 @@ SemVer.prototype.comparePre = function(other) {
341
343
  } while (++i);
342
344
  };
343
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.
344
348
  SemVer.prototype.inc = function(release) {
345
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
+ // If this is already a prerelease, it will bump to the next version
360
+ // drop any prereleases that might already exist, since they are not
361
+ // relevant at this point.
362
+ this.prerelease.length = 0
363
+ this.inc('patch');
364
+ this.inc('pre');
365
+ break;
366
+ // If the input is a non-prerelease version, this acts the same as
367
+ // prepatch.
368
+ case 'prerelease':
369
+ if (this.prerelease.length === 0)
370
+ this.inc('patch');
371
+ this.inc('pre');
372
+ break;
346
373
  case 'major':
347
374
  this.major++;
348
375
  this.minor = -1;
349
376
  case 'minor':
350
377
  this.minor++;
351
- this.patch = -1;
378
+ this.patch = 0;
379
+ this.prerelease = [];
380
+ break;
352
381
  case 'patch':
353
- this.patch++;
382
+ // If this is not a pre-release version, it will increment the patch.
383
+ // If it is a pre-release it will bump up to the same patch version.
384
+ // 1.2.0-5 patches to 1.2.0
385
+ // 1.2.0 patches to 1.2.1
386
+ if (this.prerelease.length === 0)
387
+ this.patch++;
354
388
  this.prerelease = [];
355
389
  break;
356
- case 'prerelease':
390
+ // This probably shouldn't be used publically.
391
+ // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
392
+ case 'pre':
357
393
  if (this.prerelease.length === 0)
358
394
  this.prerelease = [0];
359
395
  else {
@@ -516,6 +552,9 @@ Comparator.prototype.parse = function(comp) {
516
552
  throw new TypeError('Invalid comparator: ' + comp);
517
553
 
518
554
  this.operator = m[1];
555
+ if (this.operator === '=')
556
+ this.operator = '';
557
+
519
558
  // if it literally is just '>' or '' then allow anything.
520
559
  if (!m[2])
521
560
  this.semver = ANY;
@@ -920,13 +959,13 @@ function validRange(range, loose) {
920
959
  // Determine if version is less than all the versions possible in the range
921
960
  exports.ltr = ltr;
922
961
  function ltr(version, range, loose) {
923
- return outside(version, range, 'lo', loose);
962
+ return outside(version, range, '<', loose);
924
963
  }
925
964
 
926
965
  // Determine if version is greater than all the versions possible in the range.
927
966
  exports.gtr = gtr;
928
967
  function gtr(version, range, loose) {
929
- return outside(version, range, 'hi', loose);
968
+ return outside(version, range, '>', loose);
930
969
  }
931
970
 
932
971
  exports.outside = outside;
@@ -934,7 +973,7 @@ function outside(version, range, hilo, loose) {
934
973
  version = new SemVer(version, loose);
935
974
  range = new Range(range, loose);
936
975
 
937
- var gtfn, ltefn, comp, ecomp;
976
+ var gtfn, ltefn, ltfn, comp, ecomp;
938
977
  switch (hilo) {
939
978
  case '>':
940
979
  gtfn = gt;
Binary file
package/semver.js CHANGED
@@ -258,6 +258,8 @@ function SemVer(version, loose) {
258
258
  return version;
259
259
  else
260
260
  version = version.version;
261
+ } else if (typeof version !== 'string') {
262
+ throw new TypeError('Invalid Version: ' + version);
261
263
  }
262
264
 
263
265
  if (!(this instanceof SemVer))
@@ -330,7 +332,7 @@ SemVer.prototype.comparePre = function(other) {
330
332
  return -1;
331
333
  else if (!this.prerelease.length && other.prerelease.length)
332
334
  return 1;
333
- else if (!this.prerelease.lenth && !other.prerelease.length)
335
+ else if (!this.prerelease.length && !other.prerelease.length)
334
336
  return 0;
335
337
 
336
338
  var i = 0;
@@ -351,19 +353,53 @@ SemVer.prototype.comparePre = function(other) {
351
353
  } while (++i);
352
354
  };
353
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.
354
358
  SemVer.prototype.inc = function(release) {
355
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
+ // If this is already a prerelease, it will bump to the next version
370
+ // drop any prereleases that might already exist, since they are not
371
+ // relevant at this point.
372
+ this.prerelease.length = 0
373
+ this.inc('patch');
374
+ this.inc('pre');
375
+ break;
376
+ // If the input is a non-prerelease version, this acts the same as
377
+ // prepatch.
378
+ case 'prerelease':
379
+ if (this.prerelease.length === 0)
380
+ this.inc('patch');
381
+ this.inc('pre');
382
+ break;
356
383
  case 'major':
357
384
  this.major++;
358
385
  this.minor = -1;
359
386
  case 'minor':
360
387
  this.minor++;
361
- this.patch = -1;
388
+ this.patch = 0;
389
+ this.prerelease = [];
390
+ break;
362
391
  case 'patch':
363
- this.patch++;
392
+ // If this is not a pre-release version, it will increment the patch.
393
+ // If it is a pre-release it will bump up to the same patch version.
394
+ // 1.2.0-5 patches to 1.2.0
395
+ // 1.2.0 patches to 1.2.1
396
+ if (this.prerelease.length === 0)
397
+ this.patch++;
364
398
  this.prerelease = [];
365
399
  break;
366
- case 'prerelease':
400
+ // This probably shouldn't be used publically.
401
+ // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
402
+ case 'pre':
367
403
  if (this.prerelease.length === 0)
368
404
  this.prerelease = [0];
369
405
  else {
@@ -526,6 +562,9 @@ Comparator.prototype.parse = function(comp) {
526
562
  throw new TypeError('Invalid comparator: ' + comp);
527
563
 
528
564
  this.operator = m[1];
565
+ if (this.operator === '=')
566
+ this.operator = '';
567
+
529
568
  // if it literally is just '>' or '' then allow anything.
530
569
  if (!m[2])
531
570
  this.semver = ANY;
@@ -930,13 +969,13 @@ function validRange(range, loose) {
930
969
  // Determine if version is less than all the versions possible in the range
931
970
  exports.ltr = ltr;
932
971
  function ltr(version, range, loose) {
933
- return outside(version, range, 'lo', loose);
972
+ return outside(version, range, '<', loose);
934
973
  }
935
974
 
936
975
  // Determine if version is greater than all the versions possible in the range.
937
976
  exports.gtr = gtr;
938
977
  function gtr(version, range, loose) {
939
- return outside(version, range, 'hi', loose);
978
+ return outside(version, range, '>', loose);
940
979
  }
941
980
 
942
981
  exports.outside = outside;
@@ -944,7 +983,7 @@ function outside(version, range, hilo, loose) {
944
983
  version = new SemVer(version, loose);
945
984
  range = new Range(range, loose);
946
985
 
947
- var gtfn, ltefn, comp, ecomp;
986
+ var gtfn, ltefn, ltfn, comp, ecomp;
948
987
  switch (hilo) {
949
988
  case '>':
950
989
  gtfn = gt;
package/semver.min.js CHANGED
@@ -1 +1 @@
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 o=n++;t[o]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var a=n++;t[a]="("+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[o]+")";var l=n++;t[l]="(?:"+t[s]+"|"+t[o]+")";var c=n++;t[c]="(?:-("+t[u]+"(?:\\."+t[u]+")*))";var p=n++;t[p]="(?:-?("+t[l]+"(?:\\."+t[l]+")*))";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[c]+"?"+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 $=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[c]+")"+")?)?)?";var E=n++;t[E]="[v=\\s]*("+t[$]+")"+"(?:\\.("+t[$]+")"+"(?:\\.("+t[$]+")"+"(?:("+t[p]+")"+")?)?)?";var k=n++;t[k]="^"+t[y]+"\\s*"+t[b]+"$";var x=n++;t[x]="^"+t[y]+"\\s*"+t[E]+"$";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[b]+"$";var A=n++;t[A]="^"+t[R]+t[E]+"$";var C=n++;t[C]="(?:\\^)";var T=n++;t[T]="(\\s*)"+t[C]+"\\s+";r[T]=new RegExp(t[T],"g");var M="$1^";var z=n++;t[z]="^"+t[C]+t[b]+"$";var P=n++;t[P]="^"+t[C]+t[E]+"$";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[b]+")";r[L]=new RegExp(t[L],"g");var X="$1$2$3";var _=n++;t[_]="^\\s*("+t[b]+")"+"\\s+-\\s+"+"("+t[b]+")"+"\\s*$";var N=n++;t[N]="^\\s*("+t[E]+")"+"\\s+-\\s+"+"("+t[E]+")"+"\\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}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.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 Q(t,n)}while(++r)};H.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=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=or;function or(e,r,t){return W(e,r,t)!==0}e.gte=ar;function ar(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=or(e,t,n);break;case">":i=nr(e,t,n);break;case">=":i=ar(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=lr;function lr(e,r){if(e instanceof lr){if(e.loose===r)return e;else e=e.value}if(!(this instanceof lr))return new lr(e,r);this.loose=r;this.parse(e);if(this.semver===cr)this.value="";else this.value=this.operator+this.semver.version}var cr={};lr.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=cr;else{this.semver=new H(n[2],this.loose);if(this.operator==="<"&&!this.semver.prerelease.length){this.semver.prerelease=["0"];this.semver.format()}}};lr.prototype.inspect=function(){return'<SemVer Comparator "'+this+'">'};lr.prototype.toString=function(){return this.value};lr.prototype.test=function(e){return this.semver===cr?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,Er);e=e.replace(r[L],X);e=e.replace(r[S],V);e=e.replace(r[T],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 lr(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=$r(e,r);e=br(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[A]: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 $r(e,r){return e.split(/\s+/).map(function(e){return jr(e,r)}).join(" ")}function jr(e,t){e=e.trim();var n=t?r[x]:r[k];return e.replace(n,function(e,r,t,n,i,s){var o=mr(t);var a=o||mr(n);var f=a||mr(i);var u=f;if(r==="="&&u)r="";if(r&&u){if(o)t=0;if(a)n=0;if(f)i=0;if(r===">"){r=">=";if(o){}else if(a){t=+t+1;n=0;i=0}else if(f){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(f){e=">="+t+"."+n+".0-0 <"+t+"."+(+n+1)+".0-0"}return e})}function br(e,t){return e.trim().replace(r[O],"")}function Er(e,r,t,n,i,s,o,a,f,u,l,c,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))a="";else if(mr(u))a="<"+(+f+1)+".0.0-0";else if(mr(l))a="<"+f+"."+(+u+1)+".0-0";else if(c)a="<="+f+"."+u+"."+l+"-"+c;else a="<="+a;return(r+" "+a).trim()}pr.prototype.test=function(e){if(!e)return false;for(var r=0;r<this.set.length;r++){if(kr(this.set[r],e))return true}return false};function kr(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 Ar(e,r,"lo",t)}e.gtr=Ir;function Ir(e,r,t){return Ar(e,r,"hi",t)}e.outside=Ar;function Ar(e,r,t,n){e=new H(e,n);r=new pr(r,n);var i,s,o,a;switch(t){case">":i=nr;s=fr;ltfn=ir;o=">";a=">=";break;case"<":i=ir;s=ar;ltfn=nr;o="<";a="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(xr(e,r,n)){return false}for(var f=0;f<r.set.length;++f){var u=r.set[f];var l=null;var c=null;u.forEach(function(e){l=l||e;c=c||e;if(i(e.semver,l.semver,n)){l=e}else if(ltfn(e.semver,c.semver,n)){c=e}});if(l.operator===o||l.operator===a){return false}if((!c.operator||c.operator===o)&&s(e,c.semver)){return false}else if(c.operator===a&&ltfn(e,c.semver)){return false}}return true}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.prerelease.length=0;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(this.operator==="=")this.operator="";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/index.js CHANGED
@@ -1,3 +1,5 @@
1
+ 'use strict';
2
+
1
3
  var tap = require('tap');
2
4
  var test = tap.test;
3
5
  var semver = require('../semver.js');
@@ -302,8 +304,15 @@ test('\nincrement versions test', function(t) {
302
304
  ['1.2.3tag', 'major', '2.0.0', true],
303
305
  ['1.2.3-tag', 'major', '2.0.0'],
304
306
  ['1.2.3', 'fake', null],
307
+ ['1.2.0-0', 'patch', '1.2.0'],
305
308
  ['fake', 'major', null],
306
- ['1.2.3', 'prerelease', '1.2.3-0'],
309
+ ['1.2.3-4', 'major', '2.0.0'],
310
+ ['1.2.3-4', 'minor', '1.3.0'],
311
+ ['1.2.3-4', 'patch', '1.2.3'],
312
+ ['1.2.3-alpha.0.beta', 'major', '2.0.0'],
313
+ ['1.2.3-alpha.0.beta', 'minor', '1.3.0'],
314
+ ['1.2.3-alpha.0.beta', 'patch', '1.2.3'],
315
+ ['1.2.4', 'prerelease', '1.2.5-0'],
307
316
  ['1.2.3-0', 'prerelease', '1.2.3-1'],
308
317
  ['1.2.3-alpha.0', 'prerelease', '1.2.3-alpha.1'],
309
318
  ['1.2.3-alpha.1', 'prerelease', '1.2.3-alpha.2'],
@@ -319,7 +328,15 @@ test('\nincrement versions test', function(t) {
319
328
  ['1.2.3-alpha.10.beta.2', 'prerelease', '1.2.3-alpha.10.beta.3'],
320
329
  ['1.2.3-alpha.9.beta', 'prerelease', '1.2.3-alpha.10.beta'],
321
330
  ['1.2.3-alpha.10.beta', 'prerelease', '1.2.3-alpha.11.beta'],
322
- ['1.2.3-alpha.11.beta', 'prerelease', '1.2.3-alpha.12.beta']
331
+ ['1.2.3-alpha.11.beta', 'prerelease', '1.2.3-alpha.12.beta'],
332
+ ['1.2.0', 'prepatch', '1.2.1-0'],
333
+ ['1.2.0-1', 'prepatch', '1.2.1-0'],
334
+ ['1.2.0', 'preminor', '1.3.0-0'],
335
+ ['1.2.0-1', 'preminor', '1.3.0-0'],
336
+ ['1.2.0', 'premajor', '2.0.0-0'],
337
+ ['1.2.0-1', 'premajor', '2.0.0-0']
338
+
339
+
323
340
  ].forEach(function(v) {
324
341
  var pre = v[0];
325
342
  var what = v[1];
@@ -391,8 +408,8 @@ test('\nvalid range test', function(t) {
391
408
  ['^0.1', '>=0.1.0-0 <0.2.0-0'],
392
409
  ['^1.0', '>=1.0.0-0 <2.0.0-0'],
393
410
  ['^1.2', '>=1.2.0-0 <2.0.0-0'],
394
- ['^0.0.1', '=0.0.1'],
395
- ['^0.0.1-beta', '=0.0.1-beta'],
411
+ ['^0.0.1', '0.0.1'],
412
+ ['^0.0.1-beta', '0.0.1-beta'],
396
413
  ['^0.1.2', '>=0.1.2-0 <0.2.0-0'],
397
414
  ['^1.2.3', '>=1.2.3-0 <2.0.0-0'],
398
415
  ['^1.2.3-beta.4', '>=1.2.3-beta.4 <2.0.0-0'],
@@ -500,6 +517,21 @@ test('\ncomparators test', function(t) {
500
517
  t.end();
501
518
  });
502
519
 
520
+ test('\ninvalid version numbers', function(t) {
521
+ ['1.2.3.4',
522
+ 'NOT VALID',
523
+ 1.2,
524
+ null,
525
+ 'Infinity.NaN.Infinity'
526
+ ].forEach(function(v) {
527
+ t.throws(function() {
528
+ new SemVer(v);
529
+ }, {name:'TypeError', message:'Invalid Version: ' + v});
530
+ });
531
+
532
+ t.end();
533
+ });
534
+
503
535
  test('\nstrict vs loose version numbers', function(t) {
504
536
  [['=1.2.3', '1.2.3'],
505
537
  ['01.02.03', '1.2.3'],
package/test/ltr.js CHANGED
@@ -162,7 +162,8 @@ test('\nnegative ltr tests', function(t) {
162
162
  ['^0.1.0 || ~3.0.1 || 5.0.0', '3.2.0'],
163
163
  ['^0.1.0 || ~3.0.1 || 5.0.0', '1.0.0beta', true],
164
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']
165
+ ['^0.1.0 || ~3.0.1 || >4 <=5.0.0', '3.5.0'],
166
+ ['=0.1.0', '1.0.0']
166
167
  ].forEach(function(tuple) {
167
168
  var range = tuple[0];
168
169
  var version = tuple[1];