diff --git a/deps/npm/.licensee.json b/deps/npm/.licensee.json
index 820425a9ce80ac..ad7c812367371d 100644
--- a/deps/npm/.licensee.json
+++ b/deps/npm/.licensee.json
@@ -1,5 +1,6 @@
 {
   "license": "(MIT OR BSD-2-Clause OR BSD-3-Clause OR Apache-2.0 OR ISC OR Unlicense OR CC-BY-3.0 OR CC0-1.0 OR Artistic-2.0)",
+  "corrections": true,
   "whitelist": {
     "config-chain": "1.1.12",
     "cyclist": "0.2.2",
diff --git a/deps/npm/.npmignore b/deps/npm/.npmignore
index 1b32b033e23a72..12efef27852da6 100644
--- a/deps/npm/.npmignore
+++ b/deps/npm/.npmignore
@@ -4,7 +4,7 @@ npm-debug.log
 /.github
 /test
 node_modules/marked
-node_modules/ronn
+node_modules/marked-man
 node_modules/tap
 node_modules/.bin
 node_modules/npm-registry-mock
diff --git a/deps/npm/AUTHORS b/deps/npm/AUTHORS
index a011b51d6a036e..b9aee778afdc09 100644
--- a/deps/npm/AUTHORS
+++ b/deps/npm/AUTHORS
@@ -619,3 +619,14 @@ Beni von Cheni <benjaminlchen@gmail.com>
 Frédéric Harper <fharper@npmjs.com>
 Johannes Würbach <johannes.wuerbach@googlemail.com>
 ƇʘƁ̆ąƇ́ <anchnk@users.noreply.github.com>
+Eli Doran <eli@elidoran.com>
+Tobias Koppers <tobias.koppers@googlemail.com>
+Grey Baker <greysteil@gmail.com>
+JT Turner <jtwebman@gmail.com>
+Audrey Eschright <audrey@lifeofaudrey.com>
+Alexander Gudulin <alexandr.gudulin@gmail.com>
+Philipp Hagemeister <phihag@phihag.de>
+Amadou Sall <ahasall.dev@gmail.com>
+Chris Manson <mansona@users.noreply.github.com>
+vlasy <vlasy@users.noreply.github.com>
+Emilis Dambauskas (Tokenmill) <emilis.dambauskas@tokenmill.lt>
diff --git a/deps/npm/CHANGELOG.md b/deps/npm/CHANGELOG.md
index 794ae1060441e1..51141fc6545e2f 100644
--- a/deps/npm/CHANGELOG.md
+++ b/deps/npm/CHANGELOG.md
@@ -1,3 +1,174 @@
+## v6.9.0 (2018-02-20):
+
+### FEATURES
+
+* [`2ba3a0f67`](https://github.com/npm/cli/commit/2ba3a0f6721f6d5a16775aebce6012965634fc7c)
+  [#90](https://github.com/npm/cli/pull/90)
+  Time traveling installs using the `--before` flag.
+  ([@zkat](https://github.com/zkat))
+* [`b7b54f2d1`](https://github.com/npm/cli/commit/b7b54f2d18e2d8d65ec67c850b21ae9f01c60e7e)
+  [#3](https://github.com/npm/cli/pull/3)
+  Add support for package aliases. This allows packages to be installed under a
+  different directory than the package name listed in `package.json`, and adds a
+  new dependency type to allow this to be done for registry dependencies.
+  ([@zkat](https://github.com/zkat))
+* [`684bccf06`](https://github.com/npm/cli/commit/684bccf061dfc97bb759121bc0ad635e01c65868)
+  [#146](https://github.com/npm/cli/pull/146)
+  Always save `package-lock.json` when using `--package-lock-only`.
+  ([@aeschright](https://github.com/aeschright))
+* [`b8b8afd40`](https://github.com/npm/cli/commit/b8b8afd4048b4ba1181e00ba2ac49ced43936ce0)
+  [#139](https://github.com/npm/cli/pull/139)
+  Make empty-string run-scripts run successfully as a no-op.
+  ([@vlasy](https://github.com/vlasy))
+* [`8047b19b1`](https://github.com/npm/cli/commit/8047b19b1b994fd4b4e7b5c91d7cc4e0384bd5e4)
+  [npm.community#3784](https://npm.community/t/3784)
+  Match git semver ranges when flattening the tree.
+  ([@larsgw](https://github.com/larsgw))
+* [`e135c2bb3`](https://github.com/npm/cli/commit/e135c2bb360dcf00ecee34a95985afec21ba3655)
+  [npm.community#1725](https://npm.community/t/1725?u=larsgw)
+  Re-enable updating local packages.
+  ([@larsgw](https://github.com/larsgw))
+
+### BUGFIXES
+
+* [`cf09fbaed`](https://github.com/npm/cli/commit/cf09fbaed489d908e9b551382cc5f61bdabe99a9)
+  [#153](https://github.com/npm/cli/pull/153)
+  Set modified to undefined in `npm view` when `time` is not available. This
+  fixes a bug where `npm view` would crash on certain third-party registries.
+  ([@simonua](https://github.com/simonua))
+* [`774fc26ee`](https://github.com/npm/cli/commit/774fc26eeb01345c11bd8c97e2c4f328d419d9b5)
+  [#154](https://github.com/npm/cli/pull/154)
+  Print out tar version in `install.sh` only when the flag is supported not all
+  the tar implementations support --version flag. This allows the install script
+  to work in OpenBSD, for example.
+  ([@agudulin](https://github.com/agudulin))
+* [`863baff11`](https://github.com/npm/cli/commit/863baff11d8c870f1a0d9619bb5133c67d71e407)
+  [#158](https://github.com/npm/cli/pull/158)
+  Fix typo in error message for `npm stars`.
+  ([@phihag](https://github.com/phihag))
+* [`a805a95ad`](https://github.com/npm/cli/commit/a805a95ad8832ef5008671f4bd4c11b83e32e0f2)
+  [npm.community#4227](https://npm.community/t/4227)
+  Strip version info from pkg on E404. This improves the error messaging format.
+  ([@larsgw](https://github.com/larsgw))
+
+### DOCS
+
+* [`5d7633833`](https://github.com/npm/cli/commit/5d76338338621fd0b3d4f7914a51726d27569ee1)
+  [#160](https://github.com/npm/cli/pull/160)
+  Add `npm add` as alias to npm install in docs.
+  ([@ahasall](https://github.com/ahasall))
+* [`489c2211c`](https://github.com/npm/cli/commit/489c2211c96a01d65df50fd57346c785bcc3efe6)
+  [#162](https://github.com/npm/cli/pull/162)
+  Fix link to RFC #10 in the changelog.
+  ([@mansona](https://github.com/mansona))
+* [`433020ead`](https://github.com/npm/cli/commit/433020ead5251b562bc3b0f5f55341a5b8cc9023)
+  [#135](https://github.com/npm/cli/pull/135)
+  Describe exit codes in npm-audit docs.
+  ([@emilis-tm](https://github.com/emilis-tm))
+
+### DEPENDENCIES
+
+* [`ee6b6746b`](https://github.com/npm/cli/commit/ee6b6746b04f145dfe489af2d26667ac32ba0cef)
+  [zkat/make-fetch-happen#29](https://github.com/zkat/make-fetch-happen/issues/29)
+  `agent-base@4.2.1`
+  ([@TooTallNate](https://github.com/TooTallNate))
+* [`2ce23baf5`](https://github.com/npm/cli/commit/2ce23baf53b1ce7d11b8efb80c598ddaf9cef9e7)
+  `lock-verify@2.1.0`:
+  Adds support for package aliases
+  ([@zkat](https://github.com/zkat))
+* [`baaedbc6e`](https://github.com/npm/cli/commit/baaedbc6e2fc370d73b35e7721794719115507cc)
+  `pacote@9.5.0`:
+  Adds opts.before support
+  ([@zkat](https://github.com/zkat))
+* [`57e771a03`](https://github.com/npm/cli/commit/57e771a032165d1e31e71d0ff7530442139c21a6)
+  [#164](https://github.com/npm/cli/pull/164)
+  `licensee@6.1.0`
+  ([@kemitchell](https://github.com/kemitchell))
+* [`2b78288d4`](https://github.com/npm/cli/commit/2b78288d4accd10c1b7cc6c36bc28045f5634d91)
+  add core to default inclusion tests in pack
+  ([@Kat Marchán](https://github.com/Kat Marchán))
+* [`9b8b6513f`](https://github.com/npm/cli/commit/9b8b6513fbce92764b32a067322984985ff683fe)
+  [npm.community#5382](https://npm.community/t/npm-pack-leaving-out-files-6-8-0-only/5382)
+  `npm-packlist@1.4.1`: Fixes bug where `core/` directories were being suddenly excluded.
+  ([@zkat](https://github.com/zkat))
+
+## v6.8.0 (2019-02-07):
+
+This release includes an implementation of [RFC #10](https://github.com/npm/rfcs/blob/latest/implemented/0010-monorepo-subdirectory-declaration.md), documenting an optional field that can be used to specify
+the directory path for a package within a monorepo.
+
+### NEW FEATURES
+
+* [`3663cdef2`](https://github.com/npm/cli/commit/3663cdef205fa9ba2c2830e5ef7ceeb31c30298c)
+  [#140](https://github.com/npm/cli/pull/140)
+  Update package.json docs to include repository.directory details.
+  ([@greysteil](https://github.com/greysteil))
+
+### BUGFIXES
+
+* [`550bf703a`](https://github.com/npm/cli/commit/550bf703ae3e31ba6a300658ae95b6937f67b68f)
+  Add @types to ignore list to fix git clean -fd.
+  ([@zkat](https://github.com/zkat))
+* [`cdb059293`](https://github.com/npm/cli/commit/cdb0592939d6256c80f7ec5a2b6251131a512a2a)
+  [#144](https://github.com/npm/cli/pull/144)
+  Fix common.npm callback arguments.
+  ([@larsgw](https://github.com/larsgw))
+* [`25573e9b9`](https://github.com/npm/cli/commit/25573e9b9d5d26261c68d453f06db5b3b1cd6789)
+  [npm.community#4770](https://npm.community/t/https://npm.community/t/4770)
+  Show installed but unmet peer deps.
+  ([@larsgw](https://github.com/larsgw))
+* [`ce2c4bd1a`](https://github.com/npm/cli/commit/ce2c4bd1a2ce7ac1727a4ca9a350b743a2e27b2a)
+  [#149](https://github.com/npm/cli/pull/149)
+  Use figgy-config to make sure extra opts are there.
+  ([@zkat](https://github.com/zkat))
+* [`3c22d1a35`](https://github.com/npm/cli/commit/3c22d1a35878f73c0af8ea5968b962a85a1a9b84)
+  [npm.community#5101](https://npm.community/t/npm-6-6-0-breaks-access-to-ls-collaborators/5101)
+  Fix `ls-collaborators` access error for non-scoped case.
+  ([@zkat](https://github.com/zkat))
+* [`d5137091d`](https://github.com/npm/cli/commit/d5137091dd695a2980f7ade85fdc56b2421ff677)
+  [npm.community#754](https://npm.community/t/npm-install-for-package-with-local-dependency-fails/754)
+  Fix issue with sub-folder local references.
+  ([@iarna](https://github.com/iarna))
+  ([@jhecking](https://github.com/jhecking))
+
+### DEPENDENCY BUMPS
+
+* [`d72141080`](https://github.com/npm/cli/commit/d72141080ec8fcf35bcc5650245efbe649de053e)
+  `npm-registry-couchapp@2.7.1`
+  ([@zkat](https://github.com/zkat))
+* [`671cad1b1`](https://github.com/npm/cli/commit/671cad1b18239d540da246d6f78de45d9f784396)
+  `npm-registry-fetch@3.9.0`:
+  Make sure publishing with legacy username:password `_auth` works again.
+  ([@zkat](https://github.com/zkat))
+* [`95ca1aef4`](https://github.com/npm/cli/commit/95ca1aef4077c8e68d9f4dce37f6ba49b591c4ca)
+  `pacote@9.4.1`
+  ([@aeschright](https://github.com/aeschright))
+* [`322fef403`](https://github.com/npm/cli/commit/322fef40376e71cd100159dc914e7ca89faae327)
+  `normalize-package-data@2.5.0`
+  ([@aeschright](https://github.com/aeschright))
+* [`32d34c0da`](https://github.com/npm/cli/commit/32d34c0da4f393a74697297667eb9226155ecc6b)
+  `npm-packlist@1.3.0`
+  ([@aeschright](https://github.com/aeschright))
+* [`338571cf0`](https://github.com/npm/cli/commit/338571cf0bd3a1e2ea800464d57581932ff0fb11)
+  `read-package-tree@5.2.2`
+  ([@zkat](https://github.com/zkat))
+
+### MISC
+
+* [`89b23a5f7`](https://github.com/npm/cli/commit/89b23a5f7b0ccdcdda1d7d4d3eafb6903156d186)
+  [#120](https://github.com/npm/cli/pull/120)
+  Use `const` in lib/fetch-package-metadata.md.
+  ([@watilde](https://github.com/watilde))
+* [`4970d553c`](https://github.com/npm/cli/commit/4970d553c0ea66128931d118469fd31c87cc7986)
+  [#126](https://github.com/npm/cli/pull/126)
+  Replace ronn with marked-man in `.npmignore`.
+  ([@watilde](https://github.com/watilde))
+* [`d9b6090dc`](https://github.com/npm/cli/commit/d9b6090dc26cd0fded18b4f80248cff3e51bb185)
+  [#138](https://github.com/npm/cli/pull/138)
+  Reduce work to test if executable ends with a 'g'.
+  ([@elidoran](https://github.com/elidoran))
+  ([@larsgw](https://github.com/larsgw))
+
 ## v6.7.0 (2019-01-23):
 
 Hey y'all! This is a quick hotfix release that includes some important fixes to
diff --git a/deps/npm/bin/npm-cli.js b/deps/npm/bin/npm-cli.js
index 6f76b23828531e..705aa472e7e550 100755
--- a/deps/npm/bin/npm-cli.js
+++ b/deps/npm/bin/npm-cli.js
@@ -25,7 +25,6 @@
 
   unsupported.checkForUnsupportedNode()
 
-  var path = require('path')
   var npm = require('../lib/npm.js')
   var npmconf = require('../lib/config/core.js')
   var errorHandler = require('../lib/utils/error-handler.js')
@@ -37,7 +36,7 @@
 
   // if npm is called as "npmg" or "npm_g", then
   // run in global mode.
-  if (path.basename(process.argv[1]).slice(-1) === 'g') {
+  if (process.argv[1][process.argv[1].length - 1] === 'g') {
     process.argv.splice(1, 1, 'npm', '-g')
   }
 
diff --git a/deps/npm/doc/cli/npm-audit.md b/deps/npm/doc/cli/npm-audit.md
index 4c6d717418ab36..f63bbd356d5a03 100644
--- a/deps/npm/doc/cli/npm-audit.md
+++ b/deps/npm/doc/cli/npm-audit.md
@@ -65,7 +65,8 @@ $ npm audit --parseable | awk -F $'\t' '{print $1,$4}'
 The audit command submits a description of the dependencies configured in
 your project to your default registry and asks for a report of known
 vulnerabilities. The report returned includes instructions on how to act on
-this information.
+this information. The command will exit with a 0 exit code if no
+vulnerabilities were found.
 
 You can also have npm automatically fix the vulnerabilities by running `npm
 audit fix`. Note that some vulnerabilities cannot be fixed automatically and
@@ -99,6 +100,13 @@ The non-reversible identifiers are a sha256 of a session-specific UUID and the
 value being replaced, ensuring a consistent value within the payload that is
 different between runs.
 
+## EXIT CODE
+
+The `npm audit` command will exit with a 0 exit code if no vulnerabilities were found.
+
+If vulnerabilities were found the exit code will depend on the `audit-level`
+configuration setting.
+
 ## SEE ALSO
 
 * npm-install(1)
diff --git a/deps/npm/doc/cli/npm-install.md b/deps/npm/doc/cli/npm-install.md
index 336311dbfb2bb7..4ff4a47cbcf4ee 100644
--- a/deps/npm/doc/cli/npm-install.md
+++ b/deps/npm/doc/cli/npm-install.md
@@ -14,7 +14,7 @@ npm-install(1) -- Install a package
     npm install <tarball url>
     npm install <folder>
 
-    alias: npm i
+    aliases: npm i, npm add
     common options: [-P|--save-prod|-D|--save-dev|-O|--save-optional] [-E|--save-exact] [-B|--save-bundle] [--no-save] [--dry-run]
 
 ## DESCRIPTION
diff --git a/deps/npm/doc/files/package.json.md b/deps/npm/doc/files/package.json.md
index dd6492af084303..95e77d34c5f9f4 100644
--- a/deps/npm/doc/files/package.json.md
+++ b/deps/npm/doc/files/package.json.md
@@ -393,6 +393,15 @@ shortcut syntax you use for `npm install`:
 
     "repository": "gitlab:user/repo"
 
+If the `package.json` for your package is not in the root directory (for example
+if it is part of a monorepo), you can specify the directory in which it lives:
+
+    "repository": {
+      "type" : "git",
+      "url" : "https://github.com/facebook/react.git",
+      "directory": "packages/react-dom"
+    }
+
 ## scripts
 
 The "scripts" property is a dictionary containing script commands that are run
diff --git a/deps/npm/doc/misc/npm-config.md b/deps/npm/doc/misc/npm-config.md
index 8f04a76010c1af..88d30b62ca252e 100644
--- a/deps/npm/doc/misc/npm-config.md
+++ b/deps/npm/doc/misc/npm-config.md
@@ -179,6 +179,22 @@ a non-zero exit code.
 
 What authentication strategy to use with `adduser`/`login`.
 
+### before
+
+* Alias: enjoy-by
+* Default: null
+* Type: Date
+
+If passed to `npm install`, will rebuild the npm tree such that only versions
+that were available **on or before** the `--before` time get installed.
+If there's no versions available for the current set of direct dependencies, the
+command will error.
+
+If the requested version is a `dist-tag` and the given tag does not pass the
+`--before` filter, the most recent version less than or equal to that tag will
+be used. For example, `foo@latest` might install `foo@1.2` even though `latest`
+is `2.0`.
+
 ### bin-links
 
 * Default: `true`
diff --git a/deps/npm/html/doc/README.html b/deps/npm/html/doc/README.html
index a69fa3d7e455ee..c575f39bab31b7 100644
--- a/deps/npm/html/doc/README.html
+++ b/deps/npm/html/doc/README.html
@@ -118,5 +118,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer"><a href="../doc/README.html">README</a> &mdash; npm@6.7.0</p>
+<p id="footer"><a href="../doc/README.html">README</a> &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-access.html b/deps/npm/html/doc/cli/npm-access.html
index 0904466dd0aa42..c0e7943d6b385b 100644
--- a/deps/npm/html/doc/cli/npm-access.html
+++ b/deps/npm/html/doc/cli/npm-access.html
@@ -93,5 +93,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-access &mdash; npm@6.7.0</p>
+<p id="footer">npm-access &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-adduser.html b/deps/npm/html/doc/cli/npm-adduser.html
index abea1da85b3432..a946f67f66c7a2 100644
--- a/deps/npm/html/doc/cli/npm-adduser.html
+++ b/deps/npm/html/doc/cli/npm-adduser.html
@@ -78,5 +78,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-adduser &mdash; npm@6.7.0</p>
+<p id="footer">npm-adduser &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-audit.html b/deps/npm/html/doc/cli/npm-audit.html
index 311c2a68999a12..7d6704ab9c8d5a 100644
--- a/deps/npm/html/doc/cli/npm-audit.html
+++ b/deps/npm/html/doc/cli/npm-audit.html
@@ -33,7 +33,8 @@ <h2 id="synopsis">SYNOPSIS</h2>
 <p>The audit command submits a description of the dependencies configured in
 your project to your default registry and asks for a report of known
 vulnerabilities. The report returned includes instructions on how to act on
-this information.</p>
+this information. The command will exit with a 0 exit code if no
+vulnerabilities were found.</p>
 <p>You can also have npm automatically fix the vulnerabilities by running <code>npm
 audit fix</code>. Note that some vulnerabilities cannot be fixed automatically and
 will require manual intervention or review. Also note that since <code>npm audit fix</code>
@@ -63,6 +64,10 @@ <h3 id="scrubbing">SCRUBBING</h3>
 <p>The non-reversible identifiers are a sha256 of a session-specific UUID and the
 value being replaced, ensuring a consistent value within the payload that is
 different between runs.</p>
+<h2 id="exit-code">EXIT CODE</h2>
+<p>The <code>npm audit</code> command will exit with a 0 exit code if no vulnerabilities were found.</p>
+<p>If vulnerabilities were found the exit code will depend on the <code>audit-level</code>
+configuration setting.</p>
 <h2 id="see-also">SEE ALSO</h2>
 <ul>
 <li><a href="../cli/npm-install.html">npm-install(1)</a></li>
@@ -81,4 +86,4 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-audit &mdash; npm@6.7.0</p>
+<p id="footer">npm-audit &mdash; npm@6.9.0</p>
diff --git a/deps/npm/html/doc/cli/npm-bin.html b/deps/npm/html/doc/cli/npm-bin.html
index ff2ffde7657879..8f54ed9b880973 100644
--- a/deps/npm/html/doc/cli/npm-bin.html
+++ b/deps/npm/html/doc/cli/npm-bin.html
@@ -34,5 +34,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-bin &mdash; npm@6.7.0</p>
+<p id="footer">npm-bin &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-bugs.html b/deps/npm/html/doc/cli/npm-bugs.html
index afcdffcfbd5fa2..a17bf56dcee08c 100644
--- a/deps/npm/html/doc/cli/npm-bugs.html
+++ b/deps/npm/html/doc/cli/npm-bugs.html
@@ -54,5 +54,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-bugs &mdash; npm@6.7.0</p>
+<p id="footer">npm-bugs &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-build.html b/deps/npm/html/doc/cli/npm-build.html
index 158edbc4e6bd2a..2741074d8ac6a8 100644
--- a/deps/npm/html/doc/cli/npm-build.html
+++ b/deps/npm/html/doc/cli/npm-build.html
@@ -38,5 +38,5 @@ <h2 id="description">DESCRIPTION</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-build &mdash; npm@6.7.0</p>
+<p id="footer">npm-build &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-bundle.html b/deps/npm/html/doc/cli/npm-bundle.html
index 53420b0d342f9c..5d1633cc95b261 100644
--- a/deps/npm/html/doc/cli/npm-bundle.html
+++ b/deps/npm/html/doc/cli/npm-bundle.html
@@ -31,5 +31,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-bundle &mdash; npm@6.7.0</p>
+<p id="footer">npm-bundle &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-cache.html b/deps/npm/html/doc/cli/npm-cache.html
index 0193feabd776ac..20752e5cd8a852 100644
--- a/deps/npm/html/doc/cli/npm-cache.html
+++ b/deps/npm/html/doc/cli/npm-cache.html
@@ -88,5 +88,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-cache &mdash; npm@6.7.0</p>
+<p id="footer">npm-cache &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-ci.html b/deps/npm/html/doc/cli/npm-ci.html
index 54601d1dc3ec97..6aaeb38dd8715d 100644
--- a/deps/npm/html/doc/cli/npm-ci.html
+++ b/deps/npm/html/doc/cli/npm-ci.html
@@ -58,4 +58,4 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-ci &mdash; npm@6.7.0</p>
+<p id="footer">npm-ci &mdash; npm@6.9.0</p>
diff --git a/deps/npm/html/doc/cli/npm-completion.html b/deps/npm/html/doc/cli/npm-completion.html
index 48adf8cd804e84..2ae26fc7c29037 100644
--- a/deps/npm/html/doc/cli/npm-completion.html
+++ b/deps/npm/html/doc/cli/npm-completion.html
@@ -42,5 +42,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-completion &mdash; npm@6.7.0</p>
+<p id="footer">npm-completion &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-config.html b/deps/npm/html/doc/cli/npm-config.html
index 834ef101880249..15774d7d08ea7f 100644
--- a/deps/npm/html/doc/cli/npm-config.html
+++ b/deps/npm/html/doc/cli/npm-config.html
@@ -62,5 +62,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-config &mdash; npm@6.7.0</p>
+<p id="footer">npm-config &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-dedupe.html b/deps/npm/html/doc/cli/npm-dedupe.html
index dc1c97d396f2e3..4f6809a033d2bc 100644
--- a/deps/npm/html/doc/cli/npm-dedupe.html
+++ b/deps/npm/html/doc/cli/npm-dedupe.html
@@ -58,5 +58,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-dedupe &mdash; npm@6.7.0</p>
+<p id="footer">npm-dedupe &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-deprecate.html b/deps/npm/html/doc/cli/npm-deprecate.html
index 590e70f845b4df..1cfadf9d4afd50 100644
--- a/deps/npm/html/doc/cli/npm-deprecate.html
+++ b/deps/npm/html/doc/cli/npm-deprecate.html
@@ -38,5 +38,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-deprecate &mdash; npm@6.7.0</p>
+<p id="footer">npm-deprecate &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-dist-tag.html b/deps/npm/html/doc/cli/npm-dist-tag.html
index 3bce07aede0728..ed45ae30b086e7 100644
--- a/deps/npm/html/doc/cli/npm-dist-tag.html
+++ b/deps/npm/html/doc/cli/npm-dist-tag.html
@@ -86,5 +86,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-dist-tag &mdash; npm@6.7.0</p>
+<p id="footer">npm-dist-tag &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-docs.html b/deps/npm/html/doc/cli/npm-docs.html
index 993850bba96226..ddcec196971fb7 100644
--- a/deps/npm/html/doc/cli/npm-docs.html
+++ b/deps/npm/html/doc/cli/npm-docs.html
@@ -55,5 +55,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-docs &mdash; npm@6.7.0</p>
+<p id="footer">npm-docs &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-doctor.html b/deps/npm/html/doc/cli/npm-doctor.html
index 567b320b186ea6..6c1b14473f6eb3 100644
--- a/deps/npm/html/doc/cli/npm-doctor.html
+++ b/deps/npm/html/doc/cli/npm-doctor.html
@@ -102,4 +102,4 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-doctor &mdash; npm@6.7.0</p>
+<p id="footer">npm-doctor &mdash; npm@6.9.0</p>
diff --git a/deps/npm/html/doc/cli/npm-edit.html b/deps/npm/html/doc/cli/npm-edit.html
index 081f607ec59fb8..d2f7c360570404 100644
--- a/deps/npm/html/doc/cli/npm-edit.html
+++ b/deps/npm/html/doc/cli/npm-edit.html
@@ -50,5 +50,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-edit &mdash; npm@6.7.0</p>
+<p id="footer">npm-edit &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-explore.html b/deps/npm/html/doc/cli/npm-explore.html
index 79f53334ef2044..7e01478228f06f 100644
--- a/deps/npm/html/doc/cli/npm-explore.html
+++ b/deps/npm/html/doc/cli/npm-explore.html
@@ -47,5 +47,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-explore &mdash; npm@6.7.0</p>
+<p id="footer">npm-explore &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-help-search.html b/deps/npm/html/doc/cli/npm-help-search.html
index 800e233ff46ab1..2d962071cfbb35 100644
--- a/deps/npm/html/doc/cli/npm-help-search.html
+++ b/deps/npm/html/doc/cli/npm-help-search.html
@@ -44,5 +44,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-help-search &mdash; npm@6.7.0</p>
+<p id="footer">npm-help-search &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-help.html b/deps/npm/html/doc/cli/npm-help.html
index 7d5a9734e8ef69..c17354b5227555 100644
--- a/deps/npm/html/doc/cli/npm-help.html
+++ b/deps/npm/html/doc/cli/npm-help.html
@@ -49,5 +49,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-help &mdash; npm@6.7.0</p>
+<p id="footer">npm-help &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-hook.html b/deps/npm/html/doc/cli/npm-hook.html
index 62a333cb7aede4..f94caaf43d40a1 100644
--- a/deps/npm/html/doc/cli/npm-hook.html
+++ b/deps/npm/html/doc/cli/npm-hook.html
@@ -52,4 +52,4 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-hook &mdash; npm@6.7.0</p>
+<p id="footer">npm-hook &mdash; npm@6.9.0</p>
diff --git a/deps/npm/html/doc/cli/npm-init.html b/deps/npm/html/doc/cli/npm-init.html
index 073263cbe216b4..28c0f9dd897ff0 100644
--- a/deps/npm/html/doc/cli/npm-init.html
+++ b/deps/npm/html/doc/cli/npm-init.html
@@ -61,5 +61,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-init &mdash; npm@6.7.0</p>
+<p id="footer">npm-init &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-install-ci-test.html b/deps/npm/html/doc/cli/npm-install-ci-test.html
index 831bc4e21e11cd..9ca6ea58fb546d 100644
--- a/deps/npm/html/doc/cli/npm-install-ci-test.html
+++ b/deps/npm/html/doc/cli/npm-install-ci-test.html
@@ -32,4 +32,4 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-install-ci-test &mdash; npm@6.7.0</p>
+<p id="footer">npm-install-ci-test &mdash; npm@6.9.0</p>
diff --git a/deps/npm/html/doc/cli/npm-install-test.html b/deps/npm/html/doc/cli/npm-install-test.html
index 7ed9fee6dc59b3..d557499b988265 100644
--- a/deps/npm/html/doc/cli/npm-install-test.html
+++ b/deps/npm/html/doc/cli/npm-install-test.html
@@ -41,5 +41,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-install-test &mdash; npm@6.7.0</p>
+<p id="footer">npm-install-test &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-install.html b/deps/npm/html/doc/cli/npm-install.html
index 973e0de79d96c5..a40bea0ec3b115 100644
--- a/deps/npm/html/doc/cli/npm-install.html
+++ b/deps/npm/html/doc/cli/npm-install.html
@@ -22,7 +22,7 @@ <h2 id="synopsis">SYNOPSIS</h2>
 npm install &lt;tarball url&gt;
 npm install &lt;folder&gt;
 
-alias: npm i
+aliases: npm i, npm add
 common options: [-P|--save-prod|-D|--save-dev|-O|--save-optional] [-E|--save-exact] [-B|--save-bundle] [--no-save] [--dry-run]</code></pre><h2 id="description">DESCRIPTION</h2>
 <p>This command installs a package, and any packages that it depends on. If the
 package has a package-lock or shrinkwrap file, the installation of dependencies
@@ -370,5 +370,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-install &mdash; npm@6.7.0</p>
+<p id="footer">npm-install &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-link.html b/deps/npm/html/doc/cli/npm-link.html
index da9a12bd7f0365..c8d34a836e35eb 100644
--- a/deps/npm/html/doc/cli/npm-link.html
+++ b/deps/npm/html/doc/cli/npm-link.html
@@ -71,5 +71,5 @@ <h2 id="synopsis">SYNOPSIS</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-link &mdash; npm@6.7.0</p>
+<p id="footer">npm-link &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-logout.html b/deps/npm/html/doc/cli/npm-logout.html
index 011f638aff592a..de2a5e251756e8 100644
--- a/deps/npm/html/doc/cli/npm-logout.html
+++ b/deps/npm/html/doc/cli/npm-logout.html
@@ -49,5 +49,5 @@ <h3 id="scope">scope</h3>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-logout &mdash; npm@6.7.0</p>
+<p id="footer">npm-logout &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-ls.html b/deps/npm/html/doc/cli/npm-ls.html
index bbdd3aea8d8468..a7ddb36dd97d9a 100644
--- a/deps/npm/html/doc/cli/npm-ls.html
+++ b/deps/npm/html/doc/cli/npm-ls.html
@@ -20,7 +20,7 @@ <h2 id="synopsis">SYNOPSIS</h2>
 limit the results to only the paths to the packages named.  Note that
 nested packages will <em>also</em> show the paths to the specified packages.
 For example, running <code>npm ls promzard</code> in npm&#39;s source tree will show:</p>
-<pre><code>npm@6.7.0 /path/to/npm
+<pre><code>npm@6.9.0 /path/to/npm
 └─┬ init-package-json@0.0.4
   └── promzard@0.1.5</code></pre><p>It will print out extraneous, missing, and invalid packages.</p>
 <p>If a project specifies git urls for dependencies these are shown
@@ -108,5 +108,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-ls &mdash; npm@6.7.0</p>
+<p id="footer">npm-ls &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-org.html b/deps/npm/html/doc/cli/npm-org.html
index 2132e290adefc3..388e5e0314af3a 100644
--- a/deps/npm/html/doc/cli/npm-org.html
+++ b/deps/npm/html/doc/cli/npm-org.html
@@ -40,4 +40,4 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-org &mdash; npm@6.7.0</p>
+<p id="footer">npm-org &mdash; npm@6.9.0</p>
diff --git a/deps/npm/html/doc/cli/npm-outdated.html b/deps/npm/html/doc/cli/npm-outdated.html
index b39aaeac54de2f..e97c77615d0083 100644
--- a/deps/npm/html/doc/cli/npm-outdated.html
+++ b/deps/npm/html/doc/cli/npm-outdated.html
@@ -116,5 +116,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-outdated &mdash; npm@6.7.0</p>
+<p id="footer">npm-outdated &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-owner.html b/deps/npm/html/doc/cli/npm-owner.html
index 42a1f852edfff8..f585a6ecdb3ba2 100644
--- a/deps/npm/html/doc/cli/npm-owner.html
+++ b/deps/npm/html/doc/cli/npm-owner.html
@@ -53,5 +53,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-owner &mdash; npm@6.7.0</p>
+<p id="footer">npm-owner &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-pack.html b/deps/npm/html/doc/cli/npm-pack.html
index c6494d46c0c7a8..069142c16b07bf 100644
--- a/deps/npm/html/doc/cli/npm-pack.html
+++ b/deps/npm/html/doc/cli/npm-pack.html
@@ -42,5 +42,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-pack &mdash; npm@6.7.0</p>
+<p id="footer">npm-pack &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-ping.html b/deps/npm/html/doc/cli/npm-ping.html
index e320419a0ef4f1..3dc24076901524 100644
--- a/deps/npm/html/doc/cli/npm-ping.html
+++ b/deps/npm/html/doc/cli/npm-ping.html
@@ -33,5 +33,5 @@ <h2 id="synopsis">SYNOPSIS</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-ping &mdash; npm@6.7.0</p>
+<p id="footer">npm-ping &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-prefix.html b/deps/npm/html/doc/cli/npm-prefix.html
index af9969c0746d17..4728dd54fad2f7 100644
--- a/deps/npm/html/doc/cli/npm-prefix.html
+++ b/deps/npm/html/doc/cli/npm-prefix.html
@@ -38,5 +38,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-prefix &mdash; npm@6.7.0</p>
+<p id="footer">npm-prefix &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-profile.html b/deps/npm/html/doc/cli/npm-profile.html
index e9e81d60f1b373..c6ff5bfdc9d8aa 100644
--- a/deps/npm/html/doc/cli/npm-profile.html
+++ b/deps/npm/html/doc/cli/npm-profile.html
@@ -88,4 +88,4 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-profile &mdash; npm@6.7.0</p>
+<p id="footer">npm-profile &mdash; npm@6.9.0</p>
diff --git a/deps/npm/html/doc/cli/npm-prune.html b/deps/npm/html/doc/cli/npm-prune.html
index aa4a4a9233fae0..b481868d0f519b 100644
--- a/deps/npm/html/doc/cli/npm-prune.html
+++ b/deps/npm/html/doc/cli/npm-prune.html
@@ -47,5 +47,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-prune &mdash; npm@6.7.0</p>
+<p id="footer">npm-prune &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-publish.html b/deps/npm/html/doc/cli/npm-publish.html
index 622389b2e1763e..01d14c06b27b11 100644
--- a/deps/npm/html/doc/cli/npm-publish.html
+++ b/deps/npm/html/doc/cli/npm-publish.html
@@ -87,5 +87,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-publish &mdash; npm@6.7.0</p>
+<p id="footer">npm-publish &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-rebuild.html b/deps/npm/html/doc/cli/npm-rebuild.html
index 793bbad2487420..56317bcdab5c74 100644
--- a/deps/npm/html/doc/cli/npm-rebuild.html
+++ b/deps/npm/html/doc/cli/npm-rebuild.html
@@ -34,5 +34,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-rebuild &mdash; npm@6.7.0</p>
+<p id="footer">npm-rebuild &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-repo.html b/deps/npm/html/doc/cli/npm-repo.html
index a62eccf9c0a192..446b0d71797faf 100644
--- a/deps/npm/html/doc/cli/npm-repo.html
+++ b/deps/npm/html/doc/cli/npm-repo.html
@@ -40,5 +40,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-repo &mdash; npm@6.7.0</p>
+<p id="footer">npm-repo &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-restart.html b/deps/npm/html/doc/cli/npm-restart.html
index 14c430e012f049..996fd6eb2db656 100644
--- a/deps/npm/html/doc/cli/npm-restart.html
+++ b/deps/npm/html/doc/cli/npm-restart.html
@@ -52,5 +52,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-restart &mdash; npm@6.7.0</p>
+<p id="footer">npm-restart &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-root.html b/deps/npm/html/doc/cli/npm-root.html
index 13ec0912a8d125..bfa4dfedbf60ea 100644
--- a/deps/npm/html/doc/cli/npm-root.html
+++ b/deps/npm/html/doc/cli/npm-root.html
@@ -34,5 +34,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-root &mdash; npm@6.7.0</p>
+<p id="footer">npm-root &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-run-script.html b/deps/npm/html/doc/cli/npm-run-script.html
index 862a9fb324fd45..d53b1c6e504caa 100644
--- a/deps/npm/html/doc/cli/npm-run-script.html
+++ b/deps/npm/html/doc/cli/npm-run-script.html
@@ -79,5 +79,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-run-script &mdash; npm@6.7.0</p>
+<p id="footer">npm-run-script &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-search.html b/deps/npm/html/doc/cli/npm-search.html
index 6818a07dd9df03..7ca9d17b5b9b0d 100644
--- a/deps/npm/html/doc/cli/npm-search.html
+++ b/deps/npm/html/doc/cli/npm-search.html
@@ -108,5 +108,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-search &mdash; npm@6.7.0</p>
+<p id="footer">npm-search &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-shrinkwrap.html b/deps/npm/html/doc/cli/npm-shrinkwrap.html
index 2b07d44400901e..d283e2b957f088 100644
--- a/deps/npm/html/doc/cli/npm-shrinkwrap.html
+++ b/deps/npm/html/doc/cli/npm-shrinkwrap.html
@@ -40,5 +40,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-shrinkwrap &mdash; npm@6.7.0</p>
+<p id="footer">npm-shrinkwrap &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-star.html b/deps/npm/html/doc/cli/npm-star.html
index 282fe6058e9aa8..2e91b493f82dc1 100644
--- a/deps/npm/html/doc/cli/npm-star.html
+++ b/deps/npm/html/doc/cli/npm-star.html
@@ -35,5 +35,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-star &mdash; npm@6.7.0</p>
+<p id="footer">npm-star &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-stars.html b/deps/npm/html/doc/cli/npm-stars.html
index 48bbc461a81d6b..e8dfddf7a72f5b 100644
--- a/deps/npm/html/doc/cli/npm-stars.html
+++ b/deps/npm/html/doc/cli/npm-stars.html
@@ -35,5 +35,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-stars &mdash; npm@6.7.0</p>
+<p id="footer">npm-stars &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-start.html b/deps/npm/html/doc/cli/npm-start.html
index 063eed365633ae..015b4a2d19418b 100644
--- a/deps/npm/html/doc/cli/npm-start.html
+++ b/deps/npm/html/doc/cli/npm-start.html
@@ -38,5 +38,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-start &mdash; npm@6.7.0</p>
+<p id="footer">npm-start &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-stop.html b/deps/npm/html/doc/cli/npm-stop.html
index 989210046d0d38..b556e92e7a37e5 100644
--- a/deps/npm/html/doc/cli/npm-stop.html
+++ b/deps/npm/html/doc/cli/npm-stop.html
@@ -33,5 +33,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-stop &mdash; npm@6.7.0</p>
+<p id="footer">npm-stop &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-team.html b/deps/npm/html/doc/cli/npm-team.html
index 5368ed6ed41df0..c2e263bedfd6e3 100644
--- a/deps/npm/html/doc/cli/npm-team.html
+++ b/deps/npm/html/doc/cli/npm-team.html
@@ -69,5 +69,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-team &mdash; npm@6.7.0</p>
+<p id="footer">npm-team &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-test.html b/deps/npm/html/doc/cli/npm-test.html
index 0c5839262983e9..bfe820357f5977 100644
--- a/deps/npm/html/doc/cli/npm-test.html
+++ b/deps/npm/html/doc/cli/npm-test.html
@@ -35,5 +35,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-test &mdash; npm@6.7.0</p>
+<p id="footer">npm-test &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-token.html b/deps/npm/html/doc/cli/npm-token.html
index 33d11852c8a4a9..40243cb8f1e1af 100644
--- a/deps/npm/html/doc/cli/npm-token.html
+++ b/deps/npm/html/doc/cli/npm-token.html
@@ -81,4 +81,4 @@ <h2 id="synopsis">SYNOPSIS</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-token &mdash; npm@6.7.0</p>
+<p id="footer">npm-token &mdash; npm@6.9.0</p>
diff --git a/deps/npm/html/doc/cli/npm-uninstall.html b/deps/npm/html/doc/cli/npm-uninstall.html
index f477d9f287e740..6dde7e8732cf33 100644
--- a/deps/npm/html/doc/cli/npm-uninstall.html
+++ b/deps/npm/html/doc/cli/npm-uninstall.html
@@ -60,5 +60,5 @@ <h2 id="synopsis">SYNOPSIS</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-uninstall &mdash; npm@6.7.0</p>
+<p id="footer">npm-uninstall &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-unpublish.html b/deps/npm/html/doc/cli/npm-unpublish.html
index 61b565bb2fe659..5ae2b1d4ed409c 100644
--- a/deps/npm/html/doc/cli/npm-unpublish.html
+++ b/deps/npm/html/doc/cli/npm-unpublish.html
@@ -52,5 +52,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-unpublish &mdash; npm@6.7.0</p>
+<p id="footer">npm-unpublish &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-update.html b/deps/npm/html/doc/cli/npm-update.html
index f03acc1b436186..aadc8be86f2cde 100644
--- a/deps/npm/html/doc/cli/npm-update.html
+++ b/deps/npm/html/doc/cli/npm-update.html
@@ -100,5 +100,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-update &mdash; npm@6.7.0</p>
+<p id="footer">npm-update &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-version.html b/deps/npm/html/doc/cli/npm-version.html
index 31bf550d7baee8..856b0169ab83fe 100644
--- a/deps/npm/html/doc/cli/npm-version.html
+++ b/deps/npm/html/doc/cli/npm-version.html
@@ -116,5 +116,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-version &mdash; npm@6.7.0</p>
+<p id="footer">npm-version &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-view.html b/deps/npm/html/doc/cli/npm-view.html
index 9ec17116957985..99dd45e4d25191 100644
--- a/deps/npm/html/doc/cli/npm-view.html
+++ b/deps/npm/html/doc/cli/npm-view.html
@@ -75,5 +75,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-view &mdash; npm@6.7.0</p>
+<p id="footer">npm-view &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm-whoami.html b/deps/npm/html/doc/cli/npm-whoami.html
index df62dacb1a4c51..0821a2e79aaad1 100644
--- a/deps/npm/html/doc/cli/npm-whoami.html
+++ b/deps/npm/html/doc/cli/npm-whoami.html
@@ -32,5 +32,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-whoami &mdash; npm@6.7.0</p>
+<p id="footer">npm-whoami &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/cli/npm.html b/deps/npm/html/doc/cli/npm.html
index 6864d44a472a76..62b316ee32c195 100644
--- a/deps/npm/html/doc/cli/npm.html
+++ b/deps/npm/html/doc/cli/npm.html
@@ -12,7 +12,7 @@
 <h1><a href="../cli/npm.html">npm</a></h1> <p>javascript package manager</p>
 <h2 id="synopsis">SYNOPSIS</h2>
 <pre><code>npm &lt;command&gt; [args]</code></pre><h2 id="version">VERSION</h2>
-<p>6.7.0</p>
+<p>6.9.0</p>
 <h2 id="description">DESCRIPTION</h2>
 <p>npm is the package manager for the Node JavaScript platform.  It puts
 modules in place so that node can find them, and manages dependency
@@ -130,7 +130,7 @@ <h2 id="author">AUTHOR</h2>
 <p><a href="http://blog.izs.me/">Isaac Z. Schlueter</a> ::
 <a href="https://github.com/isaacs/">isaacs</a> ::
 <a href="https://twitter.com/izs">@izs</a> ::
-<a href="mailto:&#105;&#x40;&#x69;&#122;&#x73;&#x2e;&#109;&#101;">&#105;&#x40;&#x69;&#122;&#x73;&#x2e;&#109;&#101;</a></p>
+<a href="mailto:&#x69;&#x40;&#105;&#x7a;&#x73;&#46;&#109;&#x65;">&#x69;&#x40;&#105;&#x7a;&#x73;&#46;&#109;&#x65;</a></p>
 <h2 id="see-also">SEE ALSO</h2>
 <ul>
 <li><a href="../cli/npm-help.html">npm-help(1)</a></li>
@@ -154,5 +154,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm &mdash; npm@6.7.0</p>
+<p id="footer">npm &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/files/npm-folders.html b/deps/npm/html/doc/files/npm-folders.html
index 5ad8e306134f0e..29cb39165bf379 100644
--- a/deps/npm/html/doc/files/npm-folders.html
+++ b/deps/npm/html/doc/files/npm-folders.html
@@ -179,5 +179,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-folders &mdash; npm@6.7.0</p>
+<p id="footer">npm-folders &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/files/npm-global.html b/deps/npm/html/doc/files/npm-global.html
index 5ad8e306134f0e..29cb39165bf379 100644
--- a/deps/npm/html/doc/files/npm-global.html
+++ b/deps/npm/html/doc/files/npm-global.html
@@ -179,5 +179,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-folders &mdash; npm@6.7.0</p>
+<p id="footer">npm-folders &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/files/npm-json.html b/deps/npm/html/doc/files/npm-json.html
index 751bbebde906d6..971b953e2bf74e 100644
--- a/deps/npm/html/doc/files/npm-json.html
+++ b/deps/npm/html/doc/files/npm-json.html
@@ -277,7 +277,13 @@ <h2 id="repository">repository</h2>
 
 &quot;repository&quot;: &quot;bitbucket:user/repo&quot;
 
-&quot;repository&quot;: &quot;gitlab:user/repo&quot;</code></pre><h2 id="scripts">scripts</h2>
+&quot;repository&quot;: &quot;gitlab:user/repo&quot;</code></pre><p>If the <code>package.json</code> for your package is not in the root directory (for example
+if it is part of a monorepo), you can specify the directory in which it lives:</p>
+<pre><code>&quot;repository&quot;: {
+  &quot;type&quot; : &quot;git&quot;,
+  &quot;url&quot; : &quot;https://github.com/facebook/react.git&quot;,
+  &quot;directory&quot;: &quot;packages/react-dom&quot;
+}</code></pre><h2 id="scripts">scripts</h2>
 <p>The &quot;scripts&quot; property is a dictionary containing script commands that are run
 at various times in the lifecycle of your package.  The key is the lifecycle
 event, and the value is the command to run at that point.</p>
@@ -574,5 +580,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">package.json &mdash; npm@6.7.0</p>
+<p id="footer">package.json &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/files/npm-package-locks.html b/deps/npm/html/doc/files/npm-package-locks.html
index 6e273ed342d717..710de851688d50 100644
--- a/deps/npm/html/doc/files/npm-package-locks.html
+++ b/deps/npm/html/doc/files/npm-package-locks.html
@@ -154,4 +154,4 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-package-locks &mdash; npm@6.7.0</p>
+<p id="footer">npm-package-locks &mdash; npm@6.9.0</p>
diff --git a/deps/npm/html/doc/files/npm-shrinkwrap.json.html b/deps/npm/html/doc/files/npm-shrinkwrap.json.html
index 70316f153aa794..32611487b194bb 100644
--- a/deps/npm/html/doc/files/npm-shrinkwrap.json.html
+++ b/deps/npm/html/doc/files/npm-shrinkwrap.json.html
@@ -42,4 +42,4 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-shrinkwrap.json &mdash; npm@6.7.0</p>
+<p id="footer">npm-shrinkwrap.json &mdash; npm@6.9.0</p>
diff --git a/deps/npm/html/doc/files/npmrc.html b/deps/npm/html/doc/files/npmrc.html
index 9b34b7a13270c5..be34fab224e94a 100644
--- a/deps/npm/html/doc/files/npmrc.html
+++ b/deps/npm/html/doc/files/npmrc.html
@@ -82,5 +82,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npmrc &mdash; npm@6.7.0</p>
+<p id="footer">npmrc &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/files/package-lock.json.html b/deps/npm/html/doc/files/package-lock.json.html
index 1d6399445e7c39..147a8330f3b886 100644
--- a/deps/npm/html/doc/files/package-lock.json.html
+++ b/deps/npm/html/doc/files/package-lock.json.html
@@ -130,4 +130,4 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">package-lock.json &mdash; npm@6.7.0</p>
+<p id="footer">package-lock.json &mdash; npm@6.9.0</p>
diff --git a/deps/npm/html/doc/files/package.json.html b/deps/npm/html/doc/files/package.json.html
index 751bbebde906d6..971b953e2bf74e 100644
--- a/deps/npm/html/doc/files/package.json.html
+++ b/deps/npm/html/doc/files/package.json.html
@@ -277,7 +277,13 @@ <h2 id="repository">repository</h2>
 
 &quot;repository&quot;: &quot;bitbucket:user/repo&quot;
 
-&quot;repository&quot;: &quot;gitlab:user/repo&quot;</code></pre><h2 id="scripts">scripts</h2>
+&quot;repository&quot;: &quot;gitlab:user/repo&quot;</code></pre><p>If the <code>package.json</code> for your package is not in the root directory (for example
+if it is part of a monorepo), you can specify the directory in which it lives:</p>
+<pre><code>&quot;repository&quot;: {
+  &quot;type&quot; : &quot;git&quot;,
+  &quot;url&quot; : &quot;https://github.com/facebook/react.git&quot;,
+  &quot;directory&quot;: &quot;packages/react-dom&quot;
+}</code></pre><h2 id="scripts">scripts</h2>
 <p>The &quot;scripts&quot; property is a dictionary containing script commands that are run
 at various times in the lifecycle of your package.  The key is the lifecycle
 event, and the value is the command to run at that point.</p>
@@ -574,5 +580,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">package.json &mdash; npm@6.7.0</p>
+<p id="footer">package.json &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/index.html b/deps/npm/html/doc/index.html
index b372a629232be9..a7d1957a18fe08 100644
--- a/deps/npm/html/doc/index.html
+++ b/deps/npm/html/doc/index.html
@@ -182,5 +182,5 @@ <h3 id="semver7"><a href="misc/semver.html">semver(7)</a></h3>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-index &mdash; npm@6.7.0</p>
+<p id="footer">npm-index &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/misc/npm-coding-style.html b/deps/npm/html/doc/misc/npm-coding-style.html
index 3e4632d6789390..8c4f2ccde49afe 100644
--- a/deps/npm/html/doc/misc/npm-coding-style.html
+++ b/deps/npm/html/doc/misc/npm-coding-style.html
@@ -145,5 +145,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-coding-style &mdash; npm@6.7.0</p>
+<p id="footer">npm-coding-style &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/misc/npm-config.html b/deps/npm/html/doc/misc/npm-config.html
index d09706648f6df1..505c5784cd9ab3 100644
--- a/deps/npm/html/doc/misc/npm-config.html
+++ b/deps/npm/html/doc/misc/npm-config.html
@@ -150,6 +150,20 @@ <h3 id="auth-type">auth-type</h3>
 <li>Type: <code>&#39;legacy&#39;</code>, <code>&#39;sso&#39;</code>, <code>&#39;saml&#39;</code>, <code>&#39;oauth&#39;</code></li>
 </ul>
 <p>What authentication strategy to use with <code>adduser</code>/<code>login</code>.</p>
+<h3 id="before">before</h3>
+<ul>
+<li>Alias: enjoy-by</li>
+<li>Default: null</li>
+<li>Type: Date</li>
+</ul>
+<p>If passed to <code>npm install</code>, will rebuild the npm tree such that only versions
+that were available <strong>on or before</strong> the <code>--before</code> time get installed.
+If there&#39;s no versions available for the current set of direct dependencies, the
+command will error.</p>
+<p>If the requested version is a <code>dist-tag</code> and the given tag does not pass the
+<code>--before</code> filter, the most recent version less than or equal to that tag will
+be used. For example, <code>foo@latest</code> might install <code>foo@1.2</code> even though <code>latest</code>
+is <code>2.0</code>.</p>
 <h3 id="bin-links">bin-links</h3>
 <ul>
 <li>Default: <code>true</code></li>
@@ -1064,5 +1078,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-config &mdash; npm@6.7.0</p>
+<p id="footer">npm-config &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/misc/npm-developers.html b/deps/npm/html/doc/misc/npm-developers.html
index 04c4430a51f0a2..7d9efe052173a8 100644
--- a/deps/npm/html/doc/misc/npm-developers.html
+++ b/deps/npm/html/doc/misc/npm-developers.html
@@ -198,5 +198,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-developers &mdash; npm@6.7.0</p>
+<p id="footer">npm-developers &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/misc/npm-disputes.html b/deps/npm/html/doc/misc/npm-disputes.html
index 1bc5deee22fed7..da2e42eb5430ae 100644
--- a/deps/npm/html/doc/misc/npm-disputes.html
+++ b/deps/npm/html/doc/misc/npm-disputes.html
@@ -20,7 +20,7 @@ <h1><a href="../misc/npm-disputes.html">npm-disputes</a></h1> <p>Handling Module
 <h2 id="tldr">TL;DR</h2>
 <ol>
 <li>Get the author email with <code>npm owner ls &lt;pkgname&gt;</code></li>
-<li>Email the author, CC <a href="mailto:&#x73;&#117;&#x70;&#112;&#111;&#114;&#x74;&#64;&#x6e;&#x70;&#x6d;&#x6a;&#115;&#46;&#x63;&#x6f;&#x6d;">&#x73;&#117;&#x70;&#112;&#111;&#114;&#x74;&#64;&#x6e;&#x70;&#x6d;&#x6a;&#115;&#46;&#x63;&#x6f;&#x6d;</a></li>
+<li>Email the author, CC <a href="mailto:&#115;&#117;&#x70;&#112;&#x6f;&#x72;&#x74;&#x40;&#110;&#112;&#109;&#x6a;&#115;&#46;&#99;&#111;&#x6d;">&#115;&#117;&#x70;&#112;&#x6f;&#x72;&#x74;&#x40;&#110;&#112;&#109;&#x6a;&#115;&#46;&#99;&#111;&#x6d;</a></li>
 <li>After a few weeks, if there&#39;s no resolution, we&#39;ll sort it out.</li>
 </ol>
 <p>Don&#39;t squat on package names.  Publish code or move out of the way.</p>
@@ -58,13 +58,13 @@ <h2 id="description">DESCRIPTION</h2>
 </li>
 <li><p>Alice emails Yusuf, explaining the situation <strong>as respectfully as possible</strong>,
 and what she would like to do with the module name. She adds the npm support
-staff <a href="mailto:&#115;&#117;&#x70;&#x70;&#111;&#x72;&#116;&#x40;&#x6e;&#x70;&#109;&#106;&#115;&#x2e;&#x63;&#x6f;&#x6d;">&#115;&#117;&#x70;&#x70;&#111;&#x72;&#116;&#x40;&#x6e;&#x70;&#109;&#106;&#115;&#x2e;&#x63;&#x6f;&#x6d;</a> to the CC list of the email. Mention in the email
+staff <a href="mailto:&#x73;&#117;&#112;&#x70;&#x6f;&#114;&#116;&#64;&#x6e;&#x70;&#x6d;&#106;&#115;&#46;&#99;&#111;&#x6d;">&#x73;&#117;&#112;&#x70;&#x6f;&#114;&#116;&#64;&#x6e;&#x70;&#x6d;&#106;&#115;&#46;&#99;&#111;&#x6d;</a> to the CC list of the email. Mention in the email
 that Yusuf can run npm owner <code>add alice foo</code> to add Alice as an owner of the
 foo package.</p>
 </li>
 <li><p>After a reasonable amount of time, if Yusuf has not responded, or if Yusuf
 and Alice can&#39;t come to any sort of resolution, email support
-<a href="mailto:&#x73;&#x75;&#112;&#112;&#111;&#114;&#116;&#64;&#x6e;&#x70;&#x6d;&#x6a;&#115;&#46;&#x63;&#111;&#x6d;">&#x73;&#x75;&#112;&#112;&#111;&#114;&#116;&#64;&#x6e;&#x70;&#x6d;&#x6a;&#115;&#46;&#x63;&#111;&#x6d;</a> and we&#39;ll sort it out. (&quot;Reasonable&quot; is usually at least
+<a href="mailto:&#115;&#x75;&#x70;&#112;&#x6f;&#114;&#x74;&#64;&#110;&#112;&#109;&#x6a;&#x73;&#46;&#99;&#x6f;&#x6d;">&#115;&#x75;&#x70;&#112;&#x6f;&#114;&#x74;&#64;&#110;&#112;&#109;&#x6a;&#x73;&#46;&#99;&#x6f;&#x6d;</a> and we&#39;ll sort it out. (&quot;Reasonable&quot; is usually at least
 4 weeks.)</p>
 </li>
 </ol>
@@ -101,12 +101,12 @@ <h2 id="exceptions">EXCEPTIONS</h2>
 <a href="https://www.npmjs.com/policies/conduct">Code of Conduct</a> such as hateful
 language, pornographic content, or harassment.</li>
 </ol>
-<p>If you see bad behavior like this, please report it to <a href="mailto:&#97;&#98;&#x75;&#115;&#x65;&#64;&#x6e;&#x70;&#109;&#x6a;&#x73;&#x2e;&#x63;&#x6f;&#x6d;">&#97;&#98;&#x75;&#115;&#x65;&#64;&#x6e;&#x70;&#109;&#x6a;&#x73;&#x2e;&#x63;&#x6f;&#x6d;</a> right
+<p>If you see bad behavior like this, please report it to <a href="mailto:&#97;&#x62;&#117;&#115;&#x65;&#64;&#110;&#x70;&#109;&#106;&#x73;&#x2e;&#x63;&#x6f;&#x6d;">&#97;&#x62;&#117;&#115;&#x65;&#64;&#110;&#x70;&#109;&#106;&#x73;&#x2e;&#x63;&#x6f;&#x6d;</a> right
 away. <strong>You are never expected to resolve abusive behavior on your own. We are
 here to help.</strong></p>
 <h2 id="trademarks">TRADEMARKS</h2>
 <p>If you think another npm publisher is infringing your trademark, such as by
-using a confusingly similar package name, email <a href="mailto:&#x61;&#98;&#117;&#x73;&#101;&#64;&#110;&#112;&#x6d;&#x6a;&#115;&#x2e;&#99;&#111;&#109;">&#x61;&#98;&#117;&#x73;&#101;&#64;&#110;&#112;&#x6d;&#x6a;&#115;&#x2e;&#99;&#111;&#109;</a> with a link to
+using a confusingly similar package name, email <a href="mailto:&#x61;&#98;&#117;&#x73;&#x65;&#64;&#x6e;&#112;&#x6d;&#106;&#x73;&#x2e;&#99;&#x6f;&#x6d;">&#x61;&#98;&#117;&#x73;&#x65;&#64;&#x6e;&#112;&#x6d;&#106;&#x73;&#x2e;&#99;&#x6f;&#x6d;</a> with a link to
 the package or user account on <a href="https://www.npmjs.com/">https://www.npmjs.com/</a>.
 Attach a copy of your trademark registration certificate.</p>
 <p>If we see that the package&#39;s publisher is intentionally misleading others by
@@ -139,5 +139,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-disputes &mdash; npm@6.7.0</p>
+<p id="footer">npm-disputes &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/misc/npm-index.html b/deps/npm/html/doc/misc/npm-index.html
index 5044c3044931a7..0131ba430566cd 100644
--- a/deps/npm/html/doc/misc/npm-index.html
+++ b/deps/npm/html/doc/misc/npm-index.html
@@ -182,5 +182,5 @@ <h3 id="semver7"><a href="../misc/semver.html">semver(7)</a></h3>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-index &mdash; npm@6.7.0</p>
+<p id="footer">npm-index &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/misc/npm-orgs.html b/deps/npm/html/doc/misc/npm-orgs.html
index 75d23d6beadc8b..d85cb06151bb89 100644
--- a/deps/npm/html/doc/misc/npm-orgs.html
+++ b/deps/npm/html/doc/misc/npm-orgs.html
@@ -77,5 +77,5 @@ <h2 id="team-admins-create-teams">Team Admins create teams</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-orgs &mdash; npm@6.7.0</p>
+<p id="footer">npm-orgs &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/misc/npm-registry.html b/deps/npm/html/doc/misc/npm-registry.html
index ca2352a7efd8e2..62db998578e524 100644
--- a/deps/npm/html/doc/misc/npm-registry.html
+++ b/deps/npm/html/doc/misc/npm-registry.html
@@ -96,5 +96,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-registry &mdash; npm@6.7.0</p>
+<p id="footer">npm-registry &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/misc/npm-scope.html b/deps/npm/html/doc/misc/npm-scope.html
index 329812894eaca2..a64f606bbb0e29 100644
--- a/deps/npm/html/doc/misc/npm-scope.html
+++ b/deps/npm/html/doc/misc/npm-scope.html
@@ -93,5 +93,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-scope &mdash; npm@6.7.0</p>
+<p id="footer">npm-scope &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/misc/npm-scripts.html b/deps/npm/html/doc/misc/npm-scripts.html
index 1533d13b63e56b..721569c915bcb1 100644
--- a/deps/npm/html/doc/misc/npm-scripts.html
+++ b/deps/npm/html/doc/misc/npm-scripts.html
@@ -234,5 +234,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">npm-scripts &mdash; npm@6.7.0</p>
+<p id="footer">npm-scripts &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/misc/removing-npm.html b/deps/npm/html/doc/misc/removing-npm.html
index d31c293c9ddd3c..e3c90651991a27 100644
--- a/deps/npm/html/doc/misc/removing-npm.html
+++ b/deps/npm/html/doc/misc/removing-npm.html
@@ -52,5 +52,5 @@ <h2 id="see-also">SEE ALSO</h2>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">removing-npm &mdash; npm@6.7.0</p>
+<p id="footer">removing-npm &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/html/doc/misc/semver.html b/deps/npm/html/doc/misc/semver.html
index 28db44aa664ce8..a5c5f798ab8dce 100644
--- a/deps/npm/html/doc/misc/semver.html
+++ b/deps/npm/html/doc/misc/semver.html
@@ -361,5 +361,5 @@ <h3 id="coercion">Coercion</h3>
 <tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
 <tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
 </table>
-<p id="footer">semver &mdash; npm@6.7.0</p>
+<p id="footer">semver &mdash; npm@6.9.0</p>
 
diff --git a/deps/npm/lib/access.js b/deps/npm/lib/access.js
index 4bb93fda1d0ee2..6657f4b0717a1f 100644
--- a/deps/npm/lib/access.js
+++ b/deps/npm/lib/access.js
@@ -154,7 +154,7 @@ access['ls-packages'] = access.lsPackages = ([owner], opts) => {
 }
 
 access['ls-collaborators'] = access.lsCollaborators = ([pkg, usr], opts) => {
-  return getPackage(pkg).then(pkgName =>
+  return getPackage(pkg, false).then(pkgName =>
     libaccess.lsCollaborators(pkgName, usr, opts)
   ).then(collabs => {
     // TODO - print these out nicely (breaking change)
diff --git a/deps/npm/lib/config/defaults.js b/deps/npm/lib/config/defaults.js
index 25926595391207..f563357d4cba3f 100644
--- a/deps/npm/lib/config/defaults.js
+++ b/deps/npm/lib/config/defaults.js
@@ -113,6 +113,7 @@ Object.defineProperty(exports, 'defaults', {get: function () {
     'audit-level': 'low',
     'auth-type': 'legacy',
 
+    'before': null,
     'bin-links': true,
     browser: null,
 
@@ -260,6 +261,7 @@ exports.types = {
   audit: Boolean,
   'audit-level': ['low', 'moderate', 'high', 'critical'],
   'auth-type': ['legacy', 'sso', 'saml', 'oauth'],
+  'before': [null, Date],
   'bin-links': Boolean,
   browser: [null, String],
   ca: [null, String, Array],
@@ -394,6 +396,7 @@ function getLocalAddresses () {
 }
 
 exports.shorthands = {
+  before: ['--enjoy-by'],
   s: ['--loglevel', 'silent'],
   d: ['--loglevel', 'info'],
   dd: ['--loglevel', 'verbose'],
diff --git a/deps/npm/lib/fetch-package-metadata.md b/deps/npm/lib/fetch-package-metadata.md
index 6fe4beac6eeed3..7b4562341b1cb4 100644
--- a/deps/npm/lib/fetch-package-metadata.md
+++ b/deps/npm/lib/fetch-package-metadata.md
@@ -1,7 +1,7 @@
 fetch-package-metadata
 ----------------------
 
-    var fetchPackageMetadata = require("npm/lib/fetch-package-metadata")
+    const fetchPackageMetadata = require("npm/lib/fetch-package-metadata")
     fetchPackageMetadata(spec, contextdir, callback)
 
 This will get package metadata (and if possible, ONLY package metadata) for
diff --git a/deps/npm/lib/install.js b/deps/npm/lib/install.js
index e15bc479191001..d2f705e1d1abd9 100644
--- a/deps/npm/lib/install.js
+++ b/deps/npm/lib/install.js
@@ -401,7 +401,7 @@ Installer.prototype.normalizeCurrentTree = function (cb) {
   if (this.currentTree.error) {
     for (let child of this.currentTree.children) {
       if (!child.fakeChild && isExtraneous(child)) {
-        this.currentTree.package.dependencies[child.package.name] = computeVersionSpec(this.currentTree, child)
+        this.currentTree.package.dependencies[moduleName(child)] = computeVersionSpec(this.currentTree, child)
       }
     }
   }
@@ -703,8 +703,25 @@ Installer.prototype.cloneCurrentTreeToIdealTree = function (cb) {
   validate('F', arguments)
   log.silly('install', 'cloneCurrentTreeToIdealTree')
 
-  this.idealTree = copyTree(this.currentTree)
-  this.idealTree.warnings = []
+  if (npm.config.get('before')) {
+    this.idealTree = {
+      package: this.currentTree.package,
+      path: this.currentTree.path,
+      realpath: this.currentTree.realpath,
+      children: [],
+      requires: [],
+      missingDeps: {},
+      missingDevDeps: {},
+      requiredBy: [],
+      error: this.currentTree.error,
+      warnings: [],
+      isTop: true
+    }
+  } else {
+    this.idealTree = copyTree(this.currentTree)
+    this.idealTree.warnings = []
+  }
+
   cb()
 }
 
@@ -825,7 +842,11 @@ Installer.prototype.printInstalledForHuman = function (diffs, auditResult) {
   var report = ''
   if (this.args.length && (added || updated)) {
     report += this.args.map((p) => {
-      return `+ ${p.name}@${p.version}`
+      return `+ ${p.name}@${p.version}${
+        !p._requested.name || p._requested.name === p.name
+          ? ''
+          : ` (as ${p._requested.name})`
+      }`
     }).join('\n') + '\n'
   }
   var actions = []
@@ -922,10 +943,14 @@ Installer.prototype.printInstalledForJSON = function (diffs, auditResult) {
   function recordAction (action) {
     var mutation = action[0]
     var child = action[1]
+    const isAlias = child.package && child.package._requested && child.package._requested.type === 'alias'
+    const name = isAlias
+      ? child.package._requested.name
+      : child.package && child.package.name
     var result = {
       action: mutation,
-      name: moduleName(child),
-      version: child.package && child.package.version,
+      name,
+      version: child.package && `${isAlias ? `npm:${child.package.name}@` : ''}${child.package.version}`,
       path: child.path
     }
     if (mutation === 'move') {
@@ -947,10 +972,16 @@ Installer.prototype.printInstalledForParseable = function (diffs) {
     } else if (mutation === 'update') {
       var previousVersion = child.oldPkg.package && child.oldPkg.package.version
     }
+    const isAlias = child.package._requested && child.package._requested.type === 'alias'
+    const version = child.package && isAlias
+      ? `npm:${child.package.name}@${child.package.version}`
+      : child.package
+        ? child.package.version
+        : ''
     output(
       mutation + '\t' +
       moduleName(child) + '\t' +
-      (child.package ? child.package.version : '') + '\t' +
+      version + '\t' +
       (child.path ? path.relative(self.where, child.path) : '') + '\t' +
       (previousVersion || '') + '\t' +
       (previousPath || ''))
diff --git a/deps/npm/lib/install/action/extract.js b/deps/npm/lib/install/action/extract.js
index c1c17cdf6c4f35..32a4f4e004ad7a 100644
--- a/deps/npm/lib/install/action/extract.js
+++ b/deps/npm/lib/install/action/extract.js
@@ -6,6 +6,7 @@ const figgyPudding = require('figgy-pudding')
 const stat = BB.promisify(require('graceful-fs').stat)
 const gentlyRm = BB.promisify(require('../../utils/gently-rm.js'))
 const mkdirp = BB.promisify(require('mkdirp'))
+const moduleName = require('../../utils/module-name.js')
 const moduleStagingPath = require('../module-staging-path.js')
 const move = require('../../utils/move.js')
 const npa = require('npm-package-arg')
@@ -113,7 +114,7 @@ function readBundled (pkg, staging, extractTo) {
 }
 
 function stageBundledModule (bundler, child, staging, parentPath) {
-  const stageFrom = path.join(parentPath, 'node_modules', child.package.name)
+  const stageFrom = path.join(parentPath, 'node_modules', moduleName(child))
   const stageTo = moduleStagingPath(staging, child)
 
   return BB.map(child.children, (child) => {
diff --git a/deps/npm/lib/install/action/global-install.js b/deps/npm/lib/install/action/global-install.js
index bdc121b693c572..44d2f628f2c731 100644
--- a/deps/npm/lib/install/action/global-install.js
+++ b/deps/npm/lib/install/action/global-install.js
@@ -3,12 +3,13 @@ var path = require('path')
 var npm = require('../../npm.js')
 var Installer = require('../../install.js').Installer
 var packageId = require('../../utils/package-id.js')
+var moduleName = require('../../utils/module-name.js')
 
 module.exports = function (staging, pkg, log, next) {
   log.silly('global-install', packageId(pkg))
   var globalRoot = path.resolve(npm.globalDir, '..')
   npm.config.set('global', true)
-  var install = new Installer(globalRoot, false, [pkg.package.name + '@' + pkg.package._requested.fetchSpec])
+  var install = new Installer(globalRoot, false, [moduleName(pkg) + '@' + pkg.package._requested.rawSpec])
   install.link = false
   install.run(function () {
     npm.config.set('global', false)
diff --git a/deps/npm/lib/install/action/global-link.js b/deps/npm/lib/install/action/global-link.js
index f109e5b88a19fc..c9d9a8feb2af78 100644
--- a/deps/npm/lib/install/action/global-link.js
+++ b/deps/npm/lib/install/action/global-link.js
@@ -1,8 +1,9 @@
 'use strict'
+var moduleName = require('../../utils/module-name.js')
 var npm = require('../../npm.js')
 var packageId = require('../../utils/package-id.js')
 
 module.exports = function (staging, pkg, log, next) {
   log.silly('global-link', packageId(pkg))
-  npm.link(pkg.package.name, next)
+  npm.link(moduleName(pkg), next)
 }
diff --git a/deps/npm/lib/install/and-add-parent-to-errors.js b/deps/npm/lib/install/and-add-parent-to-errors.js
index 62a86bd4a6c360..fe4128230b1af5 100644
--- a/deps/npm/lib/install/and-add-parent-to-errors.js
+++ b/deps/npm/lib/install/and-add-parent-to-errors.js
@@ -1,4 +1,5 @@
 'use strict'
+var moduleName = require('../utils/module-name.js')
 var validate = require('aproba')
 
 module.exports = function (parent, cb) {
@@ -6,7 +7,7 @@ module.exports = function (parent, cb) {
   return function (er) {
     if (!er) return cb.apply(null, arguments)
     if (er instanceof Error && parent && parent.package && parent.package.name) {
-      er.parent = parent.package.name
+      er.parent = moduleName(parent)
     }
     cb(er)
   }
diff --git a/deps/npm/lib/install/deps.js b/deps/npm/lib/install/deps.js
index c36265093b090b..3fe370140adc3d 100644
--- a/deps/npm/lib/install/deps.js
+++ b/deps/npm/lib/install/deps.js
@@ -57,6 +57,19 @@ function doesChildVersionMatch (child, requested, requestor) {
     if (fromSw.toString() === requested.toString()) return true
   }
 
+  if (requested.type === 'git' && requested.gitRange) {
+    const sameRepo = npa(child.package._from).fetchSpec === requested.fetchSpec
+    try {
+      return sameRepo && semver.satisfies(child.package.version, requested.gitRange, true)
+    } catch (e) {
+      return false
+    }
+  }
+
+  if (requested.type === 'alias') {
+    return doesChildVersionMatch(child, requested.subSpec, requestor)
+  }
+
   if (!registryTypes[requested.type]) {
     var childReq = child.package._requested
     if (childReq) {
@@ -72,7 +85,7 @@ function doesChildVersionMatch (child, requested, requestor) {
     // You'll see this scenario happen with at least tags and git dependencies.
     // Some buggy clients will write spaces into the module name part of a _from.
     if (child.package._from) {
-      var fromReq = npa.resolve(moduleName(child), child.package._from.replace(new RegExp('^\\s*' + moduleName(child) + '\\s*@'), ''))
+      var fromReq = npa(child.package._from)
       if (fromReq.rawSpec === requested.rawSpec) return true
       if (fromReq.type === requested.type && fromReq.saveSpec && fromReq.saveSpec === requested.saveSpec) return true
     }
@@ -289,11 +302,13 @@ function computeVersionSpec (tree, child) {
   var requested
   var childReq = child.package._requested
   if (child.isLink) {
-    requested = npa.resolve(child.package.name, 'file:' + child.realpath, getTop(tree).path)
+    requested = npa.resolve(moduleName(child), 'file:' + child.realpath, getTop(tree).path)
   } else if (childReq && (isNotEmpty(childReq.saveSpec) || (isNotEmpty(childReq.rawSpec) && isNotEmpty(childReq.fetchSpec)))) {
     requested = child.package._requested
   } else if (child.package._from) {
     requested = npa(child.package._from, tree.path)
+  } else if (child.name && child.name !== child.package.name) {
+    requested = npa.resolve(child.name, `npm:${child.package.name}@${child.package.version})`)
   } else {
     requested = npa.resolve(child.package.name, child.package.version)
   }
@@ -305,6 +320,9 @@ function computeVersionSpec (tree, child) {
         !npm.config.get('save-exact')) {
       rangeDescriptor = npm.config.get('save-prefix')
     }
+    if (requested.type === 'alias') {
+      rangeDescriptor = `npm:${requested.subSpec.name}@${rangeDescriptor}`
+    }
     return rangeDescriptor + version
   } else if (requested.type === 'directory' || requested.type === 'file') {
     return 'file:' + unixFormatPath(path.relative(getTop(tree).path, requested.fetchSpec))
@@ -324,7 +342,7 @@ exports.removeDeps = function (args, tree, saveToDependencies, next) {
   for (let pkg of args) {
     var pkgName = moduleName(pkg)
     var toRemove = tree.children.filter(moduleNameMatches(pkgName))
-    var pkgToRemove = toRemove[0] || createChild({package: {name: pkgName}})
+    var pkgToRemove = toRemove[0] || createChild({name: pkgName})
     var saveType = getSaveType(tree, pkg) || 'dependencies'
     if (tree.isTop && saveToDependencies) {
       pkgToRemove.save = saveType
@@ -652,11 +670,13 @@ function resolveWithNewModule (pkg, tree, log, next) {
     addBundled(pkg, (bundleErr) => {
       var parent = earliestInstallable(tree, tree, pkg, log) || tree
       var isLink = pkg._requested.type === 'directory'
+      var name = pkg._requested.name || pkg.name
       var child = createChild({
+        name,
         package: pkg,
         parent: parent,
-        path: path.join(parent.isLink ? parent.realpath : parent.path, 'node_modules', pkg.name),
-        realpath: isLink ? pkg._requested.fetchSpec : path.join(parent.realpath, 'node_modules', pkg.name),
+        path: path.join(parent.isLink ? parent.realpath : parent.path, 'node_modules', name),
+        realpath: isLink ? pkg._requested.fetchSpec : path.join(parent.realpath, 'node_modules', name),
         children: pkg._bundled || [],
         isLink: isLink,
         isInLink: parent.isLink,
@@ -759,7 +779,7 @@ var earliestInstallable = exports.earliestInstallable = function (requiredBy, tr
   validate('OOOO', arguments)
 
   function undeletedModuleMatches (child) {
-    return !child.removed && moduleName(child) === pkg.name
+    return !child.removed && moduleName(child) === ((pkg._requested && pkg._requested.name) || pkg.name)
   }
   const undeletedMatches = tree.children.filter(undeletedModuleMatches)
   if (undeletedMatches.length) {
diff --git a/deps/npm/lib/install/inflate-shrinkwrap.js b/deps/npm/lib/install/inflate-shrinkwrap.js
index bf1ab7065724c8..395cc111913093 100644
--- a/deps/npm/lib/install/inflate-shrinkwrap.js
+++ b/deps/npm/lib/install/inflate-shrinkwrap.js
@@ -177,7 +177,7 @@ function makeFakeChild (name, topPath, tree, sw, requested) {
     realpath: requested.type === 'directory' ? requested.fetchSpec : childPath(tree.realpath, pkg),
     location: (tree.location === '/' ? '' : tree.location + '/') + pkg.name,
     isLink: requested.type === 'directory',
-    isInLink: tree.isLink,
+    isInLink: tree.isLink || tree.isInLink,
     swRequires: sw.requires
   })
   tree.children.push(child)
diff --git a/deps/npm/lib/install/is-only-optional.js b/deps/npm/lib/install/is-only-optional.js
index f1b731578d9422..81e227bae7a89c 100644
--- a/deps/npm/lib/install/is-only-optional.js
+++ b/deps/npm/lib/install/is-only-optional.js
@@ -2,6 +2,7 @@
 module.exports = isOptional
 
 const isOptDep = require('./is-opt-dep.js')
+const moduleName = require('../utils/module-name.js')
 
 function isOptional (node, seen) {
   if (!seen) seen = new Set()
@@ -15,6 +16,6 @@ function isOptional (node, seen) {
   const swOptional = node.fromShrinkwrap && node.package._optional
   return node.requiredBy.every(function (req) {
     if (req.fakeChild && swOptional) return true
-    return isOptDep(req, node.package.name) || isOptional(req, seen)
+    return isOptDep(req, moduleName(node)) || isOptional(req, seen)
   })
 }
diff --git a/deps/npm/lib/install/save.js b/deps/npm/lib/install/save.js
index 7227e78852ac75..92b44a108099b9 100644
--- a/deps/npm/lib/install/save.js
+++ b/deps/npm/lib/install/save.js
@@ -44,7 +44,7 @@ exports.saveShrinkwrap = saveShrinkwrap
 
 function saveShrinkwrap (tree, next) {
   validate('OF', arguments)
-  if (!npm.config.get('shrinkwrap') || !npm.config.get('package-lock')) {
+  if (!npm.config.get('package-lock-only') && (!npm.config.get('shrinkwrap') || !npm.config.get('package-lock'))) {
     return next()
   }
   require('../shrinkwrap.js').createShrinkwrap(tree, {silent: false}, next)
diff --git a/deps/npm/lib/ls.js b/deps/npm/lib/ls.js
index bb5e433f78fdea..78a2b1d791c7d5 100644
--- a/deps/npm/lib/ls.js
+++ b/deps/npm/lib/ls.js
@@ -12,6 +12,7 @@ var readPackageTree = require('read-package-tree')
 var archy = require('archy')
 var semver = require('semver')
 var color = require('ansicolors')
+var moduleName = require('./utils/module-name.js')
 var npa = require('npm-package-arg')
 var sortedObject = require('sorted-object')
 var npm = require('./npm.js')
@@ -59,7 +60,9 @@ var lsFromTree = ls.fromTree = function (dir, physicalTree, args, silent, cb) {
     args = []
   } else {
     args = args.map(function (a) {
-      if (typeof a === 'object') {
+      if (typeof a === 'object' && a.package._requested.type === 'alias') {
+        return [moduleName(a), `npm:${a.package.name}@${a.package.version}`, a]
+      } else if (typeof a === 'object') {
         return [a.package.name, a.package.version, a]
       } else {
         var p = npa(a)
@@ -305,7 +308,7 @@ function filterFound (root, args) {
     if (!markDeps) continue
     Object.keys(markDeps).forEach(function (depName) {
       var dep = markDeps[depName]
-      if (dep.peerMissing) return
+      if (dep.peerMissing && !dep._from) return
       dep._parent = markPkg
       for (var ii = 0; ii < args.length; ii++) {
         var argName = args[ii][0]
@@ -392,8 +395,11 @@ function makeArchy_ (data, long, dir, depth, parent, d) {
   }
 
   var out = {}
-  // the top level is a bit special.
-  out.label = data._id || ''
+  if (data._requested && data._requested.type === 'alias') {
+    out.label = `${d}@npm:${data._id}`
+  } else {
+    out.label = data._id || ''
+  }
   if (data._found === 'explicit' && data._id) {
     if (npm.color) {
       out.label = color.bgBlack(color.yellow(out.label.trim())) + ' '
diff --git a/deps/npm/lib/outdated.js b/deps/npm/lib/outdated.js
index ebd67fb6b37d5d..197b71962500e3 100644
--- a/deps/npm/lib/outdated.js
+++ b/deps/npm/lib/outdated.js
@@ -20,30 +20,30 @@ outdated.usage = 'npm outdated [[<@scope>/]<pkg> ...]'
 
 outdated.completion = require('./utils/completion/installed-deep.js')
 
-var os = require('os')
-var url = require('url')
-var path = require('path')
-var readPackageTree = require('read-package-tree')
-var asyncMap = require('slide').asyncMap
-var color = require('ansicolors')
-var styles = require('ansistyles')
-var table = require('text-table')
-var semver = require('semver')
-var npa = require('libnpm/parse-arg')
-var pickManifest = require('npm-pick-manifest')
-var fetchPackageMetadata = require('./fetch-package-metadata.js')
-var mutateIntoLogicalTree = require('./install/mutate-into-logical-tree.js')
-var npm = require('./npm.js')
+const os = require('os')
+const url = require('url')
+const path = require('path')
+const readPackageTree = require('read-package-tree')
+const asyncMap = require('slide').asyncMap
+const color = require('ansicolors')
+const styles = require('ansistyles')
+const table = require('text-table')
+const semver = require('semver')
+const npa = require('libnpm/parse-arg')
+const pickManifest = require('npm-pick-manifest')
+const fetchPackageMetadata = require('./fetch-package-metadata.js')
+const mutateIntoLogicalTree = require('./install/mutate-into-logical-tree.js')
+const npm = require('./npm.js')
 const npmConfig = require('./config/figgy-config.js')
 const figgyPudding = require('figgy-pudding')
 const packument = require('libnpm/packument')
-var long = npm.config.get('long')
-var isExtraneous = require('./install/is-extraneous.js')
-var computeMetadata = require('./install/deps.js').computeMetadata
-var computeVersionSpec = require('./install/deps.js').computeVersionSpec
-var moduleName = require('./utils/module-name.js')
-var output = require('./utils/output.js')
-var ansiTrim = require('./utils/ansi-trim')
+const long = npm.config.get('long')
+const isExtraneous = require('./install/is-extraneous.js')
+const computeMetadata = require('./install/deps.js').computeMetadata
+const computeVersionSpec = require('./install/deps.js').computeVersionSpec
+const moduleName = require('./utils/module-name.js')
+const output = require('./utils/output.js')
+const ansiTrim = require('./utils/ansi-trim')
 
 const OutdatedConfig = figgyPudding({
   also: {},
@@ -157,7 +157,7 @@ function makePretty (p, opts) {
   }
 
   if (opts.color) {
-    columns[0] = color[has === want || want === 'linked' ? 'yellow' : 'red'](columns[0]) // dep
+    columns[0] = color[has === want ? 'yellow' : 'red'](columns[0]) // dep
     columns[2] = color.green(columns[2]) // want
     columns[3] = color.magenta(columns[3]) // latest
   }
@@ -215,8 +215,8 @@ function makeJSON (list, opts) {
 
 function outdated_ (args, path, tree, parentHas, depth, opts, cb) {
   if (!tree.package) tree.package = {}
-  if (path && tree.package.name) path += ' > ' + tree.package.name
-  if (!path && tree.package.name) path = tree.package.name
+  if (path && moduleName(tree)) path += ' > ' + tree.package.name
+  if (!path && moduleName(tree)) path = tree.package.name
   if (depth > opts.depth) {
     return cb(null, [])
   }
@@ -298,10 +298,10 @@ function outdated_ (args, path, tree, parentHas, depth, opts, cb) {
 
   var has = Object.create(parentHas)
   tree.children.forEach(function (child) {
-    if (child.package.name && child.package.private) {
+    if (moduleName(child) && child.package.private) {
       deps = deps.filter(function (dep) { return dep !== child })
     }
-    has[child.package.name] = {
+    has[moduleName(child)] = {
       version: child.isLink ? 'linked' : child.package.version,
       from: child.isLink ? 'file:' + child.path : child.package._from
     }
@@ -349,13 +349,6 @@ function shouldUpdate (args, tree, dep, has, req, depth, pkgpath, opts, cb, type
       cb)
   }
 
-  function doIt (wanted, latest) {
-    if (!long) {
-      return cb(null, [[tree, dep, curr && curr.version, wanted, latest, req, null, pkgpath]])
-    }
-    cb(null, [[tree, dep, curr && curr.version, wanted, latest, req, type, pkgpath]])
-  }
-
   if (args.length && args.indexOf(dep) === -1) return skip()
 
   if (tree.isLink && req == null) return skip()
@@ -374,11 +367,22 @@ function shouldUpdate (args, tree, dep, has, req, depth, pkgpath, opts, cb, type
   } else if (parsed.type === 'file') {
     return updateLocalDeps()
   } else {
-    return packument(dep, opts.concat({
+    return packument(parsed, opts.concat({
       'prefer-online': true
     })).nodeify(updateDeps)
   }
 
+  function doIt (wanted, latest) {
+    let c = curr && curr.version
+    if (parsed.type === 'alias') {
+      c = `npm:${parsed.subSpec.name}@${c}`
+    }
+    if (!long) {
+      return cb(null, [[tree, dep, c, wanted, latest, req, null, pkgpath]])
+    }
+    cb(null, [[tree, dep, c, wanted, latest, req, type, pkgpath]])
+  }
+
   function updateLocalDeps (latestRegistryVersion) {
     fetchPackageMetadata('file:' + parsed.fetchSpec, '.', (er, localDependency) => {
       if (er) return cb()
@@ -405,6 +409,9 @@ function shouldUpdate (args, tree, dep, has, req, depth, pkgpath, opts, cb, type
   function updateDeps (er, d) {
     if (er) return cb(er)
 
+    if (parsed.type === 'alias') {
+      req = parsed.subSpec.rawSpec
+    }
     try {
       var l = pickManifest(d, 'latest')
       var m = pickManifest(d, req)
@@ -421,11 +428,20 @@ function shouldUpdate (args, tree, dep, has, req, depth, pkgpath, opts, cb, type
     var dFromUrl = m._from && url.parse(m._from).protocol
     var cFromUrl = curr && curr.from && url.parse(curr.from).protocol
 
-    if (!curr ||
-        (dFromUrl && cFromUrl && m._from !== curr.from) ||
-        m.version !== curr.version ||
-        m.version !== l.version) {
-      doIt(m.version, l.version)
+    if (
+      !curr ||
+      (dFromUrl && cFromUrl && m._from !== curr.from) ||
+      m.version !== curr.version ||
+      m.version !== l.version
+    ) {
+      if (parsed.type === 'alias') {
+        doIt(
+          `npm:${parsed.subSpec.name}@${m.version}`,
+          `npm:${parsed.subSpec.name}@${l.version}`
+        )
+      } else {
+        doIt(m.version, l.version)
+      }
     } else {
       skip()
     }
diff --git a/deps/npm/lib/run-script.js b/deps/npm/lib/run-script.js
index 33025763117190..476591c051e73a 100644
--- a/deps/npm/lib/run-script.js
+++ b/deps/npm/lib/run-script.js
@@ -136,7 +136,7 @@ function run (pkg, wd, cmd, args, cb) {
       'prestart', 'start', 'poststart'
     ]
   } else {
-    if (!pkg.scripts[cmd]) {
+    if (pkg.scripts[cmd] == null) {
       if (cmd === 'test') {
         pkg.scripts.test = 'echo \'Error: no test specified\''
       } else if (cmd === 'env') {
diff --git a/deps/npm/lib/shrinkwrap.js b/deps/npm/lib/shrinkwrap.js
index dbb12b5bd4fba4..75d58bf8e4f0b4 100644
--- a/deps/npm/lib/shrinkwrap.js
+++ b/deps/npm/lib/shrinkwrap.js
@@ -110,11 +110,13 @@ function shrinkwrapDeps (deps, top, tree, seen) {
     var childIsOnlyDev = isOnlyDev(child)
     var pkginfo = deps[moduleName(child)] = {}
     var requested = getRequested(child) || child.package._requested || {}
+    var linked = child.isLink || child.isInLink
+    var linkedFromHere = linked && path.relative(top.realpath, child.realpath)[0] !== '.'
     pkginfo.version = childVersion(top, child, requested)
     if (requested.type === 'git' && child.package._from) {
       pkginfo.from = child.package._from
     }
-    if (child.fromBundle || child.isInLink) {
+    if (child.fromBundle && !linked) {
       pkginfo.bundled = true
     } else {
       if (isRegistry(requested)) {
@@ -139,7 +141,8 @@ function shrinkwrapDeps (deps, top, tree, seen) {
         pkginfo.requires[moduleName(required)] = childRequested(top, required, requested)
       })
     }
-    if (child.children.length) {
+    // iterate into children on non-links and links contained within the top level package
+    if (child.children.length && (!child.isLink || linkedFromHere)) {
       pkginfo.dependencies = {}
       shrinkwrapDeps(pkginfo.dependencies, top, child, seen)
     }
@@ -159,6 +162,8 @@ function childVersion (top, child, req) {
     return 'file:' + unixFormatPath(path.relative(top.path, child.package._resolved || req.fetchSpec))
   } else if (!isRegistry(req) && !child.fromBundle) {
     return child.package._resolved || req.saveSpec || req.rawSpec
+  } else if (req.type === 'alias') {
+    return `npm:${child.package.name}@${child.package.version}`
   } else {
     return child.package.version
   }
diff --git a/deps/npm/lib/stars.js b/deps/npm/lib/stars.js
index ea3581f1d4b444..8b28baffd8c9a7 100644
--- a/deps/npm/lib/stars.js
+++ b/deps/npm/lib/stars.js
@@ -27,7 +27,7 @@ function stars ([user], cb) {
     })
   }).catch(err => {
     if (err.code === 'ENEEDAUTH') {
-      throw Object.assign(new Error("'npm starts' on your own user account requires auth"), {
+      throw Object.assign(new Error("'npm stars' on your own user account requires auth"), {
         code: 'ENEEDAUTH'
       })
     } else {
diff --git a/deps/npm/lib/token.js b/deps/npm/lib/token.js
index cccbba2f9ad75e..326f98ec7ef877 100644
--- a/deps/npm/lib/token.js
+++ b/deps/npm/lib/token.js
@@ -1,6 +1,9 @@
 'use strict'
+
 const profile = require('libnpm/profile')
 const npm = require('./npm.js')
+const figgyPudding = require('figgy-pudding')
+const npmConfig = require('./config/figgy-config.js')
 const output = require('./utils/output.js')
 const Table = require('cli-table3')
 const Bluebird = require('bluebird')
@@ -76,22 +79,43 @@ function generateTokenIds (tokens, minLength) {
   return byId
 }
 
+const TokenConfig = figgyPudding({
+  registry: {},
+  otp: {},
+  cidr: {},
+  'read-only': {},
+  json: {},
+  parseable: {}
+})
+
 function config () {
-  const conf = {
-    json: npm.config.get('json'),
-    parseable: npm.config.get('parseable'),
-    registry: npm.config.get('registry'),
-    otp: npm.config.get('otp')
-  }
+  let conf = TokenConfig(npmConfig())
   const creds = npm.config.getCredentialsByURI(conf.registry)
   if (creds.token) {
-    conf.auth = {token: creds.token}
+    conf = conf.concat({
+      auth: { token: creds.token }
+    })
   } else if (creds.username) {
-    conf.auth = {basic: {username: creds.username, password: creds.password}}
+    conf = conf.concat({
+      auth: {
+        basic: {
+          username: creds.username,
+          password: creds.password
+        }
+      }
+    })
   } else if (creds.auth) {
     const auth = Buffer.from(creds.auth, 'base64').toString().split(':', 2)
-    conf.auth = {basic: {username: auth[0], password: auth[1]}}
+    conf = conf.concat({
+      auth: {
+        basic: {
+          username: auth[0],
+          password: auth[1]
+        }
+      }
+    })
   } else {
+    conf = conf.concat({ auth: {} })
     conf.auth = {}
   }
   if (conf.otp) conf.auth.otp = conf.otp
@@ -183,8 +207,8 @@ function rm (args) {
 
 function create (args) {
   const conf = config()
-  const cidr = npm.config.get('cidr')
-  const readonly = npm.config.get('read-only')
+  const cidr = conf.cidr
+  const readonly = conf['read-only']
 
   const validCIDR = validateCIDRList(cidr)
   return readUserInfo.password().then((password) => {
diff --git a/deps/npm/lib/update.js b/deps/npm/lib/update.js
index 9b1345f9dfbfb4..fdb934fac6730f 100644
--- a/deps/npm/lib/update.js
+++ b/deps/npm/lib/update.js
@@ -46,7 +46,7 @@ function update_ (args) {
           "because it's currently at the maximum version that matches its specified semver range"
         )
       }
-      return ww.current !== ww.wanted && ww.latest !== 'linked'
+      return ww.current !== ww.wanted
     })
     if (wanted.length === 0) return
 
diff --git a/deps/npm/lib/utils/error-message.js b/deps/npm/lib/utils/error-message.js
index 55c54634542fac..bf5d65c0df3ca4 100644
--- a/deps/npm/lib/utils/error-message.js
+++ b/deps/npm/lib/utils/error-message.js
@@ -154,10 +154,12 @@ function errorMessage (er) {
       var msg = er.message.replace(/^404\s+/, '')
       short.push(['404', msg])
       if (er.pkgid && er.pkgid !== '-') {
+        var pkg = er.pkgid.replace(/(?!^)@.*$/, '')
+
         detail.push(['404', ''])
         detail.push(['404', '', "'" + er.pkgid + "' is not in the npm registry."])
 
-        var valResult = nameValidator(er.pkgid)
+        var valResult = nameValidator(pkg)
 
         if (valResult.validForNewPackages) {
           detail.push(['404', 'You should bug the author to publish it (or use the name yourself!)'])
diff --git a/deps/npm/lib/utils/module-name.js b/deps/npm/lib/utils/module-name.js
index 89957b181fd053..18f54e4118d6db 100644
--- a/deps/npm/lib/utils/module-name.js
+++ b/deps/npm/lib/utils/module-name.js
@@ -21,6 +21,7 @@ function isNotEmpty (str) {
 
 var unknown = 0
 function moduleName (tree) {
+  if (tree.name) { return tree.name }
   var pkg = tree.package || tree
   if (isNotEmpty(pkg.name) && typeof pkg.name === 'string') return pkg.name.trim()
   var pkgName = pathToPackageName(tree.path)
diff --git a/deps/npm/lib/view.js b/deps/npm/lib/view.js
index 5dd605029b9d11..fc10a2f4ac4616 100644
--- a/deps/npm/lib/view.js
+++ b/deps/npm/lib/view.js
@@ -243,7 +243,7 @@ function prettyView (packument, manifest, opts) {
         name: color.yellow(manifest._npmUser.name),
         email: color.cyan(manifest._npmUser.email)
       }),
-      modified: color.yellow(relativeDate(packument.time[packument.version])),
+      modified: packument.time ? color.yellow(relativeDate(packument.time[packument.version])) : undefined,
       maintainers: (packument.maintainers || []).map((u) => unparsePerson({
         name: color.yellow(u.name),
         email: color.cyan(u.email)
diff --git a/deps/npm/man/man1/npm-README.1 b/deps/npm/man/man1/npm-README.1
index d616e80ebb5319..eae02b063e4acb 100644
--- a/deps/npm/man/man1/npm-README.1
+++ b/deps/npm/man/man1/npm-README.1
@@ -1,4 +1,4 @@
-.TH "NPM" "1" "January 2019" "" ""
+.TH "NPM" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm\fR \- a JavaScript package manager
 .P
diff --git a/deps/npm/man/man1/npm-access.1 b/deps/npm/man/man1/npm-access.1
index db77a4092d972b..945eb7beb83296 100644
--- a/deps/npm/man/man1/npm-access.1
+++ b/deps/npm/man/man1/npm-access.1
@@ -1,4 +1,4 @@
-.TH "NPM\-ACCESS" "1" "January 2019" "" ""
+.TH "NPM\-ACCESS" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-access\fR \- Set access level on published packages
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-adduser.1 b/deps/npm/man/man1/npm-adduser.1
index a2158576572409..2bb38a51034307 100644
--- a/deps/npm/man/man1/npm-adduser.1
+++ b/deps/npm/man/man1/npm-adduser.1
@@ -1,4 +1,4 @@
-.TH "NPM\-ADDUSER" "1" "January 2019" "" ""
+.TH "NPM\-ADDUSER" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-adduser\fR \- Add a registry user account
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-audit.1 b/deps/npm/man/man1/npm-audit.1
index dee3bb03e1e751..eec47cc6106c45 100644
--- a/deps/npm/man/man1/npm-audit.1
+++ b/deps/npm/man/man1/npm-audit.1
@@ -1,4 +1,4 @@
-.TH "NPM\-AUDIT" "1" "January 2019" "" ""
+.TH "NPM\-AUDIT" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-audit\fR \- Run a security audit
 .SH SYNOPSIS
@@ -94,7 +94,8 @@ $ npm audit \-\-parseable | awk \-F $'\\t' '{print $1,$4}'
 The audit command submits a description of the dependencies configured in
 your project to your default registry and asks for a report of known
 vulnerabilities\. The report returned includes instructions on how to act on
-this information\.
+this information\. The command will exit with a 0 exit code if no
+vulnerabilities were found\.
 .P
 You can also have npm automatically fix the vulnerabilities by running \fBnpm
 audit fix\fP\|\. Note that some vulnerabilities cannot be fixed automatically and
@@ -138,6 +139,12 @@ All local directory and tarball dependencies have their names and specifiers scr
 The non\-reversible identifiers are a sha256 of a session\-specific UUID and the
 value being replaced, ensuring a consistent value within the payload that is
 different between runs\.
+.SH EXIT CODE
+.P
+The \fBnpm audit\fP command will exit with a 0 exit code if no vulnerabilities were found\.
+.P
+If vulnerabilities were found the exit code will depend on the \fBaudit\-level\fP
+configuration setting\.
 .SH SEE ALSO
 .RS 0
 .IP \(bu 2
diff --git a/deps/npm/man/man1/npm-bin.1 b/deps/npm/man/man1/npm-bin.1
index edec701bb2bc14..2d8637a8e43b32 100644
--- a/deps/npm/man/man1/npm-bin.1
+++ b/deps/npm/man/man1/npm-bin.1
@@ -1,4 +1,4 @@
-.TH "NPM\-BIN" "1" "January 2019" "" ""
+.TH "NPM\-BIN" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-bin\fR \- Display npm bin folder
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-bugs.1 b/deps/npm/man/man1/npm-bugs.1
index d34e0987414369..c998bc7ab11cd7 100644
--- a/deps/npm/man/man1/npm-bugs.1
+++ b/deps/npm/man/man1/npm-bugs.1
@@ -1,4 +1,4 @@
-.TH "NPM\-BUGS" "1" "January 2019" "" ""
+.TH "NPM\-BUGS" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-bugs\fR \- Bugs for a package in a web browser maybe
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-build.1 b/deps/npm/man/man1/npm-build.1
index b4247d95bdfb44..eb1805c03fa2f1 100644
--- a/deps/npm/man/man1/npm-build.1
+++ b/deps/npm/man/man1/npm-build.1
@@ -1,4 +1,4 @@
-.TH "NPM\-BUILD" "1" "January 2019" "" ""
+.TH "NPM\-BUILD" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-build\fR \- Build a package
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-bundle.1 b/deps/npm/man/man1/npm-bundle.1
index 2b00e67c35c75d..2db52304628311 100644
--- a/deps/npm/man/man1/npm-bundle.1
+++ b/deps/npm/man/man1/npm-bundle.1
@@ -1,4 +1,4 @@
-.TH "NPM\-BUNDLE" "1" "January 2019" "" ""
+.TH "NPM\-BUNDLE" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-bundle\fR \- REMOVED
 .SH DESCRIPTION
diff --git a/deps/npm/man/man1/npm-cache.1 b/deps/npm/man/man1/npm-cache.1
index 2dc3481048a05f..7e5c1a3e2fe090 100644
--- a/deps/npm/man/man1/npm-cache.1
+++ b/deps/npm/man/man1/npm-cache.1
@@ -1,4 +1,4 @@
-.TH "NPM\-CACHE" "1" "January 2019" "" ""
+.TH "NPM\-CACHE" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-cache\fR \- Manipulates packages cache
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-ci.1 b/deps/npm/man/man1/npm-ci.1
index b872c00415b249..38ca0a98c11d83 100644
--- a/deps/npm/man/man1/npm-ci.1
+++ b/deps/npm/man/man1/npm-ci.1
@@ -1,4 +1,4 @@
-.TH "NPM\-CI" "1" "January 2019" "" ""
+.TH "NPM\-CI" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-ci\fR \- Install a project with a clean slate
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-completion.1 b/deps/npm/man/man1/npm-completion.1
index 9f424dc2e36b78..146530b3ce7209 100644
--- a/deps/npm/man/man1/npm-completion.1
+++ b/deps/npm/man/man1/npm-completion.1
@@ -1,4 +1,4 @@
-.TH "NPM\-COMPLETION" "1" "January 2019" "" ""
+.TH "NPM\-COMPLETION" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-completion\fR \- Tab Completion for npm
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-config.1 b/deps/npm/man/man1/npm-config.1
index cc9f9cff4e21e2..5e536a1d22493a 100644
--- a/deps/npm/man/man1/npm-config.1
+++ b/deps/npm/man/man1/npm-config.1
@@ -1,4 +1,4 @@
-.TH "NPM\-CONFIG" "1" "January 2019" "" ""
+.TH "NPM\-CONFIG" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-config\fR \- Manage the npm configuration files
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-dedupe.1 b/deps/npm/man/man1/npm-dedupe.1
index 8f221481298c7a..ebf213ca6bf56c 100644
--- a/deps/npm/man/man1/npm-dedupe.1
+++ b/deps/npm/man/man1/npm-dedupe.1
@@ -1,4 +1,4 @@
-.TH "NPM\-DEDUPE" "1" "January 2019" "" ""
+.TH "NPM\-DEDUPE" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-dedupe\fR \- Reduce duplication
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-deprecate.1 b/deps/npm/man/man1/npm-deprecate.1
index 1cf39ddb45152f..1377ec9c3555af 100644
--- a/deps/npm/man/man1/npm-deprecate.1
+++ b/deps/npm/man/man1/npm-deprecate.1
@@ -1,4 +1,4 @@
-.TH "NPM\-DEPRECATE" "1" "January 2019" "" ""
+.TH "NPM\-DEPRECATE" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-deprecate\fR \- Deprecate a version of a package
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-dist-tag.1 b/deps/npm/man/man1/npm-dist-tag.1
index b10e8ce3583d00..d67a53495f7f85 100644
--- a/deps/npm/man/man1/npm-dist-tag.1
+++ b/deps/npm/man/man1/npm-dist-tag.1
@@ -1,4 +1,4 @@
-.TH "NPM\-DIST\-TAG" "1" "January 2019" "" ""
+.TH "NPM\-DIST\-TAG" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-dist-tag\fR \- Modify package distribution tags
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-docs.1 b/deps/npm/man/man1/npm-docs.1
index 6d7ac688b39528..ee58b71d803b84 100644
--- a/deps/npm/man/man1/npm-docs.1
+++ b/deps/npm/man/man1/npm-docs.1
@@ -1,4 +1,4 @@
-.TH "NPM\-DOCS" "1" "January 2019" "" ""
+.TH "NPM\-DOCS" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-docs\fR \- Docs for a package in a web browser maybe
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-doctor.1 b/deps/npm/man/man1/npm-doctor.1
index aa55d1518ee371..aba0f578d9ba40 100644
--- a/deps/npm/man/man1/npm-doctor.1
+++ b/deps/npm/man/man1/npm-doctor.1
@@ -1,4 +1,4 @@
-.TH "NPM\-DOCTOR" "1" "January 2019" "" ""
+.TH "NPM\-DOCTOR" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-doctor\fR \- Check your environments
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-edit.1 b/deps/npm/man/man1/npm-edit.1
index 9146f3b76d428f..9753278c9ad5d9 100644
--- a/deps/npm/man/man1/npm-edit.1
+++ b/deps/npm/man/man1/npm-edit.1
@@ -1,4 +1,4 @@
-.TH "NPM\-EDIT" "1" "January 2019" "" ""
+.TH "NPM\-EDIT" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-edit\fR \- Edit an installed package
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-explore.1 b/deps/npm/man/man1/npm-explore.1
index 89df72517841d2..a6389663c4db41 100644
--- a/deps/npm/man/man1/npm-explore.1
+++ b/deps/npm/man/man1/npm-explore.1
@@ -1,4 +1,4 @@
-.TH "NPM\-EXPLORE" "1" "January 2019" "" ""
+.TH "NPM\-EXPLORE" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-explore\fR \- Browse an installed package
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-help-search.1 b/deps/npm/man/man1/npm-help-search.1
index e298e8d98142e8..b05b383c589d49 100644
--- a/deps/npm/man/man1/npm-help-search.1
+++ b/deps/npm/man/man1/npm-help-search.1
@@ -1,4 +1,4 @@
-.TH "NPM\-HELP\-SEARCH" "1" "January 2019" "" ""
+.TH "NPM\-HELP\-SEARCH" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-help-search\fR \- Search npm help documentation
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-help.1 b/deps/npm/man/man1/npm-help.1
index c07f2859175f96..271aba9fb7b60a 100644
--- a/deps/npm/man/man1/npm-help.1
+++ b/deps/npm/man/man1/npm-help.1
@@ -1,4 +1,4 @@
-.TH "NPM\-HELP" "1" "January 2019" "" ""
+.TH "NPM\-HELP" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-help\fR \- Get help on npm
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-hook.1 b/deps/npm/man/man1/npm-hook.1
index 47b175167378c6..e0704282f9b29e 100644
--- a/deps/npm/man/man1/npm-hook.1
+++ b/deps/npm/man/man1/npm-hook.1
@@ -1,4 +1,4 @@
-.TH "NPM\-HOOK" "1" "January 2019" "" ""
+.TH "NPM\-HOOK" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-hook\fR \- Manage registry hooks
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-init.1 b/deps/npm/man/man1/npm-init.1
index 988126a399a5e9..76679d3e04f72e 100644
--- a/deps/npm/man/man1/npm-init.1
+++ b/deps/npm/man/man1/npm-init.1
@@ -1,4 +1,4 @@
-.TH "NPM\-INIT" "1" "January 2019" "" ""
+.TH "NPM\-INIT" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-init\fR \- create a package\.json file
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-install-ci-test.1 b/deps/npm/man/man1/npm-install-ci-test.1
index 6cdda35e2a2b83..94728fcea37b24 100644
--- a/deps/npm/man/man1/npm-install-ci-test.1
+++ b/deps/npm/man/man1/npm-install-ci-test.1
@@ -1,4 +1,4 @@
-.TH "NPM" "" "January 2019" "" ""
+.TH "NPM" "" "April 2019" "" ""
 .SH "NAME"
 \fBnpm\fR
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-install-test.1 b/deps/npm/man/man1/npm-install-test.1
index ae8d5223f15d70..de89170931a98d 100644
--- a/deps/npm/man/man1/npm-install-test.1
+++ b/deps/npm/man/man1/npm-install-test.1
@@ -1,4 +1,4 @@
-.TH "NPM" "" "January 2019" "" ""
+.TH "NPM" "" "April 2019" "" ""
 .SH "NAME"
 \fBnpm\fR
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-install.1 b/deps/npm/man/man1/npm-install.1
index f2cdfeda49cf82..76d8551f13104f 100644
--- a/deps/npm/man/man1/npm-install.1
+++ b/deps/npm/man/man1/npm-install.1
@@ -1,4 +1,4 @@
-.TH "NPM\-INSTALL" "1" "January 2019" "" ""
+.TH "NPM\-INSTALL" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-install\fR \- Install a package
 .SH SYNOPSIS
@@ -16,7 +16,7 @@ npm install <tarball file>
 npm install <tarball url>
 npm install <folder>
 
-alias: npm i
+aliases: npm i, npm add
 common options: [\-P|\-\-save\-prod|\-D|\-\-save\-dev|\-O|\-\-save\-optional] [\-E|\-\-save\-exact] [\-B|\-\-save\-bundle] [\-\-no\-save] [\-\-dry\-run]
 .fi
 .RE
diff --git a/deps/npm/man/man1/npm-link.1 b/deps/npm/man/man1/npm-link.1
index 292b9e50a03850..cf9f94c09421fe 100644
--- a/deps/npm/man/man1/npm-link.1
+++ b/deps/npm/man/man1/npm-link.1
@@ -1,4 +1,4 @@
-.TH "NPM\-LINK" "1" "January 2019" "" ""
+.TH "NPM\-LINK" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-link\fR \- Symlink a package folder
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-logout.1 b/deps/npm/man/man1/npm-logout.1
index df27d4b55b973c..44ef755c7e094a 100644
--- a/deps/npm/man/man1/npm-logout.1
+++ b/deps/npm/man/man1/npm-logout.1
@@ -1,4 +1,4 @@
-.TH "NPM\-LOGOUT" "1" "January 2019" "" ""
+.TH "NPM\-LOGOUT" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-logout\fR \- Log out of the registry
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1
index 59fa5878268686..f677d014487daa 100644
--- a/deps/npm/man/man1/npm-ls.1
+++ b/deps/npm/man/man1/npm-ls.1
@@ -1,4 +1,4 @@
-.TH "NPM\-LS" "1" "January 2019" "" ""
+.TH "NPM\-LS" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-ls\fR \- List installed packages
 .SH SYNOPSIS
@@ -22,7 +22,7 @@ For example, running \fBnpm ls promzard\fP in npm's source tree will show:
 .P
 .RS 2
 .nf
-npm@6.7.0 /path/to/npm
+npm@6.9.0 /path/to/npm
 └─┬ init\-package\-json@0\.0\.4
   └── promzard@0\.1\.5
 .fi
diff --git a/deps/npm/man/man1/npm-org.1 b/deps/npm/man/man1/npm-org.1
index 2cef7e05e62596..5c7dc7fce2c8e2 100644
--- a/deps/npm/man/man1/npm-org.1
+++ b/deps/npm/man/man1/npm-org.1
@@ -1,4 +1,4 @@
-.TH "NPM\-ORG" "1" "January 2019" "" ""
+.TH "NPM\-ORG" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-org\fR \- Manage orgs
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-outdated.1 b/deps/npm/man/man1/npm-outdated.1
index 7e0a18bef9a007..96f1fdd4021bc2 100644
--- a/deps/npm/man/man1/npm-outdated.1
+++ b/deps/npm/man/man1/npm-outdated.1
@@ -1,4 +1,4 @@
-.TH "NPM\-OUTDATED" "1" "January 2019" "" ""
+.TH "NPM\-OUTDATED" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-outdated\fR \- Check for outdated packages
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-owner.1 b/deps/npm/man/man1/npm-owner.1
index c7209ddc9c4bb2..5fb90d0d6dae3a 100644
--- a/deps/npm/man/man1/npm-owner.1
+++ b/deps/npm/man/man1/npm-owner.1
@@ -1,4 +1,4 @@
-.TH "NPM\-OWNER" "1" "January 2019" "" ""
+.TH "NPM\-OWNER" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-owner\fR \- Manage package owners
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-pack.1 b/deps/npm/man/man1/npm-pack.1
index 34af68565e2a75..c566b04c2fe4d6 100644
--- a/deps/npm/man/man1/npm-pack.1
+++ b/deps/npm/man/man1/npm-pack.1
@@ -1,4 +1,4 @@
-.TH "NPM\-PACK" "1" "January 2019" "" ""
+.TH "NPM\-PACK" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-pack\fR \- Create a tarball from a package
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-ping.1 b/deps/npm/man/man1/npm-ping.1
index 200f51383dd4c4..daa291a789dfe4 100644
--- a/deps/npm/man/man1/npm-ping.1
+++ b/deps/npm/man/man1/npm-ping.1
@@ -1,4 +1,4 @@
-.TH "NPM\-PING" "1" "January 2019" "" ""
+.TH "NPM\-PING" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-ping\fR \- Ping npm registry
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-prefix.1 b/deps/npm/man/man1/npm-prefix.1
index 372647ecaa04f8..cee44de38a56a0 100644
--- a/deps/npm/man/man1/npm-prefix.1
+++ b/deps/npm/man/man1/npm-prefix.1
@@ -1,4 +1,4 @@
-.TH "NPM\-PREFIX" "1" "January 2019" "" ""
+.TH "NPM\-PREFIX" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-prefix\fR \- Display prefix
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-profile.1 b/deps/npm/man/man1/npm-profile.1
index 1bd7dcc2e117a7..6f005a5457b778 100644
--- a/deps/npm/man/man1/npm-profile.1
+++ b/deps/npm/man/man1/npm-profile.1
@@ -1,4 +1,4 @@
-.TH "NPM\-PROFILE" "1" "January 2019" "" ""
+.TH "NPM\-PROFILE" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-profile\fR \- Change settings on your registry profile
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-prune.1 b/deps/npm/man/man1/npm-prune.1
index 6a3ed6d62f8a38..85985868c6e01e 100644
--- a/deps/npm/man/man1/npm-prune.1
+++ b/deps/npm/man/man1/npm-prune.1
@@ -1,4 +1,4 @@
-.TH "NPM\-PRUNE" "1" "January 2019" "" ""
+.TH "NPM\-PRUNE" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-prune\fR \- Remove extraneous packages
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-publish.1 b/deps/npm/man/man1/npm-publish.1
index 934a9ad810b98f..4929b992671cb4 100644
--- a/deps/npm/man/man1/npm-publish.1
+++ b/deps/npm/man/man1/npm-publish.1
@@ -1,4 +1,4 @@
-.TH "NPM\-PUBLISH" "1" "January 2019" "" ""
+.TH "NPM\-PUBLISH" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-publish\fR \- Publish a package
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-rebuild.1 b/deps/npm/man/man1/npm-rebuild.1
index 8005c9513f2497..5340db8040cd38 100644
--- a/deps/npm/man/man1/npm-rebuild.1
+++ b/deps/npm/man/man1/npm-rebuild.1
@@ -1,4 +1,4 @@
-.TH "NPM\-REBUILD" "1" "January 2019" "" ""
+.TH "NPM\-REBUILD" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-rebuild\fR \- Rebuild a package
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-repo.1 b/deps/npm/man/man1/npm-repo.1
index 261d44a86087c1..b231846a015b80 100644
--- a/deps/npm/man/man1/npm-repo.1
+++ b/deps/npm/man/man1/npm-repo.1
@@ -1,4 +1,4 @@
-.TH "NPM\-REPO" "1" "January 2019" "" ""
+.TH "NPM\-REPO" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-repo\fR \- Open package repository page in the browser
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-restart.1 b/deps/npm/man/man1/npm-restart.1
index 084f5690eda38e..bd56e55636a367 100644
--- a/deps/npm/man/man1/npm-restart.1
+++ b/deps/npm/man/man1/npm-restart.1
@@ -1,4 +1,4 @@
-.TH "NPM\-RESTART" "1" "January 2019" "" ""
+.TH "NPM\-RESTART" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-restart\fR \- Restart a package
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-root.1 b/deps/npm/man/man1/npm-root.1
index fd4246d8791f6a..3f2397ce83ba8b 100644
--- a/deps/npm/man/man1/npm-root.1
+++ b/deps/npm/man/man1/npm-root.1
@@ -1,4 +1,4 @@
-.TH "NPM\-ROOT" "1" "January 2019" "" ""
+.TH "NPM\-ROOT" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-root\fR \- Display npm root
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-run-script.1 b/deps/npm/man/man1/npm-run-script.1
index e349dab426526e..3e01ee5a8a8be4 100644
--- a/deps/npm/man/man1/npm-run-script.1
+++ b/deps/npm/man/man1/npm-run-script.1
@@ -1,4 +1,4 @@
-.TH "NPM\-RUN\-SCRIPT" "1" "January 2019" "" ""
+.TH "NPM\-RUN\-SCRIPT" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-run-script\fR \- Run arbitrary package scripts
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-search.1 b/deps/npm/man/man1/npm-search.1
index 95a8d0966bc7df..7848196a6a7c14 100644
--- a/deps/npm/man/man1/npm-search.1
+++ b/deps/npm/man/man1/npm-search.1
@@ -1,4 +1,4 @@
-.TH "NPM\-SEARCH" "1" "January 2019" "" ""
+.TH "NPM\-SEARCH" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-search\fR \- Search for packages
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-shrinkwrap.1 b/deps/npm/man/man1/npm-shrinkwrap.1
index 3f9658febf76c8..4cf6aa8ca1ac06 100644
--- a/deps/npm/man/man1/npm-shrinkwrap.1
+++ b/deps/npm/man/man1/npm-shrinkwrap.1
@@ -1,4 +1,4 @@
-.TH "NPM\-SHRINKWRAP" "1" "January 2019" "" ""
+.TH "NPM\-SHRINKWRAP" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-shrinkwrap\fR \- Lock down dependency versions for publication
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-star.1 b/deps/npm/man/man1/npm-star.1
index ae8c61667da3c5..f33a5f0a373a91 100644
--- a/deps/npm/man/man1/npm-star.1
+++ b/deps/npm/man/man1/npm-star.1
@@ -1,4 +1,4 @@
-.TH "NPM\-STAR" "1" "January 2019" "" ""
+.TH "NPM\-STAR" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-star\fR \- Mark your favorite packages
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-stars.1 b/deps/npm/man/man1/npm-stars.1
index 2f6038cb5d2be2..88d772959b0a01 100644
--- a/deps/npm/man/man1/npm-stars.1
+++ b/deps/npm/man/man1/npm-stars.1
@@ -1,4 +1,4 @@
-.TH "NPM\-STARS" "1" "January 2019" "" ""
+.TH "NPM\-STARS" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-stars\fR \- View packages marked as favorites
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-start.1 b/deps/npm/man/man1/npm-start.1
index 7ea6362bdc90f0..7dfdab90c428a7 100644
--- a/deps/npm/man/man1/npm-start.1
+++ b/deps/npm/man/man1/npm-start.1
@@ -1,4 +1,4 @@
-.TH "NPM\-START" "1" "January 2019" "" ""
+.TH "NPM\-START" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-start\fR \- Start a package
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-stop.1 b/deps/npm/man/man1/npm-stop.1
index 2fa4d88ab3804b..a3a6fc197924cf 100644
--- a/deps/npm/man/man1/npm-stop.1
+++ b/deps/npm/man/man1/npm-stop.1
@@ -1,4 +1,4 @@
-.TH "NPM\-STOP" "1" "January 2019" "" ""
+.TH "NPM\-STOP" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-stop\fR \- Stop a package
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-team.1 b/deps/npm/man/man1/npm-team.1
index 6ed65ab44f8de3..2432975058b6e3 100644
--- a/deps/npm/man/man1/npm-team.1
+++ b/deps/npm/man/man1/npm-team.1
@@ -1,4 +1,4 @@
-.TH "NPM\-TEAM" "1" "January 2019" "" ""
+.TH "NPM\-TEAM" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-team\fR \- Manage organization teams and team memberships
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-test.1 b/deps/npm/man/man1/npm-test.1
index 0183a8e079968c..3ee843dfacdcf2 100644
--- a/deps/npm/man/man1/npm-test.1
+++ b/deps/npm/man/man1/npm-test.1
@@ -1,4 +1,4 @@
-.TH "NPM\-TEST" "1" "January 2019" "" ""
+.TH "NPM\-TEST" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-test\fR \- Test a package
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-token.1 b/deps/npm/man/man1/npm-token.1
index d7ab2e18b7478a..bde5a09d649cfd 100644
--- a/deps/npm/man/man1/npm-token.1
+++ b/deps/npm/man/man1/npm-token.1
@@ -1,4 +1,4 @@
-.TH "NPM\-TOKEN" "1" "January 2019" "" ""
+.TH "NPM\-TOKEN" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-token\fR \- Manage your authentication tokens
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-uninstall.1 b/deps/npm/man/man1/npm-uninstall.1
index 07c413e299beea..2c7f3a6f0f7040 100644
--- a/deps/npm/man/man1/npm-uninstall.1
+++ b/deps/npm/man/man1/npm-uninstall.1
@@ -1,4 +1,4 @@
-.TH "NPM\-UNINSTALL" "1" "January 2019" "" ""
+.TH "NPM\-UNINSTALL" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-uninstall\fR \- Remove a package
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-unpublish.1 b/deps/npm/man/man1/npm-unpublish.1
index 25eb7044acb32a..595fe88738aedf 100644
--- a/deps/npm/man/man1/npm-unpublish.1
+++ b/deps/npm/man/man1/npm-unpublish.1
@@ -1,4 +1,4 @@
-.TH "NPM\-UNPUBLISH" "1" "January 2019" "" ""
+.TH "NPM\-UNPUBLISH" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-unpublish\fR \- Remove a package from the registry
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-update.1 b/deps/npm/man/man1/npm-update.1
index 6486b8aef073b4..ab33386c61f614 100644
--- a/deps/npm/man/man1/npm-update.1
+++ b/deps/npm/man/man1/npm-update.1
@@ -1,4 +1,4 @@
-.TH "NPM\-UPDATE" "1" "January 2019" "" ""
+.TH "NPM\-UPDATE" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-update\fR \- Update a package
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-version.1 b/deps/npm/man/man1/npm-version.1
index bae79b58186a5f..25cffbbff8cde7 100644
--- a/deps/npm/man/man1/npm-version.1
+++ b/deps/npm/man/man1/npm-version.1
@@ -1,4 +1,4 @@
-.TH "NPM\-VERSION" "1" "January 2019" "" ""
+.TH "NPM\-VERSION" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-version\fR \- Bump a package version
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-view.1 b/deps/npm/man/man1/npm-view.1
index 713de6e3cb22a8..ce8857f321d4a0 100644
--- a/deps/npm/man/man1/npm-view.1
+++ b/deps/npm/man/man1/npm-view.1
@@ -1,4 +1,4 @@
-.TH "NPM\-VIEW" "1" "January 2019" "" ""
+.TH "NPM\-VIEW" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-view\fR \- View registry info
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-whoami.1 b/deps/npm/man/man1/npm-whoami.1
index 08f23ddf0cbc23..986f3ebb4e3644 100644
--- a/deps/npm/man/man1/npm-whoami.1
+++ b/deps/npm/man/man1/npm-whoami.1
@@ -1,4 +1,4 @@
-.TH "NPM\-WHOAMI" "1" "January 2019" "" ""
+.TH "NPM\-WHOAMI" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-whoami\fR \- Display npm username
 .SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1
index 38cf7686a434b8..ccfed2c63317b7 100644
--- a/deps/npm/man/man1/npm.1
+++ b/deps/npm/man/man1/npm.1
@@ -1,4 +1,4 @@
-.TH "NPM" "1" "January 2019" "" ""
+.TH "NPM" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm\fR \- javascript package manager
 .SH SYNOPSIS
@@ -10,7 +10,7 @@ npm <command> [args]
 .RE
 .SH VERSION
 .P
-6.7.0
+6.9.0
 .SH DESCRIPTION
 .P
 npm is the package manager for the Node JavaScript platform\.  It puts
diff --git a/deps/npm/man/man5/npm-folders.5 b/deps/npm/man/man5/npm-folders.5
index 0fa03d9715058f..e75396131d9e24 100644
--- a/deps/npm/man/man5/npm-folders.5
+++ b/deps/npm/man/man5/npm-folders.5
@@ -1,4 +1,4 @@
-.TH "NPM\-FOLDERS" "5" "January 2019" "" ""
+.TH "NPM\-FOLDERS" "5" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-folders\fR \- Folder Structures Used by npm
 .SH DESCRIPTION
diff --git a/deps/npm/man/man5/npm-global.5 b/deps/npm/man/man5/npm-global.5
index 0fa03d9715058f..e75396131d9e24 100644
--- a/deps/npm/man/man5/npm-global.5
+++ b/deps/npm/man/man5/npm-global.5
@@ -1,4 +1,4 @@
-.TH "NPM\-FOLDERS" "5" "January 2019" "" ""
+.TH "NPM\-FOLDERS" "5" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-folders\fR \- Folder Structures Used by npm
 .SH DESCRIPTION
diff --git a/deps/npm/man/man5/npm-json.5 b/deps/npm/man/man5/npm-json.5
index dd20f7cb5f3ca1..16dc4616f88d71 100644
--- a/deps/npm/man/man5/npm-json.5
+++ b/deps/npm/man/man5/npm-json.5
@@ -1,4 +1,4 @@
-.TH "PACKAGE\.JSON" "5" "January 2019" "" ""
+.TH "PACKAGE\.JSON" "5" "April 2019" "" ""
 .SH "NAME"
 \fBpackage.json\fR \- Specifics of npm's package\.json handling
 .SH DESCRIPTION
@@ -479,6 +479,19 @@ shortcut syntax you use for \fBnpm install\fP:
 "repository": "gitlab:user/repo"
 .fi
 .RE
+.P
+If the \fBpackage\.json\fP for your package is not in the root directory (for example
+if it is part of a monorepo), you can specify the directory in which it lives:
+.P
+.RS 2
+.nf
+"repository": {
+  "type" : "git",
+  "url" : "https://github\.com/facebook/react\.git",
+  "directory": "packages/react\-dom"
+}
+.fi
+.RE
 .SH scripts
 .P
 The "scripts" property is a dictionary containing script commands that are run
diff --git a/deps/npm/man/man5/npm-package-locks.5 b/deps/npm/man/man5/npm-package-locks.5
index b3692cebb2e139..051cea22ade45c 100644
--- a/deps/npm/man/man5/npm-package-locks.5
+++ b/deps/npm/man/man5/npm-package-locks.5
@@ -1,4 +1,4 @@
-.TH "NPM\-PACKAGE\-LOCKS" "5" "January 2019" "" ""
+.TH "NPM\-PACKAGE\-LOCKS" "5" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-package-locks\fR \- An explanation of npm lockfiles
 .SH DESCRIPTION
diff --git a/deps/npm/man/man5/npm-shrinkwrap.json.5 b/deps/npm/man/man5/npm-shrinkwrap.json.5
index c1d4db9af34b74..3cccbadeadb3a3 100644
--- a/deps/npm/man/man5/npm-shrinkwrap.json.5
+++ b/deps/npm/man/man5/npm-shrinkwrap.json.5
@@ -1,4 +1,4 @@
-.TH "NPM\-SHRINKWRAP\.JSON" "5" "January 2019" "" ""
+.TH "NPM\-SHRINKWRAP\.JSON" "5" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-shrinkwrap.json\fR \- A publishable lockfile
 .SH DESCRIPTION
diff --git a/deps/npm/man/man5/npmrc.5 b/deps/npm/man/man5/npmrc.5
index 3d6bf7d568d132..9df0fcc4f58253 100644
--- a/deps/npm/man/man5/npmrc.5
+++ b/deps/npm/man/man5/npmrc.5
@@ -1,4 +1,4 @@
-.TH "NPMRC" "5" "January 2019" "" ""
+.TH "NPMRC" "5" "April 2019" "" ""
 .SH "NAME"
 \fBnpmrc\fR \- The npm config files
 .SH DESCRIPTION
diff --git a/deps/npm/man/man5/package-lock.json.5 b/deps/npm/man/man5/package-lock.json.5
index dcb215423d7303..a3430959f2ddce 100644
--- a/deps/npm/man/man5/package-lock.json.5
+++ b/deps/npm/man/man5/package-lock.json.5
@@ -1,4 +1,4 @@
-.TH "PACKAGE\-LOCK\.JSON" "5" "January 2019" "" ""
+.TH "PACKAGE\-LOCK\.JSON" "5" "April 2019" "" ""
 .SH "NAME"
 \fBpackage-lock.json\fR \- A manifestation of the manifest
 .SH DESCRIPTION
diff --git a/deps/npm/man/man5/package.json.5 b/deps/npm/man/man5/package.json.5
index dd20f7cb5f3ca1..16dc4616f88d71 100644
--- a/deps/npm/man/man5/package.json.5
+++ b/deps/npm/man/man5/package.json.5
@@ -1,4 +1,4 @@
-.TH "PACKAGE\.JSON" "5" "January 2019" "" ""
+.TH "PACKAGE\.JSON" "5" "April 2019" "" ""
 .SH "NAME"
 \fBpackage.json\fR \- Specifics of npm's package\.json handling
 .SH DESCRIPTION
@@ -479,6 +479,19 @@ shortcut syntax you use for \fBnpm install\fP:
 "repository": "gitlab:user/repo"
 .fi
 .RE
+.P
+If the \fBpackage\.json\fP for your package is not in the root directory (for example
+if it is part of a monorepo), you can specify the directory in which it lives:
+.P
+.RS 2
+.nf
+"repository": {
+  "type" : "git",
+  "url" : "https://github\.com/facebook/react\.git",
+  "directory": "packages/react\-dom"
+}
+.fi
+.RE
 .SH scripts
 .P
 The "scripts" property is a dictionary containing script commands that are run
diff --git a/deps/npm/man/man7/npm-coding-style.7 b/deps/npm/man/man7/npm-coding-style.7
index 9268b14cf9f4b9..43fb70d4e3d09a 100644
--- a/deps/npm/man/man7/npm-coding-style.7
+++ b/deps/npm/man/man7/npm-coding-style.7
@@ -1,4 +1,4 @@
-.TH "NPM\-CODING\-STYLE" "7" "January 2019" "" ""
+.TH "NPM\-CODING\-STYLE" "7" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-coding-style\fR \- npm's "funny" coding style
 .SH DESCRIPTION
diff --git a/deps/npm/man/man7/npm-config.7 b/deps/npm/man/man7/npm-config.7
index 9b05942bb0b28f..2d6fb12b980909 100644
--- a/deps/npm/man/man7/npm-config.7
+++ b/deps/npm/man/man7/npm-config.7
@@ -1,4 +1,4 @@
-.TH "NPM\-CONFIG" "7" "January 2019" "" ""
+.TH "NPM\-CONFIG" "7" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-config\fR \- More than you probably want to know about npm configuration
 .SH DESCRIPTION
@@ -244,6 +244,25 @@ Type: \fB\|'legacy'\fP, \fB\|'sso'\fP, \fB\|'saml'\fP, \fB\|'oauth'\fP
 .RE
 .P
 What authentication strategy to use with \fBadduser\fP/\fBlogin\fP\|\.
+.SS before
+.RS 0
+.IP \(bu 2
+Alias: enjoy\-by
+.IP \(bu 2
+Default: null
+.IP \(bu 2
+Type: Date
+
+.RE
+.P
+If passed to \fBnpm install\fP, will rebuild the npm tree such that only versions
+that were available \fBon or before\fR the \fB\-\-before\fP time get installed\.
+If there's no versions available for the current set of direct dependencies, the
+command will error\.
+.P
+If the requested version is a \fBdist\-tag\fP and the given tag does not pass the
+\fB\-\-before\fP filter, the most recent version less than or equal to that tag will
+be used\. For example, \fBfoo@latest\fP might install \fBeven though\fPlatest\fBis\fP2\.0`\.
 .SS bin\-links
 .RS 0
 .IP \(bu 2
diff --git a/deps/npm/man/man7/npm-developers.7 b/deps/npm/man/man7/npm-developers.7
index bd36cbabb7991a..1978b71c012b8c 100644
--- a/deps/npm/man/man7/npm-developers.7
+++ b/deps/npm/man/man7/npm-developers.7
@@ -1,4 +1,4 @@
-.TH "NPM\-DEVELOPERS" "7" "January 2019" "" ""
+.TH "NPM\-DEVELOPERS" "7" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-developers\fR \- Developer Guide
 .SH DESCRIPTION
diff --git a/deps/npm/man/man7/npm-disputes.7 b/deps/npm/man/man7/npm-disputes.7
index 95716579e50527..be22130c6ba710 100644
--- a/deps/npm/man/man7/npm-disputes.7
+++ b/deps/npm/man/man7/npm-disputes.7
@@ -1,4 +1,4 @@
-.TH "NPM\-DISPUTES" "7" "January 2019" "" ""
+.TH "NPM\-DISPUTES" "7" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-disputes\fR \- Handling Module Name Disputes
 .P
diff --git a/deps/npm/man/man7/npm-index.7 b/deps/npm/man/man7/npm-index.7
index 1d7d5d0bf46cac..42d5d12694e093 100644
--- a/deps/npm/man/man7/npm-index.7
+++ b/deps/npm/man/man7/npm-index.7
@@ -1,4 +1,4 @@
-.TH "NPM\-INDEX" "7" "January 2019" "" ""
+.TH "NPM\-INDEX" "7" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-index\fR \- Index of all npm documentation
 .SS npm help README
diff --git a/deps/npm/man/man7/npm-orgs.7 b/deps/npm/man/man7/npm-orgs.7
index 9f34c3cb7940ef..730ee1bca4e2c2 100644
--- a/deps/npm/man/man7/npm-orgs.7
+++ b/deps/npm/man/man7/npm-orgs.7
@@ -1,4 +1,4 @@
-.TH "NPM\-ORGS" "7" "January 2019" "" ""
+.TH "NPM\-ORGS" "7" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-orgs\fR \- Working with Teams & Orgs
 .SH DESCRIPTION
diff --git a/deps/npm/man/man7/npm-registry.7 b/deps/npm/man/man7/npm-registry.7
index 4c454c81f0c313..2798f9b95c1ff4 100644
--- a/deps/npm/man/man7/npm-registry.7
+++ b/deps/npm/man/man7/npm-registry.7
@@ -1,4 +1,4 @@
-.TH "NPM\-REGISTRY" "7" "January 2019" "" ""
+.TH "NPM\-REGISTRY" "7" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-registry\fR \- The JavaScript Package Registry
 .SH DESCRIPTION
diff --git a/deps/npm/man/man7/npm-scope.7 b/deps/npm/man/man7/npm-scope.7
index 6ba7c309224567..ff04169eac7c0a 100644
--- a/deps/npm/man/man7/npm-scope.7
+++ b/deps/npm/man/man7/npm-scope.7
@@ -1,4 +1,4 @@
-.TH "NPM\-SCOPE" "7" "January 2019" "" ""
+.TH "NPM\-SCOPE" "7" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-scope\fR \- Scoped packages
 .SH DESCRIPTION
diff --git a/deps/npm/man/man7/npm-scripts.7 b/deps/npm/man/man7/npm-scripts.7
index 9f5462e8a876d0..bd6bc9dcd26776 100644
--- a/deps/npm/man/man7/npm-scripts.7
+++ b/deps/npm/man/man7/npm-scripts.7
@@ -1,4 +1,4 @@
-.TH "NPM\-SCRIPTS" "7" "January 2019" "" ""
+.TH "NPM\-SCRIPTS" "7" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-scripts\fR \- How npm handles the "scripts" field
 .SH DESCRIPTION
diff --git a/deps/npm/man/man7/removing-npm.7 b/deps/npm/man/man7/removing-npm.7
index f7d0781055cea5..b55ece9bb2b1ab 100644
--- a/deps/npm/man/man7/removing-npm.7
+++ b/deps/npm/man/man7/removing-npm.7
@@ -1,4 +1,4 @@
-.TH "NPM\-REMOVAL" "1" "January 2019" "" ""
+.TH "NPM\-REMOVAL" "1" "April 2019" "" ""
 .SH "NAME"
 \fBnpm-removal\fR \- Cleaning the Slate
 .SH SYNOPSIS
diff --git a/deps/npm/man/man7/semver.7 b/deps/npm/man/man7/semver.7
index 60f62c7e23d013..85f300c4d99737 100644
--- a/deps/npm/man/man7/semver.7
+++ b/deps/npm/man/man7/semver.7
@@ -1,4 +1,4 @@
-.TH "SEMVER" "7" "January 2019" "" ""
+.TH "SEMVER" "7" "April 2019" "" ""
 .SH "NAME"
 \fBsemver\fR \- The semantic versioner for npm
 .SH Install
diff --git a/deps/npm/node_modules/agent-base/index.js b/deps/npm/node_modules/agent-base/index.js
index b1f42e6317431d..0ee6b29699a670 100644
--- a/deps/npm/node_modules/agent-base/index.js
+++ b/deps/npm/node_modules/agent-base/index.js
@@ -94,6 +94,7 @@ Agent.prototype.addRequest = function addRequest(req, _opts) {
   let timeout;
   let timedOut = false;
   const timeoutMs = this.timeout;
+  const freeSocket = this.freeSocket;
 
   function onerror(err) {
     if (req._hadError) return;
@@ -133,10 +134,14 @@ Agent.prototype.addRequest = function addRequest(req, _opts) {
       // responsibility for this `req` to the Agent from here on
       socket.addRequest(req, opts);
     } else if (socket) {
+      function onfree() {
+        freeSocket(socket, opts);
+      }
+      socket.on('free', onfree);
       req.onSocket(socket);
     } else {
       const err = new Error(
-        `no Duplex stream was returned to agent-base for \`${req.method} ${req.path}\``
+        'no Duplex stream was returned to agent-base for `' + req.method + ' ' + req.path + '`'
       );
       onerror(err);
     }
@@ -158,3 +163,8 @@ Agent.prototype.addRequest = function addRequest(req, _opts) {
     Promise.reject(err).catch(callbackError);
   }
 };
+
+Agent.prototype.freeSocket = function freeSocket(socket, opts) {
+  // TODO reuse sockets
+  socket.destroy();
+};
diff --git a/deps/npm/node_modules/agent-base/package.json b/deps/npm/node_modules/agent-base/package.json
index 59c5e0be25956a..08c5330def1560 100644
--- a/deps/npm/node_modules/agent-base/package.json
+++ b/deps/npm/node_modules/agent-base/package.json
@@ -1,31 +1,31 @@
 {
-  "_from": "agent-base@4",
-  "_id": "agent-base@4.2.0",
+  "_from": "agent-base@latest",
+  "_id": "agent-base@4.2.1",
   "_inBundle": false,
-  "_integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==",
+  "_integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
   "_location": "/agent-base",
   "_phantomChildren": {},
   "_requested": {
-    "type": "range",
+    "type": "tag",
     "registry": true,
-    "raw": "agent-base@4",
+    "raw": "agent-base@latest",
     "name": "agent-base",
     "escapedName": "agent-base",
-    "rawSpec": "4",
+    "rawSpec": "latest",
     "saveSpec": null,
-    "fetchSpec": "4"
+    "fetchSpec": "latest"
   },
   "_requiredBy": [
+    "#USER",
+    "/",
     "/http-proxy-agent",
     "/https-proxy-agent",
-    "/npm-profile/socks-proxy-agent",
-    "/npm-registry-fetch/socks-proxy-agent",
     "/socks-proxy-agent"
   ],
-  "_resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.0.tgz",
-  "_shasum": "9838b5c3392b962bad031e6a4c5e1024abec45ce",
-  "_spec": "agent-base@4",
-  "_where": "/Users/rebecca/code/npm/node_modules/http-proxy-agent",
+  "_resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
+  "_shasum": "d89e5999f797875674c07d87f260fc41e83e8ca9",
+  "_spec": "agent-base@latest",
+  "_where": "/Users/zkat/Documents/code/work/npm",
   "author": {
     "name": "Nathan Rajlich",
     "email": "nathan@tootallnate.net",
@@ -65,5 +65,5 @@
   "scripts": {
     "test": "mocha --reporter spec"
   },
-  "version": "4.2.0"
+  "version": "4.2.1"
 }
diff --git a/deps/npm/node_modules/agent-base/test/test.js b/deps/npm/node_modules/agent-base/test/test.js
index da2e91983548b4..6a8ca68e0dcbf7 100644
--- a/deps/npm/node_modules/agent-base/test/test.js
+++ b/deps/npm/node_modules/agent-base/test/test.js
@@ -398,6 +398,30 @@ describe('"http" module', function() {
     });
   });
 
+  it('should free sockets after use', function(done) {
+    var agent = new Agent(function(req, opts, fn) {
+      var socket = net.connect(opts);
+      fn(null, socket);
+    });
+
+    // add HTTP server "request" listener
+    var gotReq = false;
+    server.once('request', function(req, res) {
+      gotReq = true;
+      res.end();
+    });
+
+    var info = url.parse('http://127.0.0.1:' + port + '/foo');
+    info.agent = agent;
+    http.get(info, function(res) {
+      res.socket.emit('free');
+      assert.equal(true, res.socket.destroyed);
+      assert(gotReq);
+      done();
+    });
+  });
+
+
   describe('PassthroughAgent', function() {
     it('should pass through to `http.globalAgent`', function(done) {
       // add HTTP server "request" listener
diff --git a/deps/npm/node_modules/builtin-modules/builtin-modules.json b/deps/npm/node_modules/builtin-modules/builtin-modules.json
deleted file mode 100644
index 72670f6bf5cf54..00000000000000
--- a/deps/npm/node_modules/builtin-modules/builtin-modules.json
+++ /dev/null
@@ -1,35 +0,0 @@
-[
-	"assert",
-	"buffer",
-	"child_process",
-	"cluster",
-	"console",
-	"constants",
-	"crypto",
-	"dgram",
-	"dns",
-	"domain",
-	"events",
-	"fs",
-	"http",
-	"https",
-	"module",
-	"net",
-	"os",
-	"path",
-	"process",
-	"punycode",
-	"querystring",
-	"readline",
-	"repl",
-	"stream",
-	"string_decoder",
-	"timers",
-	"tls",
-	"tty",
-	"url",
-	"util",
-	"v8",
-	"vm",
-	"zlib"
-]
diff --git a/deps/npm/node_modules/builtin-modules/index.js b/deps/npm/node_modules/builtin-modules/index.js
deleted file mode 100644
index 9ef35ab0694e73..00000000000000
--- a/deps/npm/node_modules/builtin-modules/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict';
-
-var blacklist = [
-	'freelist',
-	'sys'
-];
-
-module.exports = Object.keys(process.binding('natives')).filter(function (el) {
-	return !/^_|^internal|\//.test(el) && blacklist.indexOf(el) === -1;
-}).sort();
diff --git a/deps/npm/node_modules/builtin-modules/license b/deps/npm/node_modules/builtin-modules/license
deleted file mode 100644
index 654d0bfe943437..00000000000000
--- a/deps/npm/node_modules/builtin-modules/license
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/deps/npm/node_modules/builtin-modules/package.json b/deps/npm/node_modules/builtin-modules/package.json
deleted file mode 100644
index f5a40cac567270..00000000000000
--- a/deps/npm/node_modules/builtin-modules/package.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
-  "_from": "builtin-modules@^1.0.0",
-  "_id": "builtin-modules@1.1.1",
-  "_inBundle": false,
-  "_integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
-  "_location": "/builtin-modules",
-  "_phantomChildren": {},
-  "_requested": {
-    "type": "range",
-    "registry": true,
-    "raw": "builtin-modules@^1.0.0",
-    "name": "builtin-modules",
-    "escapedName": "builtin-modules",
-    "rawSpec": "^1.0.0",
-    "saveSpec": null,
-    "fetchSpec": "^1.0.0"
-  },
-  "_requiredBy": [
-    "/eslint-plugin-import",
-    "/is-builtin-module"
-  ],
-  "_resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
-  "_shasum": "270f076c5a72c02f5b65a47df94c5fe3a278892f",
-  "_spec": "builtin-modules@^1.0.0",
-  "_where": "/Users/rebecca/code/npm/node_modules/is-builtin-module",
-  "author": {
-    "name": "Sindre Sorhus",
-    "email": "sindresorhus@gmail.com",
-    "url": "sindresorhus.com"
-  },
-  "bugs": {
-    "url": "https://github.com/sindresorhus/builtin-modules/issues"
-  },
-  "bundleDependencies": false,
-  "deprecated": false,
-  "description": "List of the Node.js builtin modules",
-  "devDependencies": {
-    "ava": "*",
-    "xo": "*"
-  },
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "files": [
-    "index.js",
-    "static.js",
-    "builtin-modules.json"
-  ],
-  "homepage": "https://github.com/sindresorhus/builtin-modules#readme",
-  "keywords": [
-    "builtin",
-    "built-in",
-    "builtins",
-    "node",
-    "modules",
-    "core",
-    "bundled",
-    "list",
-    "array",
-    "names"
-  ],
-  "license": "MIT",
-  "name": "builtin-modules",
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/sindresorhus/builtin-modules.git"
-  },
-  "scripts": {
-    "make": "node make.js",
-    "test": "xo && ava"
-  },
-  "version": "1.1.1"
-}
diff --git a/deps/npm/node_modules/builtin-modules/readme.md b/deps/npm/node_modules/builtin-modules/readme.md
deleted file mode 100644
index f1894b1896530b..00000000000000
--- a/deps/npm/node_modules/builtin-modules/readme.md
+++ /dev/null
@@ -1,41 +0,0 @@
-# builtin-modules [![Build Status](https://travis-ci.org/sindresorhus/builtin-modules.svg?branch=master)](https://travis-ci.org/sindresorhus/builtin-modules)
-
-> List of the Node.js builtin modules
-
-The list is just a [JSON file](builtin-modules.json) and can be used wherever.
-
-
-## Install
-
-```
-$ npm install --save builtin-modules
-```
-
-
-## Usage
-
-```js
-var builtinModules = require('builtin-modules');
-
-console.log(builinModules);
-//=> ['assert', 'buffer', ...]
-```
-
-
-## API
-
-Returns an array of builtin modules fetched from the running Node.js version.
-
-### Static list
-
-This module also comes bundled with a static array of builtin modules generated from the latest Node.js version. You can get it with `require('builtin-modules/static');`
-
-
-## Related
-
-- [is-builtin-module](https://github.com/sindresorhus/is-builtin-module) - Check if a string matches the name of a Node.js builtin module
-
-
-## License
-
-MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/deps/npm/node_modules/builtin-modules/static.js b/deps/npm/node_modules/builtin-modules/static.js
deleted file mode 100644
index 9508f8f4ec4212..00000000000000
--- a/deps/npm/node_modules/builtin-modules/static.js
+++ /dev/null
@@ -1,2 +0,0 @@
-'use strict';
-module.exports = require('./builtin-modules.json');
diff --git a/deps/npm/node_modules/es6-promise/dist/es6-promise.auto.js b/deps/npm/node_modules/es6-promise/dist/es6-promise.auto.js
index 9e5e513f56d54c..6312674b519f6f 100644
--- a/deps/npm/node_modules/es6-promise/dist/es6-promise.auto.js
+++ b/deps/npm/node_modules/es6-promise/dist/es6-promise.auto.js
@@ -3,7 +3,7 @@
  * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
  * @license   Licensed under MIT license
  *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
- * @version   v4.2.4+314e4831
+ * @version   v4.2.6+9869a4bc
  */
 
 (function (global, factory) {
@@ -1109,15 +1109,19 @@ var Promise$2 = function () {
     var promise = this;
     var constructor = promise.constructor;
 
-    return promise.then(function (value) {
-      return constructor.resolve(callback()).then(function () {
-        return value;
-      });
-    }, function (reason) {
-      return constructor.resolve(callback()).then(function () {
-        throw reason;
+    if (isFunction(callback)) {
+      return promise.then(function (value) {
+        return constructor.resolve(callback()).then(function () {
+          return value;
+        });
+      }, function (reason) {
+        return constructor.resolve(callback()).then(function () {
+          throw reason;
+        });
       });
-    });
+    }
+
+    return promise.then(callback, callback);
   };
 
   return Promise;
diff --git a/deps/npm/node_modules/es6-promise/dist/es6-promise.auto.map b/deps/npm/node_modules/es6-promise/dist/es6-promise.auto.map
index bff203c5faabf0..0264bd481635de 100644
--- a/deps/npm/node_modules/es6-promise/dist/es6-promise.auto.map
+++ b/deps/npm/node_modules/es6-promise/dist/es6-promise.auto.map
@@ -1 +1 @@
-{"version":3,"sources":["config/versionTemplate.txt","lib/es6-promise/utils.js","lib/es6-promise/asap.js","lib/es6-promise/then.js","lib/es6-promise/promise/resolve.js","lib/es6-promise/-internal.js","lib/es6-promise/enumerator.js","lib/es6-promise/promise/all.js","lib/es6-promise/promise/race.js","lib/es6-promise/promise/reject.js","lib/es6-promise/promise.js","lib/es6-promise/polyfill.js","lib/es6-promise.js","lib/es6-promise.auto.js"],"sourcesContent":["/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license   Licensed under MIT license\n *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version   v4.2.4+314e4831\n */\n","export function objectOrFunction(x) {\n  var type = typeof x;\n  return x !== null && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(x) {\n  return typeof x === 'function';\n}\n\nexport function isMaybeThenable(x) {\n  return x !== null && typeof x === 'object';\n}\n\nvar _isArray = void 0;\nif (Array.isArray) {\n  _isArray = Array.isArray;\n} else {\n  _isArray = function (x) {\n    return Object.prototype.toString.call(x) === '[object Array]';\n  };\n}\n\nexport var isArray = _isArray;","var len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nexport var asap = function asap(callback, arg) {\n  queue[len] = callback;\n  queue[len + 1] = arg;\n  len += 2;\n  if (len === 2) {\n    // If len is 2, that means that we need to schedule an async flush.\n    // If additional callbacks are queued before the queue is flushed, they\n    // will be processed by this flush that we are scheduling.\n    if (customSchedulerFn) {\n      customSchedulerFn(flush);\n    } else {\n      scheduleFlush();\n    }\n  }\n};\n\nexport function setScheduler(scheduleFn) {\n  customSchedulerFn = scheduleFn;\n}\n\nexport function setAsap(asapFn) {\n  asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n  // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n  // see https://github.com/cujojs/when/issues/410 for details\n  return function () {\n    return process.nextTick(flush);\n  };\n}\n\n// vertx\nfunction useVertxTimer() {\n  if (typeof vertxNext !== 'undefined') {\n    return function () {\n      vertxNext(flush);\n    };\n  }\n\n  return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n  var iterations = 0;\n  var observer = new BrowserMutationObserver(flush);\n  var node = document.createTextNode('');\n  observer.observe(node, { characterData: true });\n\n  return function () {\n    node.data = iterations = ++iterations % 2;\n  };\n}\n\n// web worker\nfunction useMessageChannel() {\n  var channel = new MessageChannel();\n  channel.port1.onmessage = flush;\n  return function () {\n    return channel.port2.postMessage(0);\n  };\n}\n\nfunction useSetTimeout() {\n  // Store setTimeout reference so es6-promise will be unaffected by\n  // other code modifying setTimeout (like sinon.useFakeTimers())\n  var globalSetTimeout = setTimeout;\n  return function () {\n    return globalSetTimeout(flush, 1);\n  };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n  for (var i = 0; i < len; i += 2) {\n    var callback = queue[i];\n    var arg = queue[i + 1];\n\n    callback(arg);\n\n    queue[i] = undefined;\n    queue[i + 1] = undefined;\n  }\n\n  len = 0;\n}\n\nfunction attemptVertx() {\n  try {\n    var vertx = Function('return this')().require('vertx');\n    vertxNext = vertx.runOnLoop || vertx.runOnContext;\n    return useVertxTimer();\n  } catch (e) {\n    return useSetTimeout();\n  }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n  scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n  scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n  scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n  scheduleFlush = attemptVertx();\n} else {\n  scheduleFlush = useSetTimeout();\n}","import { invokeCallback, subscribe, FULFILLED, REJECTED, noop, makePromise, PROMISE_ID } from './-internal';\n\nimport { asap } from './asap';\n\nexport default function then(onFulfillment, onRejection) {\n  var parent = this;\n\n  var child = new this.constructor(noop);\n\n  if (child[PROMISE_ID] === undefined) {\n    makePromise(child);\n  }\n\n  var _state = parent._state;\n\n\n  if (_state) {\n    var callback = arguments[_state - 1];\n    asap(function () {\n      return invokeCallback(_state, child, callback, parent._result);\n    });\n  } else {\n    subscribe(parent, child, onFulfillment, onRejection);\n  }\n\n  return child;\n}","import { noop, resolve as _resolve } from '../-internal';\n\n/**\n  `Promise.resolve` returns a promise that will become resolved with the\n  passed `value`. It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    resolve(1);\n  });\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.resolve(1);\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  @method resolve\n  @static\n  @param {Any} value value that the returned promise will be resolved with\n  Useful for tooling.\n  @return {Promise} a promise that will become fulfilled with the given\n  `value`\n*/\nexport default function resolve(object) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (object && typeof object === 'object' && object.constructor === Constructor) {\n    return object;\n  }\n\n  var promise = new Constructor(noop);\n  _resolve(promise, object);\n  return promise;\n}","import { objectOrFunction, isFunction } from './utils';\n\nimport { asap } from './asap';\n\nimport originalThen from './then';\nimport originalResolve from './promise/resolve';\n\nexport var PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n  return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n  return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n  try {\n    return promise.then;\n  } catch (error) {\n    TRY_CATCH_ERROR.error = error;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n  try {\n    then.call(value, fulfillmentHandler, rejectionHandler);\n  } catch (e) {\n    return e;\n  }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n  asap(function (promise) {\n    var sealed = false;\n    var error = tryThen(then, thenable, function (value) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n      if (thenable !== value) {\n        resolve(promise, value);\n      } else {\n        fulfill(promise, value);\n      }\n    }, function (reason) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n\n      reject(promise, reason);\n    }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n    if (!sealed && error) {\n      sealed = true;\n      reject(promise, error);\n    }\n  }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n  if (thenable._state === FULFILLED) {\n    fulfill(promise, thenable._result);\n  } else if (thenable._state === REJECTED) {\n    reject(promise, thenable._result);\n  } else {\n    subscribe(thenable, undefined, function (value) {\n      return resolve(promise, value);\n    }, function (reason) {\n      return reject(promise, reason);\n    });\n  }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then) {\n  if (maybeThenable.constructor === promise.constructor && then === originalThen && maybeThenable.constructor.resolve === originalResolve) {\n    handleOwnThenable(promise, maybeThenable);\n  } else {\n    if (then === TRY_CATCH_ERROR) {\n      reject(promise, TRY_CATCH_ERROR.error);\n      TRY_CATCH_ERROR.error = null;\n    } else if (then === undefined) {\n      fulfill(promise, maybeThenable);\n    } else if (isFunction(then)) {\n      handleForeignThenable(promise, maybeThenable, then);\n    } else {\n      fulfill(promise, maybeThenable);\n    }\n  }\n}\n\nfunction resolve(promise, value) {\n  if (promise === value) {\n    reject(promise, selfFulfillment());\n  } else if (objectOrFunction(value)) {\n    handleMaybeThenable(promise, value, getThen(value));\n  } else {\n    fulfill(promise, value);\n  }\n}\n\nfunction publishRejection(promise) {\n  if (promise._onerror) {\n    promise._onerror(promise._result);\n  }\n\n  publish(promise);\n}\n\nfunction fulfill(promise, value) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n\n  promise._result = value;\n  promise._state = FULFILLED;\n\n  if (promise._subscribers.length !== 0) {\n    asap(publish, promise);\n  }\n}\n\nfunction reject(promise, reason) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n  promise._state = REJECTED;\n  promise._result = reason;\n\n  asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n  var _subscribers = parent._subscribers;\n  var length = _subscribers.length;\n\n\n  parent._onerror = null;\n\n  _subscribers[length] = child;\n  _subscribers[length + FULFILLED] = onFulfillment;\n  _subscribers[length + REJECTED] = onRejection;\n\n  if (length === 0 && parent._state) {\n    asap(publish, parent);\n  }\n}\n\nfunction publish(promise) {\n  var subscribers = promise._subscribers;\n  var settled = promise._state;\n\n  if (subscribers.length === 0) {\n    return;\n  }\n\n  var child = void 0,\n      callback = void 0,\n      detail = promise._result;\n\n  for (var i = 0; i < subscribers.length; i += 3) {\n    child = subscribers[i];\n    callback = subscribers[i + settled];\n\n    if (child) {\n      invokeCallback(settled, child, callback, detail);\n    } else {\n      callback(detail);\n    }\n  }\n\n  promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n  try {\n    return callback(detail);\n  } catch (e) {\n    TRY_CATCH_ERROR.error = e;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n  var hasCallback = isFunction(callback),\n      value = void 0,\n      error = void 0,\n      succeeded = void 0,\n      failed = void 0;\n\n  if (hasCallback) {\n    value = tryCatch(callback, detail);\n\n    if (value === TRY_CATCH_ERROR) {\n      failed = true;\n      error = value.error;\n      value.error = null;\n    } else {\n      succeeded = true;\n    }\n\n    if (promise === value) {\n      reject(promise, cannotReturnOwn());\n      return;\n    }\n  } else {\n    value = detail;\n    succeeded = true;\n  }\n\n  if (promise._state !== PENDING) {\n    // noop\n  } else if (hasCallback && succeeded) {\n    resolve(promise, value);\n  } else if (failed) {\n    reject(promise, error);\n  } else if (settled === FULFILLED) {\n    fulfill(promise, value);\n  } else if (settled === REJECTED) {\n    reject(promise, value);\n  }\n}\n\nfunction initializePromise(promise, resolver) {\n  try {\n    resolver(function resolvePromise(value) {\n      resolve(promise, value);\n    }, function rejectPromise(reason) {\n      reject(promise, reason);\n    });\n  } catch (e) {\n    reject(promise, e);\n  }\n}\n\nvar id = 0;\nfunction nextId() {\n  return id++;\n}\n\nfunction makePromise(promise) {\n  promise[PROMISE_ID] = id++;\n  promise._state = undefined;\n  promise._result = undefined;\n  promise._subscribers = [];\n}\n\nexport { nextId, makePromise, getThen, noop, resolve, reject, fulfill, subscribe, publish, publishRejection, initializePromise, invokeCallback, FULFILLED, REJECTED, PENDING, handleMaybeThenable };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isArray, isMaybeThenable } from './utils';\nimport { noop, reject, fulfill, subscribe, FULFILLED, REJECTED, PENDING, getThen, handleMaybeThenable } from './-internal';\n\nimport then from './then';\nimport Promise from './promise';\nimport originalResolve from './promise/resolve';\nimport originalThen from './then';\nimport { makePromise, PROMISE_ID } from './-internal';\n\nfunction validationError() {\n  return new Error('Array Methods must be provided an Array');\n};\n\nvar Enumerator = function () {\n  function Enumerator(Constructor, input) {\n    this._instanceConstructor = Constructor;\n    this.promise = new Constructor(noop);\n\n    if (!this.promise[PROMISE_ID]) {\n      makePromise(this.promise);\n    }\n\n    if (isArray(input)) {\n      this.length = input.length;\n      this._remaining = input.length;\n\n      this._result = new Array(this.length);\n\n      if (this.length === 0) {\n        fulfill(this.promise, this._result);\n      } else {\n        this.length = this.length || 0;\n        this._enumerate(input);\n        if (this._remaining === 0) {\n          fulfill(this.promise, this._result);\n        }\n      }\n    } else {\n      reject(this.promise, validationError());\n    }\n  }\n\n  Enumerator.prototype._enumerate = function _enumerate(input) {\n    for (var i = 0; this._state === PENDING && i < input.length; i++) {\n      this._eachEntry(input[i], i);\n    }\n  };\n\n  Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n    var c = this._instanceConstructor;\n    var resolve = c.resolve;\n\n\n    if (resolve === originalResolve) {\n      var _then = getThen(entry);\n\n      if (_then === originalThen && entry._state !== PENDING) {\n        this._settledAt(entry._state, i, entry._result);\n      } else if (typeof _then !== 'function') {\n        this._remaining--;\n        this._result[i] = entry;\n      } else if (c === Promise) {\n        var promise = new c(noop);\n        handleMaybeThenable(promise, entry, _then);\n        this._willSettleAt(promise, i);\n      } else {\n        this._willSettleAt(new c(function (resolve) {\n          return resolve(entry);\n        }), i);\n      }\n    } else {\n      this._willSettleAt(resolve(entry), i);\n    }\n  };\n\n  Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n    var promise = this.promise;\n\n\n    if (promise._state === PENDING) {\n      this._remaining--;\n\n      if (state === REJECTED) {\n        reject(promise, value);\n      } else {\n        this._result[i] = value;\n      }\n    }\n\n    if (this._remaining === 0) {\n      fulfill(promise, this._result);\n    }\n  };\n\n  Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n    var enumerator = this;\n\n    subscribe(promise, undefined, function (value) {\n      return enumerator._settledAt(FULFILLED, i, value);\n    }, function (reason) {\n      return enumerator._settledAt(REJECTED, i, reason);\n    });\n  };\n\n  return Enumerator;\n}();\n\nexport default Enumerator;\n;","import Enumerator from '../enumerator';\n\n/**\n  `Promise.all` accepts an array of promises, and returns a new promise which\n  is fulfilled with an array of fulfillment values for the passed promises, or\n  rejected with the reason of the first passed promise to be rejected. It casts all\n  elements of the passed iterable to promises as it runs this algorithm.\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = resolve(2);\n  let promise3 = resolve(3);\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // The array here would be [ 1, 2, 3 ];\n  });\n  ```\n\n  If any of the `promises` given to `all` are rejected, the first promise\n  that is rejected will be given as an argument to the returned promises's\n  rejection handler. For example:\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = reject(new Error(\"2\"));\n  let promise3 = reject(new Error(\"3\"));\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // Code here never runs because there are rejected promises!\n  }, function(error) {\n    // error.message === \"2\"\n  });\n  ```\n\n  @method all\n  @static\n  @param {Array} entries array of promises\n  @param {String} label optional string for labeling the promise.\n  Useful for tooling.\n  @return {Promise} promise that is fulfilled when all `promises` have been\n  fulfilled, or rejected if any of them become rejected.\n  @static\n*/\nexport default function all(entries) {\n  return new Enumerator(this, entries).promise;\n}","import { isArray } from \"../utils\";\n\n/**\n  `Promise.race` returns a new promise which is settled in the same way as the\n  first passed promise to settle.\n\n  Example:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 2');\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // result === 'promise 2' because it was resolved before promise1\n    // was resolved.\n  });\n  ```\n\n  `Promise.race` is deterministic in that only the state of the first\n  settled promise matters. For example, even if other promises given to the\n  `promises` array argument are resolved, but the first settled promise has\n  become rejected before the other promises became fulfilled, the returned\n  promise will become rejected:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      reject(new Error('promise 2'));\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // Code here never runs\n  }, function(reason){\n    // reason.message === 'promise 2' because promise 2 became rejected before\n    // promise 1 became fulfilled\n  });\n  ```\n\n  An example real-world use case is implementing timeouts:\n\n  ```javascript\n  Promise.race([ajax('foo.json'), timeout(5000)])\n  ```\n\n  @method race\n  @static\n  @param {Array} promises array of promises to observe\n  Useful for tooling.\n  @return {Promise} a promise which settles in the same way as the first passed\n  promise to settle.\n*/\nexport default function race(entries) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (!isArray(entries)) {\n    return new Constructor(function (_, reject) {\n      return reject(new TypeError('You must pass an array to race.'));\n    });\n  } else {\n    return new Constructor(function (resolve, reject) {\n      var length = entries.length;\n      for (var i = 0; i < length; i++) {\n        Constructor.resolve(entries[i]).then(resolve, reject);\n      }\n    });\n  }\n}","import { noop, reject as _reject } from '../-internal';\n\n/**\n  `Promise.reject` returns a promise rejected with the passed `reason`.\n  It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    reject(new Error('WHOOPS'));\n  });\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.reject(new Error('WHOOPS'));\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  @method reject\n  @static\n  @param {Any} reason value that the returned promise will be rejected with.\n  Useful for tooling.\n  @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason) {\n  /*jshint validthis:true */\n  var Constructor = this;\n  var promise = new Constructor(noop);\n  _reject(promise, reason);\n  return promise;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isFunction } from './utils';\nimport { noop, nextId, PROMISE_ID, initializePromise } from './-internal';\nimport { asap, setAsap, setScheduler } from './asap';\n\nimport all from './promise/all';\nimport race from './promise/race';\nimport Resolve from './promise/resolve';\nimport Reject from './promise/reject';\nimport then from './then';\n\nfunction needsResolver() {\n  throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n  throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n  Promise objects represent the eventual result of an asynchronous operation. The\n  primary way of interacting with a promise is through its `then` method, which\n  registers callbacks to receive either a promise's eventual value or the reason\n  why the promise cannot be fulfilled.\n\n  Terminology\n  -----------\n\n  - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n  - `thenable` is an object or function that defines a `then` method.\n  - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n  - `exception` is a value that is thrown using the throw statement.\n  - `reason` is a value that indicates why a promise was rejected.\n  - `settled` the final resting state of a promise, fulfilled or rejected.\n\n  A promise can be in one of three states: pending, fulfilled, or rejected.\n\n  Promises that are fulfilled have a fulfillment value and are in the fulfilled\n  state.  Promises that are rejected have a rejection reason and are in the\n  rejected state.  A fulfillment value is never a thenable.\n\n  Promises can also be said to *resolve* a value.  If this value is also a\n  promise, then the original promise's settled state will match the value's\n  settled state.  So a promise that *resolves* a promise that rejects will\n  itself reject, and a promise that *resolves* a promise that fulfills will\n  itself fulfill.\n\n\n  Basic Usage:\n  ------------\n\n  ```js\n  let promise = new Promise(function(resolve, reject) {\n    // on success\n    resolve(value);\n\n    // on failure\n    reject(reason);\n  });\n\n  promise.then(function(value) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Advanced Usage:\n  ---------------\n\n  Promises shine when abstracting away asynchronous interactions such as\n  `XMLHttpRequest`s.\n\n  ```js\n  function getJSON(url) {\n    return new Promise(function(resolve, reject){\n      let xhr = new XMLHttpRequest();\n\n      xhr.open('GET', url);\n      xhr.onreadystatechange = handler;\n      xhr.responseType = 'json';\n      xhr.setRequestHeader('Accept', 'application/json');\n      xhr.send();\n\n      function handler() {\n        if (this.readyState === this.DONE) {\n          if (this.status === 200) {\n            resolve(this.response);\n          } else {\n            reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n          }\n        }\n      };\n    });\n  }\n\n  getJSON('/posts.json').then(function(json) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Unlike callbacks, promises are great composable primitives.\n\n  ```js\n  Promise.all([\n    getJSON('/posts'),\n    getJSON('/comments')\n  ]).then(function(values){\n    values[0] // => postsJSON\n    values[1] // => commentsJSON\n\n    return values;\n  });\n  ```\n\n  @class Promise\n  @param {Function} resolver\n  Useful for tooling.\n  @constructor\n*/\n\nvar Promise = function () {\n  function Promise(resolver) {\n    this[PROMISE_ID] = nextId();\n    this._result = this._state = undefined;\n    this._subscribers = [];\n\n    if (noop !== resolver) {\n      typeof resolver !== 'function' && needsResolver();\n      this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n    }\n  }\n\n  /**\n  The primary way of interacting with a promise is through its `then` method,\n  which registers callbacks to receive either a promise's eventual value or the\n  reason why the promise cannot be fulfilled.\n   ```js\n  findUser().then(function(user){\n    // user is available\n  }, function(reason){\n    // user is unavailable, and you are given the reason why\n  });\n  ```\n   Chaining\n  --------\n   The return value of `then` is itself a promise.  This second, 'downstream'\n  promise is resolved with the return value of the first promise's fulfillment\n  or rejection handler, or rejected if the handler throws an exception.\n   ```js\n  findUser().then(function (user) {\n    return user.name;\n  }, function (reason) {\n    return 'default name';\n  }).then(function (userName) {\n    // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n    // will be `'default name'`\n  });\n   findUser().then(function (user) {\n    throw new Error('Found user, but still unhappy');\n  }, function (reason) {\n    throw new Error('`findUser` rejected and we're unhappy');\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n    // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n  });\n  ```\n  If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n   ```js\n  findUser().then(function (user) {\n    throw new PedagogicalException('Upstream error');\n  }).then(function (value) {\n    // never reached\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // The `PedgagocialException` is propagated all the way down to here\n  });\n  ```\n   Assimilation\n  ------------\n   Sometimes the value you want to propagate to a downstream promise can only be\n  retrieved asynchronously. This can be achieved by returning a promise in the\n  fulfillment or rejection handler. The downstream promise will then be pending\n  until the returned promise is settled. This is called *assimilation*.\n   ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // The user's comments are now available\n  });\n  ```\n   If the assimliated promise rejects, then the downstream promise will also reject.\n   ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // If `findCommentsByAuthor` fulfills, we'll have the value here\n  }, function (reason) {\n    // If `findCommentsByAuthor` rejects, we'll have the reason here\n  });\n  ```\n   Simple Example\n  --------------\n   Synchronous Example\n   ```javascript\n  let result;\n   try {\n    result = findResult();\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n   Errback Example\n   ```js\n  findResult(function(result, err){\n    if (err) {\n      // failure\n    } else {\n      // success\n    }\n  });\n  ```\n   Promise Example;\n   ```javascript\n  findResult().then(function(result){\n    // success\n  }, function(reason){\n    // failure\n  });\n  ```\n   Advanced Example\n  --------------\n   Synchronous Example\n   ```javascript\n  let author, books;\n   try {\n    author = findAuthor();\n    books  = findBooksByAuthor(author);\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n   Errback Example\n   ```js\n   function foundBooks(books) {\n   }\n   function failure(reason) {\n   }\n   findAuthor(function(author, err){\n    if (err) {\n      failure(err);\n      // failure\n    } else {\n      try {\n        findBoooksByAuthor(author, function(books, err) {\n          if (err) {\n            failure(err);\n          } else {\n            try {\n              foundBooks(books);\n            } catch(reason) {\n              failure(reason);\n            }\n          }\n        });\n      } catch(error) {\n        failure(err);\n      }\n      // success\n    }\n  });\n  ```\n   Promise Example;\n   ```javascript\n  findAuthor().\n    then(findBooksByAuthor).\n    then(function(books){\n      // found books\n  }).catch(function(reason){\n    // something went wrong\n  });\n  ```\n   @method then\n  @param {Function} onFulfilled\n  @param {Function} onRejected\n  Useful for tooling.\n  @return {Promise}\n  */\n\n  /**\n  `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n  as the catch block of a try/catch statement.\n  ```js\n  function findAuthor(){\n  throw new Error('couldn't find that author');\n  }\n  // synchronous\n  try {\n  findAuthor();\n  } catch(reason) {\n  // something went wrong\n  }\n  // async with promises\n  findAuthor().catch(function(reason){\n  // something went wrong\n  });\n  ```\n  @method catch\n  @param {Function} onRejection\n  Useful for tooling.\n  @return {Promise}\n  */\n\n\n  Promise.prototype.catch = function _catch(onRejection) {\n    return this.then(null, onRejection);\n  };\n\n  /**\n    `finally` will be invoked regardless of the promise's fate just as native\n    try/catch/finally behaves\n  \n    Synchronous example:\n  \n    ```js\n    findAuthor() {\n      if (Math.random() > 0.5) {\n        throw new Error();\n      }\n      return new Author();\n    }\n  \n    try {\n      return findAuthor(); // succeed or fail\n    } catch(error) {\n      return findOtherAuther();\n    } finally {\n      // always runs\n      // doesn't affect the return value\n    }\n    ```\n  \n    Asynchronous example:\n  \n    ```js\n    findAuthor().catch(function(reason){\n      return findOtherAuther();\n    }).finally(function(){\n      // author was either found, or not\n    });\n    ```\n  \n    @method finally\n    @param {Function} callback\n    @return {Promise}\n  */\n\n\n  Promise.prototype.finally = function _finally(callback) {\n    var promise = this;\n    var constructor = promise.constructor;\n\n    return promise.then(function (value) {\n      return constructor.resolve(callback()).then(function () {\n        return value;\n      });\n    }, function (reason) {\n      return constructor.resolve(callback()).then(function () {\n        throw reason;\n      });\n    });\n  };\n\n  return Promise;\n}();\n\nPromise.prototype.then = then;\nexport default Promise;\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = Resolve;\nPromise.reject = Reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;","/*global self*/\nimport Promise from './promise';\n\nexport default function polyfill() {\n  var local = void 0;\n\n  if (typeof global !== 'undefined') {\n    local = global;\n  } else if (typeof self !== 'undefined') {\n    local = self;\n  } else {\n    try {\n      local = Function('return this')();\n    } catch (e) {\n      throw new Error('polyfill failed because global object is unavailable in this environment');\n    }\n  }\n\n  var P = local.Promise;\n\n  if (P) {\n    var promiseToString = null;\n    try {\n      promiseToString = Object.prototype.toString.call(P.resolve());\n    } catch (e) {\n      // silently ignored\n    }\n\n    if (promiseToString === '[object Promise]' && !P.cast) {\n      return;\n    }\n  }\n\n  local.Promise = Promise;\n}","import Promise from './es6-promise/promise';\nimport polyfill from './es6-promise/polyfill';\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\nexport default Promise;","import Promise from './es6-promise';\nPromise.polyfill();\nexport default Promise;"],"names":["resolve","_resolve","then","originalThen","originalResolve","Promise","reject","_reject","Resolve","Reject"],"mappings":"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","file":"es6-promise.auto.js"}
\ No newline at end of file
+{"version":3,"sources":["config/versionTemplate.txt","lib/es6-promise/utils.js","lib/es6-promise/asap.js","lib/es6-promise/then.js","lib/es6-promise/promise/resolve.js","lib/es6-promise/-internal.js","lib/es6-promise/enumerator.js","lib/es6-promise/promise/all.js","lib/es6-promise/promise/race.js","lib/es6-promise/promise/reject.js","lib/es6-promise/promise.js","lib/es6-promise/polyfill.js","lib/es6-promise.js","lib/es6-promise.auto.js"],"sourcesContent":["/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license   Licensed under MIT license\n *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version   v4.2.6+9869a4bc\n */\n","export function objectOrFunction(x) {\n  var type = typeof x;\n  return x !== null && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(x) {\n  return typeof x === 'function';\n}\n\nexport function isMaybeThenable(x) {\n  return x !== null && typeof x === 'object';\n}\n\nvar _isArray = void 0;\nif (Array.isArray) {\n  _isArray = Array.isArray;\n} else {\n  _isArray = function (x) {\n    return Object.prototype.toString.call(x) === '[object Array]';\n  };\n}\n\nexport var isArray = _isArray;","var len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nexport var asap = function asap(callback, arg) {\n  queue[len] = callback;\n  queue[len + 1] = arg;\n  len += 2;\n  if (len === 2) {\n    // If len is 2, that means that we need to schedule an async flush.\n    // If additional callbacks are queued before the queue is flushed, they\n    // will be processed by this flush that we are scheduling.\n    if (customSchedulerFn) {\n      customSchedulerFn(flush);\n    } else {\n      scheduleFlush();\n    }\n  }\n};\n\nexport function setScheduler(scheduleFn) {\n  customSchedulerFn = scheduleFn;\n}\n\nexport function setAsap(asapFn) {\n  asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n  // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n  // see https://github.com/cujojs/when/issues/410 for details\n  return function () {\n    return process.nextTick(flush);\n  };\n}\n\n// vertx\nfunction useVertxTimer() {\n  if (typeof vertxNext !== 'undefined') {\n    return function () {\n      vertxNext(flush);\n    };\n  }\n\n  return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n  var iterations = 0;\n  var observer = new BrowserMutationObserver(flush);\n  var node = document.createTextNode('');\n  observer.observe(node, { characterData: true });\n\n  return function () {\n    node.data = iterations = ++iterations % 2;\n  };\n}\n\n// web worker\nfunction useMessageChannel() {\n  var channel = new MessageChannel();\n  channel.port1.onmessage = flush;\n  return function () {\n    return channel.port2.postMessage(0);\n  };\n}\n\nfunction useSetTimeout() {\n  // Store setTimeout reference so es6-promise will be unaffected by\n  // other code modifying setTimeout (like sinon.useFakeTimers())\n  var globalSetTimeout = setTimeout;\n  return function () {\n    return globalSetTimeout(flush, 1);\n  };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n  for (var i = 0; i < len; i += 2) {\n    var callback = queue[i];\n    var arg = queue[i + 1];\n\n    callback(arg);\n\n    queue[i] = undefined;\n    queue[i + 1] = undefined;\n  }\n\n  len = 0;\n}\n\nfunction attemptVertx() {\n  try {\n    var vertx = Function('return this')().require('vertx');\n    vertxNext = vertx.runOnLoop || vertx.runOnContext;\n    return useVertxTimer();\n  } catch (e) {\n    return useSetTimeout();\n  }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n  scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n  scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n  scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n  scheduleFlush = attemptVertx();\n} else {\n  scheduleFlush = useSetTimeout();\n}","import { invokeCallback, subscribe, FULFILLED, REJECTED, noop, makePromise, PROMISE_ID } from './-internal';\n\nimport { asap } from './asap';\n\nexport default function then(onFulfillment, onRejection) {\n  var parent = this;\n\n  var child = new this.constructor(noop);\n\n  if (child[PROMISE_ID] === undefined) {\n    makePromise(child);\n  }\n\n  var _state = parent._state;\n\n\n  if (_state) {\n    var callback = arguments[_state - 1];\n    asap(function () {\n      return invokeCallback(_state, child, callback, parent._result);\n    });\n  } else {\n    subscribe(parent, child, onFulfillment, onRejection);\n  }\n\n  return child;\n}","import { noop, resolve as _resolve } from '../-internal';\n\n/**\n  `Promise.resolve` returns a promise that will become resolved with the\n  passed `value`. It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    resolve(1);\n  });\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.resolve(1);\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  @method resolve\n  @static\n  @param {Any} value value that the returned promise will be resolved with\n  Useful for tooling.\n  @return {Promise} a promise that will become fulfilled with the given\n  `value`\n*/\nexport default function resolve(object) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (object && typeof object === 'object' && object.constructor === Constructor) {\n    return object;\n  }\n\n  var promise = new Constructor(noop);\n  _resolve(promise, object);\n  return promise;\n}","import { objectOrFunction, isFunction } from './utils';\n\nimport { asap } from './asap';\n\nimport originalThen from './then';\nimport originalResolve from './promise/resolve';\n\nexport var PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n  return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n  return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n  try {\n    return promise.then;\n  } catch (error) {\n    TRY_CATCH_ERROR.error = error;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n  try {\n    then.call(value, fulfillmentHandler, rejectionHandler);\n  } catch (e) {\n    return e;\n  }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n  asap(function (promise) {\n    var sealed = false;\n    var error = tryThen(then, thenable, function (value) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n      if (thenable !== value) {\n        resolve(promise, value);\n      } else {\n        fulfill(promise, value);\n      }\n    }, function (reason) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n\n      reject(promise, reason);\n    }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n    if (!sealed && error) {\n      sealed = true;\n      reject(promise, error);\n    }\n  }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n  if (thenable._state === FULFILLED) {\n    fulfill(promise, thenable._result);\n  } else if (thenable._state === REJECTED) {\n    reject(promise, thenable._result);\n  } else {\n    subscribe(thenable, undefined, function (value) {\n      return resolve(promise, value);\n    }, function (reason) {\n      return reject(promise, reason);\n    });\n  }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then) {\n  if (maybeThenable.constructor === promise.constructor && then === originalThen && maybeThenable.constructor.resolve === originalResolve) {\n    handleOwnThenable(promise, maybeThenable);\n  } else {\n    if (then === TRY_CATCH_ERROR) {\n      reject(promise, TRY_CATCH_ERROR.error);\n      TRY_CATCH_ERROR.error = null;\n    } else if (then === undefined) {\n      fulfill(promise, maybeThenable);\n    } else if (isFunction(then)) {\n      handleForeignThenable(promise, maybeThenable, then);\n    } else {\n      fulfill(promise, maybeThenable);\n    }\n  }\n}\n\nfunction resolve(promise, value) {\n  if (promise === value) {\n    reject(promise, selfFulfillment());\n  } else if (objectOrFunction(value)) {\n    handleMaybeThenable(promise, value, getThen(value));\n  } else {\n    fulfill(promise, value);\n  }\n}\n\nfunction publishRejection(promise) {\n  if (promise._onerror) {\n    promise._onerror(promise._result);\n  }\n\n  publish(promise);\n}\n\nfunction fulfill(promise, value) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n\n  promise._result = value;\n  promise._state = FULFILLED;\n\n  if (promise._subscribers.length !== 0) {\n    asap(publish, promise);\n  }\n}\n\nfunction reject(promise, reason) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n  promise._state = REJECTED;\n  promise._result = reason;\n\n  asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n  var _subscribers = parent._subscribers;\n  var length = _subscribers.length;\n\n\n  parent._onerror = null;\n\n  _subscribers[length] = child;\n  _subscribers[length + FULFILLED] = onFulfillment;\n  _subscribers[length + REJECTED] = onRejection;\n\n  if (length === 0 && parent._state) {\n    asap(publish, parent);\n  }\n}\n\nfunction publish(promise) {\n  var subscribers = promise._subscribers;\n  var settled = promise._state;\n\n  if (subscribers.length === 0) {\n    return;\n  }\n\n  var child = void 0,\n      callback = void 0,\n      detail = promise._result;\n\n  for (var i = 0; i < subscribers.length; i += 3) {\n    child = subscribers[i];\n    callback = subscribers[i + settled];\n\n    if (child) {\n      invokeCallback(settled, child, callback, detail);\n    } else {\n      callback(detail);\n    }\n  }\n\n  promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n  try {\n    return callback(detail);\n  } catch (e) {\n    TRY_CATCH_ERROR.error = e;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n  var hasCallback = isFunction(callback),\n      value = void 0,\n      error = void 0,\n      succeeded = void 0,\n      failed = void 0;\n\n  if (hasCallback) {\n    value = tryCatch(callback, detail);\n\n    if (value === TRY_CATCH_ERROR) {\n      failed = true;\n      error = value.error;\n      value.error = null;\n    } else {\n      succeeded = true;\n    }\n\n    if (promise === value) {\n      reject(promise, cannotReturnOwn());\n      return;\n    }\n  } else {\n    value = detail;\n    succeeded = true;\n  }\n\n  if (promise._state !== PENDING) {\n    // noop\n  } else if (hasCallback && succeeded) {\n    resolve(promise, value);\n  } else if (failed) {\n    reject(promise, error);\n  } else if (settled === FULFILLED) {\n    fulfill(promise, value);\n  } else if (settled === REJECTED) {\n    reject(promise, value);\n  }\n}\n\nfunction initializePromise(promise, resolver) {\n  try {\n    resolver(function resolvePromise(value) {\n      resolve(promise, value);\n    }, function rejectPromise(reason) {\n      reject(promise, reason);\n    });\n  } catch (e) {\n    reject(promise, e);\n  }\n}\n\nvar id = 0;\nfunction nextId() {\n  return id++;\n}\n\nfunction makePromise(promise) {\n  promise[PROMISE_ID] = id++;\n  promise._state = undefined;\n  promise._result = undefined;\n  promise._subscribers = [];\n}\n\nexport { nextId, makePromise, getThen, noop, resolve, reject, fulfill, subscribe, publish, publishRejection, initializePromise, invokeCallback, FULFILLED, REJECTED, PENDING, handleMaybeThenable };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isArray, isMaybeThenable } from './utils';\nimport { noop, reject, fulfill, subscribe, FULFILLED, REJECTED, PENDING, getThen, handleMaybeThenable } from './-internal';\n\nimport then from './then';\nimport Promise from './promise';\nimport originalResolve from './promise/resolve';\nimport originalThen from './then';\nimport { makePromise, PROMISE_ID } from './-internal';\n\nfunction validationError() {\n  return new Error('Array Methods must be provided an Array');\n};\n\nvar Enumerator = function () {\n  function Enumerator(Constructor, input) {\n    this._instanceConstructor = Constructor;\n    this.promise = new Constructor(noop);\n\n    if (!this.promise[PROMISE_ID]) {\n      makePromise(this.promise);\n    }\n\n    if (isArray(input)) {\n      this.length = input.length;\n      this._remaining = input.length;\n\n      this._result = new Array(this.length);\n\n      if (this.length === 0) {\n        fulfill(this.promise, this._result);\n      } else {\n        this.length = this.length || 0;\n        this._enumerate(input);\n        if (this._remaining === 0) {\n          fulfill(this.promise, this._result);\n        }\n      }\n    } else {\n      reject(this.promise, validationError());\n    }\n  }\n\n  Enumerator.prototype._enumerate = function _enumerate(input) {\n    for (var i = 0; this._state === PENDING && i < input.length; i++) {\n      this._eachEntry(input[i], i);\n    }\n  };\n\n  Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n    var c = this._instanceConstructor;\n    var resolve = c.resolve;\n\n\n    if (resolve === originalResolve) {\n      var _then = getThen(entry);\n\n      if (_then === originalThen && entry._state !== PENDING) {\n        this._settledAt(entry._state, i, entry._result);\n      } else if (typeof _then !== 'function') {\n        this._remaining--;\n        this._result[i] = entry;\n      } else if (c === Promise) {\n        var promise = new c(noop);\n        handleMaybeThenable(promise, entry, _then);\n        this._willSettleAt(promise, i);\n      } else {\n        this._willSettleAt(new c(function (resolve) {\n          return resolve(entry);\n        }), i);\n      }\n    } else {\n      this._willSettleAt(resolve(entry), i);\n    }\n  };\n\n  Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n    var promise = this.promise;\n\n\n    if (promise._state === PENDING) {\n      this._remaining--;\n\n      if (state === REJECTED) {\n        reject(promise, value);\n      } else {\n        this._result[i] = value;\n      }\n    }\n\n    if (this._remaining === 0) {\n      fulfill(promise, this._result);\n    }\n  };\n\n  Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n    var enumerator = this;\n\n    subscribe(promise, undefined, function (value) {\n      return enumerator._settledAt(FULFILLED, i, value);\n    }, function (reason) {\n      return enumerator._settledAt(REJECTED, i, reason);\n    });\n  };\n\n  return Enumerator;\n}();\n\nexport default Enumerator;\n;","import Enumerator from '../enumerator';\n\n/**\n  `Promise.all` accepts an array of promises, and returns a new promise which\n  is fulfilled with an array of fulfillment values for the passed promises, or\n  rejected with the reason of the first passed promise to be rejected. It casts all\n  elements of the passed iterable to promises as it runs this algorithm.\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = resolve(2);\n  let promise3 = resolve(3);\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // The array here would be [ 1, 2, 3 ];\n  });\n  ```\n\n  If any of the `promises` given to `all` are rejected, the first promise\n  that is rejected will be given as an argument to the returned promises's\n  rejection handler. For example:\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = reject(new Error(\"2\"));\n  let promise3 = reject(new Error(\"3\"));\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // Code here never runs because there are rejected promises!\n  }, function(error) {\n    // error.message === \"2\"\n  });\n  ```\n\n  @method all\n  @static\n  @param {Array} entries array of promises\n  @param {String} label optional string for labeling the promise.\n  Useful for tooling.\n  @return {Promise} promise that is fulfilled when all `promises` have been\n  fulfilled, or rejected if any of them become rejected.\n  @static\n*/\nexport default function all(entries) {\n  return new Enumerator(this, entries).promise;\n}","import { isArray } from \"../utils\";\n\n/**\n  `Promise.race` returns a new promise which is settled in the same way as the\n  first passed promise to settle.\n\n  Example:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 2');\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // result === 'promise 2' because it was resolved before promise1\n    // was resolved.\n  });\n  ```\n\n  `Promise.race` is deterministic in that only the state of the first\n  settled promise matters. For example, even if other promises given to the\n  `promises` array argument are resolved, but the first settled promise has\n  become rejected before the other promises became fulfilled, the returned\n  promise will become rejected:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      reject(new Error('promise 2'));\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // Code here never runs\n  }, function(reason){\n    // reason.message === 'promise 2' because promise 2 became rejected before\n    // promise 1 became fulfilled\n  });\n  ```\n\n  An example real-world use case is implementing timeouts:\n\n  ```javascript\n  Promise.race([ajax('foo.json'), timeout(5000)])\n  ```\n\n  @method race\n  @static\n  @param {Array} promises array of promises to observe\n  Useful for tooling.\n  @return {Promise} a promise which settles in the same way as the first passed\n  promise to settle.\n*/\nexport default function race(entries) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (!isArray(entries)) {\n    return new Constructor(function (_, reject) {\n      return reject(new TypeError('You must pass an array to race.'));\n    });\n  } else {\n    return new Constructor(function (resolve, reject) {\n      var length = entries.length;\n      for (var i = 0; i < length; i++) {\n        Constructor.resolve(entries[i]).then(resolve, reject);\n      }\n    });\n  }\n}","import { noop, reject as _reject } from '../-internal';\n\n/**\n  `Promise.reject` returns a promise rejected with the passed `reason`.\n  It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    reject(new Error('WHOOPS'));\n  });\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.reject(new Error('WHOOPS'));\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  @method reject\n  @static\n  @param {Any} reason value that the returned promise will be rejected with.\n  Useful for tooling.\n  @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason) {\n  /*jshint validthis:true */\n  var Constructor = this;\n  var promise = new Constructor(noop);\n  _reject(promise, reason);\n  return promise;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isFunction } from './utils';\nimport { noop, nextId, PROMISE_ID, initializePromise } from './-internal';\nimport { asap, setAsap, setScheduler } from './asap';\n\nimport all from './promise/all';\nimport race from './promise/race';\nimport Resolve from './promise/resolve';\nimport Reject from './promise/reject';\nimport then from './then';\n\nfunction needsResolver() {\n  throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n  throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n  Promise objects represent the eventual result of an asynchronous operation. The\n  primary way of interacting with a promise is through its `then` method, which\n  registers callbacks to receive either a promise's eventual value or the reason\n  why the promise cannot be fulfilled.\n\n  Terminology\n  -----------\n\n  - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n  - `thenable` is an object or function that defines a `then` method.\n  - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n  - `exception` is a value that is thrown using the throw statement.\n  - `reason` is a value that indicates why a promise was rejected.\n  - `settled` the final resting state of a promise, fulfilled or rejected.\n\n  A promise can be in one of three states: pending, fulfilled, or rejected.\n\n  Promises that are fulfilled have a fulfillment value and are in the fulfilled\n  state.  Promises that are rejected have a rejection reason and are in the\n  rejected state.  A fulfillment value is never a thenable.\n\n  Promises can also be said to *resolve* a value.  If this value is also a\n  promise, then the original promise's settled state will match the value's\n  settled state.  So a promise that *resolves* a promise that rejects will\n  itself reject, and a promise that *resolves* a promise that fulfills will\n  itself fulfill.\n\n\n  Basic Usage:\n  ------------\n\n  ```js\n  let promise = new Promise(function(resolve, reject) {\n    // on success\n    resolve(value);\n\n    // on failure\n    reject(reason);\n  });\n\n  promise.then(function(value) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Advanced Usage:\n  ---------------\n\n  Promises shine when abstracting away asynchronous interactions such as\n  `XMLHttpRequest`s.\n\n  ```js\n  function getJSON(url) {\n    return new Promise(function(resolve, reject){\n      let xhr = new XMLHttpRequest();\n\n      xhr.open('GET', url);\n      xhr.onreadystatechange = handler;\n      xhr.responseType = 'json';\n      xhr.setRequestHeader('Accept', 'application/json');\n      xhr.send();\n\n      function handler() {\n        if (this.readyState === this.DONE) {\n          if (this.status === 200) {\n            resolve(this.response);\n          } else {\n            reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n          }\n        }\n      };\n    });\n  }\n\n  getJSON('/posts.json').then(function(json) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Unlike callbacks, promises are great composable primitives.\n\n  ```js\n  Promise.all([\n    getJSON('/posts'),\n    getJSON('/comments')\n  ]).then(function(values){\n    values[0] // => postsJSON\n    values[1] // => commentsJSON\n\n    return values;\n  });\n  ```\n\n  @class Promise\n  @param {Function} resolver\n  Useful for tooling.\n  @constructor\n*/\n\nvar Promise = function () {\n  function Promise(resolver) {\n    this[PROMISE_ID] = nextId();\n    this._result = this._state = undefined;\n    this._subscribers = [];\n\n    if (noop !== resolver) {\n      typeof resolver !== 'function' && needsResolver();\n      this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n    }\n  }\n\n  /**\n  The primary way of interacting with a promise is through its `then` method,\n  which registers callbacks to receive either a promise's eventual value or the\n  reason why the promise cannot be fulfilled.\n   ```js\n  findUser().then(function(user){\n    // user is available\n  }, function(reason){\n    // user is unavailable, and you are given the reason why\n  });\n  ```\n   Chaining\n  --------\n   The return value of `then` is itself a promise.  This second, 'downstream'\n  promise is resolved with the return value of the first promise's fulfillment\n  or rejection handler, or rejected if the handler throws an exception.\n   ```js\n  findUser().then(function (user) {\n    return user.name;\n  }, function (reason) {\n    return 'default name';\n  }).then(function (userName) {\n    // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n    // will be `'default name'`\n  });\n   findUser().then(function (user) {\n    throw new Error('Found user, but still unhappy');\n  }, function (reason) {\n    throw new Error('`findUser` rejected and we're unhappy');\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n    // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n  });\n  ```\n  If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n   ```js\n  findUser().then(function (user) {\n    throw new PedagogicalException('Upstream error');\n  }).then(function (value) {\n    // never reached\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // The `PedgagocialException` is propagated all the way down to here\n  });\n  ```\n   Assimilation\n  ------------\n   Sometimes the value you want to propagate to a downstream promise can only be\n  retrieved asynchronously. This can be achieved by returning a promise in the\n  fulfillment or rejection handler. The downstream promise will then be pending\n  until the returned promise is settled. This is called *assimilation*.\n   ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // The user's comments are now available\n  });\n  ```\n   If the assimliated promise rejects, then the downstream promise will also reject.\n   ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // If `findCommentsByAuthor` fulfills, we'll have the value here\n  }, function (reason) {\n    // If `findCommentsByAuthor` rejects, we'll have the reason here\n  });\n  ```\n   Simple Example\n  --------------\n   Synchronous Example\n   ```javascript\n  let result;\n   try {\n    result = findResult();\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n   Errback Example\n   ```js\n  findResult(function(result, err){\n    if (err) {\n      // failure\n    } else {\n      // success\n    }\n  });\n  ```\n   Promise Example;\n   ```javascript\n  findResult().then(function(result){\n    // success\n  }, function(reason){\n    // failure\n  });\n  ```\n   Advanced Example\n  --------------\n   Synchronous Example\n   ```javascript\n  let author, books;\n   try {\n    author = findAuthor();\n    books  = findBooksByAuthor(author);\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n   Errback Example\n   ```js\n   function foundBooks(books) {\n   }\n   function failure(reason) {\n   }\n   findAuthor(function(author, err){\n    if (err) {\n      failure(err);\n      // failure\n    } else {\n      try {\n        findBoooksByAuthor(author, function(books, err) {\n          if (err) {\n            failure(err);\n          } else {\n            try {\n              foundBooks(books);\n            } catch(reason) {\n              failure(reason);\n            }\n          }\n        });\n      } catch(error) {\n        failure(err);\n      }\n      // success\n    }\n  });\n  ```\n   Promise Example;\n   ```javascript\n  findAuthor().\n    then(findBooksByAuthor).\n    then(function(books){\n      // found books\n  }).catch(function(reason){\n    // something went wrong\n  });\n  ```\n   @method then\n  @param {Function} onFulfilled\n  @param {Function} onRejected\n  Useful for tooling.\n  @return {Promise}\n  */\n\n  /**\n  `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n  as the catch block of a try/catch statement.\n  ```js\n  function findAuthor(){\n  throw new Error('couldn't find that author');\n  }\n  // synchronous\n  try {\n  findAuthor();\n  } catch(reason) {\n  // something went wrong\n  }\n  // async with promises\n  findAuthor().catch(function(reason){\n  // something went wrong\n  });\n  ```\n  @method catch\n  @param {Function} onRejection\n  Useful for tooling.\n  @return {Promise}\n  */\n\n\n  Promise.prototype.catch = function _catch(onRejection) {\n    return this.then(null, onRejection);\n  };\n\n  /**\n    `finally` will be invoked regardless of the promise's fate just as native\n    try/catch/finally behaves\n  \n    Synchronous example:\n  \n    ```js\n    findAuthor() {\n      if (Math.random() > 0.5) {\n        throw new Error();\n      }\n      return new Author();\n    }\n  \n    try {\n      return findAuthor(); // succeed or fail\n    } catch(error) {\n      return findOtherAuther();\n    } finally {\n      // always runs\n      // doesn't affect the return value\n    }\n    ```\n  \n    Asynchronous example:\n  \n    ```js\n    findAuthor().catch(function(reason){\n      return findOtherAuther();\n    }).finally(function(){\n      // author was either found, or not\n    });\n    ```\n  \n    @method finally\n    @param {Function} callback\n    @return {Promise}\n  */\n\n\n  Promise.prototype.finally = function _finally(callback) {\n    var promise = this;\n    var constructor = promise.constructor;\n\n    if (isFunction(callback)) {\n      return promise.then(function (value) {\n        return constructor.resolve(callback()).then(function () {\n          return value;\n        });\n      }, function (reason) {\n        return constructor.resolve(callback()).then(function () {\n          throw reason;\n        });\n      });\n    }\n\n    return promise.then(callback, callback);\n  };\n\n  return Promise;\n}();\n\nPromise.prototype.then = then;\nexport default Promise;\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = Resolve;\nPromise.reject = Reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;","/*global self*/\nimport Promise from './promise';\n\nexport default function polyfill() {\n  var local = void 0;\n\n  if (typeof global !== 'undefined') {\n    local = global;\n  } else if (typeof self !== 'undefined') {\n    local = self;\n  } else {\n    try {\n      local = Function('return this')();\n    } catch (e) {\n      throw new Error('polyfill failed because global object is unavailable in this environment');\n    }\n  }\n\n  var P = local.Promise;\n\n  if (P) {\n    var promiseToString = null;\n    try {\n      promiseToString = Object.prototype.toString.call(P.resolve());\n    } catch (e) {\n      // silently ignored\n    }\n\n    if (promiseToString === '[object Promise]' && !P.cast) {\n      return;\n    }\n  }\n\n  local.Promise = Promise;\n}","import Promise from './es6-promise/promise';\nimport polyfill from './es6-promise/polyfill';\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\nexport default Promise;","import Promise from './es6-promise';\nPromise.polyfill();\nexport default Promise;"],"names":["resolve","_resolve","then","originalThen","originalResolve","Promise","reject","_reject","Resolve","Reject"],"mappings":"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","file":"es6-promise.auto.js"}
\ No newline at end of file
diff --git a/deps/npm/node_modules/es6-promise/dist/es6-promise.auto.min.js b/deps/npm/node_modules/es6-promise/dist/es6-promise.auto.min.js
index fdf8bff2676cc2..586ddb4bcaa668 100644
--- a/deps/npm/node_modules/es6-promise/dist/es6-promise.auto.min.js
+++ b/deps/npm/node_modules/es6-promise/dist/es6-promise.auto.min.js
@@ -1 +1 @@
-!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.ES6Promise=e()}(this,function(){"use strict";function t(t){var e=typeof t;return null!==t&&("object"===e||"function"===e)}function e(t){return"function"==typeof t}function n(t){B=t}function r(t){G=t}function o(){return function(){return process.nextTick(a)}}function i(){return"undefined"!=typeof z?function(){z(a)}:c()}function s(){var t=0,e=new J(a),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}function u(){var t=new MessageChannel;return t.port1.onmessage=a,function(){return t.port2.postMessage(0)}}function c(){var t=setTimeout;return function(){return t(a,1)}}function a(){for(var t=0;t<W;t+=2){var e=V[t],n=V[t+1];e(n),V[t]=void 0,V[t+1]=void 0}W=0}function f(){try{var t=Function("return this")().require("vertx");return z=t.runOnLoop||t.runOnContext,i()}catch(e){return c()}}function l(t,e){var n=this,r=new this.constructor(p);void 0===r[Z]&&O(r);var o=n._state;if(o){var i=arguments[o-1];G(function(){return P(o,r,i,n._result)})}else E(n,r,t,e);return r}function h(t){var e=this;if(t&&"object"==typeof t&&t.constructor===e)return t;var n=new e(p);return g(n,t),n}function p(){}function v(){return new TypeError("You cannot resolve a promise with itself")}function d(){return new TypeError("A promises callback cannot return that same promise.")}function _(t){try{return t.then}catch(e){return nt.error=e,nt}}function y(t,e,n,r){try{t.call(e,n,r)}catch(o){return o}}function m(t,e,n){G(function(t){var r=!1,o=y(n,e,function(n){r||(r=!0,e!==n?g(t,n):S(t,n))},function(e){r||(r=!0,j(t,e))},"Settle: "+(t._label||" unknown promise"));!r&&o&&(r=!0,j(t,o))},t)}function b(t,e){e._state===tt?S(t,e._result):e._state===et?j(t,e._result):E(e,void 0,function(e){return g(t,e)},function(e){return j(t,e)})}function w(t,n,r){n.constructor===t.constructor&&r===l&&n.constructor.resolve===h?b(t,n):r===nt?(j(t,nt.error),nt.error=null):void 0===r?S(t,n):e(r)?m(t,n,r):S(t,n)}function g(e,n){e===n?j(e,v()):t(n)?w(e,n,_(n)):S(e,n)}function A(t){t._onerror&&t._onerror(t._result),T(t)}function S(t,e){t._state===$&&(t._result=e,t._state=tt,0!==t._subscribers.length&&G(T,t))}function j(t,e){t._state===$&&(t._state=et,t._result=e,G(A,t))}function E(t,e,n,r){var o=t._subscribers,i=o.length;t._onerror=null,o[i]=e,o[i+tt]=n,o[i+et]=r,0===i&&t._state&&G(T,t)}function T(t){var e=t._subscribers,n=t._state;if(0!==e.length){for(var r=void 0,o=void 0,i=t._result,s=0;s<e.length;s+=3)r=e[s],o=e[s+n],r?P(n,r,o,i):o(i);t._subscribers.length=0}}function M(t,e){try{return t(e)}catch(n){return nt.error=n,nt}}function P(t,n,r,o){var i=e(r),s=void 0,u=void 0,c=void 0,a=void 0;if(i){if(s=M(r,o),s===nt?(a=!0,u=s.error,s.error=null):c=!0,n===s)return void j(n,d())}else s=o,c=!0;n._state!==$||(i&&c?g(n,s):a?j(n,u):t===tt?S(n,s):t===et&&j(n,s))}function x(t,e){try{e(function(e){g(t,e)},function(e){j(t,e)})}catch(n){j(t,n)}}function C(){return rt++}function O(t){t[Z]=rt++,t._state=void 0,t._result=void 0,t._subscribers=[]}function k(){return new Error("Array Methods must be provided an Array")}function F(t){return new ot(this,t).promise}function Y(t){var e=this;return new e(U(t)?function(n,r){for(var o=t.length,i=0;i<o;i++)e.resolve(t[i]).then(n,r)}:function(t,e){return e(new TypeError("You must pass an array to race."))})}function q(t){var e=this,n=new e(p);return j(n,t),n}function D(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function K(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function L(){var t=void 0;if("undefined"!=typeof global)t=global;else if("undefined"!=typeof self)t=self;else try{t=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var n=t.Promise;if(n){var r=null;try{r=Object.prototype.toString.call(n.resolve())}catch(e){}if("[object Promise]"===r&&!n.cast)return}t.Promise=it}var N=void 0;N=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)};var U=N,W=0,z=void 0,B=void 0,G=function(t,e){V[W]=t,V[W+1]=e,W+=2,2===W&&(B?B(a):X())},H="undefined"!=typeof window?window:void 0,I=H||{},J=I.MutationObserver||I.WebKitMutationObserver,Q="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),R="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,V=new Array(1e3),X=void 0;X=Q?o():J?s():R?u():void 0===H&&"function"==typeof require?f():c();var Z=Math.random().toString(36).substring(2),$=void 0,tt=1,et=2,nt={error:null},rt=0,ot=function(){function t(t,e){this._instanceConstructor=t,this.promise=new t(p),this.promise[Z]||O(this.promise),U(e)?(this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?S(this.promise,this._result):(this.length=this.length||0,this._enumerate(e),0===this._remaining&&S(this.promise,this._result))):j(this.promise,k())}return t.prototype._enumerate=function(t){for(var e=0;this._state===$&&e<t.length;e++)this._eachEntry(t[e],e)},t.prototype._eachEntry=function(t,e){var n=this._instanceConstructor,r=n.resolve;if(r===h){var o=_(t);if(o===l&&t._state!==$)this._settledAt(t._state,e,t._result);else if("function"!=typeof o)this._remaining--,this._result[e]=t;else if(n===it){var i=new n(p);w(i,t,o),this._willSettleAt(i,e)}else this._willSettleAt(new n(function(e){return e(t)}),e)}else this._willSettleAt(r(t),e)},t.prototype._settledAt=function(t,e,n){var r=this.promise;r._state===$&&(this._remaining--,t===et?j(r,n):this._result[e]=n),0===this._remaining&&S(r,this._result)},t.prototype._willSettleAt=function(t,e){var n=this;E(t,void 0,function(t){return n._settledAt(tt,e,t)},function(t){return n._settledAt(et,e,t)})},t}(),it=function(){function t(e){this[Z]=C(),this._result=this._state=void 0,this._subscribers=[],p!==e&&("function"!=typeof e&&D(),this instanceof t?x(this,e):K())}return t.prototype["catch"]=function(t){return this.then(null,t)},t.prototype["finally"]=function(t){var e=this,n=e.constructor;return e.then(function(e){return n.resolve(t()).then(function(){return e})},function(e){return n.resolve(t()).then(function(){throw e})})},t}();return it.prototype.then=l,it.all=F,it.race=Y,it.resolve=h,it.reject=q,it._setScheduler=n,it._setAsap=r,it._asap=G,it.polyfill=L,it.Promise=it,it.polyfill(),it});
\ No newline at end of file
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.ES6Promise=e()}(this,function(){"use strict";function t(t){var e=typeof t;return null!==t&&("object"===e||"function"===e)}function e(t){return"function"==typeof t}function n(t){B=t}function r(t){G=t}function o(){return function(){return process.nextTick(a)}}function i(){return"undefined"!=typeof z?function(){z(a)}:c()}function s(){var t=0,e=new J(a),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}function u(){var t=new MessageChannel;return t.port1.onmessage=a,function(){return t.port2.postMessage(0)}}function c(){var t=setTimeout;return function(){return t(a,1)}}function a(){for(var t=0;t<W;t+=2){var e=V[t],n=V[t+1];e(n),V[t]=void 0,V[t+1]=void 0}W=0}function f(){try{var t=Function("return this")().require("vertx");return z=t.runOnLoop||t.runOnContext,i()}catch(e){return c()}}function l(t,e){var n=this,r=new this.constructor(p);void 0===r[Z]&&O(r);var o=n._state;if(o){var i=arguments[o-1];G(function(){return P(o,r,i,n._result)})}else E(n,r,t,e);return r}function h(t){var e=this;if(t&&"object"==typeof t&&t.constructor===e)return t;var n=new e(p);return g(n,t),n}function p(){}function v(){return new TypeError("You cannot resolve a promise with itself")}function d(){return new TypeError("A promises callback cannot return that same promise.")}function _(t){try{return t.then}catch(e){return nt.error=e,nt}}function y(t,e,n,r){try{t.call(e,n,r)}catch(o){return o}}function m(t,e,n){G(function(t){var r=!1,o=y(n,e,function(n){r||(r=!0,e!==n?g(t,n):S(t,n))},function(e){r||(r=!0,j(t,e))},"Settle: "+(t._label||" unknown promise"));!r&&o&&(r=!0,j(t,o))},t)}function b(t,e){e._state===tt?S(t,e._result):e._state===et?j(t,e._result):E(e,void 0,function(e){return g(t,e)},function(e){return j(t,e)})}function w(t,n,r){n.constructor===t.constructor&&r===l&&n.constructor.resolve===h?b(t,n):r===nt?(j(t,nt.error),nt.error=null):void 0===r?S(t,n):e(r)?m(t,n,r):S(t,n)}function g(e,n){e===n?j(e,v()):t(n)?w(e,n,_(n)):S(e,n)}function A(t){t._onerror&&t._onerror(t._result),T(t)}function S(t,e){t._state===$&&(t._result=e,t._state=tt,0!==t._subscribers.length&&G(T,t))}function j(t,e){t._state===$&&(t._state=et,t._result=e,G(A,t))}function E(t,e,n,r){var o=t._subscribers,i=o.length;t._onerror=null,o[i]=e,o[i+tt]=n,o[i+et]=r,0===i&&t._state&&G(T,t)}function T(t){var e=t._subscribers,n=t._state;if(0!==e.length){for(var r=void 0,o=void 0,i=t._result,s=0;s<e.length;s+=3)r=e[s],o=e[s+n],r?P(n,r,o,i):o(i);t._subscribers.length=0}}function M(t,e){try{return t(e)}catch(n){return nt.error=n,nt}}function P(t,n,r,o){var i=e(r),s=void 0,u=void 0,c=void 0,a=void 0;if(i){if(s=M(r,o),s===nt?(a=!0,u=s.error,s.error=null):c=!0,n===s)return void j(n,d())}else s=o,c=!0;n._state!==$||(i&&c?g(n,s):a?j(n,u):t===tt?S(n,s):t===et&&j(n,s))}function x(t,e){try{e(function(e){g(t,e)},function(e){j(t,e)})}catch(n){j(t,n)}}function C(){return rt++}function O(t){t[Z]=rt++,t._state=void 0,t._result=void 0,t._subscribers=[]}function k(){return new Error("Array Methods must be provided an Array")}function F(t){return new ot(this,t).promise}function Y(t){var e=this;return new e(U(t)?function(n,r){for(var o=t.length,i=0;i<o;i++)e.resolve(t[i]).then(n,r)}:function(t,e){return e(new TypeError("You must pass an array to race."))})}function q(t){var e=this,n=new e(p);return j(n,t),n}function D(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function K(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function L(){var t=void 0;if("undefined"!=typeof global)t=global;else if("undefined"!=typeof self)t=self;else try{t=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var n=t.Promise;if(n){var r=null;try{r=Object.prototype.toString.call(n.resolve())}catch(e){}if("[object Promise]"===r&&!n.cast)return}t.Promise=it}var N=void 0;N=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)};var U=N,W=0,z=void 0,B=void 0,G=function(t,e){V[W]=t,V[W+1]=e,W+=2,2===W&&(B?B(a):X())},H="undefined"!=typeof window?window:void 0,I=H||{},J=I.MutationObserver||I.WebKitMutationObserver,Q="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),R="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,V=new Array(1e3),X=void 0;X=Q?o():J?s():R?u():void 0===H&&"function"==typeof require?f():c();var Z=Math.random().toString(36).substring(2),$=void 0,tt=1,et=2,nt={error:null},rt=0,ot=function(){function t(t,e){this._instanceConstructor=t,this.promise=new t(p),this.promise[Z]||O(this.promise),U(e)?(this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?S(this.promise,this._result):(this.length=this.length||0,this._enumerate(e),0===this._remaining&&S(this.promise,this._result))):j(this.promise,k())}return t.prototype._enumerate=function(t){for(var e=0;this._state===$&&e<t.length;e++)this._eachEntry(t[e],e)},t.prototype._eachEntry=function(t,e){var n=this._instanceConstructor,r=n.resolve;if(r===h){var o=_(t);if(o===l&&t._state!==$)this._settledAt(t._state,e,t._result);else if("function"!=typeof o)this._remaining--,this._result[e]=t;else if(n===it){var i=new n(p);w(i,t,o),this._willSettleAt(i,e)}else this._willSettleAt(new n(function(e){return e(t)}),e)}else this._willSettleAt(r(t),e)},t.prototype._settledAt=function(t,e,n){var r=this.promise;r._state===$&&(this._remaining--,t===et?j(r,n):this._result[e]=n),0===this._remaining&&S(r,this._result)},t.prototype._willSettleAt=function(t,e){var n=this;E(t,void 0,function(t){return n._settledAt(tt,e,t)},function(t){return n._settledAt(et,e,t)})},t}(),it=function(){function t(e){this[Z]=C(),this._result=this._state=void 0,this._subscribers=[],p!==e&&("function"!=typeof e&&D(),this instanceof t?x(this,e):K())}return t.prototype["catch"]=function(t){return this.then(null,t)},t.prototype["finally"]=function(t){var n=this,r=n.constructor;return e(t)?n.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})}):n.then(t,t)},t}();return it.prototype.then=l,it.all=F,it.race=Y,it.resolve=h,it.reject=q,it._setScheduler=n,it._setAsap=r,it._asap=G,it.polyfill=L,it.Promise=it,it.polyfill(),it});
\ No newline at end of file
diff --git a/deps/npm/node_modules/es6-promise/dist/es6-promise.auto.min.map b/deps/npm/node_modules/es6-promise/dist/es6-promise.auto.min.map
index aaa7536787e381..fb4cfd13e626e6 100644
--- a/deps/npm/node_modules/es6-promise/dist/es6-promise.auto.min.map
+++ b/deps/npm/node_modules/es6-promise/dist/es6-promise.auto.min.map
@@ -1 +1 @@
-{"version":3,"sources":["config/versionTemplate.txt","lib/es6-promise/utils.js","lib/es6-promise/asap.js","lib/es6-promise/then.js","lib/es6-promise/promise/resolve.js","lib/es6-promise/-internal.js","lib/es6-promise/enumerator.js","lib/es6-promise/promise/all.js","lib/es6-promise/promise/race.js","lib/es6-promise/promise/reject.js","lib/es6-promise/promise.js","lib/es6-promise/polyfill.js","lib/es6-promise.js","lib/es6-promise.auto.js"],"sourcesContent":["/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license   Licensed under MIT license\n *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version   v4.2.4+314e4831\n */\n","export function objectOrFunction(x) {\n  var type = typeof x;\n  return x !== null && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(x) {\n  return typeof x === 'function';\n}\n\nexport function isMaybeThenable(x) {\n  return x !== null && typeof x === 'object';\n}\n\nvar _isArray = void 0;\nif (Array.isArray) {\n  _isArray = Array.isArray;\n} else {\n  _isArray = function (x) {\n    return Object.prototype.toString.call(x) === '[object Array]';\n  };\n}\n\nexport var isArray = _isArray;","var len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nexport var asap = function asap(callback, arg) {\n  queue[len] = callback;\n  queue[len + 1] = arg;\n  len += 2;\n  if (len === 2) {\n    // If len is 2, that means that we need to schedule an async flush.\n    // If additional callbacks are queued before the queue is flushed, they\n    // will be processed by this flush that we are scheduling.\n    if (customSchedulerFn) {\n      customSchedulerFn(flush);\n    } else {\n      scheduleFlush();\n    }\n  }\n};\n\nexport function setScheduler(scheduleFn) {\n  customSchedulerFn = scheduleFn;\n}\n\nexport function setAsap(asapFn) {\n  asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n  // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n  // see https://github.com/cujojs/when/issues/410 for details\n  return function () {\n    return process.nextTick(flush);\n  };\n}\n\n// vertx\nfunction useVertxTimer() {\n  if (typeof vertxNext !== 'undefined') {\n    return function () {\n      vertxNext(flush);\n    };\n  }\n\n  return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n  var iterations = 0;\n  var observer = new BrowserMutationObserver(flush);\n  var node = document.createTextNode('');\n  observer.observe(node, { characterData: true });\n\n  return function () {\n    node.data = iterations = ++iterations % 2;\n  };\n}\n\n// web worker\nfunction useMessageChannel() {\n  var channel = new MessageChannel();\n  channel.port1.onmessage = flush;\n  return function () {\n    return channel.port2.postMessage(0);\n  };\n}\n\nfunction useSetTimeout() {\n  // Store setTimeout reference so es6-promise will be unaffected by\n  // other code modifying setTimeout (like sinon.useFakeTimers())\n  var globalSetTimeout = setTimeout;\n  return function () {\n    return globalSetTimeout(flush, 1);\n  };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n  for (var i = 0; i < len; i += 2) {\n    var callback = queue[i];\n    var arg = queue[i + 1];\n\n    callback(arg);\n\n    queue[i] = undefined;\n    queue[i + 1] = undefined;\n  }\n\n  len = 0;\n}\n\nfunction attemptVertx() {\n  try {\n    var vertx = Function('return this')().require('vertx');\n    vertxNext = vertx.runOnLoop || vertx.runOnContext;\n    return useVertxTimer();\n  } catch (e) {\n    return useSetTimeout();\n  }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n  scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n  scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n  scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n  scheduleFlush = attemptVertx();\n} else {\n  scheduleFlush = useSetTimeout();\n}","import { invokeCallback, subscribe, FULFILLED, REJECTED, noop, makePromise, PROMISE_ID } from './-internal';\n\nimport { asap } from './asap';\n\nexport default function then(onFulfillment, onRejection) {\n  var parent = this;\n\n  var child = new this.constructor(noop);\n\n  if (child[PROMISE_ID] === undefined) {\n    makePromise(child);\n  }\n\n  var _state = parent._state;\n\n\n  if (_state) {\n    var callback = arguments[_state - 1];\n    asap(function () {\n      return invokeCallback(_state, child, callback, parent._result);\n    });\n  } else {\n    subscribe(parent, child, onFulfillment, onRejection);\n  }\n\n  return child;\n}","import { noop, resolve as _resolve } from '../-internal';\n\n/**\n  `Promise.resolve` returns a promise that will become resolved with the\n  passed `value`. It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    resolve(1);\n  });\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.resolve(1);\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  @method resolve\n  @static\n  @param {Any} value value that the returned promise will be resolved with\n  Useful for tooling.\n  @return {Promise} a promise that will become fulfilled with the given\n  `value`\n*/\nexport default function resolve(object) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (object && typeof object === 'object' && object.constructor === Constructor) {\n    return object;\n  }\n\n  var promise = new Constructor(noop);\n  _resolve(promise, object);\n  return promise;\n}","import { objectOrFunction, isFunction } from './utils';\n\nimport { asap } from './asap';\n\nimport originalThen from './then';\nimport originalResolve from './promise/resolve';\n\nexport var PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n  return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n  return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n  try {\n    return promise.then;\n  } catch (error) {\n    TRY_CATCH_ERROR.error = error;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n  try {\n    then.call(value, fulfillmentHandler, rejectionHandler);\n  } catch (e) {\n    return e;\n  }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n  asap(function (promise) {\n    var sealed = false;\n    var error = tryThen(then, thenable, function (value) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n      if (thenable !== value) {\n        resolve(promise, value);\n      } else {\n        fulfill(promise, value);\n      }\n    }, function (reason) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n\n      reject(promise, reason);\n    }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n    if (!sealed && error) {\n      sealed = true;\n      reject(promise, error);\n    }\n  }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n  if (thenable._state === FULFILLED) {\n    fulfill(promise, thenable._result);\n  } else if (thenable._state === REJECTED) {\n    reject(promise, thenable._result);\n  } else {\n    subscribe(thenable, undefined, function (value) {\n      return resolve(promise, value);\n    }, function (reason) {\n      return reject(promise, reason);\n    });\n  }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then) {\n  if (maybeThenable.constructor === promise.constructor && then === originalThen && maybeThenable.constructor.resolve === originalResolve) {\n    handleOwnThenable(promise, maybeThenable);\n  } else {\n    if (then === TRY_CATCH_ERROR) {\n      reject(promise, TRY_CATCH_ERROR.error);\n      TRY_CATCH_ERROR.error = null;\n    } else if (then === undefined) {\n      fulfill(promise, maybeThenable);\n    } else if (isFunction(then)) {\n      handleForeignThenable(promise, maybeThenable, then);\n    } else {\n      fulfill(promise, maybeThenable);\n    }\n  }\n}\n\nfunction resolve(promise, value) {\n  if (promise === value) {\n    reject(promise, selfFulfillment());\n  } else if (objectOrFunction(value)) {\n    handleMaybeThenable(promise, value, getThen(value));\n  } else {\n    fulfill(promise, value);\n  }\n}\n\nfunction publishRejection(promise) {\n  if (promise._onerror) {\n    promise._onerror(promise._result);\n  }\n\n  publish(promise);\n}\n\nfunction fulfill(promise, value) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n\n  promise._result = value;\n  promise._state = FULFILLED;\n\n  if (promise._subscribers.length !== 0) {\n    asap(publish, promise);\n  }\n}\n\nfunction reject(promise, reason) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n  promise._state = REJECTED;\n  promise._result = reason;\n\n  asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n  var _subscribers = parent._subscribers;\n  var length = _subscribers.length;\n\n\n  parent._onerror = null;\n\n  _subscribers[length] = child;\n  _subscribers[length + FULFILLED] = onFulfillment;\n  _subscribers[length + REJECTED] = onRejection;\n\n  if (length === 0 && parent._state) {\n    asap(publish, parent);\n  }\n}\n\nfunction publish(promise) {\n  var subscribers = promise._subscribers;\n  var settled = promise._state;\n\n  if (subscribers.length === 0) {\n    return;\n  }\n\n  var child = void 0,\n      callback = void 0,\n      detail = promise._result;\n\n  for (var i = 0; i < subscribers.length; i += 3) {\n    child = subscribers[i];\n    callback = subscribers[i + settled];\n\n    if (child) {\n      invokeCallback(settled, child, callback, detail);\n    } else {\n      callback(detail);\n    }\n  }\n\n  promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n  try {\n    return callback(detail);\n  } catch (e) {\n    TRY_CATCH_ERROR.error = e;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n  var hasCallback = isFunction(callback),\n      value = void 0,\n      error = void 0,\n      succeeded = void 0,\n      failed = void 0;\n\n  if (hasCallback) {\n    value = tryCatch(callback, detail);\n\n    if (value === TRY_CATCH_ERROR) {\n      failed = true;\n      error = value.error;\n      value.error = null;\n    } else {\n      succeeded = true;\n    }\n\n    if (promise === value) {\n      reject(promise, cannotReturnOwn());\n      return;\n    }\n  } else {\n    value = detail;\n    succeeded = true;\n  }\n\n  if (promise._state !== PENDING) {\n    // noop\n  } else if (hasCallback && succeeded) {\n    resolve(promise, value);\n  } else if (failed) {\n    reject(promise, error);\n  } else if (settled === FULFILLED) {\n    fulfill(promise, value);\n  } else if (settled === REJECTED) {\n    reject(promise, value);\n  }\n}\n\nfunction initializePromise(promise, resolver) {\n  try {\n    resolver(function resolvePromise(value) {\n      resolve(promise, value);\n    }, function rejectPromise(reason) {\n      reject(promise, reason);\n    });\n  } catch (e) {\n    reject(promise, e);\n  }\n}\n\nvar id = 0;\nfunction nextId() {\n  return id++;\n}\n\nfunction makePromise(promise) {\n  promise[PROMISE_ID] = id++;\n  promise._state = undefined;\n  promise._result = undefined;\n  promise._subscribers = [];\n}\n\nexport { nextId, makePromise, getThen, noop, resolve, reject, fulfill, subscribe, publish, publishRejection, initializePromise, invokeCallback, FULFILLED, REJECTED, PENDING, handleMaybeThenable };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isArray, isMaybeThenable } from './utils';\nimport { noop, reject, fulfill, subscribe, FULFILLED, REJECTED, PENDING, getThen, handleMaybeThenable } from './-internal';\n\nimport then from './then';\nimport Promise from './promise';\nimport originalResolve from './promise/resolve';\nimport originalThen from './then';\nimport { makePromise, PROMISE_ID } from './-internal';\n\nfunction validationError() {\n  return new Error('Array Methods must be provided an Array');\n};\n\nvar Enumerator = function () {\n  function Enumerator(Constructor, input) {\n    this._instanceConstructor = Constructor;\n    this.promise = new Constructor(noop);\n\n    if (!this.promise[PROMISE_ID]) {\n      makePromise(this.promise);\n    }\n\n    if (isArray(input)) {\n      this.length = input.length;\n      this._remaining = input.length;\n\n      this._result = new Array(this.length);\n\n      if (this.length === 0) {\n        fulfill(this.promise, this._result);\n      } else {\n        this.length = this.length || 0;\n        this._enumerate(input);\n        if (this._remaining === 0) {\n          fulfill(this.promise, this._result);\n        }\n      }\n    } else {\n      reject(this.promise, validationError());\n    }\n  }\n\n  Enumerator.prototype._enumerate = function _enumerate(input) {\n    for (var i = 0; this._state === PENDING && i < input.length; i++) {\n      this._eachEntry(input[i], i);\n    }\n  };\n\n  Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n    var c = this._instanceConstructor;\n    var resolve = c.resolve;\n\n\n    if (resolve === originalResolve) {\n      var _then = getThen(entry);\n\n      if (_then === originalThen && entry._state !== PENDING) {\n        this._settledAt(entry._state, i, entry._result);\n      } else if (typeof _then !== 'function') {\n        this._remaining--;\n        this._result[i] = entry;\n      } else if (c === Promise) {\n        var promise = new c(noop);\n        handleMaybeThenable(promise, entry, _then);\n        this._willSettleAt(promise, i);\n      } else {\n        this._willSettleAt(new c(function (resolve) {\n          return resolve(entry);\n        }), i);\n      }\n    } else {\n      this._willSettleAt(resolve(entry), i);\n    }\n  };\n\n  Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n    var promise = this.promise;\n\n\n    if (promise._state === PENDING) {\n      this._remaining--;\n\n      if (state === REJECTED) {\n        reject(promise, value);\n      } else {\n        this._result[i] = value;\n      }\n    }\n\n    if (this._remaining === 0) {\n      fulfill(promise, this._result);\n    }\n  };\n\n  Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n    var enumerator = this;\n\n    subscribe(promise, undefined, function (value) {\n      return enumerator._settledAt(FULFILLED, i, value);\n    }, function (reason) {\n      return enumerator._settledAt(REJECTED, i, reason);\n    });\n  };\n\n  return Enumerator;\n}();\n\nexport default Enumerator;\n;","import Enumerator from '../enumerator';\n\n/**\n  `Promise.all` accepts an array of promises, and returns a new promise which\n  is fulfilled with an array of fulfillment values for the passed promises, or\n  rejected with the reason of the first passed promise to be rejected. It casts all\n  elements of the passed iterable to promises as it runs this algorithm.\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = resolve(2);\n  let promise3 = resolve(3);\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // The array here would be [ 1, 2, 3 ];\n  });\n  ```\n\n  If any of the `promises` given to `all` are rejected, the first promise\n  that is rejected will be given as an argument to the returned promises's\n  rejection handler. For example:\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = reject(new Error(\"2\"));\n  let promise3 = reject(new Error(\"3\"));\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // Code here never runs because there are rejected promises!\n  }, function(error) {\n    // error.message === \"2\"\n  });\n  ```\n\n  @method all\n  @static\n  @param {Array} entries array of promises\n  @param {String} label optional string for labeling the promise.\n  Useful for tooling.\n  @return {Promise} promise that is fulfilled when all `promises` have been\n  fulfilled, or rejected if any of them become rejected.\n  @static\n*/\nexport default function all(entries) {\n  return new Enumerator(this, entries).promise;\n}","import { isArray } from \"../utils\";\n\n/**\n  `Promise.race` returns a new promise which is settled in the same way as the\n  first passed promise to settle.\n\n  Example:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 2');\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // result === 'promise 2' because it was resolved before promise1\n    // was resolved.\n  });\n  ```\n\n  `Promise.race` is deterministic in that only the state of the first\n  settled promise matters. For example, even if other promises given to the\n  `promises` array argument are resolved, but the first settled promise has\n  become rejected before the other promises became fulfilled, the returned\n  promise will become rejected:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      reject(new Error('promise 2'));\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // Code here never runs\n  }, function(reason){\n    // reason.message === 'promise 2' because promise 2 became rejected before\n    // promise 1 became fulfilled\n  });\n  ```\n\n  An example real-world use case is implementing timeouts:\n\n  ```javascript\n  Promise.race([ajax('foo.json'), timeout(5000)])\n  ```\n\n  @method race\n  @static\n  @param {Array} promises array of promises to observe\n  Useful for tooling.\n  @return {Promise} a promise which settles in the same way as the first passed\n  promise to settle.\n*/\nexport default function race(entries) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (!isArray(entries)) {\n    return new Constructor(function (_, reject) {\n      return reject(new TypeError('You must pass an array to race.'));\n    });\n  } else {\n    return new Constructor(function (resolve, reject) {\n      var length = entries.length;\n      for (var i = 0; i < length; i++) {\n        Constructor.resolve(entries[i]).then(resolve, reject);\n      }\n    });\n  }\n}","import { noop, reject as _reject } from '../-internal';\n\n/**\n  `Promise.reject` returns a promise rejected with the passed `reason`.\n  It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    reject(new Error('WHOOPS'));\n  });\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.reject(new Error('WHOOPS'));\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  @method reject\n  @static\n  @param {Any} reason value that the returned promise will be rejected with.\n  Useful for tooling.\n  @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason) {\n  /*jshint validthis:true */\n  var Constructor = this;\n  var promise = new Constructor(noop);\n  _reject(promise, reason);\n  return promise;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isFunction } from './utils';\nimport { noop, nextId, PROMISE_ID, initializePromise } from './-internal';\nimport { asap, setAsap, setScheduler } from './asap';\n\nimport all from './promise/all';\nimport race from './promise/race';\nimport Resolve from './promise/resolve';\nimport Reject from './promise/reject';\nimport then from './then';\n\nfunction needsResolver() {\n  throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n  throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n  Promise objects represent the eventual result of an asynchronous operation. The\n  primary way of interacting with a promise is through its `then` method, which\n  registers callbacks to receive either a promise's eventual value or the reason\n  why the promise cannot be fulfilled.\n\n  Terminology\n  -----------\n\n  - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n  - `thenable` is an object or function that defines a `then` method.\n  - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n  - `exception` is a value that is thrown using the throw statement.\n  - `reason` is a value that indicates why a promise was rejected.\n  - `settled` the final resting state of a promise, fulfilled or rejected.\n\n  A promise can be in one of three states: pending, fulfilled, or rejected.\n\n  Promises that are fulfilled have a fulfillment value and are in the fulfilled\n  state.  Promises that are rejected have a rejection reason and are in the\n  rejected state.  A fulfillment value is never a thenable.\n\n  Promises can also be said to *resolve* a value.  If this value is also a\n  promise, then the original promise's settled state will match the value's\n  settled state.  So a promise that *resolves* a promise that rejects will\n  itself reject, and a promise that *resolves* a promise that fulfills will\n  itself fulfill.\n\n\n  Basic Usage:\n  ------------\n\n  ```js\n  let promise = new Promise(function(resolve, reject) {\n    // on success\n    resolve(value);\n\n    // on failure\n    reject(reason);\n  });\n\n  promise.then(function(value) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Advanced Usage:\n  ---------------\n\n  Promises shine when abstracting away asynchronous interactions such as\n  `XMLHttpRequest`s.\n\n  ```js\n  function getJSON(url) {\n    return new Promise(function(resolve, reject){\n      let xhr = new XMLHttpRequest();\n\n      xhr.open('GET', url);\n      xhr.onreadystatechange = handler;\n      xhr.responseType = 'json';\n      xhr.setRequestHeader('Accept', 'application/json');\n      xhr.send();\n\n      function handler() {\n        if (this.readyState === this.DONE) {\n          if (this.status === 200) {\n            resolve(this.response);\n          } else {\n            reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n          }\n        }\n      };\n    });\n  }\n\n  getJSON('/posts.json').then(function(json) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Unlike callbacks, promises are great composable primitives.\n\n  ```js\n  Promise.all([\n    getJSON('/posts'),\n    getJSON('/comments')\n  ]).then(function(values){\n    values[0] // => postsJSON\n    values[1] // => commentsJSON\n\n    return values;\n  });\n  ```\n\n  @class Promise\n  @param {Function} resolver\n  Useful for tooling.\n  @constructor\n*/\n\nvar Promise = function () {\n  function Promise(resolver) {\n    this[PROMISE_ID] = nextId();\n    this._result = this._state = undefined;\n    this._subscribers = [];\n\n    if (noop !== resolver) {\n      typeof resolver !== 'function' && needsResolver();\n      this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n    }\n  }\n\n  /**\n  The primary way of interacting with a promise is through its `then` method,\n  which registers callbacks to receive either a promise's eventual value or the\n  reason why the promise cannot be fulfilled.\n   ```js\n  findUser().then(function(user){\n    // user is available\n  }, function(reason){\n    // user is unavailable, and you are given the reason why\n  });\n  ```\n   Chaining\n  --------\n   The return value of `then` is itself a promise.  This second, 'downstream'\n  promise is resolved with the return value of the first promise's fulfillment\n  or rejection handler, or rejected if the handler throws an exception.\n   ```js\n  findUser().then(function (user) {\n    return user.name;\n  }, function (reason) {\n    return 'default name';\n  }).then(function (userName) {\n    // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n    // will be `'default name'`\n  });\n   findUser().then(function (user) {\n    throw new Error('Found user, but still unhappy');\n  }, function (reason) {\n    throw new Error('`findUser` rejected and we're unhappy');\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n    // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n  });\n  ```\n  If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n   ```js\n  findUser().then(function (user) {\n    throw new PedagogicalException('Upstream error');\n  }).then(function (value) {\n    // never reached\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // The `PedgagocialException` is propagated all the way down to here\n  });\n  ```\n   Assimilation\n  ------------\n   Sometimes the value you want to propagate to a downstream promise can only be\n  retrieved asynchronously. This can be achieved by returning a promise in the\n  fulfillment or rejection handler. The downstream promise will then be pending\n  until the returned promise is settled. This is called *assimilation*.\n   ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // The user's comments are now available\n  });\n  ```\n   If the assimliated promise rejects, then the downstream promise will also reject.\n   ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // If `findCommentsByAuthor` fulfills, we'll have the value here\n  }, function (reason) {\n    // If `findCommentsByAuthor` rejects, we'll have the reason here\n  });\n  ```\n   Simple Example\n  --------------\n   Synchronous Example\n   ```javascript\n  let result;\n   try {\n    result = findResult();\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n   Errback Example\n   ```js\n  findResult(function(result, err){\n    if (err) {\n      // failure\n    } else {\n      // success\n    }\n  });\n  ```\n   Promise Example;\n   ```javascript\n  findResult().then(function(result){\n    // success\n  }, function(reason){\n    // failure\n  });\n  ```\n   Advanced Example\n  --------------\n   Synchronous Example\n   ```javascript\n  let author, books;\n   try {\n    author = findAuthor();\n    books  = findBooksByAuthor(author);\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n   Errback Example\n   ```js\n   function foundBooks(books) {\n   }\n   function failure(reason) {\n   }\n   findAuthor(function(author, err){\n    if (err) {\n      failure(err);\n      // failure\n    } else {\n      try {\n        findBoooksByAuthor(author, function(books, err) {\n          if (err) {\n            failure(err);\n          } else {\n            try {\n              foundBooks(books);\n            } catch(reason) {\n              failure(reason);\n            }\n          }\n        });\n      } catch(error) {\n        failure(err);\n      }\n      // success\n    }\n  });\n  ```\n   Promise Example;\n   ```javascript\n  findAuthor().\n    then(findBooksByAuthor).\n    then(function(books){\n      // found books\n  }).catch(function(reason){\n    // something went wrong\n  });\n  ```\n   @method then\n  @param {Function} onFulfilled\n  @param {Function} onRejected\n  Useful for tooling.\n  @return {Promise}\n  */\n\n  /**\n  `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n  as the catch block of a try/catch statement.\n  ```js\n  function findAuthor(){\n  throw new Error('couldn't find that author');\n  }\n  // synchronous\n  try {\n  findAuthor();\n  } catch(reason) {\n  // something went wrong\n  }\n  // async with promises\n  findAuthor().catch(function(reason){\n  // something went wrong\n  });\n  ```\n  @method catch\n  @param {Function} onRejection\n  Useful for tooling.\n  @return {Promise}\n  */\n\n\n  Promise.prototype.catch = function _catch(onRejection) {\n    return this.then(null, onRejection);\n  };\n\n  /**\n    `finally` will be invoked regardless of the promise's fate just as native\n    try/catch/finally behaves\n  \n    Synchronous example:\n  \n    ```js\n    findAuthor() {\n      if (Math.random() > 0.5) {\n        throw new Error();\n      }\n      return new Author();\n    }\n  \n    try {\n      return findAuthor(); // succeed or fail\n    } catch(error) {\n      return findOtherAuther();\n    } finally {\n      // always runs\n      // doesn't affect the return value\n    }\n    ```\n  \n    Asynchronous example:\n  \n    ```js\n    findAuthor().catch(function(reason){\n      return findOtherAuther();\n    }).finally(function(){\n      // author was either found, or not\n    });\n    ```\n  \n    @method finally\n    @param {Function} callback\n    @return {Promise}\n  */\n\n\n  Promise.prototype.finally = function _finally(callback) {\n    var promise = this;\n    var constructor = promise.constructor;\n\n    return promise.then(function (value) {\n      return constructor.resolve(callback()).then(function () {\n        return value;\n      });\n    }, function (reason) {\n      return constructor.resolve(callback()).then(function () {\n        throw reason;\n      });\n    });\n  };\n\n  return Promise;\n}();\n\nPromise.prototype.then = then;\nexport default Promise;\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = Resolve;\nPromise.reject = Reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;","/*global self*/\nimport Promise from './promise';\n\nexport default function polyfill() {\n  var local = void 0;\n\n  if (typeof global !== 'undefined') {\n    local = global;\n  } else if (typeof self !== 'undefined') {\n    local = self;\n  } else {\n    try {\n      local = Function('return this')();\n    } catch (e) {\n      throw new Error('polyfill failed because global object is unavailable in this environment');\n    }\n  }\n\n  var P = local.Promise;\n\n  if (P) {\n    var promiseToString = null;\n    try {\n      promiseToString = Object.prototype.toString.call(P.resolve());\n    } catch (e) {\n      // silently ignored\n    }\n\n    if (promiseToString === '[object Promise]' && !P.cast) {\n      return;\n    }\n  }\n\n  local.Promise = Promise;\n}","import Promise from './es6-promise/promise';\nimport polyfill from './es6-promise/polyfill';\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\nexport default Promise;","import Promise from './es6-promise';\nPromise.polyfill();\nexport default Promise;"],"names":["resolve","_resolve","then","originalThen","originalResolve","Promise","reject","_reject","Resolve","Reject"],"mappings":"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","file":"es6-promise.auto.min.js"}
\ No newline at end of file
+{"version":3,"sources":["config/versionTemplate.txt","lib/es6-promise/utils.js","lib/es6-promise/asap.js","lib/es6-promise/then.js","lib/es6-promise/promise/resolve.js","lib/es6-promise/-internal.js","lib/es6-promise/enumerator.js","lib/es6-promise/promise/all.js","lib/es6-promise/promise/race.js","lib/es6-promise/promise/reject.js","lib/es6-promise/promise.js","lib/es6-promise/polyfill.js","lib/es6-promise.js","lib/es6-promise.auto.js"],"sourcesContent":["/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license   Licensed under MIT license\n *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version   v4.2.6+9869a4bc\n */\n","export function objectOrFunction(x) {\n  var type = typeof x;\n  return x !== null && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(x) {\n  return typeof x === 'function';\n}\n\nexport function isMaybeThenable(x) {\n  return x !== null && typeof x === 'object';\n}\n\nvar _isArray = void 0;\nif (Array.isArray) {\n  _isArray = Array.isArray;\n} else {\n  _isArray = function (x) {\n    return Object.prototype.toString.call(x) === '[object Array]';\n  };\n}\n\nexport var isArray = _isArray;","var len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nexport var asap = function asap(callback, arg) {\n  queue[len] = callback;\n  queue[len + 1] = arg;\n  len += 2;\n  if (len === 2) {\n    // If len is 2, that means that we need to schedule an async flush.\n    // If additional callbacks are queued before the queue is flushed, they\n    // will be processed by this flush that we are scheduling.\n    if (customSchedulerFn) {\n      customSchedulerFn(flush);\n    } else {\n      scheduleFlush();\n    }\n  }\n};\n\nexport function setScheduler(scheduleFn) {\n  customSchedulerFn = scheduleFn;\n}\n\nexport function setAsap(asapFn) {\n  asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n  // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n  // see https://github.com/cujojs/when/issues/410 for details\n  return function () {\n    return process.nextTick(flush);\n  };\n}\n\n// vertx\nfunction useVertxTimer() {\n  if (typeof vertxNext !== 'undefined') {\n    return function () {\n      vertxNext(flush);\n    };\n  }\n\n  return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n  var iterations = 0;\n  var observer = new BrowserMutationObserver(flush);\n  var node = document.createTextNode('');\n  observer.observe(node, { characterData: true });\n\n  return function () {\n    node.data = iterations = ++iterations % 2;\n  };\n}\n\n// web worker\nfunction useMessageChannel() {\n  var channel = new MessageChannel();\n  channel.port1.onmessage = flush;\n  return function () {\n    return channel.port2.postMessage(0);\n  };\n}\n\nfunction useSetTimeout() {\n  // Store setTimeout reference so es6-promise will be unaffected by\n  // other code modifying setTimeout (like sinon.useFakeTimers())\n  var globalSetTimeout = setTimeout;\n  return function () {\n    return globalSetTimeout(flush, 1);\n  };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n  for (var i = 0; i < len; i += 2) {\n    var callback = queue[i];\n    var arg = queue[i + 1];\n\n    callback(arg);\n\n    queue[i] = undefined;\n    queue[i + 1] = undefined;\n  }\n\n  len = 0;\n}\n\nfunction attemptVertx() {\n  try {\n    var vertx = Function('return this')().require('vertx');\n    vertxNext = vertx.runOnLoop || vertx.runOnContext;\n    return useVertxTimer();\n  } catch (e) {\n    return useSetTimeout();\n  }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n  scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n  scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n  scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n  scheduleFlush = attemptVertx();\n} else {\n  scheduleFlush = useSetTimeout();\n}","import { invokeCallback, subscribe, FULFILLED, REJECTED, noop, makePromise, PROMISE_ID } from './-internal';\n\nimport { asap } from './asap';\n\nexport default function then(onFulfillment, onRejection) {\n  var parent = this;\n\n  var child = new this.constructor(noop);\n\n  if (child[PROMISE_ID] === undefined) {\n    makePromise(child);\n  }\n\n  var _state = parent._state;\n\n\n  if (_state) {\n    var callback = arguments[_state - 1];\n    asap(function () {\n      return invokeCallback(_state, child, callback, parent._result);\n    });\n  } else {\n    subscribe(parent, child, onFulfillment, onRejection);\n  }\n\n  return child;\n}","import { noop, resolve as _resolve } from '../-internal';\n\n/**\n  `Promise.resolve` returns a promise that will become resolved with the\n  passed `value`. It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    resolve(1);\n  });\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.resolve(1);\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  @method resolve\n  @static\n  @param {Any} value value that the returned promise will be resolved with\n  Useful for tooling.\n  @return {Promise} a promise that will become fulfilled with the given\n  `value`\n*/\nexport default function resolve(object) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (object && typeof object === 'object' && object.constructor === Constructor) {\n    return object;\n  }\n\n  var promise = new Constructor(noop);\n  _resolve(promise, object);\n  return promise;\n}","import { objectOrFunction, isFunction } from './utils';\n\nimport { asap } from './asap';\n\nimport originalThen from './then';\nimport originalResolve from './promise/resolve';\n\nexport var PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n  return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n  return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n  try {\n    return promise.then;\n  } catch (error) {\n    TRY_CATCH_ERROR.error = error;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n  try {\n    then.call(value, fulfillmentHandler, rejectionHandler);\n  } catch (e) {\n    return e;\n  }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n  asap(function (promise) {\n    var sealed = false;\n    var error = tryThen(then, thenable, function (value) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n      if (thenable !== value) {\n        resolve(promise, value);\n      } else {\n        fulfill(promise, value);\n      }\n    }, function (reason) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n\n      reject(promise, reason);\n    }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n    if (!sealed && error) {\n      sealed = true;\n      reject(promise, error);\n    }\n  }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n  if (thenable._state === FULFILLED) {\n    fulfill(promise, thenable._result);\n  } else if (thenable._state === REJECTED) {\n    reject(promise, thenable._result);\n  } else {\n    subscribe(thenable, undefined, function (value) {\n      return resolve(promise, value);\n    }, function (reason) {\n      return reject(promise, reason);\n    });\n  }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then) {\n  if (maybeThenable.constructor === promise.constructor && then === originalThen && maybeThenable.constructor.resolve === originalResolve) {\n    handleOwnThenable(promise, maybeThenable);\n  } else {\n    if (then === TRY_CATCH_ERROR) {\n      reject(promise, TRY_CATCH_ERROR.error);\n      TRY_CATCH_ERROR.error = null;\n    } else if (then === undefined) {\n      fulfill(promise, maybeThenable);\n    } else if (isFunction(then)) {\n      handleForeignThenable(promise, maybeThenable, then);\n    } else {\n      fulfill(promise, maybeThenable);\n    }\n  }\n}\n\nfunction resolve(promise, value) {\n  if (promise === value) {\n    reject(promise, selfFulfillment());\n  } else if (objectOrFunction(value)) {\n    handleMaybeThenable(promise, value, getThen(value));\n  } else {\n    fulfill(promise, value);\n  }\n}\n\nfunction publishRejection(promise) {\n  if (promise._onerror) {\n    promise._onerror(promise._result);\n  }\n\n  publish(promise);\n}\n\nfunction fulfill(promise, value) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n\n  promise._result = value;\n  promise._state = FULFILLED;\n\n  if (promise._subscribers.length !== 0) {\n    asap(publish, promise);\n  }\n}\n\nfunction reject(promise, reason) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n  promise._state = REJECTED;\n  promise._result = reason;\n\n  asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n  var _subscribers = parent._subscribers;\n  var length = _subscribers.length;\n\n\n  parent._onerror = null;\n\n  _subscribers[length] = child;\n  _subscribers[length + FULFILLED] = onFulfillment;\n  _subscribers[length + REJECTED] = onRejection;\n\n  if (length === 0 && parent._state) {\n    asap(publish, parent);\n  }\n}\n\nfunction publish(promise) {\n  var subscribers = promise._subscribers;\n  var settled = promise._state;\n\n  if (subscribers.length === 0) {\n    return;\n  }\n\n  var child = void 0,\n      callback = void 0,\n      detail = promise._result;\n\n  for (var i = 0; i < subscribers.length; i += 3) {\n    child = subscribers[i];\n    callback = subscribers[i + settled];\n\n    if (child) {\n      invokeCallback(settled, child, callback, detail);\n    } else {\n      callback(detail);\n    }\n  }\n\n  promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n  try {\n    return callback(detail);\n  } catch (e) {\n    TRY_CATCH_ERROR.error = e;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n  var hasCallback = isFunction(callback),\n      value = void 0,\n      error = void 0,\n      succeeded = void 0,\n      failed = void 0;\n\n  if (hasCallback) {\n    value = tryCatch(callback, detail);\n\n    if (value === TRY_CATCH_ERROR) {\n      failed = true;\n      error = value.error;\n      value.error = null;\n    } else {\n      succeeded = true;\n    }\n\n    if (promise === value) {\n      reject(promise, cannotReturnOwn());\n      return;\n    }\n  } else {\n    value = detail;\n    succeeded = true;\n  }\n\n  if (promise._state !== PENDING) {\n    // noop\n  } else if (hasCallback && succeeded) {\n    resolve(promise, value);\n  } else if (failed) {\n    reject(promise, error);\n  } else if (settled === FULFILLED) {\n    fulfill(promise, value);\n  } else if (settled === REJECTED) {\n    reject(promise, value);\n  }\n}\n\nfunction initializePromise(promise, resolver) {\n  try {\n    resolver(function resolvePromise(value) {\n      resolve(promise, value);\n    }, function rejectPromise(reason) {\n      reject(promise, reason);\n    });\n  } catch (e) {\n    reject(promise, e);\n  }\n}\n\nvar id = 0;\nfunction nextId() {\n  return id++;\n}\n\nfunction makePromise(promise) {\n  promise[PROMISE_ID] = id++;\n  promise._state = undefined;\n  promise._result = undefined;\n  promise._subscribers = [];\n}\n\nexport { nextId, makePromise, getThen, noop, resolve, reject, fulfill, subscribe, publish, publishRejection, initializePromise, invokeCallback, FULFILLED, REJECTED, PENDING, handleMaybeThenable };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isArray, isMaybeThenable } from './utils';\nimport { noop, reject, fulfill, subscribe, FULFILLED, REJECTED, PENDING, getThen, handleMaybeThenable } from './-internal';\n\nimport then from './then';\nimport Promise from './promise';\nimport originalResolve from './promise/resolve';\nimport originalThen from './then';\nimport { makePromise, PROMISE_ID } from './-internal';\n\nfunction validationError() {\n  return new Error('Array Methods must be provided an Array');\n};\n\nvar Enumerator = function () {\n  function Enumerator(Constructor, input) {\n    this._instanceConstructor = Constructor;\n    this.promise = new Constructor(noop);\n\n    if (!this.promise[PROMISE_ID]) {\n      makePromise(this.promise);\n    }\n\n    if (isArray(input)) {\n      this.length = input.length;\n      this._remaining = input.length;\n\n      this._result = new Array(this.length);\n\n      if (this.length === 0) {\n        fulfill(this.promise, this._result);\n      } else {\n        this.length = this.length || 0;\n        this._enumerate(input);\n        if (this._remaining === 0) {\n          fulfill(this.promise, this._result);\n        }\n      }\n    } else {\n      reject(this.promise, validationError());\n    }\n  }\n\n  Enumerator.prototype._enumerate = function _enumerate(input) {\n    for (var i = 0; this._state === PENDING && i < input.length; i++) {\n      this._eachEntry(input[i], i);\n    }\n  };\n\n  Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n    var c = this._instanceConstructor;\n    var resolve = c.resolve;\n\n\n    if (resolve === originalResolve) {\n      var _then = getThen(entry);\n\n      if (_then === originalThen && entry._state !== PENDING) {\n        this._settledAt(entry._state, i, entry._result);\n      } else if (typeof _then !== 'function') {\n        this._remaining--;\n        this._result[i] = entry;\n      } else if (c === Promise) {\n        var promise = new c(noop);\n        handleMaybeThenable(promise, entry, _then);\n        this._willSettleAt(promise, i);\n      } else {\n        this._willSettleAt(new c(function (resolve) {\n          return resolve(entry);\n        }), i);\n      }\n    } else {\n      this._willSettleAt(resolve(entry), i);\n    }\n  };\n\n  Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n    var promise = this.promise;\n\n\n    if (promise._state === PENDING) {\n      this._remaining--;\n\n      if (state === REJECTED) {\n        reject(promise, value);\n      } else {\n        this._result[i] = value;\n      }\n    }\n\n    if (this._remaining === 0) {\n      fulfill(promise, this._result);\n    }\n  };\n\n  Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n    var enumerator = this;\n\n    subscribe(promise, undefined, function (value) {\n      return enumerator._settledAt(FULFILLED, i, value);\n    }, function (reason) {\n      return enumerator._settledAt(REJECTED, i, reason);\n    });\n  };\n\n  return Enumerator;\n}();\n\nexport default Enumerator;\n;","import Enumerator from '../enumerator';\n\n/**\n  `Promise.all` accepts an array of promises, and returns a new promise which\n  is fulfilled with an array of fulfillment values for the passed promises, or\n  rejected with the reason of the first passed promise to be rejected. It casts all\n  elements of the passed iterable to promises as it runs this algorithm.\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = resolve(2);\n  let promise3 = resolve(3);\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // The array here would be [ 1, 2, 3 ];\n  });\n  ```\n\n  If any of the `promises` given to `all` are rejected, the first promise\n  that is rejected will be given as an argument to the returned promises's\n  rejection handler. For example:\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = reject(new Error(\"2\"));\n  let promise3 = reject(new Error(\"3\"));\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // Code here never runs because there are rejected promises!\n  }, function(error) {\n    // error.message === \"2\"\n  });\n  ```\n\n  @method all\n  @static\n  @param {Array} entries array of promises\n  @param {String} label optional string for labeling the promise.\n  Useful for tooling.\n  @return {Promise} promise that is fulfilled when all `promises` have been\n  fulfilled, or rejected if any of them become rejected.\n  @static\n*/\nexport default function all(entries) {\n  return new Enumerator(this, entries).promise;\n}","import { isArray } from \"../utils\";\n\n/**\n  `Promise.race` returns a new promise which is settled in the same way as the\n  first passed promise to settle.\n\n  Example:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 2');\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // result === 'promise 2' because it was resolved before promise1\n    // was resolved.\n  });\n  ```\n\n  `Promise.race` is deterministic in that only the state of the first\n  settled promise matters. For example, even if other promises given to the\n  `promises` array argument are resolved, but the first settled promise has\n  become rejected before the other promises became fulfilled, the returned\n  promise will become rejected:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      reject(new Error('promise 2'));\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // Code here never runs\n  }, function(reason){\n    // reason.message === 'promise 2' because promise 2 became rejected before\n    // promise 1 became fulfilled\n  });\n  ```\n\n  An example real-world use case is implementing timeouts:\n\n  ```javascript\n  Promise.race([ajax('foo.json'), timeout(5000)])\n  ```\n\n  @method race\n  @static\n  @param {Array} promises array of promises to observe\n  Useful for tooling.\n  @return {Promise} a promise which settles in the same way as the first passed\n  promise to settle.\n*/\nexport default function race(entries) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (!isArray(entries)) {\n    return new Constructor(function (_, reject) {\n      return reject(new TypeError('You must pass an array to race.'));\n    });\n  } else {\n    return new Constructor(function (resolve, reject) {\n      var length = entries.length;\n      for (var i = 0; i < length; i++) {\n        Constructor.resolve(entries[i]).then(resolve, reject);\n      }\n    });\n  }\n}","import { noop, reject as _reject } from '../-internal';\n\n/**\n  `Promise.reject` returns a promise rejected with the passed `reason`.\n  It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    reject(new Error('WHOOPS'));\n  });\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.reject(new Error('WHOOPS'));\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  @method reject\n  @static\n  @param {Any} reason value that the returned promise will be rejected with.\n  Useful for tooling.\n  @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason) {\n  /*jshint validthis:true */\n  var Constructor = this;\n  var promise = new Constructor(noop);\n  _reject(promise, reason);\n  return promise;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isFunction } from './utils';\nimport { noop, nextId, PROMISE_ID, initializePromise } from './-internal';\nimport { asap, setAsap, setScheduler } from './asap';\n\nimport all from './promise/all';\nimport race from './promise/race';\nimport Resolve from './promise/resolve';\nimport Reject from './promise/reject';\nimport then from './then';\n\nfunction needsResolver() {\n  throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n  throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n  Promise objects represent the eventual result of an asynchronous operation. The\n  primary way of interacting with a promise is through its `then` method, which\n  registers callbacks to receive either a promise's eventual value or the reason\n  why the promise cannot be fulfilled.\n\n  Terminology\n  -----------\n\n  - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n  - `thenable` is an object or function that defines a `then` method.\n  - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n  - `exception` is a value that is thrown using the throw statement.\n  - `reason` is a value that indicates why a promise was rejected.\n  - `settled` the final resting state of a promise, fulfilled or rejected.\n\n  A promise can be in one of three states: pending, fulfilled, or rejected.\n\n  Promises that are fulfilled have a fulfillment value and are in the fulfilled\n  state.  Promises that are rejected have a rejection reason and are in the\n  rejected state.  A fulfillment value is never a thenable.\n\n  Promises can also be said to *resolve* a value.  If this value is also a\n  promise, then the original promise's settled state will match the value's\n  settled state.  So a promise that *resolves* a promise that rejects will\n  itself reject, and a promise that *resolves* a promise that fulfills will\n  itself fulfill.\n\n\n  Basic Usage:\n  ------------\n\n  ```js\n  let promise = new Promise(function(resolve, reject) {\n    // on success\n    resolve(value);\n\n    // on failure\n    reject(reason);\n  });\n\n  promise.then(function(value) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Advanced Usage:\n  ---------------\n\n  Promises shine when abstracting away asynchronous interactions such as\n  `XMLHttpRequest`s.\n\n  ```js\n  function getJSON(url) {\n    return new Promise(function(resolve, reject){\n      let xhr = new XMLHttpRequest();\n\n      xhr.open('GET', url);\n      xhr.onreadystatechange = handler;\n      xhr.responseType = 'json';\n      xhr.setRequestHeader('Accept', 'application/json');\n      xhr.send();\n\n      function handler() {\n        if (this.readyState === this.DONE) {\n          if (this.status === 200) {\n            resolve(this.response);\n          } else {\n            reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n          }\n        }\n      };\n    });\n  }\n\n  getJSON('/posts.json').then(function(json) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Unlike callbacks, promises are great composable primitives.\n\n  ```js\n  Promise.all([\n    getJSON('/posts'),\n    getJSON('/comments')\n  ]).then(function(values){\n    values[0] // => postsJSON\n    values[1] // => commentsJSON\n\n    return values;\n  });\n  ```\n\n  @class Promise\n  @param {Function} resolver\n  Useful for tooling.\n  @constructor\n*/\n\nvar Promise = function () {\n  function Promise(resolver) {\n    this[PROMISE_ID] = nextId();\n    this._result = this._state = undefined;\n    this._subscribers = [];\n\n    if (noop !== resolver) {\n      typeof resolver !== 'function' && needsResolver();\n      this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n    }\n  }\n\n  /**\n  The primary way of interacting with a promise is through its `then` method,\n  which registers callbacks to receive either a promise's eventual value or the\n  reason why the promise cannot be fulfilled.\n   ```js\n  findUser().then(function(user){\n    // user is available\n  }, function(reason){\n    // user is unavailable, and you are given the reason why\n  });\n  ```\n   Chaining\n  --------\n   The return value of `then` is itself a promise.  This second, 'downstream'\n  promise is resolved with the return value of the first promise's fulfillment\n  or rejection handler, or rejected if the handler throws an exception.\n   ```js\n  findUser().then(function (user) {\n    return user.name;\n  }, function (reason) {\n    return 'default name';\n  }).then(function (userName) {\n    // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n    // will be `'default name'`\n  });\n   findUser().then(function (user) {\n    throw new Error('Found user, but still unhappy');\n  }, function (reason) {\n    throw new Error('`findUser` rejected and we're unhappy');\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n    // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n  });\n  ```\n  If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n   ```js\n  findUser().then(function (user) {\n    throw new PedagogicalException('Upstream error');\n  }).then(function (value) {\n    // never reached\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // The `PedgagocialException` is propagated all the way down to here\n  });\n  ```\n   Assimilation\n  ------------\n   Sometimes the value you want to propagate to a downstream promise can only be\n  retrieved asynchronously. This can be achieved by returning a promise in the\n  fulfillment or rejection handler. The downstream promise will then be pending\n  until the returned promise is settled. This is called *assimilation*.\n   ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // The user's comments are now available\n  });\n  ```\n   If the assimliated promise rejects, then the downstream promise will also reject.\n   ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // If `findCommentsByAuthor` fulfills, we'll have the value here\n  }, function (reason) {\n    // If `findCommentsByAuthor` rejects, we'll have the reason here\n  });\n  ```\n   Simple Example\n  --------------\n   Synchronous Example\n   ```javascript\n  let result;\n   try {\n    result = findResult();\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n   Errback Example\n   ```js\n  findResult(function(result, err){\n    if (err) {\n      // failure\n    } else {\n      // success\n    }\n  });\n  ```\n   Promise Example;\n   ```javascript\n  findResult().then(function(result){\n    // success\n  }, function(reason){\n    // failure\n  });\n  ```\n   Advanced Example\n  --------------\n   Synchronous Example\n   ```javascript\n  let author, books;\n   try {\n    author = findAuthor();\n    books  = findBooksByAuthor(author);\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n   Errback Example\n   ```js\n   function foundBooks(books) {\n   }\n   function failure(reason) {\n   }\n   findAuthor(function(author, err){\n    if (err) {\n      failure(err);\n      // failure\n    } else {\n      try {\n        findBoooksByAuthor(author, function(books, err) {\n          if (err) {\n            failure(err);\n          } else {\n            try {\n              foundBooks(books);\n            } catch(reason) {\n              failure(reason);\n            }\n          }\n        });\n      } catch(error) {\n        failure(err);\n      }\n      // success\n    }\n  });\n  ```\n   Promise Example;\n   ```javascript\n  findAuthor().\n    then(findBooksByAuthor).\n    then(function(books){\n      // found books\n  }).catch(function(reason){\n    // something went wrong\n  });\n  ```\n   @method then\n  @param {Function} onFulfilled\n  @param {Function} onRejected\n  Useful for tooling.\n  @return {Promise}\n  */\n\n  /**\n  `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n  as the catch block of a try/catch statement.\n  ```js\n  function findAuthor(){\n  throw new Error('couldn't find that author');\n  }\n  // synchronous\n  try {\n  findAuthor();\n  } catch(reason) {\n  // something went wrong\n  }\n  // async with promises\n  findAuthor().catch(function(reason){\n  // something went wrong\n  });\n  ```\n  @method catch\n  @param {Function} onRejection\n  Useful for tooling.\n  @return {Promise}\n  */\n\n\n  Promise.prototype.catch = function _catch(onRejection) {\n    return this.then(null, onRejection);\n  };\n\n  /**\n    `finally` will be invoked regardless of the promise's fate just as native\n    try/catch/finally behaves\n  \n    Synchronous example:\n  \n    ```js\n    findAuthor() {\n      if (Math.random() > 0.5) {\n        throw new Error();\n      }\n      return new Author();\n    }\n  \n    try {\n      return findAuthor(); // succeed or fail\n    } catch(error) {\n      return findOtherAuther();\n    } finally {\n      // always runs\n      // doesn't affect the return value\n    }\n    ```\n  \n    Asynchronous example:\n  \n    ```js\n    findAuthor().catch(function(reason){\n      return findOtherAuther();\n    }).finally(function(){\n      // author was either found, or not\n    });\n    ```\n  \n    @method finally\n    @param {Function} callback\n    @return {Promise}\n  */\n\n\n  Promise.prototype.finally = function _finally(callback) {\n    var promise = this;\n    var constructor = promise.constructor;\n\n    if (isFunction(callback)) {\n      return promise.then(function (value) {\n        return constructor.resolve(callback()).then(function () {\n          return value;\n        });\n      }, function (reason) {\n        return constructor.resolve(callback()).then(function () {\n          throw reason;\n        });\n      });\n    }\n\n    return promise.then(callback, callback);\n  };\n\n  return Promise;\n}();\n\nPromise.prototype.then = then;\nexport default Promise;\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = Resolve;\nPromise.reject = Reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;","/*global self*/\nimport Promise from './promise';\n\nexport default function polyfill() {\n  var local = void 0;\n\n  if (typeof global !== 'undefined') {\n    local = global;\n  } else if (typeof self !== 'undefined') {\n    local = self;\n  } else {\n    try {\n      local = Function('return this')();\n    } catch (e) {\n      throw new Error('polyfill failed because global object is unavailable in this environment');\n    }\n  }\n\n  var P = local.Promise;\n\n  if (P) {\n    var promiseToString = null;\n    try {\n      promiseToString = Object.prototype.toString.call(P.resolve());\n    } catch (e) {\n      // silently ignored\n    }\n\n    if (promiseToString === '[object Promise]' && !P.cast) {\n      return;\n    }\n  }\n\n  local.Promise = Promise;\n}","import Promise from './es6-promise/promise';\nimport polyfill from './es6-promise/polyfill';\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\nexport default Promise;","import Promise from './es6-promise';\nPromise.polyfill();\nexport default Promise;"],"names":["resolve","_resolve","then","originalThen","originalResolve","Promise","reject","_reject","Resolve","Reject"],"mappings":"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","file":"es6-promise.auto.min.js"}
\ No newline at end of file
diff --git a/deps/npm/node_modules/es6-promise/dist/es6-promise.js b/deps/npm/node_modules/es6-promise/dist/es6-promise.js
index 80d4645c346986..02a78bddb8ee0f 100644
--- a/deps/npm/node_modules/es6-promise/dist/es6-promise.js
+++ b/deps/npm/node_modules/es6-promise/dist/es6-promise.js
@@ -3,7 +3,7 @@
  * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
  * @license   Licensed under MIT license
  *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
- * @version   v4.2.4+314e4831
+ * @version   v4.2.6+9869a4bc
  */
 
 (function (global, factory) {
@@ -1109,15 +1109,19 @@ var Promise$1 = function () {
     var promise = this;
     var constructor = promise.constructor;
 
-    return promise.then(function (value) {
-      return constructor.resolve(callback()).then(function () {
-        return value;
-      });
-    }, function (reason) {
-      return constructor.resolve(callback()).then(function () {
-        throw reason;
+    if (isFunction(callback)) {
+      return promise.then(function (value) {
+        return constructor.resolve(callback()).then(function () {
+          return value;
+        });
+      }, function (reason) {
+        return constructor.resolve(callback()).then(function () {
+          throw reason;
+        });
       });
-    });
+    }
+
+    return promise.then(callback, callback);
   };
 
   return Promise;
diff --git a/deps/npm/node_modules/es6-promise/dist/es6-promise.map b/deps/npm/node_modules/es6-promise/dist/es6-promise.map
index bbe71e43fc0e35..d17ac0788c37c7 100644
--- a/deps/npm/node_modules/es6-promise/dist/es6-promise.map
+++ b/deps/npm/node_modules/es6-promise/dist/es6-promise.map
@@ -1 +1 @@
-{"version":3,"sources":["config/versionTemplate.txt","lib/es6-promise/utils.js","lib/es6-promise/asap.js","lib/es6-promise/then.js","lib/es6-promise/promise/resolve.js","lib/es6-promise/-internal.js","lib/es6-promise/enumerator.js","lib/es6-promise/promise/all.js","lib/es6-promise/promise/race.js","lib/es6-promise/promise/reject.js","lib/es6-promise/promise.js","lib/es6-promise/polyfill.js","lib/es6-promise.js"],"sourcesContent":["/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license   Licensed under MIT license\n *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version   v4.2.4+314e4831\n */\n","export function objectOrFunction(x) {\n  var type = typeof x;\n  return x !== null && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(x) {\n  return typeof x === 'function';\n}\n\nexport function isMaybeThenable(x) {\n  return x !== null && typeof x === 'object';\n}\n\nvar _isArray = void 0;\nif (Array.isArray) {\n  _isArray = Array.isArray;\n} else {\n  _isArray = function (x) {\n    return Object.prototype.toString.call(x) === '[object Array]';\n  };\n}\n\nexport var isArray = _isArray;","var len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nexport var asap = function asap(callback, arg) {\n  queue[len] = callback;\n  queue[len + 1] = arg;\n  len += 2;\n  if (len === 2) {\n    // If len is 2, that means that we need to schedule an async flush.\n    // If additional callbacks are queued before the queue is flushed, they\n    // will be processed by this flush that we are scheduling.\n    if (customSchedulerFn) {\n      customSchedulerFn(flush);\n    } else {\n      scheduleFlush();\n    }\n  }\n};\n\nexport function setScheduler(scheduleFn) {\n  customSchedulerFn = scheduleFn;\n}\n\nexport function setAsap(asapFn) {\n  asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n  // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n  // see https://github.com/cujojs/when/issues/410 for details\n  return function () {\n    return process.nextTick(flush);\n  };\n}\n\n// vertx\nfunction useVertxTimer() {\n  if (typeof vertxNext !== 'undefined') {\n    return function () {\n      vertxNext(flush);\n    };\n  }\n\n  return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n  var iterations = 0;\n  var observer = new BrowserMutationObserver(flush);\n  var node = document.createTextNode('');\n  observer.observe(node, { characterData: true });\n\n  return function () {\n    node.data = iterations = ++iterations % 2;\n  };\n}\n\n// web worker\nfunction useMessageChannel() {\n  var channel = new MessageChannel();\n  channel.port1.onmessage = flush;\n  return function () {\n    return channel.port2.postMessage(0);\n  };\n}\n\nfunction useSetTimeout() {\n  // Store setTimeout reference so es6-promise will be unaffected by\n  // other code modifying setTimeout (like sinon.useFakeTimers())\n  var globalSetTimeout = setTimeout;\n  return function () {\n    return globalSetTimeout(flush, 1);\n  };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n  for (var i = 0; i < len; i += 2) {\n    var callback = queue[i];\n    var arg = queue[i + 1];\n\n    callback(arg);\n\n    queue[i] = undefined;\n    queue[i + 1] = undefined;\n  }\n\n  len = 0;\n}\n\nfunction attemptVertx() {\n  try {\n    var vertx = Function('return this')().require('vertx');\n    vertxNext = vertx.runOnLoop || vertx.runOnContext;\n    return useVertxTimer();\n  } catch (e) {\n    return useSetTimeout();\n  }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n  scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n  scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n  scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n  scheduleFlush = attemptVertx();\n} else {\n  scheduleFlush = useSetTimeout();\n}","import { invokeCallback, subscribe, FULFILLED, REJECTED, noop, makePromise, PROMISE_ID } from './-internal';\n\nimport { asap } from './asap';\n\nexport default function then(onFulfillment, onRejection) {\n  var parent = this;\n\n  var child = new this.constructor(noop);\n\n  if (child[PROMISE_ID] === undefined) {\n    makePromise(child);\n  }\n\n  var _state = parent._state;\n\n\n  if (_state) {\n    var callback = arguments[_state - 1];\n    asap(function () {\n      return invokeCallback(_state, child, callback, parent._result);\n    });\n  } else {\n    subscribe(parent, child, onFulfillment, onRejection);\n  }\n\n  return child;\n}","import { noop, resolve as _resolve } from '../-internal';\n\n/**\n  `Promise.resolve` returns a promise that will become resolved with the\n  passed `value`. It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    resolve(1);\n  });\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.resolve(1);\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  @method resolve\n  @static\n  @param {Any} value value that the returned promise will be resolved with\n  Useful for tooling.\n  @return {Promise} a promise that will become fulfilled with the given\n  `value`\n*/\nexport default function resolve(object) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (object && typeof object === 'object' && object.constructor === Constructor) {\n    return object;\n  }\n\n  var promise = new Constructor(noop);\n  _resolve(promise, object);\n  return promise;\n}","import { objectOrFunction, isFunction } from './utils';\n\nimport { asap } from './asap';\n\nimport originalThen from './then';\nimport originalResolve from './promise/resolve';\n\nexport var PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n  return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n  return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n  try {\n    return promise.then;\n  } catch (error) {\n    TRY_CATCH_ERROR.error = error;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n  try {\n    then.call(value, fulfillmentHandler, rejectionHandler);\n  } catch (e) {\n    return e;\n  }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n  asap(function (promise) {\n    var sealed = false;\n    var error = tryThen(then, thenable, function (value) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n      if (thenable !== value) {\n        resolve(promise, value);\n      } else {\n        fulfill(promise, value);\n      }\n    }, function (reason) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n\n      reject(promise, reason);\n    }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n    if (!sealed && error) {\n      sealed = true;\n      reject(promise, error);\n    }\n  }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n  if (thenable._state === FULFILLED) {\n    fulfill(promise, thenable._result);\n  } else if (thenable._state === REJECTED) {\n    reject(promise, thenable._result);\n  } else {\n    subscribe(thenable, undefined, function (value) {\n      return resolve(promise, value);\n    }, function (reason) {\n      return reject(promise, reason);\n    });\n  }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then) {\n  if (maybeThenable.constructor === promise.constructor && then === originalThen && maybeThenable.constructor.resolve === originalResolve) {\n    handleOwnThenable(promise, maybeThenable);\n  } else {\n    if (then === TRY_CATCH_ERROR) {\n      reject(promise, TRY_CATCH_ERROR.error);\n      TRY_CATCH_ERROR.error = null;\n    } else if (then === undefined) {\n      fulfill(promise, maybeThenable);\n    } else if (isFunction(then)) {\n      handleForeignThenable(promise, maybeThenable, then);\n    } else {\n      fulfill(promise, maybeThenable);\n    }\n  }\n}\n\nfunction resolve(promise, value) {\n  if (promise === value) {\n    reject(promise, selfFulfillment());\n  } else if (objectOrFunction(value)) {\n    handleMaybeThenable(promise, value, getThen(value));\n  } else {\n    fulfill(promise, value);\n  }\n}\n\nfunction publishRejection(promise) {\n  if (promise._onerror) {\n    promise._onerror(promise._result);\n  }\n\n  publish(promise);\n}\n\nfunction fulfill(promise, value) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n\n  promise._result = value;\n  promise._state = FULFILLED;\n\n  if (promise._subscribers.length !== 0) {\n    asap(publish, promise);\n  }\n}\n\nfunction reject(promise, reason) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n  promise._state = REJECTED;\n  promise._result = reason;\n\n  asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n  var _subscribers = parent._subscribers;\n  var length = _subscribers.length;\n\n\n  parent._onerror = null;\n\n  _subscribers[length] = child;\n  _subscribers[length + FULFILLED] = onFulfillment;\n  _subscribers[length + REJECTED] = onRejection;\n\n  if (length === 0 && parent._state) {\n    asap(publish, parent);\n  }\n}\n\nfunction publish(promise) {\n  var subscribers = promise._subscribers;\n  var settled = promise._state;\n\n  if (subscribers.length === 0) {\n    return;\n  }\n\n  var child = void 0,\n      callback = void 0,\n      detail = promise._result;\n\n  for (var i = 0; i < subscribers.length; i += 3) {\n    child = subscribers[i];\n    callback = subscribers[i + settled];\n\n    if (child) {\n      invokeCallback(settled, child, callback, detail);\n    } else {\n      callback(detail);\n    }\n  }\n\n  promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n  try {\n    return callback(detail);\n  } catch (e) {\n    TRY_CATCH_ERROR.error = e;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n  var hasCallback = isFunction(callback),\n      value = void 0,\n      error = void 0,\n      succeeded = void 0,\n      failed = void 0;\n\n  if (hasCallback) {\n    value = tryCatch(callback, detail);\n\n    if (value === TRY_CATCH_ERROR) {\n      failed = true;\n      error = value.error;\n      value.error = null;\n    } else {\n      succeeded = true;\n    }\n\n    if (promise === value) {\n      reject(promise, cannotReturnOwn());\n      return;\n    }\n  } else {\n    value = detail;\n    succeeded = true;\n  }\n\n  if (promise._state !== PENDING) {\n    // noop\n  } else if (hasCallback && succeeded) {\n    resolve(promise, value);\n  } else if (failed) {\n    reject(promise, error);\n  } else if (settled === FULFILLED) {\n    fulfill(promise, value);\n  } else if (settled === REJECTED) {\n    reject(promise, value);\n  }\n}\n\nfunction initializePromise(promise, resolver) {\n  try {\n    resolver(function resolvePromise(value) {\n      resolve(promise, value);\n    }, function rejectPromise(reason) {\n      reject(promise, reason);\n    });\n  } catch (e) {\n    reject(promise, e);\n  }\n}\n\nvar id = 0;\nfunction nextId() {\n  return id++;\n}\n\nfunction makePromise(promise) {\n  promise[PROMISE_ID] = id++;\n  promise._state = undefined;\n  promise._result = undefined;\n  promise._subscribers = [];\n}\n\nexport { nextId, makePromise, getThen, noop, resolve, reject, fulfill, subscribe, publish, publishRejection, initializePromise, invokeCallback, FULFILLED, REJECTED, PENDING, handleMaybeThenable };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isArray, isMaybeThenable } from './utils';\nimport { noop, reject, fulfill, subscribe, FULFILLED, REJECTED, PENDING, getThen, handleMaybeThenable } from './-internal';\n\nimport then from './then';\nimport Promise from './promise';\nimport originalResolve from './promise/resolve';\nimport originalThen from './then';\nimport { makePromise, PROMISE_ID } from './-internal';\n\nfunction validationError() {\n  return new Error('Array Methods must be provided an Array');\n};\n\nvar Enumerator = function () {\n  function Enumerator(Constructor, input) {\n    this._instanceConstructor = Constructor;\n    this.promise = new Constructor(noop);\n\n    if (!this.promise[PROMISE_ID]) {\n      makePromise(this.promise);\n    }\n\n    if (isArray(input)) {\n      this.length = input.length;\n      this._remaining = input.length;\n\n      this._result = new Array(this.length);\n\n      if (this.length === 0) {\n        fulfill(this.promise, this._result);\n      } else {\n        this.length = this.length || 0;\n        this._enumerate(input);\n        if (this._remaining === 0) {\n          fulfill(this.promise, this._result);\n        }\n      }\n    } else {\n      reject(this.promise, validationError());\n    }\n  }\n\n  Enumerator.prototype._enumerate = function _enumerate(input) {\n    for (var i = 0; this._state === PENDING && i < input.length; i++) {\n      this._eachEntry(input[i], i);\n    }\n  };\n\n  Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n    var c = this._instanceConstructor;\n    var resolve = c.resolve;\n\n\n    if (resolve === originalResolve) {\n      var _then = getThen(entry);\n\n      if (_then === originalThen && entry._state !== PENDING) {\n        this._settledAt(entry._state, i, entry._result);\n      } else if (typeof _then !== 'function') {\n        this._remaining--;\n        this._result[i] = entry;\n      } else if (c === Promise) {\n        var promise = new c(noop);\n        handleMaybeThenable(promise, entry, _then);\n        this._willSettleAt(promise, i);\n      } else {\n        this._willSettleAt(new c(function (resolve) {\n          return resolve(entry);\n        }), i);\n      }\n    } else {\n      this._willSettleAt(resolve(entry), i);\n    }\n  };\n\n  Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n    var promise = this.promise;\n\n\n    if (promise._state === PENDING) {\n      this._remaining--;\n\n      if (state === REJECTED) {\n        reject(promise, value);\n      } else {\n        this._result[i] = value;\n      }\n    }\n\n    if (this._remaining === 0) {\n      fulfill(promise, this._result);\n    }\n  };\n\n  Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n    var enumerator = this;\n\n    subscribe(promise, undefined, function (value) {\n      return enumerator._settledAt(FULFILLED, i, value);\n    }, function (reason) {\n      return enumerator._settledAt(REJECTED, i, reason);\n    });\n  };\n\n  return Enumerator;\n}();\n\nexport default Enumerator;\n;","import Enumerator from '../enumerator';\n\n/**\n  `Promise.all` accepts an array of promises, and returns a new promise which\n  is fulfilled with an array of fulfillment values for the passed promises, or\n  rejected with the reason of the first passed promise to be rejected. It casts all\n  elements of the passed iterable to promises as it runs this algorithm.\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = resolve(2);\n  let promise3 = resolve(3);\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // The array here would be [ 1, 2, 3 ];\n  });\n  ```\n\n  If any of the `promises` given to `all` are rejected, the first promise\n  that is rejected will be given as an argument to the returned promises's\n  rejection handler. For example:\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = reject(new Error(\"2\"));\n  let promise3 = reject(new Error(\"3\"));\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // Code here never runs because there are rejected promises!\n  }, function(error) {\n    // error.message === \"2\"\n  });\n  ```\n\n  @method all\n  @static\n  @param {Array} entries array of promises\n  @param {String} label optional string for labeling the promise.\n  Useful for tooling.\n  @return {Promise} promise that is fulfilled when all `promises` have been\n  fulfilled, or rejected if any of them become rejected.\n  @static\n*/\nexport default function all(entries) {\n  return new Enumerator(this, entries).promise;\n}","import { isArray } from \"../utils\";\n\n/**\n  `Promise.race` returns a new promise which is settled in the same way as the\n  first passed promise to settle.\n\n  Example:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 2');\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // result === 'promise 2' because it was resolved before promise1\n    // was resolved.\n  });\n  ```\n\n  `Promise.race` is deterministic in that only the state of the first\n  settled promise matters. For example, even if other promises given to the\n  `promises` array argument are resolved, but the first settled promise has\n  become rejected before the other promises became fulfilled, the returned\n  promise will become rejected:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      reject(new Error('promise 2'));\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // Code here never runs\n  }, function(reason){\n    // reason.message === 'promise 2' because promise 2 became rejected before\n    // promise 1 became fulfilled\n  });\n  ```\n\n  An example real-world use case is implementing timeouts:\n\n  ```javascript\n  Promise.race([ajax('foo.json'), timeout(5000)])\n  ```\n\n  @method race\n  @static\n  @param {Array} promises array of promises to observe\n  Useful for tooling.\n  @return {Promise} a promise which settles in the same way as the first passed\n  promise to settle.\n*/\nexport default function race(entries) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (!isArray(entries)) {\n    return new Constructor(function (_, reject) {\n      return reject(new TypeError('You must pass an array to race.'));\n    });\n  } else {\n    return new Constructor(function (resolve, reject) {\n      var length = entries.length;\n      for (var i = 0; i < length; i++) {\n        Constructor.resolve(entries[i]).then(resolve, reject);\n      }\n    });\n  }\n}","import { noop, reject as _reject } from '../-internal';\n\n/**\n  `Promise.reject` returns a promise rejected with the passed `reason`.\n  It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    reject(new Error('WHOOPS'));\n  });\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.reject(new Error('WHOOPS'));\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  @method reject\n  @static\n  @param {Any} reason value that the returned promise will be rejected with.\n  Useful for tooling.\n  @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason) {\n  /*jshint validthis:true */\n  var Constructor = this;\n  var promise = new Constructor(noop);\n  _reject(promise, reason);\n  return promise;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isFunction } from './utils';\nimport { noop, nextId, PROMISE_ID, initializePromise } from './-internal';\nimport { asap, setAsap, setScheduler } from './asap';\n\nimport all from './promise/all';\nimport race from './promise/race';\nimport Resolve from './promise/resolve';\nimport Reject from './promise/reject';\nimport then from './then';\n\nfunction needsResolver() {\n  throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n  throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n  Promise objects represent the eventual result of an asynchronous operation. The\n  primary way of interacting with a promise is through its `then` method, which\n  registers callbacks to receive either a promise's eventual value or the reason\n  why the promise cannot be fulfilled.\n\n  Terminology\n  -----------\n\n  - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n  - `thenable` is an object or function that defines a `then` method.\n  - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n  - `exception` is a value that is thrown using the throw statement.\n  - `reason` is a value that indicates why a promise was rejected.\n  - `settled` the final resting state of a promise, fulfilled or rejected.\n\n  A promise can be in one of three states: pending, fulfilled, or rejected.\n\n  Promises that are fulfilled have a fulfillment value and are in the fulfilled\n  state.  Promises that are rejected have a rejection reason and are in the\n  rejected state.  A fulfillment value is never a thenable.\n\n  Promises can also be said to *resolve* a value.  If this value is also a\n  promise, then the original promise's settled state will match the value's\n  settled state.  So a promise that *resolves* a promise that rejects will\n  itself reject, and a promise that *resolves* a promise that fulfills will\n  itself fulfill.\n\n\n  Basic Usage:\n  ------------\n\n  ```js\n  let promise = new Promise(function(resolve, reject) {\n    // on success\n    resolve(value);\n\n    // on failure\n    reject(reason);\n  });\n\n  promise.then(function(value) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Advanced Usage:\n  ---------------\n\n  Promises shine when abstracting away asynchronous interactions such as\n  `XMLHttpRequest`s.\n\n  ```js\n  function getJSON(url) {\n    return new Promise(function(resolve, reject){\n      let xhr = new XMLHttpRequest();\n\n      xhr.open('GET', url);\n      xhr.onreadystatechange = handler;\n      xhr.responseType = 'json';\n      xhr.setRequestHeader('Accept', 'application/json');\n      xhr.send();\n\n      function handler() {\n        if (this.readyState === this.DONE) {\n          if (this.status === 200) {\n            resolve(this.response);\n          } else {\n            reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n          }\n        }\n      };\n    });\n  }\n\n  getJSON('/posts.json').then(function(json) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Unlike callbacks, promises are great composable primitives.\n\n  ```js\n  Promise.all([\n    getJSON('/posts'),\n    getJSON('/comments')\n  ]).then(function(values){\n    values[0] // => postsJSON\n    values[1] // => commentsJSON\n\n    return values;\n  });\n  ```\n\n  @class Promise\n  @param {Function} resolver\n  Useful for tooling.\n  @constructor\n*/\n\nvar Promise = function () {\n  function Promise(resolver) {\n    this[PROMISE_ID] = nextId();\n    this._result = this._state = undefined;\n    this._subscribers = [];\n\n    if (noop !== resolver) {\n      typeof resolver !== 'function' && needsResolver();\n      this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n    }\n  }\n\n  /**\n  The primary way of interacting with a promise is through its `then` method,\n  which registers callbacks to receive either a promise's eventual value or the\n  reason why the promise cannot be fulfilled.\n   ```js\n  findUser().then(function(user){\n    // user is available\n  }, function(reason){\n    // user is unavailable, and you are given the reason why\n  });\n  ```\n   Chaining\n  --------\n   The return value of `then` is itself a promise.  This second, 'downstream'\n  promise is resolved with the return value of the first promise's fulfillment\n  or rejection handler, or rejected if the handler throws an exception.\n   ```js\n  findUser().then(function (user) {\n    return user.name;\n  }, function (reason) {\n    return 'default name';\n  }).then(function (userName) {\n    // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n    // will be `'default name'`\n  });\n   findUser().then(function (user) {\n    throw new Error('Found user, but still unhappy');\n  }, function (reason) {\n    throw new Error('`findUser` rejected and we're unhappy');\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n    // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n  });\n  ```\n  If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n   ```js\n  findUser().then(function (user) {\n    throw new PedagogicalException('Upstream error');\n  }).then(function (value) {\n    // never reached\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // The `PedgagocialException` is propagated all the way down to here\n  });\n  ```\n   Assimilation\n  ------------\n   Sometimes the value you want to propagate to a downstream promise can only be\n  retrieved asynchronously. This can be achieved by returning a promise in the\n  fulfillment or rejection handler. The downstream promise will then be pending\n  until the returned promise is settled. This is called *assimilation*.\n   ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // The user's comments are now available\n  });\n  ```\n   If the assimliated promise rejects, then the downstream promise will also reject.\n   ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // If `findCommentsByAuthor` fulfills, we'll have the value here\n  }, function (reason) {\n    // If `findCommentsByAuthor` rejects, we'll have the reason here\n  });\n  ```\n   Simple Example\n  --------------\n   Synchronous Example\n   ```javascript\n  let result;\n   try {\n    result = findResult();\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n   Errback Example\n   ```js\n  findResult(function(result, err){\n    if (err) {\n      // failure\n    } else {\n      // success\n    }\n  });\n  ```\n   Promise Example;\n   ```javascript\n  findResult().then(function(result){\n    // success\n  }, function(reason){\n    // failure\n  });\n  ```\n   Advanced Example\n  --------------\n   Synchronous Example\n   ```javascript\n  let author, books;\n   try {\n    author = findAuthor();\n    books  = findBooksByAuthor(author);\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n   Errback Example\n   ```js\n   function foundBooks(books) {\n   }\n   function failure(reason) {\n   }\n   findAuthor(function(author, err){\n    if (err) {\n      failure(err);\n      // failure\n    } else {\n      try {\n        findBoooksByAuthor(author, function(books, err) {\n          if (err) {\n            failure(err);\n          } else {\n            try {\n              foundBooks(books);\n            } catch(reason) {\n              failure(reason);\n            }\n          }\n        });\n      } catch(error) {\n        failure(err);\n      }\n      // success\n    }\n  });\n  ```\n   Promise Example;\n   ```javascript\n  findAuthor().\n    then(findBooksByAuthor).\n    then(function(books){\n      // found books\n  }).catch(function(reason){\n    // something went wrong\n  });\n  ```\n   @method then\n  @param {Function} onFulfilled\n  @param {Function} onRejected\n  Useful for tooling.\n  @return {Promise}\n  */\n\n  /**\n  `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n  as the catch block of a try/catch statement.\n  ```js\n  function findAuthor(){\n  throw new Error('couldn't find that author');\n  }\n  // synchronous\n  try {\n  findAuthor();\n  } catch(reason) {\n  // something went wrong\n  }\n  // async with promises\n  findAuthor().catch(function(reason){\n  // something went wrong\n  });\n  ```\n  @method catch\n  @param {Function} onRejection\n  Useful for tooling.\n  @return {Promise}\n  */\n\n\n  Promise.prototype.catch = function _catch(onRejection) {\n    return this.then(null, onRejection);\n  };\n\n  /**\n    `finally` will be invoked regardless of the promise's fate just as native\n    try/catch/finally behaves\n  \n    Synchronous example:\n  \n    ```js\n    findAuthor() {\n      if (Math.random() > 0.5) {\n        throw new Error();\n      }\n      return new Author();\n    }\n  \n    try {\n      return findAuthor(); // succeed or fail\n    } catch(error) {\n      return findOtherAuther();\n    } finally {\n      // always runs\n      // doesn't affect the return value\n    }\n    ```\n  \n    Asynchronous example:\n  \n    ```js\n    findAuthor().catch(function(reason){\n      return findOtherAuther();\n    }).finally(function(){\n      // author was either found, or not\n    });\n    ```\n  \n    @method finally\n    @param {Function} callback\n    @return {Promise}\n  */\n\n\n  Promise.prototype.finally = function _finally(callback) {\n    var promise = this;\n    var constructor = promise.constructor;\n\n    return promise.then(function (value) {\n      return constructor.resolve(callback()).then(function () {\n        return value;\n      });\n    }, function (reason) {\n      return constructor.resolve(callback()).then(function () {\n        throw reason;\n      });\n    });\n  };\n\n  return Promise;\n}();\n\nPromise.prototype.then = then;\nexport default Promise;\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = Resolve;\nPromise.reject = Reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;","/*global self*/\nimport Promise from './promise';\n\nexport default function polyfill() {\n  var local = void 0;\n\n  if (typeof global !== 'undefined') {\n    local = global;\n  } else if (typeof self !== 'undefined') {\n    local = self;\n  } else {\n    try {\n      local = Function('return this')();\n    } catch (e) {\n      throw new Error('polyfill failed because global object is unavailable in this environment');\n    }\n  }\n\n  var P = local.Promise;\n\n  if (P) {\n    var promiseToString = null;\n    try {\n      promiseToString = Object.prototype.toString.call(P.resolve());\n    } catch (e) {\n      // silently ignored\n    }\n\n    if (promiseToString === '[object Promise]' && !P.cast) {\n      return;\n    }\n  }\n\n  local.Promise = Promise;\n}","import Promise from './es6-promise/promise';\nimport polyfill from './es6-promise/polyfill';\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\nexport default Promise;"],"names":["resolve","_resolve","then","originalThen","originalResolve","Promise","reject","_reject","Resolve","Reject"],"mappings":"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","file":"es6-promise.js"}
\ No newline at end of file
+{"version":3,"sources":["config/versionTemplate.txt","lib/es6-promise/utils.js","lib/es6-promise/asap.js","lib/es6-promise/then.js","lib/es6-promise/promise/resolve.js","lib/es6-promise/-internal.js","lib/es6-promise/enumerator.js","lib/es6-promise/promise/all.js","lib/es6-promise/promise/race.js","lib/es6-promise/promise/reject.js","lib/es6-promise/promise.js","lib/es6-promise/polyfill.js","lib/es6-promise.js"],"sourcesContent":["/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license   Licensed under MIT license\n *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version   v4.2.6+9869a4bc\n */\n","export function objectOrFunction(x) {\n  var type = typeof x;\n  return x !== null && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(x) {\n  return typeof x === 'function';\n}\n\nexport function isMaybeThenable(x) {\n  return x !== null && typeof x === 'object';\n}\n\nvar _isArray = void 0;\nif (Array.isArray) {\n  _isArray = Array.isArray;\n} else {\n  _isArray = function (x) {\n    return Object.prototype.toString.call(x) === '[object Array]';\n  };\n}\n\nexport var isArray = _isArray;","var len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nexport var asap = function asap(callback, arg) {\n  queue[len] = callback;\n  queue[len + 1] = arg;\n  len += 2;\n  if (len === 2) {\n    // If len is 2, that means that we need to schedule an async flush.\n    // If additional callbacks are queued before the queue is flushed, they\n    // will be processed by this flush that we are scheduling.\n    if (customSchedulerFn) {\n      customSchedulerFn(flush);\n    } else {\n      scheduleFlush();\n    }\n  }\n};\n\nexport function setScheduler(scheduleFn) {\n  customSchedulerFn = scheduleFn;\n}\n\nexport function setAsap(asapFn) {\n  asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n  // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n  // see https://github.com/cujojs/when/issues/410 for details\n  return function () {\n    return process.nextTick(flush);\n  };\n}\n\n// vertx\nfunction useVertxTimer() {\n  if (typeof vertxNext !== 'undefined') {\n    return function () {\n      vertxNext(flush);\n    };\n  }\n\n  return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n  var iterations = 0;\n  var observer = new BrowserMutationObserver(flush);\n  var node = document.createTextNode('');\n  observer.observe(node, { characterData: true });\n\n  return function () {\n    node.data = iterations = ++iterations % 2;\n  };\n}\n\n// web worker\nfunction useMessageChannel() {\n  var channel = new MessageChannel();\n  channel.port1.onmessage = flush;\n  return function () {\n    return channel.port2.postMessage(0);\n  };\n}\n\nfunction useSetTimeout() {\n  // Store setTimeout reference so es6-promise will be unaffected by\n  // other code modifying setTimeout (like sinon.useFakeTimers())\n  var globalSetTimeout = setTimeout;\n  return function () {\n    return globalSetTimeout(flush, 1);\n  };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n  for (var i = 0; i < len; i += 2) {\n    var callback = queue[i];\n    var arg = queue[i + 1];\n\n    callback(arg);\n\n    queue[i] = undefined;\n    queue[i + 1] = undefined;\n  }\n\n  len = 0;\n}\n\nfunction attemptVertx() {\n  try {\n    var vertx = Function('return this')().require('vertx');\n    vertxNext = vertx.runOnLoop || vertx.runOnContext;\n    return useVertxTimer();\n  } catch (e) {\n    return useSetTimeout();\n  }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n  scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n  scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n  scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n  scheduleFlush = attemptVertx();\n} else {\n  scheduleFlush = useSetTimeout();\n}","import { invokeCallback, subscribe, FULFILLED, REJECTED, noop, makePromise, PROMISE_ID } from './-internal';\n\nimport { asap } from './asap';\n\nexport default function then(onFulfillment, onRejection) {\n  var parent = this;\n\n  var child = new this.constructor(noop);\n\n  if (child[PROMISE_ID] === undefined) {\n    makePromise(child);\n  }\n\n  var _state = parent._state;\n\n\n  if (_state) {\n    var callback = arguments[_state - 1];\n    asap(function () {\n      return invokeCallback(_state, child, callback, parent._result);\n    });\n  } else {\n    subscribe(parent, child, onFulfillment, onRejection);\n  }\n\n  return child;\n}","import { noop, resolve as _resolve } from '../-internal';\n\n/**\n  `Promise.resolve` returns a promise that will become resolved with the\n  passed `value`. It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    resolve(1);\n  });\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.resolve(1);\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  @method resolve\n  @static\n  @param {Any} value value that the returned promise will be resolved with\n  Useful for tooling.\n  @return {Promise} a promise that will become fulfilled with the given\n  `value`\n*/\nexport default function resolve(object) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (object && typeof object === 'object' && object.constructor === Constructor) {\n    return object;\n  }\n\n  var promise = new Constructor(noop);\n  _resolve(promise, object);\n  return promise;\n}","import { objectOrFunction, isFunction } from './utils';\n\nimport { asap } from './asap';\n\nimport originalThen from './then';\nimport originalResolve from './promise/resolve';\n\nexport var PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n  return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n  return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n  try {\n    return promise.then;\n  } catch (error) {\n    TRY_CATCH_ERROR.error = error;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n  try {\n    then.call(value, fulfillmentHandler, rejectionHandler);\n  } catch (e) {\n    return e;\n  }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n  asap(function (promise) {\n    var sealed = false;\n    var error = tryThen(then, thenable, function (value) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n      if (thenable !== value) {\n        resolve(promise, value);\n      } else {\n        fulfill(promise, value);\n      }\n    }, function (reason) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n\n      reject(promise, reason);\n    }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n    if (!sealed && error) {\n      sealed = true;\n      reject(promise, error);\n    }\n  }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n  if (thenable._state === FULFILLED) {\n    fulfill(promise, thenable._result);\n  } else if (thenable._state === REJECTED) {\n    reject(promise, thenable._result);\n  } else {\n    subscribe(thenable, undefined, function (value) {\n      return resolve(promise, value);\n    }, function (reason) {\n      return reject(promise, reason);\n    });\n  }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then) {\n  if (maybeThenable.constructor === promise.constructor && then === originalThen && maybeThenable.constructor.resolve === originalResolve) {\n    handleOwnThenable(promise, maybeThenable);\n  } else {\n    if (then === TRY_CATCH_ERROR) {\n      reject(promise, TRY_CATCH_ERROR.error);\n      TRY_CATCH_ERROR.error = null;\n    } else if (then === undefined) {\n      fulfill(promise, maybeThenable);\n    } else if (isFunction(then)) {\n      handleForeignThenable(promise, maybeThenable, then);\n    } else {\n      fulfill(promise, maybeThenable);\n    }\n  }\n}\n\nfunction resolve(promise, value) {\n  if (promise === value) {\n    reject(promise, selfFulfillment());\n  } else if (objectOrFunction(value)) {\n    handleMaybeThenable(promise, value, getThen(value));\n  } else {\n    fulfill(promise, value);\n  }\n}\n\nfunction publishRejection(promise) {\n  if (promise._onerror) {\n    promise._onerror(promise._result);\n  }\n\n  publish(promise);\n}\n\nfunction fulfill(promise, value) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n\n  promise._result = value;\n  promise._state = FULFILLED;\n\n  if (promise._subscribers.length !== 0) {\n    asap(publish, promise);\n  }\n}\n\nfunction reject(promise, reason) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n  promise._state = REJECTED;\n  promise._result = reason;\n\n  asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n  var _subscribers = parent._subscribers;\n  var length = _subscribers.length;\n\n\n  parent._onerror = null;\n\n  _subscribers[length] = child;\n  _subscribers[length + FULFILLED] = onFulfillment;\n  _subscribers[length + REJECTED] = onRejection;\n\n  if (length === 0 && parent._state) {\n    asap(publish, parent);\n  }\n}\n\nfunction publish(promise) {\n  var subscribers = promise._subscribers;\n  var settled = promise._state;\n\n  if (subscribers.length === 0) {\n    return;\n  }\n\n  var child = void 0,\n      callback = void 0,\n      detail = promise._result;\n\n  for (var i = 0; i < subscribers.length; i += 3) {\n    child = subscribers[i];\n    callback = subscribers[i + settled];\n\n    if (child) {\n      invokeCallback(settled, child, callback, detail);\n    } else {\n      callback(detail);\n    }\n  }\n\n  promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n  try {\n    return callback(detail);\n  } catch (e) {\n    TRY_CATCH_ERROR.error = e;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n  var hasCallback = isFunction(callback),\n      value = void 0,\n      error = void 0,\n      succeeded = void 0,\n      failed = void 0;\n\n  if (hasCallback) {\n    value = tryCatch(callback, detail);\n\n    if (value === TRY_CATCH_ERROR) {\n      failed = true;\n      error = value.error;\n      value.error = null;\n    } else {\n      succeeded = true;\n    }\n\n    if (promise === value) {\n      reject(promise, cannotReturnOwn());\n      return;\n    }\n  } else {\n    value = detail;\n    succeeded = true;\n  }\n\n  if (promise._state !== PENDING) {\n    // noop\n  } else if (hasCallback && succeeded) {\n    resolve(promise, value);\n  } else if (failed) {\n    reject(promise, error);\n  } else if (settled === FULFILLED) {\n    fulfill(promise, value);\n  } else if (settled === REJECTED) {\n    reject(promise, value);\n  }\n}\n\nfunction initializePromise(promise, resolver) {\n  try {\n    resolver(function resolvePromise(value) {\n      resolve(promise, value);\n    }, function rejectPromise(reason) {\n      reject(promise, reason);\n    });\n  } catch (e) {\n    reject(promise, e);\n  }\n}\n\nvar id = 0;\nfunction nextId() {\n  return id++;\n}\n\nfunction makePromise(promise) {\n  promise[PROMISE_ID] = id++;\n  promise._state = undefined;\n  promise._result = undefined;\n  promise._subscribers = [];\n}\n\nexport { nextId, makePromise, getThen, noop, resolve, reject, fulfill, subscribe, publish, publishRejection, initializePromise, invokeCallback, FULFILLED, REJECTED, PENDING, handleMaybeThenable };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isArray, isMaybeThenable } from './utils';\nimport { noop, reject, fulfill, subscribe, FULFILLED, REJECTED, PENDING, getThen, handleMaybeThenable } from './-internal';\n\nimport then from './then';\nimport Promise from './promise';\nimport originalResolve from './promise/resolve';\nimport originalThen from './then';\nimport { makePromise, PROMISE_ID } from './-internal';\n\nfunction validationError() {\n  return new Error('Array Methods must be provided an Array');\n};\n\nvar Enumerator = function () {\n  function Enumerator(Constructor, input) {\n    this._instanceConstructor = Constructor;\n    this.promise = new Constructor(noop);\n\n    if (!this.promise[PROMISE_ID]) {\n      makePromise(this.promise);\n    }\n\n    if (isArray(input)) {\n      this.length = input.length;\n      this._remaining = input.length;\n\n      this._result = new Array(this.length);\n\n      if (this.length === 0) {\n        fulfill(this.promise, this._result);\n      } else {\n        this.length = this.length || 0;\n        this._enumerate(input);\n        if (this._remaining === 0) {\n          fulfill(this.promise, this._result);\n        }\n      }\n    } else {\n      reject(this.promise, validationError());\n    }\n  }\n\n  Enumerator.prototype._enumerate = function _enumerate(input) {\n    for (var i = 0; this._state === PENDING && i < input.length; i++) {\n      this._eachEntry(input[i], i);\n    }\n  };\n\n  Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n    var c = this._instanceConstructor;\n    var resolve = c.resolve;\n\n\n    if (resolve === originalResolve) {\n      var _then = getThen(entry);\n\n      if (_then === originalThen && entry._state !== PENDING) {\n        this._settledAt(entry._state, i, entry._result);\n      } else if (typeof _then !== 'function') {\n        this._remaining--;\n        this._result[i] = entry;\n      } else if (c === Promise) {\n        var promise = new c(noop);\n        handleMaybeThenable(promise, entry, _then);\n        this._willSettleAt(promise, i);\n      } else {\n        this._willSettleAt(new c(function (resolve) {\n          return resolve(entry);\n        }), i);\n      }\n    } else {\n      this._willSettleAt(resolve(entry), i);\n    }\n  };\n\n  Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n    var promise = this.promise;\n\n\n    if (promise._state === PENDING) {\n      this._remaining--;\n\n      if (state === REJECTED) {\n        reject(promise, value);\n      } else {\n        this._result[i] = value;\n      }\n    }\n\n    if (this._remaining === 0) {\n      fulfill(promise, this._result);\n    }\n  };\n\n  Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n    var enumerator = this;\n\n    subscribe(promise, undefined, function (value) {\n      return enumerator._settledAt(FULFILLED, i, value);\n    }, function (reason) {\n      return enumerator._settledAt(REJECTED, i, reason);\n    });\n  };\n\n  return Enumerator;\n}();\n\nexport default Enumerator;\n;","import Enumerator from '../enumerator';\n\n/**\n  `Promise.all` accepts an array of promises, and returns a new promise which\n  is fulfilled with an array of fulfillment values for the passed promises, or\n  rejected with the reason of the first passed promise to be rejected. It casts all\n  elements of the passed iterable to promises as it runs this algorithm.\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = resolve(2);\n  let promise3 = resolve(3);\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // The array here would be [ 1, 2, 3 ];\n  });\n  ```\n\n  If any of the `promises` given to `all` are rejected, the first promise\n  that is rejected will be given as an argument to the returned promises's\n  rejection handler. For example:\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = reject(new Error(\"2\"));\n  let promise3 = reject(new Error(\"3\"));\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // Code here never runs because there are rejected promises!\n  }, function(error) {\n    // error.message === \"2\"\n  });\n  ```\n\n  @method all\n  @static\n  @param {Array} entries array of promises\n  @param {String} label optional string for labeling the promise.\n  Useful for tooling.\n  @return {Promise} promise that is fulfilled when all `promises` have been\n  fulfilled, or rejected if any of them become rejected.\n  @static\n*/\nexport default function all(entries) {\n  return new Enumerator(this, entries).promise;\n}","import { isArray } from \"../utils\";\n\n/**\n  `Promise.race` returns a new promise which is settled in the same way as the\n  first passed promise to settle.\n\n  Example:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 2');\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // result === 'promise 2' because it was resolved before promise1\n    // was resolved.\n  });\n  ```\n\n  `Promise.race` is deterministic in that only the state of the first\n  settled promise matters. For example, even if other promises given to the\n  `promises` array argument are resolved, but the first settled promise has\n  become rejected before the other promises became fulfilled, the returned\n  promise will become rejected:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      reject(new Error('promise 2'));\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // Code here never runs\n  }, function(reason){\n    // reason.message === 'promise 2' because promise 2 became rejected before\n    // promise 1 became fulfilled\n  });\n  ```\n\n  An example real-world use case is implementing timeouts:\n\n  ```javascript\n  Promise.race([ajax('foo.json'), timeout(5000)])\n  ```\n\n  @method race\n  @static\n  @param {Array} promises array of promises to observe\n  Useful for tooling.\n  @return {Promise} a promise which settles in the same way as the first passed\n  promise to settle.\n*/\nexport default function race(entries) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (!isArray(entries)) {\n    return new Constructor(function (_, reject) {\n      return reject(new TypeError('You must pass an array to race.'));\n    });\n  } else {\n    return new Constructor(function (resolve, reject) {\n      var length = entries.length;\n      for (var i = 0; i < length; i++) {\n        Constructor.resolve(entries[i]).then(resolve, reject);\n      }\n    });\n  }\n}","import { noop, reject as _reject } from '../-internal';\n\n/**\n  `Promise.reject` returns a promise rejected with the passed `reason`.\n  It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    reject(new Error('WHOOPS'));\n  });\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.reject(new Error('WHOOPS'));\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  @method reject\n  @static\n  @param {Any} reason value that the returned promise will be rejected with.\n  Useful for tooling.\n  @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason) {\n  /*jshint validthis:true */\n  var Constructor = this;\n  var promise = new Constructor(noop);\n  _reject(promise, reason);\n  return promise;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isFunction } from './utils';\nimport { noop, nextId, PROMISE_ID, initializePromise } from './-internal';\nimport { asap, setAsap, setScheduler } from './asap';\n\nimport all from './promise/all';\nimport race from './promise/race';\nimport Resolve from './promise/resolve';\nimport Reject from './promise/reject';\nimport then from './then';\n\nfunction needsResolver() {\n  throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n  throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n  Promise objects represent the eventual result of an asynchronous operation. The\n  primary way of interacting with a promise is through its `then` method, which\n  registers callbacks to receive either a promise's eventual value or the reason\n  why the promise cannot be fulfilled.\n\n  Terminology\n  -----------\n\n  - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n  - `thenable` is an object or function that defines a `then` method.\n  - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n  - `exception` is a value that is thrown using the throw statement.\n  - `reason` is a value that indicates why a promise was rejected.\n  - `settled` the final resting state of a promise, fulfilled or rejected.\n\n  A promise can be in one of three states: pending, fulfilled, or rejected.\n\n  Promises that are fulfilled have a fulfillment value and are in the fulfilled\n  state.  Promises that are rejected have a rejection reason and are in the\n  rejected state.  A fulfillment value is never a thenable.\n\n  Promises can also be said to *resolve* a value.  If this value is also a\n  promise, then the original promise's settled state will match the value's\n  settled state.  So a promise that *resolves* a promise that rejects will\n  itself reject, and a promise that *resolves* a promise that fulfills will\n  itself fulfill.\n\n\n  Basic Usage:\n  ------------\n\n  ```js\n  let promise = new Promise(function(resolve, reject) {\n    // on success\n    resolve(value);\n\n    // on failure\n    reject(reason);\n  });\n\n  promise.then(function(value) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Advanced Usage:\n  ---------------\n\n  Promises shine when abstracting away asynchronous interactions such as\n  `XMLHttpRequest`s.\n\n  ```js\n  function getJSON(url) {\n    return new Promise(function(resolve, reject){\n      let xhr = new XMLHttpRequest();\n\n      xhr.open('GET', url);\n      xhr.onreadystatechange = handler;\n      xhr.responseType = 'json';\n      xhr.setRequestHeader('Accept', 'application/json');\n      xhr.send();\n\n      function handler() {\n        if (this.readyState === this.DONE) {\n          if (this.status === 200) {\n            resolve(this.response);\n          } else {\n            reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n          }\n        }\n      };\n    });\n  }\n\n  getJSON('/posts.json').then(function(json) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Unlike callbacks, promises are great composable primitives.\n\n  ```js\n  Promise.all([\n    getJSON('/posts'),\n    getJSON('/comments')\n  ]).then(function(values){\n    values[0] // => postsJSON\n    values[1] // => commentsJSON\n\n    return values;\n  });\n  ```\n\n  @class Promise\n  @param {Function} resolver\n  Useful for tooling.\n  @constructor\n*/\n\nvar Promise = function () {\n  function Promise(resolver) {\n    this[PROMISE_ID] = nextId();\n    this._result = this._state = undefined;\n    this._subscribers = [];\n\n    if (noop !== resolver) {\n      typeof resolver !== 'function' && needsResolver();\n      this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n    }\n  }\n\n  /**\n  The primary way of interacting with a promise is through its `then` method,\n  which registers callbacks to receive either a promise's eventual value or the\n  reason why the promise cannot be fulfilled.\n   ```js\n  findUser().then(function(user){\n    // user is available\n  }, function(reason){\n    // user is unavailable, and you are given the reason why\n  });\n  ```\n   Chaining\n  --------\n   The return value of `then` is itself a promise.  This second, 'downstream'\n  promise is resolved with the return value of the first promise's fulfillment\n  or rejection handler, or rejected if the handler throws an exception.\n   ```js\n  findUser().then(function (user) {\n    return user.name;\n  }, function (reason) {\n    return 'default name';\n  }).then(function (userName) {\n    // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n    // will be `'default name'`\n  });\n   findUser().then(function (user) {\n    throw new Error('Found user, but still unhappy');\n  }, function (reason) {\n    throw new Error('`findUser` rejected and we're unhappy');\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n    // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n  });\n  ```\n  If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n   ```js\n  findUser().then(function (user) {\n    throw new PedagogicalException('Upstream error');\n  }).then(function (value) {\n    // never reached\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // The `PedgagocialException` is propagated all the way down to here\n  });\n  ```\n   Assimilation\n  ------------\n   Sometimes the value you want to propagate to a downstream promise can only be\n  retrieved asynchronously. This can be achieved by returning a promise in the\n  fulfillment or rejection handler. The downstream promise will then be pending\n  until the returned promise is settled. This is called *assimilation*.\n   ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // The user's comments are now available\n  });\n  ```\n   If the assimliated promise rejects, then the downstream promise will also reject.\n   ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // If `findCommentsByAuthor` fulfills, we'll have the value here\n  }, function (reason) {\n    // If `findCommentsByAuthor` rejects, we'll have the reason here\n  });\n  ```\n   Simple Example\n  --------------\n   Synchronous Example\n   ```javascript\n  let result;\n   try {\n    result = findResult();\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n   Errback Example\n   ```js\n  findResult(function(result, err){\n    if (err) {\n      // failure\n    } else {\n      // success\n    }\n  });\n  ```\n   Promise Example;\n   ```javascript\n  findResult().then(function(result){\n    // success\n  }, function(reason){\n    // failure\n  });\n  ```\n   Advanced Example\n  --------------\n   Synchronous Example\n   ```javascript\n  let author, books;\n   try {\n    author = findAuthor();\n    books  = findBooksByAuthor(author);\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n   Errback Example\n   ```js\n   function foundBooks(books) {\n   }\n   function failure(reason) {\n   }\n   findAuthor(function(author, err){\n    if (err) {\n      failure(err);\n      // failure\n    } else {\n      try {\n        findBoooksByAuthor(author, function(books, err) {\n          if (err) {\n            failure(err);\n          } else {\n            try {\n              foundBooks(books);\n            } catch(reason) {\n              failure(reason);\n            }\n          }\n        });\n      } catch(error) {\n        failure(err);\n      }\n      // success\n    }\n  });\n  ```\n   Promise Example;\n   ```javascript\n  findAuthor().\n    then(findBooksByAuthor).\n    then(function(books){\n      // found books\n  }).catch(function(reason){\n    // something went wrong\n  });\n  ```\n   @method then\n  @param {Function} onFulfilled\n  @param {Function} onRejected\n  Useful for tooling.\n  @return {Promise}\n  */\n\n  /**\n  `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n  as the catch block of a try/catch statement.\n  ```js\n  function findAuthor(){\n  throw new Error('couldn't find that author');\n  }\n  // synchronous\n  try {\n  findAuthor();\n  } catch(reason) {\n  // something went wrong\n  }\n  // async with promises\n  findAuthor().catch(function(reason){\n  // something went wrong\n  });\n  ```\n  @method catch\n  @param {Function} onRejection\n  Useful for tooling.\n  @return {Promise}\n  */\n\n\n  Promise.prototype.catch = function _catch(onRejection) {\n    return this.then(null, onRejection);\n  };\n\n  /**\n    `finally` will be invoked regardless of the promise's fate just as native\n    try/catch/finally behaves\n  \n    Synchronous example:\n  \n    ```js\n    findAuthor() {\n      if (Math.random() > 0.5) {\n        throw new Error();\n      }\n      return new Author();\n    }\n  \n    try {\n      return findAuthor(); // succeed or fail\n    } catch(error) {\n      return findOtherAuther();\n    } finally {\n      // always runs\n      // doesn't affect the return value\n    }\n    ```\n  \n    Asynchronous example:\n  \n    ```js\n    findAuthor().catch(function(reason){\n      return findOtherAuther();\n    }).finally(function(){\n      // author was either found, or not\n    });\n    ```\n  \n    @method finally\n    @param {Function} callback\n    @return {Promise}\n  */\n\n\n  Promise.prototype.finally = function _finally(callback) {\n    var promise = this;\n    var constructor = promise.constructor;\n\n    if (isFunction(callback)) {\n      return promise.then(function (value) {\n        return constructor.resolve(callback()).then(function () {\n          return value;\n        });\n      }, function (reason) {\n        return constructor.resolve(callback()).then(function () {\n          throw reason;\n        });\n      });\n    }\n\n    return promise.then(callback, callback);\n  };\n\n  return Promise;\n}();\n\nPromise.prototype.then = then;\nexport default Promise;\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = Resolve;\nPromise.reject = Reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;","/*global self*/\nimport Promise from './promise';\n\nexport default function polyfill() {\n  var local = void 0;\n\n  if (typeof global !== 'undefined') {\n    local = global;\n  } else if (typeof self !== 'undefined') {\n    local = self;\n  } else {\n    try {\n      local = Function('return this')();\n    } catch (e) {\n      throw new Error('polyfill failed because global object is unavailable in this environment');\n    }\n  }\n\n  var P = local.Promise;\n\n  if (P) {\n    var promiseToString = null;\n    try {\n      promiseToString = Object.prototype.toString.call(P.resolve());\n    } catch (e) {\n      // silently ignored\n    }\n\n    if (promiseToString === '[object Promise]' && !P.cast) {\n      return;\n    }\n  }\n\n  local.Promise = Promise;\n}","import Promise from './es6-promise/promise';\nimport polyfill from './es6-promise/polyfill';\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\nexport default Promise;"],"names":["resolve","_resolve","then","originalThen","originalResolve","Promise","reject","_reject","Resolve","Reject"],"mappings":"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","file":"es6-promise.js"}
\ No newline at end of file
diff --git a/deps/npm/node_modules/es6-promise/dist/es6-promise.min.js b/deps/npm/node_modules/es6-promise/dist/es6-promise.min.js
index 1d9dc4877a573b..b37c7755ec0f10 100644
--- a/deps/npm/node_modules/es6-promise/dist/es6-promise.min.js
+++ b/deps/npm/node_modules/es6-promise/dist/es6-promise.min.js
@@ -1 +1 @@
-!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.ES6Promise=e()}(this,function(){"use strict";function t(t){var e=typeof t;return null!==t&&("object"===e||"function"===e)}function e(t){return"function"==typeof t}function n(t){B=t}function r(t){G=t}function o(){return function(){return process.nextTick(a)}}function i(){return"undefined"!=typeof z?function(){z(a)}:c()}function s(){var t=0,e=new J(a),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}function u(){var t=new MessageChannel;return t.port1.onmessage=a,function(){return t.port2.postMessage(0)}}function c(){var t=setTimeout;return function(){return t(a,1)}}function a(){for(var t=0;t<W;t+=2){var e=V[t],n=V[t+1];e(n),V[t]=void 0,V[t+1]=void 0}W=0}function f(){try{var t=Function("return this")().require("vertx");return z=t.runOnLoop||t.runOnContext,i()}catch(e){return c()}}function l(t,e){var n=this,r=new this.constructor(p);void 0===r[Z]&&O(r);var o=n._state;if(o){var i=arguments[o-1];G(function(){return P(o,r,i,n._result)})}else E(n,r,t,e);return r}function h(t){var e=this;if(t&&"object"==typeof t&&t.constructor===e)return t;var n=new e(p);return g(n,t),n}function p(){}function v(){return new TypeError("You cannot resolve a promise with itself")}function d(){return new TypeError("A promises callback cannot return that same promise.")}function _(t){try{return t.then}catch(e){return nt.error=e,nt}}function y(t,e,n,r){try{t.call(e,n,r)}catch(o){return o}}function m(t,e,n){G(function(t){var r=!1,o=y(n,e,function(n){r||(r=!0,e!==n?g(t,n):S(t,n))},function(e){r||(r=!0,j(t,e))},"Settle: "+(t._label||" unknown promise"));!r&&o&&(r=!0,j(t,o))},t)}function b(t,e){e._state===tt?S(t,e._result):e._state===et?j(t,e._result):E(e,void 0,function(e){return g(t,e)},function(e){return j(t,e)})}function w(t,n,r){n.constructor===t.constructor&&r===l&&n.constructor.resolve===h?b(t,n):r===nt?(j(t,nt.error),nt.error=null):void 0===r?S(t,n):e(r)?m(t,n,r):S(t,n)}function g(e,n){e===n?j(e,v()):t(n)?w(e,n,_(n)):S(e,n)}function A(t){t._onerror&&t._onerror(t._result),T(t)}function S(t,e){t._state===$&&(t._result=e,t._state=tt,0!==t._subscribers.length&&G(T,t))}function j(t,e){t._state===$&&(t._state=et,t._result=e,G(A,t))}function E(t,e,n,r){var o=t._subscribers,i=o.length;t._onerror=null,o[i]=e,o[i+tt]=n,o[i+et]=r,0===i&&t._state&&G(T,t)}function T(t){var e=t._subscribers,n=t._state;if(0!==e.length){for(var r=void 0,o=void 0,i=t._result,s=0;s<e.length;s+=3)r=e[s],o=e[s+n],r?P(n,r,o,i):o(i);t._subscribers.length=0}}function M(t,e){try{return t(e)}catch(n){return nt.error=n,nt}}function P(t,n,r,o){var i=e(r),s=void 0,u=void 0,c=void 0,a=void 0;if(i){if(s=M(r,o),s===nt?(a=!0,u=s.error,s.error=null):c=!0,n===s)return void j(n,d())}else s=o,c=!0;n._state!==$||(i&&c?g(n,s):a?j(n,u):t===tt?S(n,s):t===et&&j(n,s))}function x(t,e){try{e(function(e){g(t,e)},function(e){j(t,e)})}catch(n){j(t,n)}}function C(){return rt++}function O(t){t[Z]=rt++,t._state=void 0,t._result=void 0,t._subscribers=[]}function k(){return new Error("Array Methods must be provided an Array")}function F(t){return new ot(this,t).promise}function Y(t){var e=this;return new e(U(t)?function(n,r){for(var o=t.length,i=0;i<o;i++)e.resolve(t[i]).then(n,r)}:function(t,e){return e(new TypeError("You must pass an array to race."))})}function q(t){var e=this,n=new e(p);return j(n,t),n}function D(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function K(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function L(){var t=void 0;if("undefined"!=typeof global)t=global;else if("undefined"!=typeof self)t=self;else try{t=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var n=t.Promise;if(n){var r=null;try{r=Object.prototype.toString.call(n.resolve())}catch(e){}if("[object Promise]"===r&&!n.cast)return}t.Promise=it}var N=void 0;N=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)};var U=N,W=0,z=void 0,B=void 0,G=function(t,e){V[W]=t,V[W+1]=e,W+=2,2===W&&(B?B(a):X())},H="undefined"!=typeof window?window:void 0,I=H||{},J=I.MutationObserver||I.WebKitMutationObserver,Q="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),R="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,V=new Array(1e3),X=void 0;X=Q?o():J?s():R?u():void 0===H&&"function"==typeof require?f():c();var Z=Math.random().toString(36).substring(2),$=void 0,tt=1,et=2,nt={error:null},rt=0,ot=function(){function t(t,e){this._instanceConstructor=t,this.promise=new t(p),this.promise[Z]||O(this.promise),U(e)?(this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?S(this.promise,this._result):(this.length=this.length||0,this._enumerate(e),0===this._remaining&&S(this.promise,this._result))):j(this.promise,k())}return t.prototype._enumerate=function(t){for(var e=0;this._state===$&&e<t.length;e++)this._eachEntry(t[e],e)},t.prototype._eachEntry=function(t,e){var n=this._instanceConstructor,r=n.resolve;if(r===h){var o=_(t);if(o===l&&t._state!==$)this._settledAt(t._state,e,t._result);else if("function"!=typeof o)this._remaining--,this._result[e]=t;else if(n===it){var i=new n(p);w(i,t,o),this._willSettleAt(i,e)}else this._willSettleAt(new n(function(e){return e(t)}),e)}else this._willSettleAt(r(t),e)},t.prototype._settledAt=function(t,e,n){var r=this.promise;r._state===$&&(this._remaining--,t===et?j(r,n):this._result[e]=n),0===this._remaining&&S(r,this._result)},t.prototype._willSettleAt=function(t,e){var n=this;E(t,void 0,function(t){return n._settledAt(tt,e,t)},function(t){return n._settledAt(et,e,t)})},t}(),it=function(){function t(e){this[Z]=C(),this._result=this._state=void 0,this._subscribers=[],p!==e&&("function"!=typeof e&&D(),this instanceof t?x(this,e):K())}return t.prototype["catch"]=function(t){return this.then(null,t)},t.prototype["finally"]=function(t){var e=this,n=e.constructor;return e.then(function(e){return n.resolve(t()).then(function(){return e})},function(e){return n.resolve(t()).then(function(){throw e})})},t}();return it.prototype.then=l,it.all=F,it.race=Y,it.resolve=h,it.reject=q,it._setScheduler=n,it._setAsap=r,it._asap=G,it.polyfill=L,it.Promise=it,it});
\ No newline at end of file
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.ES6Promise=e()}(this,function(){"use strict";function t(t){var e=typeof t;return null!==t&&("object"===e||"function"===e)}function e(t){return"function"==typeof t}function n(t){B=t}function r(t){G=t}function o(){return function(){return process.nextTick(a)}}function i(){return"undefined"!=typeof z?function(){z(a)}:c()}function s(){var t=0,e=new J(a),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}function u(){var t=new MessageChannel;return t.port1.onmessage=a,function(){return t.port2.postMessage(0)}}function c(){var t=setTimeout;return function(){return t(a,1)}}function a(){for(var t=0;t<W;t+=2){var e=V[t],n=V[t+1];e(n),V[t]=void 0,V[t+1]=void 0}W=0}function f(){try{var t=Function("return this")().require("vertx");return z=t.runOnLoop||t.runOnContext,i()}catch(e){return c()}}function l(t,e){var n=this,r=new this.constructor(p);void 0===r[Z]&&O(r);var o=n._state;if(o){var i=arguments[o-1];G(function(){return P(o,r,i,n._result)})}else E(n,r,t,e);return r}function h(t){var e=this;if(t&&"object"==typeof t&&t.constructor===e)return t;var n=new e(p);return g(n,t),n}function p(){}function v(){return new TypeError("You cannot resolve a promise with itself")}function d(){return new TypeError("A promises callback cannot return that same promise.")}function _(t){try{return t.then}catch(e){return nt.error=e,nt}}function y(t,e,n,r){try{t.call(e,n,r)}catch(o){return o}}function m(t,e,n){G(function(t){var r=!1,o=y(n,e,function(n){r||(r=!0,e!==n?g(t,n):S(t,n))},function(e){r||(r=!0,j(t,e))},"Settle: "+(t._label||" unknown promise"));!r&&o&&(r=!0,j(t,o))},t)}function b(t,e){e._state===tt?S(t,e._result):e._state===et?j(t,e._result):E(e,void 0,function(e){return g(t,e)},function(e){return j(t,e)})}function w(t,n,r){n.constructor===t.constructor&&r===l&&n.constructor.resolve===h?b(t,n):r===nt?(j(t,nt.error),nt.error=null):void 0===r?S(t,n):e(r)?m(t,n,r):S(t,n)}function g(e,n){e===n?j(e,v()):t(n)?w(e,n,_(n)):S(e,n)}function A(t){t._onerror&&t._onerror(t._result),T(t)}function S(t,e){t._state===$&&(t._result=e,t._state=tt,0!==t._subscribers.length&&G(T,t))}function j(t,e){t._state===$&&(t._state=et,t._result=e,G(A,t))}function E(t,e,n,r){var o=t._subscribers,i=o.length;t._onerror=null,o[i]=e,o[i+tt]=n,o[i+et]=r,0===i&&t._state&&G(T,t)}function T(t){var e=t._subscribers,n=t._state;if(0!==e.length){for(var r=void 0,o=void 0,i=t._result,s=0;s<e.length;s+=3)r=e[s],o=e[s+n],r?P(n,r,o,i):o(i);t._subscribers.length=0}}function M(t,e){try{return t(e)}catch(n){return nt.error=n,nt}}function P(t,n,r,o){var i=e(r),s=void 0,u=void 0,c=void 0,a=void 0;if(i){if(s=M(r,o),s===nt?(a=!0,u=s.error,s.error=null):c=!0,n===s)return void j(n,d())}else s=o,c=!0;n._state!==$||(i&&c?g(n,s):a?j(n,u):t===tt?S(n,s):t===et&&j(n,s))}function x(t,e){try{e(function(e){g(t,e)},function(e){j(t,e)})}catch(n){j(t,n)}}function C(){return rt++}function O(t){t[Z]=rt++,t._state=void 0,t._result=void 0,t._subscribers=[]}function k(){return new Error("Array Methods must be provided an Array")}function F(t){return new ot(this,t).promise}function Y(t){var e=this;return new e(U(t)?function(n,r){for(var o=t.length,i=0;i<o;i++)e.resolve(t[i]).then(n,r)}:function(t,e){return e(new TypeError("You must pass an array to race."))})}function q(t){var e=this,n=new e(p);return j(n,t),n}function D(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function K(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function L(){var t=void 0;if("undefined"!=typeof global)t=global;else if("undefined"!=typeof self)t=self;else try{t=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var n=t.Promise;if(n){var r=null;try{r=Object.prototype.toString.call(n.resolve())}catch(e){}if("[object Promise]"===r&&!n.cast)return}t.Promise=it}var N=void 0;N=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)};var U=N,W=0,z=void 0,B=void 0,G=function(t,e){V[W]=t,V[W+1]=e,W+=2,2===W&&(B?B(a):X())},H="undefined"!=typeof window?window:void 0,I=H||{},J=I.MutationObserver||I.WebKitMutationObserver,Q="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),R="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,V=new Array(1e3),X=void 0;X=Q?o():J?s():R?u():void 0===H&&"function"==typeof require?f():c();var Z=Math.random().toString(36).substring(2),$=void 0,tt=1,et=2,nt={error:null},rt=0,ot=function(){function t(t,e){this._instanceConstructor=t,this.promise=new t(p),this.promise[Z]||O(this.promise),U(e)?(this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?S(this.promise,this._result):(this.length=this.length||0,this._enumerate(e),0===this._remaining&&S(this.promise,this._result))):j(this.promise,k())}return t.prototype._enumerate=function(t){for(var e=0;this._state===$&&e<t.length;e++)this._eachEntry(t[e],e)},t.prototype._eachEntry=function(t,e){var n=this._instanceConstructor,r=n.resolve;if(r===h){var o=_(t);if(o===l&&t._state!==$)this._settledAt(t._state,e,t._result);else if("function"!=typeof o)this._remaining--,this._result[e]=t;else if(n===it){var i=new n(p);w(i,t,o),this._willSettleAt(i,e)}else this._willSettleAt(new n(function(e){return e(t)}),e)}else this._willSettleAt(r(t),e)},t.prototype._settledAt=function(t,e,n){var r=this.promise;r._state===$&&(this._remaining--,t===et?j(r,n):this._result[e]=n),0===this._remaining&&S(r,this._result)},t.prototype._willSettleAt=function(t,e){var n=this;E(t,void 0,function(t){return n._settledAt(tt,e,t)},function(t){return n._settledAt(et,e,t)})},t}(),it=function(){function t(e){this[Z]=C(),this._result=this._state=void 0,this._subscribers=[],p!==e&&("function"!=typeof e&&D(),this instanceof t?x(this,e):K())}return t.prototype["catch"]=function(t){return this.then(null,t)},t.prototype["finally"]=function(t){var n=this,r=n.constructor;return e(t)?n.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})}):n.then(t,t)},t}();return it.prototype.then=l,it.all=F,it.race=Y,it.resolve=h,it.reject=q,it._setScheduler=n,it._setAsap=r,it._asap=G,it.polyfill=L,it.Promise=it,it});
\ No newline at end of file
diff --git a/deps/npm/node_modules/es6-promise/dist/es6-promise.min.map b/deps/npm/node_modules/es6-promise/dist/es6-promise.min.map
index 0488c1d80ca9e0..0ebcc473481c3b 100644
--- a/deps/npm/node_modules/es6-promise/dist/es6-promise.min.map
+++ b/deps/npm/node_modules/es6-promise/dist/es6-promise.min.map
@@ -1 +1 @@
-{"version":3,"sources":["config/versionTemplate.txt","lib/es6-promise/utils.js","lib/es6-promise/asap.js","lib/es6-promise/then.js","lib/es6-promise/promise/resolve.js","lib/es6-promise/-internal.js","lib/es6-promise/enumerator.js","lib/es6-promise/promise/all.js","lib/es6-promise/promise/race.js","lib/es6-promise/promise/reject.js","lib/es6-promise/promise.js","lib/es6-promise/polyfill.js","lib/es6-promise.js"],"sourcesContent":["/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license   Licensed under MIT license\n *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version   v4.2.4+314e4831\n */\n","export function objectOrFunction(x) {\n  var type = typeof x;\n  return x !== null && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(x) {\n  return typeof x === 'function';\n}\n\nexport function isMaybeThenable(x) {\n  return x !== null && typeof x === 'object';\n}\n\nvar _isArray = void 0;\nif (Array.isArray) {\n  _isArray = Array.isArray;\n} else {\n  _isArray = function (x) {\n    return Object.prototype.toString.call(x) === '[object Array]';\n  };\n}\n\nexport var isArray = _isArray;","var len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nexport var asap = function asap(callback, arg) {\n  queue[len] = callback;\n  queue[len + 1] = arg;\n  len += 2;\n  if (len === 2) {\n    // If len is 2, that means that we need to schedule an async flush.\n    // If additional callbacks are queued before the queue is flushed, they\n    // will be processed by this flush that we are scheduling.\n    if (customSchedulerFn) {\n      customSchedulerFn(flush);\n    } else {\n      scheduleFlush();\n    }\n  }\n};\n\nexport function setScheduler(scheduleFn) {\n  customSchedulerFn = scheduleFn;\n}\n\nexport function setAsap(asapFn) {\n  asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n  // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n  // see https://github.com/cujojs/when/issues/410 for details\n  return function () {\n    return process.nextTick(flush);\n  };\n}\n\n// vertx\nfunction useVertxTimer() {\n  if (typeof vertxNext !== 'undefined') {\n    return function () {\n      vertxNext(flush);\n    };\n  }\n\n  return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n  var iterations = 0;\n  var observer = new BrowserMutationObserver(flush);\n  var node = document.createTextNode('');\n  observer.observe(node, { characterData: true });\n\n  return function () {\n    node.data = iterations = ++iterations % 2;\n  };\n}\n\n// web worker\nfunction useMessageChannel() {\n  var channel = new MessageChannel();\n  channel.port1.onmessage = flush;\n  return function () {\n    return channel.port2.postMessage(0);\n  };\n}\n\nfunction useSetTimeout() {\n  // Store setTimeout reference so es6-promise will be unaffected by\n  // other code modifying setTimeout (like sinon.useFakeTimers())\n  var globalSetTimeout = setTimeout;\n  return function () {\n    return globalSetTimeout(flush, 1);\n  };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n  for (var i = 0; i < len; i += 2) {\n    var callback = queue[i];\n    var arg = queue[i + 1];\n\n    callback(arg);\n\n    queue[i] = undefined;\n    queue[i + 1] = undefined;\n  }\n\n  len = 0;\n}\n\nfunction attemptVertx() {\n  try {\n    var vertx = Function('return this')().require('vertx');\n    vertxNext = vertx.runOnLoop || vertx.runOnContext;\n    return useVertxTimer();\n  } catch (e) {\n    return useSetTimeout();\n  }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n  scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n  scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n  scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n  scheduleFlush = attemptVertx();\n} else {\n  scheduleFlush = useSetTimeout();\n}","import { invokeCallback, subscribe, FULFILLED, REJECTED, noop, makePromise, PROMISE_ID } from './-internal';\n\nimport { asap } from './asap';\n\nexport default function then(onFulfillment, onRejection) {\n  var parent = this;\n\n  var child = new this.constructor(noop);\n\n  if (child[PROMISE_ID] === undefined) {\n    makePromise(child);\n  }\n\n  var _state = parent._state;\n\n\n  if (_state) {\n    var callback = arguments[_state - 1];\n    asap(function () {\n      return invokeCallback(_state, child, callback, parent._result);\n    });\n  } else {\n    subscribe(parent, child, onFulfillment, onRejection);\n  }\n\n  return child;\n}","import { noop, resolve as _resolve } from '../-internal';\n\n/**\n  `Promise.resolve` returns a promise that will become resolved with the\n  passed `value`. It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    resolve(1);\n  });\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.resolve(1);\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  @method resolve\n  @static\n  @param {Any} value value that the returned promise will be resolved with\n  Useful for tooling.\n  @return {Promise} a promise that will become fulfilled with the given\n  `value`\n*/\nexport default function resolve(object) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (object && typeof object === 'object' && object.constructor === Constructor) {\n    return object;\n  }\n\n  var promise = new Constructor(noop);\n  _resolve(promise, object);\n  return promise;\n}","import { objectOrFunction, isFunction } from './utils';\n\nimport { asap } from './asap';\n\nimport originalThen from './then';\nimport originalResolve from './promise/resolve';\n\nexport var PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n  return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n  return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n  try {\n    return promise.then;\n  } catch (error) {\n    TRY_CATCH_ERROR.error = error;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n  try {\n    then.call(value, fulfillmentHandler, rejectionHandler);\n  } catch (e) {\n    return e;\n  }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n  asap(function (promise) {\n    var sealed = false;\n    var error = tryThen(then, thenable, function (value) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n      if (thenable !== value) {\n        resolve(promise, value);\n      } else {\n        fulfill(promise, value);\n      }\n    }, function (reason) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n\n      reject(promise, reason);\n    }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n    if (!sealed && error) {\n      sealed = true;\n      reject(promise, error);\n    }\n  }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n  if (thenable._state === FULFILLED) {\n    fulfill(promise, thenable._result);\n  } else if (thenable._state === REJECTED) {\n    reject(promise, thenable._result);\n  } else {\n    subscribe(thenable, undefined, function (value) {\n      return resolve(promise, value);\n    }, function (reason) {\n      return reject(promise, reason);\n    });\n  }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then) {\n  if (maybeThenable.constructor === promise.constructor && then === originalThen && maybeThenable.constructor.resolve === originalResolve) {\n    handleOwnThenable(promise, maybeThenable);\n  } else {\n    if (then === TRY_CATCH_ERROR) {\n      reject(promise, TRY_CATCH_ERROR.error);\n      TRY_CATCH_ERROR.error = null;\n    } else if (then === undefined) {\n      fulfill(promise, maybeThenable);\n    } else if (isFunction(then)) {\n      handleForeignThenable(promise, maybeThenable, then);\n    } else {\n      fulfill(promise, maybeThenable);\n    }\n  }\n}\n\nfunction resolve(promise, value) {\n  if (promise === value) {\n    reject(promise, selfFulfillment());\n  } else if (objectOrFunction(value)) {\n    handleMaybeThenable(promise, value, getThen(value));\n  } else {\n    fulfill(promise, value);\n  }\n}\n\nfunction publishRejection(promise) {\n  if (promise._onerror) {\n    promise._onerror(promise._result);\n  }\n\n  publish(promise);\n}\n\nfunction fulfill(promise, value) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n\n  promise._result = value;\n  promise._state = FULFILLED;\n\n  if (promise._subscribers.length !== 0) {\n    asap(publish, promise);\n  }\n}\n\nfunction reject(promise, reason) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n  promise._state = REJECTED;\n  promise._result = reason;\n\n  asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n  var _subscribers = parent._subscribers;\n  var length = _subscribers.length;\n\n\n  parent._onerror = null;\n\n  _subscribers[length] = child;\n  _subscribers[length + FULFILLED] = onFulfillment;\n  _subscribers[length + REJECTED] = onRejection;\n\n  if (length === 0 && parent._state) {\n    asap(publish, parent);\n  }\n}\n\nfunction publish(promise) {\n  var subscribers = promise._subscribers;\n  var settled = promise._state;\n\n  if (subscribers.length === 0) {\n    return;\n  }\n\n  var child = void 0,\n      callback = void 0,\n      detail = promise._result;\n\n  for (var i = 0; i < subscribers.length; i += 3) {\n    child = subscribers[i];\n    callback = subscribers[i + settled];\n\n    if (child) {\n      invokeCallback(settled, child, callback, detail);\n    } else {\n      callback(detail);\n    }\n  }\n\n  promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n  try {\n    return callback(detail);\n  } catch (e) {\n    TRY_CATCH_ERROR.error = e;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n  var hasCallback = isFunction(callback),\n      value = void 0,\n      error = void 0,\n      succeeded = void 0,\n      failed = void 0;\n\n  if (hasCallback) {\n    value = tryCatch(callback, detail);\n\n    if (value === TRY_CATCH_ERROR) {\n      failed = true;\n      error = value.error;\n      value.error = null;\n    } else {\n      succeeded = true;\n    }\n\n    if (promise === value) {\n      reject(promise, cannotReturnOwn());\n      return;\n    }\n  } else {\n    value = detail;\n    succeeded = true;\n  }\n\n  if (promise._state !== PENDING) {\n    // noop\n  } else if (hasCallback && succeeded) {\n    resolve(promise, value);\n  } else if (failed) {\n    reject(promise, error);\n  } else if (settled === FULFILLED) {\n    fulfill(promise, value);\n  } else if (settled === REJECTED) {\n    reject(promise, value);\n  }\n}\n\nfunction initializePromise(promise, resolver) {\n  try {\n    resolver(function resolvePromise(value) {\n      resolve(promise, value);\n    }, function rejectPromise(reason) {\n      reject(promise, reason);\n    });\n  } catch (e) {\n    reject(promise, e);\n  }\n}\n\nvar id = 0;\nfunction nextId() {\n  return id++;\n}\n\nfunction makePromise(promise) {\n  promise[PROMISE_ID] = id++;\n  promise._state = undefined;\n  promise._result = undefined;\n  promise._subscribers = [];\n}\n\nexport { nextId, makePromise, getThen, noop, resolve, reject, fulfill, subscribe, publish, publishRejection, initializePromise, invokeCallback, FULFILLED, REJECTED, PENDING, handleMaybeThenable };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isArray, isMaybeThenable } from './utils';\nimport { noop, reject, fulfill, subscribe, FULFILLED, REJECTED, PENDING, getThen, handleMaybeThenable } from './-internal';\n\nimport then from './then';\nimport Promise from './promise';\nimport originalResolve from './promise/resolve';\nimport originalThen from './then';\nimport { makePromise, PROMISE_ID } from './-internal';\n\nfunction validationError() {\n  return new Error('Array Methods must be provided an Array');\n};\n\nvar Enumerator = function () {\n  function Enumerator(Constructor, input) {\n    this._instanceConstructor = Constructor;\n    this.promise = new Constructor(noop);\n\n    if (!this.promise[PROMISE_ID]) {\n      makePromise(this.promise);\n    }\n\n    if (isArray(input)) {\n      this.length = input.length;\n      this._remaining = input.length;\n\n      this._result = new Array(this.length);\n\n      if (this.length === 0) {\n        fulfill(this.promise, this._result);\n      } else {\n        this.length = this.length || 0;\n        this._enumerate(input);\n        if (this._remaining === 0) {\n          fulfill(this.promise, this._result);\n        }\n      }\n    } else {\n      reject(this.promise, validationError());\n    }\n  }\n\n  Enumerator.prototype._enumerate = function _enumerate(input) {\n    for (var i = 0; this._state === PENDING && i < input.length; i++) {\n      this._eachEntry(input[i], i);\n    }\n  };\n\n  Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n    var c = this._instanceConstructor;\n    var resolve = c.resolve;\n\n\n    if (resolve === originalResolve) {\n      var _then = getThen(entry);\n\n      if (_then === originalThen && entry._state !== PENDING) {\n        this._settledAt(entry._state, i, entry._result);\n      } else if (typeof _then !== 'function') {\n        this._remaining--;\n        this._result[i] = entry;\n      } else if (c === Promise) {\n        var promise = new c(noop);\n        handleMaybeThenable(promise, entry, _then);\n        this._willSettleAt(promise, i);\n      } else {\n        this._willSettleAt(new c(function (resolve) {\n          return resolve(entry);\n        }), i);\n      }\n    } else {\n      this._willSettleAt(resolve(entry), i);\n    }\n  };\n\n  Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n    var promise = this.promise;\n\n\n    if (promise._state === PENDING) {\n      this._remaining--;\n\n      if (state === REJECTED) {\n        reject(promise, value);\n      } else {\n        this._result[i] = value;\n      }\n    }\n\n    if (this._remaining === 0) {\n      fulfill(promise, this._result);\n    }\n  };\n\n  Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n    var enumerator = this;\n\n    subscribe(promise, undefined, function (value) {\n      return enumerator._settledAt(FULFILLED, i, value);\n    }, function (reason) {\n      return enumerator._settledAt(REJECTED, i, reason);\n    });\n  };\n\n  return Enumerator;\n}();\n\nexport default Enumerator;\n;","import Enumerator from '../enumerator';\n\n/**\n  `Promise.all` accepts an array of promises, and returns a new promise which\n  is fulfilled with an array of fulfillment values for the passed promises, or\n  rejected with the reason of the first passed promise to be rejected. It casts all\n  elements of the passed iterable to promises as it runs this algorithm.\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = resolve(2);\n  let promise3 = resolve(3);\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // The array here would be [ 1, 2, 3 ];\n  });\n  ```\n\n  If any of the `promises` given to `all` are rejected, the first promise\n  that is rejected will be given as an argument to the returned promises's\n  rejection handler. For example:\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = reject(new Error(\"2\"));\n  let promise3 = reject(new Error(\"3\"));\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // Code here never runs because there are rejected promises!\n  }, function(error) {\n    // error.message === \"2\"\n  });\n  ```\n\n  @method all\n  @static\n  @param {Array} entries array of promises\n  @param {String} label optional string for labeling the promise.\n  Useful for tooling.\n  @return {Promise} promise that is fulfilled when all `promises` have been\n  fulfilled, or rejected if any of them become rejected.\n  @static\n*/\nexport default function all(entries) {\n  return new Enumerator(this, entries).promise;\n}","import { isArray } from \"../utils\";\n\n/**\n  `Promise.race` returns a new promise which is settled in the same way as the\n  first passed promise to settle.\n\n  Example:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 2');\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // result === 'promise 2' because it was resolved before promise1\n    // was resolved.\n  });\n  ```\n\n  `Promise.race` is deterministic in that only the state of the first\n  settled promise matters. For example, even if other promises given to the\n  `promises` array argument are resolved, but the first settled promise has\n  become rejected before the other promises became fulfilled, the returned\n  promise will become rejected:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      reject(new Error('promise 2'));\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // Code here never runs\n  }, function(reason){\n    // reason.message === 'promise 2' because promise 2 became rejected before\n    // promise 1 became fulfilled\n  });\n  ```\n\n  An example real-world use case is implementing timeouts:\n\n  ```javascript\n  Promise.race([ajax('foo.json'), timeout(5000)])\n  ```\n\n  @method race\n  @static\n  @param {Array} promises array of promises to observe\n  Useful for tooling.\n  @return {Promise} a promise which settles in the same way as the first passed\n  promise to settle.\n*/\nexport default function race(entries) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (!isArray(entries)) {\n    return new Constructor(function (_, reject) {\n      return reject(new TypeError('You must pass an array to race.'));\n    });\n  } else {\n    return new Constructor(function (resolve, reject) {\n      var length = entries.length;\n      for (var i = 0; i < length; i++) {\n        Constructor.resolve(entries[i]).then(resolve, reject);\n      }\n    });\n  }\n}","import { noop, reject as _reject } from '../-internal';\n\n/**\n  `Promise.reject` returns a promise rejected with the passed `reason`.\n  It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    reject(new Error('WHOOPS'));\n  });\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.reject(new Error('WHOOPS'));\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  @method reject\n  @static\n  @param {Any} reason value that the returned promise will be rejected with.\n  Useful for tooling.\n  @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason) {\n  /*jshint validthis:true */\n  var Constructor = this;\n  var promise = new Constructor(noop);\n  _reject(promise, reason);\n  return promise;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isFunction } from './utils';\nimport { noop, nextId, PROMISE_ID, initializePromise } from './-internal';\nimport { asap, setAsap, setScheduler } from './asap';\n\nimport all from './promise/all';\nimport race from './promise/race';\nimport Resolve from './promise/resolve';\nimport Reject from './promise/reject';\nimport then from './then';\n\nfunction needsResolver() {\n  throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n  throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n  Promise objects represent the eventual result of an asynchronous operation. The\n  primary way of interacting with a promise is through its `then` method, which\n  registers callbacks to receive either a promise's eventual value or the reason\n  why the promise cannot be fulfilled.\n\n  Terminology\n  -----------\n\n  - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n  - `thenable` is an object or function that defines a `then` method.\n  - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n  - `exception` is a value that is thrown using the throw statement.\n  - `reason` is a value that indicates why a promise was rejected.\n  - `settled` the final resting state of a promise, fulfilled or rejected.\n\n  A promise can be in one of three states: pending, fulfilled, or rejected.\n\n  Promises that are fulfilled have a fulfillment value and are in the fulfilled\n  state.  Promises that are rejected have a rejection reason and are in the\n  rejected state.  A fulfillment value is never a thenable.\n\n  Promises can also be said to *resolve* a value.  If this value is also a\n  promise, then the original promise's settled state will match the value's\n  settled state.  So a promise that *resolves* a promise that rejects will\n  itself reject, and a promise that *resolves* a promise that fulfills will\n  itself fulfill.\n\n\n  Basic Usage:\n  ------------\n\n  ```js\n  let promise = new Promise(function(resolve, reject) {\n    // on success\n    resolve(value);\n\n    // on failure\n    reject(reason);\n  });\n\n  promise.then(function(value) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Advanced Usage:\n  ---------------\n\n  Promises shine when abstracting away asynchronous interactions such as\n  `XMLHttpRequest`s.\n\n  ```js\n  function getJSON(url) {\n    return new Promise(function(resolve, reject){\n      let xhr = new XMLHttpRequest();\n\n      xhr.open('GET', url);\n      xhr.onreadystatechange = handler;\n      xhr.responseType = 'json';\n      xhr.setRequestHeader('Accept', 'application/json');\n      xhr.send();\n\n      function handler() {\n        if (this.readyState === this.DONE) {\n          if (this.status === 200) {\n            resolve(this.response);\n          } else {\n            reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n          }\n        }\n      };\n    });\n  }\n\n  getJSON('/posts.json').then(function(json) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Unlike callbacks, promises are great composable primitives.\n\n  ```js\n  Promise.all([\n    getJSON('/posts'),\n    getJSON('/comments')\n  ]).then(function(values){\n    values[0] // => postsJSON\n    values[1] // => commentsJSON\n\n    return values;\n  });\n  ```\n\n  @class Promise\n  @param {Function} resolver\n  Useful for tooling.\n  @constructor\n*/\n\nvar Promise = function () {\n  function Promise(resolver) {\n    this[PROMISE_ID] = nextId();\n    this._result = this._state = undefined;\n    this._subscribers = [];\n\n    if (noop !== resolver) {\n      typeof resolver !== 'function' && needsResolver();\n      this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n    }\n  }\n\n  /**\n  The primary way of interacting with a promise is through its `then` method,\n  which registers callbacks to receive either a promise's eventual value or the\n  reason why the promise cannot be fulfilled.\n   ```js\n  findUser().then(function(user){\n    // user is available\n  }, function(reason){\n    // user is unavailable, and you are given the reason why\n  });\n  ```\n   Chaining\n  --------\n   The return value of `then` is itself a promise.  This second, 'downstream'\n  promise is resolved with the return value of the first promise's fulfillment\n  or rejection handler, or rejected if the handler throws an exception.\n   ```js\n  findUser().then(function (user) {\n    return user.name;\n  }, function (reason) {\n    return 'default name';\n  }).then(function (userName) {\n    // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n    // will be `'default name'`\n  });\n   findUser().then(function (user) {\n    throw new Error('Found user, but still unhappy');\n  }, function (reason) {\n    throw new Error('`findUser` rejected and we're unhappy');\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n    // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n  });\n  ```\n  If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n   ```js\n  findUser().then(function (user) {\n    throw new PedagogicalException('Upstream error');\n  }).then(function (value) {\n    // never reached\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // The `PedgagocialException` is propagated all the way down to here\n  });\n  ```\n   Assimilation\n  ------------\n   Sometimes the value you want to propagate to a downstream promise can only be\n  retrieved asynchronously. This can be achieved by returning a promise in the\n  fulfillment or rejection handler. The downstream promise will then be pending\n  until the returned promise is settled. This is called *assimilation*.\n   ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // The user's comments are now available\n  });\n  ```\n   If the assimliated promise rejects, then the downstream promise will also reject.\n   ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // If `findCommentsByAuthor` fulfills, we'll have the value here\n  }, function (reason) {\n    // If `findCommentsByAuthor` rejects, we'll have the reason here\n  });\n  ```\n   Simple Example\n  --------------\n   Synchronous Example\n   ```javascript\n  let result;\n   try {\n    result = findResult();\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n   Errback Example\n   ```js\n  findResult(function(result, err){\n    if (err) {\n      // failure\n    } else {\n      // success\n    }\n  });\n  ```\n   Promise Example;\n   ```javascript\n  findResult().then(function(result){\n    // success\n  }, function(reason){\n    // failure\n  });\n  ```\n   Advanced Example\n  --------------\n   Synchronous Example\n   ```javascript\n  let author, books;\n   try {\n    author = findAuthor();\n    books  = findBooksByAuthor(author);\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n   Errback Example\n   ```js\n   function foundBooks(books) {\n   }\n   function failure(reason) {\n   }\n   findAuthor(function(author, err){\n    if (err) {\n      failure(err);\n      // failure\n    } else {\n      try {\n        findBoooksByAuthor(author, function(books, err) {\n          if (err) {\n            failure(err);\n          } else {\n            try {\n              foundBooks(books);\n            } catch(reason) {\n              failure(reason);\n            }\n          }\n        });\n      } catch(error) {\n        failure(err);\n      }\n      // success\n    }\n  });\n  ```\n   Promise Example;\n   ```javascript\n  findAuthor().\n    then(findBooksByAuthor).\n    then(function(books){\n      // found books\n  }).catch(function(reason){\n    // something went wrong\n  });\n  ```\n   @method then\n  @param {Function} onFulfilled\n  @param {Function} onRejected\n  Useful for tooling.\n  @return {Promise}\n  */\n\n  /**\n  `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n  as the catch block of a try/catch statement.\n  ```js\n  function findAuthor(){\n  throw new Error('couldn't find that author');\n  }\n  // synchronous\n  try {\n  findAuthor();\n  } catch(reason) {\n  // something went wrong\n  }\n  // async with promises\n  findAuthor().catch(function(reason){\n  // something went wrong\n  });\n  ```\n  @method catch\n  @param {Function} onRejection\n  Useful for tooling.\n  @return {Promise}\n  */\n\n\n  Promise.prototype.catch = function _catch(onRejection) {\n    return this.then(null, onRejection);\n  };\n\n  /**\n    `finally` will be invoked regardless of the promise's fate just as native\n    try/catch/finally behaves\n  \n    Synchronous example:\n  \n    ```js\n    findAuthor() {\n      if (Math.random() > 0.5) {\n        throw new Error();\n      }\n      return new Author();\n    }\n  \n    try {\n      return findAuthor(); // succeed or fail\n    } catch(error) {\n      return findOtherAuther();\n    } finally {\n      // always runs\n      // doesn't affect the return value\n    }\n    ```\n  \n    Asynchronous example:\n  \n    ```js\n    findAuthor().catch(function(reason){\n      return findOtherAuther();\n    }).finally(function(){\n      // author was either found, or not\n    });\n    ```\n  \n    @method finally\n    @param {Function} callback\n    @return {Promise}\n  */\n\n\n  Promise.prototype.finally = function _finally(callback) {\n    var promise = this;\n    var constructor = promise.constructor;\n\n    return promise.then(function (value) {\n      return constructor.resolve(callback()).then(function () {\n        return value;\n      });\n    }, function (reason) {\n      return constructor.resolve(callback()).then(function () {\n        throw reason;\n      });\n    });\n  };\n\n  return Promise;\n}();\n\nPromise.prototype.then = then;\nexport default Promise;\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = Resolve;\nPromise.reject = Reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;","/*global self*/\nimport Promise from './promise';\n\nexport default function polyfill() {\n  var local = void 0;\n\n  if (typeof global !== 'undefined') {\n    local = global;\n  } else if (typeof self !== 'undefined') {\n    local = self;\n  } else {\n    try {\n      local = Function('return this')();\n    } catch (e) {\n      throw new Error('polyfill failed because global object is unavailable in this environment');\n    }\n  }\n\n  var P = local.Promise;\n\n  if (P) {\n    var promiseToString = null;\n    try {\n      promiseToString = Object.prototype.toString.call(P.resolve());\n    } catch (e) {\n      // silently ignored\n    }\n\n    if (promiseToString === '[object Promise]' && !P.cast) {\n      return;\n    }\n  }\n\n  local.Promise = Promise;\n}","import Promise from './es6-promise/promise';\nimport polyfill from './es6-promise/polyfill';\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\nexport default Promise;"],"names":["resolve","_resolve","then","originalThen","originalResolve","Promise","reject","_reject","Resolve","Reject"],"mappings":"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","file":"es6-promise.min.js"}
\ No newline at end of file
+{"version":3,"sources":["config/versionTemplate.txt","lib/es6-promise/utils.js","lib/es6-promise/asap.js","lib/es6-promise/then.js","lib/es6-promise/promise/resolve.js","lib/es6-promise/-internal.js","lib/es6-promise/enumerator.js","lib/es6-promise/promise/all.js","lib/es6-promise/promise/race.js","lib/es6-promise/promise/reject.js","lib/es6-promise/promise.js","lib/es6-promise/polyfill.js","lib/es6-promise.js"],"sourcesContent":["/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license   Licensed under MIT license\n *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version   v4.2.6+9869a4bc\n */\n","export function objectOrFunction(x) {\n  var type = typeof x;\n  return x !== null && (type === 'object' || type === 'function');\n}\n\nexport function isFunction(x) {\n  return typeof x === 'function';\n}\n\nexport function isMaybeThenable(x) {\n  return x !== null && typeof x === 'object';\n}\n\nvar _isArray = void 0;\nif (Array.isArray) {\n  _isArray = Array.isArray;\n} else {\n  _isArray = function (x) {\n    return Object.prototype.toString.call(x) === '[object Array]';\n  };\n}\n\nexport var isArray = _isArray;","var len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nexport var asap = function asap(callback, arg) {\n  queue[len] = callback;\n  queue[len + 1] = arg;\n  len += 2;\n  if (len === 2) {\n    // If len is 2, that means that we need to schedule an async flush.\n    // If additional callbacks are queued before the queue is flushed, they\n    // will be processed by this flush that we are scheduling.\n    if (customSchedulerFn) {\n      customSchedulerFn(flush);\n    } else {\n      scheduleFlush();\n    }\n  }\n};\n\nexport function setScheduler(scheduleFn) {\n  customSchedulerFn = scheduleFn;\n}\n\nexport function setAsap(asapFn) {\n  asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n  // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n  // see https://github.com/cujojs/when/issues/410 for details\n  return function () {\n    return process.nextTick(flush);\n  };\n}\n\n// vertx\nfunction useVertxTimer() {\n  if (typeof vertxNext !== 'undefined') {\n    return function () {\n      vertxNext(flush);\n    };\n  }\n\n  return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n  var iterations = 0;\n  var observer = new BrowserMutationObserver(flush);\n  var node = document.createTextNode('');\n  observer.observe(node, { characterData: true });\n\n  return function () {\n    node.data = iterations = ++iterations % 2;\n  };\n}\n\n// web worker\nfunction useMessageChannel() {\n  var channel = new MessageChannel();\n  channel.port1.onmessage = flush;\n  return function () {\n    return channel.port2.postMessage(0);\n  };\n}\n\nfunction useSetTimeout() {\n  // Store setTimeout reference so es6-promise will be unaffected by\n  // other code modifying setTimeout (like sinon.useFakeTimers())\n  var globalSetTimeout = setTimeout;\n  return function () {\n    return globalSetTimeout(flush, 1);\n  };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n  for (var i = 0; i < len; i += 2) {\n    var callback = queue[i];\n    var arg = queue[i + 1];\n\n    callback(arg);\n\n    queue[i] = undefined;\n    queue[i + 1] = undefined;\n  }\n\n  len = 0;\n}\n\nfunction attemptVertx() {\n  try {\n    var vertx = Function('return this')().require('vertx');\n    vertxNext = vertx.runOnLoop || vertx.runOnContext;\n    return useVertxTimer();\n  } catch (e) {\n    return useSetTimeout();\n  }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n  scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n  scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n  scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n  scheduleFlush = attemptVertx();\n} else {\n  scheduleFlush = useSetTimeout();\n}","import { invokeCallback, subscribe, FULFILLED, REJECTED, noop, makePromise, PROMISE_ID } from './-internal';\n\nimport { asap } from './asap';\n\nexport default function then(onFulfillment, onRejection) {\n  var parent = this;\n\n  var child = new this.constructor(noop);\n\n  if (child[PROMISE_ID] === undefined) {\n    makePromise(child);\n  }\n\n  var _state = parent._state;\n\n\n  if (_state) {\n    var callback = arguments[_state - 1];\n    asap(function () {\n      return invokeCallback(_state, child, callback, parent._result);\n    });\n  } else {\n    subscribe(parent, child, onFulfillment, onRejection);\n  }\n\n  return child;\n}","import { noop, resolve as _resolve } from '../-internal';\n\n/**\n  `Promise.resolve` returns a promise that will become resolved with the\n  passed `value`. It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    resolve(1);\n  });\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.resolve(1);\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  @method resolve\n  @static\n  @param {Any} value value that the returned promise will be resolved with\n  Useful for tooling.\n  @return {Promise} a promise that will become fulfilled with the given\n  `value`\n*/\nexport default function resolve(object) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (object && typeof object === 'object' && object.constructor === Constructor) {\n    return object;\n  }\n\n  var promise = new Constructor(noop);\n  _resolve(promise, object);\n  return promise;\n}","import { objectOrFunction, isFunction } from './utils';\n\nimport { asap } from './asap';\n\nimport originalThen from './then';\nimport originalResolve from './promise/resolve';\n\nexport var PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n  return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n  return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n  try {\n    return promise.then;\n  } catch (error) {\n    TRY_CATCH_ERROR.error = error;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n  try {\n    then.call(value, fulfillmentHandler, rejectionHandler);\n  } catch (e) {\n    return e;\n  }\n}\n\nfunction handleForeignThenable(promise, thenable, then) {\n  asap(function (promise) {\n    var sealed = false;\n    var error = tryThen(then, thenable, function (value) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n      if (thenable !== value) {\n        resolve(promise, value);\n      } else {\n        fulfill(promise, value);\n      }\n    }, function (reason) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n\n      reject(promise, reason);\n    }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n    if (!sealed && error) {\n      sealed = true;\n      reject(promise, error);\n    }\n  }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n  if (thenable._state === FULFILLED) {\n    fulfill(promise, thenable._result);\n  } else if (thenable._state === REJECTED) {\n    reject(promise, thenable._result);\n  } else {\n    subscribe(thenable, undefined, function (value) {\n      return resolve(promise, value);\n    }, function (reason) {\n      return reject(promise, reason);\n    });\n  }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then) {\n  if (maybeThenable.constructor === promise.constructor && then === originalThen && maybeThenable.constructor.resolve === originalResolve) {\n    handleOwnThenable(promise, maybeThenable);\n  } else {\n    if (then === TRY_CATCH_ERROR) {\n      reject(promise, TRY_CATCH_ERROR.error);\n      TRY_CATCH_ERROR.error = null;\n    } else if (then === undefined) {\n      fulfill(promise, maybeThenable);\n    } else if (isFunction(then)) {\n      handleForeignThenable(promise, maybeThenable, then);\n    } else {\n      fulfill(promise, maybeThenable);\n    }\n  }\n}\n\nfunction resolve(promise, value) {\n  if (promise === value) {\n    reject(promise, selfFulfillment());\n  } else if (objectOrFunction(value)) {\n    handleMaybeThenable(promise, value, getThen(value));\n  } else {\n    fulfill(promise, value);\n  }\n}\n\nfunction publishRejection(promise) {\n  if (promise._onerror) {\n    promise._onerror(promise._result);\n  }\n\n  publish(promise);\n}\n\nfunction fulfill(promise, value) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n\n  promise._result = value;\n  promise._state = FULFILLED;\n\n  if (promise._subscribers.length !== 0) {\n    asap(publish, promise);\n  }\n}\n\nfunction reject(promise, reason) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n  promise._state = REJECTED;\n  promise._result = reason;\n\n  asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n  var _subscribers = parent._subscribers;\n  var length = _subscribers.length;\n\n\n  parent._onerror = null;\n\n  _subscribers[length] = child;\n  _subscribers[length + FULFILLED] = onFulfillment;\n  _subscribers[length + REJECTED] = onRejection;\n\n  if (length === 0 && parent._state) {\n    asap(publish, parent);\n  }\n}\n\nfunction publish(promise) {\n  var subscribers = promise._subscribers;\n  var settled = promise._state;\n\n  if (subscribers.length === 0) {\n    return;\n  }\n\n  var child = void 0,\n      callback = void 0,\n      detail = promise._result;\n\n  for (var i = 0; i < subscribers.length; i += 3) {\n    child = subscribers[i];\n    callback = subscribers[i + settled];\n\n    if (child) {\n      invokeCallback(settled, child, callback, detail);\n    } else {\n      callback(detail);\n    }\n  }\n\n  promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n  try {\n    return callback(detail);\n  } catch (e) {\n    TRY_CATCH_ERROR.error = e;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n  var hasCallback = isFunction(callback),\n      value = void 0,\n      error = void 0,\n      succeeded = void 0,\n      failed = void 0;\n\n  if (hasCallback) {\n    value = tryCatch(callback, detail);\n\n    if (value === TRY_CATCH_ERROR) {\n      failed = true;\n      error = value.error;\n      value.error = null;\n    } else {\n      succeeded = true;\n    }\n\n    if (promise === value) {\n      reject(promise, cannotReturnOwn());\n      return;\n    }\n  } else {\n    value = detail;\n    succeeded = true;\n  }\n\n  if (promise._state !== PENDING) {\n    // noop\n  } else if (hasCallback && succeeded) {\n    resolve(promise, value);\n  } else if (failed) {\n    reject(promise, error);\n  } else if (settled === FULFILLED) {\n    fulfill(promise, value);\n  } else if (settled === REJECTED) {\n    reject(promise, value);\n  }\n}\n\nfunction initializePromise(promise, resolver) {\n  try {\n    resolver(function resolvePromise(value) {\n      resolve(promise, value);\n    }, function rejectPromise(reason) {\n      reject(promise, reason);\n    });\n  } catch (e) {\n    reject(promise, e);\n  }\n}\n\nvar id = 0;\nfunction nextId() {\n  return id++;\n}\n\nfunction makePromise(promise) {\n  promise[PROMISE_ID] = id++;\n  promise._state = undefined;\n  promise._result = undefined;\n  promise._subscribers = [];\n}\n\nexport { nextId, makePromise, getThen, noop, resolve, reject, fulfill, subscribe, publish, publishRejection, initializePromise, invokeCallback, FULFILLED, REJECTED, PENDING, handleMaybeThenable };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isArray, isMaybeThenable } from './utils';\nimport { noop, reject, fulfill, subscribe, FULFILLED, REJECTED, PENDING, getThen, handleMaybeThenable } from './-internal';\n\nimport then from './then';\nimport Promise from './promise';\nimport originalResolve from './promise/resolve';\nimport originalThen from './then';\nimport { makePromise, PROMISE_ID } from './-internal';\n\nfunction validationError() {\n  return new Error('Array Methods must be provided an Array');\n};\n\nvar Enumerator = function () {\n  function Enumerator(Constructor, input) {\n    this._instanceConstructor = Constructor;\n    this.promise = new Constructor(noop);\n\n    if (!this.promise[PROMISE_ID]) {\n      makePromise(this.promise);\n    }\n\n    if (isArray(input)) {\n      this.length = input.length;\n      this._remaining = input.length;\n\n      this._result = new Array(this.length);\n\n      if (this.length === 0) {\n        fulfill(this.promise, this._result);\n      } else {\n        this.length = this.length || 0;\n        this._enumerate(input);\n        if (this._remaining === 0) {\n          fulfill(this.promise, this._result);\n        }\n      }\n    } else {\n      reject(this.promise, validationError());\n    }\n  }\n\n  Enumerator.prototype._enumerate = function _enumerate(input) {\n    for (var i = 0; this._state === PENDING && i < input.length; i++) {\n      this._eachEntry(input[i], i);\n    }\n  };\n\n  Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n    var c = this._instanceConstructor;\n    var resolve = c.resolve;\n\n\n    if (resolve === originalResolve) {\n      var _then = getThen(entry);\n\n      if (_then === originalThen && entry._state !== PENDING) {\n        this._settledAt(entry._state, i, entry._result);\n      } else if (typeof _then !== 'function') {\n        this._remaining--;\n        this._result[i] = entry;\n      } else if (c === Promise) {\n        var promise = new c(noop);\n        handleMaybeThenable(promise, entry, _then);\n        this._willSettleAt(promise, i);\n      } else {\n        this._willSettleAt(new c(function (resolve) {\n          return resolve(entry);\n        }), i);\n      }\n    } else {\n      this._willSettleAt(resolve(entry), i);\n    }\n  };\n\n  Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n    var promise = this.promise;\n\n\n    if (promise._state === PENDING) {\n      this._remaining--;\n\n      if (state === REJECTED) {\n        reject(promise, value);\n      } else {\n        this._result[i] = value;\n      }\n    }\n\n    if (this._remaining === 0) {\n      fulfill(promise, this._result);\n    }\n  };\n\n  Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n    var enumerator = this;\n\n    subscribe(promise, undefined, function (value) {\n      return enumerator._settledAt(FULFILLED, i, value);\n    }, function (reason) {\n      return enumerator._settledAt(REJECTED, i, reason);\n    });\n  };\n\n  return Enumerator;\n}();\n\nexport default Enumerator;\n;","import Enumerator from '../enumerator';\n\n/**\n  `Promise.all` accepts an array of promises, and returns a new promise which\n  is fulfilled with an array of fulfillment values for the passed promises, or\n  rejected with the reason of the first passed promise to be rejected. It casts all\n  elements of the passed iterable to promises as it runs this algorithm.\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = resolve(2);\n  let promise3 = resolve(3);\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // The array here would be [ 1, 2, 3 ];\n  });\n  ```\n\n  If any of the `promises` given to `all` are rejected, the first promise\n  that is rejected will be given as an argument to the returned promises's\n  rejection handler. For example:\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = reject(new Error(\"2\"));\n  let promise3 = reject(new Error(\"3\"));\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // Code here never runs because there are rejected promises!\n  }, function(error) {\n    // error.message === \"2\"\n  });\n  ```\n\n  @method all\n  @static\n  @param {Array} entries array of promises\n  @param {String} label optional string for labeling the promise.\n  Useful for tooling.\n  @return {Promise} promise that is fulfilled when all `promises` have been\n  fulfilled, or rejected if any of them become rejected.\n  @static\n*/\nexport default function all(entries) {\n  return new Enumerator(this, entries).promise;\n}","import { isArray } from \"../utils\";\n\n/**\n  `Promise.race` returns a new promise which is settled in the same way as the\n  first passed promise to settle.\n\n  Example:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 2');\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // result === 'promise 2' because it was resolved before promise1\n    // was resolved.\n  });\n  ```\n\n  `Promise.race` is deterministic in that only the state of the first\n  settled promise matters. For example, even if other promises given to the\n  `promises` array argument are resolved, but the first settled promise has\n  become rejected before the other promises became fulfilled, the returned\n  promise will become rejected:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      reject(new Error('promise 2'));\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // Code here never runs\n  }, function(reason){\n    // reason.message === 'promise 2' because promise 2 became rejected before\n    // promise 1 became fulfilled\n  });\n  ```\n\n  An example real-world use case is implementing timeouts:\n\n  ```javascript\n  Promise.race([ajax('foo.json'), timeout(5000)])\n  ```\n\n  @method race\n  @static\n  @param {Array} promises array of promises to observe\n  Useful for tooling.\n  @return {Promise} a promise which settles in the same way as the first passed\n  promise to settle.\n*/\nexport default function race(entries) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (!isArray(entries)) {\n    return new Constructor(function (_, reject) {\n      return reject(new TypeError('You must pass an array to race.'));\n    });\n  } else {\n    return new Constructor(function (resolve, reject) {\n      var length = entries.length;\n      for (var i = 0; i < length; i++) {\n        Constructor.resolve(entries[i]).then(resolve, reject);\n      }\n    });\n  }\n}","import { noop, reject as _reject } from '../-internal';\n\n/**\n  `Promise.reject` returns a promise rejected with the passed `reason`.\n  It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    reject(new Error('WHOOPS'));\n  });\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.reject(new Error('WHOOPS'));\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  @method reject\n  @static\n  @param {Any} reason value that the returned promise will be rejected with.\n  Useful for tooling.\n  @return {Promise} a promise rejected with the given `reason`.\n*/\nexport default function reject(reason) {\n  /*jshint validthis:true */\n  var Constructor = this;\n  var promise = new Constructor(noop);\n  _reject(promise, reason);\n  return promise;\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { isFunction } from './utils';\nimport { noop, nextId, PROMISE_ID, initializePromise } from './-internal';\nimport { asap, setAsap, setScheduler } from './asap';\n\nimport all from './promise/all';\nimport race from './promise/race';\nimport Resolve from './promise/resolve';\nimport Reject from './promise/reject';\nimport then from './then';\n\nfunction needsResolver() {\n  throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n  throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n  Promise objects represent the eventual result of an asynchronous operation. The\n  primary way of interacting with a promise is through its `then` method, which\n  registers callbacks to receive either a promise's eventual value or the reason\n  why the promise cannot be fulfilled.\n\n  Terminology\n  -----------\n\n  - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n  - `thenable` is an object or function that defines a `then` method.\n  - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n  - `exception` is a value that is thrown using the throw statement.\n  - `reason` is a value that indicates why a promise was rejected.\n  - `settled` the final resting state of a promise, fulfilled or rejected.\n\n  A promise can be in one of three states: pending, fulfilled, or rejected.\n\n  Promises that are fulfilled have a fulfillment value and are in the fulfilled\n  state.  Promises that are rejected have a rejection reason and are in the\n  rejected state.  A fulfillment value is never a thenable.\n\n  Promises can also be said to *resolve* a value.  If this value is also a\n  promise, then the original promise's settled state will match the value's\n  settled state.  So a promise that *resolves* a promise that rejects will\n  itself reject, and a promise that *resolves* a promise that fulfills will\n  itself fulfill.\n\n\n  Basic Usage:\n  ------------\n\n  ```js\n  let promise = new Promise(function(resolve, reject) {\n    // on success\n    resolve(value);\n\n    // on failure\n    reject(reason);\n  });\n\n  promise.then(function(value) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Advanced Usage:\n  ---------------\n\n  Promises shine when abstracting away asynchronous interactions such as\n  `XMLHttpRequest`s.\n\n  ```js\n  function getJSON(url) {\n    return new Promise(function(resolve, reject){\n      let xhr = new XMLHttpRequest();\n\n      xhr.open('GET', url);\n      xhr.onreadystatechange = handler;\n      xhr.responseType = 'json';\n      xhr.setRequestHeader('Accept', 'application/json');\n      xhr.send();\n\n      function handler() {\n        if (this.readyState === this.DONE) {\n          if (this.status === 200) {\n            resolve(this.response);\n          } else {\n            reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n          }\n        }\n      };\n    });\n  }\n\n  getJSON('/posts.json').then(function(json) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Unlike callbacks, promises are great composable primitives.\n\n  ```js\n  Promise.all([\n    getJSON('/posts'),\n    getJSON('/comments')\n  ]).then(function(values){\n    values[0] // => postsJSON\n    values[1] // => commentsJSON\n\n    return values;\n  });\n  ```\n\n  @class Promise\n  @param {Function} resolver\n  Useful for tooling.\n  @constructor\n*/\n\nvar Promise = function () {\n  function Promise(resolver) {\n    this[PROMISE_ID] = nextId();\n    this._result = this._state = undefined;\n    this._subscribers = [];\n\n    if (noop !== resolver) {\n      typeof resolver !== 'function' && needsResolver();\n      this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n    }\n  }\n\n  /**\n  The primary way of interacting with a promise is through its `then` method,\n  which registers callbacks to receive either a promise's eventual value or the\n  reason why the promise cannot be fulfilled.\n   ```js\n  findUser().then(function(user){\n    // user is available\n  }, function(reason){\n    // user is unavailable, and you are given the reason why\n  });\n  ```\n   Chaining\n  --------\n   The return value of `then` is itself a promise.  This second, 'downstream'\n  promise is resolved with the return value of the first promise's fulfillment\n  or rejection handler, or rejected if the handler throws an exception.\n   ```js\n  findUser().then(function (user) {\n    return user.name;\n  }, function (reason) {\n    return 'default name';\n  }).then(function (userName) {\n    // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n    // will be `'default name'`\n  });\n   findUser().then(function (user) {\n    throw new Error('Found user, but still unhappy');\n  }, function (reason) {\n    throw new Error('`findUser` rejected and we're unhappy');\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n    // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n  });\n  ```\n  If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n   ```js\n  findUser().then(function (user) {\n    throw new PedagogicalException('Upstream error');\n  }).then(function (value) {\n    // never reached\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // The `PedgagocialException` is propagated all the way down to here\n  });\n  ```\n   Assimilation\n  ------------\n   Sometimes the value you want to propagate to a downstream promise can only be\n  retrieved asynchronously. This can be achieved by returning a promise in the\n  fulfillment or rejection handler. The downstream promise will then be pending\n  until the returned promise is settled. This is called *assimilation*.\n   ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // The user's comments are now available\n  });\n  ```\n   If the assimliated promise rejects, then the downstream promise will also reject.\n   ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // If `findCommentsByAuthor` fulfills, we'll have the value here\n  }, function (reason) {\n    // If `findCommentsByAuthor` rejects, we'll have the reason here\n  });\n  ```\n   Simple Example\n  --------------\n   Synchronous Example\n   ```javascript\n  let result;\n   try {\n    result = findResult();\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n   Errback Example\n   ```js\n  findResult(function(result, err){\n    if (err) {\n      // failure\n    } else {\n      // success\n    }\n  });\n  ```\n   Promise Example;\n   ```javascript\n  findResult().then(function(result){\n    // success\n  }, function(reason){\n    // failure\n  });\n  ```\n   Advanced Example\n  --------------\n   Synchronous Example\n   ```javascript\n  let author, books;\n   try {\n    author = findAuthor();\n    books  = findBooksByAuthor(author);\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n   Errback Example\n   ```js\n   function foundBooks(books) {\n   }\n   function failure(reason) {\n   }\n   findAuthor(function(author, err){\n    if (err) {\n      failure(err);\n      // failure\n    } else {\n      try {\n        findBoooksByAuthor(author, function(books, err) {\n          if (err) {\n            failure(err);\n          } else {\n            try {\n              foundBooks(books);\n            } catch(reason) {\n              failure(reason);\n            }\n          }\n        });\n      } catch(error) {\n        failure(err);\n      }\n      // success\n    }\n  });\n  ```\n   Promise Example;\n   ```javascript\n  findAuthor().\n    then(findBooksByAuthor).\n    then(function(books){\n      // found books\n  }).catch(function(reason){\n    // something went wrong\n  });\n  ```\n   @method then\n  @param {Function} onFulfilled\n  @param {Function} onRejected\n  Useful for tooling.\n  @return {Promise}\n  */\n\n  /**\n  `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n  as the catch block of a try/catch statement.\n  ```js\n  function findAuthor(){\n  throw new Error('couldn't find that author');\n  }\n  // synchronous\n  try {\n  findAuthor();\n  } catch(reason) {\n  // something went wrong\n  }\n  // async with promises\n  findAuthor().catch(function(reason){\n  // something went wrong\n  });\n  ```\n  @method catch\n  @param {Function} onRejection\n  Useful for tooling.\n  @return {Promise}\n  */\n\n\n  Promise.prototype.catch = function _catch(onRejection) {\n    return this.then(null, onRejection);\n  };\n\n  /**\n    `finally` will be invoked regardless of the promise's fate just as native\n    try/catch/finally behaves\n  \n    Synchronous example:\n  \n    ```js\n    findAuthor() {\n      if (Math.random() > 0.5) {\n        throw new Error();\n      }\n      return new Author();\n    }\n  \n    try {\n      return findAuthor(); // succeed or fail\n    } catch(error) {\n      return findOtherAuther();\n    } finally {\n      // always runs\n      // doesn't affect the return value\n    }\n    ```\n  \n    Asynchronous example:\n  \n    ```js\n    findAuthor().catch(function(reason){\n      return findOtherAuther();\n    }).finally(function(){\n      // author was either found, or not\n    });\n    ```\n  \n    @method finally\n    @param {Function} callback\n    @return {Promise}\n  */\n\n\n  Promise.prototype.finally = function _finally(callback) {\n    var promise = this;\n    var constructor = promise.constructor;\n\n    if (isFunction(callback)) {\n      return promise.then(function (value) {\n        return constructor.resolve(callback()).then(function () {\n          return value;\n        });\n      }, function (reason) {\n        return constructor.resolve(callback()).then(function () {\n          throw reason;\n        });\n      });\n    }\n\n    return promise.then(callback, callback);\n  };\n\n  return Promise;\n}();\n\nPromise.prototype.then = then;\nexport default Promise;\nPromise.all = all;\nPromise.race = race;\nPromise.resolve = Resolve;\nPromise.reject = Reject;\nPromise._setScheduler = setScheduler;\nPromise._setAsap = setAsap;\nPromise._asap = asap;","/*global self*/\nimport Promise from './promise';\n\nexport default function polyfill() {\n  var local = void 0;\n\n  if (typeof global !== 'undefined') {\n    local = global;\n  } else if (typeof self !== 'undefined') {\n    local = self;\n  } else {\n    try {\n      local = Function('return this')();\n    } catch (e) {\n      throw new Error('polyfill failed because global object is unavailable in this environment');\n    }\n  }\n\n  var P = local.Promise;\n\n  if (P) {\n    var promiseToString = null;\n    try {\n      promiseToString = Object.prototype.toString.call(P.resolve());\n    } catch (e) {\n      // silently ignored\n    }\n\n    if (promiseToString === '[object Promise]' && !P.cast) {\n      return;\n    }\n  }\n\n  local.Promise = Promise;\n}","import Promise from './es6-promise/promise';\nimport polyfill from './es6-promise/polyfill';\n\n// Strange compat..\nPromise.polyfill = polyfill;\nPromise.Promise = Promise;\nexport default Promise;"],"names":["resolve","_resolve","then","originalThen","originalResolve","Promise","reject","_reject","Resolve","Reject"],"mappings":"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","file":"es6-promise.min.js"}
\ No newline at end of file
diff --git a/deps/npm/node_modules/es6-promise/lib/es6-promise/promise.js b/deps/npm/node_modules/es6-promise/lib/es6-promise/promise.js
index 8d8f829c5e5198..2722511b05ce6b 100644
--- a/deps/npm/node_modules/es6-promise/lib/es6-promise/promise.js
+++ b/deps/npm/node_modules/es6-promise/lib/es6-promise/promise.js
@@ -410,8 +410,12 @@ class Promise {
     let promise = this;
     let constructor = promise.constructor;
 
-    return promise.then(value => constructor.resolve(callback()).then(() => value),
-                       reason => constructor.resolve(callback()).then(() => { throw reason; }));
+    if ( isFunction(callback) ) {
+      return promise.then(value => constructor.resolve(callback()).then(() => value),
+                         reason => constructor.resolve(callback()).then(() => { throw reason; }));
+    }
+
+    return promise.then(callback, callback);
   }
 }
 
diff --git a/deps/npm/node_modules/es6-promise/package.json b/deps/npm/node_modules/es6-promise/package.json
index 5fe4bcbbfb3291..22d31abd00dd22 100644
--- a/deps/npm/node_modules/es6-promise/package.json
+++ b/deps/npm/node_modules/es6-promise/package.json
@@ -1,8 +1,8 @@
 {
   "_from": "es6-promise@^4.0.3",
-  "_id": "es6-promise@4.2.4",
+  "_id": "es6-promise@4.2.6",
   "_inBundle": false,
-  "_integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==",
+  "_integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==",
   "_location": "/es6-promise",
   "_phantomChildren": {},
   "_requested": {
@@ -18,10 +18,10 @@
   "_requiredBy": [
     "/es6-promisify"
   ],
-  "_resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
-  "_shasum": "dc4221c2b16518760bd8c39a52d8f356fc00ed29",
+  "_resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz",
+  "_shasum": "b685edd8258886365ea62b57d30de28fadcd974f",
   "_spec": "es6-promise@^4.0.3",
-  "_where": "/Users/rebecca/code/npm/node_modules/es6-promisify",
+  "_where": "/Users/zkat/Documents/code/work/npm/node_modules/es6-promisify",
   "author": {
     "name": "Yehuda Katz, Tom Dale, Stefan Penner and contributors",
     "url": "Conversion to ES6 API by Jake Archibald"
@@ -72,12 +72,13 @@
     "auto.js",
     "!dist/test"
   ],
-  "homepage": "https://github.com/stefanpenner/es6-promise#readme",
+  "homepage": "https://github.com/stefanpenner/es6-promise",
+  "jsdelivr": "dist/es6-promise.auto.min.js",
   "keywords": [
-    "promises",
-    "promise",
+    "futures",
     "polyfill",
-    "futures"
+    "promise",
+    "promises"
   ],
   "license": "MIT",
   "main": "dist/es6-promise.js",
@@ -100,5 +101,6 @@
     "main": "dist/es6-promise.js"
   },
   "typings": "es6-promise.d.ts",
-  "version": "4.2.4"
+  "unpkg": "dist/es6-promise.auto.min.js",
+  "version": "4.2.6"
 }
diff --git a/deps/npm/node_modules/is-builtin-module/index.js b/deps/npm/node_modules/is-builtin-module/index.js
deleted file mode 100644
index b6cfa616ae85cf..00000000000000
--- a/deps/npm/node_modules/is-builtin-module/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-'use strict';
-var builtinModules = require('builtin-modules');
-
-module.exports = function (str) {
-	if (typeof str !== 'string') {
-		throw new TypeError('Expected a string');
-	}
-
-	return builtinModules.indexOf(str) !== -1;
-};
diff --git a/deps/npm/node_modules/is-builtin-module/package.json b/deps/npm/node_modules/is-builtin-module/package.json
deleted file mode 100644
index d1cd899d9ad65d..00000000000000
--- a/deps/npm/node_modules/is-builtin-module/package.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
-  "_from": "is-builtin-module@^1.0.0",
-  "_id": "is-builtin-module@1.0.0",
-  "_inBundle": false,
-  "_integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
-  "_location": "/is-builtin-module",
-  "_phantomChildren": {},
-  "_requested": {
-    "type": "range",
-    "registry": true,
-    "raw": "is-builtin-module@^1.0.0",
-    "name": "is-builtin-module",
-    "escapedName": "is-builtin-module",
-    "rawSpec": "^1.0.0",
-    "saveSpec": null,
-    "fetchSpec": "^1.0.0"
-  },
-  "_requiredBy": [
-    "/normalize-package-data"
-  ],
-  "_resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
-  "_shasum": "540572d34f7ac3119f8f76c30cbc1b1e037affbe",
-  "_spec": "is-builtin-module@^1.0.0",
-  "_where": "/Users/rebecca/code/npm/node_modules/normalize-package-data",
-  "author": {
-    "name": "Sindre Sorhus",
-    "email": "sindresorhus@gmail.com",
-    "url": "sindresorhus.com"
-  },
-  "bugs": {
-    "url": "https://github.com/sindresorhus/is-builtin-module/issues"
-  },
-  "bundleDependencies": false,
-  "dependencies": {
-    "builtin-modules": "^1.0.0"
-  },
-  "deprecated": false,
-  "description": "Check if a string matches the name of a Node.js builtin module",
-  "devDependencies": {
-    "ava": "0.0.4"
-  },
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "files": [
-    "index.js"
-  ],
-  "homepage": "https://github.com/sindresorhus/is-builtin-module#readme",
-  "keywords": [
-    "builtin",
-    "built-in",
-    "builtins",
-    "node",
-    "modules",
-    "core",
-    "bundled",
-    "list",
-    "array",
-    "names",
-    "is",
-    "detect",
-    "check",
-    "match"
-  ],
-  "license": "MIT",
-  "name": "is-builtin-module",
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/sindresorhus/is-builtin-module.git"
-  },
-  "scripts": {
-    "test": "node test.js"
-  },
-  "version": "1.0.0"
-}
diff --git a/deps/npm/node_modules/is-builtin-module/readme.md b/deps/npm/node_modules/is-builtin-module/readme.md
deleted file mode 100644
index 798dcf4371799b..00000000000000
--- a/deps/npm/node_modules/is-builtin-module/readme.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# is-builtin-module [![Build Status](https://travis-ci.org/sindresorhus/is-builtin-module.svg?branch=master)](https://travis-ci.org/sindresorhus/is-builtin-module)
-
-> Check if a string matches the name of a Node.js builtin module
-
-
-## Install
-
-```
-$ npm install --save is-builtin-module
-```
-
-
-## Usage
-
-```js
-var isBuiltinModule = require('is-builtin-module');
-
-isBuiltinModule('fs');
-//=> true
-
-isBuiltinModule('unicorn');
-//=> false :(
-```
-
-
-## Related
-
-- [builtin-modules](https://github.com/sindresorhus/builtin-modules) - List of the Node.js builtin modules
-
-
-## License
-
-MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/deps/npm/node_modules/lock-verify/index.js b/deps/npm/node_modules/lock-verify/index.js
index 22721329134d73..cf673888faf014 100644
--- a/deps/npm/node_modules/lock-verify/index.js
+++ b/deps/npm/node_modules/lock-verify/index.js
@@ -36,9 +36,17 @@ function lockVerify(check) {
         if (spec.registry) {
           // Can't match tags to package-lock w/o network
           if (spec.type === 'tag') return
-          if (!semver.satisfies(lock.version, spec.fetchSpec)) {
-            errors.push("Invalid: lock file's " + name + '@' + lock.version + ' does not satisfy ' + name + '@' + spec.fetchSpec)
-            return
+          if (spec.type === 'alias') {
+            const lockSpec = npa.resolve(name, lock.version)
+            if (!semver.satisfies(lockSpec.subSpec.fetchSpec, spec.subSpec.fetchSpec)) {
+              errors.push("Invalid: lock file's " + name + '@' + lock.version + ' does not satisfy ' + name + '@' + spec.rawSpec)
+              return
+            }
+          } else {
+            if (!semver.satisfies(lock.version, spec.fetchSpec)) {
+              errors.push("Invalid: lock file's " + name + '@' + lock.version + ' does not satisfy ' + name + '@' + spec.fetchSpec)
+              return
+            }
           }
         } else if (spec.type === 'git') {
           // can't verify git w/o network
diff --git a/deps/npm/node_modules/lock-verify/package.json b/deps/npm/node_modules/lock-verify/package.json
index 0f2002f549e5ae..621c12fb76e876 100644
--- a/deps/npm/node_modules/lock-verify/package.json
+++ b/deps/npm/node_modules/lock-verify/package.json
@@ -1,33 +1,30 @@
 {
-  "_args": [
-    [
-      "lock-verify@2.0.2",
-      "/Users/rebecca/code/npm"
-    ]
-  ],
-  "_from": "lock-verify@2.0.2",
-  "_id": "lock-verify@2.0.2",
+  "_from": "lock-verify@2.1.0",
+  "_id": "lock-verify@2.1.0",
   "_inBundle": false,
-  "_integrity": "sha512-QNVwK0EGZBS4R3YQ7F1Ox8p41Po9VGl2QG/2GsuvTbkJZYSsPeWHKMbbH6iZMCHWSMww5nrJroZYnGzI4cePuw==",
+  "_integrity": "sha512-vcLpxnGvrqisKvLQ2C2v0/u7LVly17ak2YSgoK4PrdsYBXQIax19vhKiLfvKNFx7FRrpTnitrpzF/uuCMuorIg==",
   "_location": "/lock-verify",
   "_phantomChildren": {},
   "_requested": {
     "type": "version",
     "registry": true,
-    "raw": "lock-verify@2.0.2",
+    "raw": "lock-verify@2.1.0",
     "name": "lock-verify",
     "escapedName": "lock-verify",
-    "rawSpec": "2.0.2",
+    "rawSpec": "2.1.0",
     "saveSpec": null,
-    "fetchSpec": "2.0.2"
+    "fetchSpec": "2.1.0"
   },
   "_requiredBy": [
+    "#USER",
     "/",
-    "/libcipm"
+    "/libcipm",
+    "/libnpm"
   ],
-  "_resolved": "https://registry.npmjs.org/lock-verify/-/lock-verify-2.0.2.tgz",
-  "_spec": "2.0.2",
-  "_where": "/Users/rebecca/code/npm",
+  "_resolved": "https://registry.npmjs.org/lock-verify/-/lock-verify-2.1.0.tgz",
+  "_shasum": "fff4c918b8db9497af0c5fa7f6d71555de3ceb47",
+  "_spec": "lock-verify@2.1.0",
+  "_where": "/Users/zkat/Documents/code/work/npm",
   "author": {
     "name": "Rebecca Turner",
     "email": "me@re-becca.org",
@@ -36,10 +33,12 @@
   "bugs": {
     "url": "https://github.com/iarna/lock-verify/issues"
   },
+  "bundleDependencies": false,
   "dependencies": {
-    "npm-package-arg": "^5.1.2 || 6",
+    "npm-package-arg": "^6.1.0",
     "semver": "^5.4.1"
   },
+  "deprecated": false,
   "description": "Report if your package.json is out of sync with your package-lock.json.",
   "devDependencies": {
     "@iarna/cli": "^1.2.0"
@@ -59,5 +58,5 @@
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1"
   },
-  "version": "2.0.2"
+  "version": "2.1.0"
 }
diff --git a/deps/npm/node_modules/normalize-package-data/README.md b/deps/npm/node_modules/normalize-package-data/README.md
index 37727779739056..d2bd7bc7ff6062 100644
--- a/deps/npm/node_modules/normalize-package-data/README.md
+++ b/deps/npm/node_modules/normalize-package-data/README.md
@@ -94,7 +94,7 @@ If `version` field is given, the value of the version field must be a valid *sem
 
 ### Rules for license field
 
-The `license` field should be a valid *SPDX license expression* or one of the special values allowed by [validate-npm-package-license](https://npmjs.com/packages/validate-npm-package-license). See [documentation for the license field in package.json](https://docs.npmjs.com/files/package.json#license).
+The `license` field should be a valid *SPDX license expression* or one of the special values allowed by [validate-npm-package-license](https://npmjs.com/package/validate-npm-package-license). See [documentation for the license field in package.json](https://docs.npmjs.com/files/package.json#license).
 
 ## Credits
 
diff --git a/deps/npm/node_modules/normalize-package-data/lib/fixer.js b/deps/npm/node_modules/normalize-package-data/lib/fixer.js
index f070119674d2d3..27682e9611afd2 100644
--- a/deps/npm/node_modules/normalize-package-data/lib/fixer.js
+++ b/deps/npm/node_modules/normalize-package-data/lib/fixer.js
@@ -1,7 +1,7 @@
 var semver = require("semver")
 var validateLicense = require('validate-npm-package-license');
 var hostedGitInfo = require("hosted-git-info")
-var isBuiltinModule = require("is-builtin-module")
+var isBuiltinModule = require("resolve").isCore
 var depTypes = ["dependencies","devDependencies","optionalDependencies"]
 var extractDescription = require("./extract_description")
 var url = require("url")
@@ -299,7 +299,8 @@ var fixer = module.exports = {
     } else{
       if (
         typeof(data.license) !== 'string' ||
-        data.license.length < 1
+        data.license.length < 1 ||
+        data.license.trim() === ''
       ) {
         this.warn("invalidLicense")
       } else {
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/.editorconfig b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/.editorconfig
new file mode 100644
index 00000000000000..bc228f8269443b
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/.editorconfig
@@ -0,0 +1,20 @@
+root = true
+
+[*]
+indent_style = tab
+indent_size = 4
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+max_line_length = 150
+
+[CHANGELOG.md]
+indent_style = space
+indent_size = 2
+
+[*.json]
+max_line_length = off
+
+[Makefile]
+max_line_length = off
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/.eslintignore b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/.eslintignore
new file mode 100644
index 00000000000000..3c3629e647f5dd
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/.eslintignore
@@ -0,0 +1 @@
+node_modules
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/.travis.yml b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/.travis.yml
new file mode 100644
index 00000000000000..768129d572eeb8
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/.travis.yml
@@ -0,0 +1,269 @@
+language: node_js
+os:
+ - linux
+node_js:
+  - "11.6"
+  - "10.15"
+  - "9.11"
+  - "8.15"
+  - "7.10"
+  - "6.16"
+  - "5.12"
+  - "4.9"
+  - "iojs-v3.3"
+  - "iojs-v2.5"
+  - "iojs-v1.8"
+  - "0.12"
+  - "0.10"
+  - "0.8"
+  - "0.6"
+before_install:
+  - 'case "${TRAVIS_NODE_VERSION}" in 0.*) export NPM_CONFIG_STRICT_SSL=false ;; esac'
+  - 'nvm install-latest-npm'
+install:
+  - 'if [ "${TRAVIS_NODE_VERSION}" = "0.6" ] || [ "${TRAVIS_NODE_VERSION}" = "0.9" ]; then nvm install --latest-npm 0.8 && npm install && nvm use "${TRAVIS_NODE_VERSION}"; else npm install; fi;'
+script:
+  - 'if [ -n "${PRETEST-}" ]; then npm run pretest ; fi'
+  - 'if [ -n "${POSTTEST-}" ]; then npm run posttest ; fi'
+  - 'if [ -n "${COVERAGE-}" ]; then npm run coverage ; fi'
+  - 'if [ -n "${TEST-}" ]; then npm run tests-only ; fi'
+sudo: false
+env:
+  - TEST=true
+matrix:
+  fast_finish: true
+  include:
+    - node_js: "lts/*"
+      env: PRETEST=true
+    - node_js: "lts/*"
+      env: POSTTEST=true
+    - node_js: "11.5"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "11.4"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "11.3"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "11.2"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "11.1"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "11.0"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "10.14"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "10.13"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "10.12"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "10.11"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "10.10"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "10.9"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "10.8"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "10.7"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "10.6"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "10.5"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "10.4"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "10.3"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "10.2"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "10.1"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "10.0"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "9.10"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "9.9"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "9.8"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "9.7"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "9.6"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "9.5"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "9.4"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "9.3"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "9.2"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "9.1"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "9.0"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "8.14"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "8.13"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "8.12"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "8.11"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "8.10"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "8.9"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "8.8"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "8.7"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "8.6"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "8.5"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "8.4"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "8.3"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "8.2"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "8.1"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "8.0"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "7.9"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "7.8"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "7.7"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "7.6"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "7.5"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "7.4"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "7.3"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "7.2"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "7.1"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "7.0"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "6.15"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "6.14"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "6.13"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "6.12"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "6.11"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "6.10"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "6.9"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "6.8"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "6.7"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "6.6"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "6.5"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "6.4"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "6.3"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "6.2"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "6.1"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "6.0"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "5.11"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "5.10"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "5.9"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "5.8"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "5.7"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "5.6"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "5.5"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "5.4"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "5.3"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "5.2"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "5.1"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "5.0"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "4.8"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "4.7"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "4.6"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "4.5"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "4.4"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "4.3"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "4.2"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "4.1"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "4.0"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "iojs-v3.2"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "iojs-v3.1"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "iojs-v3.0"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "iojs-v2.4"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "iojs-v2.3"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "iojs-v2.2"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "iojs-v2.1"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "iojs-v2.0"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "iojs-v1.7"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "iojs-v1.6"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "iojs-v1.5"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "iojs-v1.4"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "iojs-v1.3"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "iojs-v1.2"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "iojs-v1.1"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "iojs-v1.0"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "0.11"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "0.9"
+      env: TEST=true ALLOW_FAILURE=true
+    - node_js: "0.4"
+      env: TEST=true ALLOW_FAILURE=true
+  allow_failures:
+    - os: osx
+    - env: TEST=true ALLOW_FAILURE=true
+    - node_js: "0.6"
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/CHANGELOG.md b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/CHANGELOG.md
new file mode 100644
index 00000000000000..832ee0272043e1
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/CHANGELOG.md
@@ -0,0 +1,629 @@
+### Changelog
+
+All notable changes to this project will be documented in this file. Dates are displayed in UTC.
+
+#### [Unreleased](https://github.com/browserify/resolve/compare/v1.9.0...HEAD)
+
+- [Fix] `sync`/`async`: when package.json `main` is not a string, throw an error ([`#178`][])
+- [Tests] up to `v11.6`, `v10.15`, `v8.15`, `v6.16`	(([`083e78c`][])
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape`	(([`29a4994`][])
+- [Tests] add an additional test	(([`2c67936`][])
+
+[`083e78c`]: https://github.com/browserify/resolve/commit/083e78c1ae5c1708b7d41c9ad7c608caffeddcbf
+[`29a4994`]: https://github.com/browserify/resolve/commit/29a499418d54b5befe9deef1bc7c38a9174cfbd8
+[`2c67936`]: https://github.com/browserify/resolve/commit/2c679363e852f7a0d570593527ea7038f0cd2c19
+
+#### [v1.9.0](https://github.com/browserify/resolve/compare/v1.8.1...v1.9.0) - 17 December 2018
+
+- [Fix] `sync`/`async`: fix `preserveSymlinks` option ([`#177`][])
+- [Fix] `sync`/`async`: when package.json `main` is not a string, throw an error ([`#178`][])
+- [Refactor] `node-modules-paths`: Change `paths` function option to receive a thunk for node modules resolution paths	(([`d652f01`][])
+- [Tests] up to `node` `v11.4`, `v10.14`, `v8.14`, `v6.15`	(([`2b4f3a8`][])
+- [New] `async`/`sync`/`node-modules-paths`: Adds support for “paths” being a function	(([`7112873`][])
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `object-keys`, `safe-publish-latest`, `tape`	(([`5542700`][])
+- [New] Implements a "normalize-options" pseudo-hook	(([`f3961df`][])
+- [Tests] better failure messages	(([`f839d20`][])
+- [Deps] update `path-parse`	(([`1018c0e`][])
+
+[`d652f01`]: https://github.com/browserify/resolve/commit/d652f018b2561f4863ffcd0f3ecdb0dfe65ee223
+[`2b4f3a8`]: https://github.com/browserify/resolve/commit/2b4f3a898a3943e45cdff539b542c4ebee2b608a
+[`7112873`]: https://github.com/browserify/resolve/commit/711287339aad544788a4b8b5335221cea645572c
+[`5542700`]: https://github.com/browserify/resolve/commit/554270035e1997ae34865500c629888249baa304
+[`f3961df`]: https://github.com/browserify/resolve/commit/f3961dfcb7b2993d935c255e65309e7028a88b8d
+[`f839d20`]: https://github.com/browserify/resolve/commit/f839d20ab16ef814214d80183452d02379cbbf15
+[`1018c0e`]: https://github.com/browserify/resolve/commit/1018c0e49851bfb62176d8adbc94125ae85cd158
+
+#### [v1.8.1](https://github.com/browserify/resolve/compare/v1.8.0...v1.8.1) - 17 June 2018
+
+- [Docs] clean up readme code	(([`f5394d8`][])
+- [Fix] resolution when `filename` option is passed	(([`9c370c9`][])
+- [Tests] up to `node` `v10.4`	(([`3a64219`][])
+- [Tests] improve output of symlink tests that fail on Mac	(([`6f771b2`][])
+
+[`f5394d8`]: https://github.com/browserify/resolve/commit/f5394d801350ff32be08dfc5ca37bcb677b4c08b
+[`9c370c9`]: https://github.com/browserify/resolve/commit/9c370c9848eaecb36fb8e0b004930e2dd49e1e71
+[`3a64219`]: https://github.com/browserify/resolve/commit/3a64219a7385d5d51f3d4ff7b3de0ce749d6cf09
+[`6f771b2`]: https://github.com/browserify/resolve/commit/6f771b215b4f40b0ba0009ef564bde85212e79eb
+
+#### [v1.8.0](https://github.com/browserify/resolve/compare/v1.7.1...v1.8.0) - 15 June 2018
+
+- [New] include filename in error message ([`#162`][])
+- [Tests] up to `node` `v10.1`, `v9.11`, `v8.11`, `v6.14`, `4.9`	(([`ad16af2`][])
+- Fix eslint problems and update count of tests	(([`def5931`][])
+- [New] add fs/promises to the list of core modules	(([`756419a`][])
+- [New] core: add `trace_events`, `v8/tools/arguments`	(([`bae0338`][])
+- [Fix] core: `_tls_legacy` is removed in node 10	(([`4225ac5`][])
+
+[`#162`]: https://github.com/browserify/resolve/pull/162
+[`ad16af2`]: https://github.com/browserify/resolve/commit/ad16af2f4f6eb1dc964f5b119f6d94bd64b2607a
+[`def5931`]: https://github.com/browserify/resolve/commit/def59317704d787adcddc9695b923e65c6bf5232
+[`756419a`]: https://github.com/browserify/resolve/commit/756419a94432fd753a62f5a58b797776efb543f9
+[`bae0338`]: https://github.com/browserify/resolve/commit/bae033824c82153ccb4f32abdd0e70ca677968bc
+[`4225ac5`]: https://github.com/browserify/resolve/commit/4225ac5f4b90d26db664ed32f5b08416fea69b86
+
+#### [v1.7.1](https://github.com/browserify/resolve/compare/v1.7.0...v1.7.1) - 12 April 2018
+
+- [Fix] revert proper but unintended breaking change in sync packageFilter ([`#157`][])
+
+#### [v1.7.0](https://github.com/browserify/resolve/compare/v1.6.0...v1.7.0) - 7 April 2018
+
+- [Fix] Make loadAsFileSync() work the same as async loadAsFile() ([`#146`][])
+- [Tests] add more pathfilter tests	(([`c3621a3`][])
+- [Tests] add some tests for browser field	(([`13fb572`][])
+- [Refactor] cache default isFile functions at module level	(([`fa6e6f5`][])
+- [Docs] fix default “isFile” implementations	(([`0f29c93`][])
+- [Tests] add some tests for a non-directory basedir	(([`0c18e40`][])
+- [Refactor] use "basedir" instead of "y", because meaningful variable names	(([`876b0b0`][])
+- [Docs] fix options formatting	(([`23df5f5`][])
+- Minor cleanup	(([`c449d48`][])
+- [Fix] support `opts.package` in non-relative lookups	(([`c8a2052`][])
+- [Tests] work around npm SSL issue	(([`04cb0bb`][])
+- [Tests] add node 8 and 9 to appveyor	(([`7cbd17a`][])
+- [Tests] work around npm SSL issue	(([`4b10996`][])
+
+[`#146`]: https://github.com/browserify/resolve/pull/146
+[`c3621a3`]: https://github.com/browserify/resolve/commit/c3621a35675b275b2b241dd367459ed7afe1c22a
+[`13fb572`]: https://github.com/browserify/resolve/commit/13fb572337623622d06450696af6c15b68be26c3
+[`fa6e6f5`]: https://github.com/browserify/resolve/commit/fa6e6f5a2d34377f6973701733177a280adf0511
+[`0f29c93`]: https://github.com/browserify/resolve/commit/0f29c93f0c74fc4e52ec6ed6678ce0fec6347e2d
+[`0c18e40`]: https://github.com/browserify/resolve/commit/0c18e40e4929ba2c9426a77079c153c43e50a025
+[`876b0b0`]: https://github.com/browserify/resolve/commit/876b0b08da9fe44d81681d0c815900485536be9e
+[`23df5f5`]: https://github.com/browserify/resolve/commit/23df5f526823e27e33b01333016b7f58b4f63b6f
+[`c449d48`]: https://github.com/browserify/resolve/commit/c449d4809cf8461a3d54e458780902b95119a969
+[`c8a2052`]: https://github.com/browserify/resolve/commit/c8a20524c7d08671c22903e70b952575b0502f7b
+[`04cb0bb`]: https://github.com/browserify/resolve/commit/04cb0bb94628e560bfa4163e73637d3803591714
+[`7cbd17a`]: https://github.com/browserify/resolve/commit/7cbd17ae270f9ec24ef05779c3a5e9da3e75c598
+[`4b10996`]: https://github.com/browserify/resolve/commit/4b1099668477e28117c34f9db3509ff096a49190
+
+#### [v1.6.0](https://github.com/browserify/resolve/compare/v1.5.0...v1.6.0) - 20 March 2018
+
+- [New] add `async_hooks` core module, added in node 8 ([`#144`][])
+- [New] add many missing core modules.	(([`88c0778`][])
+- Made loadAsFileSync() work the same as async loadAsFile().	(([`dc23387`][])
+- [Tests] up to `v9.8`, `v8.10`, `v6.13`	(([`315d729`][])
+- [Tests] up to `node` `v9.3`, `v8.8`, `v6.12`; pin included builds to LTS	(([`5091aa2`][])
+- [Tests] add a failing test	(([`90b1192`][])
+- [Dev Deps] update `eslint`, `tape`	(([`2acf953`][])
+- [Tests] restore node 0.6	(([`2764758`][])
+- [Dev Deps] update `eslint`	(([`699a54e`][])
+- [Dev Deps] update `eslint`	(([`2674fad`][])
+
+[`88c0778`]: https://github.com/browserify/resolve/commit/88c0778be359caaeb4ca74b24a7b5f7903bc39e8
+[`dc23387`]: https://github.com/browserify/resolve/commit/dc23387adb93f497d67def7ee99fae48e5958fb3
+[`315d729`]: https://github.com/browserify/resolve/commit/315d729afe7074ffae5d6ca6509a73d747985d45
+[`5091aa2`]: https://github.com/browserify/resolve/commit/5091aa2c076b67ff762937401e81da66ef7988ca
+[`90b1192`]: https://github.com/browserify/resolve/commit/90b11921181c2783209e9aa31f1e20d98c11ed17
+[`2acf953`]: https://github.com/browserify/resolve/commit/2acf953ce2a94b38528372b5f8848ac95a2aabe5
+[`2764758`]: https://github.com/browserify/resolve/commit/2764758aae576aef98f41af5d46f76ada3523012
+[`699a54e`]: https://github.com/browserify/resolve/commit/699a54e91222dc8b3e1f0af8e9859c734d99d50a
+[`2674fad`]: https://github.com/browserify/resolve/commit/2674fadcfcf2b253fdcf5e9d8564fd2b23b0b57c
+
+#### [v1.5.0](https://github.com/browserify/resolve/compare/v1.4.0...v1.5.0) - 24 October 2017
+
+- [New] node v8.8+ supports `http2` ([`#139`][])
+- [Fix] fix broken core tests; change core.json to be an object instead of an array; fix results	(([`b826f30`][])
+- [Tests] up to `v8.4`; node 0.6 is failing due to travis-ci changes; allow it to fail for now.	(([`e9d3a24`][])
+- [Tests] up to `node` `8.7`; use `nvm install-latest-npm` so new npm doesn’t break old node	(([`d0de222`][])
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape`	(([`76f28a3`][])
+- [Tests] on `node` `v8.8`	(([`e0c5d51`][])
+- [Docs] update repo URL	(([`3412f98`][])
+- [New] add `perf_hooks`, added in node v8.5	(([`e66117d`][])
+- [Dev Deps] update `eslint`	(([`5bfb072`][])
+
+[`b826f30`]: https://github.com/browserify/resolve/commit/b826f3007dc8903b95e39984f93c68bb5e4c85b9
+[`e9d3a24`]: https://github.com/browserify/resolve/commit/e9d3a24ae0a4d8e3eefc6431c918c23f7c8fc6d3
+[`d0de222`]: https://github.com/browserify/resolve/commit/d0de222e4b55b67224ddec0421ee66ce8cb5ee8d
+[`76f28a3`]: https://github.com/browserify/resolve/commit/76f28a3d275a63b0511449d28900ab5749f27fa5
+[`e0c5d51`]: https://github.com/browserify/resolve/commit/e0c5d518abfaadc4107ca8f3f8c30caf46490444
+[`3412f98`]: https://github.com/browserify/resolve/commit/3412f984a03a345b9a5ef1f0642a0308d676a2c2
+[`e66117d`]: https://github.com/browserify/resolve/commit/e66117df49d9f967b46fde633770307c9d5a7066
+[`5bfb072`]: https://github.com/browserify/resolve/commit/5bfb072f152c77c8247f4c06c1efa9246bbdddb0
+
+#### [v1.4.0](https://github.com/browserify/resolve/compare/v1.3.3...v1.4.0) - 26 July 2017
+
+- [New]: add `preserveSymlinks` option ([`#130`][])
+- [Fix] `sync`: fix when package.json main = ‘.’ or main = ‘./‘ ([`#125`][])
+- [Tests] up to `node` `v8.2`, `v7.10`, `v6.11`; npm 4.6+ breaks on node < 4	(([`41a3604`][])
+- [Tests] fix 0.6 and linting	(([`703517b`][])
+- Only apps should have lockfiles	(([`11fb3d8`][])
+- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape`	(([`bc2f7bf`][])
+
+[`41a3604`]: https://github.com/browserify/resolve/commit/41a3604f6408dbe9693febf895251db924c87a8f
+[`703517b`]: https://github.com/browserify/resolve/commit/703517b78e7e0f8093a79c0a7a413a708ac82d06
+[`11fb3d8`]: https://github.com/browserify/resolve/commit/11fb3d85bb107a24476bd8d764ba25b3c60c184a
+[`bc2f7bf`]: https://github.com/browserify/resolve/commit/bc2f7bf29d172fa54d66cf909fb47a858f7765aa
+
+#### [v1.3.3](https://github.com/browserify/resolve/compare/v1.3.2...v1.3.3) - 20 April 2017
+
+- [Fix] error code MODULE_NOT_FOUND instead of ENOTDIR ([`#121`][])
+- [Tests] [eslint] add `npm run lint`	(([`3677928`][])
+- [Tests] up to `node` `v7.7`, `v6.10`, `v4.8`; comment out OSX builds since they block linux builds.	(([`1d3883c`][])
+- [Fix] correctly resolve dir paths when file with the same name exists	(([`a983d38`][])
+- [Tests] up to `node` `v7.9`	(([`0da055c`][])
+- [Tests] improve failure scenarios.	(([`1de578f`][])
+- [Fix] `sync`: ensure that the path is a string, explicitly.	(([`b7ba83d`][])
+- [Dev Deps] update `eslint`	(([`452fdf9`][])
+- [Tests] node 0.6 can’t support an npm that understands scoped packages	(([`26369cf`][])
+
+[`3677928`]: https://github.com/browserify/resolve/commit/36779282881ec4abce32b2c9b7f7b10bcd09d953
+[`1d3883c`]: https://github.com/browserify/resolve/commit/1d3883c40d55242d7dfeafa43fa782dc6f4ab4a6
+[`a983d38`]: https://github.com/browserify/resolve/commit/a983d38c47ea26e57e0824f22929985ecb24faca
+[`0da055c`]: https://github.com/browserify/resolve/commit/0da055cc75bebd7e0044cd4184e7c5386a7bd7de
+[`1de578f`]: https://github.com/browserify/resolve/commit/1de578f2879f83ba94789041420fd3d3b929127e
+[`b7ba83d`]: https://github.com/browserify/resolve/commit/b7ba83d43519c3c77af823ef1badd7f452d8b8e3
+[`452fdf9`]: https://github.com/browserify/resolve/commit/452fdf981330f96d7fef88805b24e40ea24a89e1
+[`26369cf`]: https://github.com/browserify/resolve/commit/26369cfe6ce4eae7404f3c003c88618f098d6814
+
+#### [v1.3.2](https://github.com/browserify/resolve/compare/v1.2.1...v1.3.2) - 26 February 2017
+
+- Fix prepublish script.	(([`1aa1d9d`][])
+
+[`1aa1d9d`]: https://github.com/browserify/resolve/commit/1aa1d9d9adc60691431efbde8d915c143cd54916
+
+#### [v1.3.1](https://github.com/browserify/resolve/compare/v1.3.0...v1.3.1) - 24 February 2017
+
+- Revert "[New] add searched extensions to error messages"	(([`68a081d`][])
+
+[`68a081d`]: https://github.com/browserify/resolve/commit/68a081d1c7ff6e0fb58aeff4b6ac06aada7812c4
+
+#### [v1.3.0](https://github.com/browserify/resolve/compare/v1.2.0...v1.3.0) - 24 February 2017
+
+#### [v1.2.1](https://github.com/browserify/resolve/compare/v1.3.1...v1.2.1) - 26 February 2017
+
+- [Fix] for browserify compat, do not assume `process.versions.node` exists. ([`#120`][])
+- [Fix] for browserify compat, do not assume `process.versions.node` exists. ([`#120`][])
+
+#### [v1.2.0](https://github.com/browserify/resolve/compare/v1.1.7...v1.2.0) - 13 December 2016
+
+- [Fix] `resolve.sync` should re-throw non `ENOENT errors. ([`#79`][])
+- [New] add missing core modules, and determine them dynamically by node version. ([`#100`][][`#110`][][`#111`][][`#112`][])
+- [Tests] test on every minor version of node. ([`#109`][][`#75`][][`#74`][][`#70`][])
+- code style: tabs → spaces	(([`0ab33b2`][])
+- [Dev Deps] add `safe-publish-latest`	(([`83c25dd`][])
+- [Fix] Create error outside process.nextTick	(([`3fa5f02`][])
+- readme: update API docs link for require.resolve()	(([`7e98547`][])
+- [Dev Deps] update `tape`	(([`764f3a2`][])
+- gitignore node_modules	(([`3e8a8da`][])
+
+[`0ab33b2`]: https://github.com/browserify/resolve/commit/0ab33b29b814e030021ff2df391e60a1c52dcc46
+[`83c25dd`]: https://github.com/browserify/resolve/commit/83c25dde8aa5a663bc3863d946fdc62fab5fd080
+[`3fa5f02`]: https://github.com/browserify/resolve/commit/3fa5f02f2ace0683fbd42196619c4e2bbd9eef60
+[`7e98547`]: https://github.com/browserify/resolve/commit/7e98547319f1dada4f26d7a24f3b92a08f85c56b
+[`764f3a2`]: https://github.com/browserify/resolve/commit/764f3a231c26c370c4e6b94f0bb10166c20551b7
+[`3e8a8da`]: https://github.com/browserify/resolve/commit/3e8a8da3c9d545e00e15f5bed24623eb134b2221
+
+#### [v1.1.7](https://github.com/browserify/resolve/compare/v1.1.6...v1.1.7) - 24 January 2016
+
+- (typo) Change againt to against ([`#83`][])
+- Fix node_modules paths on Windows	(([`35b2b64`][])
+
+[`#83`]: https://github.com/browserify/resolve/pull/83
+[`35b2b64`]: https://github.com/browserify/resolve/commit/35b2b642d91e9b81e7cc26b6fd19912e18901d55
+
+#### [v1.1.6](https://github.com/browserify/resolve/compare/v1.1.5...v1.1.6) - 15 March 2015
+
+- Use path.dirname to walk up looking for a package.json ([`#76`][])
+- add back pkg assertions to pick up the root package	(([`4c25e45`][])
+
+[`4c25e45`]: https://github.com/browserify/resolve/commit/4c25e45625fea7980463fc107fc843aab7e0d993
+
+#### [v1.1.5](https://github.com/browserify/resolve/compare/v1.1.4...v1.1.5) - 21 February 2015
+
+- another test, not quite the failing case	(([`612cac2`][])
+- fix for the failing case	(([`503c746`][])
+
+[`612cac2`]: https://github.com/browserify/resolve/commit/612cac2beac41fb13b7b12a9dfdb4207391260c1
+[`503c746`]: https://github.com/browserify/resolve/commit/503c746a6e64d50f2c9b18b4476ffcfed49947f2
+
+#### [v1.1.4](https://github.com/browserify/resolve/compare/v1.1.3...v1.1.4) - 20 February 2015
+
+- finally seems to fully handle browser field from outside foo/bar resolution	(([`5b737d5`][])
+- flatter nodeModules function	(([`5ebb39a`][])
+
+[`5b737d5`]: https://github.com/browserify/resolve/commit/5b737d58b38ce891ef3f06d600d0562dbbc8539c
+[`5ebb39a`]: https://github.com/browserify/resolve/commit/5ebb39a19b62c052ff6201600c3d2fffb3f5fdcb
+
+#### [v1.1.3](https://github.com/browserify/resolve/compare/v1.1.2...v1.1.3) - 17 February 2015
+
+- re-implemented pathfilter feature nearly passes the test	(([`60ff554`][])
+- another precedence test	(([`98d22e0`][])
+- move pathfilter test to its own file	(([`90826f5`][])
+- path logic fix that seems to handle all the cases across this package and browserify	(([`70146a5`][])
+- tape everywhere	(([`47bbfcd`][])
+- move pathfilter files into their own dir	(([`7f0a3f1`][])
+- failing precedence test	(([`73e958e`][])
+- nearly nearly working	(([`e7bffbf`][])
+- packageFilter should have been giving the pkgfile as an argument, fixed	(([`70b71e7`][])
+- this fixes the directory precedence problem	(([`caca9f9`][])
+- disable faulty basedir test except on windows for now	(([`3be4b79`][])
+- passes pathfilter test	(([`644f814`][])
+- fix node_path test, was clearly wrong for some reason	(([`9aa36e7`][])
+
+[`60ff554`]: https://github.com/browserify/resolve/commit/60ff5545ec3cd15367c89c08cf3f139fa9c23796
+[`98d22e0`]: https://github.com/browserify/resolve/commit/98d22e0e21dd57fe1ab8d9573c1f63903c2b7321
+[`90826f5`]: https://github.com/browserify/resolve/commit/90826f575fe37cb3852de17e764b62e3754484b2
+[`70146a5`]: https://github.com/browserify/resolve/commit/70146a5ebc4d96438383ada02785d4e722c6f5d9
+[`47bbfcd`]: https://github.com/browserify/resolve/commit/47bbfcd9d9c8a68ce97fa37e0563930cee67093d
+[`7f0a3f1`]: https://github.com/browserify/resolve/commit/7f0a3f1545f4b53f1bdd099b67561f9516693325
+[`73e958e`]: https://github.com/browserify/resolve/commit/73e958e905eed000787f0596f81c212ca2cdb3b3
+[`e7bffbf`]: https://github.com/browserify/resolve/commit/e7bffbf1b39b6239732c0e7fb01eeb9dad605d15
+[`70b71e7`]: https://github.com/browserify/resolve/commit/70b71e7980b3235018a0f5ac0bd52b8393548beb
+[`caca9f9`]: https://github.com/browserify/resolve/commit/caca9f9c3576c85d8972d25012ea5d12aeaa50f4
+[`3be4b79`]: https://github.com/browserify/resolve/commit/3be4b796f1a9aadfb293b36c0c7f781ca9169f09
+[`644f814`]: https://github.com/browserify/resolve/commit/644f81478c892874f9829aa6cca36ca72474db00
+[`9aa36e7`]: https://github.com/browserify/resolve/commit/9aa36e77eca50e177498984fdef5d564903d3964
+
+#### [v1.1.2](https://github.com/browserify/resolve/compare/v1.1.0...v1.1.2) - 16 February 2015
+
+- Adding pathFilter docs ([`#67`][])
+- adding pathFilter docs	(([`44480ff`][])
+
+[`#67`]: https://github.com/browserify/resolve/pull/67
+[`44480ff`]: https://github.com/browserify/resolve/commit/44480ff041f791f32b80d212302180be210901a1
+
+#### [v1.1.0](https://github.com/browserify/resolve/compare/v1.0.0...v1.1.0) - 27 January 2015
+
+- Update docs re: input and cb args. ([`#65`][])
+- Update main README--change word order for clarity ([`#55`][])
+- attempts to find package.json data for deep references https://github.com/substack/node-resolve/issues/62	(([`caff2ba`][])
+- formatting	(([`b8d09e3`][])
+- Add failing test for parent filename in error msg.	(([`96d38c6`][])
+- split before computing the pivot to prevent abcnode_modulesxyz from matching	(([`10380e1`][])
+- Utilize opts.filename when available to ID parent.	(([`f6edcd9`][])
+
+[`#65`]: https://github.com/browserify/resolve/pull/65
+[`#55`]: https://github.com/browserify/resolve/pull/55
+[`caff2ba`]: https://github.com/browserify/resolve/commit/caff2ba60dc5d85eaded388dc6025afd05ba183b
+[`b8d09e3`]: https://github.com/browserify/resolve/commit/b8d09e3a2d679f6b61515d49eca3f6d8d0d2ac7f
+[`96d38c6`]: https://github.com/browserify/resolve/commit/96d38c6aaa575d12781c28b34243b4939359a335
+[`10380e1`]: https://github.com/browserify/resolve/commit/10380e16d3cf03f25941c3f1545ef73ed11bc1e1
+[`f6edcd9`]: https://github.com/browserify/resolve/commit/f6edcd95ad5d27bfbdee0fa51951aa3d45d77cba
+
+### [v1.0.0](https://github.com/browserify/resolve/compare/v0.7.4...v1.0.0) - 11 August 2014
+
+- reformat package.json	(([`695bbc1`][])
+
+[`695bbc1`]: https://github.com/browserify/resolve/commit/695bbc1d9eeb35339b4a01e141c6f6e1dff3a6e3
+
+#### [v0.7.4](https://github.com/browserify/resolve/compare/v0.7.3...v0.7.4) - 25 July 2014
+
+- merged	(([`5cae82f`][])
+
+[`5cae82f`]: https://github.com/browserify/resolve/commit/5cae82fb22cb64d5b72f703c787dc0fd418ed412
+
+#### [v0.7.3](https://github.com/browserify/resolve/compare/v0.7.2...v0.7.3) - 25 July 2014
+
+- cb(err) for non-string args	(([`965c70b`][])
+
+[`965c70b`]: https://github.com/browserify/resolve/commit/965c70b27ff796fc0ac3dba186d95b61d82446df
+
+#### [v0.7.2](https://github.com/browserify/resolve/compare/v0.7.1...v0.7.2) - 25 July 2014
+
+- failing dotdot test	(([`3ee0f0e`][])
+- fixes for dotdot tests	(([`a67f230`][])
+- failing sync dotdot test	(([`55515e7`][])
+
+[`3ee0f0e`]: https://github.com/browserify/resolve/commit/3ee0f0eb97971d246a4a3f183374f60938f1ca8a
+[`a67f230`]: https://github.com/browserify/resolve/commit/a67f230133050568ca14a04c0d36aaf6bf14fa89
+[`55515e7`]: https://github.com/browserify/resolve/commit/55515e7f816571fb9d71fdd6d0f012185b2eeefb
+
+#### [v0.7.1](https://github.com/browserify/resolve/compare/v0.7.0...v0.7.1) - 9 June 2014
+
+- [Fix] `node-modules-paths`: `opts` should be optional, and `opts.paths` should not be concatenated when omitted. ([`#96`][])
+- [Refactor] consistent spacing and quotes; run some basic linting manually.	(([`f63faaf`][])
+- [Tests] use `path.join` more often to normalize paths across OS’s.	(([`8280c53`][])
+- [Tests] use `path` methods to make tests pass on both linux and Windows.	(([`af9a885`][])
+- [Tests] make matrix more efficient	(([`7f0ce87`][])
+- [Tests] fix indentation, manual linting.	(([`6984dcb`][])
+- [Tests] [Refactor] refactor `node-modules-paths` and add tests.	(([`58b99a3`][])
+- [Tests] add `appveyor`	(([`caffe35`][])
+- [new] Add err.code = 'MODULE_NOT_FOUND'	(([`c622aef`][])
+- [New] add searched extensions to error messages	(([`1260d9d`][])
+- node-modules-paths: absolutize the `start` path	(([`9d6b7af`][])
+- [Refactor] `async`: remove unnecessary slashes, since `path.join` adds them.	(([`dd50615`][])
+- [Tests] ensure node_path test is independent of the `tap` module’s “main”	(([`ddca9ed`][])
+
+[`f63faaf`]: https://github.com/browserify/resolve/commit/f63faaf9df5dbd8da388c674de0b14e3286e5e91
+[`8280c53`]: https://github.com/browserify/resolve/commit/8280c53eae6b612f586e133052ed2b2a56ae6649
+[`af9a885`]: https://github.com/browserify/resolve/commit/af9a8858a618ab64dd4bb311ef1be37822ade2b7
+[`7f0ce87`]: https://github.com/browserify/resolve/commit/7f0ce871b6d2b5cb2082b04cd72ddd4055cb7a05
+[`6984dcb`]: https://github.com/browserify/resolve/commit/6984dcb1407fec6af46f744ad2c63f502645bdd6
+[`58b99a3`]: https://github.com/browserify/resolve/commit/58b99a36f882d7ee65df725224f204abd27379db
+[`caffe35`]: https://github.com/browserify/resolve/commit/caffe358566bb3c2f9b4cbd8c0f910debfb6df3b
+[`c622aef`]: https://github.com/browserify/resolve/commit/c622aefeb286e479d536601e30bb828e69f86ec3
+[`1260d9d`]: https://github.com/browserify/resolve/commit/1260d9d1e2f55efb514540db9aa1b3d679f9db10
+[`9d6b7af`]: https://github.com/browserify/resolve/commit/9d6b7af28c054676d6ea8a5037353ed750ea13bb
+[`dd50615`]: https://github.com/browserify/resolve/commit/dd506158089f7d071d2a9f61cd4385365d177219
+[`ddca9ed`]: https://github.com/browserify/resolve/commit/ddca9ed7e1d980d5ec561450875cb09463effd5a
+
+#### [v0.7.0](https://github.com/browserify/resolve/compare/v0.6.3...v0.7.0) - 17 May 2014
+
+- array opts.moduleDirectory tests	(([`0f6d088`][])
+- opts.moduleDirectory string tests	(([`a15ffd6`][])
+- Support more than one directory in opts.moduleDirectory.	(([`4183463`][])
+- formatting	(([`b89f089`][])
+- Remove variable leftover from 325584a685	(([`12fa78c`][])
+
+[`0f6d088`]: https://github.com/browserify/resolve/commit/0f6d08801db6bc2044df8767226421172a2d9461
+[`a15ffd6`]: https://github.com/browserify/resolve/commit/a15ffd6c20772831c41146189c117ab0a0650e0b
+[`4183463`]: https://github.com/browserify/resolve/commit/41834633e84d76d86297968ba34c375f26fe4f08
+[`b89f089`]: https://github.com/browserify/resolve/commit/b89f08902e8551e07d66e81a3dc33840e24266c5
+[`12fa78c`]: https://github.com/browserify/resolve/commit/12fa78ce43c4363e1c9600b635d18cd295c6949f
+
+#### [v0.6.3](https://github.com/browserify/resolve/compare/v0.6.2...v0.6.3) - 16 April 2014
+
+- Fixed the case when main is specified as "." or "./" causing the resolve to infinite loop as documented at https://github.com/substack/node-browserify/issues/732.	(([`b11f273`][])
+
+[`b11f273`]: https://github.com/browserify/resolve/commit/b11f2739ad8c9730e1076271eff54850755e2ee1
+
+#### [v0.6.2](https://github.com/browserify/resolve/compare/v0.6.1...v0.6.2) - 21 March 2014
+
+- passing tests for paths	(([`4f56bb6`][])
+- faulty basedir does not always produce error properly in windows, because when the dirs are sliced down the final path has improper prefix, causing it to load relative to cwd	(([`110168a`][])
+
+[`4f56bb6`]: https://github.com/browserify/resolve/commit/4f56bb67fa45d35adfa6a0022cc77afbf8117234
+[`110168a`]: https://github.com/browserify/resolve/commit/110168adae1dfbedcb9a12086cacf0ce68cc67f6
+
+#### [v0.6.1](https://github.com/browserify/resolve/compare/v0.6.0...v0.6.1) - 27 November 2013
+
+- merged the context error patches	(([`8408e6e`][])
+
+[`8408e6e`]: https://github.com/browserify/resolve/commit/8408e6e8902b4bec8c859d606f53366e42058378
+
+#### [v0.6.0](https://github.com/browserify/resolve/compare/v0.5.1...v0.6.0) - 26 November 2013
+
+- fixes #25: resolve modules with the same name as node stdlib modules ([`#25`][])
+
+#### [v0.5.1](https://github.com/browserify/resolve/compare/v0.5.0...v0.5.1) - 22 September 2013
+
+- Separate duplicated nodeModulesPaths function	(([`325584a`][])
+- Fix prefix for windows azure	(([`b5ba043`][])
+
+[`325584a`]: https://github.com/browserify/resolve/commit/325584a685db8f42aae3d4876ffbe64069233601
+[`b5ba043`]: https://github.com/browserify/resolve/commit/b5ba0430b012d93367a4f87c304f1d4c8c22941c
+
+#### [v0.5.0](https://github.com/browserify/resolve/compare/v0.4.3...v0.5.0) - 2 September 2013
+
+- opts.modules => opts.moduleDirectory, documented	(([`c46593d`][])
+- modules folder name is configurable	(([`d65a422`][])
+
+[`c46593d`]: https://github.com/browserify/resolve/commit/c46593de74b256196d7ea12c85422698652cff10
+[`d65a422`]: https://github.com/browserify/resolve/commit/d65a42238101ea284ddafb788debdad0e5a59504
+
+#### [v0.4.3](https://github.com/browserify/resolve/compare/v0.4.2...v0.4.3) - 7 August 2013
+
+- Fix default basedir calculation	(([`cd7169b`][])
+- use getCaller() in both async and sync versions	(([`20f8945`][])
+
+[`cd7169b`]: https://github.com/browserify/resolve/commit/cd7169b204b9f474b6a924adf47564f33a469f07
+[`20f8945`]: https://github.com/browserify/resolve/commit/20f89456f7fc1d8e51b95ec1ab38b1ac154d9fc4
+
+#### [v0.4.2](https://github.com/browserify/resolve/compare/v0.4.1...v0.4.2) - 3 August 2013
+
+- Failing test case for pkg.main pointing to a directory.	(([`b57a75a`][])
+- Fix for failing test case where pkg.main points to directory.	(([`8c4078c`][])
+
+[`b57a75a`]: https://github.com/browserify/resolve/commit/b57a75aefc394ead20d54ed107741f1f7151b90f
+[`8c4078c`]: https://github.com/browserify/resolve/commit/8c4078c9dd45c6a92f1f409d70aaccc95be3bfc6
+
+#### [v0.4.1](https://github.com/browserify/resolve/compare/v0.4.0...v0.4.1) - 30 July 2013
+
+- adding tests to reproduce the problem	(([`ad3a477`][])
+- async resolve now falls back to 'index.js' if main field in package.json is incorrect	(([`62a5726`][])
+
+[`ad3a477`]: https://github.com/browserify/resolve/commit/ad3a4772ddd7187ff38cb56e00635b37a491e1fa
+[`62a5726`]: https://github.com/browserify/resolve/commit/62a572635f21bf1c28360ea5c2238be62736429b
+
+#### [v0.4.0](https://github.com/browserify/resolve/compare/v0.3.1...v0.4.0) - 9 June 2013
+
+- Implement async support for returning package a module was resolved from.	(([`b7b2806`][])
+- Document package option.	(([`7f84028`][])
+
+[`b7b2806`]: https://github.com/browserify/resolve/commit/b7b28069acb7c749a2053dbb0c8d606515954694
+[`7f84028`]: https://github.com/browserify/resolve/commit/7f8402881b725938cfaf1d4835ec2fb6cee4862d
+
+#### [v0.3.1](https://github.com/browserify/resolve/compare/v0.3.0...v0.3.1) - 29 March 2013
+
+- use isFIFO() instead to more narrowly target <() usage	(([`790cdf5`][])
+- check !isDirectory() instead of isFile() so that <(echo "beep") inline bash fds work	(([`c396065`][])
+
+[`790cdf5`]: https://github.com/browserify/resolve/commit/790cdf5ab7c92bb146e8ace05ba0b26c5f51ffb3
+[`c396065`]: https://github.com/browserify/resolve/commit/c3960650f1a1417e52238011e08a6da2b0d9fee4
+
+#### [v0.3.0](https://github.com/browserify/resolve/compare/v0.2.8...v0.3.0) - 19 February 2013
+
+- failing translated async test with parameterized readFile on account of 3-arg form	(([`7033bbb`][])
+- factor out .sync into lib/sync.js	(([`ba7038a`][])
+- updated the docs for async	(([`34a958e`][])
+- first async test passes	(([`e427ca8`][])
+- sync parity with async tests	(([`d1191a9`][])
+- stub out async	(([`f4b02e3`][])
+- factor out core into lib/	(([`a800954`][])
+- synchronous example	(([`3534992`][])
+- adapted async test	(([`c9111d2`][])
+- async example	(([`e1a9809`][])
+- fix for async parameterized readFile	(([`2d4e80e`][])
+- drop 0.4, add 0.8 in travis	(([`8a1ba59`][])
+
+[`7033bbb`]: https://github.com/browserify/resolve/commit/7033bbb6e21ecfd13476ca8de247580aa2f97e7c
+[`ba7038a`]: https://github.com/browserify/resolve/commit/ba7038a56d78212329b64287dfaf895b1a85cf2c
+[`34a958e`]: https://github.com/browserify/resolve/commit/34a958e84b7fc4cdccd7b71f9a116027a6f3a123
+[`e427ca8`]: https://github.com/browserify/resolve/commit/e427ca85b7e3b1d01b05f94783b76516b8594a03
+[`d1191a9`]: https://github.com/browserify/resolve/commit/d1191a9958581a040f4f18b3aecdd50714bffc7a
+[`f4b02e3`]: https://github.com/browserify/resolve/commit/f4b02e3bbf0c3b09f83cfb2b22b12b0f55afdf92
+[`a800954`]: https://github.com/browserify/resolve/commit/a80095482ef2d16425e6e12759c9735d89f7f50b
+[`3534992`]: https://github.com/browserify/resolve/commit/3534992946294811d20aaf9857ee453078cbe828
+[`c9111d2`]: https://github.com/browserify/resolve/commit/c9111d293ab35fb611d9c65ea2f88ae8cf853f8e
+[`e1a9809`]: https://github.com/browserify/resolve/commit/e1a98093094cded0a251ef36f4f2eb0adb280acb
+[`2d4e80e`]: https://github.com/browserify/resolve/commit/2d4e80e139d01176bf70132bc80caed946cd6682
+[`8a1ba59`]: https://github.com/browserify/resolve/commit/8a1ba593ab924995a45099e164cc7b769c44e9a0
+
+#### [v0.2.8](https://github.com/browserify/resolve/compare/v0.2.7...v0.2.8) - 18 February 2013
+
+- add the domain module to .core	(([`2979cde`][])
+
+[`2979cde`]: https://github.com/browserify/resolve/commit/2979cdea615fe724de62d88cb221c1d1824d0f10
+
+#### [v0.2.7](https://github.com/browserify/resolve/compare/v0.2.6...v0.2.7) - 18 February 2013
+
+#### [v0.2.6](https://github.com/browserify/resolve/compare/v0.2.5...v0.2.6) - 18 February 2013
+
+#### [v0.2.5](https://github.com/browserify/resolve/compare/v0.2.4...v0.2.5) - 18 February 2013
+
+#### [v0.2.4](https://github.com/browserify/resolve/compare/v0.2.3...v0.2.4) - 18 February 2013
+
+- resolve '../baz' correct	(([`46fe923`][])
+
+[`46fe923`]: https://github.com/browserify/resolve/commit/46fe923c20feeceac783e67cfa84d07222bc17fa
+
+#### [v0.2.3](https://github.com/browserify/resolve/compare/v0.2.2...v0.2.3) - 12 August 2012
+
+- license file	(([`a964396`][])
+- existsSync	(([`d1c1012`][])
+- pass dir to packageFilter	(([`3bea5b6`][])
+- pkg.main may be a directory	(([`3521c2f`][])
+- Prioritize parent tree in nodeModulesPathsSync before fallback options.paths/ NODE_PATH equivalent, in accordance with http://nodejs.org/docs/latest/api/all.html#all_loading_from_the_global_folders	(([`27fa227`][])
+
+[`a964396`]: https://github.com/browserify/resolve/commit/a9643965438eb4fcb068a5876b317f516199879a
+[`d1c1012`]: https://github.com/browserify/resolve/commit/d1c1012f14c50212ea49a9a1255c902f5ad6cb37
+[`3bea5b6`]: https://github.com/browserify/resolve/commit/3bea5b6475b39e7f4974d29c6fa1e8eb8b1589af
+[`3521c2f`]: https://github.com/browserify/resolve/commit/3521c2f2b93234e5a50dc47598554a76589d6d8c
+[`27fa227`]: https://github.com/browserify/resolve/commit/27fa22707e87738ddde61cb4ad90508cfe0d7755
+
+#### [v0.2.2](https://github.com/browserify/resolve/compare/v0.2.1...v0.2.2) - 30 April 2012
+
+- fix indentation	(([`98fc4a5`][])
+- Updated to work with windows, tested on Windows 7 64-bit and OS X 10.6	(([`a6646cc`][])
+- bump for windows fixes	(([`d67d595`][])
+
+[`98fc4a5`]: https://github.com/browserify/resolve/commit/98fc4a50b68456d497a862b9c4e4e0a79570c770
+[`a6646cc`]: https://github.com/browserify/resolve/commit/a6646ccceb1a6c411d5b9dfdc97106c80d8a0a09
+[`d67d595`]: https://github.com/browserify/resolve/commit/d67d5959e1be31eb67d5b62e7050bff318572373
+
+#### [v0.2.1](https://github.com/browserify/resolve/compare/v0.2.0...v0.2.1) - 12 April 2012
+
+- now using tap	(([`b625169`][])
+- using travis	(([`30cc7b3`][])
+- split on multiple slashes	(([`ebeafab`][])
+- fix splitting of paths to support windows as well	(([`5e7e24b`][])
+
+[`b625169`]: https://github.com/browserify/resolve/commit/b62516922eaaafe533806cd385017109ea057baa
+[`30cc7b3`]: https://github.com/browserify/resolve/commit/30cc7b3af9299a0e08f34c314015a1395ef16ea3
+[`ebeafab`]: https://github.com/browserify/resolve/commit/ebeafab4a43c6ac4df7a8a7ee578629f81b7b9e7
+[`5e7e24b`]: https://github.com/browserify/resolve/commit/5e7e24bf11c48f14385886d7dd3661f786cc109b
+
+#### [v0.2.0](https://github.com/browserify/resolve/compare/v0.1.3...v0.2.0) - 25 February 2012
+
+- updated the core list for 0.6.11	(([`12d4c16`][])
+
+[`12d4c16`]: https://github.com/browserify/resolve/commit/12d4c164ef99bd35c13b0f566feaa70bc3560082
+
+#### [v0.1.3](https://github.com/browserify/resolve/compare/v0.1.2...v0.1.3) - 14 December 2011
+
+- bump	(([`2dffd07`][])
+- Added readline to core modules 	(([`4ab55a2`][])
+
+[`2dffd07`]: https://github.com/browserify/resolve/commit/2dffd072ce65b4aae4974e934ca5b58ec741f598
+[`4ab55a2`]: https://github.com/browserify/resolve/commit/4ab55a2d4eb95be2399fe94fd5d33879271b5a9f
+
+#### [v0.1.2](https://github.com/browserify/resolve/compare/v0.1.1...v0.1.2) - 31 October 2011
+
+- Add opts.paths to list of node_modules directories	(([`7bb6ef4`][])
+- bump	(([`5e3fcc6`][])
+
+[`7bb6ef4`]: https://github.com/browserify/resolve/commit/7bb6ef4a1805523169f30b6ea38776796a714c3a
+[`5e3fcc6`]: https://github.com/browserify/resolve/commit/5e3fcc63cfec322779be5435820d3236e6d13dba
+
+#### [v0.1.1](https://github.com/browserify/resolve/compare/v0.1.0...v0.1.1) - 18 October 2011
+
+- bump for windows paths	(([`3fb86d0`][])
+- Added support for Windows-style paths.	(([`638951e`][])
+
+[`3fb86d0`]: https://github.com/browserify/resolve/commit/3fb86d07c77b09a7d6fa6d2a8b89432a070a6aa0
+[`638951e`]: https://github.com/browserify/resolve/commit/638951ed92fa4435d9752df30c3bcb9eb49573cd
+
+#### [v0.1.0](https://github.com/browserify/resolve/compare/v0.0.4...v0.1.0) - 3 October 2011
+
+- passing mock test	(([`030f0d3`][])
+- passing mock test with package.json	(([`d2b19c8`][])
+- isFile and readFileSync as parameters	(([`d30c22d`][])
+- doc updates and a minor bump for custom isFile and readFileSync params	(([`b0af4c3`][])
+
+[`030f0d3`]: https://github.com/browserify/resolve/commit/030f0d391e02558574bc673077fb1b4057f8358d
+[`d2b19c8`]: https://github.com/browserify/resolve/commit/d2b19c893b7f8c63154c5b5ff2c419ffdc8baa0c
+[`d30c22d`]: https://github.com/browserify/resolve/commit/d30c22d1e13b000016f2592d6d6f3489a2d29988
+[`b0af4c3`]: https://github.com/browserify/resolve/commit/b0af4c3ac1a51acf9995cb4e078bf5619f257952
+
+#### [v0.0.4](https://github.com/browserify/resolve/compare/v0.0.3...v0.0.4) - 21 June 2011
+
+- bump for packageFilter and a note in the docs	(([`9fbb632`][])
+- new packageFilter option	(([`c92c883`][])
+
+[`9fbb632`]: https://github.com/browserify/resolve/commit/9fbb632a5c0c38641ed7c10399306a56651e0789
+[`c92c883`]: https://github.com/browserify/resolve/commit/c92c883bed3e50dd8ed9a2e1d4b9fefc9f3ced64
+
+#### [v0.0.3](https://github.com/browserify/resolve/compare/v0.0.2...v0.0.3) - 20 June 2011
+
+- custom extensions now work	(([`502b6e9`][])
+- failing test for extensions	(([`ce56f56`][])
+- bump and a note in the docs for extensions	(([`2ad8287`][])
+- passing normalize test	(([`055c7ce`][])
+
+[`502b6e9`]: https://github.com/browserify/resolve/commit/502b6e9c8b9f258e5c943954467016e9c048fa0f
+[`ce56f56`]: https://github.com/browserify/resolve/commit/ce56f56b4e1a5c1df495a7bf061fb0242103b4d8
+[`2ad8287`]: https://github.com/browserify/resolve/commit/2ad8287bc8b34929c2074a739410d08955ccdea7
+[`055c7ce`]: https://github.com/browserify/resolve/commit/055c7cea391ff0ce9cd8c585e8244f553b62f6e7
+
+#### [v0.0.2](https://github.com/browserify/resolve/compare/v0.0.1...v0.0.2) - 19 June 2011
+
+- failing biz test for going up and down the path directory	(([`cf4f5a5`][])
+- don't stop on the first node_modules since that's going away in node anyhow, all tests pass again	(([`9049abf`][])
+
+[`cf4f5a5`]: https://github.com/browserify/resolve/commit/cf4f5a58d092124c517c55dd180559f5a444eb06
+[`9049abf`]: https://github.com/browserify/resolve/commit/9049abfb60cac49bb547b8ca02cc2617d406ff1a
+
+#### v0.0.1
+
+- implementation seems to work but no tests yet	(([`5218f01`][])
+- a package.json all up in this	(([`4084043`][])
+- new resolve.{core,isCore} with tests and documentation, bump to 0.0.1	(([`a9ef081`][])
+- failing foo test	(([`463b108`][])
+- readme before any code	(([`7885443`][])
+- opts.path => opts.basedir, more descriptive I think	(([`78010b1`][])
+- failing bar test	(([`c40c5c1`][])
+- passing baz test to check package.json resolution	(([`410635e`][])
+- a path.resolve() fixed the relative loads	(([`dfef4b6`][])
+- passing the bar test after taking out the dirname() around y	(([`eda2247`][])
+- trailing comma in the package.json	(([`2032753`][])
+
+[`5218f01`]: https://github.com/browserify/resolve/commit/5218f0106e78edce4cfb905d0ea4492ed3fd38af
+[`4084043`]: https://github.com/browserify/resolve/commit/40840435a621120db78126c1792df7fdd0570703
+[`a9ef081`]: https://github.com/browserify/resolve/commit/a9ef081a4897e9882bf6bc6b31457c53b8d0fc0d
+[`463b108`]: https://github.com/browserify/resolve/commit/463b108dd6e750196cba150348bd68397522c908
+[`7885443`]: https://github.com/browserify/resolve/commit/7885443d8a3dba7223b1bfca2d62cafc08a46436
+[`78010b1`]: https://github.com/browserify/resolve/commit/78010b1f91251447d1e74c6ac9cd0baebc6ddf60
+[`c40c5c1`]: https://github.com/browserify/resolve/commit/c40c5c14038acbe8bec91cf979d12382c2e6ddfe
+[`410635e`]: https://github.com/browserify/resolve/commit/410635ef6226c030f74c4475e73724a01a102896
+[`dfef4b6`]: https://github.com/browserify/resolve/commit/dfef4b6185d02259c119a10c8a938e1ab148b140
+[`eda2247`]: https://github.com/browserify/resolve/commit/eda22479bd47c5d0b2e8a88851d9ffabbea2329c
+[`2032753`]: https://github.com/browserify/resolve/commit/20327532053284676a269ec2441a87f16456fbf3
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/LICENSE b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/LICENSE
new file mode 100644
index 00000000000000..ee27ba4b4412b0
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/LICENSE
@@ -0,0 +1,18 @@
+This software is released under the MIT license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/appveyor.yml b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/appveyor.yml
new file mode 100644
index 00000000000000..cc73cc18f084b2
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/appveyor.yml
@@ -0,0 +1,47 @@
+version: 1.0.{build}
+skip_branch_with_pr: true
+build: off
+
+environment:
+  matrix:
+    - nodejs_version: "9"
+    - nodejs_version: "8"
+    - nodejs_version: "7"
+    - nodejs_version: "6"
+    - nodejs_version: "5"
+    - nodejs_version: "4"
+    - nodejs_version: "3"
+    - nodejs_version: "2"
+    - nodejs_version: "1"
+    - nodejs_version: "0.12"
+    - nodejs_version: "0.10"
+    - nodejs_version: "0.8"
+    - nodejs_version: "0.6"
+matrix:
+  # fast_finish: true
+  allow_failures:
+    - nodejs_version: "0.8"
+    - nodejs_version: "0.6"
+
+platform:
+  - x86
+  - x64
+
+# Install scripts. (runs after repo cloning)
+install:
+ # Get the latest stable version of Node.js or io.js
+ - ps: Install-Product node $env:nodejs_version $env:platform
+ - IF %nodejs_version% EQU 0.6 npm config set strict-ssl false && npm -g install npm@1.3
+ - IF %nodejs_version% EQU 0.8 npm config set strict-ssl false && npm -g install npm@1.4.28 && npm install -g npm@4.5
+ - set PATH=%APPDATA%\npm;%PATH%
+ #- IF %nodejs_version% NEQ 0.6 AND %nodejs_version% NEQ 0.8 npm -g install npm
+ # install modules
+ - npm install
+
+# Post-install test scripts.
+test_script:
+ # Output useful info for debugging.
+ - node --version
+ - npm --version
+ # run tests
+ - npm run tests-only
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/changelog.hbs b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/changelog.hbs
new file mode 100644
index 00000000000000..addd7816b3fdbd
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/changelog.hbs
@@ -0,0 +1,36 @@
+### Changelog
+
+All notable changes to this project will be documented in this file. Dates are displayed in UTC.
+{{#each releases}}
+
+  {{#if href}}
+    ###{{#unless major}}#{{/unless}} [{{title}}]({{href}}){{#if tag}} - {{niceDate}}{{/if}}
+  {{else}}
+    #### {{title}}
+  {{/if}}
+
+  {{#if summary}}
+    Summary:
+    {{summary}}
+  {{/if}}
+
+  {{#each fixes}}
+    - {{{commit.subject}}} ({{#each fixes}}{{#if href}}[`#{{id}}`][]{{/if}}{{/each}})
+  {{/each}}
+  {{#each merges}}
+    - {{{message}}}{{#if href}} ([`#{{id}}`][]){{/if}}
+  {{/each}}
+  {{#each commits}}
+    - {{#if breaking}}**Breaking change:** {{/if}}{{{subject}}}{{#if href}}	(([`{{shorthash}}`][]){{/if}}
+  {{/each}}
+
+  {{#each fixes}}
+{{#if href}}[`#{{id}}`]: {{href}}{{/if}}
+  {{/each}}
+  {{#each merges}}
+{{#if href}}[`#{{id}}`]: {{href}}{{/if}}
+  {{/each}}
+  {{#each commits}}
+{{#if href}}[`{{shorthash}}`]: {{href}}{{/if}}
+  {{/each}}
+{{/each}}
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/example/async.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/example/async.js
new file mode 100644
index 00000000000000..20e65dc281dbaa
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/example/async.js
@@ -0,0 +1,5 @@
+var resolve = require('../');
+resolve('tap', { basedir: __dirname }, function (err, res) {
+    if (err) console.error(err);
+    else console.log(res);
+});
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/example/sync.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/example/sync.js
new file mode 100644
index 00000000000000..54b2cc1004223d
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/example/sync.js
@@ -0,0 +1,3 @@
+var resolve = require('../');
+var res = resolve.sync('tap', { basedir: __dirname });
+console.log(res);
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/index.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/index.js
new file mode 100644
index 00000000000000..eb6ba89e6c210c
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/index.js
@@ -0,0 +1,8 @@
+var core = require('./lib/core');
+var async = require('./lib/async');
+async.core = core;
+async.isCore = function isCore(x) { return core[x]; };
+async.sync = require('./lib/sync');
+
+exports = async;
+module.exports = async;
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/async.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/async.js
new file mode 100644
index 00000000000000..54211cc66e2d2d
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/async.js
@@ -0,0 +1,229 @@
+var core = require('./core');
+var fs = require('fs');
+var path = require('path');
+var caller = require('./caller.js');
+var nodeModulesPaths = require('./node-modules-paths.js');
+var normalizeOptions = require('./normalize-options.js');
+
+var defaultIsFile = function isFile(file, cb) {
+    fs.stat(file, function (err, stat) {
+        if (!err) {
+            return cb(null, stat.isFile() || stat.isFIFO());
+        }
+        if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
+        return cb(err);
+    });
+};
+
+module.exports = function resolve(x, options, callback) {
+    var cb = callback;
+    var opts = options;
+    if (typeof options === 'function') {
+        cb = opts;
+        opts = {};
+    }
+    if (typeof x !== 'string') {
+        var err = new TypeError('Path must be a string.');
+        return process.nextTick(function () {
+            cb(err);
+        });
+    }
+
+    opts = normalizeOptions(x, opts);
+
+    var isFile = opts.isFile || defaultIsFile;
+    var readFile = opts.readFile || fs.readFile;
+
+    var extensions = opts.extensions || ['.js'];
+    var basedir = opts.basedir || path.dirname(caller());
+    var parent = opts.filename || basedir;
+
+    opts.paths = opts.paths || [];
+
+    // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory
+    var absoluteStart = path.resolve(basedir);
+
+    if (opts.preserveSymlinks === false) {
+        fs.realpath(absoluteStart, function (realPathErr, realStart) {
+            if (realPathErr && realPathErr.code !== 'ENOENT') cb(err);
+            else init(realPathErr ? absoluteStart : realStart);
+        });
+    } else {
+        init(absoluteStart);
+    }
+
+    var res;
+    function init(basedir) {
+        if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) {
+            res = path.resolve(basedir, x);
+            if (x === '..' || x.slice(-1) === '/') res += '/';
+            if ((/\/$/).test(x) && res === basedir) {
+                loadAsDirectory(res, opts.package, onfile);
+            } else loadAsFile(res, opts.package, onfile);
+        } else loadNodeModules(x, basedir, function (err, n, pkg) {
+            if (err) cb(err);
+            else if (n) cb(null, n, pkg);
+            else if (core[x]) return cb(null, x);
+            else {
+                var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'");
+                moduleError.code = 'MODULE_NOT_FOUND';
+                cb(moduleError);
+            }
+        });
+    }
+
+    function onfile(err, m, pkg) {
+        if (err) cb(err);
+        else if (m) cb(null, m, pkg);
+        else loadAsDirectory(res, function (err, d, pkg) {
+            if (err) cb(err);
+            else if (d) cb(null, d, pkg);
+            else {
+                var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'");
+                moduleError.code = 'MODULE_NOT_FOUND';
+                cb(moduleError);
+            }
+        });
+    }
+
+    function loadAsFile(x, thePackage, callback) {
+        var loadAsFilePackage = thePackage;
+        var cb = callback;
+        if (typeof loadAsFilePackage === 'function') {
+            cb = loadAsFilePackage;
+            loadAsFilePackage = undefined;
+        }
+
+        var exts = [''].concat(extensions);
+        load(exts, x, loadAsFilePackage);
+
+        function load(exts, x, loadPackage) {
+            if (exts.length === 0) return cb(null, undefined, loadPackage);
+            var file = x + exts[0];
+
+            var pkg = loadPackage;
+            if (pkg) onpkg(null, pkg);
+            else loadpkg(path.dirname(file), onpkg);
+
+            function onpkg(err, pkg_, dir) {
+                pkg = pkg_;
+                if (err) return cb(err);
+                if (dir && pkg && opts.pathFilter) {
+                    var rfile = path.relative(dir, file);
+                    var rel = rfile.slice(0, rfile.length - exts[0].length);
+                    var r = opts.pathFilter(pkg, x, rel);
+                    if (r) return load(
+                        [''].concat(extensions.slice()),
+                        path.resolve(dir, r),
+                        pkg
+                    );
+                }
+                isFile(file, onex);
+            }
+            function onex(err, ex) {
+                if (err) return cb(err);
+                if (ex) return cb(null, file, pkg);
+                load(exts.slice(1), x, pkg);
+            }
+        }
+    }
+
+    function loadpkg(dir, cb) {
+        if (dir === '' || dir === '/') return cb(null);
+        if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) {
+            return cb(null);
+        }
+        if ((/[/\\]node_modules[/\\]*$/).test(dir)) return cb(null);
+
+        var pkgfile = path.join(dir, 'package.json');
+        isFile(pkgfile, function (err, ex) {
+            // on err, ex is false
+            if (!ex) return loadpkg(path.dirname(dir), cb);
+
+            readFile(pkgfile, function (err, body) {
+                if (err) cb(err);
+                try { var pkg = JSON.parse(body); } catch (jsonErr) {}
+
+                if (pkg && opts.packageFilter) {
+                    pkg = opts.packageFilter(pkg, pkgfile);
+                }
+                cb(null, pkg, dir);
+            });
+        });
+    }
+
+    function loadAsDirectory(x, loadAsDirectoryPackage, callback) {
+        var cb = callback;
+        var fpkg = loadAsDirectoryPackage;
+        if (typeof fpkg === 'function') {
+            cb = fpkg;
+            fpkg = opts.package;
+        }
+
+        var pkgfile = path.join(x, 'package.json');
+        isFile(pkgfile, function (err, ex) {
+            if (err) return cb(err);
+            if (!ex) return loadAsFile(path.join(x, 'index'), fpkg, cb);
+
+            readFile(pkgfile, function (err, body) {
+                if (err) return cb(err);
+                try {
+                    var pkg = JSON.parse(body);
+                } catch (jsonErr) {}
+
+                if (opts.packageFilter) {
+                    pkg = opts.packageFilter(pkg, pkgfile);
+                }
+
+                if (pkg.main) {
+                    if (typeof pkg.main !== 'string') {
+                        var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string');
+                        mainError.code = 'INVALID_PACKAGE_MAIN';
+                        return cb(mainError);
+                    }
+                    if (pkg.main === '.' || pkg.main === './') {
+                        pkg.main = 'index';
+                    }
+                    loadAsFile(path.resolve(x, pkg.main), pkg, function (err, m, pkg) {
+                        if (err) return cb(err);
+                        if (m) return cb(null, m, pkg);
+                        if (!pkg) return loadAsFile(path.join(x, 'index'), pkg, cb);
+
+                        var dir = path.resolve(x, pkg.main);
+                        loadAsDirectory(dir, pkg, function (err, n, pkg) {
+                            if (err) return cb(err);
+                            if (n) return cb(null, n, pkg);
+                            loadAsFile(path.join(x, 'index'), pkg, cb);
+                        });
+                    });
+                    return;
+                }
+
+                loadAsFile(path.join(x, '/index'), pkg, cb);
+            });
+        });
+    }
+
+    function processDirs(cb, dirs) {
+        if (dirs.length === 0) return cb(null, undefined);
+        var dir = dirs[0];
+
+        var file = path.join(dir, x);
+        loadAsFile(file, opts.package, onfile);
+
+        function onfile(err, m, pkg) {
+            if (err) return cb(err);
+            if (m) return cb(null, m, pkg);
+            loadAsDirectory(path.join(dir, x), opts.package, ondir);
+        }
+
+        function ondir(err, n, pkg) {
+            if (err) return cb(err);
+            if (n) return cb(null, n, pkg);
+            processDirs(cb, dirs.slice(1));
+        }
+    }
+    function loadNodeModules(x, start, cb) {
+        processDirs(cb, nodeModulesPaths(start, opts, x));
+    }
+};
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/caller.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/caller.js
new file mode 100644
index 00000000000000..b14a2804ae828a
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/caller.js
@@ -0,0 +1,8 @@
+module.exports = function () {
+    // see https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi
+    var origPrepareStackTrace = Error.prepareStackTrace;
+    Error.prepareStackTrace = function (_, stack) { return stack; };
+    var stack = (new Error()).stack;
+    Error.prepareStackTrace = origPrepareStackTrace;
+    return stack[2].getFileName();
+};
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/core.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/core.js
new file mode 100644
index 00000000000000..0877650ccad4e8
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/core.js
@@ -0,0 +1,53 @@
+var current = (process.versions && process.versions.node && process.versions.node.split('.')) || [];
+
+function specifierIncluded(specifier) {
+    var parts = specifier.split(' ');
+    var op = parts.length > 1 ? parts[0] : '=';
+    var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.');
+
+    for (var i = 0; i < 3; ++i) {
+        var cur = Number(current[i] || 0);
+        var ver = Number(versionParts[i] || 0);
+        if (cur === ver) {
+            continue; // eslint-disable-line no-restricted-syntax, no-continue
+        }
+        if (op === '<') {
+            return cur < ver;
+        } else if (op === '>=') {
+            return cur >= ver;
+        } else {
+            return false;
+        }
+    }
+    return op === '>=';
+}
+
+function matchesRange(range) {
+    var specifiers = range.split(/ ?&& ?/);
+    if (specifiers.length === 0) { return false; }
+    for (var i = 0; i < specifiers.length; ++i) {
+        if (!specifierIncluded(specifiers[i])) { return false; }
+    }
+    return true;
+}
+
+function versionIncluded(specifierValue) {
+    if (typeof specifierValue === 'boolean') { return specifierValue; }
+    if (specifierValue && typeof specifierValue === 'object') {
+        for (var i = 0; i < specifierValue.length; ++i) {
+            if (matchesRange(specifierValue[i])) { return true; }
+        }
+        return false;
+    }
+    return matchesRange(specifierValue);
+}
+
+var data = require('./core.json');
+
+var core = {};
+for (var mod in data) { // eslint-disable-line no-restricted-syntax
+    if (Object.prototype.hasOwnProperty.call(data, mod)) {
+        core[mod] = versionIncluded(data[mod]);
+    }
+}
+module.exports = core;
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/core.json b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/core.json
new file mode 100644
index 00000000000000..1575db31b0eb2f
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/core.json
@@ -0,0 +1,73 @@
+{
+    "assert": true,
+    "async_hooks": ">= 8",
+    "buffer_ieee754": "< 0.9.7",
+    "buffer": true,
+    "child_process": true,
+    "cluster": true,
+    "console": true,
+    "constants": true,
+    "crypto": true,
+    "_debugger": "< 8",
+    "dgram": true,
+    "dns": true,
+    "domain": true,
+    "events": true,
+    "freelist": "< 6",
+    "fs": true,
+    "fs/promises": ">= 10 && < 10.1",
+    "_http_agent": ">= 0.11.1",
+    "_http_client": ">= 0.11.1",
+    "_http_common": ">= 0.11.1",
+    "_http_incoming": ">= 0.11.1",
+    "_http_outgoing": ">= 0.11.1",
+    "_http_server": ">= 0.11.1",
+    "http": true,
+    "http2": ">= 8.8",
+    "https": true,
+    "inspector": ">= 8.0.0",
+    "_linklist": "< 8",
+    "module": true,
+    "net": true,
+    "node-inspect/lib/_inspect": ">= 7.6.0",
+    "node-inspect/lib/internal/inspect_client": ">= 7.6.0",
+    "node-inspect/lib/internal/inspect_repl": ">= 7.6.0",
+    "os": true,
+    "path": true,
+    "perf_hooks": ">= 8.5",
+    "process": ">= 1",
+    "punycode": true,
+    "querystring": true,
+    "readline": true,
+    "repl": true,
+    "smalloc": ">= 0.11.5 && < 3",
+    "_stream_duplex": ">= 0.9.4",
+    "_stream_transform": ">= 0.9.4",
+    "_stream_wrap": ">= 1.4.1",
+    "_stream_passthrough": ">= 0.9.4",
+    "_stream_readable": ">= 0.9.4",
+    "_stream_writable": ">= 0.9.4",
+    "stream": true,
+    "string_decoder": true,
+    "sys": true,
+    "timers": true,
+    "_tls_common": ">= 0.11.13",
+    "_tls_legacy": ">= 0.11.3 && < 10",
+    "_tls_wrap": ">= 0.11.3",
+    "tls": true,
+    "trace_events": ">= 10",
+    "tty": true,
+    "url": true,
+    "util": true,
+    "v8/tools/arguments": ">= 10",
+    "v8/tools/codemap": [">= 4.4.0 && < 5", ">= 5.2.0"],
+    "v8/tools/consarray": [">= 4.4.0 && < 5", ">= 5.2.0"],
+    "v8/tools/csvparser": [">= 4.4.0 && < 5", ">= 5.2.0"],
+    "v8/tools/logreader": [">= 4.4.0 && < 5", ">= 5.2.0"],
+    "v8/tools/profile_view": [">= 4.4.0 && < 5", ">= 5.2.0"],
+    "v8/tools/splaytree": [">= 4.4.0 && < 5", ">= 5.2.0"],
+    "v8": ">= 1",
+    "vm": true,
+    "worker_threads": ">= 11.7",
+    "zlib": true
+}
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/node-modules-paths.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/node-modules-paths.js
new file mode 100644
index 00000000000000..df50f48baf4304
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/node-modules-paths.js
@@ -0,0 +1,42 @@
+var path = require('path');
+var parse = path.parse || require('path-parse');
+
+var getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) {
+    var prefix = '/';
+    if ((/^([A-Za-z]:)/).test(absoluteStart)) {
+        prefix = '';
+    } else if ((/^\\\\/).test(absoluteStart)) {
+        prefix = '\\\\';
+    }
+
+    var paths = [absoluteStart];
+    var parsed = parse(absoluteStart);
+    while (parsed.dir !== paths[paths.length - 1]) {
+        paths.push(parsed.dir);
+        parsed = parse(parsed.dir);
+    }
+
+    return paths.reduce(function (dirs, aPath) {
+        return dirs.concat(modules.map(function (moduleDir) {
+            return path.join(prefix, aPath, moduleDir);
+        }));
+    }, []);
+};
+
+module.exports = function nodeModulesPaths(start, opts, request) {
+    var modules = opts && opts.moduleDirectory
+        ? [].concat(opts.moduleDirectory)
+        : ['node_modules'];
+
+    if (opts && typeof opts.paths === 'function') {
+        return opts.paths(
+            request,
+            start,
+            function () { return getNodeModulesDirs(start, modules); },
+            opts
+        );
+    }
+
+    var dirs = getNodeModulesDirs(start, modules);
+    return opts && opts.paths ? dirs.concat(opts.paths) : dirs;
+};
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/normalize-options.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/normalize-options.js
new file mode 100644
index 00000000000000..4b56904eaea72b
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/normalize-options.js
@@ -0,0 +1,10 @@
+module.exports = function (x, opts) {
+    /**
+     * This file is purposefully a passthrough. It's expected that third-party
+     * environments will override it at runtime in order to inject special logic
+     * into `resolve` (by manipulating the options). One such example is the PnP
+     * code path in Yarn.
+     */
+
+    return opts || {};
+};
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/sync.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/sync.js
new file mode 100644
index 00000000000000..33ad5da2f69ac7
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/lib/sync.js
@@ -0,0 +1,154 @@
+var core = require('./core');
+var fs = require('fs');
+var path = require('path');
+var caller = require('./caller.js');
+var nodeModulesPaths = require('./node-modules-paths.js');
+var normalizeOptions = require('./normalize-options.js');
+
+var defaultIsFile = function isFile(file) {
+    try {
+        var stat = fs.statSync(file);
+    } catch (e) {
+        if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;
+        throw e;
+    }
+    return stat.isFile() || stat.isFIFO();
+};
+
+module.exports = function (x, options) {
+    if (typeof x !== 'string') {
+        throw new TypeError('Path must be a string.');
+    }
+    var opts = normalizeOptions(x, options);
+
+    var isFile = opts.isFile || defaultIsFile;
+    var readFileSync = opts.readFileSync || fs.readFileSync;
+
+    var extensions = opts.extensions || ['.js'];
+    var basedir = opts.basedir || path.dirname(caller());
+    var parent = opts.filename || basedir;
+
+    opts.paths = opts.paths || [];
+
+    // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory
+    var absoluteStart = path.resolve(basedir);
+
+    if (opts.preserveSymlinks === false) {
+        try {
+            absoluteStart = fs.realpathSync(absoluteStart);
+        } catch (realPathErr) {
+            if (realPathErr.code !== 'ENOENT') {
+                throw realPathErr;
+            }
+        }
+    }
+
+    if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) {
+        var res = path.resolve(absoluteStart, x);
+        if (x === '..' || x.slice(-1) === '/') res += '/';
+        var m = loadAsFileSync(res) || loadAsDirectorySync(res);
+        if (m) return m;
+    } else {
+        var n = loadNodeModulesSync(x, absoluteStart);
+        if (n) return n;
+    }
+
+    if (core[x]) return x;
+
+    var err = new Error("Cannot find module '" + x + "' from '" + parent + "'");
+    err.code = 'MODULE_NOT_FOUND';
+    throw err;
+
+    function loadAsFileSync(x) {
+        var pkg = loadpkg(path.dirname(x));
+
+        if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) {
+            var rfile = path.relative(pkg.dir, x);
+            var r = opts.pathFilter(pkg.pkg, x, rfile);
+            if (r) {
+                x = path.resolve(pkg.dir, r); // eslint-disable-line no-param-reassign
+            }
+        }
+
+        if (isFile(x)) {
+            return x;
+        }
+
+        for (var i = 0; i < extensions.length; i++) {
+            var file = x + extensions[i];
+            if (isFile(file)) {
+                return file;
+            }
+        }
+    }
+
+    function loadpkg(dir) {
+        if (dir === '' || dir === '/') return;
+        if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) {
+            return;
+        }
+        if ((/[/\\]node_modules[/\\]*$/).test(dir)) return;
+
+        var pkgfile = path.join(dir, 'package.json');
+
+        if (!isFile(pkgfile)) {
+            return loadpkg(path.dirname(dir));
+        }
+
+        var body = readFileSync(pkgfile);
+
+        try {
+            var pkg = JSON.parse(body);
+        } catch (jsonErr) {}
+
+        if (pkg && opts.packageFilter) {
+            pkg = opts.packageFilter(pkg, dir);
+        }
+
+        return { pkg: pkg, dir: dir };
+    }
+
+    function loadAsDirectorySync(x) {
+        var pkgfile = path.join(x, '/package.json');
+        if (isFile(pkgfile)) {
+            try {
+                var body = readFileSync(pkgfile, 'UTF8');
+                var pkg = JSON.parse(body);
+            } catch (e) {}
+
+            if (opts.packageFilter) {
+                pkg = opts.packageFilter(pkg, x);
+            }
+
+            if (pkg.main) {
+                if (typeof pkg.main !== 'string') {
+                    var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string');
+                    mainError.code = 'INVALID_PACKAGE_MAIN';
+                    throw mainError;
+                }
+                if (pkg.main === '.' || pkg.main === './') {
+                    pkg.main = 'index';
+                }
+                try {
+                    var m = loadAsFileSync(path.resolve(x, pkg.main));
+                    if (m) return m;
+                    var n = loadAsDirectorySync(path.resolve(x, pkg.main));
+                    if (n) return n;
+                } catch (e) {}
+            }
+        }
+
+        return loadAsFileSync(path.join(x, '/index'));
+    }
+
+    function loadNodeModulesSync(x, start) {
+        var dirs = nodeModulesPaths(start, opts, x);
+        for (var i = 0; i < dirs.length; i++) {
+            var dir = dirs[i];
+            var m = loadAsFileSync(path.join(dir, '/', x));
+            if (m) return m;
+            var n = loadAsDirectorySync(path.join(dir, '/', x));
+            if (n) return n;
+        }
+    }
+};
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/package.json b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/package.json
new file mode 100644
index 00000000000000..a736a535f19897
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/package.json
@@ -0,0 +1,71 @@
+{
+  "_from": "resolve@^1.10.0",
+  "_id": "resolve@1.10.0",
+  "_inBundle": false,
+  "_integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==",
+  "_location": "/normalize-package-data/resolve",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "resolve@^1.10.0",
+    "name": "resolve",
+    "escapedName": "resolve",
+    "rawSpec": "^1.10.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.10.0"
+  },
+  "_requiredBy": [
+    "/normalize-package-data"
+  ],
+  "_resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
+  "_shasum": "3bdaaeaf45cc07f375656dfd2e54ed0810b101ba",
+  "_spec": "resolve@^1.10.0",
+  "_where": "/Users/aeschright/code/npm-release/node_modules/normalize-package-data",
+  "author": {
+    "name": "James Halliday",
+    "email": "mail@substack.net",
+    "url": "http://substack.net"
+  },
+  "bugs": {
+    "url": "https://github.com/browserify/resolve/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "path-parse": "^1.0.6"
+  },
+  "deprecated": false,
+  "description": "resolve like require.resolve() on behalf of files asynchronously and synchronously",
+  "devDependencies": {
+    "@ljharb/eslint-config": "^13.1.1",
+    "eslint": "^5.12.0",
+    "object-keys": "^1.0.12",
+    "safe-publish-latest": "^1.1.2",
+    "tap": "0.4.13",
+    "tape": "^4.9.2"
+  },
+  "homepage": "https://github.com/browserify/resolve#readme",
+  "keywords": [
+    "resolve",
+    "require",
+    "node",
+    "module"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "resolve",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/browserify/resolve.git"
+  },
+  "scripts": {
+    "lint": "eslint .",
+    "posttest": "npm run test:multirepo",
+    "prepublish": "safe-publish-latest",
+    "pretest": "npm run lint",
+    "test": "npm run --silent tests-only",
+    "test:multirepo": "cd ./test/resolver/multirepo && npm install && npm test",
+    "tests-only": "tape test/*.js"
+  },
+  "version": "1.10.0"
+}
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/readme.markdown b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/readme.markdown
new file mode 100644
index 00000000000000..95be0f97a0f85c
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/readme.markdown
@@ -0,0 +1,179 @@
+# resolve
+
+implements the [node `require.resolve()`
+algorithm](https://nodejs.org/api/modules.html#modules_all_together)
+such that you can `require.resolve()` on behalf of a file asynchronously and
+synchronously
+
+[![build status](https://secure.travis-ci.org/browserify/node-resolve.png)](http://travis-ci.org/browserify/node-resolve)
+
+# example
+
+asynchronously resolve:
+
+```js
+var resolve = require('resolve');
+resolve('tap', { basedir: __dirname }, function (err, res) {
+    if (err) console.error(err);
+    else console.log(res);
+});
+```
+
+```
+$ node example/async.js
+/home/substack/projects/node-resolve/node_modules/tap/lib/main.js
+```
+
+synchronously resolve:
+
+```js
+var resolve = require('resolve');
+var res = resolve.sync('tap', { basedir: __dirname });
+console.log(res);
+```
+
+```
+$ node example/sync.js
+/home/substack/projects/node-resolve/node_modules/tap/lib/main.js
+```
+
+# methods
+
+```js
+var resolve = require('resolve');
+```
+
+## resolve(id, opts={}, cb)
+
+Asynchronously resolve the module path string `id` into `cb(err, res [, pkg])`, where `pkg` (if defined) is the data from `package.json`.
+
+options are:
+
+* opts.basedir - directory to begin resolving from
+
+* opts.package - `package.json` data applicable to the module being loaded
+
+* opts.extensions - array of file extensions to search in order
+
+* opts.readFile - how to read files asynchronously
+
+* opts.isFile - function to asynchronously test whether a file exists
+
+* `opts.packageFilter(pkg, pkgfile)` - transform the parsed package.json contents before looking at the "main" field
+  * pkg - package data
+  * pkgfile - path to package.json
+
+* `opts.pathFilter(pkg, path, relativePath)` - transform a path within a package
+  * pkg - package data
+  * path - the path being resolved
+  * relativePath - the path relative from the package.json location
+  * returns - a relative path that will be joined from the package.json location
+
+* opts.paths - require.paths array to use if nothing is found on the normal `node_modules` recursive walk (probably don't use this)
+
+  For advanced users, `paths` can also be a `opts.paths(request, start, opts)` function
+    * request - the import specifier being resolved
+    * start - lookup path
+    * getNodeModulesDirs - a thunk (no-argument function) that returns the paths using standard `node_modules` resolution
+    * opts - the resolution options
+
+* opts.moduleDirectory - directory (or directories) in which to recursively look for modules. default: `"node_modules"`
+
+* opts.preserveSymlinks - if true, doesn't resolve `basedir` to real path before resolving.
+This is the way Node resolves dependencies when executed with the [--preserve-symlinks](https://nodejs.org/api/all.html#cli_preserve_symlinks) flag.
+**Note:** this property is currently `true` by default but it will be changed to
+`false` in the next major version because *Node's resolution algorithm does not preserve symlinks by default*.
+
+default `opts` values:
+
+```js
+{
+    paths: [],
+    basedir: __dirname,
+    extensions: ['.js'],
+    readFile: fs.readFile,
+    isFile: function isFile(file, cb) {
+        fs.stat(file, function (err, stat) {
+            if (!err) {
+                return cb(null, stat.isFile() || stat.isFIFO());
+            }
+            if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
+            return cb(err);
+        });
+    },
+    moduleDirectory: 'node_modules',
+    preserveSymlinks: true
+}
+```
+
+## resolve.sync(id, opts)
+
+Synchronously resolve the module path string `id`, returning the result and
+throwing an error when `id` can't be resolved.
+
+options are:
+
+* opts.basedir - directory to begin resolving from
+
+* opts.extensions - array of file extensions to search in order
+
+* opts.readFile - how to read files synchronously
+
+* opts.isFile - function to synchronously test whether a file exists
+
+* `opts.packageFilter(pkg, dir)` - transform the parsed package.json contents before looking at the "main" field
+  * pkg - package data
+  * dir - directory for package.json (Note: the second argument will change to "pkgfile" in v2)
+
+* `opts.pathFilter(pkg, path, relativePath)` - transform a path within a package
+  * pkg - package data
+  * path - the path being resolved
+  * relativePath - the path relative from the package.json location
+  * returns - a relative path that will be joined from the package.json location
+
+* opts.paths - require.paths array to use if nothing is found on the normal `node_modules` recursive walk (probably don't use this)
+
+* opts.moduleDirectory - directory (or directories) in which to recursively look for modules. default: `"node_modules"`
+
+* opts.preserveSymlinks - if true, doesn't resolve `basedir` to real path before resolving.
+This is the way Node resolves dependencies when executed with the [--preserve-symlinks](https://nodejs.org/api/all.html#cli_preserve_symlinks) flag.
+**Note:** this property is currently `true` by default but it will be changed to
+`false` in the next major version because *Node's resolution algorithm does not preserve symlinks by default*.
+
+default `opts` values:
+
+```js
+{
+    paths: [],
+    basedir: __dirname,
+    extensions: ['.js'],
+    readFileSync: fs.readFileSync,
+    isFile: function isFile(file) {
+        try {
+            var stat = fs.statSync(file);
+        } catch (e) {
+            if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;
+            throw e;
+        }
+        return stat.isFile() || stat.isFIFO();
+    },
+    moduleDirectory: 'node_modules',
+    preserveSymlinks: true
+}
+```
+
+## resolve.isCore(pkg)
+
+Return whether a package is in core.
+
+# install
+
+With [npm](https://npmjs.org) do:
+
+```sh
+npm install resolve
+```
+
+# license
+
+MIT
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/core.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/core.js
new file mode 100644
index 00000000000000..33d9f329499c61
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/core.js
@@ -0,0 +1,82 @@
+var test = require('tape');
+var keys = require('object-keys');
+var resolve = require('../');
+
+test('core modules', function (t) {
+    t.test('isCore()', function (st) {
+        st.ok(resolve.isCore('fs'));
+        st.ok(resolve.isCore('net'));
+        st.ok(resolve.isCore('http'));
+
+        st.ok(!resolve.isCore('seq'));
+        st.ok(!resolve.isCore('../'));
+        st.end();
+    });
+
+    t.test('core list', function (st) {
+        var cores = keys(resolve.core);
+        st.plan(cores.length);
+
+        for (var i = 0; i < cores.length; ++i) {
+            var mod = cores[i];
+            if (resolve.core[mod]) {
+                st.doesNotThrow(
+                    function () { require(mod); }, // eslint-disable-line no-loop-func
+                    mod + ' supported; requiring does not throw'
+                );
+            } else {
+                st.throws(
+                    function () { require(mod); }, // eslint-disable-line no-loop-func
+                    mod + ' not supported; requiring throws'
+                );
+            }
+        }
+
+        st.end();
+    });
+
+    t.test('core via repl module', { skip: !resolve.core.repl }, function (st) {
+        var libs = require('repl')._builtinLibs; // eslint-disable-line no-underscore-dangle
+        if (!libs) {
+            st.skip('module.builtinModules does not exist');
+            return st.end();
+        }
+        for (var i = 0; i < libs.length; ++i) {
+            var mod = libs[i];
+            st.ok(resolve.core[mod], mod + ' is a core module');
+            st.doesNotThrow(
+                function () { require(mod); }, // eslint-disable-line no-loop-func
+                'requiring ' + mod + ' does not throw'
+            );
+        }
+        st.end();
+    });
+
+    t.test('core via builtinModules list', { skip: !resolve.core.module }, function (st) {
+        var libs = require('module').builtinModules;
+        if (!libs) {
+            st.skip('module.builtinModules does not exist');
+            return st.end();
+        }
+        var blacklist = [
+            '_debug_agent',
+            'v8/tools/tickprocessor-driver',
+            'v8/tools/SourceMap',
+            'v8/tools/tickprocessor',
+            'v8/tools/profile'
+        ];
+        for (var i = 0; i < libs.length; ++i) {
+            var mod = libs[i];
+            if (blacklist.indexOf(mod) === -1) {
+                st.ok(resolve.core[mod], mod + ' is a core module');
+                st.doesNotThrow(
+                    function () { require(mod); }, // eslint-disable-line no-loop-func
+                    'requiring ' + mod + ' does not throw'
+                );
+            }
+        }
+        st.end();
+    });
+
+    t.end();
+});
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/dotdot.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/dotdot.js
new file mode 100644
index 00000000000000..30806659be2ef2
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/dotdot.js
@@ -0,0 +1,29 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('dotdot', function (t) {
+    t.plan(4);
+    var dir = path.join(__dirname, '/dotdot/abc');
+
+    resolve('..', { basedir: dir }, function (err, res, pkg) {
+        t.ifError(err);
+        t.equal(res, path.join(__dirname, 'dotdot/index.js'));
+    });
+
+    resolve('.', { basedir: dir }, function (err, res, pkg) {
+        t.ifError(err);
+        t.equal(res, path.join(dir, 'index.js'));
+    });
+});
+
+test('dotdot sync', function (t) {
+    t.plan(2);
+    var dir = path.join(__dirname, '/dotdot/abc');
+
+    var a = resolve.sync('..', { basedir: dir });
+    t.equal(a, path.join(__dirname, 'dotdot/index.js'));
+
+    var b = resolve.sync('.', { basedir: dir });
+    t.equal(b, path.join(dir, 'index.js'));
+});
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/dotdot/abc/index.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/dotdot/abc/index.js
new file mode 100644
index 00000000000000..67f2534ebf90dc
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/dotdot/abc/index.js
@@ -0,0 +1,2 @@
+var x = require('..');
+console.log(x);
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/dotdot/index.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/dotdot/index.js
new file mode 100644
index 00000000000000..643f9fcc6a6a7c
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/dotdot/index.js
@@ -0,0 +1 @@
+module.exports = 'whatever';
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/faulty_basedir.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/faulty_basedir.js
new file mode 100644
index 00000000000000..5f2141a67267bc
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/faulty_basedir.js
@@ -0,0 +1,29 @@
+var test = require('tape');
+var path = require('path');
+var resolve = require('../');
+
+test('faulty basedir must produce error in windows', { skip: process.platform !== 'win32' }, function (t) {
+    t.plan(1);
+
+    var resolverDir = 'C:\\a\\b\\c\\d';
+
+    resolve('tape/lib/test.js', { basedir: resolverDir }, function (err, res, pkg) {
+        t.equal(!!err, true);
+    });
+});
+
+test('non-existent basedir should not throw when preserveSymlinks is false', function (t) {
+    t.plan(2);
+
+    var opts = {
+        basedir: path.join(path.sep, 'unreal', 'path', 'that', 'does', 'not', 'exist'),
+        preserveSymlinks: false
+    };
+
+    var module = './dotdot/abc';
+
+    resolve(module, opts, function (err, res) {
+        t.equal(err.code, 'MODULE_NOT_FOUND');
+        t.equal(res, undefined);
+    });
+});
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/filter.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/filter.js
new file mode 100644
index 00000000000000..dfc622a874e165
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/filter.js
@@ -0,0 +1,34 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('filter', function (t) {
+    t.plan(4);
+    var dir = path.join(__dirname, 'resolver');
+    var packageFilterArgs;
+    resolve('./baz', {
+        basedir: dir,
+        packageFilter: function (pkg, pkgfile) {
+            pkg.main = 'doom';
+            packageFilterArgs = [pkg, pkgfile];
+            return pkg;
+        }
+    }, function (err, res, pkg) {
+        if (err) t.fail(err);
+
+        t.equal(res, path.join(dir, 'baz/doom.js'), 'changing the package "main" works');
+
+        var packageData = packageFilterArgs[0];
+        t.equal(pkg, packageData, 'first packageFilter argument is "pkg"');
+        t.equal(packageData.main, 'doom', 'package "main" was altered');
+
+        var packageFile = packageFilterArgs[1];
+        t.equal(
+            packageFile,
+            path.join(dir, 'baz/package.json'),
+            'second packageFilter argument is "pkgfile"'
+        );
+
+        t.end();
+    });
+});
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/filter_sync.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/filter_sync.js
new file mode 100644
index 00000000000000..064052e160ff17
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/filter_sync.js
@@ -0,0 +1,26 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('filter', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+    var packageFilterArgs;
+    var res = resolve.sync('./baz', {
+        basedir: dir,
+        packageFilter: function (pkg, dir) {
+            pkg.main = 'doom';
+            packageFilterArgs = [pkg, dir];
+            return pkg;
+        }
+    });
+
+    t.equal(res, path.join(dir, 'baz/doom.js'), 'changing the package "main" works');
+
+    var packageData = packageFilterArgs[0];
+    t.equal(packageData.main, 'doom', 'package "main" was altered');
+
+    var packageFile = packageFilterArgs[1];
+    t.equal(packageFile, path.join(dir, 'baz'), 'second packageFilter argument is "dir"');
+
+    t.end();
+});
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/mock.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/mock.js
new file mode 100644
index 00000000000000..a88059d4539197
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/mock.js
@@ -0,0 +1,143 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('mock', function (t) {
+    t.plan(8);
+
+    var files = {};
+    files[path.resolve('/foo/bar/baz.js')] = 'beep';
+
+    function opts(basedir) {
+        return {
+            basedir: path.resolve(basedir),
+            isFile: function (file, cb) {
+                cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file)));
+            },
+            readFile: function (file, cb) {
+                cb(null, files[path.resolve(file)]);
+            }
+        };
+    }
+
+    resolve('./baz', opts('/foo/bar'), function (err, res, pkg) {
+        if (err) return t.fail(err);
+        t.equal(res, path.resolve('/foo/bar/baz.js'));
+        t.equal(pkg, undefined);
+    });
+
+    resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) {
+        if (err) return t.fail(err);
+        t.equal(res, path.resolve('/foo/bar/baz.js'));
+        t.equal(pkg, undefined);
+    });
+
+    resolve('baz', opts('/foo/bar'), function (err, res) {
+        t.equal(err.message, "Cannot find module 'baz' from '" + path.resolve('/foo/bar') + "'");
+        t.equal(err.code, 'MODULE_NOT_FOUND');
+    });
+
+    resolve('../baz', opts('/foo/bar'), function (err, res) {
+        t.equal(err.message, "Cannot find module '../baz' from '" + path.resolve('/foo/bar') + "'");
+        t.equal(err.code, 'MODULE_NOT_FOUND');
+    });
+});
+
+test('mock from package', function (t) {
+    t.plan(8);
+
+    var files = {};
+    files[path.resolve('/foo/bar/baz.js')] = 'beep';
+
+    function opts(basedir) {
+        return {
+            basedir: path.resolve(basedir),
+            isFile: function (file, cb) {
+                cb(null, Object.prototype.hasOwnProperty.call(files, file));
+            },
+            'package': { main: 'bar' },
+            readFile: function (file, cb) {
+                cb(null, files[file]);
+            }
+        };
+    }
+
+    resolve('./baz', opts('/foo/bar'), function (err, res, pkg) {
+        if (err) return t.fail(err);
+        t.equal(res, path.resolve('/foo/bar/baz.js'));
+        t.equal(pkg && pkg.main, 'bar');
+    });
+
+    resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) {
+        if (err) return t.fail(err);
+        t.equal(res, path.resolve('/foo/bar/baz.js'));
+        t.equal(pkg && pkg.main, 'bar');
+    });
+
+    resolve('baz', opts('/foo/bar'), function (err, res) {
+        t.equal(err.message, "Cannot find module 'baz' from '" + path.resolve('/foo/bar') + "'");
+        t.equal(err.code, 'MODULE_NOT_FOUND');
+    });
+
+    resolve('../baz', opts('/foo/bar'), function (err, res) {
+        t.equal(err.message, "Cannot find module '../baz' from '" + path.resolve('/foo/bar') + "'");
+        t.equal(err.code, 'MODULE_NOT_FOUND');
+    });
+});
+
+test('mock package', function (t) {
+    t.plan(2);
+
+    var files = {};
+    files[path.resolve('/foo/node_modules/bar/baz.js')] = 'beep';
+    files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({
+        main: './baz.js'
+    });
+
+    function opts(basedir) {
+        return {
+            basedir: path.resolve(basedir),
+            isFile: function (file, cb) {
+                cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file)));
+            },
+            readFile: function (file, cb) {
+                cb(null, files[path.resolve(file)]);
+            }
+        };
+    }
+
+    resolve('bar', opts('/foo'), function (err, res, pkg) {
+        if (err) return t.fail(err);
+        t.equal(res, path.resolve('/foo/node_modules/bar/baz.js'));
+        t.equal(pkg && pkg.main, './baz.js');
+    });
+});
+
+test('mock package from package', function (t) {
+    t.plan(2);
+
+    var files = {};
+    files[path.resolve('/foo/node_modules/bar/baz.js')] = 'beep';
+    files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({
+        main: './baz.js'
+    });
+
+    function opts(basedir) {
+        return {
+            basedir: path.resolve(basedir),
+            isFile: function (file, cb) {
+                cb(null, Object.prototype.hasOwnProperty.call(files, path.resolve(file)));
+            },
+            'package': { main: 'bar' },
+            readFile: function (file, cb) {
+                cb(null, files[path.resolve(file)]);
+            }
+        };
+    }
+
+    resolve('bar', opts('/foo'), function (err, res, pkg) {
+        if (err) return t.fail(err);
+        t.equal(res, path.resolve('/foo/node_modules/bar/baz.js'));
+        t.equal(pkg && pkg.main, './baz.js');
+    });
+});
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/mock_sync.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/mock_sync.js
new file mode 100644
index 00000000000000..43af10289fd22d
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/mock_sync.js
@@ -0,0 +1,67 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('mock', function (t) {
+    t.plan(4);
+
+    var files = {};
+    files[path.resolve('/foo/bar/baz.js')] = 'beep';
+
+    function opts(basedir) {
+        return {
+            basedir: path.resolve(basedir),
+            isFile: function (file) {
+                return Object.prototype.hasOwnProperty.call(files, file);
+            },
+            readFileSync: function (file) {
+                return files[file];
+            }
+        };
+    }
+
+    t.equal(
+        resolve.sync('./baz', opts('/foo/bar')),
+        path.resolve('/foo/bar/baz.js')
+    );
+
+    t.equal(
+        resolve.sync('./baz.js', opts('/foo/bar')),
+        path.resolve('/foo/bar/baz.js')
+    );
+
+    t.throws(function () {
+        resolve.sync('baz', opts('/foo/bar'));
+    });
+
+    t.throws(function () {
+        resolve.sync('../baz', opts('/foo/bar'));
+    });
+});
+
+test('mock package', function (t) {
+    t.plan(1);
+
+    var files = {};
+    files[path.resolve('/foo/node_modules/bar/baz.js')] = 'beep';
+    files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({
+        main: './baz.js'
+    });
+
+    function opts(basedir) {
+        return {
+            basedir: path.resolve(basedir),
+            isFile: function (file) {
+                return Object.prototype.hasOwnProperty.call(files, file);
+            },
+            readFileSync: function (file) {
+                return files[file];
+            }
+        };
+    }
+
+    t.equal(
+        resolve.sync('bar', opts('/foo')),
+        path.resolve('/foo/node_modules/bar/baz.js')
+    );
+});
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/module_dir.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/module_dir.js
new file mode 100644
index 00000000000000..b50e5bb1751d69
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/module_dir.js
@@ -0,0 +1,56 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('moduleDirectory strings', function (t) {
+    t.plan(4);
+    var dir = path.join(__dirname, 'module_dir');
+    var xopts = {
+        basedir: dir,
+        moduleDirectory: 'xmodules'
+    };
+    resolve('aaa', xopts, function (err, res, pkg) {
+        t.ifError(err);
+        t.equal(res, path.join(dir, '/xmodules/aaa/index.js'));
+    });
+
+    var yopts = {
+        basedir: dir,
+        moduleDirectory: 'ymodules'
+    };
+    resolve('aaa', yopts, function (err, res, pkg) {
+        t.ifError(err);
+        t.equal(res, path.join(dir, '/ymodules/aaa/index.js'));
+    });
+});
+
+test('moduleDirectory array', function (t) {
+    t.plan(6);
+    var dir = path.join(__dirname, 'module_dir');
+    var aopts = {
+        basedir: dir,
+        moduleDirectory: ['xmodules', 'ymodules', 'zmodules']
+    };
+    resolve('aaa', aopts, function (err, res, pkg) {
+        t.ifError(err);
+        t.equal(res, path.join(dir, '/xmodules/aaa/index.js'));
+    });
+
+    var bopts = {
+        basedir: dir,
+        moduleDirectory: ['zmodules', 'ymodules', 'xmodules']
+    };
+    resolve('aaa', bopts, function (err, res, pkg) {
+        t.ifError(err);
+        t.equal(res, path.join(dir, '/ymodules/aaa/index.js'));
+    });
+
+    var copts = {
+        basedir: dir,
+        moduleDirectory: ['xmodules', 'ymodules', 'zmodules']
+    };
+    resolve('bbb', copts, function (err, res, pkg) {
+        t.ifError(err);
+        t.equal(res, path.join(dir, '/zmodules/bbb/main.js'));
+    });
+});
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/module_dir/xmodules/aaa/index.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/module_dir/xmodules/aaa/index.js
new file mode 100644
index 00000000000000..dd7cf7b2d022da
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/module_dir/xmodules/aaa/index.js
@@ -0,0 +1 @@
+module.exports = function (x) { return x * 100; };
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/module_dir/ymodules/aaa/index.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/module_dir/ymodules/aaa/index.js
new file mode 100644
index 00000000000000..ef2d4d4bf76e61
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/module_dir/ymodules/aaa/index.js
@@ -0,0 +1 @@
+module.exports = function (x) { return x + 100; };
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/module_dir/zmodules/bbb/main.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/module_dir/zmodules/bbb/main.js
new file mode 100644
index 00000000000000..e8ba629936a7ad
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/module_dir/zmodules/bbb/main.js
@@ -0,0 +1 @@
+module.exports = function (n) { return n * 111; };
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/module_dir/zmodules/bbb/package.json b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/module_dir/zmodules/bbb/package.json
new file mode 100644
index 00000000000000..c13b8cf6acfd33
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/module_dir/zmodules/bbb/package.json
@@ -0,0 +1,3 @@
+{
+  "main": "main.js"
+}
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/node-modules-paths.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/node-modules-paths.js
new file mode 100644
index 00000000000000..1500fb19998bc0
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/node-modules-paths.js
@@ -0,0 +1,121 @@
+var test = require('tape');
+var path = require('path');
+var parse = path.parse || require('path-parse');
+var keys = require('object-keys');
+
+var nodeModulesPaths = require('../lib/node-modules-paths');
+
+var verifyDirs = function verifyDirs(t, start, dirs, moduleDirectories, paths) {
+    var moduleDirs = [].concat(moduleDirectories || 'node_modules');
+    if (paths) {
+        for (var k = 0; k < paths.length; ++k) {
+            moduleDirs.push(path.basename(paths[k]));
+        }
+    }
+
+    var foundModuleDirs = {};
+    var uniqueDirs = {};
+    var parsedDirs = {};
+    for (var i = 0; i < dirs.length; ++i) {
+        var parsed = parse(dirs[i]);
+        if (!foundModuleDirs[parsed.base]) { foundModuleDirs[parsed.base] = 0; }
+        foundModuleDirs[parsed.base] += 1;
+        parsedDirs[parsed.dir] = true;
+        uniqueDirs[dirs[i]] = true;
+    }
+    t.equal(keys(parsedDirs).length >= start.split(path.sep).length, true, 'there are >= dirs than "start" has');
+    var foundModuleDirNames = keys(foundModuleDirs);
+    t.deepEqual(foundModuleDirNames, moduleDirs, 'all desired module dirs were found');
+    t.equal(keys(uniqueDirs).length, dirs.length, 'all dirs provided were unique');
+
+    var counts = {};
+    for (var j = 0; j < foundModuleDirNames.length; ++j) {
+        counts[foundModuleDirs[j]] = true;
+    }
+    t.equal(keys(counts).length, 1, 'all found module directories had the same count');
+};
+
+test('node-modules-paths', function (t) {
+    t.test('no options', function (t) {
+        var start = path.join(__dirname, 'resolver');
+        var dirs = nodeModulesPaths(start);
+
+        verifyDirs(t, start, dirs);
+
+        t.end();
+    });
+
+    t.test('empty options', function (t) {
+        var start = path.join(__dirname, 'resolver');
+        var dirs = nodeModulesPaths(start, {});
+
+        verifyDirs(t, start, dirs);
+
+        t.end();
+    });
+
+    t.test('with paths=array option', function (t) {
+        var start = path.join(__dirname, 'resolver');
+        var paths = ['a', 'b'];
+        var dirs = nodeModulesPaths(start, { paths: paths });
+
+        verifyDirs(t, start, dirs, null, paths);
+
+        t.end();
+    });
+
+    t.test('with paths=function option', function (t) {
+        var paths = function paths(request, absoluteStart, getNodeModulesDirs, opts) {
+            return getNodeModulesDirs().concat(path.join(absoluteStart, 'not node modules', request));
+        };
+
+        var start = path.join(__dirname, 'resolver');
+        var dirs = nodeModulesPaths(start, { paths: paths }, 'pkg');
+
+        verifyDirs(t, start, dirs, null, [path.join(start, 'not node modules', 'pkg')]);
+
+        t.end();
+    });
+
+    t.test('with paths=function skipping node modules resolution', function (t) {
+        var paths = function paths(request, absoluteStart, getNodeModulesDirs, opts) {
+            return [];
+        };
+        var start = path.join(__dirname, 'resolver');
+        var dirs = nodeModulesPaths(start, { paths: paths });
+        t.deepEqual(dirs, [], 'no node_modules was computed');
+        t.end();
+    });
+
+    t.test('with moduleDirectory option', function (t) {
+        var start = path.join(__dirname, 'resolver');
+        var moduleDirectory = 'not node modules';
+        var dirs = nodeModulesPaths(start, { moduleDirectory: moduleDirectory });
+
+        verifyDirs(t, start, dirs, moduleDirectory);
+
+        t.end();
+    });
+
+    t.test('with 1 moduleDirectory and paths options', function (t) {
+        var start = path.join(__dirname, 'resolver');
+        var paths = ['a', 'b'];
+        var moduleDirectory = 'not node modules';
+        var dirs = nodeModulesPaths(start, { paths: paths, moduleDirectory: moduleDirectory });
+
+        verifyDirs(t, start, dirs, moduleDirectory, paths);
+
+        t.end();
+    });
+
+    t.test('with 1+ moduleDirectory and paths options', function (t) {
+        var start = path.join(__dirname, 'resolver');
+        var paths = ['a', 'b'];
+        var moduleDirectories = ['not node modules', 'other modules'];
+        var dirs = nodeModulesPaths(start, { paths: paths, moduleDirectory: moduleDirectories });
+
+        verifyDirs(t, start, dirs, moduleDirectories, paths);
+
+        t.end();
+    });
+});
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/node_path.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/node_path.js
new file mode 100644
index 00000000000000..d06aa4eafe5b52
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/node_path.js
@@ -0,0 +1,70 @@
+var fs = require('fs');
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('$NODE_PATH', function (t) {
+    t.plan(8);
+
+    var isDir = function (dir, cb) {
+        if (dir === '/node_path' || dir === 'node_path/x') {
+            return cb(null, true);
+        }
+        fs.stat(dir, function (err, stat) {
+            if (!err) {
+                return cb(null, stat.isDirectory());
+            }
+            if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
+            return cb(err);
+        });
+    };
+
+    resolve('aaa', {
+        paths: [
+            path.join(__dirname, '/node_path/x'),
+            path.join(__dirname, '/node_path/y')
+        ],
+        basedir: __dirname,
+        isDirectory: isDir
+    }, function (err, res) {
+        t.error(err);
+        t.equal(res, path.join(__dirname, '/node_path/x/aaa/index.js'), 'aaa resolves');
+    });
+
+    resolve('bbb', {
+        paths: [
+            path.join(__dirname, '/node_path/x'),
+            path.join(__dirname, '/node_path/y')
+        ],
+        basedir: __dirname,
+        isDirectory: isDir
+    }, function (err, res) {
+        t.error(err);
+        t.equal(res, path.join(__dirname, '/node_path/y/bbb/index.js'), 'bbb resolves');
+    });
+
+    resolve('ccc', {
+        paths: [
+            path.join(__dirname, '/node_path/x'),
+            path.join(__dirname, '/node_path/y')
+        ],
+        basedir: __dirname,
+        isDirectory: isDir
+    }, function (err, res) {
+        t.error(err);
+        t.equal(res, path.join(__dirname, '/node_path/x/ccc/index.js'), 'ccc resolves');
+    });
+
+    // ensure that relative paths still resolve against the regular `node_modules` correctly
+    resolve('tap', {
+        paths: [
+            'node_path'
+        ],
+        basedir: path.join(__dirname, 'node_path/x'),
+        isDirectory: isDir
+    }, function (err, res) {
+        var root = require('tap/package.json').main;
+        t.error(err);
+        t.equal(res, path.resolve(__dirname, '..', 'node_modules/tap', root), 'tap resolves');
+    });
+});
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/node_path/x/aaa/index.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/node_path/x/aaa/index.js
new file mode 100644
index 00000000000000..ad70d0bb03f6f4
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/node_path/x/aaa/index.js
@@ -0,0 +1 @@
+module.exports = 'A';
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/node_path/x/ccc/index.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/node_path/x/ccc/index.js
new file mode 100644
index 00000000000000..a64132e4c7e52c
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/node_path/x/ccc/index.js
@@ -0,0 +1 @@
+module.exports = 'C';
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/node_path/y/bbb/index.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/node_path/y/bbb/index.js
new file mode 100644
index 00000000000000..4d0f32e2436818
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/node_path/y/bbb/index.js
@@ -0,0 +1 @@
+module.exports = 'B';
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/node_path/y/ccc/index.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/node_path/y/ccc/index.js
new file mode 100644
index 00000000000000..793315e846687e
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/node_path/y/ccc/index.js
@@ -0,0 +1 @@
+module.exports = 'CY';
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/nonstring.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/nonstring.js
new file mode 100644
index 00000000000000..ef63c40f9393dc
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/nonstring.js
@@ -0,0 +1,9 @@
+var test = require('tape');
+var resolve = require('../');
+
+test('nonstring', function (t) {
+    t.plan(1);
+    resolve(555, function (err, res, pkg) {
+        t.ok(err);
+    });
+});
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/pathfilter.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/pathfilter.js
new file mode 100644
index 00000000000000..16519aeae51c4f
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/pathfilter.js
@@ -0,0 +1,75 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+var resolverDir = path.join(__dirname, '/pathfilter/deep_ref');
+
+var pathFilterFactory = function (t) {
+    return function (pkg, x, remainder) {
+        t.equal(pkg.version, '1.2.3');
+        t.equal(x, path.join(resolverDir, 'node_modules/deep/ref'));
+        t.equal(remainder, 'ref');
+        return 'alt';
+    };
+};
+
+test('#62: deep module references and the pathFilter', function (t) {
+    t.test('deep/ref.js', function (st) {
+        st.plan(3);
+
+        resolve('deep/ref', { basedir: resolverDir }, function (err, res, pkg) {
+            if (err) st.fail(err);
+
+            st.equal(pkg.version, '1.2.3');
+            st.equal(res, path.join(resolverDir, 'node_modules/deep/ref.js'));
+        });
+
+        var res = resolve.sync('deep/ref', { basedir: resolverDir });
+        st.equal(res, path.join(resolverDir, 'node_modules/deep/ref.js'));
+    });
+
+    t.test('deep/deeper/ref', function (st) {
+        st.plan(4);
+
+        resolve(
+            'deep/deeper/ref',
+            { basedir: resolverDir },
+            function (err, res, pkg) {
+                if (err) t.fail(err);
+                st.notEqual(pkg, undefined);
+                st.equal(pkg.version, '1.2.3');
+                st.equal(res, path.join(resolverDir, 'node_modules/deep/deeper/ref.js'));
+            }
+        );
+
+        var res = resolve.sync(
+            'deep/deeper/ref',
+            { basedir: resolverDir }
+        );
+        st.equal(res, path.join(resolverDir, 'node_modules/deep/deeper/ref.js'));
+    });
+
+    t.test('deep/ref alt', function (st) {
+        st.plan(8);
+
+        var pathFilter = pathFilterFactory(st);
+
+        var res = resolve.sync(
+            'deep/ref',
+            { basedir: resolverDir, pathFilter: pathFilter }
+        );
+        st.equal(res, path.join(resolverDir, 'node_modules/deep/alt.js'));
+
+        resolve(
+            'deep/ref',
+            { basedir: resolverDir, pathFilter: pathFilter },
+            function (err, res, pkg) {
+                if (err) st.fail(err);
+                st.equal(res, path.join(resolverDir, 'node_modules/deep/alt.js'));
+                st.end();
+            }
+        );
+    });
+
+    t.end();
+});
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/pathfilter/deep_ref/main.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/pathfilter/deep_ref/main.js
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/precedence.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/precedence.js
new file mode 100644
index 00000000000000..2febb598fbc068
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/precedence.js
@@ -0,0 +1,23 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('precedence', function (t) {
+    t.plan(3);
+    var dir = path.join(__dirname, 'precedence/aaa');
+
+    resolve('./', { basedir: dir }, function (err, res, pkg) {
+        t.ifError(err);
+        t.equal(res, path.join(dir, 'index.js'));
+        t.equal(pkg.name, 'resolve');
+    });
+});
+
+test('./ should not load ${dir}.js', function (t) { // eslint-disable-line no-template-curly-in-string
+    t.plan(1);
+    var dir = path.join(__dirname, 'precedence/bbb');
+
+    resolve('./', { basedir: dir }, function (err, res, pkg) {
+        t.ok(err);
+    });
+});
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/precedence/aaa.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/precedence/aaa.js
new file mode 100644
index 00000000000000..b83a3e7ad98d17
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/precedence/aaa.js
@@ -0,0 +1 @@
+module.exports = 'wtf';
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/precedence/aaa/index.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/precedence/aaa/index.js
new file mode 100644
index 00000000000000..e0f8f6abf72f7f
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/precedence/aaa/index.js
@@ -0,0 +1 @@
+module.exports = 'okok';
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/precedence/aaa/main.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/precedence/aaa/main.js
new file mode 100644
index 00000000000000..93542a965e0ea4
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/precedence/aaa/main.js
@@ -0,0 +1 @@
+console.log(require('./'));
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/precedence/bbb.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/precedence/bbb.js
new file mode 100644
index 00000000000000..2298f47fdd16dc
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/precedence/bbb.js
@@ -0,0 +1 @@
+module.exports = '>_<';
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/precedence/bbb/main.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/precedence/bbb/main.js
new file mode 100644
index 00000000000000..716b81d4bd463f
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/precedence/bbb/main.js
@@ -0,0 +1 @@
+console.log(require('./')); // should throw
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver.js
new file mode 100644
index 00000000000000..f7fcd292bdff97
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver.js
@@ -0,0 +1,429 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('async foo', function (t) {
+    t.plan(12);
+    var dir = path.join(__dirname, 'resolver');
+
+    resolve('./foo', { basedir: dir }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'foo.js'));
+        t.equal(pkg && pkg.name, 'resolve');
+    });
+
+    resolve('./foo.js', { basedir: dir }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'foo.js'));
+        t.equal(pkg && pkg.name, 'resolve');
+    });
+
+    resolve('./foo', { basedir: dir, 'package': { main: 'resolver' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'foo.js'));
+        t.equal(pkg && pkg.main, 'resolver');
+    });
+
+    resolve('./foo.js', { basedir: dir, 'package': { main: 'resolver' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'foo.js'));
+        t.equal(pkg.main, 'resolver');
+    });
+
+    resolve('./foo', { basedir: dir, filename: path.join(dir, 'baz.js') }, function (err, res) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'foo.js'));
+    });
+
+    resolve('foo', { basedir: dir }, function (err) {
+        t.equal(err.message, "Cannot find module 'foo' from '" + path.resolve(dir) + "'");
+        t.equal(err.code, 'MODULE_NOT_FOUND');
+    });
+
+    // Test that filename is reported as the "from" value when passed.
+    resolve('foo', { basedir: dir, filename: path.join(dir, 'baz.js') }, function (err) {
+        t.equal(err.message, "Cannot find module 'foo' from '" + path.join(dir, 'baz.js') + "'");
+    });
+});
+
+test('bar', function (t) {
+    t.plan(6);
+    var dir = path.join(__dirname, 'resolver');
+
+    resolve('foo', { basedir: dir + '/bar' }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'bar/node_modules/foo/index.js'));
+        t.equal(pkg, undefined);
+    });
+
+    resolve('foo', { basedir: dir + '/bar' }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'bar/node_modules/foo/index.js'));
+        t.equal(pkg, undefined);
+    });
+
+    resolve('foo', { basedir: dir + '/bar', 'package': { main: 'bar' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'bar/node_modules/foo/index.js'));
+        t.equal(pkg.main, 'bar');
+    });
+});
+
+test('baz', function (t) {
+    t.plan(4);
+    var dir = path.join(__dirname, 'resolver');
+
+    resolve('./baz', { basedir: dir }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'baz/quux.js'));
+        t.equal(pkg.main, 'quux.js');
+    });
+
+    resolve('./baz', { basedir: dir, 'package': { main: 'resolver' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'baz/quux.js'));
+        t.equal(pkg.main, 'quux.js');
+    });
+});
+
+test('biz', function (t) {
+    t.plan(24);
+    var dir = path.join(__dirname, 'resolver/biz/node_modules');
+
+    resolve('./grux', { basedir: dir }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'grux/index.js'));
+        t.equal(pkg, undefined);
+    });
+
+    resolve('./grux', { basedir: dir, 'package': { main: 'biz' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'grux/index.js'));
+        t.equal(pkg.main, 'biz');
+    });
+
+    resolve('./garply', { basedir: dir }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'garply/lib/index.js'));
+        t.equal(pkg.main, './lib');
+    });
+
+    resolve('./garply', { basedir: dir, 'package': { main: 'biz' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'garply/lib/index.js'));
+        t.equal(pkg.main, './lib');
+    });
+
+    resolve('tiv', { basedir: dir + '/grux' }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'tiv/index.js'));
+        t.equal(pkg, undefined);
+    });
+
+    resolve('tiv', { basedir: dir + '/grux', 'package': { main: 'grux' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'tiv/index.js'));
+        t.equal(pkg.main, 'grux');
+    });
+
+    resolve('tiv', { basedir: dir + '/garply' }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'tiv/index.js'));
+        t.equal(pkg, undefined);
+    });
+
+    resolve('tiv', { basedir: dir + '/garply', 'package': { main: './lib' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'tiv/index.js'));
+        t.equal(pkg.main, './lib');
+    });
+
+    resolve('grux', { basedir: dir + '/tiv' }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'grux/index.js'));
+        t.equal(pkg, undefined);
+    });
+
+    resolve('grux', { basedir: dir + '/tiv', 'package': { main: 'tiv' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'grux/index.js'));
+        t.equal(pkg.main, 'tiv');
+    });
+
+    resolve('garply', { basedir: dir + '/tiv' }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'garply/lib/index.js'));
+        t.equal(pkg.main, './lib');
+    });
+
+    resolve('garply', { basedir: dir + '/tiv', 'package': { main: 'tiv' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'garply/lib/index.js'));
+        t.equal(pkg.main, './lib');
+    });
+});
+
+test('quux', function (t) {
+    t.plan(2);
+    var dir = path.join(__dirname, 'resolver/quux');
+
+    resolve('./foo', { basedir: dir, 'package': { main: 'quux' } }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'foo/index.js'));
+        t.equal(pkg.main, 'quux');
+    });
+});
+
+test('normalize', function (t) {
+    t.plan(2);
+    var dir = path.join(__dirname, 'resolver/biz/node_modules/grux');
+
+    resolve('../grux', { basedir: dir }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'index.js'));
+        t.equal(pkg, undefined);
+    });
+});
+
+test('cup', function (t) {
+    t.plan(5);
+    var dir = path.join(__dirname, 'resolver');
+
+    resolve('./cup', { basedir: dir, extensions: ['.js', '.coffee'] }, function (err, res) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'cup.coffee'));
+    });
+
+    resolve('./cup.coffee', { basedir: dir }, function (err, res) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'cup.coffee'));
+    });
+
+    resolve('./cup', { basedir: dir, extensions: ['.js'] }, function (err, res) {
+        t.equal(err.message, "Cannot find module './cup' from '" + path.resolve(dir) + "'");
+        t.equal(err.code, 'MODULE_NOT_FOUND');
+    });
+
+    // Test that filename is reported as the "from" value when passed.
+    resolve('./cup', { basedir: dir, extensions: ['.js'], filename: path.join(dir, 'cupboard.js') }, function (err, res) {
+        t.equal(err.message, "Cannot find module './cup' from '" + path.join(dir, 'cupboard.js') + "'");
+    });
+});
+
+test('mug', function (t) {
+    t.plan(3);
+    var dir = path.join(__dirname, 'resolver');
+
+    resolve('./mug', { basedir: dir }, function (err, res) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'mug.js'));
+    });
+
+    resolve('./mug', { basedir: dir, extensions: ['.coffee', '.js'] }, function (err, res) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, '/mug.coffee'));
+    });
+
+    resolve('./mug', { basedir: dir, extensions: ['.js', '.coffee'] }, function (err, res) {
+        t.equal(res, path.join(dir, '/mug.js'));
+    });
+});
+
+test('other path', function (t) {
+    t.plan(6);
+    var resolverDir = path.join(__dirname, 'resolver');
+    var dir = path.join(resolverDir, 'bar');
+    var otherDir = path.join(resolverDir, 'other_path');
+
+    resolve('root', { basedir: dir, paths: [otherDir] }, function (err, res) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(resolverDir, 'other_path/root.js'));
+    });
+
+    resolve('lib/other-lib', { basedir: dir, paths: [otherDir] }, function (err, res) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(resolverDir, 'other_path/lib/other-lib.js'));
+    });
+
+    resolve('root', { basedir: dir }, function (err, res) {
+        t.equal(err.message, "Cannot find module 'root' from '" + path.resolve(dir) + "'");
+        t.equal(err.code, 'MODULE_NOT_FOUND');
+    });
+
+    resolve('zzz', { basedir: dir, paths: [otherDir] }, function (err, res) {
+        t.equal(err.message, "Cannot find module 'zzz' from '" + path.resolve(dir) + "'");
+        t.equal(err.code, 'MODULE_NOT_FOUND');
+    });
+});
+
+test('incorrect main', function (t) {
+    t.plan(1);
+
+    var resolverDir = path.join(__dirname, 'resolver');
+    var dir = path.join(resolverDir, 'incorrect_main');
+
+    resolve('./incorrect_main', { basedir: resolverDir }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'index.js'));
+    });
+});
+
+test('without basedir', function (t) {
+    t.plan(1);
+
+    var dir = path.join(__dirname, 'resolver/without_basedir');
+    var tester = require(path.join(dir, 'main.js'));
+
+    tester(t, function (err, res, pkg) {
+        if (err) {
+            t.fail(err);
+        } else {
+            t.equal(res, path.join(dir, 'node_modules/mymodule.js'));
+        }
+    });
+});
+
+test('#25: node modules with the same name as node stdlib modules', function (t) {
+    t.plan(1);
+
+    var resolverDir = path.join(__dirname, 'resolver/punycode');
+
+    resolve('punycode', { basedir: resolverDir }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(resolverDir, 'node_modules/punycode/index.js'));
+    });
+});
+
+test('#52 - incorrectly resolves module-paths like "./someFolder/" when there is a file of the same name', function (t) {
+    t.plan(2);
+
+    var dir = path.join(__dirname, 'resolver');
+
+    resolve('./foo', { basedir: path.join(dir, 'same_names') }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'same_names/foo.js'));
+    });
+
+    resolve('./foo/', { basedir: path.join(dir, 'same_names') }, function (err, res, pkg) {
+        if (err) t.fail(err);
+        t.equal(res, path.join(dir, 'same_names/foo/index.js'));
+    });
+});
+
+test('async: #121 - treating an existing file as a dir when no basedir', function (t) {
+    var testFile = path.basename(__filename);
+
+    t.test('sanity check', function (st) {
+        st.plan(1);
+        resolve('./' + testFile, function (err, res, pkg) {
+            if (err) t.fail(err);
+            st.equal(res, __filename, 'sanity check');
+        });
+    });
+
+    t.test('with a fake directory', function (st) {
+        st.plan(4);
+
+        resolve('./' + testFile + '/blah', function (err, res, pkg) {
+            st.ok(err, 'there is an error');
+            st.notOk(res, 'no result');
+
+            st.equal(err && err.code, 'MODULE_NOT_FOUND', 'error code matches require.resolve');
+            st.equal(
+                err && err.message,
+                'Cannot find module \'./' + testFile + '/blah\' from \'' + __dirname + '\'',
+                'can not find nonexistent module'
+            );
+            st.end();
+        });
+    });
+
+    t.end();
+});
+
+test('async dot main', function (t) {
+    var start = new Date();
+    t.plan(3);
+    resolve('./resolver/dot_main', function (err, ret) {
+        t.notOk(err);
+        t.equal(ret, path.join(__dirname, 'resolver/dot_main/index.js'));
+        t.ok(new Date() - start < 50, 'resolve.sync timedout');
+        t.end();
+    });
+});
+
+test('async dot slash main', function (t) {
+    var start = new Date();
+    t.plan(3);
+    resolve('./resolver/dot_slash_main', function (err, ret) {
+        t.notOk(err);
+        t.equal(ret, path.join(__dirname, 'resolver/dot_slash_main/index.js'));
+        t.ok(new Date() - start < 50, 'resolve.sync timedout');
+        t.end();
+    });
+});
+
+test('not a directory', function (t) {
+    t.plan(6);
+    var path = './foo';
+    resolve(path, { basedir: __filename }, function (err, res, pkg) {
+        t.ok(err, 'a non-directory errors');
+        t.equal(arguments.length, 1);
+        t.equal(res, undefined);
+        t.equal(pkg, undefined);
+
+        t.equal(err && err.message, 'Cannot find module \'' + path + '\' from \'' + __filename + '\'');
+        t.equal(err && err.code, 'MODULE_NOT_FOUND');
+    });
+});
+
+test('non-string "main" field in package.json', function (t) {
+    t.plan(5);
+
+    var dir = path.join(__dirname, 'resolver');
+    resolve('./invalid_main', { basedir: dir }, function (err, res, pkg) {
+        t.ok(err, 'errors on non-string main');
+        t.equal(err.message, 'package “invalid main” `main` must be a string');
+        t.equal(err.code, 'INVALID_PACKAGE_MAIN');
+        t.equal(res, undefined, 'res is undefined');
+        t.equal(pkg, undefined, 'pkg is undefined');
+    });
+});
+
+test('non-string "main" field in package.json', function (t) {
+    t.plan(5);
+
+    var dir = path.join(__dirname, 'resolver');
+    resolve('./invalid_main', { basedir: dir }, function (err, res, pkg) {
+        t.ok(err, 'errors on non-string main');
+        t.equal(err.message, 'package “invalid main” `main` must be a string');
+        t.equal(err.code, 'INVALID_PACKAGE_MAIN');
+        t.equal(res, undefined, 'res is undefined');
+        t.equal(pkg, undefined, 'pkg is undefined');
+    });
+});
+
+test('browser field in package.json', function (t) {
+    t.plan(3);
+
+    var dir = path.join(__dirname, 'resolver');
+    resolve(
+        './browser_field',
+        {
+            basedir: dir,
+            packageFilter: function packageFilter(pkg) {
+                if (pkg.browser) {
+                    pkg.main = pkg.browser;
+                    delete pkg.browser;
+                }
+                return pkg;
+            }
+        },
+        function (err, res, pkg) {
+            if (err) t.fail(err);
+            t.equal(res, path.join(dir, 'browser_field', 'b.js'));
+            t.equal(pkg && pkg.main, 'b');
+            t.equal(pkg && pkg.browser, undefined);
+        }
+    );
+});
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/baz/doom.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/baz/doom.js
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/baz/package.json b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/baz/package.json
new file mode 100644
index 00000000000000..c41e4dbf73d997
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/baz/package.json
@@ -0,0 +1,3 @@
+{
+    "main": "quux.js"
+}
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/baz/quux.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/baz/quux.js
new file mode 100644
index 00000000000000..bd816eaba4ca3b
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/baz/quux.js
@@ -0,0 +1 @@
+module.exports = 1;
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/browser_field/a.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/browser_field/a.js
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/browser_field/b.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/browser_field/b.js
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/browser_field/package.json b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/browser_field/package.json
new file mode 100644
index 00000000000000..bf406f0830f8aa
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/browser_field/package.json
@@ -0,0 +1,5 @@
+{
+  "name": "browser_field",
+  "main": "a",
+  "browser": "b"
+}
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/cup.coffee b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/cup.coffee
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/dot_main/index.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/dot_main/index.js
new file mode 100644
index 00000000000000..bd816eaba4ca3b
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/dot_main/index.js
@@ -0,0 +1 @@
+module.exports = 1;
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/dot_main/package.json b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/dot_main/package.json
new file mode 100644
index 00000000000000..d7f4fc8079f60a
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/dot_main/package.json
@@ -0,0 +1,3 @@
+{
+    "main": "."
+}
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/dot_slash_main/index.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/dot_slash_main/index.js
new file mode 100644
index 00000000000000..bd816eaba4ca3b
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/dot_slash_main/index.js
@@ -0,0 +1 @@
+module.exports = 1;
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/dot_slash_main/package.json b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/dot_slash_main/package.json
new file mode 100644
index 00000000000000..f51287b9d1e739
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/dot_slash_main/package.json
@@ -0,0 +1,3 @@
+{
+    "main": "./"
+}
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/foo.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/foo.js
new file mode 100644
index 00000000000000..bd816eaba4ca3b
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/foo.js
@@ -0,0 +1 @@
+module.exports = 1;
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/incorrect_main/index.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/incorrect_main/index.js
new file mode 100644
index 00000000000000..bc1fb0a6f4ede1
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/incorrect_main/index.js
@@ -0,0 +1,2 @@
+// this is the actual main file 'index.js', not 'wrong.js' like the package.json would indicate
+module.exports = 1;
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/incorrect_main/package.json b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/incorrect_main/package.json
new file mode 100644
index 00000000000000..b7188041763f8a
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/incorrect_main/package.json
@@ -0,0 +1,3 @@
+{
+    "main": "wrong.js"
+}
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/invalid_main/package.json b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/invalid_main/package.json
new file mode 100644
index 00000000000000..0cf8279950c380
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/invalid_main/package.json
@@ -0,0 +1,7 @@
+{
+  "name": "invalid main",
+  "main": [
+    "why is this a thing",
+    "srsly omg wtf"
+  ]
+}
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/mug.coffee b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/mug.coffee
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/mug.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/mug.js
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/multirepo/lerna.json b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/multirepo/lerna.json
new file mode 100644
index 00000000000000..d6707ca0cd64d4
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/multirepo/lerna.json
@@ -0,0 +1,6 @@
+{
+  "packages": [
+    "packages/*"
+  ],
+  "version": "0.0.0"
+}
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/multirepo/package.json b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/multirepo/package.json
new file mode 100644
index 00000000000000..8508f9d2c4a2d7
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/multirepo/package.json
@@ -0,0 +1,20 @@
+{
+  "name": "monorepo-symlink-test",
+  "private": true,
+  "version": "0.0.0",
+  "description": "",
+  "main": "index.js",
+  "scripts": {
+    "postinstall": "lerna bootstrap",
+    "test": "node packages/package-a"
+  },
+  "author": "",
+  "license": "MIT",
+  "dependencies": {
+    "jquery": "^3.3.1",
+    "resolve": "../../../"
+  },
+  "devDependencies": {
+    "lerna": "^3.4.3"
+  }
+}
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js
new file mode 100644
index 00000000000000..8875a32df0ffc4
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js
@@ -0,0 +1,35 @@
+'use strict';
+
+var assert = require('assert');
+var path = require('path');
+var resolve = require('resolve');
+
+var basedir = __dirname + '/node_modules/@my-scope/package-b';
+
+var expected = path.join(__dirname, '../../node_modules/jquery/dist/jquery.js');
+
+/*
+ * preserveSymlinks === false
+ * will search NPM package from
+ * - packages/package-b/node_modules
+ * - packages/node_modules
+ * - node_modules
+ */
+assert.equal(resolve.sync('jquery', { basedir: basedir, preserveSymlinks: false }), expected);
+assert.equal(resolve.sync('../../node_modules/jquery', { basedir: basedir, preserveSymlinks: false }), expected);
+
+/*
+ * preserveSymlinks === true
+ * will search NPM package from
+ * - packages/package-a/node_modules/@my-scope/packages/package-b/node_modules
+ * - packages/package-a/node_modules/@my-scope/packages/node_modules
+ * - packages/package-a/node_modules/@my-scope/node_modules
+ * - packages/package-a/node_modules/node_modules
+ * - packages/package-a/node_modules
+ * - packages/node_modules
+ * - node_modules
+ */
+assert.equal(resolve.sync('jquery', { basedir: basedir, preserveSymlinks: true }), expected);
+assert.equal(resolve.sync('../../../../../node_modules/jquery', { basedir: basedir, preserveSymlinks: true }), expected);
+
+console.log(' * all monorepo paths successfully resolved through symlinks');
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json
new file mode 100644
index 00000000000000..204de51e05878b
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json
@@ -0,0 +1,14 @@
+{
+  "name": "@my-scope/package-a",
+  "version": "0.0.0",
+  "private": true,
+  "description": "",
+  "license": "MIT",
+  "main": "index.js",
+  "scripts": {
+    "test": "echo \"Error: run tests from root\" && exit 1"
+  },
+  "dependencies": {
+    "@my-scope/package-b": "^0.0.0"
+  }
+}
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/multirepo/packages/package-b/index.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/multirepo/packages/package-b/index.js
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json
new file mode 100644
index 00000000000000..f57c3b5f5e454d
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json
@@ -0,0 +1,14 @@
+{
+  "name": "@my-scope/package-b",
+  "private": true,
+  "version": "0.0.0",
+  "description": "",
+  "license": "MIT",
+  "main": "index.js",
+  "scripts": {
+    "test": "echo \"Error: run tests from root\" && exit 1"
+  },
+  "dependencies": {
+    "@my-scope/package-a": "^0.0.0"
+  }
+}
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/other_path/lib/other-lib.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/other_path/lib/other-lib.js
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/other_path/root.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/other_path/root.js
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/quux/foo/index.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/quux/foo/index.js
new file mode 100644
index 00000000000000..bd816eaba4ca3b
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/quux/foo/index.js
@@ -0,0 +1 @@
+module.exports = 1;
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/same_names/foo.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/same_names/foo.js
new file mode 100644
index 00000000000000..888cae37af95c5
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/same_names/foo.js
@@ -0,0 +1 @@
+module.exports = 42;
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/same_names/foo/index.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/same_names/foo/index.js
new file mode 100644
index 00000000000000..bd816eaba4ca3b
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/same_names/foo/index.js
@@ -0,0 +1 @@
+module.exports = 1;
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/symlinked/_/node_modules/foo.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/symlinked/_/node_modules/foo.js
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/symlinked/_/symlink_target/.gitkeep b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/symlinked/_/symlink_target/.gitkeep
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/without_basedir/main.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/without_basedir/main.js
new file mode 100644
index 00000000000000..5b31975be69da5
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver/without_basedir/main.js
@@ -0,0 +1,5 @@
+var resolve = require('../../../');
+
+module.exports = function (t, cb) {
+    resolve('mymodule', null, cb);
+};
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver_sync.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver_sync.js
new file mode 100644
index 00000000000000..f33143903c140e
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/resolver_sync.js
@@ -0,0 +1,340 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('foo', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+
+    t.equal(
+        resolve.sync('./foo', { basedir: dir }),
+        path.join(dir, 'foo.js')
+    );
+
+    t.equal(
+        resolve.sync('./foo.js', { basedir: dir }),
+        path.join(dir, 'foo.js')
+    );
+
+    t.equal(
+        resolve.sync('./foo.js', { basedir: dir, filename: path.join(dir, 'bar.js') }),
+        path.join(dir, 'foo.js')
+    );
+
+    t.throws(function () {
+        resolve.sync('foo', { basedir: dir });
+    });
+
+    // Test that filename is reported as the "from" value when passed.
+    t.throws(
+        function () {
+            resolve.sync('foo', { basedir: dir, filename: path.join(dir, 'bar.js') });
+        },
+        {
+            name: 'Error',
+            message: "Cannot find module 'foo' from '" + path.join(dir, 'bar.js') + "'"
+        }
+    );
+
+    t.end();
+});
+
+test('bar', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+
+    t.equal(
+        resolve.sync('foo', { basedir: path.join(dir, 'bar') }),
+        path.join(dir, 'bar/node_modules/foo/index.js')
+    );
+    t.end();
+});
+
+test('baz', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+
+    t.equal(
+        resolve.sync('./baz', { basedir: dir }),
+        path.join(dir, 'baz/quux.js')
+    );
+    t.end();
+});
+
+test('biz', function (t) {
+    var dir = path.join(__dirname, 'resolver/biz/node_modules');
+    t.equal(
+        resolve.sync('./grux', { basedir: dir }),
+        path.join(dir, 'grux/index.js')
+    );
+
+    t.equal(
+        resolve.sync('tiv', { basedir: path.join(dir, 'grux') }),
+        path.join(dir, 'tiv/index.js')
+    );
+
+    t.equal(
+        resolve.sync('grux', { basedir: path.join(dir, 'tiv') }),
+        path.join(dir, 'grux/index.js')
+    );
+    t.end();
+});
+
+test('normalize', function (t) {
+    var dir = path.join(__dirname, 'resolver/biz/node_modules/grux');
+    t.equal(
+        resolve.sync('../grux', { basedir: dir }),
+        path.join(dir, 'index.js')
+    );
+    t.end();
+});
+
+test('cup', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+    t.equal(
+        resolve.sync('./cup', {
+            basedir: dir,
+            extensions: ['.js', '.coffee']
+        }),
+        path.join(dir, 'cup.coffee')
+    );
+
+    t.equal(
+        resolve.sync('./cup.coffee', { basedir: dir }),
+        path.join(dir, 'cup.coffee')
+    );
+
+    t.throws(function () {
+        resolve.sync('./cup', {
+            basedir: dir,
+            extensions: ['.js']
+        });
+    });
+
+    t.end();
+});
+
+test('mug', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+    t.equal(
+        resolve.sync('./mug', { basedir: dir }),
+        path.join(dir, 'mug.js')
+    );
+
+    t.equal(
+        resolve.sync('./mug', {
+            basedir: dir,
+            extensions: ['.coffee', '.js']
+        }),
+        path.join(dir, 'mug.coffee')
+    );
+
+    t.equal(
+        resolve.sync('./mug', {
+            basedir: dir,
+            extensions: ['.js', '.coffee']
+        }),
+        path.join(dir, 'mug.js')
+    );
+
+    t.end();
+});
+
+test('other path', function (t) {
+    var resolverDir = path.join(__dirname, 'resolver');
+    var dir = path.join(resolverDir, 'bar');
+    var otherDir = path.join(resolverDir, 'other_path');
+
+    t.equal(
+        resolve.sync('root', {
+            basedir: dir,
+            paths: [otherDir]
+        }),
+        path.join(resolverDir, 'other_path/root.js')
+    );
+
+    t.equal(
+        resolve.sync('lib/other-lib', {
+            basedir: dir,
+            paths: [otherDir]
+        }),
+        path.join(resolverDir, 'other_path/lib/other-lib.js')
+    );
+
+    t.throws(function () {
+        resolve.sync('root', { basedir: dir });
+    });
+
+    t.throws(function () {
+        resolve.sync('zzz', {
+            basedir: dir,
+            paths: [otherDir]
+        });
+    });
+
+    t.end();
+});
+
+test('incorrect main', function (t) {
+    var resolverDir = path.join(__dirname, 'resolver');
+    var dir = path.join(resolverDir, 'incorrect_main');
+
+    t.equal(
+        resolve.sync('./incorrect_main', { basedir: resolverDir }),
+        path.join(dir, 'index.js')
+    );
+
+    t.end();
+});
+
+test('#25: node modules with the same name as node stdlib modules', function (t) {
+    var resolverDir = path.join(__dirname, 'resolver/punycode');
+
+    t.equal(
+        resolve.sync('punycode', { basedir: resolverDir }),
+        path.join(resolverDir, 'node_modules/punycode/index.js')
+    );
+
+    t.end();
+});
+
+var stubStatSync = function stubStatSync(fn) {
+    var fs = require('fs');
+    var statSync = fs.statSync;
+    try {
+        fs.statSync = function () {
+            throw new EvalError('Unknown Error');
+        };
+        return fn();
+    } finally {
+        fs.statSync = statSync;
+    }
+};
+
+test('#79 - re-throw non ENOENT errors from stat', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+
+    stubStatSync(function () {
+        t.throws(function () {
+            resolve.sync('foo', { basedir: dir });
+        }, /Unknown Error/);
+    });
+
+    t.end();
+});
+
+test('#52 - incorrectly resolves module-paths like "./someFolder/" when there is a file of the same name', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+
+    t.equal(
+        resolve.sync('./foo', { basedir: path.join(dir, 'same_names') }),
+        path.join(dir, 'same_names/foo.js')
+    );
+    t.equal(
+        resolve.sync('./foo/', { basedir: path.join(dir, 'same_names') }),
+        path.join(dir, 'same_names/foo/index.js')
+    );
+    t.end();
+});
+
+test('sync: #121 - treating an existing file as a dir when no basedir', function (t) {
+    var testFile = path.basename(__filename);
+
+    t.test('sanity check', function (st) {
+        st.equal(
+            resolve.sync('./' + testFile),
+            __filename,
+            'sanity check'
+        );
+        st.end();
+    });
+
+    t.test('with a fake directory', function (st) {
+        function run() { return resolve.sync('./' + testFile + '/blah'); }
+
+        st.throws(run, 'throws an error');
+
+        try {
+            run();
+        } catch (e) {
+            st.equal(e.code, 'MODULE_NOT_FOUND', 'error code matches require.resolve');
+            st.equal(
+                e.message,
+                'Cannot find module \'./' + testFile + '/blah\' from \'' + __dirname + '\'',
+                'can not find nonexistent module'
+            );
+        }
+
+        st.end();
+    });
+
+    t.end();
+});
+
+test('sync dot main', function (t) {
+    var start = new Date();
+    t.equal(resolve.sync('./resolver/dot_main'), path.join(__dirname, 'resolver/dot_main/index.js'));
+    t.ok(new Date() - start < 50, 'resolve.sync timedout');
+    t.end();
+});
+
+test('sync dot slash main', function (t) {
+    var start = new Date();
+    t.equal(resolve.sync('./resolver/dot_slash_main'), path.join(__dirname, 'resolver/dot_slash_main/index.js'));
+    t.ok(new Date() - start < 50, 'resolve.sync timedout');
+    t.end();
+});
+
+test('not a directory', function (t) {
+    var path = './foo';
+    try {
+        resolve.sync(path, { basedir: __filename });
+        t.fail();
+    } catch (err) {
+        t.ok(err, 'a non-directory errors');
+        t.equal(err && err.message, 'Cannot find module \'' + path + "' from '" + __filename + "'");
+        t.equal(err && err.code, 'MODULE_NOT_FOUND');
+    }
+    t.end();
+});
+
+test('non-string "main" field in package.json', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+    try {
+        var result = resolve.sync('./invalid_main', { basedir: dir });
+        t.equal(result, undefined, 'result should not exist');
+        t.fail('should not get here');
+    } catch (err) {
+        t.ok(err, 'errors on non-string main');
+        t.equal(err.message, 'package “invalid main” `main` must be a string');
+        t.equal(err.code, 'INVALID_PACKAGE_MAIN');
+    }
+    t.end();
+});
+
+test('non-string "main" field in package.json', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+    try {
+        var result = resolve.sync('./invalid_main', { basedir: dir });
+        t.equal(result, undefined, 'result should not exist');
+        t.fail('should not get here');
+    } catch (err) {
+        t.ok(err, 'errors on non-string main');
+        t.equal(err.message, 'package “invalid main” `main` must be a string');
+        t.equal(err.code, 'INVALID_PACKAGE_MAIN');
+    }
+    t.end();
+});
+
+test('browser field in package.json', function (t) {
+    var dir = path.join(__dirname, 'resolver');
+    var res = resolve.sync('./browser_field', {
+        basedir: dir,
+        packageFilter: function packageFilter(pkg) {
+            if (pkg.browser) {
+                pkg.main = pkg.browser;
+                delete pkg.browser;
+            }
+            return pkg;
+        }
+    });
+    t.equal(res, path.join(dir, 'browser_field', 'b.js'));
+    t.end();
+});
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/subdirs.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/subdirs.js
new file mode 100644
index 00000000000000..b7b8450a9ef231
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/subdirs.js
@@ -0,0 +1,13 @@
+var test = require('tape');
+var resolve = require('../');
+var path = require('path');
+
+test('subdirs', function (t) {
+    t.plan(2);
+
+    var dir = path.join(__dirname, '/subdirs');
+    resolve('a/b/c/x.json', { basedir: dir }, function (err, res) {
+        t.ifError(err);
+        t.equal(res, path.join(dir, 'node_modules/a/b/c/x.json'));
+    });
+});
diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/symlinks.js b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/symlinks.js
new file mode 100644
index 00000000000000..ea95a1e1a20fb9
--- /dev/null
+++ b/deps/npm/node_modules/normalize-package-data/node_modules/resolve/test/symlinks.js
@@ -0,0 +1,56 @@
+var path = require('path');
+var fs = require('fs');
+var test = require('tape');
+var resolve = require('../');
+
+var symlinkDir = path.join(__dirname, 'resolver', 'symlinked', 'symlink');
+try {
+    fs.unlinkSync(symlinkDir);
+} catch (err) {}
+try {
+    fs.symlinkSync('./_/symlink_target', symlinkDir, 'dir');
+} catch (err) {
+    // if fails then it is probably on Windows and lets try to create a junction
+    fs.symlinkSync(path.join(__dirname, 'resolver', 'symlinked', '_', 'symlink_target') + '\\', symlinkDir, 'junction');
+}
+
+test('symlink', function (t) {
+    t.plan(2);
+
+    resolve('foo', { basedir: symlinkDir, preserveSymlinks: false }, function (err, res, pkg) {
+        t.error(err);
+        t.equal(res, path.join(__dirname, 'resolver', 'symlinked', '_', 'node_modules', 'foo.js'));
+    });
+});
+
+test('sync symlink when preserveSymlinks = true', function (t) {
+    t.plan(4);
+
+    resolve('foo', { basedir: symlinkDir }, function (err, res, pkg) {
+        t.ok(err, 'there is an error');
+        t.notOk(res, 'no result');
+
+        t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error code matches require.resolve');
+        t.equal(
+            err && err.message,
+            'Cannot find module \'foo\' from \'' + symlinkDir + '\'',
+            'can not find nonexistent module'
+        );
+    });
+});
+
+test('sync symlink', function (t) {
+    var start = new Date();
+    t.doesNotThrow(function () {
+        t.equal(resolve.sync('foo', { basedir: symlinkDir, preserveSymlinks: false }), path.join(__dirname, 'resolver', 'symlinked', '_', 'node_modules', 'foo.js'));
+    });
+    t.ok(new Date() - start < 50, 'resolve.sync timedout');
+    t.end();
+});
+
+test('sync symlink when preserveSymlinks = true', function (t) {
+    t.throws(function () {
+        resolve.sync('foo', { basedir: symlinkDir });
+    }, /Cannot find module 'foo'/);
+    t.end();
+});
diff --git a/deps/npm/node_modules/normalize-package-data/package.json b/deps/npm/node_modules/normalize-package-data/package.json
index 37151c79c9f833..a408d8c0ab602d 100644
--- a/deps/npm/node_modules/normalize-package-data/package.json
+++ b/deps/npm/node_modules/normalize-package-data/package.json
@@ -1,36 +1,34 @@
 {
-  "_args": [
-    [
-      "normalize-package-data@2.4.0",
-      "/Users/rebecca/code/npm"
-    ]
-  ],
-  "_from": "normalize-package-data@2.4.0",
-  "_id": "normalize-package-data@2.4.0",
+  "_from": "normalize-package-data@2.5.0",
+  "_id": "normalize-package-data@2.5.0",
   "_inBundle": false,
-  "_integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
+  "_integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
   "_location": "/normalize-package-data",
-  "_phantomChildren": {},
+  "_phantomChildren": {
+    "path-parse": "1.0.6"
+  },
   "_requested": {
     "type": "version",
     "registry": true,
-    "raw": "normalize-package-data@2.4.0",
+    "raw": "normalize-package-data@2.5.0",
     "name": "normalize-package-data",
     "escapedName": "normalize-package-data",
-    "rawSpec": "2.4.0",
+    "rawSpec": "2.5.0",
     "saveSpec": null,
-    "fetchSpec": "2.4.0"
+    "fetchSpec": "2.5.0"
   },
   "_requiredBy": [
+    "#USER",
     "/",
-    "/npm-registry-client",
+    "/libnpmpublish",
     "/pacote",
     "/read-package-json",
     "/read-pkg"
   ],
-  "_resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
-  "_spec": "2.4.0",
-  "_where": "/Users/rebecca/code/npm",
+  "_resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+  "_shasum": "e66db1838b200c1dfc233225d12cb36520e234a8",
+  "_spec": "normalize-package-data@2.5.0",
+  "_where": "/Users/aeschright/code/npm-release",
   "author": {
     "name": "Meryn Stol",
     "email": "merynstol@gmail.com"
@@ -38,6 +36,7 @@
   "bugs": {
     "url": "https://github.com/npm/normalize-package-data/issues"
   },
+  "bundleDependencies": false,
   "contributors": [
     {
       "name": "Isaac Z. Schlueter",
@@ -54,14 +53,15 @@
   ],
   "dependencies": {
     "hosted-git-info": "^2.1.4",
-    "is-builtin-module": "^1.0.0",
+    "resolve": "^1.10.0",
     "semver": "2 || 3 || 4 || 5",
     "validate-npm-package-license": "^3.0.1"
   },
+  "deprecated": false,
   "description": "Normalizes data that can be found in package.json files.",
   "devDependencies": {
-    "async": "^1.5.0",
-    "tap": "^2.2.0",
+    "async": "^2.6.1",
+    "tap": "^12.4.0",
     "underscore": "^1.8.3"
   },
   "files": [
@@ -80,5 +80,5 @@
   "scripts": {
     "test": "tap test/*.js"
   },
-  "version": "2.4.0"
+  "version": "2.5.0"
 }
diff --git a/deps/npm/node_modules/npm-bundled/index.js b/deps/npm/node_modules/npm-bundled/index.js
index c0c5f60cc0edf7..bde0acd164b7d1 100644
--- a/deps/npm/node_modules/npm-bundled/index.js
+++ b/deps/npm/node_modules/npm-bundled/index.js
@@ -43,6 +43,18 @@ class BundleWalker extends EE {
     this.bundle = null
   }
 
+  addListener (ev, fn) {
+    return this.on(ev, fn)
+  }
+
+  on (ev, fn) {
+    const ret = super.on(ev, fn)
+    if (ev === 'done' && this.didDone) {
+      this.emit('done', this.result)
+    }
+    return ret
+  }
+
   done () {
     if (!this.didDone) {
       this.didDone = true
@@ -57,7 +69,7 @@ class BundleWalker extends EE {
   }
 
   start () {
-    const pj = this.path + '/package.json'
+    const pj = path.resolve(this.path, 'package.json')
     if (this.packageJsonCache.has(pj))
       this.onPackage(this.packageJsonCache.get(pj))
     else
diff --git a/deps/npm/node_modules/npm-bundled/package.json b/deps/npm/node_modules/npm-bundled/package.json
index 4c46838ce476a0..48297374004536 100644
--- a/deps/npm/node_modules/npm-bundled/package.json
+++ b/deps/npm/node_modules/npm-bundled/package.json
@@ -1,8 +1,8 @@
 {
   "_from": "npm-bundled@^1.0.1",
-  "_id": "npm-bundled@1.0.5",
+  "_id": "npm-bundled@1.0.6",
   "_inBundle": false,
-  "_integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==",
+  "_integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==",
   "_location": "/npm-bundled",
   "_phantomChildren": {},
   "_requested": {
@@ -18,10 +18,10 @@
   "_requiredBy": [
     "/npm-packlist"
   ],
-  "_resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.5.tgz",
-  "_shasum": "3c1732b7ba936b3a10325aef616467c0ccbcc979",
+  "_resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz",
+  "_shasum": "e7ba9aadcef962bb61248f91721cd932b3fe6bdd",
   "_spec": "npm-bundled@^1.0.1",
-  "_where": "/Users/zkat/Documents/code/work/npm/node_modules/npm-packlist",
+  "_where": "/Users/aeschright/code/npm-release/node_modules/npm-packlist",
   "author": {
     "name": "Isaac Z. Schlueter",
     "email": "i@izs.me",
@@ -56,5 +56,5 @@
     "preversion": "npm test",
     "test": "tap test/*.js -J --100"
   },
-  "version": "1.0.5"
+  "version": "1.0.6"
 }
diff --git a/deps/npm/node_modules/npm-packlist/index.js b/deps/npm/node_modules/npm-packlist/index.js
index 110a344cb04d96..777b58590d11e7 100644
--- a/deps/npm/node_modules/npm-packlist/index.js
+++ b/deps/npm/node_modules/npm-packlist/index.js
@@ -34,11 +34,20 @@ const defaultRules = [
   'npm-debug.log',
   '**/.npmrc',
   '.*.swp',
-  '.DS_Store',
+  '**/.DS_Store/**',
   '._*',
+  '**/._*/**',
   '*.orig',
-  'package-lock.json',
+  '/package-lock.json',
+  '/yarn.lock',
   'archived-packages/**',
+  'core',
+  '!core/',
+  '!**/core/',
+  '*.core',
+  '*.vgcore',
+  'vgcore.*',
+  'core.+([0-9])',
 ]
 
 // a decorator that applies our custom rules to an ignore walker
@@ -136,13 +145,23 @@ const npmWalker = Class => class Walker extends Class {
   onPackageJson (ig, pkg, then) {
     this.packageJsonCache.set(ig, pkg)
 
-    // if there's a browser or main, make sure we don't ignore it
+    // if there's a bin, browser or main, make sure we don't ignore it
+    // also, don't ignore the package.json itself!
     const rules = [
       pkg.browser ? '!' + pkg.browser : '',
       pkg.main ? '!' + pkg.main : '',
-      '!@(readme|copying|license|licence|notice|changes|changelog|history){,.*}'
-    ].filter(f => f).join('\n') + '\n'
-    super.onReadIgnoreFile(packageNecessaryRules, rules, _=>_)
+      '!package.json',
+      '!@(readme|copying|license|licence|notice|changes|changelog|history){,.*[^~$]}'
+    ]
+    if (pkg.bin)
+      if (typeof pkg.bin === "object")
+        for (const key in pkg.bin)
+          rules.push('!' + pkg.bin[key])
+      else
+        rules.push('!' + pkg.bin)
+
+    const data = rules.filter(f => f).join('\n') + '\n'
+    super.onReadIgnoreFile(packageNecessaryRules, data, _=>_)
 
     if (Array.isArray(pkg.files))
       super.onReadIgnoreFile('package.json', '*\n' + pkg.files.map(
@@ -163,7 +182,8 @@ const npmWalker = Class => class Walker extends Class {
   onReadIgnoreFile (file, data, then) {
     if (file === 'package.json')
       try {
-        this.onPackageJson(file, JSON.parse(data), then)
+        const ig = path.resolve(this.path, file)
+        this.onPackageJson(ig, JSON.parse(data), then)
       } catch (er) {
         // ignore package.json files that are not json
         then()
@@ -193,12 +213,13 @@ class WalkerSync extends npmWalker(IgnoreWalkerSync) {
 const walk = (options, callback) => {
   options = options || {}
   const p = new Promise((resolve, reject) => {
-    const bw = new BundleWalker(options).start()
+    const bw = new BundleWalker(options)
     bw.on('done', bundled => {
       options.bundled = bundled
       options.packageJsonCache = bw.packageJsonCache
       new Walker(options).on('done', resolve).on('error', reject).start()
     })
+    bw.start()
   })
   return callback ? p.then(res => callback(null, res), callback) : p
 }
diff --git a/deps/npm/node_modules/npm-packlist/package.json b/deps/npm/node_modules/npm-packlist/package.json
index d37a7bd1bb4f61..c5be026edaff92 100644
--- a/deps/npm/node_modules/npm-packlist/package.json
+++ b/deps/npm/node_modules/npm-packlist/package.json
@@ -1,29 +1,29 @@
 {
-  "_from": "npm-packlist@1.2.0",
-  "_id": "npm-packlist@1.2.0",
+  "_from": "npm-packlist@latest",
+  "_id": "npm-packlist@1.4.1",
   "_inBundle": false,
-  "_integrity": "sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ==",
+  "_integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==",
   "_location": "/npm-packlist",
   "_phantomChildren": {},
   "_requested": {
-    "type": "version",
+    "type": "tag",
     "registry": true,
-    "raw": "npm-packlist@1.2.0",
+    "raw": "npm-packlist@latest",
     "name": "npm-packlist",
     "escapedName": "npm-packlist",
-    "rawSpec": "1.2.0",
+    "rawSpec": "latest",
     "saveSpec": null,
-    "fetchSpec": "1.2.0"
+    "fetchSpec": "latest"
   },
   "_requiredBy": [
     "#USER",
     "/",
     "/pacote"
   ],
-  "_resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.2.0.tgz",
-  "_shasum": "55a60e793e272f00862c7089274439a4cc31fc7f",
-  "_spec": "npm-packlist@1.2.0",
-  "_where": "/Users/aeschright/code/cli",
+  "_resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.1.tgz",
+  "_shasum": "19064cdf988da80ea3cee45533879d90192bbfbc",
+  "_spec": "npm-packlist@latest",
+  "_where": "/Users/zkat/Documents/code/work/npm",
   "author": {
     "name": "Isaac Z. Schlueter",
     "email": "i@izs.me",
@@ -64,5 +64,5 @@
     "preversion": "npm test",
     "test": "tap test/*.js --100 -J"
   },
-  "version": "1.2.0"
+  "version": "1.4.1"
 }
diff --git a/deps/npm/node_modules/npm-registry-fetch/CHANGELOG.md b/deps/npm/node_modules/npm-registry-fetch/CHANGELOG.md
index 71232eff75c0ef..56d849a7730371 100644
--- a/deps/npm/node_modules/npm-registry-fetch/CHANGELOG.md
+++ b/deps/npm/node_modules/npm-registry-fetch/CHANGELOG.md
@@ -2,6 +2,16 @@
 
 All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
 
+<a name="3.9.0"></a>
+# [3.9.0](https://github.com/npm/registry-fetch/compare/v3.8.0...v3.9.0) (2019-01-24)
+
+
+### Features
+
+* **auth:** support username:password encoded legacy _auth ([a91f90c](https://github.com/npm/registry-fetch/commit/a91f90c))
+
+
+
 <a name="3.8.0"></a>
 # [3.8.0](https://github.com/npm/registry-fetch/compare/v3.7.0...v3.8.0) (2018-08-23)
 
diff --git a/deps/npm/node_modules/npm-registry-fetch/auth.js b/deps/npm/node_modules/npm-registry-fetch/auth.js
index fa696b97ddee5d..d583982d0a8b2e 100644
--- a/deps/npm/node_modules/npm-registry-fetch/auth.js
+++ b/deps/npm/node_modules/npm-registry-fetch/auth.js
@@ -25,6 +25,12 @@ function getAuth (registry, opts) {
   if (AUTH.password) {
     AUTH.password = Buffer.from(AUTH.password, 'base64').toString('utf8')
   }
+  if (AUTH._auth && !(AUTH.username && AUTH.password)) {
+    let auth = Buffer.from(AUTH._auth, 'base64').toString()
+    auth = auth.split(':')
+    AUTH.username = auth.shift()
+    AUTH.password = auth.join(':')
+  }
   AUTH.alwaysAuth = AUTH.alwaysAuth === 'false' ? false : !!AUTH.alwaysAuth
   return AUTH
 }
diff --git a/deps/npm/node_modules/npm-registry-fetch/package.json b/deps/npm/node_modules/npm-registry-fetch/package.json
index 81a00978e2e4e8..0ffa9a8b9e823b 100644
--- a/deps/npm/node_modules/npm-registry-fetch/package.json
+++ b/deps/npm/node_modules/npm-registry-fetch/package.json
@@ -1,8 +1,8 @@
 {
   "_from": "npm-registry-fetch@latest",
-  "_id": "npm-registry-fetch@3.8.0",
+  "_id": "npm-registry-fetch@3.9.0",
   "_inBundle": false,
-  "_integrity": "sha512-hrw8UMD+Nob3Kl3h8Z/YjmKamb1gf7D1ZZch2otrIXM3uFLB5vjEY6DhMlq80z/zZet6eETLbOXcuQudCB3Zpw==",
+  "_integrity": "sha512-srwmt8YhNajAoSAaDWndmZgx89lJwIZ1GWxOuckH4Coek4uHv5S+o/l9FLQe/awA+JwTnj4FJHldxhlXdZEBmw==",
   "_location": "/npm-registry-fetch",
   "_phantomChildren": {},
   "_requested": {
@@ -18,12 +18,18 @@
   "_requiredBy": [
     "#USER",
     "/",
+    "/libnpm",
     "/libnpmaccess",
     "/libnpmhook",
+    "/libnpmorg",
+    "/libnpmpublish",
+    "/libnpmsearch",
+    "/libnpmteam",
+    "/npm-profile",
     "/pacote"
   ],
-  "_resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-3.8.0.tgz",
-  "_shasum": "aa7d9a7c92aff94f48dba0984bdef4bd131c88cc",
+  "_resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-3.9.0.tgz",
+  "_shasum": "44d841780e2833f06accb34488f8c7450d1a6856",
   "_spec": "npm-registry-fetch@latest",
   "_where": "/Users/zkat/Documents/code/work/npm",
   "author": {
@@ -92,5 +98,5 @@
     "update-coc": "weallbehave -o . && git add CODE_OF_CONDUCT.md && git commit -m 'docs(coc): updated CODE_OF_CONDUCT.md'",
     "update-contrib": "weallcontribute -o . && git add CONTRIBUTING.md && git commit -m 'docs(contributing): updated CONTRIBUTING.md'"
   },
-  "version": "3.8.0"
+  "version": "3.9.0"
 }
diff --git a/deps/npm/node_modules/pacote/CHANGELOG.md b/deps/npm/node_modules/pacote/CHANGELOG.md
index 50a0dbde402cb0..1c8feb9a793773 100644
--- a/deps/npm/node_modules/pacote/CHANGELOG.md
+++ b/deps/npm/node_modules/pacote/CHANGELOG.md
@@ -2,6 +2,26 @@
 
 All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
 
+<a name="9.5.0"></a>
+# [9.5.0](https://github.com/zkat/pacote/compare/v9.4.1...v9.5.0) (2019-02-18)
+
+
+### Features
+
+* **enjoy-by:** add `before` as an alias to enjoy-by ([75d62b7](https://github.com/zkat/pacote/commit/75d62b7))
+
+
+
+<a name="9.4.1"></a>
+## [9.4.1](https://github.com/zkat/pacote/compare/v9.4.0...v9.4.1) (2019-01-24)
+
+
+### Bug Fixes
+
+* **directory, finalize-manifest:** strip byte order marker from JSON ([723ad63](https://github.com/zkat/pacote/commit/723ad63))
+
+
+
 <a name="9.4.0"></a>
 # [9.4.0](https://github.com/zkat/pacote/compare/v9.3.0...v9.4.0) (2019-01-14)
 
diff --git a/deps/npm/node_modules/pacote/README.md b/deps/npm/node_modules/pacote/README.md
index 8d160b7cb73ed4..bf2e5f4f61e9fc 100644
--- a/deps/npm/node_modules/pacote/README.md
+++ b/deps/npm/node_modules/pacote/README.md
@@ -231,7 +231,7 @@ even though npm itself does.
 
 ##### <a name="opts-enjoy-by"></a> `opts.enjoy-by`
 
-* Alias: `opts.enjoyBy`
+* Alias: `opts.enjoyBy`, `opts.before`
 * Type: Date-able
 * Default: undefined
 
diff --git a/deps/npm/node_modules/pacote/lib/fetchers/directory.js b/deps/npm/node_modules/pacote/lib/fetchers/directory.js
index 83f3d7d558cb15..3d4ec24c83f278 100644
--- a/deps/npm/node_modules/pacote/lib/fetchers/directory.js
+++ b/deps/npm/node_modules/pacote/lib/fetchers/directory.js
@@ -5,6 +5,7 @@ const BB = require('bluebird')
 const Fetcher = require('../fetch')
 const glob = BB.promisify(require('glob'))
 const packDir = require('../util/pack-dir')
+const readJson = require('../util/read-json')
 const path = require('path')
 const pipe = BB.promisify(require('mississippi').pipe)
 const through = require('mississippi').through
@@ -34,11 +35,11 @@ Fetcher.impl(fetchDirectory, {
     const pkgPath = path.join(spec.fetchSpec, 'package.json')
     const srPath = path.join(spec.fetchSpec, 'npm-shrinkwrap.json')
     return BB.join(
-      readFileAsync(pkgPath).then(JSON.parse).catch({ code: 'ENOENT' }, err => {
+      readFileAsync(pkgPath).then(readJson).catch({ code: 'ENOENT' }, err => {
         err.code = 'ENOPACKAGEJSON'
         throw err
       }),
-      readFileAsync(srPath).then(JSON.parse).catch({ code: 'ENOENT' }, () => null),
+      readFileAsync(srPath).then(readJson).catch({ code: 'ENOENT' }, () => null),
       (pkg, sr) => {
         pkg._shrinkwrap = sr
         pkg._hasShrinkwrap = !!sr
diff --git a/deps/npm/node_modules/pacote/lib/finalize-manifest.js b/deps/npm/node_modules/pacote/lib/finalize-manifest.js
index 80b379898fe4c8..f047517945192f 100644
--- a/deps/npm/node_modules/pacote/lib/finalize-manifest.js
+++ b/deps/npm/node_modules/pacote/lib/finalize-manifest.js
@@ -13,6 +13,7 @@ const path = require('path')
 const pipe = BB.promisify(require('mississippi').pipe)
 const ssri = require('ssri')
 const tar = require('tar')
+const readJson = require('./util/read-json')
 
 // `finalizeManifest` takes as input the various kinds of manifests that
 // manifest handlers ('lib/fetchers/*.js#manifest()') return, and makes sure
@@ -212,7 +213,7 @@ function jsonFromStream (filename, dataStream) {
         entry.on('error', cb)
         finished(entry).then(() => {
           try {
-            cb(null, JSON.parse(data))
+            cb(null, readJson(data))
           } catch (err) {
             cb(err)
           }
diff --git a/deps/npm/node_modules/pacote/lib/util/opt-check.js b/deps/npm/node_modules/pacote/lib/util/opt-check.js
index e6afc21c849c48..8b6b472f850eb2 100644
--- a/deps/npm/node_modules/pacote/lib/util/opt-check.js
+++ b/deps/npm/node_modules/pacote/lib/util/opt-check.js
@@ -13,6 +13,7 @@ module.exports = figgyPudding({
   dmode: {},
   'enjoy-by': 'enjoyBy',
   enjoyBy: {},
+  before: 'enjoyBy',
   fmode: {},
   'fetch-retries': { default: 2 },
   'fetch-retry-factor': { default: 10 },
diff --git a/deps/npm/node_modules/pacote/lib/util/read-json.js b/deps/npm/node_modules/pacote/lib/util/read-json.js
new file mode 100644
index 00000000000000..32fffbc53746b5
--- /dev/null
+++ b/deps/npm/node_modules/pacote/lib/util/read-json.js
@@ -0,0 +1,15 @@
+'use strict'
+
+module.exports = function (content) {
+  // Code also yanked from read-package-json.
+  function stripBOM (content) {
+    content = content.toString()
+    // Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
+    // because the buffer-to-string conversion in `fs.readFileSync()`
+    // translates it to FEFF, the UTF-16 BOM.
+    if (content.charCodeAt(0) === 0xFEFF) return content.slice(1)
+    return content
+  }
+
+  return JSON.parse(stripBOM(content))
+}
diff --git a/deps/npm/node_modules/pacote/package.json b/deps/npm/node_modules/pacote/package.json
index 32e8a07b094e1b..896afe5a77dd24 100644
--- a/deps/npm/node_modules/pacote/package.json
+++ b/deps/npm/node_modules/pacote/package.json
@@ -1,21 +1,21 @@
 {
-  "_from": "pacote@9.4.0",
-  "_id": "pacote@9.4.0",
+  "_from": "pacote@latest",
+  "_id": "pacote@9.5.0",
   "_inBundle": false,
-  "_integrity": "sha512-WQ1KL/phGMkedYEQx9ODsjj7xvwLSpdFJJdEXrLyw5SILMxcTNt5DTxT2Z93fXuLFYJBlZJdnwdalrQdB/rX5w==",
+  "_integrity": "sha512-aUplXozRbzhaJO48FaaeClmN+2Mwt741MC6M3bevIGZwdCaP7frXzbUOfOWa91FPHoLITzG0hYaKY363lxO3bg==",
   "_location": "/pacote",
   "_phantomChildren": {
     "safe-buffer": "5.1.2"
   },
   "_requested": {
-    "type": "version",
+    "type": "tag",
     "registry": true,
-    "raw": "pacote@9.4.0",
+    "raw": "pacote@latest",
     "name": "pacote",
     "escapedName": "pacote",
-    "rawSpec": "9.4.0",
+    "rawSpec": "latest",
     "saveSpec": null,
-    "fetchSpec": "9.4.0"
+    "fetchSpec": "latest"
   },
   "_requiredBy": [
     "#USER",
@@ -23,10 +23,10 @@
     "/libcipm",
     "/libnpm"
   ],
-  "_resolved": "https://registry.npmjs.org/pacote/-/pacote-9.4.0.tgz",
-  "_shasum": "af979abdeb175cd347c3e33be3241af1ed254807",
-  "_spec": "pacote@9.4.0",
-  "_where": "/Users/aeschright/code/cli",
+  "_resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.0.tgz",
+  "_shasum": "85f3013a3f6dd51c108b0ccabd3de8102ddfaeda",
+  "_spec": "pacote@latest",
+  "_where": "/Users/zkat/Documents/code/work/npm",
   "author": {
     "name": "Kat Marchán",
     "email": "kzm@sykosomatic.org"
@@ -116,5 +116,5 @@
     "update-coc": "weallbehave -o . && git add CODE_OF_CONDUCT.md && git commit -m 'docs(coc): updated CODE_OF_CONDUCT.md'",
     "update-contrib": "weallcontribute -o . && git add CONTRIBUTING.md && git commit -m 'docs(contributing): updated CONTRIBUTING.md'"
   },
-  "version": "9.4.0"
+  "version": "9.5.0"
 }
diff --git a/deps/npm/node_modules/path-parse/.travis.yml b/deps/npm/node_modules/path-parse/.travis.yml
new file mode 100644
index 00000000000000..dae31da968ba1f
--- /dev/null
+++ b/deps/npm/node_modules/path-parse/.travis.yml
@@ -0,0 +1,9 @@
+language: node_js
+node_js:
+  - "0.12"
+  - "0.11"
+  - "0.10"
+  - "0.10.12"
+  - "0.8"
+  - "0.6"
+  - "iojs"
diff --git a/deps/npm/node_modules/is-builtin-module/license b/deps/npm/node_modules/path-parse/LICENSE
similarity index 85%
rename from deps/npm/node_modules/is-builtin-module/license
rename to deps/npm/node_modules/path-parse/LICENSE
index 654d0bfe943437..810f3dbea83b53 100644
--- a/deps/npm/node_modules/is-builtin-module/license
+++ b/deps/npm/node_modules/path-parse/LICENSE
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+Copyright (c) 2015 Javier Blanco
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/deps/npm/node_modules/path-parse/README.md b/deps/npm/node_modules/path-parse/README.md
new file mode 100644
index 00000000000000..05097f86aef364
--- /dev/null
+++ b/deps/npm/node_modules/path-parse/README.md
@@ -0,0 +1,42 @@
+# path-parse [![Build Status](https://travis-ci.org/jbgutierrez/path-parse.svg?branch=master)](https://travis-ci.org/jbgutierrez/path-parse)
+
+> Node.js [`path.parse(pathString)`](https://nodejs.org/api/path.html#path_path_parse_pathstring) [ponyfill](https://ponyfill.com).
+
+## Install
+
+```
+$ npm install --save path-parse
+```
+
+## Usage
+
+```js
+var pathParse = require('path-parse');
+
+pathParse('/home/user/dir/file.txt');
+//=> {
+//       root : "/",
+//       dir : "/home/user/dir",
+//       base : "file.txt",
+//       ext : ".txt",
+//       name : "file"
+//   }
+```
+
+## API
+
+See [`path.parse(pathString)`](https://nodejs.org/api/path.html#path_path_parse_pathstring) docs.
+
+### pathParse(path)
+
+### pathParse.posix(path)
+
+The Posix specific version.
+
+### pathParse.win32(path)
+
+The Windows specific version.
+
+## License
+
+MIT © [Javier Blanco](http://jbgutierrez.info)
diff --git a/deps/npm/node_modules/path-parse/index.js b/deps/npm/node_modules/path-parse/index.js
new file mode 100644
index 00000000000000..3b7601fe494eed
--- /dev/null
+++ b/deps/npm/node_modules/path-parse/index.js
@@ -0,0 +1,93 @@
+'use strict';
+
+var isWindows = process.platform === 'win32';
+
+// Regex to split a windows path into three parts: [*, device, slash,
+// tail] windows-only
+var splitDeviceRe =
+    /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/;
+
+// Regex to split the tail part of the above into [*, dir, basename, ext]
+var splitTailRe =
+    /^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/;
+
+var win32 = {};
+
+// Function to split a filename into [root, dir, basename, ext]
+function win32SplitPath(filename) {
+  // Separate device+slash from tail
+  var result = splitDeviceRe.exec(filename),
+      device = (result[1] || '') + (result[2] || ''),
+      tail = result[3] || '';
+  // Split the tail into dir, basename and extension
+  var result2 = splitTailRe.exec(tail),
+      dir = result2[1],
+      basename = result2[2],
+      ext = result2[3];
+  return [device, dir, basename, ext];
+}
+
+win32.parse = function(pathString) {
+  if (typeof pathString !== 'string') {
+    throw new TypeError(
+        "Parameter 'pathString' must be a string, not " + typeof pathString
+    );
+  }
+  var allParts = win32SplitPath(pathString);
+  if (!allParts || allParts.length !== 4) {
+    throw new TypeError("Invalid path '" + pathString + "'");
+  }
+  return {
+    root: allParts[0],
+    dir: allParts[0] + allParts[1].slice(0, -1),
+    base: allParts[2],
+    ext: allParts[3],
+    name: allParts[2].slice(0, allParts[2].length - allParts[3].length)
+  };
+};
+
+
+
+// Split a filename into [root, dir, basename, ext], unix version
+// 'root' is just a slash, or nothing.
+var splitPathRe =
+    /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
+var posix = {};
+
+
+function posixSplitPath(filename) {
+  return splitPathRe.exec(filename).slice(1);
+}
+
+
+posix.parse = function(pathString) {
+  if (typeof pathString !== 'string') {
+    throw new TypeError(
+        "Parameter 'pathString' must be a string, not " + typeof pathString
+    );
+  }
+  var allParts = posixSplitPath(pathString);
+  if (!allParts || allParts.length !== 4) {
+    throw new TypeError("Invalid path '" + pathString + "'");
+  }
+  allParts[1] = allParts[1] || '';
+  allParts[2] = allParts[2] || '';
+  allParts[3] = allParts[3] || '';
+
+  return {
+    root: allParts[0],
+    dir: allParts[0] + allParts[1].slice(0, -1),
+    base: allParts[2],
+    ext: allParts[3],
+    name: allParts[2].slice(0, allParts[2].length - allParts[3].length)
+  };
+};
+
+
+if (isWindows)
+  module.exports = win32.parse;
+else /* posix */
+  module.exports = posix.parse;
+
+module.exports.posix = posix.parse;
+module.exports.win32 = win32.parse;
diff --git a/deps/npm/node_modules/path-parse/package.json b/deps/npm/node_modules/path-parse/package.json
new file mode 100644
index 00000000000000..56d19c753c875b
--- /dev/null
+++ b/deps/npm/node_modules/path-parse/package.json
@@ -0,0 +1,65 @@
+{
+  "_args": [
+    [
+      "path-parse@1.0.6",
+      "/Users/aeschright/code/npm-release"
+    ]
+  ],
+  "_development": true,
+  "_from": "path-parse@1.0.6",
+  "_id": "path-parse@1.0.6",
+  "_inBundle": false,
+  "_integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
+  "_location": "/path-parse",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "path-parse@1.0.6",
+    "name": "path-parse",
+    "escapedName": "path-parse",
+    "rawSpec": "1.0.6",
+    "saveSpec": null,
+    "fetchSpec": "1.0.6"
+  },
+  "_requiredBy": [
+    "/resolve"
+  ],
+  "_resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+  "_spec": "1.0.6",
+  "_where": "/Users/aeschright/code/npm-release",
+  "author": {
+    "name": "Javier Blanco",
+    "email": "http://jbgutierrez.info"
+  },
+  "bugs": {
+    "url": "https://github.com/jbgutierrez/path-parse/issues"
+  },
+  "description": "Node.js path.parse() ponyfill",
+  "homepage": "https://github.com/jbgutierrez/path-parse#readme",
+  "keywords": [
+    "path",
+    "paths",
+    "file",
+    "dir",
+    "parse",
+    "built-in",
+    "util",
+    "utils",
+    "core",
+    "ponyfill",
+    "polyfill",
+    "shim"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "path-parse",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jbgutierrez/path-parse.git"
+  },
+  "scripts": {
+    "test": "node test.js"
+  },
+  "version": "1.0.6"
+}
diff --git a/deps/npm/node_modules/path-parse/test.js b/deps/npm/node_modules/path-parse/test.js
new file mode 100644
index 00000000000000..0b30c123936395
--- /dev/null
+++ b/deps/npm/node_modules/path-parse/test.js
@@ -0,0 +1,77 @@
+var assert = require('assert');
+var pathParse = require('./index');
+
+var winParseTests = [
+  [{ root: 'C:\\', dir: 'C:\\path\\dir', base: 'index.html', ext: '.html', name: 'index' }, 'C:\\path\\dir\\index.html'],
+  [{ root: 'C:\\', dir: 'C:\\another_path\\DIR\\1\\2\\33', base: 'index', ext: '', name: 'index' }, 'C:\\another_path\\DIR\\1\\2\\33\\index'],
+  [{ root: '', dir: 'another_path\\DIR with spaces\\1\\2\\33', base: 'index', ext: '', name: 'index' }, 'another_path\\DIR with spaces\\1\\2\\33\\index'],
+  [{ root: '\\', dir: '\\foo', base: 'C:', ext: '', name: 'C:' }, '\\foo\\C:'],
+  [{ root: '', dir: '', base: 'file', ext: '', name: 'file' }, 'file'],
+  [{ root: '', dir: '.', base: 'file', ext: '', name: 'file' }, '.\\file'],
+
+  // unc
+  [{ root: '\\\\server\\share\\', dir: '\\\\server\\share\\', base: 'file_path', ext: '', name: 'file_path' }, '\\\\server\\share\\file_path'],
+  [{ root: '\\\\server two\\shared folder\\', dir: '\\\\server two\\shared folder\\', base: 'file path.zip', ext: '.zip', name: 'file path' }, '\\\\server two\\shared folder\\file path.zip'],
+  [{ root: '\\\\teela\\admin$\\', dir: '\\\\teela\\admin$\\', base: 'system32', ext: '', name: 'system32' }, '\\\\teela\\admin$\\system32'],
+  [{ root: '\\\\?\\UNC\\', dir: '\\\\?\\UNC\\server', base: 'share', ext: '', name: 'share' }, '\\\\?\\UNC\\server\\share']
+];
+
+var winSpecialCaseFormatTests = [
+  [{dir: 'some\\dir'}, 'some\\dir\\'],
+  [{base: 'index.html'}, 'index.html'],
+  [{}, '']
+];
+
+var unixParseTests = [
+  [{ root: '/', dir: '/home/user/dir', base: 'file.txt', ext: '.txt', name: 'file' }, '/home/user/dir/file.txt'],
+  [{ root: '/', dir: '/home/user/a dir', base: 'another File.zip', ext: '.zip', name: 'another File' }, '/home/user/a dir/another File.zip'],
+  [{ root: '/', dir: '/home/user/a dir/', base: 'another&File.', ext: '.', name: 'another&File' }, '/home/user/a dir//another&File.'],
+  [{ root: '/', dir: '/home/user/a$$$dir/', base: 'another File.zip', ext: '.zip', name: 'another File' }, '/home/user/a$$$dir//another File.zip'],
+  [{ root: '', dir: 'user/dir', base: 'another File.zip', ext: '.zip', name: 'another File' }, 'user/dir/another File.zip'],
+  [{ root: '', dir: '', base: 'file', ext: '', name: 'file' }, 'file'],
+  [{ root: '', dir: '', base: '.\\file', ext: '', name: '.\\file' }, '.\\file'],
+  [{ root: '', dir: '.', base: 'file', ext: '', name: 'file' }, './file'],
+  [{ root: '', dir: '', base: 'C:\\foo', ext: '', name: 'C:\\foo' }, 'C:\\foo']
+];
+
+var unixSpecialCaseFormatTests = [
+  [{dir: 'some/dir'}, 'some/dir/'],
+  [{base: 'index.html'}, 'index.html'],
+  [{}, '']
+];
+
+var errors = [
+  {input: null, message: /Parameter 'pathString' must be a string, not/},
+  {input: {}, message: /Parameter 'pathString' must be a string, not object/},
+  {input: true, message: /Parameter 'pathString' must be a string, not boolean/},
+  {input: 1, message: /Parameter 'pathString' must be a string, not number/},
+  {input: undefined, message: /Parameter 'pathString' must be a string, not undefined/},
+];
+
+checkParseFormat(pathParse.win32, winParseTests);
+checkParseFormat(pathParse.posix, unixParseTests);
+checkErrors(pathParse.win32);
+checkErrors(pathParse.posix);
+
+function checkErrors(parse) {
+  errors.forEach(function(errorCase) {
+    try {
+      parse(errorCase.input);
+    } catch(err) {
+      assert.ok(err instanceof TypeError);
+      assert.ok(
+        errorCase.message.test(err.message),
+        'expected ' + errorCase.message + ' to match ' + err.message
+      );
+      return;
+    }
+
+    assert.fail('should have thrown');
+  });
+}
+
+function checkParseFormat(parse, testCases) {
+  testCases.forEach(function(testCase) {
+    assert.deepEqual(parse(testCase[1]), testCase[0]);
+  });
+}
diff --git a/deps/npm/node_modules/read-package-tree/README.md b/deps/npm/node_modules/read-package-tree/README.md
index d2248f82b55a9e..c8edffd2bcc2e4 100644
--- a/deps/npm/node_modules/read-package-tree/README.md
+++ b/deps/npm/node_modules/read-package-tree/README.md
@@ -1,5 +1,7 @@
 # read-package-tree
 
+[![Build Status](https://travis-ci.org/npm/read-package-tree.svg?branch=master)](https://travis-ci.org/npm/read-package-tree)
+
 Read the contents of node_modules.
 
 ## USAGE
diff --git a/deps/npm/node_modules/read-package-tree/package.json b/deps/npm/node_modules/read-package-tree/package.json
index bb7295dadac684..948f096620033a 100644
--- a/deps/npm/node_modules/read-package-tree/package.json
+++ b/deps/npm/node_modules/read-package-tree/package.json
@@ -1,32 +1,29 @@
 {
-  "_args": [
-    [
-      "read-package-tree@5.2.1",
-      "/Users/rebecca/code/npm"
-    ]
-  ],
-  "_from": "read-package-tree@5.2.1",
-  "_id": "read-package-tree@5.2.1",
+  "_from": "read-package-tree@latest",
+  "_id": "read-package-tree@5.2.2",
   "_inBundle": false,
-  "_integrity": "sha512-2CNoRoh95LxY47LvqrehIAfUVda2JbuFE/HaGYs42bNrGG+ojbw1h3zOcPcQ+1GQ3+rkzNndZn85u1XyZ3UsIA==",
+  "_integrity": "sha512-rW3XWUUkhdKmN2JKB4FL563YAgtINifso5KShykufR03nJ5loGFlkUMe1g/yxmqX073SoYYTsgXu7XdDinKZuA==",
   "_location": "/read-package-tree",
   "_phantomChildren": {},
   "_requested": {
-    "type": "version",
+    "type": "tag",
     "registry": true,
-    "raw": "read-package-tree@5.2.1",
+    "raw": "read-package-tree@latest",
     "name": "read-package-tree",
     "escapedName": "read-package-tree",
-    "rawSpec": "5.2.1",
+    "rawSpec": "latest",
     "saveSpec": null,
-    "fetchSpec": "5.2.1"
+    "fetchSpec": "latest"
   },
   "_requiredBy": [
-    "/"
+    "#USER",
+    "/",
+    "/licensee"
   ],
-  "_resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.2.1.tgz",
-  "_spec": "5.2.1",
-  "_where": "/Users/rebecca/code/npm",
+  "_resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.2.2.tgz",
+  "_shasum": "4b6a0ef2d943c1ea36a578214c9a7f6b7424f7a8",
+  "_spec": "read-package-tree@latest",
+  "_where": "/Users/zkat/Documents/code/work/npm",
   "author": {
     "name": "Isaac Z. Schlueter",
     "email": "i@izs.me",
@@ -35,6 +32,7 @@
   "bugs": {
     "url": "https://github.com/npm/read-package-tree/issues"
   },
+  "bundleDependencies": false,
   "dependencies": {
     "debuglog": "^1.0.1",
     "dezalgo": "^1.0.0",
@@ -42,12 +40,13 @@
     "read-package-json": "^2.0.0",
     "readdir-scoped-modules": "^1.0.0"
   },
+  "deprecated": false,
   "description": "Read the contents of node_modules.",
   "devDependencies": {
     "archy": "^1.0.0",
     "mkdirp": "^0.5.1",
     "tacks": "^1.2.1",
-    "tap": "^6.3.0"
+    "tap": "^12.5.2"
   },
   "directories": {
     "test": "test"
@@ -66,5 +65,5 @@
   "scripts": {
     "test": "tap test/*.js"
   },
-  "version": "5.2.1"
+  "version": "5.2.2"
 }
diff --git a/deps/npm/node_modules/read-package-tree/rpt.js b/deps/npm/node_modules/read-package-tree/rpt.js
index c577ea18011868..fd43be9c22c0c3 100644
--- a/deps/npm/node_modules/read-package-tree/rpt.js
+++ b/deps/npm/node_modules/read-package-tree/rpt.js
@@ -47,9 +47,9 @@ function Node (pkg, logical, physical, er, cache, fromLink) {
 
   debug(node.constructor.name, dpath(physical), pkg && pkg._id)
 
-  const parent = path.dirname(logical)
+  const parent = path.basename(path.dirname(logical))
   if (parent[0] === '@') {
-    node.name = path.basename(parent) + '/' + path.basename(logical)
+    node.name = parent + '/' + path.basename(logical)
   } else {
     node.name = path.basename(logical)
   }
@@ -83,12 +83,11 @@ function Link (pkg, logical, physical, realpath, er, cache) {
 
   debug(this.constructor.name, dpath(physical), pkg && pkg._id)
 
-  const dir = path.dirname(logical)
-  const parent = path.dirname(dir)
+  const parent = path.basename(path.dirname(logical))
   if (parent[0] === '@') {
-    this.name = path.basename(parent) + '/' + path.basename(dir)
+    this.name = parent + '/' + path.basename(logical)
   } else {
-    this.name = path.basename(dir)
+    this.name = path.basename(logical)
   }
   this.id = ID++
   this.path = logical
diff --git a/deps/npm/package.json b/deps/npm/package.json
index 0b795b363e15c3..24827e59cfd9a1 100644
--- a/deps/npm/package.json
+++ b/deps/npm/package.json
@@ -1,5 +1,5 @@
 {
-  "version": "6.7.0",
+  "version": "6.9.0",
   "name": "npm",
   "description": "a package manager for JavaScript",
   "keywords": [
@@ -76,7 +76,7 @@
     "libnpm": "^2.0.1",
     "libnpmhook": "^5.0.2",
     "libnpx": "^10.2.0",
-    "lock-verify": "^2.0.2",
+    "lock-verify": "^2.1.0",
     "lockfile": "^1.0.4",
     "lodash._baseuniq": "~4.6.0",
     "lodash.clonedeep": "~4.5.0",
@@ -90,21 +90,21 @@
     "move-concurrently": "^1.0.1",
     "node-gyp": "^3.8.0",
     "nopt": "~4.0.1",
-    "normalize-package-data": "~2.4.0",
+    "normalize-package-data": "^2.5.0",
     "npm-audit-report": "^1.3.2",
     "npm-cache-filename": "~1.0.2",
     "npm-install-checks": "~3.0.0",
     "npm-lifecycle": "^2.1.0",
     "npm-package-arg": "^6.1.0",
-    "npm-packlist": "^1.2.0",
+    "npm-packlist": "^1.4.1",
     "npm-pick-manifest": "^2.2.3",
-    "npm-registry-fetch": "^3.8.0",
+    "npm-registry-fetch": "^3.9.0",
     "npm-user-validate": "~1.0.0",
     "npmlog": "~4.1.2",
     "once": "~1.4.0",
     "opener": "^1.5.1",
     "osenv": "^0.1.5",
-    "pacote": "^9.4.0",
+    "pacote": "^9.5.0",
     "path-is-inside": "~1.0.2",
     "promise-inflight": "~1.0.1",
     "qrcode-terminal": "^0.12.0",
@@ -114,7 +114,7 @@
     "read-cmd-shim": "~1.0.1",
     "read-installed": "~4.0.3",
     "read-package-json": "^2.0.13",
-    "read-package-tree": "^5.2.1",
+    "read-package-tree": "^5.2.2",
     "readable-stream": "^3.1.1",
     "request": "^2.88.0",
     "retry": "^0.12.0",
@@ -269,7 +269,7 @@
   "devDependencies": {
     "deep-equal": "^1.0.1",
     "get-stream": "^4.1.0",
-    "licensee": "^5.0.0",
+    "licensee": "^6.1.0",
     "marked": "^0.6.0",
     "marked-man": "^0.2.1",
     "npm-registry-couchapp": "^2.7.1",
@@ -278,7 +278,8 @@
     "sprintf-js": "^1.1.2",
     "standard": "^11.0.1",
     "tacks": "^1.2.7",
-    "tap": "^12.1.1"
+    "tap": "^12.5.3",
+    "tar-stream": "^2.0.0"
   },
   "scripts": {
     "dumpconf": "env | grep npm | sort | uniq",
diff --git a/deps/npm/scripts/install.sh b/deps/npm/scripts/install.sh
index e352e55caf0429..4ed1062aa1308b 100755
--- a/deps/npm/scripts/install.sh
+++ b/deps/npm/scripts/install.sh
@@ -98,8 +98,10 @@ fi
 
 if [ $ret -eq 0 ] && [ -x "$tar" ]; then
   echo "tar=$tar"
-  echo "version:"
-  $tar --version
+  if [ $tar --version > /dev/null 2>&1 ]; then
+    echo "version:"
+    $tar --version
+  fi
   ret=$?
 fi
 
diff --git a/deps/npm/scripts/maketest b/deps/npm/scripts/maketest
index bf0c2c5f655db2..4ef1e9266fb04e 100755
--- a/deps/npm/scripts/maketest
+++ b/deps/npm/scripts/maketest
@@ -69,7 +69,7 @@ test('setup', t => {
 })
 
 test('example', t => {
-  return common.npm(['install'], conf).then((code, stdout, stderr) => {
+  return common.npm(['install'], conf).then(([code, stdout, stderr]) => {
     t.is(code, 0, 'command ran ok')
     t.comment(stdout.trim())
     t.comment(stderr.trim())
diff --git a/deps/npm/test/fixtures/config/userconfig-with-gc b/deps/npm/test/fixtures/config/userconfig-with-gc
deleted file mode 100644
index 0fc64f6946feac..00000000000000
--- a/deps/npm/test/fixtures/config/userconfig-with-gc
+++ /dev/null
@@ -1,21 +0,0 @@
-globalconfig=/Users/zkat/Documents/code/work/npm/test/fixtures/config/globalconfig
-email=i@izs.me
-env-thing=asdf
-init.author.name=Isaac Z. Schlueter
-init.author.email=i@izs.me
-init.author.url=http://blog.izs.me/
-init.version=1.2.3
-npm:publishtest=true
-_npmjs.org:couch=https://admin:password@localhost:5984/registry
-npm-www:nocache=1
-sign-git-tag=false
-message=v%s
-strict-ssl=false
-_auth="dXNlcm5hbWU6cGFzc3dvcmQ="
-
-[_token]
-AuthSession=yabba-dabba-doodle
-version=1
-expires=1345001053415
-path=/
-httponly=true
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/07/07/8db5f6377f6321fceaaedf497de124dc9465 b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/07/07/8db5f6377f6321fceaaedf497de124dc9465
deleted file mode 100644
index cbd0cddbacf6bd..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/07/07/8db5f6377f6321fceaaedf497de124dc9465 and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/28/eb/847a949e71eb9041fd6567a36c9acfcf2bed b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/28/eb/847a949e71eb9041fd6567a36c9acfcf2bed
deleted file mode 100644
index d98a345996b5b4..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/28/eb/847a949e71eb9041fd6567a36c9acfcf2bed and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/2a/77/307e108bfb57107c4c334abb5ef5395dc68a b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/2a/77/307e108bfb57107c4c334abb5ef5395dc68a
deleted file mode 100644
index 94a4f0f10715f6..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/2a/77/307e108bfb57107c4c334abb5ef5395dc68a and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/35/6a/192b7913b04c54574d18c28d46e6395428ab b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/35/6a/192b7913b04c54574d18c28d46e6395428ab
deleted file mode 100644
index 56a6051ca2b02b..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/35/6a/192b7913b04c54574d18c28d46e6395428ab
+++ /dev/null
@@ -1 +0,0 @@
-1
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/41/c8/0b2b6f5432c60cddb81932ab56563b444f52 b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/41/c8/0b2b6f5432c60cddb81932ab56563b444f52
deleted file mode 100644
index 99e003fb37fc6a..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/41/c8/0b2b6f5432c60cddb81932ab56563b444f52 and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/45/c8/a39b626c1f83f8b8f53007c2f60eb98eee9d b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/45/c8/a39b626c1f83f8b8f53007c2f60eb98eee9d
deleted file mode 100644
index 4e09b38d524809..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/45/c8/a39b626c1f83f8b8f53007c2f60eb98eee9d and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/69/42/4826f3405f79f142e6fc3d9ae58d4dbb9200 b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/69/42/4826f3405f79f142e6fc3d9ae58d4dbb9200
deleted file mode 100644
index 4390da71aeacba..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/69/42/4826f3405f79f142e6fc3d9ae58d4dbb9200 and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/82/f3/ccba11914dc88bcb185ee3b1b33b564272bc b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/82/f3/ccba11914dc88bcb185ee3b1b33b564272bc
deleted file mode 100644
index 56dfd8ddd78a32..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/82/f3/ccba11914dc88bcb185ee3b1b33b564272bc and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/b6/bb/e0b0674b9d719708ca38de8c237cb526c3d1 b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/b6/bb/e0b0674b9d719708ca38de8c237cb526c3d1
deleted file mode 100644
index 6a47bd68093ef2..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/b6/bb/e0b0674b9d719708ca38de8c237cb526c3d1 and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/b7/96/69bb42ecb409f83d583cad52ca17eaa1643f b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/b7/96/69bb42ecb409f83d583cad52ca17eaa1643f
deleted file mode 100644
index e41d108f1782ee..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/b7/96/69bb42ecb409f83d583cad52ca17eaa1643f and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/c2/7a/36bf00f3a7a3d24a8fbc7853f06fce4e9c86 b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/c2/7a/36bf00f3a7a3d24a8fbc7853f06fce4e9c86
deleted file mode 100644
index 08aafb5726f4d5..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/c2/7a/36bf00f3a7a3d24a8fbc7853f06fce4e9c86 and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/ca/43/09dadee6b54cc0b8d247e8d7c7a0975bdc9b b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/ca/43/09dadee6b54cc0b8d247e8d7c7a0975bdc9b
deleted file mode 100644
index 83343569828a62..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/ca/43/09dadee6b54cc0b8d247e8d7c7a0975bdc9b and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/d2/bd/e817d176ffade894ab71458e682a14b86dc9 b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/d2/bd/e817d176ffade894ab71458e682a14b86dc9
deleted file mode 100644
index 0d0648c17a549c..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/d2/bd/e817d176ffade894ab71458e682a14b86dc9 and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/d7/aa/327bcecf518f9106ac6b8f003fa3bcea8566 b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/d7/aa/327bcecf518f9106ac6b8f003fa3bcea8566
deleted file mode 100644
index be0f7640fa9d55..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/d7/aa/327bcecf518f9106ac6b8f003fa3bcea8566 and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/e0/50/08f3ff82b34f17b1e972454a0ab70a269c7d b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/e0/50/08f3ff82b34f17b1e972454a0ab70a269c7d
deleted file mode 100644
index 40d8213d36ce63..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/e0/50/08f3ff82b34f17b1e972454a0ab70a269c7d and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/ee/56/8a2b1efaeb95bec4d9e59e5301fc63339866 b/deps/npm/test/npm_cache/_cacache/content-v2/sha1/ee/56/8a2b1efaeb95bec4d9e59e5301fc63339866
deleted file mode 100644
index c4b25ccf69b893..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha1/ee/56/8a2b1efaeb95bec4d9e59e5301fc63339866 and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/0b/61/241d7c17bcbb1baee7094d14b7c451efecc7ffcbd92598a0f13d313cc9ebc2a07e61f007baf58fbf94ff9a8695bdd5cae7ce03bbf1e94e93613a00f25f21 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/0b/61/241d7c17bcbb1baee7094d14b7c451efecc7ffcbd92598a0f13d313cc9ebc2a07e61f007baf58fbf94ff9a8695bdd5cae7ce03bbf1e94e93613a00f25f21
deleted file mode 100644
index 945c9b46d684f0..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/0b/61/241d7c17bcbb1baee7094d14b7c451efecc7ffcbd92598a0f13d313cc9ebc2a07e61f007baf58fbf94ff9a8695bdd5cae7ce03bbf1e94e93613a00f25f21
+++ /dev/null
@@ -1 +0,0 @@
-.
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/15/ad/34853f1149526d97f08b50c3aaa9ec84031a7ebfb7bb59e3f2317d5c306286528cb91bf53dc596802d316762e5ba4641764b2680945ba3f620d3cf798a05 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/15/ad/34853f1149526d97f08b50c3aaa9ec84031a7ebfb7bb59e3f2317d5c306286528cb91bf53dc596802d316762e5ba4641764b2680945ba3f620d3cf798a05
deleted file mode 100644
index 1efc06603f9b3e..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/15/ad/34853f1149526d97f08b50c3aaa9ec84031a7ebfb7bb59e3f2317d5c306286528cb91bf53dc596802d316762e5ba4641764b2680945ba3f620d3cf798a05
+++ /dev/null
@@ -1 +0,0 @@
-{"_id":"underscore","_rev":"131-e6bd048b180d8ca3830d5242e6bd93fa","name":"underscore","description":"JavaScript's functional programming helper library.","dist-tags":{"latest":"1.5.1","stable":"1.5.1"},"versions":{"1.0.3":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.0.3","_id":"underscore@1.0.3","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/underscore/-/underscore-1.0.3.tgz","shasum":"7793a6f776dffa491d224eaf1d819824d4dc288a"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.0.4":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.0.4","_id":"underscore@1.0.4","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/underscore/-/underscore-1.0.4.tgz","shasum":"563141126b4e412f6c12c2ae2fb44ef0edd23fb2"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.0":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.1.0","_id":"underscore@1.1.0","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/underscore/-/underscore-1.1.0.tgz","shasum":"8bf44d9cc8c3a614d7940035522e1f95b682b071"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.1":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.1.1","_id":"underscore@1.1.1","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/underscore/-/underscore-1.1.1.tgz","shasum":"65dddb8cd0ee3f0094f46db72ea269d5a4f5fca4"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.2":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.1.2","_id":"underscore@1.1.2","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/underscore/-/underscore-1.1.2.tgz","shasum":"8cf4ae3900c32f3e3f06579d473a45ad768251e8"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.3":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.1.3","_id":"underscore@1.1.3","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.8-1","_nodeVersion":"v0.2.5","dist":{"tarball":"http://localhost:1337/underscore/-/underscore-1.1.3.tgz","shasum":"6bd1969042a65bd3966d8924c14909f2284631dd"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.4":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore.js","version":"1.1.4","_id":"underscore@1.1.4","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.9","_nodeVersion":"v0.5.0-pre","dist":{"shasum":"9e82274902865625b3a6d4c315a38ffd80047dae","tarball":"http://localhost:1337/underscore/-/underscore-1.1.4.tgz"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.1.5":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.1.5","_id":"underscore@1.1.5","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.16","_nodeVersion":"v0.4.2","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"23601d62c75619998b2f0db24938102793336a56","tarball":"http://localhost:1337/underscore/-/underscore-1.1.5.tgz"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.6":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.1.6","_id":"underscore@1.1.6","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.18","_nodeVersion":"v0.4.2","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"6868da1bdd72d75285be0b4e50f228e70d001a2c","tarball":"http://localhost:1337/underscore/-/underscore-1.1.6.tgz"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.7":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.1.7","devDependencies":{},"_id":"underscore@1.1.7","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"40bab84bad19d230096e8d6ef628bff055d83db0","tarball":"http://localhost:1337/underscore/-/underscore-1.1.7.tgz"},"scripts":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.2.0":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.0","_npmJsonOpts":{"file":"/Users/jashkenas/.npm/underscore/1.2.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"underscore@1.2.0","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"b32ce32c8c118caa8031c10b54c7f65ab3b557fd","tarball":"http://localhost:1337/underscore/-/underscore-1.2.0.tgz"},"scripts":{},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"directories":{}},"1.2.1":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.1","_npmJsonOpts":{"file":"/Users/jashkenas/.npm/underscore/1.2.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"underscore@1.2.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"fc5c6b0765673d92a2d4ac8b4dc0aa88702e2bd4","tarball":"http://localhost:1337/underscore/-/underscore-1.2.1.tgz"},"scripts":{},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"directories":{}},"1.2.2":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.2","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.2.2","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"74dd40e9face84e724eb2edae945b8aedc233ba3","tarball":"http://localhost:1337/underscore/-/underscore-1.2.2.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.2.3":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.3","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.2.3","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"11b874da70f4683d7d48bba2b44be1e600d2f6cf","tarball":"http://localhost:1337/underscore/-/underscore-1.2.3.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.2.4":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.4","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.2.4","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"e8da6241aa06f64df2473bb2590b8c17c84c3c7e","tarball":"http://localhost:1337/underscore/-/underscore-1.2.4.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.3.0":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.0","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"253b2d79b7bb67943ced0fc744eb18267963ede8","tarball":"http://localhost:1337/underscore/-/underscore-1.3.0.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.3.1":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.1","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.1","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"6cb8aad0e77eb5dbbfb54b22bcd8697309cf9641","tarball":"http://localhost:1337/underscore/-/underscore-1.3.1.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.3.2":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.2","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"1b4e455089ab1d1d38ab6794ffe6cf08f764394a","tarball":"http://localhost:1337/underscore/-/underscore-1.3.2.tgz"},"readme":"                       __                                                         \n                      /\\ \\                                                         __           \n     __  __    ___    \\_\\ \\     __   _ __   ____    ___    ___   _ __    __       /\\_\\    ____  \n    /\\ \\/\\ \\ /' _ `\\  /'_  \\  /'__`\\/\\  __\\/ ,__\\  / ___\\ / __`\\/\\  __\\/'__`\\     \\/\\ \\  /',__\\ \n    \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\  __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\  __/  __  \\ \\ \\/\\__, `\\\n     \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n      \\/___/  \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/  \\/____/\\/___/  \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/ \n                                                                                  \\ \\____/      \n                                                                                   \\/___/\n                                                                               \nUnderscore.js is a utility-belt library for JavaScript that provides \nsupport for the usual functional suspects (each, map, reduce, filter...) \nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://documentcloud.github.com/underscore/\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.3.3":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.3","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.3","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"47ac53683daf832bfa952e1774417da47817ae42","tarball":"http://localhost:1337/underscore/-/underscore-1.3.3.tgz"},"readme":"                       __                                                         \n                      /\\ \\                                                         __           \n     __  __    ___    \\_\\ \\     __   _ __   ____    ___    ___   _ __    __       /\\_\\    ____  \n    /\\ \\/\\ \\ /' _ `\\  /'_  \\  /'__`\\/\\  __\\/ ,__\\  / ___\\ / __`\\/\\  __\\/'__`\\     \\/\\ \\  /',__\\ \n    \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\  __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\  __/  __  \\ \\ \\/\\__, `\\\n     \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n      \\/___/  \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/  \\/____/\\/___/  \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/ \n                                                                                  \\ \\____/      \n                                                                                   \\/___/\n                                                                               \nUnderscore.js is a utility-belt library for JavaScript that provides \nsupport for the usual functional suspects (each, map, reduce, filter...) \nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://documentcloud.github.com/underscore/\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.4.0":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.4.0","readme":"                       __\n                      /\\ \\                                                         __\n     __  __    ___    \\_\\ \\     __   _ __   ____    ___    ___   _ __    __       /\\_\\    ____\n    /\\ \\/\\ \\ /' _ `\\  /'_  \\  /'__`\\/\\  __\\/ ,__\\  / ___\\ / __`\\/\\  __\\/'__`\\     \\/\\ \\  /',__\\\n    \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\  __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\  __/  __  \\ \\ \\/\\__, `\\\n     \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n      \\/___/  \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/  \\/____/\\/___/  \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n                                                                                  \\ \\____/\n                                                                                   \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","_id":"underscore@1.4.0","dist":{"shasum":"caaf510c272cbb53748a225dcfd906e5f5a5ccdd","tarball":"http://localhost:1337/underscore/-/underscore-1.4.0.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.4.1":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.4.1","readme":"                       __\n                      /\\ \\                                                         __\n     __  __    ___    \\_\\ \\     __   _ __   ____    ___    ___   _ __    __       /\\_\\    ____\n    /\\ \\/\\ \\ /' _ `\\  /'_  \\  /'__`\\/\\  __\\/ ,__\\  / ___\\ / __`\\/\\  __\\/'__`\\     \\/\\ \\  /',__\\\n    \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\  __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\  __/  __  \\ \\ \\/\\__, `\\\n     \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n      \\/___/  \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/  \\/____/\\/___/  \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n                                                                                  \\ \\____/\n                                                                                   \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","_id":"underscore@1.4.1","dist":{"shasum":"f6a25ffe5d6d3ed4fe8fef37c3a9bfe689b16bb9","tarball":"http://localhost:1337/underscore/-/underscore-1.4.1.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.4.2":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.4.2","readme":"                       __\n                      /\\ \\                                                         __\n     __  __    ___    \\_\\ \\     __   _ __   ____    ___    ___   _ __    __       /\\_\\    ____\n    /\\ \\/\\ \\ /' _ `\\  /'_  \\  /'__`\\/\\  __\\/ ,__\\  / ___\\ / __`\\/\\  __\\/'__`\\     \\/\\ \\  /',__\\\n    \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\  __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\  __/  __  \\ \\ \\/\\__, `\\\n     \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n      \\/___/  \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/  \\/____/\\/___/  \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n                                                                                  \\ \\____/\n                                                                                   \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","_id":"underscore@1.4.2","dist":{"shasum":"cb2aae6a7999a89fd55aaee75bce0311698cebfb","tarball":"http://localhost:1337/underscore/-/underscore-1.4.2.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.4.3":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.4.3","readme":"                       __\n                      /\\ \\                                                         __\n     __  __    ___    \\_\\ \\     __   _ __   ____    ___    ___   _ __    __       /\\_\\    ____\n    /\\ \\/\\ \\ /' _ `\\  /'_  \\  /'__`\\/\\  __\\/ ,__\\  / ___\\ / __`\\/\\  __\\/'__`\\     \\/\\ \\  /',__\\\n    \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\  __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\  __/  __  \\ \\ \\/\\__, `\\\n     \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n      \\/___/  \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/  \\/____/\\/___/  \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n                                                                                  \\ \\____/\n                                                                                   \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","_id":"underscore@1.4.3","dist":{"shasum":"b3d0aaa1ee74d886ea4f2648021a4f8ad779ed1d","tarball":"http://localhost:1337/underscore/-/underscore-1.4.3.tgz"},"_npmVersion":"1.1.63","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.4.4":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.4.4","devDependencies":{"phantomjs":"0.2.2"},"scripts":{"test":"phantomjs test/vendor/runner.js test/index.html?noglobals=true"},"readme":"                       __\n                      /\\ \\                                                         __\n     __  __    ___    \\_\\ \\     __   _ __   ____    ___    ___   _ __    __       /\\_\\    ____\n    /\\ \\/\\ \\ /' _ `\\  /'_  \\  /'__`\\/\\  __\\/ ,__\\  / ___\\ / __`\\/\\  __\\/'__`\\     \\/\\ \\  /',__\\\n    \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\  __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\  __/  __  \\ \\ \\/\\__, `\\\n     \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n      \\/___/  \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/  \\/____/\\/___/  \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n                                                                                  \\ \\____/\n                                                                                   \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","_id":"underscore@1.4.4","dist":{"shasum":"61a6a32010622afa07963bf325203cf12239d604","tarball":"http://localhost:1337/underscore/-/underscore-1.4.4.tgz"},"_npmVersion":"1.1.63","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.5.0":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.5.0","devDependencies":{"phantomjs":"1.9.0-1"},"scripts":{"test":"phantomjs test/vendor/runner.js test/index.html?noglobals=true"},"license":"MIT","readme":"                       __\n                      /\\ \\                                                         __\n     __  __    ___    \\_\\ \\     __   _ __   ____    ___    ___   _ __    __       /\\_\\    ____\n    /\\ \\/\\ \\ /' _ `\\  /'_  \\  /'__`\\/\\  __\\/ ,__\\  / ___\\ / __`\\/\\  __\\/'__`\\     \\/\\ \\  /',__\\\n    \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\  __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\  __/  __  \\ \\ \\/\\__, `\\\n     \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n      \\/___/  \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/  \\/____/\\/___/  \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n                                                                                  \\ \\____/\n                                                                                   \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/documentcloud/underscore/issues"},"_id":"underscore@1.5.0","dist":{"shasum":"90c57994d1de16aab8938142e3c5b43547019362","tarball":"http://localhost:1337/underscore/-/underscore-1.5.0.tgz"},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.5.1":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/jashkenas/underscore.git"},"main":"underscore.js","version":"1.5.1","devDependencies":{"phantomjs":"1.9.0-1"},"scripts":{"test":"phantomjs test/vendor/runner.js test/index.html?noglobals=true"},"license":"MIT","readme":"                       __\n                      /\\ \\                                                         __\n     __  __    ___    \\_\\ \\     __   _ __   ____    ___    ___   _ __    __       /\\_\\    ____\n    /\\ \\/\\ \\ /' _ `\\  /'_  \\  /'__`\\/\\  __\\/ ,__\\  / ___\\ / __`\\/\\  __\\/'__`\\     \\/\\ \\  /',__\\\n    \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\  __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\  __/  __  \\ \\ \\/\\__, `\\\n     \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n      \\/___/  \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/  \\/____/\\/___/  \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/\n                                                                                  \\ \\____/\n                                                                                   \\/___/\n\nUnderscore.js is a utility-belt library for JavaScript that provides\nsupport for the usual functional suspects (each, map, reduce, filter...)\nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://underscorejs.org\n\nUnderscore is an open-sourced component of DocumentCloud:\nhttps://github.com/documentcloud\n\nMany thanks to our contributors:\nhttps://github.com/jashkenas/underscore/contributors\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/jashkenas/underscore/issues"},"_id":"underscore@1.5.1","dist":{"shasum":"d2bde817d176ffade894ab71458e682a14b86dc9","tarball":"http://localhost:1337/underscore/-/underscore-1.5.1.tgz"},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}}},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"time":{"1.0.3":"2011-12-07T15:12:18.045Z","1.0.4":"2011-12-07T15:12:18.045Z","1.1.0":"2011-12-07T15:12:18.045Z","1.1.1":"2011-12-07T15:12:18.045Z","1.1.2":"2011-12-07T15:12:18.045Z","1.1.3":"2011-12-07T15:12:18.045Z","1.1.4":"2011-12-07T15:12:18.045Z","1.1.5":"2011-12-07T15:12:18.045Z","1.1.6":"2011-12-07T15:12:18.045Z","1.1.7":"2011-12-07T15:12:18.045Z","1.2.0":"2011-12-07T15:12:18.045Z","1.2.1":"2011-12-07T15:12:18.045Z","1.2.2":"2011-11-14T20:28:47.115Z","1.2.3":"2011-12-07T15:12:18.045Z","1.2.4":"2012-01-09T17:23:14.818Z","1.3.0":"2012-01-11T16:41:38.459Z","1.3.1":"2012-01-23T22:57:36.474Z","1.3.2":"2012-04-09T18:38:14.345Z","1.3.3":"2012-04-10T14:43:48.089Z","1.4.0":"2012-09-27T22:02:55.267Z","1.4.1":"2012-10-01T17:20:22.595Z","1.4.2":"2012-10-07T03:05:02.986Z","1.4.3":"2012-12-04T18:47:36.401Z","1.4.4":"2013-01-30T02:12:42.969Z","1.5.0":"2013-07-06T18:05:58.721Z","1.5.1":"2013-07-08T08:38:10.051Z"},"repository":{"type":"git","url":"git://github.com/jashkenas/underscore.git"},"users":{"vesln":true,"mvolkmann":true,"lancehunt":true,"mikl":true,"linus":true,"vasc":true,"bat":true,"dmalam":true,"mbrevoort":true,"danielr":true,"rsimoes":true,"thlorenz":true,"jharding":true,"tellnes":true,"fgribreau":true,"pid":true,"tylerstalder":true,"graemef":true,"gillesruppert":true,"travishorn":true,"m42am":true,"af":true,"bencevans":true,"Scryptonite":true,"konklone":true,"esp":true,"bryanburgers":true,"ehershey":true,"freethenation":true,"dannydulai":true,"megadrive":true,"lupomontero":true,"cj.nichols":true,"dbrockman":true,"maxmaximov":true,"hyqhyq_3":true,"zonetti":true,"cparker15":true,"lemulot":true,"mlowe":true,"chilts":true,"shanewholloway":true,"elgs":true,"eins78":true,"moonpyk":true},"_attachments":{"underscore-1.5.1.tgz":{"content_type":"application/octet-stream","revpos":129,"digest":"md5-jEzAnjdRfcazh9PKAMa1kw==","length":22746,"stub":true},"underscore-1.5.0.tgz":{"content_type":"application/octet-stream","revpos":126,"digest":"md5-JiqbW+htmCdz6yVjqaz44Q==","length":22907,"stub":true},"underscore-1.4.4.tgz":{"content_type":"application/octet-stream","revpos":104,"digest":"md5-s/MrjCiRarwh7tZ9DX+RyA==","length":41763,"stub":true},"underscore-1.4.3.tgz":{"content_type":"application/octet-stream","revpos":97,"digest":"md5-SbGx702k/T8yuag+j/VjCg==","length":62294,"stub":true},"underscore-1.4.2.tgz":{"content_type":"application/octet-stream","revpos":91,"digest":"md5-vSAO6RpJID3UCJkAWMEIjg==","length":61836,"stub":true},"underscore-1.4.1.tgz":{"content_type":"application/octet-stream","revpos":88,"digest":"md5-O72hIvWp7cVwkiA/2eF6rg==","length":61692,"stub":true},"underscore-1.4.0.tgz":{"content_type":"application/octet-stream","revpos":85,"digest":"md5-26PeH3uwZlxMzfzwS4LmMg==","length":61579,"stub":true},"underscore-1.3.3.tgz":{"content_type":"application/octet-stream","revpos":69,"digest":"md5-lRWlaQvCPiUt9CVTCTbZqQ==","length":58692,"stub":true},"underscore-1.3.2.tgz":{"content_type":"application/octet-stream","revpos":66,"digest":"md5-yS3kcu5U31CO0KAJcBJ9yA==","length":58699,"stub":true},"underscore-1.3.1.tgz":{"content_type":"application/octet-stream","revpos":60,"digest":"md5-Y4Z1Vvv7gZoZtJ9mTz0zSQ==","length":61440,"stub":true},"underscore-1.3.0.tgz":{"content_type":"application/octet-stream","revpos":56,"digest":"md5-eIPIVGdK7Fzup3CU/AMO4g==","length":61440,"stub":true},"underscore-1.2.4.tgz":{"content_type":"application/octet-stream","revpos":54,"digest":"md5-jCUzsaWc+tlE/lQNsuLQBA==","length":61440,"stub":true},"underscore-1.2.3.tgz":{"content_type":"application/octet-stream","revpos":41,"digest":"md5-bP9hXPsRRpFAWlmUNIY+jA==","length":40960,"stub":true},"underscore-1.2.2.tgz":{"content_type":"application/octet-stream","revpos":38,"digest":"md5-78/kFlhnF2WL94pdo/dfww==","length":40960,"stub":true},"underscore-1.2.1.tgz":{"content_type":"application/octet-stream","revpos":35,"digest":"md5-gNzWgJppZn3xUj8LCQcJ+Q==","length":31879,"stub":true},"underscore-1.2.0.tgz":{"content_type":"application/octet-stream","revpos":33,"digest":"md5-WYSTx/McoA2yFB6GmQ5KnA==","length":31310,"stub":true},"underscore-1.1.7.tgz":{"content_type":"application/octet-stream","revpos":29,"digest":"md5-BxaNPc3JexY2qLOK3gDhgw==","length":29052,"stub":true},"underscore-1.1.6.tgz":{"content_type":"application/octet-stream","revpos":27,"digest":"md5-U11VsMTDu6BEZDKJlZidTw==","length":25592,"stub":true},"underscore-1.1.5.tgz":{"content_type":"application/octet-stream","revpos":25,"digest":"md5-rpLusI4XejA3uVROFAZg1A==","length":25038,"stub":true},"underscore-1.1.4.tgz":{"content_type":"application/octet-stream","revpos":23,"digest":"md5-VrXC+bUYmxwzr2CQH4oq0w==","length":86233,"stub":true},"underscore-1.1.3.tgz":{"content_type":"application/octet-stream","revpos":17,"digest":"md5-sdTV7zbtYfhAAanQLEcziw==","length":86107,"stub":true},"underscore-1.1.2.tgz":{"content_type":"application/octet-stream","revpos":11,"digest":"md5-SSm/3w/usRqR+0SrSyCr8A==","length":85482,"stub":true},"underscore-1.1.1.tgz":{"content_type":"application/octet-stream","revpos":9,"digest":"md5-UW8pTfPbkrRFTiwM6AFlVA==","length":85214,"stub":true},"underscore-1.1.0.tgz":{"content_type":"application/octet-stream","revpos":7,"digest":"md5-YJcA44Oj1Dm2imfD7dHLag==","length":71266,"stub":true},"underscore-1.0.4.tgz":{"content_type":"application/octet-stream","revpos":5,"digest":"md5-nRJu+q0L17u8DZqPxVvQKQ==","length":71018,"stub":true},"underscore-1.0.3.tgz":{"content_type":"application/octet-stream","revpos":3,"digest":"md5-pwgll4db7l4cg7fPTrgVTw==","length":70285,"stub":true}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/21/82/eac4f83e50f3b6aa8bea561c5dfebdc1d66941e2da785af406e045de56a0fc422034ca7fa2ab5fa99022c6b860203eb4853ce85f15f26b96c84b8d9e7320 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/21/82/eac4f83e50f3b6aa8bea561c5dfebdc1d66941e2da785af406e045de56a0fc422034ca7fa2ab5fa99022c6b860203eb4853ce85f15f26b96c84b8d9e7320
deleted file mode 100644
index a568011ff72d0b..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/21/82/eac4f83e50f3b6aa8bea561c5dfebdc1d66941e2da785af406e045de56a0fc422034ca7fa2ab5fa99022c6b860203eb4853ce85f15f26b96c84b8d9e7320
+++ /dev/null
@@ -1 +0,0 @@
-{"versions":{"1.0.0":{"name":"inherits","version":"1.0.0","dependencies":{},"devDependencies":{},"_hasShrinkwrap":false,"directories":{},"dist":{"shasum":"38e1975285bf1f7ba9c84da102bb12771322ac48","tarball":"https://registry.npmjs.org/inherits/-/inherits-1.0.0.tgz"},"engines":{"node":"*"}},"2.0.0":{"name":"inherits","version":"2.0.0","_hasShrinkwrap":false,"directories":{},"dist":{"shasum":"76c81b3b1c10ddee3a60bf2c247162bc369f8ba8","tarball":"https://registry.npmjs.org/inherits/-/inherits-2.0.0.tgz"}},"2.0.1":{"name":"inherits","version":"2.0.1","_hasShrinkwrap":false,"directories":{},"dist":{"shasum":"b17d08d326b4423e568eff719f91b0b1cbdf69f1","tarball":"https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"}},"1.0.1":{"name":"inherits","version":"1.0.1","_hasShrinkwrap":false,"directories":{},"dist":{"shasum":"1bdf16c6ff8266cb858c6da2baf3637a99fb3d87","tarball":"https://registry.npmjs.org/inherits/-/inherits-1.0.1.tgz"}},"1.0.2":{"name":"inherits","version":"1.0.2","_hasShrinkwrap":false,"directories":{},"dist":{"shasum":"ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b","tarball":"https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz"}},"2.0.3":{"name":"inherits","version":"2.0.3","devDependencies":{"tap":"^7.1.0"},"_hasShrinkwrap":false,"directories":{},"dist":{"shasum":"633c2c83e3da42a502f52466022480f4208261de","tarball":"https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"}}},"name":"inherits","dist-tags":{"latest":"2.0.3"},"modified":"2018-08-03T00:38:03.803Z"}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/22/fe/eed42d3bab5ff699721346f9c5fa7a70ac2748ee0ced75bc0b8f6e8aba924f53a93404b30fa8d28e0d64c14922e8f0d1ed1c212ef3f15d00e9527b17b9b9 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/22/fe/eed42d3bab5ff699721346f9c5fa7a70ac2748ee0ced75bc0b8f6e8aba924f53a93404b30fa8d28e0d64c14922e8f0d1ed1c212ef3f15d00e9527b17b9b9
deleted file mode 100644
index 9ed5bd97f87f00..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/22/fe/eed42d3bab5ff699721346f9c5fa7a70ac2748ee0ced75bc0b8f6e8aba924f53a93404b30fa8d28e0d64c14922e8f0d1ed1c212ef3f15d00e9527b17b9b9 and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/2c/ec/8afad096618ae60ad9cd1cf2d2d9d5597b68010cc087c9a78765ef0dacd25c13a0e36948949317f09f667274ee5fa714abdc1b158e5cfea5ca5401663425 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/2c/ec/8afad096618ae60ad9cd1cf2d2d9d5597b68010cc087c9a78765ef0dacd25c13a0e36948949317f09f667274ee5fa714abdc1b158e5cfea5ca5401663425
deleted file mode 100644
index 6f66c55bd1a139..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/2c/ec/8afad096618ae60ad9cd1cf2d2d9d5597b68010cc087c9a78765ef0dacd25c13a0e36948949317f09f667274ee5fa714abdc1b158e5cfea5ca5401663425 and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/2e/36/48f976830aeaba0724b382a09a6a6736dfd4c755963a4f462f963f9ecb211c2258f00766dc3aa68664f66d3a01cb2789b2cf614aeb292dbeb4afe0b206cc b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/2e/36/48f976830aeaba0724b382a09a6a6736dfd4c755963a4f462f963f9ecb211c2258f00766dc3aa68664f66d3a01cb2789b2cf614aeb292dbeb4afe0b206cc
deleted file mode 100644
index c4b25ccf69b893..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/2e/36/48f976830aeaba0724b382a09a6a6736dfd4c755963a4f462f963f9ecb211c2258f00766dc3aa68664f66d3a01cb2789b2cf614aeb292dbeb4afe0b206cc and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/32/c8/6992ba4671408a292bb3f2fae4cd10416dcedb6a214c169054af6bcc792b6ea56f7245333357cc59e4f84660380604b5ff338258ad46973218d864799b5e b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/32/c8/6992ba4671408a292bb3f2fae4cd10416dcedb6a214c169054af6bcc792b6ea56f7245333357cc59e4f84660380604b5ff338258ad46973218d864799b5e
deleted file mode 100644
index 80ee92c7856849..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/32/c8/6992ba4671408a292bb3f2fae4cd10416dcedb6a214c169054af6bcc792b6ea56f7245333357cc59e4f84660380604b5ff338258ad46973218d864799b5e
+++ /dev/null
@@ -1 +0,0 @@
-{"myorg:myteam":"write","myorg:anotherteam":"read"}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/35/39/721f705f621cffe30dbc828be387e253c50ed05fb0a8e3f418769996bdde1dd1cb8af2e47dfe9417aab7ac3d238d1f036ef2e9adb898c386f0cda9b6861e b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/35/39/721f705f621cffe30dbc828be387e253c50ed05fb0a8e3f418769996bdde1dd1cb8af2e47dfe9417aab7ac3d238d1f036ef2e9adb898c386f0cda9b6861e
deleted file mode 100644
index fa4c213ed2bb85..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/35/39/721f705f621cffe30dbc828be387e253c50ed05fb0a8e3f418769996bdde1dd1cb8af2e47dfe9417aab7ac3d238d1f036ef2e9adb898c386f0cda9b6861e
+++ /dev/null
@@ -1 +0,0 @@
-{"latest":"2.0.0","a":"0.0.2","b":"0.6.0","c":"7.7.7"}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/35/aa/ea2b3a5902264c14606117b00e20425af14560c323e92859dd86f4cc552146fc06548a31ea59ba6edd569b6a41a201781f6a39900082feaac81923a12e57 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/35/aa/ea2b3a5902264c14606117b00e20425af14560c323e92859dd86f4cc552146fc06548a31ea59ba6edd569b6a41a201781f6a39900082feaac81923a12e57
deleted file mode 100644
index 5808c97a4f7471..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/35/aa/ea2b3a5902264c14606117b00e20425af14560c323e92859dd86f4cc552146fc06548a31ea59ba6edd569b6a41a201781f6a39900082feaac81923a12e57
+++ /dev/null
@@ -1 +0,0 @@
-{"_id":"test-repo-url-http","_rev":"2-ab911ee92af4c4ad93d44a61b09e073b","name":"test-repo-url-http","description":"Test repo with non-github http repository url","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"test-repo-url-http","version":"0.0.1","description":"Test repo with non-github http repository url","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"http://gitlab.com/evanlucas/test-repo-url-http.git"},"author":{"name":"Evan Lucas","email":"evanlucas@me.com"},"license":"ISC","_id":"test-repo-url-http@0.0.1","dist":{"shasum":"45c8a39b626c1f83f8b8f53007c2f60eb98eee9d","tarball":"http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"evanlucas","email":"evanlucas@me.com"},"maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"directories":{}}},"readme":"ERROR: No README data found!","maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"time":{"0.0.1":"2014-02-16T19:23:06.941Z"},"readmeFilename":"","_attachments":{}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/37/27/2f58378ed591197373f46d3be148bfc82649dbb213be14a2b1ac47f50d7d4804cb105590935a7bcd02dfae3a2421c939cafb586b9f1b6c492fdfe09aca86 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/37/27/2f58378ed591197373f46d3be148bfc82649dbb213be14a2b1ac47f50d7d4804cb105590935a7bcd02dfae3a2421c939cafb586b9f1b6c492fdfe09aca86
deleted file mode 100644
index d98a345996b5b4..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/37/27/2f58378ed591197373f46d3be148bfc82649dbb213be14a2b1ac47f50d7d4804cb105590935a7bcd02dfae3a2421c939cafb586b9f1b6c492fdfe09aca86 and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/3a/f5/ac6e34332259d456779c882d9d0db472befe84fd8043ac328bf51e1bdcd47437b17eff4d92df4ad8e999b2c2e140779cde81f69475d8d4591808103b964b b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/3a/f5/ac6e34332259d456779c882d9d0db472befe84fd8043ac328bf51e1bdcd47437b17eff4d92df4ad8e999b2c2e140779cde81f69475d8d4591808103b964b
deleted file mode 100644
index 4087ab3f3c6c28..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/3a/f5/ac6e34332259d456779c882d9d0db472befe84fd8043ac328bf51e1bdcd47437b17eff4d92df4ad8e999b2c2e140779cde81f69475d8d4591808103b964b
+++ /dev/null
@@ -1 +0,0 @@
-{"_id":"test-repo-url-https","_rev":"4-252d9ae747df7201a8e870dc60464829","name":"test-repo-url-https","description":"Test repo with non-github https repository url","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.0":{"name":"test-repo-url-https","version":"0.0.0","description":"Test repo with non-github https repository url","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"http://gitlab.com/evanlucas/test-repo-url-https.git"},"author":{"name":"Evan Lucas","email":"evanlucas@me.com"},"license":"ISC","_id":"test-repo-url-https@0.0.0","dist":{"shasum":"de1a007b42c5741892aa734921fa1279bf4db2f6","tarball":"http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.0.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"evanlucas","email":"evanlucas@me.com"},"maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"directories":{}},"0.0.1":{"name":"test-repo-url-https","version":"0.0.1","description":"Test repo with non-github https repository url","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://gitlab.com/evanlucas/test-repo-url-https.git"},"author":{"name":"Evan Lucas","email":"evanlucas@me.com"},"license":"ISC","_id":"test-repo-url-https@0.0.1","dist":{"shasum":"e05008f3ff82b34f17b1e972454a0ab70a269c7d","tarball":"http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"evanlucas","email":"evanlucas@me.com"},"maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"directories":{}}},"readme":"ERROR: No README data found!","maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"time":{"0.0.0":"2014-02-16T18:38:39.564Z","0.0.1":"2014-02-16T18:42:28.053Z"},"readmeFilename":"","_attachments":{}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/52/3a/902538a5ebd3ce129087f262bf0a1663c2fdb6a636acd7660e386fbf2f8d097946cda07518bbd9b9fc9c5be725e8ae6041e62c9e9e81de5585e900328b09 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/52/3a/902538a5ebd3ce129087f262bf0a1663c2fdb6a636acd7660e386fbf2f8d097946cda07518bbd9b9fc9c5be725e8ae6041e62c9e9e81de5585e900328b09
deleted file mode 100644
index 6b74362771d789..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/52/3a/902538a5ebd3ce129087f262bf0a1663c2fdb6a636acd7660e386fbf2f8d097946cda07518bbd9b9fc9c5be725e8ae6041e62c9e9e81de5585e900328b09
+++ /dev/null
@@ -1 +0,0 @@
-{"_id":"wordwrap","_rev":"6-961a85500434fed15d9749919ec35e34","name":"wordwrap","description":"Wrap those words. Show them at what columns to start and stop.","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"wordwrap","description":"Wrap those words. Show them at what columns to start and stop.","version":"0.0.1","repository":{"type":"git","url":"git://github.com/substack/node-wordwrap.git"},"main":"./index.js","keywords":["word","wrap","rule","format","column"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"expresso"},"devDependencies":{"expresso":"=0.7.x"},"engines":{"node":">=0.4.0"},"license":"MIT/X11","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"dependencies":{},"_id":"wordwrap@0.0.1","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"ac9b6dfa49e1147523055c5ef490c069cdd61f3e","tarball":"http://localhost:1337/wordwrap/-/wordwrap-0.0.1.tgz"}},"0.0.2":{"name":"wordwrap","description":"Wrap those words. Show them at what columns to start and stop.","version":"0.0.2","repository":{"type":"git","url":"git://github.com/substack/node-wordwrap.git"},"main":"./index.js","keywords":["word","wrap","rule","format","column"],"directories":{"lib":".","example":"example","test":"test"},"scripts":{"test":"expresso"},"devDependencies":{"expresso":"=0.7.x"},"engines":{"node":">=0.4.0"},"license":"MIT/X11","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"_id":"wordwrap@0.0.2","dependencies":{},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"b79669bb42ecb409f83d583cad52ca17eaa1643f","tarball":"http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]}},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"time":{"0.0.1":"2011-05-30T01:46:34.944Z","0.0.2":"2011-08-26T10:17:09.949Z"},"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"repository":{"type":"git","url":"git://github.com/substack/node-wordwrap.git"},"users":{"fgribreau":true},"_attachments":{"wordwrap-0.0.2.tgz":{"content_type":"application/octet-stream","revpos":5,"digest":"md5-M3sB+fx52fvpmBznCtNNbw==","length":13772,"stub":true},"wordwrap-0.0.1.tgz":{"content_type":"application/octet-stream","revpos":3,"digest":"md5-EwWHDiAQRyEetK/Xt78gPA==","length":13067,"stub":true}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/54/95/fe840edbf5d18dfc27c5f4d9b359e8ab81a4741f62b0deb20979359843828ae50112bac4e25a3fc1089d260fd9b8236e434a3a55580b7aaba369e6f8ba87 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/54/95/fe840edbf5d18dfc27c5f4d9b359e8ab81a4741f62b0deb20979359843828ae50112bac4e25a3fc1089d260fd9b8236e434a3a55580b7aaba369e6f8ba87
deleted file mode 100644
index 2608065a4cff75..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/54/95/fe840edbf5d18dfc27c5f4d9b359e8ab81a4741f62b0deb20979359843828ae50112bac4e25a3fc1089d260fd9b8236e434a3a55580b7aaba369e6f8ba87 and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/5a/64/0274b5cfdc4e0635bdd262c5830de7faf9c02d3c5ef66a60ac58ed20fcb324f85d7ef7b6e85210d8209122096191893f662db33d0569837305388bad35bf b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/5a/64/0274b5cfdc4e0635bdd262c5830de7faf9c02d3c5ef66a60ac58ed20fcb324f85d7ef7b6e85210d8209122096191893f662db33d0569837305388bad35bf
deleted file mode 100644
index c35d7fea14d526..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/5a/64/0274b5cfdc4e0635bdd262c5830de7faf9c02d3c5ef66a60ac58ed20fcb324f85d7ef7b6e85210d8209122096191893f662db33d0569837305388bad35bf
+++ /dev/null
@@ -1 +0,0 @@
-{"_id":"cond","_rev":"19-d458a706de1740662cd7728d7d7ddf07","name":"cond","time":{"modified":"2015-02-13T07:33:58.120Z","created":"2014-03-16T20:52:52.236Z","0.0.0":"2014-03-16T20:52:52.236Z","0.0.1":"2014-03-16T21:12:33.393Z","0.0.2":"2014-03-16T21:15:25.430Z"},"versions":{"0.0.0":{},"0.0.1":{},"0.0.2":{}},"dist-tags":{"latest":"0.0.2"},"description":"Restartable error handling system","license":"CC0"}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/5d/29/d6e1add2536379abc1eba52f83824a6091a5af9ffba1479cf404f478f36f06504f6643db8631e0b6f057e55140d84489cacc140627e012824fa073f97568 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/5d/29/d6e1add2536379abc1eba52f83824a6091a5af9ffba1479cf404f478f36f06504f6643db8631e0b6f057e55140d84489cacc140627e012824fa073f97568
deleted file mode 100644
index 0d0d28776eb2d4..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/5d/29/d6e1add2536379abc1eba52f83824a6091a5af9ffba1479cf404f478f36f06504f6643db8631e0b6f057e55140d84489cacc140627e012824fa073f97568
+++ /dev/null
@@ -1 +0,0 @@
-{"versions":{"1.0.0":{"name":"graceful-fs","version":"1.0.0","dependencies":{},"devDependencies":{},"directories":{},"dist":{"shasum":"ba8e39479ec46658d59eb305f878f8b0820fa8e5","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.0.0.tgz"},"engines":{"node":"0.4 || 0.5"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.0.1":{"name":"graceful-fs","version":"1.0.1","dependencies":{},"devDependencies":{},"directories":{},"dist":{"shasum":"63647ef7ca9bf0abc561cdb72d2a58704a11cc2f","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.0.1.tgz"},"engines":{"node":"0.4 || 0.5"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.0.2":{"name":"graceful-fs","version":"1.0.2","dependencies":{},"devDependencies":{},"directories":{},"dist":{"shasum":"79ac9f685c97c391d88a95e4cde5a1313c3807de","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.0.2.tgz"},"engines":{"node":"0.4 || 0.5 || 0.6"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.0":{"name":"graceful-fs","version":"1.1.0","dependencies":{"fast-list":"1"},"devDependencies":{},"directories":{},"dist":{"shasum":"c36f1d3b31d71b4cef3da303b784074f6d578037","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.0.tgz"},"engines":{"node":"0.4 || 0.5 || 0.6"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.1":{"name":"graceful-fs","version":"1.1.1","dependencies":{"fast-list":"1"},"devDependencies":{},"directories":{},"dist":{"shasum":"2f10989f7e9addfcea6592d95f52bb0c2d7e5bd2","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.1.tgz"},"engines":{"node":"0.4 || 0.5 || 0.6"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.2":{"name":"graceful-fs","version":"1.1.2","dependencies":{"fast-list":"1"},"devDependencies":{},"directories":{},"dist":{"shasum":"e82181f54de6620c67034e736fbc0d8fee8c1ffa","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.2.tgz"},"engines":{"node":"0.4 || 0.5 || 0.6"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.3":{"name":"graceful-fs","version":"1.1.3","dependencies":{"fast-list":"1"},"optionalDependencies":{},"devDependencies":{},"directories":{},"dist":{"shasum":"7c5264a5fd5888cf02545898e402502ff01150ae","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.3.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.4":{"name":"graceful-fs","version":"1.1.4","dependencies":{"fast-list":"1"},"optionalDependencies":{},"devDependencies":{},"directories":{},"dist":{"shasum":"d53940783394758e59b24e10d355cbcf8c225103","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.4.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.5":{"name":"graceful-fs","version":"1.1.5","dependencies":{"fast-list":"1"},"optionalDependencies":{},"devDependencies":{},"directories":{},"dist":{"shasum":"0e4692e2240d3951c135587ff7dc8c557186d037","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.5.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.6":{"name":"graceful-fs","version":"1.1.6","dependencies":{},"optionalDependencies":{},"devDependencies":{},"directories":{},"dist":{"shasum":"cb87fa245e5669fb7b1da44ceef5920054052e24","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.6.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.7":{"name":"graceful-fs","version":"1.1.7","dependencies":{},"optionalDependencies":{},"devDependencies":{},"directories":{},"dist":{"shasum":"e5cfd7904de546273c1c461ddd053e44e84bc0d7","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.7.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.8":{"name":"graceful-fs","version":"1.1.8","dependencies":{},"optionalDependencies":{},"devDependencies":{},"directories":{},"dist":{"shasum":"7c9b7cd96f16b83230f61d522156306500914888","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.8.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.9":{"name":"graceful-fs","version":"1.1.9","devDependencies":{},"directories":{},"dist":{"shasum":"2d8916e828b906a921d7e7de8fc2ba148f03b18a","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.9.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.10":{"name":"graceful-fs","version":"1.1.10","dependencies":{},"devDependencies":{},"directories":{"test":"test"},"dist":{"shasum":"388a63917e823bc695afd57c76d7f3ee3db54ad3","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.10.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.11":{"name":"graceful-fs","version":"1.1.11","dependencies":{},"devDependencies":{},"directories":{"test":"test"},"dist":{"shasum":"3a3de260cc4cc80ae13debf31b71f73c2c5eb5e5","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.11.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.12":{"name":"graceful-fs","version":"1.1.12","dependencies":{"mkdirp":"~0.3.4"},"devDependencies":{},"directories":{"test":"test"},"dist":{"shasum":"baff9d5d87b722ecef6615ea301a5cb9e2860038","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.12.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.13":{"name":"graceful-fs","version":"1.1.13","directories":{"test":"test"},"dist":{"shasum":"a91e1d8231dc083bdaa227983fbdf5010944ca14","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.13.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.1.14":{"name":"graceful-fs","version":"1.1.14","directories":{"test":"test"},"dist":{"shasum":"07078db5f6377f6321fceaaedf497de124dc9465","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.14.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.2.0":{"name":"graceful-fs","version":"1.2.0","directories":{"test":"test"},"dist":{"shasum":"fe2d82a295e30de4e1d1c04ec159e10061140704","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.0.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.2.1":{"name":"graceful-fs","version":"1.2.1","directories":{"test":"test"},"dist":{"shasum":"b35cc6e623576fc2a278cba12c00dda6a1758d2d","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.1.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.2.2":{"name":"graceful-fs","version":"1.2.2","directories":{"test":"test"},"dist":{"shasum":"2643e33eaed1c7277decd37377ff9fb394689cf5","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.2.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"1.2.3":{"name":"graceful-fs","version":"1.2.3","directories":{"test":"test"},"dist":{"shasum":"15a4806a57547cb2d2dbf27f42e89a8c3451b364","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"2.0.0":{"name":"graceful-fs","version":"2.0.0","directories":{"test":"test"},"dist":{"shasum":"c9a206f6f5f4b94e1046dfaaccfe9e12d0ab8cef","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.0.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"2.0.1":{"name":"graceful-fs","version":"2.0.1","directories":{"test":"test"},"dist":{"shasum":"7fd6e0a4837c35d0cc15330294d9584a3898cf84","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.1.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"2.0.2":{"name":"graceful-fs","version":"2.0.2","directories":{"test":"test"},"dist":{"shasum":"26806eaca4bff8fc5dbc935e696135792175c46f","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.2.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"2.0.3":{"name":"graceful-fs","version":"2.0.3","directories":{"test":"test"},"dist":{"shasum":"7cd2cdb228a4a3f36e95efa6cc142de7d1a136d0","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"3.0.0":{"name":"graceful-fs","version":"3.0.0","directories":{"test":"test"},"dist":{"shasum":"5792ffae0ed7e318060ebf9f6e7a6e6cf5139327","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.0.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"3.0.1":{"name":"graceful-fs","version":"3.0.1","directories":{"test":"test"},"dist":{"shasum":"93352b5b951b009ef541271204122b612e46edaf","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.1.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"3.0.2":{"name":"graceful-fs","version":"3.0.2","directories":{"test":"test"},"dist":{"shasum":"2cb5bf7f742bea8ad47c754caeee032b7e71a577","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.2.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"3.0.3":{"name":"graceful-fs","version":"3.0.3","directories":{"test":"test"},"dist":{"shasum":"277141085e739ae7d54361119a62797b08a1d8c0","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.3.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"3.0.4":{"name":"graceful-fs","version":"3.0.4","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^0.4.13"},"directories":{"test":"test"},"dist":{"shasum":"a0306d9b0940e0fc512d33b5df1014e88e0637a3","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.4.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"3.0.5":{"name":"graceful-fs","version":"3.0.5","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^0.4.13"},"directories":{"test":"test"},"dist":{"shasum":"4a880474bdeb716fe3278cf29792dec38dfac418","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.5.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"3.0.6":{"name":"graceful-fs","version":"3.0.6","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^0.4.13"},"directories":{"test":"test"},"dist":{"shasum":"dce3a18351cb94cdc82e688b2e3dd2842d1b09bb","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.6.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"3.0.7":{"name":"graceful-fs","version":"3.0.7","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^0.4.13"},"directories":{"test":"test"},"dist":{"shasum":"e935be4b3e57892d289dc3bef7be8c02779d2b54","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.7.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"3.0.8":{"name":"graceful-fs","version":"3.0.8","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^1.2.0"},"directories":{"test":"test"},"dist":{"shasum":"ce813e725fa82f7e6147d51c9a5ca68270551c22","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"4.1.0":{"name":"graceful-fs","version":"4.1.0","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^1.2.0"},"directories":{"test":"test"},"dist":{"shasum":"6be6119244f64d6417fe303cc36ab497b5756cc1","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.0.tgz"},"engines":{"node":">=0.4.0"}},"4.1.1":{"name":"graceful-fs","version":"4.1.1","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^1.2.0"},"directories":{"test":"test"},"dist":{"shasum":"db940cb46e47bd719314a876bace802ea3e90d3c","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.1.tgz"},"engines":{"node":">=0.4.0"}},"4.1.2":{"name":"graceful-fs","version":"4.1.2","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^1.2.0"},"directories":{"test":"test"},"dist":{"shasum":"fe2239b7574972e67e41f808823f9bfa4a991e37","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz"},"engines":{"node":">=0.4.0"}},"4.1.3":{"name":"graceful-fs","version":"4.1.3","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^5.4.2"},"directories":{"test":"test"},"dist":{"shasum":"92033ce11113c41e2628d61fdfa40bc10dc0155c","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.3.tgz"},"engines":{"node":">=0.4.0"}},"4.1.4":{"name":"graceful-fs","version":"4.1.4","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^5.4.2"},"directories":{"test":"test"},"dist":{"shasum":"ef089d2880f033b011823ce5c8fae798da775dbd","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz"},"engines":{"node":">=0.4.0"}},"4.1.5":{"name":"graceful-fs","version":"4.1.5","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^5.4.2"},"directories":{"test":"test"},"dist":{"shasum":"f4745e8caed5e0dd2ef21bb5e2d229a32e8093c0","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz"},"engines":{"node":">=0.4.0"}},"3.0.9":{"name":"graceful-fs","version":"3.0.9","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^1.2.0"},"directories":{"test":"test"},"dist":{"shasum":"44e10a870a068e892485bace909520905b08ba24","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.9.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"4.1.6":{"name":"graceful-fs","version":"4.1.6","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^5.4.2"},"directories":{"test":"test"},"dist":{"shasum":"514c38772b31bee2e08bedc21a0aeb3abf54c19e","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.6.tgz"},"engines":{"node":">=0.4.0"}},"3.0.10":{"name":"graceful-fs","version":"3.0.10","dependencies":{"natives":"^1.0.1"},"devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^1.2.0"},"directories":{"test":"test"},"dist":{"shasum":"5268b37746ff73a549708f3ce47fb54c84d5b0f0","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.10.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"3.0.11":{"name":"graceful-fs","version":"3.0.11","dependencies":{"natives":"^1.1.0"},"devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^1.2.0"},"directories":{"test":"test"},"dist":{"shasum":"7613c778a1afea62f25c630a086d7f3acbbdd818","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz"},"engines":{"node":">=0.4.0"},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js"},"4.1.7":{"name":"graceful-fs","version":"4.1.7","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^5.4.2"},"directories":{"test":"test"},"dist":{"shasum":"f8b39fe797b022ae88024cff94a3613197141f32","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.7.tgz"},"engines":{"node":">=0.4.0"}},"4.1.8":{"name":"graceful-fs","version":"4.1.8","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^5.4.2"},"directories":{"test":"test"},"dist":{"shasum":"da3e11135eb2168bdd374532c4e2649751672890","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.8.tgz"},"engines":{"node":">=0.4.0"}},"4.1.9":{"name":"graceful-fs","version":"4.1.9","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^5.4.2"},"directories":{"test":"test"},"dist":{"shasum":"baacba37d19d11f9d146d3578bc99958c3787e29","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.9.tgz"},"engines":{"node":">=0.4.0"}},"4.1.10":{"name":"graceful-fs","version":"4.1.10","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^5.4.2"},"directories":{"test":"test"},"dist":{"shasum":"f2d720c22092f743228775c75e3612632501f131","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.10.tgz"},"engines":{"node":">=0.4.0"}},"4.1.11":{"name":"graceful-fs","version":"4.1.11","devDependencies":{"mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^5.4.2"},"directories":{"test":"test"},"dist":{"shasum":"0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658","tarball":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz"},"engines":{"node":">=0.4.0"}},"4.1.12":{"name":"graceful-fs","version":"4.1.12","devDependencies":{"import-fresh":"^2.0.0","mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^12.0.1"},"_hasShrinkwrap":false,"directories":{"test":"test"},"dist":{"integrity":"sha512-E1kqZR391RPU4xZ4uJSKm42R1ZsN8qcolVVlMKDZ1yGa0HVRcNwhjJ74VGDTriDcOHa/LNzFCDHAOx/jq4F63A==","shasum":"5f732cae9d5023c66371362e72685e9c6cd42326","tarball":"https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.12.tgz","fileCount":6,"unpackedSize":25559,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3LkMCRA9TVsSAnZWagAAizkP/3ROSu1bgKvgHuJ3BP7Q\nFA6TmxzkoAH9K55guUge0xxR7SCZI5YxiwImggAmklVXopSQXLl/jo7EfOpR\nHqyiUwIVnDlBKn9AB7CWRgPkIZRH4rGuu0JMiRqCHXdXboDUKn4qONTfI6mj\nfcAoVpAXpwumAP7LJD2olEnHE1j2fUca8RIaJlAAqw8LSiZd5Hdn/+JpLlp2\nK/9kM54BpPL9xM+IfaM07O59+6/TaNL1OcUb06wa1Qj0MP9jMqQPjrOxSOmQ\noKvOu2Vg6jsRTUkaIMRgsWO9puzhz74LLHe+DzBKqa8wVX97EEDd4Pldxeyx\n8UUzmLqQlSmdiNCY6dkR1F7yOQnbWMT3FBp9+tqlW6/IAA1vLnIwbofj1jJX\nBY0F8wi632qdE2gNti8puFqu79JedDLa/FQKyWppJ1pcLSOCrZK7dd6mGipr\nSmsQZPTXFOJuX9BJxH4sFnps/5hU47dpcnVPcPnTQneifVG1FN7l0Wqd+kpj\nxxbnOAnIZ+0q4L/Ppat1ks7c9R2OrknZM7+Ye8wAMT6VCgUkfxOjFWS11wad\nZ3iAZc6o2WZ1N4FJCsWchMXhceeevDhBhgCuGoOedYFXNKcfa3jPeR7oWRTV\no2/A9bryp6dmYYw+rpKi60xhqV/9Islf0bSfR028kfRBuIpohIGNkxhQqQtT\nic6a\r\n=7wOy\r\n-----END PGP SIGNATURE-----\r\n"},"engines":{"node":">=6"}},"4.1.13":{"name":"graceful-fs","version":"4.1.13","devDependencies":{"import-fresh":"^2.0.0","mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^12.0.1"},"_hasShrinkwrap":false,"directories":{"test":"test"},"dist":{"integrity":"sha512-a3u3Sck0c7/X622CIqiU0q/eRmhEOssVa3jkrfRRxxHPzaW1EcZgsQt87zKipdteGmFEKGGBvIBPr13pCB2HYw==","shasum":"9291d55cf899209ec0c2c8445d0ff7f6cc0e2df1","tarball":"https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.13.tgz","fileCount":7,"unpackedSize":25976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3MFwCRA9TVsSAnZWagAAivkP/AlHtY1y8mmXNgKdLPov\n0ULfG8zMLkNfnKx437uFEHjcyjClOFrrV2nOuQnNBR/HYvWp6kSRoRJMX6eB\nzPhPN7bsR2SZGdIqOKwkoweDyFjrA/BPMaHLYPeoY+OkMZ8SdHcOQ4EelvWM\nmRtXMGjB+6W1KOsBjFxqvRKi7eMmkaJf6tyFRsEhju1RUGmhw1VY+F9fS67s\nbn/DCTujUAHxMhzvmcsBscoiI7WN6q/vP1W8cRHSKe+5INPwISp/M4bo+gU3\ng7XwafgK9bMHgSsC2a7sE0i6zPzlre55bEAvDemE7WsORGagrM2AHJw5Ow1n\nnGulaYd5rit5f2++DPGQ50FaGJtlEFqOqS+J1XldGB69KSvKIqjgyqmoG4VH\nBLv9DflSyO5kJJZggtXKMqqwf/GlXCRij4s5sZVyVqUQ8VK1N95MCF+IWm51\nvyVlyg+ZgnuT8LEiDyxDMx27KbwwxUcN3QPLXvp5zuvDsqlePVMg9AzmsF01\niB6tX/ZddeMF2yTbOV8FRZ7bD23jqbWfSapilKNZBgvLpi2ah3Li9suu1B8v\nz2t/oAU6aqC8PQ1D59Eq8t0eq4wYlKWpIHL24Z/Fj+LUdHw/GnpUy60Tu0GW\npwCoqmZVmP9K9THjahagpXKWxsYaewHr+MhBca+DJ9vjCHv40MrOmgauB7g6\nwCoN\r\n=t9Oq\r\n-----END PGP SIGNATURE-----\r\n"},"engines":{"node":">=6"}},"4.1.14":{"name":"graceful-fs","version":"4.1.14","devDependencies":{"import-fresh":"^2.0.0","mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^12.0.1"},"_hasShrinkwrap":false,"directories":{"test":"test"},"dist":{"integrity":"sha512-ns/IGcSmmGNPP085JCheg0Nombh1QPvSCnlx+2V+byQWRQEIL4ZB5jXJMNIHOFVS1roi85HIi5Ka0h43iWXfcQ==","shasum":"1b6e8362ef8c5ecb5da799901f39297e3054773a","tarball":"https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.14.tgz","fileCount":7,"unpackedSize":25976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3NtKCRA9TVsSAnZWagAAn50P/R41gvttUFl7OysdDnVH\nTUFoUzk5WrVSQMO76cf8gQZ46xC4du+1BQhDFJ3gYvpmv57+6MDsgh2IFfCl\ntm0KsuBFnP9C3z8I47YdIqlMoUG+paoIRPrk0YIlqZddnaaf/BRO/9yr1Hb/\nm0mA4puWt+ceJh+pdSu3UzPFNoSSXr/+ViuVQiDVcxFOHHrWCxyXBrRLFc+8\nVTAinVmUEGLi9CkjlwIz99QbjizBd7INzRGCvCFm17XQlRHeT7e3EtRO2ySM\nvOU7o0K02vrP1XWtW7rXvGDATVJnTACM1yPZIhIXdZVxgD5zAEsTjqvvOAYJ\nfY3vqkHE1uoDTbf3mdT24ZmmaMRrOcOwmUPTa5ZxnIqAwOInOeVSwLUMIN+z\nqK+A4nL98U5L568OxpHlbAtbAgIHCPYADg+fT+8Xj7mIGtx/HBN+75h1WHaq\naGVvkK2kclgXFKXzHzCKfDlHe268rvqoRy+6Q9a1d5Cth1aArO6kTNajc4AX\nfco+TDCEg/oMDgCikHI4qL6zXwQ6aQiJjeuHONprnyrwrRhS9iCFD1DSC37Q\nsglCxNioVpd7TlfDg0v3yDFr8gZqo7a2ELoRmog3rwzgGYZ/VA/FJO/ztfE4\nkPH4rW2tbDldWc8bZ3FkH2TFHgwEw2qTgziPSFwE+V7G0GaDrbFjHslABMaP\nvlOn\r\n=G/Sv\r\n-----END PGP SIGNATURE-----\r\n"},"engines":{"node":">=6"}},"4.1.15":{"name":"graceful-fs","version":"4.1.15","devDependencies":{"import-fresh":"^2.0.0","mkdirp":"^0.5.0","rimraf":"^2.2.8","tap":"^12.0.1"},"_hasShrinkwrap":false,"directories":{"test":"test"},"dist":{"integrity":"sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==","shasum":"ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00","tarball":"https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz","fileCount":7,"unpackedSize":25938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb31vrCRA9TVsSAnZWagAAjMYP/2AwGCPcxbX+2ZBkpyRq\nJ85zkTLDdO2AhSNpgApHrPFbvQ2MYSedMmA/tuNOILCd2zulEvadRZLSW5zI\nHUkRFdU20ByFJoLMvoGm8EY9gEnQ3lpIvh6lmgNSYhQhm5khE0XHQ4sAs9YW\nV61Qr4yqKvkxXrMpElTgzkCfEZ79pNzZ58lE0Qvqmcp3OTczsOimh+w5UIUu\nt/GMZpsmLC4VHTj+hSRqYsh8HJFt9Nl2ahXK08eGAroZMRgRY5hA/9aJ2bA7\nHpuyqMH2wjbaJRnT8ORLfgfJ9a8xO+VzIp0ueAWpAjAaCtbC2dKF3/YJ8Bn6\nZUaCWMM1PZG1BIM/4g/q++OV7o9NgJvqjvjMmVZKanzUMBwfD9ygwFcP8oNF\nlLSR4GU6itDJo2oqdtsrTsfDe35sNTl3kwyhMqZPWFlNJ5C02jmeH2qPtc9s\n69lGDH5JNBBKOmJXV9WKfN+mOSXniBnUsUVu0vAm/y9nY1GZQiAlI5MfIW+T\n1a+K2cGakv6c+b2bO6ExwnIjWPwEpKNlPYHdjLv01GoT9qZRh2guD5RBJqDj\nbNToHu3zR6po45ekShHykoFDz3F+mOKWKyfQ1F3Z+z+8udFk7xbO4vxRTC4M\nq1HSgomC6uFS+RRNVhmTS2L4S1izPDbozKOUU+rpk4hQMBhTLgf7nQ0Bates\nG+db\r\n=Fpd7\r\n-----END PGP SIGNATURE-----\r\n"}}},"name":"graceful-fs","dist-tags":{"latest":"4.1.15","old":"3.0.11"},"modified":"2018-11-04T20:51:57.343Z"}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/6f/c7/3dd4508c2d9f17eeb1cfd288276948a1689ebdf6a8d3f4f7516d4c68be639063e7e5437ef7ff72547aabe86b49a6b1bf5c733bdece3877d82bc8bc1a9a7d b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/6f/c7/3dd4508c2d9f17eeb1cfd288276948a1689ebdf6a8d3f4f7516d4c68be639063e7e5437ef7ff72547aabe86b49a6b1bf5c733bdece3877d82bc8bc1a9a7d
deleted file mode 100644
index 24c60e2ca60ee3..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/6f/c7/3dd4508c2d9f17eeb1cfd288276948a1689ebdf6a8d3f4f7516d4c68be639063e7e5437ef7ff72547aabe86b49a6b1bf5c733bdece3877d82bc8bc1a9a7d
+++ /dev/null
@@ -1 +0,0 @@
-{"otheruser":"admin"}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/76/39/4b378512c68bf209b433e06b71df27a45f7e7be35f174a0f83bce7799628b74dbe993c18b1c12e899a1ed7b159470b382180d1f0a5c4098ac6092cda1a8f b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/76/39/4b378512c68bf209b433e06b71df27a45f7e7be35f174a0f83bce7799628b74dbe993c18b1c12e899a1ed7b159470b382180d1f0a5c4098ac6092cda1a8f
deleted file mode 100644
index 3ae97a65db0815..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/76/39/4b378512c68bf209b433e06b71df27a45f7e7be35f174a0f83bce7799628b74dbe993c18b1c12e899a1ed7b159470b382180d1f0a5c4098ac6092cda1a8f
+++ /dev/null
@@ -1 +0,0 @@
-{"objects":[{"id":"foo","type":"package","name":"@foo/pkg","endpoint":"foo.com"},{"id":"bar","type":"owner","name":"bar","endpoint":"bar.com"},{"id":"baz","type":"scope","name":"baz","endpoint":"baz.com"}]}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/79/ec/4625bec1a13aaefdcd4e7cf18f1c5575879d80e8bdba063cc962c959c48526a0c1c9e3766c95ec9ea1cf10cd954968f3bfec136f0d3aa87009db05cf4666 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/79/ec/4625bec1a13aaefdcd4e7cf18f1c5575879d80e8bdba063cc962c959c48526a0c1c9e3766c95ec9ea1cf10cd954968f3bfec136f0d3aa87009db05cf4666
deleted file mode 100644
index 2e95263ba3890b..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/79/ec/4625bec1a13aaefdcd4e7cf18f1c5575879d80e8bdba063cc962c959c48526a0c1c9e3766c95ec9ea1cf10cd954968f3bfec136f0d3aa87009db05cf4666
+++ /dev/null
@@ -1 +0,0 @@
-{"_id":"clean","_rev":"33-7bb9012e61b414bbf93c168b5e95108c","name":"clean","description":"clean parses and santitize argv or options for node, supporting fully extendable types, shorthands, validatiors and setters.","dist-tags":{"latest":"2.1.6"},"versions":{"0.0.0":{"name":"clean","version":"0.0.0","description":"","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"MIT","readme":"ERROR: No README data found!","_id":"clean@0.0.0","dist":{"shasum":"86cb7c9efff672cd768b54039c133057f4b810f2","tarball":"http://localhost:1337/clean/-/clean-0.0.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kael","email":"i@kael.me"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"1.1.4":{"name":"clean","version":"1.1.4","description":"clean parses and santitize argv or options for node, supporting fully extendable types, shorthands, validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git@github.com:kaelzhang/node-clean.git"},"keywords":["argv","parser","argument-vector","cleaner","simple"],"author":{"name":"Kael"},"license":"MIT","readmeFilename":"README.md","bugs":{"url":"https://github.com/kaelzhang/node-clean/issues"},"dependencies":{"checker":"~0.5.1","minimist":"~0.0.5"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"readme":"[![Build Status](https://travis-ci.org/kaelzhang/node-clean.png?branch=master)](https://travis-ci.org/kaelzhang/node-clean)\n\n# Argv-parser\n\n> Argv-parser is a small and simple node.js module to parse `process.argv`\n\nArgv-parser is designed to be simple and will do nothing about:\n\n- option registration\n- description of options\n- output\n\n## Installation\n\n```sh\nnpm install argv-parser --save\n```\n\n## Usage\n\n```js\nvar parser = require('argv-parser');\n```\n\n## parser.parse(argv, options)\n\nParse argument vector (argv) or something like argv.\n\n##### Returns `ret` `Object`\n\n- parsed: `Object` the parsed object\n- warnings: `Object` the warnings of each option. If not exists, `ret.warning` will be an empty object\n- errors: `Object` the errors of each option.\n\n##### argv `Array`\n\n`process.argv` or something like that.\n\n##### options `Object`\n\n- rules: `Object` an extended `nopt` rules\n- offset: `Number` (optional, default to `2`) the offset from which the parser should start to parse.\n\n\n## parser.clean(data, options)\n\n##### Returns\n\nThe same as `parser.parse`\n\n##### options `Object`\n\n- rules: `Object`\n- types: `Object` (optional) type definitions. For most cases, you needn't this option\n\n\n## options.rules\n\n\n## Example\n\ntest.js\n\n```js\nvar rules = {\n    open: {\n        type: Boolean,\n        value: true\n    },\n\n    port: {\n        type: Number,\n        short: 'p',\n        value: function(port, parsed, tool) {\n            if(!port){\n                port = 9230;\n            }\n\n            if(port < 8000){\n                tool.warn('port < 8000 which is dangerous');\n                \n                if(port < 1000){\n                \ttool.error('port < 100 which is forbidden');\n        \t\t\treturn;\n                }\n            }\n\n            return port;\n        }\n    },\n\n    html: {\n        type: 'html',\n    },\n\n    name: {\n        type: String\n    }\n};\n\nvar data = parser.parse(process.argv, {\n\trules: rules\n});\n```\n\nDefault values:\n\n```\n$ node test.js\n> data.parsed.open; // true\n> data.parsed.port; // 9230\n\n```\n\nType limitation:\n\n```\n$ node test.js --port 8888 --no-open --name name<script>alert(123)</script>\n> data.parsed.open; // false\n> data.parsed.port; // 8888\n> data.parsed.name; // 'namealert(123)'; -> stripped\n> data.errors;      // {}\n> data.warnings;    // {}\n```\n\nWarnings and errors:\n\n```\n$ node test.js --port 888 --no-open --name name<script>alert(123)</script>\n> data.parsed.open; // false\n> data.parsed.port; // undefined; -> error\n> data.parsed.name; // 'name<script>alert(123)</script>'\n> data.errors;      // {port: ['port < 100 which is forbidden']}\n> data.warnings;    // {port: ['port < 8000 which is dangerous']}\n```\n\n\n\n\n\n\n","_id":"clean@1.1.4","dist":{"shasum":"5fe3f1d48a22842316eba0a19c51f26428015c80","tarball":"http://localhost:1337/clean/-/clean-1.1.4.tgz"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"2.1.1":{"name":"clean","version":"2.1.1","description":"clean parses and santitize argv or options for node, supporting fully extendable types, shorthands, validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git@github.com:kaelzhang/node-clean.git"},"keywords":["argv","parser","argument-vector","cleaner","simple"],"author":{"name":"Kael"},"license":"MIT","readmeFilename":"README.md","bugs":{"url":"https://github.com/kaelzhang/node-clean/issues"},"dependencies":{"checker":"~0.5.1","minimist":"~0.0.5"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"readme":"[![Build Status](https://travis-ci.org/kaelzhang/node-clean.png?branch=master)](https://travis-ci.org/kaelzhang/node-clean)\n\n# clean\n\nClean is small but powerful node.js module that parses and santitize argv or options for node, supporting:\n\n- fully extendable types\n- shorthands\n- validatiors\n- setters\n\n# Installation and Usage\n\n```sh\nnpm install clean --save\n```\n\n```js\nvar clean = require('clean')(options);\n```\n\n# Usage\n\n## Argv Shorthands\n\nWe can define shorthands with the option `options.shorthands`.\n\n```js\nvar shorthands = {\n\t// if `String`, define a shorthand for a key name\n\tc: 'cwd',\n\t// if `Array`, define a pattern slice of argv\n\tnr: ['--no-recursive'],\n\t// if `Object`, define a specific value\n\tr3: {\n\t\tretry: 3,\n\t\tstrict: false\n\t}\n};\nclean({\n\tshorthands: shorthands\n}).argv(['node', 'xxx', '-c', 'abc', '--nr', '--r3']); \n// notice that '-nr' will be considered as '-n -r'\n// The result is:\n// {\n//\t\tcwd: 'abc',\n//\t\trecursive: false,\n//\t\tretry: 3,\n//\t\tstrict: false \n// }\n```\n\n## Types\n\n```js\nclean({\n\tschema: {\n\t\tcwd: {\n\t\t\ttype: require('path')\n\t\t},\n\t\t\n\t\tretry: {\n\t\t\ttype: Boolean\n\t\t}\t\t\n\t}\n}).parseArgv(\n\t['node', 'xxx', '--cwd', 'abc', 'retry', 'false'], \n\tfunction(err, results, details){\n\t\tconsole.log(results.cwd); // the `path.resolved()`d 'abc'\n\t\tconsole.log(results.retry === false); // is a boolean, not a string\n\t}\n)\n```\n\nHow to extend a custom type ? See the \"advanced section\".\n\n## Validators and Setters\n\nValidators and setters of `clean` is implemented by `[checker](https://github.com/kaelzhang/node-checker)`, check the apis of `checker` for details.\n\nYou could check out the demo located at \"example/clean.js\". That is a very complicated situation of usage.\n\n```sh\nnode example/clean.js --username guest\n```\n\n\n\n# Programatical Details\n\n## constructor: clean(schema, options)\n\n\n### options\n\n#### options.offset `Number=`\n\nThe offset from which the parser should start to parse. Optional. Default to `2`.\n\n#### options.shorthands `Object=`\n\nThe shorthands used to parse the argv.\n\n#### options.schema `Object=`\n\nThe schema used to clean the given object or the parsred argv\n\n#### options.check_all `Boolean=false`\n\n#### options.parallel `Boolean=false`\n\n#### options.limit `Boolean=false`\n\n\n## .argv(argv)\n\nParses the argument vector, without cleaning the data.\n\n### argv `Array`\n\n### returns `Object`\n\nThe parsed object with shorthand rules applied.\n\n\n## .clean(data, callback)\n\nCleans the given data according to the `schema`.\n\n### data `Object`\n\nThe given data.\n\n### callback `function(err, results, details)`\n\n\n## .parseArgv(argv, callback)\n\nParses argument vector (argv) or something like argv, and cleans the parsed data according to the `schema`.\n\nThis method is equivalent to `c.clean(c.argv(argv), callback)`.\n\n# Advanced Section\n\n## .registerType(type, typeDef)\n\n\n\n\n\n\n","_id":"clean@2.1.1","dist":{"shasum":"f78cb9f6a9b3156e537fc2cbb7caf271636ecb09","tarball":"http://localhost:1337/clean/-/clean-2.1.1.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kael","email":"i@kael.me"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"2.1.2":{"name":"clean","version":"2.1.2","description":"clean parses and santitize argv or options for node, supporting fully extendable types, shorthands, validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git@github.com:kaelzhang/node-clean.git"},"keywords":["argv","parser","argument-vector","cleaner","simple"],"author":{"name":"Kael"},"license":"MIT","readmeFilename":"README.md","bugs":{"url":"https://github.com/kaelzhang/node-clean/issues"},"dependencies":{"checker":"~0.5.1","minimist":"~0.0.5"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"readme":"[![NPM version](https://badge.fury.io/js/clean.png)](http://badge.fury.io/js/clean)\n[![Build Status](https://travis-ci.org/kaelzhang/node-clean.png?branch=master)](https://travis-ci.org/kaelzhang/node-clean)\n[![Dependency Status](https://gemnasium.com/kaelzhang/node-clean.png)](https://gemnasium.com/kaelzhang/node-clean)\n\n# clean\n\nClean is small but powerful node.js module that parses and santitize argv or options for node, supporting:\n\n- fully extendable types\n- shorthands\n- validatiors\n- setters\n\n# Installation and Usage\n\n```sh\nnpm install clean --save\n```\n\n```js\nvar clean = require('clean')(options);\n```\n\n# Usage\n\n## Argv Shorthands\n\nWe can define shorthands with the option `options.shorthands`.\n\n```js\nvar shorthands = {\n\t// if `String`, define a shorthand for a key name\n\tc: 'cwd',\n\t// if `Array`, define a pattern slice of argv\n\tnr: ['--no-recursive'],\n\t// if `Object`, define a specific value\n\tr3: {\n\t\tretry: 3,\n\t\tstrict: false\n\t}\n};\nclean({\n\tshorthands: shorthands\n}).argv(['node', 'xxx', '-c', 'abc', '--nr', '--r3']); \n// notice that '-nr' will be considered as '-n -r'\n// The result is:\n// {\n//\t\tcwd: 'abc',\n//\t\trecursive: false,\n//\t\tretry: 3,\n//\t\tstrict: false \n// }\n```\n\n## Types\n\n```js\nclean({\n\tschema: {\n\t\tcwd: {\n\t\t\ttype: require('path')\n\t\t},\n\t\t\n\t\tretry: {\n\t\t\ttype: Boolean\n\t\t}\t\t\n\t}\n}).parseArgv(\n\t['node', 'xxx', '--cwd', 'abc', 'retry', 'false'], \n\tfunction(err, results, details){\n\t\tconsole.log(results.cwd); // the `path.resolved()`d 'abc'\n\t\tconsole.log(results.retry === false); // is a boolean, not a string\n\t}\n)\n```\n\nHow to extend a custom type ? See the \"advanced section\".\n\n## Validators and Setters\n\nValidators and setters of `clean` is implemented by `[checker](https://github.com/kaelzhang/node-checker)`, check the apis of `checker` for details.\n\nYou could check out the demo located at \"example/clean.js\". That is a very complicated situation of usage.\n\n```sh\nnode example/clean.js --username guest\n```\n\n\n\n# Programatical Details\n\n## constructor: clean(schema, options)\n\n\n### options\n\n#### options.offset `Number=`\n\nThe offset from which the parser should start to parse. Optional. Default to `2`.\n\n#### options.shorthands `Object=`\n\nThe shorthands used to parse the argv.\n\n#### options.schema `Object=`\n\nThe schema used to clean the given object or the parsred argv\n\n#### options.check_all `Boolean=false`\n\n#### options.parallel `Boolean=false`\n\n#### options.limit `Boolean=false`\n\n\n## .argv(argv)\n\nParses the argument vector, without cleaning the data.\n\n### argv `Array`\n\n### returns `Object`\n\nThe parsed object with shorthand rules applied.\n\n\n## .clean(data, callback)\n\nCleans the given data according to the `schema`.\n\n### data `Object`\n\nThe given data.\n\n### callback `function(err, results, details)`\n\n\n## .parseArgv(argv, callback)\n\nParses argument vector (argv) or something like argv, and cleans the parsed data according to the `schema`.\n\nThis method is equivalent to `c.clean(c.argv(argv), callback)`.\n\n# Advanced Section\n\n## .registerType(type, typeDef)\n\n\n\n\n\n\n","_id":"clean@2.1.2","dist":{"shasum":"1b331a23e2352a0ef4e145a72cfce1b461f36c41","tarball":"http://localhost:1337/clean/-/clean-2.1.2.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kael","email":"i@kael.me"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"2.1.3":{"name":"clean","version":"2.1.3","description":"clean parses and santitize argv or options for node, supporting fully extendable types, shorthands, validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git@github.com:kaelzhang/node-clean.git"},"keywords":["argv","parser","argument-vector","cleaner","simple"],"author":{"name":"Kael"},"license":"MIT","readmeFilename":"README.md","bugs":{"url":"https://github.com/kaelzhang/node-clean/issues"},"dependencies":{"checker":"~0.5.1","minimist":"~0.0.5"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"readme":"[![NPM version](https://badge.fury.io/js/clean.png)](http://badge.fury.io/js/clean)\n[![Build Status](https://travis-ci.org/kaelzhang/node-clean.png?branch=master)](https://travis-ci.org/kaelzhang/node-clean)\n[![Dependency Status](https://gemnasium.com/kaelzhang/node-clean.png)](https://gemnasium.com/kaelzhang/node-clean)\n\n# clean\n\nClean is small but powerful node.js module that parses and santitize argv or options for node, supporting:\n\n- fully extendable types\n- shorthands\n- validatiors\n- setters\n\n# Installation and Usage\n\n```sh\nnpm install clean --save\n```\n\n```js\nvar clean = require('clean')(options);\n```\n\n# Usage\n\n## Argv Shorthands\n\nWe can define shorthands with the option `options.shorthands`.\n\n```js\nvar shorthands = {\n\t// if `String`, define a shorthand for a key name\n\tc: 'cwd',\n\t// if `Array`, define a pattern slice of argv\n\tnr: ['--no-recursive'],\n\t// if `Object`, define a specific value\n\tr3: {\n\t\tretry: 3,\n\t\tstrict: false\n\t}\n};\nclean({\n\tshorthands: shorthands\n}).argv(['node', 'xxx', '-c', 'abc', '--nr', '--r3']); \n// notice that '-nr' will be considered as '-n -r'\n// The result is:\n// {\n//\t\tcwd: 'abc',\n//\t\trecursive: false,\n//\t\tretry: 3,\n//\t\tstrict: false \n// }\n```\n\n## Types\n\n```js\nclean({\n\tschema: {\n\t\tcwd: {\n\t\t\ttype: require('path')\n\t\t},\n\t\t\n\t\tretry: {\n\t\t\ttype: Boolean\n\t\t}\t\t\n\t}\n}).parseArgv(\n\t['node', 'xxx', '--cwd', 'abc', 'retry', 'false'], \n\tfunction(err, results, details){\n\t\tconsole.log(results.cwd); // the `path.resolved()`d 'abc'\n\t\tconsole.log(results.retry === false); // is a boolean, not a string\n\t}\n)\n```\n\nHow to extend a custom type ? See the \"advanced section\".\n\n## Validators and Setters\n\nValidators and setters of `clean` is implemented by `[checker](https://github.com/kaelzhang/node-checker)`, check the apis of `checker` for details.\n\nYou could check out the demo located at \"example/clean.js\". That is a very complicated situation of usage.\n\n```sh\nnode example/clean.js --username guest\n```\n\n\n\n# Programatical Details\n\n## constructor: clean(schema, options)\n\n\n### options\n\n#### options.offset `Number=`\n\nThe offset from which the parser should start to parse. Optional. Default to `2`.\n\n#### options.shorthands `Object=`\n\nThe shorthands used to parse the argv.\n\n#### options.schema `Object=`\n\nThe schema used to clean the given object or the parsred argv\n\n#### options.check_all `Boolean=false`\n\n#### options.parallel `Boolean=false`\n\n#### options.limit `Boolean=false`\n\n\n## .argv(argv)\n\nParses the argument vector, without cleaning the data.\n\n### argv `Array`\n\n### returns `Object`\n\nThe parsed object with shorthand rules applied.\n\n\n## .clean(data, callback)\n\nCleans the given data according to the `schema`.\n\n### data `Object`\n\nThe given data.\n\n### callback `function(err, results, details)`\n\n\n## .parseArgv(argv, callback)\n\nParses argument vector (argv) or something like argv, and cleans the parsed data according to the `schema`.\n\nThis method is equivalent to `c.clean(c.argv(argv), callback)`.\n\n# Advanced Section\n\n## .registerType(type, typeDef)\n\n\n\n\n\n\n","_id":"clean@2.1.3","dist":{"shasum":"b7cc64b5f6254daed3a285ae6845a826f1e16c71","tarball":"http://localhost:1337/clean/-/clean-2.1.3.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kael","email":"i@kael.me"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"2.1.4":{"name":"clean","version":"2.1.4","description":"clean parses and santitize argv or options for node, supporting fully extendable types, shorthands, validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git@github.com:kaelzhang/node-clean.git"},"keywords":["argv","parser","argument-vector","cleaner","simple"],"author":{"name":"Kael"},"license":"MIT","readmeFilename":"README.md","bugs":{"url":"https://github.com/kaelzhang/node-clean/issues"},"dependencies":{"checker":"~0.5.1","minimist":"~0.0.5"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"readme":"[![NPM version](https://badge.fury.io/js/clean.png)](http://badge.fury.io/js/clean)\n[![Build Status](https://travis-ci.org/kaelzhang/node-clean.png?branch=master)](https://travis-ci.org/kaelzhang/node-clean)\n[![Dependency Status](https://gemnasium.com/kaelzhang/node-clean.png)](https://gemnasium.com/kaelzhang/node-clean)\n\n# clean\n\nClean is small but powerful node.js module that parses and santitize argv or options for node, supporting:\n\n- fully extendable types\n- shorthands\n- validatiors\n- setters\n\n# Installation and Usage\n\n```sh\nnpm install clean --save\n```\n\n```js\nvar clean = require('clean')(options);\n```\n\n# Usage\n\n## Argv Shorthands\n\nWe can define shorthands with the option `options.shorthands`.\n\n```js\nvar shorthands = {\n\t// if `String`, define a shorthand for a key name\n\tc: 'cwd',\n\t// if `Array`, define a pattern slice of argv\n\tnr: ['--no-recursive'],\n\t// if `Object`, define a specific value\n\tr3: {\n\t\tretry: 3,\n\t\tstrict: false\n\t}\n};\nclean({\n\tshorthands: shorthands\n}).argv(['node', 'xxx', '-c', 'abc', '--nr', '--r3']); \n// notice that '-nr' will be considered as '-n -r'\n// The result is:\n// {\n//\t\tcwd: 'abc',\n//\t\trecursive: false,\n//\t\tretry: 3,\n//\t\tstrict: false \n// }\n```\n\n## Types\n\n```js\nclean({\n\tschema: {\n\t\tcwd: {\n\t\t\ttype: require('path')\n\t\t},\n\t\t\n\t\tretry: {\n\t\t\ttype: Boolean\n\t\t}\t\t\n\t}\n}).parseArgv(\n\t['node', 'xxx', '--cwd', 'abc', 'retry', 'false'], \n\tfunction(err, results, details){\n\t\tconsole.log(results.cwd); // the `path.resolved()`d 'abc'\n\t\tconsole.log(results.retry === false); // is a boolean, not a string\n\t}\n)\n```\n\nHow to extend a custom type ? See the \"advanced section\".\n\n## Validators and Setters\n\nValidators and setters of `clean` is implemented by `[checker](https://github.com/kaelzhang/node-checker)`, check the apis of `checker` for details.\n\nYou could check out the demo located at \"example/clean.js\". That is a very complicated situation of usage.\n\n```sh\nnode example/clean.js --username guest\n```\n\n\n\n# Programatical Details\n\n## constructor: clean(schema, options)\n\n\n### options\n\n#### options.offset `Number=`\n\nThe offset from which the parser should start to parse. Optional. Default to `2`.\n\n#### options.shorthands `Object=`\n\nThe shorthands used to parse the argv.\n\n#### options.schema `Object=`\n\nThe schema used to clean the given object or the parsred argv\n\n#### options.check_all `Boolean=false`\n\n#### options.parallel `Boolean=false`\n\n#### options.limit `Boolean=false`\n\n\n## .argv(argv)\n\nParses the argument vector, without cleaning the data.\n\n### argv `Array`\n\n### returns `Object`\n\nThe parsed object with shorthand rules applied.\n\n\n## .clean(data, callback)\n\nCleans the given data according to the `schema`.\n\n### data `Object`\n\nThe given data.\n\n### callback `function(err, results, details)`\n\n\n## .parseArgv(argv, callback)\n\nParses argument vector (argv) or something like argv, and cleans the parsed data according to the `schema`.\n\nThis method is equivalent to `c.clean(c.argv(argv), callback)`.\n\n# Advanced Section\n\n## .registerType(type, typeDef)\n\n\n\n\n\n\n","_id":"clean@2.1.4","dist":{"shasum":"4c93d479f635b64e0df1230729811030b71ed2e0","tarball":"http://localhost:1337/clean/-/clean-2.1.4.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kael","email":"i@kael.me"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"2.1.5":{"name":"clean","version":"2.1.5","description":"clean parses and santitize argv or options for node, supporting fully extendable types, shorthands, validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git@github.com:kaelzhang/node-clean.git"},"keywords":["argv","parser","argument-vector","cleaner","simple"],"author":{"name":"Kael"},"license":"MIT","readmeFilename":"README.md","bugs":{"url":"https://github.com/kaelzhang/node-clean/issues"},"dependencies":{"checker":"~0.5.1","minimist":"~0.0.5"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"readme":"[![NPM version](https://badge.fury.io/js/clean.png)](http://badge.fury.io/js/clean)\n[![Build Status](https://travis-ci.org/kaelzhang/node-clean.png?branch=master)](https://travis-ci.org/kaelzhang/node-clean)\n[![Dependency Status](https://gemnasium.com/kaelzhang/node-clean.png)](https://gemnasium.com/kaelzhang/node-clean)\n\n# clean\n\nClean is small but powerful node.js module that parses and santitize argv or options for node, supporting:\n\n- fully extendable types\n- shorthands\n- validatiors\n- setters\n\n# Installation and Usage\n\n```sh\nnpm install clean --save\n```\n\n```js\nvar clean = require('clean')(options);\n```\n\n# Usage\n\n## Argv Shorthands\n\nWe can define shorthands with the option `options.shorthands`.\n\n```js\nvar shorthands = {\n\t// if `String`, define a shorthand for a key name\n\tc: 'cwd',\n\t// if `Array`, define a pattern slice of argv\n\tnr: ['--no-recursive'],\n\t// if `Object`, define a specific value\n\tr3: {\n\t\tretry: 3,\n\t\tstrict: false\n\t}\n};\nclean({\n\tshorthands: shorthands\n}).argv(['node', 'xxx', '-c', 'abc', '--nr', '--r3']); \n// notice that '-nr' will be considered as '-n -r'\n// The result is:\n// {\n//\t\tcwd: 'abc',\n//\t\trecursive: false,\n//\t\tretry: 3,\n//\t\tstrict: false \n// }\n```\n\n## Types\n\n```js\nclean({\n\tschema: {\n\t\tcwd: {\n\t\t\ttype: require('path')\n\t\t},\n\t\t\n\t\tretry: {\n\t\t\ttype: Boolean\n\t\t}\t\t\n\t}\n}).parseArgv(\n\t['node', 'xxx', '--cwd', 'abc', 'retry', 'false'], \n\tfunction(err, results, details){\n\t\tconsole.log(results.cwd); // the `path.resolved()`d 'abc'\n\t\tconsole.log(results.retry === false); // is a boolean, not a string\n\t}\n)\n```\n\nHow to extend a custom type ? See the \"advanced section\".\n\n## Validators and Setters\n\nValidators and setters of `clean` is implemented by `[checker](https://github.com/kaelzhang/node-checker)`, check the apis of `checker` for details.\n\nYou could check out the demo located at \"example/clean.js\". That is a very complicated situation of usage.\n\n```sh\nnode example/clean.js --username guest\n```\n\n\n\n# Programatical Details\n\n## constructor: clean(schema, options)\n\n\n### options\n\n#### options.offset `Number=`\n\nThe offset from which the parser should start to parse. Optional. Default to `2`.\n\n#### options.shorthands `Object=`\n\nThe shorthands used to parse the argv.\n\n#### options.schema `Object=`\n\nThe schema used to clean the given object or the parsred argv\n\n#### options.check_all `Boolean=false`\n\n#### options.parallel `Boolean=false`\n\n#### options.limit `Boolean=false`\n\n\n## .argv(argv)\n\nParses the argument vector, without cleaning the data.\n\n### argv `Array`\n\n### returns `Object`\n\nThe parsed object with shorthand rules applied.\n\n\n## .clean(data, callback)\n\nCleans the given data according to the `schema`.\n\n### data `Object`\n\nThe given data.\n\n### callback `function(err, results, details)`\n\n\n## .parseArgv(argv, callback)\n\nParses argument vector (argv) or something like argv, and cleans the parsed data according to the `schema`.\n\nThis method is equivalent to `c.clean(c.argv(argv), callback)`.\n\n# Advanced Section\n\n## .registerType(type, typeDef)\n\n\n\n\n\n\n","_id":"clean@2.1.5","dist":{"shasum":"62c230d6c08ab4d21388b9cbdfd2519bfd43bde9","tarball":"http://localhost:1337/clean/-/clean-2.1.5.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kael","email":"i@kael.me"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"2.1.6":{"name":"clean","version":"2.1.6","description":"clean parses and santitize argv or options for node, supporting fully extendable types, shorthands, validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git@github.com:kaelzhang/node-clean.git"},"keywords":["argv","parser","argument-vector","cleaner","simple"],"author":{"name":"Kael"},"license":"MIT","readmeFilename":"README.md","bugs":{"url":"https://github.com/kaelzhang/node-clean/issues"},"dependencies":{"checker":"~0.5.1","minimist":"~0.0.5"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"readme":"[![NPM version](https://badge.fury.io/js/clean.png)](http://badge.fury.io/js/clean)\n[![Build Status](https://travis-ci.org/kaelzhang/node-clean.png?branch=master)](https://travis-ci.org/kaelzhang/node-clean)\n[![Dependency Status](https://gemnasium.com/kaelzhang/node-clean.png)](https://gemnasium.com/kaelzhang/node-clean)\n\n# clean\n\nClean is small but powerful node.js module that parses and santitize argv or options for node, supporting:\n\n- fully extendable types\n- shorthands\n- validatiors\n- setters\n\n# Installation and Usage\n\n```sh\nnpm install clean --save\n```\n\n```js\nvar clean = require('clean')(options);\n```\n\n# Usage\n\n## Argv Shorthands\n\nWe can define shorthands with the option `options.shorthands`.\n\n```js\nvar shorthands = {\n\t// if `String`, define a shorthand for a key name\n\tc: 'cwd',\n\t// if `Array`, define a pattern slice of argv\n\tnr: ['--no-recursive'],\n\t// if `Object`, define a specific value\n\tr3: {\n\t\tretry: 3,\n\t\tstrict: false\n\t}\n};\nclean({\n\tshorthands: shorthands\n}).argv(['node', 'xxx', '-c', 'abc', '--nr', '--r3']); \n// notice that '-nr' will be considered as '-n -r'\n// The result is:\n// {\n//\t\tcwd: 'abc',\n//\t\trecursive: false,\n//\t\tretry: 3,\n//\t\tstrict: false \n// }\n```\n\n## Types\n\n```js\nclean({\n\tschema: {\n\t\tcwd: {\n\t\t\ttype: require('path')\n\t\t},\n\t\t\n\t\tretry: {\n\t\t\ttype: Boolean\n\t\t}\t\t\n\t}\n}).parseArgv(\n\t['node', 'xxx', '--cwd', 'abc', 'retry', 'false'], \n\tfunction(err, results, details){\n\t\tconsole.log(results.cwd); // the `path.resolved()`d 'abc'\n\t\tconsole.log(results.retry === false); // is a boolean, not a string\n\t}\n)\n```\n\nHow to extend a custom type ? See the \"advanced section\".\n\n## Validators and Setters\n\nValidators and setters of `clean` is implemented by `[checker](https://github.com/kaelzhang/node-checker)`, check the apis of `checker` for details.\n\nYou could check out the demo located at \"example/clean.js\". That is a very complicated situation of usage.\n\n```sh\nnode example/clean.js --username guest\n```\n\n\n\n# Programatical Details\n\n## constructor: clean(schema, options)\n\n\n### options\n\n#### options.offset `Number=`\n\nThe offset from which the parser should start to parse. Optional. Default to `2`.\n\n#### options.shorthands `Object=`\n\nThe shorthands used to parse the argv.\n\n#### options.schema `Object=`\n\nThe schema used to clean the given object or the parsred argv\n\n#### options.check_all `Boolean=false`\n\n#### options.parallel `Boolean=false`\n\n#### options.limit `Boolean=false`\n\n\n## .argv(argv)\n\nParses the argument vector, without cleaning the data.\n\n### argv `Array`\n\n### returns `Object`\n\nThe parsed object with shorthand rules applied.\n\n\n## .clean(data, callback)\n\nCleans the given data according to the `schema`.\n\n### data `Object`\n\nThe given data.\n\n### callback `function(err, results, details)`\n\n\n## .parseArgv(argv, callback)\n\nParses argument vector (argv) or something like argv, and cleans the parsed data according to the `schema`.\n\nThis method is equivalent to `c.clean(c.argv(argv), callback)`.\n\n# Advanced Section\n\n## .registerType(type, typeDef)\n\n\n\n\n\n\n","_id":"clean@2.1.6","dist":{"shasum":"41c80b2b6f5432c60cddb81932ab56563b444f52","tarball":"http://localhost:1337/clean/-/clean-2.1.6.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kael","email":"i@kael.me"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}}},"readme":"ERROR: No README data found!","maintainers":[{"name":"kael","email":"i@kael.me"}],"time":{"modified":"2013-10-29T10:27:09.584Z","created":"2013-10-09T14:58:35.029Z","0.0.0":"2013-10-09T14:58:56.786Z","1.1.3":"2013-10-09T17:11:53.515Z","1.1.4":"2013-10-09T17:14:02.537Z","2.1.1":"2013-10-10T04:10:32.004Z","2.1.2":"2013-10-14T13:43:09.309Z","2.1.3":"2013-10-14T15:49:01.158Z","2.1.4":"2013-10-17T03:15:37.028Z","2.1.5":"2013-10-17T03:21:04.145Z","2.1.6":"2013-10-29T10:27:09.584Z"},"author":{"name":"Kael"},"repository":{"type":"git","url":"git@github.com:kaelzhang/node-clean.git"},"_attachments":{}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/83/a4/d747b806caae7385778145bcf999fae69eeb6f14343f6801b79b6b7853538961694ac8b4791c7675c27928b5495d12d2f944867db1105e424d5fa9b1e015 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/83/a4/d747b806caae7385778145bcf999fae69eeb6f14343f6801b79b6b7853538961694ac8b4791c7675c27928b5495d12d2f944867db1105e424d5fa9b1e015
deleted file mode 100644
index 3dd7b758016759..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/83/a4/d747b806caae7385778145bcf999fae69eeb6f14343f6801b79b6b7853538961694ac8b4791c7675c27928b5495d12d2f944867db1105e424d5fa9b1e015
+++ /dev/null
@@ -1 +0,0 @@
-{"_id":"minimist","_rev":"14-5a3ee715a591f6fb1267503070d3d114","name":"minimist","description":"parse argument options","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.0":{"name":"minimist","version":"0.0.0","description":"parse argument options","main":"index.js","devDependencies":{"tape":"~1.0.4","tap":"~0.4.0"},"scripts":{"test":"tap test/*.js"},"testling":{"files":"test/*.js","browsers":["ie/6..latest","ff/3.6","firefox/latest","chrome/10","chrome/latest","safari/5.1","safari/latest","opera/12"]},"repository":{"type":"git","url":"git://github.com/substack/minimist.git"},"homepage":"https://github.com/substack/minimist","keywords":["argv","getopt","parser","optimist"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT","readme":"# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n  x: 3,\n  y: 4,\n  n: 5,\n  a: true,\n  b: true,\n  c: true,\n  beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n","readmeFilename":"readme.markdown","bugs":{"url":"https://github.com/substack/minimist/issues"},"_id":"minimist@0.0.0","dist":{"shasum":"0f62459b3333ea881e554e400243e130ef123568","tarball":"http://localhost:1337/minimist/-/minimist-0.0.0.tgz"},"_from":".","_npmVersion":"1.3.0","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.0.1":{"name":"minimist","version":"0.0.1","description":"parse argument options","main":"index.js","devDependencies":{"tape":"~1.0.4","tap":"~0.4.0"},"scripts":{"test":"tap test/*.js"},"testling":{"files":"test/*.js","browsers":["ie/6..latest","ff/3.6","firefox/latest","chrome/10","chrome/latest","safari/5.1","safari/latest","opera/12"]},"repository":{"type":"git","url":"git://github.com/substack/minimist.git"},"homepage":"https://github.com/substack/minimist","keywords":["argv","getopt","parser","optimist"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT","readme":"# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n  x: 3,\n  y: 4,\n  n: 5,\n  a: true,\n  b: true,\n  c: true,\n  beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n","readmeFilename":"readme.markdown","bugs":{"url":"https://github.com/substack/minimist/issues"},"_id":"minimist@0.0.1","dist":{"shasum":"fa2439fbf7da8525c51b2a74e2815b380abc8ab6","tarball":"http://localhost:1337/minimist/-/minimist-0.0.1.tgz"},"_from":".","_npmVersion":"1.3.0","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.0.2":{"name":"minimist","version":"0.0.2","description":"parse argument options","main":"index.js","devDependencies":{"tape":"~1.0.4","tap":"~0.4.0"},"scripts":{"test":"tap test/*.js"},"testling":{"files":"test/*.js","browsers":["ie/6..latest","ff/5","firefox/latest","chrome/10","chrome/latest","safari/5.1","safari/latest","opera/12"]},"repository":{"type":"git","url":"git://github.com/substack/minimist.git"},"homepage":"https://github.com/substack/minimist","keywords":["argv","getopt","parser","optimist"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT","readme":"# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n  x: 3,\n  y: 4,\n  n: 5,\n  a: true,\n  b: true,\n  c: true,\n  beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n","readmeFilename":"readme.markdown","bugs":{"url":"https://github.com/substack/minimist/issues"},"_id":"minimist@0.0.2","dist":{"shasum":"3297e0500be195b8fcb56668c45b925bc9bca7ab","tarball":"http://localhost:1337/minimist/-/minimist-0.0.2.tgz"},"_from":".","_npmVersion":"1.3.7","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.0.3":{"name":"minimist","version":"0.0.3","description":"parse argument options","main":"index.js","devDependencies":{"tape":"~1.0.4","tap":"~0.4.0"},"scripts":{"test":"tap test/*.js"},"testling":{"files":"test/*.js","browsers":["ie/6..latest","ff/5","firefox/latest","chrome/10","chrome/latest","safari/5.1","safari/latest","opera/12"]},"repository":{"type":"git","url":"git://github.com/substack/minimist.git"},"homepage":"https://github.com/substack/minimist","keywords":["argv","getopt","parser","optimist"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT","readme":"# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n  x: 3,\n  y: 4,\n  n: 5,\n  a: true,\n  b: true,\n  c: true,\n  beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n","readmeFilename":"readme.markdown","bugs":{"url":"https://github.com/substack/minimist/issues"},"_id":"minimist@0.0.3","dist":{"shasum":"a7a2ef8fbafecbae6c1baa4e56ad81e77acacb94","tarball":"http://localhost:1337/minimist/-/minimist-0.0.3.tgz"},"_from":".","_npmVersion":"1.3.7","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.0.4":{"name":"minimist","version":"0.0.4","description":"parse argument options","main":"index.js","devDependencies":{"tape":"~1.0.4","tap":"~0.4.0"},"scripts":{"test":"tap test/*.js"},"testling":{"files":"test/*.js","browsers":["ie/6..latest","ff/5","firefox/latest","chrome/10","chrome/latest","safari/5.1","safari/latest","opera/12"]},"repository":{"type":"git","url":"git://github.com/substack/minimist.git"},"homepage":"https://github.com/substack/minimist","keywords":["argv","getopt","parser","optimist"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT","readme":"# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n  x: 3,\n  y: 4,\n  n: 5,\n  a: true,\n  b: true,\n  c: true,\n  beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n","readmeFilename":"readme.markdown","bugs":{"url":"https://github.com/substack/minimist/issues"},"_id":"minimist@0.0.4","dist":{"shasum":"db41b1028484927a9425765b954075f5082f5048","tarball":"http://localhost:1337/minimist/-/minimist-0.0.4.tgz"},"_from":".","_npmVersion":"1.3.7","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.0.5":{"name":"minimist","version":"0.0.5","description":"parse argument options","main":"index.js","devDependencies":{"tape":"~1.0.4","tap":"~0.4.0"},"scripts":{"test":"tap test/*.js"},"testling":{"files":"test/*.js","browsers":["ie/6..latest","ff/5","firefox/latest","chrome/10","chrome/latest","safari/5.1","safari/latest","opera/12"]},"repository":{"type":"git","url":"git://github.com/substack/minimist.git"},"homepage":"https://github.com/substack/minimist","keywords":["argv","getopt","parser","optimist"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT","readme":"# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n  x: 3,\n  y: 4,\n  n: 5,\n  a: true,\n  b: true,\n  c: true,\n  beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n","readmeFilename":"readme.markdown","bugs":{"url":"https://github.com/substack/minimist/issues"},"_id":"minimist@0.0.5","dist":{"shasum":"d7aa327bcecf518f9106ac6b8f003fa3bcea8566","tarball":"http://localhost:1337/minimist/-/minimist-0.0.5.tgz"},"_from":".","_npmVersion":"1.3.7","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}}},"readme":"# minimist\n\nparse argument options\n\nThis module is the guts of optimist's argument parser without all the\nfanciful decoration.\n\n[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)\n\n[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)\n\n# example\n\n``` js\nvar argv = require('minimist')(process.argv.slice(2));\nconsole.dir(argv);\n```\n\n```\n$ node example/parse.js -a beep -b boop\n{ _: [], a: 'beep', b: 'boop' }\n```\n\n```\n$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz\n{ _: [ 'foo', 'bar', 'baz' ],\n  x: 3,\n  y: 4,\n  n: 5,\n  a: true,\n  b: true,\n  c: true,\n  beep: 'boop' }\n```\n\n# methods\n\n``` js\nvar parseArgs = require('minimist')\n```\n\n## var argv = parseArgs(args, opts={})\n\nReturn an argument object `argv` populated with the array arguments from `args`.\n\n`argv._` contains all the arguments that didn't have an option associated with\nthem.\n\nNumeric-looking arguments will be returned as numbers unless `opts.string` or\n`opts.boolean` is set for that argument name.\n\nAny arguments after `'--'` will not be parsed and will end up in `argv._`.\n\noptions can be:\n\n* `opts.string` - a string or array of strings argument names to always treat as\nstrings\n* `opts.boolean` - a string or array of strings to always treat as booleans\n* `opts.alias` - an object mapping string names to strings or arrays of string\nargument names to use as aliases\n* `opts.default` - an object mapping string argument names to default values\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install minimist\n```\n\n# license\n\nMIT\n","maintainers":[{"name":"substack","email":"mail@substack.net"}],"time":{"0.0.0":"2013-06-25T08:17:18.123Z","0.0.1":"2013-06-25T08:22:05.384Z","0.0.2":"2013-08-28T23:00:17.595Z","0.0.3":"2013-09-12T16:27:07.340Z","0.0.4":"2013-09-17T15:13:28.184Z","0.0.5":"2013-09-19T06:45:40.016Z"},"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"repository":{"type":"git","url":"git://github.com/substack/minimist.git"},"users":{"chrisdickinson":true},"_attachments":{"minimist-0.0.5.tgz":{"content_type":"application/octet-stream","revpos":12,"digest":"md5-7fj5eF/2Az1v1uUELt0w5Q==","length":5977,"stub":true},"minimist-0.0.4.tgz":{"content_type":"application/octet-stream","revpos":10,"digest":"md5-qnJpUhb/cbsf0S5JujcKvA==","length":5952,"stub":true},"minimist-0.0.3.tgz":{"content_type":"application/octet-stream","revpos":8,"digest":"md5-2LmD2Da9atq7rqeguE/HPQ==","length":5871,"stub":true},"minimist-0.0.2.tgz":{"content_type":"application/octet-stream","revpos":6,"digest":"md5-8HHOFLuI1T4ko3lvq362pA==","length":5821,"stub":true},"minimist-0.0.1.tgz":{"content_type":"application/octet-stream","revpos":4,"digest":"md5-sEDD6p3usslEbK4/f4Rbpw==","length":5691,"stub":true},"minimist-0.0.0.tgz":{"content_type":"application/octet-stream","revpos":2,"digest":"md5-g7dzol87egGxtducC9bdFw==","length":5687,"stub":true}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/87/44/66cb46d039cc912bd3ee29bfae97ac7f4dd4051cd240c1b25548747f9f1c6fdc3a2a9e65b058ab28f0a22b4aaee58075e0c77fd00ddf656536bc543290be b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/87/44/66cb46d039cc912bd3ee29bfae97ac7f4dd4051cd240c1b25548747f9f1c6fdc3a2a9e65b058ab28f0a22b4aaee58075e0c77fd00ddf656536bc543290be
deleted file mode 100644
index b4e8a5f74ed1a4..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/87/44/66cb46d039cc912bd3ee29bfae97ac7f4dd4051cd240c1b25548747f9f1c6fdc3a2a9e65b058ab28f0a22b4aaee58075e0c77fd00ddf656536bc543290be
+++ /dev/null
@@ -1 +0,0 @@
-{"_id":"npm-test-peer-deps","_rev":"2-fb584f2e7674d4ae2a93f2f9086e7268","name":"npm-test-peer-deps","dist-tags":{"latest":"0.0.0"},"versions":{"0.0.0":{"author":{"name":"Domenic Denicola"},"name":"npm-test-peer-deps","version":"0.0.0","peerDependencies":{"request":"0.9.x"},"dependencies":{"underscore":"1.3.1"},"_id":"npm-test-peer-deps@0.0.0","dist":{"shasum":"82f3ccba11914dc88bcb185ee3b1b33b564272bc","tarball":"http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz"},"_from":".","_npmVersion":"1.3.25","_npmUser":{"name":"domenic","email":"domenic@domenicdenicola.com"},"maintainers":[{"name":"domenic","email":"domenic@domenicdenicola.com"}],"directories":{}}},"readme":"ERROR: No README data found!","maintainers":[{"name":"domenic","email":"domenic@domenicdenicola.com"}],"time":{"0.0.0":"2014-02-08T04:56:36.743Z"},"readmeFilename":"","_attachments":{}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/88/49/914fc692dc5441fec8231a33caec98409b6d522fa46bed4a673127876224b9cb8bc35e51e251c8a897a1d71dd9d7f46b6217ec8ef30ec4d83f4b9a43098d b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/88/49/914fc692dc5441fec8231a33caec98409b6d522fa46bed4a673127876224b9cb8bc35e51e251c8a897a1d71dd9d7f46b6217ec8ef30ec4d83f4b9a43098d
deleted file mode 100644
index 9de484272a7327..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/88/49/914fc692dc5441fec8231a33caec98409b6d522fa46bed4a673127876224b9cb8bc35e51e251c8a897a1d71dd9d7f46b6217ec8ef30ec4d83f4b9a43098d
+++ /dev/null
@@ -1 +0,0 @@
-{"name":"add-named-update-protocol-porti","versions":{"0.0.0":{"name":"add-named-update-protocol-porti","version":"0.0.0","dist":{"tarball":"http://127.0.0.1:1338/registry/add-named-update-protocol-porti/-/add-named-update-protocol-porti-0.0.0.tgz","shasum":"356a192b7913b04c54574d18c28d46e6395428ab"}}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/9d/5b/15d0ad75fc513f4a327b5e441803dd220edeb4f9660e454fe9d263b543ba356c71330a5964f864d1c24aada16bea028eb40106762b142b30d448cdc08593 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/9d/5b/15d0ad75fc513f4a327b5e441803dd220edeb4f9660e454fe9d263b543ba356c71330a5964f864d1c24aada16bea028eb40106762b142b30d448cdc08593
deleted file mode 100644
index b4bac32b24d86c..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/9d/5b/15d0ad75fc513f4a327b5e441803dd220edeb4f9660e454fe9d263b543ba356c71330a5964f864d1c24aada16bea028eb40106762b142b30d448cdc08593 and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/9d/b3/095447c9b53fe88bbf190fb6a324c7a42a84bf51d3c345fc88cdeea00f026167ad7329b42369d79a67812738a2324b7aae42d4feeac49a2b895c57b48168 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/9d/b3/095447c9b53fe88bbf190fb6a324c7a42a84bf51d3c345fc88cdeea00f026167ad7329b42369d79a67812738a2324b7aae42d4feeac49a2b895c57b48168
deleted file mode 100644
index f80dde8f725237..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/9d/b3/095447c9b53fe88bbf190fb6a324c7a42a84bf51d3c345fc88cdeea00f026167ad7329b42369d79a67812738a2324b7aae42d4feeac49a2b895c57b48168
+++ /dev/null
@@ -1 +0,0 @@
-{"_rev":"3-deadcafebabebeef"}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/a0/f8/5ae8b484bc71fb13ef636b9aee45f548ab6357488369ffb02f239f9473c6b94c5c2a5ef3b1b96e16ce6158dc05f13ef88bcef32de3bc415a48cdc5500355 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/a0/f8/5ae8b484bc71fb13ef636b9aee45f548ab6357488369ffb02f239f9473c6b94c5c2a5ef3b1b96e16ce6158dc05f13ef88bcef32de3bc415a48cdc5500355
deleted file mode 100644
index 09b8eb5c183d5d..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/a0/f8/5ae8b484bc71fb13ef636b9aee45f548ab6357488369ffb02f239f9473c6b94c5c2a5ef3b1b96e16ce6158dc05f13ef88bcef32de3bc415a48cdc5500355
+++ /dev/null
@@ -1 +0,0 @@
-{"latest":"4.0.0"}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/a1/a1/072cae616c1f6479110e3e3ee54fa16978c081d8032999d62d207e5cd6c7643e463d73d3ff4b218ad717724c918013e03954f9729192cbdfa1d0bed6fd39 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/a1/a1/072cae616c1f6479110e3e3ee54fa16978c081d8032999d62d207e5cd6c7643e463d73d3ff4b218ad717724c918013e03954f9729192cbdfa1d0bed6fd39
deleted file mode 100644
index 679abe4ac1ca50..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/a1/a1/072cae616c1f6479110e3e3ee54fa16978c081d8032999d62d207e5cd6c7643e463d73d3ff4b218ad717724c918013e03954f9729192cbdfa1d0bed6fd39
+++ /dev/null
@@ -1 +0,0 @@
-{"latest":"2.0.0","b":"0.6.0"}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/aa/86/730ec932cdb0f05db2f35e1e456fc986db19f83fb3f8140a5851411fbcf44966328479ab280cc80ae2d740cdc01f8f880836a00c66743565acd2e8352e7a b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/aa/86/730ec932cdb0f05db2f35e1e456fc986db19f83fb3f8140a5851411fbcf44966328479ab280cc80ae2d740cdc01f8f880836a00c66743565acd2e8352e7a
deleted file mode 100644
index b83cc30a624284..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/aa/86/730ec932cdb0f05db2f35e1e456fc986db19f83fb3f8140a5851411fbcf44966328479ab280cc80ae2d740cdc01f8f880836a00c66743565acd2e8352e7a and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/ad/a1/cd9122e6beb95de36bb8dc10c255a6a7d7b8bfbe21b72843ab6db402ee8cb8bde5fb2d050a7eb96ea330e8be1a394c4c7c444c8b541f8e180b7f12506fe8 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/ad/a1/cd9122e6beb95de36bb8dc10c255a6a7d7b8bfbe21b72843ab6db402ee8cb8bde5fb2d050a7eb96ea330e8be1a394c4c7c444c8b541f8e180b7f12506fe8
deleted file mode 100644
index 009905080b2b41..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/ad/a1/cd9122e6beb95de36bb8dc10c255a6a7d7b8bfbe21b72843ab6db402ee8cb8bde5fb2d050a7eb96ea330e8be1a394c4c7c444c8b541f8e180b7f12506fe8
+++ /dev/null
@@ -1 +0,0 @@
-{"_id":"async","_rev":"223-5df87f4f3d2584f561ccb40c7361a399","name":"async","description":"Higher-order functions and common patterns for asynchronous code","dist-tags":{"latest":"0.2.10"},"versions":{"0.1.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.0","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.0","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/async/-/async-0.1.0.tgz","shasum":"ab8ece0c40627e4e8f0e09c8fcf7c19ed0c4241c"},"directories":{}},"0.1.1":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.1","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.1","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/async/-/async-0.1.1.tgz","shasum":"fb965e70dbea44c8a4b8a948472dee7d27279d5e"},"directories":{}},"0.1.2":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.2","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.2","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/async/-/async-0.1.2.tgz","shasum":"be761882a64d3dc81a669f9ee3d5c28497382691"},"directories":{}},"0.1.3":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.3","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.3","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/async/-/async-0.1.3.tgz","shasum":"629ca2357112d90cafc33872366b14f2695a1fbc"},"directories":{}},"0.1.4":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.4","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.4","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/async/-/async-0.1.4.tgz","shasum":"29de4b98712ab8858411d8d8e3361a986c3b2c18"},"directories":{}},"0.1.5":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.5","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.5","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/async/-/async-0.1.5.tgz","shasum":"9d83e3d4adb9c962fc4a30e7dd04bf1206c28ea5"},"directories":{}},"0.1.6":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.6","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.6","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/async/-/async-0.1.6.tgz","shasum":"2dfb4fa1915f86056060c2e2f35a7fb8549907cc"},"directories":{}},"0.1.7":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.7","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.7","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.4-1","_nodeVersion":"v0.2.5","dist":{"tarball":"http://localhost:1337/async/-/async-0.1.7.tgz","shasum":"e9268d0d8cd8dcfe0db0895b27dcc4bcc5c739a5"},"directories":{}},"0.1.8":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.8","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"web":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_id":"async@0.1.8","engines":{"node":"*"},"_nodeSupported":true,"dist":{"tarball":"http://localhost:1337/async/-/async-0.1.8.tgz","shasum":"52f2df6c0aa6a7f8333e1fbac0fbd93670cf6758"},"directories":{}},"0.1.9":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.9","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"dependencies":{},"devDependencies":{},"_id":"async@0.1.9","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.1rc7","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"f984d0739b5382c949cc3bea702d21d0dbd52040","tarball":"http://localhost:1337/async/-/async-0.1.9.tgz"},"directories":{}},"0.1.10":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.10","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmJsonOpts":{"file":"/home/caolan/.npm/async/0.1.10/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"async@0.1.10","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"12b32bf098fa7fc51ae3ac51441b8ba15f437cf1","tarball":"http://localhost:1337/async/-/async-0.1.10.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.11":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.11","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmJsonOpts":{"file":"/home/caolan/.npm/async/0.1.11/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"async@0.1.11","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"a397a69c6febae232d20a76a5b10d8742e2b8215","tarball":"http://localhost:1337/async/-/async-0.1.11.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.12":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.12","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmJsonOpts":{"file":"/home/caolan/.npm/async/0.1.12/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"async@0.1.12","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"ab36be6611dc63d91657128e1d65102b959d4afe","tarball":"http://localhost:1337/async/-/async-0.1.12.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.13":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.13","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.13","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"f1e53ad69dab282d8e75cbec5e2c5524b6195eab","tarball":"http://localhost:1337/async/-/async-0.1.13.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.14":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.14","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.14","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"0fcfaf089229fc657798203d1a4544102f7d26dc","tarball":"http://localhost:1337/async/-/async-0.1.14.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.15":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.15","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.15","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.9","_defaultsLoaded":true,"dist":{"shasum":"2180eaca2cf2a6ca5280d41c0585bec9b3e49bd3","tarball":"http://localhost:1337/async/-/async-0.1.15.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.16":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.16","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.16","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"b3a61fdc1a9193d4f64755c7600126e254223186","tarball":"http://localhost:1337/async/-/async-0.1.16.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.17":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.17","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"dependencies":{"uglify-js":"1.2.x"},"devDependencies":{"nodeunit":">0.0.0","nodelint":">0.0.0"},"scripts":{"preinstall":"make clean","install":"make build","test":"make test"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.17","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"03524a379e974dc9ee5c811c6ee3815d7bc54f6e","tarball":"http://localhost:1337/async/-/async-0.1.17.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.18":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.18","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.18","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"c59c923920b76d5bf23248c04433920c4d45086a","tarball":"http://localhost:1337/async/-/async-0.1.18.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.19":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.19","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.19","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"4fd6125a70f841fb10b14aeec6e23cf1479c71a7","tarball":"http://localhost:1337/async/-/async-0.1.19.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.20":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.20","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.20","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"ba0e47b08ae972e04b5215de28539b313482ede5","tarball":"http://localhost:1337/async/-/async-0.1.20.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.21":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.21","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.21","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"b5b12e985f09ab72c202fa00f623cd9d997e9464","tarball":"http://localhost:1337/async/-/async-0.1.21.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.1.22":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./index","author":{"name":"Caolan McMahon"},"version":"0.1.22","repository":{"type":"git","url":"git://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_npmUser":{"name":"caolan","email":"caolan@caolanmcmahon.com"},"_id":"async@0.1.22","dependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.18","_defaultsLoaded":true,"dist":{"shasum":"0fc1aaa088a0e3ef0ebe2d8831bab0dcf8845061","tarball":"http://localhost:1337/async/-/async-0.1.22.tgz"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.0":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.0","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_id":"async@0.2.0","dist":{"shasum":"db1c645337bab79d0ca93d95f5c72d9605be0fce","tarball":"http://localhost:1337/async/-/async-0.2.0.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.1":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.1","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"_id":"async@0.2.1","dist":{"shasum":"4e37d08391132f79657a99ca73aa4eb471a6f771","tarball":"http://localhost:1337/async/-/async-0.2.1.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.2":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.2","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"_id":"async@0.2.2","dist":{"shasum":"8414ee47da7548126b4d3d923850d54e68a72b28","tarball":"http://localhost:1337/async/-/async-0.2.2.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.3":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.3","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"_id":"async@0.2.3","dist":{"shasum":"79bf601d723a2e8c3e91cb6bb08f152dca309fb3","tarball":"http://localhost:1337/async/-/async-0.2.3.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.4":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.4","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"_id":"async@0.2.4","dist":{"shasum":"0550e510cf43b83e2fcf1cb96399f03f1efd50eb","tarball":"http://localhost:1337/async/-/async-0.2.4.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.5":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.5","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"_id":"async@0.2.5","dist":{"shasum":"45f05da480749ba4c1dcd8cd3a3747ae7b36fe52","tarball":"http://localhost:1337/async/-/async-0.2.5.tgz"},"_npmVersion":"1.2.0","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.6":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.6","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"_id":"async@0.2.6","dist":{"shasum":"ad3f373d9249ae324881565582bc90e152abbd68","tarball":"http://localhost:1337/async/-/async-0.2.6.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.7":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.7","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"_id":"async@0.2.7","dist":{"shasum":"44c5ee151aece6c4bf5364cfc7c28fe4e58f18df","tarball":"http://localhost:1337/async/-/async-0.2.7.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.8":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.8","repository":{"type":"git","url":"http://github.com/caolan/async.git"},"bugs":{"url":"http://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"http://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"_id":"async@0.2.8","dist":{"shasum":"ba1b3ffd1e6cdb1e999aca76ef6ecee8e7f55f53","tarball":"http://localhost:1337/async/-/async-0.2.8.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.9":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.9","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"_id":"async@0.2.9","dist":{"shasum":"df63060fbf3d33286a76aaf6d55a2986d9ff8619","tarball":"http://localhost:1337/async/-/async-0.2.9.tgz"},"_from":".","_npmVersion":"1.2.23","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}},"0.2.10":{"name":"async","description":"Higher-order functions and common patterns for asynchronous code","main":"./lib/async","author":{"name":"Caolan McMahon"},"version":"0.2.10","repository":{"type":"git","url":"https://github.com/caolan/async.git"},"bugs":{"url":"https://github.com/caolan/async/issues"},"licenses":[{"type":"MIT","url":"https://github.com/caolan/async/raw/master/LICENSE"}],"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"jam":{"main":"lib/async.js","include":["lib/async.js","README.md","LICENSE"]},"scripts":{"test":"nodeunit test/test-async.js"},"_id":"async@0.2.10","dist":{"shasum":"b6bbe0b0674b9d719708ca38de8c237cb526c3d1","tarball":"http://localhost:1337/async/-/async-0.2.10.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"caolan","email":"caolan.mcmahon@gmail.com"},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"directories":{}}},"maintainers":[{"name":"caolan","email":"caolan@caolanmcmahon.com"}],"author":{"name":"Caolan McMahon"},"repository":{"type":"git","url":"https://github.com/caolan/async.git"},"time":{"modified":"2014-03-13T17:04:44.914Z","created":"2010-12-19T16:41:51.765Z","0.1.0":"2010-12-19T16:41:51.765Z","0.1.1":"2010-12-19T16:41:51.765Z","0.1.2":"2010-12-19T16:41:51.765Z","0.1.3":"2010-12-19T16:41:51.765Z","0.1.4":"2010-12-19T16:41:51.765Z","0.1.5":"2010-12-19T16:41:51.765Z","0.1.6":"2010-12-19T16:41:51.765Z","0.1.7":"2010-12-19T16:41:51.765Z","0.1.8":"2011-01-18T09:56:53.975Z","0.1.9":"2011-04-27T20:48:08.634Z","0.1.10":"2011-09-19T04:40:01.573Z","0.1.11":"2011-10-14T17:07:28.752Z","0.1.12":"2011-10-14T17:19:19.452Z","0.1.13":"2011-10-29T22:33:52.448Z","0.1.14":"2011-10-29T22:40:14.486Z","0.1.15":"2011-11-01T23:05:01.415Z","0.1.16":"2012-02-13T04:56:23.926Z","0.1.17":"2012-02-27T02:40:58.997Z","0.1.18":"2012-02-27T16:51:02.109Z","0.1.19":"2012-05-24T06:51:06.109Z","0.1.20":"2012-05-24T06:53:39.997Z","0.1.21":"2012-05-24T07:16:16.753Z","0.1.22":"2012-05-30T18:26:44.821Z","0.1.23":"2012-10-04T13:52:08.947Z","0.2.0":"2013-02-04T11:38:08.943Z","0.2.1":"2013-02-04T11:52:34.110Z","0.2.2":"2013-02-05T15:55:23.202Z","0.2.3":"2013-02-06T12:48:37.415Z","0.2.4":"2013-02-07T17:26:22.236Z","0.2.5":"2013-02-10T22:42:00.162Z","0.2.6":"2013-03-03T11:29:52.674Z","0.2.7":"2013-04-09T20:50:04.712Z","0.2.8":"2013-05-01T10:04:07.430Z","0.2.9":"2013-05-28T07:50:48.795Z","0.2.10":"2014-01-23T16:23:57.271Z"},"users":{"thejh":true,"avianflu":true,"dylang":true,"ragingwind":true,"mvolkmann":true,"mikl":true,"linus":true,"pvorb":true,"dodo":true,"danielr":true,"suor":true,"dolphin278":true,"kurijov":true,"langpavel":true,"alexindigo":true,"fgribreau":true,"hughsk":true,"pid":true,"tylerstalder":true,"gillesruppert":true,"coiscir":true,"xenomuta":true,"jgoodall":true,"jswartwood":true,"drudge":true,"cpsubrian":true,"joeferner":true,"bencevans":true,"Scryptonite":true,"damonoehlman":true,"glukki":true,"tivac":true,"shama":true,"gimenete":true,"bryanburgers":true,"hij1nx":true,"sandeepmistry":true,"minddiaper":true,"fiws":true,"ljharb":true,"popeindustries":true,"charmander":true,"dbrockman":true,"eknkc":true,"booyaa":true,"afc163":true,"maxmaximov":true,"meryn":true,"hfcorriez":true,"hyqhyq_3":true,"zonetti":true,"cmilhench":true,"cparker15":true,"jfromaniello":true,"ExxKA":true,"devoidfury":true,"cedrickchee":true,"niftymonkey":true,"paulj":true,"leesei":true,"jamesmgreene":true,"igorissen":true,"zaphod1984":true,"moonpyk":true,"joliva":true,"netroy":true,"chrisweb":true,"cuprobot":true,"tmaximini":true,"lupomontero":true,"john.pinch":true,"everywhere.js":true,"frankblizzard":true,"alanshaw":true,"forivall":true,"kubakubula":true,"doliveira":true,"dstokes":true,"pana":true,"irae":true,"mhaidarh":true,"feross":true,"tetsu3a":true,"qubyte":true,"darosh":true,"pragmadash":true,"denisix":true,"samuelrn":true,"tigefa":true,"tcrowe":true,"tpwk":true,"eins78":true,"sierrasoftworks":true,"yoavf":true,"irakli":true,"hypergeometric":true,"gammasoft":true,"youxiachai":true,"kahboom":true,"elisee":true,"soroush":true,"thomas-so":true,"shenaor":true,"dannynemer":true,"paulomcnally":true,"timur.shemsedinov":true,"slianfeng":true,"ettalea":true,"mananvaghasiya":true,"daniel7912":true,"themiddleman":true,"jacques":true,"kerimdzhanov":true,"jorgemsrs":true,"ivandimanov":true,"vegera":true,"aselzer":true,"kentcdodds":true,"putaoshu":true,"imdsm":true,"cilindrox":true},"readme":"# Async.js\n\nAsync is a utility module which provides straight-forward, powerful functions\nfor working with asynchronous JavaScript. Although originally designed for\nuse with [node.js](http://nodejs.org), it can also be used directly in the\nbrowser. Also supports [component](https://github.com/component/component).\n\nAsync provides around 20 functions that include the usual 'functional'\nsuspects (map, reduce, filter, each…) as well as some common patterns\nfor asynchronous control flow (parallel, series, waterfall…). All these\nfunctions assume you follow the node.js convention of providing a single\ncallback as the last argument of your async function.\n\n\n## Quick Examples\n\n```javascript\nasync.map(['file1','file2','file3'], fs.stat, function(err, results){\n    // results is now an array of stats for each file\n});\n\nasync.filter(['file1','file2','file3'], fs.exists, function(results){\n    // results now equals an array of the existing files\n});\n\nasync.parallel([\n    function(){ ... },\n    function(){ ... }\n], callback);\n\nasync.series([\n    function(){ ... },\n    function(){ ... }\n]);\n```\n\nThere are many more functions available so take a look at the docs below for a\nfull list. This module aims to be comprehensive, so if you feel anything is\nmissing please create a GitHub issue for it.\n\n## Common Pitfalls\n\n### Binding a context to an iterator\n\nThis section is really about bind, not about async. If you are wondering how to\nmake async execute your iterators in a given context, or are confused as to why\na method of another library isn't working as an iterator, study this example:\n\n```js\n// Here is a simple object with an (unnecessarily roundabout) squaring method\nvar AsyncSquaringLibrary = {\n  squareExponent: 2,\n  square: function(number, callback){ \n    var result = Math.pow(number, this.squareExponent);\n    setTimeout(function(){\n      callback(null, result);\n    }, 200);\n  }\n};\n\nasync.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){\n  // result is [NaN, NaN, NaN]\n  // This fails because the `this.squareExponent` expression in the square\n  // function is not evaluated in the context of AsyncSquaringLibrary, and is\n  // therefore undefined.\n});\n\nasync.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){\n  // result is [1, 4, 9]\n  // With the help of bind we can attach a context to the iterator before\n  // passing it to async. Now the square function will be executed in its \n  // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent`\n  // will be as expected.\n});\n```\n\n## Download\n\nThe source is available for download from\n[GitHub](http://github.com/caolan/async).\nAlternatively, you can install using Node Package Manager (npm):\n\n    npm install async\n\n__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed\n\n## In the Browser\n\nSo far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage:\n\n```html\n<script type=\"text/javascript\" src=\"async.js\"></script>\n<script type=\"text/javascript\">\n\n    async.map(data, asyncProcess, function(err, results){\n        alert(results);\n    });\n\n</script>\n```\n\n## Documentation\n\n### Collections\n\n* [each](#each)\n* [eachSeries](#eachSeries)\n* [eachLimit](#eachLimit)\n* [map](#map)\n* [mapSeries](#mapSeries)\n* [mapLimit](#mapLimit)\n* [filter](#filter)\n* [filterSeries](#filterSeries)\n* [reject](#reject)\n* [rejectSeries](#rejectSeries)\n* [reduce](#reduce)\n* [reduceRight](#reduceRight)\n* [detect](#detect)\n* [detectSeries](#detectSeries)\n* [sortBy](#sortBy)\n* [some](#some)\n* [every](#every)\n* [concat](#concat)\n* [concatSeries](#concatSeries)\n\n### Control Flow\n\n* [series](#series)\n* [parallel](#parallel)\n* [parallelLimit](#parallellimittasks-limit-callback)\n* [whilst](#whilst)\n* [doWhilst](#doWhilst)\n* [until](#until)\n* [doUntil](#doUntil)\n* [forever](#forever)\n* [waterfall](#waterfall)\n* [compose](#compose)\n* [applyEach](#applyEach)\n* [applyEachSeries](#applyEachSeries)\n* [queue](#queue)\n* [cargo](#cargo)\n* [auto](#auto)\n* [iterator](#iterator)\n* [apply](#apply)\n* [nextTick](#nextTick)\n* [times](#times)\n* [timesSeries](#timesSeries)\n\n### Utils\n\n* [memoize](#memoize)\n* [unmemoize](#unmemoize)\n* [log](#log)\n* [dir](#dir)\n* [noConflict](#noConflict)\n\n\n## Collections\n\n<a name=\"forEach\" />\n<a name=\"each\" />\n### each(arr, iterator, callback)\n\nApplies an iterator function to each item in an array, in parallel.\nThe iterator is called with an item from the list and a callback for when it\nhas finished. If the iterator passes an error to this callback, the main\ncallback for the each function is immediately called with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in order.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err) which must be called once it has \n  completed. If no error has occured, the callback should be run without \n  arguments or with an explicit null argument.\n* callback(err) - A callback which is called after all the iterator functions\n  have finished, or an error has occurred.\n\n__Example__\n\n```js\n// assuming openFiles is an array of file names and saveFile is a function\n// to save the modified contents of that file:\n\nasync.each(openFiles, saveFile, function(err){\n    // if any of the saves produced an error, err would equal that error\n});\n```\n\n---------------------------------------\n\n<a name=\"forEachSeries\" />\n<a name=\"eachSeries\" />\n### eachSeries(arr, iterator, callback)\n\nThe same as each only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. This means the iterator functions will complete in order.\n\n\n---------------------------------------\n\n<a name=\"forEachLimit\" />\n<a name=\"eachLimit\" />\n### eachLimit(arr, limit, iterator, callback)\n\nThe same as each only no more than \"limit\" iterators will be simultaneously \nrunning at any time.\n\nNote that the items are not processed in batches, so there is no guarantee that\n the first \"limit\" iterator functions will complete before any others are \nstarted.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - The maximum number of iterators to run at any time.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err) which must be called once it has \n  completed. If no error has occured, the callback should be run without \n  arguments or with an explicit null argument.\n* callback(err) - A callback which is called after all the iterator functions\n  have finished, or an error has occurred.\n\n__Example__\n\n```js\n// Assume documents is an array of JSON objects and requestApi is a\n// function that interacts with a rate-limited REST api.\n\nasync.eachLimit(documents, 20, requestApi, function(err){\n    // if any of the saves produced an error, err would equal that error\n});\n```\n\n---------------------------------------\n\n<a name=\"map\" />\n### map(arr, iterator, callback)\n\nProduces a new array of values by mapping each value in the given array through\nthe iterator function. The iterator is called with an item from the array and a\ncallback for when it has finished processing. The callback takes 2 arguments, \nan error and the transformed item from the array. If the iterator passes an\nerror to this callback, the main callback for the map function is immediately\ncalled with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in order, however\nthe results array will be in the same order as the original array.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err, transformed) which must be called once \n  it has completed with an error (which can be null) and a transformed item.\n* callback(err, results) - A callback which is called after all the iterator\n  functions have finished, or an error has occurred. Results is an array of the\n  transformed items from the original array.\n\n__Example__\n\n```js\nasync.map(['file1','file2','file3'], fs.stat, function(err, results){\n    // results is now an array of stats for each file\n});\n```\n\n---------------------------------------\n\n<a name=\"mapSeries\" />\n### mapSeries(arr, iterator, callback)\n\nThe same as map only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n\n---------------------------------------\n\n<a name=\"mapLimit\" />\n### mapLimit(arr, limit, iterator, callback)\n\nThe same as map only no more than \"limit\" iterators will be simultaneously \nrunning at any time.\n\nNote that the items are not processed in batches, so there is no guarantee that\n the first \"limit\" iterator functions will complete before any others are \nstarted.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - The maximum number of iterators to run at any time.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err, transformed) which must be called once \n  it has completed with an error (which can be null) and a transformed item.\n* callback(err, results) - A callback which is called after all the iterator\n  functions have finished, or an error has occurred. Results is an array of the\n  transformed items from the original array.\n\n__Example__\n\n```js\nasync.mapLimit(['file1','file2','file3'], 1, fs.stat, function(err, results){\n    // results is now an array of stats for each file\n});\n```\n\n---------------------------------------\n\n<a name=\"filter\" />\n### filter(arr, iterator, callback)\n\n__Alias:__ select\n\nReturns a new array of all the values which pass an async truth test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like fs.exists. This operation is\nperformed in parallel, but the results array will be in the same order as the\noriginal.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n  The iterator is passed a callback(truthValue) which must be called with a \n  boolean argument once it has completed.\n* callback(results) - A callback which is called after all the iterator\n  functions have finished.\n\n__Example__\n\n```js\nasync.filter(['file1','file2','file3'], fs.exists, function(results){\n    // results now equals an array of the existing files\n});\n```\n\n---------------------------------------\n\n<a name=\"filterSeries\" />\n### filterSeries(arr, iterator, callback)\n\n__alias:__ selectSeries\n\nThe same as filter only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n---------------------------------------\n\n<a name=\"reject\" />\n### reject(arr, iterator, callback)\n\nThe opposite of filter. Removes values that pass an async truth test.\n\n---------------------------------------\n\n<a name=\"rejectSeries\" />\n### rejectSeries(arr, iterator, callback)\n\nThe same as reject, only the iterator is applied to each item in the array\nin series.\n\n\n---------------------------------------\n\n<a name=\"reduce\" />\n### reduce(arr, memo, iterator, callback)\n\n__aliases:__ inject, foldl\n\nReduces a list of values into a single value using an async iterator to return\neach successive step. Memo is the initial state of the reduction. This\nfunction only operates in series. For performance reasons, it may make sense to\nsplit a call to this function into a parallel map, then use the normal\nArray.prototype.reduce on the results. This function is for situations where\neach step in the reduction needs to be async, if you can get the data before\nreducing it then it's probably a good idea to do so.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* memo - The initial state of the reduction.\n* iterator(memo, item, callback) - A function applied to each item in the\n  array to produce the next step in the reduction. The iterator is passed a\n  callback(err, reduction) which accepts an optional error as its first \n  argument, and the state of the reduction as the second. If an error is \n  passed to the callback, the reduction is stopped and the main callback is \n  immediately called with the error.\n* callback(err, result) - A callback which is called after all the iterator\n  functions have finished. Result is the reduced value.\n\n__Example__\n\n```js\nasync.reduce([1,2,3], 0, function(memo, item, callback){\n    // pointless async:\n    process.nextTick(function(){\n        callback(null, memo + item)\n    });\n}, function(err, result){\n    // result is now equal to the last value of memo, which is 6\n});\n```\n\n---------------------------------------\n\n<a name=\"reduceRight\" />\n### reduceRight(arr, memo, iterator, callback)\n\n__Alias:__ foldr\n\nSame as reduce, only operates on the items in the array in reverse order.\n\n\n---------------------------------------\n\n<a name=\"detect\" />\n### detect(arr, iterator, callback)\n\nReturns the first value in a list that passes an async truth test. The\niterator is applied in parallel, meaning the first iterator to return true will\nfire the detect callback with that result. That means the result might not be\nthe first item in the original array (in terms of order) that passes the test.\n\nIf order within the original array is important then look at detectSeries.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n  The iterator is passed a callback(truthValue) which must be called with a \n  boolean argument once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n  true, or after all the iterator functions have finished. Result will be\n  the first item in the array that passes the truth test (iterator) or the\n  value undefined if none passed.\n\n__Example__\n\n```js\nasync.detect(['file1','file2','file3'], fs.exists, function(result){\n    // result now equals the first file in the list that exists\n});\n```\n\n---------------------------------------\n\n<a name=\"detectSeries\" />\n### detectSeries(arr, iterator, callback)\n\nThe same as detect, only the iterator is applied to each item in the array\nin series. This means the result is always the first in the original array (in\nterms of array order) that passes the truth test.\n\n\n---------------------------------------\n\n<a name=\"sortBy\" />\n### sortBy(arr, iterator, callback)\n\nSorts a list by the results of running each value through an async iterator.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err, sortValue) which must be called once it\n  has completed with an error (which can be null) and a value to use as the sort\n  criteria.\n* callback(err, results) - A callback which is called after all the iterator\n  functions have finished, or an error has occurred. Results is the items from\n  the original array sorted by the values returned by the iterator calls.\n\n__Example__\n\n```js\nasync.sortBy(['file1','file2','file3'], function(file, callback){\n    fs.stat(file, function(err, stats){\n        callback(err, stats.mtime);\n    });\n}, function(err, results){\n    // results is now the original array of files sorted by\n    // modified date\n});\n```\n\n---------------------------------------\n\n<a name=\"some\" />\n### some(arr, iterator, callback)\n\n__Alias:__ any\n\nReturns true if at least one element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like fs.exists. Once any iterator\ncall returns true, the main callback is immediately called.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n  The iterator is passed a callback(truthValue) which must be called with a \n  boolean argument once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n  true, or after all the iterator functions have finished. Result will be\n  either true or false depending on the values of the async tests.\n\n__Example__\n\n```js\nasync.some(['file1','file2','file3'], fs.exists, function(result){\n    // if result is true then at least one of the files exists\n});\n```\n\n---------------------------------------\n\n<a name=\"every\" />\n### every(arr, iterator, callback)\n\n__Alias:__ all\n\nReturns true if every element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like fs.exists.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n  The iterator is passed a callback(truthValue) which must be called with a \n  boolean argument once it has completed.\n* callback(result) - A callback which is called after all the iterator\n  functions have finished. Result will be either true or false depending on\n  the values of the async tests.\n\n__Example__\n\n```js\nasync.every(['file1','file2','file3'], fs.exists, function(result){\n    // if result is true then every file exists\n});\n```\n\n---------------------------------------\n\n<a name=\"concat\" />\n### concat(arr, iterator, callback)\n\nApplies an iterator to each item in a list, concatenating the results. Returns the\nconcatenated list. The iterators are called in parallel, and the results are\nconcatenated as they return. There is no guarantee that the results array will\nbe returned in the original order of the arguments passed to the iterator function.\n\n__Arguments__\n\n* arr - An array to iterate over\n* iterator(item, callback) - A function to apply to each item in the array.\n  The iterator is passed a callback(err, results) which must be called once it \n  has completed with an error (which can be null) and an array of results.\n* callback(err, results) - A callback which is called after all the iterator\n  functions have finished, or an error has occurred. Results is an array containing\n  the concatenated results of the iterator function.\n\n__Example__\n\n```js\nasync.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){\n    // files is now a list of filenames that exist in the 3 directories\n});\n```\n\n---------------------------------------\n\n<a name=\"concatSeries\" />\n### concatSeries(arr, iterator, callback)\n\nSame as async.concat, but executes in series instead of parallel.\n\n\n## Control Flow\n\n<a name=\"series\" />\n### series(tasks, [callback])\n\nRun an array of functions in series, each one running once the previous\nfunction has completed. If any functions in the series pass an error to its\ncallback, no more functions are run and the callback for the series is\nimmediately called with the value of the error. Once the tasks have completed,\nthe results are passed to the final callback as an array.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a more readable way of handling results from\nasync.series.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed\n  a callback(err, result) it must call on completion with an error (which can\n  be null) and an optional result value.\n* callback(err, results) - An optional callback to run once all the functions\n  have completed. This function gets a results array (or object) containing all \n  the result arguments passed to the task callbacks.\n\n__Example__\n\n```js\nasync.series([\n    function(callback){\n        // do some stuff ...\n        callback(null, 'one');\n    },\n    function(callback){\n        // do some more stuff ...\n        callback(null, 'two');\n    }\n],\n// optional callback\nfunction(err, results){\n    // results is now equal to ['one', 'two']\n});\n\n\n// an example using an object instead of an array\nasync.series({\n    one: function(callback){\n        setTimeout(function(){\n            callback(null, 1);\n        }, 200);\n    },\n    two: function(callback){\n        setTimeout(function(){\n            callback(null, 2);\n        }, 100);\n    }\n},\nfunction(err, results) {\n    // results is now equal to: {one: 1, two: 2}\n});\n```\n\n---------------------------------------\n\n<a name=\"parallel\" />\n### parallel(tasks, [callback])\n\nRun an array of functions in parallel, without waiting until the previous\nfunction has completed. If any of the functions pass an error to its\ncallback, the main callback is immediately called with the value of the error.\nOnce the tasks have completed, the results are passed to the final callback as an\narray.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a more readable way of handling results from\nasync.parallel.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed \n  a callback(err, result) it must call on completion with an error (which can\n  be null) and an optional result value.\n* callback(err, results) - An optional callback to run once all the functions\n  have completed. This function gets a results array (or object) containing all \n  the result arguments passed to the task callbacks.\n\n__Example__\n\n```js\nasync.parallel([\n    function(callback){\n        setTimeout(function(){\n            callback(null, 'one');\n        }, 200);\n    },\n    function(callback){\n        setTimeout(function(){\n            callback(null, 'two');\n        }, 100);\n    }\n],\n// optional callback\nfunction(err, results){\n    // the results array will equal ['one','two'] even though\n    // the second function had a shorter timeout.\n});\n\n\n// an example using an object instead of an array\nasync.parallel({\n    one: function(callback){\n        setTimeout(function(){\n            callback(null, 1);\n        }, 200);\n    },\n    two: function(callback){\n        setTimeout(function(){\n            callback(null, 2);\n        }, 100);\n    }\n},\nfunction(err, results) {\n    // results is now equals to: {one: 1, two: 2}\n});\n```\n\n---------------------------------------\n\n<a name=\"parallel\" />\n### parallelLimit(tasks, limit, [callback])\n\nThe same as parallel only the tasks are executed in parallel with a maximum of \"limit\" \ntasks executing at any time.\n\nNote that the tasks are not executed in batches, so there is no guarantee that \nthe first \"limit\" tasks will complete before any others are started.\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed \n  a callback(err, result) it must call on completion with an error (which can\n  be null) and an optional result value.\n* limit - The maximum number of tasks to run at any time.\n* callback(err, results) - An optional callback to run once all the functions\n  have completed. This function gets a results array (or object) containing all \n  the result arguments passed to the task callbacks.\n\n---------------------------------------\n\n<a name=\"whilst\" />\n### whilst(test, fn, callback)\n\nRepeatedly call fn, while test returns true. Calls the callback when stopped,\nor an error occurs.\n\n__Arguments__\n\n* test() - synchronous truth test to perform before each execution of fn.\n* fn(callback) - A function to call each time the test passes. The function is\n  passed a callback(err) which must be called once it has completed with an \n  optional error argument.\n* callback(err) - A callback which is called after the test fails and repeated\n  execution of fn has stopped.\n\n__Example__\n\n```js\nvar count = 0;\n\nasync.whilst(\n    function () { return count < 5; },\n    function (callback) {\n        count++;\n        setTimeout(callback, 1000);\n    },\n    function (err) {\n        // 5 seconds have passed\n    }\n);\n```\n\n---------------------------------------\n\n<a name=\"doWhilst\" />\n### doWhilst(fn, test, callback)\n\nThe post check version of whilst. To reflect the difference in the order of operations `test` and `fn` arguments are switched. `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.\n\n---------------------------------------\n\n<a name=\"until\" />\n### until(test, fn, callback)\n\nRepeatedly call fn, until test returns true. Calls the callback when stopped,\nor an error occurs.\n\nThe inverse of async.whilst.\n\n---------------------------------------\n\n<a name=\"doUntil\" />\n### doUntil(fn, test, callback)\n\nLike doWhilst except the test is inverted. Note the argument ordering differs from `until`.\n\n---------------------------------------\n\n<a name=\"forever\" />\n### forever(fn, callback)\n\nCalls the asynchronous function 'fn' repeatedly, in series, indefinitely.\nIf an error is passed to fn's callback then 'callback' is called with the\nerror, otherwise it will never be called.\n\n---------------------------------------\n\n<a name=\"waterfall\" />\n### waterfall(tasks, [callback])\n\nRuns an array of functions in series, each passing their results to the next in\nthe array. However, if any of the functions pass an error to the callback, the\nnext function is not executed and the main callback is immediately called with\nthe error.\n\n__Arguments__\n\n* tasks - An array of functions to run, each function is passed a \n  callback(err, result1, result2, ...) it must call on completion. The first\n  argument is an error (which can be null) and any further arguments will be \n  passed as arguments in order to the next task.\n* callback(err, [results]) - An optional callback to run once all the functions\n  have completed. This will be passed the results of the last task's callback.\n\n\n\n__Example__\n\n```js\nasync.waterfall([\n    function(callback){\n        callback(null, 'one', 'two');\n    },\n    function(arg1, arg2, callback){\n        callback(null, 'three');\n    },\n    function(arg1, callback){\n        // arg1 now equals 'three'\n        callback(null, 'done');\n    }\n], function (err, result) {\n   // result now equals 'done'    \n});\n```\n\n---------------------------------------\n<a name=\"compose\" />\n### compose(fn1, fn2...)\n\nCreates a function which is a composition of the passed asynchronous\nfunctions. Each function consumes the return value of the function that\nfollows. Composing functions f(), g() and h() would produce the result of\nf(g(h())), only this version uses callbacks to obtain the return values.\n\nEach function is executed with the `this` binding of the composed function.\n\n__Arguments__\n\n* functions... - the asynchronous functions to compose\n\n\n__Example__\n\n```js\nfunction add1(n, callback) {\n    setTimeout(function () {\n        callback(null, n + 1);\n    }, 10);\n}\n\nfunction mul3(n, callback) {\n    setTimeout(function () {\n        callback(null, n * 3);\n    }, 10);\n}\n\nvar add1mul3 = async.compose(mul3, add1);\n\nadd1mul3(4, function (err, result) {\n   // result now equals 15\n});\n```\n\n---------------------------------------\n<a name=\"applyEach\" />\n### applyEach(fns, args..., callback)\n\nApplies the provided arguments to each function in the array, calling the\ncallback after all functions have completed. If you only provide the first\nargument then it will return a function which lets you pass in the\narguments as if it were a single function call.\n\n__Arguments__\n\n* fns - the asynchronous functions to all call with the same arguments\n* args... - any number of separate arguments to pass to the function\n* callback - the final argument should be the callback, called when all\n  functions have completed processing\n\n\n__Example__\n\n```js\nasync.applyEach([enableSearch, updateSchema], 'bucket', callback);\n\n// partial application example:\nasync.each(\n    buckets,\n    async.applyEach([enableSearch, updateSchema]),\n    callback\n);\n```\n\n---------------------------------------\n\n<a name=\"applyEachSeries\" />\n### applyEachSeries(arr, iterator, callback)\n\nThe same as applyEach only the functions are applied in series.\n\n---------------------------------------\n\n<a name=\"queue\" />\n### queue(worker, concurrency)\n\nCreates a queue object with the specified concurrency. Tasks added to the\nqueue will be processed in parallel (up to the concurrency limit). If all\nworkers are in progress, the task is queued until one is available. Once\na worker has completed a task, the task's callback is called.\n\n__Arguments__\n\n* worker(task, callback) - An asynchronous function for processing a queued\n  task, which must call its callback(err) argument when finished, with an \n  optional error as an argument.\n* concurrency - An integer for determining how many worker functions should be\n  run in parallel.\n\n__Queue objects__\n\nThe queue object returned by this function has the following properties and\nmethods:\n\n* length() - a function returning the number of items waiting to be processed.\n* concurrency - an integer for determining how many worker functions should be\n  run in parallel. This property can be changed after a queue is created to\n  alter the concurrency on-the-fly.\n* push(task, [callback]) - add a new task to the queue, the callback is called\n  once the worker has finished processing the task.\n  instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.\n* unshift(task, [callback]) - add a new task to the front of the queue.\n* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued\n* empty - a callback that is called when the last item from the queue is given to a worker\n* drain - a callback that is called when the last item from the queue has returned from the worker\n\n__Example__\n\n```js\n// create a queue object with concurrency 2\n\nvar q = async.queue(function (task, callback) {\n    console.log('hello ' + task.name);\n    callback();\n}, 2);\n\n\n// assign a callback\nq.drain = function() {\n    console.log('all items have been processed');\n}\n\n// add some items to the queue\n\nq.push({name: 'foo'}, function (err) {\n    console.log('finished processing foo');\n});\nq.push({name: 'bar'}, function (err) {\n    console.log('finished processing bar');\n});\n\n// add some items to the queue (batch-wise)\n\nq.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {\n    console.log('finished processing bar');\n});\n\n// add some items to the front of the queue\n\nq.unshift({name: 'bar'}, function (err) {\n    console.log('finished processing bar');\n});\n```\n\n---------------------------------------\n\n<a name=\"cargo\" />\n### cargo(worker, [payload])\n\nCreates a cargo object with the specified payload. Tasks added to the\ncargo will be processed altogether (up to the payload limit). If the\nworker is in progress, the task is queued until it is available. Once\nthe worker has completed some tasks, each callback of those tasks is called.\n\n__Arguments__\n\n* worker(tasks, callback) - An asynchronous function for processing an array of\n  queued tasks, which must call its callback(err) argument when finished, with \n  an optional error as an argument.\n* payload - An optional integer for determining how many tasks should be\n  processed per round; if omitted, the default is unlimited.\n\n__Cargo objects__\n\nThe cargo object returned by this function has the following properties and\nmethods:\n\n* length() - a function returning the number of items waiting to be processed.\n* payload - an integer for determining how many tasks should be\n  process per round. This property can be changed after a cargo is created to\n  alter the payload on-the-fly.\n* push(task, [callback]) - add a new task to the queue, the callback is called\n  once the worker has finished processing the task.\n  instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.\n* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued\n* empty - a callback that is called when the last item from the queue is given to a worker\n* drain - a callback that is called when the last item from the queue has returned from the worker\n\n__Example__\n\n```js\n// create a cargo object with payload 2\n\nvar cargo = async.cargo(function (tasks, callback) {\n    for(var i=0; i<tasks.length; i++){\n      console.log('hello ' + tasks[i].name);\n    }\n    callback();\n}, 2);\n\n\n// add some items\n\ncargo.push({name: 'foo'}, function (err) {\n    console.log('finished processing foo');\n});\ncargo.push({name: 'bar'}, function (err) {\n    console.log('finished processing bar');\n});\ncargo.push({name: 'baz'}, function (err) {\n    console.log('finished processing baz');\n});\n```\n\n---------------------------------------\n\n<a name=\"auto\" />\n### auto(tasks, [callback])\n\nDetermines the best order for running functions based on their requirements.\nEach function can optionally depend on other functions being completed first,\nand each function is run as soon as its requirements are satisfied. If any of\nthe functions pass an error to their callback, that function will not complete\n(so any other functions depending on it will not run) and the main callback\nwill be called immediately with the error. Functions also receive an object\ncontaining the results of functions which have completed so far.\n\nNote, all functions are called with a results object as a second argument, \nso it is unsafe to pass functions in the tasks object which cannot handle the\nextra argument. For example, this snippet of code:\n\n```js\nasync.auto({\n  readData: async.apply(fs.readFile, 'data.txt', 'utf-8')\n}, callback);\n```\n\nwill have the effect of calling readFile with the results object as the last\nargument, which will fail:\n\n```js\nfs.readFile('data.txt', 'utf-8', cb, {});\n```\n\nInstead, wrap the call to readFile in a function which does not forward the \nresults object:\n\n```js\nasync.auto({\n  readData: function(cb, results){\n    fs.readFile('data.txt', 'utf-8', cb);\n  }\n}, callback);\n```\n\n__Arguments__\n\n* tasks - An object literal containing named functions or an array of\n  requirements, with the function itself the last item in the array. The key\n  used for each function or array is used when specifying requirements. The \n  function receives two arguments: (1) a callback(err, result) which must be \n  called when finished, passing an error (which can be null) and the result of \n  the function's execution, and (2) a results object, containing the results of\n  the previously executed functions.\n* callback(err, results) - An optional callback which is called when all the\n  tasks have been completed. The callback will receive an error as an argument\n  if any tasks pass an error to their callback. Results will always be passed\n\tbut if an error occurred, no other tasks will be performed, and the results\n\tobject will only contain partial results.\n  \n\n__Example__\n\n```js\nasync.auto({\n    get_data: function(callback){\n        // async code to get some data\n    },\n    make_folder: function(callback){\n        // async code to create a directory to store a file in\n        // this is run at the same time as getting the data\n    },\n    write_file: ['get_data', 'make_folder', function(callback){\n        // once there is some data and the directory exists,\n        // write the data to a file in the directory\n        callback(null, filename);\n    }],\n    email_link: ['write_file', function(callback, results){\n        // once the file is written let's email a link to it...\n        // results.write_file contains the filename returned by write_file.\n    }]\n});\n```\n\nThis is a fairly trivial example, but to do this using the basic parallel and\nseries functions would look like this:\n\n```js\nasync.parallel([\n    function(callback){\n        // async code to get some data\n    },\n    function(callback){\n        // async code to create a directory to store a file in\n        // this is run at the same time as getting the data\n    }\n],\nfunction(err, results){\n    async.series([\n        function(callback){\n            // once there is some data and the directory exists,\n            // write the data to a file in the directory\n        },\n        function(callback){\n            // once the file is written let's email a link to it...\n        }\n    ]);\n});\n```\n\nFor a complicated series of async tasks using the auto function makes adding\nnew tasks much easier and makes the code more readable.\n\n\n---------------------------------------\n\n<a name=\"iterator\" />\n### iterator(tasks)\n\nCreates an iterator function which calls the next function in the array,\nreturning a continuation to call the next one after that. It's also possible to\n'peek' the next iterator by doing iterator.next().\n\nThis function is used internally by the async module but can be useful when\nyou want to manually control the flow of functions in series.\n\n__Arguments__\n\n* tasks - An array of functions to run.\n\n__Example__\n\n```js\nvar iterator = async.iterator([\n    function(){ sys.p('one'); },\n    function(){ sys.p('two'); },\n    function(){ sys.p('three'); }\n]);\n\nnode> var iterator2 = iterator();\n'one'\nnode> var iterator3 = iterator2();\n'two'\nnode> iterator3();\n'three'\nnode> var nextfn = iterator2.next();\nnode> nextfn();\n'three'\n```\n\n---------------------------------------\n\n<a name=\"apply\" />\n### apply(function, arguments..)\n\nCreates a continuation function with some arguments already applied, a useful\nshorthand when combined with other control flow functions. Any arguments\npassed to the returned function are added to the arguments originally passed\nto apply.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to automatically apply when the\n  continuation is called.\n\n__Example__\n\n```js\n// using apply\n\nasync.parallel([\n    async.apply(fs.writeFile, 'testfile1', 'test1'),\n    async.apply(fs.writeFile, 'testfile2', 'test2'),\n]);\n\n\n// the same process without using apply\n\nasync.parallel([\n    function(callback){\n        fs.writeFile('testfile1', 'test1', callback);\n    },\n    function(callback){\n        fs.writeFile('testfile2', 'test2', callback);\n    }\n]);\n```\n\nIt's possible to pass any number of additional arguments when calling the\ncontinuation:\n\n```js\nnode> var fn = async.apply(sys.puts, 'one');\nnode> fn('two', 'three');\none\ntwo\nthree\n```\n\n---------------------------------------\n\n<a name=\"nextTick\" />\n### nextTick(callback)\n\nCalls the callback on a later loop around the event loop. In node.js this just\ncalls process.nextTick, in the browser it falls back to setImmediate(callback)\nif available, otherwise setTimeout(callback, 0), which means other higher priority\nevents may precede the execution of the callback.\n\nThis is used internally for browser-compatibility purposes.\n\n__Arguments__\n\n* callback - The function to call on a later loop around the event loop.\n\n__Example__\n\n```js\nvar call_order = [];\nasync.nextTick(function(){\n    call_order.push('two');\n    // call_order now equals ['one','two']\n});\ncall_order.push('one')\n```\n\n<a name=\"times\" />\n### times(n, callback)\n\nCalls the callback n times and accumulates results in the same manner\nyou would use with async.map.\n\n__Arguments__\n\n* n - The number of times to run the function.\n* callback - The function to call n times.\n\n__Example__\n\n```js\n// Pretend this is some complicated async factory\nvar createUser = function(id, callback) {\n  callback(null, {\n    id: 'user' + id\n  })\n}\n// generate 5 users\nasync.times(5, function(n, next){\n    createUser(n, function(err, user) {\n      next(err, user)\n    })\n}, function(err, users) {\n  // we should now have 5 users\n});\n```\n\n<a name=\"timesSeries\" />\n### timesSeries(n, callback)\n\nThe same as times only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n\n## Utils\n\n<a name=\"memoize\" />\n### memoize(fn, [hasher])\n\nCaches the results of an async function. When creating a hash to store function\nresults against, the callback is omitted from the hash and an optional hash\nfunction can be used.\n\nThe cache of results is exposed as the `memo` property of the function returned\nby `memoize`.\n\n__Arguments__\n\n* fn - the function you to proxy and cache results from.\n* hasher - an optional function for generating a custom hash for storing\n  results, it has all the arguments applied to it apart from the callback, and\n  must be synchronous.\n\n__Example__\n\n```js\nvar slow_fn = function (name, callback) {\n    // do something\n    callback(null, result);\n};\nvar fn = async.memoize(slow_fn);\n\n// fn can now be used as if it were slow_fn\nfn('some name', function () {\n    // callback\n});\n```\n\n<a name=\"unmemoize\" />\n### unmemoize(fn)\n\nUndoes a memoized function, reverting it to the original, unmemoized\nform. Comes handy in tests.\n\n__Arguments__\n\n* fn - the memoized function\n\n<a name=\"log\" />\n### log(function, arguments)\n\nLogs the result of an async function to the console. Only works in node.js or\nin browsers that support console.log and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.log is\ncalled on each argument in order.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n```js\nvar hello = function(name, callback){\n    setTimeout(function(){\n        callback(null, 'hello ' + name);\n    }, 1000);\n};\n```\n```js\nnode> async.log(hello, 'world');\n'hello world'\n```\n\n---------------------------------------\n\n<a name=\"dir\" />\n### dir(function, arguments)\n\nLogs the result of an async function to the console using console.dir to\ndisplay the properties of the resulting object. Only works in node.js or\nin browsers that support console.dir and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.dir is\ncalled on each argument in order.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n```js\nvar hello = function(name, callback){\n    setTimeout(function(){\n        callback(null, {hello: name});\n    }, 1000);\n};\n```\n```js\nnode> async.dir(hello, 'world');\n{hello: 'world'}\n```\n\n---------------------------------------\n\n<a name=\"noConflict\" />\n### noConflict()\n\nChanges the value of async back to its original value, returning a reference to the\nasync object.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/caolan/async/issues"},"_attachments":{}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/b4/8a/454c55f95fa0351cca479761f5ff792f8f7ab4448f2b1399a3ac3778a60a293f71feeda29678ce15b71712b0803f9866e92c0cbc4549b4807435dcf7a767 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/b4/8a/454c55f95fa0351cca479761f5ff792f8f7ab4448f2b1399a3ac3778a60a293f71feeda29678ce15b71712b0803f9866e92c0cbc4549b4807435dcf7a767
deleted file mode 100644
index 0866e68dc09d2e..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/b4/8a/454c55f95fa0351cca479761f5ff792f8f7ab4448f2b1399a3ac3778a60a293f71feeda29678ce15b71712b0803f9866e92c0cbc4549b4807435dcf7a767 and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/c9/a2/065bb9746e574a541af061b7880948d30e47db1dc356c314bd934b0169894d696e833bd63b6c53cb973d14b8064b5b04177c402e347770ddfbbbc7c906cb b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/c9/a2/065bb9746e574a541af061b7880948d30e47db1dc356c314bd934b0169894d696e833bd63b6c53cb973d14b8064b5b04177c402e347770ddfbbbc7c906cb
deleted file mode 100644
index d51082f7d51684..00000000000000
Binary files a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/c9/a2/065bb9746e574a541af061b7880948d30e47db1dc356c314bd934b0169894d696e833bd63b6c53cb973d14b8064b5b04177c402e347770ddfbbbc7c906cb and /dev/null differ
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/cd/eb/0f5065be03e89547a33e064d911969953c45eb05df664ca4d537b970dc9f768123463a6f75ce6b836d50ee73c18ac7a25e763f2b9869612cdbf427195d4b b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/cd/eb/0f5065be03e89547a33e064d911969953c45eb05df664ca4d537b970dc9f768123463a6f75ce6b836d50ee73c18ac7a25e763f2b9869612cdbf427195d4b
deleted file mode 100644
index df235e9e79ec2e..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/cd/eb/0f5065be03e89547a33e064d911969953c45eb05df664ca4d537b970dc9f768123463a6f75ce6b836d50ee73c18ac7a25e763f2b9869612cdbf427195d4b
+++ /dev/null
@@ -1 +0,0 @@
-{"_id":"test-repo-url-ssh","_rev":"2-cc990259d480838e6847fb520d305a9e","name":"test-repo-url-ssh","description":"Test repo with non-github ssh repository url","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"test-repo-url-ssh","version":"0.0.1","description":"Test repo with non-github ssh repository url","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git@gitlab.com:evanlucas/test-repo-url-ssh.git"},"author":{"name":"Evan Lucas","email":"evanlucas@me.com"},"license":"ISC","_id":"test-repo-url-ssh@0.0.1","dist":{"shasum":"2a77307e108bfb57107c4c334abb5ef5395dc68a","tarball":"http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"evanlucas","email":"evanlucas@me.com"},"maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"directories":{}}},"readme":"ERROR: No README data found!","maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"time":{"0.0.1":"2014-02-16T18:50:00.142Z"},"readmeFilename":"","_attachments":{}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/d4/45/ed72e65ed0b9fec5a6a41794caadda951ba79a0541648e259c8021b3fc96487d2caedf869ac142b4b0f31998c436f171d98a9a1740e3ac8eebb5c1103c53 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/d4/45/ed72e65ed0b9fec5a6a41794caadda951ba79a0541648e259c8021b3fc96487d2caedf869ac142b4b0f31998c436f171d98a9a1740e3ac8eebb5c1103c53
deleted file mode 100644
index 11b928e5cddd9e..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/d4/45/ed72e65ed0b9fec5a6a41794caadda951ba79a0541648e259c8021b3fc96487d2caedf869ac142b4b0f31998c436f171d98a9a1740e3ac8eebb5c1103c53
+++ /dev/null
@@ -1 +0,0 @@
-{"_id":"checker","_rev":"23-39ff9491581c529b8b828651a196c7a3","name":"checker","description":"Checker is the collection of common abstract methods for validatiors and setters.","dist-tags":{"latest":"0.5.2"},"versions":{"0.0.0":{"name":"checker","version":"0.0.0","description":"","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"MIT","readme":"ERROR: No README data found!","_id":"checker@0.0.0","dist":{"shasum":"6a7a3977bbe770560d4fcc86eb3a32a52c9b368d","tarball":"http://localhost:1337/checker/-/checker-0.0.0.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kael","email":"i@kael.me"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"0.2.1":{"name":"checker","version":"0.2.1","description":"Checker is the collection of common abstract methods for validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/kaelzhang/node-checker.git"},"keywords":["checker","validator","validate","setter"],"author":{"name":"kael"},"license":"MIT","bugs":{"url":"https://github.com/kaelzhang/node-checker/issues"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"dependencies":{"async":"~0.2.9"},"readme":"[![Build Status](https://travis-ci.org/kaelzhang/node-checker.png?branch=master)](https://travis-ci.org/kaelzhang/node-checker)\n\n(THIS DOCUMENTAION IS NOT FINISHED YET.)\n\n# checker\n\nChecker is the collection of common abstract node.js methods for validatiors and setters.\n\t\n# Usage\n```sh\nnpm install checker --save\n```\n\n```js\nvar checker = require('checker');\n```\n\n# Synopsis\n\n```js\nchecker(schema, options).check(data, callback);\n```\n\n# Validation, Error Messages\n\n## Simple synchronous validators\n\n```js\nvar schema = {\n\tusername: {\n\t\tvalidator: function(value){\n\t\t\treturn /^[a-zA-Z0-9]{6,}$/.test(value);\n\t\t},\n\t\tmessage: 'Username must only contain letters, numbers; Username must contain at least 6 charactors'\n\t}\n};\n\nvar c = checker(schema);\n\nc.check({\n\tusername: 'a'\n}, function(err){\n\tif(err){\n\t\tconsole.log(err); // Then, `schema.username.message` will be displayed.\n\t}\n});\n```\n\n## Regular expressions as validators\n\nThe error hint of the example above is bad, because we want to know the very certain reason why we are wrong.\n\nThe `schema` below is equivalent to the one of the previous section:\n\n```js\n{\n\tvalidator: [\n\t\tfunction(value){\n\t\t\treturn value && value.length > 5;\n\t\t}, \n\t\t/^[a-zA-Z0-9]+$/\n\t],\n\tmessage: [\n\t\t'Username must contain at least 6 charactors', \n\t\t'Username must only contain letters and numbers'\n\t];\n}\n```\n\n## Asynchronous validators\n\n```js\n{\n\tvalidator: function(value){\n\t\tvar done = this.async();\n\t\t// this is an async method, and takes sooooo long...\n\t\tremote_check(value, function(err){\n\t\t\tdone(err); // `err` will pass to the `callback`\n\t\t});\n\t}\n}\n```\n\n\n# Programmatical Details\n\n## Options\n\n#### options.default_message `String`\n\nDefault error message\n\n#### options.parallel `Boolean=false`\n\n#### options.limit `Boolean=false`\n\n#### options.check_all `Boolean=false`\n\n\n\n## Schema Structures \n\n```js\n{\n\t<name>: <rule>\n}\n```\n\n\nWhere `rule` might contains (all properties are optional):\n\n#### validator \n\n- `RegExp` The regular exp that input must matches against\n- `Function` Validation function. If `arguments.length === 3`, it will be considered as an async methods\n- `Array.<RegExp|Function>` Group of validations. Asks will check each validator one by one. If validation fails, the rest validators will be skipped.\n- See sections above for details\n\t\n#### setter `Function|Array.<Function>`\n\nSee sections above for details.\n\n#### message `String`\n\nDefault error message\n\n#### default: `String`\n","_id":"checker@0.2.1","dist":{"shasum":"f25a07a1429cd9cee4a668f19fa99fa7e380deda","tarball":"http://localhost:1337/checker/-/checker-0.2.1.tgz"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"0.3.1":{"name":"checker","version":"0.3.1","description":"Checker is the collection of common abstract methods for validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/kaelzhang/node-checker.git"},"keywords":["checker","validator","validate","setter"],"author":{"name":"kael"},"license":"MIT","bugs":{"url":"https://github.com/kaelzhang/node-checker/issues"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"dependencies":{"async":"~0.2.9"},"readme":"[![Build Status](https://travis-ci.org/kaelzhang/node-checker.png?branch=master)](https://travis-ci.org/kaelzhang/node-checker)\n\n(THIS DOCUMENTAION IS NOT FINISHED YET.)\n\n# checker\n\nChecker is the collection of common abstract node.js methods for validatiors and setters.\n\t\n# Usage\n```sh\nnpm install checker --save\n```\n\n```js\nvar checker = require('checker');\n```\n\n# Synopsis\n\n```js\nchecker(schema, options).check(data, callback);\n```\n\n# Validation, Error Messages\n\n## Simple synchronous validators\n\n```js\nvar schema = {\n\tusername: {\n\t\tvalidator: function(value){\n\t\t\treturn /^[a-zA-Z0-9]{6,}$/.test(value);\n\t\t},\n\t\tmessage: 'Username must only contain letters, numbers; Username must contain at least 6 charactors'\n\t}\n};\n\nvar c = checker(schema);\n\nc.check({\n\tusername: 'a'\n}, function(err){\n\tif(err){\n\t\tconsole.log(err); // Then, `schema.username.message` will be displayed.\n\t}\n});\n```\n\n## Regular expressions as validators\n\nThe error hint of the example above is bad, because we want to know the very certain reason why we are wrong.\n\nThe `schema` below is equivalent to the one of the previous section:\n\n```js\n{\n\tvalidator: [\n\t\tfunction(value){\n\t\t\treturn value && value.length > 5;\n\t\t}, \n\t\t/^[a-zA-Z0-9]+$/\n\t],\n\tmessage: [\n\t\t'Username must contain at least 6 charactors', \n\t\t'Username must only contain letters and numbers'\n\t];\n}\n```\n\n## Asynchronous validators\n\n```js\n{\n\tvalidator: function(value){\n\t\tvar done = this.async();\n\t\t// this is an async method, and takes sooooo long...\n\t\tremote_check(value, function(err){\n\t\t\tdone(err); // `err` will pass to the `callback`\n\t\t});\n\t}\n}\n```\n\n\n# Programmatical Details\n\n## Options\n\n#### options.default_message `String`\n\nDefault error message\n\n#### options.parallel `Boolean=false`\n\n#### options.limit `Boolean=false`\n\n#### options.check_all `Boolean=false`\n\n\n\n## Schema Structures \n\n```js\n{\n\t<name>: <rule>\n}\n```\n\n\nWhere `rule` might contains (all properties are optional):\n\n#### validator \n\n- `RegExp` The regular exp that input must matches against\n- `Function` Validation function. If `arguments.length === 3`, it will be considered as an async methods\n- `Array.<RegExp|Function>` Group of validations. Asks will check each validator one by one. If validation fails, the rest validators will be skipped.\n- See sections above for details\n\t\n#### setter `Function|Array.<Function>`\n\nSee sections above for details.\n\n#### message `String`\n\nDefault error message\n\n#### default: `String`\n","_id":"checker@0.3.1","dist":{"shasum":"c285c3f3c29c4186156d9e94945ad3892e64c739","tarball":"http://localhost:1337/checker/-/checker-0.3.1.tgz"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"0.3.2":{"name":"checker","version":"0.3.2","description":"Checker is the collection of common abstract methods for validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/kaelzhang/node-checker.git"},"keywords":["checker","validator","validate","setter"],"author":{"name":"kael"},"license":"MIT","bugs":{"url":"https://github.com/kaelzhang/node-checker/issues"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"dependencies":{"async":"~0.2.9"},"readme":"[![Build Status](https://travis-ci.org/kaelzhang/node-checker.png?branch=master)](https://travis-ci.org/kaelzhang/node-checker)\n\n# checker\n\nChecker is the collection of common abstract node.js methods for validatiors and setters.\n\t\n# Usage\n```sh\nnpm install checker --save\n```\n\n```js\nvar checker = require('checker');\n```\n\n# Synopsis\n\n```js\nchecker(schema, options).check(data, function(err, value, details){\n});\n```\n\n### err `mixed`\n\n### parsed `Object`\n\nThe cleaned and parsed `data`.\n\n### details `Object`\n\n```\n{\n\t<name>: <detail>\n}\n```\n\n- `detail.value` `mixed` the parsed value\n- `detail.is_default` `Boolean` if the current property is defined in `schema`, but the input data doesn't have it, then the value will be `true`\n- `detail.is_cooked` `Boolean` if there're any setters, it will be `true`\n- `detail.origin` the origin value of the property\n\n\n# Validation, Error Messages\n\n## Simple synchronous validators\n\n```js\nvar schema = {\n\tusername: {\n\t\tvalidator: function(value){\n\t\t\treturn /^[a-zA-Z0-9]{6,}$/.test(value);\n\t\t},\n\t\tmessage: 'Username must only contain letters, numbers; ' \n\t\t\t+ 'Username must contain at least 6 charactors'\n\t}\n};\n\nvar c = checker(schema);\n\nc.check({\n\tusername: 'a'\n}, function(err){\n\tif(err){\n\t\tconsole.log(err); // Then, `schema.username.message` will be displayed.\n\t}\n});\n```\n\n## Regular expressions as validators\n\nThe error hint of the example above is bad, because we want to know the very certain reason why we are wrong.\n\nThe `schema` below is equivalent to the one of the previous section:\n\n```js\n{\n\tvalidator: [\n\t\tfunction(value){\n\t\t\treturn value && value.length > 5;\n\t\t}, \n\t\t/^[a-zA-Z0-9]+$/\n\t],\n\tmessage: [\n\t\t'Username must contain at least 6 charactors', \n\t\t'Username must only contain letters and numbers'\n\t];\n}\n```\n\n## Asynchronous validators\n\n```js\n{\n\tvalidator: function(value){\n\t\tvar done = this.async();\n\t\t// this is an async method, and takes sooooo long...\n\t\tremote_check(value, function(err){\n\t\t\tdone(err); // `err` will pass to the `callback`\n\t\t});\n\t}\n}\n```\n\n\n# Programmatical Details\n\n## Options\n\n#### options.default_message `String`\n\nDefault error message\n\n#### options.parallel `Boolean=false`\n\nBy default, `checker` will check each properties in series, \n\n#### options.limit `Boolean=false`\n\nIf `options.limit` is `true` and a certain property of the input data is not defined in the `schema`, the property will be removed.\n\nDefault to `false`.\n\n#### options.check_all `Boolean=false`\n\nNot implemented yet.\n\n#### options.context `Object`\n\nSee sections below.\n\n## Schema Structures \n\n```js\n{\n\t<name>: <rule>\n}\n```\n\n\nWhere `rule` might contains (all properties are optional):\n\n#### validator \n\n- `RegExp` The regular exp that input must matches against\n- `Function` Validation function. If `arguments.length === 3`, it will be considered as an async methods\n- `Array.<RegExp|Function>` Group of validations. Asks will check each validator one by one. If validation fails, the rest validators will be skipped.\n- See sections above for details\n\t\n#### setter `Function|Array.<Function>`\n\nSee sections above for details.\n\n#### message `String`\n\nDefault error message\n\n#### default: `String`\n\n\n## `this` object inside validators and setters\n\nInside validators(`rule.validator`) and setters(`rule.setter`), there're several opaque methods\n\n### this.async()\n\nGenerate the `done` function to make the validator or setter become an async method.\n\n\tvar done = this.async();\n\t\nFor details, see the demos above.\n\n### this.get(name)\n\nThe value of the input object by name\n\n### this.set(name, value)\n\nChange the value of the specified property of the input object.\n\n```\n{\n\tusername: {\n\t},\n\t\n\tpassword: {\n\t\tvalidator: function(value){\n\t\t\tvar username = this.get('username');\n\t\t\t\n\t\t\t// Guests are welcome even without passwords\n\t\t\treturn value || username === 'guest';\n\t\t}\n\t}\n}\n```\n\nNotice that you'd better use `this.get` and `this.set` with the `options.parallel` setting as `false`(the default value). Otherwise, it might encounter unexpected situations, because the value of the object is ever changing due to the setter.\n\nSo, use them wisely.\n\n### this.context `Object`\n\nThe `options.context` itself.\n\n\n\n","_id":"checker@0.3.2","dist":{"shasum":"bc4b84036a5699c609e3c627923cb87d8058a79d","tarball":"http://localhost:1337/checker/-/checker-0.3.2.tgz"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"0.4.2":{"name":"checker","version":"0.4.2","description":"Checker is the collection of common abstract methods for validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/kaelzhang/node-checker.git"},"keywords":["checker","validator","validate","setter"],"author":{"name":"kael"},"license":"MIT","bugs":{"url":"https://github.com/kaelzhang/node-checker/issues"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"dependencies":{"async":"~0.2.9"},"readme":"[![Build Status](https://travis-ci.org/kaelzhang/node-checker.png?branch=master)](https://travis-ci.org/kaelzhang/node-checker)\n\n# checker\n\nChecker is the collection of common abstract node.js methods for validatiors and setters.\n\t\n# Usage\n```sh\nnpm install checker --save\n```\n\n```js\nvar checker = require('checker');\n```\n\n# Synopsis\n\n```js\nchecker(schema, options).check(data, function(err, value, details){\n});\n```\n\n### err `mixed`\n\n### results `Object`\n\nThe parsed object.\n\n### details `Object`\n\n```\n{\n\t<name>: <detail>\n}\n```\n\n- `detail.value` `mixed` the parsed value\n- `detail.is_default` `Boolean` if the current property is defined in `schema`, but the input data doesn't have it, then the value will be `true`\n- `detail.is_cooked` `Boolean` if there're any setters, it will be `true`\n- `detail.origin` the origin value of the property\n- `detail.error` the error belongs to the current property. If not exists, it will be `null`\n\n\n# Validation, Error Messages\n\n## Simple synchronous validators\n\n```js\nvar schema = {\n\tusername: {\n\t\tvalidator: function(value){\n\t\t\treturn /^[a-zA-Z0-9]{6,}$/.test(value);\n\t\t},\n\t\tmessage: 'Username must only contain letters, numbers; ' \n\t\t\t+ 'Username must contain at least 6 charactors'\n\t}\n};\n\nvar c = checker(schema);\n\nc.check({\n\tusername: 'a'\n}, function(err){\n\tif(err){\n\t\tconsole.log(err); // Then, `schema.username.message` will be displayed.\n\t}\n});\n```\n\n## Regular expressions as validators\n\nThe error hint of the example above is bad, because we want to know the very certain reason why we are wrong.\n\nThe `schema` below is equivalent to the one of the previous section:\n\n```js\n{\n\tvalidator: [\n\t\tfunction(value){\n\t\t\treturn value && value.length > 5;\n\t\t}, \n\t\t/^[a-zA-Z0-9]+$/\n\t],\n\tmessage: [\n\t\t'Username must contain at least 6 charactors', \n\t\t'Username must only contain letters and numbers'\n\t];\n}\n```\n\n## Asynchronous validators\n\n```js\n{\n\tvalidator: function(value){\n\t\tvar done = this.async();\n\t\t// this is an async method, and takes sooooo long...\n\t\tremote_check(value, function(err){\n\t\t\tdone(err); // `err` will pass to the `callback`\n\t\t});\n\t}\n}\n```\n\n\n# Programmatical Details\n\n## Options\n\n#### options.default_message `String`\n\nDefault error message\n\n#### options.parallel `Boolean=false`\n\nBy default, `checker` will check each properties in series, \n\n#### options.limit `Boolean=false`\n\nIf `options.limit` is `true` and a certain property of the input data is not defined in the `schema`, the property will be removed.\n\nDefault to `false`.\n\n#### options.check_all `Boolean=false`\n\nBy default, `checker` will exit immediately at the first error. But if `options.check_all` is `true`, it will parse all the properties, and collect every possible error.\n\n#### options.context `Object`\n\nSee sections below.\n\n## Schema Structures \n\n```js\n{\n\t<name>: <rule>\n}\n```\n\n\nWhere `rule` might contains (all properties are optional):\n\n#### validator \n\n- `RegExp` The regular exp that input must matches against\n- `Function` Validation function. If `arguments.length === 3`, it will be considered as an async methods\n- `Array.<RegExp|Function>` Group of validations. Asks will check each validator one by one. If validation fails, the rest validators will be skipped.\n- See sections above for details\n\t\n#### setter `Function|Array.<Function>`\n\nSee sections above for details.\n\n#### message `String`\n\nDefault error message\n\n#### default: `String`\n\n\n## `this` object inside validators and setters\n\nInside validators(`rule.validator`) and setters(`rule.setter`), there're several opaque methods\n\n### this.async()\n\nGenerate the `done` function to make the validator or setter become an async method.\n\n\tvar done = this.async();\n\t\nFor details, see the demos above.\n\n### this.get(name)\n\nThe value of the input object by name\n\n### this.set(name, value)\n\nChange the value of the specified property of the input object.\n\n```\n{\n\tusername: {\n\t},\n\t\n\tpassword: {\n\t\tvalidator: function(value){\n\t\t\tvar username = this.get('username');\n\t\t\t\n\t\t\t// Guests are welcome even without passwords\n\t\t\treturn value || username === 'guest';\n\t\t}\n\t}\n}\n```\n\nNotice that you'd better use `this.get` and `this.set` with the `options.parallel` setting as `false`(the default value). Otherwise, it might encounter unexpected situations, because the value of the object is ever changing due to the setter.\n\nSo, use them wisely.\n\n### this.context `Object`\n\nThe `options.context` itself.\n\n\n\n","_id":"checker@0.4.2","dist":{"shasum":"7b033fdad0f000f88302ff1f5a8e59d8f466580e","tarball":"http://localhost:1337/checker/-/checker-0.4.2.tgz"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"0.5.1":{"name":"checker","version":"0.5.1","description":"Checker is the collection of common abstract methods for validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/kaelzhang/node-checker.git"},"keywords":["checker","validator","validate","setter"],"author":{"name":"kael"},"license":"MIT","bugs":{"url":"https://github.com/kaelzhang/node-checker/issues"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"dependencies":{"async":"~0.2.9"},"readme":"[![Build Status](https://travis-ci.org/kaelzhang/node-checker.png?branch=master)](https://travis-ci.org/kaelzhang/node-checker)\n\n# checker\n\nChecker is the collection of common abstract node.js methods for validatiors and setters.\n\t\n# Usage\n```sh\nnpm install checker --save\n```\n\n```js\nvar checker = require('checker');\n```\n\n# Synopsis\n\n```js\nchecker(schema, options).check(data, function(err, value, details){\n});\n```\n\n### err `mixed`\n\n### results `Object`\n\nThe parsed object.\n\n### details `Object`\n\n```\n{\n\t<name>: <detail>\n}\n```\n\n- `detail.value` `mixed` the parsed value\n- `detail.is_default` `Boolean` if the current property is defined in `schema`, but the input data doesn't have it, then the value will be `true`\n- `detail.is_cooked` `Boolean` if there're any setters, it will be `true`\n- `detail.origin` the origin value of the property\n- `detail.error` the error belongs to the current property. If not exists, it will be `null`\n\n\n# Validation, Error Messages\n\n## Simple synchronous validators\n\n```js\nvar schema = {\n\tusername: {\n\t\tvalidator: function(value){\n\t\t\treturn /^[a-zA-Z0-9]{6,}$/.test(value);\n\t\t},\n\t\tmessage: 'Username must only contain letters, numbers; ' \n\t\t\t+ 'Username must contain at least 6 charactors'\n\t}\n};\n\nvar c = checker(schema);\n\nc.check({\n\tusername: 'a'\n}, function(err){\n\tif(err){\n\t\tconsole.log(err); // Then, `schema.username.message` will be displayed.\n\t}\n});\n```\n\n## Regular expressions as validators\n\nThe error hint of the example above is bad, because we want to know the very certain reason why we are wrong.\n\nThe `schema` below is equivalent to the one of the previous section:\n\n```js\n{\n\tvalidator: [\n\t\tfunction(value){\n\t\t\treturn value && value.length > 5;\n\t\t}, \n\t\t/^[a-zA-Z0-9]+$/\n\t],\n\tmessage: [\n\t\t'Username must contain at least 6 charactors', \n\t\t'Username must only contain letters and numbers'\n\t];\n}\n```\n\n## Asynchronous validators\n\n```js\n{\n\tvalidator: function(value){\n\t\tvar done = this.async();\n\t\t// this is an async method, and takes sooooo long...\n\t\tremote_check(value, function(err){\n\t\t\tdone(err); // `err` will pass to the `callback`\n\t\t});\n\t}\n}\n```\n\n\n# Programmatical Details\n\n## Options\n\n#### options.default_message `String`\n\nDefault error message\n\n#### options.parallel `Boolean=false`\n\nBy default, `checker` will check each properties in series, \n\n#### options.limit `Boolean=false`\n\nIf `options.limit` is `true` and a certain property of the input data is not defined in the `schema`, the property will be removed.\n\nDefault to `false`.\n\n#### options.check_all `Boolean=false`\n\nBy default, `checker` will exit immediately at the first error. But if `options.check_all` is `true`, it will parse all the properties, and collect every possible error.\n\n#### options.context `Object`\n\nSee sections below.\n\n## Schema Structures \n\n```js\n{\n\t<name>: <rule>\n}\n```\n\n\nWhere `rule` might contains (all properties are optional):\n\n#### validator \n\n- `RegExp` The regular exp that input must matches against\n- `Function` Validation function. If `arguments.length === 3`, it will be considered as an async methods\n- `Array.<RegExp|Function>` Group of validations. Asks will check each validator one by one. If validation fails, the rest validators will be skipped.\n- See sections above for details\n\t\n#### setter `Function|Array.<Function>`\n\nSee sections above for details.\n\n#### message `String`\n\nDefault error message\n\n#### default: `String`\n\n\n## `this` object inside validators and setters\n\nInside validators(`rule.validator`) and setters(`rule.setter`), there're several opaque methods\n\n### this.async()\n\nGenerate the `done` function to make the validator or setter become an async method.\n\n\tvar done = this.async();\n\t\nFor details, see the demos above.\n\n### this.get(name)\n\nThe value of the input object by name\n\n### this.set(name, value)\n\nChange the value of the specified property of the input object.\n\n```\n{\n\tusername: {\n\t},\n\t\n\tpassword: {\n\t\tvalidator: function(value){\n\t\t\tvar username = this.get('username');\n\t\t\t\n\t\t\t// Guests are welcome even without passwords\n\t\t\treturn value || username === 'guest';\n\t\t}\n\t}\n}\n```\n\nNotice that you'd better use `this.get` and `this.set` with the `options.parallel` setting as `false`(the default value). Otherwise, it might encounter unexpected situations, because the value of the object is ever changing due to the setter.\n\nSo, use them wisely.\n\n### this.context `Object`\n\nThe `options.context` itself.\n\n\n\n","readmeFilename":"README.md","_id":"checker@0.5.1","dist":{"shasum":"fef66f63d231ae2910f7dd7df291912a1e95e5d7","tarball":"http://localhost:1337/checker/-/checker-0.5.1.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kael","email":"i@kael.me"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}},"0.5.2":{"name":"checker","version":"0.5.2","description":"Checker is the collection of common abstract methods for validatiors and setters.","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/kaelzhang/node-checker.git"},"keywords":["checker","validator","validate","setter"],"author":{"name":"kael"},"license":"MIT","bugs":{"url":"https://github.com/kaelzhang/node-checker/issues"},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"dependencies":{"async":"~0.2.9"},"readme":"[![NPM version](https://badge.fury.io/js/checker.png)](http://badge.fury.io/js/checker)\n[![Build Status](https://travis-ci.org/kaelzhang/node-checker.png?branch=master)](https://travis-ci.org/kaelzhang/node-checker)\n[![Dependency Status](https://gemnasium.com/kaelzhang/node-checker.png)](https://gemnasium.com/kaelzhang/node-checker)\n\n# checker\n\nChecker is the collection of common abstract node.js methods for validatiors and setters.\n\t\n# Usage\n```sh\nnpm install checker --save\n```\n\n```js\nvar checker = require('checker');\n```\n\n# Synopsis\n\n```js\nchecker(schema, options).check(data, function(err, value, details){\n});\n```\n\n### err `mixed`\n\n### results `Object`\n\nThe parsed object.\n\n### details `Object`\n\n```\n{\n\t<name>: <detail>\n}\n```\n\n- `detail.value` `mixed` the parsed value\n- `detail.is_default` `Boolean` if the current property is defined in `schema`, but the input data doesn't have it, then the value will be `true`\n- `detail.is_cooked` `Boolean` if there're any setters, it will be `true`\n- `detail.origin` the origin value of the property\n- `detail.error` the error belongs to the current property. If not exists, it will be `null`\n\n\n# Validation, Error Messages\n\n## Simple synchronous validators\n\n```js\nvar schema = {\n\tusername: {\n\t\tvalidator: function(value){\n\t\t\treturn /^[a-zA-Z0-9]{6,}$/.test(value);\n\t\t},\n\t\tmessage: 'Username must only contain letters, numbers; ' \n\t\t\t+ 'Username must contain at least 6 charactors'\n\t}\n};\n\nvar c = checker(schema);\n\nc.check({\n\tusername: 'a'\n}, function(err){\n\tif(err){\n\t\tconsole.log(err); // Then, `schema.username.message` will be displayed.\n\t}\n});\n```\n\n## Regular expressions as validators\n\nThe error hint of the example above is bad, because we want to know the very certain reason why we are wrong.\n\nThe `schema` below is equivalent to the one of the previous section:\n\n```js\n{\n\tvalidator: [\n\t\tfunction(value){\n\t\t\treturn value && value.length > 5;\n\t\t}, \n\t\t/^[a-zA-Z0-9]+$/\n\t],\n\tmessage: [\n\t\t'Username must contain at least 6 charactors', \n\t\t'Username must only contain letters and numbers'\n\t];\n}\n```\n\n## Asynchronous validators\n\n```js\n{\n\tvalidator: function(value){\n\t\tvar done = this.async();\n\t\t// this is an async method, and takes sooooo long...\n\t\tremote_check(value, function(err){\n\t\t\tdone(err); // `err` will pass to the `callback`\n\t\t});\n\t}\n}\n```\n\n\n# Programmatical Details\n\n## Options\n\n#### options.default_message `String`\n\nDefault error message\n\n#### options.parallel `Boolean=false`\n\nBy default, `checker` will check each properties in series, \n\n#### options.limit `Boolean=false`\n\nIf `options.limit` is `true` and a certain property of the input data is not defined in the `schema`, the property will be removed.\n\nDefault to `false`.\n\n#### options.check_all `Boolean=false`\n\nBy default, `checker` will exit immediately at the first error. But if `options.check_all` is `true`, it will parse all the properties, and collect every possible error.\n\n#### options.context `Object`\n\nSee sections below.\n\n## Schema Structures \n\n```js\n{\n\t<name>: <rule>\n}\n```\n\n\nWhere `rule` might contains (all properties are optional):\n\n#### validator \n\n- `RegExp` The regular exp that input must matches against\n- `Function` Validation function. If `arguments.length === 3`, it will be considered as an async methods\n- `Array.<RegExp|Function>` Group of validations. Asks will check each validator one by one. If validation fails, the rest validators will be skipped.\n- See sections above for details\n\t\n#### setter `Function|Array.<Function>`\n\nSee sections above for details.\n\n#### message `String`\n\nDefault error message\n\n#### default: `String`\n\n\n## `this` object inside validators and setters\n\nInside validators(`rule.validator`) and setters(`rule.setter`), there're several opaque methods\n\n### this.async()\n\nGenerate the `done` function to make the validator or setter become an async method.\n\n\tvar done = this.async();\n\t\nFor details, see the demos above.\n\n### this.get(name)\n\nThe value of the input object by name\n\n### this.set(name, value)\n\nChange the value of the specified property of the input object.\n\n```\n{\n\tusername: {\n\t},\n\t\n\tpassword: {\n\t\tvalidator: function(value){\n\t\t\tvar username = this.get('username');\n\t\t\t\n\t\t\t// Guests are welcome even without passwords\n\t\t\treturn value || username === 'guest';\n\t\t}\n\t}\n}\n```\n\nNotice that you'd better use `this.get` and `this.set` with the `options.parallel` setting as `false`(the default value). Otherwise, it might encounter unexpected situations, because the value of the object is ever changing due to the setter.\n\nSo, use them wisely.\n\n### this.context `Object`\n\nThe `options.context` itself.\n\n\n\n","readmeFilename":"README.md","_id":"checker@0.5.2","dist":{"shasum":"c27a36bf00f3a7a3d24a8fbc7853f06fce4e9c86","tarball":"http://localhost:1337/checker/-/checker-0.5.2.tgz"},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"kael","email":"i@kael.me"},"maintainers":[{"name":"kael","email":"i@kael.me"}],"directories":{}}},"readme":"ERROR: No README data found!","maintainers":[{"name":"kael","email":"i@kael.me"}],"time":{"modified":"2013-10-17T03:05:51.738Z","created":"2013-10-07T13:53:26.836Z","0.0.0":"2013-10-07T14:00:18.706Z","0.2.1":"2013-10-08T13:10:06.237Z","0.3.1":"2013-10-08T14:00:33.456Z","0.3.2":"2013-10-08T14:36:07.451Z","0.4.2":"2013-10-09T10:02:48.711Z","0.5.1":"2013-10-09T16:43:25.048Z","0.5.2":"2013-10-17T03:05:51.738Z"},"author":{"name":"kael"},"repository":{"type":"git","url":"git://github.com/kaelzhang/node-checker.git"},"_attachments":{}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/dc/2a/a4df42cd435623f4c2c3e274fa081cc942ff45dcfa98cdf4a9324b6a21c3721c34bb97e6809ee28051fc10f57749cff60aa970a1e38c7a6c354a9403554e b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/dc/2a/a4df42cd435623f4c2c3e274fa081cc942ff45dcfa98cdf4a9324b6a21c3721c34bb97e6809ee28051fc10f57749cff60aa970a1e38c7a6c354a9403554e
deleted file mode 100644
index fa7bb7f467d7bd..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/dc/2a/a4df42cd435623f4c2c3e274fa081cc942ff45dcfa98cdf4a9324b6a21c3721c34bb97e6809ee28051fc10f57749cff60aa970a1e38c7a6c354a9403554e
+++ /dev/null
@@ -1 +0,0 @@
-{"@foo/bar":"write","@foo/util":"read"}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/dc/68/8298544a3867cf399b04cc60c38c6519dae6096c5ba1917bb78a489baa9d6bad39649e16e00367e7cd02ac14ba7cd64f3acd56e21b984630f823ad9c9663 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/dc/68/8298544a3867cf399b04cc60c38c6519dae6096c5ba1917bb78a489baa9d6bad39649e16e00367e7cd02ac14ba7cd64f3acd56e21b984630f823ad9c9663
deleted file mode 100644
index 4293310ab4d4ff..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/dc/68/8298544a3867cf399b04cc60c38c6519dae6096c5ba1917bb78a489baa9d6bad39649e16e00367e7cd02ac14ba7cd64f3acd56e21b984630f823ad9c9663
+++ /dev/null
@@ -1 +0,0 @@
-{"name":"add-named-update-protocol-port","versions":{"0.0.0":{"name":"add-named-update-protocol-port","version":"0.0.0","dist":{"tarball":"https://localhost:1338/registry/add-named-update-protocol-port/-/add-named-update-protocol-port-0.0.0.tgz","shasum":"356a192b7913b04c54574d18c28d46e6395428ab"}}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/e7/06/de9d8e6ce16152be537cbccdf26321b3d678394ce42fb56aa4e69a37aba9d54df284700d066f7e6d005e461ab41d220fd6f268ff889e405809108a7b8676 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/e7/06/de9d8e6ce16152be537cbccdf26321b3d678394ce42fb56aa4e69a37aba9d54df284700d066f7e6d005e461ab41d220fd6f268ff889e405809108a7b8676
deleted file mode 100644
index a04cd09944ea10..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/e7/06/de9d8e6ce16152be537cbccdf26321b3d678394ce42fb56aa4e69a37aba9d54df284700d066f7e6d005e461ab41d220fd6f268ff889e405809108a7b8676
+++ /dev/null
@@ -1 +0,0 @@
-{"latest":"2.0.0","a":"0.0.2","b":"0.6.0"}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/e8/36/89a9c21ac93c2a0efc7e536925004e528bd3bfeba708cf5216db999c5efce0d7138a7e6ecedb125e43ba2aeb475d5958a2ca31f48c6a1442f164e90a3a22 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/e8/36/89a9c21ac93c2a0efc7e536925004e528bd3bfeba708cf5216db999c5efce0d7138a7e6ecedb125e43ba2aeb475d5958a2ca31f48c6a1442f164e90a3a22
deleted file mode 100644
index 643beaec7898ae..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/e8/36/89a9c21ac93c2a0efc7e536925004e528bd3bfeba708cf5216db999c5efce0d7138a7e6ecedb125e43ba2aeb475d5958a2ca31f48c6a1442f164e90a3a22
+++ /dev/null
@@ -1 +0,0 @@
-{"username":"igotauthed"}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/ed/fc/2d79d0d55bf4ea02b74ecc3657ea833bc6d0578adb2e1f5ae0d733b09a484f8e7287901578c7bdaa5d6fd30ac4dea48773a610ca6ee1e09e31f6147e921d b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/ed/fc/2d79d0d55bf4ea02b74ecc3657ea833bc6d0578adb2e1f5ae0d733b09a484f8e7287901578c7bdaa5d6fd30ac4dea48773a610ca6ee1e09e31f6147e921d
deleted file mode 100644
index 34df07b38c356e..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/ed/fc/2d79d0d55bf4ea02b74ecc3657ea833bc6d0578adb2e1f5ae0d733b09a484f8e7287901578c7bdaa5d6fd30ac4dea48773a610ca6ee1e09e31f6147e921d
+++ /dev/null
@@ -1 +0,0 @@
-{"_id":"optimist","_rev":"147-993915d1034a2506e97797cd2d1bd171","name":"optimist","dist-tags":{"latest":"0.6.0"},"versions":{"0.0.1":{"name":"optimist","version":"0.0.1","descrption":"Light-weight option parsing","modules":{"index":"./optimist.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"engine":["node >=0.1.100"],"_id":"optimist@0.0.1","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/optimist/-/optimist-0.0.1.tgz","shasum":"be66175d8781290f1672ae96858814c88274c41c"},"directories":{}},"0.0.2":{"name":"optimist","version":"0.0.2","description":"Light-weight option parsing","modules":{"index":"./optimist.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"engine":["node >=0.1.100"],"_id":"optimist@0.0.2","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/optimist/-/optimist-0.0.2.tgz","shasum":"594ac6711315fa0d06887e3833567ff3fc7de4e1"},"directories":{}},"0.0.4":{"name":"optimist","version":"0.0.4","description":"Light-weight option parsing with an argv hash. No optstrings attached.","modules":{"index":"./lib/optimist.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.0.4","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/optimist/-/optimist-0.0.4.tgz","shasum":"6d5a2516e5b9a4808a8477cd62086ef829f07f4e"},"directories":{}},"0.0.5":{"name":"optimist","version":"0.0.5","description":"Light-weight option parsing with an argv hash. No optstrings attached.","modules":{"index":"./lib/optimist.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.0.5","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/optimist/-/optimist-0.0.5.tgz","shasum":"79f3bd7caf7c9002ace2a0600df80761fa459ea7"},"directories":{}},"0.0.6":{"name":"optimist","version":"0.0.6","description":"Light-weight option parsing with an argv hash. No optstrings attached.","modules":{"index":"./lib/optimist.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.0.6","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://localhost:1337/optimist/-/optimist-0.0.6.tgz","shasum":"1e00197a8f5c010ed02c9bed629af28422c51bdf"},"directories":{}},"0.0.7":{"name":"optimist","version":"0.0.7","description":"Light-weight option parsing with an argv hash. No optstrings attached.","modules":{"index":"./lib/optimist.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.0.7","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.10","_nodeVersion":"v0.2.5","dist":{"shasum":"5ffc1dce7ddfdfe57a61fabb2644d7bda57722b2","tarball":"http://localhost:1337/optimist/-/optimist-0.0.7.tgz"},"directories":{}},"0.1.0":{"name":"optimist","version":"0.1.0","description":"Light-weight option parsing with an argv hash. No optstrings attached.","modules":{"index":"./lib/optimist.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.1.0","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.10","_nodeVersion":"v0.2.5","dist":{"shasum":"b523820a36a51c35bf6098d2dc4b5aa001e0f541","tarball":"http://localhost:1337/optimist/-/optimist-0.1.0.tgz"},"directories":{}},"0.1.1":{"name":"optimist","version":"0.1.1","description":"Light-weight option parsing with an argv hash. No optstrings attached.","modules":{"index":"./lib/optimist.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.1.1","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.10","_nodeVersion":"v0.2.5","dist":{"shasum":"ed43041fe2196e9f36b9c0f75e301526ab751baa","tarball":"http://localhost:1337/optimist/-/optimist-0.1.1.tgz"},"directories":{}},"0.1.2":{"name":"optimist","version":"0.1.2","description":"Light-weight option parsing with an argv hash. No optstrings attached.","modules":{"index":"./lib/optimist.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","option","parser","parsing"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.1.2","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.12-1","_nodeVersion":"v0.2.5","dist":{"shasum":"489780fb5350e8429e99a9e6e1305124eb3bbc8e","tarball":"http://localhost:1337/optimist/-/optimist-0.1.2.tgz"},"directories":{}},"0.1.3":{"name":"optimist","version":"0.1.3","description":"Light-weight option parsing with an argv hash. No optstrings attached.","modules":{"index":"./lib/optimist.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","option","parser","parsing"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.1.3","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.12-1","_nodeVersion":"v0.2.5","dist":{"shasum":"90389a7e6807b5798b41c4b4112403a9691b98ff","tarball":"http://localhost:1337/optimist/-/optimist-0.1.3.tgz"},"directories":{}},"0.1.4":{"name":"optimist","version":"0.1.4","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index","repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","option","parser","parsing"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.1.4","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.2.16","_nodeVersion":"v0.3.8-pre","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"92496e1e378b46a24b6c027a612637cfc5fb543e","tarball":"http://localhost:1337/optimist/-/optimist-0.1.4.tgz"}},"0.1.5":{"name":"optimist","version":"0.1.5","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index","repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","option","parser","parsing"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.1.5","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.2.16","_nodeVersion":"v0.3.8-pre","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"f5b85dd7ba7928224db268f668419ffb1e7d2cec","tarball":"http://localhost:1337/optimist/-/optimist-0.1.5.tgz"}},"0.1.6":{"name":"optimist","version":"0.1.6","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index","repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","option","parser","parsing"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.1.6","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.2.16","_nodeVersion":"v0.3.8-pre","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"0f2f671dfec3365509dc335f098158aa90c80100","tarball":"http://localhost:1337/optimist/-/optimist-0.1.6.tgz"}},"0.1.7":{"name":"optimist","version":"0.1.7","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.1.7","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.2","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"f83a9644634d446bf3934518257d55dd6d08e183","tarball":"http://localhost:1337/optimist/-/optimist-0.1.7.tgz"}},"0.1.8":{"name":"optimist","version":"0.1.8","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":["node >=0.1.100"],"_id":"optimist@0.1.8","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.15","_nodeVersion":"v0.4.2","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"58d0adde9d61db67dfbe2c7467da8abf9c86bc94","tarball":"http://localhost:1337/optimist/-/optimist-0.1.8.tgz"}},"0.1.9":{"name":"optimist","version":"0.1.9","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":["node >=0.1.100"],"dependencies":{},"devDependencies":{},"_id":"optimist@0.1.9","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.1rc8","_nodeVersion":"v0.4.2","_defaultsLoaded":true,"dist":{"shasum":"d88fd79743a88960a418f5754b3b2157252447cc","tarball":"http://localhost:1337/optimist/-/optimist-0.1.9.tgz"},"directories":{}},"0.0.3":{"name":"optimist","version":"0.0.3","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./optimist.js","repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"license":"MIT/X11","engine":["node >=0.1.100"],"dependencies":{},"devDependencies":{},"_id":"optimist@0.0.3","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.8-pre","_defaultsLoaded":true,"dist":{"shasum":"323a5c625b708e0197b72c106aef6444ada0c515","tarball":"http://localhost:1337/optimist/-/optimist-0.0.3.tgz"},"scripts":{},"directories":{}},"0.2.0":{"name":"optimist","version":"0.2.0","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"dependencies":{},"devDependencies":{},"_id":"optimist@0.2.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"1cb5b0e727009370f324765e2a5245ac0d806bfd","tarball":"http://localhost:1337/optimist/-/optimist-0.2.0.tgz"},"scripts":{},"directories":{}},"0.2.1":{"name":"optimist","version":"0.2.1","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"dependencies":{},"devDependencies":{},"_id":"optimist@0.2.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"80a2d75b660d467f673599dcbc69c113f289554a","tarball":"http://localhost:1337/optimist/-/optimist-0.2.1.tgz"},"scripts":{},"directories":{}},"0.2.2":{"name":"optimist","version":"0.2.2","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"examples"},"dependencies":{"wordwrap":">=0.0.1 <0.1"},"devDependencies":{"expresso":"=0.7.x"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_id":"optimist@0.2.2","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"a6bb06ff1f8229a12ee9abcb8160eee35e629ef8","tarball":"http://localhost:1337/optimist/-/optimist-0.2.2.tgz"},"scripts":{}},"0.2.3":{"name":"optimist","version":"0.2.3","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"examples"},"dependencies":{"wordwrap":">=0.0.1 <0.1"},"devDependencies":{"expresso":"=0.7.x"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_id":"optimist@0.2.3","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"dc259cc0e5d73e1f3fcc2dea3526e52f19ed740c","tarball":"http://localhost:1337/optimist/-/optimist-0.2.3.tgz"},"scripts":{}},"0.2.4":{"name":"optimist","version":"0.2.4","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"examples"},"dependencies":{"wordwrap":">=0.0.1 <0.1"},"devDependencies":{"hashish":"0.0.x","expresso":"=0.7.x"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_id":"optimist@0.2.4","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"9d543b3444fe127e8c01891c11a38d20b886317b","tarball":"http://localhost:1337/optimist/-/optimist-0.2.4.tgz"},"scripts":{}},"0.2.5":{"name":"optimist","version":"0.2.5","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"examples"},"dependencies":{"wordwrap":">=0.0.1 <0.1"},"devDependencies":{"hashish":"0.0.x","expresso":"=0.7.x"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_id":"optimist@0.2.5","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"50e0127b8443da18f4fdb756aaca446f1c65d136","tarball":"http://localhost:1337/optimist/-/optimist-0.2.5.tgz"},"scripts":{}},"0.2.6":{"name":"optimist","version":"0.2.6","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"examples"},"dependencies":{"wordwrap":">=0.0.1 <0.1"},"devDependencies":{"hashish":"0.0.x","expresso":"=0.7.x"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_id":"optimist@0.2.6","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"c15b750c98274ea175d241b745edf4ddc88f177b","tarball":"http://localhost:1337/optimist/-/optimist-0.2.6.tgz"},"scripts":{}},"0.2.7":{"name":"optimist","version":"0.2.7","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"examples"},"dependencies":{"wordwrap":">=0.0.1 <0.1.0"},"devDependencies":{"hashish":"0.0.x","expresso":"0.7.x"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"optimist@0.2.7","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.99","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"62945bcc760643d918a5c7649ade86e662144024","tarball":"http://localhost:1337/optimist/-/optimist-0.2.7.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.2.8":{"name":"optimist","version":"0.2.8","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"examples"},"dependencies":{"wordwrap":">=0.0.1 <0.1.0"},"devDependencies":{"hashish":"0.0.x","expresso":"0.7.x"},"scripts":{"test":"expresso"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"optimist@0.2.8","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.99","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"e981ab7e268b457948593b55674c099a815cac31","tarball":"http://localhost:1337/optimist/-/optimist-0.2.8.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.3.0":{"name":"optimist","version":"0.3.0","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"examples"},"dependencies":{"wordwrap":">=0.0.1 <0.1.0"},"devDependencies":{"hashish":"0.0.x","expresso":"0.7.x"},"scripts":{"test":"expresso"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"optimist@0.3.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"4458c1f02acf1e5c9ece36ce2fd4d338e56ee0f6","tarball":"http://localhost:1337/optimist/-/optimist-0.3.0.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.3.1":{"name":"optimist","version":"0.3.1","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"examples"},"dependencies":{"wordwrap":">=0.0.1 <0.1.0"},"devDependencies":{"hashish":"0.0.x","expresso":"0.7.x"},"scripts":{"test":"expresso"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"optimist@0.3.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"6680d30560193af5a55eb64394883ed7bcb98f2e","tarball":"http://localhost:1337/optimist/-/optimist-0.3.1.tgz"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.3.3":{"name":"optimist","version":"0.3.3","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"example"},"dependencies":{"wordwrap":"~0.0.2"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.2.4"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"optimist@0.3.3","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"d75701d48f37fe0e6f06f88e7b0cf0882a3ce394","tarball":"http://localhost:1337/optimist/-/optimist-0.3.3.tgz"},"readme":"","maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.3.4":{"name":"optimist","version":"0.3.4","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"example"},"dependencies":{"wordwrap":"~0.0.2"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.2.4"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"git://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"_npmUser":{"name":"substack","email":"mail@substack.net"},"_id":"optimist@0.3.4","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"4d6d0bd71ffad0da4ba4f6d876d5eeb04e07480b","tarball":"http://localhost:1337/optimist/-/optimist-0.3.4.tgz"},"readme":"","maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.3.5":{"name":"optimist","version":"0.3.5","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","directories":{"lib":".","test":"test","example":"example"},"dependencies":{"wordwrap":"~0.0.2"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.2.4"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"readme":"optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n    console.log('Buy more riffiwobbles');\n}\nelse {\n    console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n    $ ./xup.js --rif=55 --xup=9.52\n    Buy more riffiwobbles\n    \n    $ ./xup.js --rif 12 --xup 8.1\n    Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n    $ ./short.js -x 10 -y 21\n    (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n    util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n    (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n    $ ./bool.js -s\n    The cat says: meow\n    \n    $ ./bool.js -sp\n    The cat says: meow.\n\n    $ ./bool.js -sp --fr\n    Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n    $ ./nonopt.js -x 6.82 -y 3.35 moo\n    (6.82,3.35)\n    [ 'moo' ]\n    \n    $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n    (0.54,1.12)\n    [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .usage('Usage: $0 -x [num] -y [num]')\n    .demand(['x','y'])\n    .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n    $ ./divide.js -x 55 -y 11\n    5\n    \n    $ node ./divide.js -x 4.91 -z 2.51\n    Usage: node ./divide.js -x [num] -y [num]\n\n    Options:\n      -x  [required]\n      -y  [required]\n\n    Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .default('x', 10)\n    .default('y', 10)\n    .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n    $ ./default_singles.js -x 5\n    15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .default({ x : 10, y : 10 })\n    .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n    $ ./default_hash.js -y 7\n    17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .boolean('v')\n    .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n    $ ./boolean_single.js -v foo bar baz\n    true\n    [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .boolean(['x','y','z'])\n    .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n    $ ./boolean_double.js -x -z one two three\n    [ true, false, true ]\n    [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .usage('Count the lines in a file.\\nUsage: $0')\n    .demand('f')\n    .alias('f', 'file')\n    .describe('f', 'Load a file')\n    .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n    lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n    console.log(lines);\n});\n````\n\n***\n\n    $ node line_count.js\n    Count the lines in a file.\n    Usage: node ./line_count.js\n\n    Options:\n      -f, --file  Load a file  [required]\n\n    Missing required arguments: f\n\n    $ node line_count.js --file line_count.js \n    20\n    \n    $ node line_count.js -f line_count.js \n    20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n    .options('f', {\n        alias : 'file',\n        default : '/etc/passwd',\n    })\n    .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n    .alias('f', 'file')\n    .default('f', '/etc/passwd')\n    .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n    $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n    { _: [ '-c', '3', '-d', '4' ],\n      '$0': 'node ./examples/reflect.js',\n      a: 1,\n      b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n    $ node examples/reflect.js -a --no-b\n    { _: [],\n      '$0': 'node ./examples/reflect.js',\n      a: true,\n      b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n    $ node examples/reflect.js -x 5 -x 8 -x 0\n    { _: [],\n      '$0': 'node ./examples/reflect.js',\n        x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n     $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n     { _: [],\n       '$0': 'node ./examples/reflect.js',\n         foo: { bar: { baz: 33 }, quux: 5 } }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n    npm install optimist\n \nor clone this project on github:\n\n    git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n    \n    expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n","_id":"optimist@0.3.5","dist":{"shasum":"03654b52417030312d109f39b159825b60309304","tarball":"http://localhost:1337/optimist/-/optimist-0.3.5.tgz"},"_npmVersion":"1.1.59","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}]},"0.3.6":{"name":"optimist","version":"0.3.6","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","dependencies":{"wordwrap":"~0.0.2"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.4.0"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"readme":"optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n    console.log('Buy more riffiwobbles');\n}\nelse {\n    console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n    $ ./xup.js --rif=55 --xup=9.52\n    Buy more riffiwobbles\n    \n    $ ./xup.js --rif 12 --xup 8.1\n    Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n    $ ./short.js -x 10 -y 21\n    (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n    util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n    (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n    $ ./bool.js -s\n    The cat says: meow\n    \n    $ ./bool.js -sp\n    The cat says: meow.\n\n    $ ./bool.js -sp --fr\n    Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n    $ ./nonopt.js -x 6.82 -y 3.35 moo\n    (6.82,3.35)\n    [ 'moo' ]\n    \n    $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n    (0.54,1.12)\n    [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .usage('Usage: $0 -x [num] -y [num]')\n    .demand(['x','y'])\n    .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n    $ ./divide.js -x 55 -y 11\n    5\n    \n    $ node ./divide.js -x 4.91 -z 2.51\n    Usage: node ./divide.js -x [num] -y [num]\n\n    Options:\n      -x  [required]\n      -y  [required]\n\n    Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .default('x', 10)\n    .default('y', 10)\n    .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n    $ ./default_singles.js -x 5\n    15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .default({ x : 10, y : 10 })\n    .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n    $ ./default_hash.js -y 7\n    17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .boolean('v')\n    .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n    $ ./boolean_single.js -v foo bar baz\n    true\n    [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .boolean(['x','y','z'])\n    .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n    $ ./boolean_double.js -x -z one two three\n    [ true, false, true ]\n    [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .usage('Count the lines in a file.\\nUsage: $0')\n    .demand('f')\n    .alias('f', 'file')\n    .describe('f', 'Load a file')\n    .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n    lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n    console.log(lines);\n});\n````\n\n***\n\n    $ node line_count.js\n    Count the lines in a file.\n    Usage: node ./line_count.js\n\n    Options:\n      -f, --file  Load a file  [required]\n\n    Missing required arguments: f\n\n    $ node line_count.js --file line_count.js \n    20\n    \n    $ node line_count.js -f line_count.js \n    20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n    .options('f', {\n        alias : 'file',\n        default : '/etc/passwd',\n    })\n    .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n    .alias('f', 'file')\n    .default('f', '/etc/passwd')\n    .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n    $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n    { _: [ '-c', '3', '-d', '4' ],\n      '$0': 'node ./examples/reflect.js',\n      a: 1,\n      b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n    $ node examples/reflect.js -a --no-b\n    { _: [],\n      '$0': 'node ./examples/reflect.js',\n      a: true,\n      b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n    $ node examples/reflect.js -x 5 -x 8 -x 0\n    { _: [],\n      '$0': 'node ./examples/reflect.js',\n        x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n     $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n     { _: [],\n       '$0': 'node ./examples/reflect.js',\n         foo: { bar: { baz: 33 }, quux: 5 } }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n    npm install optimist\n \nor clone this project on github:\n\n    git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n    \n    expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n","readmeFilename":"readme.markdown","_id":"optimist@0.3.6","dist":{"shasum":"816e0039f848fccf9db70cada5535ed9dd55f496","tarball":"http://localhost:1337/optimist/-/optimist-0.3.6.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.3.7":{"name":"optimist","version":"0.3.7","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","dependencies":{"wordwrap":"~0.0.2"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.4.0"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"readme":"optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n    console.log('Buy more riffiwobbles');\n}\nelse {\n    console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n    $ ./xup.js --rif=55 --xup=9.52\n    Buy more riffiwobbles\n    \n    $ ./xup.js --rif 12 --xup 8.1\n    Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n    $ ./short.js -x 10 -y 21\n    (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n    util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n    (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n    $ ./bool.js -s\n    The cat says: meow\n    \n    $ ./bool.js -sp\n    The cat says: meow.\n\n    $ ./bool.js -sp --fr\n    Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n    $ ./nonopt.js -x 6.82 -y 3.35 moo\n    (6.82,3.35)\n    [ 'moo' ]\n    \n    $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n    (0.54,1.12)\n    [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .usage('Usage: $0 -x [num] -y [num]')\n    .demand(['x','y'])\n    .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n    $ ./divide.js -x 55 -y 11\n    5\n    \n    $ node ./divide.js -x 4.91 -z 2.51\n    Usage: node ./divide.js -x [num] -y [num]\n\n    Options:\n      -x  [required]\n      -y  [required]\n\n    Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .default('x', 10)\n    .default('y', 10)\n    .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n    $ ./default_singles.js -x 5\n    15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .default({ x : 10, y : 10 })\n    .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n    $ ./default_hash.js -y 7\n    17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .boolean('v')\n    .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n    $ ./boolean_single.js -v foo bar baz\n    true\n    [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .boolean(['x','y','z'])\n    .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n    $ ./boolean_double.js -x -z one two three\n    [ true, false, true ]\n    [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .usage('Count the lines in a file.\\nUsage: $0')\n    .demand('f')\n    .alias('f', 'file')\n    .describe('f', 'Load a file')\n    .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n    lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n    console.log(lines);\n});\n````\n\n***\n\n    $ node line_count.js\n    Count the lines in a file.\n    Usage: node ./line_count.js\n\n    Options:\n      -f, --file  Load a file  [required]\n\n    Missing required arguments: f\n\n    $ node line_count.js --file line_count.js \n    20\n    \n    $ node line_count.js -f line_count.js \n    20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n    .options('f', {\n        alias : 'file',\n        default : '/etc/passwd',\n    })\n    .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n    .alias('f', 'file')\n    .default('f', '/etc/passwd')\n    .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n    $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n    { _: [ '-c', '3', '-d', '4' ],\n      '$0': 'node ./examples/reflect.js',\n      a: 1,\n      b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n    $ node examples/reflect.js -a --no-b\n    { _: [],\n      '$0': 'node ./examples/reflect.js',\n      a: true,\n      b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n    $ node examples/reflect.js -x 5 -x 8 -x 0\n    { _: [],\n      '$0': 'node ./examples/reflect.js',\n        x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n     $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n     { _: [],\n       '$0': 'node ./examples/reflect.js',\n         foo: { bar: { baz: 33 }, quux: 5 } }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n    npm install optimist\n \nor clone this project on github:\n\n    git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n    \n    expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n","readmeFilename":"readme.markdown","_id":"optimist@0.3.7","dist":{"shasum":"c90941ad59e4273328923074d2cf2e7cbc6ec0d9","tarball":"http://localhost:1337/optimist/-/optimist-0.3.7.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.4.0":{"name":"optimist","version":"0.4.0","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","dependencies":{"wordwrap":"~0.0.2"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.4.0"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"readme":"optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n    console.log('Buy more riffiwobbles');\n}\nelse {\n    console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n    $ ./xup.js --rif=55 --xup=9.52\n    Buy more riffiwobbles\n    \n    $ ./xup.js --rif 12 --xup 8.1\n    Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n    $ ./short.js -x 10 -y 21\n    (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n    util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n    (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n    $ ./bool.js -s\n    The cat says: meow\n    \n    $ ./bool.js -sp\n    The cat says: meow.\n\n    $ ./bool.js -sp --fr\n    Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n    $ ./nonopt.js -x 6.82 -y 3.35 moo\n    (6.82,3.35)\n    [ 'moo' ]\n    \n    $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n    (0.54,1.12)\n    [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .usage('Usage: $0 -x [num] -y [num]')\n    .demand(['x','y'])\n    .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n    $ ./divide.js -x 55 -y 11\n    5\n    \n    $ node ./divide.js -x 4.91 -z 2.51\n    Usage: node ./divide.js -x [num] -y [num]\n\n    Options:\n      -x  [required]\n      -y  [required]\n\n    Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .default('x', 10)\n    .default('y', 10)\n    .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n    $ ./default_singles.js -x 5\n    15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .default({ x : 10, y : 10 })\n    .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n    $ ./default_hash.js -y 7\n    17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .boolean('v')\n    .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n    $ ./boolean_single.js -v foo bar baz\n    true\n    [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .boolean(['x','y','z'])\n    .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n    $ ./boolean_double.js -x -z one two three\n    [ true, false, true ]\n    [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .usage('Count the lines in a file.\\nUsage: $0')\n    .demand('f')\n    .alias('f', 'file')\n    .describe('f', 'Load a file')\n    .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n    lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n    console.log(lines);\n});\n````\n\n***\n\n    $ node line_count.js\n    Count the lines in a file.\n    Usage: node ./line_count.js\n\n    Options:\n      -f, --file  Load a file  [required]\n\n    Missing required arguments: f\n\n    $ node line_count.js --file line_count.js \n    20\n    \n    $ node line_count.js -f line_count.js \n    20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n    .options('f', {\n        alias : 'file',\n        default : '/etc/passwd',\n    })\n    .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n    .alias('f', 'file')\n    .default('f', '/etc/passwd')\n    .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n    $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n    { _: [ '-c', '3', '-d', '4' ],\n      '$0': 'node ./examples/reflect.js',\n      a: 1,\n      b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n    $ node examples/reflect.js -a --no-b\n    { _: [],\n      '$0': 'node ./examples/reflect.js',\n      a: true,\n      b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n    $ node examples/reflect.js -x 5 -x 8 -x 0\n    { _: [],\n      '$0': 'node ./examples/reflect.js',\n        x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n     $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n     { _: [],\n       '$0': 'node ./examples/reflect.js',\n         foo: { bar: { baz: 33 }, quux: 5 } }\n\nshort numbers\n-------------\n\nShort numeric `head -n5` style argument work too:\n\n    $ node reflect.js -n123 -m456\n    { '3': true,\n      '6': true,\n      _: [],\n      '$0': 'node ./reflect.js',\n      n: 123,\n      m: 456 }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n    npm install optimist\n \nor clone this project on github:\n\n    git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n    \n    expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n","readmeFilename":"readme.markdown","_id":"optimist@0.4.0","dist":{"shasum":"cb8ec37f2fe3aa9864cb67a275250e7e19620a25","tarball":"http://localhost:1337/optimist/-/optimist-0.4.0.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.5.0":{"name":"optimist","version":"0.5.0","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","dependencies":{"wordwrap":"~0.0.2"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.4.0"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"readme":"optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n    console.log('Buy more riffiwobbles');\n}\nelse {\n    console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n    $ ./xup.js --rif=55 --xup=9.52\n    Buy more riffiwobbles\n    \n    $ ./xup.js --rif 12 --xup 8.1\n    Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n    $ ./short.js -x 10 -y 21\n    (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n    util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n    (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n    $ ./bool.js -s\n    The cat says: meow\n    \n    $ ./bool.js -sp\n    The cat says: meow.\n\n    $ ./bool.js -sp --fr\n    Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n    $ ./nonopt.js -x 6.82 -y 3.35 moo\n    (6.82,3.35)\n    [ 'moo' ]\n    \n    $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n    (0.54,1.12)\n    [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .usage('Usage: $0 -x [num] -y [num]')\n    .demand(['x','y'])\n    .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n    $ ./divide.js -x 55 -y 11\n    5\n    \n    $ node ./divide.js -x 4.91 -z 2.51\n    Usage: node ./divide.js -x [num] -y [num]\n\n    Options:\n      -x  [required]\n      -y  [required]\n\n    Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .default('x', 10)\n    .default('y', 10)\n    .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n    $ ./default_singles.js -x 5\n    15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .default({ x : 10, y : 10 })\n    .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n    $ ./default_hash.js -y 7\n    17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .boolean('v')\n    .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n    $ ./boolean_single.js -v foo bar baz\n    true\n    [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .boolean(['x','y','z'])\n    .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n    $ ./boolean_double.js -x -z one two three\n    [ true, false, true ]\n    [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .usage('Count the lines in a file.\\nUsage: $0')\n    .demand('f')\n    .alias('f', 'file')\n    .describe('f', 'Load a file')\n    .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n    lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n    console.log(lines);\n});\n````\n\n***\n\n    $ node line_count.js\n    Count the lines in a file.\n    Usage: node ./line_count.js\n\n    Options:\n      -f, --file  Load a file  [required]\n\n    Missing required arguments: f\n\n    $ node line_count.js --file line_count.js \n    20\n    \n    $ node line_count.js -f line_count.js \n    20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n    .options('f', {\n        alias : 'file',\n        default : '/etc/passwd',\n    })\n    .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n    .alias('f', 'file')\n    .default('f', '/etc/passwd')\n    .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n    $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n    { _: [ '-c', '3', '-d', '4' ],\n      '$0': 'node ./examples/reflect.js',\n      a: 1,\n      b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n    $ node examples/reflect.js -a --no-b\n    { _: [],\n      '$0': 'node ./examples/reflect.js',\n      a: true,\n      b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n    $ node examples/reflect.js -x 5 -x 8 -x 0\n    { _: [],\n      '$0': 'node ./examples/reflect.js',\n        x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n     $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n     { _: [],\n       '$0': 'node ./examples/reflect.js',\n         foo: { bar: { baz: 33 }, quux: 5 } }\n\nshort numbers\n-------------\n\nShort numeric `head -n5` style argument work too:\n\n    $ node reflect.js -n123 -m456\n    { '3': true,\n      '6': true,\n      _: [],\n      '$0': 'node ./reflect.js',\n      n: 123,\n      m: 456 }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n    npm install optimist\n \nor clone this project on github:\n\n    git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n    \n    expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n","readmeFilename":"readme.markdown","_id":"optimist@0.5.0","dist":{"shasum":"d9c60da4c34811418d183390623f8046f134a2d4","tarball":"http://localhost:1337/optimist/-/optimist-0.5.0.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.5.1":{"name":"optimist","version":"0.5.1","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","dependencies":{"wordwrap":"~0.0.2"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.4.0"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"readme":"optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n    console.log('Buy more riffiwobbles');\n}\nelse {\n    console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n    $ ./xup.js --rif=55 --xup=9.52\n    Buy more riffiwobbles\n    \n    $ ./xup.js --rif 12 --xup 8.1\n    Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n    $ ./short.js -x 10 -y 21\n    (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n    util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n    (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n    $ ./bool.js -s\n    The cat says: meow\n    \n    $ ./bool.js -sp\n    The cat says: meow.\n\n    $ ./bool.js -sp --fr\n    Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n    $ ./nonopt.js -x 6.82 -y 3.35 moo\n    (6.82,3.35)\n    [ 'moo' ]\n    \n    $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n    (0.54,1.12)\n    [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .usage('Usage: $0 -x [num] -y [num]')\n    .demand(['x','y'])\n    .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n    $ ./divide.js -x 55 -y 11\n    5\n    \n    $ node ./divide.js -x 4.91 -z 2.51\n    Usage: node ./divide.js -x [num] -y [num]\n\n    Options:\n      -x  [required]\n      -y  [required]\n\n    Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .default('x', 10)\n    .default('y', 10)\n    .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n    $ ./default_singles.js -x 5\n    15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .default({ x : 10, y : 10 })\n    .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n    $ ./default_hash.js -y 7\n    17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .boolean('v')\n    .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n    $ ./boolean_single.js -v foo bar baz\n    true\n    [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .boolean(['x','y','z'])\n    .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n    $ ./boolean_double.js -x -z one two three\n    [ true, false, true ]\n    [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .usage('Count the lines in a file.\\nUsage: $0')\n    .demand('f')\n    .alias('f', 'file')\n    .describe('f', 'Load a file')\n    .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n    lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n    console.log(lines);\n});\n````\n\n***\n\n    $ node line_count.js\n    Count the lines in a file.\n    Usage: node ./line_count.js\n\n    Options:\n      -f, --file  Load a file  [required]\n\n    Missing required arguments: f\n\n    $ node line_count.js --file line_count.js \n    20\n    \n    $ node line_count.js -f line_count.js \n    20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n    .options('f', {\n        alias : 'file',\n        default : '/etc/passwd',\n    })\n    .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n    .alias('f', 'file')\n    .default('f', '/etc/passwd')\n    .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n    $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n    { _: [ '-c', '3', '-d', '4' ],\n      '$0': 'node ./examples/reflect.js',\n      a: 1,\n      b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n    $ node examples/reflect.js -a --no-b\n    { _: [],\n      '$0': 'node ./examples/reflect.js',\n      a: true,\n      b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n    $ node examples/reflect.js -x 5 -x 8 -x 0\n    { _: [],\n      '$0': 'node ./examples/reflect.js',\n        x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n     $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n     { _: [],\n       '$0': 'node ./examples/reflect.js',\n         foo: { bar: { baz: 33 }, quux: 5 } }\n\nshort numbers\n-------------\n\nShort numeric `head -n5` style argument work too:\n\n    $ node reflect.js -n123 -m456\n    { '3': true,\n      '6': true,\n      _: [],\n      '$0': 'node ./reflect.js',\n      n: 123,\n      m: 456 }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n    npm install optimist\n \nor clone this project on github:\n\n    git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n    \n    expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n","readmeFilename":"readme.markdown","_id":"optimist@0.5.1","dist":{"shasum":"9f6a34014ca8344a60a5d39734436f49d2bbe4f5","tarball":"http://localhost:1337/optimist/-/optimist-0.5.1.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.5.2":{"name":"optimist","version":"0.5.2","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","dependencies":{"wordwrap":"~0.0.2"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.4.0"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"readme":"optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n    console.log('Buy more riffiwobbles');\n}\nelse {\n    console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n    $ ./xup.js --rif=55 --xup=9.52\n    Buy more riffiwobbles\n    \n    $ ./xup.js --rif 12 --xup 8.1\n    Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n    $ ./short.js -x 10 -y 21\n    (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n    util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n    (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n    $ ./bool.js -s\n    The cat says: meow\n    \n    $ ./bool.js -sp\n    The cat says: meow.\n\n    $ ./bool.js -sp --fr\n    Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n    $ ./nonopt.js -x 6.82 -y 3.35 moo\n    (6.82,3.35)\n    [ 'moo' ]\n    \n    $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n    (0.54,1.12)\n    [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .usage('Usage: $0 -x [num] -y [num]')\n    .demand(['x','y'])\n    .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n    $ ./divide.js -x 55 -y 11\n    5\n    \n    $ node ./divide.js -x 4.91 -z 2.51\n    Usage: node ./divide.js -x [num] -y [num]\n\n    Options:\n      -x  [required]\n      -y  [required]\n\n    Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .default('x', 10)\n    .default('y', 10)\n    .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n    $ ./default_singles.js -x 5\n    15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .default({ x : 10, y : 10 })\n    .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n    $ ./default_hash.js -y 7\n    17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .boolean('v')\n    .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n    $ ./boolean_single.js -v foo bar baz\n    true\n    [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .boolean(['x','y','z'])\n    .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n    $ ./boolean_double.js -x -z one two three\n    [ true, false, true ]\n    [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .usage('Count the lines in a file.\\nUsage: $0')\n    .demand('f')\n    .alias('f', 'file')\n    .describe('f', 'Load a file')\n    .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n    lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n    console.log(lines);\n});\n````\n\n***\n\n    $ node line_count.js\n    Count the lines in a file.\n    Usage: node ./line_count.js\n\n    Options:\n      -f, --file  Load a file  [required]\n\n    Missing required arguments: f\n\n    $ node line_count.js --file line_count.js \n    20\n    \n    $ node line_count.js -f line_count.js \n    20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n    .options('f', {\n        alias : 'file',\n        default : '/etc/passwd',\n    })\n    .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n    .alias('f', 'file')\n    .default('f', '/etc/passwd')\n    .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n    $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n    { _: [ '-c', '3', '-d', '4' ],\n      '$0': 'node ./examples/reflect.js',\n      a: 1,\n      b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n    $ node examples/reflect.js -a --no-b\n    { _: [],\n      '$0': 'node ./examples/reflect.js',\n      a: true,\n      b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n    $ node examples/reflect.js -x 5 -x 8 -x 0\n    { _: [],\n      '$0': 'node ./examples/reflect.js',\n        x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n     $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n     { _: [],\n       '$0': 'node ./examples/reflect.js',\n         foo: { bar: { baz: 33 }, quux: 5 } }\n\nshort numbers\n-------------\n\nShort numeric `head -n5` style argument work too:\n\n    $ node reflect.js -n123 -m456\n    { '3': true,\n      '6': true,\n      _: [],\n      '$0': 'node ./reflect.js',\n      n: 123,\n      m: 456 }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n    npm install optimist\n \nor clone this project on github:\n\n    git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n    \n    expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n","readmeFilename":"readme.markdown","_id":"optimist@0.5.2","dist":{"shasum":"85c8c1454b3315e4a78947e857b1df033450bfbc","tarball":"http://localhost:1337/optimist/-/optimist-0.5.2.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}},"0.6.0":{"name":"optimist","version":"0.6.0","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","dependencies":{"wordwrap":"~0.0.2","minimist":"~0.0.1"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.4.0"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"readme":"optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n    console.log('Buy more riffiwobbles');\n}\nelse {\n    console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n    $ ./xup.js --rif=55 --xup=9.52\n    Buy more riffiwobbles\n    \n    $ ./xup.js --rif 12 --xup 8.1\n    Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n    $ ./short.js -x 10 -y 21\n    (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n    util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n    (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n    $ ./bool.js -s\n    The cat says: meow\n    \n    $ ./bool.js -sp\n    The cat says: meow.\n\n    $ ./bool.js -sp --fr\n    Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n    $ ./nonopt.js -x 6.82 -y 3.35 moo\n    (6.82,3.35)\n    [ 'moo' ]\n    \n    $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n    (0.54,1.12)\n    [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .usage('Usage: $0 -x [num] -y [num]')\n    .demand(['x','y'])\n    .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n    $ ./divide.js -x 55 -y 11\n    5\n    \n    $ node ./divide.js -x 4.91 -z 2.51\n    Usage: node ./divide.js -x [num] -y [num]\n\n    Options:\n      -x  [required]\n      -y  [required]\n\n    Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .default('x', 10)\n    .default('y', 10)\n    .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n    $ ./default_singles.js -x 5\n    15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .default({ x : 10, y : 10 })\n    .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n    $ ./default_hash.js -y 7\n    17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .boolean('v')\n    .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n    $ ./boolean_single.js -v foo bar baz\n    true\n    [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .boolean(['x','y','z'])\n    .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n    $ ./boolean_double.js -x -z one two three\n    [ true, false, true ]\n    [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n    .usage('Count the lines in a file.\\nUsage: $0')\n    .demand('f')\n    .alias('f', 'file')\n    .describe('f', 'Load a file')\n    .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n    lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n    console.log(lines);\n});\n````\n\n***\n\n    $ node line_count.js\n    Count the lines in a file.\n    Usage: node ./line_count.js\n\n    Options:\n      -f, --file  Load a file  [required]\n\n    Missing required arguments: f\n\n    $ node line_count.js --file line_count.js \n    20\n    \n    $ node line_count.js -f line_count.js \n    20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n    .options('f', {\n        alias : 'file',\n        default : '/etc/passwd',\n    })\n    .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n    .alias('f', 'file')\n    .default('f', '/etc/passwd')\n    .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n    $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n    { _: [ '-c', '3', '-d', '4' ],\n      '$0': 'node ./examples/reflect.js',\n      a: 1,\n      b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n    $ node examples/reflect.js -a --no-b\n    { _: [],\n      '$0': 'node ./examples/reflect.js',\n      a: true,\n      b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n    $ node examples/reflect.js -x 5 -x 8 -x 0\n    { _: [],\n      '$0': 'node ./examples/reflect.js',\n        x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n     $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n     { _: [],\n       '$0': 'node ./examples/reflect.js',\n         foo: { bar: { baz: 33 }, quux: 5 } }\n\nshort numbers\n-------------\n\nShort numeric `head -n5` style argument work too:\n\n    $ node reflect.js -n123 -m456\n    { '3': true,\n      '6': true,\n      _: [],\n      '$0': 'node ./reflect.js',\n      n: 123,\n      m: 456 }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n    npm install optimist\n \nor clone this project on github:\n\n    git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n    \n    expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n","readmeFilename":"readme.markdown","bugs":{"url":"https://github.com/substack/node-optimist/issues"},"_id":"optimist@0.6.0","dist":{"shasum":"69424826f3405f79f142e6fc3d9ae58d4dbb9200","tarball":"http://localhost:1337/optimist/-/optimist-0.6.0.tgz"},"_from":".","_npmVersion":"1.3.0","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{}}},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"repository":{"type":"git","url":"http://github.com/substack/node-optimist.git"},"description":"Light-weight option parsing with an argv hash. No optstrings attached.","author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"time":{"0.0.1":"2010-12-21T14:33:53.354Z","0.0.2":"2010-12-21T14:33:53.354Z","0.0.3":"2010-12-21T14:33:53.354Z","0.0.4":"2010-12-21T14:33:53.354Z","0.0.5":"2010-12-21T14:33:53.354Z","0.0.6":"2010-12-21T14:33:53.354Z","0.0.7":"2010-12-21T14:33:53.354Z","0.1.0":"2010-12-21T14:33:53.354Z","0.1.1":"2010-12-21T14:33:53.354Z","0.1.2":"2010-12-21T14:33:53.354Z","0.1.3":"2010-12-21T14:33:53.354Z","0.1.4":"2011-01-30T07:04:28.963Z","0.1.5":"2011-02-01T08:01:38.160Z","0.1.6":"2011-02-13T23:35:31.427Z","0.1.7":"2011-03-28T05:44:30.304Z","0.1.8":"2011-03-28T21:03:46.234Z","0.1.9":"2011-04-14T03:33:37.811Z","0.2.0":"2011-05-08T03:32:40.650Z","0.2.1":"2011-05-16T07:14:37.232Z","0.2.2":"2011-05-16T09:20:48.490Z","0.2.3":"2011-05-16T19:03:41.732Z","0.2.4":"2011-06-13T04:00:46.046Z","0.2.5":"2011-06-25T22:24:50.361Z","0.2.6":"2011-07-14T21:41:44.257Z","0.2.7":"2011-10-20T02:25:41.335Z","0.2.8":"2011-10-20T03:47:03.659Z","0.3.0":"2011-12-09T08:22:35.261Z","0.3.1":"2011-12-31T08:45:18.568Z","0.3.3":"2012-04-30T06:46:32.091Z","0.3.4":"2012-04-30T06:59:33.018Z","0.3.5":"2012-10-10T11:12:31.230Z","0.3.6":"2013-04-04T04:06:39.393Z","0.3.7":"2013-04-04T04:09:40.361Z","0.4.0":"2013-04-13T19:05:38.560Z","0.5.0":"2013-05-18T22:00:22.299Z","0.5.1":"2013-05-30T07:17:29.830Z","0.5.2":"2013-05-31T03:46:50.271Z","0.6.0":"2013-06-25T08:49:19.511Z"},"users":{"avianflu":true,"mvolkmann":true,"naholyr":true,"vtsvang":true,"linus":true,"pvorb":true,"matthiasg":true,"dshaw":true,"thlorenz":true,"MattiSG":true,"fgribreau":true,"clux":true,"hughsk":true,"pid":true,"gillesruppert":true,"jswartwood":true,"tokuhirom":true,"kennethjor":true,"chevex":true,"tivac":true,"konklone":true,"hij1nx":true,"luk":true,"booyaa":true,"megadrive":true,"nrn":true,"kastor":true,"joshthegeek":true,"charmander":true,"zaphod1984":true,"ljharb":true,"everywhere.js":true,"fiveisprime":true,"florianwendelborn":true,"lexa":true,"nak2k":true,"spekkionu":true,"conradz":true,"leesei":true,"pana":true},"_attachments":{"optimist-0.6.0.tgz":{"content_type":"application/octet-stream","revpos":132,"digest":"md5-I0ZgAx6amh/JRlF/tCQh0A==","length":12142,"stub":true},"optimist-0.5.2.tgz":{"content_type":"application/octet-stream","revpos":129,"digest":"md5-meoV8NdbCXOtbQcUb7qjUA==","length":13233,"stub":true},"optimist-0.5.1.tgz":{"content_type":"application/octet-stream","revpos":127,"digest":"md5-gE3NkJCbcKOoRQ1uMWn2nw==","length":13087,"stub":true},"optimist-0.5.0.tgz":{"content_type":"application/octet-stream","revpos":124,"digest":"md5-uQDzmYafvd/HvTJ3mUyLgw==","length":12984,"stub":true},"optimist-0.4.0.tgz":{"content_type":"application/octet-stream","revpos":121,"digest":"md5-Qka6k4uV5oWTww24Qt5P1Q==","length":12765,"stub":true},"optimist-0.3.7.tgz":{"content_type":"application/octet-stream","revpos":118,"digest":"md5-p4myQcSLDtU5PdiW3z137w==","length":12549,"stub":true},"optimist-0.3.6.tgz":{"content_type":"application/octet-stream","revpos":116,"digest":"md5-DueY6+6h+OTzM7P4iu5l9Q==","length":12598,"stub":true},"optimist-0.3.5.tgz":{"content_type":"application/octet-stream","revpos":101,"digest":"md5-5oFLAuVTvnhrV97GjqYmCA==","length":12463,"stub":true},"optimist-0.3.4.tgz":{"content_type":"application/octet-stream","revpos":88,"digest":"md5-kYOcoyFYV6OViKIqfMCxTA==","length":12538,"stub":true},"optimist-0.3.3.tgz":{"content_type":"application/octet-stream","revpos":83,"digest":"md5-Eq2+Ja5uGwC3gWW6Z0Z1gA==","length":12495,"stub":true},"optimist-0.3.1.tgz":{"content_type":"application/octet-stream","revpos":79,"digest":"md5-eFa9A+zxtlqYkE1zVnuUmA==","length":11800,"stub":true},"optimist-0.3.0.tgz":{"content_type":"application/octet-stream","revpos":75,"digest":"md5-ixo6YIBhoVFxqPN+KKyeuw==","length":11788,"stub":true},"optimist-0.2.8.tgz":{"content_type":"application/octet-stream","revpos":70,"digest":"md5-4LAF42qgFkJWg+BctkReNg==","length":11471,"stub":true},"optimist-0.2.7.tgz":{"content_type":"application/octet-stream","revpos":68,"digest":"md5-9GdCLdqH8jznVkbyjf/H8Q==","length":11337,"stub":true},"optimist-0.2.6.tgz":{"content_type":"application/octet-stream","revpos":64,"digest":"md5-t0BAQ1OFo1Sib+eStMAJxQ==","length":11308,"stub":true},"optimist-0.2.5.tgz":{"content_type":"application/octet-stream","revpos":62,"digest":"md5-QJVI872hENNvWGP+Ry+tLg==","length":11304,"stub":true},"optimist-0.2.4.tgz":{"content_type":"application/octet-stream","revpos":60,"digest":"md5-V4yDhXE3ifUaQzmOsLTgEg==","length":11161,"stub":true},"optimist-0.2.3.tgz":{"content_type":"application/octet-stream","revpos":58,"digest":"md5-NRVX0hVlcRjZdC92K6YIIw==","length":9713,"stub":true},"optimist-0.2.2.tgz":{"content_type":"application/octet-stream","revpos":56,"digest":"md5-fKrLoZrWtXw+5ITaXcXgBw==","length":9595,"stub":true},"optimist-0.2.1.tgz":{"content_type":"application/octet-stream","revpos":54,"digest":"md5-FpyRtmufNwNV17Lj3bE0VA==","length":9446,"stub":true},"optimist-0.2.0.tgz":{"content_type":"application/octet-stream","revpos":52,"digest":"md5-y8zpVGItFFYgNe3iNal2Jw==","length":8982,"stub":true},"optimist-0.0.3.tgz":{"content_type":"application/octet-stream","revpos":48,"digest":"md5-Gu0oCNCbD1Uki/2RcH2dEA==","length":3895,"stub":true},"optimist-0.1.9.tgz":{"content_type":"application/octet-stream","revpos":42,"digest":"md5-pEYFZ2Ayic4OVE+XnBgiFA==","length":7870,"stub":true},"optimist-0.1.8.tgz":{"content_type":"application/octet-stream","revpos":40,"digest":"md5-KSQ/QYT218dKyFforjobWw==","length":7740,"stub":true},"optimist-0.1.7.tgz":{"content_type":"application/octet-stream","revpos":38,"digest":"md5-kuMOFCqPA+3fZe5wAoJkvQ==","length":7650,"stub":true},"optimist-0.1.6.tgz":{"content_type":"application/octet-stream","revpos":36,"digest":"md5-VQGuFlwNqfW9dluVGAPung==","length":7547,"stub":true},"optimist-0.1.5.tgz":{"content_type":"application/octet-stream","revpos":34,"digest":"md5-s/q19VNxIBEt8kJMKIgLgQ==","length":7054,"stub":true},"optimist-0.1.4.tgz":{"content_type":"application/octet-stream","revpos":28,"digest":"md5-qo9j4yQZZ2bVphRNdykI/Q==","length":6431,"stub":true},"optimist-0.1.3.tgz":{"content_type":"application/octet-stream","revpos":26,"digest":"md5-gjKi5e08v+EsS4pgDok9cg==","length":6612,"stub":true},"optimist-0.1.2.tgz":{"content_type":"application/octet-stream","revpos":24,"digest":"md5-scvhz0+WQU6CQ9GOr4upWw==","length":6575,"stub":true},"optimist-0.1.1.tgz":{"content_type":"application/octet-stream","revpos":22,"digest":"md5-eRK/UJ1K8f2KzTRdzoS/Qw==","length":6179,"stub":true},"optimist-0.1.0.tgz":{"content_type":"application/octet-stream","revpos":20,"digest":"md5-pa99w4YezJSc5rwUaM8dvQ==","length":5809,"stub":true},"optimist-0.0.7.tgz":{"content_type":"application/octet-stream","revpos":18,"digest":"md5-pRDoQx+Kl+XL9l/O1NRV2A==","length":5470,"stub":true},"optimist-0.0.6.tgz":{"content_type":"application/octet-stream","revpos":13,"digest":"md5-prbC00jgIbKx0pRJk3H3Yw==","length":5470,"stub":true},"optimist-0.0.5.tgz":{"content_type":"application/octet-stream","revpos":11,"digest":"md5-zMnStZ7TmRET2xBnt2V4Qg==","length":5342,"stub":true},"optimist-0.0.4.tgz":{"content_type":"application/octet-stream","revpos":9,"digest":"md5-y7Y+/2R3qu0qa+5I0mJDRA==","length":5092,"stub":true},"optimist-0.0.2.tgz":{"content_type":"application/octet-stream","revpos":5,"digest":"md5-qhp0ch0rzo1O4GTFO0AOtg==","length":3128,"stub":true},"optimist-0.0.1.tgz":{"content_type":"application/octet-stream","revpos":3,"digest":"md5-cL87g7wfaP2HMV5LK9Gh+A==","length":3130,"stub":true}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/f3/e8/2d6a0b75ad5cebd09177d93f572dbd8b877ee9f1505b2e84e03810fa0412e4904060be7d2a4df4221b1bb92884db886826bf8cd26634667a2d103a999438 b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/f3/e8/2d6a0b75ad5cebd09177d93f572dbd8b877ee9f1505b2e84e03810fa0412e4904060be7d2a4df4221b1bb92884db886826bf8cd26634667a2d103a999438
deleted file mode 100644
index 9b3718b2d05897..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/f3/e8/2d6a0b75ad5cebd09177d93f572dbd8b877ee9f1505b2e84e03810fa0412e4904060be7d2a4df4221b1bb92884db886826bf8cd26634667a2d103a999438
+++ /dev/null
@@ -1 +0,0 @@
-{"objects":[{"id":"foo"},{"id":"bar"},{"id":"baz"}]}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/f5/91/da7ce6e308dcaa672b8625ca0491cafed6726ceda16ffbcdd3f7661e5eb5b1aae2bd99960acb3a2fcc61a14edff79dd7bd610b27c57fea8aff535dbc519f b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/f5/91/da7ce6e308dcaa672b8625ca0491cafed6726ceda16ffbcdd3f7661e5eb5b1aae2bd99960acb3a2fcc61a14edff79dd7bd610b27c57fea8aff535dbc519f
deleted file mode 100644
index cd9bffe29a343b..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/f5/91/da7ce6e308dcaa672b8625ca0491cafed6726ceda16ffbcdd3f7661e5eb5b1aae2bd99960acb3a2fcc61a14edff79dd7bd610b27c57fea8aff535dbc519f
+++ /dev/null
@@ -1 +0,0 @@
-{"_id":"@scope/cond","_rev":"19-d458a706de1740662cd7728d7d7ddf07","name":"@scope/cond","time":{"modified":"2015-02-13T07:33:58.120Z","created":"2014-03-16T20:52:52.236Z","0.0.0":"2014-03-16T20:52:52.236Z","0.0.1":"2014-03-16T21:12:33.393Z","0.0.2":"2014-03-16T21:15:25.430Z"},"versions":{"0.0.0":{},"0.0.1":{},"0.0.2":{}},"dist-tags":{"latest":"0.0.2"},"description":"Restartable error handling system","license":"CC0"}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/f5/bd/a6b78fcf204b1ec0e6069045b44f6669e9aab878bfc891b946e4cecb843f4e87e428b6771ae7b4a2ce8f303e97746763b0642faf89a9b00425297dc78d6a b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/f5/bd/a6b78fcf204b1ec0e6069045b44f6669e9aab878bfc891b946e4cecb843f4e87e428b6771ae7b4a2ce8f303e97746763b0642faf89a9b00425297dc78d6a
deleted file mode 100644
index 075750f8680f0d..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/f5/bd/a6b78fcf204b1ec0e6069045b44f6669e9aab878bfc891b946e4cecb843f4e87e428b6771ae7b4a2ce8f303e97746763b0642faf89a9b00425297dc78d6a
+++ /dev/null
@@ -1 +0,0 @@
-{"latest":"1.0.0","a":"0.0.1","b":"0.5.0"}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/fd/37/65c30143da9bd36758e4f19cce0984aac9f6a6a90a2a1ea79ab8acec84841b7b2af4b20e52051d585ac12bef1930d35234d6556319315d5656391257472d b/deps/npm/test/npm_cache/_cacache/content-v2/sha512/fd/37/65c30143da9bd36758e4f19cce0984aac9f6a6a90a2a1ea79ab8acec84841b7b2af4b20e52051d585ac12bef1930d35234d6556319315d5656391257472d
deleted file mode 100644
index fb33c40d3795ba..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/content-v2/sha512/fd/37/65c30143da9bd36758e4f19cce0984aac9f6a6a90a2a1ea79ab8acec84841b7b2af4b20e52051d585ac12bef1930d35234d6556319315d5656391257472d
+++ /dev/null
@@ -1 +0,0 @@
-{"username":"admin","username2":"foo"}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/06/90/5e61e746e7d543d4bffbfeead5822d45a4e7089a414fbe6f1be007f6cd48 b/deps/npm/test/npm_cache/_cacache/index-v5/06/90/5e61e746e7d543d4bffbfeead5822d45a4e7089a414fbe6f1be007f6cd48
deleted file mode 100644
index 0fb889198463c6..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/06/90/5e61e746e7d543d4bffbfeead5822d45a4e7089a414fbe6f1be007f6cd48
+++ /dev/null
@@ -1,3 +0,0 @@
-
-f79f1f96542accdfe7c66e2adeebe6230b324be4	{"key":"pacote:tag-manifest:http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz:sha1-KncwfhCL+1cQfEwzSrte9Tldxoo=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833049346,"size":1,"metadata":{"id":"test-repo-url-ssh@0.0.1","manifest":{"name":"test-repo-url-ssh","version":"0.0.1","description":"Test repo with non-github ssh repository url","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+ssh://git@gitlab.com/evanlucas/test-repo-url-ssh.git"},"author":{"name":"Evan Lucas","email":"evanlucas@me.com"},"license":"ISC","_id":"test-repo-url-ssh@0.0.1","dist":{"shasum":"2a77307e108bfb57107c4c334abb5ef5395dc68a","tarball":"http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"evanlucas","email":"evanlucas@me.com"},"maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"directories":{},"_integrity":"sha1-KncwfhCL+1cQfEwzSrte9Tldxoo=","_shasum":"2a77307e108bfb57107c4c334abb5ef5395dc68a","_resolved":"http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_shrinkwrap":null,"bin":null,"bugs":{"url":"https://gitlab.com/evanlucas/test-repo-url-ssh/issues"},"homepage":"https://gitlab.com/evanlucas/test-repo-url-ssh#readme"},"type":"finalized-manifest"}}
-033be10c654046737e09e90415c78249d86bb129	{"key":"pacote:tag-manifest:http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz:sha1-KncwfhCL+1cQfEwzSrte9Tldxoo=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833266232,"size":1,"metadata":{"id":"test-repo-url-ssh@0.0.1","manifest":{"name":"test-repo-url-ssh","version":"0.0.1","description":"Test repo with non-github ssh repository url","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+ssh://git@gitlab.com/evanlucas/test-repo-url-ssh.git"},"author":{"name":"Evan Lucas","email":"evanlucas@me.com"},"license":"ISC","_id":"test-repo-url-ssh@0.0.1","dist":{"shasum":"2a77307e108bfb57107c4c334abb5ef5395dc68a","tarball":"http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"evanlucas","email":"evanlucas@me.com"},"maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"directories":{},"_integrity":"sha1-KncwfhCL+1cQfEwzSrte9Tldxoo=","_shasum":"2a77307e108bfb57107c4c334abb5ef5395dc68a","_resolved":"http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_shrinkwrap":null,"bin":null,"bugs":{"url":"https://gitlab.com/evanlucas/test-repo-url-ssh/issues"},"homepage":"https://gitlab.com/evanlucas/test-repo-url-ssh#readme"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/0b/5a/62ce62a24edca98b341182e328ec6d451a459b384cac489f57771ed7e74a b/deps/npm/test/npm_cache/_cacache/index-v5/0b/5a/62ce62a24edca98b341182e328ec6d451a459b384cac489f57771ed7e74a
deleted file mode 100644
index 2225a6556e0f7b..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/0b/5a/62ce62a24edca98b341182e328ec6d451a459b384cac489f57771ed7e74a
+++ /dev/null
@@ -1,2 +0,0 @@
-
-d58db47c718e3d30c4c86d7b5ea9fd867dbdbc68	{"key":"pacote:packed-dir:git://localhost:1234/child.git#aef7bbd091eeef812d6364c2e8250b1e4b39a5ba","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833000938,"size":143}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/0e/d4/8aa7d55331a48f04b5218bb50c1c639e7a3600893f62fde6191d2563e6df b/deps/npm/test/npm_cache/_cacache/index-v5/0e/d4/8aa7d55331a48f04b5218bb50c1c639e7a3600893f62fde6191d2563e6df
deleted file mode 100644
index ae572112072f70..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/0e/d4/8aa7d55331a48f04b5218bb50c1c639e7a3600893f62fde6191d2563e6df
+++ /dev/null
@@ -1,5 +0,0 @@
-
-74dc30109273ec856599bc20e75e4a7163722fa7	{"key":"pacote:packed-dir:git://localhost:1234/child.git#8da4c77141205e56a0a30c4a95a13aa221537ea9","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833118351,"size":143}
-75e68abddffebaf55df7bb36f662ab7faa04b943	{"key":"pacote:packed-dir:git://localhost:1234/child.git#8da4c77141205e56a0a30c4a95a13aa221537ea9","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833118616,"size":143}
-49f7029d1f223b3bd3eecb19428ace3310fd9f93	{"key":"pacote:packed-dir:git://localhost:1234/child.git#8da4c77141205e56a0a30c4a95a13aa221537ea9","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833119692,"size":143}
-992f03d4d29fd112cef6fd6afb6af20ad7acfe0b	{"key":"pacote:packed-dir:git://localhost:1234/child.git#8da4c77141205e56a0a30c4a95a13aa221537ea9","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833119999,"size":143}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/13/b5/0178cbb8a4a3e25b821dbdd82db862373a457bbab3fee9c0e305b4f83b37 b/deps/npm/test/npm_cache/_cacache/index-v5/13/b5/0178cbb8a4a3e25b821dbdd82db862373a457bbab3fee9c0e305b4f83b37
deleted file mode 100644
index b0c1a79bb55ae7..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/13/b5/0178cbb8a4a3e25b821dbdd82db862373a457bbab3fee9c0e305b4f83b37
+++ /dev/null
@@ -1,2 +0,0 @@
-
-95c0e26dc337f0530229453e6eae5e768fc188d3	{"key":"make-fetch-happen:request-cache:http://localhost:1337/clean/-/clean-2.1.6.tgz","integrity":"sha1-QcgLK29UMsYM3bgZMqtWVjtET1I=","time":1547833073369,"size":6288,"metadata":{"url":"http://localhost:1337/clean/-/clean-2.1.6.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:clean@http://localhost:1337/clean/-/clean-2.1.6.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/14/7e/33640d7ecca75f94fce8a3c3b46e111bc08921520f7b2cce032bf8862107 b/deps/npm/test/npm_cache/_cacache/index-v5/14/7e/33640d7ecca75f94fce8a3c3b46e111bc08921520f7b2cce032bf8862107
deleted file mode 100644
index 7546dee83ef37d..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/14/7e/33640d7ecca75f94fce8a3c3b46e111bc08921520f7b2cce032bf8862107
+++ /dev/null
@@ -1,3 +0,0 @@
-
-dda70cf10fd1b63cf6d5d008b56f3a199fea0741	{"key":"make-fetch-happen:request-cache:http://localhost:1337/underscore/-/underscore-1.5.1.tgz","integrity":"sha1-0r3oF9F2/63olKtxRY5oKhS4bck=","time":1547833045352,"size":22746,"metadata":{"url":"http://localhost:1337/underscore/-/underscore-1.5.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["4fa97a596a50fc65"],"referer":["bugs underscore"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:underscore@http://localhost:1337/underscore/-/underscore-1.5.1.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:25 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-920b6c736f7d6cfb695de62fc103db9fb5522b33	{"key":"make-fetch-happen:request-cache:http://localhost:1337/underscore/-/underscore-1.5.1.tgz","integrity":"sha1-0r3oF9F2/63olKtxRY5oKhS4bck=","time":1547833262764,"size":22746,"metadata":{"url":"http://localhost:1337/underscore/-/underscore-1.5.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["20080b2063fb2e2a"],"referer":["bugs underscore"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:underscore@http://localhost:1337/underscore/-/underscore-1.5.1.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:02 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/15/bf/92c5cbc5f2b5bb51971d6f7d04cf0b3871bdde88a368eed466901917d636 b/deps/npm/test/npm_cache/_cacache/index-v5/15/bf/92c5cbc5f2b5bb51971d6f7d04cf0b3871bdde88a368eed466901917d636
deleted file mode 100644
index a1c0e1e2b37a03..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/15/bf/92c5cbc5f2b5bb51971d6f7d04cf0b3871bdde88a368eed466901917d636
+++ /dev/null
@@ -1,3 +0,0 @@
-
-994ba6103d857ed6f02b897b43c714147a25c7d1	{"key":"make-fetch-happen:request-cache:http://localhost:1337/async/-/async-0.2.10.tgz","integrity":"sha1-trvgsGdLnXGXCMo43owjfLUmw9E=","time":1547833073451,"size":15772,"metadata":{"url":"http://localhost:1337/async/-/async-0.2.10.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:async@http://localhost:1337/async/-/async-0.2.10.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-cf44917b107eb08c84c9345d5b79d2bed349755f	{"key":"make-fetch-happen:request-cache:http://localhost:1337/async/-/async-0.2.10.tgz","integrity":"sha1-trvgsGdLnXGXCMo43owjfLUmw9E=","time":1547833093330,"size":15772,"metadata":{"url":"http://localhost:1337/async/-/async-0.2.10.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcd144259ba74815"],"referer":["install ."],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:async@http://localhost:1337/async/-/async-0.2.10.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/18/1f/b15fb9d4fbd32e771ad6afadda07bc566c24b4b589c6bbc5c3e996c7a3db b/deps/npm/test/npm_cache/_cacache/index-v5/18/1f/b15fb9d4fbd32e771ad6afadda07bc566c24b4b589c6bbc5c3e996c7a3db
deleted file mode 100644
index af0dae50439ad2..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/18/1f/b15fb9d4fbd32e771ad6afadda07bc566c24b4b589c6bbc5c3e996c7a3db
+++ /dev/null
@@ -1,3 +0,0 @@
-
-5872147226813473de0d5f3c9bf716a16e27a39e	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:npm_oauth_auth_dummy_user","integrity":null,"time":1547833016269}
-e580567b82439b0fa590acaf46117d7ea73de06c	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:npm_oauth_auth_dummy_user","integrity":null,"time":1547833235770}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/19/db/491ce5fd3b8f5521f62a3d208c8b91325f3f8fe347347649e2e7cb8c10b2 b/deps/npm/test/npm_cache/_cacache/index-v5/19/db/491ce5fd3b8f5521f62a3d208c8b91325f3f8fe347347649e2e7cb8c10b2
deleted file mode 100644
index 9bbc8300f630fe..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/19/db/491ce5fd3b8f5521f62a3d208c8b91325f3f8fe347347649e2e7cb8c10b2
+++ /dev/null
@@ -1,3 +0,0 @@
-
-9d3fbd26021863fa857a7b84ed1768b2b94f0366	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/npm/v1/hooks/hook","integrity":null,"time":1547833360547}
-a85a425bcdeb7c2ccf977d545f13cdd7f3cef331	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/npm/v1/hooks/hook","integrity":null,"time":1547833361187}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/1c/05/419d1e706cbe2c4b49cddcc72c47c6fbcde4ff2cdbb76da7c1defd09d6d6 b/deps/npm/test/npm_cache/_cacache/index-v5/1c/05/419d1e706cbe2c4b49cddcc72c47c6fbcde4ff2cdbb76da7c1defd09d6d6
deleted file mode 100644
index 747abfcf598669..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/1c/05/419d1e706cbe2c4b49cddcc72c47c6fbcde4ff2cdbb76da7c1defd09d6d6
+++ /dev/null
@@ -1,7 +0,0 @@
-
-eab0846401a097a355ae6b40613e32a9d5bdd840	{"key":"make-fetch-happen:request-cache:http://localhost:1337/wordwrap","integrity":"sha512-UjqQJTil69POEpCH8mK/ChZjwv22pjas12YOOG+/L40JeUbNoHUYu9m5/Jxb5yXormBB5iyenoHeVYXpADKLCQ==","time":1547833073399,"size":2532,"metadata":{"url":"http://localhost:1337/wordwrap","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:wordwrap"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-dc32e815d94277f6d7fdc1b0ccc2988d624aec46	{"key":"make-fetch-happen:request-cache:http://localhost:1337/wordwrap","integrity":"sha512-UjqQJTil69POEpCH8mK/ChZjwv22pjas12YOOG+/L40JeUbNoHUYu9m5/Jxb5yXormBB5iyenoHeVYXpADKLCQ==","time":1547833079826,"size":2532,"metadata":{"url":"http://localhost:1337/wordwrap","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["d19ab2d4de48cace"],"referer":["install optimist"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:wordwrap"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:59 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-6e816008ddb2f41c3f1c121ffece8dbee86ef0b7	{"key":"make-fetch-happen:request-cache:http://localhost:1337/wordwrap","integrity":"sha512-UjqQJTil69POEpCH8mK/ChZjwv22pjas12YOOG+/L40JeUbNoHUYu9m5/Jxb5yXormBB5iyenoHeVYXpADKLCQ==","time":1547833093372,"size":2532,"metadata":{"url":"http://localhost:1337/wordwrap","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcd144259ba74815"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:wordwrap"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-d1063fca9f6ffeb5fc3cbb9f09d0324106467714	{"key":"make-fetch-happen:request-cache:http://localhost:1337/wordwrap","integrity":"sha512-UjqQJTil69POEpCH8mK/ChZjwv22pjas12YOOG+/L40JeUbNoHUYu9m5/Jxb5yXormBB5iyenoHeVYXpADKLCQ==","time":1547833294159,"size":2532,"metadata":{"url":"http://localhost:1337/wordwrap","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["0a92a1a2bc33028a"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:wordwrap"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:34 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-a73d8c131fb046e62332bca244be5323d0c1b54e	{"key":"make-fetch-happen:request-cache:http://localhost:1337/wordwrap","integrity":"sha512-UjqQJTil69POEpCH8mK/ChZjwv22pjas12YOOG+/L40JeUbNoHUYu9m5/Jxb5yXormBB5iyenoHeVYXpADKLCQ==","time":1547833301219,"size":2532,"metadata":{"url":"http://localhost:1337/wordwrap","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["f4c81daeaa866c45"],"referer":["install optimist"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:wordwrap"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:41 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-93cb442b9ba3e5e64ff7047b96f76559172cc302	{"key":"make-fetch-happen:request-cache:http://localhost:1337/wordwrap","integrity":"sha512-UjqQJTil69POEpCH8mK/ChZjwv22pjas12YOOG+/L40JeUbNoHUYu9m5/Jxb5yXormBB5iyenoHeVYXpADKLCQ==","time":1547833314454,"size":2532,"metadata":{"url":"http://localhost:1337/wordwrap","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["ce2c0b941f6a62b8"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:wordwrap"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:54 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/1d/95/be47aca6f275eae3f3b2d5c35a85f51736f1403d8fd3790ab0e354238f68 b/deps/npm/test/npm_cache/_cacache/index-v5/1d/95/be47aca6f275eae3f3b2d5c35a85f51736f1403d8fd3790ab0e354238f68
deleted file mode 100644
index de0902ed8d0c16..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/1d/95/be47aca6f275eae3f3b2d5c35a85f51736f1403d8fd3790ab0e354238f68
+++ /dev/null
@@ -1,5 +0,0 @@
-
-09c3f181c0854f46273f41e916aedf906823cc22	{"key":"make-fetch-happen:request-cache:http://localhost:1338/-/user/org.couchdb.user:u","integrity":null,"time":1547833010390}
-90ced6633bb45047bdb8b1aae92c7cf9e5864c96	{"key":"make-fetch-happen:request-cache:http://localhost:1338/-/user/org.couchdb.user:u","integrity":null,"time":1547833011577}
-66dd2102e034752ab1aa68d91b0c66ba1894363c	{"key":"make-fetch-happen:request-cache:http://localhost:1338/-/user/org.couchdb.user:u","integrity":null,"time":1547833230546}
-318a7ae8e8c3e1f64f4396ee1c893f80b9f9110e	{"key":"make-fetch-happen:request-cache:http://localhost:1338/-/user/org.couchdb.user:u","integrity":null,"time":1547833231536}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/1e/c1/c1f0fea37e015610f77e0486d0c90745de8da2029e042c59f6197901f5fb b/deps/npm/test/npm_cache/_cacache/index-v5/1e/c1/c1f0fea37e015610f77e0486d0c90745de8da2029e042c59f6197901f5fb
deleted file mode 100644
index 8659041e1210e3..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/1e/c1/c1f0fea37e015610f77e0486d0c90745de8da2029e042c59f6197901f5fb
+++ /dev/null
@@ -1,13 +0,0 @@
-
-d51b8401bfd296821844053e4d221c3e963f6a5c	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":null,"time":1547833009024}
-b5a55946cc3765a670773a1ac1c61020efdfcc7c	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":null,"time":1547833012658}
-296fdd1a10001bb18edea110f74ef314d16624dc	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":null,"time":1547833013383}
-abb2b62b4b9b34c703d06944e5abfb2760c0189f	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":null,"time":1547833014054}
-2c41be84ad4581319a0b1c5ee2d27c9ef07d2a27	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":null,"time":1547833015086}
-dc098e0a677206db298b56e879f3571da00247d7	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":"sha512-nbMJVEfJtT/oi78ZD7ajJMekKoS/UdPDRfyIze6gDwJhZ61zKbQjadeaZ4EnOKIyS3quQtT+6sSaK4lcV7SBaA==","time":1547833015108,"size":29,"metadata":{"url":"http://localhost:1337/-/user/org.couchdb.user:u?write=true","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["921f4dd388006bcd"],"referer":["adduser"],"authorization":["Basic dTp4"]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:55 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-18e85b94d32a66aa745c72800287b0737e64da56	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":null,"time":1547833229649}
-52b8b6265052d06cb1b11701990b1cc867599a2f	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":null,"time":1547833232612}
-4fe8d89414166b89a370517f3770037b7529ea5d	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":null,"time":1547833233312}
-0c1b13b3cb55c753d9b44b35ef490e514cc8f219	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":null,"time":1547833233899}
-9772baed148b319af55ee66915c9e7a5baf26b02	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":null,"time":1547833234801}
-00845d6e9ad719f069dedc8971ebb25f8b31f30f	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u","integrity":"sha512-nbMJVEfJtT/oi78ZD7ajJMekKoS/UdPDRfyIze6gDwJhZ61zKbQjadeaZ4EnOKIyS3quQtT+6sSaK4lcV7SBaA==","time":1547833234821,"size":29,"metadata":{"url":"http://localhost:1337/-/user/org.couchdb.user:u?write=true","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["f5d540ebb7caafdf"],"referer":["adduser"],"authorization":["Basic dTp4"]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:34 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/1f/4c/7c6c652ccd8d9b32c0b4ef03e8a114c823d405df62054797ae8e510155d2 b/deps/npm/test/npm_cache/_cacache/index-v5/1f/4c/7c6c652ccd8d9b32c0b4ef03e8a114c823d405df62054797ae8e510155d2
deleted file mode 100644
index 1b22356a3e8028..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/1f/4c/7c6c652ccd8d9b32c0b4ef03e8a114c823d405df62054797ae8e510155d2
+++ /dev/null
@@ -1,5 +0,0 @@
-
-bec8fa8e08f78acec14ab9c9db47d7c10afcea82	{"key":"make-fetch-happen:request-cache:http://localhost:1337/checker","integrity":"sha512-1EXtcuZe0Ln+xaakF5TKrdqVG6eaBUFkjiWcgCGz/JZIfSyu34aawUK0sPMZmMQ28XHZipoXQOOsjuu1wRA8Uw==","time":1547833073399,"size":29837,"metadata":{"url":"http://localhost:1337/checker","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:checker"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-dd598597f8e43cf35bcd5cdd30fd47e607caa590	{"key":"make-fetch-happen:request-cache:http://localhost:1337/checker","integrity":"sha512-1EXtcuZe0Ln+xaakF5TKrdqVG6eaBUFkjiWcgCGz/JZIfSyu34aawUK0sPMZmMQ28XHZipoXQOOsjuu1wRA8Uw==","time":1547833093286,"size":29837,"metadata":{"url":"http://localhost:1337/checker","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcd144259ba74815"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:checker"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-d50082ec956f0b3a8fd90ea25c490bcf2e11deb7	{"key":"make-fetch-happen:request-cache:http://localhost:1337/checker","integrity":"sha512-1EXtcuZe0Ln+xaakF5TKrdqVG6eaBUFkjiWcgCGz/JZIfSyu34aawUK0sPMZmMQ28XHZipoXQOOsjuu1wRA8Uw==","time":1547833294158,"size":29837,"metadata":{"url":"http://localhost:1337/checker","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["0a92a1a2bc33028a"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:checker"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:34 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-12823d2665d82f3e3319f998b9e6cc5e849d90fa	{"key":"make-fetch-happen:request-cache:http://localhost:1337/checker","integrity":"sha512-1EXtcuZe0Ln+xaakF5TKrdqVG6eaBUFkjiWcgCGz/JZIfSyu34aawUK0sPMZmMQ28XHZipoXQOOsjuu1wRA8Uw==","time":1547833314395,"size":29837,"metadata":{"url":"http://localhost:1337/checker","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["ce2c0b941f6a62b8"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:checker"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:54 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/21/69/cf895689c136d0f667f13d167389f0bdff113e4a85c2d0a34e8420953fb0 b/deps/npm/test/npm_cache/_cacache/index-v5/21/69/cf895689c136d0f667f13d167389f0bdff113e4a85c2d0a34e8420953fb0
deleted file mode 100644
index ee51d124d2d660..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/21/69/cf895689c136d0f667f13d167389f0bdff113e4a85c2d0a34e8420953fb0
+++ /dev/null
@@ -1,2 +0,0 @@
-
-bcf2512c5444034125be184da64a4bc8f0c469ff	{"key":"pacote:version-manifest:http://localhost:1337/minimist/-/minimist-0.0.5.tgz:sha1-16oye87PUY+RBqxrjwA/o7zqhWY=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833093354,"size":1,"metadata":{"id":"minimist@0.0.5","manifest":{"name":"minimist","version":"0.0.5","dependencies":{},"optionalDependencies":{},"devDependencies":{"tape":"~1.0.4","tap":"~0.4.0"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/minimist/-/minimist-0.0.5.tgz","_integrity":"sha1-16oye87PUY+RBqxrjwA/o7zqhWY=","_shasum":"d7aa327bcecf518f9106ac6b8f003fa3bcea8566","_shrinkwrap":null,"bin":null,"_id":"minimist@0.0.5"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/21/90/97d7c2a8081808dcd3d6fc97011bebe11fc8e308eaff2d4224c21477d1d5 b/deps/npm/test/npm_cache/_cacache/index-v5/21/90/97d7c2a8081808dcd3d6fc97011bebe11fc8e308eaff2d4224c21477d1d5
deleted file mode 100644
index 2e8cbde1cf80c7..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/21/90/97d7c2a8081808dcd3d6fc97011bebe11fc8e308eaff2d4224c21477d1d5
+++ /dev/null
@@ -1,2 +0,0 @@
-
-068551101b5c24f7117897d030b63fc0e7bb83ff	{"key":"pacote:remote-manifest:https://github.com/substack/jsonify/tarball/master:sha512-LjZI+XaDCuq6BySzgqCaamc239THVZY6T0Yvlj+eyyEcIljwB2bcOqaGZPZtOgHLJ4myz2FK6yktvrSv4LIGzA==","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1544485146885,"size":1,"metadata":{"id":"jsonify@0.0.0","manifest":{"name":"jsonify","version":"0.0.0","dependencies":{},"optionalDependencies":{},"devDependencies":{"tap":"0.4.x","garbage":"0.0.x"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"https://github.com/substack/jsonify/tarball/master","_integrity":"sha512-LjZI+XaDCuq6BySzgqCaamc239THVZY6T0Yvlj+eyyEcIljwB2bcOqaGZPZtOgHLJ4myz2FK6yktvrSv4LIGzA==","_shasum":"ee568a2b1efaeb95bec4d9e59e5301fc63339866","_shrinkwrap":null,"bin":null,"_id":"jsonify@0.0.0"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/24/d3/c242b6ced69f0f27995a54c44c2c4ef172a4c3a0e7c91e0b8da7b9c418f8 b/deps/npm/test/npm_cache/_cacache/index-v5/24/d3/c242b6ced69f0f27995a54c44c2c4ef172a4c3a0e7c91e0b8da7b9c418f8
deleted file mode 100644
index f28910aab1e348..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/24/d3/c242b6ced69f0f27995a54c44c2c4ef172a4c3a0e7c91e0b8da7b9c418f8
+++ /dev/null
@@ -1,3 +0,0 @@
-
-fe1b6996003d74fda794d1572ae3e1d9f91e3de0	{"key":"pacote:file-manifest:/Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/test-whoops-1.0.0.tgz:sha512-yaIGW7l0bldKVBrwYbeICUjTDkfbHcNWwxS9k0sBaYlNaW6DO9Y7bFPLlz0UuAZLWwQXfEAuNHdw3fu7x8kGyw==","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833112248,"size":1,"metadata":{"id":"@test/whoops@1.0.0","manifest":{"name":"@test/whoops","version":"1.0.0","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"/Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/test-whoops-1.0.0.tgz","_integrity":"sha512-yaIGW7l0bldKVBrwYbeICUjTDkfbHcNWwxS9k0sBaYlNaW6DO9Y7bFPLlz0UuAZLWwQXfEAuNHdw3fu7x8kGyw==","_shasum":"fdccb81c7f8261e7ad23f8160293393b19c117a9","_shrinkwrap":null,"bin":null,"_id":"@test/whoops@1.0.0"},"type":"finalized-manifest"}}
-54837347024bdf594dbd5f7d2e0d9a9d26dfa5ec	{"key":"pacote:file-manifest:/Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/test-whoops-1.0.0.tgz:sha512-yaIGW7l0bldKVBrwYbeICUjTDkfbHcNWwxS9k0sBaYlNaW6DO9Y7bFPLlz0UuAZLWwQXfEAuNHdw3fu7x8kGyw==","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833333874,"size":1,"metadata":{"id":"@test/whoops@1.0.0","manifest":{"name":"@test/whoops","version":"1.0.0","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"/Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/test-whoops-1.0.0.tgz","_integrity":"sha512-yaIGW7l0bldKVBrwYbeICUjTDkfbHcNWwxS9k0sBaYlNaW6DO9Y7bFPLlz0UuAZLWwQXfEAuNHdw3fu7x8kGyw==","_shasum":"fdccb81c7f8261e7ad23f8160293393b19c117a9","_shrinkwrap":null,"bin":null,"_id":"@test/whoops@1.0.0"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/29/89/d8ec4f471f8b2f7110ade5b17475bf87d30ec77a66a68a3481fbcb2299ca b/deps/npm/test/npm_cache/_cacache/index-v5/29/89/d8ec4f471f8b2f7110ade5b17475bf87d30ec77a66a68a3481fbcb2299ca
deleted file mode 100644
index 5b8d6a8f1dfc08..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/29/89/d8ec4f471f8b2f7110ade5b17475bf87d30ec77a66a68a3481fbcb2299ca
+++ /dev/null
@@ -1,3 +0,0 @@
-
-920d3ce83fe8dea3041db1157d39e26cd0490eef	{"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz","integrity":"sha1-Rcijm2JsH4P4uPUwB8L2DrmO7p0=","time":1547833047698,"size":372,"metadata":{"url":"http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["e139e9c1a8b0ded0"],"referer":["bugs test-repo-url-http"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:test-repo-url-http@http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:27 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-94ed1e8729c493f16b28a16b058bf28e58029638	{"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz","integrity":"sha1-Rcijm2JsH4P4uPUwB8L2DrmO7p0=","time":1547833264863,"size":372,"metadata":{"url":"http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["11f83a1c99f277cb"],"referer":["bugs test-repo-url-http"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:test-repo-url-http@http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:04 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/2d/22/47328dfeb3a9f00c15c20ec3ebdaa0e12382c5c6badfa30fb7b376f6a580 b/deps/npm/test/npm_cache/_cacache/index-v5/2d/22/47328dfeb3a9f00c15c20ec3ebdaa0e12382c5c6badfa30fb7b376f6a580
deleted file mode 100644
index 4882c2fc4e14dc..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/2d/22/47328dfeb3a9f00c15c20ec3ebdaa0e12382c5c6badfa30fb7b376f6a580
+++ /dev/null
@@ -1,2 +0,0 @@
-
-47afbed34e3296c3fb1c2c3c31dd4f6e008a611d	{"key":"pacote:packed-dir:git://github.com/isaacs/node-glob.git#67bda227fd7a559cca5620307c7d30a6732a792f","integrity":"sha512-nVsV0K11/FE/SjJ7XkQYA90iDt60+WYORU/p0mO1Q7o1bHEzCllk+GTRwkqtoWvqAo60AQZ2KxQrMNRIzcCFkw==","time":1544485144332,"size":27629}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/2f/ee/99c47a7b4b5d997bbdb8d0095b14f1940fbdde0e7515bc19ccfcfbccec49 b/deps/npm/test/npm_cache/_cacache/index-v5/2f/ee/99c47a7b4b5d997bbdb8d0095b14f1940fbdde0e7515bc19ccfcfbccec49
deleted file mode 100644
index 5fc55edfd6c6e9..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/2f/ee/99c47a7b4b5d997bbdb8d0095b14f1940fbdde0e7515bc19ccfcfbccec49
+++ /dev/null
@@ -1,3 +0,0 @@
-
-821d0bccf89608b476114b6cf34478e48ed64c01	{"key":"pacote:tag-manifest:http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz:sha1-gvPMuhGRTciLyxhe47GzO1ZCcrw=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833046970,"size":1,"metadata":{"id":"npm-test-peer-deps@0.0.0","manifest":{"author":{"name":"Domenic Denicola"},"name":"npm-test-peer-deps","version":"0.0.0","peerDependencies":{"request":"0.9.x"},"dependencies":{"underscore":"1.3.1"},"_id":"npm-test-peer-deps@0.0.0","dist":{"shasum":"82f3ccba11914dc88bcb185ee3b1b33b564272bc","tarball":"http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz"},"_from":".","_npmVersion":"1.3.25","_npmUser":{"name":"domenic","email":"domenic@domenicdenicola.com"},"maintainers":[{"name":"domenic","email":"domenic@domenicdenicola.com"}],"directories":{},"_integrity":"sha1-gvPMuhGRTciLyxhe47GzO1ZCcrw=","_shasum":"82f3ccba11914dc88bcb185ee3b1b33b564272bc","_resolved":"http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz","optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"deprecated":false,"_shrinkwrap":null,"bin":null},"type":"finalized-manifest"}}
-dc64a2c024b2011cd817a03f225f2ce1fd5bc3c2	{"key":"pacote:tag-manifest:http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz:sha1-gvPMuhGRTciLyxhe47GzO1ZCcrw=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833264159,"size":1,"metadata":{"id":"npm-test-peer-deps@0.0.0","manifest":{"author":{"name":"Domenic Denicola"},"name":"npm-test-peer-deps","version":"0.0.0","peerDependencies":{"request":"0.9.x"},"dependencies":{"underscore":"1.3.1"},"_id":"npm-test-peer-deps@0.0.0","dist":{"shasum":"82f3ccba11914dc88bcb185ee3b1b33b564272bc","tarball":"http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz"},"_from":".","_npmVersion":"1.3.25","_npmUser":{"name":"domenic","email":"domenic@domenicdenicola.com"},"maintainers":[{"name":"domenic","email":"domenic@domenicdenicola.com"}],"directories":{},"_integrity":"sha1-gvPMuhGRTciLyxhe47GzO1ZCcrw=","_shasum":"82f3ccba11914dc88bcb185ee3b1b33b564272bc","_resolved":"http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz","optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"deprecated":false,"_shrinkwrap":null,"bin":null},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/32/2d/90e41f3ad9eeece7d8bafb5672197db1ee77ca9aa734a3e77692efcf7716 b/deps/npm/test/npm_cache/_cacache/index-v5/32/2d/90e41f3ad9eeece7d8bafb5672197db1ee77ca9aa734a3e77692efcf7716
deleted file mode 100644
index b7a52d77b40f60..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/32/2d/90e41f3ad9eeece7d8bafb5672197db1ee77ca9aa734a3e77692efcf7716
+++ /dev/null
@@ -1,2 +0,0 @@
-
-9c30652272faf34fb4c4f517d0252e59c247af3e	{"key":"pacote:range-manifest:http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz:sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833073434,"size":1,"metadata":{"id":"wordwrap@0.0.2","manifest":{"name":"wordwrap","version":"0.0.2","engines":{"node":">=0.4.0"},"dependencies":{},"optionalDependencies":{},"devDependencies":{"expresso":"=0.7.x"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz","_integrity":"sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=","_shasum":"b79669bb42ecb409f83d583cad52ca17eaa1643f","_shrinkwrap":null,"bin":null,"_id":"wordwrap@0.0.2"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/34/f7/495a783848aed5199e0583f72c91d67d20fa9f5f5604755719bc421195dd b/deps/npm/test/npm_cache/_cacache/index-v5/34/f7/495a783848aed5199e0583f72c91d67d20fa9f5f5604755719bc421195dd
deleted file mode 100644
index 1189abdea29efc..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/34/f7/495a783848aed5199e0583f72c91d67d20fa9f5f5604755719bc421195dd
+++ /dev/null
@@ -1,3 +0,0 @@
-
-ff2ce690683c79e0df6daf181cfe0543239d9b0b	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fanother/access","integrity":null,"time":1547832986290}
-e053044487b8a4c73b139c9f3441d9ed6d646135	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fanother/access","integrity":null,"time":1547833210590}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/35/d4/4f8776a16f1d67cec7136a104fc757d4d7719d47a6b5d71c1b3075cc1b69 b/deps/npm/test/npm_cache/_cacache/index-v5/35/d4/4f8776a16f1d67cec7136a104fc757d4d7719d47a6b5d71c1b3075cc1b69
deleted file mode 100644
index a000ea1d271756..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/35/d4/4f8776a16f1d67cec7136a104fc757d4d7719d47a6b5d71c1b3075cc1b69
+++ /dev/null
@@ -1,3 +0,0 @@
-
-f9ae39b39ffa062b7f3c79830bf3f5666ced8f6a	{"key":"make-fetch-happen:request-cache:http://localhost:1337/registry/add-named-update-protocol-port","integrity":"sha512-3GiCmFRKOGfPOZsEzGDDjGUZ2uYJbFuhkXu3ikibqp1rrTlknhbgA2fnzQKsFLp81k86zVbiG5hGMPgjrZyWYw==","time":1547832996619,"size":301,"metadata":{"url":"http://localhost:1337/registry/add-named-update-protocol-port","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["2b49fe996267b15d"],"referer":["cache add add-named-update-protocol-port@0.0.0"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:add-named-update-protocol-port"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:36 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-d7c26b3ee71fee8c9c16ec6525b081a4972ee922	{"key":"make-fetch-happen:request-cache:http://localhost:1337/registry/add-named-update-protocol-port","integrity":"sha512-3GiCmFRKOGfPOZsEzGDDjGUZ2uYJbFuhkXu3ikibqp1rrTlknhbgA2fnzQKsFLp81k86zVbiG5hGMPgjrZyWYw==","time":1547833219206,"size":301,"metadata":{"url":"http://localhost:1337/registry/add-named-update-protocol-port","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["302f70336b58dfc7"],"referer":["cache add add-named-update-protocol-port@0.0.0"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:add-named-update-protocol-port"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:19 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/4b/fa/51a839f22632c42d66d63607a55048be00c0a16bcf8dc96b9aadb8511570 b/deps/npm/test/npm_cache/_cacache/index-v5/4b/fa/51a839f22632c42d66d63607a55048be00c0a16bcf8dc96b9aadb8511570
deleted file mode 100644
index b01ea3b8b46f58..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/4b/fa/51a839f22632c42d66d63607a55048be00c0a16bcf8dc96b9aadb8511570
+++ /dev/null
@@ -1,5 +0,0 @@
-
-6ed5c7aff973ebeb3d108482dfd58982c46c2e1c	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fpkg/access","integrity":null,"time":1547832983691}
-8b3bb3243ae51532a265f0f56f77a2b120c6cac5	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fpkg/access","integrity":null,"time":1547832985654}
-a76a484674e2e4cb0185c9c622f4894dcabc0fc7	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fpkg/access","integrity":null,"time":1547833208503}
-417ea4dabdd7cadf16c11c19d3a321c54eb68f21	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fpkg/access","integrity":null,"time":1547833210073}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/4c/94/5f2a94150990b1ee4ecadd4897498d69b3141e0d72f1ccc1f3bd703a4c75 b/deps/npm/test/npm_cache/_cacache/index-v5/4c/94/5f2a94150990b1ee4ecadd4897498d69b3141e0d72f1ccc1f3bd703a4c75
deleted file mode 100644
index 8d1978120a29ff..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/4c/94/5f2a94150990b1ee4ecadd4897498d69b3141e0d72f1ccc1f3bd703a4c75
+++ /dev/null
@@ -1,3 +0,0 @@
-
-67a9de7796100032dc06f94a7f969dc9dbf6b66f	{"key":"make-fetch-happen:request-cache:http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz","integrity":"sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=","time":1547833073426,"size":13772,"metadata":{"url":"http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:wordwrap@http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-7b4401744a73e7d9d61a3cef29d9548dd30dff92	{"key":"make-fetch-happen:request-cache:http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz","integrity":"sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=","time":1547833093386,"size":13772,"metadata":{"url":"http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcd144259ba74815"],"referer":["install ."],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:wordwrap@http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/4c/9f/92b75e7965b407ec25a6d5770af0d18432dbca32e8a2a9958dd413e3b776 b/deps/npm/test/npm_cache/_cacache/index-v5/4c/9f/92b75e7965b407ec25a6d5770af0d18432dbca32e8a2a9958dd413e3b776
deleted file mode 100644
index 3fb97608f5172b..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/4c/9f/92b75e7965b407ec25a6d5770af0d18432dbca32e8a2a9958dd413e3b776
+++ /dev/null
@@ -1,5 +0,0 @@
-
-65e2bd8d36bc6ef8dce26de8c55e0a213bab8d5a	{"key":"make-fetch-happen:request-cache:http://localhost:1337/clean","integrity":"sha512-eexGJb7BoTqu/c1OfPGPHFV1h52A6L26BjzJYslZxIUmoMHJ43Zsleyeoc8QzZVJaPO/7BNvDTqocAnbBc9GZg==","time":1547833073341,"size":29623,"metadata":{"url":"http://localhost:1337/clean","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:clean"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-6a207e4d350e6a798c36a4e81135a280f6ba65e9	{"key":"make-fetch-happen:request-cache:http://localhost:1337/clean","integrity":"sha512-eexGJb7BoTqu/c1OfPGPHFV1h52A6L26BjzJYslZxIUmoMHJ43Zsleyeoc8QzZVJaPO/7BNvDTqocAnbBc9GZg==","time":1547833093274,"size":29623,"metadata":{"url":"http://localhost:1337/clean","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcd144259ba74815"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:clean"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-1dd2ce72056652f48dc6931ea01fab72e888a342	{"key":"make-fetch-happen:request-cache:http://localhost:1337/clean","integrity":"sha512-eexGJb7BoTqu/c1OfPGPHFV1h52A6L26BjzJYslZxIUmoMHJ43Zsleyeoc8QzZVJaPO/7BNvDTqocAnbBc9GZg==","time":1547833294122,"size":29623,"metadata":{"url":"http://localhost:1337/clean","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["0a92a1a2bc33028a"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:clean"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:34 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-091b191fc26665b124a1ebd27d91f5f5a70e18a9	{"key":"make-fetch-happen:request-cache:http://localhost:1337/clean","integrity":"sha512-eexGJb7BoTqu/c1OfPGPHFV1h52A6L26BjzJYslZxIUmoMHJ43Zsleyeoc8QzZVJaPO/7BNvDTqocAnbBc9GZg==","time":1547833314380,"size":29623,"metadata":{"url":"http://localhost:1337/clean","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["ce2c0b941f6a62b8"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:clean"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:54 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/4d/ed/ee7db809a7dfddfb87fc4055ac06876c63165a517fc12011046fc2cc4a9f b/deps/npm/test/npm_cache/_cacache/index-v5/4d/ed/ee7db809a7dfddfb87fc4055ac06876c63165a517fc12011046fc2cc4a9f
deleted file mode 100644
index 9d55f4bb97315f..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/4d/ed/ee7db809a7dfddfb87fc4055ac06876c63165a517fc12011046fc2cc4a9f
+++ /dev/null
@@ -1,3 +0,0 @@
-
-f907d57bfb7ff4880fc048a1703c6bee25d11de6	{"key":"make-fetch-happen:request-cache:http://localhost:1337/registry/add-named-update-protocol-porti","integrity":"sha512-iEmRT8aS3FRB/sgjGjPK7JhAm21SL6Rr7UpnMSeHYiS5y4vDXlHiUciol6HXHdnX9GtiF+yO8w7E2D9LmkMJjQ==","time":1547832997182,"size":304,"metadata":{"url":"http://localhost:1337/registry/add-named-update-protocol-porti","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["8cb41ddc499c27b6"],"referer":["cache add add-named-update-protocol-porti@0.0.0"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:add-named-update-protocol-porti"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:37 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-27ddad6023e6e5949796edad34e03de77ff584e4	{"key":"make-fetch-happen:request-cache:http://localhost:1337/registry/add-named-update-protocol-porti","integrity":"sha512-iEmRT8aS3FRB/sgjGjPK7JhAm21SL6Rr7UpnMSeHYiS5y4vDXlHiUciol6HXHdnX9GtiF+yO8w7E2D9LmkMJjQ==","time":1547833219768,"size":304,"metadata":{"url":"http://localhost:1337/registry/add-named-update-protocol-porti","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["87b598eff1cdd205"],"referer":["cache add add-named-update-protocol-porti@0.0.0"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:add-named-update-protocol-porti"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:19 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/4e/ce/f2fe3deddf79eb0c8c03828e46b026559f16671fbad7c36d5e0a1bd28a7f b/deps/npm/test/npm_cache/_cacache/index-v5/4e/ce/f2fe3deddf79eb0c8c03828e46b026559f16671fbad7c36d5e0a1bd28a7f
deleted file mode 100644
index 46ff239a9a061c..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/4e/ce/f2fe3deddf79eb0c8c03828e46b026559f16671fbad7c36d5e0a1bd28a7f
+++ /dev/null
@@ -1,13 +0,0 @@
-
-615a02b41b714e7944da18b9c8a4a62463b823f9	{"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":"sha512-WmQCdLXP3E4GNb3SYsWDDef6+cAtPF72amCsWO0g/LMk+F1+97boUhDYIJEiCWGRiT9mLbM9BWmDcwU4i601vw==","time":1547833095212,"size":405,"metadata":{"url":"http://localhost:1337/cond?write=true","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["02b311f2b8b360bb"],"referer":["deprecate cond@0.0.1 make it dead"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:15 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-a876e349124d09b706740a5fc1a495f5bf0c32a2	{"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":null,"time":1547833095221}
-74a45b087e8945624ff7f12c34c21da8e82210a5	{"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":"sha512-WmQCdLXP3E4GNb3SYsWDDef6+cAtPF72amCsWO0g/LMk+F1+97boUhDYIJEiCWGRiT9mLbM9BWmDcwU4i601vw==","time":1547833096353,"size":405,"metadata":{"url":"http://localhost:1337/cond?write=true","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["2dc1d8ce7042f86e"],"referer":["deprecate cond@<0.0.2 make it dead"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:16 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-c0f7a970f72991a541e6e96b934f43f00a29b0e4	{"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":null,"time":1547833096358}
-ff945e0c64b571a8018b102bb1bf6e6a3814391d	{"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":"sha512-WmQCdLXP3E4GNb3SYsWDDef6+cAtPF72amCsWO0g/LMk+F1+97boUhDYIJEiCWGRiT9mLbM9BWmDcwU4i601vw==","time":1547833097537,"size":405,"metadata":{"url":"http://localhost:1337/cond?write=true","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["8fcad2955426aecc"],"referer":["deprecate cond make it dead"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:17 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-a0bfcc705e18dcda52ad996ed6b93ee76b367dc3	{"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":null,"time":1547833097544}
-04c50a42efd378ebf125165e24d0a56eaae2f814	{"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":"sha512-WmQCdLXP3E4GNb3SYsWDDef6+cAtPF72amCsWO0g/LMk+F1+97boUhDYIJEiCWGRiT9mLbM9BWmDcwU4i601vw==","time":1547833316172,"size":405,"metadata":{"url":"http://localhost:1337/cond?write=true","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["0c1b36ee0c47d1ae"],"referer":["deprecate cond@0.0.1 make it dead"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:56 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-32965c869981124c26fcb3933106540045c69ae4	{"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":null,"time":1547833316178}
-591f02138e8b4dbb841c65796f6da7928c1ca821	{"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":"sha512-WmQCdLXP3E4GNb3SYsWDDef6+cAtPF72amCsWO0g/LMk+F1+97boUhDYIJEiCWGRiT9mLbM9BWmDcwU4i601vw==","time":1547833317223,"size":405,"metadata":{"url":"http://localhost:1337/cond?write=true","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["83346960af9afefb"],"referer":["deprecate cond@<0.0.2 make it dead"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:57 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-1c56dcec89793dace00808ad01cfcfae3d49a8de	{"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":null,"time":1547833317228}
-d66e3a04880e9d955736a5130058591b4c7acab4	{"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":"sha512-WmQCdLXP3E4GNb3SYsWDDef6+cAtPF72amCsWO0g/LMk+F1+97boUhDYIJEiCWGRiT9mLbM9BWmDcwU4i601vw==","time":1547833318278,"size":405,"metadata":{"url":"http://localhost:1337/cond?write=true","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["74d74662562f8e40"],"referer":["deprecate cond make it dead"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:58 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-5f2eee7d6a675de32334da3735a9cd5918686f89	{"key":"make-fetch-happen:request-cache:http://localhost:1337/cond","integrity":null,"time":1547833318286}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/52/26/16d800e2651582fd96b18d4ff02085c52be8b7b4b739d0da243122208329 b/deps/npm/test/npm_cache/_cacache/index-v5/52/26/16d800e2651582fd96b18d4ff02085c52be8b7b4b739d0da243122208329
deleted file mode 100644
index 015dce01067b88..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/52/26/16d800e2651582fd96b18d4ff02085c52be8b7b4b739d0da243122208329
+++ /dev/null
@@ -1,3 +0,0 @@
-
-714a9469ff5844eb797bf3506abc20d4d452dec6	{"key":"make-fetch-happen:request-cache:http://localhost:1337/underscore","integrity":"sha512-Fa00hT8RSVJtl/CLUMOqqeyEAxp+v7e7WePyMX1cMGKGUoy5G/U9xZaALTFnYuW6RkF2SyaAlFuj9iDTz3mKBQ==","time":1547833045332,"size":40940,"metadata":{"url":"http://localhost:1337/underscore","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["4fa97a596a50fc65"],"referer":["bugs underscore"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:underscore"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:25 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-35349b250c2ac115dcd5abcd4ebba1151a71f888	{"key":"make-fetch-happen:request-cache:http://localhost:1337/underscore","integrity":"sha512-Fa00hT8RSVJtl/CLUMOqqeyEAxp+v7e7WePyMX1cMGKGUoy5G/U9xZaALTFnYuW6RkF2SyaAlFuj9iDTz3mKBQ==","time":1547833262745,"size":40940,"metadata":{"url":"http://localhost:1337/underscore","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["20080b2063fb2e2a"],"referer":["bugs underscore"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:underscore"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:02 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/53/b9/a3f54151106c138d93ef4e411f13d971ff84939f5a96a1d5826244927399 b/deps/npm/test/npm_cache/_cacache/index-v5/53/b9/a3f54151106c138d93ef4e411f13d971ff84939f5a96a1d5826244927399
deleted file mode 100644
index f3558b0d7a772b..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/53/b9/a3f54151106c138d93ef4e411f13d971ff84939f5a96a1d5826244927399
+++ /dev/null
@@ -1,3 +0,0 @@
-
-8c49400cedb617b1a7a9dd9f93635b4f7546dd84	{"key":"pacote:tag-manifest:http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz:sha1-Rcijm2JsH4P4uPUwB8L2DrmO7p0=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833047706,"size":1,"metadata":{"id":"test-repo-url-http@0.0.1","manifest":{"name":"test-repo-url-http","version":"0.0.1","description":"Test repo with non-github http repository url","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"http://gitlab.com/evanlucas/test-repo-url-http.git"},"author":{"name":"Evan Lucas","email":"evanlucas@me.com"},"license":"ISC","_id":"test-repo-url-http@0.0.1","dist":{"shasum":"45c8a39b626c1f83f8b8f53007c2f60eb98eee9d","tarball":"http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"evanlucas","email":"evanlucas@me.com"},"maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"directories":{},"_integrity":"sha1-Rcijm2JsH4P4uPUwB8L2DrmO7p0=","_shasum":"45c8a39b626c1f83f8b8f53007c2f60eb98eee9d","_resolved":"http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_shrinkwrap":null,"bin":null},"type":"finalized-manifest"}}
-4fb5740938b9bf3eef72c65b21823d14dd9c2367	{"key":"pacote:tag-manifest:http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz:sha1-Rcijm2JsH4P4uPUwB8L2DrmO7p0=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833264868,"size":1,"metadata":{"id":"test-repo-url-http@0.0.1","manifest":{"name":"test-repo-url-http","version":"0.0.1","description":"Test repo with non-github http repository url","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"http://gitlab.com/evanlucas/test-repo-url-http.git"},"author":{"name":"Evan Lucas","email":"evanlucas@me.com"},"license":"ISC","_id":"test-repo-url-http@0.0.1","dist":{"shasum":"45c8a39b626c1f83f8b8f53007c2f60eb98eee9d","tarball":"http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"evanlucas","email":"evanlucas@me.com"},"maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"directories":{},"_integrity":"sha1-Rcijm2JsH4P4uPUwB8L2DrmO7p0=","_shasum":"45c8a39b626c1f83f8b8f53007c2f60eb98eee9d","_resolved":"http://localhost:1337/test-repo-url-http/-/test-repo-url-http-0.0.1.tgz","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_shrinkwrap":null,"bin":null},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/54/c7/bd7b2edde99a50402386dc89dd492bc0e1c9c57727fbf97333ab23450cc6 b/deps/npm/test/npm_cache/_cacache/index-v5/54/c7/bd7b2edde99a50402386dc89dd492bc0e1c9c57727fbf97333ab23450cc6
deleted file mode 100644
index 43146fe8ef9cab..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/54/c7/bd7b2edde99a50402386dc89dd492bc0e1c9c57727fbf97333ab23450cc6
+++ /dev/null
@@ -1,5 +0,0 @@
-
-b40a8c13bae09feb6652226e83377e1ecd65aaac	{"key":"make-fetch-happen:request-cache:http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","integrity":"sha1-KOuEepSeceuQQf1lZ6Nsms/PK+0=","time":1547833041014,"size":55415,"metadata":{"url":"http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["66dfca64d34790d3"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:undefined@http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz"]},"resHeaders":{"date":["Fri, 18 Jan 2019 17:37:20 GMT"],"connection":["keep-alive"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-1e3f986dad6c99953d81d83d7938b389aa8e1793	{"key":"make-fetch-happen:request-cache:http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","integrity":"sha512-NycvWDeO1ZEZc3P0bTvhSL/IJknbshO+FKKxrEf1DX1IBMsQVZCTWnvNAt+uOiQhyTnK+1hrnxtsSS/f4JrKhg==","time":1547833041061,"size":55415,"metadata":{"url":"http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["66dfca64d34790d3"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:undefined@http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz"]},"resHeaders":{"date":["Fri, 18 Jan 2019 17:37:21 GMT"],"connection":["keep-alive"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-dd8f9ec163a26a6724431b7c5b5b26ffa874ebfb	{"key":"make-fetch-happen:request-cache:http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","integrity":"sha1-KOuEepSeceuQQf1lZ6Nsms/PK+0=","time":1547833259078,"size":55415,"metadata":{"url":"http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["971c11884a599dc1"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:undefined@http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz"]},"resHeaders":{"date":["Fri, 18 Jan 2019 17:40:59 GMT"],"connection":["keep-alive"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-3eb068393054e489ac2faa2394c38673a8d26073	{"key":"make-fetch-happen:request-cache:http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","integrity":"sha1-KOuEepSeceuQQf1lZ6Nsms/PK+0=","time":1548718095636,"size":55415,"metadata":{"url":"http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.7.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["1ff276f8555c3331"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:undefined@http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz"]},"resHeaders":{"date":["Mon, 28 Jan 2019 23:28:15 GMT"],"connection":["keep-alive"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/55/94/6aae1bf2eae7384bbf56a2610deec22135ab5102d53f8dc5bb1359585a5c b/deps/npm/test/npm_cache/_cacache/index-v5/55/94/6aae1bf2eae7384bbf56a2610deec22135ab5102d53f8dc5bb1359585a5c
deleted file mode 100644
index eca0f3535f784a..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/55/94/6aae1bf2eae7384bbf56a2610deec22135ab5102d53f8dc5bb1359585a5c
+++ /dev/null
@@ -1,5 +0,0 @@
-
-a2b116d83c5946d7ea2926dc2f964775ad99c33e	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/myorg/package","integrity":"sha512-3Cqk30LNQ1Yj9MLD4nT6CBzJQv9F3PqYzfSpMktqIcNyHDS7l+aAnuKAUfwQ9XdJz/YKqXCh44x6bDVKlANVTg==","time":1547832991512,"size":39,"metadata":{"url":"http://localhost:1337/-/user/myorg/package?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["2942fcbe6b15bc39"],"referer":["access ls-packages myorg"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:31 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-ac58205d3eccdc2ae3c12d4fe9a36dfdbb773a1c	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/myorg/package","integrity":"sha512-3Cqk30LNQ1Yj9MLD4nT6CBzJQv9F3PqYzfSpMktqIcNyHDS7l+aAnuKAUfwQ9XdJz/YKqXCh44x6bDVKlANVTg==","time":1547832992340,"size":39,"metadata":{"url":"http://localhost:1337/-/user/myorg/package?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["932157f8d5b366bf"],"referer":["access ls-packages myorg"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:32 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-9912b7634d0dbaf0ca67a4b70d5f39646fb9dc6d	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/myorg/package","integrity":"sha512-3Cqk30LNQ1Yj9MLD4nT6CBzJQv9F3PqYzfSpMktqIcNyHDS7l+aAnuKAUfwQ9XdJz/YKqXCh44x6bDVKlANVTg==","time":1547833215173,"size":39,"metadata":{"url":"http://localhost:1337/-/user/myorg/package?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["affe1fe251e4fee3"],"referer":["access ls-packages myorg"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:15 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-ccc3fa29db9b00c42232defb85de668c64b7e566	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/myorg/package","integrity":"sha512-3Cqk30LNQ1Yj9MLD4nT6CBzJQv9F3PqYzfSpMktqIcNyHDS7l+aAnuKAUfwQ9XdJz/YKqXCh44x6bDVKlANVTg==","time":1547833215718,"size":39,"metadata":{"url":"http://localhost:1337/-/user/myorg/package?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["d0ef5e47830054c8"],"referer":["access ls-packages myorg"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:15 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/56/a3/d63cf88aff86698120f294331ca4785e2ef41b621d746ef1047eaf34e122 b/deps/npm/test/npm_cache/_cacache/index-v5/56/a3/d63cf88aff86698120f294331ca4785e2ef41b621d746ef1047eaf34e122
deleted file mode 100644
index 323aba91b031b4..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/56/a3/d63cf88aff86698120f294331ca4785e2ef41b621d746ef1047eaf34e122
+++ /dev/null
@@ -1,3 +0,0 @@
-
-b49db14b91a87711dc8285af855701bdd5ed7d31	{"key":"pacote:tarball:file:/Users/zkat/Documents/code/work/npm/test/tap/bundled-dependencies-nonarray/a-bundled-dep-2.0.0.tgz","integrity":"sha512-qoZzDskyzbDwXbLzXh5Fb8mG2xn4P7P4FApYUUEfvPRJZjKEeasoDMgK4tdAzcAfj4gINqAMZnQ1ZazS6DUueg==","time":1547833057455,"size":151}
-a78edf067966dfa38715a7036b298d44373f88c2	{"key":"pacote:tarball:file:/Users/zkat/Documents/code/work/npm/test/tap/bundled-dependencies-nonarray/a-bundled-dep-2.0.0.tgz","integrity":"sha512-qoZzDskyzbDwXbLzXh5Fb8mG2xn4P7P4FApYUUEfvPRJZjKEeasoDMgK4tdAzcAfj4gINqAMZnQ1ZazS6DUueg==","time":1547833274122,"size":151}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/58/cd/24c1bfea16737029dabb2e41b34b7a019b657b6db6c972a30870f3318344 b/deps/npm/test/npm_cache/_cacache/index-v5/58/cd/24c1bfea16737029dabb2e41b34b7a019b657b6db6c972a30870f3318344
deleted file mode 100644
index 9195ed434b7115..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/58/cd/24c1bfea16737029dabb2e41b34b7a019b657b6db6c972a30870f3318344
+++ /dev/null
@@ -1,4 +0,0 @@
-
-45cef68fe8e13d96253fa955bb0343077d163666	{"key":"pacote:packed-dir:git+file:///Users/zkat/Documents/code/work/npm/test/tap/add-remote-git-file/child.git#244a79cc7d51cd727460a91fea694a700a414510","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547832998376,"size":143}
-53a8de5d4a72e643b5d250ff17f81dbc78704e42	{"key":"pacote:packed-dir:git+file:///Users/zkat/Documents/code/work/npm/test/tap/add-remote-git-file/child.git#244a79cc7d51cd727460a91fea694a700a414510","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547832998710,"size":143}
-178404c25dd4361196f30fd3a098349fe20d9e26	{"key":"pacote:packed-dir:git+file:///Users/zkat/Documents/code/work/npm/test/tap/add-remote-git-file/child.git#244a79cc7d51cd727460a91fea694a700a414510","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547832999024,"size":143}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/58/fc/50f89b2f236774e4b33eda6968cde18196e800153a6162d5f73df18895fa b/deps/npm/test/npm_cache/_cacache/index-v5/58/fc/50f89b2f236774e4b33eda6968cde18196e800153a6162d5f73df18895fa
deleted file mode 100644
index 9893a7fe4d8827..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/58/fc/50f89b2f236774e4b33eda6968cde18196e800153a6162d5f73df18895fa
+++ /dev/null
@@ -1,3 +0,0 @@
-
-c46aa948cd5c228a9e7222006ced1fb23b531de9	{"key":"pacote:tag-manifest:http://localhost:1337/underscore/-/underscore-1.5.1.tgz:sha1-0r3oF9F2/63olKtxRY5oKhS4bck=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833045360,"size":1,"metadata":{"id":"underscore@1.5.1","manifest":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/jashkenas/underscore.git"},"main":"underscore.js","version":"1.5.1","devDependencies":{"phantomjs":"1.9.0-1"},"scripts":{"test":"phantomjs test/vendor/runner.js test/index.html?noglobals=true"},"license":"MIT","readmeFilename":"README.md","bugs":{"url":"https://github.com/jashkenas/underscore/issues"},"_id":"underscore@1.5.1","dist":{"shasum":"d2bde817d176ffade894ab71458e682a14b86dc9","tarball":"http://localhost:1337/underscore/-/underscore-1.5.1.tgz"},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{},"_integrity":"sha1-0r3oF9F2/63olKtxRY5oKhS4bck=","_shasum":"d2bde817d176ffade894ab71458e682a14b86dc9","_resolved":"http://localhost:1337/underscore/-/underscore-1.5.1.tgz","dependencies":{},"optionalDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_shrinkwrap":null,"bin":null},"type":"finalized-manifest"}}
-eaffa59aa3c09ecc9f1ca6b49e7b24b33cf7c78b	{"key":"pacote:tag-manifest:http://localhost:1337/underscore/-/underscore-1.5.1.tgz:sha1-0r3oF9F2/63olKtxRY5oKhS4bck=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833262771,"size":1,"metadata":{"id":"underscore@1.5.1","manifest":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://underscorejs.org","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/jashkenas/underscore.git"},"main":"underscore.js","version":"1.5.1","devDependencies":{"phantomjs":"1.9.0-1"},"scripts":{"test":"phantomjs test/vendor/runner.js test/index.html?noglobals=true"},"license":"MIT","readmeFilename":"README.md","bugs":{"url":"https://github.com/jashkenas/underscore/issues"},"_id":"underscore@1.5.1","dist":{"shasum":"d2bde817d176ffade894ab71458e682a14b86dc9","tarball":"http://localhost:1337/underscore/-/underscore-1.5.1.tgz"},"_from":".","_npmVersion":"1.2.24","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{},"_integrity":"sha1-0r3oF9F2/63olKtxRY5oKhS4bck=","_shasum":"d2bde817d176ffade894ab71458e682a14b86dc9","_resolved":"http://localhost:1337/underscore/-/underscore-1.5.1.tgz","dependencies":{},"optionalDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_shrinkwrap":null,"bin":null},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/59/28/f3ffadce8db4fdb922343ee79cb0ab6d1b2f500885d3a7d93bbb4b24e711 b/deps/npm/test/npm_cache/_cacache/index-v5/59/28/f3ffadce8db4fdb922343ee79cb0ab6d1b2f500885d3a7d93bbb4b24e711
deleted file mode 100644
index 54c80e1accabdd..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/59/28/f3ffadce8db4fdb922343ee79cb0ab6d1b2f500885d3a7d93bbb4b24e711
+++ /dev/null
@@ -1,5 +0,0 @@
-
-e24beb7df1231c201db341f46ef1f8abb7752d80	{"key":"make-fetch-happen:request-cache:http://localhost:1338/-/v1/login","integrity":null,"time":1547833010372}
-ec88b3c9343b37dbf0c6c084946610bb7835774d	{"key":"make-fetch-happen:request-cache:http://localhost:1338/-/v1/login","integrity":null,"time":1547833011560}
-318f091e15c70e6f29d4f0b1e663c2807a98524b	{"key":"make-fetch-happen:request-cache:http://localhost:1338/-/v1/login","integrity":null,"time":1547833230533}
-ab714759e858dd475e99aa117986a040af48252a	{"key":"make-fetch-happen:request-cache:http://localhost:1338/-/v1/login","integrity":null,"time":1547833231522}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/59/5d/20f410f92d365ec2b34c98856ae075582e2842b381809c76ffd12d24c450 b/deps/npm/test/npm_cache/_cacache/index-v5/59/5d/20f410f92d365ec2b34c98856ae075582e2842b381809c76ffd12d24c450
deleted file mode 100644
index 24d3ba16166a8f..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/59/5d/20f410f92d365ec2b34c98856ae075582e2842b381809c76ffd12d24c450
+++ /dev/null
@@ -1,3 +0,0 @@
-
-b845de941681d8414d49bfff3b681b1c11b1ecea	{"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-http","integrity":"sha512-NarqKzpZAiZMFGBhF7AOIEJa8UVgwyPpKFndhvTMVSFG/AZUijHqWbpu3VabakGiAXgfajmQAIL+qsgZI6EuVw==","time":1547833047675,"size":1106,"metadata":{"url":"http://localhost:1337/test-repo-url-http","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["e139e9c1a8b0ded0"],"referer":["bugs test-repo-url-http"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:test-repo-url-http"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:27 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-3b718ed3038b2e438372411659ab06e9dc7fd729	{"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-http","integrity":"sha512-NarqKzpZAiZMFGBhF7AOIEJa8UVgwyPpKFndhvTMVSFG/AZUijHqWbpu3VabakGiAXgfajmQAIL+qsgZI6EuVw==","time":1547833264847,"size":1106,"metadata":{"url":"http://localhost:1337/test-repo-url-http","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["11f83a1c99f277cb"],"referer":["bugs test-repo-url-http"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:test-repo-url-http"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:04 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/59/8d/bede4978235a53fade60aedbfe40200d189691fae9d90c694f654422738c b/deps/npm/test/npm_cache/_cacache/index-v5/59/8d/bede4978235a53fade60aedbfe40200d189691fae9d90c694f654422738c
deleted file mode 100644
index 56a821f840d423..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/59/8d/bede4978235a53fade60aedbfe40200d189691fae9d90c694f654422738c
+++ /dev/null
@@ -1,5 +0,0 @@
-
-fd58a22661b0d656d8825f579b89bef2f5b48d09	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fanother/collaborators","integrity":"sha512-MshpkrpGcUCKKSuz8vrkzRBBbc7baiFMFpBUr2vMeStupW9yRTMzV8xZ5PhGYDgGBLX/M4JYrUaXMhjYZHmbXg==","time":1547832993749,"size":51,"metadata":{"url":"http://localhost:1337/-/package/%40scoped%2Fanother/collaborators?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["b43ad0fff025ebdf"],"referer":["access ls-collaborators [REDACTED]"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:33 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-32f2da9079c97ea55aeb6068c7b0c79ed44e80f5	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fanother/collaborators","integrity":"sha512-MshpkrpGcUCKKSuz8vrkzRBBbc7baiFMFpBUr2vMeStupW9yRTMzV8xZ5PhGYDgGBLX/M4JYrUaXMhjYZHmbXg==","time":1547832994448,"size":51,"metadata":{"url":"http://localhost:1337/-/package/%40scoped%2Fanother/collaborators?format=cli&user=zkat","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["e9916eb63e660f41"],"referer":["access ls-collaborators [REDACTED] zkat"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:34 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-1e7f2c2ce972add20f15798aac735bf0138599fa	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fanother/collaborators","integrity":"sha512-MshpkrpGcUCKKSuz8vrkzRBBbc7baiFMFpBUr2vMeStupW9yRTMzV8xZ5PhGYDgGBLX/M4JYrUaXMhjYZHmbXg==","time":1547833216881,"size":51,"metadata":{"url":"http://localhost:1337/-/package/%40scoped%2Fanother/collaborators?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["bb5528fa4898a9ac"],"referer":["access ls-collaborators [REDACTED]"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:16 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-217041f7ea524bd77d46ffa7dd880e59ca6fd581	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fanother/collaborators","integrity":"sha512-MshpkrpGcUCKKSuz8vrkzRBBbc7baiFMFpBUr2vMeStupW9yRTMzV8xZ5PhGYDgGBLX/M4JYrUaXMhjYZHmbXg==","time":1547833217426,"size":51,"metadata":{"url":"http://localhost:1337/-/package/%40scoped%2Fanother/collaborators?format=cli&user=zkat","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["3d89cf1663234567"],"referer":["access ls-collaborators [REDACTED] zkat"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:17 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/5e/04/1f94a3a706d4fc86a4e28c064e5182f98631dbc1156be71fa734471d1b31 b/deps/npm/test/npm_cache/_cacache/index-v5/5e/04/1f94a3a706d4fc86a4e28c064e5182f98631dbc1156be71fa734471d1b31
deleted file mode 100644
index cd0bc97f25c395..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/5e/04/1f94a3a706d4fc86a4e28c064e5182f98631dbc1156be71fa734471d1b31
+++ /dev/null
@@ -1,2 +0,0 @@
-
-65f5f4d2d391adc1d0ef104079246ecffd6736ae	{"key":"pacote:packed-dir:git://localhost:1234/child.git#65974106d8883632964be1da34eec5e85beead3a","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833223116,"size":143}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/5e/25/544dc931f40d3c9ec02d15a7754abc281ff227d3d4436045fc19bded3abb b/deps/npm/test/npm_cache/_cacache/index-v5/5e/25/544dc931f40d3c9ec02d15a7754abc281ff227d3d4436045fc19bded3abb
deleted file mode 100644
index 7699b031bf977d..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/5e/25/544dc931f40d3c9ec02d15a7754abc281ff227d3d4436045fc19bded3abb
+++ /dev/null
@@ -1,9 +0,0 @@
-
-86bc6c29fe0adc0d0b961ebe5427c43883b896eb	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/team/myorg/myteam/package","integrity":null,"time":1547832987480}
-dca685c6d7d2f7e331ebee4e67f7da67dcf622d9	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/team/myorg/myteam/package","integrity":null,"time":1547832988107}
-f471c72e7ec5b592533af18b692da5adf4cabf23	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/team/myorg/myteam/package","integrity":null,"time":1547832989180}
-20e661a1569f9c61f06c1e753d344f7f42f4b89b	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/team/myorg/myteam/package","integrity":"sha512-3Cqk30LNQ1Yj9MLD4nT6CBzJQv9F3PqYzfSpMktqIcNyHDS7l+aAnuKAUfwQ9XdJz/YKqXCh44x6bDVKlANVTg==","time":1547832990308,"size":39,"metadata":{"url":"http://localhost:1337/-/team/myorg/myteam/package?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["cb9055f60b0e88f3"],"referer":["access ls-packages myorg:myteam"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:30 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-1edea5ab5acb2a3ffa7ee166e99c5a397358ed9c	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/team/myorg/myteam/package","integrity":null,"time":1547833211568}
-8e5098cf2f5a2fee34d396006ea2e083396608a6	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/team/myorg/myteam/package","integrity":null,"time":1547833212080}
-4c7dd36cf3e359243712dc145cbb681d713107b8	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/team/myorg/myteam/package","integrity":null,"time":1547833213058}
-4d9236c47a4c5b81a22542da0187135569b5f420	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/team/myorg/myteam/package","integrity":"sha512-3Cqk30LNQ1Yj9MLD4nT6CBzJQv9F3PqYzfSpMktqIcNyHDS7l+aAnuKAUfwQ9XdJz/YKqXCh44x6bDVKlANVTg==","time":1547833214108,"size":39,"metadata":{"url":"http://localhost:1337/-/team/myorg/myteam/package?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["a18b23cf2e1926ff"],"referer":["access ls-packages myorg:myteam"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:14 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/5f/dc/61605b7783855ffa612d4a7dbf1f5e94e01b700897b6a69b1700a9575905 b/deps/npm/test/npm_cache/_cacache/index-v5/5f/dc/61605b7783855ffa612d4a7dbf1f5e94e01b700897b6a69b1700a9575905
deleted file mode 100644
index cd047f668856f9..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/5f/dc/61605b7783855ffa612d4a7dbf1f5e94e01b700897b6a69b1700a9575905
+++ /dev/null
@@ -1,5 +0,0 @@
-
-ee14f65558fa8113fa92a2d1b9e51cc2eaf22abf	{"key":"pacote:packed-dir:git://localhost:1234/child.git#e7cca1aeb6415ec51e938d6d26555a0aaa1a1c06","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833340517,"size":143}
-42f6e39777d09e9e13f131e1484fd57ab61ac607	{"key":"pacote:packed-dir:git://localhost:1234/child.git#e7cca1aeb6415ec51e938d6d26555a0aaa1a1c06","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833340825,"size":143}
-72e90600f6ae2c7fab275f68a155e0ace2ec205b	{"key":"pacote:packed-dir:git://localhost:1234/child.git#e7cca1aeb6415ec51e938d6d26555a0aaa1a1c06","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833342148,"size":143}
-39bafee4dfbccc66040a143fc9579626be6b6314	{"key":"pacote:packed-dir:git://localhost:1234/child.git#e7cca1aeb6415ec51e938d6d26555a0aaa1a1c06","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833342505,"size":143}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/60/3b/12bd2d0346c46847789322cfa6781845b7bac7c9830246b89d040ab35bfa b/deps/npm/test/npm_cache/_cacache/index-v5/60/3b/12bd2d0346c46847789322cfa6781845b7bac7c9830246b89d040ab35bfa
deleted file mode 100644
index 31528ee49d2401..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/60/3b/12bd2d0346c46847789322cfa6781845b7bac7c9830246b89d040ab35bfa
+++ /dev/null
@@ -1,5 +0,0 @@
-
-645ac7bc79519c12afa34011d80e6d62b9018851	{"key":"make-fetch-happen:request-cache:http://localhost:1337/@scope%2fcond","integrity":"sha512-9ZHafObjCNyqZyuGJcoEkcr+1nJs7aFv+83T92YeXrWxquK9mZYKyzovzGGhTt/3nde9YQsnxX/qiv9TXbxRnw==","time":1547833095792,"size":419,"metadata":{"url":"http://localhost:1337/@scope%2fcond?write=true","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["d9d4d05d4ef8b79e"],"referer":["deprecate [REDACTED] make it dead"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:15 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-742ff4bf0e34e21880b460496a4c52a0468831ec	{"key":"make-fetch-happen:request-cache:http://localhost:1337/@scope%2fcond","integrity":null,"time":1547833095797}
-0988bf9b72e018d90be88c7672d0cc06729a67fe	{"key":"make-fetch-happen:request-cache:http://localhost:1337/@scope%2fcond","integrity":"sha512-9ZHafObjCNyqZyuGJcoEkcr+1nJs7aFv+83T92YeXrWxquK9mZYKyzovzGGhTt/3nde9YQsnxX/qiv9TXbxRnw==","time":1547833316699,"size":419,"metadata":{"url":"http://localhost:1337/@scope%2fcond?write=true","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["b7783e04af895db5"],"referer":["deprecate [REDACTED] make it dead"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:56 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-9c4251659fab821f2e477bdcfad27bd11d8a52e8	{"key":"make-fetch-happen:request-cache:http://localhost:1337/@scope%2fcond","integrity":null,"time":1547833316704}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/61/41/453946604fdfa210a19eb38d07610e8ad7007ffc3f0f3b25da20b9af281d b/deps/npm/test/npm_cache/_cacache/index-v5/61/41/453946604fdfa210a19eb38d07610e8ad7007ffc3f0f3b25da20b9af281d
deleted file mode 100644
index d0bfcbb8fec4cf..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/61/41/453946604fdfa210a19eb38d07610e8ad7007ffc3f0f3b25da20b9af281d
+++ /dev/null
@@ -1,2 +0,0 @@
-
-6f6eea4cf6aed6824de9fbea12656c898d2d35df	{"key":"pacote:git-manifest:git://github.com/isaacs/node-glob.git#67bda227fd7a559cca5620307c7d30a6732a792f","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1544485144332,"size":1,"metadata":{"id":"glob@3.1.5","manifest":{"name":"glob","version":"3.1.5","engines":{"node":"*"},"dependencies":{"minimatch":"0.2","graceful-fs":"~1.1.2","inherits":"1"},"optionalDependencies":{},"devDependencies":{"tap":"~0.2.3","mkdirp":"0","rimraf":"1"},"bundleDependencies":["minimatch"],"peerDependencies":{},"deprecated":false,"_resolved":"git://github.com/isaacs/node-glob.git#67bda227fd7a559cca5620307c7d30a6732a792f","_integrity":null,"_shasum":null,"_shrinkwrap":null,"bin":null,"_id":"glob@3.1.5"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/61/5a/c55f3eb9bc8031cdde40de9f1b4244b118714d5d156afca81319c4ed13be b/deps/npm/test/npm_cache/_cacache/index-v5/61/5a/c55f3eb9bc8031cdde40de9f1b4244b118714d5d156afca81319c4ed13be
deleted file mode 100644
index df333419d2869c..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/61/5a/c55f3eb9bc8031cdde40de9f1b4244b118714d5d156afca81319c4ed13be
+++ /dev/null
@@ -1,3 +0,0 @@
-
-7b8c6ab3bd4ba738ff44663616fde10740343f61	{"key":"pacote:tag-manifest:http://localhost:1337/optimist/-/optimist-0.6.0.tgz:sha1-aUJIJvNAX3nxQub8PZrljU27kgA=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833046158,"size":1,"metadata":{"id":"optimist@0.6.0","manifest":{"name":"optimist","version":"0.6.0","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","dependencies":{"wordwrap":"~0.0.2","minimist":"~0.0.1"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.4.0"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"git+ssh://git@github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"readmeFilename":"readme.markdown","bugs":{"url":"https://github.com/substack/node-optimist/issues"},"_id":"optimist@0.6.0","dist":{"shasum":"69424826f3405f79f142e6fc3d9ae58d4dbb9200","tarball":"http://localhost:1337/optimist/-/optimist-0.6.0.tgz"},"_from":".","_npmVersion":"1.3.0","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{},"_integrity":"sha1-aUJIJvNAX3nxQub8PZrljU27kgA=","_shasum":"69424826f3405f79f142e6fc3d9ae58d4dbb9200","_resolved":"http://localhost:1337/optimist/-/optimist-0.6.0.tgz","optionalDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_shrinkwrap":null,"bin":null,"homepage":"https://github.com/substack/node-optimist#readme"},"type":"finalized-manifest"}}
-1540775aafe8f75c1484a63b8ffa068eb2b5a0ec	{"key":"pacote:tag-manifest:http://localhost:1337/optimist/-/optimist-0.6.0.tgz:sha1-aUJIJvNAX3nxQub8PZrljU27kgA=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833263489,"size":1,"metadata":{"id":"optimist@0.6.0","manifest":{"name":"optimist","version":"0.6.0","description":"Light-weight option parsing with an argv hash. No optstrings attached.","main":"./index.js","dependencies":{"wordwrap":"~0.0.2","minimist":"~0.0.1"},"devDependencies":{"hashish":"~0.0.4","tap":"~0.4.0"},"scripts":{"test":"tap ./test/*.js"},"repository":{"type":"git","url":"git+ssh://git@github.com/substack/node-optimist.git"},"keywords":["argument","args","option","parser","parsing","cli","command"],"author":{"name":"James Halliday","email":"mail@substack.net","url":"http://substack.net"},"license":"MIT/X11","engine":{"node":">=0.4"},"readmeFilename":"readme.markdown","bugs":{"url":"https://github.com/substack/node-optimist/issues"},"_id":"optimist@0.6.0","dist":{"shasum":"69424826f3405f79f142e6fc3d9ae58d4dbb9200","tarball":"http://localhost:1337/optimist/-/optimist-0.6.0.tgz"},"_from":".","_npmVersion":"1.3.0","_npmUser":{"name":"substack","email":"mail@substack.net"},"maintainers":[{"name":"substack","email":"mail@substack.net"}],"directories":{},"_integrity":"sha1-aUJIJvNAX3nxQub8PZrljU27kgA=","_shasum":"69424826f3405f79f142e6fc3d9ae58d4dbb9200","_resolved":"http://localhost:1337/optimist/-/optimist-0.6.0.tgz","optionalDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_shrinkwrap":null,"bin":null,"homepage":"https://github.com/substack/node-optimist#readme"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/64/32/09fccfaff76a1d99becccff3c9a0701f54d94e18ea19ff39aeb0a235d833 b/deps/npm/test/npm_cache/_cacache/index-v5/64/32/09fccfaff76a1d99becccff3c9a0701f54d94e18ea19ff39aeb0a235d833
deleted file mode 100644
index 38f2d89214afe0..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/64/32/09fccfaff76a1d99becccff3c9a0701f54d94e18ea19ff39aeb0a235d833
+++ /dev/null
@@ -1,4 +0,0 @@
-
-9be8adb9750c1eeda100a984b4c4ba96a2f823a8	{"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist/-/minimist-0.0.5.tgz","integrity":"sha1-16oye87PUY+RBqxrjwA/o7zqhWY=","time":1547833073422,"size":5977,"metadata":{"url":"http://localhost:1337/minimist/-/minimist-0.0.5.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:minimist@http://localhost:1337/minimist/-/minimist-0.0.5.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-d93a297ad0b70077d34ae37fb280331124cbc8a3	{"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist/-/minimist-0.0.5.tgz","integrity":"sha1-16oye87PUY+RBqxrjwA/o7zqhWY=","time":1547833073424,"size":5977,"metadata":{"url":"http://localhost:1337/minimist/-/minimist-0.0.5.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:minimist@http://localhost:1337/minimist/-/minimist-0.0.5.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-3395cf4593e324ddc0551640bbbb08ee5ffffabe	{"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist/-/minimist-0.0.5.tgz","integrity":"sha1-16oye87PUY+RBqxrjwA/o7zqhWY=","time":1547833093352,"size":5977,"metadata":{"url":"http://localhost:1337/minimist/-/minimist-0.0.5.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcd144259ba74815"],"referer":["install ."],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:minimist@http://localhost:1337/minimist/-/minimist-0.0.5.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/69/d2/6f1c982c4935f9c4a3b7181092bc6213963acf08be267556eed18c1ffcca b/deps/npm/test/npm_cache/_cacache/index-v5/69/d2/6f1c982c4935f9c4a3b7181092bc6213963acf08be267556eed18c1ffcca
deleted file mode 100644
index a4a87f51079216..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/69/d2/6f1c982c4935f9c4a3b7181092bc6213963acf08be267556eed18c1ffcca
+++ /dev/null
@@ -1,4 +0,0 @@
-
-96c65273a5ca1e21de2ce14438e44bb84f5d6cc9	{"key":"pacote:packed-dir:git+file:///Users/zkat/Documents/code/work/npm/test/tap/add-remote-git-file/child.git#0274b9beca938a08345b32346159404f4bfa11a6","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833220799,"size":143}
-d9c9328edc8966662239117fb0fb28274ec71617	{"key":"pacote:packed-dir:git+file:///Users/zkat/Documents/code/work/npm/test/tap/add-remote-git-file/child.git#0274b9beca938a08345b32346159404f4bfa11a6","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833221078,"size":143}
-61d7a4e8be9f49766fa77d1b77e50bb54f489957	{"key":"pacote:packed-dir:git+file:///Users/zkat/Documents/code/work/npm/test/tap/add-remote-git-file/child.git#0274b9beca938a08345b32346159404f4bfa11a6","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833221359,"size":143}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/6b/27/515478d59b0ba28fcdaffd08317ec59071d08bdedd169a5f40c3b1fbb486 b/deps/npm/test/npm_cache/_cacache/index-v5/6b/27/515478d59b0ba28fcdaffd08317ec59071d08bdedd169a5f40c3b1fbb486
deleted file mode 100644
index 6a82a8316c4e01..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/6b/27/515478d59b0ba28fcdaffd08317ec59071d08bdedd169a5f40c3b1fbb486
+++ /dev/null
@@ -1,11 +0,0 @@
-
-c6f1e919801eb202acec5e74928931bfc0143d31	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/v1/login","integrity":null,"time":1547833009006}
-81cb054ce7796a70d8eaded1dde6972fe29b8ec4	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/v1/login","integrity":null,"time":1547833012642}
-0ceb1208bc12f21a1d651c13bf6bcad472d4a6f1	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/v1/login","integrity":null,"time":1547833013368}
-dca7833202363dbffe65c00831707c67a235f345	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/v1/login","integrity":null,"time":1547833014038}
-6ad6d7cab6ef9889434ffecfdf63caeaf80e89bf	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/v1/login","integrity":null,"time":1547833015068}
-94adb474d9ee1b64473f30866b78ed74e5ea17dd	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/v1/login","integrity":null,"time":1547833229637}
-c6f5a95c906827450801dd0a40cbe608b21e4de4	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/v1/login","integrity":null,"time":1547833232597}
-e8203d86ee56303325ad8e3120905eb6466b63ce	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/v1/login","integrity":null,"time":1547833233300}
-ab06232cf2023f61b7c15b9e13d167add7978000	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/v1/login","integrity":null,"time":1547833233886}
-a737b363f7c939ce9cf107f81561bec15e3da935	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/v1/login","integrity":null,"time":1547833234785}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/6f/d4/db68ad12df42b50094e39edbd34fc9713c6c020ca44a5a0b426ff048428d b/deps/npm/test/npm_cache/_cacache/index-v5/6f/d4/db68ad12df42b50094e39edbd34fc9713c6c020ca44a5a0b426ff048428d
deleted file mode 100644
index ca32376a4c7305..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/6f/d4/db68ad12df42b50094e39edbd34fc9713c6c020ca44a5a0b426ff048428d
+++ /dev/null
@@ -1,2 +0,0 @@
-
-962e11576a5c5c11ed45044a865b9b2ec3e5faa0	{"key":"pacote:range-manifest:http://localhost:1337/checker/-/checker-0.5.2.tgz:sha1-wno2vwDzp6PSSo+8eFPwb85OnIY=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833073433,"size":1,"metadata":{"id":"checker@0.5.2","manifest":{"name":"checker","version":"0.5.2","dependencies":{"async":"~0.2.9"},"optionalDependencies":{},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/checker/-/checker-0.5.2.tgz","_integrity":"sha1-wno2vwDzp6PSSo+8eFPwb85OnIY=","_shasum":"c27a36bf00f3a7a3d24a8fbc7853f06fce4e9c86","_shrinkwrap":null,"bin":null,"_id":"checker@0.5.2"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/6f/ed/7f64617d06ba2145efd7117d088c8431300750cd1c934e227cfecffa01f5 b/deps/npm/test/npm_cache/_cacache/index-v5/6f/ed/7f64617d06ba2145efd7117d088c8431300750cd1c934e227cfecffa01f5
deleted file mode 100644
index 382f6a83f88ca1..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/6f/ed/7f64617d06ba2145efd7117d088c8431300750cd1c934e227cfecffa01f5
+++ /dev/null
@@ -1,3 +0,0 @@
-
-ab2809233a72dbf06c79d9a3b11458fc00e6c239	{"key":"make-fetch-happen:request-cache:http://localhost:1337/npm-test-peer-deps","integrity":"sha512-h0Rmy0bQOcyRK9PuKb+ul6x/TdQFHNJAwbJVSHR/nxxv3DoqnmWwWKso8KIrSq7lgHXgx3/QDd9lZTa8VDKQvg==","time":1547833046941,"size":880,"metadata":{"url":"http://localhost:1337/npm-test-peer-deps","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["ece3b5a000cc3f02"],"referer":["bugs npm-test-peer-deps"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:npm-test-peer-deps"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:26 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-7ffd6078274f24f79c05c5de54520938b245d5ba	{"key":"make-fetch-happen:request-cache:http://localhost:1337/npm-test-peer-deps","integrity":"sha512-h0Rmy0bQOcyRK9PuKb+ul6x/TdQFHNJAwbJVSHR/nxxv3DoqnmWwWKso8KIrSq7lgHXgx3/QDd9lZTa8VDKQvg==","time":1547833264138,"size":880,"metadata":{"url":"http://localhost:1337/npm-test-peer-deps","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["836b89e1cc0594ec"],"referer":["bugs npm-test-peer-deps"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:npm-test-peer-deps"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:04 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/77/52/b7394cb3a27a44448e3ac4d6834e73ca79c301c7108c94b0ba23ca97b71c b/deps/npm/test/npm_cache/_cacache/index-v5/77/52/b7394cb3a27a44448e3ac4d6834e73ca79c301c7108c94b0ba23ca97b71c
deleted file mode 100644
index 8f51fb1caabba7..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/77/52/b7394cb3a27a44448e3ac4d6834e73ca79c301c7108c94b0ba23ca97b71c
+++ /dev/null
@@ -1,3 +0,0 @@
-
-63aa615e0b263925ea3c7db1d18d2d7bbc2a6bf1	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/npm/v1/hooks","integrity":"sha512-djlLN4USxovyCbQz4Gtx3yekX357418XSg+DvOd5lii3Tb6ZPBixwS6Jmh7XsVlHCzghgNHwpcQJisYJLNoajw==","time":1547833362916,"size":206,"metadata":{"url":"http://localhost:1337/-/npm/v1/hooks?package=%40npm%2Fhooks","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["ae73fff74c690e4c"],"referer":["hook ls [REDACTED]"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"date":["Fri, 18 Jan 2019 17:42:42 GMT"],"connection":["keep-alive"],"content-length":["206"],"x-fetch-attempts":["1"]}}}
-4fc4f4c828362c6649a93b7a68fc379f2154d781	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/npm/v1/hooks","integrity":"sha512-8+gtagt1rVzr0JF32T9XLb2Lh37p8VBbLoTgOBD6BBLkkEBgvn0qTfQiGxu5KITbiGgmv4zSZjRmei0QOpmUOA==","time":1547833363585,"size":52,"metadata":{"url":"http://localhost:1337/-/npm/v1/hooks?package=%40npm%2Fhooks","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["a9b65a6eaec4099e"],"referer":["hook ls [REDACTED]"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"date":["Fri, 18 Jan 2019 17:42:43 GMT"],"connection":["keep-alive"],"content-length":["52"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/80/e4/0b59aa33a0f8b0f183dcbcdf1d48b9436619bf5b6fd10474ef86e41a8c6f b/deps/npm/test/npm_cache/_cacache/index-v5/80/e4/0b59aa33a0f8b0f183dcbcdf1d48b9436619bf5b6fd10474ef86e41a8c6f
deleted file mode 100644
index 9accb7b18dba92..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/80/e4/0b59aa33a0f8b0f183dcbcdf1d48b9436619bf5b6fd10474ef86e41a8c6f
+++ /dev/null
@@ -1,3 +0,0 @@
-
-e36fdaa97d141c124f0a70c1724c460e93c338f4	{"key":"pacote:tag-manifest:http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz:sha1-4FAI8/+Cs08XselyRUoKtwomnH0=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833048539,"size":1,"metadata":{"id":"test-repo-url-https@0.0.1","manifest":{"name":"test-repo-url-https","version":"0.0.1","description":"Test repo with non-github https repository url","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://gitlab.com/evanlucas/test-repo-url-https.git"},"author":{"name":"Evan Lucas","email":"evanlucas@me.com"},"license":"ISC","_id":"test-repo-url-https@0.0.1","dist":{"shasum":"e05008f3ff82b34f17b1e972454a0ab70a269c7d","tarball":"http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"evanlucas","email":"evanlucas@me.com"},"maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"directories":{},"_integrity":"sha1-4FAI8/+Cs08XselyRUoKtwomnH0=","_shasum":"e05008f3ff82b34f17b1e972454a0ab70a269c7d","_resolved":"http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_shrinkwrap":null,"bin":null,"bugs":{"url":"https://gitlab.com/evanlucas/test-repo-url-https/issues"},"homepage":"https://gitlab.com/evanlucas/test-repo-url-https#readme"},"type":"finalized-manifest"}}
-47b05a03fabaabfdcb4df36e899d517be2ea80eb	{"key":"pacote:tag-manifest:http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz:sha1-4FAI8/+Cs08XselyRUoKtwomnH0=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833265549,"size":1,"metadata":{"id":"test-repo-url-https@0.0.1","manifest":{"name":"test-repo-url-https","version":"0.0.1","description":"Test repo with non-github https repository url","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://gitlab.com/evanlucas/test-repo-url-https.git"},"author":{"name":"Evan Lucas","email":"evanlucas@me.com"},"license":"ISC","_id":"test-repo-url-https@0.0.1","dist":{"shasum":"e05008f3ff82b34f17b1e972454a0ab70a269c7d","tarball":"http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"evanlucas","email":"evanlucas@me.com"},"maintainers":[{"name":"evanlucas","email":"evanlucas@me.com"}],"directories":{},"_integrity":"sha1-4FAI8/+Cs08XselyRUoKtwomnH0=","_shasum":"e05008f3ff82b34f17b1e972454a0ab70a269c7d","_resolved":"http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_shrinkwrap":null,"bin":null,"bugs":{"url":"https://gitlab.com/evanlucas/test-repo-url-https/issues"},"homepage":"https://gitlab.com/evanlucas/test-repo-url-https#readme"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/87/c9/f8b19f8ad4e5648c18927a0d7d21e557756b443699e6929fe420d5aa82a2 b/deps/npm/test/npm_cache/_cacache/index-v5/87/c9/f8b19f8ad4e5648c18927a0d7d21e557756b443699e6929fe420d5aa82a2
deleted file mode 100644
index da95f703b8e0bb..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/87/c9/f8b19f8ad4e5648c18927a0d7d21e557756b443699e6929fe420d5aa82a2
+++ /dev/null
@@ -1,2 +0,0 @@
-
-30ea947fa3199c5e9fa3c7117767f9437a1bf2e4	{"key":"pacote:version-manifest:http://localhost:1337/checker/-/checker-0.5.2.tgz:sha1-wno2vwDzp6PSSo+8eFPwb85OnIY=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833093307,"size":1,"metadata":{"id":"checker@0.5.2","manifest":{"name":"checker","version":"0.5.2","dependencies":{"async":"~0.2.9"},"optionalDependencies":{},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/checker/-/checker-0.5.2.tgz","_integrity":"sha1-wno2vwDzp6PSSo+8eFPwb85OnIY=","_shasum":"c27a36bf00f3a7a3d24a8fbc7853f06fce4e9c86","_shrinkwrap":null,"bin":null,"_id":"checker@0.5.2"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/89/eb/a7a81ab3eeec3076546f7e1fce3892c4e717a9379d4ad43a7111b5dc8cc2 b/deps/npm/test/npm_cache/_cacache/index-v5/89/eb/a7a81ab3eeec3076546f7e1fce3892c4e717a9379d4ad43a7111b5dc8cc2
deleted file mode 100644
index c8a7e1cc641314..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/89/eb/a7a81ab3eeec3076546f7e1fce3892c4e717a9379d4ad43a7111b5dc8cc2
+++ /dev/null
@@ -1,3 +0,0 @@
-
-7adceb1265ebb2ace488f13aa3b15b59f0f01dbf	{"key":"pacote:packed-dir:git://github.com/isaacs/canonical-host.git#7d5ad6eda4ca2948f890b1d8169bc1029bf62364","integrity":"sha512-LOyK+tCWYYrmCtnNHPLS2dVZe2gBDMCHyaeHZe8NrNJcE6DjaUiUkxfwn2ZydO5fpxSr3BsVjlz+pcpUAWY0JQ==","time":1544485146869,"size":5787}
-98a0e48f468ef1264acc4ad8ca234465f95411af	{"key":"pacote:packed-dir:git://github.com/isaacs/canonical-host.git#7d5ad6eda4ca2948f890b1d8169bc1029bf62364","integrity":"sha512-LOyK+tCWYYrmCtnNHPLS2dVZe2gBDMCHyaeHZe8NrNJcE6DjaUiUkxfwn2ZydO5fpxSr3BsVjlz+pcpUAWY0JQ==","time":1544485150074,"size":5787}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/8b/2e/99af1be8f0aa3d6223b000c96edea31a1e6d923f7f3daf1ff06e04899cbb b/deps/npm/test/npm_cache/_cacache/index-v5/8b/2e/99af1be8f0aa3d6223b000c96edea31a1e6d923f7f3daf1ff06e04899cbb
deleted file mode 100644
index 8a607552072a75..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/8b/2e/99af1be8f0aa3d6223b000c96edea31a1e6d923f7f3daf1ff06e04899cbb
+++ /dev/null
@@ -1,3 +0,0 @@
-
-2cde6a16e5c38cc59035af402d47d758775c332b	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/package","integrity":"sha512-3Cqk30LNQ1Yj9MLD4nT6CBzJQv9F3PqYzfSpMktqIcNyHDS7l+aAnuKAUfwQ9XdJz/YKqXCh44x6bDVKlANVTg==","time":1547832990867,"size":39,"metadata":{"url":"http://localhost:1337/-/org/myorg/package?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["3130fc09c51bc7e6"],"referer":["access ls-packages myorg"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:30 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-f20d476c9d4375fd8d85195b984301b7795edbf2	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/package","integrity":"sha512-3Cqk30LNQ1Yj9MLD4nT6CBzJQv9F3PqYzfSpMktqIcNyHDS7l+aAnuKAUfwQ9XdJz/YKqXCh44x6bDVKlANVTg==","time":1547833214654,"size":39,"metadata":{"url":"http://localhost:1337/-/org/myorg/package?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["bb74308033dfab7e"],"referer":["access ls-packages myorg"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:14 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/8c/cf/08c44da29714d229eaceaad1d0ca321b8e5cc8080001efa90bd6e7cf2d10 b/deps/npm/test/npm_cache/_cacache/index-v5/8c/cf/08c44da29714d229eaceaad1d0ca321b8e5cc8080001efa90bd6e7cf2d10
deleted file mode 100644
index 4c93a0cfde066c..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/8c/cf/08c44da29714d229eaceaad1d0ca321b8e5cc8080001efa90bd6e7cf2d10
+++ /dev/null
@@ -1,3 +0,0 @@
-
-afa0c7f53e253a126cb28e830d7a278045895c8c	{"key":"pacote:file-manifest:/Users/zkat/Documents/code/work/npm/test/tap/bundled-dependencies-nonarray/a-bundled-dep-2.0.0.tgz:sha512-qoZzDskyzbDwXbLzXh5Fb8mG2xn4P7P4FApYUUEfvPRJZjKEeasoDMgK4tdAzcAfj4gINqAMZnQ1ZazS6DUueg==","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833057466,"size":1,"metadata":{"id":"a-bundled-dep@2.0.0","manifest":{"name":"a-bundled-dep","version":"2.0.0","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"/Users/zkat/Documents/code/work/npm/test/tap/bundled-dependencies-nonarray/a-bundled-dep-2.0.0.tgz","_integrity":"sha512-qoZzDskyzbDwXbLzXh5Fb8mG2xn4P7P4FApYUUEfvPRJZjKEeasoDMgK4tdAzcAfj4gINqAMZnQ1ZazS6DUueg==","_shasum":"ffb9090887f8d12db11019efe29fd9c145533a64","_shrinkwrap":null,"bin":null,"_id":"a-bundled-dep@2.0.0"},"type":"finalized-manifest"}}
-61b8f5be08fc715ef01e281391909246cfcbf497	{"key":"pacote:file-manifest:/Users/zkat/Documents/code/work/npm/test/tap/bundled-dependencies-nonarray/a-bundled-dep-2.0.0.tgz:sha512-qoZzDskyzbDwXbLzXh5Fb8mG2xn4P7P4FApYUUEfvPRJZjKEeasoDMgK4tdAzcAfj4gINqAMZnQ1ZazS6DUueg==","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833274133,"size":1,"metadata":{"id":"a-bundled-dep@2.0.0","manifest":{"name":"a-bundled-dep","version":"2.0.0","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"/Users/zkat/Documents/code/work/npm/test/tap/bundled-dependencies-nonarray/a-bundled-dep-2.0.0.tgz","_integrity":"sha512-qoZzDskyzbDwXbLzXh5Fb8mG2xn4P7P4FApYUUEfvPRJZjKEeasoDMgK4tdAzcAfj4gINqAMZnQ1ZazS6DUueg==","_shasum":"ffb9090887f8d12db11019efe29fd9c145533a64","_shrinkwrap":null,"bin":null,"_id":"a-bundled-dep@2.0.0"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/8e/53/8602d3aab48229cac8aeeb996d0c850341d8e832b38df45ce8b79f2d7f6a b/deps/npm/test/npm_cache/_cacache/index-v5/8e/53/8602d3aab48229cac8aeeb996d0c850341d8e832b38df45ce8b79f2d7f6a
deleted file mode 100644
index 865ea6d95c2fed..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/8e/53/8602d3aab48229cac8aeeb996d0c850341d8e832b38df45ce8b79f2d7f6a
+++ /dev/null
@@ -1,5 +0,0 @@
-
-86d07b775b7611ca1aea90abb40520f70359c2db	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags/c","integrity":null,"time":1547833100971}
-fb2e849aa1afeb0f116eaf13831ec87542f606ad	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags/c","integrity":null,"time":1547833102196}
-043fc0b8159c4cc7a460fb822f806aae3e42f159	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags/c","integrity":null,"time":1547833321327}
-eb7ad592957eaef3efa2bf494179785031af811e	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags/c","integrity":null,"time":1547833322473}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/93/4e/425c049345ed549becd9e42f3ca7ad942331f73dd73c3e6f5549e910679b b/deps/npm/test/npm_cache/_cacache/index-v5/93/4e/425c049345ed549becd9e42f3ca7ad942331f73dd73c3e6f5549e910679b
deleted file mode 100644
index 6467ee12d69ddd..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/93/4e/425c049345ed549becd9e42f3ca7ad942331f73dd73c3e6f5549e910679b
+++ /dev/null
@@ -1,3 +0,0 @@
-
-aa600b0670543e98b0c7d38abca19b04ab212c41	{"key":"make-fetch-happen:request-cache:https://codeload.github.com/substack/jsonify/legacy.tar.gz/master","integrity":"sha1-7laKKx7665W+xNnlnlMB/GMzmGY=","time":1544485146877,"size":4733,"metadata":{"url":"https://codeload.github.com/substack/jsonify/legacy.tar.gz/master","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.5.0 node/v10.14.1 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["8afff98d6d30632a"],"pacote-pkg-id":["registry:undefined@https://github.com/substack/jsonify/tarball/master"],"pacote-req-type":["tarball"],"referer":["install [REDACTED]"]},"resHeaders":{"transfer-encoding":["chunked"],"access-control-allow-origin":["https://render.githubusercontent.com"],"content-security-policy":["default-src 'none'; style-src 'unsafe-inline'; sandbox"],"strict-transport-security":["max-age=31536000"],"vary":["Authorization,Accept-Encoding"],"x-content-type-options":["nosniff"],"x-frame-options":["deny"],"x-xss-protection":["1; mode=block"],"etag":["\"7064ab53e5f73fa31e2ce7aa47d210c539662f16\""],"content-type":["application/x-gzip"],"content-disposition":["attachment; filename=substack-jsonify-7064ab5.tar.gz"],"x-geo-block-list":[""],"date":["Mon, 10 Dec 2018 23:39:06 GMT"],"x-github-request-id":["EE37:2F59:46593:BB61F:5C0EF91A"],"x-fetch-attempts":["1"]}}}
-daad1e6a48c667add8dbded2d3d19d15821df7a6	{"key":"make-fetch-happen:request-cache:https://codeload.github.com/substack/jsonify/legacy.tar.gz/master","integrity":"sha512-LjZI+XaDCuq6BySzgqCaamc239THVZY6T0Yvlj+eyyEcIljwB2bcOqaGZPZtOgHLJ4myz2FK6yktvrSv4LIGzA==","time":1544485149788,"size":4733,"metadata":{"url":"https://codeload.github.com/substack/jsonify/legacy.tar.gz/master","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.5.0 node/v10.14.1 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["8afff98d6d30632a"],"pacote-pkg-id":["registry:undefined@https://github.com/substack/jsonify/tarball/master"],"pacote-req-type":["tarball"],"referer":["install [REDACTED]"]},"resHeaders":{"transfer-encoding":["chunked"],"access-control-allow-origin":["https://render.githubusercontent.com"],"content-security-policy":["default-src 'none'; style-src 'unsafe-inline'; sandbox"],"strict-transport-security":["max-age=31536000"],"vary":["Authorization,Accept-Encoding"],"x-content-type-options":["nosniff"],"x-frame-options":["deny"],"x-xss-protection":["1; mode=block"],"etag":["\"7064ab53e5f73fa31e2ce7aa47d210c539662f16\""],"content-type":["application/x-gzip"],"content-disposition":["attachment; filename=substack-jsonify-7064ab5.tar.gz"],"x-geo-block-list":[""],"date":["Mon, 10 Dec 2018 23:39:09 GMT"],"x-github-request-id":["EE37:2F59:46596:BB622:5C0EF91A"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/96/66/5a9f2d90e8428d5b30418640b55c06029c2d36a3dc34ee91b90483a9973d b/deps/npm/test/npm_cache/_cacache/index-v5/96/66/5a9f2d90e8428d5b30418640b55c06029c2d36a3dc34ee91b90483a9973d
deleted file mode 100644
index 7ac314ca71ceac..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/96/66/5a9f2d90e8428d5b30418640b55c06029c2d36a3dc34ee91b90483a9973d
+++ /dev/null
@@ -1,3 +0,0 @@
-
-7f23855ebb1664944fac018738f56c84f2dc5458	{"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz","integrity":"sha1-KncwfhCL+1cQfEwzSrte9Tldxoo=","time":1547833049336,"size":364,"metadata":{"url":"http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["0057a2b51b6e5b0a"],"referer":["bugs test-repo-url-ssh"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:test-repo-url-ssh@http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:29 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-ef49c09f1ae22cfdd8adeb94e6204f473d793e39	{"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz","integrity":"sha1-KncwfhCL+1cQfEwzSrte9Tldxoo=","time":1547833266224,"size":364,"metadata":{"url":"http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["1b2e5a88bc1db2e9"],"referer":["bugs test-repo-url-ssh"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:test-repo-url-ssh@http://localhost:1337/test-repo-url-ssh/-/test-repo-url-ssh-0.0.1.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:06 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/9b/00/38d905a4cf8b1a291d0a7bca660b3b4f409bea196a8cea3f3e66c5a8e84b b/deps/npm/test/npm_cache/_cacache/index-v5/9b/00/38d905a4cf8b1a291d0a7bca660b3b4f409bea196a8cea3f3e66c5a8e84b
deleted file mode 100644
index 333f93067bbb32..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/9b/00/38d905a4cf8b1a291d0a7bca660b3b4f409bea196a8cea3f3e66c5a8e84b
+++ /dev/null
@@ -1,5 +0,0 @@
-
-81324d43613be05eddb8115659e2d90ef03496eb	{"key":"pacote:packed-dir:git://localhost:1234/top.git#9e4db86f79e3dcb0cafe10d5f8f1e2de7a8cb9c9","integrity":"sha512-VJX+hA7b9dGN/CfF9NmzWeirgaR0H2Kw3rIJeTWYQ4KK5QESusTiWj/BCJ0mD9m4I25DSjpVWAt6q6Np5vi6hw==","time":1547833003642,"size":283}
-221db6f36f5ddc4a83a4249ec9a7b2ecec9b8590	{"key":"pacote:packed-dir:git://localhost:1234/top.git#9e4db86f79e3dcb0cafe10d5f8f1e2de7a8cb9c9","integrity":"sha512-VJX+hA7b9dGN/CfF9NmzWeirgaR0H2Kw3rIJeTWYQ4KK5QESusTiWj/BCJ0mD9m4I25DSjpVWAt6q6Np5vi6hw==","time":1547833004271,"size":283}
-35ea9b8ae3e33e5e3606f790fa48c1055e0b18b3	{"key":"pacote:packed-dir:git://localhost:1234/top.git#9e4db86f79e3dcb0cafe10d5f8f1e2de7a8cb9c9","integrity":"sha512-VJX+hA7b9dGN/CfF9NmzWeirgaR0H2Kw3rIJeTWYQ4KK5QESusTiWj/BCJ0mD9m4I25DSjpVWAt6q6Np5vi6hw==","time":1547833004908,"size":283}
-524e1e8e8d9a690cb02d5fbd029cf1b15b61cf9b	{"key":"pacote:packed-dir:git://localhost:1234/top.git#9e4db86f79e3dcb0cafe10d5f8f1e2de7a8cb9c9","integrity":"sha512-VJX+hA7b9dGN/CfF9NmzWeirgaR0H2Kw3rIJeTWYQ4KK5QESusTiWj/BCJ0mD9m4I25DSjpVWAt6q6Np5vi6hw==","time":1547833005495,"size":283}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/9b/03/54636aae9cb55a079d1cc7f9caf4f3e654df7abd1fc8279dde9f935c76aa b/deps/npm/test/npm_cache/_cacache/index-v5/9b/03/54636aae9cb55a079d1cc7f9caf4f3e654df7abd1fc8279dde9f935c76aa
deleted file mode 100644
index bd9c30d6a2a566..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/9b/03/54636aae9cb55a079d1cc7f9caf4f3e654df7abd1fc8279dde9f935c76aa
+++ /dev/null
@@ -1,5 +0,0 @@
-
-7b38c2b7bb46182c0bef0cad488df298d4cc4df1	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/whoami","integrity":"sha512-6DaJqcIayTwqDvx+U2klAE5Si9O/66cIz1IW25mcXvzg1xOKfm7O2xJeQ7oq60ddWViiyjH0jGoUQvFk6Qo6Ig==","time":1547833016915,"size":25,"metadata":{"url":"http://localhost:1337/-/whoami","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["1b1860266820cd60"],"referer":["adduser"],"authorization":["Bearer foo"]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:56 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-827995ba80d0a09d195f4c6ba887cfbbab632a08	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/whoami","integrity":"sha512-6DaJqcIayTwqDvx+U2klAE5Si9O/66cIz1IW25mcXvzg1xOKfm7O2xJeQ7oq60ddWViiyjH0jGoUQvFk6Qo6Ig==","time":1547833018622,"size":25,"metadata":{"url":"http://localhost:1337/-/whoami","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["17b1054485dce89c"],"referer":["adduser"],"authorization":["Bearer foo"]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:58 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-30d09ec90a7fc5c17cd4bf637cf0354f29bede2f	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/whoami","integrity":"sha512-6DaJqcIayTwqDvx+U2klAE5Si9O/66cIz1IW25mcXvzg1xOKfm7O2xJeQ7oq60ddWViiyjH0jGoUQvFk6Qo6Ig==","time":1547833236392,"size":25,"metadata":{"url":"http://localhost:1337/-/whoami","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["883d0ceea29e732e"],"referer":["adduser"],"authorization":["Bearer foo"]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:36 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-f4e40cd490abf1b55d3c5b747c37cf434fff61d1	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/whoami","integrity":"sha512-6DaJqcIayTwqDvx+U2klAE5Si9O/66cIz1IW25mcXvzg1xOKfm7O2xJeQ7oq60ddWViiyjH0jGoUQvFk6Qo6Ig==","time":1547833237880,"size":25,"metadata":{"url":"http://localhost:1337/-/whoami","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["9c397efd8f029f31"],"referer":["adduser"],"authorization":["Bearer foo"]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:37 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/9c/df/2bf910aa7cba3cae28d9c34ba6cd492e2a0053b4aeea258df6763e8cd8a2 b/deps/npm/test/npm_cache/_cacache/index-v5/9c/df/2bf910aa7cba3cae28d9c34ba6cd492e2a0053b4aeea258df6763e8cd8a2
deleted file mode 100644
index 9c9e57d2dabf67..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/9c/df/2bf910aa7cba3cae28d9c34ba6cd492e2a0053b4aeea258df6763e8cd8a2
+++ /dev/null
@@ -1,9 +0,0 @@
-
-c8c512129461bf5bf6c12d3bf65d3db0dee072e5	{"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist","integrity":"sha512-7fwtedDVW/TqArdOzDZX6oM7xtBXitsuH1rg1zOwmkhPjnKHkBV4x72qXW/TCsTepIdzphDKbuHgnjH2FH6SHQ==","time":1547833046108,"size":123815,"metadata":{"url":"http://localhost:1337/optimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["829b1dc23689fa30"],"referer":["bugs optimist"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:optimist"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:26 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-8143a4aff9dc3a1fe3e919397314168e02887d05	{"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist","integrity":"sha512-7fwtedDVW/TqArdOzDZX6oM7xtBXitsuH1rg1zOwmkhPjnKHkBV4x72qXW/TCsTepIdzphDKbuHgnjH2FH6SHQ==","time":1547833073341,"size":123815,"metadata":{"url":"http://localhost:1337/optimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:optimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-22750763814933396f3b0af93f96699c2a461566	{"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist","integrity":"sha512-7fwtedDVW/TqArdOzDZX6oM7xtBXitsuH1rg1zOwmkhPjnKHkBV4x72qXW/TCsTepIdzphDKbuHgnjH2FH6SHQ==","time":1547833079800,"size":123815,"metadata":{"url":"http://localhost:1337/optimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["d19ab2d4de48cace"],"referer":["install optimist"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:optimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:59 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-a43ce8446c2bc2394574224e4eab85ca71398f2d	{"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist","integrity":"sha512-7fwtedDVW/TqArdOzDZX6oM7xtBXitsuH1rg1zOwmkhPjnKHkBV4x72qXW/TCsTepIdzphDKbuHgnjH2FH6SHQ==","time":1547833093362,"size":123815,"metadata":{"url":"http://localhost:1337/optimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcd144259ba74815"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:optimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-c76762edb49942e9fd6ac9b94812e7e04c9209c2	{"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist","integrity":"sha512-7fwtedDVW/TqArdOzDZX6oM7xtBXitsuH1rg1zOwmkhPjnKHkBV4x72qXW/TCsTepIdzphDKbuHgnjH2FH6SHQ==","time":1547833263459,"size":123815,"metadata":{"url":"http://localhost:1337/optimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["5735fc1a8674c7f7"],"referer":["bugs optimist"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:optimist"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:03 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-79c9c9829c39aabe6bfb55a6b4f8f314bfca8d65	{"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist","integrity":"sha512-7fwtedDVW/TqArdOzDZX6oM7xtBXitsuH1rg1zOwmkhPjnKHkBV4x72qXW/TCsTepIdzphDKbuHgnjH2FH6SHQ==","time":1547833294122,"size":123815,"metadata":{"url":"http://localhost:1337/optimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["0a92a1a2bc33028a"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:optimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:34 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-832428c8a63fee4a20594fa4ed73f56f1bd686b0	{"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist","integrity":"sha512-7fwtedDVW/TqArdOzDZX6oM7xtBXitsuH1rg1zOwmkhPjnKHkBV4x72qXW/TCsTepIdzphDKbuHgnjH2FH6SHQ==","time":1547833301193,"size":123815,"metadata":{"url":"http://localhost:1337/optimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["f4c81daeaa866c45"],"referer":["install optimist"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:optimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:41 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-149425ba494b07fca3f55079eef5dada2525c00a	{"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist","integrity":"sha512-7fwtedDVW/TqArdOzDZX6oM7xtBXitsuH1rg1zOwmkhPjnKHkBV4x72qXW/TCsTepIdzphDKbuHgnjH2FH6SHQ==","time":1547833314443,"size":123815,"metadata":{"url":"http://localhost:1337/optimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["ce2c0b941f6a62b8"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:optimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:54 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/9f/3f/3bc8b783702f297c0e0f134ecf35495d997ad1c67532fe520ac6709d28c5 b/deps/npm/test/npm_cache/_cacache/index-v5/9f/3f/3bc8b783702f297c0e0f134ecf35495d997ad1c67532fe520ac6709d28c5
deleted file mode 100644
index 1a67dcf697592a..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/9f/3f/3bc8b783702f297c0e0f134ecf35495d997ad1c67532fe520ac6709d28c5
+++ /dev/null
@@ -1,4 +0,0 @@
-
-8b72fc4a000ffb83714893ab799fbc8b84e035af	{"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist/-/optimist-0.6.0.tgz","integrity":"sha1-aUJIJvNAX3nxQub8PZrljU27kgA=","time":1547833046141,"size":12142,"metadata":{"url":"http://localhost:1337/optimist/-/optimist-0.6.0.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["829b1dc23689fa30"],"referer":["bugs optimist"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:optimist@http://localhost:1337/optimist/-/optimist-0.6.0.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:26 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-3d5e00fcad8a195890beaa5ebd8191db35438d03	{"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist/-/optimist-0.6.0.tgz","integrity":"sha1-aUJIJvNAX3nxQub8PZrljU27kgA=","time":1547833073368,"size":12142,"metadata":{"url":"http://localhost:1337/optimist/-/optimist-0.6.0.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:optimist@http://localhost:1337/optimist/-/optimist-0.6.0.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-cbcbecbdc61e341bbef8203ba99b22f50edcbf61	{"key":"make-fetch-happen:request-cache:http://localhost:1337/optimist/-/optimist-0.6.0.tgz","integrity":"sha1-aUJIJvNAX3nxQub8PZrljU27kgA=","time":1547833263481,"size":12142,"metadata":{"url":"http://localhost:1337/optimist/-/optimist-0.6.0.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["5735fc1a8674c7f7"],"referer":["bugs optimist"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:optimist@http://localhost:1337/optimist/-/optimist-0.6.0.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:03 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/9f/5f/7b93b3b7f757730e79213f4cb7e73c072a15544da364e543df7bef989d9c b/deps/npm/test/npm_cache/_cacache/index-v5/9f/5f/7b93b3b7f757730e79213f4cb7e73c072a15544da364e543df7bef989d9c
deleted file mode 100644
index 74398f08fb8165..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/9f/5f/7b93b3b7f757730e79213f4cb7e73c072a15544da364e543df7bef989d9c
+++ /dev/null
@@ -1,3 +0,0 @@
-
-aa15a41bad294a56a31a8bcce8a25a879b1c5dbb	{"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-https","integrity":"sha512-OvWsbjQzIlnUVneciC2dDbRyvv6E/YBDrDKL9R4b3NR0N7F+/02S30rY6ZmywuFAd5zegfaUddjUWRgIEDuWSw==","time":1547833048509,"size":1871,"metadata":{"url":"http://localhost:1337/test-repo-url-https","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcfdb97957af4e03"],"referer":["bugs test-repo-url-https"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:test-repo-url-https"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:28 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-d3dc2f53b27389600b8b0dcb4ada9a6512cfc6e2	{"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-https","integrity":"sha512-OvWsbjQzIlnUVneciC2dDbRyvv6E/YBDrDKL9R4b3NR0N7F+/02S30rY6ZmywuFAd5zegfaUddjUWRgIEDuWSw==","time":1547833265524,"size":1871,"metadata":{"url":"http://localhost:1337/test-repo-url-https","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["e76ebb11020bbcdd"],"referer":["bugs test-repo-url-https"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:test-repo-url-https"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:05 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/a2/4a/41538002c219a054a1ecf2e6be6e66dac4d4feb5407eb6ecb26af41a4de8 b/deps/npm/test/npm_cache/_cacache/index-v5/a2/4a/41538002c219a054a1ecf2e6be6e66dac4d4feb5407eb6ecb26af41a4de8
deleted file mode 100644
index 054b7f8024c556..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/a2/4a/41538002c219a054a1ecf2e6be6e66dac4d4feb5407eb6ecb26af41a4de8
+++ /dev/null
@@ -1,12 +0,0 @@
-
-6c5c990934e13926b51e6ab354f42e8d0779bf8f	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":null,"time":1547839103758}
-c207b5deb1770f1dc3c1df34e081ffd9478e8188	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":null,"time":1547839104211}
-0719d4a0a0cee9d90dd426594cac152fec62630d	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":null,"time":1547839104637}
-f3843f28e872291acf6c2d1e28d7df6e87faa173	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":null,"time":1547839105071}
-3cf344d77f10ce0dc25fe8de8bae90765df36f1a	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":null,"time":1547839105510}
-9ed5744249929413155c6b342f8403ffc4d1c582	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":null,"time":1547839105949}
-e209c7b8c5189b9a3004b4c190c1f522868a81d7	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":null,"time":1547839106387}
-1896b456ddf22502794469d37fc32f30684439f0	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":null,"time":1547839106824}
-91a0f1ced7d89fbc18eaf0b9aa8ce8ada9e090e8	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":null,"time":1547839107252}
-86e26814b6776ed9e565fb70bbff4db467688c5f	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":"sha512-b8c91FCMLZ8X7rHP0ognaUihaJ699qjT9PdRbUxovmOQY+flQ373/3JUeqvoa0mmsb9cczvezjh32CvIvBqafQ==","time":1547839107274,"size":21,"metadata":{"url":"http://localhost:1337/-/org/myorg/user","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["782279b862f30d85"],"referer":["org rm myorg myuser"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"date":["Fri, 18 Jan 2019 19:18:27 GMT"],"connection":["keep-alive"],"content-length":["21"],"x-fetch-attempts":["1"]}}}
-13b115c72fcda3731ffbd4076ac771992fdf690a	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/myorg/user","integrity":"sha512-/TdlwwFD2pvTZ1jk8ZzOCYSqyfamqQoqHqeauKzshIQbeyr0sg5SBR1YWsEr7xkw01I01lVjGTFdVlY5EldHLQ==","time":1547839107720,"size":38,"metadata":{"url":"http://localhost:1337/-/org/myorg/user","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["bb01753ed8b7a54a"],"referer":["org ls myorg"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"date":["Fri, 18 Jan 2019 19:18:27 GMT"],"connection":["keep-alive"],"content-length":["38"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/a2/ff/2fbedd19724625ef6060f72129b8494625e3e6fd08f7fd5886f65bf82e0d b/deps/npm/test/npm_cache/_cacache/index-v5/a2/ff/2fbedd19724625ef6060f72129b8494625e3e6fd08f7fd5886f65bf82e0d
deleted file mode 100644
index 0f751b92301907..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/a2/ff/2fbedd19724625ef6060f72129b8494625e3e6fd08f7fd5886f65bf82e0d
+++ /dev/null
@@ -1,2 +0,0 @@
-
-8754c947aa648ac5a1e7d7bd750cf206f19ddf2a	{"key":"pacote:version-manifest:http://localhost:1337/clean/-/clean-2.1.6.tgz:sha1-QcgLK29UMsYM3bgZMqtWVjtET1I=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833073374,"size":1,"metadata":{"id":"clean@2.1.6","manifest":{"name":"clean","version":"2.1.6","dependencies":{"checker":"~0.5.1","minimist":"~0.0.5"},"optionalDependencies":{},"devDependencies":{"mocha":"~1.13.0","chai":"~1.8.0"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/clean/-/clean-2.1.6.tgz","_integrity":"sha1-QcgLK29UMsYM3bgZMqtWVjtET1I=","_shasum":"41c80b2b6f5432c60cddb81932ab56563b444f52","_shrinkwrap":null,"bin":null,"_id":"clean@2.1.6"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/a6/c9/dbe7acc04b7cea7b99c68f3821cf6d7f49caba301e383b31143bd9670f28 b/deps/npm/test/npm_cache/_cacache/index-v5/a6/c9/dbe7acc04b7cea7b99c68f3821cf6d7f49caba301e383b31143bd9670f28
deleted file mode 100644
index 7aee08fdb80832..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/a6/c9/dbe7acc04b7cea7b99c68f3821cf6d7f49caba301e383b31143bd9670f28
+++ /dev/null
@@ -1,5 +0,0 @@
-
-3002bf2472d538dd29ea7b342d57d5df22550e1b	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/npm/v1/hooks/hook/dead%40beef","integrity":null,"time":1547833361751}
-8c135f20bdfb585426caf7fd49188a735d252fe0	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/npm/v1/hooks/hook/dead%40beef","integrity":null,"time":1547833362326}
-95ae855df601d00c050d2a0aafffcfbbe7e512bf	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/npm/v1/hooks/hook/dead%40beef","integrity":null,"time":1547833364134}
-7ce3a872de3f712c0df4a401f404423e8728ab90	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/npm/v1/hooks/hook/dead%40beef","integrity":null,"time":1547833364692}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/a8/15/13afeacd20fdb82b59ceeaa57b4d135c5def8209619ca09751fdae5bd803 b/deps/npm/test/npm_cache/_cacache/index-v5/a8/15/13afeacd20fdb82b59ceeaa57b4d135c5def8209619ca09751fdae5bd803
deleted file mode 100644
index 8b2d365594ab28..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/a8/15/13afeacd20fdb82b59ceeaa57b4d135c5def8209619ca09751fdae5bd803
+++ /dev/null
@@ -1,3 +0,0 @@
-
-30492be5d770c162fa1e38568cad83070b45d4cd	{"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-ssh","integrity":"sha512-zesPUGW+A+iVR6M+Bk2RGWmVPEXrBd9mTKTVN7lw3J92gSNGOm91zmuDbVDuc8GKx6Jedj8rmGlhLNv0JxldSw==","time":1547833049314,"size":1094,"metadata":{"url":"http://localhost:1337/test-repo-url-ssh","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["0057a2b51b6e5b0a"],"referer":["bugs test-repo-url-ssh"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:test-repo-url-ssh"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:29 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-aab489bc027e6f7280ac70934e3147555ed2ff15	{"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-ssh","integrity":"sha512-zesPUGW+A+iVR6M+Bk2RGWmVPEXrBd9mTKTVN7lw3J92gSNGOm91zmuDbVDuc8GKx6Jedj8rmGlhLNv0JxldSw==","time":1547833266207,"size":1094,"metadata":{"url":"http://localhost:1337/test-repo-url-ssh","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["1b2e5a88bc1db2e9"],"referer":["bugs test-repo-url-ssh"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:test-repo-url-ssh"],"accept":["application/json"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:06 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/a8/88/3a6a0c55cde913db472fd92adee9edf0f507c4ea02b2703d926b06947341 b/deps/npm/test/npm_cache/_cacache/index-v5/a8/88/3a6a0c55cde913db472fd92adee9edf0f507c4ea02b2703d926b06947341
deleted file mode 100644
index 9a7f8a3b571c80..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/a8/88/3a6a0c55cde913db472fd92adee9edf0f507c4ea02b2703d926b06947341
+++ /dev/null
@@ -1,3 +0,0 @@
-
-dae0f572918acce3f6c847cef076673e992e3752	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fpkg/collaborators","integrity":"sha512-MshpkrpGcUCKKSuz8vrkzRBBbc7baiFMFpBUr2vMeStupW9yRTMzV8xZ5PhGYDgGBLX/M4JYrUaXMhjYZHmbXg==","time":1547832993103,"size":51,"metadata":{"url":"http://localhost:1337/-/package/%40scoped%2Fpkg/collaborators?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["9057e4dad1435f4e"],"referer":["access ls-collaborators"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:33 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-bf9a4b5940d5354ed240c9d19bf66aef181f6b37	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/%40scoped%2Fpkg/collaborators","integrity":"sha512-MshpkrpGcUCKKSuz8vrkzRBBbc7baiFMFpBUr2vMeStupW9yRTMzV8xZ5PhGYDgGBLX/M4JYrUaXMhjYZHmbXg==","time":1547833216272,"size":51,"metadata":{"url":"http://localhost:1337/-/package/%40scoped%2Fpkg/collaborators?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["8c53f175b90e89fb"],"referer":["access ls-collaborators"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:16 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/ad/29/4a034c1908dcd263dce381384f50b395b52e2addd35285efab8ec8f5b303 b/deps/npm/test/npm_cache/_cacache/index-v5/ad/29/4a034c1908dcd263dce381384f50b395b52e2addd35285efab8ec8f5b303
deleted file mode 100644
index fdcee46164e5ca..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/ad/29/4a034c1908dcd263dce381384f50b395b52e2addd35285efab8ec8f5b303
+++ /dev/null
@@ -1,3 +0,0 @@
-
-11e87811e2df676a2b3f709f580b0a51b7eef996	{"key":"pacote:range-manifest:http://localhost:1337/minimist/-/minimist-0.0.5.tgz:sha1-16oye87PUY+RBqxrjwA/o7zqhWY=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833073431,"size":1,"metadata":{"id":"minimist@0.0.5","manifest":{"name":"minimist","version":"0.0.5","dependencies":{},"optionalDependencies":{},"devDependencies":{"tape":"~1.0.4","tap":"~0.4.0"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/minimist/-/minimist-0.0.5.tgz","_integrity":"sha1-16oye87PUY+RBqxrjwA/o7zqhWY=","_shasum":"d7aa327bcecf518f9106ac6b8f003fa3bcea8566","_shrinkwrap":null,"bin":null,"_id":"minimist@0.0.5"},"type":"finalized-manifest"}}
-cf5b45eb3a283ea7041a23ef29c08de42ae86db3	{"key":"pacote:range-manifest:http://localhost:1337/minimist/-/minimist-0.0.5.tgz:sha1-16oye87PUY+RBqxrjwA/o7zqhWY=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833073432,"size":1,"metadata":{"id":"minimist@0.0.5","manifest":{"name":"minimist","version":"0.0.5","dependencies":{},"optionalDependencies":{},"devDependencies":{"tape":"~1.0.4","tap":"~0.4.0"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/minimist/-/minimist-0.0.5.tgz","_integrity":"sha1-16oye87PUY+RBqxrjwA/o7zqhWY=","_shasum":"d7aa327bcecf518f9106ac6b8f003fa3bcea8566","_shrinkwrap":null,"bin":null,"_id":"minimist@0.0.5"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/ad/e9/1d8533ddd67b495ca9cffd992a45de09faf0f0fe2ad2c446353a58288f6b b/deps/npm/test/npm_cache/_cacache/index-v5/ad/e9/1d8533ddd67b495ca9cffd992a45de09faf0f0fe2ad2c446353a58288f6b
deleted file mode 100644
index ce505cd9432c04..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/ad/e9/1d8533ddd67b495ca9cffd992a45de09faf0f0fe2ad2c446353a58288f6b
+++ /dev/null
@@ -1,2 +0,0 @@
-
-64365f703c777ce905630f8f2e6287ec0dc87d2d	{"key":"pacote:version-manifest:http://localhost:1337/optimist/-/optimist-0.6.0.tgz:sha1-aUJIJvNAX3nxQub8PZrljU27kgA=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833073374,"size":1,"metadata":{"id":"optimist@0.6.0","manifest":{"name":"optimist","version":"0.6.0","dependencies":{"wordwrap":"~0.0.2","minimist":"~0.0.1"},"optionalDependencies":{},"devDependencies":{"hashish":"~0.0.4","tap":"~0.4.0"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/optimist/-/optimist-0.6.0.tgz","_integrity":"sha1-aUJIJvNAX3nxQub8PZrljU27kgA=","_shasum":"69424826f3405f79f142e6fc3d9ae58d4dbb9200","_shrinkwrap":null,"bin":null,"_id":"optimist@0.6.0"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/b1/78/4ff2f1383234ce5feb54cec21589dfd82db09bd3c7016d436760a3e94f60 b/deps/npm/test/npm_cache/_cacache/index-v5/b1/78/4ff2f1383234ce5feb54cec21589dfd82db09bd3c7016d436760a3e94f60
deleted file mode 100644
index 73d8583ab229e1..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/b1/78/4ff2f1383234ce5feb54cec21589dfd82db09bd3c7016d436760a3e94f60
+++ /dev/null
@@ -1,3 +0,0 @@
-
-7f02995173e0bd08a3af0b45d82442eddce0e57d	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:npm_saml_auth_dummy_user","integrity":null,"time":1547833017995}
-d0f3ef244b97c22054244c059d888d9abd7693ed	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:npm_saml_auth_dummy_user","integrity":null,"time":1547833237264}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/b2/47/c8196ddf74a5111fedbaf5abf24d446c017f7bfba330c19d63fc24000277 b/deps/npm/test/npm_cache/_cacache/index-v5/b2/47/c8196ddf74a5111fedbaf5abf24d446c017f7bfba330c19d63fc24000277
deleted file mode 100644
index 7ce40d69c5562d..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/b2/47/c8196ddf74a5111fedbaf5abf24d446c017f7bfba330c19d63fc24000277
+++ /dev/null
@@ -1,2 +0,0 @@
-
-c7a7b66fcdc42362855ee1ea0e4bacc86897cddb	{"key":"pacote:git-manifest:git://localhost:1234/child.git#65974106d8883632964be1da34eec5e85beead3a","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833223116,"size":1,"metadata":{"id":"child@1.0.3","manifest":{"name":"child","version":"1.0.3","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"git://localhost:1234/child.git#65974106d8883632964be1da34eec5e85beead3a","_integrity":null,"_shasum":null,"_shrinkwrap":null,"bin":null,"_id":"child@1.0.3"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/b3/36/c25c35e75c8973f821f5a05ce4803a44826a0112390460da66c8c3c5de69 b/deps/npm/test/npm_cache/_cacache/index-v5/b3/36/c25c35e75c8973f821f5a05ce4803a44826a0112390460da66c8c3c5de69
deleted file mode 100644
index 36144f760f2837..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/b3/36/c25c35e75c8973f821f5a05ce4803a44826a0112390460da66c8c3c5de69
+++ /dev/null
@@ -1,5 +0,0 @@
-
-2203ec8d87dfdc33ca3f91fee36d62d7583b9fc7	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fpkg/dist-tags","integrity":"sha512-9b2mt4/PIEsewOYGkEW0T2Zp6aq4eL/IkblG5M7LhD9Oh+Qotnca57Sizo8wPpd0Z2OwZC+viamwBCUpfceNag==","time":1547833098623,"size":42,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fpkg/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["5fe2532912b524f2"],"referer":["dist-tag ls"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:18 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-6822b31385528e21a07e23d5a812925b3094f1b3	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fpkg/dist-tags","integrity":"sha512-9b2mt4/PIEsewOYGkEW0T2Zp6aq4eL/IkblG5M7LhD9Oh+Qotnca57Sizo8wPpd0Z2OwZC+viamwBCUpfceNag==","time":1547833099266,"size":42,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fpkg/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["a0862a2bfbf103a4"],"referer":["dist-tag"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:19 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-b38156acf618625f7b1386e8ba1cafc433525145	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fpkg/dist-tags","integrity":"sha512-9b2mt4/PIEsewOYGkEW0T2Zp6aq4eL/IkblG5M7LhD9Oh+Qotnca57Sizo8wPpd0Z2OwZC+viamwBCUpfceNag==","time":1547833319191,"size":42,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fpkg/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["cd0330de647ee848"],"referer":["dist-tag ls"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:59 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-86f80933dda8c18895069da9865c5285038deef9	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fpkg/dist-tags","integrity":"sha512-9b2mt4/PIEsewOYGkEW0T2Zp6aq4eL/IkblG5M7LhD9Oh+Qotnca57Sizo8wPpd0Z2OwZC+viamwBCUpfceNag==","time":1547833319738,"size":42,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fpkg/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["f98d50799fc74c0a"],"referer":["dist-tag"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:59 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/b4/2c/2aec38b0351146be02fc91be78e935c68f4608824732a06091fcf7cb550a b/deps/npm/test/npm_cache/_cacache/index-v5/b4/2c/2aec38b0351146be02fc91be78e935c68f4608824732a06091fcf7cb550a
deleted file mode 100644
index 8f0c7506e9b16c..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/b4/2c/2aec38b0351146be02fc91be78e935c68f4608824732a06091fcf7cb550a
+++ /dev/null
@@ -1,3 +0,0 @@
-
-20d59f6daec6eac2eb644733fe21c815e25ffaef	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/username/package","integrity":"sha512-3Cqk30LNQ1Yj9MLD4nT6CBzJQv9F3PqYzfSpMktqIcNyHDS7l+aAnuKAUfwQ9XdJz/YKqXCh44x6bDVKlANVTg==","time":1547832989714,"size":39,"metadata":{"url":"http://localhost:1337/-/org/username/package?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["b8545df12738f01b"],"referer":["access ls-packages"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:29 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-704866f7d6302ba3b3aeca7e3260af11b4317155	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/org/username/package","integrity":"sha512-3Cqk30LNQ1Yj9MLD4nT6CBzJQv9F3PqYzfSpMktqIcNyHDS7l+aAnuKAUfwQ9XdJz/YKqXCh44x6bDVKlANVTg==","time":1547833213589,"size":39,"metadata":{"url":"http://localhost:1337/-/org/username/package?format=cli","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["29cf4d7ca0f7ff48"],"referer":["access ls-packages"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/b4/a9/95ce79090bb3e6ab5e8a85aaef872bf4eca492fac6cab144fb2e45ffbd74 b/deps/npm/test/npm_cache/_cacache/index-v5/b4/a9/95ce79090bb3e6ab5e8a85aaef872bf4eca492fac6cab144fb2e45ffbd74
deleted file mode 100644
index 2ba32d7b4cfa16..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/b4/a9/95ce79090bb3e6ab5e8a85aaef872bf4eca492fac6cab144fb2e45ffbd74
+++ /dev/null
@@ -1,3 +0,0 @@
-
-135604e7716d4c2e6bd09f4398d108fbc29895c5	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u/-rev/3-deadcafebabebeef","integrity":null,"time":1547833015114}
-d4d193f0e535e597bd98b501f7c5a1da3251bbbe	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/user/org.couchdb.user:u/-rev/3-deadcafebabebeef","integrity":null,"time":1547833234827}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/b7/1c/f06201305985169fc251111ddb9fa636ef144ff9fad15784c1e9620b0dac b/deps/npm/test/npm_cache/_cacache/index-v5/b7/1c/f06201305985169fc251111ddb9fa636ef144ff9fad15784c1e9620b0dac
deleted file mode 100644
index 0a33108574d4ac..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/b7/1c/f06201305985169fc251111ddb9fa636ef144ff9fad15784c1e9620b0dac
+++ /dev/null
@@ -1,2 +0,0 @@
-
-614363c24691f80d387b90f697b435cba6cb5ba4	{"key":"pacote:range-manifest:https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz:sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1544485144527,"size":1,"metadata":{"id":"inherits@1.0.2","manifest":{"name":"inherits","version":"1.0.2","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz","_integrity":"sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=","_shasum":"ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b","_shrinkwrap":null,"bin":null,"_id":"inherits@1.0.2"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/b8/16/bf6e49afbd1323783f2f5a63b3d871adc66f517669450807aec3b62e71b2 b/deps/npm/test/npm_cache/_cacache/index-v5/b8/16/bf6e49afbd1323783f2f5a63b3d871adc66f517669450807aec3b62e71b2
deleted file mode 100644
index 2a92a341f1b5fc..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/b8/16/bf6e49afbd1323783f2f5a63b3d871adc66f517669450807aec3b62e71b2
+++ /dev/null
@@ -1,2 +0,0 @@
-
-0fa6ae8d13ade52a785024d598ead22bc4a060df	{"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz","integrity":"sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=","time":1544485144635,"size":1519,"metadata":{"url":"https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.5.0 node/v10.14.1 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["28a99044412a2230"],"referer":["install [REDACTED]"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:inherits@https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"date":["Mon, 10 Dec 2018 23:39:04 GMT"],"content-type":["application/octet-stream"],"content-length":["1519"],"connection":["keep-alive"],"set-cookie":["__cfduid=defb20c5371b88093aa383ac8c884d4171544485144; expires=Tue, 10-Dec-19 23:39:04 GMT; path=/; domain=.registry.npmjs.org; HttpOnly"],"cf-cache-status":["HIT"],"cache-control":["max-age=432000"],"accept-ranges":["bytes"],"cf-ray":["48738c79cc526c7c-SJC"],"etag":["\"54a4d8823795a0d30b28479c10e3d486\""],"expect-ct":["max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\""],"last-modified":["Sun, 27 May 2018 04:40:10 GMT"],"vary":["Accept-Encoding"],"server":["cloudflare"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/ba/41/d137c2778ea0d7167fbc730827a0a2c453ffea82d07c7b1481a46f7b1194 b/deps/npm/test/npm_cache/_cacache/index-v5/ba/41/d137c2778ea0d7167fbc730827a0a2c453ffea82d07c7b1481a46f7b1194
deleted file mode 100644
index 7f2979c9e70af2..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/ba/41/d137c2778ea0d7167fbc730827a0a2c453ffea82d07c7b1481a46f7b1194
+++ /dev/null
@@ -1,4 +0,0 @@
-
-9c2b5138ca19cd78e19d07ada8b5b3abfd0f4292	{"key":"pacote:remote-manifest:http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz:sha512-NycvWDeO1ZEZc3P0bTvhSL/IJknbshO+FKKxrEf1DX1IBMsQVZCTWnvNAt+uOiQhyTnK+1hrnxtsSS/f4JrKhg==","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833041019,"size":1,"metadata":{"id":"@scoped/underscore@1.3.1","manifest":{"name":"@scoped/underscore","version":"1.3.1","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","_integrity":"sha512-NycvWDeO1ZEZc3P0bTvhSL/IJknbshO+FKKxrEf1DX1IBMsQVZCTWnvNAt+uOiQhyTnK+1hrnxtsSS/f4JrKhg==","_shasum":"28eb847a949e71eb9041fd6567a36c9acfcf2bed","_shrinkwrap":null,"bin":null,"_id":"@scoped/underscore@1.3.1"},"type":"finalized-manifest"}}
-b3884f202f09e0fc0656eb1b740f68243c0a3d0b	{"key":"pacote:remote-manifest:http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz:sha512-NycvWDeO1ZEZc3P0bTvhSL/IJknbshO+FKKxrEf1DX1IBMsQVZCTWnvNAt+uOiQhyTnK+1hrnxtsSS/f4JrKhg==","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833259082,"size":1,"metadata":{"id":"@scoped/underscore@1.3.1","manifest":{"name":"@scoped/underscore","version":"1.3.1","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","_integrity":"sha512-NycvWDeO1ZEZc3P0bTvhSL/IJknbshO+FKKxrEf1DX1IBMsQVZCTWnvNAt+uOiQhyTnK+1hrnxtsSS/f4JrKhg==","_shasum":"28eb847a949e71eb9041fd6567a36c9acfcf2bed","_shrinkwrap":null,"bin":null,"_id":"@scoped/underscore@1.3.1"},"type":"finalized-manifest"}}
-ceebf365613b857c1d00a513f871286b7575841a	{"key":"pacote:remote-manifest:http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz:sha512-NycvWDeO1ZEZc3P0bTvhSL/IJknbshO+FKKxrEf1DX1IBMsQVZCTWnvNAt+uOiQhyTnK+1hrnxtsSS/f4JrKhg==","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1548718095641,"size":1,"metadata":{"id":"@scoped/underscore@1.3.1","manifest":{"name":"@scoped/underscore","version":"1.3.1","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://127.0.0.1:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz","_integrity":"sha512-NycvWDeO1ZEZc3P0bTvhSL/IJknbshO+FKKxrEf1DX1IBMsQVZCTWnvNAt+uOiQhyTnK+1hrnxtsSS/f4JrKhg==","_shasum":"28eb847a949e71eb9041fd6567a36c9acfcf2bed","_shrinkwrap":null,"bin":null,"_id":"@scoped/underscore@1.3.1"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/be/6a/458105f31e845d57376ed2b2019e46a63cff8cbb76981a37eac2100c8e55 b/deps/npm/test/npm_cache/_cacache/index-v5/be/6a/458105f31e845d57376ed2b2019e46a63cff8cbb76981a37eac2100c8e55
deleted file mode 100644
index c7f616ca698625..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/be/6a/458105f31e845d57376ed2b2019e46a63cff8cbb76981a37eac2100c8e55
+++ /dev/null
@@ -1,3 +0,0 @@
-
-388060aca1924af6f5de8efc78b1292213e4e342	{"key":"pacote:packed-dir:github:isaacs/sax-js#5aee2163d55cff24b817bbf550bac44841f9df45","integrity":"sha512-Iv7u1C07q1/2mXITRvnF+npwrCdI7gztdbwLj26KupJPU6k0BLMPqNKODWTBSSLo8NHtHCEu8/FdAOlSexe5uQ==","time":1544485149568,"size":15108}
-0e88f843ada3834c0f11764113f4441e3fd22c97	{"key":"pacote:packed-dir:github:isaacs/sax-js#5aee2163d55cff24b817bbf550bac44841f9df45","integrity":"sha512-Iv7u1C07q1/2mXITRvnF+npwrCdI7gztdbwLj26KupJPU6k0BLMPqNKODWTBSSLo8NHtHCEu8/FdAOlSexe5uQ==","time":1544485151587,"size":15108}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/c4/08/207afc5ca1803fa593124554206657c17eb6b2809df9f5ec1c10007a6465 b/deps/npm/test/npm_cache/_cacache/index-v5/c4/08/207afc5ca1803fa593124554206657c17eb6b2809df9f5ec1c10007a6465
deleted file mode 100644
index 79591a24fad5a1..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/c4/08/207afc5ca1803fa593124554206657c17eb6b2809df9f5ec1c10007a6465
+++ /dev/null
@@ -1,3 +0,0 @@
-
-d1bd3700ae4b819592862245ce99d2af2b6e95bb	{"key":"pacote:tarball:file:/Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/test-whoops-1.0.0.tgz","integrity":"sha512-yaIGW7l0bldKVBrwYbeICUjTDkfbHcNWwxS9k0sBaYlNaW6DO9Y7bFPLlz0UuAZLWwQXfEAuNHdw3fu7x8kGyw==","time":1547833112237,"size":184}
-1703cbc1f1f6594798a79f0cdff31e60198cbb3c	{"key":"pacote:tarball:file:/Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/test-whoops-1.0.0.tgz","integrity":"sha512-yaIGW7l0bldKVBrwYbeICUjTDkfbHcNWwxS9k0sBaYlNaW6DO9Y7bFPLlz0UuAZLWwQXfEAuNHdw3fu7x8kGyw==","time":1547833333861,"size":184}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/c7/6a/1f6606232f53d41a78bcb0a155df04211a49d1fdb1b67e59ccb47e20c353 b/deps/npm/test/npm_cache/_cacache/index-v5/c7/6a/1f6606232f53d41a78bcb0a155df04211a49d1fdb1b67e59ccb47e20c353
deleted file mode 100644
index 3f8ca248851a31..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/c7/6a/1f6606232f53d41a78bcb0a155df04211a49d1fdb1b67e59ccb47e20c353
+++ /dev/null
@@ -1,5 +0,0 @@
-
-7b180a577935e416bdf212a54bbccaaea00610b6	{"key":"pacote:packed-dir:git://localhost:1234/top.git#ade345938057607d9e1b50afa2d6f627b911e596","integrity":"sha512-VJX+hA7b9dGN/CfF9NmzWeirgaR0H2Kw3rIJeTWYQ4KK5QESusTiWj/BCJ0mD9m4I25DSjpVWAt6q6Np5vi6hw==","time":1547833225545,"size":283}
-214d8fe56262265b542137a1a6548a62487435f8	{"key":"pacote:packed-dir:git://localhost:1234/top.git#ade345938057607d9e1b50afa2d6f627b911e596","integrity":"sha512-VJX+hA7b9dGN/CfF9NmzWeirgaR0H2Kw3rIJeTWYQ4KK5QESusTiWj/BCJ0mD9m4I25DSjpVWAt6q6Np5vi6hw==","time":1547833226019,"size":283}
-4fdb441a9fc384e4ff88825e523cacde7214daea	{"key":"pacote:packed-dir:git://localhost:1234/top.git#ade345938057607d9e1b50afa2d6f627b911e596","integrity":"sha512-VJX+hA7b9dGN/CfF9NmzWeirgaR0H2Kw3rIJeTWYQ4KK5QESusTiWj/BCJ0mD9m4I25DSjpVWAt6q6Np5vi6hw==","time":1547833226573,"size":283}
-a97ab2f9669f0bc0130eab10d42898af9ee4ae09	{"key":"pacote:packed-dir:git://localhost:1234/top.git#ade345938057607d9e1b50afa2d6f627b911e596","integrity":"sha512-VJX+hA7b9dGN/CfF9NmzWeirgaR0H2Kw3rIJeTWYQ4KK5QESusTiWj/BCJ0mD9m4I25DSjpVWAt6q6Np5vi6hw==","time":1547833227081,"size":283}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/ca/2f/42a626cb16aeb63c2dc04be95e67db8ea33ce033a3fadf0ba1061c174d3e b/deps/npm/test/npm_cache/_cacache/index-v5/ca/2f/42a626cb16aeb63c2dc04be95e67db8ea33ce033a3fadf0ba1061c174d3e
deleted file mode 100644
index d8c2490b516c4b..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/ca/2f/42a626cb16aeb63c2dc04be95e67db8ea33ce033a3fadf0ba1061c174d3e
+++ /dev/null
@@ -1,3 +0,0 @@
-
-ce8332445d8663fd141a36216e677bd10ff6b9d7	{"key":"pacote:packed-dir:git://localhost:1234/child.git#28b560148ea11a46c70defbce4c485581ced33d1","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833007307,"size":143}
-6fab7ca434f22c424fe295ff514b366202edc994	{"key":"pacote:packed-dir:git://localhost:1234/child.git#28b560148ea11a46c70defbce4c485581ced33d1","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833007721,"size":143}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/d0/a2/9b5933a9df317b031c4407f0d9cae19a4d56f253f7746786597a52daa76d b/deps/npm/test/npm_cache/_cacache/index-v5/d0/a2/9b5933a9df317b031c4407f0d9cae19a4d56f253f7746786597a52daa76d
deleted file mode 100644
index 1e03e6602f77b6..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/d0/a2/9b5933a9df317b031c4407f0d9cae19a4d56f253f7746786597a52daa76d
+++ /dev/null
@@ -1,2 +0,0 @@
-
-a30822a420ac48487cedbaf87ca2a38d9813fd74	{"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/graceful-fs","integrity":"sha512-XSnW4a3SU2N5q8HrpS+DgkpgkaWvn/uhR5z0BPR4828GUE9mQ9uGMeC28FflUUDYRInKzBQGJ+ASgk+gc/l1aA==","time":1544485144512,"size":24332,"metadata":{"url":"https://registry.npmjs.org/graceful-fs","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.5.0 node/v10.14.1 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["28a99044412a2230"],"referer":["install [REDACTED]"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:graceful-fs"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"date":["Mon, 10 Dec 2018 23:39:04 GMT"],"content-type":["application/vnd.npm.install-v1+json"],"content-length":["24332"],"connection":["keep-alive"],"set-cookie":["__cfduid=defb20c5371b88093aa383ac8c884d4171544485144; expires=Tue, 10-Dec-19 23:39:04 GMT; path=/; domain=.registry.npmjs.org; HttpOnly"],"cf-cache-status":["HIT"],"cache-control":["max-age=300"],"accept-ranges":["bytes"],"cf-ray":["48738c790c166c7c-SJC"],"etag":["\"a61f5e425bc37e1f2ae6fff988a7f45c\""],"expect-ct":["max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\""],"last-modified":["Sun, 04 Nov 2018 20:51:58 GMT"],"vary":["accept-encoding, accept"],"x-amz-meta-rev":["204-3ea980c425725a63a5de5e3f020e8617"],"server":["cloudflare"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/d2/0a/0834f8c04d97b43d0f99901f9c56c3654221987030a0f86aac7f7caecccc b/deps/npm/test/npm_cache/_cacache/index-v5/d2/0a/0834f8c04d97b43d0f99901f9c56c3654221987030a0f86aac7f7caecccc
deleted file mode 100644
index b3e16f2babeb01..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/d2/0a/0834f8c04d97b43d0f99901f9c56c3654221987030a0f86aac7f7caecccc
+++ /dev/null
@@ -1,3 +0,0 @@
-
-f560665c954f57c14f107bba0df77c536f9ddaa4	{"key":"make-fetch-happen:request-cache:http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz","integrity":"sha1-gvPMuhGRTciLyxhe47GzO1ZCcrw=","time":1547833046964,"size":220,"metadata":{"url":"http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["ece3b5a000cc3f02"],"referer":["bugs npm-test-peer-deps"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:npm-test-peer-deps@http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:26 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-e80b143e8a12e4112be260e9e1880db7c72404f3	{"key":"make-fetch-happen:request-cache:http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz","integrity":"sha1-gvPMuhGRTciLyxhe47GzO1ZCcrw=","time":1547833264155,"size":220,"metadata":{"url":"http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["836b89e1cc0594ec"],"referer":["bugs npm-test-peer-deps"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:npm-test-peer-deps@http://localhost:1337/npm-test-peer-deps/-/npm-test-peer-deps-0.0.0.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:04 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/d8/8f/1bf51f3ab635ab46a8693c919a915102645335a143056a5f12cafef915c0 b/deps/npm/test/npm_cache/_cacache/index-v5/d8/8f/1bf51f3ab635ab46a8693c919a915102645335a143056a5f12cafef915c0
deleted file mode 100644
index 17c9e80e488b30..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/d8/8f/1bf51f3ab635ab46a8693c919a915102645335a143056a5f12cafef915c0
+++ /dev/null
@@ -1,9 +0,0 @@
-
-5d6fb857bc4ef7fd6179300822ed60f39789695d	{"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist","integrity":"sha512-g6TXR7gGyq5zhXeBRbz5mfrmnutvFDQ/aAG3m2t4U1OJYWlKyLR5HHZ1wnkotUldEtL5RIZ9sRBeQk1fqbHgFQ==","time":1547833073399,"size":19834,"metadata":{"url":"http://localhost:1337/minimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:minimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-5d6fb857bc4ef7fd6179300822ed60f39789695d	{"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist","integrity":"sha512-g6TXR7gGyq5zhXeBRbz5mfrmnutvFDQ/aAG3m2t4U1OJYWlKyLR5HHZ1wnkotUldEtL5RIZ9sRBeQk1fqbHgFQ==","time":1547833073399,"size":19834,"metadata":{"url":"http://localhost:1337/minimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:minimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-f9f6f5b3805ab1d6047f104f2c0934da89029de3	{"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist","integrity":"sha512-g6TXR7gGyq5zhXeBRbz5mfrmnutvFDQ/aAG3m2t4U1OJYWlKyLR5HHZ1wnkotUldEtL5RIZ9sRBeQk1fqbHgFQ==","time":1547833079826,"size":19834,"metadata":{"url":"http://localhost:1337/minimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["d19ab2d4de48cace"],"referer":["install optimist"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:minimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:59 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-0e670817744d3920a594bcd7a51151239cc6edb4	{"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist","integrity":"sha512-g6TXR7gGyq5zhXeBRbz5mfrmnutvFDQ/aAG3m2t4U1OJYWlKyLR5HHZ1wnkotUldEtL5RIZ9sRBeQk1fqbHgFQ==","time":1547833093340,"size":19834,"metadata":{"url":"http://localhost:1337/minimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcd144259ba74815"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:minimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-6e3b3799d9593d6562149522f40f1bef85175ff5	{"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist","integrity":"sha512-g6TXR7gGyq5zhXeBRbz5mfrmnutvFDQ/aAG3m2t4U1OJYWlKyLR5HHZ1wnkotUldEtL5RIZ9sRBeQk1fqbHgFQ==","time":1547833294159,"size":19834,"metadata":{"url":"http://localhost:1337/minimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["0a92a1a2bc33028a"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:minimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:34 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-6e3b3799d9593d6562149522f40f1bef85175ff5	{"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist","integrity":"sha512-g6TXR7gGyq5zhXeBRbz5mfrmnutvFDQ/aAG3m2t4U1OJYWlKyLR5HHZ1wnkotUldEtL5RIZ9sRBeQk1fqbHgFQ==","time":1547833294159,"size":19834,"metadata":{"url":"http://localhost:1337/minimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["0a92a1a2bc33028a"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:minimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:34 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-aa4bf0541df5929840d07c70955c1ff23cfc6f5d	{"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist","integrity":"sha512-g6TXR7gGyq5zhXeBRbz5mfrmnutvFDQ/aAG3m2t4U1OJYWlKyLR5HHZ1wnkotUldEtL5RIZ9sRBeQk1fqbHgFQ==","time":1547833301219,"size":19834,"metadata":{"url":"http://localhost:1337/minimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["f4c81daeaa866c45"],"referer":["install optimist"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:minimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:41 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-be227b26dd91f727946a5e8ec671f62c400c2f84	{"key":"make-fetch-happen:request-cache:http://localhost:1337/minimist","integrity":"sha512-g6TXR7gGyq5zhXeBRbz5mfrmnutvFDQ/aAG3m2t4U1OJYWlKyLR5HHZ1wnkotUldEtL5RIZ9sRBeQk1fqbHgFQ==","time":1547833314424,"size":19834,"metadata":{"url":"http://localhost:1337/minimist","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["ce2c0b941f6a62b8"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:minimist"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:54 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/de/9f/35f1c704459881fb3c9e83a59e80c3482dd62f626939323f2b6bf511b53d b/deps/npm/test/npm_cache/_cacache/index-v5/de/9f/35f1c704459881fb3c9e83a59e80c3482dd62f626939323f2b6bf511b53d
deleted file mode 100644
index b41bc1a9202e62..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/de/9f/35f1c704459881fb3c9e83a59e80c3482dd62f626939323f2b6bf511b53d
+++ /dev/null
@@ -1,3 +0,0 @@
-
-7bb832e347dbc62f1198afb35f8f7551bceacd72	{"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz","integrity":"sha1-4FAI8/+Cs08XselyRUoKtwomnH0=","time":1547833048530,"size":371,"metadata":{"url":"http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcfdb97957af4e03"],"referer":["bugs test-repo-url-https"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:test-repo-url-https@http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:28 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-ac50fa8a2ea2326ad7cf56bca893b374b5bebb2c	{"key":"make-fetch-happen:request-cache:http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz","integrity":"sha1-4FAI8/+Cs08XselyRUoKtwomnH0=","time":1547833265543,"size":371,"metadata":{"url":"http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["e76ebb11020bbcdd"],"referer":["bugs test-repo-url-https"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:test-repo-url-https@http://localhost:1337/test-repo-url-https/-/test-repo-url-https-0.0.1.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:05 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/df/88/3ff6bf48df44c29ce1193e883193e034208d95b6028728ef3902b78b694d b/deps/npm/test/npm_cache/_cacache/index-v5/df/88/3ff6bf48df44c29ce1193e883193e034208d95b6028728ef3902b78b694d
deleted file mode 100644
index 9ac362316b2859..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/df/88/3ff6bf48df44c29ce1193e883193e034208d95b6028728ef3902b78b694d
+++ /dev/null
@@ -1,5 +0,0 @@
-
-5608f36aeb6a5f59d34b08079615f760039073c5	{"key":"make-fetch-happen:request-cache:http://localhost:1337/async","integrity":"sha512-raHNkSLmvrld42u43BDCVaan17i/viG3KEOrbbQC7oy4veX7LQUKfrluozDovho5TEx8REyLVB+OGAt/ElBv6A==","time":1547833073441,"size":76163,"metadata":{"url":"http://localhost:1337/async","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:async"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-4e272da87db2d81cdf7e70054035943de9d7e693	{"key":"make-fetch-happen:request-cache:http://localhost:1337/async","integrity":"sha512-raHNkSLmvrld42u43BDCVaan17i/viG3KEOrbbQC7oy4veX7LQUKfrluozDovho5TEx8REyLVB+OGAt/ElBv6A==","time":1547833093317,"size":76163,"metadata":{"url":"http://localhost:1337/async","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcd144259ba74815"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:async"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-ae1039605ec582dd106d671660d7f190d91e3753	{"key":"make-fetch-happen:request-cache:http://localhost:1337/async","integrity":"sha512-raHNkSLmvrld42u43BDCVaan17i/viG3KEOrbbQC7oy4veX7LQUKfrluozDovho5TEx8REyLVB+OGAt/ElBv6A==","time":1547833294175,"size":76163,"metadata":{"url":"http://localhost:1337/async","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["0a92a1a2bc33028a"],"referer":["install"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:async"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:34 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-fb221ac87dd04ff1360ecfbe22be4df3e1033ad7	{"key":"make-fetch-happen:request-cache:http://localhost:1337/async","integrity":"sha512-raHNkSLmvrld42u43BDCVaan17i/viG3KEOrbbQC7oy4veX7LQUKfrluozDovho5TEx8REyLVB+OGAt/ElBv6A==","time":1547833314410,"size":76163,"metadata":{"url":"http://localhost:1337/async","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["ce2c0b941f6a62b8"],"referer":["install ."],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:async"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:41:54 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/e8/1b/a9b0963bde9d8cb31e0fe8762eac5e3d3c2cd27e8bb1fbcdc22399c3d89e b/deps/npm/test/npm_cache/_cacache/index-v5/e8/1b/a9b0963bde9d8cb31e0fe8762eac5e3d3c2cd27e8bb1fbcdc22399c3d89e
deleted file mode 100644
index 87a7ff8957c504..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/e8/1b/a9b0963bde9d8cb31e0fe8762eac5e3d3c2cd27e8bb1fbcdc22399c3d89e
+++ /dev/null
@@ -1,2 +0,0 @@
-
-253438baa1d440b6ce159e9f2875b750e6182cc1	{"key":"pacote:git-manifest:git://localhost:1234/child.git#aef7bbd091eeef812d6364c2e8250b1e4b39a5ba","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833000939,"size":1,"metadata":{"id":"child@1.0.3","manifest":{"name":"child","version":"1.0.3","dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"git://localhost:1234/child.git#aef7bbd091eeef812d6364c2e8250b1e4b39a5ba","_integrity":null,"_shasum":null,"_shrinkwrap":null,"bin":null,"_id":"child@1.0.3"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/ec/6e/39493289897b28d06119b515a4d107ae1cd16ef94cdbbbd34a1c5687e07d b/deps/npm/test/npm_cache/_cacache/index-v5/ec/6e/39493289897b28d06119b515a4d107ae1cd16ef94cdbbbd34a1c5687e07d
deleted file mode 100644
index 52c1db7db9ff26..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/ec/6e/39493289897b28d06119b515a4d107ae1cd16ef94cdbbbd34a1c5687e07d
+++ /dev/null
@@ -1,2 +0,0 @@
-
-d76e587682077896d26831eff1e0a565de513e48	{"key":"pacote:range-manifest:http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.14.tgz:sha1-BweNtfY3f2Mh/Oqu30l94STclGU=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1544485144560,"size":1,"metadata":{"id":"graceful-fs@1.1.14","manifest":{"name":"graceful-fs","version":"1.1.14","engines":{"node":">=0.4.0"},"dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":"please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js","_resolved":"http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.14.tgz","_integrity":"sha1-BweNtfY3f2Mh/Oqu30l94STclGU=","_shasum":"07078db5f6377f6321fceaaedf497de124dc9465","_shrinkwrap":null,"bin":null,"_id":"graceful-fs@1.1.14"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/ed/27/eea30d253f59f5df5e11155392ad66e8ee2a352798e5fe782b98c941c2c6 b/deps/npm/test/npm_cache/_cacache/index-v5/ed/27/eea30d253f59f5df5e11155392ad66e8ee2a352798e5fe782b98c941c2c6
deleted file mode 100644
index ed9713ce31dcbc..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/ed/27/eea30d253f59f5df5e11155392ad66e8ee2a352798e5fe782b98c941c2c6
+++ /dev/null
@@ -1,3 +0,0 @@
-
-eeca4d82c272dcf056ae5ccedbee1bc36d0016e5	{"key":"make-fetch-happen:request-cache:http://localhost:1337/checker/-/checker-0.5.2.tgz","integrity":"sha1-wno2vwDzp6PSSo+8eFPwb85OnIY=","time":1547833073425,"size":7954,"metadata":{"url":"http://localhost:1337/checker/-/checker-0.5.2.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["871adf8f5053357c"],"referer":["install"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:checker@http://localhost:1337/checker/-/checker-0.5.2.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:37:53 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-372d7d61d7b9afb8dc42427e73af7c095a7c0b99	{"key":"make-fetch-happen:request-cache:http://localhost:1337/checker/-/checker-0.5.2.tgz","integrity":"sha1-wno2vwDzp6PSSo+8eFPwb85OnIY=","time":1547833093304,"size":7954,"metadata":{"url":"http://localhost:1337/checker/-/checker-0.5.2.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["fcd144259ba74815"],"referer":["install ."],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:checker@http://localhost:1337/checker/-/checker-0.5.2.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:13 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/ed/4a/09a226827d40ba61648afad16c456d1d0fbce7e14fc1c7a9dba42620f68a b/deps/npm/test/npm_cache/_cacache/index-v5/ed/4a/09a226827d40ba61648afad16c456d1d0fbce7e14fc1c7a9dba42620f68a
deleted file mode 100644
index c60c0db4778810..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/ed/4a/09a226827d40ba61648afad16c456d1d0fbce7e14fc1c7a9dba42620f68a
+++ /dev/null
@@ -1,3 +0,0 @@
-
-57d3cd9efcea5462da06a3e9cc811ce05f70f512	{"key":"make-fetch-happen:request-cache:http://localhost:1337/registry/add-named-update-protocol-port/-/add-named-update-protocol-port-0.0.0.tgz","integrity":"sha1-NWoZK3kTsExUV00Ywo1G5jlUKKs=","time":1547832996631,"size":1,"metadata":{"url":"http://localhost:1337/registry/add-named-update-protocol-port/-/add-named-update-protocol-port-0.0.0.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["2b49fe996267b15d"],"referer":["cache add add-named-update-protocol-port@0.0.0"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:add-named-update-protocol-port@http://localhost:1337/registry/add-named-update-protocol-port/-/add-named-update-protocol-port-0.0.0.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:36 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-297227923865262e10cdf85969912988683723cc	{"key":"make-fetch-happen:request-cache:http://localhost:1337/registry/add-named-update-protocol-port/-/add-named-update-protocol-port-0.0.0.tgz","integrity":"sha1-NWoZK3kTsExUV00Ywo1G5jlUKKs=","time":1547833219219,"size":1,"metadata":{"url":"http://localhost:1337/registry/add-named-update-protocol-port/-/add-named-update-protocol-port-0.0.0.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["302f70336b58dfc7"],"referer":["cache add add-named-update-protocol-port@0.0.0"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:add-named-update-protocol-port@http://localhost:1337/registry/add-named-update-protocol-port/-/add-named-update-protocol-port-0.0.0.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:19 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/ee/20/77825ded7fe59483cde11169fc083be6367490e46bce28208b4f7b5cb2f8 b/deps/npm/test/npm_cache/_cacache/index-v5/ee/20/77825ded7fe59483cde11169fc083be6367490e46bce28208b4f7b5cb2f8
deleted file mode 100644
index a22def52c27479..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/ee/20/77825ded7fe59483cde11169fc083be6367490e46bce28208b4f7b5cb2f8
+++ /dev/null
@@ -1,2 +0,0 @@
-
-a18279e98f139d677e0afaef21df7110cd5d2407	{"key":"pacote:range-manifest:http://localhost:1337/async/-/async-0.2.10.tgz:sha1-trvgsGdLnXGXCMo43owjfLUmw9E=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833073453,"size":1,"metadata":{"id":"async@0.2.10","manifest":{"name":"async","version":"0.2.10","dependencies":{},"optionalDependencies":{},"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/async/-/async-0.2.10.tgz","_integrity":"sha1-trvgsGdLnXGXCMo43owjfLUmw9E=","_shasum":"b6bbe0b0674b9d719708ca38de8c237cb526c3d1","_shrinkwrap":null,"bin":null,"_id":"async@0.2.10"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/f2/8a/d9e34baa5c3e47b2bf8e975217eae2e4816c2a8e9cdee330a1e2acfbd7a6 b/deps/npm/test/npm_cache/_cacache/index-v5/f2/8a/d9e34baa5c3e47b2bf8e975217eae2e4816c2a8e9cdee330a1e2acfbd7a6
deleted file mode 100644
index b2fbe3ca37e1e5..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/f2/8a/d9e34baa5c3e47b2bf8e975217eae2e4816c2a8e9cdee330a1e2acfbd7a6
+++ /dev/null
@@ -1,3 +0,0 @@
-
-be8503a914b4a9eb05323f6589baa6e95ac1ace5	{"key":"pacote:packed-dir:git://localhost:1234/child.git#3c75176bfda09442604d2a1a23d56f3e73d4655d","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833228437,"size":143}
-db82585066c86ab6739fbbd6d29417c3bf41b0af	{"key":"pacote:packed-dir:git://localhost:1234/child.git#3c75176bfda09442604d2a1a23d56f3e73d4655d","integrity":"sha512-tIpFTFX5X6A1HMpHl2H1/3kvj3q0RI8rE5mjrDd4pgopP3H+7aKWeM4VtxcSsIA/mGbpLAy8RUm0gHQ13PenZw==","time":1547833228736,"size":143}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/f2/dd/746a6d5b6232e793f562d37f6471e6bd96641b1670b43d01fca9e23884e3 b/deps/npm/test/npm_cache/_cacache/index-v5/f2/dd/746a6d5b6232e793f562d37f6471e6bd96641b1670b43d01fca9e23884e3
deleted file mode 100644
index 6f87578c6af746..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/f2/dd/746a6d5b6232e793f562d37f6471e6bd96641b1670b43d01fca9e23884e3
+++ /dev/null
@@ -1,2 +0,0 @@
-
-1484b5a751a41026c82f5e15df79dad5b49ec0b0	{"key":"pacote:version-manifest:http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz:sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833093388,"size":1,"metadata":{"id":"wordwrap@0.0.2","manifest":{"name":"wordwrap","version":"0.0.2","engines":{"node":">=0.4.0"},"dependencies":{},"optionalDependencies":{},"devDependencies":{"expresso":"=0.7.x"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/wordwrap/-/wordwrap-0.0.2.tgz","_integrity":"sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=","_shasum":"b79669bb42ecb409f83d583cad52ca17eaa1643f","_shrinkwrap":null,"bin":null,"_id":"wordwrap@0.0.2"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/f6/6a/1afded1007145f766ff1dbaa948bd898062da50bed98d5b04f317278fa48 b/deps/npm/test/npm_cache/_cacache/index-v5/f6/6a/1afded1007145f766ff1dbaa948bd898062da50bed98d5b04f317278fa48
deleted file mode 100644
index 7d47a831f0eaa9..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/f6/6a/1afded1007145f766ff1dbaa948bd898062da50bed98d5b04f317278fa48
+++ /dev/null
@@ -1,13 +0,0 @@
-
-c496bdab66ee640e57ac94ecc9d022045efa0842	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-5wbenY5s4WFSvlN8vM3yYyGz1ng5TOQvtWqk5po3q6nVTfKEcA0Gb35tAF5GGrQdIg/W8mj/iJ5AWAkQinuGdg==","time":1547833099859,"size":42,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["b2a762637ebb6243"],"referer":["dist-tag ls [REDACTED]"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:19 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-7df52710572e8f306657a1d0dd6aabc3d8e7f5cc	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-5wbenY5s4WFSvlN8vM3yYyGz1ng5TOQvtWqk5po3q6nVTfKEcA0Gb35tAF5GGrQdIg/W8mj/iJ5AWAkQinuGdg==","time":1547833100433,"size":42,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["7e0824b4d5754fe0"],"referer":["dist-tag [REDACTED]"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:20 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-21038ebd62c8b343b8e8f462cada4028f187e1d8	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-5wbenY5s4WFSvlN8vM3yYyGz1ng5TOQvtWqk5po3q6nVTfKEcA0Gb35tAF5GGrQdIg/W8mj/iJ5AWAkQinuGdg==","time":1547833100966,"size":42,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["0aee77a11a611461"],"referer":["dist-tag add [REDACTED] c"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:20 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-d11897de6f93b8ee83147e14e3e94d21cb34fd86	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-oaEHLK5hbB9keREOPj7lT6FpeMCB2AMpmdYtIH5c1sdkPkY9c9P/SyGK1xdyTJGAE+A5VPlykZLL36HQvtb9OQ==","time":1547833101529,"size":30,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["06964db6715165d3"],"referer":["dist-tag set [REDACTED] b"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:21 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-cf1322bf05e7a817e46edba40a374e330227821a	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-NTlyH3BfYhz/4w28govjh+JTxQ7QX7Co4/QYdpmWvd4d0cuK8uR9/pQXqresPSONHwNu8umtuJjDhvDNqbaGHg==","time":1547833102191,"size":54,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["988ea95f43da9d36"],"referer":["dist-tag rm [REDACTED] c"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:22 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-9d153a064fd24e83593e524e4d4fe88cf33df00d	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-oPha6LSEvHH7E+9ja5ruRfVIq2NXSINp/7AvI5+Uc8a5TFwqXvOxuW4WzmFY3AXxPviLzvMt47xBWkjNxVADVQ==","time":1547833102764,"size":18,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["b718f0bf6694646a"],"referer":["dist-tag rm [REDACTED] nonexistent"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:38:22 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-7891988ddf3d1f7d07a3b3fef3a1824bd55e7a13	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-5wbenY5s4WFSvlN8vM3yYyGz1ng5TOQvtWqk5po3q6nVTfKEcA0Gb35tAF5GGrQdIg/W8mj/iJ5AWAkQinuGdg==","time":1547833320255,"size":42,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["184ec63f44d4f2af"],"referer":["dist-tag ls [REDACTED]"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:42:00 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-30f4ec8b2f2af36098df7b3092cf8605f09a2959	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-5wbenY5s4WFSvlN8vM3yYyGz1ng5TOQvtWqk5po3q6nVTfKEcA0Gb35tAF5GGrQdIg/W8mj/iJ5AWAkQinuGdg==","time":1547833320772,"size":42,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["90674af1a572a629"],"referer":["dist-tag [REDACTED]"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:42:00 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-b6c279032b629776673d4e5cdc4424181e1acc3f	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-5wbenY5s4WFSvlN8vM3yYyGz1ng5TOQvtWqk5po3q6nVTfKEcA0Gb35tAF5GGrQdIg/W8mj/iJ5AWAkQinuGdg==","time":1547833321318,"size":42,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["bfc4da9b2d97d1c7"],"referer":["dist-tag add [REDACTED] c"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:42:01 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-0fdfd60b28cb1869d83ca01b7b194e1b400a6bf3	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-oaEHLK5hbB9keREOPj7lT6FpeMCB2AMpmdYtIH5c1sdkPkY9c9P/SyGK1xdyTJGAE+A5VPlykZLL36HQvtb9OQ==","time":1547833321936,"size":30,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["576fdd8ec20fae78"],"referer":["dist-tag set [REDACTED] b"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:42:01 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-4c7b732b7c0ca0c535817874a053b602ba0ffd78	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-NTlyH3BfYhz/4w28govjh+JTxQ7QX7Co4/QYdpmWvd4d0cuK8uR9/pQXqresPSONHwNu8umtuJjDhvDNqbaGHg==","time":1547833322468,"size":54,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["2b7cb98442d19d37"],"referer":["dist-tag rm [REDACTED] c"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:42:02 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-cbf1ecd55e1db2acc2575f79d62ab2527ff3b6ca	{"key":"make-fetch-happen:request-cache:http://localhost:1337/-/package/@scoped%2fanother/dist-tags","integrity":"sha512-oPha6LSEvHH7E+9ja5ruRfVIq2NXSINp/7AvI5+Uc8a5TFwqXvOxuW4WzmFY3AXxPviLzvMt47xBWkjNxVADVQ==","time":1547833323093,"size":18,"metadata":{"url":"http://localhost:1337/-/package/@scoped%2fanother/dist-tags","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":["@scoped"],"npm-session":["d321519b8d5f7e23"],"referer":["dist-tag rm [REDACTED] nonexistent"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:42:03 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/fc/88/41f0501b29bfe9117061c190df783256e332cab7782a7484078354ddbb0f b/deps/npm/test/npm_cache/_cacache/index-v5/fc/88/41f0501b29bfe9117061c190df783256e332cab7782a7484078354ddbb0f
deleted file mode 100644
index 9701c3fb55faf9..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/fc/88/41f0501b29bfe9117061c190df783256e332cab7782a7484078354ddbb0f
+++ /dev/null
@@ -1,3 +0,0 @@
-
-e05851ada6a8b60a84358486f62dd100be2f8170	{"key":"make-fetch-happen:request-cache:http://127.0.0.1:1338/registry/add-named-update-protocol-porti/-/add-named-update-protocol-porti-0.0.0.tgz","integrity":"sha1-NWoZK3kTsExUV00Ywo1G5jlUKKs=","time":1547832997192,"size":1,"metadata":{"url":"http://127.0.0.1:1338/registry/add-named-update-protocol-porti/-/add-named-update-protocol-porti-0.0.0.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["8cb41ddc499c27b6"],"referer":["cache add add-named-update-protocol-porti@0.0.0"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:add-named-update-protocol-porti@http://127.0.0.1:1338/registry/add-named-update-protocol-porti/-/add-named-update-protocol-porti-0.0.0.tgz"]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:36:37 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
-bcd7495c1e69e7cbfd7cda387abb72f8454a0a9e	{"key":"make-fetch-happen:request-cache:http://127.0.0.1:1338/registry/add-named-update-protocol-porti/-/add-named-update-protocol-porti-0.0.0.tgz","integrity":"sha1-NWoZK3kTsExUV00Ywo1G5jlUKKs=","time":1547833219779,"size":1,"metadata":{"url":"http://127.0.0.1:1338/registry/add-named-update-protocol-porti/-/add-named-update-protocol-porti-0.0.0.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.6.0 node/v11.6.0 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["87b598eff1cdd205"],"referer":["cache add add-named-update-protocol-porti@0.0.0"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:add-named-update-protocol-porti@http://127.0.0.1:1338/registry/add-named-update-protocol-porti/-/add-named-update-protocol-porti-0.0.0.tgz"]},"resHeaders":{"connection":["close"],"date":["Fri, 18 Jan 2019 17:40:19 GMT"],"transfer-encoding":["chunked"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/fd/a9/67911fbad568af62425934e3a7938145b60af92641734e54a8f50a418c03 b/deps/npm/test/npm_cache/_cacache/index-v5/fd/a9/67911fbad568af62425934e3a7938145b60af92641734e54a8f50a418c03
deleted file mode 100644
index c035c359fd6d67..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/fd/a9/67911fbad568af62425934e3a7938145b60af92641734e54a8f50a418c03
+++ /dev/null
@@ -1,2 +0,0 @@
-
-cf643ea07623ca00c880b88ac8d9fbb1b1c76ba6	{"key":"pacote:version-manifest:http://localhost:1337/async/-/async-0.2.10.tgz:sha1-trvgsGdLnXGXCMo43owjfLUmw9E=","integrity":"sha512-C2EkHXwXvLsbrucJTRS3xFHv7Mf/y9klmKDxPTE8yevCoH5h8Ae69Y+/lP+ahpW91crnzgO78elOk2E6APJfIQ==","time":1547833093331,"size":1,"metadata":{"id":"async@0.2.10","manifest":{"name":"async","version":"0.2.10","dependencies":{},"optionalDependencies":{},"devDependencies":{"nodeunit":">0.0.0","uglify-js":"1.2.x","nodelint":">0.0.0"},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"http://localhost:1337/async/-/async-0.2.10.tgz","_integrity":"sha1-trvgsGdLnXGXCMo43owjfLUmw9E=","_shasum":"b6bbe0b0674b9d719708ca38de8c237cb526c3d1","_shrinkwrap":null,"bin":null,"_id":"async@0.2.10"},"type":"finalized-manifest"}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/fe/7e/e4d136986019ebc5360c54baee7ae9bec37f513387665b57ac2bcd167b70 b/deps/npm/test/npm_cache/_cacache/index-v5/fe/7e/e4d136986019ebc5360c54baee7ae9bec37f513387665b57ac2bcd167b70
deleted file mode 100644
index 7d5b158124cf73..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/fe/7e/e4d136986019ebc5360c54baee7ae9bec37f513387665b57ac2bcd167b70
+++ /dev/null
@@ -1,2 +0,0 @@
-
-8cdd51e878b62f99bcceb9269e1a21a0fa5474c3	{"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.14.tgz","integrity":"sha1-BweNtfY3f2Mh/Oqu30l94STclGU=","time":1544485144557,"size":4025,"metadata":{"url":"https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.14.tgz","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.5.0 node/v10.14.1 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["28a99044412a2230"],"referer":["install [REDACTED]"],"pacote-req-type":["tarball"],"pacote-pkg-id":["registry:graceful-fs@https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.14.tgz"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"date":["Mon, 10 Dec 2018 23:39:04 GMT"],"content-type":["application/octet-stream"],"content-length":["4025"],"connection":["keep-alive"],"set-cookie":["__cfduid=d9119cbf97c872d57754e45bf35e112b91544485144; expires=Tue, 10-Dec-19 23:39:04 GMT; path=/; domain=.registry.npmjs.org; HttpOnly"],"cf-cache-status":["HIT"],"cache-control":["max-age=432000"],"accept-ranges":["bytes"],"cf-ray":["48738c79492b6c4c-SJC"],"etag":["\"fb46c820a063a666be04b2c416d51b29\""],"expect-ct":["max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\""],"last-modified":["Sun, 27 May 2018 02:39:27 GMT"],"vary":["Accept-Encoding"],"server":["cloudflare"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_cacache/index-v5/ff/d3/eca629ba696cac5a91e13f61bb768d7cbf82072f798d17071572ab3943f2 b/deps/npm/test/npm_cache/_cacache/index-v5/ff/d3/eca629ba696cac5a91e13f61bb768d7cbf82072f798d17071572ab3943f2
deleted file mode 100644
index 2df72adaac8b1c..00000000000000
--- a/deps/npm/test/npm_cache/_cacache/index-v5/ff/d3/eca629ba696cac5a91e13f61bb768d7cbf82072f798d17071572ab3943f2
+++ /dev/null
@@ -1,2 +0,0 @@
-
-f958db19324fd46983256770efb05e8753aac7f6	{"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/inherits","integrity":"sha512-IYLqxPg+UPO2qovqVhxd/r3B1mlB4tp4WvQG4EXeVqD8QiA0yn+iq1+pkCLGuGAgPrSFPOhfFfJrlshLjZ5zIA==","time":1544485144511,"size":1494,"metadata":{"url":"https://registry.npmjs.org/inherits","reqHeaders":{"connection":["keep-alive"],"user-agent":["npm/6.5.0 node/v10.14.1 darwin x64"],"npm-in-ci":["false"],"npm-scope":[""],"npm-session":["28a99044412a2230"],"referer":["install [REDACTED]"],"pacote-req-type":["packument"],"pacote-pkg-id":["registry:inherits"],"accept":["application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"],"authorization":["Basic dXNlcm5hbWU6cGFzc3dvcmQ="]},"resHeaders":{"date":["Mon, 10 Dec 2018 23:39:04 GMT"],"content-type":["application/vnd.npm.install-v1+json"],"content-length":["1494"],"connection":["keep-alive"],"set-cookie":["__cfduid=d9119cbf97c872d57754e45bf35e112b91544485144; expires=Tue, 10-Dec-19 23:39:04 GMT; path=/; domain=.registry.npmjs.org; HttpOnly"],"cf-cache-status":["HIT"],"cache-control":["max-age=300"],"accept-ranges":["bytes"],"cf-ray":["48738c7909076c4c-SJC"],"etag":["\"419f7e0699d401599186150793ffd002\""],"expect-ct":["max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\""],"last-modified":["Fri, 03 Aug 2018 00:38:04 GMT"],"vary":["accept-encoding, accept"],"server":["cloudflare"],"x-fetch-attempts":["1"]}}}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_24_580Z-debug.log b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_24_580Z-debug.log
deleted file mode 100644
index c2cc5dbf59a8a0..00000000000000
--- a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_24_580Z-debug.log
+++ /dev/null
@@ -1,54 +0,0 @@
-0 info it worked if it ends with ok
-1 verbose cli [ '/usr/local/bin/node',
-1 verbose cli   '/Users/zkat/Documents/code/work/npm/bin/npm-cli.js',
-1 verbose cli   'install',
-1 verbose cli   '--engine-strict',
-1 verbose cli   '/Users/zkat/Documents/code/work/npm/test/tap/check-engine-reqs/from',
-1 verbose cli   '--loglevel',
-1 verbose cli   'silly' ]
-2 info using npm@6.6.0
-3 info using node@v11.6.0
-4 verbose npm-session cf9ef66b93f6540b
-5 silly install loadCurrentTree
-6 silly install readLocalPackageData
-7 silly pacote directory manifest for undefined@file:/Users/zkat/Documents/code/work/npm/test/tap/check-engine-reqs/from fetched in 7ms
-8 timing stage:loadCurrentTree Completed in 22ms
-9 silly install loadIdealTree
-10 silly install cloneCurrentTreeToIdealTree
-11 timing stage:loadIdealTree:cloneCurrentTree Completed in 0ms
-12 silly install loadShrinkwrap
-13 timing stage:loadIdealTree:loadShrinkwrap Completed in 1ms
-14 silly install loadAllDepsIntoIdealTree
-15 timing stage:rollbackFailedOptional Completed in 0ms
-16 timing stage:runTopLevelLifecycles Completed in 26ms
-17 silly saveTree in
-18 verbose stack Error: Unsupported engine for check-engine-reqs@0.0.1: wanted: {"node":"1.0.0-not-a-real-version"} (current: {"node":"11.6.0","npm":"6.6.0"})
-18 verbose stack     at checkEngine (/Users/zkat/Documents/code/work/npm/node_modules/npm-install-checks/index.js:13:14)
-18 verbose stack     at module.exports.isInstallable (/Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:49:3)
-18 verbose stack     at Array.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/bind-actor.js:15:8)
-18 verbose stack     at LOOP (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:15:14)
-18 verbose stack     at /Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:18:7
-18 verbose stack     at checkSelf (/Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:57:72)
-18 verbose stack     at Array.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/bind-actor.js:15:8)
-18 verbose stack     at LOOP (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:15:14)
-18 verbose stack     at /Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:18:7
-18 verbose stack     at hasMinimumFields (/Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:30:12)
-18 verbose stack     at Array.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/bind-actor.js:15:8)
-18 verbose stack     at LOOP (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:15:14)
-18 verbose stack     at chain (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:20:5)
-18 verbose stack     at /Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:16:5
-18 verbose stack     at /Users/zkat/Documents/code/work/npm/node_modules/slide/lib/async-map.js:52:35
-18 verbose stack     at Array.forEach (<anonymous>)
-19 verbose pkgid check-engine-reqs@0.0.1
-20 verbose cwd /Users/zkat/Documents/code/work/npm/test/tap/check-engine-reqs/in
-21 verbose Darwin 18.0.0
-22 verbose argv "/usr/local/bin/node" "/Users/zkat/Documents/code/work/npm/bin/npm-cli.js" "install" "--engine-strict" "/Users/zkat/Documents/code/work/npm/test/tap/check-engine-reqs/from" "--loglevel" "silly"
-23 verbose node v11.6.0
-24 verbose npm  v6.6.0
-25 error code ENOTSUP
-26 error notsup Unsupported engine for check-engine-reqs@0.0.1: wanted: {"node":"1.0.0-not-a-real-version"} (current: {"node":"11.6.0","npm":"6.6.0"})
-27 error notsup Not compatible with your version of node/npm: check-engine-reqs@0.0.1
-28 error notsup Not compatible with your version of node/npm: check-engine-reqs@0.0.1
-28 error notsup Required: {"node":"1.0.0-not-a-real-version"}
-28 error notsup Actual:   {"npm":"6.6.0","node":"11.6.0"}
-29 verbose exit [ 1, true ]
diff --git a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_26_268Z-debug.log b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_26_268Z-debug.log
deleted file mode 100644
index b8f0a259aa8d92..00000000000000
--- a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_26_268Z-debug.log
+++ /dev/null
@@ -1,56 +0,0 @@
-0 info it worked if it ends with ok
-1 verbose cli [ '/usr/local/bin/node',
-1 verbose cli   '/Users/zkat/Documents/code/work/npm/bin/npm-cli.js',
-1 verbose cli   'install',
-1 verbose cli   '/Users/zkat/Documents/code/work/npm/test/tap/check-install-self/from' ]
-2 info using npm@6.6.0
-3 info using node@v11.6.0
-4 verbose npm-session 61cb12d52a202aa0
-5 silly install loadCurrentTree
-6 silly install readLocalPackageData
-7 silly pacote directory manifest for undefined@file:/Users/zkat/Documents/code/work/npm/test/tap/check-install-self/from fetched in 5ms
-8 timing stage:loadCurrentTree Completed in 27ms
-9 silly install loadIdealTree
-10 silly install cloneCurrentTreeToIdealTree
-11 timing stage:loadIdealTree:cloneCurrentTree Completed in 1ms
-12 silly install loadShrinkwrap
-13 timing stage:loadIdealTree:loadShrinkwrap Completed in 0ms
-14 silly install loadAllDepsIntoIdealTree
-15 timing stage:rollbackFailedOptional Completed in 1ms
-16 timing stage:runTopLevelLifecycles Completed in 30ms
-17 silly saveTree check-install-self@0.0.1
-18 verbose stack Error: Refusing to install package with name "check-install-self" under a package
-18 verbose stack also called "check-install-self". Did you name your project the same
-18 verbose stack as the dependency you're installing?
-18 verbose stack
-18 verbose stack For more information, see:
-18 verbose stack     <https://docs.npmjs.com/cli/install#limitations-of-npms-install-algorithm>
-18 verbose stack     at checkSelf (/Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:64:14)
-18 verbose stack     at Array.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/bind-actor.js:15:8)
-18 verbose stack     at LOOP (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:15:14)
-18 verbose stack     at /Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:18:7
-18 verbose stack     at hasMinimumFields (/Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:30:12)
-18 verbose stack     at Array.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/bind-actor.js:15:8)
-18 verbose stack     at LOOP (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:15:14)
-18 verbose stack     at chain (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:20:5)
-18 verbose stack     at /Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:16:5
-18 verbose stack     at /Users/zkat/Documents/code/work/npm/node_modules/slide/lib/async-map.js:52:35
-18 verbose stack     at Array.forEach (<anonymous>)
-18 verbose stack     at /Users/zkat/Documents/code/work/npm/node_modules/slide/lib/async-map.js:52:11
-18 verbose stack     at Array.forEach (<anonymous>)
-18 verbose stack     at asyncMap (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/async-map.js:51:8)
-18 verbose stack     at module.exports (/Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:15:3)
-18 verbose stack     at Array.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/bind-actor.js:15:8)
-19 verbose cwd /Users/zkat/Documents/code/work/npm/test/tap/check-install-self/in
-20 verbose Darwin 18.0.0
-21 verbose argv "/usr/local/bin/node" "/Users/zkat/Documents/code/work/npm/bin/npm-cli.js" "install" "/Users/zkat/Documents/code/work/npm/test/tap/check-install-self/from"
-22 verbose node v11.6.0
-23 verbose npm  v6.6.0
-24 error code ENOSELF
-25 error Refusing to install package with name "check-install-self" under a package
-25 error also called "check-install-self". Did you name your project the same
-25 error as the dependency you're installing?
-25 error
-25 error For more information, see:
-25 error     <https://docs.npmjs.com/cli/install#limitations-of-npms-install-algorithm>
-26 verbose exit [ 1, true ]
diff --git a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_28_020Z-debug.log b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_28_020Z-debug.log
deleted file mode 100644
index 27a7399a72cb36..00000000000000
--- a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_28_020Z-debug.log
+++ /dev/null
@@ -1,53 +0,0 @@
-0 info it worked if it ends with ok
-1 verbose cli [ '/usr/local/bin/node',
-1 verbose cli   '/Users/zkat/Documents/code/work/npm/bin/npm-cli.js',
-1 verbose cli   'install',
-1 verbose cli   '/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/from',
-1 verbose cli   '--loglevel',
-1 verbose cli   'silly' ]
-2 info using npm@6.6.0
-3 info using node@v11.6.0
-4 verbose npm-session 0d53651f554c2a7e
-5 silly install loadCurrentTree
-6 silly install readLocalPackageData
-7 silly pacote directory manifest for undefined@file:/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/from fetched in 5ms
-8 timing stage:loadCurrentTree Completed in 20ms
-9 silly install loadIdealTree
-10 silly install cloneCurrentTreeToIdealTree
-11 timing stage:loadIdealTree:cloneCurrentTree Completed in 1ms
-12 silly install loadShrinkwrap
-13 timing stage:loadIdealTree:loadShrinkwrap Completed in 0ms
-14 silly install loadAllDepsIntoIdealTree
-15 timing stage:rollbackFailedOptional Completed in 1ms
-16 timing stage:runTopLevelLifecycles Completed in 23ms
-17 silly saveTree in
-18 verbose stack Error: Unsupported platform for check-os-reqs@0.0.1: wanted {"name":"check-os-reqs","version":"0.0.1","os":["fake-os"],"dependencies":{},"optionalDependencies":{},"devDependencies":{},"bundleDependencies":false,"peerDependencies":{},"deprecated":false,"_resolved":"/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/from","_integrity":null,"_shasum":null,"_shrinkwrap":null,"bin":null,"_id":"check-os-reqs@0.0.1","_from":"file:/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/from","_requested":{"type":"directory","where":"/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/in","raw":"/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/from","rawSpec":"/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/from","saveSpec":"file:/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/from","fetchSpec":"/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/from"},"_spec":"/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/from","_where":"/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/in"} (current: {"os":"darwin","cpu":"x64"})
-18 verbose stack     at checkPlatform (/Users/zkat/Documents/code/work/npm/node_modules/npm-install-checks/index.js:45:14)
-18 verbose stack     at thenWarnEngineIssues (/Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:52:5)
-18 verbose stack     at a (/Users/zkat/Documents/code/work/npm/node_modules/iferr/iferr.js:3:64)
-18 verbose stack     at checkEngine (/Users/zkat/Documents/code/work/npm/node_modules/npm-install-checks/index.js:10:20)
-18 verbose stack     at module.exports.isInstallable (/Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:49:3)
-18 verbose stack     at Array.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/bind-actor.js:15:8)
-18 verbose stack     at LOOP (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:15:14)
-18 verbose stack     at /Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:18:7
-18 verbose stack     at checkSelf (/Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:57:72)
-18 verbose stack     at Array.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/bind-actor.js:15:8)
-18 verbose stack     at LOOP (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:15:14)
-18 verbose stack     at /Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:18:7
-18 verbose stack     at hasMinimumFields (/Users/zkat/Documents/code/work/npm/lib/install/validate-args.js:30:12)
-18 verbose stack     at Array.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/bind-actor.js:15:8)
-18 verbose stack     at LOOP (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:15:14)
-18 verbose stack     at chain (/Users/zkat/Documents/code/work/npm/node_modules/slide/lib/chain.js:20:5)
-19 verbose pkgid check-os-reqs@0.0.1
-20 verbose cwd /Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/in
-21 verbose Darwin 18.0.0
-22 verbose argv "/usr/local/bin/node" "/Users/zkat/Documents/code/work/npm/bin/npm-cli.js" "install" "/Users/zkat/Documents/code/work/npm/test/tap/check-os-reqs/from" "--loglevel" "silly"
-23 verbose node v11.6.0
-24 verbose npm  v6.6.0
-25 error code EBADPLATFORM
-26 error notsup Unsupported platform for check-os-reqs@0.0.1: wanted {"os":"fake-os","arch":"any"} (current: {"os":"darwin","arch":"x64"})
-27 error notsup Valid OS:    fake-os
-27 error notsup Valid Arch:  any
-27 error notsup Actual OS:   darwin
-27 error notsup Actual Arch: x64
-28 verbose exit [ 1, true ]
diff --git a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_39_719Z-debug.log b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_39_719Z-debug.log
deleted file mode 100644
index 078b12da87fd78..00000000000000
--- a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_39_719Z-debug.log
+++ /dev/null
@@ -1,27 +0,0 @@
-0 info it worked if it ends with ok
-1 verbose cli [ '/usr/local/bin/node',
-1 verbose cli   '/Users/zkat/Documents/code/work/npm/bin/npm-cli.js',
-1 verbose cli   'ci',
-1 verbose cli   '--registry',
-1 verbose cli   'http://localhost:1337',
-1 verbose cli   '--loglevel',
-1 verbose cli   'warn' ]
-2 info using npm@6.6.0
-3 info using node@v11.6.0
-4 verbose npm-session ebc502d2075f4b06
-5 info prepare initializing installer
-6 verbose prepare starting workers
-7 verbose prepare installation prefix: /Users/zkat/Documents/code/work/npm/test/tap/ci
-8 verbose checkLock verifying package-lock data
-9 verbose teardown shutting down workers.
-10 info teardown Done in 0s
-11 verbose stack Error: cipm can only install packages with an existing package-lock.json or npm-shrinkwrap.json with lockfileVersion >= 1. Run an install with npm@5 or later to generate it, then try again.
-11 verbose stack     at Installer.checkLock (/Users/zkat/Documents/code/work/npm/node_modules/libcipm/index.js:184:9)
-11 verbose stack     at then.then.then.stat (/Users/zkat/Documents/code/work/npm/node_modules/libcipm/index.js:158:16)
-12 verbose cwd /Users/zkat/Documents/code/work/npm/test/tap/ci
-13 verbose Darwin 18.0.0
-14 verbose argv "/usr/local/bin/node" "/Users/zkat/Documents/code/work/npm/bin/npm-cli.js" "ci" "--registry" "http://localhost:1337" "--loglevel" "warn"
-15 verbose node v11.6.0
-16 verbose npm  v6.6.0
-17 error cipm can only install packages with an existing package-lock.json or npm-shrinkwrap.json with lockfileVersion >= 1. Run an install with npm@5 or later to generate it, then try again.
-18 verbose exit [ 1, true ]
diff --git a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_40_242Z-debug.log b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_40_242Z-debug.log
deleted file mode 100644
index b88b1c08ceb40c..00000000000000
--- a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_40_242Z-debug.log
+++ /dev/null
@@ -1,34 +0,0 @@
-0 info it worked if it ends with ok
-1 verbose cli [ '/usr/local/bin/node',
-1 verbose cli   '/Users/zkat/Documents/code/work/npm/bin/npm-cli.js',
-1 verbose cli   'ci',
-1 verbose cli   '--registry',
-1 verbose cli   'http://localhost:1337',
-1 verbose cli   '--loglevel',
-1 verbose cli   'warn' ]
-2 info using npm@6.6.0
-3 info using node@v11.6.0
-4 verbose npm-session 81dd68c6da560193
-5 info prepare initializing installer
-6 verbose prepare starting workers
-7 verbose prepare installation prefix: /Users/zkat/Documents/code/work/npm/test/tap/ci
-8 verbose prepare using package-lock.json
-9 verbose checkLock verifying package-lock data
-10 verbose teardown shutting down workers.
-11 info teardown Done in 0s
-12 verbose stack Error: cipm can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync. Please update your lock file with `npm install` before continuing.
-12 verbose stack
-12 verbose stack
-12 verbose stack Missing: optimist@0.6.0
-12 verbose stack
-12 verbose stack     at lockVerify.then.result (/Users/zkat/Documents/code/work/npm/node_modules/libcipm/index.js:191:15)
-13 verbose cwd /Users/zkat/Documents/code/work/npm/test/tap/ci
-14 verbose Darwin 18.0.0
-15 verbose argv "/usr/local/bin/node" "/Users/zkat/Documents/code/work/npm/bin/npm-cli.js" "ci" "--registry" "http://localhost:1337" "--loglevel" "warn"
-16 verbose node v11.6.0
-17 verbose npm  v6.6.0
-18 error cipm can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync. Please update your lock file with `npm install` before continuing.
-18 error
-18 error
-18 error Missing: optimist@0.6.0
-19 verbose exit [ 1, true ]
diff --git a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_47_912Z-debug.log b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_47_912Z-debug.log
deleted file mode 100644
index 4013f3d68de771..00000000000000
--- a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_47_912Z-debug.log
+++ /dev/null
@@ -1,21 +0,0 @@
-0 info it worked if it ends with ok
-1 verbose cli [ '/usr/local/bin/node',
-1 verbose cli   '/Users/zkat/Documents/code/work/npm/bin/npm-cli.js',
-1 verbose cli   'config',
-1 verbose cli   'get',
-1 verbose cli   '_auth' ]
-2 info using npm@6.6.0
-3 info using node@v11.6.0
-4 verbose stack Error: ---sekretz---
-4 verbose stack     at get (/Users/zkat/Documents/code/work/npm/lib/config.js:166:15)
-4 verbose stack     at EventEmitter.config (/Users/zkat/Documents/code/work/npm/lib/config.js:68:14)
-4 verbose stack     at Object.commandCache.(anonymous function) (/Users/zkat/Documents/code/work/npm/lib/npm.js:156:13)
-4 verbose stack     at EventEmitter.<anonymous> (/Users/zkat/Documents/code/work/npm/bin/npm-cli.js:131:30)
-4 verbose stack     at process.internalTickCallback (internal/process/next_tick.js:70:11)
-5 verbose cwd /Users/zkat/Documents/code/work/npm/test/tap/config-private
-6 verbose Darwin 18.0.0
-7 verbose argv "/usr/local/bin/node" "/Users/zkat/Documents/code/work/npm/bin/npm-cli.js" "config" "get" "_auth"
-8 verbose node v11.6.0
-9 verbose npm  v6.6.0
-10 error ---sekretz---
-11 verbose exit [ 1, true ]
diff --git a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_48_220Z-debug.log b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_48_220Z-debug.log
deleted file mode 100644
index 126eb27b68b912..00000000000000
--- a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_48_220Z-debug.log
+++ /dev/null
@@ -1,21 +0,0 @@
-0 info it worked if it ends with ok
-1 verbose cli [ '/usr/local/bin/node',
-1 verbose cli   '/Users/zkat/Documents/code/work/npm/bin/npm-cli.js',
-1 verbose cli   'config',
-1 verbose cli   'get',
-1 verbose cli   '//registry.npmjs.org/:_password' ]
-2 info using npm@6.6.0
-3 info using node@v11.6.0
-4 verbose stack Error: ---sekretz---
-4 verbose stack     at get (/Users/zkat/Documents/code/work/npm/lib/config.js:166:15)
-4 verbose stack     at EventEmitter.config (/Users/zkat/Documents/code/work/npm/lib/config.js:68:14)
-4 verbose stack     at Object.commandCache.(anonymous function) (/Users/zkat/Documents/code/work/npm/lib/npm.js:156:13)
-4 verbose stack     at EventEmitter.<anonymous> (/Users/zkat/Documents/code/work/npm/bin/npm-cli.js:131:30)
-4 verbose stack     at process.internalTickCallback (internal/process/next_tick.js:70:11)
-5 verbose cwd /Users/zkat/Documents/code/work/npm/test/tap/config-private
-6 verbose Darwin 18.0.0
-7 verbose argv "/usr/local/bin/node" "/Users/zkat/Documents/code/work/npm/bin/npm-cli.js" "config" "get" "//registry.npmjs.org/:_password"
-8 verbose node v11.6.0
-9 verbose npm  v6.6.0
-10 error ---sekretz---
-11 verbose exit [ 1, true ]
diff --git a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_57_730Z-debug.log b/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_57_730Z-debug.log
deleted file mode 100644
index 23b9aeb897e949..00000000000000
--- a/deps/npm/test/npm_cache/_logs/2019-01-18T17_41_57_730Z-debug.log
+++ /dev/null
@@ -1,26 +0,0 @@
-0 info it worked if it ends with ok
-1 verbose cli [ '/usr/local/bin/node',
-1 verbose cli   '/Users/zkat/Documents/code/work/npm/bin/npm-cli.js',
-1 verbose cli   'deprecate',
-1 verbose cli   'cond@-9001',
-1 verbose cli   'make it dead',
-1 verbose cli   '--registry',
-1 verbose cli   'http://localhost:1337' ]
-2 info using npm@6.6.0
-3 info using node@v11.6.0
-4 verbose npm-session 754b761c5653fbe8
-5 verbose stack Error: invalid version range: -9001
-5 verbose stack     at BB.try (/Users/zkat/Documents/code/work/npm/lib/deprecate.js:52:13)
-5 verbose stack     at tryCatcher (/Users/zkat/Documents/code/work/npm/node_modules/bluebird/js/release/util.js:16:23)
-5 verbose stack     at Function.Promise.attempt.Promise.try (/Users/zkat/Documents/code/work/npm/node_modules/bluebird/js/release/method.js:39:29)
-5 verbose stack     at EventEmitter.deprecate (/Users/zkat/Documents/code/work/npm/lib/deprecate.js:42:16)
-5 verbose stack     at Object.commandCache.(anonymous function) (/Users/zkat/Documents/code/work/npm/lib/npm.js:156:13)
-5 verbose stack     at EventEmitter.<anonymous> (/Users/zkat/Documents/code/work/npm/bin/npm-cli.js:131:30)
-5 verbose stack     at process.internalTickCallback (internal/process/next_tick.js:70:11)
-6 verbose cwd /Users/zkat/Documents/code/work/npm
-7 verbose Darwin 18.0.0
-8 verbose argv "/usr/local/bin/node" "/Users/zkat/Documents/code/work/npm/bin/npm-cli.js" "deprecate" "cond@-9001" "make it dead" "--registry" "http://localhost:1337"
-9 verbose node v11.6.0
-10 verbose npm  v6.6.0
-11 error invalid version range: -9001
-12 verbose exit [ 1, true ]
diff --git a/deps/npm/test/npm_cache/_logs/2019-01-18T17_42_14_004Z-debug.log b/deps/npm/test/npm_cache/_logs/2019-01-18T17_42_14_004Z-debug.log
deleted file mode 100644
index 737b59e4b61831..00000000000000
--- a/deps/npm/test/npm_cache/_logs/2019-01-18T17_42_14_004Z-debug.log
+++ /dev/null
@@ -1,111 +0,0 @@
-0 info it worked if it ends with ok
-1 verbose cli [ '/usr/local/bin/node',
-1 verbose cli   '/Users/zkat/Documents/code/work/npm/bin/npm-cli.js',
-1 verbose cli   'install',
-1 verbose cli   '--no-save',
-1 verbose cli   '../test-whoops-1.0.0.tgz' ]
-2 info using npm@6.6.0
-3 info using node@v11.6.0
-4 verbose npm-session 6b1152dff5d8deaa
-5 silly install loadCurrentTree
-6 silly install readLocalPackageData
-7 silly pacote file manifest for undefined@file:../test-whoops-1.0.0.tgz fetched in 26ms
-8 timing stage:loadCurrentTree Completed in 40ms
-9 silly install loadIdealTree
-10 silly install cloneCurrentTreeToIdealTree
-11 timing stage:loadIdealTree:cloneCurrentTree Completed in 0ms
-12 silly install loadShrinkwrap
-13 timing stage:loadIdealTree:loadShrinkwrap Completed in 1ms
-14 silly install loadAllDepsIntoIdealTree
-15 silly resolveWithNewModule @test/whoops@1.0.0 checking installable status
-16 timing stage:loadIdealTree:loadAllDepsIntoIdealTree Completed in 5ms
-17 timing stage:loadIdealTree Completed in 7ms
-18 silly currentTree gently-rm-overeager
-19 silly idealTree gently-rm-overeager
-19 silly idealTree └── @test/whoops@1.0.0
-20 silly install generateActionsToTake
-21 timing stage:generateActionsToTake Completed in 4ms
-22 silly diffTrees action count 1
-23 silly diffTrees add @test/whoops@1.0.0
-24 silly decomposeActions action count 8
-25 silly decomposeActions fetch @test/whoops@1.0.0
-26 silly decomposeActions extract @test/whoops@1.0.0
-27 silly decomposeActions preinstall @test/whoops@1.0.0
-28 silly decomposeActions build @test/whoops@1.0.0
-29 silly decomposeActions install @test/whoops@1.0.0
-30 silly decomposeActions postinstall @test/whoops@1.0.0
-31 silly decomposeActions finalize @test/whoops@1.0.0
-32 silly decomposeActions refresh-package-json @test/whoops@1.0.0
-33 silly install executeActions
-34 silly doSerial global-install 8
-35 verbose correctMkdir /Users/zkat/Documents/code/work/npm/test/npm_cache/_locks correctMkdir not in flight; initializing
-36 verbose lock using /Users/zkat/Documents/code/work/npm/test/npm_cache/_locks/staging-6ede0a15658ba472.lock for /Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager/node_modules/.staging
-37 silly doParallel extract 1
-38 silly extract @test/whoops@1.0.0
-39 silly tarball trying file:../test-whoops-1.0.0.tgz by hash: sha512-yaIGW7l0bldKVBrwYbeICUjTDkfbHcNWwxS9k0sBaYlNaW6DO9Y7bFPLlz0UuAZLWwQXfEAuNHdw3fu7x8kGyw==
-40 silly extract file:../test-whoops-1.0.0.tgz extracted to /Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager/node_modules/.staging/@test/whoops-283f4c1a (13ms)
-41 timing action:extract Completed in 16ms
-42 silly doReverseSerial unbuild 8
-43 silly doSerial remove 8
-44 silly doSerial move 8
-45 silly doSerial finalize 8
-46 silly finalize /Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager/node_modules/@test/whoops
-47 timing action:finalize Completed in 4ms
-48 silly doParallel refresh-package-json 1
-49 silly refresh-package-json /Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager/node_modules/@test/whoops
-50 timing action:refresh-package-json Completed in 7ms
-51 silly doParallel preinstall 1
-52 silly preinstall @test/whoops@1.0.0
-53 info lifecycle @test/whoops@1.0.0~preinstall: @test/whoops@1.0.0
-54 timing action:preinstall Completed in 1ms
-55 silly doSerial build 8
-56 silly build @test/whoops@1.0.0
-57 info linkStuff @test/whoops@1.0.0
-58 silly linkStuff @test/whoops@1.0.0 has /Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager/node_modules as its parent node_modules
-59 timing action:build Completed in 1ms
-60 silly doSerial global-link 8
-61 silly doParallel update-linked 0
-62 silly doSerial install 8
-63 silly install @test/whoops@1.0.0
-64 info lifecycle @test/whoops@1.0.0~install: @test/whoops@1.0.0
-65 timing action:install Completed in 1ms
-66 silly doSerial postinstall 8
-67 silly postinstall @test/whoops@1.0.0
-68 info lifecycle @test/whoops@1.0.0~postinstall: @test/whoops@1.0.0
-69 verbose lifecycle @test/whoops@1.0.0~postinstall: unsafe-perm in lifecycle true
-70 verbose lifecycle @test/whoops@1.0.0~postinstall: PATH: /Users/zkat/Documents/code/work/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager/node_modules/@test/whoops/node_modules/.bin:/Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager/node_modules/.bin:/Users/zkat/Documents/code/work/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/zkat/Documents/code/work/npm/node_modules/.bin:/Users/zkat/Documents/code/work/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/zkat/Documents/code/work/npm/node_modules/.bin:/Users/zkat/Documents/code/work/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/zkat/Documents/code/work/npm/node_modules/.bin:/Users/zkat/bin:/usr/local/opt/coreutils/libexec/gnubin:/Users/zkat/.cargo/bin:/usr/local/heroku/bin:/usr/local/bin:/Users/zkat/bin:/Applications/Postgres.app/Contents/MacOS/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/local/bin:/opt/local/sbin:/opt/X11/bin
-71 verbose lifecycle @test/whoops@1.0.0~postinstall: CWD: /Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager/node_modules/@test/whoops
-72 silly lifecycle @test/whoops@1.0.0~postinstall: Args: [ '-c', "echo 'nope' && exit 1" ]
-73 silly lifecycle @test/whoops@1.0.0~postinstall: Returned: code: 1  signal: null
-74 info lifecycle @test/whoops@1.0.0~postinstall: Failed to exec postinstall script
-75 timing action:postinstall Completed in 70ms
-76 verbose unlock done using /Users/zkat/Documents/code/work/npm/test/npm_cache/_locks/staging-6ede0a15658ba472.lock for /Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager/node_modules/.staging
-77 timing stage:rollbackFailedOptional Completed in 3ms
-78 timing stage:runTopLevelLifecycles Completed in 163ms
-79 warn enoent ENOENT: no such file or directory, open '/Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager/package.json'
-80 verbose enoent This is related to npm not being able to find a file.
-81 warn gently-rm-overeager No description
-82 warn gently-rm-overeager No repository field.
-83 warn gently-rm-overeager No README data
-84 warn gently-rm-overeager No license field.
-85 verbose stack Error: @test/whoops@1.0.0 postinstall: `echo 'nope' && exit 1`
-85 verbose stack Exit status 1
-85 verbose stack     at EventEmitter.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/npm-lifecycle/index.js:301:16)
-85 verbose stack     at EventEmitter.emit (events.js:188:13)
-85 verbose stack     at ChildProcess.<anonymous> (/Users/zkat/Documents/code/work/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
-85 verbose stack     at ChildProcess.emit (events.js:188:13)
-85 verbose stack     at maybeClose (internal/child_process.js:978:16)
-85 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:265:5)
-86 verbose pkgid @test/whoops@1.0.0
-87 verbose cwd /Users/zkat/Documents/code/work/npm/test/tap/gently-rm-overeager/gently-rm-overeager
-88 verbose Darwin 18.0.0
-89 verbose argv "/usr/local/bin/node" "/Users/zkat/Documents/code/work/npm/bin/npm-cli.js" "install" "--no-save" "../test-whoops-1.0.0.tgz"
-90 verbose node v11.6.0
-91 verbose npm  v6.6.0
-92 error code ELIFECYCLE
-93 error errno 1
-94 error @test/whoops@1.0.0 postinstall: `echo 'nope' && exit 1`
-94 error Exit status 1
-95 error Failed at the @test/whoops@1.0.0 postinstall script.
-95 error This is probably not a problem with npm. There is likely additional logging output above.
-96 verbose exit [ 1, true ]
diff --git a/deps/npm/test/npm_cache/anonymous-cli-metrics.json b/deps/npm/test/npm_cache/anonymous-cli-metrics.json
deleted file mode 100644
index 11494d570fed83..00000000000000
--- a/deps/npm/test/npm_cache/anonymous-cli-metrics.json
+++ /dev/null
@@ -1 +0,0 @@
-{"metricId":"74dc70f8-4d64-41cc-827f-aaa481242c7d","metrics":{"from":"2018-12-10T23:39:04.702Z","to":"2019-01-28T23:28:15.706Z","successfulInstalls":66,"failedInstalls":13}}
\ No newline at end of file
diff --git a/deps/npm/test/tap/404-parent.js b/deps/npm/test/tap/404-parent.js
index 4321f7d829b25f..67835efc1df102 100644
--- a/deps/npm/test/tap/404-parent.js
+++ b/deps/npm/test/tap/404-parent.js
@@ -14,7 +14,7 @@ test('404-parent: if parent exists, specify parent in error message', function (
   rimraf.sync(path.resolve(pkg, 'node_modules'))
   performInstall(function (err) {
     t.ok(err instanceof Error, 'error was returned')
-    t.ok(err.parent === '404-parent-test', "error's parent set")
+    t.equal(err.parent, '404-parent', "error's parent set")
     t.end()
   })
 })
diff --git a/deps/npm/test/tap/404.js b/deps/npm/test/tap/404.js
new file mode 100644
index 00000000000000..710780ad26e60c
--- /dev/null
+++ b/deps/npm/test/tap/404.js
@@ -0,0 +1,72 @@
+'use strict'
+const path = require('path')
+const test = require('tap').test
+const Tacks = require('tacks')
+const File = Tacks.File
+const Dir = Tacks.Dir
+const common = require('../common-tap.js')
+
+const e404 = /test-npm-404@latest' is not in the npm registry/
+const invalidPackage = /Your package name is not valid, because[\s\S]+1\. name can only contain URL-friendly characters/
+
+const basedir = path.join(__dirname, path.basename(__filename, '.js'))
+const testdir = path.join(basedir, 'testdir')
+const cachedir = path.join(basedir, 'cache')
+const globaldir = path.join(basedir, 'global')
+const tmpdir = path.join(basedir, 'tmp')
+
+const env = common.newEnv().extend({
+  npm_config_cache: cachedir,
+  npm_config_tmp: tmpdir,
+  npm_config_prefix: globaldir,
+  npm_config_registry: common.registry,
+  npm_config_loglevel: 'error'
+})
+
+const fixture = new Tacks(Dir({
+  cache: Dir(),
+  global: Dir(),
+  tmp: Dir(),
+  testdir: Dir({
+    'package.json': File({
+      name: 'test',
+      version: '1.0.0'
+    })
+  })
+}))
+
+function setup () {
+  cleanup()
+  fixture.create(basedir)
+}
+
+function cleanup () {
+  fixture.remove(basedir)
+}
+
+test('setup', function (t) {
+  setup()
+  return common.fakeRegistry.listen()
+})
+
+test('404 message for basic package', function (t) {
+  return common.npm(['install', 'test-npm-404'], {cwd: testdir, env}).then(([code, stdout, stderr]) => {
+    t.is(code, 1, 'error code')
+    t.match(stderr, e404, 'error output')
+    t.notMatch(stderr, invalidPackage, 'no invalidity error')
+  })
+})
+
+test('404 message for scoped package', function (t) {
+  return common.npm(['install', '@npm/test-npm-404'], {cwd: testdir, env}).then(([code, stdout, stderr]) => {
+    t.is(code, 1, 'error code')
+    t.match(stderr, e404, 'error output')
+    t.notMatch(stderr, invalidPackage, 'no invalidity error')
+  })
+})
+
+test('cleanup', function (t) {
+  common.fakeRegistry.close()
+  cleanup()
+  t.done()
+})
diff --git a/deps/npm/test/tap/access.js b/deps/npm/test/tap/access.js
index 6a21ccc8fb3ef2..d400b4d33b134c 100644
--- a/deps/npm/test/tap/access.js
+++ b/deps/npm/test/tap/access.js
@@ -469,6 +469,34 @@ test('npm access ls-collaborators on package', function (t) {
   )
 })
 
+test('npm access ls-collaborators on unscoped', function (t) {
+  var serverCollaborators = {
+    'myorg:myteam': 'write',
+    'myorg:anotherteam': 'read'
+  }
+  var clientCollaborators = {
+    'myorg:myteam': 'read-write',
+    'myorg:anotherteam': 'read-only'
+  }
+  server.get(
+    '/-/package/pkg/collaborators?format=cli'
+  ).reply(200, serverCollaborators)
+  common.npm(
+    [
+      'access',
+      'ls-collaborators',
+      'pkg',
+      '--registry', common.registry
+    ],
+    { cwd: pkg },
+    function (er, code, stdout, stderr) {
+      t.ifError(er, 'npm access ls-collaborators')
+      t.same(JSON.parse(stdout), clientCollaborators)
+      t.end()
+    }
+  )
+})
+
 test('npm access ls-collaborators on current w/user filter', function (t) {
   var serverCollaborators = {
     'myorg:myteam': 'write',
diff --git a/deps/npm/test/tap/aliases.js b/deps/npm/test/tap/aliases.js
new file mode 100644
index 00000000000000..19f0b1293e9358
--- /dev/null
+++ b/deps/npm/test/tap/aliases.js
@@ -0,0 +1,268 @@
+'use strict'
+
+const BB = require('bluebird')
+
+const common = require('../common-tap.js')
+const fs = require('graceful-fs')
+const mockTar = require('../util/mock-tarball.js')
+const mr = common.fakeRegistry.compat
+const path = require('path')
+const rimraf = BB.promisify(require('rimraf'))
+const Tacks = require('tacks')
+const { test } = require('tap')
+
+const { Dir, File } = Tacks
+const readdirAsync = BB.promisify(fs.readdir)
+const readFileAsync = BB.promisify(fs.readFile)
+
+const testDir = path.join(__dirname, path.basename(__filename, '.js'))
+
+let server
+test('setup', t => {
+  mr({}, (err, s) => {
+    t.ifError(err, 'registry mocked successfully')
+    server = s
+    t.end()
+  })
+})
+
+test('installs an npm: protocol alias package', t => {
+  const fixture = new Tacks(Dir({
+    'package.json': File({})
+  }))
+  fixture.create(testDir)
+  const packument = {
+    name: 'foo',
+    'dist-tags': { latest: '1.2.4' },
+    versions: {
+      '1.2.3': {
+        name: 'foo',
+        version: '1.2.3',
+        dist: {
+          tarball: `${server.registry}/foo/-/foo-1.2.3.tgz`
+        }
+      },
+      '1.2.4': {
+        name: 'foo',
+        version: '1.2.4',
+        dist: {
+          tarball: `${server.registry}/foo/-/foo-1.2.4.tgz`
+        }
+      }
+    }
+  }
+  server.get('/foo').reply(200, packument)
+  return mockTar({
+    'package.json': JSON.stringify({
+      name: 'foo',
+      version: '1.2.3'
+    })
+  }).then(tarball => {
+    server.get('/foo/-/foo-1.2.3.tgz').reply(200, tarball)
+    server.get('/foo/-/foo-1.2.4.tgz').reply(200, tarball)
+    return common.npm([
+      'install', 'foo@1.2.3',
+      '--cache', path.join(testDir, 'npmcache'),
+      '--registry', server.registry
+    ], { cwd: testDir })
+  }).then(([code, stdout, stderr]) => {
+    t.equal(code, 0)
+    t.comment(stdout)
+    t.comment(stderr)
+    return common.npm([
+      'install', 'bar@npm:foo@1.2.3',
+      '--cache', path.join(testDir, 'npmcache'),
+      '--registry', server.registry
+    ], { cwd: testDir })
+  }).then(([code, stdout, stderr]) => {
+    t.equal(code, 0)
+    t.comment(stdout)
+    t.comment(stderr)
+    t.match(stdout, /\+ foo@1\.2\.3 \(as bar\)/, 'useful message')
+    return readFileAsync(
+      path.join(testDir, 'node_modules', 'bar', 'package.json'),
+      'utf8'
+    )
+  }).then(JSON.parse).then(pkg => {
+    t.similar(pkg, {
+      name: 'foo',
+      version: '1.2.3'
+    }, 'successfully installed foo as bar in node_modules')
+    return common.npm(['ls', '--json'], { cwd: testDir })
+  }).then(([code, stdout, stderr]) => {
+    t.comment(stdout)
+    t.comment(stderr)
+    t.equal(code, 0, 'ls is clean')
+    t.deepEqual(JSON.parse(stdout), {
+      dependencies: {
+        bar: {
+          version: '1.2.3',
+          from: 'bar@npm:foo@1.2.3',
+          resolved: 'http://localhost:1337/foo/-/foo-1.2.3.tgz'
+        },
+        foo: {
+          version: '1.2.3',
+          from: 'foo@1.2.3',
+          resolved: 'http://localhost:1337/foo/-/foo-1.2.3.tgz'
+        }
+      }
+    }, 'both dependencies listed correctly')
+    return common.npm([
+      'outdated', '--json',
+      '--registry', server.registry
+    ], { cwd: testDir })
+  }).then(([code, stdout, stderr]) => {
+    t.equal(code, 1, 'non-zero because some packages outdated')
+    t.comment(stdout)
+    t.comment(stderr)
+    const parsed = JSON.parse(stdout)
+    t.deepEqual(parsed, {
+      foo: {
+        current: '1.2.3',
+        wanted: '1.2.4',
+        latest: '1.2.4',
+        location: 'node_modules/foo'
+      },
+      bar: {
+        current: 'npm:foo@1.2.3',
+        wanted: 'npm:foo@1.2.4',
+        latest: 'npm:foo@1.2.4',
+        location: 'node_modules/bar'
+      }
+    }, 'both regular and aliased dependency reported')
+    return common.npm([
+      'update',
+      '--registry', server.registry
+    ], { cwd: testDir })
+  }).then(([code, stdout, stderr]) => {
+    t.equal(code, 0, 'update succeeded')
+    t.comment(stdout)
+    t.comment(stderr)
+    return common.npm(['ls', '--json'], { cwd: testDir })
+  }).then(([code, stdout, stderr]) => {
+    t.equal(code, 0, 'ls succeeded')
+    t.comment(stdout)
+    t.comment(stderr)
+    const parsed = JSON.parse(stdout)
+    t.deepEqual(parsed, {
+      dependencies: {
+        bar: {
+          version: '1.2.4',
+          from: 'bar@npm:foo@1.2.4',
+          resolved: 'http://localhost:1337/foo/-/foo-1.2.4.tgz'
+        },
+        foo: {
+          version: '1.2.4',
+          from: 'foo@1.2.4',
+          resolved: 'http://localhost:1337/foo/-/foo-1.2.4.tgz'
+        }
+      }
+    }, 'ls shows updated packages')
+    return common.npm([
+      'rm', 'bar',
+      '--registry', server.registry
+    ], { cwd: testDir })
+  }).then(([code, stdout, stderr]) => {
+    t.equal(code, 0, 'rm succeeded')
+    t.comment(stdout)
+    t.comment(stderr)
+    t.match(stdout, 'removed 1 package', 'notified of removed package')
+    return readdirAsync(path.join(testDir, 'node_modules'))
+  }).then(dir => {
+    t.deepEqual(dir, ['foo'], 'regular foo left in place')
+  }).then(() => rimraf(testDir))
+})
+
+test('installs a tarball dep as a different name than package.json', t => {
+  return mockTar({
+    'package.json': JSON.stringify({
+      name: 'foo',
+      version: '1.2.3'
+    })
+  }).then(tarball => {
+    const fixture = new Tacks(Dir({
+      'package.json': File({}),
+      'foo.tgz': File(tarball)
+    }))
+    fixture.create(testDir)
+    return common.npm([
+      'install', 'file:foo.tgz',
+      '--cache', path.join(testDir, 'npmcache'),
+      '--registry', server.registry
+    ], { cwd: testDir })
+  }).then(([code, stdout, stderr]) => {
+    return common.npm([
+      'install', 'bar@file:foo.tgz',
+      '--cache', path.join(testDir, 'npmcache'),
+      '--registry', server.registry
+    ], { cwd: testDir })
+  }).then(([code, stdout, stderr]) => {
+    t.comment(stdout)
+    t.comment(stderr)
+    t.match(stdout, /^\+ foo@1\.2\.3 \(as bar\)/, 'useful message')
+    return readFileAsync(
+      path.join(testDir, 'node_modules', 'bar', 'package.json'),
+      'utf8'
+    )
+  }).then(JSON.parse).then(pkg => {
+    t.similar(pkg, {
+      name: 'foo',
+      version: '1.2.3'
+    }, 'successfully installed foo as bar in node_modules')
+    return common.npm(['ls', '--json'], { cwd: testDir })
+  }).then(([code, stdout, stderr]) => {
+    t.comment(stdout)
+    t.comment(stderr)
+    t.similar(JSON.parse(stdout), {
+      dependencies: {
+        bar: {
+          version: '1.2.3',
+          from: 'file:foo.tgz'
+        },
+        foo: {
+          version: '1.2.3',
+          from: 'file:foo.tgz'
+        }
+      }
+    }, 'both dependencies present')
+  }).then(() => rimraf(testDir))
+})
+
+test('installs a symlink dep as a different name than package.json', t => {
+  const fixture = new Tacks(Dir({
+    'package.json': File({}),
+    'foo': Dir({
+      'package.json': File({
+        name: 'foo',
+        version: '1.2.3'
+      })
+    })
+  }))
+  fixture.create(testDir)
+  return common.npm([
+    'install', 'bar@file:foo',
+    '--cache', path.join(testDir, 'npmcache'),
+    '--registry', server.registry
+  ], { cwd: testDir }).then(([code, stdout, stderr]) => {
+    t.comment(stdout)
+    t.comment(stderr)
+    t.match(stdout, /^\+ foo@1\.2\.3 \(as bar\)/, 'useful message')
+    return readFileAsync(
+      path.join(testDir, 'node_modules', 'bar', 'package.json'),
+      'utf8'
+    )
+  }).then(JSON.parse).then(pkg => {
+    t.similar(pkg, {
+      name: 'foo',
+      version: '1.2.3'
+    }, 'successfully installed foo as bar in node_modules')
+  }).then(() => rimraf(testDir))
+})
+
+test('cleanup', t => {
+  server.close()
+  return rimraf(testDir)
+})
+
+test('npm audit supports aliases')
+test('npm audit fix supports aliases')
diff --git a/deps/npm/test/tap/dedupe-git-semver.js b/deps/npm/test/tap/dedupe-git-semver.js
new file mode 100644
index 00000000000000..21e372e24b0d0e
--- /dev/null
+++ b/deps/npm/test/tap/dedupe-git-semver.js
@@ -0,0 +1,137 @@
+'use strict'
+const fs = require('fs')
+const path = require('path')
+const test = require('tap').test
+const requireInject = require('require-inject')
+const Tacks = require('tacks')
+const File = Tacks.File
+const Dir = Tacks.Dir
+
+const manifests = {
+  'git-wrap': {
+    name: 'git-wrap',
+    version: '1.0.0',
+    dependencies: {
+      git: 'git+https://example.com/git#semver:1.0'
+    }
+  },
+  git: {
+    name: 'git',
+    version: '1.0.0'
+  }
+}
+
+const npm = requireInject.installGlobally('../../lib/npm.js', {
+  pacote: {
+    manifest: function (spec) {
+      const manifest = manifests[spec.name]
+      manifest._requested = spec
+      manifest._resolved = spec.saveSpec.replace(/^file:/, '').replace(/(:?#.*)$/, '#0000000000000000000000000000000000000000')
+      manifest._from = spec.rawSpec
+      return Promise.resolve(manifest)
+    }
+  },
+  '../../lib/utils/output.js': function () {
+    // do not output to stdout
+  }
+})
+
+const basedir = path.join(__dirname, path.basename(__filename, '.js'))
+const testdir = path.join(basedir, 'testdir')
+const cachedir = path.join(basedir, 'cache')
+const tmpdir = path.join(basedir, 'tmp')
+
+const cwd = process.cwd()
+
+const conf = {
+  cache: cachedir,
+  tmp: tmpdir,
+  loglevel: 'silent',
+  'package-lock-only': true
+}
+
+const fixture = new Tacks(Dir({
+  cache: Dir(),
+  global: Dir(),
+  tmp: Dir(),
+  testdir: Dir({
+    'package.json': File({
+      name: 'fixture',
+      version: '1.0.0',
+      dependencies: {
+        git: 'git+https://example.com/git#semver:1',
+        'git-wrap': 'file:git-wrap-1.0.0.tgz'
+      }
+    }),
+    // Tarball source:
+    // 'git-wrap': Dir({
+    //   'package.json': File({
+    //     name: 'git-wrap',
+    //     version: '1.0.0',
+    //     dependencies: {
+    //       git: 'git+https://example.com/git#semver:1.0'
+    //     }
+    //   })
+    // }),
+    'git-wrap-1.0.0.tgz': File(Buffer.from(
+      '1f8b0800000000000003ed8fcd0ac23010843df729423caaf9c13642df26' +
+      'b44bad9a3434f107a4efeec68aa7de2c8898ef32cb0c3bec3a5d1d7503dc' +
+      '8dca0ebeb38b991142a83c27537e44ee30db164a48a994c01987a210a873' +
+      '1f32c5d907dde3299ff68cbf90b7fe08f78c106ab5015a12dab46173edb5' +
+      'a3ebe85ea0f76d676320996062746b70606bb0550b1ea3b84f9e9baf82d5' +
+      '3e04e74bcee1a68d3b01ab3ac3d15f7a30d8586215c59d211bb26fff9e48' +
+      '2412ffcc034458283d00080000',
+      'hex'
+    ))
+  })
+}))
+
+function setup () {
+  cleanup()
+  fixture.create(basedir)
+}
+
+function cleanup () {
+  fixture.remove(basedir)
+}
+
+test('setup', function (t) {
+  setup()
+  process.chdir(testdir)
+  npm.load(conf, function (err) {
+    if (err) throw err
+    t.done()
+  })
+})
+
+test('dedupe matching git semver ranges', function (t) {
+  npm.commands.install(function (err) {
+    if (err) throw err
+    const packageLock = JSON.parse(fs.readFileSync('package-lock.json'))
+    t.same(packageLock, {
+      name: 'fixture',
+      version: '1.0.0',
+      lockfileVersion: 1,
+      requires: true,
+      dependencies: {
+        git: {
+          from: 'git+https://example.com/git#semver:1',
+          version: 'git+https://example.com/git#0000000000000000000000000000000000000000'
+        },
+        'git-wrap': {
+          version: 'file:git-wrap-1.0.0.tgz',
+          requires: {
+            git: 'git+https://example.com/git#semver:1'
+          }
+        }
+      }
+    })
+    t.done()
+  })
+})
+
+test('cleanup', function (t) {
+  process.chdir(cwd)
+  cleanup()
+  t.done()
+})
diff --git a/deps/npm/test/tap/install-actions.js b/deps/npm/test/tap/install-actions.js
index 6ca6e335343819..b34be3ad0dd70a 100644
--- a/deps/npm/test/tap/install-actions.js
+++ b/deps/npm/test/tap/install-actions.js
@@ -91,6 +91,7 @@ test('->dep:b,->optdep:a->dep:b', function (t) {
   moduleA.requires = [moduleB]
 
   var tree = {
+    name: 'tree',
     path: '/',
     package: {
       dependencies: {
@@ -109,13 +110,8 @@ test('->dep:b,->optdep:a->dep:b', function (t) {
   moduleA.parent = tree
   moduleB.parent = tree
 
-  t.plan(3)
   return actions.postinstall('/', moduleA, mockLog).then(() => {
-    throw new Error('was not supposed to succeed')
-  }, (err) => {
-    t.ok(err && err.code === 'ELIFECYCLE', 'Lifecycle failed')
     t.ok(moduleA.failed, 'moduleA (optional dep) is marked failed')
     t.ok(!moduleB.failed, 'moduleB (direct dep of moduleA) is marked as failed')
-    t.end()
   })
 })
diff --git a/deps/npm/test/tap/install-at-sub-path-locally.js b/deps/npm/test/tap/install-at-sub-path-locally.js
new file mode 100644
index 00000000000000..e16b75179ebaf2
--- /dev/null
+++ b/deps/npm/test/tap/install-at-sub-path-locally.js
@@ -0,0 +1,69 @@
+var fs = require('graceful-fs')
+var path = require('path')
+
+var mkdirp = require('mkdirp')
+var osenv = require('osenv')
+var rimraf = require('rimraf')
+var test = require('tap').test
+
+var common = require('../common-tap.js')
+
+var pkg = path.join(__dirname, 'install-at-sub-path-locally')
+
+var EXEC_OPTS = { cwd: pkg, stdio: [0, 1, 2] }
+
+var json = {
+  name: 'install-at-sub-path-locally-mock',
+  version: '0.0.0'
+}
+
+var target = '../package@1.2.3'
+
+test('setup', function (t) {
+  cleanup()
+  t.end()
+})
+
+test('\'npm install ../package@1.2.3\' should install local pkg from sub path', function (t) {
+  setup()
+  common.npm(['install', '--loglevel=silent', target], EXEC_OPTS, function (err, code) {
+    if (err) throw err
+    var p = path.resolve(pkg, 'node_modules/install-at-sub-path-locally-mock/package.json')
+    t.equal(code, 0, 'npm install exited with code')
+    t.ok(JSON.parse(fs.readFileSync(p, 'utf8')))
+    t.end()
+  })
+})
+
+test('\'running npm install ../package@1.2.3\' should not break on sub path re-install', function (t) {
+  common.npm(['install', '--loglevel=silent', target], EXEC_OPTS, function (err, code) {
+    if (err) throw err
+    var p = path.resolve(pkg, 'node_modules/install-at-sub-path-locally-mock/package.json')
+    t.equal(code, 0, 'npm install exited with code')
+    t.ok(JSON.parse(fs.readFileSync(p, 'utf8')))
+    t.end()
+  })
+})
+
+test('cleanup', function (t) {
+  cleanup()
+  t.end()
+})
+
+function cleanup () {
+  process.chdir(osenv.tmpdir())
+  rimraf.sync(pkg)
+  rimraf.sync(path.resolve(pkg, target))
+}
+
+function setup () {
+  cleanup()
+  var root = path.resolve(pkg, target)
+  mkdirp.sync(root)
+  fs.writeFileSync(
+    path.join(root, 'package.json'),
+    JSON.stringify(json, null, 2)
+  )
+  mkdirp.sync(path.resolve(pkg, 'node_modules'))
+  process.chdir(pkg)
+}
diff --git a/deps/npm/test/tap/install-before.js b/deps/npm/test/tap/install-before.js
new file mode 100644
index 00000000000000..c99b996c43029d
--- /dev/null
+++ b/deps/npm/test/tap/install-before.js
@@ -0,0 +1,89 @@
+'use strict'
+
+const BB = require('bluebird')
+
+const common = require('../common-tap.js')
+const mockTar = require('../util/mock-tarball.js')
+const mr = common.fakeRegistry.compat
+const path = require('path')
+const rimraf = BB.promisify(require('rimraf'))
+const Tacks = require('tacks')
+const { test } = require('tap')
+
+const { Dir, File } = Tacks
+
+const testDir = path.join(__dirname, path.basename(__filename, '.js'))
+
+let server
+test('setup', t => {
+  mr({}, (err, s) => {
+    t.ifError(err, 'registry mocked successfully')
+    server = s
+    t.end()
+  })
+})
+
+test('installs an npm package before a certain date', t => {
+  const fixture = new Tacks(Dir({
+    'package.json': File({})
+  }))
+  fixture.create(testDir)
+  const packument = {
+    name: 'foo',
+    'dist-tags': { latest: '1.2.4' },
+    versions: {
+      '1.2.3': {
+        name: 'foo',
+        version: '1.2.3',
+        dist: {
+          tarball: `${server.registry}/foo/-/foo-1.2.3.tgz`
+        }
+      },
+      '1.2.4': {
+        name: 'foo',
+        version: '1.2.4',
+        dist: {
+          tarball: `${server.registry}/foo/-/foo-1.2.4.tgz`
+        }
+      }
+    },
+    time: {
+      created: '2017-01-01T00:00:01.000Z',
+      modified: '2018-01-01T00:00:01.000Z',
+      '1.2.3': '2017-01-01T00:00:01.000Z',
+      '1.2.4': '2018-01-01T00:00:01.000Z'
+    }
+  }
+  server.get('/foo').reply(200, packument)
+  return mockTar({
+    'package.json': JSON.stringify({
+      name: 'foo',
+      version: '1.2.3'
+    })
+  }).then(tarball => {
+    server.get('/foo/-/foo-1.2.3.tgz').reply(200, tarball)
+    server.get('/foo/-/foo-1.2.4.tgz').reply(500)
+    return common.npm([
+      'install', 'foo',
+      '--before', '2018',
+      '--json',
+      '--cache', path.join(testDir, 'npmcache'),
+      '--registry', server.registry
+    ], { cwd: testDir })
+  }).then(([code, stdout, stderr]) => {
+    t.comment(stdout)
+    t.comment(stderr)
+    t.like(JSON.parse(stdout), {
+      added: [{
+        action: 'add',
+        name: 'foo',
+        version: '1.2.3'
+      }]
+    }, 'installed the 2017 version of the package')
+  })
+})
+
+test('cleanup', t => {
+  server.close()
+  return rimraf(testDir)
+})
diff --git a/deps/npm/test/tap/install-package-lock-only.js b/deps/npm/test/tap/install-package-lock-only.js
index 9d8aa8dbec3134..1610988851c12c 100644
--- a/deps/npm/test/tap/install-package-lock-only.js
+++ b/deps/npm/test/tap/install-package-lock-only.js
@@ -28,6 +28,18 @@ var conf = {
   })
 }
 
+const confPkgLockFalse = {
+  cwd: testdir,
+  env: Object.assign({}, process.env, {
+    npm_config_cache: cachedir,
+    npm_config_tmp: tmpdir,
+    npm_config_prefix: globaldir,
+    npm_config_registry: common.registry,
+    npm_config_loglevel: 'warn',
+    npm_config_package_lock: false
+  })
+}
+
 var server
 var fixture = new Tacks(Dir({
   cache: Dir(),
@@ -54,7 +66,6 @@ function cleanup () {
 }
 
 test('setup', function (t) {
-  setup()
   mr({port: common.port, throwOnUnmatched: true}, function (err, s) {
     if (err) throw err
     server = s
@@ -63,6 +74,7 @@ test('setup', function (t) {
 })
 
 test('package-lock-only', function (t) {
+  setup()
   return common.npm(['install', '--package-lock-only'], conf).spread((code, stdout, stderr) => {
     t.is(code, 0, 'command ran ok')
     t.comment(stdout.trim())
@@ -78,6 +90,32 @@ test('package-lock-only', function (t) {
   })
 })
 
+test('--package-lock-only with --package-lock negates `package_lock: false`', function (t) {
+  setup()
+  return common.npm(['install', '--package-lock', '--package-lock-only'], confPkgLockFalse).spread((code, stdout, stderr) => {
+    t.is(code, 0, 'ok')
+    t.comment(stdout.trim())
+    t.comment(stderr.trim())
+
+    // Verify that package-lock.json exists.
+    t.ok(fs.existsSync(pkgLockPath), 'ensure that package-lock.json was created')
+    t.end()
+  })
+})
+
+test('package-lock-only creates package_lock.json when config has `package_lock: false`', function (t) {
+  setup()
+  return common.npm(['install', '--package-lock-only'], confPkgLockFalse).spread((code, stdout, stderr) => {
+    t.is(code, 0, 'ok')
+    t.comment(stdout.trim())
+    t.comment(stderr.trim())
+
+    // Verify that package-lock.json exists.
+    t.ok(fs.existsSync(pkgLockPath), 'ensure that package-lock.json was created')
+    t.end()
+  })
+})
+
 test('cleanup', function (t) {
   server.close()
   cleanup()
diff --git a/deps/npm/test/tap/ls-peer.js b/deps/npm/test/tap/ls-peer.js
new file mode 100644
index 00000000000000..826380932a1470
--- /dev/null
+++ b/deps/npm/test/tap/ls-peer.js
@@ -0,0 +1,123 @@
+'use strict'
+const path = require('path')
+const test = require('tap').test
+const Tacks = require('tacks')
+const File = Tacks.File
+const Dir = Tacks.Dir
+const common = require('../common-tap.js')
+
+const basedir = path.join(__dirname, path.basename(__filename, '.js'))
+const testdir = path.join(basedir, 'testdir')
+const cachedir = path.join(basedir, 'cache')
+const globaldir = path.join(basedir, 'global')
+const tmpdir = path.join(basedir, 'tmp')
+
+const conf = {
+  cwd: testdir,
+  env: common.newEnv().extend({
+    npm_config_cache: cachedir,
+    npm_config_tmp: tmpdir,
+    npm_config_prefix: globaldir,
+    npm_config_registry: common.registry,
+    npm_config_loglevel: 'warn'
+  })
+}
+
+const fixture = new Tacks(Dir({
+  cache: Dir(),
+  global: Dir(),
+  tmp: Dir(),
+  testdir: Dir({
+    'package.json': File({
+      name: 'fixture',
+      version: '1.0.0',
+      dependencies: {
+        dep: 'file:dep-1.0.0.tgz',
+        'peer-dep': 'file:peer-dep-2.0.0.tgz'
+      }
+    }),
+    // Source dir
+    // dep: Dir({
+    //   'package.json': File({
+    //     name: 'dep',
+    //     version: '1.0.0',
+    //     peerDependencies: {
+    //       'peer-dep': 'file:peer-dep-1.0.0.tgz'
+    //     }
+    //   })
+    // }),
+    'dep-1.0.0.tgz': File(Buffer.from(
+      '1f8b0800000000000003ed8f3d0ec2300c853be71451661a1cd166e8cc45' +
+      'a2d654e1278d92c200eadd491a60ea462584946fb1f5fc9e655bd59e548f' +
+      '5b9b2a3ffac1142b0300b2aae8921e1152d062574b10424a08bed0d4d10f' +
+      '6b1fb2c4d58fca8553bedd937ea19ffa273c08a5cca80bb286b20e2ddb44' +
+      'e186ceebc1444d70e090548be8f668d174685a8d3e8c63fc3529633a040e' +
+      'fa8ccd5b28e7381ffb3b0bce894ce4d70f6732994c66e60975aec5690008' +
+      '0000',
+      'hex'
+    )),
+    // Source dir
+    // 'peer-dep': Dir({
+    //   'package.json': File({
+    //     name: 'peer-dep',
+    //     version: '2.0.0'
+    //   })
+    // }),
+    'peer-dep-1.0.0.tgz': File(Buffer.from(
+      '1f8b08000000000000032b484cce4e4c4fd52f80d07a59c5f9790c540606' +
+      '06066626260ad8c4c1c0d45c81c1d8d4ccc0d0d0cccc00a80ec830353500' +
+      'd2d4760836505a5c925804740aa5e640bca200a78708a8e6525050ca4bcc' +
+      '4d55b252502a484d2dd24d492d50d2018996a5161567e6e781240cf50cf4' +
+      '0c94b86ab906dab9a360148c8251300aa80400c1c67f6300080000',
+      'hex'
+    )),
+    'peer-dep-2.0.0.tgz': File(Buffer.from(
+      '1f8b08000000000000032b484cce4e4c4fd52f80d07a59c5f9790c540606' +
+      '06066626260ad8c4c1c0d45c81c1d8d4ccc0d0d0cccc00a80ec830353500' +
+      'd2d4760836505a5c925804740aa5e640bca200a78708a8e6525050ca4bcc' +
+      '4d55b252502a484d2dd24d492d50d2018996a5161567e6e781248cf40cf4' +
+      '0c94b86ab906dab9a360148c8251300aa80400cb30060800080000',
+      'hex'
+    ))
+  })
+}))
+
+function setup () {
+  cleanup()
+  fixture.create(basedir)
+}
+
+function cleanup () {
+  fixture.remove(basedir)
+}
+
+test('setup', t => {
+  setup()
+  return common.fakeRegistry.listen().then(() => common.npm(['install'], conf))
+})
+
+test('list warns about unmet peer dependency', t => {
+  return common.npm(['ls'], conf).then(([code, stdout, stderr]) => {
+    t.is(code, 1, 'command ran not ok')
+    t.comment(stdout.trim())
+    t.comment(stderr.trim())
+    t.match(stdout, 'UNMET PEER DEPENDENCY peer-dep@2.0.0')
+    t.match(stderr, 'npm ERR! peer dep missing: peer-dep@file:peer-dep-1.0.0.tgz, required by dep@1.0.0')
+  })
+})
+
+test('list shows installed but unmet peer dependency', t => {
+  return common.npm(['ls', 'peer-dep'], conf).then(([code, stdout, stderr]) => {
+    t.is(code, 1, 'command ran not ok')
+    t.comment(stdout.trim())
+    t.comment(stderr.trim())
+    t.match(stdout, 'UNMET PEER DEPENDENCY peer-dep@2.0.0')
+    t.match(stderr, 'npm ERR! peer dep missing: peer-dep@file:peer-dep-1.0.0.tgz, required by dep@1.0.0')
+  })
+})
+
+test('cleanup', t => {
+  common.fakeRegistry.close()
+  cleanup()
+  t.done()
+})
diff --git a/deps/npm/test/tap/outdated-symlink.js b/deps/npm/test/tap/outdated-symlink.js
new file mode 100644
index 00000000000000..96d6f660e21008
--- /dev/null
+++ b/deps/npm/test/tap/outdated-symlink.js
@@ -0,0 +1,133 @@
+'use strict'
+const path = require('path')
+const test = require('tap').test
+const mr = require('npm-registry-mock')
+const Tacks = require('tacks')
+const File = Tacks.File
+const Symlink = Tacks.Symlink
+const Dir = Tacks.Dir
+const common = require('../common-tap.js')
+
+const basedir = path.join(__dirname, path.basename(__filename, '.js'))
+const testdir = path.join(basedir, 'testdir')
+const cachedir = path.join(basedir, 'cache')
+const globaldir = path.join(basedir, 'global')
+const tmpdir = path.join(basedir, 'tmp')
+
+const conf = {
+  cwd: path.join(testdir, 'main'),
+  env: Object.assign({}, process.env, {
+    npm_config_cache: cachedir,
+    npm_config_tmp: tmpdir,
+    npm_config_prefix: globaldir,
+    npm_config_registry: common.registry,
+    npm_config_loglevel: 'warn'
+  })
+}
+
+let server
+const fixture = new Tacks(Dir({
+  cache: Dir(),
+  global: Dir(),
+  tmp: Dir(),
+  testdir: Dir({
+    broken: Dir({
+      'package.json': File({
+        name: 'broken',
+        version: '1.0.0'
+      })
+    }),
+    main: Dir({
+      node_modules: Dir({
+        unbroken: Symlink('/testdir/unbroken')
+      }),
+      'package-lock.json': File({
+        name: 'main',
+        version: '1.0.0',
+        lockfileVersion: 1,
+        requires: true,
+        dependencies: {
+          broken: {
+            version: 'file:../broken'
+          },
+          unbroken: {
+            version: 'file:../unbroken'
+          }
+        }
+      }),
+      'package.json': File({
+        name: 'main',
+        version: '1.0.0',
+        dependencies: {
+          broken: 'file:../broken',
+          unbroken: 'file:../unbroken'
+        }
+      })
+    }),
+    unbroken: Dir({
+      'package.json': File({
+        name: 'unbroken',
+        version: '1.0.0'
+      })
+    })
+  })
+}))
+
+function setup () {
+  cleanup()
+  fixture.create(basedir)
+}
+
+function cleanup () {
+  fixture.remove(basedir)
+}
+
+test('setup', function (t) {
+  setup()
+  mr({port: common.port, throwOnUnmatched: true}, function (err, s) {
+    if (err) throw err
+    server = s
+    t.done()
+  })
+})
+
+test('outdated sees broken links', function (t) {
+  common.npm(['outdated', '--json'], conf, function (err, code, stdout, stderr) {
+    if (err) throw err
+    t.is(code, 1, 'command ran not ok')
+    t.comment(stderr.trim())
+    t.comment(stdout.trim())
+    t.same(JSON.parse(stdout), {
+      broken: {
+        wanted: 'linked',
+        latest: 'linked',
+        location: ''
+      }
+    })
+    t.done()
+  })
+})
+
+test('outdated with long output sees broken links', function (t) {
+  common.npm(['outdated', '--long', '--json'], conf, function (err, code, stdout, stderr) {
+    if (err) throw err
+    t.is(code, 1, 'command ran not ok')
+    t.comment(stderr.trim())
+    t.comment(stdout.trim())
+    t.same(JSON.parse(stdout), {
+      broken: {
+        wanted: 'linked',
+        latest: 'linked',
+        type: 'dependencies',
+        location: ''
+      }
+    })
+    t.done()
+  })
+})
+
+test('cleanup', function (t) {
+  server.close()
+  cleanup()
+  t.done()
+})
diff --git a/deps/npm/test/tap/pack-files-and-ignores.js b/deps/npm/test/tap/pack-files-and-ignores.js
index 6d8b43e9d57d7a..3bcb22c7fcbc9d 100644
--- a/deps/npm/test/tap/pack-files-and-ignores.js
+++ b/deps/npm/test/tap/pack-files-and-ignores.js
@@ -402,6 +402,7 @@ test('certain files ignored by default', function (t) {
       'npm-debug.log': File(''),
       '.npmrc': File(''),
       '.foo.swp': File(''),
+      'core': Dir({core: File(''), foo: File('')}),
       '.DS_Store': Dir({foo: File('')}),
       '._ohno': File(''),
       '._ohnoes': Dir({noes: File('')}),
@@ -422,7 +423,11 @@ test('certain files ignored by default', function (t) {
     t.notOk(fileExists('npm-debug.log'), 'npm-debug.log not included')
     t.notOk(fileExists('.npmrc'), '.npmrc not included')
     t.notOk(fileExists('.foo.swp'), '.foo.swp not included')
+    t.ok(fileExists('core'), 'core/ included')
+    t.ok(fileExists('core/foo'), 'core/foo included')
+    t.notOk(fileExists('core/core'), 'core/core not included')
     t.notOk(fileExists('.DS_Store'), '.DS_Store not included')
+    t.notOk(fileExists('.DS_Store/foo'), '.DS_Store/foo not included')
     t.notOk(fileExists('._ohno'), '._ohno not included')
     t.notOk(fileExists('._ohnoes'), '._ohnoes not included')
     t.notOk(fileExists('foo.orig'), 'foo.orig not included')
@@ -450,6 +455,7 @@ test('default-ignored files can be explicitly included', function (t) {
           'npm-debug.log',
           '.npmrc',
           '.foo.swp',
+          'core',
           '.DS_Store',
           '._ohno',
           '._ohnoes',
@@ -469,6 +475,7 @@ test('default-ignored files can be explicitly included', function (t) {
       'npm-debug.log': File(''),
       '.npmrc': File(''),
       '.foo.swp': File(''),
+      'core': Dir({core: File(''), foo: File('')}),
       '.DS_Store': Dir({foo: File('')}),
       '._ohno': File(''),
       '._ohnoes': Dir({noes: File('')}),
@@ -489,6 +496,9 @@ test('default-ignored files can be explicitly included', function (t) {
     t.ok(fileExists('npm-debug.log'), 'npm-debug.log included')
     t.ok(fileExists('.npmrc'), '.npmrc included')
     t.ok(fileExists('.foo.swp'), '.foo.swp included')
+    t.ok(fileExists('core'), 'core/ included')
+    t.ok(fileExists('core/foo'), 'core/foo included')
+    t.ok(fileExists('core/core'), 'core/core included')
     t.ok(fileExists('.DS_Store'), '.DS_Store included')
     t.ok(fileExists('._ohno'), '._ohno included')
     t.ok(fileExists('._ohnoes'), '._ohnoes included')
diff --git a/deps/npm/test/tap/shrinkwrap-local-dependency.js b/deps/npm/test/tap/shrinkwrap-local-dependency.js
index 58974ad72431a4..d1c33b99a5a0b1 100644
--- a/deps/npm/test/tap/shrinkwrap-local-dependency.js
+++ b/deps/npm/test/tap/shrinkwrap-local-dependency.js
@@ -20,8 +20,7 @@ var shrinkwrap = {
       version: 'file:' + unixFormatPath(path.join('mods', 'mod2')),
       dependencies: {
         mod1: {
-          version: 'file:' + unixFormatPath(path.join('mods', 'mod1')),
-          bundled: true
+          version: 'file:' + unixFormatPath(path.join('mods', 'mod1'))
         }
       }
     }
diff --git a/deps/npm/test/tap/spec-local-specifiers.js b/deps/npm/test/tap/spec-local-specifiers.js
index d149b7ea0ea3a6..3601eee5f3c5fc 100644
--- a/deps/npm/test/tap/spec-local-specifiers.js
+++ b/deps/npm/test/tap/spec-local-specifiers.js
@@ -585,9 +585,7 @@ test('save behavior', function (t) {
       var deps = pjson.dependencies || {}
       t.is(deps['sb-transitive'], 'file:../sb-transitive', 'package.json')
       var sdep = shrinkwrap.dependencies['sb-transitive'] || {}
-      var tdep = sdep.dependencies.sbta
-      t.like(tdep, {bundled: true, version: 'file:../sb-transitive/sbta'}, 'npm-shrinkwrap.json transitive dep')
-      t.like(sdep, {bundled: null, version: 'file:../sb-transitive'}, 'npm-shrinkwrap.json direct dep')
+      t.like(sdep, {bundled: null, dependencies: null, version: 'file:../sb-transitive'}, 'npm-shrinkwrap.json direct dep')
       t.done()
     })
   })
diff --git a/deps/npm/test/tap/unit-token-validate-cidr.js b/deps/npm/test/tap/unit-token-validate-cidr.js
index db963c31f386d6..cda91b8f1e0da3 100644
--- a/deps/npm/test/tap/unit-token-validate-cidr.js
+++ b/deps/npm/test/tap/unit-token-validate-cidr.js
@@ -1,7 +1,6 @@
 'use strict'
 const test = require('tap').test
-const requireInject = require('require-inject')
-const validateCIDRList = requireInject('../../lib/token.js', {'../../lib/npm.js': {}})._validateCIDRList
+const validateCIDRList = require('../../lib/token.js')._validateCIDRList
 
 test('validateCIDRList', (t) => {
   t.plan(10)
diff --git a/deps/npm/test/tap/update-symlink.js b/deps/npm/test/tap/update-symlink.js
new file mode 100644
index 00000000000000..79139d306f5fd0
--- /dev/null
+++ b/deps/npm/test/tap/update-symlink.js
@@ -0,0 +1,109 @@
+'use strict'
+const path = require('path')
+const test = require('tap').test
+const mr = require('npm-registry-mock')
+const Tacks = require('tacks')
+const File = Tacks.File
+const Symlink = Tacks.Symlink
+const Dir = Tacks.Dir
+const common = require('../common-tap.js')
+
+const basedir = path.join(__dirname, path.basename(__filename, '.js'))
+const testdir = path.join(basedir, 'testdir')
+const cachedir = path.join(basedir, 'cache')
+const globaldir = path.join(basedir, 'global')
+const tmpdir = path.join(basedir, 'tmp')
+
+const conf = {
+  cwd: path.join(testdir, 'main'),
+  env: Object.assign({}, process.env, {
+    npm_config_cache: cachedir,
+    npm_config_tmp: tmpdir,
+    npm_config_prefix: globaldir,
+    npm_config_registry: common.registry,
+    npm_config_loglevel: 'warn'
+  })
+}
+
+let server
+const fixture = new Tacks(Dir({
+  cache: Dir(),
+  global: Dir(),
+  tmp: Dir(),
+  testdir: Dir({
+    broken: Dir({
+      'package.json': File({
+        name: 'broken',
+        version: '1.0.0'
+      })
+    }),
+    main: Dir({
+      node_modules: Dir({
+        unbroken: Symlink('/testdir/unbroken')
+      }),
+      'package-lock.json': File({
+        name: 'main',
+        version: '1.0.0',
+        lockfileVersion: 1,
+        requires: true,
+        dependencies: {
+          broken: {
+            version: 'file:../broken'
+          },
+          unbroken: {
+            version: 'file:../unbroken'
+          }
+        }
+      }),
+      'package.json': File({
+        name: 'main',
+        version: '1.0.0',
+        dependencies: {
+          broken: 'file:../broken',
+          unbroken: 'file:../unbroken'
+        }
+      })
+    }),
+    unbroken: Dir({
+      'package.json': File({
+        name: 'unbroken',
+        version: '1.0.0'
+      })
+    })
+  })
+}))
+
+function setup () {
+  cleanup()
+  fixture.create(basedir)
+}
+
+function cleanup () {
+  fixture.remove(basedir)
+}
+
+test('setup', function (t) {
+  setup()
+  mr({port: common.port, throwOnUnmatched: true}, function (err, s) {
+    if (err) throw err
+    server = s
+    t.done()
+  })
+})
+
+test('update fixes broken links', function (t) {
+  common.npm(['update'], conf, function (err, code, stdout, stderr) {
+    if (err) throw err
+    t.is(code, 0, 'command ran ok')
+    t.comment(stdout.trim())
+    t.comment(stderr.trim())
+    t.match(stdout, '+ broken@1.0.0')
+    t.done()
+  })
+})
+
+test('cleanup', function (t) {
+  server.close()
+  cleanup()
+  t.done()
+})
diff --git a/deps/npm/test/util/mock-tarball.js b/deps/npm/test/util/mock-tarball.js
new file mode 100644
index 00000000000000..f62eaf4e423d04
--- /dev/null
+++ b/deps/npm/test/util/mock-tarball.js
@@ -0,0 +1,47 @@
+'use strict'
+
+const BB = require('bluebird')
+
+const getStream = require('get-stream')
+const pipeline = require('mississippi').pipeline
+const tar = require('tar-stream')
+const zlib = require('zlib')
+
+module.exports = makeTarball
+function makeTarball (files, opts) {
+  opts = opts || {}
+  const pack = tar.pack()
+  Object.keys(files).forEach(function (filename) {
+    const entry = files[filename]
+    pack.entry({
+      name: (opts.noPrefix ? '' : 'package/') + filename,
+      type: entry.type,
+      size: entry.size,
+      mode: entry.mode,
+      mtime: entry.mtime || new Date(0),
+      linkname: entry.linkname,
+      uid: entry.uid,
+      gid: entry.gid,
+      uname: entry.uname,
+      gname: entry.gname
+    }, typeof files[filename] === 'string'
+      ? files[filename]
+      : files[filename].data)
+  })
+  pack.finalize()
+  return BB.try(() => {
+    if (opts.stream && opts.gzip) {
+      return pipeline(pack, zlib.createGzip())
+    } else if (opts.stream) {
+      return pack
+    } else {
+      return getStream.buffer(pack).then(ret => {
+        if (opts.gzip) {
+          return BB.fromNode(cb => zlib.gzip(ret, cb))
+        } else {
+          return ret
+        }
+      })
+    }
+  })
+}