From 40baedaa7835943be2bd225ed5c7201324516d7a Mon Sep 17 00:00:00 2001 From: Alex Kocharin Date: Tue, 25 Nov 2014 03:12:03 +0300 Subject: [PATCH] semver@4.1.0 --- node_modules/semver/Makefile | 6 +- node_modules/semver/README.md | 203 +++++++++++--- node_modules/semver/bin/semver | 10 +- node_modules/semver/{foot.js => foot.js.txt} | 0 node_modules/semver/{head.js => head.js.txt} | 0 node_modules/semver/package.json | 24 +- node_modules/semver/semver.browser.js | 263 ++++++++++++------ node_modules/semver/semver.browser.js.gz | Bin 7247 -> 7595 bytes node_modules/semver/semver.js | 263 ++++++++++++------ node_modules/semver/semver.min.js | 2 +- node_modules/semver/semver.min.js.gz | Bin 3318 -> 3472 bytes node_modules/semver/test/clean.js | 6 +- node_modules/semver/test/gtr.js | 4 +- node_modules/semver/test/index.js | 269 ++++++++++++------- node_modules/semver/test/ltr.js | 14 +- node_modules/semver/test/no-module.js | 4 +- package.yaml | 5 +- 17 files changed, 722 insertions(+), 351 deletions(-) rename node_modules/semver/{foot.js => foot.js.txt} (100%) rename node_modules/semver/{head.js => head.js.txt} (100%) diff --git a/node_modules/semver/Makefile b/node_modules/semver/Makefile index 5717ccf42..71af0e975 100644 --- a/node_modules/semver/Makefile +++ b/node_modules/semver/Makefile @@ -8,12 +8,12 @@ all: $(files) clean: rm -f $(files) -semver.browser.js: head.js semver.js foot.js - ( cat head.js; \ +semver.browser.js: head.js.txt semver.js foot.js.txt + ( cat head.js.txt; \ cat semver.js | \ egrep -v '^ *\/\* nomin \*\/' | \ perl -pi -e 's/debug\([^\)]+\)//g'; \ - cat foot.js ) > semver.browser.js + cat foot.js.txt ) > semver.browser.js semver.min.js: semver.browser.js uglifyjs -m semver.min.js diff --git a/node_modules/semver/README.md b/node_modules/semver/README.md index 2ca8d80c3..7e1961d45 100644 --- a/node_modules/semver/README.md +++ b/node_modules/semver/README.md @@ -41,53 +41,170 @@ A leading `"="` or `"v"` character is stripped off and ignored. ## Ranges -The following range styles are supported: +A `version range` is a set of `comparators` which specify versions +that satisfy the range. + +A `comparator` is composed of an `operator` and a `version`. The set +of primitive `operators` is: + +* `<` Less than +* `<=` Less than or equal to +* `>` Greater than +* `>=` Greater than or equal to +* `=` Equal. If no operator is specified, then equality is assumed, + so this operator is optional, but MAY be included. + +For example, the comparator `>=1.2.7` would match the versions +`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6` +or `1.1.0`. + +Comparators can be joined by whitespace to form a `comparator set`, +which is satisfied by the **intersection** of all of the comparators +it includes. + +A range is composed of one or more comparator sets, joined by `||`. A +version matches a range if and only if every comparator in at least +one of the `||`-separated comparator sets is satisfied by the version. + +For example, the range `>=1.2.7 <1.3.0` would match the versions +`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`, +or `1.1.0`. + +The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`, +`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`. + +### Prerelease Tags + +If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then +it will only be allowed to satisfy comparator sets if at least one +comparator with the same `[major, minor, patch]` tuple also has a +prerelease tag. + +For example, the range `>1.2.3-alpha.3` would be allowed to match the +version `1.2.3-alpha.7`, but it would *not* be satisfied by +`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater +than" `1.2.3-alpha.3` according to the SemVer sort rules. The version +range only accepts prerelease tags on the `1.2.3` version. The +version `3.4.5` *would* satisfy the range, because it does not have a +prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`. + +The purpose for this behavior is twofold. First, prerelease versions +frequently are updated very quickly, and contain many breaking changes +that are (by the author's design) not yet fit for public consumption. +Therefore, by default, they are excluded from range matching +semantics. + +Second, a user who has opted into using a prerelease version has +clearly indicated the intent to use *that specific* set of +alpha/beta/rc versions. By including a prerelease tag in the range, +the user is indicating that they are aware of the risk. However, it +is still not appropriate to assume that they have opted into taking a +similar risk on the *next* set of prerelease versions. + +### Advanced Range Syntax + +Advanced range syntax desugars to primitive comparators in +deterministic ways. + +Advanced ranges may be combined in the same way as primitive +comparators using white space or `||`. + +#### Hyphen Ranges `X.Y.Z - A.B.C` + +Specifies an inclusive set. -* `1.2.3` A specific version. When nothing else will do. Must be a full - version number, with major, minor, and patch versions specified. - Note that build metadata is still ignored, so `1.2.3+build2012` will - satisfy this range. -* `>1.2.3` Greater than a specific version. -* `<1.2.3` Less than a specific version. If there is no prerelease - tag on the version range, then no prerelease version will be allowed - either, even though these are technically "less than". -* `>=1.2.3` Greater than or equal to. Note that prerelease versions - are NOT equal to their "normal" equivalents, so `1.2.3-beta` will - not satisfy this range, but `2.3.0-beta` will. -* `<=1.2.3` Less than or equal to. In this case, prerelease versions - ARE allowed, so `1.2.3-beta` would satisfy. * `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4` -* `~1.2.3` := `>=1.2.3-0 <1.3.0-0` "Reasonably close to `1.2.3`". When - using tilde operators, prerelease versions are supported as well, - but a prerelease of the next significant digit will NOT be - satisfactory, so `1.3.0-beta` will not satisfy `~1.2.3`. -* `^1.2.3` := `>=1.2.3-0 <2.0.0-0` "Compatible with `1.2.3`". When - using caret operators, anything from the specified version (including - prerelease) will be supported up to, but not including, the next - major version (or its prereleases). `1.5.1` will satisfy `^1.2.3`, - while `1.2.2` and `2.0.0-beta` will not. -* `^0.1.3` := `0.1.3` "Compatible with `0.1.3`". `0.x.x` versions are - special: since the semver spec specifies that `0.x.x` versions make - no stability guarantees, only the version specified is considered - valid. -* `^0.0.2` := `0.0.2` "Only the version `0.0.2` is considered compatible" -* `~1.2` := `>=1.2.0-0 <1.3.0-0` "Any version starting with `1.2`" -* `^1.2` := `>=1.2.0-0 <2.0.0-0` "Any version compatible with `1.2`" -* `1.2.x` := `>=1.2.0-0 <1.3.0-0` "Any version starting with `1.2`" -* `1.2.*` Same as `1.2.x`. -* `1.2` Same as `1.2.x`. -* `~1` := `>=1.0.0-0 <2.0.0-0` "Any version starting with `1`" -* `^1` := `>=1.0.0-0 <2.0.0-0` "Any version compatible with `1`" -* `1.x` := `>=1.0.0-0 <2.0.0-0` "Any version starting with `1`" -* `1.*` Same as `1.x`. -* `1` Same as `1.x`. -* `*` Any version whatsoever. -* `x` Same as `*`. -* `""` (just an empty string) Same as `*`. +If a partial version is provided as the first version in the inclusive +range, then the missing pieces are replaced with zeroes. -Ranges can be joined with either a space (which implies "and") or a -`||` (which implies "or"). +* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4` + +If a partial version is provided as the second version in the +inclusive range, then all versions that start with the supplied parts +of the tuple are accepted, but nothing that would be greater than the +provided tuple parts. + +* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0` +* `1.2.3 - 2` := `>=1.2.3 <3.0.0` + +#### X-Ranges `1.2.x` `1.X` `1.2.*` `*` + +Any of `X`, `x`, or `*` may be used to "stand in" for one of the +numeric values in the `[major, minor, patch]` tuple. + +* `*` := `>=0.0.0` (Any version satisfies) +* `1.x` := `>=1.0.0 <2.0.0` (Matching major version) +* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions) + +A partial version range is treated as an X-Range, so the special +character is in fact optional. + +* `""` (empty string) := `*` := `>=0.0.0` +* `1` := `1.x.x` := `>=1.0.0 <2.0.0` +* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0` + +#### Tilde Ranges `~1.2.3` `~1.2` `~1` + +Allows patch-level changes if a minor version is specified on the +comparator. Allows minor-level changes if not. + +* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0` +* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`) +* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`) +* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0` +* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`) +* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`) +* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in + the `1.2.3` version will be allowed, if they are greater than or + equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but + `1.2.4-beta.2` would not, because it is a prerelease of a + different `[major, minor, patch]` tuple. + +Note: this is the same as the `~>` operator in rubygems. + +#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4` + +Allows changes that do not modify the left-most non-zero digit in the +`[major, minor, patch]` tuple. In other words, this allows patch and +minor updates for versions `1.0.0` and above, patch updates for +versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`. + +Many authors treat a `0.x` version as if the `x` were the major +"breaking-change" indicator. + +Caret ranges are ideal when an author may make breaking changes +between `0.2.4` and `0.3.0` releases, which is a common practice. +However, it presumes that there will *not* be breaking changes between +`0.2.4` and `0.2.5`. It allows for changes that are presumed to be +additive (but non-breaking), according to commonly observed practices. + +* `^1.2.3` := `>=1.2.3 <2.0.0` +* `^0.2.3` := `>=0.2.3 <0.3.0` +* `^0.0.3` := `>=0.0.3 <0.0.4` +* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in + the `1.2.3` version will be allowed, if they are greater than or + equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but + `1.2.4-beta.2` would not, because it is a prerelease of a + different `[major, minor, patch]` tuple. +* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4` Note that prereleases in the + `0.0.3` version *only* will be allowed, if they are greater than or + equal to `beta`. So, `0.0.3-pr.2` would be allowed. + +When parsing caret ranges, a missing `patch` value desugars to the +number `0`, but will allow flexibility within that value, even if the +major and minor versions are both `0`. + +* `^1.2.x` := `>=1.2.0 <2.0.0` +* `^0.0.x` := `>=0.0.0 <0.1.0` +* `^0.0` := `>=0.0.0 <0.1.0` + +A missing `minor` and `patch` values will desugar to zero, but also +allow flexibility within those values, even if the major version is +zero. + +* `^1.x` := `>=1.0.0 <2.0.0` +* `^0.x` := `>=0.0.0 <1.0.0` ## Functions diff --git a/node_modules/semver/bin/semver b/node_modules/semver/bin/semver index 41c148fb8..c5f2e857e 100755 --- a/node_modules/semver/bin/semver +++ b/node_modules/semver/bin/semver @@ -12,6 +12,7 @@ var argv = process.argv.slice(2) , inc = null , version = require("../package.json").version , loose = false + , identifier = undefined , semver = require("../semver") , reverse = false @@ -47,6 +48,9 @@ function main () { break } break + case "--preid": + identifier = argv.shift() + break case "-r": case "--range": range.push(argv.shift()) break @@ -88,7 +92,7 @@ function success () { }).map(function (v) { return semver.clean(v, loose) }).map(function (v) { - return inc ? semver.inc(v, inc, loose) : v + return inc ? semver.inc(v, inc, loose, identifier) : v }).forEach(function (v,i,_) { console.log(v) }) } @@ -111,6 +115,10 @@ function help () { ," prepatch, or prerelease. Default level is 'patch'." ," Only one version may be specified." ,"" + ,"--preid " + ," Identifier to be used to prefix premajor, preminor," + ," prepatch or prerelease version increments." + ,"" ,"-l --loose" ," Interpret versions and ranges loosely" ,"" diff --git a/node_modules/semver/foot.js b/node_modules/semver/foot.js.txt similarity index 100% rename from node_modules/semver/foot.js rename to node_modules/semver/foot.js.txt diff --git a/node_modules/semver/head.js b/node_modules/semver/head.js.txt similarity index 100% rename from node_modules/semver/head.js rename to node_modules/semver/head.js.txt diff --git a/node_modules/semver/package.json b/node_modules/semver/package.json index 1cadd3e63..ec4964f1c 100644 --- a/node_modules/semver/package.json +++ b/node_modules/semver/package.json @@ -1,6 +1,6 @@ { "name": "semver", - "version": "3.0.1", + "version": "4.1.0", "description": "The semantic version parser used by npm.", "main": "semver.js", "browser": "semver.browser.js", @@ -21,15 +21,16 @@ "bin": { "semver": "./bin/semver" }, - "gitHead": "4b24aeb54dd23560f53b0df01e64e5f229e6172f", + "gitHead": "f8db569b9fd00788d14064aaf81854ed81e1337a", "bugs": { "url": "https://github.com/isaacs/node-semver/issues" }, "homepage": "https://github.com/isaacs/node-semver", - "_id": "semver@3.0.1", - "_shasum": "720ac012515a252f91fb0dd2e99a56a70d6cf078", - "_from": "semver@>=2.2.1 <4.0.0-0", - "_npmVersion": "2.0.0-alpha-5", + "_id": "semver@4.1.0", + "_shasum": "bc80a9ff68532814362cc3cfda3c7b75ed9c321c", + "_from": "semver@>=2.2.1 <5.0.0-0", + "_npmVersion": "2.1.3", + "_nodeVersion": "0.10.31", "_npmUser": { "name": "isaacs", "email": "i@izs.me" @@ -38,13 +39,16 @@ { "name": "isaacs", "email": "i@izs.me" + }, + { + "name": "othiym23", + "email": "ogd@aoaioxxysz.net" } ], "dist": { - "shasum": "720ac012515a252f91fb0dd2e99a56a70d6cf078", - "tarball": "http://registry.npmjs.org/semver/-/semver-3.0.1.tgz" + "shasum": "bc80a9ff68532814362cc3cfda3c7b75ed9c321c", + "tarball": "http://registry.npmjs.org/semver/-/semver-4.1.0.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/semver/-/semver-3.0.1.tgz", - "readme": "ERROR: No README data found!" + "_resolved": "https://registry.npmjs.org/semver/-/semver-4.1.0.tgz" } diff --git a/node_modules/semver/semver.browser.js b/node_modules/semver/semver.browser.js index c335720fe..712de835c 100644 --- a/node_modules/semver/semver.browser.js +++ b/node_modules/semver/semver.browser.js @@ -128,18 +128,18 @@ var XRANGEPLAIN = R++; src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + - '(?:(' + src[PRERELEASE] + ')' + - ')?)?)?'; + '(?:' + src[PRERELEASE] + ')?' + + src[BUILD] + '?' + + ')?)?'; var XRANGEPLAINLOOSE = R++; src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + - '(?:(' + src[PRERELEASELOOSE] + ')' + - ')?)?)?'; + '(?:' + src[PRERELEASELOOSE] + ')?' + + src[BUILD] + '?' + + ')?)?'; -// >=2.x, for example, means >=2.0.0-0 -// <1.x would be the same as "<1.0.0-0", though. var XRANGE = R++; src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$'; var XRANGELOOSE = R++; @@ -236,7 +236,7 @@ function valid(version, loose) { exports.clean = clean; function clean(version, loose) { - var s = parse(version.trim().replace(/^[=v]+/, ""), loose); + var s = parse(version.trim().replace(/^[=v]+/, ''), loose); return s ? s.version : null; } @@ -345,36 +345,55 @@ SemVer.prototype.comparePre = function(other) { // preminor will bump the version up to the next minor release, and immediately // down to pre-release. premajor and prepatch work the same way. -SemVer.prototype.inc = function(release) { +SemVer.prototype.inc = function(release, identifier) { switch (release) { case 'premajor': - this.inc('major'); - this.inc('pre'); + this.prerelease.length = 0; + this.patch = 0; + this.minor = 0; + this.major++; + this.inc('pre', identifier); break; case 'preminor': - this.inc('minor'); - this.inc('pre'); + this.prerelease.length = 0; + this.patch = 0; + this.minor++; + this.inc('pre', identifier); break; case 'prepatch': // If this is already a prerelease, it will bump to the next version // drop any prereleases that might already exist, since they are not // relevant at this point. this.prerelease.length = 0; - this.inc('patch'); - this.inc('pre'); + this.inc('patch', identifier); + this.inc('pre', identifier); break; // If the input is a non-prerelease version, this acts the same as // prepatch. case 'prerelease': if (this.prerelease.length === 0) - this.inc('patch'); - this.inc('pre'); + this.inc('patch', identifier); + this.inc('pre', identifier); break; + case 'major': - this.major++; - this.minor = -1; + // If this is a pre-major version, bump up to the same major version. + // Otherwise increment major. + // 1.0.0-5 bumps to 1.0.0 + // 1.1.0 bumps to 2.0.0 + if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) + this.major++; + this.minor = 0; + this.patch = 0; + this.prerelease = []; + break; case 'minor': - this.minor++; + // If this is a pre-minor version, bump up to the same minor version. + // Otherwise increment minor. + // 1.2.0-5 bumps to 1.2.0 + // 1.2.1 bumps to 1.3.0 + if (this.patch !== 0 || this.prerelease.length === 0) + this.minor++; this.patch = 0; this.prerelease = []; break; @@ -387,7 +406,7 @@ SemVer.prototype.inc = function(release) { this.patch++; this.prerelease = []; break; - // This probably shouldn't be used publically. + // This probably shouldn't be used publicly. // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. case 'pre': if (this.prerelease.length === 0) @@ -403,6 +422,15 @@ SemVer.prototype.inc = function(release) { if (i === -1) // didn't increment anything this.prerelease.push(0); } + if (identifier) { + // 1.2.0-beta.1 bumps to 1.2.0-beta.2, + // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 + if (this.prerelease[0] === identifier) { + if (isNaN(this.prerelease[1])) + this.prerelease = [identifier, 0]; + } else + this.prerelease = [identifier, 0]; + } break; default: @@ -413,9 +441,14 @@ SemVer.prototype.inc = function(release) { }; exports.inc = inc; -function inc(version, release, loose) { +function inc(version, release, loose, identifier) { + if (typeof(loose) === 'string') { + identifier = loose; + loose = undefined; + } + try { - return new SemVer(version, loose).inc(release).version; + return new SemVer(version, loose).inc(release, identifier).version; } catch (er) { return null; } @@ -508,8 +541,16 @@ exports.cmp = cmp; function cmp(a, op, b, loose) { var ret; switch (op) { - case '===': ret = a === b; break; - case '!==': ret = a !== b; break; + case '===': + if (typeof a === 'object') a = a.version; + if (typeof b === 'object') b = b.version; + ret = a === b; + break; + case '!==': + if (typeof a === 'object') a = a.version; + if (typeof b === 'object') b = b.version; + ret = a !== b; + break; case '': case '=': case '==': ret = eq(a, b, loose); break; case '!=': ret = neq(a, b, loose); break; case '>': ret = gt(a, b, loose); break; @@ -541,6 +582,8 @@ function Comparator(comp, loose) { this.value = ''; else this.value = this.operator + this.semver.version; + + ; } var ANY = {}; @@ -558,21 +601,8 @@ Comparator.prototype.parse = function(comp) { // if it literally is just '>' or '' then allow anything. if (!m[2]) this.semver = ANY; - else { + else this.semver = new SemVer(m[2], this.loose); - - // <1.2.3-rc DOES allow 1.2.3-beta (has prerelease) - // >=1.2.3 DOES NOT allow 1.2.3-beta - // <=1.2.3 DOES allow 1.2.3-beta - // However, <1.2.3 does NOT allow 1.2.3-beta, - // even though `1.2.3-beta < 1.2.3` - // The assumption is that the 1.2.3 version has something you - // *don't* want, so we push the prerelease down to the minimum. - if (this.operator === '<' && !this.semver.prerelease.length) { - this.semver.prerelease = ['0']; - this.semver.format(); - } - } }; Comparator.prototype.inspect = function() { @@ -585,8 +615,14 @@ Comparator.prototype.toString = function() { Comparator.prototype.test = function(version) { ; - return (this.semver === ANY) ? true : - cmp(version, this.operator, this.semver, this.loose); + + if (this.semver === ANY) + return true; + + if (typeof version === 'string') + version = new SemVer(version, this.loose); + + return cmp(version, this.operator, this.semver, this.loose); }; @@ -723,20 +759,20 @@ function replaceTilde(comp, loose) { if (isX(M)) ret = ''; else if (isX(m)) - ret = '>=' + M + '.0.0-0 <' + (+M + 1) + '.0.0-0'; + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; else if (isX(p)) // ~1.2 == >=1.2.0- <1.3.0- - ret = '>=' + M + '.' + m + '.0-0 <' + M + '.' + (+m + 1) + '.0-0'; + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; else if (pr) { ; if (pr.charAt(0) !== '-') pr = '-' + pr; ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + (+m + 1) + '.0-0'; + ' <' + M + '.' + (+m + 1) + '.0'; } else - // ~1.2.3 == >=1.2.3-0 <1.3.0-0 - ret = '>=' + M + '.' + m + '.' + p + '-0' + - ' <' + M + '.' + (+m + 1) + '.0-0'; + // ~1.2.3 == >=1.2.3 <1.3.0 + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0'; ; return ret; @@ -756,33 +792,48 @@ function replaceCarets(comp, loose) { } function replaceCaret(comp, loose) { + ; var r = loose ? re[CARETLOOSE] : re[CARET]; return comp.replace(r, function(_, M, m, p, pr) { ; var ret; - if (pr) { - if (pr.charAt(0) !== '-') - pr = '-' + pr; - } else - pr = ''; if (isX(M)) ret = ''; else if (isX(m)) - ret = '>=' + M + '.0.0-0 <' + (+M + 1) + '.0.0-0'; + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; else if (isX(p)) { if (M === '0') - ret = '>=' + M + '.' + m + '.0-0 <' + M + '.' + (+m + 1) + '.0-0'; + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; else - ret = '>=' + M + '.' + m + '.0-0 <' + (+M + 1) + '.0.0-0'; - } else if (M === '0') - ret = '=' + M + '.' + m + '.' + p + pr; - else if (pr) - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + (+M + 1) + '.0.0-0'; - else - ret = '>=' + M + '.' + m + '.' + p + '-0' + - ' <' + (+M + 1) + '.0.0-0'; + ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'; + } else if (pr) { + ; + if (pr.charAt(0) !== '-') + pr = '-' + pr; + if (M === '0') { + if (m === '0') + ret = '>=' + M + '.' + m + '.' + p + pr + + ' <' + M + '.' + m + '.' + (+p + 1); + else + ret = '>=' + M + '.' + m + '.' + p + pr + + ' <' + M + '.' + (+m + 1) + '.0'; + } else + ret = '>=' + M + '.' + m + '.' + p + pr + + ' <' + (+M + 1) + '.0.0'; + } else { + ; + if (M === '0') { + if (m === '0') + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + m + '.' + (+p + 1); + else + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0'; + } else + ret = '>=' + M + '.' + m + '.' + p + + ' <' + (+M + 1) + '.0.0'; + } ; return ret; @@ -809,23 +860,27 @@ function replaceXRange(comp, loose) { if (gtlt === '=' && anyX) gtlt = ''; - if (gtlt && anyX) { - // replace X with 0, and then append the -0 min-prerelease - if (xM) - M = 0; + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0'; + } else { + // nothing is forbidden + ret = '*'; + } + } else if (gtlt && anyX) { + // replace X with 0 if (xm) m = 0; if (xp) p = 0; if (gtlt === '>') { - // >1 => >=2.0.0-0 - // >1.2 => >=1.3.0-0 - // >1.2.3 => >= 1.2.4-0 + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + // >1.2.3 => >= 1.2.4 gtlt = '>='; - if (xM) { - // no change - } else if (xm) { + if (xm) { M = +M + 1; m = 0; p = 0; @@ -833,20 +888,21 @@ function replaceXRange(comp, loose) { m = +m + 1; p = 0; } + } else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<' + if (xm) + M = +M + 1 + else + m = +m + 1 } - - ret = gtlt + M + '.' + m + '.' + p + '-0'; - } else if (xM) { - // allow any - ret = '*'; + ret = gtlt + M + '.' + m + '.' + p; } else if (xm) { - // append '-0' onto the version, otherwise - // '1.x.x' matches '2.0.0-beta', since the tag - // *lowers* the version value - ret = '>=' + M + '.0.0-0 <' + (+M + 1) + '.0.0-0'; + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; } else if (xp) { - ret = '>=' + M + '.' + m + '.0-0 <' + M + '.' + (+m + 1) + '.0-0'; + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; } ; @@ -865,9 +921,9 @@ function replaceStars(comp, loose) { // This function is passed to string.replace(re[HYPHENRANGE]) // M, m, patch, prerelease, build -// 1.2 - 3.4.5 => >=1.2.0-0 <=3.4.5 -// 1.2.3 - 3.4 => >=1.2.0-0 <3.5.0-0 Any 3.4.x will do -// 1.2 - 3.4 => >=1.2.0-0 <3.5.0-0 +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0 function hyphenReplace($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) { @@ -875,18 +931,18 @@ function hyphenReplace($0, if (isX(fM)) from = ''; else if (isX(fm)) - from = '>=' + fM + '.0.0-0'; + from = '>=' + fM + '.0.0'; else if (isX(fp)) - from = '>=' + fM + '.' + fm + '.0-0'; + from = '>=' + fM + '.' + fm + '.0'; else from = '>=' + from; if (isX(tM)) to = ''; else if (isX(tm)) - to = '<' + (+tM + 1) + '.0.0-0'; + to = '<' + (+tM + 1) + '.0.0'; else if (isX(tp)) - to = '<' + tM + '.' + (+tm + 1) + '.0-0'; + to = '<' + tM + '.' + (+tm + 1) + '.0'; else if (tpr) to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr; else @@ -900,6 +956,10 @@ function hyphenReplace($0, Range.prototype.test = function(version) { if (!version) return false; + + if (typeof version === 'string') + version = new SemVer(version, this.loose); + for (var i = 0; i < this.set.length; i++) { if (testSet(this.set[i], version)) return true; @@ -912,6 +972,31 @@ function testSet(set, version) { if (!set[i].test(version)) return false; } + + if (version.prerelease.length) { + // Find the set of versions that are allowed to have prereleases + // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 + // That should allow `1.2.3-pr.2` to pass. + // However, `1.2.4-alpha.notready` should NOT be allowed, + // even though it's within the range set by the comparators. + for (var i = 0; i < set.length; i++) { + ; + if (set[i].semver === ANY) + return true; + + if (set[i].semver.prerelease.length > 0) { + var allowed = set[i].semver; + if (allowed.major === version.major && + allowed.minor === version.minor && + allowed.patch === version.patch) + return true; + } + } + + // Version has a -pre, but it's not one of the ones we like. + return false; + } + return true; } diff --git a/node_modules/semver/semver.browser.js.gz b/node_modules/semver/semver.browser.js.gz index 4ff42fe9b0ef3b4fe0ae2323b38fe5ca0173dc23..e3066055506fd63423614ef9f3297b45d4356b35 100644 GIT binary patch literal 7595 zcmV;c9aQ2UiwFQ%7e7=21KmAqa~nsF-}x)rT31L)Bu&Xl-JT>$rA?HLuPoUmDO=vP zrS*^;QWMXEnHlPlNdE1IM?dF9%5nCp?rvj}{XnAuG#U+{TYH_^GM?l?5_kN&MUv)O zSNz^;y?7z`r^v5;F$uja6TwW}`oc?n5yZk1r^(dshruUbWcOL_M}rnL=;ZecKbeUr znJzBGQ99q=RxX+_hObN5uqOiaWD&@>c&qqXg(k?r%CSbLOt|_|6#k#kD$dMN$0Ai zfT>W;!k@qwFBbv)FIt3t1jA$!jEMb-pJiSez^K@K;Y~hybKivmgG_*AgO;4t;QaXH zAIE3^K7V`s{lDSM`KvdlFw^$VU^p1I%~ZWfzVt$o`g7=*iFqObqJok7ts5_eN-?s^ z;K%#RJ*vsliB-kFRNWbTADV$?Nf;)#K|B{{{(KoigX6nJ3KN4V0PbEa#=cl)K*w2< ziahz`$H8yVyoUg8yfB!0IsO!0JOvWK)BzMTPE#VwQz*@t1AqC8I9*158cf8iDY6Zi zlw!q^z`h_qABP`%0tWL$oW%X#{4^2MU=BQBTmhBwy`W-f6eTcosz&%Y!PB2lj?Z3w z|LTY1(~DO>zB>{`tA8oKz%=`po7Ox}JWvwN+}3$&yLTIUmqWxA6E-$RXx-4aJPv~ zwNt0*Kj^NNYrtl56#^x0*EU*-sv>tIzE48Bo@H3`lhiA=-brHL=p| zC+mgvS%e#$6nbmE$pZP{gG26g+?{zboXn(>K_evcy%@o5c%VzA;BFw4H?cg<&4M(;lb;_UBwSCE z9I8_P*Cm`Zr_6$PXGf=hZ!!WZ8{jNg*jW#E5APm6d{D=cBABKjYM~baTac9$6@XIl zr7c}r>6S+&Tcgf;CJp?5)VaL>a+kxJK1DIFf!sap9#&AXMg&aVdi1nS?na}%nK=J> zFlB06oe!IOuSfSf;+IKoG>}m*TX>SqHr;tjF_+58fUIFk(RG#9Y@`XWWW z#9PLR)JULgHd5Foz@8X`z5#UxdTtIS=mY@u25O3x?&YJ|7%v^Oq_v z&R(6^J#-=WK=iu`e+wGV4DG~)Pvvz?15V-go|Bm{_9mZhy>yzfDU=7} zkoSGVz3-3CjxUPbqe5fkUTN-8MUi{Du!egQn!`P(Pl0=;&gR|(XI9%Muv3u_5vV?5$}qfz?*94G6n8 zCvT6=jxOGmH~K$cZKCe;hbv714X7IYD#(sms{r%-$%8C?yEs!cY8C=#3D#%s zXA5NR*w1f$pKZ>09_Gs1$i$+vT8^%IJgmVvGfUX!`gkD7GX5w=qXYQGKMFG{$*)sW zA;fZeHTysvIUnlOyD}%qFOMhGYcE4W;MoSJ_+l<*p*N>xQbMh`R@?^8f}zuomnUgy z)jZ#M{!;OyVAOu(Lq?zI`0dBi!4PnSy%b?Xp%e3#Dd9HSKHcC{#^- z(od^guTKHFsm~b}nx$1+tZSafx>nGt8P!kg2_tMOwRWCkEQt0b*mg3|UFe4(g+|9$ zT;MEb9+fap&o7P~1%tnN0m`En4k6D8xbuO41fV)$u{fbA!Erv`4Ua(d(Bpt>s6R`6 zzbBS)2>ONuQ{4LKjUY<~gmRqR@Qw(lH0&^FVSuTFxCIoVf{%T11|M5n7@ZVi5B|ew z<1<*E!DW}ILto2_6RP)Gk1ZW_!@v}-K>FNk=@26Q?r4V&Ee0Np0&LKO*T*3aB$=~| z-^rDL2*K94Ok>eW2cST61*+SHE{GFH!b&6Tig+1@4vKtI9r20PLXm#gqIjbwRcvA5 zb_2NF43uZc8d{G%0mCH*Nc3rqO}}f$&Wd9XK&wQZ?jU82*LiXEespuW^#XKbyIX-+ z28d-YH;12%r(~yTeK26cFzSBsL=|4C zcWaQKV)l7voSwjH2{d24jKZA=dD9&Qzpj`tmPdI!~3vdmb*f{fT5D8jxgzN~3RpK=4Lr|_qsFNZaev#evJvB&WE2TsYD zTDAQ+6eIiLkM;V=*bVoiA1es;wwBdjmri)Tcyj?qpc}FcZOsN!eV{7fnAEr^F~jSb zoL%*Tl?>@`EB(h4sRy?Xw6%e)h1-xQVr)a_J9mEZ2!;1elz(eXXS~xMwx8%pLVxj{Ygf<)*E#*D^Hc3D6$=8eE*x}s|s&xOvUU+(B6PxB`n8B$9K&l36 zU!LH~X{+JeyOLTpk~vbmEtno|sWMXvr8oc{+^jM{zJr6e9eh=jF`T+S?G?~O*k2LN zKa3E;)(8QAU(Ix;rWZno>Aj<-dgzI=M9GpJ6^hoNrfIS$*l!toR-#~jooo31U6AEH z%tV~9JB4h^ILQqt?0)0LxgfU;Mr^^<$OliOBU6VaTuGm&kxvs6&Qby)S;{*;;71%d8+Sq!U;V=!uh*7$rk9 zcbW_gtT(94Zv)hf@g$|hUv6u)q40kHJAzAYL@KcBp}^GcShbpdyuk5HIMjv}udzbe zT6C^b4Am;6dL37sS1K2)t2!!4Pop-I-fpsr^w`!R{Z5heJ1*&W2HSS+%QETz0GTV) z-5(=plj@_ioT`)}qyG${I1ybhU~@=Y zfnsAPS{o5k{>auB^nI+@fZ;&lEyLW{j>@YiJ$ixk=vmB6=S%#;&OK#0vlp}EaB^G_ ze0oqGVYboXU&~94hJ#j#+BT$4`b-gFBQs=nDShXgmEF-ZvUE-o%Z~D004aq z42GSLURU{w#}&0>;|r$Fc=Cl$H8nh6Z+T2(JWFqlHDQ&rQ+0dB{SHBIh+QMlow2I- zWW7`EiG2WE?Bt09Ds>8nP6#5cq-_uAPv?Cr_7tw~~?;`6_5uI~|QV5Xl5CEch8-TpS7fu;Aj) zPDqEkGE6L|e#XykrlngIh~!{MVp^D|L?kU>l72;0(lv3JBO-Gfi+R41!cP4`VLgNh zF|;9uPlUK%faw2w=6jZRD_OXXEg-UM*|PcQIoEx=q{+R3 z6Ek(%j|=Tl+mDOwG0ScwL62(>P0#)hFnZRAQF~Vr%Y4JH+`AxudsQ>ijpNm=4|LzrnwNo?v+ z&5YU>k*#h>XAa5*mt^$JG*U^eDrK~RWL`ZL%!!U67*>)LHgaHB*BsbvK6$qKtRM26(EPllMSUo}MDwyYp*Dhl*P7=yp1HqzTyp<^=G1H=+ zt1_AL@&XeaAK?G9%@>7ao0JLQnBGQ@TDZ$xDBh)*G2Ou|fQ>LU&?X8JD_~bj{Gzja#FX3Pf$c zLg7LRv9pyx5p-jcQ7T1UPut-j>gTM$K`N7pL89H2ykj!T;)e&P+-AKLrz$+x z(^Cxqj957VXd{KVgQ-XC;7Ie{H?!8hKXTkL<8? zj{+7_!}DdN(8v47k}Owu1n5~OFp($;ES`$cpL>&garE|; z+5n&i@-T37w$RSmj^gjmud^N8y(+W-7~ ze&H@T_pUyH_S~Mar~cg&Cp{7M1Prp!-W`*~Nxr3)iNU_>oOHX6 z|Bsy^R>~wcii(X6Mrh-nPr{5erLTY=5M^cU(27k5aH?Uz_Bu?g zV&2#1!hf6r|4G_EjqEG8prW3vGT61Iv~}N?=xzr7bmd*qkKo(UGULjs(C6<;ZmD;c zM{0#ehx#5J-BxJ!JAA8x6}nZ3fh4HGg9oW`s|s<4dReuws=yd{hm{L!tDwgd0BIDGdIO>F>b?&)pqZNm*M-8=Rp*N zUK)Z0ygw>I`zzADC;WUeC=qeLT_j;80qc~zp@zx7{-<4iy(|4KlWq1PV}}r`nTF`dMGh-pF--f<1qCj ze8K~}Zf5!c{y|CEmmNWR|AApBnJ~sTLNIPPkCPP8y!KNc#0WiYtg~*td-%xY764y@ zT+HEA@~rwCVtL%@T@!kMLeYgT2iSi^0EHG^bcuX5)$VRbJLm)_cMQJNYu`nqyY(&3 z7#Dr4AO`<{* zUI?=jXZ5&U7EN8~Yhvu=A1Mqyi)`Nk{z!3|L}< zf)(QE^=m8*^2~Nm_c#{?S5P@B+LU)e5o=XqtFf6EW`A0uMb!&Kg|NBx-jGBArg84) zDnTTFAAma1&-}O%2Tl@k64vB=9__bl6vzw>QHLy52sYsMjPWTvJ>=pf5wNn()U~ei zm3R{u`!SHOzR9?R?30<8m^36&*seX;2ds;=8VJnBzw7#DD^O0_TqrIV;{{;9@ehjtxwoflF55R1tSjy8LCV`1?UizCTpC|CHGe6o*+{2J9y+J>dkE;6_{vjiLX>ZV~T^`P;_T2(64>El45UHoW z+qVo!#t3@Gnv}7*``!C zP%kKFU@fcHFhPJ&d7xQ~FHaa9MaC!Db)0HI$)0V@nB)8cu(QF|T_amg=0Cwq<)M4c z3uA!84?b`T)+d=9`k^#1uKA@tk8(@xmpL%9on`cdt*sEP3k>9*$y4V7L)x?!Bx=br z&w{C6Y6(`8bH}FvYx`;BH4z_J7dlcp6{gOGjz5I?LA&yHl5CIf#PBz3#5!2lL72Gl z&_-*=dS7pqevw|ac|OB_xz8W?FQ3zVmCUYggCHvIeUJlv_X45FYerl^0M(TiRU}LH z+{F0yfr&5ZBI8J@x|!gP8kR<#mqwkJM%^!ux?eeJ?M+uJneqfr!(jK`Ab&mL8tM{M z2^;(TX9^BB+9sz`U&$wJ7|i_4PSVQNoqs76(r8(5t0hvlXbAkbvYP#DGaI3ie4%xLXwK)u=`B^?c&G+9sUCWbZsgI+RA4G_mrPd*yd+-@v zb)vurR}8#}UMQ1*)n5n&k$miS&;Vm7_Foaze`NGf7w?*uYm5gSe}AMt`XB+ACGEZHR~Ti&&$ zcu2OWiRWNuhB{)&zy0Cpb1qU|?^_=trw=q5XrR#mdbHEMTqKhsOp~s>ou^rm_r&M5 zwP()+KZ@c?ib)jYxd<=CjTAv9MVN>{9H&z`h{8`&^_K?ap#&nbh4_vbrQ zlV=mBil21d349;ffiBZ1N^insCQjsR5kZ5)+j#~PgDC*+K_bRdEOMaZWtxd1{Unp{ zFKFIJ0M|hjPJ;p;MUYH^1Tb{~#f&qQ$cqe0bLPO`{w9tWvCP7Wcr`_~0h2PUI1tzu z*3ZY$$G(8U0+FQ2;4hh_Vj9kX2aGGAGQJa342|LxW=_=zA18SH+tK04tDj!|e0Y5J z>X%oCIN_7c&7C!%!~06*IZ}Ug|9)%mKj$AlOgB0^^*~;~d2@Q$3W-_}xc4Ifwu#)- z6NY&twUho=bsBwdo`HyDQ2;Ta(be7jN+wKdSaFFa0saNT!n^&YRQ=j z9b1twC^^N1Nw*_5MFTH4MW^@S!w_14W~u!7Pj*ErlqOMGGUd7@(@|~O5nG1cw+5ng z6fpa3CI_H$WspnF^NK`Qne9k+wNfpFwOC z%)+Z@Y#kl2AFt=OjxhU;UJch;c;#_u@Uj)PWqeuzNk_62rp&1y7hyCNN3sZDe+|lV zmE3_<5s$+pD3qn46~5U4Dw_Yt-(J1`xn7=1Rb~$Z6%UGjz*|`zURd}xTI8^E&sx^c z9K<}GI!kCwP+|v4b@dQZ6)ZJpK780Ttf`=1Vn~S%)#jG?YL>q&qR8m9Q?g!IpT)Sr zsYUP1H=QFNf(R@@+Olgz1UGGj;ZNNfrEF-T9hoKoCJz2cL05tiiy!l#m|Q6n%K@EB zGK6zj00;&<`z9CJ?UP_$Ea+*LrHgq!6lD1Mh@dr`fKf}#DD~)r2{;MB21GkJze*R- z58Fx@%vgt(E(9Tsf!AS9W;b&4m)~B$*38t;Z(qZHi2S^Msd?k=^;Nkl>kr`E%T7Z( zwOptPa2AVjP+CA2IG#lT+B{WDoQ^h^zk&9|Gd04g%KSx9>d9&iEL6~&z* zVvNU}gc>IE7>@%XaQ1FUG$h?&i1_|`@56^2%&{sdoAp$!?rWlI9a#+?uB2KWN`!Xs z)Re|)xupzC~p#VoVyIO98Z2SMo1`6lLD$T`R4*o znp0-MyOV?Czqc6ywGD8VOYE%s+xvI-A3o^gNEuAq5RK5wfE~zs6_tQe@wvOYjMA-+ zO14Im^-LQ0ztp*A4{z_&dx?K*DAd4STeljmTywhBAa9@e|38=-O0L@5(iDVje-EU# zPaXw%8=z-}B{HWPP@01gHrw4A-ijOAZ^n{cGC?dwkc;)*EpE2n7pO~TSFSu(Ib@ZQ z)ij%UsLeNgvZxiW^ppkJ!18o+)hLo`U9a&+Aj-o~?7aH^Es~xOd@UR>7)DW`j%{_oz{Yd$x3SuvPA%uMyRb zm=({W;+gzYkaa=FrauI5{|bQ{D4RRW0hFTQ!e* zPwy`b1q`5i@XH{37On=&^CxGra`WO$(Y~1roFy2dh0N#3+_5Zfq-67RRz!t%JTkH9 z*jAv|9?xxXqWX zteg=6M>v@nT%$D2(UYIW_NWHscO7UmmUNW3l9NwxN(*LifQ98PLH*DkB9&!}3!lMQ zj0qwgig3f>4ffZ6zWw#^xU$PS#k?pDJL+lQV0fWw8jyZk=7oI>$PIJkaL}wsZMm*} z9;=!?%VyL(tw)Toq1D=Hfng!qlVID)L3g1`f)pB^WKqC*nFUnBJUu--@DvO_vjD17 z7!IM147l^b0trENg0Of|D#0N?-VG06>7nxhWoU4jNigshNd)?a7N)q7=$If&1{UQw zz2+Se4s6(AxQ3Qt7jX+IS_L1w;sic6H!)Bt#18z&z~d7T&+xoQ)S<6c;e_g)wTCqm zfWsISN+5miteI#cJ$H?7hlGI#qgWgCVEK5711aWg<9G5ZAVRP;F0w>)vmq$ZLWAn{ zpbO%}L9xmR+ag&+k%uB5TKD+y>Yzx^jVNC0NtIhTxLpG-*F)_ja)vfzPrz_V01|yV zW7Biv*m-&EA!wDj+Z$%A@w(40-tS$XZ$9h8&f2R%ECb!eltYS6P}rc>K-kY} zjcA~#_=04Dfokr-O}s`!<}rq-8H$oSO+Ie5L!~mxrK;9L?3rM*)AE5@3MWpkn?J!o zIeY3l8kyoM13AU@at4hLvnZKIcF-cS^~|NEaEXV z(%s0Z3LQ7&_gm*?lH_CM(&x66T&`UD;#?2G@WRVGvXmT;o(*N?W}5H6Ki4xwc(yUe z;++LlZGfGJ`8*1XZfDp*0?%#AMmW`r#p)c8FA6$8ea6ZM+MwRq1X^wjR3g~;!66~L ze{rNA&Y>ZGI0Hhb_m&oD2Lwfz^(e0!KsPN?T+gZ&Kp6xXJ?d&D!{GqzY2=M}$nO;q z?X`+85oZ|5WL8``l+{CQf-ns%4BO+6G)!n#j=phw!nAg3<^?h|hyAQNF$JQtt8~)3 z9u#M>zTatpSEL+CXau+dPHdb>7etDdTxnP2!bUB?wR^4_prXDb^}JME%+%Nz zLOi4{;<*>TT+H!!L18a>TW}auC}MIPG>l_84dMI{QLJp5-jE-|36BnG5ZZ85;FS0D zn>71moyj-B-LOvgPh7!M5LxtcIH>>_zYu7I($djGcD5CTXsH0WZimZzJCzFPV~fXd zDEhQhf{4?vgGl9H1Cc0UAOihfU7DoGAc79lJ5LSt(bMCw%HfTU`WjHvES;C^qnte# zaX7mw419ST=0zWq{wD0MAlofT3kwRnUk6Dc$nAl_QP|3hp*!EIpzmo>@hCzQegvsB zO)&3uz9=}Fh*?XHZZx(t;RaS`?gl9|7)|b>&jJO+Frh`QqAZSjW`FrNX2qk|tWYXK z2Y_3q3}dYwROjkqq@q%1Z9n_GsIh|UmuSoSq%?)P6brjZfd&~R>#D?DLwyY^R19^Y zcq`m0AmS#^#$*y3Q0Si<4SwKyNe)CRDzzxrZ+#ul2}+sHODRfun3PzMjwz1BDI7_s zFv%P9#W-ST(QwV+Jp#Pf0sOiN!GW5WLIvJz!U7WMCQHFSn1&f=q?DHW*RFAYZX+`} z+NM66wtBCwhrDCjseNcL2*o}Q=713H@w~dbb4oj({yKg?QPbSANWn%SdhV7ztX01u z1|f|!*y@oY4T(v1F>CMLTI1lu`69pSj*RF(_{)Kwzyt^uQDG%mpTpG|JXB|JXWVSI zz%P6p*ZUs(9V$me@6f>ez4qbot_nXLzY?k|Bfn<1aa=e>cBcrw)OkU=Pow9%U?wEM zUF-DGz{t;p6LEY^RdWU%VwFPWRMuzzJz)>wuH&r1HZs1m005ws&S3cX9`v-gWn5D` zw%!!#jJ6|u>ZzfHx*6~iKx=e!Y+OXzU7))?;eIb+$%$>dth!@eAET)q47IjlXX(PN?RmZ46- zBm_y0=dJ+9bL^GQ%aHkQRwVL>wD{}V?m3O+vevt%akLcj?w-@Q1+unv+M^BWTvEWB?Hk~gHf_`z zA!a(O;U^m+-xK!1SsS*niwmq0lfpvRZ)e-PK`CstBqD`PDqb0a&KnQL64`Il5+ZU& zuY`#jX0jwsq>d{X5X4^AUZD!Ua!GSKIR2;W%12}|^4zJ$M|2%MXpU)bzq-U}o#$+t z0d(l`8EjBH4adu)L&0W~AY8qeuQNRgY*li5w*As`H%dkf;MiF9$N-ql!r(<|sp!ui z12`PZGSszocxc({IP`V8A&J@Z8`5z&3Ja*ipc$+U$`}Aq$E=V}hwmEt2?RqM=6ddi zxio8$^u{gwxu)JRs1QWeCr!BRQX2oi1 zZI^qR0o;a7jebpU@UBB&p(Ca#9Odhv_H_?vo~XoBmCVEV?yAfvdoV{&QND=h`bM+4 z2Es#WhbYc7H%UTw=|V%;n5J+@+z>ZGQcw!kjTCqYWY32^Kx+r7z8W1b;^CTiCimCP zE?wPz;!0Q5Z*ES)_090q-WheycWPR>2S!%54|G!^DN(4h zHF2@KJy7c&E(fZr-;wlI$s;vxH4Lk=%hVubm0f9fVXgHGUeAC9k0EQ!b;4U%i5RCT z<*xw$DIn)$3n7?xfOmMXJDh{N%7^qUWQ)L!z7o+yn3~5IW3B_LURd`o1w2>IQ1)x)rB`yNFC2Ki7k^%jjvAWVLnIQBp)R zQqCTly0IUs=>XLBYebdTrjgPiFFRLO%b;5m4KlUV&9prZ;`W)BI7nqGIY4xJig!## zReXQ%mAkB0%c%~})znD~0K2TbAe3E&Xkcimup&Yzs$TAL+)?@m)>|pDR8W4d+5&ki z{QjeYe^p9(tL8^;mx|A;2(@mwodPu2!VYNH{pwLofT+|4;nxEURPr6kj zsv*Ca6lECdi`kSL$8aw*l&>(D82ZNx7wW}wsBV&dIknzEO>o&q;a~Vd5-86r0FD0I zeAct;S$98hLuY;3|CNU43ki|L7^=Xf5@RxEGF?-#Hw@B&#W0pi%R>Lup)Fq2<)wmU zC(>UoD;vsHO-#~Q5#N&Zl8iJSP8=CVU@nC`TiMzB*cMLI9O85;`)%sEY^HO#k0*ob zr=sNoJ1-XnQt;aR9Ip~B-I@5A6{wU20ohM9hc>zm?5T{fb>N0Z{l7(?8ZaKYLX#u?TPy~429%+SlBszIHSWVY~S(=pSPo0~;DqWkdA|RF| zWC3vGkbAPsW3j z*Bj>VOs=CA7?8R9dl61y@x6vqS@siHeqDB2c5XXd$4{89&iwn*7hm?pV6ZPXF!FKN z7oWmp3N#MkxZ9%^&!GujNyMM@x&NGg3~%`-d?EmKJyGnwzz^;^98tHC>PC-E;fap8CBnj`||*3m9Z>{BAapi@bj3h>VNz zsONa!jGM|yo5DtMxzYX}+PFuQ;>w}(T`cHsV$oL5me)a>8)%BZu(&l(2a2hK=JD`b z%p>S=ZAEu8b}*=pZ;7JGB2@Wsaus9;MR&x0{m!6cBlmOiE>R-xJlk0XHEK%DOZQwl zD`NcMIzNrHSW3MZ==DDsJqDo;jPMmGIqS%EAiG=2MXNfx0DW*l%Hg6-^<0p!U(~1? z+k|w>MU85C?lviF6u)v**Rw3LHG9jqR3rrc@rtC{tx1u%_e!@-!M9T+R(PyXeU&hI zi+%36a{t?U%A3{^Z^9#IF5gH!d6AA)p*Bv!xtvo$S%F@nv#Lt-Tj;!2s(%|DRy)Kp z-BlK_Is>rm@FcDD6m8=+~WOb z7FVYb<3><}hAauGQ-!!gy{ei!Rj`Y^!^*j%22T6-VH#^o*2De963mmyQp;Q^$%D7TFcXXk8ajC7fQ{4Bm z@-P6jg+3VjHW9B1ttj5mUer~h>44SjBy;LD*+AlUytF--pqCU#UK;^=9hRZZ^s`Fh zHul>iQCJ$?BtefF4h8A}&V7I}-CQdJEcZ7_f@_{ep=q{jl#23nDL@Ba6)f~s)kaOn z*zd?IinLamsCbo$g3!H+o6xoOI$LNVbwsQ(Z23*P6m9D`$>pL5X13D?zP2sPH@rIs z7}4=YNzdf+$v0t`cGZwcN9$N11JNi#qbm@9{ZJSuz< z;U>7t@pV6}n&C@Wh#8ofPwEXz$FoXz*!wUOLl??{cHbR64|4SBsFzz{6<=%^+dz5RO=q(1~#qj_doCXXfrvp=v|kcPJ>ec`^KfzTm4JvH30MqEAx~ zbbTjFde6n)eLCtly*2>fk_}rH%<2+9=lCD@uyJFLBJGO;+85BinB#wpJW@*CnzcMH zwdqN(;dT=_Y?HXugvH|Ws3c8(r+Hf^`Wk!EV$7sc2YA|X5iT^suncO^En=^MlK-Ms z0r(x~)sBTL<3){-+neIrj#Rz(O5F>qlM7bL{5A6vXWY)I>;CN$U7(-fIveJC;5U*0 z5|}-sUxf}r$0}AFync{quqpw3)#UR~jdick|?J1#n z$H7wX*_nq|u0iE>lks2EkXM2*9@}gvWC@+rnPX`_aZ4WY`_Vbt?e%Z^(2-vIP=4n} zQ@(~}9!Tto3b1cMJ!-ijA50EeF?a0*Tkr2fn+J7DYQcg6&ifacn37+=YAdYPKCWN2_F z5tt5jMdl>}XKk{eP)ip@9!_PYCFpQ3SH1;n_a%KRB0h8yqcgI?GcPgv-@<&qQ=8?l z+T)F7{^pF>1nVk{Qs0?oUh&ZOT9Fm>i#m(Xic9QQNdCZ|Y(+|)?5eY>5fwkLdf!|% zLnta;p9=_}P7T*Zs$|DcobBveUy~`aXTG}3Wq;JDGU}`{>Z~&AZgte%+EE*Ca5*VG zM`)|V9(;}b4Tx)~OHd`O@AA8I_t!f%v&Y;jQ|HO-Vo91-I-!!@kXIFG+?-uh@!i5G)AE0C>PU^W@TQmgztgU9J$)yY2WDz1z^Wd}38M+G7IrByh zpaGv2$c%FhVE3Ih?uBeQb$-i^^SV0Bkqt~TKO3a!BJ*yjqh*`ptxB!>!onD4L;)`g zmc$S!S*?+^`5b0}o5Q-r8eI-~(TI0q5yvBVE#A&%7#2J~l1!WrqNq0X!+>0KELu>Q4Gup}RPT{OTLiuk4cvQ{ICXN{vW)&Bek|`0008T`_%vd diff --git a/node_modules/semver/semver.js b/node_modules/semver/semver.js index a3413d7e1..22673fdd1 100644 --- a/node_modules/semver/semver.js +++ b/node_modules/semver/semver.js @@ -138,18 +138,18 @@ var XRANGEPLAIN = R++; src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + - '(?:(' + src[PRERELEASE] + ')' + - ')?)?)?'; + '(?:' + src[PRERELEASE] + ')?' + + src[BUILD] + '?' + + ')?)?'; var XRANGEPLAINLOOSE = R++; src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + - '(?:(' + src[PRERELEASELOOSE] + ')' + - ')?)?)?'; + '(?:' + src[PRERELEASELOOSE] + ')?' + + src[BUILD] + '?' + + ')?)?'; -// >=2.x, for example, means >=2.0.0-0 -// <1.x would be the same as "<1.0.0-0", though. var XRANGE = R++; src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$'; var XRANGELOOSE = R++; @@ -246,7 +246,7 @@ function valid(version, loose) { exports.clean = clean; function clean(version, loose) { - var s = parse(version.trim().replace(/^[=v]+/, ""), loose); + var s = parse(version.trim().replace(/^[=v]+/, ''), loose); return s ? s.version : null; } @@ -355,36 +355,55 @@ SemVer.prototype.comparePre = function(other) { // preminor will bump the version up to the next minor release, and immediately // down to pre-release. premajor and prepatch work the same way. -SemVer.prototype.inc = function(release) { +SemVer.prototype.inc = function(release, identifier) { switch (release) { case 'premajor': - this.inc('major'); - this.inc('pre'); + this.prerelease.length = 0; + this.patch = 0; + this.minor = 0; + this.major++; + this.inc('pre', identifier); break; case 'preminor': - this.inc('minor'); - this.inc('pre'); + this.prerelease.length = 0; + this.patch = 0; + this.minor++; + this.inc('pre', identifier); break; case 'prepatch': // If this is already a prerelease, it will bump to the next version // drop any prereleases that might already exist, since they are not // relevant at this point. this.prerelease.length = 0; - this.inc('patch'); - this.inc('pre'); + this.inc('patch', identifier); + this.inc('pre', identifier); break; // If the input is a non-prerelease version, this acts the same as // prepatch. case 'prerelease': if (this.prerelease.length === 0) - this.inc('patch'); - this.inc('pre'); + this.inc('patch', identifier); + this.inc('pre', identifier); break; + case 'major': - this.major++; - this.minor = -1; + // If this is a pre-major version, bump up to the same major version. + // Otherwise increment major. + // 1.0.0-5 bumps to 1.0.0 + // 1.1.0 bumps to 2.0.0 + if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) + this.major++; + this.minor = 0; + this.patch = 0; + this.prerelease = []; + break; case 'minor': - this.minor++; + // If this is a pre-minor version, bump up to the same minor version. + // Otherwise increment minor. + // 1.2.0-5 bumps to 1.2.0 + // 1.2.1 bumps to 1.3.0 + if (this.patch !== 0 || this.prerelease.length === 0) + this.minor++; this.patch = 0; this.prerelease = []; break; @@ -397,7 +416,7 @@ SemVer.prototype.inc = function(release) { this.patch++; this.prerelease = []; break; - // This probably shouldn't be used publically. + // This probably shouldn't be used publicly. // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. case 'pre': if (this.prerelease.length === 0) @@ -413,6 +432,15 @@ SemVer.prototype.inc = function(release) { if (i === -1) // didn't increment anything this.prerelease.push(0); } + if (identifier) { + // 1.2.0-beta.1 bumps to 1.2.0-beta.2, + // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 + if (this.prerelease[0] === identifier) { + if (isNaN(this.prerelease[1])) + this.prerelease = [identifier, 0]; + } else + this.prerelease = [identifier, 0]; + } break; default: @@ -423,9 +451,14 @@ SemVer.prototype.inc = function(release) { }; exports.inc = inc; -function inc(version, release, loose) { +function inc(version, release, loose, identifier) { + if (typeof(loose) === 'string') { + identifier = loose; + loose = undefined; + } + try { - return new SemVer(version, loose).inc(release).version; + return new SemVer(version, loose).inc(release, identifier).version; } catch (er) { return null; } @@ -518,8 +551,16 @@ exports.cmp = cmp; function cmp(a, op, b, loose) { var ret; switch (op) { - case '===': ret = a === b; break; - case '!==': ret = a !== b; break; + case '===': + if (typeof a === 'object') a = a.version; + if (typeof b === 'object') b = b.version; + ret = a === b; + break; + case '!==': + if (typeof a === 'object') a = a.version; + if (typeof b === 'object') b = b.version; + ret = a !== b; + break; case '': case '=': case '==': ret = eq(a, b, loose); break; case '!=': ret = neq(a, b, loose); break; case '>': ret = gt(a, b, loose); break; @@ -551,6 +592,8 @@ function Comparator(comp, loose) { this.value = ''; else this.value = this.operator + this.semver.version; + + debug('comp', this); } var ANY = {}; @@ -568,21 +611,8 @@ Comparator.prototype.parse = function(comp) { // if it literally is just '>' or '' then allow anything. if (!m[2]) this.semver = ANY; - else { + else this.semver = new SemVer(m[2], this.loose); - - // <1.2.3-rc DOES allow 1.2.3-beta (has prerelease) - // >=1.2.3 DOES NOT allow 1.2.3-beta - // <=1.2.3 DOES allow 1.2.3-beta - // However, <1.2.3 does NOT allow 1.2.3-beta, - // even though `1.2.3-beta < 1.2.3` - // The assumption is that the 1.2.3 version has something you - // *don't* want, so we push the prerelease down to the minimum. - if (this.operator === '<' && !this.semver.prerelease.length) { - this.semver.prerelease = ['0']; - this.semver.format(); - } - } }; Comparator.prototype.inspect = function() { @@ -595,8 +625,14 @@ Comparator.prototype.toString = function() { Comparator.prototype.test = function(version) { debug('Comparator.test', version, this.loose); - return (this.semver === ANY) ? true : - cmp(version, this.operator, this.semver, this.loose); + + if (this.semver === ANY) + return true; + + if (typeof version === 'string') + version = new SemVer(version, this.loose); + + return cmp(version, this.operator, this.semver, this.loose); }; @@ -733,20 +769,20 @@ function replaceTilde(comp, loose) { if (isX(M)) ret = ''; else if (isX(m)) - ret = '>=' + M + '.0.0-0 <' + (+M + 1) + '.0.0-0'; + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; else if (isX(p)) // ~1.2 == >=1.2.0- <1.3.0- - ret = '>=' + M + '.' + m + '.0-0 <' + M + '.' + (+m + 1) + '.0-0'; + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; else if (pr) { debug('replaceTilde pr', pr); if (pr.charAt(0) !== '-') pr = '-' + pr; ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + (+m + 1) + '.0-0'; + ' <' + M + '.' + (+m + 1) + '.0'; } else - // ~1.2.3 == >=1.2.3-0 <1.3.0-0 - ret = '>=' + M + '.' + m + '.' + p + '-0' + - ' <' + M + '.' + (+m + 1) + '.0-0'; + // ~1.2.3 == >=1.2.3 <1.3.0 + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0'; debug('tilde return', ret); return ret; @@ -766,33 +802,48 @@ function replaceCarets(comp, loose) { } function replaceCaret(comp, loose) { + debug('caret', comp, loose); var r = loose ? re[CARETLOOSE] : re[CARET]; return comp.replace(r, function(_, M, m, p, pr) { debug('caret', comp, _, M, m, p, pr); var ret; - if (pr) { - if (pr.charAt(0) !== '-') - pr = '-' + pr; - } else - pr = ''; if (isX(M)) ret = ''; else if (isX(m)) - ret = '>=' + M + '.0.0-0 <' + (+M + 1) + '.0.0-0'; + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; else if (isX(p)) { if (M === '0') - ret = '>=' + M + '.' + m + '.0-0 <' + M + '.' + (+m + 1) + '.0-0'; + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; else - ret = '>=' + M + '.' + m + '.0-0 <' + (+M + 1) + '.0.0-0'; - } else if (M === '0') - ret = '=' + M + '.' + m + '.' + p + pr; - else if (pr) - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + (+M + 1) + '.0.0-0'; - else - ret = '>=' + M + '.' + m + '.' + p + '-0' + - ' <' + (+M + 1) + '.0.0-0'; + ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'; + } else if (pr) { + debug('replaceCaret pr', pr); + if (pr.charAt(0) !== '-') + pr = '-' + pr; + if (M === '0') { + if (m === '0') + ret = '>=' + M + '.' + m + '.' + p + pr + + ' <' + M + '.' + m + '.' + (+p + 1); + else + ret = '>=' + M + '.' + m + '.' + p + pr + + ' <' + M + '.' + (+m + 1) + '.0'; + } else + ret = '>=' + M + '.' + m + '.' + p + pr + + ' <' + (+M + 1) + '.0.0'; + } else { + debug('no pr'); + if (M === '0') { + if (m === '0') + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + m + '.' + (+p + 1); + else + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0'; + } else + ret = '>=' + M + '.' + m + '.' + p + + ' <' + (+M + 1) + '.0.0'; + } debug('caret return', ret); return ret; @@ -819,23 +870,27 @@ function replaceXRange(comp, loose) { if (gtlt === '=' && anyX) gtlt = ''; - if (gtlt && anyX) { - // replace X with 0, and then append the -0 min-prerelease - if (xM) - M = 0; + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0'; + } else { + // nothing is forbidden + ret = '*'; + } + } else if (gtlt && anyX) { + // replace X with 0 if (xm) m = 0; if (xp) p = 0; if (gtlt === '>') { - // >1 => >=2.0.0-0 - // >1.2 => >=1.3.0-0 - // >1.2.3 => >= 1.2.4-0 + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + // >1.2.3 => >= 1.2.4 gtlt = '>='; - if (xM) { - // no change - } else if (xm) { + if (xm) { M = +M + 1; m = 0; p = 0; @@ -843,20 +898,21 @@ function replaceXRange(comp, loose) { m = +m + 1; p = 0; } + } else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<' + if (xm) + M = +M + 1 + else + m = +m + 1 } - - ret = gtlt + M + '.' + m + '.' + p + '-0'; - } else if (xM) { - // allow any - ret = '*'; + ret = gtlt + M + '.' + m + '.' + p; } else if (xm) { - // append '-0' onto the version, otherwise - // '1.x.x' matches '2.0.0-beta', since the tag - // *lowers* the version value - ret = '>=' + M + '.0.0-0 <' + (+M + 1) + '.0.0-0'; + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; } else if (xp) { - ret = '>=' + M + '.' + m + '.0-0 <' + M + '.' + (+m + 1) + '.0-0'; + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; } debug('xRange return', ret); @@ -875,9 +931,9 @@ function replaceStars(comp, loose) { // This function is passed to string.replace(re[HYPHENRANGE]) // M, m, patch, prerelease, build -// 1.2 - 3.4.5 => >=1.2.0-0 <=3.4.5 -// 1.2.3 - 3.4 => >=1.2.0-0 <3.5.0-0 Any 3.4.x will do -// 1.2 - 3.4 => >=1.2.0-0 <3.5.0-0 +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0 function hyphenReplace($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) { @@ -885,18 +941,18 @@ function hyphenReplace($0, if (isX(fM)) from = ''; else if (isX(fm)) - from = '>=' + fM + '.0.0-0'; + from = '>=' + fM + '.0.0'; else if (isX(fp)) - from = '>=' + fM + '.' + fm + '.0-0'; + from = '>=' + fM + '.' + fm + '.0'; else from = '>=' + from; if (isX(tM)) to = ''; else if (isX(tm)) - to = '<' + (+tM + 1) + '.0.0-0'; + to = '<' + (+tM + 1) + '.0.0'; else if (isX(tp)) - to = '<' + tM + '.' + (+tm + 1) + '.0-0'; + to = '<' + tM + '.' + (+tm + 1) + '.0'; else if (tpr) to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr; else @@ -910,6 +966,10 @@ function hyphenReplace($0, Range.prototype.test = function(version) { if (!version) return false; + + if (typeof version === 'string') + version = new SemVer(version, this.loose); + for (var i = 0; i < this.set.length; i++) { if (testSet(this.set[i], version)) return true; @@ -922,6 +982,31 @@ function testSet(set, version) { if (!set[i].test(version)) return false; } + + if (version.prerelease.length) { + // Find the set of versions that are allowed to have prereleases + // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 + // That should allow `1.2.3-pr.2` to pass. + // However, `1.2.4-alpha.notready` should NOT be allowed, + // even though it's within the range set by the comparators. + for (var i = 0; i < set.length; i++) { + debug(set[i].semver); + if (set[i].semver === ANY) + return true; + + if (set[i].semver.prerelease.length > 0) { + var allowed = set[i].semver; + if (allowed.major === version.major && + allowed.minor === version.minor && + allowed.patch === version.patch) + return true; + } + } + + // Version has a -pre, but it's not one of the ones we like. + return false; + } + return true; } diff --git a/node_modules/semver/semver.min.js b/node_modules/semver/semver.min.js index 04e4abbda..56c9249e1 100644 --- a/node_modules/semver/semver.min.js +++ b/node_modules/semver/semver.min.js @@ -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 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'};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:er?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''};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''};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(i){if(i.charAt(0)!=="-")i="-"+i}else i="";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(r==="0")s="="+r+"."+t+"."+n+i;else if(i)s=">="+r+"."+t+"."+n+i+" <"+(+r+1)+".0.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",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)?=?)";var b=n++;t[b]=t[s]+"|x|X|\\*";var j=n++;t[j]=t[i]+"|x|X|\\*";var $=n++;t[$]="[v=\\s]*("+t[j]+")"+"(?:\\.("+t[j]+")"+"(?:\\.("+t[j]+")"+"(?:"+t[p]+")?"+t[v]+"?"+")?)?";var k=n++;t[k]="[v=\\s]*("+t[b]+")"+"(?:\\.("+t[b]+")"+"(?:\\.("+t[b]+")"+"(?:"+t[c]+")?"+t[v]+"?"+")?)?";var E=n++;t[E]="^"+t[y]+"\\s*"+t[$]+"$";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[$]+"$";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[$]+"$";var N=n++;t[N]="^"+t[A]+t[k]+"$";var P=n++;t[P]="^"+t[y]+"\\s*("+w+")$|^$";var Z=n++;t[Z]="^"+t[y]+"\\s*("+g+")$|^$";var q=n++;t[q]="(\\s*)"+t[y]+"\\s*("+w+"|"+t[$]+")";r[q]=new RegExp(t[q],"g");var L="$1$2$3";var X=n++;t[X]="^\\s*("+t[$]+")"+"\\s+-\\s+"+"("+t[$]+")"+"\\s*$";var _=n++;t[_]="^\\s*("+t[k]+")"+"\\s+-\\s+"+"("+t[k]+")"+"\\s*$";var O=n++;t[O]="(<|>)?=?\\s*\\*";for(var B=0;B'};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,r){switch(e){case"premajor":this.prerelease.length=0;this.patch=0;this.minor=0;this.major++;this.inc("pre",r);break;case"preminor":this.prerelease.length=0;this.patch=0;this.minor++;this.inc("pre",r);break;case"prepatch":this.prerelease.length=0;this.inc("patch",r);this.inc("pre",r);break;case"prerelease":if(this.prerelease.length===0)this.inc("patch",r);this.inc("pre",r);break;case"major":if(this.minor!==0||this.patch!==0||this.prerelease.length===0)this.major++;this.minor=0;this.patch=0;this.prerelease=[];break;case"minor":if(this.patch!==0||this.prerelease.length===0)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 t=this.prerelease.length;while(--t>=0){if(typeof this.prerelease[t]==="number"){this.prerelease[t]++;t=-2}}if(t===-1)this.prerelease.push(0)}if(r){if(this.prerelease[0]===r){if(isNaN(this.prerelease[1]))this.prerelease=[r,0]}else this.prerelease=[r,0]}break;default:throw new Error("invalid increment argument: "+e)}this.format();return this};e.inc=J;function J(e,r,t,n){if(typeof t==="string"){n=t;t=undefined}try{return new H(e,t).inc(r,n).version}catch(i){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:er?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"===":if(typeof e==="object")e=e.version;if(typeof t==="object")t=t.version;i=e===t;break;case"!==":if(typeof e==="object")e=e.version;if(typeof t==="object")t=t.version;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=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===pr)this.value="";else this.value=this.operator+this.semver.version}var pr={};lr.prototype.parse=function(e){var t=this.loose?r[P]:r[Z];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=pr;else this.semver=new H(n[2],this.loose)};lr.prototype.inspect=function(){return''};lr.prototype.toString=function(){return this.value};lr.prototype.test=function(e){if(this.semver===pr)return true;if(typeof e==="string")e=new H(e,this.loose);return ur(e,this.operator,this.semver,this.loose)};e.Range=cr;function cr(e,r){if(e instanceof cr&&e.loose===r)return e;if(!(this instanceof cr))return new cr(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()}cr.prototype.inspect=function(){return''};cr.prototype.format=function(){this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim();return this.range};cr.prototype.toString=function(){return this.range};cr.prototype.parseRange=function(e){var t=this.loose;e=e.trim();var n=t?r[_]:r[X];e=e.replace(n,kr);e=e.replace(r[q],L);e=e.replace(r[S],V);e=e.replace(r[C],M);e=e.split(/\s+/).join(" ");var i=t?r[P]:r[Z];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 cr(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=$r(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 <"+(+r+1)+".0.0";else if(mr(n))s=">="+r+"."+t+".0 <"+r+"."+(+t+1)+".0";else if(i){if(i.charAt(0)!=="-")i="-"+i;s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+" <"+r+"."+(+t+1)+".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[N]: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 <"+(+r+1)+".0.0";else if(mr(n)){if(r==="0")s=">="+r+"."+t+".0 <"+r+"."+(+t+1)+".0";else s=">="+r+"."+t+".0 <"+(+r+1)+".0.0"}else if(i){if(i.charAt(0)!=="-")i="-"+i;if(r==="0"){if(t==="0")s=">="+r+"."+t+"."+n+i+" <"+r+"."+t+"."+(+n+1);else s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+i+" <"+(+r+1)+".0.0"}else{if(r==="0"){if(t==="0")s=">="+r+"."+t+"."+n+" <"+r+"."+t+"."+(+n+1);else s=">="+r+"."+t+"."+n+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+" <"+(+r+1)+".0.0"}return s})}function br(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[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(a){if(r===">"||r==="<"){e="<0.0.0"}else{e="*"}}else if(r&&u){if(o)n=0;if(f)i=0;if(r===">"){r=">=";if(o){t=+t+1;n=0;i=0}else if(f){n=+n+1;i=0}}else if(r==="<="){r="<";if(o)t=+t+1;else n=+n+1}e=r+t+"."+n+"."+i}else if(o){e=">="+t+".0.0 <"+(+t+1)+".0.0"}else if(f){e=">="+t+"."+n+".0 <"+t+"."+(+n+1)+".0"}return e})}function $r(e,t){return e.trim().replace(r[O],"")}function kr(e,r,t,n,i,s,a,o,f,u,l,p,c){if(mr(t))r="";else if(mr(n))r=">="+t+".0.0";else if(mr(i))r=">="+t+"."+n+".0";else r=">="+r;if(mr(f))o="";else if(mr(u))o="<"+(+f+1)+".0.0";else if(mr(l))o="<"+f+"."+(+u+1)+".0";else if(p)o="<="+f+"."+u+"."+l+"-"+p;else o="<="+o;return(r+" "+o).trim()}cr.prototype.test=function(e){if(!e)return false;if(typeof e==="string")e=new H(e,this.loose);for(var r=0;r0){var n=e[t].semver;if(n.major===r.major&&n.minor===r.minor&&n.patch===r.patch)return true}}return false}return true}e.satisfies=xr;function xr(e,r,t){try{r=new cr(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 cr(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 cr(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;udt0q4(Yo4@WR9$6dMWw*!vrHKZM5 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 yVkXE&u@J#MUMN literal 3318 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 AAOHXW diff --git a/node_modules/semver/test/clean.js b/node_modules/semver/test/clean.js index 1ab13e416..9e268de95 100644 --- a/node_modules/semver/test/clean.js +++ b/node_modules/semver/test/clean.js @@ -14,7 +14,11 @@ test('\nclean tests', function(t) { [' =v1.2.3 ', '1.2.3'], ['v1.2.3', '1.2.3'], [' v1.2.3 ', '1.2.3'], - ['\t1.2.3', '1.2.3'] + ['\t1.2.3', '1.2.3'], + ['>1.2.3', null], + ['~1.2.3', null], + ['<=1.2.3', null], + ['1.2.x', null] ].forEach(function(tuple) { var range = tuple[0]; var version = tuple[1]; diff --git a/node_modules/semver/test/gtr.js b/node_modules/semver/test/gtr.js index cb6199efc..bbb87896c 100644 --- a/node_modules/semver/test/gtr.js +++ b/node_modules/semver/test/gtr.js @@ -39,7 +39,7 @@ test('\ngtr tests', function(t) { ['~v0.5.4-pre', '0.6.1-pre'], ['=0.7.x', '0.8.0'], ['=0.7.x', '0.8.0-asdf'], - ['<=0.7.x', '0.7.0'], + ['<0.7.x', '0.7.0'], ['~1.2.2', '1.3.0'], ['1.0.0 - 2.0.0', '2.2.3'], ['1.0.0', '1.0.1'], @@ -66,7 +66,7 @@ test('\ngtr tests', function(t) { ['<1', '1.0.0beta', true], ['< 1', '1.0.0beta', true], ['=0.7.x', '0.8.2'], - ['<=0.7.x', '0.7.2'] + ['<0.7.x', '0.7.2'] ].forEach(function(tuple) { var range = tuple[0]; var version = tuple[1]; diff --git a/node_modules/semver/test/index.js b/node_modules/semver/test/index.js index abd9713d0..de8acaedf 100644 --- a/node_modules/semver/test/index.js +++ b/node_modules/semver/test/index.js @@ -132,6 +132,15 @@ test('\nrange tests', function(t) { // [range, version] // version should be included by range [['1.0.0 - 2.0.0', '1.2.3'], + ['^1.2.3+build', '1.2.3'], + ['^1.2.3+build', '1.3.0'], + ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '1.2.3'], + ['1.2.3pre+asdf - 2.4.3-pre+asdf', '1.2.3', true], + ['1.2.3-pre+asdf - 2.4.3pre+asdf', '1.2.3', true], + ['1.2.3pre+asdf - 2.4.3pre+asdf', '1.2.3', true], + ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '1.2.3-pre.2'], + ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '2.4.3-alpha'], + ['1.2.3+asdf - 2.4.3+asdf', '1.2.3'], ['1.0.0', '1.0.0'], ['>=*', '0.2.4'], ['', '1.0.0'], @@ -189,13 +198,11 @@ test('\nrange tests', function(t) { ['>= 1', '1.0.0'], ['<1.2', '1.1.1'], ['< 1.2', '1.1.1'], - ['1', '1.0.0beta', true], ['~v0.5.4-pre', '0.5.5'], ['~v0.5.4-pre', '0.5.4'], ['=0.7.x', '0.7.2'], + ['<=0.7.x', '0.7.2'], ['>=0.7.x', '0.7.2'], - ['=0.7.x', '0.7.0-asdf'], - ['>=0.7.x', '0.7.0-asdf'], ['<=0.7.x', '0.6.2'], ['~1.2.1 >=1.2.3', '1.2.3'], ['~1.2.1 =1.2.3', '1.2.3'], @@ -207,17 +214,15 @@ test('\nrange tests', function(t) { ['1.2.3 >=1.2.1', '1.2.3'], ['>=1.2.3 >=1.2.1', '1.2.3'], ['>=1.2.1 >=1.2.3', '1.2.3'], - ['<=1.2.3', '1.2.3-beta'], - ['>1.2', '1.3.0-beta'], ['>=1.2', '1.2.8'], ['^1.2.3', '1.8.1'], - ['^1.2.3', '1.2.3-beta'], ['^0.1.2', '0.1.2'], ['^0.1', '0.1.2'], ['^1.2', '1.4.2'], ['^1.2 ^1', '1.4.2'], - ['^1.2', '1.2.0-pre'], - ['^1.2.3', '1.2.3-pre'] + ['^1.2.3-alpha', '1.2.3-pre'], + ['^1.2.0-alpha', '1.2.0-pre'], + ['^0.0.1-alpha', '0.0.1-beta'] ].forEach(function(v) { var range = v[0]; var ver = v[1]; @@ -231,6 +236,20 @@ test('\nnegative range tests', function(t) { // [range, version] // version should not be included by range [['1.0.0 - 2.0.0', '2.2.3'], + ['1.2.3+asdf - 2.4.3+asdf', '1.2.3-pre.2'], + ['1.2.3+asdf - 2.4.3+asdf', '2.4.3-alpha'], + ['^1.2.3+build', '2.0.0'], + ['^1.2.3+build', '1.2.0'], + ['^1.2.3', '1.2.3-pre'], + ['^1.2', '1.2.0-pre'], + ['>1.2', '1.3.0-beta'], + ['<=1.2.3', '1.2.3-beta'], + ['^1.2.3', '1.2.3-beta'], + ['=0.7.x', '0.7.0-asdf'], + ['>=0.7.x', '0.7.0-asdf'], + ['1', '1.0.0beta', true], + ['<1', '1.0.0beta', true], + ['< 1', '1.0.0beta', true], ['1.0.0', '1.0.1'], ['>=1.0.0', '0.0.0'], ['>=1.0.0', '0.0.1'], @@ -270,11 +289,9 @@ test('\nnegative range tests', function(t) { ['>=1.2', '1.1.1'], ['1', '2.0.0beta', true], ['~v0.5.4-beta', '0.5.4-alpha'], - ['<1', '1.0.0beta', true], - ['< 1', '1.0.0beta', true], ['=0.7.x', '0.8.2'], ['>=0.7.x', '0.6.2'], - ['<=0.7.x', '0.7.2'], + ['<0.7.x', '0.7.2'], ['<1.2.3', '1.2.3-beta'], ['=1.2.3', '1.2.3-beta'], ['>1.2', '1.2.8'], @@ -296,8 +313,8 @@ test('\nnegative range tests', function(t) { }); test('\nincrement versions test', function(t) { - // [version, inc, result] - // inc(version, inc) -> result +// [version, inc, result, identifier] +// inc(version, inc) -> result [['1.2.3', 'major', '2.0.0'], ['1.2.3', 'minor', '1.3.0'], ['1.2.3', 'patch', '1.2.4'], @@ -332,18 +349,63 @@ test('\nincrement versions test', function(t) { ['1.2.0', 'prepatch', '1.2.1-0'], ['1.2.0-1', 'prepatch', '1.2.1-0'], ['1.2.0', 'preminor', '1.3.0-0'], - ['1.2.0-1', 'preminor', '1.3.0-0'], + ['1.2.3-1', 'preminor', '1.3.0-0'], ['1.2.0', 'premajor', '2.0.0-0'], - ['1.2.0-1', 'premajor', '2.0.0-0'] + ['1.2.3-1', 'premajor', '2.0.0-0'], + ['1.2.0-1', 'minor', '1.2.0'], + ['1.0.0-1', 'major', '1.0.0'], + ['1.2.3', 'major', '2.0.0', false, 'dev'], + ['1.2.3', 'minor', '1.3.0', false, 'dev'], + ['1.2.3', 'patch', '1.2.4', false, 'dev'], + ['1.2.3tag', 'major', '2.0.0', true, 'dev'], + ['1.2.3-tag', 'major', '2.0.0', false, 'dev'], + ['1.2.3', 'fake', null, false, 'dev'], + ['1.2.0-0', 'patch', '1.2.0', false, 'dev'], + ['fake', 'major', null, false, 'dev'], + ['1.2.3-4', 'major', '2.0.0', false, 'dev'], + ['1.2.3-4', 'minor', '1.3.0', false, 'dev'], + ['1.2.3-4', 'patch', '1.2.3', false, 'dev'], + ['1.2.3-alpha.0.beta', 'major', '2.0.0', false, 'dev'], + ['1.2.3-alpha.0.beta', 'minor', '1.3.0', false, 'dev'], + ['1.2.3-alpha.0.beta', 'patch', '1.2.3', false, 'dev'], + ['1.2.4', 'prerelease', '1.2.5-dev.0', false, 'dev'], + ['1.2.3-0', 'prerelease', '1.2.3-dev.0', false, 'dev'], + ['1.2.3-alpha.0', 'prerelease', '1.2.3-dev.0', false, 'dev'], + ['1.2.3-alpha.0', 'prerelease', '1.2.3-alpha.1', false, 'alpha'], + ['1.2.3-alpha.0.beta', 'prerelease', '1.2.3-dev.0', false, 'dev'], + ['1.2.3-alpha.0.beta', 'prerelease', '1.2.3-alpha.1.beta', false, 'alpha'], + ['1.2.3-alpha.10.0.beta', 'prerelease', '1.2.3-dev.0', false, 'dev'], + ['1.2.3-alpha.10.0.beta', 'prerelease', '1.2.3-alpha.10.1.beta', false, 'alpha'], + ['1.2.3-alpha.10.1.beta', 'prerelease', '1.2.3-alpha.10.2.beta', false, 'alpha'], + ['1.2.3-alpha.10.2.beta', 'prerelease', '1.2.3-alpha.10.3.beta', false, 'alpha'], + ['1.2.3-alpha.10.beta.0', 'prerelease', '1.2.3-dev.0', false, 'dev'], + ['1.2.3-alpha.10.beta.0', 'prerelease', '1.2.3-alpha.10.beta.1', false, 'alpha'], + ['1.2.3-alpha.10.beta.1', 'prerelease', '1.2.3-alpha.10.beta.2', false, 'alpha'], + ['1.2.3-alpha.10.beta.2', 'prerelease', '1.2.3-alpha.10.beta.3', false, 'alpha'], + ['1.2.3-alpha.9.beta', 'prerelease', '1.2.3-dev.0', false, 'dev'], + ['1.2.3-alpha.9.beta', 'prerelease', '1.2.3-alpha.10.beta', false, 'alpha'], + ['1.2.3-alpha.10.beta', 'prerelease', '1.2.3-alpha.11.beta', false, 'alpha'], + ['1.2.3-alpha.11.beta', 'prerelease', '1.2.3-alpha.12.beta', false, 'alpha'], + ['1.2.0', 'prepatch', '1.2.1-dev.0', 'dev'], + ['1.2.0-1', 'prepatch', '1.2.1-dev.0', 'dev'], + ['1.2.0', 'preminor', '1.3.0-dev.0', 'dev'], + ['1.2.3-1', 'preminor', '1.3.0-dev.0', 'dev'], + ['1.2.0', 'premajor', '2.0.0-dev.0', 'dev'], + ['1.2.3-1', 'premajor', '2.0.0-dev.0', 'dev'], + ['1.2.0-1', 'minor', '1.2.0', 'dev'], + ['1.0.0-1', 'major', '1.0.0', 'dev'], + ['1.2.3-dev.bar', 'prerelease', '1.2.3-dev.0', false, 'dev'] ].forEach(function(v) { var pre = v[0]; var what = v[1]; var wanted = v[2]; var loose = v[3]; - var found = inc(pre, what, loose); - t.equal(found, wanted, 'inc(' + pre + ', ' + what + ') === ' + wanted); + var id = v[4]; + var found = inc(pre, what, loose, id); + var cmd = 'inc(' + pre + ', ' + what + ', ' + id + ')'; + t.equal(found, wanted, cmd + ' === ' + wanted); }); t.end(); @@ -355,18 +417,18 @@ test('\nvalid range test', function(t) { // translate ranges into their canonical form [['1.0.0 - 2.0.0', '>=1.0.0 <=2.0.0'], ['1.0.0', '1.0.0'], - ['>=*', '>=0.0.0-0'], + ['>=*', '*'], ['', '*'], ['*', '*'], ['*', '*'], ['>=1.0.0', '>=1.0.0'], ['>1.0.0', '>1.0.0'], ['<=2.0.0', '<=2.0.0'], - ['1', '>=1.0.0-0 <2.0.0-0'], + ['1', '>=1.0.0 <2.0.0'], ['<=2.0.0', '<=2.0.0'], ['<=2.0.0', '<=2.0.0'], - ['<2.0.0', '<2.0.0-0'], - ['<2.0.0', '<2.0.0-0'], + ['<2.0.0', '<2.0.0'], + ['<2.0.0', '<2.0.0'], ['>= 1.0.0', '>=1.0.0'], ['>= 1.0.0', '>=1.0.0'], ['>= 1.0.0', '>=1.0.0'], @@ -375,56 +437,56 @@ test('\nvalid range test', function(t) { ['<= 2.0.0', '<=2.0.0'], ['<= 2.0.0', '<=2.0.0'], ['<= 2.0.0', '<=2.0.0'], - ['< 2.0.0', '<2.0.0-0'], - ['< 2.0.0', '<2.0.0-0'], + ['< 2.0.0', '<2.0.0'], + ['< 2.0.0', '<2.0.0'], ['>=0.1.97', '>=0.1.97'], ['>=0.1.97', '>=0.1.97'], ['0.1.20 || 1.2.4', '0.1.20||1.2.4'], - ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1-0'], - ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1-0'], - ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1-0'], + ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1'], + ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1'], + ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1'], ['||', '||'], - ['2.x.x', '>=2.0.0-0 <3.0.0-0'], - ['1.2.x', '>=1.2.0-0 <1.3.0-0'], - ['1.2.x || 2.x', '>=1.2.0-0 <1.3.0-0||>=2.0.0-0 <3.0.0-0'], - ['1.2.x || 2.x', '>=1.2.0-0 <1.3.0-0||>=2.0.0-0 <3.0.0-0'], + ['2.x.x', '>=2.0.0 <3.0.0'], + ['1.2.x', '>=1.2.0 <1.3.0'], + ['1.2.x || 2.x', '>=1.2.0 <1.3.0||>=2.0.0 <3.0.0'], + ['1.2.x || 2.x', '>=1.2.0 <1.3.0||>=2.0.0 <3.0.0'], ['x', '*'], - ['2.*.*', '>=2.0.0-0 <3.0.0-0'], - ['1.2.*', '>=1.2.0-0 <1.3.0-0'], - ['1.2.* || 2.*', '>=1.2.0-0 <1.3.0-0||>=2.0.0-0 <3.0.0-0'], + ['2.*.*', '>=2.0.0 <3.0.0'], + ['1.2.*', '>=1.2.0 <1.3.0'], + ['1.2.* || 2.*', '>=1.2.0 <1.3.0||>=2.0.0 <3.0.0'], ['*', '*'], - ['2', '>=2.0.0-0 <3.0.0-0'], - ['2.3', '>=2.3.0-0 <2.4.0-0'], - ['~2.4', '>=2.4.0-0 <2.5.0-0'], - ['~2.4', '>=2.4.0-0 <2.5.0-0'], - ['~>3.2.1', '>=3.2.1-0 <3.3.0-0'], - ['~1', '>=1.0.0-0 <2.0.0-0'], - ['~>1', '>=1.0.0-0 <2.0.0-0'], - ['~> 1', '>=1.0.0-0 <2.0.0-0'], - ['~1.0', '>=1.0.0-0 <1.1.0-0'], - ['~ 1.0', '>=1.0.0-0 <1.1.0-0'], - ['^0', '>=0.0.0-0 <1.0.0-0'], - ['^ 1', '>=1.0.0-0 <2.0.0-0'], - ['^0.1', '>=0.1.0-0 <0.2.0-0'], - ['^1.0', '>=1.0.0-0 <2.0.0-0'], - ['^1.2', '>=1.2.0-0 <2.0.0-0'], - ['^0.0.1', '0.0.1'], - ['^0.0.1-beta', '0.0.1-beta'], - ['^0.1.2', '0.1.2'], - ['^1.2.3', '>=1.2.3-0 <2.0.0-0'], - ['^1.2.3-beta.4', '>=1.2.3-beta.4 <2.0.0-0'], - ['<1', '<1.0.0-0'], - ['< 1', '<1.0.0-0'], - ['>=1', '>=1.0.0-0'], - ['>= 1', '>=1.0.0-0'], - ['<1.2', '<1.2.0-0'], - ['< 1.2', '<1.2.0-0'], - ['1', '>=1.0.0-0 <2.0.0-0'], + ['2', '>=2.0.0 <3.0.0'], + ['2.3', '>=2.3.0 <2.4.0'], + ['~2.4', '>=2.4.0 <2.5.0'], + ['~2.4', '>=2.4.0 <2.5.0'], + ['~>3.2.1', '>=3.2.1 <3.3.0'], + ['~1', '>=1.0.0 <2.0.0'], + ['~>1', '>=1.0.0 <2.0.0'], + ['~> 1', '>=1.0.0 <2.0.0'], + ['~1.0', '>=1.0.0 <1.1.0'], + ['~ 1.0', '>=1.0.0 <1.1.0'], + ['^0', '>=0.0.0 <1.0.0'], + ['^ 1', '>=1.0.0 <2.0.0'], + ['^0.1', '>=0.1.0 <0.2.0'], + ['^1.0', '>=1.0.0 <2.0.0'], + ['^1.2', '>=1.2.0 <2.0.0'], + ['^0.0.1', '>=0.0.1 <0.0.2'], + ['^0.0.1-beta', '>=0.0.1-beta <0.0.2'], + ['^0.1.2', '>=0.1.2 <0.2.0'], + ['^1.2.3', '>=1.2.3 <2.0.0'], + ['^1.2.3-beta.4', '>=1.2.3-beta.4 <2.0.0'], + ['<1', '<1.0.0'], + ['< 1', '<1.0.0'], + ['>=1', '>=1.0.0'], + ['>= 1', '>=1.0.0'], + ['<1.2', '<1.2.0'], + ['< 1.2', '<1.2.0'], + ['1', '>=1.0.0 <2.0.0'], ['>01.02.03', '>1.2.3', true], ['>01.02.03', null], - ['~1.2.3beta', '>=1.2.3-beta <1.3.0-0', true], + ['~1.2.3beta', '>=1.2.3-beta <1.3.0', true], ['~1.2.3beta', null], - ['^ 1.2 ^ 1', '>=1.2.0-0 <2.0.0-0 >=1.0.0-0 <2.0.0-0'] + ['^ 1.2 ^ 1', '>=1.2.0 <2.0.0 >=1.0.0 <2.0.0'] ].forEach(function(v) { var pre = v[0]; var wanted = v[1]; @@ -442,7 +504,7 @@ test('\ncomparators test', function(t) { // turn range into a set of individual comparators [['1.0.0 - 2.0.0', [['>=1.0.0', '<=2.0.0']]], ['1.0.0', [['1.0.0']]], - ['>=*', [['>=0.0.0-0']]], + ['>=*', [['']]], ['', [['']]], ['*', [['']]], ['*', [['']]], @@ -452,11 +514,11 @@ test('\ncomparators test', function(t) { ['>1.0.0', [['>1.0.0']]], ['>1.0.0', [['>1.0.0']]], ['<=2.0.0', [['<=2.0.0']]], - ['1', [['>=1.0.0-0', '<2.0.0-0']]], + ['1', [['>=1.0.0', '<2.0.0']]], ['<=2.0.0', [['<=2.0.0']]], ['<=2.0.0', [['<=2.0.0']]], - ['<2.0.0', [['<2.0.0-0']]], - ['<2.0.0', [['<2.0.0-0']]], + ['<2.0.0', [['<2.0.0']]], + ['<2.0.0', [['<2.0.0']]], ['>= 1.0.0', [['>=1.0.0']]], ['>= 1.0.0', [['>=1.0.0']]], ['>= 1.0.0', [['>=1.0.0']]], @@ -465,47 +527,50 @@ test('\ncomparators test', function(t) { ['<= 2.0.0', [['<=2.0.0']]], ['<= 2.0.0', [['<=2.0.0']]], ['<= 2.0.0', [['<=2.0.0']]], - ['< 2.0.0', [['<2.0.0-0']]], - ['<\t2.0.0', [['<2.0.0-0']]], + ['< 2.0.0', [['<2.0.0']]], + ['<\t2.0.0', [['<2.0.0']]], ['>=0.1.97', [['>=0.1.97']]], ['>=0.1.97', [['>=0.1.97']]], ['0.1.20 || 1.2.4', [['0.1.20'], ['1.2.4']]], - ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1-0']]], - ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1-0']]], - ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1-0']]], + ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1']]], + ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1']]], + ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1']]], ['||', [[''], ['']]], - ['2.x.x', [['>=2.0.0-0', '<3.0.0-0']]], - ['1.2.x', [['>=1.2.0-0', '<1.3.0-0']]], - ['1.2.x || 2.x', [['>=1.2.0-0', '<1.3.0-0'], ['>=2.0.0-0', '<3.0.0-0']]], - ['1.2.x || 2.x', [['>=1.2.0-0', '<1.3.0-0'], ['>=2.0.0-0', '<3.0.0-0']]], + ['2.x.x', [['>=2.0.0', '<3.0.0']]], + ['1.2.x', [['>=1.2.0', '<1.3.0']]], + ['1.2.x || 2.x', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]], + ['1.2.x || 2.x', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]], ['x', [['']]], - ['2.*.*', [['>=2.0.0-0', '<3.0.0-0']]], - ['1.2.*', [['>=1.2.0-0', '<1.3.0-0']]], - ['1.2.* || 2.*', [['>=1.2.0-0', '<1.3.0-0'], ['>=2.0.0-0', '<3.0.0-0']]], - ['1.2.* || 2.*', [['>=1.2.0-0', '<1.3.0-0'], ['>=2.0.0-0', '<3.0.0-0']]], + ['2.*.*', [['>=2.0.0', '<3.0.0']]], + ['1.2.*', [['>=1.2.0', '<1.3.0']]], + ['1.2.* || 2.*', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]], + ['1.2.* || 2.*', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]], ['*', [['']]], - ['2', [['>=2.0.0-0', '<3.0.0-0']]], - ['2.3', [['>=2.3.0-0', '<2.4.0-0']]], - ['~2.4', [['>=2.4.0-0', '<2.5.0-0']]], - ['~2.4', [['>=2.4.0-0', '<2.5.0-0']]], - ['~>3.2.1', [['>=3.2.1-0', '<3.3.0-0']]], - ['~1', [['>=1.0.0-0', '<2.0.0-0']]], - ['~>1', [['>=1.0.0-0', '<2.0.0-0']]], - ['~> 1', [['>=1.0.0-0', '<2.0.0-0']]], - ['~1.0', [['>=1.0.0-0', '<1.1.0-0']]], - ['~ 1.0', [['>=1.0.0-0', '<1.1.0-0']]], - ['~ 1.0.3', [['>=1.0.3-0', '<1.1.0-0']]], - ['~> 1.0.3', [['>=1.0.3-0', '<1.1.0-0']]], - ['<1', [['<1.0.0-0']]], - ['< 1', [['<1.0.0-0']]], - ['>=1', [['>=1.0.0-0']]], - ['>= 1', [['>=1.0.0-0']]], - ['<1.2', [['<1.2.0-0']]], - ['< 1.2', [['<1.2.0-0']]], - ['1', [['>=1.0.0-0', '<2.0.0-0']]], - ['1 2', [['>=1.0.0-0', '<2.0.0-0', '>=2.0.0-0', '<3.0.0-0']]], - ['1.2 - 3.4.5', [['>=1.2.0-0', '<=3.4.5']]], - ['1.2.3 - 3.4', [['>=1.2.3', '<3.5.0-0']]] + ['2', [['>=2.0.0', '<3.0.0']]], + ['2.3', [['>=2.3.0', '<2.4.0']]], + ['~2.4', [['>=2.4.0', '<2.5.0']]], + ['~2.4', [['>=2.4.0', '<2.5.0']]], + ['~>3.2.1', [['>=3.2.1', '<3.3.0']]], + ['~1', [['>=1.0.0', '<2.0.0']]], + ['~>1', [['>=1.0.0', '<2.0.0']]], + ['~> 1', [['>=1.0.0', '<2.0.0']]], + ['~1.0', [['>=1.0.0', '<1.1.0']]], + ['~ 1.0', [['>=1.0.0', '<1.1.0']]], + ['~ 1.0.3', [['>=1.0.3', '<1.1.0']]], + ['~> 1.0.3', [['>=1.0.3', '<1.1.0']]], + ['<1', [['<1.0.0']]], + ['< 1', [['<1.0.0']]], + ['>=1', [['>=1.0.0']]], + ['>= 1', [['>=1.0.0']]], + ['<1.2', [['<1.2.0']]], + ['< 1.2', [['<1.2.0']]], + ['1', [['>=1.0.0', '<2.0.0']]], + ['1 2', [['>=1.0.0', '<2.0.0', '>=2.0.0', '<3.0.0']]], + ['1.2 - 3.4.5', [['>=1.2.0', '<=3.4.5']]], + ['1.2.3 - 3.4', [['>=1.2.3', '<3.5.0']]], + ['1.2.3 - 3', [['>=1.2.3', '<4.0.0']]], + ['>*', [['<0.0.0']]], + ['<*', [['<0.0.0']]] ].forEach(function(v) { var pre = v[0]; var wanted = v[1]; @@ -559,7 +624,7 @@ test('\nstrict vs loose version numbers', function(t) { test('\nstrict vs loose ranges', function(t) { [['>=01.02.03', '>=1.2.3'], - ['~1.02.03beta', '>=1.2.3-beta <1.3.0-0'] + ['~1.02.03beta', '>=1.2.3-beta <1.3.0'] ].forEach(function(v) { var loose = v[0]; var comps = v[1]; diff --git a/node_modules/semver/test/ltr.js b/node_modules/semver/test/ltr.js index d1461371b..ecd1387dd 100644 --- a/node_modules/semver/test/ltr.js +++ b/node_modules/semver/test/ltr.js @@ -66,6 +66,10 @@ test('\nltr tests', function(t) { ['>1', '1.0.0beta', true], ['> 1', '1.0.0beta', true], ['=0.7.x', '0.6.2'], + ['=0.7.x', '0.7.0-asdf'], + ['^1', '1.0.0-0'], + ['>=0.7.x', '0.7.0-asdf'], + ['1', '1.0.0beta', true], ['>=0.7.x', '0.6.2'] ].forEach(function(tuple) { var range = tuple[0]; @@ -145,24 +149,26 @@ test('\nnegative ltr tests', function(t) { ['>= 1', '1.0.0'], ['<1.2', '1.1.1'], ['< 1.2', '1.1.1'], - ['1', '1.0.0beta', true], ['~v0.5.4-pre', '0.5.5'], ['~v0.5.4-pre', '0.5.4'], ['=0.7.x', '0.7.2'], ['>=0.7.x', '0.7.2'], - ['=0.7.x', '0.7.0-asdf'], - ['>=0.7.x', '0.7.0-asdf'], ['<=0.7.x', '0.6.2'], ['>0.2.3 >0.2.4 <=0.2.5', '0.2.5'], ['>=0.2.3 <=0.2.4', '0.2.4'], ['1.0.0 - 2.0.0', '2.0.0'], - ['^1', '1.0.0-0'], ['^3.0.0', '4.0.0'], ['^1.0.0 || ~2.0.1', '2.0.0'], ['^0.1.0 || ~3.0.1 || 5.0.0', '3.2.0'], ['^0.1.0 || ~3.0.1 || 5.0.0', '1.0.0beta', true], ['^0.1.0 || ~3.0.1 || 5.0.0', '5.0.0-0', true], ['^0.1.0 || ~3.0.1 || >4 <=5.0.0', '3.5.0'], + ['^1.0.0alpha', '1.0.0beta', true], + ['~1.0.0alpha', '1.0.0beta', true], + ['^1.0.0-alpha', '1.0.0beta', true], + ['~1.0.0-alpha', '1.0.0beta', true], + ['^1.0.0-alpha', '1.0.0-beta'], + ['~1.0.0-alpha', '1.0.0-beta'], ['=0.1.0', '1.0.0'] ].forEach(function(tuple) { var range = tuple[0]; diff --git a/node_modules/semver/test/no-module.js b/node_modules/semver/test/no-module.js index 96d1cd1fc..8b50873f1 100644 --- a/node_modules/semver/test/no-module.js +++ b/node_modules/semver/test/no-module.js @@ -4,9 +4,9 @@ var test = tap.test; test('no module system', function(t) { var fs = require('fs'); var vm = require('vm'); - var head = fs.readFileSync(require.resolve('../head.js'), 'utf8'); + var head = fs.readFileSync(require.resolve('../head.js.txt'), 'utf8'); var src = fs.readFileSync(require.resolve('../'), 'utf8'); - var foot = fs.readFileSync(require.resolve('../foot.js'), 'utf8'); + var foot = fs.readFileSync(require.resolve('../foot.js.txt'), 'utf8'); vm.runInThisContext(head + src + foot, 'semver.js'); // just some basic poking to see if it did some stuff diff --git a/package.yaml b/package.yaml index 6dab0b125..4ee941a5e 100644 --- a/package.yaml +++ b/package.yaml @@ -31,10 +31,7 @@ dependencies: request: '>=2.31.0 <3.0.0-0' async: '>=0.9.0 <1.0.0-0' es6-shim: '0.21.x' - - # 2.x and 3.x have the same interface - semver: '>=2.2.1 <4.0.0-0' - + semver: '>=2.2.1 <5.0.0-0' minimatch: '>=0.2.14 <2.0.0-0' bunyan: '>=0.22.1 <2.0.0-0' handlebars: '1.x'