diff --git a/.eslintrc b/.eslintrc
index 0bf34c83908c72..cf1f7682cdcf91 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -3,15 +3,16 @@ env:
# enable ECMAScript features
ecmaFeatures:
- blockBindings: true
- templateStrings: true
- octalLiterals: true
+ arrowFunctions: true
binaryLiterals: true
- generators: true
+ blockBindings: true
+ classes: true
forOf: true
- objectLiteralShorthandProperties: true
+ generators: true
objectLiteralShorthandMethods: true
- classes: true
+ objectLiteralShorthandProperties: true
+ octalLiterals: true
+ templateStrings: true
rules:
# Possible Errors
diff --git a/.gitignore b/.gitignore
index 4d21d95a75c9b5..a3e3a28b07dc96 100644
--- a/.gitignore
+++ b/.gitignore
@@ -71,6 +71,9 @@ deps/openssl/openssl.xml
deps/openssl/openssl.target.mk
deps/zlib/zlib.target.mk
+# not needed and causes issues for distro packagers
+deps/npm/node_modules/.bin/
+
# build/release artifacts
/*.tar.*
/SHASUMS*.txt*
diff --git a/.mailmap b/.mailmap
index 0906e65c39f29f..75942b20fcf4b0 100644
--- a/.mailmap
+++ b/.mailmap
@@ -66,6 +66,7 @@ Joshua S. Weinstein
Jérémy Lal
Jérémy Lal
Kai Sasaki Lewuathe
+Karl Skomski
Kazuyuki Yamada
Keith M Wesolowski
Kelsey Breseman
@@ -76,6 +77,8 @@ Luke Bayes
Maciej Małecki
Malte-Thorben Bruns
Malte-Thorben Bruns
+Marcin Cieślak
+Marcin Cieślak
Mathias Pettersson
Matthew Lye
Michael Bernstein
diff --git a/AUTHORS b/AUTHORS
index cfcf86132de0ea..4b7d7b8d9e6e07 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -786,5 +786,8 @@ Matt Loring
P.S.V.R
Jacob Edelman
Mike Atkins
+hackerjs <4141095@qq.com>
+Minwoo Jung
+Marcin Cieślak
# Generated by tools/update-authors.sh
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 14edf85c89194e..d8dded0e93dcf4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,362 @@
# Node.js ChangeLog
+## 2015-10-05, Version 4.1.2 (Stable), @rvagg
+
+### Notable changes
+
+_WIP_
+
+### Known issues
+
+See https://github.com/nodejs/node/labels/confirmed-bug for complete and current list of known issues.
+
+* Some problems with unreferenced timers running during `beforeExit` are still to be resolved. See [#1264](https://github.com/nodejs/node/issues/1264).
+* Surrogate pair in REPL can freeze terminal. [#690](https://github.com/nodejs/node/issues/690)
+* Calling `dns.setServers()` while a DNS query is in progress can cause the process to crash on a failed assertion. [#894](https://github.com/nodejs/node/issues/894)
+* `url.resolve` may transfer the auth portion of the url when resolving between two full hosts, see [#1435](https://github.com/nodejs/node/issues/1435).
+
+### Commits
+
+* [[`3de58b9531`](https://github.com/nodejs/node/commit/3de58b9531)] - **benchmark**: update comment in common.js (Minwoo Jung) [#2399](https://github.com/nodejs/node/pull/2399)
+* [[`9e9bfa4dc0`](https://github.com/nodejs/node/commit/9e9bfa4dc0)] - **build**: iojs -> nodejs of release-urlbase (P.S.V.R) [#3015](https://github.com/nodejs/node/pull/3015)
+* [[`8335ec7191`](https://github.com/nodejs/node/commit/8335ec7191)] - **build**: fix some typos inside the configure script (P.S.V.R) [#3016](https://github.com/nodejs/node/pull/3016)
+* [[`798dad24f4`](https://github.com/nodejs/node/commit/798dad24f4)] - **child_process**: `null` channel handle on close (Fedor Indutny) [#3041](https://github.com/nodejs/node/pull/3041)
+* [[`4c8d96bc30`](https://github.com/nodejs/node/commit/4c8d96bc30)] - **crypto**: add more keylen sanity checks in pbkdf2 (Johann) [#3029](https://github.com/nodejs/node/pull/3029)
+* [[`039f73fa83`](https://github.com/nodejs/node/commit/039f73fa83)] - **deps**: remove and gitignore .bin directory (Ben Noordhuis) [#3004](https://github.com/nodejs/node/pull/3004)
+* [[`5fbb24812d`](https://github.com/nodejs/node/commit/5fbb24812d)] - **deps**: backport c281c15 from V8's upstream (Julien Gilli) [#3031](https://github.com/nodejs/node/pull/3031)
+* [[`55a1f94e44`](https://github.com/nodejs/node/commit/55a1f94e44)] - **dns**: remove nonexistant exports.ADNAME (Roman Reiss) [#3051](https://github.com/nodejs/node/pull/3051)
+* [[`6ee5d0f69f`](https://github.com/nodejs/node/commit/6ee5d0f69f)] - **dns**: add missing exports.BADNAME (Roman Reiss) [#3051](https://github.com/nodejs/node/pull/3051)
+* [[`75d5dcea76`](https://github.com/nodejs/node/commit/75d5dcea76)] - **doc**: jenkins-iojs.nodesource.com -> ci.nodejs.org (Michał Gołębiowski) [#2886](https://github.com/nodejs/node/pull/2886)
+* [[`5c3f50b21d`](https://github.com/nodejs/node/commit/5c3f50b21d)] - **doc**: rearrange execSync and execFileSync (Laurent Fortin) [#2940](https://github.com/nodejs/node/pull/2940)
+* [[`4fc33ac11a`](https://github.com/nodejs/node/commit/4fc33ac11a)] - **doc**: make execFileSync in line with execFile (Laurent Fortin) [#2940](https://github.com/nodejs/node/pull/2940)
+* [[`a366e84b17`](https://github.com/nodejs/node/commit/a366e84b17)] - **doc**: fix typos in cluster & errors (reggi) [#3011](https://github.com/nodejs/node/pull/3011)
+* [[`52031e1bf1`](https://github.com/nodejs/node/commit/52031e1bf1)] - **doc**: switch LICENSE from closure-linter to eslint (P.S.V.R) [#3018](https://github.com/nodejs/node/pull/3018)
+* [[`b28f6a53bc`](https://github.com/nodejs/node/commit/b28f6a53bc)] - **docs**: Clarify assert.doesNotThrow behavior (Fabio Oliveira) [#2807](https://github.com/nodejs/node/pull/2807)
+* [[`ac2bce0b0c`](https://github.com/nodejs/node/commit/ac2bce0b0c)] - **path**: improve posixSplitPath performance (Evan Lucas) [#3034](https://github.com/nodejs/node/pull/3034)
+* [[`4fc89939f5`](https://github.com/nodejs/node/commit/4fc89939f5)] - **smalloc**: remove module (Brendan Ashworth) [#3099](https://github.com/nodejs/node/pull/3099)
+* [[`5ec5d0aa8b`](https://github.com/nodejs/node/commit/5ec5d0aa8b)] - **src**: internalize binding function property names (Ben Noordhuis) [#3060](https://github.com/nodejs/node/pull/3060)
+* [[`c8175fc2af`](https://github.com/nodejs/node/commit/c8175fc2af)] - **src**: internalize per-isolate string properties (Ben Noordhuis) [#3060](https://github.com/nodejs/node/pull/3060)
+* [[`9a593abc47`](https://github.com/nodejs/node/commit/9a593abc47)] - **src**: include signal.h in util.h (Cheng Zhao) [#3058](https://github.com/nodejs/node/pull/3058)
+* [[`fde0c6f321`](https://github.com/nodejs/node/commit/fde0c6f321)] - **src**: fix function and variable names in comments (Sakthipriyan Vairamani) [#3039](https://github.com/nodejs/node/pull/3039)
+* [[`1e964bb8e9`](https://github.com/nodejs/node/commit/1e964bb8e9)] - **test**: change calls to deprecated util.print() (Rich Trott) [#3083](https://github.com/nodejs/node/pull/3083)
+* [[`b97358a772`](https://github.com/nodejs/node/commit/b97358a772)] - **test**: replace deprecated util.debug() calls (Rich Trott) [#3082](https://github.com/nodejs/node/pull/3082)
+
+## 2015-09-22, Version 4.1.1 (Stable), @rvagg
+
+### Notable changes
+
+* **buffer**: Fixed a bug introduced in v4.1.0 where allocating a new zero-length buffer can result in the _next_ allocation of a TypedArray in JavaScript not being zero-filled. In certain circumstances this could result in data leakage via reuse of memory space in TypedArrays, breaking the normally safe assumption that TypedArrays should be always zero-filled. (Trevor Norris) [#2931](https://github.com/nodejs/node/pull/2931).
+* **http**: Guard against response-splitting of HTTP trailing headers added via [`response.addTrailers()`](https://nodejs.org/api/http.html#http_response_addtrailers_headers) by removing new-line (`[\r\n]`) characters from values. Note that standard header values are already stripped of new-line characters. The expected security impact is low because trailing headers are rarely used. (Ben Noordhuis) [#2945](https://github.com/nodejs/node/pull/2945).
+* **npm**: Upgrade to npm 2.14.4 from 2.14.3, see [release notes](https://github.com/npm/npm/releases/tag/v2.14.4) for full details (Kat Marchán) [#2958](https://github.com/nodejs/node/pull/2958)
+ - Upgrades `graceful-fs` on multiple dependencies to no longer rely on monkey-patching `fs`
+ - Fix `npm link` for pre-release / RC builds of Node
+* **v8**: Update post-mortem metadata to allow post-mortem debugging tools to find and inspect:
+ - JavaScript objects that use dictionary properties (Julien Gilli) [#2959](https://github.com/nodejs/node/pull/2959)
+ - ScopeInfo and thus closures (Julien Gilli) [#2974](https://github.com/nodejs/node/pull/2974)
+
+### Known issues
+
+See https://github.com/nodejs/node/labels/confirmed-bug for complete and current list of known issues.
+
+* Some problems with unreferenced timers running during `beforeExit` are still to be resolved. See [#1264](https://github.com/nodejs/node/issues/1264).
+* Surrogate pair in REPL can freeze terminal. [#690](https://github.com/nodejs/node/issues/690)
+* Calling `dns.setServers()` while a DNS query is in progress can cause the process to crash on a failed assertion. [#894](https://github.com/nodejs/node/issues/894)
+* `url.resolve` may transfer the auth portion of the url when resolving between two full hosts, see [#1435](https://github.com/nodejs/node/issues/1435).
+
+### Commits
+
+* [[`d63e02e08d`](https://github.com/nodejs/node/commit/d63e02e08d)] - **buffer**: don't set zero fill for zero-length buffer (Trevor Norris) [#2931](https://github.com/nodejs/node/pull/2931)
+* [[`5905b14bff`](https://github.com/nodejs/node/commit/5905b14bff)] - **build**: fix icutrim when building small-icu on BE (Stewart Addison) [#2602](https://github.com/nodejs/node/pull/2602)
+* [[`f010cb5d96`](https://github.com/nodejs/node/commit/f010cb5d96)] - **configure**: detect mipsel host (Jérémy Lal) [#2971](https://github.com/nodejs/node/pull/2971)
+* [[`b93ad5abbd`](https://github.com/nodejs/node/commit/b93ad5abbd)] - **deps**: backport 357e6b9 from V8's upstream (Julien Gilli) [#2974](https://github.com/nodejs/node/pull/2974)
+* [[`8da3da4d41`](https://github.com/nodejs/node/commit/8da3da4d41)] - **deps**: backport ff7d70b from V8's upstream (Julien Gilli) [#2959](https://github.com/nodejs/node/pull/2959)
+* [[`2600fb8ae6`](https://github.com/nodejs/node/commit/2600fb8ae6)] - **deps**: upgraded to node-gyp@3.0.3 in npm (Kat Marchán) [#2958](https://github.com/nodejs/node/pull/2958)
+* [[`793aad2d7a`](https://github.com/nodejs/node/commit/793aad2d7a)] - **deps**: upgrade to npm 2.14.4 (Kat Marchán) [#2958](https://github.com/nodejs/node/pull/2958)
+* [[`43e2b7f836`](https://github.com/nodejs/node/commit/43e2b7f836)] - **doc**: remove usage of events.EventEmitter (Sakthipriyan Vairamani) [#2921](https://github.com/nodejs/node/pull/2921)
+* [[`9c59d2f16a`](https://github.com/nodejs/node/commit/9c59d2f16a)] - **doc**: remove extra using v8::HandleScope statement (Christopher J. Brody) [#2983](https://github.com/nodejs/node/pull/2983)
+* [[`f7edbab367`](https://github.com/nodejs/node/commit/f7edbab367)] - **doc**: clarify description of assert.ifError() (Rich Trott) [#2941](https://github.com/nodejs/node/pull/2941)
+* [[`b2ddf0f9a2`](https://github.com/nodejs/node/commit/b2ddf0f9a2)] - **doc**: refine process.kill() and exit explanations (Rich Trott) [#2918](https://github.com/nodejs/node/pull/2918)
+* [[`f68fed2e6f`](https://github.com/nodejs/node/commit/f68fed2e6f)] - **http**: remove redundant code in _deferToConnect (Malcolm Ahoy) [#2769](https://github.com/nodejs/node/pull/2769)
+* [[`f542e74c93`](https://github.com/nodejs/node/commit/f542e74c93)] - **http**: guard against response splitting in trailers (Ben Noordhuis) [#2945](https://github.com/nodejs/node/pull/2945)
+* [[`bc9f629387`](https://github.com/nodejs/node/commit/bc9f629387)] - **http_parser**: do not dealloc during kOnExecute (Fedor Indutny) [#2956](https://github.com/nodejs/node/pull/2956)
+* [[`1860e0cebd`](https://github.com/nodejs/node/commit/1860e0cebd)] - **lib,src**: remove usage of events.EventEmitter (Sakthipriyan Vairamani) [#2921](https://github.com/nodejs/node/pull/2921)
+* [[`d4cd5ac407`](https://github.com/nodejs/node/commit/d4cd5ac407)] - **readline**: fix tab completion bug (Matt Harrison) [#2816](https://github.com/nodejs/node/pull/2816)
+* [[`9760e04839`](https://github.com/nodejs/node/commit/9760e04839)] - **repl**: don't use tty control codes when $TERM is set to "dumb" (Salman Aljammaz) [#2712](https://github.com/nodejs/node/pull/2712)
+* [[`cb971cc97d`](https://github.com/nodejs/node/commit/cb971cc97d)] - **repl**: backslash bug fix (Sakthipriyan Vairamani) [#2968](https://github.com/nodejs/node/pull/2968)
+* [[`2034f68668`](https://github.com/nodejs/node/commit/2034f68668)] - **src**: honor --abort_on_uncaught_exception flag (Evan Lucas) [#2776](https://github.com/nodejs/node/pull/2776)
+* [[`0b1ca4a9ef`](https://github.com/nodejs/node/commit/0b1ca4a9ef)] - **src**: Add ABORT macro (Evan Lucas) [#2776](https://github.com/nodejs/node/pull/2776)
+* [[`4519dd00f9`](https://github.com/nodejs/node/commit/4519dd00f9)] - **test**: test sync version of mkdir & rmdir (Sakthipriyan Vairamani) [#2588](https://github.com/nodejs/node/pull/2588)
+* [[`816f609c8b`](https://github.com/nodejs/node/commit/816f609c8b)] - **test**: use tmpDir instead of fixtures in readdir (Sakthipriyan Vairamani) [#2587](https://github.com/nodejs/node/pull/2587)
+* [[`2084f52585`](https://github.com/nodejs/node/commit/2084f52585)] - **test**: test more http response splitting scenarios (Ben Noordhuis) [#2945](https://github.com/nodejs/node/pull/2945)
+* [[`fa08d1d8a1`](https://github.com/nodejs/node/commit/fa08d1d8a1)] - **test**: add test-spawn-cmd-named-pipe (Alexis Campailla) [#2770](https://github.com/nodejs/node/pull/2770)
+* [[`71b5d80682`](https://github.com/nodejs/node/commit/71b5d80682)] - **test**: make cluster tests more time tolerant (Michael Dawson) [#2891](https://github.com/nodejs/node/pull/2891)
+* [[`3e09dcfc32`](https://github.com/nodejs/node/commit/3e09dcfc32)] - **test**: update cwd-enoent tests for AIX (Imran Iqbal) [#2909](https://github.com/nodejs/node/pull/2909)
+* [[`6ea8ec1c59`](https://github.com/nodejs/node/commit/6ea8ec1c59)] - **tools**: single, cross-platform tick processor (Matt Loring) [#2868](https://github.com/nodejs/node/pull/2868)
+
+## 2015-09-17, Version 4.1.0 (Stable), @Fishrock123
+
+### Notable changes
+
+* **buffer**:
+ - Buffers are now created in JavaScript, rather than C++. This increases the speed of buffer creation (Trevor Norris) [#2866](https://github.com/nodejs/node/pull/2866).
+ - `Buffer#slice()` now uses `Uint8Array#subarray()` internally, increasing `slice()` performance (Karl Skomski) [#2777](https://github.com/nodejs/node/pull/2777).
+* **fs**:
+ - `fs.utimes()` now properly converts numeric strings, `NaN`, and `Infinity` (Yazhong Liu) [#2387](https://github.com/nodejs/node/pull/2387).
+ - `fs.WriteStream` now implements `_writev`, allowing for super-fast bulk writes (Ron Korving) [#2167](https://github.com/nodejs/node/pull/2167).
+* **http**: Fixed an issue with certain `write()` sizes causing errors when using `http.request()` (Fedor Indutny) [#2824](https://github.com/nodejs/node/pull/2824).
+* **npm**: Upgrade to version 2.14.3, see https://github.com/npm/npm/releases/tag/v2.14.3 for more details (Kat Marchán) [#2822](https://github.com/nodejs/node/pull/2822).
+* **src**: V8 cpu profiling no longer erroneously shows idle time (Oleksandr Chekhovskyi) [#2324](https://github.com/nodejs/node/pull/2324).
+* **timers**: `#ref()` and `#unref()` now return the timer they belong to (Sam Roberts) [#2905](https://github.com/nodejs/node/pull/2905).
+* **v8**: Lateral upgrade to 4.5.103.33 from 4.5.103.30, contains minor fixes (Ali Ijaz Sheikh) [#2870](https://github.com/nodejs/node/pull/2870).
+ - This fixes a previously known bug where some computed object shorthand properties did not work correctly ([#2507](https://github.com/nodejs/node/issues/2507)).
+
+### Known issues
+
+See https://github.com/nodejs/node/labels/confirmed-bug for complete and current list of known issues.
+
+* Some problems with unreferenced timers running during `beforeExit` are still to be resolved. See [#1264](https://github.com/nodejs/node/issues/1264).
+* Surrogate pair in REPL can freeze terminal. [#690](https://github.com/nodejs/node/issues/690)
+* Calling `dns.setServers()` while a DNS query is in progress can cause the process to crash on a failed assertion. [#894](https://github.com/nodejs/node/issues/894)
+* `url.resolve` may transfer the auth portion of the url when resolving between two full hosts, see [#1435](https://github.com/nodejs/node/issues/1435).
+
+### Commits
+
+* [[`b1abe812cd`](https://github.com/nodejs/node/commit/b1abe812cd)] - Working on 4.0.1 (Rod Vagg)
+* [[`f9f8378853`](https://github.com/nodejs/node/commit/f9f8378853)] - 2015-09-08, Version 4.0.0 (Stable) Release (Rod Vagg)
+* [[`9683e5df51`](https://github.com/nodejs/node/commit/9683e5df51)] - **bindings**: close after reading module struct (Fedor Indutny) [#2792](https://github.com/nodejs/node/pull/2792)
+* [[`4b4cfa2d44`](https://github.com/nodejs/node/commit/4b4cfa2d44)] - **buffer**: always allocate typed arrays outside heap (Trevor Norris) [#2893](https://github.com/nodejs/node/pull/2893)
+* [[`7df018a29b`](https://github.com/nodejs/node/commit/7df018a29b)] - **buffer**: construct Uint8Array in JS (Trevor Norris) [#2866](https://github.com/nodejs/node/pull/2866)
+* [[`43397b204e`](https://github.com/nodejs/node/commit/43397b204e)] - **(SEMVER-MINOR)** **build**: Updates to enable AIX support (Michael Dawson) [#2364](https://github.com/nodejs/node/pull/2364)
+* [[`e35b1fd610`](https://github.com/nodejs/node/commit/e35b1fd610)] - **build**: clean up the generated tap file (Sakthipriyan Vairamani) [#2837](https://github.com/nodejs/node/pull/2837)
+* [[`96670ebe37`](https://github.com/nodejs/node/commit/96670ebe37)] - **deps**: backport 6d32be2 from v8's upstream (Michaël Zasso) [#2916](https://github.com/nodejs/node/pull/2916)
+* [[`94972d5b13`](https://github.com/nodejs/node/commit/94972d5b13)] - **deps**: backport 0d01728 from v8's upstream (Fedor Indutny) [#2912](https://github.com/nodejs/node/pull/2912)
+* [[`7ebd881c29`](https://github.com/nodejs/node/commit/7ebd881c29)] - **deps**: upgrade V8 to 4.5.103.33 (Ali Ijaz Sheikh) [#2870](https://github.com/nodejs/node/pull/2870)
+* [[`ed47ab6e44`](https://github.com/nodejs/node/commit/ed47ab6e44)] - **deps**: upgraded to node-gyp@3.0.3 in npm (Kat Marchán) [#2822](https://github.com/nodejs/node/pull/2822)
+* [[`f4641ae875`](https://github.com/nodejs/node/commit/f4641ae875)] - **deps**: upgrade to npm 2.14.3 (Kat Marchán) [#2822](https://github.com/nodejs/node/pull/2822)
+* [[`8119693a3d`](https://github.com/nodejs/node/commit/8119693a3d)] - **deps**: update libuv to version 1.7.4 (Saúl Ibarra Corretgé) [#2817](https://github.com/nodejs/node/pull/2817)
+* [[`6098504685`](https://github.com/nodejs/node/commit/6098504685)] - **deps**: cherry-pick 6da51b4 from v8's upstream (Fedor Indutny) [#2801](https://github.com/nodejs/node/pull/2801)
+* [[`bf42cc8dba`](https://github.com/nodejs/node/commit/bf42cc8dba)] - **doc**: process exit event is not guaranteed to fire (Rich Trott) [#2861](https://github.com/nodejs/node/pull/2861)
+* [[`bb0f869f67`](https://github.com/nodejs/node/commit/bb0f869f67)] - **doc**: remove incorrect reference to TCP in net docs (Sam Roberts) [#2903](https://github.com/nodejs/node/pull/2903)
+* [[`302d59dce8`](https://github.com/nodejs/node/commit/302d59dce8)] - **doc**: correct buffer.slice arg syntax (Sam Roberts) [#2903](https://github.com/nodejs/node/pull/2903)
+* [[`74db9637b7`](https://github.com/nodejs/node/commit/74db9637b7)] - **doc**: describe spawn option.detached (Sam Roberts) [#2903](https://github.com/nodejs/node/pull/2903)
+* [[`a7bd897273`](https://github.com/nodejs/node/commit/a7bd897273)] - **doc**: rename from iojs(1) to node(1) in benchmarks (Dmitry Vasilyev) [#2884](https://github.com/nodejs/node/pull/2884)
+* [[`cd643d7c37`](https://github.com/nodejs/node/commit/cd643d7c37)] - **doc**: add missing backtick in buffer.markdown (Sven Slootweg) [#2881](https://github.com/nodejs/node/pull/2881)
+* [[`e8a206e802`](https://github.com/nodejs/node/commit/e8a206e802)] - **doc**: fix broken link in repl.markdown (Danny Nemer) [#2827](https://github.com/nodejs/node/pull/2827)
+* [[`7ee36d61f7`](https://github.com/nodejs/node/commit/7ee36d61f7)] - **doc**: fix typos in README (Ionică Bizău) [#2852](https://github.com/nodejs/node/pull/2852)
+* [[`4d1ae26196`](https://github.com/nodejs/node/commit/4d1ae26196)] - **doc**: add tunniclm as a collaborator (Mike Tunnicliffe) [#2826](https://github.com/nodejs/node/pull/2826)
+* [[`2d77d03643`](https://github.com/nodejs/node/commit/2d77d03643)] - **doc**: fix two doc errors in stream and process (Jeremiah Senkpiel) [#2549](https://github.com/nodejs/node/pull/2549)
+* [[`55ac24f721`](https://github.com/nodejs/node/commit/55ac24f721)] - **doc**: fixed io.js references in process.markdown (Tristian Flanagan) [#2846](https://github.com/nodejs/node/pull/2846)
+* [[`cd1297fb57`](https://github.com/nodejs/node/commit/cd1297fb57)] - **doc**: use "Calls" over "Executes" for consistency (Minwoo Jung) [#2800](https://github.com/nodejs/node/pull/2800)
+* [[`d664b95581`](https://github.com/nodejs/node/commit/d664b95581)] - **doc**: use US English for consistency (Anne-Gaelle Colom) [#2784](https://github.com/nodejs/node/pull/2784)
+* [[`82ba1839fb`](https://github.com/nodejs/node/commit/82ba1839fb)] - **doc**: use 3rd person singular for consistency (Anne-Gaelle Colom) [#2765](https://github.com/nodejs/node/pull/2765)
+* [[`432cce6e95`](https://github.com/nodejs/node/commit/432cce6e95)] - **doc**: describe process API for IPC (Sam Roberts) [#1978](https://github.com/nodejs/node/pull/1978)
+* [[`1d75012b9d`](https://github.com/nodejs/node/commit/1d75012b9d)] - **doc**: fix comma splice in Assertion Testing doc (Rich Trott) [#2728](https://github.com/nodejs/node/pull/2728)
+* [[`6108ea9bb4`](https://github.com/nodejs/node/commit/6108ea9bb4)] - **fs**: consider NaN/Infinity in toUnixTimestamp (Yazhong Liu) [#2387](https://github.com/nodejs/node/pull/2387)
+* [[`2b6aa9415f`](https://github.com/nodejs/node/commit/2b6aa9415f)] - **(SEMVER-MINOR)** **fs**: implemented WriteStream#writev (Ron Korving) [#2167](https://github.com/nodejs/node/pull/2167)
+* [[`431bf74c55`](https://github.com/nodejs/node/commit/431bf74c55)] - **http**: default Agent.getName to 'localhost' (Malcolm Ahoy) [#2825](https://github.com/nodejs/node/pull/2825)
+* [[`ea15d71c16`](https://github.com/nodejs/node/commit/ea15d71c16)] - **http_server**: fix resume after socket close (Fedor Indutny) [#2824](https://github.com/nodejs/node/pull/2824)
+* [[`8e5843405b`](https://github.com/nodejs/node/commit/8e5843405b)] - **src**: null env_ field from constructor (Trevor Norris) [#2913](https://github.com/nodejs/node/pull/2913)
+* [[`0a5f80a11f`](https://github.com/nodejs/node/commit/0a5f80a11f)] - **src**: use subarray() in Buffer#slice() for speedup (Karl Skomski) [#2777](https://github.com/nodejs/node/pull/2777)
+* [[`57707e2490`](https://github.com/nodejs/node/commit/57707e2490)] - **src**: use ZCtxt as a source for v8::Isolates (Roman Klauke) [#2547](https://github.com/nodejs/node/pull/2547)
+* [[`b0df2273ab`](https://github.com/nodejs/node/commit/b0df2273ab)] - **src**: fix v8::CpuProfiler idle sampling (Oleksandr Chekhovskyi) [#2324](https://github.com/nodejs/node/pull/2324)
+* [[`eaa8e60b91`](https://github.com/nodejs/node/commit/eaa8e60b91)] - **streams**: refactor LazyTransform to internal/ (Brendan Ashworth) [#2566](https://github.com/nodejs/node/pull/2566)
+* [[`648c003e14`](https://github.com/nodejs/node/commit/648c003e14)] - **test**: use tmp directory in chdir test (Sakthipriyan Vairamani) [#2589](https://github.com/nodejs/node/pull/2589)
+* [[`079a2173d4`](https://github.com/nodejs/node/commit/079a2173d4)] - **test**: fix Buffer OOM error message (Trevor Norris) [#2915](https://github.com/nodejs/node/pull/2915)
+* [[`52019a1b21`](https://github.com/nodejs/node/commit/52019a1b21)] - **test**: fix default value for additional param (Sakthipriyan Vairamani) [#2553](https://github.com/nodejs/node/pull/2553)
+* [[`5df5d0423a`](https://github.com/nodejs/node/commit/5df5d0423a)] - **test**: remove disabled test (Rich Trott) [#2841](https://github.com/nodejs/node/pull/2841)
+* [[`9e5f0995bd`](https://github.com/nodejs/node/commit/9e5f0995bd)] - **test**: split up internet dns tests (Rich Trott) [#2802](https://github.com/nodejs/node/pull/2802)
+* [[`41f2dde51a`](https://github.com/nodejs/node/commit/41f2dde51a)] - **test**: increase dgram timeout for armv6 (Rich Trott) [#2808](https://github.com/nodejs/node/pull/2808)
+* [[`6e2fe1c21a`](https://github.com/nodejs/node/commit/6e2fe1c21a)] - **test**: remove valid hostname check in test-dns.js (Rich Trott) [#2785](https://github.com/nodejs/node/pull/2785)
+* [[`779e14f1a7`](https://github.com/nodejs/node/commit/779e14f1a7)] - **test**: expect error for test_lookup_ipv6_hint on FreeBSD (Rich Trott) [#2724](https://github.com/nodejs/node/pull/2724)
+* [[`f931b9dd95`](https://github.com/nodejs/node/commit/f931b9dd95)] - **(SEMVER-MINOR)** **timer**: ref/unref return self (Sam Roberts) [#2905](https://github.com/nodejs/node/pull/2905)
+* [[`59d03738cc`](https://github.com/nodejs/node/commit/59d03738cc)] - **tools**: enable arrow functions in .eslintrc (Sakthipriyan Vairamani) [#2840](https://github.com/nodejs/node/pull/2840)
+* [[`69e7b875a2`](https://github.com/nodejs/node/commit/69e7b875a2)] - **tools**: open `test.tap` file in write-binary mode (Sakthipriyan Vairamani) [#2837](https://github.com/nodejs/node/pull/2837)
+* [[`ff6d30d784`](https://github.com/nodejs/node/commit/ff6d30d784)] - **tools**: add missing tick processor polyfill (Matt Loring) [#2694](https://github.com/nodejs/node/pull/2694)
+* [[`519caba021`](https://github.com/nodejs/node/commit/519caba021)] - **tools**: fix flakiness in test-tick-processor (Matt Loring) [#2694](https://github.com/nodejs/node/pull/2694)
+* [[`ac004b8555`](https://github.com/nodejs/node/commit/ac004b8555)] - **tools**: remove hyphen in TAP result (Sakthipriyan Vairamani) [#2718](https://github.com/nodejs/node/pull/2718)
+* [[`ba47511976`](https://github.com/nodejs/node/commit/ba47511976)] - **tsc**: adjust TSC membership for IBM+StrongLoop (James M Snell) [#2858](https://github.com/nodejs/node/pull/2858)
+* [[`e035266805`](https://github.com/nodejs/node/commit/e035266805)] - **win,msi**: fix documentation shortcut url (Brian White) [#2781](https://github.com/nodejs/node/pull/2781)
+
+## 2015-09-08, Version 4.0.0 (Stable), @rvagg
+
+### Notable changes
+
+This list of changes is relative to the last io.js v3.x branch release, v3.3.0. Please see the list of notable changes in the v3.x, v2.x and v1.x releases for a more complete list of changes from 0.12.x. Note, that some changes in the v3.x series as well as major breaking changes in this release constitute changes required for full convergence of the Node.js and io.js projects.
+
+* **child_process**: `ChildProcess.prototype.send()` and `process.send()` operate asynchronously across all platforms so an optional callback parameter has been introduced that will be invoked once the message has been sent, i.e. `.send(message[, sendHandle][, callback])` (Ben Noordhuis) [#2620](https://github.com/nodejs/node/pull/2620).
+* **node**: Rename "io.js" code to "Node.js" (cjihrig) [#2367](https://github.com/nodejs/node/pull/2367).
+* **node-gyp**: This release bundles an updated version of node-gyp that works with all versions of Node.js and io.js including nightly and release candidate builds. From io.js v3 and Node.js v4 onward, it will only download a headers tarball when building addons rather than the entire source. (Rod Vagg) [#2700](https://github.com/nodejs/node/pull/2700)
+* **npm**: Upgrade to version 2.14.2 from 2.13.3, includes a security update, see https://github.com/npm/npm/releases/tag/v2.14.2 for more details, (Kat Marchán) [#2696](https://github.com/nodejs/node/pull/2696).
+* **timers**: Improved timer performance from porting the 0.12 implementation, plus minor fixes (Jeremiah Senkpiel) [#2540](https://github.com/nodejs/node/pull/2540), (Julien Gilli) [nodejs/node-v0.x-archive#8751](https://github.com/nodejs/node-v0.x-archive/pull/8751) [nodejs/node-v0.x-archive#8905](https://github.com/nodejs/node-v0.x-archive/pull/8905)
+* **util**: The `util.is*()` functions have been deprecated, beginning with deprecation warnings in the documentation for this release, users are encouraged to seek more robust alternatives in the npm registry, (Sakthipriyan Vairamani) [#2447](https://github.com/nodejs/node/pull/2447).
+* **v8**: Upgrade to version 4.5.103.30 from 4.4.63.30 (Ali Ijaz Sheikh) [#2632](https://github.com/nodejs/node/pull/2632).
+ - Implement new `TypedArray` prototype methods: `copyWithin()`, `every()`, `fill()`, `filter()`, `find()`, `findIndex()`, `forEach()`, `indexOf()`, `join()`, `lastIndexOf()`, `map()`, `reduce()`, `reduceRight()`, `reverse()`, `slice()`, `some()`, `sort()`. See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray for further information.
+ - Implement new `TypedArray.from()` and `TypedArray.of()` functions. See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray for further information.
+ - Implement arrow functions, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions for further information.
+ - Full ChangeLog available at https://github.com/v8/v8-git-mirror/blob/4.5.103/ChangeLog
+
+### Known issues
+
+See https://github.com/nodejs/node/labels/confirmed-bug for complete and current list of known issues.
+
+* Some uses of computed object shorthand properties are not handled correctly by the current version of V8. e.g. `[{ [prop]: val }]` evaluates to `[{}]`. [#2507](https://github.com/nodejs/node/issues/2507)
+* Some problems with unreferenced timers running during `beforeExit` are still to be resolved. See [#1264](https://github.com/nodejs/node/issues/1264).
+* Surrogate pair in REPL can freeze terminal. [#690](https://github.com/nodejs/node/issues/690)
+* Calling `dns.setServers()` while a DNS query is in progress can cause the process to crash on a failed assertion. [#894](https://github.com/nodejs/node/issues/894)
+* `url.resolve` may transfer the auth portion of the url when resolving between two full hosts, see [#1435](https://github.com/nodejs/node/issues/1435).
+
+### Commits
+
+* [[`4f50d3fb90`](https://github.com/nodejs/node/commit/4f50d3fb90)] - **(SEMVER-MAJOR)** This commit sets the value of process.release.name to "node". (cjihrig) [#2367](https://github.com/nodejs/node/pull/2367)
+* [[`d3178d8b1b`](https://github.com/nodejs/node/commit/d3178d8b1b)] - **buffer**: SlowBuffer only accept valid numeric values (Michaël Zasso) [#2635](https://github.com/nodejs/node/pull/2635)
+* [[`0cb0f4a6e4`](https://github.com/nodejs/node/commit/0cb0f4a6e4)] - **build**: fix v8_enable_handle_zapping override (Karl Skomski) [#2731](https://github.com/nodejs/node/pull/2731)
+* [[`a7596d7efc`](https://github.com/nodejs/node/commit/a7596d7efc)] - **build**: remote commands on staging in single session (Rod Vagg) [#2717](https://github.com/nodejs/node/pull/2717)
+* [[`be427e9efa`](https://github.com/nodejs/node/commit/be427e9efa)] - **build**: make .msi install to "nodejs", not "node" (Rod Vagg) [#2701](https://github.com/nodejs/node/pull/2701)
+* [[`5652ce0dbc`](https://github.com/nodejs/node/commit/5652ce0dbc)] - **build**: fix .pkg creation tooling (Rod Vagg) [#2687](https://github.com/nodejs/node/pull/2687)
+* [[`101db80111`](https://github.com/nodejs/node/commit/101db80111)] - **build**: add --enable-asan with builtin leakcheck (Karl Skomski) [#2376](https://github.com/nodejs/node/pull/2376)
+* [[`2c3939c9c0`](https://github.com/nodejs/node/commit/2c3939c9c0)] - **child_process**: use stdio.fd even if it is 0 (Evan Lucas) [#2727](https://github.com/nodejs/node/pull/2727)
+* [[`609db5a1dd`](https://github.com/nodejs/node/commit/609db5a1dd)] - **child_process**: check execFile and fork args (James M Snell) [#2667](https://github.com/nodejs/node/pull/2667)
+* [[`d010568c23`](https://github.com/nodejs/node/commit/d010568c23)] - **(SEMVER-MAJOR)** **child_process**: add callback parameter to .send() (Ben Noordhuis) [#2620](https://github.com/nodejs/node/pull/2620)
+* [[`c60857a81a`](https://github.com/nodejs/node/commit/c60857a81a)] - **cluster**: allow shared reused dgram sockets (Fedor Indutny) [#2548](https://github.com/nodejs/node/pull/2548)
+* [[`b2ecbb6191`](https://github.com/nodejs/node/commit/b2ecbb6191)] - **contextify**: ignore getters during initialization (Fedor Indutny) [#2091](https://github.com/nodejs/node/pull/2091)
+* [[`3711934095`](https://github.com/nodejs/node/commit/3711934095)] - **cpplint**: make it possible to run outside git repo (Ben Noordhuis) [#2710](https://github.com/nodejs/node/pull/2710)
+* [[`03f900ab25`](https://github.com/nodejs/node/commit/03f900ab25)] - **crypto**: replace rwlocks with simple mutexes (Ben Noordhuis) [#2723](https://github.com/nodejs/node/pull/2723)
+* [[`847459c29b`](https://github.com/nodejs/node/commit/847459c29b)] - **(SEMVER-MAJOR)** **crypto**: show exponent in decimal and hex (Chad Johnston) [#2320](https://github.com/nodejs/node/pull/2320)
+* [[`e1c976184d`](https://github.com/nodejs/node/commit/e1c976184d)] - **deps**: improve ArrayBuffer performance in v8 (Fedor Indutny) [#2732](https://github.com/nodejs/node/pull/2732)
+* [[`cc0ab17a23`](https://github.com/nodejs/node/commit/cc0ab17a23)] - **deps**: float node-gyp v3.0.0 (Rod Vagg) [#2700](https://github.com/nodejs/node/pull/2700)
+* [[`b2c3c6d727`](https://github.com/nodejs/node/commit/b2c3c6d727)] - **deps**: create .npmrc during npm tests (Kat Marchán) [#2696](https://github.com/nodejs/node/pull/2696)
+* [[`babdbfdbd5`](https://github.com/nodejs/node/commit/babdbfdbd5)] - **deps**: upgrade to npm 2.14.2 (Kat Marchán) [#2696](https://github.com/nodejs/node/pull/2696)
+* [[`155783d876`](https://github.com/nodejs/node/commit/155783d876)] - **deps**: backport 75e43a6 from v8 upstream (again) (saper) [#2692](https://github.com/nodejs/node/pull/2692)
+* [[`5424d6fcf0`](https://github.com/nodejs/node/commit/5424d6fcf0)] - **deps**: upgrade V8 to 4.5.103.30 (Ali Ijaz Sheikh) [#2632](https://github.com/nodejs/node/pull/2632)
+* [[`c43172578e`](https://github.com/nodejs/node/commit/c43172578e)] - **(SEMVER-MAJOR)** **deps**: upgrade V8 to 4.5.103.24 (Ali Ijaz Sheikh) [#2509](https://github.com/nodejs/node/pull/2509)
+* [[`714e96e8b9`](https://github.com/nodejs/node/commit/714e96e8b9)] - **deps**: backport 75e43a6 from v8 upstream (saper) [#2636](https://github.com/nodejs/node/pull/2636)
+* [[`8637755cbf`](https://github.com/nodejs/node/commit/8637755cbf)] - **doc**: add TSC meeting minutes 2015-09-02 (Rod Vagg) [#2674](https://github.com/nodejs/node/pull/2674)
+* [[`d3d5b93214`](https://github.com/nodejs/node/commit/d3d5b93214)] - **doc**: update environment vars in manpage and --help (Roman Reiss) [#2690](https://github.com/nodejs/node/pull/2690)
+* [[`29f586ac0a`](https://github.com/nodejs/node/commit/29f586ac0a)] - **doc**: update url doc to account for escaping (Jeremiah Senkpiel) [#2605](https://github.com/nodejs/node/pull/2605)
+* [[`ba50cfebef`](https://github.com/nodejs/node/commit/ba50cfebef)] - **doc**: reorder collaborators by their usernames (Johan Bergström) [#2322](https://github.com/nodejs/node/pull/2322)
+* [[`8a9a3bf798`](https://github.com/nodejs/node/commit/8a9a3bf798)] - **doc**: update changelog for io.js v3.3.0 (Rod Vagg) [#2653](https://github.com/nodejs/node/pull/2653)
+* [[`6cd0e2664b`](https://github.com/nodejs/node/commit/6cd0e2664b)] - **doc**: update io.js reference (Ben Noordhuis) [#2580](https://github.com/nodejs/node/pull/2580)
+* [[`f9539c19e8`](https://github.com/nodejs/node/commit/f9539c19e8)] - **doc**: update changelog for io.js v3.2.0 (Rod Vagg) [#2512](https://github.com/nodejs/node/pull/2512)
+* [[`cded6e7993`](https://github.com/nodejs/node/commit/cded6e7993)] - **doc**: fix CHANGELOG.md on master (Roman Reiss) [#2513](https://github.com/nodejs/node/pull/2513)
+* [[`93e2830686`](https://github.com/nodejs/node/commit/93e2830686)] - **(SEMVER-MINOR)** **doc**: document deprecation of util.is* functions (Sakthipriyan Vairamani) [#2447](https://github.com/nodejs/node/pull/2447)
+* [[`7038388558`](https://github.com/nodejs/node/commit/7038388558)] - **doc,test**: enable recursive file watching in Windows (Sakthipriyan Vairamani) [#2649](https://github.com/nodejs/node/pull/2649)
+* [[`f3696f64a1`](https://github.com/nodejs/node/commit/f3696f64a1)] - **events,lib**: don't require EE#listenerCount() (Jeremiah Senkpiel) [#2661](https://github.com/nodejs/node/pull/2661)
+* [[`45a2046f5d`](https://github.com/nodejs/node/commit/45a2046f5d)] - **(SEMVER-MAJOR)** **installer**: fix installers for node.js rename (Frederic Hemberger) [#2367](https://github.com/nodejs/node/pull/2367)
+* [[`7a999a1376`](https://github.com/nodejs/node/commit/7a999a1376)] - **(SEMVER-MAJOR)** **lib**: add net.Socket#localFamily property (Ben Noordhuis) [#956](https://github.com/nodejs/node/pull/956)
+* [[`de88255b0f`](https://github.com/nodejs/node/commit/de88255b0f)] - ***Revert*** "**lib,src**: add unix socket getsockname/getpeername" (Ben Noordhuis) [#2584](https://github.com/nodejs/node/pull/2584)
+* [[`f337595441`](https://github.com/nodejs/node/commit/f337595441)] - **(SEMVER-MAJOR)** **lib,src**: add unix socket getsockname/getpeername (Ben Noordhuis) [#956](https://github.com/nodejs/node/pull/956)
+* [[`3b602527d1`](https://github.com/nodejs/node/commit/3b602527d1)] - **(SEMVER-MAJOR)** **node**: additional cleanup for node rename (cjihrig) [#2367](https://github.com/nodejs/node/pull/2367)
+* [[`a69ab27ab4`](https://github.com/nodejs/node/commit/a69ab27ab4)] - **(SEMVER-MAJOR)** **node**: rename from io.js to node (cjihrig) [#2367](https://github.com/nodejs/node/pull/2367)
+* [[`9358eee9dd`](https://github.com/nodejs/node/commit/9358eee9dd)] - **node-gyp**: float 3.0.1, minor fix for download url (Rod Vagg) [#2737](https://github.com/nodejs/node/pull/2737)
+* [[`d2d981252b`](https://github.com/nodejs/node/commit/d2d981252b)] - **src**: s/ia32/x86 for process.release.libUrl for win (Rod Vagg) [#2699](https://github.com/nodejs/node/pull/2699)
+* [[`eba3d3dccd`](https://github.com/nodejs/node/commit/eba3d3dccd)] - **src**: use standard conform snprintf on windows (Karl Skomski) [#2404](https://github.com/nodejs/node/pull/2404)
+* [[`cddbec231f`](https://github.com/nodejs/node/commit/cddbec231f)] - **src**: fix buffer overflow for long exception lines (Karl Skomski) [#2404](https://github.com/nodejs/node/pull/2404)
+* [[`dd3f3417c7`](https://github.com/nodejs/node/commit/dd3f3417c7)] - **src**: re-enable fast math on arm (Michaël Zasso) [#2592](https://github.com/nodejs/node/pull/2592)
+* [[`e137c1177c`](https://github.com/nodejs/node/commit/e137c1177c)] - **(SEMVER-MAJOR)** **src**: enable vector ics on arm again (Ali Ijaz Sheikh) [#2509](https://github.com/nodejs/node/pull/2509)
+* [[`7ce749d722`](https://github.com/nodejs/node/commit/7ce749d722)] - **src**: replace usage of v8::Handle with v8::Local (Michaël Zasso) [#2202](https://github.com/nodejs/node/pull/2202)
+* [[`b1a2d9509f`](https://github.com/nodejs/node/commit/b1a2d9509f)] - **src**: enable v8 deprecation warnings and fix them (Ben Noordhuis) [#2091](https://github.com/nodejs/node/pull/2091)
+* [[`808de0da03`](https://github.com/nodejs/node/commit/808de0da03)] - **(SEMVER-MAJOR)** **src**: apply debug force load fixups from 41e63fb (Ali Ijaz Sheikh) [#2509](https://github.com/nodejs/node/pull/2509)
+* [[`5201cb0ff1`](https://github.com/nodejs/node/commit/5201cb0ff1)] - **src**: fix memory leak in ExternString (Karl Skomski) [#2402](https://github.com/nodejs/node/pull/2402)
+* [[`2308a27c0a`](https://github.com/nodejs/node/commit/2308a27c0a)] - **src**: only set v8 flags if argc > 1 (Evan Lucas) [#2646](https://github.com/nodejs/node/pull/2646)
+* [[`384effed20`](https://github.com/nodejs/node/commit/384effed20)] - **test**: fix use of `common` before required (Rod Vagg) [#2685](https://github.com/nodejs/node/pull/2685)
+* [[`f146f686b7`](https://github.com/nodejs/node/commit/f146f686b7)] - **(SEMVER-MAJOR)** **test**: fix test-repl-tab-complete.js for V8 4.5 (Ali Ijaz Sheikh) [#2509](https://github.com/nodejs/node/pull/2509)
+* [[`fe4b309fd3`](https://github.com/nodejs/node/commit/fe4b309fd3)] - **test**: refactor to eliminate flaky test (Rich Trott) [#2609](https://github.com/nodejs/node/pull/2609)
+* [[`619721e6b8`](https://github.com/nodejs/node/commit/619721e6b8)] - **test**: mark eval_messages as flaky (Alexis Campailla) [#2648](https://github.com/nodejs/node/pull/2648)
+* [[`93ba585b66`](https://github.com/nodejs/node/commit/93ba585b66)] - **test**: mark test-vm-syntax-error-stderr as flaky (João Reis) [#2662](https://github.com/nodejs/node/pull/2662)
+* [[`367140bca0`](https://github.com/nodejs/node/commit/367140bca0)] - **test**: mark test-repl-persistent-history as flaky (João Reis) [#2659](https://github.com/nodejs/node/pull/2659)
+* [[`f6b093343d`](https://github.com/nodejs/node/commit/f6b093343d)] - **timers**: minor `_unrefActive` fixes and improvements (Jeremiah Senkpiel) [#2540](https://github.com/nodejs/node/pull/2540)
+* [[`403d7ee7d1`](https://github.com/nodejs/node/commit/403d7ee7d1)] - **timers**: don't mutate unref list while iterating it (Julien Gilli) [#2540](https://github.com/nodejs/node/pull/2540)
+* [[`7a8c3e08c3`](https://github.com/nodejs/node/commit/7a8c3e08c3)] - **timers**: Avoid linear scan in `_unrefActive`. (Julien Gilli) [#2540](https://github.com/nodejs/node/pull/2540)
+* [[`b630ebaf43`](https://github.com/nodejs/node/commit/b630ebaf43)] - **win,msi**: Upgrade from old upgrade code (João Reis) [#2439](https://github.com/nodejs/node/pull/2439)
+
+## 2015-09-02, Version 3.3.0, @rvagg
+
+### Notable changes
+
+* **build**: Add a `--link-module` option to `configure` that can be used to bundle additional JavaScript modules into a built binary (Bradley Meck) [#2497](https://github.com/nodejs/node/pull/2497)
+* **docs**: Merge outstanding doc updates from joyent/node (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* **http_parser**: Significant performance improvement by having `http.Server` consume all initial data from its `net.Socket` and parsing directly without having to enter JavaScript. Any `'data'` listeners on the `net.Socket` will result in the data being "unconsumed" into JavaScript, thereby undoing any performance gains. (Fedor Indutny) [#2355](https://github.com/nodejs/node/pull/2355)
+* **libuv**: Upgrade to 1.7.3 (from 1.6.1), see [ChangeLog](https://github.com/libuv/libuv/blob/v1.x/ChangeLog) for details (Saúl Ibarra Corretgé) [#2310](https://github.com/nodejs/node/pull/2310)
+* **V8**: Upgrade to 4.4.63.30 (from 4.4.63.26) (Michaël Zasso) [#2482](https://github.com/nodejs/node/pull/2482)
+
+### Known issues
+
+See https://github.com/nodejs/io.js/labels/confirmed-bug for complete and current list of known issues.
+
+* Some uses of computed object shorthand properties are not handled correctly by the current version of V8. e.g. `[{ [prop]: val }]` evaluates to `[{}]`. [#2507](https://github.com/nodejs/node/issues/2507)
+* Some problems with unreferenced timers running during `beforeExit` are still to be resolved. See [#1264](https://github.com/nodejs/io.js/issues/1264).
+* Surrogate pair in REPL can freeze terminal. [#690](https://github.com/nodejs/io.js/issues/690)
+* `process.send()` is not synchronous as the docs suggest, a regression introduced in 1.0.2, see [#760](https://github.com/nodejs/io.js/issues/760).
+* Calling `dns.setServers()` while a DNS query is in progress can cause the process to crash on a failed assertion. [#894](https://github.com/nodejs/io.js/issues/894)
+* `url.resolve` may transfer the auth portion of the url when resolving between two full hosts, see [#1435](https://github.com/nodejs/io.js/issues/1435).
+
+### Commits
+
+* [[`1a531b4e44`](https://github.com/nodejs/node/commit/1a531b4e44)] - **(SEMVER-MINOR)** Introduce --link-module to ./configure (Bradley Meck) [#2497](https://github.com/nodejs/node/pull/2497)
+* [[`d2f314c190`](https://github.com/nodejs/node/commit/d2f314c190)] - **build**: fix borked chmod call for release uploads (Rod Vagg) [#2645](https://github.com/nodejs/node/pull/2645)
+* [[`3172e9c541`](https://github.com/nodejs/node/commit/3172e9c541)] - **build**: set file permissions before uploading (Rod Vagg) [#2623](https://github.com/nodejs/node/pull/2623)
+* [[`a860d7fae1`](https://github.com/nodejs/node/commit/a860d7fae1)] - **build**: change staging directory on new server (Rod Vagg) [#2623](https://github.com/nodejs/node/pull/2623)
+* [[`50c0baa8d7`](https://github.com/nodejs/node/commit/50c0baa8d7)] - **build**: rename 'doc' directory to 'docs' for upload (Rod Vagg) [#2623](https://github.com/nodejs/node/pull/2623)
+* [[`0a0577cf5f`](https://github.com/nodejs/node/commit/0a0577cf5f)] - **build**: fix bad cherry-pick for vcbuild.bat build-release (Rod Vagg) [#2625](https://github.com/nodejs/node/pull/2625)
+* [[`34de90194b`](https://github.com/nodejs/node/commit/34de90194b)] - **build**: only define NODE_V8_OPTIONS if not empty (Evan Lucas) [#2532](https://github.com/nodejs/node/pull/2532)
+* [[`944174b189`](https://github.com/nodejs/node/commit/944174b189)] - **build**: make ci test addons in test/addons (Ben Noordhuis) [#2428](https://github.com/nodejs/node/pull/2428)
+* [[`e955f9a1b0`](https://github.com/nodejs/node/commit/e955f9a1b0)] - **crypto**: Use OPENSSL_cleanse to shred the data. (Сковорода Никита Андреевич) [#2575](https://github.com/nodejs/node/pull/2575)
+* [[`395d736b9d`](https://github.com/nodejs/node/commit/395d736b9d)] - **debugger**: use strict equality comparison (Minwoo Jung) [#2558](https://github.com/nodejs/node/pull/2558)
+* [[`1d0e5210a8`](https://github.com/nodejs/node/commit/1d0e5210a8)] - **deps**: upgrade libuv to 1.7.3 (Saúl Ibarra Corretgé) [#2310](https://github.com/nodejs/node/pull/2310)
+* [[`34ef53364f`](https://github.com/nodejs/node/commit/34ef53364f)] - **deps**: update V8 to 4.4.63.30 (Michaël Zasso) [#2482](https://github.com/nodejs/node/pull/2482)
+* [[`23579a5f4a`](https://github.com/nodejs/node/commit/23579a5f4a)] - **doc**: add TSC meeting minutes 2015-08-12 (Rod Vagg) [#2438](https://github.com/nodejs/node/pull/2438)
+* [[`0cc59299a4`](https://github.com/nodejs/node/commit/0cc59299a4)] - **doc**: add TSC meeting minutes 2015-08-26 (Rod Vagg) [#2591](https://github.com/nodejs/node/pull/2591)
+* [[`6efa96e33a`](https://github.com/nodejs/node/commit/6efa96e33a)] - **doc**: merge CHANGELOG.md with joyent/node ChangeLog (P.S.V.R) [#2536](https://github.com/nodejs/node/pull/2536)
+* [[`f75d54607b`](https://github.com/nodejs/node/commit/f75d54607b)] - **doc**: clarify cluster behaviour with no workers (Jeremiah Senkpiel) [#2606](https://github.com/nodejs/node/pull/2606)
+* [[`8936302121`](https://github.com/nodejs/node/commit/8936302121)] - **doc**: minor clarification in buffer.markdown (Сковорода Никита Андреевич) [#2574](https://github.com/nodejs/node/pull/2574)
+* [[`0db0e53753`](https://github.com/nodejs/node/commit/0db0e53753)] - **doc**: add @jasnell and @sam-github to release team (Rod Vagg) [#2455](https://github.com/nodejs/node/pull/2455)
+* [[`c16e100593`](https://github.com/nodejs/node/commit/c16e100593)] - **doc**: reorg release team to separate section (Rod Vagg) [#2455](https://github.com/nodejs/node/pull/2455)
+* [[`e3e00143fd`](https://github.com/nodejs/node/commit/e3e00143fd)] - **doc**: fix bad merge on modules.markdown (James M Snell)
+* [[`2f62455880`](https://github.com/nodejs/node/commit/2f62455880)] - **doc**: minor additional corrections and improvements (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* [[`3bd08aac4b`](https://github.com/nodejs/node/commit/3bd08aac4b)] - **doc**: minor grammatical update in crypto.markdown (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* [[`f707189370`](https://github.com/nodejs/node/commit/f707189370)] - **doc**: minor grammatical update (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* [[`6c98cf0266`](https://github.com/nodejs/node/commit/6c98cf0266)] - **doc**: remove repeated statement in globals.markdown (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* [[`48e6ccf8c2`](https://github.com/nodejs/node/commit/48e6ccf8c2)] - **doc**: remove 'dudes' from documentation (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* [[`b5d68f8076`](https://github.com/nodejs/node/commit/b5d68f8076)] - **doc**: update tense in child_process.markdown (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* [[`242e3fe3ba`](https://github.com/nodejs/node/commit/242e3fe3ba)] - **doc**: fixed worker.id type (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* [[`ea9ee15c21`](https://github.com/nodejs/node/commit/ea9ee15c21)] - **doc**: port is optional for socket.bind() (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* [[`0ff6657a50`](https://github.com/nodejs/node/commit/0ff6657a50)] - **doc**: fix minor types and grammar in fs docs (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* [[`94d83c04f2`](https://github.com/nodejs/node/commit/94d83c04f2)] - **doc**: update parameter name in net.markdown (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* [[`04111ce40f`](https://github.com/nodejs/node/commit/04111ce40f)] - **doc**: small typo in domain.markdown (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* [[`c9fdd1bbbf`](https://github.com/nodejs/node/commit/c9fdd1bbbf)] - **doc**: fixed typo in net.markdown (missing comma) (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* [[`27c07b3f8e`](https://github.com/nodejs/node/commit/27c07b3f8e)] - **doc**: update description of fs.exists in fs.markdown (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* [[`52018e73d9`](https://github.com/nodejs/node/commit/52018e73d9)] - **doc**: clarification on the 'close' event (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* [[`f6d3b87a25`](https://github.com/nodejs/node/commit/f6d3b87a25)] - **doc**: improve working in stream.markdown (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* [[`b5da89431a`](https://github.com/nodejs/node/commit/b5da89431a)] - **doc**: update path.extname documentation (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* [[`1d4ea609db`](https://github.com/nodejs/node/commit/1d4ea609db)] - **doc**: small clarifications to modules.markdown (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* [[`c888985591`](https://github.com/nodejs/node/commit/c888985591)] - **doc**: code style cleanups in repl.markdown (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* [[`105b493595`](https://github.com/nodejs/node/commit/105b493595)] - **doc**: correct grammar in cluster.markdown (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* [[`51b86ccac7`](https://github.com/nodejs/node/commit/51b86ccac7)] - **doc**: Clarify the module.parent is set once (James M Snell) [#2378](https://github.com/nodejs/node/pull/2378)
+* [[`d2ffecba2d`](https://github.com/nodejs/node/commit/d2ffecba2d)] - **doc**: add internal modules notice (Jeremiah Senkpiel) [#2523](https://github.com/nodejs/node/pull/2523)
+* [[`b36debd5cb`](https://github.com/nodejs/node/commit/b36debd5cb)] - **env**: introduce `KickNextTick` (Fedor Indutny) [#2355](https://github.com/nodejs/node/pull/2355)
+* [[`1bc446863f`](https://github.com/nodejs/node/commit/1bc446863f)] - **http_parser**: consume StreamBase instance (Fedor Indutny) [#2355](https://github.com/nodejs/node/pull/2355)
+* [[`ce04b735cc`](https://github.com/nodejs/node/commit/ce04b735cc)] - **src**: only memcmp if length > 0 in Buffer::Compare (Karl Skomski) [#2544](https://github.com/nodejs/node/pull/2544)
+* [[`31823e37c7`](https://github.com/nodejs/node/commit/31823e37c7)] - **src**: DRY getsockname/getpeername code (Ben Noordhuis) [#956](https://github.com/nodejs/node/pull/956)
+* [[`13fd96dda3`](https://github.com/nodejs/node/commit/13fd96dda3)] - **src**: missing Exception::Error in node_http_parser (Jeremiah Senkpiel) [#2550](https://github.com/nodejs/node/pull/2550)
+* [[`42e075ae02`](https://github.com/nodejs/node/commit/42e075ae02)] - **test**: improve performance of stringbytes test (Trevor Norris) [#2544](https://github.com/nodejs/node/pull/2544)
+* [[`fc726399fd`](https://github.com/nodejs/node/commit/fc726399fd)] - **test**: unmark test-process-argv-0.js as flaky (Rich Trott) [#2613](https://github.com/nodejs/node/pull/2613)
+* [[`7727ba1394`](https://github.com/nodejs/node/commit/7727ba1394)] - **test**: lint and refactor to avoid autocrlf issue (Roman Reiss) [#2494](https://github.com/nodejs/node/pull/2494)
+* [[`c56aa829f0`](https://github.com/nodejs/node/commit/c56aa829f0)] - **test**: use tmpDir instead of fixturesDir (Sakthipriyan Vairamani) [#2583](https://github.com/nodejs/node/pull/2583)
+* [[`5e65181ea4`](https://github.com/nodejs/node/commit/5e65181ea4)] - **test**: handling failure cases properly (Sakthipriyan Vairamani) [#2206](https://github.com/nodejs/node/pull/2206)
+* [[`c48b95e847`](https://github.com/nodejs/node/commit/c48b95e847)] - **test**: initial list of flaky tests (Alexis Campailla) [#2424](https://github.com/nodejs/node/pull/2424)
+* [[`94e88498ba`](https://github.com/nodejs/node/commit/94e88498ba)] - **test**: pass args to test-ci via env variable (Alexis Campailla) [#2424](https://github.com/nodejs/node/pull/2424)
+* [[`09987c7a1c`](https://github.com/nodejs/node/commit/09987c7a1c)] - **test**: support flaky tests in test-ci (Alexis Campailla) [#2424](https://github.com/nodejs/node/pull/2424)
+* [[`08b83c8b45`](https://github.com/nodejs/node/commit/08b83c8b45)] - **test**: add test configuration templates (Alexis Campailla) [#2424](https://github.com/nodejs/node/pull/2424)
+* [[`8f8ab6fa57`](https://github.com/nodejs/node/commit/8f8ab6fa57)] - **test**: runner should return 0 on flaky tests (Alexis Campailla) [#2424](https://github.com/nodejs/node/pull/2424)
+* [[`0cfd3be9c6`](https://github.com/nodejs/node/commit/0cfd3be9c6)] - **test**: runner support for flaky tests (Alexis Campailla) [#2424](https://github.com/nodejs/node/pull/2424)
+* [[`3492d2d4c6`](https://github.com/nodejs/node/commit/3492d2d4c6)] - **test**: make test-process-argv-0 robust (Rich Trott) [#2541](https://github.com/nodejs/node/pull/2541)
+* [[`a96cc31710`](https://github.com/nodejs/node/commit/a96cc31710)] - **test**: speed up test-child-process-spawnsync.js (Rich Trott) [#2542](https://github.com/nodejs/node/pull/2542)
+* [[`856baf4c67`](https://github.com/nodejs/node/commit/856baf4c67)] - **test**: make spawnSync() test robust (Rich Trott) [#2535](https://github.com/nodejs/node/pull/2535)
+* [[`3aa6bbb648`](https://github.com/nodejs/node/commit/3aa6bbb648)] - **tools**: update release.sh to work with new website (Rod Vagg) [#2623](https://github.com/nodejs/node/pull/2623)
+* [[`f2f0fe45ff`](https://github.com/nodejs/node/commit/f2f0fe45ff)] - **tools**: make add-on scraper print filenames (Ben Noordhuis) [#2428](https://github.com/nodejs/node/pull/2428)
+* [[`bb24c4a418`](https://github.com/nodejs/node/commit/bb24c4a418)] - **win,msi**: correct installation path registry keys (João Reis) [#2565](https://github.com/nodejs/node/pull/2565)
+* [[`752977b888`](https://github.com/nodejs/node/commit/752977b888)] - **win,msi**: change InstallScope to perMachine (João Reis) [#2565](https://github.com/nodejs/node/pull/2565)
+
## 2015-08-25, Version 3.2.0, @rvagg
### Notable changes
diff --git a/COLLABORATOR_GUIDE.md b/COLLABORATOR_GUIDE.md
index 25f7ba14fda322..c5a13a5c9f2f09 100644
--- a/COLLABORATOR_GUIDE.md
+++ b/COLLABORATOR_GUIDE.md
@@ -70,7 +70,7 @@ test should *fail* before the change, and *pass* after the change.
All pull requests that modify executable code should be subjected to
continuous integration tests on the
-[project CI server](https://jenkins-iojs.nodesource.com/).
+[project CI server](https://ci.nodejs.org/).
### Involving the TC
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index a096d4989d76fa..9fe41d807acfe1 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -198,7 +198,7 @@ CoC](http://www.rust-lang.org/conduct.html).
* Please keep unstructured critique to a minimum. If you have solid
ideas you want to experiment with, make a fork and see how it works.
* We will exclude you from interaction if you insult, demean or harass
- anyone. That is not welcome behaviour. We interpret the term
+ anyone. That is not welcome behavior. We interpret the term
"harassment" as including the definition in the [Citizen Code of
Conduct](http://citizencodeofconduct.org/); if you have any lack of
clarity about what might be included in that concept, please read
@@ -212,7 +212,7 @@ CoC](http://www.rust-lang.org/conduct.html).
a newcomer, we care about making this community a safe place for you
and we've got your back.
* Likewise any spamming, trolling, flaming, baiting or other
- attention-stealing behaviour is not welcome.
+ attention-stealing behavior is not welcome.
* Avoid the use of personal pronouns in code comments or
documentation. There is no need to address persons when explaining
code (e.g. "When the developer")
diff --git a/LICENSE b/LICENSE
index 753f9c7e20910c..42617621e33a19 100644
--- a/LICENSE
+++ b/LICENSE
@@ -213,37 +213,28 @@ The externally maintained libraries used by Node.js are:
IN THE SOFTWARE.
"""
-- Closure Linter is located at tools/closure_linter. Closure's license
- follows:
+- ESLint is located at tools/eslint. ESLint's license follows:
"""
- # Copyright (c) 2007, Google Inc.
- # All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
- # modification, are permitted provided that the following conditions are
- # met:
- #
- # * Redistributions of source code must retain the above copyright
- # notice, this list of conditions and the following disclaimer.
- # * Redistributions in binary form must reproduce the above
- # copyright notice, this list of conditions and the following disclaimer
- # in the documentation and/or other materials provided with the
- # distribution.
- # * Neither the name of Google Inc. nor the names of its
- # contributors may be used to endorse or promote products derived from
- # this software without specific prior written permission.
- #
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ ESLint
+ Copyright (c) 2013 Nicholas C. Zakas. All rights reserved.
+
+ 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.
"""
- python-gflags is located at tools/gflags. Its license follows:
diff --git a/Makefile b/Makefile
index 3f8f5fa30de32e..c99f6c21f830ac 100644
--- a/Makefile
+++ b/Makefile
@@ -69,6 +69,7 @@ clean:
-rm -rf out/Makefile $(NODE_EXE) $(NODE_G_EXE) out/$(BUILDTYPE)/$(NODE_EXE)
@if [ -d out ]; then find out/ -name '*.o' -o -name '*.a' | xargs rm -rf; fi
-rm -rf node_modules
+ -rm -f test.tap
distclean:
-rm -rf out
@@ -338,7 +339,7 @@ $(PKG): release-only
| sed -E "s/\\{npmversion\\}/$(NPMVERSION)/g" \
> tools/osx-pkg.pmdoc/index.xml
$(PACKAGEMAKER) \
- --id "org.node.pkg" \
+ --id "org.nodejs.pkg" \
--doc tools/osx-pkg.pmdoc \
--out $(PKG)
SIGN="$(PRODUCTSIGN_CERT)" PKG="$(PKG)" bash tools/osx-productsign.sh
@@ -346,9 +347,10 @@ $(PKG): release-only
pkg: $(PKG)
pkg-upload: pkg
- ssh $(STAGINGSERVER) "mkdir -p staging/$(DISTTYPEDIR)/$(FULLVERSION)"
- scp -p node-$(FULLVERSION).pkg $(STAGINGSERVER):staging/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION).pkg
- ssh $(STAGINGSERVER) "touch staging/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION).pkg.done"
+ ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)"
+ chmod 664 node-$(FULLVERSION).pkg
+ scp -p node-$(FULLVERSION).pkg $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION).pkg
+ ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION).pkg.done"
$(TARBALL): release-only $(NODE_EXE) doc
git checkout-index -a -f --prefix=$(TARNAME)/
@@ -372,18 +374,21 @@ endif
tar: $(TARBALL)
tar-upload: tar
- ssh $(STAGINGSERVER) "mkdir -p staging/$(DISTTYPEDIR)/$(FULLVERSION)"
- scp -p node-$(FULLVERSION).tar.gz $(STAGINGSERVER):staging/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION).tar.gz
- ssh $(STAGINGSERVER) "touch staging/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION).tar.gz.done"
+ ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)"
+ chmod 664 node-$(FULLVERSION).tar.gz
+ scp -p node-$(FULLVERSION).tar.gz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION).tar.gz
+ ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION).tar.gz.done"
ifeq ($(XZ), 0)
- scp -p node-$(FULLVERSION).tar.xz $(STAGINGSERVER):staging/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION).tar.xz
- ssh $(STAGINGSERVER) "touch staging/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION).tar.xz.done"
+ chmod 664 node-$(FULLVERSION).tar.xz
+ scp -p node-$(FULLVERSION).tar.xz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION).tar.xz
+ ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION).tar.xz.done"
endif
doc-upload: tar
- ssh $(STAGINGSERVER) "mkdir -p staging/$(DISTTYPEDIR)/$(FULLVERSION)"
- scp -r out/doc/ $(STAGINGSERVER):staging/$(DISTTYPEDIR)/$(FULLVERSION)/
- ssh $(STAGINGSERVER) "touch staging/$(DISTTYPEDIR)/$(FULLVERSION)/doc.done"
+ ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)"
+ chmod -R ug=rw-x+X,o=r+X out/doc/
+ scp -pr out/doc/ $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/docs/
+ ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/docs.done"
$(TARBALL)-headers: config.gypi release-only
$(PYTHON) ./configure \
@@ -405,12 +410,14 @@ endif
tar-headers: $(TARBALL)-headers
tar-headers-upload: tar-headers
- ssh $(STAGINGSERVER) "mkdir -p staging/$(DISTTYPEDIR)/$(FULLVERSION)"
- scp -p $(TARNAME)-headers.tar.gz $(STAGINGSERVER):staging/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.gz
- ssh $(STAGINGSERVER) "touch staging/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.gz.done"
+ ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)"
+ chmod 664 $(TARNAME)-headers.tar.gz
+ scp -p $(TARNAME)-headers.tar.gz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.gz
+ ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.gz.done"
ifeq ($(XZ), 0)
- scp -p $(TARNAME)-headers.tar.xz $(STAGINGSERVER):staging/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.xz
- ssh $(STAGINGSERVER) "touch staging/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.xz.done"
+ chmod 664 $(TARNAME)-headers.tar.xz
+ scp -p $(TARNAME)-headers.tar.xz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.xz
+ ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/$(TARNAME)-headers.tar.xz.done"
endif
$(BINARYTAR): release-only
@@ -437,12 +444,14 @@ endif
binary: $(BINARYTAR)
binary-upload: binary
- ssh $(STAGINGSERVER) "mkdir -p staging/$(DISTTYPEDIR)/$(FULLVERSION)"
- scp -p node-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.gz $(STAGINGSERVER):staging/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.gz
- ssh $(STAGINGSERVER) "touch staging/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.gz.done"
+ ssh $(STAGINGSERVER) "mkdir -p nodejs/$(DISTTYPEDIR)/$(FULLVERSION)"
+ chmod 664 node-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.gz
+ scp -p node-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.gz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.gz
+ ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.gz.done"
ifeq ($(XZ), 0)
- scp -p node-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.xz $(STAGINGSERVER):staging/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.xz
- ssh $(STAGINGSERVER) "touch staging/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.xz.done"
+ chmod 664 node-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.xz
+ scp -p node-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.xz $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.xz
+ ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/node-$(FULLVERSION)-$(OSTYPE)-$(ARCH).tar.xz.done"
endif
haswrk=$(shell which wrk > /dev/null 2>&1; echo $$?)
diff --git a/README.md b/README.md
index 436169ef4327f5..6a6ff540027fe0 100644
--- a/README.md
+++ b/README.md
@@ -282,7 +282,7 @@ Instructions:
1. Obtain a copy of openssl-fips-x.x.x.tar.gz.
To comply with the security policy you must ensure the path
through which you get the file complies with the requirements
- for a "secure intallation" as described in section 6.6 in
+ for a "secure installation" as described in section 6.6 in
the [user guide] (https://openssl.org/docs/fips/UserGuide-2.0.pdf).
For evaluation/experimentation you can simply download and verify
`openssl-fips-x.x.x.tar.gz` from https://www.openssl.org/source/
@@ -331,53 +331,54 @@ information about the governance of the Node.js project, see
### TSC (Technical Steering Committee)
-* **Ben Noordhuis** <info@bnoordhuis.nl> ([@bnoordhuis](https://github.com/bnoordhuis))
-* **Bert Belder** <bertbelder@gmail.com> ([@piscisaureus](https://github.com/piscisaureus))
-* **Fedor Indutny** <fedor.indutny@gmail.com> ([@indutny](https://github.com/indutny))
-* **Trevor Norris** <trev.norris@gmail.com> ([@trevnorris](https://github.com/trevnorris))
-* **Chris Dickinson** <christopher.s.dickinson@gmail.com> ([@chrisdickinson](https://github.com/chrisdickinson))
-* **Rod Vagg** <rod@vagg.org> ([@rvagg](https://github.com/rvagg))
-* **Jeremiah Senkpiel** <fishrock123@rocketmail.com> ([@fishrock123](https://github.com/fishrock123))
-* **Colin Ihrig** <cjihrig@gmail.com> ([@cjihrig](https://github.com/cjihrig))
-* **Alexis Campailla** <orangemocha@nodejs.org> ([@orangemocha](https://github.com/orangemocha))
-* **Julien Gilli** <jgilli@nodejs.org> ([@misterdjules](https://github.com/misterdjules))
-* **James M Snell** <jasnell@gmail.com> ([@jasnell](https://github.com/jasnell))
-* **Steven R Loomis** <srloomis@us.ibm.com> ([@srl295](https://github.com/srl295))
-* **Michael Dawson** <michael_dawson@ca.ibm.com> ([@mhdawson](https://github.com/mhdawson))
-* **Shigeki Ohtsu** <ohtsu@iij.ad.jp> ([@shigeki](https://github.com/shigeki))
-* **Brian White** <mscdex@mscdex.net> ([@mscdex](https://github.com/mscdex))
+* [bnoordhuis](https://github.com/bnoordhuis) - **Ben Noordhuis** <info@bnoordhuis.nl>
+* [chrisdickinson](https://github.com/chrisdickinson) - **Chris Dickinson** <christopher.s.dickinson@gmail.com>
+* [cjihrig](https://github.com/cjihrig) - **Colin Ihrig** <cjihrig@gmail.com>
+* [fishrock123](https://github.com/fishrock123) - **Jeremiah Senkpiel** <fishrock123@rocketmail.com>
+* [indutny](https://github.com/indutny) - **Fedor Indutny** <fedor.indutny@gmail.com>
+* [jasnell](https://github.com/jasnell) - **James M Snell** <jasnell@gmail.com>
+* [misterdjules](https://github.com/misterdjules) - **Julien Gilli** <jgilli@nodejs.org>
+* [mscdex](https://github.com/mscdex) - **Brian White** <mscdex@mscdex.net>
+* [orangemocha](https://github.com/orangemocha) - **Alexis Campailla** <orangemocha@nodejs.org>
+* [piscisaureus](https://github.com/piscisaureus) - **Bert Belder** <bertbelder@gmail.com>
+* [rvagg](https://github.com/rvagg) - **Rod Vagg** <rod@vagg.org>
+* [shigeki](https://github.com/shigeki) - **Shigeki Ohtsu** <ohtsu@iij.ad.jp>
+* [trevnorris](https://github.com/trevnorris) - **Trevor Norris** <trev.norris@gmail.com>
### Collaborators
-* **Isaac Z. Schlueter** <i@izs.me> ([@isaacs](https://github.com/isaacs))
-* **Mikeal Rogers** <mikeal.rogers@gmail.com> ([@mikeal](https://github.com/mikeal))
-* **Thorsten Lorenz** <thlorenz@gmx.de> ([@thlorenz](https://github.com/thlorenz))
-* **Stephen Belanger** <admin@stephenbelanger.com> ([@qard](https://github.com/qard))
-* **Evan Lucas** <evanlucas@me.com> ([@evanlucas](https://github.com/evanlucas))
-* **Brendan Ashworth** <brendan.ashworth@me.com> ([@brendanashworth](https://github.com/brendanashworth))
-* **Vladimir Kurchatkin** <vladimir.kurchatkin@gmail.com> ([@vkurchatkin](https://github.com/vkurchatkin))
-* **Nikolai Vavilov** <vvnicholas@gmail.com> ([@seishun](https://github.com/seishun))
-* **Nicu Micleușanu** <micnic90@gmail.com> ([@micnic](https://github.com/micnic))
-* **Aleksey Smolenchuk** <lxe@lxe.co> ([@lxe](https://github.com/lxe))
-* **Sam Roberts** <vieuxtech@gmail.com> ([@sam-github](https://github.com/sam-github))
-* **Wyatt Preul** <wpreul@gmail.com> ([@geek](https://github.com/geek))
-* **Christian Tellnes** <christian@tellnes.no> ([@tellnes](https://github.com/tellnes))
-* **Robert Kowalski** <rok@kowalski.gd> ([@robertkowalski](https://github.com/robertkowalski))
-* **Julian Duque** <julianduquej@gmail.com> ([@julianduque](https://github.com/julianduque))
-* **Johan Bergström** <bugs@bergstroem.nu> ([@jbergstroem](https://github.com/jbergstroem))
-* **Roman Reiss** <me@silverwind.io> ([@silverwind](https://github.com/silverwind))
-* **Petka Antonov** <petka_antonov@hotmail.com> ([@petkaantonov](https://github.com/petkaantonov))
-* **Yosuke Furukawa** <yosuke.furukawa@gmail.com> ([@yosuke-furukawa](https://github.com/yosuke-furukawa))
-* **Alex Kocharin** <alex@kocharin.ru> ([@rlidwka](https://github.com/rlidwka))
-* **Christopher Monsanto** <chris@monsan.to> ([@monsanto](https://github.com/monsanto))
-* **Ali Ijaz Sheikh** <ofrobots@google.com> ([@ofrobots](https://github.com/ofrobots))
-* **Oleg Elifantiev** <oleg@elifantiev.ru> ([@Olegas](https://github.com/Olegas))
-* **Domenic Denicola** <d@domenic.me> ([@domenic](https://github.com/domenic))
-* **Rich Trott** <rtrott@gmail.com> ([@Trott](https://github.com/Trott))
-* **Сковорода Никита Андреевич** <chalkerx@gmail.com> ([@ChALkeR](https://github.com/ChALkeR))
-* **Sakthipriyan Vairamani** <thechargingvolcano@gmail.com> ([@thefourtheye](https://github.com/thefourtheye))
-* **Michaël Zasso** <mic.besace@gmail.com> ([@targos](https://github.com/targos))
-* **João Reis** <reis@janeasystems.com> ([@joaocgreis](https://github.com/joaocgreis))
+* [brendanashworth](https://github.com/brendanashworth) - **Brendan Ashworth** <brendan.ashworth@me.com>
+* [ChALkeR](https://github.com/ChALkeR) - **Сковорода Никита Андреевич** <chalkerx@gmail.com>
+* [domenic](https://github.com/domenic) - **Domenic Denicola** <d@domenic.me>
+* [evanlucas](https://github.com/evanlucas) - **Evan Lucas** <evanlucas@me.com>
+* [geek](https://github.com/geek) - **Wyatt Preul** <wpreul@gmail.com>
+* [isaacs](https://github.com/isaacs) - **Isaac Z. Schlueter** <i@izs.me>
+* [jbergstroem](https://github.com/jbergstroem) - **Johan Bergström** <bugs@bergstroem.nu>
+* [joaocgreis](https://github.com/joaocgreis) - **João Reis** <reis@janeasystems.com>
+* [julianduque](https://github.com/julianduque) - **Julian Duque** <julianduquej@gmail.com>
+* [lxe](https://github.com/lxe) - **Aleksey Smolenchuk** <lxe@lxe.co>
+* [mhdawson](https://github.com/mhdawson) - **Michael Dawson** <michael_dawson@ca.ibm.com>
+* [micnic](https://github.com/micnic) - **Nicu Micleușanu** <micnic90@gmail.com>
+* [mikeal](https://github.com/mikeal) - **Mikeal Rogers** <mikeal.rogers@gmail.com>
+* [monsanto](https://github.com/monsanto) - **Christopher Monsanto** <chris@monsan.to>
+* [ofrobots](https://github.com/ofrobots) - **Ali Ijaz Sheikh** <ofrobots@google.com>
+* [Olegas](https://github.com/Olegas) - **Oleg Elifantiev** <oleg@elifantiev.ru>
+* [petkaantonov](https://github.com/petkaantonov) - **Petka Antonov** <petka_antonov@hotmail.com>
+* [qard](https://github.com/qard) - **Stephen Belanger** <admin@stephenbelanger.com>
+* [rlidwka](https://github.com/rlidwka) - **Alex Kocharin** <alex@kocharin.ru>
+* [robertkowalski](https://github.com/robertkowalski) - **Robert Kowalski** <rok@kowalski.gd>
+* [sam-github](https://github.com/sam-github) - **Sam Roberts** <vieuxtech@gmail.com>
+* [seishun](https://github.com/seishun) - **Nikolai Vavilov** <vvnicholas@gmail.com>
+* [silverwind](https://github.com/silverwind) - **Roman Reiss** <me@silverwind.io>
+* [srl295](https://github.com/srl295) - **Steven R Loomis** <srloomis@us.ibm.com>
+* [targos](https://github.com/targos) - **Michaël Zasso** <mic.besace@gmail.com>
+* [tellnes](https://github.com/tellnes) - **Christian Tellnes** <christian@tellnes.no>
+* [thefourtheye](https://github.com/thefourtheye) - **Sakthipriyan Vairamani** <thechargingvolcano@gmail.com>
+* [thlorenz](https://github.com/thlorenz) - **Thorsten Lorenz** <thlorenz@gmx.de>
+* [Trott](https://github.com/Trott) - **Rich Trott** <rtrott@gmail.com>
+* [tunniclm](https://github.com/tunniclm) - **Mike Tunnicliffe** <m.j.tunnicliffe@gmail.com>
+* [vkurchatkin](https://github.com/vkurchatkin) - **Vladimir Kurchatkin** <vladimir.kurchatkin@gmail.com>
+* [yosuke-furukawa](https://github.com/yosuke-furukawa) - **Yosuke Furukawa** <yosuke.furukawa@gmail.com>
Collaborators & TSC members follow the [COLLABORATOR_GUIDE.md](./COLLABORATOR_GUIDE.md) in
maintaining the Node.js project.
@@ -405,7 +406,7 @@ gpg --keyserver pool.sks-keyservers.net --recv-keys DD8F2338BAE7501E3DD5AC78C273
```
See the section above on [Verifying Binaries](#verifying-binaries) for
-details on what to do with these keys to verify a downloaded file is official.
+details on what to do with these keys to verify that a downloaded file is official.
Previous releases of Node.js have been signed with one of the following GPG
keys:
diff --git a/benchmark/README.md b/benchmark/README.md
index 3216141c4e2cf6..c3d950f792e31f 100644
--- a/benchmark/README.md
+++ b/benchmark/README.md
@@ -23,8 +23,8 @@ There are three ways to run benchmark tests:
For example, buffers:
-```sh
-iojs benchmark/common.js buffers
+```bash
+node benchmark/common.js buffers
```
The above command will find all scripts under `buffers` directory and require
@@ -87,8 +87,8 @@ The last number is the rate of operations. Higher is better.
For example, buffer-slice.js:
-```sh
-iojs benchmark/buffers/buffer-read.js
+```bash
+node benchmark/buffers/buffer-read.js
```
The output:
```
@@ -104,8 +104,8 @@ This example will run only the first type of url test, with one iteration.
(Note: benchmarks require __many__ iterations to be statistically accurate.)
-```sh
-iojs benchmark/url/url-parse.js type=one n=1
+```bash
+node benchmark/url/url-parse.js type=one n=1
```
Output:
```
diff --git a/benchmark/common.js b/benchmark/common.js
index 158354004cd6bb..511ae384f418bf 100644
--- a/benchmark/common.js
+++ b/benchmark/common.js
@@ -137,7 +137,7 @@ Benchmark.prototype._run = function() {
if (this.config)
return this.fn(this.config);
- // one more more options weren't set.
+ // some options weren't set.
// run with all combinations
var main = require.main.filename;
var settings = [];
diff --git a/benchmark/misc/function_call/binding.cc b/benchmark/misc/function_call/binding.cc
index b8cedd7018f5ee..c6718e8e33adcc 100644
--- a/benchmark/misc/function_call/binding.cc
+++ b/benchmark/misc/function_call/binding.cc
@@ -9,7 +9,7 @@ void Hello(const FunctionCallbackInfo& args) {
args.GetReturnValue().Set(c++);
}
-extern "C" void init (Handle target) {
+extern "C" void init (Local target) {
HandleScope scope(Isolate::GetCurrent());
NODE_SET_METHOD(target, "hello", Hello);
}
diff --git a/common.gypi b/common.gypi
index 7972c2d60a5a77..dc7f9b67577d03 100644
--- a/common.gypi
+++ b/common.gypi
@@ -56,7 +56,7 @@
'configurations': {
'Debug': {
'variables': {
- 'v8_enable_handle_zapping%': 1,
+ 'v8_enable_handle_zapping': 1,
},
'defines': [ 'DEBUG', '_DEBUG' ],
'cflags': [ '-g', '-O0' ],
@@ -64,6 +64,10 @@
['target_arch=="x64"', {
'msvs_configuration_platform': 'x64',
}],
+ ['OS=="aix"', {
+ 'cflags': [ '-gxcoff' ],
+ 'ldflags': [ '-Wl,-bbigtoc' ],
+ }],
],
'msvs_settings': {
'VCCLCompilerTool': {
@@ -83,7 +87,7 @@
},
'Release': {
'variables': {
- 'v8_enable_handle_zapping%': 0,
+ 'v8_enable_handle_zapping': 0,
},
'cflags': [ '-O3', '-ffunction-sections', '-fdata-sections' ],
'conditions': [
@@ -173,16 +177,34 @@
},
'msvs_disabled_warnings': [4351, 4355, 4800],
'conditions': [
- ['asan != 0', {
+ ['asan == 1 and OS != "mac"', {
'cflags+': [
'-fno-omit-frame-pointer',
'-fsanitize=address',
- '-w', # http://crbug.com/162783
+ '-DLEAK_SANITIZER'
],
'cflags_cc+': [ '-gline-tables-only' ],
'cflags!': [ '-fomit-frame-pointer' ],
'ldflags': [ '-fsanitize=address' ],
}],
+ ['asan == 1 and OS == "mac"', {
+ 'xcode_settings': {
+ 'OTHER_CFLAGS+': [
+ '-fno-omit-frame-pointer',
+ '-gline-tables-only',
+ '-fsanitize=address',
+ '-DLEAK_SANITIZER'
+ ],
+ 'OTHER_CFLAGS!': [
+ '-fomit-frame-pointer',
+ ],
+ },
+ 'target_conditions': [
+ ['_type!="static_library"', {
+ 'xcode_settings': {'OTHER_LDFLAGS': ['-fsanitize=address']},
+ }],
+ ],
+ }],
['OS == "win"', {
'msvs_cygwin_shell': 0, # prevent actions from trying to use cygwin
'defines': [
@@ -199,11 +221,11 @@
'BUILDING_UV_SHARED=1',
],
}],
- [ 'OS in "linux freebsd openbsd solaris"', {
+ [ 'OS in "linux freebsd openbsd solaris aix"', {
'cflags': [ '-pthread', ],
'ldflags': [ '-pthread' ],
}],
- [ 'OS in "linux freebsd openbsd solaris android"', {
+ [ 'OS in "linux freebsd openbsd solaris android aix"', {
'cflags': [ '-Wall', '-Wextra', '-Wno-unused-parameter', ],
'cflags_cc': [ '-fno-rtti', '-fno-exceptions', '-std=gnu++0x' ],
'ldflags': [ '-rdynamic' ],
@@ -225,11 +247,11 @@
'cflags': [ '-m64' ],
'ldflags': [ '-m64' ],
}],
- [ 'target_arch=="ppc"', {
+ [ 'target_arch=="ppc" and OS!="aix"', {
'cflags': [ '-m32' ],
'ldflags': [ '-m32' ],
}],
- [ 'target_arch=="ppc64"', {
+ [ 'target_arch=="ppc64" and OS!="aix"', {
'cflags': [ '-m64', '-mminimal-toc' ],
'ldflags': [ '-m64' ],
}],
@@ -239,6 +261,18 @@
'cflags!': [ '-pthread' ],
'ldflags!': [ '-pthread' ],
}],
+ [ 'OS=="aix"', {
+ 'conditions': [
+ [ 'target_arch=="ppc"', {
+ 'ldflags': [ '-Wl,-bmaxdata:0x60000000/dsa' ],
+ }],
+ [ 'target_arch=="ppc64"', {
+ 'cflags': [ '-maix64' ],
+ 'ldflags': [ '-maix64' ],
+ }],
+ ],
+ 'ldflags!': [ '-rdynamic' ],
+ }],
],
}],
[ 'OS=="android"', {
diff --git a/configure b/configure
index 42817c21eb7872..c38a1a5a8cde38 100755
--- a/configure
+++ b/configure
@@ -25,7 +25,8 @@ import nodedownload
# parse our options
parser = optparse.OptionParser()
-valid_os = ('win', 'mac', 'solaris', 'freebsd', 'openbsd', 'linux', 'android')
+valid_os = ('win', 'mac', 'solaris', 'freebsd', 'openbsd', 'linux',
+ 'android', 'aix')
valid_arch = ('arm', 'arm64', 'ia32', 'mips', 'mipsel', 'ppc', 'ppc64', 'x32',
'x64', 'x86')
valid_arm_float_abi = ('soft', 'softfp', 'hard')
@@ -204,7 +205,7 @@ parser.add_option('--release-urlbase',
dest='release_urlbase',
help='Provide a custom URL prefix for the `process.release` properties '
'`sourceUrl` and `headersUrl`. When compiling a release build, this '
- 'will default to https://iojs.org/download/release/')
+ 'will default to https://nodejs.org/download/release/')
parser.add_option('--v8-options',
action='store',
@@ -335,6 +336,11 @@ parser.add_option('--xcode',
dest='use_xcode',
help='generate build files for use with xcode')
+parser.add_option('--enable-asan',
+ action='store_true',
+ dest='enable_asan',
+ help='build with asan')
+
parser.add_option('--enable-static',
action='store_true',
dest='enable_static',
@@ -405,7 +411,7 @@ def try_check_compiler(cc, lang):
#
# The version of asm compiler is needed for building openssl asm files.
# See deps/openssl/openssl.gypi for detail.
-# Commands and reglar expressions to obtain its version number is taken from
+# Commands and regular expressions to obtain its version number are taken from
# https://github.com/openssl/openssl/blob/OpenSSL_1_0_2-stable/crypto/sha/asm/sha512-x86_64.pl#L112-L129
#
def get_llvm_version(cc):
@@ -477,7 +483,7 @@ def check_compiler(o):
# to a version that is not completely ancient.
warn('C compiler too old, need gcc 4.2 or clang 3.2 (CC=%s)' % CC)
- # Need llvm_version or gas_version when openssl asm files are compiled
+ # Need llvm_version or gas_version when openssl asm files are compiled
if options.without_ssl or options.openssl_no_asm or options.shared_openssl:
return
@@ -487,11 +493,11 @@ def check_compiler(o):
o['variables']['gas_version'] = get_gas_version(CC)
-def cc_macros():
- """Checks predefined macros using the CC command."""
+def cc_macros(cc=None):
+ """Checks predefined macros using the C compiler command."""
try:
- p = subprocess.Popen(shlex.split(CC) + ['-dM', '-E', '-'],
+ p = subprocess.Popen(shlex.split(cc or CC) + ['-dM', '-E', '-'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
@@ -549,12 +555,18 @@ def is_arm_hard_float_abi():
def host_arch_cc():
"""Host architecture check using the CC command."""
- k = cc_macros()
+ if sys.platform.startswith('aix'):
+ # we only support gcc at this point and the default on AIX
+ # would be xlc so hard code gcc
+ k = cc_macros('gcc')
+ else:
+ k = cc_macros()
matchup = {
'__aarch64__' : 'arm64',
'__arm__' : 'arm',
'__i386__' : 'ia32',
+ '__MIPSEL__' : 'mipsel',
'__mips__' : 'mips',
'__PPC64__' : 'ppc64',
'__PPC__' : 'ppc',
@@ -707,6 +719,7 @@ def configure_node(o):
if options.linked_module:
o['variables']['library_files'] = options.linked_module
+ o['variables']['asan'] = int(options.enable_asan or 0)
def configure_library(lib, output):
shared_lib = 'shared_' + lib
diff --git a/deps/cares/cares.gyp b/deps/cares/cares.gyp
index 8fd8662e1bdf6f..8a5239b4129623 100644
--- a/deps/cares/cares.gyp
+++ b/deps/cares/cares.gyp
@@ -9,6 +9,10 @@
'_GNU_SOURCE'
]
}],
+ [ 'OS=="aix"', {
+ 'include_dirs': [ 'config/aix' ],
+ 'sources': [ 'config/aix/ares_config.h' ],
+ }],
['OS=="solaris"', {
'defines': [
'__EXTENSIONS__',
diff --git a/deps/cares/common.gypi b/deps/cares/common.gypi
index 8c10d5b06d3c04..609ad62a3965d0 100644
--- a/deps/cares/common.gypi
+++ b/deps/cares/common.gypi
@@ -137,7 +137,7 @@
],
}],
- [ 'OS in "linux freebsd openbsd solaris android"', {
+ [ 'OS in "linux freebsd openbsd solaris android aix"', {
'variables': {
'gcc_version%': ')'
},
diff --git a/deps/cares/config/aix/ares_config.h b/deps/cares/config/aix/ares_config.h
new file mode 100644
index 00000000000000..9e61d37bd84fe5
--- /dev/null
+++ b/deps/cares/config/aix/ares_config.h
@@ -0,0 +1,515 @@
+/* ares_config.h. Generated from ares_config.h.in by configure. */
+/* ares_config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define if building universal (internal helper macro) */
+/* #undef AC_APPLE_UNIVERSAL_BUILD */
+
+/* define this if ares is built for a big endian system */
+#define ARES_BIG_ENDIAN 1
+
+/* when building as static part of libcurl */
+/* #undef BUILDING_LIBCURL */
+
+/* when building c-ares library */
+/* #undef CARES_BUILDING_LIBRARY */
+
+/* when not building a shared library */
+/* #undef CARES_STATICLIB */
+
+/* Define to 1 to enable hiding of library internal symbols. */
+#define CARES_SYMBOL_HIDING 1
+
+/* Definition to make a library symbol externally visible. */
+#define CARES_SYMBOL_SCOPE_EXTERN __attribute__ ((visibility ("default")))
+
+/* if a /etc/inet dir is being used */
+/* #undef ETC_INET */
+
+/* Define to the type qualifier of arg 1 for getnameinfo. */
+#define GETNAMEINFO_QUAL_ARG1 const
+
+/* Define to the type of arg 1 for getnameinfo. */
+#define GETNAMEINFO_TYPE_ARG1 struct sockaddr *
+
+/* Define to the type of arg 2 for getnameinfo. */
+#define GETNAMEINFO_TYPE_ARG2 socklen_t
+
+/* Define to the type of args 4 and 6 for getnameinfo. */
+#define GETNAMEINFO_TYPE_ARG46 size_t
+
+/* Define to the type of arg 7 for getnameinfo. */
+#define GETNAMEINFO_TYPE_ARG7 int
+
+/* Specifies the number of arguments to getservbyport_r */
+#define GETSERVBYPORT_R_ARGS 4
+
+/* Specifies the size of the buffer to pass to getservbyport_r */
+#define GETSERVBYPORT_R_BUFSIZE sizeof(struct servent_data)
+
+/* Define to 1 if you have AF_INET6. */
+#define HAVE_AF_INET6 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_ARPA_INET_H 1
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_ARPA_NAMESER_COMPAT_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_ARPA_NAMESER_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_ASSERT_H 1
+
+/* Define to 1 if you have the `bitncmp' function. */
+/* #undef HAVE_BITNCMP */
+
+/* Define to 1 if bool is an available type. */
+#define HAVE_BOOL_T 1
+
+/* Define to 1 if you have the clock_gettime function and monotonic timer. */
+#define HAVE_CLOCK_GETTIME_MONOTONIC 1
+
+/* Define to 1 if you have the closesocket function. */
+/* #undef HAVE_CLOSESOCKET */
+
+/* Define to 1 if you have the CloseSocket camel case function. */
+/* #undef HAVE_CLOSESOCKET_CAMEL */
+
+/* Define to 1 if you have the connect function. */
+#define HAVE_CONNECT 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define to 1 if you have the fcntl function. */
+#define HAVE_FCNTL 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have a working fcntl O_NONBLOCK function. */
+#define HAVE_FCNTL_O_NONBLOCK 1
+
+/* Define to 1 if you have the freeaddrinfo function. */
+#define HAVE_FREEADDRINFO 1
+
+/* Define to 1 if you have a working getaddrinfo function. */
+#define HAVE_GETADDRINFO 1
+
+/* Define to 1 if the getaddrinfo function is threadsafe. */
+#define HAVE_GETADDRINFO_THREADSAFE 1
+
+/* Define to 1 if you have the gethostbyaddr function. */
+#define HAVE_GETHOSTBYADDR 1
+
+/* Define to 1 if you have the gethostbyname function. */
+#define HAVE_GETHOSTBYNAME 1
+
+/* Define to 1 if you have the gethostname function. */
+#define HAVE_GETHOSTNAME 1
+
+/* Define to 1 if you have the getnameinfo function. */
+#define HAVE_GETNAMEINFO 1
+
+/* Define to 1 if you have the getservbyport_r function. */
+#define HAVE_GETSERVBYPORT_R 1
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if you have the `if_indextoname' function. */
+#define HAVE_IF_INDEXTONAME 1
+
+/* Define to 1 if you have the `inet_net_pton' function. */
+#define HAVE_INET_NET_PTON 1
+
+/* Define to 1 if inet_net_pton supports IPv6. */
+/* #undef HAVE_INET_NET_PTON_IPV6 */
+
+/* Define to 1 if you have a IPv6 capable working inet_ntop function. */
+#define HAVE_INET_NTOP 1
+
+/* Define to 1 if you have a IPv6 capable working inet_pton function. */
+#define HAVE_INET_PTON 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the ioctl function. */
+#define HAVE_IOCTL 1
+
+/* Define to 1 if you have the ioctlsocket function. */
+/* #undef HAVE_IOCTLSOCKET */
+
+/* Define to 1 if you have the IoctlSocket camel case function. */
+/* #undef HAVE_IOCTLSOCKET_CAMEL */
+
+/* Define to 1 if you have a working IoctlSocket camel case FIONBIO function.
+ */
+/* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */
+
+/* Define to 1 if you have a working ioctlsocket FIONBIO function. */
+/* #undef HAVE_IOCTLSOCKET_FIONBIO */
+
+/* Define to 1 if you have a working ioctl FIONBIO function. */
+#define HAVE_IOCTL_FIONBIO 1
+
+/* Define to 1 if you have a working ioctl SIOCGIFADDR function. */
+#define HAVE_IOCTL_SIOCGIFADDR 1
+
+/* Define to 1 if you have the `resolve' library (-lresolve). */
+/* #undef HAVE_LIBRESOLVE */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_LIMITS_H 1
+
+/* if your compiler supports LL */
+#define HAVE_LL 1
+
+/* Define to 1 if the compiler supports the 'long long' data type. */
+#define HAVE_LONGLONG 1
+
+/* Define to 1 if you have the malloc.h header file. */
+#define HAVE_MALLOC_H 1
+
+/* Define to 1 if you have the memory.h header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the MSG_NOSIGNAL flag. */
+#define HAVE_MSG_NOSIGNAL 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_NETDB_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_NETINET_IN_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_NETINET_TCP_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_NET_IF_H 1
+
+/* Define to 1 if you have PF_INET6. */
+#define HAVE_PF_INET6 1
+
+/* Define to 1 if you have the recv function. */
+#define HAVE_RECV 1
+
+/* Define to 1 if you have the recvfrom function. */
+#define HAVE_RECVFROM 1
+
+/* Define to 1 if you have the send function. */
+#define HAVE_SEND 1
+
+/* Define to 1 if you have the setsockopt function. */
+#define HAVE_SETSOCKOPT 1
+
+/* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */
+/* #undef HAVE_SETSOCKOPT_SO_NONBLOCK */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SIGNAL_H 1
+
+/* Define to 1 if sig_atomic_t is an available typedef. */
+#define HAVE_SIG_ATOMIC_T 1
+
+/* Define to 1 if sig_atomic_t is already defined as volatile. */
+/* #undef HAVE_SIG_ATOMIC_T_VOLATILE */
+
+/* Define to 1 if your struct sockaddr_in6 has sin6_scope_id. */
+#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1
+
+/* Define to 1 if you have the socket function. */
+#define HAVE_SOCKET 1
+
+/* Define to 1 if you have the header file. */
+/* #undef HAVE_SOCKET_H */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STDBOOL_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the strcasecmp function. */
+#define HAVE_STRCASECMP 1
+
+/* Define to 1 if you have the strcmpi function. */
+/* #undef HAVE_STRCMPI */
+
+/* Define to 1 if you have the strdup function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the stricmp function. */
+/* #undef HAVE_STRICMP */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the strncasecmp function. */
+#define HAVE_STRNCASECMP 1
+
+/* Define to 1 if you have the strncmpi function. */
+/* #undef HAVE_STRNCMPI */
+
+/* Define to 1 if you have the strnicmp function. */
+/* #undef HAVE_STRNICMP */
+
+/* Define to 1 if you have the header file. */
+#define HAVE_STROPTS_H 1
+
+/* Define to 1 if you have struct addrinfo. */
+#define HAVE_STRUCT_ADDRINFO 1
+
+/* Define to 1 if you have struct in6_addr. */
+#define HAVE_STRUCT_IN6_ADDR 1
+
+/* Define to 1 if you have struct sockaddr_in6. */
+#define HAVE_STRUCT_SOCKADDR_IN6 1
+
+/* if struct sockaddr_storage is defined */
+#define HAVE_STRUCT_SOCKADDR_STORAGE 1
+
+/* Define to 1 if you have the timeval struct. */
+#define HAVE_STRUCT_TIMEVAL 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_SYS_UIO_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_TIME_H 1
+
+/* Define to 1 if you have the header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the windows.h header file. */
+/* #undef HAVE_WINDOWS_H */
+
+/* Define to 1 if you have the winsock2.h header file. */
+/* #undef HAVE_WINSOCK2_H */
+
+/* Define to 1 if you have the winsock.h header file. */
+/* #undef HAVE_WINSOCK_H */
+
+/* Define to 1 if you have the writev function. */
+#define HAVE_WRITEV 1
+
+/* Define to 1 if you have the ws2tcpip.h header file. */
+/* #undef HAVE_WS2TCPIP_H */
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#define LT_OBJDIR ".libs/"
+
+/* Define to 1 if you are building a native Windows target. */
+/* #undef NATIVE_WINDOWS */
+
+/* Define to 1 if you need the malloc.h header file even with stdlib.h */
+/* #undef NEED_MALLOC_H */
+
+/* Define to 1 if you need the memory.h header file even with stdlib.h */
+/* #undef NEED_MEMORY_H */
+
+/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
+/* #undef NEED_REENTRANT */
+
+/* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */
+#define NEED_THREAD_SAFE 1
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+/* #undef NO_MINUS_C_MINUS_O */
+
+/* cpu-machine-OS */
+#define OS "rs6000-ibm-aix"
+
+/* Name of package */
+#define PACKAGE "c-ares"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "c-ares mailing list => http://cool.haxx.se/mailman/listinfo/c-ares"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "c-ares"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "c-ares 1.7.1"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "c-ares"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "1.7.1"
+
+/* a suitable file/device to read random data from */
+#define RANDOM_FILE "/dev/urandom"
+
+/* Define to the type of arg 1 for recvfrom. */
+#define RECVFROM_TYPE_ARG1 int
+
+/* Define to the type pointed by arg 2 for recvfrom. */
+#define RECVFROM_TYPE_ARG2 void
+
+/* Define to 1 if the type pointed by arg 2 for recvfrom is void. */
+#define RECVFROM_TYPE_ARG2_IS_VOID 1
+
+/* Define to the type of arg 3 for recvfrom. */
+#define RECVFROM_TYPE_ARG3 size_t
+
+/* Define to the type of arg 4 for recvfrom. */
+#define RECVFROM_TYPE_ARG4 int
+
+/* Define to the type pointed by arg 5 for recvfrom. */
+#define RECVFROM_TYPE_ARG5 struct sockaddr
+
+/* Define to 1 if the type pointed by arg 5 for recvfrom is void. */
+/* #undef RECVFROM_TYPE_ARG5_IS_VOID */
+
+/* Define to the type pointed by arg 6 for recvfrom. */
+#define RECVFROM_TYPE_ARG6 socklen_t
+
+/* Define to 1 if the type pointed by arg 6 for recvfrom is void. */
+/* #undef RECVFROM_TYPE_ARG6_IS_VOID */
+
+/* Define to the function return type for recvfrom. */
+#define RECVFROM_TYPE_RETV ssize_t
+
+/* Define to the type of arg 1 for recv. */
+#define RECV_TYPE_ARG1 int
+
+/* Define to the type of arg 2 for recv. */
+#define RECV_TYPE_ARG2 void *
+
+/* Define to the type of arg 3 for recv. */
+#define RECV_TYPE_ARG3 size_t
+
+/* Define to the type of arg 4 for recv. */
+#define RECV_TYPE_ARG4 int
+
+/* Define to the function return type for recv. */
+#define RECV_TYPE_RETV ssize_t
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* Define to the type qualifier of arg 2 for send. */
+#define SEND_QUAL_ARG2 const
+
+/* Define to the type of arg 1 for send. */
+#define SEND_TYPE_ARG1 int
+
+/* Define to the type of arg 2 for send. */
+#define SEND_TYPE_ARG2 void *
+
+/* Define to the type of arg 3 for send. */
+#define SEND_TYPE_ARG3 size_t
+
+/* Define to the type of arg 4 for send. */
+#define SEND_TYPE_ARG4 int
+
+/* Define to the function return type for send. */
+#define SEND_TYPE_RETV ssize_t
+
+/* The size of `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* The size of `size_t', as computed by sizeof. */
+#define SIZEOF_SIZE_T 4
+
+/* The size of `struct in6_addr', as computed by sizeof. */
+#define SIZEOF_STRUCT_IN6_ADDR 16
+
+/* The size of `struct in_addr', as computed by sizeof. */
+#define SIZEOF_STRUCT_IN_ADDR 4
+
+/* The size of `time_t', as computed by sizeof. */
+#define SIZEOF_TIME_T 4
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both and . */
+#define TIME_WITH_SYS_TIME 1
+
+/* Define to disable non-blocking sockets. */
+/* #undef USE_BLOCKING_SOCKETS */
+
+/* Version number of package */
+#define VERSION "1.7.1"
+
+/* Define to avoid automatic inclusion of winsock.h */
+/* #undef WIN32_LEAN_AND_MEAN */
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+# define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+/* # undef WORDS_BIGENDIAN */
+# endif
+#endif
+
+/* Define to 1 if OS is AIX. */
+#ifndef _ALL_SOURCE
+# define _ALL_SOURCE 1
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define for large files, on AIX-style hosts. */
+#define _LARGE_FILES 1
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Type to use in place of in_addr_t when system does not provide it. */
+/* #undef in_addr_t */
+
+/* Define to `unsigned int' if does not define. */
+/* #undef size_t */
+
+/* the signed version of size_t */
+/* #undef ssize_t */
+
+#define HAVE_GETENV 1
diff --git a/deps/npm/.npmrc b/deps/npm/.npmrc
deleted file mode 100644
index ca0bc48dd5524f..00000000000000
--- a/deps/npm/.npmrc
+++ /dev/null
@@ -1,2 +0,0 @@
-save-prefix = ~
-proprietary-attribs = false
diff --git a/deps/npm/AUTHORS b/deps/npm/AUTHORS
index 9f48c3b5fbd4bf..42ca16c00c3e74 100644
--- a/deps/npm/AUTHORS
+++ b/deps/npm/AUTHORS
@@ -301,3 +301,12 @@ Thaddee Tyl
Steve Klabnik
Andrew Murray
Stephan Bönnemann
+Kyle M. Tarplee
+Derek Peterson
+Greg Whiteley
+murgatroid99
+Marcin Cieslak
+João Reis
+Matthew Hasbach
+Anna Henningsen
+Jon Hall
diff --git a/deps/npm/CHANGELOG.md b/deps/npm/CHANGELOG.md
index 3db382ca343e48..255349d53769c6 100644
--- a/deps/npm/CHANGELOG.md
+++ b/deps/npm/CHANGELOG.md
@@ -1,3 +1,401 @@
+### v2.14.4 (2015-09-10):
+
+#### THE GREAT NODEv4 SAGA
+
+So [Node 4 is out now](https://nodejs.org/en/blog/release/v4.0.0/) and that's
+going to involve a number of things over in npm land. Most importantly, it's the
+last major release that will include the `2.x` branch of npm. That also means
+that `2.x` is going to go into LTS mode in the coming weeks -- once `npm@3`
+becomes our official `latest` release. You can most likely expect Node 5 to
+include `npm@3` by default, whenever that happens. We'll go into more detail
+about LTS at that point, as well, so keep your eyes peeled for announcements!
+
+#### NODE IS DEAD. LONG LIVE NODE!
+
+Node 4 being released means that a few things that used to be floating patches
+are finally making it right into npm proper. This week, we've got two such
+updates, both to dependencies:
+
+* [`505d9e4`](https://github.com/npm/npm/commit/505d9e40c13b8b0bb3f70ee9886f7b73ba569407)
+ `node-gyp@3.0.1`: Support for node nightlies and compilation for both node and
+ io.js without extra patching
+ ([@rvagg](https://github.com/rvagg))
+
+[@thefourtheye](https://github.com/thefourtheye) was kind enough to submit a
+*bunch* of PRs to npm's dependencies updating them to `graceful-fs@4.1.2`, which
+mainly makes it so we're no longer monkey-patching `fs`. The following are all
+updates related to this:
+
+* [`10cb189`](https://github.com/npm/npm/commit/10cb189c773fef804214018d57509cc7a943184b)
+ `write-file-atomic@1.1.3`
+ ([@thefourtheye](https://github.com/thefourtheye))
+* [`edfb80b`](https://github.com/npm/npm/commit/edfb80b39f8cfce9a993f139eb98248001198e09)
+ `tar@2.2.1`
+ ([@thefourtheye](https://github.com/thefourtheye))
+* [`aa6e1ee`](https://github.com/npm/npm/commit/aa6e1eede7d71fa69d7256afdfbaa3406bc39a5b)
+ `read-package-json@2.0.1`
+ ([@thefourtheye](https://github.com/thefourtheye))
+* [`18971a3`](https://github.com/npm/npm/commit/18971a361635ed3958ecd39b63930ae1e56f8612)
+ `read-installed@4.0.3`
+ ([@thefourtheye](https://github.com/thefourtheye))
+* [`a4cba71`](https://github.com/npm/npm/commit/a4cba71bd2532236fda7385bf55e8790cafd4f0a)
+ `fstream@1.0.8`
+ ([@thefourtheye](https://github.com/thefourtheye))
+* [`70a38e2`](https://github.com/npm/npm/commit/70a38e29418951ac61ab6cf269d188074fe8ac3a)
+ `fs-write-stream-atomic@1.0.4`
+ ([@thefourtheye](https://github.com/thefourtheye))
+* [`9cbd20f`](https://github.com/npm/npm/commit/9cbd20f691e37960e4ba12d401abd1069657cb47)
+ `fs-vacuum@1.2.7`
+ ([@thefourtheye](https://github.com/thefourtheye))
+
+#### OTHER PATCHES
+
+* [`c4dd521`](https://github.com/npm/npm/commit/c4dd5213b2f3283ea0392845e5f78cac4573529e)
+ [#9506](https://github.com/npm/npm/issues/9506) Make `npm link` work on
+ Windows when using node pre-release/RC releases.
+ ([@jon-hall](https://github.com/jon-hall))
+* [`b6bc29c`](https://github.com/npm/npm/commit/b6bc29c1401b3d6b570c09cbef1866bdb0436b59)
+ [#9544](https://github.com/npm/npm/issues/9549) `process.binding` is being
+ deprecated, so our only direct usage has been removed.
+ ([@ChALkeR](https://github.com/ChALkeR))
+
+#### MORE DEPENDENCIES!
+
+* [`d940594`](https://github.com/npm/npm/commit/d940594e479a7f012b6dd6952e8ef985ba2a6216)
+ `tap@1.4.1`
+ ([@isaacs](https://github.com/isaacs))
+* [`ee38486`](https://github.com/npm/npm/commit/ee3848669331fd98879a3175789d963543f67ce3)
+ `which@1.1.2`: Added tests for Windows-related dead code that was previously
+ helping a silent failure happen. Travis stuff, too.
+ ([@isaacs](https://github.com/isaacs))
+
+#### DOC UPDATES
+
+* [`475daf5`](https://github.com/npm/npm/commit/475daf54ad07777938d1d7ee1a3e576961e84510)
+ [#9492](https://github.com/npm/npm/issues/9492) Clarify how `.npmignore` and
+ `.gitignore` are found and used by npm.
+ ([@addaleax](https://github.com/addaleax))
+* [`b2c391d`](https://github.com/npm/npm/commit/b2c391d7833249626a6d7650363a83bcc778717a)
+ `nopt@3.0.4`: Minor clarifications to docs about how array and errors work.
+ ([@zkat](https://github.com/zkat))
+
+### v2.14.3 (2015-09-03):
+
+#### TEAMS AND ORGS STILL BETA. CLI CODE STILL SOLID.
+
+Our closed beta for Teens and Orcs is happening! The web team is hard at work
+making sure everything looks pretty and usable and such. Once we fix things
+stemming from that beta, you can expect the feature to be available publicly.
+Some time after that, it'll even be available for free for FOSS orgs. It'll Be
+Done When It's Done™.
+
+#### OH GOOD, I CAN ACTUALLY UPSTREAM NOW
+
+Looks like last week's release foiled our own test suite when trying to upstream
+it to Node! Just a friendly reminder that no, `.npmrc` is no longer included
+then you pack/release a package! [@othiym23](https://github.com/othiym23) and
+[@isaacs](https://github.com/isaacs) managed to suss the really strange test
+failures resulting from that, and we've patched it in this release.
+
+* [`01a3428`](https://github.com/npm/npm/commit/01a3428534b754dca89a56fd1e49f55cb22f6f25)
+ [#9476](https://github.com/npm/npm/issues/9476) test: Recreate missing
+ `.npmrc` files when missing so downstream packagers can run tests on packed
+ npm.
+ ([@othiym23](https://github.com/othiym23))
+
+#### TALKING ABOUT THE CHANGELOG IN THE CHANGELOG IS LIKE, POMO OR SOMETHING
+
+* [`c1e7a83`](https://github.com/npm/npm/commit/c1e7a83c0ae7aadf01aecc57cf8a0ae2009d4da8)
+ [#9431](https://github.com/npm/npm/issues/9431) CHANGELOG: clarify
+ windows-related nature of patch
+ ([@saper](https://github.com/saper))
+
+#### devDependencies UPDATED
+
+No actual dep updates this week, but we're bumping a couple of devDeps:
+
+* [`8454835`](https://github.com/npm/npm/commit/84548351bfd63e3e305d195abbcad24c6b7c3e8e)
+ `tap@1.4.0`: Add `t.contains()` as alias to `t.match()`
+ ([@isaacs](https://github.com/isaacs))
+* [`13d2216`](https://github.com/npm/npm/commit/13d22161bcdeb6e1ed095d5ba2f77e6abfffa5eb)
+ `deep-equal@1.0.1`: Make `null == undefined` in non-strict mode
+ ([@isaacs](https://github.com/isaacs))
+
+### v2.14.2 (2015-08-27):
+
+#### GETTING THAT PESKY `preferGlobal` WARNING RIGHT
+
+So apparently the `preferGlobal` option hasn't quite been warning correctly for
+some time. But now it should be all better! tl;dr: if you try and install a
+dependency with `preferGlobal: true`, and it's _not already_ in your
+`package.json`, you'll get a warning that the author would really rather you
+install it with `--global`. This should prevent Windows PowerShell from thinking
+npm has failed just because of a benign warning.
+
+* [`bbb25f3`](https://github.com/npm/npm/commit/bbb25f30d582f8979168c79233a9f8f840974f90)
+ [#8841](https://github.com/npm/npm/issues/8841)
+ [#9409](https://github.com/npm/npm/issues/9409) The `preferGlobal`
+ warning shouldn't happen if the dependency being installed is listed in
+ `devDependencies`. ([@saper](https://github.com/saper))
+* [`222fcec`](https://github.com/npm/npm/commit/222fcec85ccd30d35899e5037079fb14625af4e2)
+ [#9409](https://github.com/npm/npm/issues/9409) `preferGlobal` now prints a
+ warning when there are no dependencies for the current package.
+ ([@zkat](https://github.com/zkat))
+* [`5cfed6d`](https://github.com/npm/npm/commit/5cfed6d7a1a5f2731688cfc8293b5e43a6355393)
+ [#9409](https://github.com/npm/npm/issues/9409) Verify that
+ `preferGlobal` is warning as expected (when a `preferGlobal` dependency is
+ installed, but isn't listed in either `dependencies` or `devDependencies`).
+ ([@zkat](https://github.com/zkat))
+
+#### BUMP +1
+
+* [`eeafce2`](https://github.com/npm/npm/commit/eeafce2d06883c0f51bf403415b6bc5f2647eba3)
+ `validate-npm-package-license@3.0.1`: Include additional metadata in parsed license object,
+ useful for license checkers. ([@kemitchell](https://github.com/kemitchell))
+* [`1502a28`](https://github.com/npm/npm/commit/1502a285f84aa548806b3eafc8889e6288e810f3)
+ `normalise-package-data@2.3.2`: Updated to use `validate-npm-package-license@3.0.1`.
+ ([@othiym23](https://github.com/othiym23))
+* [`cbde823`](https://github.com/npm/npm/commit/cbde8233436bf0ea62a4740869b4990322c20659)
+ `init-package-json@1.9.1`: Add a `silent` option to suppress output on writing the
+ generated `package.json`. Also, updated to use `validate-npm-package-license@3.0.1`.
+ ([@zkat](https://github.com/zkat))
+* [`08fda46`](https://github.com/npm/npm/commit/08fda465452b4d77f1ced8050ee3a35a77fc30a5)
+ `tar@2.2.0`: Minor improvements. ([@othiym23](https://github.com/othiym23))
+* [`dc2f20b`](https://github.com/npm/npm/commit/dc2f20b53fff77203139c863b48da0e959df2ac9)
+ `rimraf@2.4.3`: `EPERM` now triggers a delay / retry loop (since Windows throws
+ this when things still hold a handle). ([@isaacs](https://github.com/isaacs))
+* [`e8acb27`](https://github.com/npm/npm/commit/e8acb273aa67ee0394d0431650e1b2a7d09c8554)
+ `read@1.0.7`: Fix licensing ambiguity. ([@isaacs](https://github.com/isaacs))
+
+#### OTHER STUFF THAT'S RELEVANT
+
+* [`73a1ee0`](https://github.com/npm/npm/commit/73a1ee0be90fa1928521b63f28bef83b8ffab61d)
+ [#9386](https://github.com/npm/npm/issues/9386) Include additional unignorable files in
+ documentation.
+ ([@mjhasbach](https://github.com/mjhasbach))
+* [`0313e40`](https://github.com/npm/npm/commit/0313e40ee0f757fce8861be590ad668c23d7be53)
+ [#9396](https://github.com/npm/npm/issues/9396) Improve the `EISDIR` error
+ message returned by npm's error-handling code to give users a better hint of
+ what's most likely going on. Usually, error reports with this error code are
+ about people trying to install things without a `package.json`.
+ ([@KenanY](https://github.com/KenanY))
+* [`2677457`](https://github.com/npm/npm/commit/26774579c739c5951351e58263cf4d6ea3d66ec8)
+ [#9360](https://github.com/npm/npm/issues/9360) Make it easier to run
+ only _some_ of npm tests with lifecycle scripts via `npm tap test/tap/testname.js`.
+ ([@iarna](https://github.com/iarna))
+
+### v2.14.1 (2015-08-20):
+
+#### SECURITY FIX
+
+There are patches for two information leaks of moderate severity in `npm@2.14.1`:
+
+1. In some cases, npm was leaking sensitive credential information into the
+ child environment when running package and lifecycle scripts. This could
+ lead to packages being published with files (most notably `config.gypi`, a
+ file created by `node-gyp` that is a cache of environmental information
+ regenerated on every run) containing the bearer tokens used to authenticate
+ users to the registry. Users with affected packages have been notified (and
+ the affected tokens invalidated), and now npm has been modified to not
+ upload files that could contain this information, as well as scrubbing the
+ sensitive information out of the environment passed to child scripts.
+2. Per-package `.npmrc` files are used by some maintainers as a way to scope
+ those packages to a specific registry and its credentials. This is a
+ reasonable use case, but by default `.npmrc` was packed into packages,
+ leaking those credentials. npm will no longer include `.npmrc` when packing
+ tarballs.
+
+If you maintain packages and believe you may be affected by either
+of the above scenarios (especially if you've received a security
+notification from npm recently), please upgrade to `npm@2.14.1` as
+soon as possible. If you believe you may have inadvertently leaked
+your credentials, upgrade to `npm@2.14.1` on the affected machine,
+and run `npm logout` and then `npm login`. Your access tokens will be
+invalidated, which will eliminate any risk posed by tokens inadvertently
+included in published packages. We apologize for the inconvenience this
+causes, as well as the oversight that led to the existence of this issue
+in the first place.
+
+Huge thanks to [@ChALkeR](https://github.com/ChALkeR) for bringing these
+issues to our attention, and for helping us identify affected packages
+and maintainers. Thanks also to the Node.js security working group for
+their coördination with the team in our response to this issue. We
+appreciate everybody's patience and understanding tremendously.
+
+* [`b9474a8`](https://github.com/npm/npm/commit/b9474a843ca55b7c5fac6da33989e8eb39aff8b1)
+ `fstream-npm@1.0.5`: Stop publishing build cruft (`config.gypi`) and per-project
+ `.npmrc` files to keep local configuration out of published packages.
+ ([@othiym23](https://github.com/othiym23))
+* [`13c286d`](https://github.com/npm/npm/commit/13c286dbdc3fa8fec4cb79fc4d1ee505c8a41b2e)
+ [#9348](https://github.com/npm/npm/issues/9348) Filter "private"
+ (underscore-prefixed, even when scoped to a registry) configuration values
+ out of child environments. ([@othiym23](https://github.com/othiym23))
+
+#### BETTER WINDOWS INTEGRATION, ONE STEP AT A TIME
+
+* [`e40e71f`](https://github.com/npm/npm/commit/e40e71f2f838a8a42392f44e3eeec04e323ab743)
+ [#6412](https://github.com/npm/npm/issues/6412) Improve the search strategy
+ used by the npm shims for Windows to prioritize your own local npm installs.
+ npm has really needed this tweak for a long time, so hammer on it and let us
+ know if you run into issues, but with luck it will Just Work.
+ ([@joaocgreis](https://github.com/joaocgreis))
+* [`204ebbb`](https://github.com/npm/npm/commit/204ebbb3e0cab696a429a878ceeb4a7e78ec2b94)
+ [#8751](https://github.com/npm/npm/issues/8751)
+ [#7333](https://github.com/npm/npm/issues/7333) Keep [autorun
+ scripts](https://technet.microsoft.com/en-us/sysinternals/bb963902.aspx) from
+ interfering with npm package and lifecycle script execution on Windows by
+ adding `/d` and `/s` when invoking `cmd.exe`.
+ ([@saper](https://github.com/saper))
+
+#### IT SEEMED LIKE AN IDEA AT THE TIME
+
+* [`286f3d9`](https://github.com/npm/npm/commit/286f3d97103812f0fd84b70352addbe899e258f9)
+ [#9201](https://github.com/npm/npm/pull/9201) For a while npm was building
+ HTML partials for use on [`docs.npmjs.com`](https://docs.npmjs.com), but we
+ weren't actually using them. Stop building them, which makes running the full
+ test suite and installation process around a third faster.
+ ([@isaacs](https://github.com/isaacs))
+
+#### A SINGLE LONELY DEPENDENCY UPGRADE
+
+* [`b343b95`](https://github.com/npm/npm/commit/b343b956ef777e321e4251ddc96ec6d80827d9e2)
+ `request@2.61.0`: Bug fixes and keep-alive tweaks.
+ ([@simov](https://github.com/simov))
+
+### v2.14.0 (2015-08-13):
+
+#### IT'S HERE! KINDA!
+
+This release adds support for teens and orcs (err, teams and organizations) to
+the npm CLI! Note that the web site and registry-side features of this are
+still not ready for public consumption.
+
+A beta should be starting in the next couple of weeks, and the features
+themselves will become public once all that's done. Keep an eye out for more
+news!
+
+All of these changes were done under [`#9011`](https://github.com/npm/npm/pull/9011):
+
+* [`6424170`](https://github.com/npm/npm/commit/6424170fc17c666a6efc090370ec691e0cab1792)
+ Added new `npm team` command and subcommands.
+ ([@zkat](https://github.com/zkat))
+* [`52220d1`](https://github.com/npm/npm/commit/52220d146d474ec29b683bd99c06f75cbd46a9f4)
+ Added documentation for new `npm team` command.
+ ([@zkat](https://github.com/zkat))
+* [`4e66830`](https://github.com/npm/npm/commit/4e668304850d02df8eb27a779fda76fe5de645e7)
+ Updated `npm access` to support teams and organizations.
+ ([@zkat](https://github.com/zkat))
+* [`ea3eb87`](https://github.com/npm/npm/commit/ea3eb8733d9fa09ce34106b1b19fb1a8f95844a5)
+ Gussied up docs for `npm access` with new commands.
+ ([@zkat](https://github.com/zkat))
+* [`6e0b431`](https://github.com/npm/npm/commit/6e0b431c1de5e329c86e57d097aa88ebfedea864)
+ Fix up `npm whoami` to make the underlying API usable elsewhere.
+ ([@zkat](https://github.com/zkat))
+* [`f29c931`](https://github.com/npm/npm/commit/f29c931012ce5ccd69c29d83548f27e443bf7e62)
+ `npm-registry-client@7.0.1`: Upgrade `npm-registry-client` API to support
+ `team` and `access` calls against the registry.
+ ([@zkat](https://github.com/zkat))
+
+#### A FEW EXTRA VERSION BUMPS
+
+* [`c977e12`](https://github.com/npm/npm/commit/c977e12cbfa50c2f52fc807f5cc19ba1cc1b39bf)
+ `init-package-json@1.8.0`: Checks for some `npm@3` metadata.
+ ([@iarna](https://github.com/iarna))
+* [`5c8c9e5`](https://github.com/npm/npm/commit/5c8c9e5ae177ba7d0d298cfa42f3fc7f0271e4ec)
+ `columnify@1.5.2`: Updated some dependencies.
+ ([@timoxley](https://github.com/timoxley))
+* [`5d56742`](https://github.com/npm/npm/commit/5d567425768b75aeab402c817a53d8b2bc60d8de)
+ `chownr@1.0.1`: Tests, docs, and minor style nits.
+ ([@isaacs](https://github.com/isaacs))
+
+#### ALSO A DOC FIX
+
+* [`846fcc7`](https://github.com/npm/npm/commit/846fcc79b86984b109a97366b0422f995a45f8bf)
+ [`#9200`](https://github.com/npm/npm/pull/9200) Remove single quotes
+ around semver range, thus making it valid semver.
+ ([@KenanY](https://github.com/KenanY))
+
+### v2.13.5 (2015-08-07):
+
+This is another quiet week for the `npm@2` release.
+[@zkat](https://github.com/zkat) has been working hard on polishing the CLI
+bits of the registry's new feature to support direct management of teams and
+organizations, and [@iarna](https://github.com/iarna) continues to work through
+the list of issues blocking the general release of `npm@3`, which is looking
+more and more solid all the time.
+
+[@othiym23](https://github.com/othiym23) and [@zkat](https://github.com/zkat)
+have also been at this week's Node.js / io.js [collaborator
+summit](https://github.com/nodejs/summit/tree/master), both as facilitators and
+participants. This is a valuable opportunity to get some face time with other
+contributors and to work through a bunch of important discussions, but it does
+leave us feeling kind of sleepy. Running meetings is hard!
+
+What does that leave for this release? A few of the more tricky bug fixes that
+have been sitting around for a little while now, and a couple dependency
+upgrades. Nothing too fancy, but most of these were contributed by developers
+like _you_, which we think is swell. Thanks!
+
+#### BUG FIXES
+
+* [`d7271b8`](https://github.com/npm/npm/commit/d7271b8226712479cdd339bf85faf7e394923e0d)
+ [#4530](https://github.com/npm/npm/issues/4530) The bash completion script
+ for npm no longer alters global completion behavior around word breaks.
+ ([@whitty](https://github.com/whitty))
+* [`c9ce294`](https://github.com/npm/npm/commit/c9ce29415a0a8fc610690b6e9d91b64d6e36cfcc)
+ [#7198](https://github.com/npm/npm/issues/7198) When setting up dependencies
+ to be shared via `npm link `, only run the lifecycle scripts during
+ the original link, not when running `npm link ` or `npm install
+ --link` against them. ([@murgatroid99](https://github.com/murgatroid99))
+* [`422da66`](https://github.com/npm/npm/commit/422da664bd3ce71313da447f170507faf5aac46a)
+ [#9108](https://github.com/npm/npm/issues/9108) Clear up minor confusion
+ around wording in `bundledDependencies` section of `package.json` docs.
+ ([@derekpeterson](https://github.com/derekpeterson))
+* [`6b42d99`](https://github.com/npm/npm/commit/6b42d99460885e715772d3487b1c548d2bc8a738)
+ [#9146](https://github.com/npm/npm/issues/9146) Include scripts that run for
+ `preversion`, `version`, and `postversion` in the section for lifecycle
+ scripts rather than the generic `npm run-script` output.
+ ([@othiym23](https://github.com/othiym23))
+
+#### NOPE, NOT DONE WITH DEPENDENCY UPDATES
+
+* [`91a48bb`](https://github.com/npm/npm/commit/91a48bb5ef5a990781c86f8b69b8a32cf4fac2d9)
+ `chmodr@1.0.1`: Ignore symbolic links when recursively changing mode, just
+ like the Unix command. ([@isaacs](https://github.com/isaacs))
+* [`4bbc86e`](https://github.com/npm/npm/commit/4bbc86e3825e2eee9a8758ba26bdea0cb6a2581e)
+ `nock@2.10.0` ([@pgte](https://github.com/pgte))
+
+### v2.13.4 (2015-07-30):
+
+#### JULY ENDS ON A FAIRLY QUIET NOTE
+
+Hey everyone! I hope you've had a great week. We're having a fairly small
+release this week while we wrap up Teams and Orgs (or, as we've taken to calling
+it internally, _Teens and Orcs_).
+
+In other exciting news, a bunch of us are gonna be at the [Node.js Collaborator
+Summit](https://github.com/nodejs/summit/issues/1), and you can also find us at
+[wafflejs](https://wafflejs.com/) on Wednesday. Hopefully we'll be seeing some
+of you there. :)
+
+#### THE PATCH!!!
+
+So here it is. The patch. Hope it helps. (Thanks,
+[@ktarplee](https://github.com/ktarplee)!)
+
+* [`2e58c48`](https://github.com/npm/npm/commit/2e58c4819e3cafe4ae23ab7f4a520fe09258cfd7)
+ [#9033](https://github.com/npm/npm/pull/9033) `npm version` now works on git
+ submodules
+ ([@ktarplee](https://github.com/ktarplee))
+
+#### OH AND THERE'S A DEV DEPENDENCIES UPDATE
+
+Hooray.
+
+* [`d204683`](https://github.com/npm/npm/commit/d2046839d471322e61e3ceb0f00e78e5c481f967)
+ nock@2.9.1
+ ([@pgte](https://github.com/pgte))
+
### v2.13.3 (2015-07-23):
#### I'M SAVING THE GOOD JOKES FOR MORE INTERESTING RELEASES
@@ -29,12 +427,10 @@ There's a couple of doc updates! The last one might be interesting.
settings.
([@SimenB](https://github.com/SimenB))
* [`cf09e75`](https://github.com/npm/npm/commit/cf09e754931739af32647d667b671e72a4c79081)
-
[#9022](https://github.com/npm/npm/issues/9022) Document the `"access"` field
in `"publishConfig"`. Did you know you don't need to use `--access=public`
when publishing scoped packages?! Just put it in your `package.json`!
Go refresh yourself on scopes packages by [checking our docs](https://docs.npmjs.com/getting-started/scoped-packages) on them.
-
([@boennemann](https://github.com/boennemann))
* [`bfd73da`](https://github.com/npm/npm/commit/bfd73da33349cc2afb8278953b2ae16ea95023de)
[#9013](https://github.com/npm/npm/issues/9013) fixed typo in changelog
diff --git a/deps/npm/Makefile b/deps/npm/Makefile
index d935edfefe6d9c..34e40624b5aee6 100644
--- a/deps/npm/Makefile
+++ b/deps/npm/Makefile
@@ -31,28 +31,6 @@ misc_mandocs = $(shell find doc/misc -name '*.md' \
|sed 's|doc/misc/|man/man7/|g' ) \
man/man7/npm-index.7
-
-cli_partdocs = $(shell find doc/cli -name '*.md' \
- |sed 's|.md|.html|g' \
- |sed 's|doc/cli/|html/partial/doc/cli/|g' ) \
- html/partial/doc/README.html
-
-api_partdocs = $(shell find doc/api -name '*.md' \
- |sed 's|.md|.html|g' \
- |sed 's|doc/api/|html/partial/doc/api/|g' )
-
-files_partdocs = $(shell find doc/files -name '*.md' \
- |sed 's|.md|.html|g' \
- |sed 's|doc/files/|html/partial/doc/files/|g' ) \
- html/partial/doc/files/npm-json.html \
- html/partial/doc/files/npm-global.html
-
-misc_partdocs = $(shell find doc/misc -name '*.md' \
- |sed 's|.md|.html|g' \
- |sed 's|doc/misc/|html/partial/doc/misc/|g' ) \
- html/partial/doc/index.html
-
-
cli_htmldocs = $(shell find doc/cli -name '*.md' \
|sed 's|.md|.html|g' \
|sed 's|doc/cli/|html/doc/cli/|g' ) \
@@ -75,8 +53,6 @@ misc_htmldocs = $(shell find doc/misc -name '*.md' \
mandocs = $(api_mandocs) $(cli_mandocs) $(files_mandocs) $(misc_mandocs)
-partdocs = $(api_partdocs) $(cli_partdocs) $(files_partdocs) $(misc_partdocs)
-
htmldocs = $(api_htmldocs) $(cli_htmldocs) $(files_htmldocs) $(misc_htmldocs)
all: doc
@@ -103,7 +79,7 @@ clean: markedclean marked-manclean doc-clean uninstall
uninstall:
node cli.js rm npm -g -f
-doc: $(mandocs) $(htmldocs) $(partdocs)
+doc: $(mandocs) $(htmldocs)
markedclean:
rm -rf node_modules/marked node_modules/.bin/marked .building_marked
@@ -143,73 +119,43 @@ man/man5/%.5: doc/files/%.md scripts/doc-build.sh package.json
@[ -d man/man5 ] || mkdir -p man/man5
scripts/doc-build.sh $< $@
-man/man7/%.7: doc/misc/%.md scripts/doc-build.sh package.json
- @[ -d man/man7 ] || mkdir -p man/man7
- scripts/doc-build.sh $< $@
-
-
doc/misc/npm-index.md: scripts/index-build.js package.json
node scripts/index-build.js > $@
-
-# html/doc depends on html/partial/doc
-html/doc/%.html: html/partial/doc/%.html
- @[ -d html/doc ] || mkdir -p html/doc
- scripts/doc-build.sh $< $@
-
-html/doc/README.html: html/partial/doc/README.html
+html/doc/index.html: doc/misc/npm-index.md $(html_docdeps)
@[ -d html/doc ] || mkdir -p html/doc
scripts/doc-build.sh $< $@
-html/doc/cli/%.html: html/partial/doc/cli/%.html
- @[ -d html/doc/cli ] || mkdir -p html/doc/cli
+man/man7/%.7: doc/misc/%.md scripts/doc-build.sh package.json
+ @[ -d man/man7 ] || mkdir -p man/man7
scripts/doc-build.sh $< $@
-html/doc/misc/%.html: html/partial/doc/misc/%.html
- @[ -d html/doc/misc ] || mkdir -p html/doc/misc
+html/doc/README.html: README.md $(html_docdeps)
+ @[ -d html/doc ] || mkdir -p html/doc
scripts/doc-build.sh $< $@
-html/doc/files/%.html: html/partial/doc/files/%.html
- @[ -d html/doc/files ] || mkdir -p html/doc/files
+html/doc/cli/%.html: doc/cli/%.md $(html_docdeps)
+ @[ -d html/doc/cli ] || mkdir -p html/doc/cli
scripts/doc-build.sh $< $@
-html/doc/api/%.html: html/partial/doc/api/%.html
+html/doc/api/%.html: doc/api/%.md $(html_docdeps)
@[ -d html/doc/api ] || mkdir -p html/doc/api
scripts/doc-build.sh $< $@
-
-html/partial/doc/index.html: doc/misc/npm-index.md $(html_docdeps)
- @[ -d html/partial/doc ] || mkdir -p html/partial/doc
- scripts/doc-build.sh $< $@
-
-html/partial/doc/README.html: README.md $(html_docdeps)
- @[ -d html/partial/doc ] || mkdir -p html/partial/doc
- scripts/doc-build.sh $< $@
-
-html/partial/doc/cli/%.html: doc/cli/%.md $(html_docdeps)
- @[ -d html/partial/doc/cli ] || mkdir -p html/partial/doc/cli
- scripts/doc-build.sh $< $@
-
-html/partial/doc/api/%.html: doc/api/%.md $(html_docdeps)
- @[ -d html/partial/doc/api ] || mkdir -p html/partial/doc/api
- scripts/doc-build.sh $< $@
-
-html/partial/doc/files/npm-json.html: html/partial/doc/files/package.json.html
+html/doc/files/npm-json.html: html/doc/files/package.json.html
cp $< $@
-html/partial/doc/files/npm-global.html: html/partial/doc/files/npm-folders.html
+html/doc/files/npm-global.html: html/doc/files/npm-folders.html
cp $< $@
-html/partial/doc/files/%.html: doc/files/%.md $(html_docdeps)
- @[ -d html/partial/doc/files ] || mkdir -p html/partial/doc/files
+html/doc/files/%.html: doc/files/%.md $(html_docdeps)
+ @[ -d html/doc/files ] || mkdir -p html/doc/files
scripts/doc-build.sh $< $@
-html/partial/doc/misc/%.html: doc/misc/%.md $(html_docdeps)
- @[ -d html/partial/doc/misc ] || mkdir -p html/partial/doc/misc
+html/doc/misc/%.html: doc/misc/%.md $(html_docdeps)
+ @[ -d html/doc/misc ] || mkdir -p html/doc/misc
scripts/doc-build.sh $< $@
-
-
marked: node_modules/.bin/marked
node_modules/.bin/marked:
diff --git a/deps/npm/README.md b/deps/npm/README.md
index dcd06b50dbc566..ceaefb8f6c3438 100644
--- a/deps/npm/README.md
+++ b/deps/npm/README.md
@@ -16,7 +16,7 @@ and prior, clone the git repo and dig through the old tags and branches.
## Super Easy Install
-npm comes with [node](http://nodejs.org/download/) now.
+npm is bundled with [node](http://nodejs.org/download/).
### Windows Computers
diff --git a/deps/npm/bin/npm b/deps/npm/bin/npm
index d020ccfe7cba75..45e8e41031cd27 100755
--- a/deps/npm/bin/npm
+++ b/deps/npm/bin/npm
@@ -7,8 +7,21 @@ case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
-if [ -x "$basedir/node.exe" ]; then
- "$basedir/node.exe" "$basedir/node_modules/npm/bin/npm-cli.js" "$@"
-else
- node "$basedir/node_modules/npm/bin/npm-cli.js" "$@"
+NODE_EXE="$basedir/node.exe"
+if ! [ -x "$NODE_EXE" ]; then
+ NODE_EXE=node
fi
+
+NPM_CLI_JS="$basedir/node_modules/npm/bin/npm-cli.js"
+
+case `uname` in
+ *CYGWIN*)
+ NPM_PREFIX=`"$NODE_EXE" "$NPM_CLI_JS" prefix -g`
+ NPM_PREFIX_NPM_CLI_JS="$NPM_PREFIX/node_modules/npm/bin/npm-cli.js"
+ if [ -f "$NPM_PREFIX_NPM_CLI_JS" ]; then
+ NPM_CLI_JS="$NPM_PREFIX_NPM_CLI_JS"
+ fi
+ ;;
+esac
+
+"$NODE_EXE" "$NPM_CLI_JS" "$@"
diff --git a/deps/npm/bin/npm.cmd b/deps/npm/bin/npm.cmd
index 7720e20529ccb6..880554dcdd686e 100644
--- a/deps/npm/bin/npm.cmd
+++ b/deps/npm/bin/npm.cmd
@@ -1,6 +1,19 @@
-:: Created by npm, please don't edit manually.
-@IF EXIST "%~dp0\node.exe" (
- "%~dp0\node.exe" "%~dp0\.\node_modules\npm\bin\npm-cli.js" %*
-) ELSE (
- node "%~dp0\.\node_modules\npm\bin\npm-cli.js" %*
-)
+:: Created by npm, please don't edit manually.
+@ECHO OFF
+
+SETLOCAL
+
+SET "NODE_EXE=%~dp0\node.exe"
+IF NOT EXIST "%NODE_EXE%" (
+ SET "NODE_EXE=node"
+)
+
+SET "NPM_CLI_JS=%~dp0\node_modules\npm\bin\npm-cli.js"
+FOR /F "delims=" %%F IN ('CALL "%NODE_EXE%" "%NPM_CLI_JS%" prefix -g') DO (
+ SET "NPM_PREFIX_NPM_CLI_JS=%%F\node_modules\npm\bin\npm-cli.js"
+)
+IF EXIST "%NPM_PREFIX_NPM_CLI_JS%" (
+ SET "NPM_CLI_JS=%NPM_PREFIX_NPM_CLI_JS%"
+)
+
+"%NODE_EXE%" "%NPM_CLI_JS%" %*
diff --git a/deps/npm/doc/api/npm-view.md b/deps/npm/doc/api/npm-view.md
index fd0076c9674864..0c110f52ed1c59 100644
--- a/deps/npm/doc/api/npm-view.md
+++ b/deps/npm/doc/api/npm-view.md
@@ -65,7 +65,7 @@ If a version range is provided, then data will be printed for every
matching version of the package. This will show which version of jsdom
was required by each matching version of yui3:
- npm.commands.view(["yui3@'>0.5.4'", "dependencies.jsdom"], callback)
+ npm.commands.view(["yui3@>0.5.4", "dependencies.jsdom"], callback)
## OUTPUT
diff --git a/deps/npm/doc/cli/npm-access.md b/deps/npm/doc/cli/npm-access.md
index 85db7e654186dc..aabdbe03ca0169 100644
--- a/deps/npm/doc/cli/npm-access.md
+++ b/deps/npm/doc/cli/npm-access.md
@@ -6,10 +6,11 @@ npm-access(1) -- Set access level on published packages
npm access public []
npm access restricted []
- npm access add []
- npm access rm []
+ npm access grant []
+ npm access revoke []
- npm access ls []
+ npm access ls-packages [||]
+ npm access ls-collaborators [ []]
npm access edit []
## DESCRIPTION
@@ -23,13 +24,20 @@ subcommand.
* public / restricted:
Set a package to be either publicly accessible or restricted.
-* add / rm:
+* grant / revoke:
Add or remove the ability of users and teams to have read-only or read-write
access to a package.
-* ls:
+* ls-packages:
+
+ Show all of the packages a user or a team is able to access, along with the
+ access level, except for read-only public packages (it won't print the whole
+ registry listing)
+
+* ls-collaborators:
Show all of the access privileges for a package. Will only show permissions
- for packages to which you have at least read access.
+ for packages to which you have at least read access. If `` is passed in,
+ the list is filtered only to teams _that_ user happens to belong to.
* edit:
Set the access privileges for a package at once using `$EDITOR`.
@@ -56,8 +64,11 @@ If your account is not paid, then attempts to publish scoped packages will fail
with an HTTP 402 status code (logically enough), unless you use
`--access=public`.
+Management of teams and team memberships is done with the `npm team` command.
+
## SEE ALSO
+* npm-team(1)
* npm-publish(1)
* npm-config(7)
* npm-registry(7)
diff --git a/deps/npm/doc/cli/npm-team.md b/deps/npm/doc/cli/npm-team.md
new file mode 100644
index 00000000000000..2ed9b367b56d30
--- /dev/null
+++ b/deps/npm/doc/cli/npm-team.md
@@ -0,0 +1,55 @@
+npm-team(1) -- Manage organization teams and team memberships
+=============================================================
+
+## SYNOPSIS
+
+ npm team create
+ npm team destroy
+
+ npm team add
+ npm team rm
+
+ npm team ls |
+
+ npm team edit
+
+## DESCRIPTION
+
+Used to manage teams in organizations, and change team memberships. Does not
+handle permissions for packages.
+
+Teams must always be fully qualified with the organization/scope they belond to
+when operating on them, separated by a colon (`:`). That is, if you have a
+`developers` team on a `foo` organization, you must always refer to that team as
+`developers:foo` in these commands.
+
+* create / destroy:
+ Create a new team, or destroy an existing one.
+
+* add / rm:
+ Add a user to an existing team, or remove a user from a team they belong to.
+
+* ls:
+ If performed on an organization name, will return a list of existing teams
+ under that organization. If performed on a team, it will instead return a list
+ of all users belonging to that particular team.
+
+## DETAILS
+
+`npm team` always operates directly on the current registry, configurable from
+the command line using `--registry=`.
+
+In order to create teams and manage team membership, you must be a *team admin*
+under the given organization. Listing teams and team memberships may be done by
+any member of the organizations.
+
+Organization creation and management of team admins and *organization* members
+is done through the website, not the npm CLI.
+
+To use teams to manage permissions on packages belonging to your organization,
+use the `npm access` command to grant or revoke the appropriate permissions.
+
+## SEE ALSO
+
+* npm-access(1)
+* npm-registr(7)
diff --git a/deps/npm/doc/files/package.json.md b/deps/npm/doc/files/package.json.md
index b0d86d9492f0d0..91064b58b96159 100644
--- a/deps/npm/doc/files/package.json.md
+++ b/deps/npm/doc/files/package.json.md
@@ -178,10 +178,10 @@ The "files" field is an array of files to include in your project. If
you name a folder in the array, then it will also include the files
inside that folder. (Unless they would be ignored by another rule.)
-You can also provide a ".npmignore" file in the root of your package,
-which will keep files from being included, even if they would be picked
-up by the files array. The ".npmignore" file works just like a
-".gitignore".
+You can also provide a ".npmignore" file in the root of your package or
+in subdirectories, which will keep files from being included, even
+if they would be picked up by the files array. The `.npmignore` file
+works just like a `.gitignore`.
Certain files are always included, regardless of settings:
@@ -571,7 +571,7 @@ this. If you depend on features introduced in 1.5.2, use `">= 1.5.2 < 2"`.
Array of package names that will be bundled when publishing the package.
-If this is spelled `"bundleDependencies"`, then that is also honorable.
+If this is spelled `"bundleDependencies"`, then that is also honored.
## optionalDependencies
diff --git a/deps/npm/doc/misc/npm-developers.md b/deps/npm/doc/misc/npm-developers.md
index 2b025034f85188..2ef900b34936c2 100644
--- a/deps/npm/doc/misc/npm-developers.md
+++ b/deps/npm/doc/misc/npm-developers.md
@@ -100,7 +100,9 @@ Use a `.npmignore` file to keep stuff out of your package. If there's
no `.npmignore` file, but there *is* a `.gitignore` file, then npm will
ignore the stuff matched by the `.gitignore` file. If you *want* to
include something that is excluded by your `.gitignore` file, you can
-create an empty `.npmignore` file to override it.
+create an empty `.npmignore` file to override it. Like `git`, `npm` looks
+for `.npmignore` and `.gitignore` files in all subdirectories of your
+package, not only the root directory.
`.npmignore` files follow the [same pattern rules](http://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository#Ignoring-Files)
as `.gitignore` files:
@@ -118,9 +120,11 @@ need to add them to `.npmignore` explicitly:
* `.DS_Store`
* `.git`
* `.hg`
+* `.npmrc`
* `.lock-wscript`
* `.svn`
* `.wafpickle-*`
+* `config.gypi`
* `CVS`
* `npm-debug.log`
@@ -132,7 +136,9 @@ The following paths and files are never ignored, so adding them to
`.npmignore` is pointless:
* `package.json`
-* `README.*`
+* `README` (and its variants)
+* `CHANGELOG` (and its variants)
+* `LICENSE` / `LICENCE`
## Link Packages
diff --git a/deps/npm/doc/misc/npm-index.md b/deps/npm/doc/misc/npm-index.md
index 837ef26ba0180d..ac725e1ed8bc6a 100644
--- a/deps/npm/doc/misc/npm-index.md
+++ b/deps/npm/doc/misc/npm-index.md
@@ -181,6 +181,10 @@ Stop a package
Tag a published version
+### npm-team(1)
+
+Manage organization teams and team memberships
+
### npm-test(1)
Test a package
diff --git a/deps/npm/html/doc/README.html b/deps/npm/html/doc/README.html
index 0ad6f04cf5558a..95426c716d1d6f 100644
--- a/deps/npm/html/doc/README.html
+++ b/deps/npm/html/doc/README.html
@@ -19,7 +19,7 @@ IMPORTANT
To install an old and unsupported version of npm that works on node 0.3
and prior, clone the git repo and dig through the old tags and branches.
Super Easy Install
-npm comes with node now.
+npm is bundled with node .
Windows Computers
Get the MSI . npm is in it.
Apple Macintosh Computers
@@ -140,7 +140,7 @@ Legal Stuff
If you have a complaint about a package in the public npm registry,
and cannot resolve it with the package
owner , please email
-support@npmjs.com and explain the situation.
+support@npmjs.com and explain the situation.
Any data published to The npm Registry (including user account
information) may be removed or modified at the sole discretion of the
npm server administrators.
@@ -166,10 +166,10 @@ The callback is called with the package.json data of the thing that is
eventually added to or read from the cache.
@@ -42,5 +42,5 @@ If a version range is provided, then data will be printed for every
matching version of the package. This will show which version of jsdom
was required by each matching version of yui3:
-This is the API documentation for npm.
To find documentation of the command line
-client, see npm(1)
.
+client, see Used to set access controls on private packages.
@@ -28,13 +29,19 @@ Even if a package version is unpublished, that specific name and
version combination can never be reused. In order to publish the
package again, a new version number must be used.
-Commit and tag the version change.
"Person" fields are shown as a string if they would be shown as an
object. So, for example, this will show the list of npm contributors in
-the shortened string format. (See package.json(5)
for more on this.)
+the shortened string format. (See If a version range is provided, then data will be printed for every
matching version of the package. This will show which version of jsdom
@@ -63,12 +63,12 @@
npm is the package manager for the Node JavaScript platform. It puts
modules in place so that node can find them, and manages dependency
@@ -25,7 +25,7 @@
You probably got npm because you want to install stuff.
Scoped packages are installed the same way, except they are grouped together
in a sub-folder of the relevant node_modules
folder with the name of that
scope prefix by the @ symbol, e.g. npm install @myorg/package
would place
-the package in {prefix}/node_modules/@myorg/package
. See scopes(7)
for
+the package in {prefix}/node_modules/@myorg/package
. See scopes(7)
for
more details.
When in local mode, man pages are not installed.
Man pages are not installed on Windows systems.
This allows a package maintainer to install all of their dependencies
(and dev dependencies) locally, but only re-publish those items that
-cannot be found elsewhere. See package.json(5)
for more information.
+cannot be found elsewhere. See Scoped packages are installed the same way, except they are grouped together
in a sub-folder of the relevant node_modules
folder with the name of that
scope prefix by the @ symbol, e.g. npm install @myorg/package
would place
-the package in {prefix}/node_modules/@myorg/package
. See scopes(7)
for
+the package in {prefix}/node_modules/@myorg/package
. See scopes(7)
for
more details.
When in local mode, man pages are not installed.
Man pages are not installed on Windows systems.
This allows a package maintainer to install all of their dependencies
(and dev dependencies) locally, but only re-publish those items that
-cannot be found elsewhere. See package.json(5)
for more information.
+cannot be found elsewhere. See This document is all you need to know about what's required in your package.json
file. It must be actual JSON, not just a JavaScript object literal.
A lot of the behavior described in this document is affected by the config
-settings described in npm-config(7)
.
+settings described in Put a description in it. It's a string. This helps people discover your
package, as it's listed in npm search
.
@@ -136,14 +136,14 @@ The "files" field is an array of files to include in your project. If
you name a folder in the array, then it will also include the files
inside that folder. (Unless they would be ignored by another rule.)
-You can also provide a ".npmignore" file in the root of your package,
-which will keep files from being included, even if they would be picked
-up by the files array. The ".npmignore" file works just like a
-".gitignore".
+You can also provide a ".npmignore" file in the root of your package or
+in subdirectories, which will keep files from being included, even
+if they would be picked up by the files array. The .npmignore
file
+works just like a .gitignore
.
The "scripts" 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.
-A "config" object can be used to set configuration parameters used in package
scripts that persist across upgrades. For instance, if a package had the
@@ -282,7 +282,7 @@
Dependencies are specified in a simple object that maps a package name to a
@@ -291,15 +291,15 @@
For build steps that are not platform-specific, such as compiling
CoffeeScript or other languages to JavaScript, use the prepublish
script to do this, and make the required package a devDependency.
@@ -433,7 +433,7 @@ Array of package names that will be bundled when publishing the package.
-If a dependency can be used, but you would like npm to proceed if it cannot be
found or fails to install, then you may put it in the optionalDependencies
@@ -520,7 +520,7 @@
Any config values can be overridden, but of course only "tag", "registry" and
"access" probably matter for the purposes of publishing.
-npm will default some values based on package contents.
@@ -542,16 +542,16 @@ Put a description in it. It's a string. This helps people discover your
package, as it's listed in npm search
.
@@ -136,14 +136,14 @@ The "files" field is an array of files to include in your project. If
you name a folder in the array, then it will also include the files
inside that folder. (Unless they would be ignored by another rule.)
-You can also provide a ".npmignore" file in the root of your package,
-which will keep files from being included, even if they would be picked
-up by the files array. The ".npmignore" file works just like a
-".gitignore".
+You can also provide a ".npmignore" file in the root of your package or
+in subdirectories, which will keep files from being included, even
+if they would be picked up by the files array. The .npmignore
file
+works just like a .gitignore
.
The "scripts" 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.
-A "config" object can be used to set configuration parameters used in package
scripts that persist across upgrades. For instance, if a package had the
@@ -282,7 +282,7 @@
Dependencies are specified in a simple object that maps a package name to a
@@ -291,15 +291,15 @@
For build steps that are not platform-specific, such as compiling
CoffeeScript or other languages to JavaScript, use the prepublish
script to do this, and make the required package a devDependency.
@@ -433,7 +433,7 @@ Array of package names that will be bundled when publishing the package.
-If a dependency can be used, but you would like npm to proceed if it cannot be
found or fails to install, then you may put it in the optionalDependencies
@@ -520,7 +520,7 @@
Any config values can be overridden, but of course only "tag", "registry" and
"access" probably matter for the purposes of publishing.
-npm will default some values based on package contents.
@@ -542,16 +542,16 @@ Boolean objects are verboten.
A set of configuration parameters that are internal to npm, and are
defaults if nothing else is specified.
@@ -78,7 +78,7 @@ and then follow the prompts.
-This part's easy. IN the root of your folder, do this:
Yes. It should be a url to a gzipped tarball containing a single folder
that has a package.json in its root, or a git url.
(See "what is a package?" above.)
npm is not capable of hatred. It loves everyone, especially you.
The easiest way is to replicate the couch database, and use the same (or
@@ -40,7 +40,7 @@
No. If you want things to be public, then publish them into the public
registry using npm. What little security there is would be for nought
@@ -52,11 +52,11 @@
Note that if the @-symbol is omitted in either case npm will instead attempt to
-install from GitHub; see npm-install(1)
.
+install from GitHub; see Because scoped packages are installed into a scope folder, you have to
include the name of the scope when requiring them in your code, e.g.
@@ -75,9 +75,9 @@ Inspect the env to determine where to put things. For instance, if
@@ -190,10 +190,10 @@ BEST PRACTICES
SEE ALSO
@@ -207,5 +207,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/removing-npm.html b/deps/npm/html/doc/misc/removing-npm.html
index 64aaefcdfc7ba1..76bd7fae9c8599 100644
--- a/deps/npm/html/doc/misc/removing-npm.html
+++ b/deps/npm/html/doc/misc/removing-npm.html
@@ -38,12 +38,12 @@ SYNOPSIS
Prior to version 0.3, npm used shim files for executables and node
modules. To track those down, you can do the following:
find /usr/local/{lib/node,bin} -exec grep -l npm \{\} \; ;
-
(This is also in the README file.)
+(This is also in the README file.)
SEE ALSO
@@ -57,5 +57,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/semver.html b/deps/npm/html/doc/misc/semver.html
index 3dd74b37af3f04..e2c5899ac6ef5f 100644
--- a/deps/npm/html/doc/misc/semver.html
+++ b/deps/npm/html/doc/misc/semver.html
@@ -282,5 +282,5 @@ Ranges
-
+
diff --git a/deps/npm/html/partial/doc/README.html b/deps/npm/html/partial/doc/README.html
deleted file mode 100644
index 265dc198be38df..00000000000000
--- a/deps/npm/html/partial/doc/README.html
+++ /dev/null
@@ -1,163 +0,0 @@
- a JavaScript package manager
-
-SYNOPSIS
-This is just enough info to get you up and running.
-Much more info available via npm help
once it's installed.
-IMPORTANT
-You need node v0.8 or higher to run this program.
-To install an old and unsupported version of npm that works on node 0.3
-and prior, clone the git repo and dig through the old tags and branches.
-Super Easy Install
-npm comes with node now.
-Windows Computers
-Get the MSI . npm is in it.
-Apple Macintosh Computers
-Get the pkg . npm is in it.
-Other Sorts of Unices
-Run make install
. npm will be installed with node.
-If you want a more fancy pants install (a different version, customized
-paths, etc.) then read on.
-Fancy Install (Unix)
-There's a pretty robust install script at
-https://www.npmjs.com/install.sh . You can download that and run it.
-Here's an example using curl:
-curl -L https://www.npmjs.com/install.sh | sh
-
-Slightly Fancier
-You can set any npm configuration params with that script:
-npm_config_prefix=/some/path sh install.sh
-
-Or, you can run it in uber-debuggery mode:
-npm_debug=1 sh install.sh
-
-Even Fancier
-Get the code with git. Use make
to build the docs and do other stuff.
-If you plan on hacking on npm, make link
is your friend.
-If you've got the npm source code, you can also semi-permanently set
-arbitrary config keys using the ./configure --key=val ...
, and then
-run npm commands by doing node cli.js <cmd> <args>
. (This is helpful
-for testing, or running stuff without actually installing npm itself.)
-Windows Install or Upgrade
-You can download a zip file from https://github.com/npm/npm/releases , and
-unpack it in the node_modules\npm\
folder inside node's installation folder.
-To upgrade to npm 2, follow the Windows upgrade instructions in
-the npm Troubleshooting Guide:
-https://github.com/npm/npm/wiki/Troubleshooting#upgrading-on-windows
-If that's not fancy enough for you, then you can fetch the code with
-git, and mess with it directly.
-Installing on Cygwin
-No.
-Uninstalling
-So sad to see you go.
-sudo npm uninstall npm -g
-
-Or, if that fails,
-sudo make uninstall
-
-More Severe Uninstalling
-Usually, the above instructions are sufficient. That will remove
-npm, but leave behind anything you've installed.
-If you would like to remove all the packages that you have installed,
-then you can use the npm ls
command to find them, and then npm rm
to
-remove them.
-To remove cruft left behind by npm 0.x, you can use the included
-clean-old.sh
script file. You can run it conveniently like this:
-npm explore npm -g -- sh scripts/clean-old.sh
-
-npm uses two configuration files, one for per-user configs, and another
-for global (every-user) configs. You can view them by doing:
-npm config get userconfig # defaults to ~/.npmrc
-npm config get globalconfig # defaults to /usr/local/etc/npmrc
-
-Uninstalling npm does not remove configuration files by default. You
-must remove them yourself manually if you want them gone. Note that
-this means that future npm installs will not remember the settings that
-you have chosen.
-Using npm Programmatically
-Although npm can be used programmatically, its API is meant for use by the CLI
-only , and no guarantees are made regarding its fitness for any other purpose.
-If you want to use npm to reliably perform some task, the safest thing to do is
-to invoke the desired npm
command with appropriate arguments.
-The semantic version of npm refers to the CLI itself, rather than the
-underlying API. The internal API is not guaranteed to remain stable even when
-npm's version indicates no breaking changes have been made according to
-semver.
-If you still would like to use npm programmatically, it's possible . The API
-isn't very well documented, but it is rather simple.
-Eventually, npm will be just a thin CLI wrapper around the modules that it
-depends on, but for now, there are some things that only the CLI can do. You
-should try using one of npm's dependencies first, and only use the API if what
-you're trying to do is only supported by npm itself.
-var npm = require("npm")
-npm.load(myConfigObject, function (er) {
- if (er) return handlError(er)
- npm.commands.install(["some", "args"], function (er, data) {
- if (er) return commandFailed(er)
- // command succeeded, and data might have some info
- })
- npm.registry.log.on("log", function (message) { .... })
-})
-
-The load
function takes an object hash of the command-line configs.
-The various npm.commands.<cmd>
functions take an array of
-positional argument strings . The last argument to any
-npm.commands.<cmd>
function is a callback. Some commands take other
-optional arguments. Read the source.
-You cannot set configs individually for any single npm function at this
-time. Since npm
is a singleton, any call to npm.config.set
will
-change the value for all npm commands in that process.
-See ./bin/npm-cli.js
for an example of pulling config values off of the
-command line arguments using nopt. You may also want to check out npm
-help config
to learn about all the options you can set there.
-More Docs
-Check out the docs ,
-especially the faq .
-You can use the npm help
command to read any of them.
-If you're a developer, and you want to use npm to publish your program,
-you should read this
-Legal Stuff
-"npm" and "The npm Registry" are owned by npm, Inc.
-All rights reserved. See the included LICENSE file for more details.
-"Node.js" and "node" are trademarks owned by Joyent, Inc.
-Modules published on the npm registry are not officially endorsed by
-npm, Inc. or the Node.js project.
-Data published to the npm registry is not part of npm itself, and is
-the sole property of the publisher. While every effort is made to
-ensure accountability, there is absolutely no guarantee, warranty, or
-assertion expressed or implied as to the quality, fitness for a
-specific purpose, or lack of malice in any given npm package.
-If you have a complaint about a package in the public npm registry,
-and cannot resolve it with the package
-owner , please email
-support@npmjs.com and explain the situation.
-Any data published to The npm Registry (including user account
-information) may be removed or modified at the sole discretion of the
-npm server administrators.
-In plainer english
-npm is the property of npm, Inc.
-If you publish something, it's yours, and you are solely accountable
-for it.
-If other people publish something, it's theirs.
-Users can publish Bad Stuff. It will be removed promptly if reported.
-But there is no vetting process for published modules, and you use
-them at your own risk. Please inspect the source.
-If you publish Bad Stuff, we may delete it from the registry, or even
-ban your account in extreme cases. So don't do that.
-BUGS
-When you find issues, please report them:
-
-Be sure to include all of the output from the npm command that didn't work
-as expected. The npm-debug.log
file is also helpful to provide.
-You can also look for isaacs in #node.js on irc://irc.freenode.net. He
-will no doubt tell you to put the output in a gist or email.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/api/npm-bin.html b/deps/npm/html/partial/doc/api/npm-bin.html
deleted file mode 100644
index 54f895518ab132..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-bin.html
+++ /dev/null
@@ -1,8 +0,0 @@
- Display npm bin folder
-SYNOPSIS
-npm.commands.bin(args, cb)
-
DESCRIPTION
-Print the folder where npm will install executables.
-This function should not be used programmatically. Instead, just refer
-to the npm.bin
property.
-
diff --git a/deps/npm/html/partial/doc/api/npm-bugs.html b/deps/npm/html/partial/doc/api/npm-bugs.html
deleted file mode 100644
index e9ff2a58aa5e80..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-bugs.html
+++ /dev/null
@@ -1,13 +0,0 @@
- Bugs for a package in a web browser maybe
-SYNOPSIS
-npm.commands.bugs(package, callback)
-
DESCRIPTION
-This command tries to guess at the likely location of a package's
-bug tracker URL, and then tries to open it using the --browser
-config param.
-Like other commands, the first parameter is an array. This command only
-uses the first element, which is expected to be a package name with an
-optional version number.
-This command will launch a browser, so this command may not be the most
-friendly for programmatic use.
-
diff --git a/deps/npm/html/partial/doc/api/npm-cache.html b/deps/npm/html/partial/doc/api/npm-cache.html
deleted file mode 100644
index b837a688695402..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-cache.html
+++ /dev/null
@@ -1,22 +0,0 @@
- manage the npm cache programmatically
-SYNOPSIS
-npm.commands.cache([args], callback)
-
-// helpers
-npm.commands.cache.clean([args], callback)
-npm.commands.cache.add([args], callback)
-npm.commands.cache.read(name, version, forceBypass, callback)
-
DESCRIPTION
-This acts much the same ways as the npm-cache(1) command line
-functionality.
-The callback is called with the package.json data of the thing that is
-eventually added to or read from the cache.
-The top level npm.commands.cache(...)
functionality is a public
-interface, and like all commands on the npm.commands
object, it will
-match the command line behavior exactly.
-However, the cache folder structure and the cache helper functions are
-considered internal API surface, and as such, may change in future
-releases of npm, potentially without warning or significant version
-incrementation.
-Use at your own risk.
-
diff --git a/deps/npm/html/partial/doc/api/npm-commands.html b/deps/npm/html/partial/doc/api/npm-commands.html
deleted file mode 100644
index eaf57af4af0395..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-commands.html
+++ /dev/null
@@ -1,16 +0,0 @@
- npm commands
-SYNOPSIS
-npm.commands[<command>](args, callback)
-
DESCRIPTION
-npm comes with a full set of commands, and each of the commands takes a
-similar set of arguments.
-In general, all commands on the command object take an array of positional
-argument strings . The last argument to any function is a callback. Some
-commands are special and take other optional arguments.
-All commands have their own man page. See man npm-<command>
for command-line
-usage, or man 3 npm-<command>
for programmatic usage.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/api/npm-config.html b/deps/npm/html/partial/doc/api/npm-config.html
deleted file mode 100644
index b34c02182d3e68..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-config.html
+++ /dev/null
@@ -1,37 +0,0 @@
- Manage the npm configuration files
-SYNOPSIS
-npm.commands.config(args, callback)
-var val = npm.config.get(key)
-npm.config.set(key, val)
-
DESCRIPTION
-This function acts much the same way as the command-line version. The first
-element in the array tells config what to do. Possible values are:
-
-set
- Sets a config parameter. The second element in args
is interpreted as the
- key, and the third element is interpreted as the value.
-
-get
- Gets the value of a config parameter. The second element in args
is the
- key to get the value of.
-
-delete
(rm
or del
)
- Deletes a parameter from the config. The second element in args
is the
- key to delete.
-
-list
(ls
)
- Show all configs that aren't secret. No parameters necessary.
-
-edit
:
- Opens the config file in the default editor. This command isn't very useful
- programmatically, but it is made available.
-
-
-To programmatically access npm configuration settings, or set them for
-the duration of a program, use the npm.config.set
and npm.config.get
-functions instead.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/api/npm-deprecate.html b/deps/npm/html/partial/doc/api/npm-deprecate.html
deleted file mode 100644
index f0ef298b2a2532..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-deprecate.html
+++ /dev/null
@@ -1,27 +0,0 @@
- Deprecate a version of a package
-SYNOPSIS
-npm.commands.deprecate(args, callback)
-
DESCRIPTION
-This command will update the npm registry entry for a package, providing
-a deprecation warning to all who attempt to install it.
-The 'args' parameter must have exactly two elements:
-
-package[@version]
- The version
portion is optional, and may be either a range, or a
- specific version, or a tag.
-
-message
- The warning message that will be printed whenever a user attempts to
- install the package.
-
-
-Note that you must be the package owner to deprecate something. See the
-owner
and adduser
help topics.
-To un-deprecate a package, specify an empty string (""
) for the message
argument.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/api/npm-docs.html b/deps/npm/html/partial/doc/api/npm-docs.html
deleted file mode 100644
index dde38920fd10d6..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-docs.html
+++ /dev/null
@@ -1,13 +0,0 @@
- Docs for a package in a web browser maybe
-SYNOPSIS
-npm.commands.docs(package, callback)
-
DESCRIPTION
-This command tries to guess at the likely location of a package's
-documentation URL, and then tries to open it using the --browser
-config param.
-Like other commands, the first parameter is an array. This command only
-uses the first element, which is expected to be a package name with an
-optional version number.
-This command will launch a browser, so this command may not be the most
-friendly for programmatic use.
-
diff --git a/deps/npm/html/partial/doc/api/npm-edit.html b/deps/npm/html/partial/doc/api/npm-edit.html
deleted file mode 100644
index ef49f94e14ebb7..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-edit.html
+++ /dev/null
@@ -1,16 +0,0 @@
- Edit an installed package
-SYNOPSIS
-npm.commands.edit(package, callback)
-
DESCRIPTION
-Opens the package folder in the default editor (or whatever you've
-configured as the npm editor
config -- see npm help config
.)
-After it has been edited, the package is rebuilt so as to pick up any
-changes in compiled packages.
-For instance, you can do npm install connect
to install connect
-into your package, and then npm.commands.edit(["connect"], callback)
-to make a few changes to your locally installed copy.
-The first parameter is a string array with a single element, the package
-to open. The package can optionally have a version number attached.
-Since this command opens an editor in a new process, be careful about where
-and how this is used.
-
diff --git a/deps/npm/html/partial/doc/api/npm-explore.html b/deps/npm/html/partial/doc/api/npm-explore.html
deleted file mode 100644
index 60f3ac17802768..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-explore.html
+++ /dev/null
@@ -1,11 +0,0 @@
- Browse an installed package
-SYNOPSIS
-npm.commands.explore(args, callback)
-
DESCRIPTION
-Spawn a subshell in the directory of the installed package specified.
-If a command is specified, then it is run in the subshell, which then
-immediately terminates.
-Note that the package is not automatically rebuilt afterwards, so be
-sure to use npm rebuild <pkg>
if you make any changes.
-The first element in the 'args' parameter must be a package name. After that is the optional command, which can be any number of strings. All of the strings will be combined into one, space-delimited command.
-
diff --git a/deps/npm/html/partial/doc/api/npm-help-search.html b/deps/npm/html/partial/doc/api/npm-help-search.html
deleted file mode 100644
index 7818b6b1e74cb2..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-help-search.html
+++ /dev/null
@@ -1,24 +0,0 @@
- Search the help pages
-SYNOPSIS
-npm.commands.helpSearch(args, [silent,] callback)
-
DESCRIPTION
-This command is rarely useful, but it exists in the rare case that it is.
-This command takes an array of search terms and returns the help pages that
-match in order of best match.
-If there is only one match, then npm displays that help section. If there
-are multiple results, the results are printed to the screen formatted and the
-array of results is returned. Each result is an object with these properties:
-
-hits:
-A map of args to number of hits on that arg. For example, {"npm": 3}
-found:
-Total number of unique args that matched.
-totalHits:
-Total number of hits.
-lines:
-An array of all matching lines (and some adjacent lines).
-file:
-Name of the file that matched
-
-The silent parameter is not necessary not used, but it may in the future.
-
diff --git a/deps/npm/html/partial/doc/api/npm-init.html b/deps/npm/html/partial/doc/api/npm-init.html
deleted file mode 100644
index 723fbdebedb2a7..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-init.html
+++ /dev/null
@@ -1,19 +0,0 @@
- Interactively create a package.json file
-SYNOPSIS
-npm.commands.init(args, callback)
-
DESCRIPTION
-This will ask you a bunch of questions, and then write a package.json for you.
-It attempts to make reasonable guesses about what you want things to be set to,
-and then writes a package.json file with the options you've selected.
-If you already have a package.json file, it'll read that first, and default to
-the options in there.
-It is strictly additive, so it does not delete options from your package.json
-without a really good reason to do so.
-Since this function expects to be run on the command-line, it doesn't work very
-well as a programmatically. The best option is to roll your own, and since
-JavaScript makes it stupid simple to output formatted JSON, that is the
-preferred method. If you're sure you want to handle command-line prompting,
-then go ahead and use this programmatically.
-SEE ALSO
-package.json(5)
-
diff --git a/deps/npm/html/partial/doc/api/npm-install.html b/deps/npm/html/partial/doc/api/npm-install.html
deleted file mode 100644
index bfbd5668877b24..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-install.html
+++ /dev/null
@@ -1,12 +0,0 @@
- install a package programmatically
-SYNOPSIS
-npm.commands.install([where,] packages, callback)
-
DESCRIPTION
-This acts much the same ways as installing on the command-line.
-The 'where' parameter is optional and only used internally, and it specifies
-where the packages should be installed to.
-The 'packages' parameter is an array of strings. Each element in the array is
-the name of a package to be installed.
-Finally, 'callback' is a function that will be called when all packages have been
-installed or when an error has been encountered.
-
diff --git a/deps/npm/html/partial/doc/api/npm-link.html b/deps/npm/html/partial/doc/api/npm-link.html
deleted file mode 100644
index e2efe3ebc1fee0..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-link.html
+++ /dev/null
@@ -1,22 +0,0 @@
- Symlink a package folder
-SYNOPSIS
-npm.commands.link(callback)
-npm.commands.link(packages, callback)
-
DESCRIPTION
-Package linking is a two-step process.
-Without parameters, link will create a globally-installed
-symbolic link from prefix/package-name
to the current folder.
-With a parameters, link will create a symlink from the local node_modules
-folder to the global symlink.
-When creating tarballs for npm publish
, the linked packages are
-"snapshotted" to their current state by resolving the symbolic links.
-This is
-handy for installing your own stuff, so that you can work on it and test it
-iteratively without having to continually rebuild.
-For example:
-npm.commands.link(cb) # creates global link from the cwd
- # (say redis package)
-npm.commands.link('redis', cb) # link-install the package
-
Now, any changes to the redis package will be reflected in
-the package in the current working directory
-
diff --git a/deps/npm/html/partial/doc/api/npm-load.html b/deps/npm/html/partial/doc/api/npm-load.html
deleted file mode 100644
index 0796cacdab6c78..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-load.html
+++ /dev/null
@@ -1,17 +0,0 @@
- Load config settings
-SYNOPSIS
-npm.load(conf, cb)
-
DESCRIPTION
-npm.load() must be called before any other function call. Both parameters are
-optional, but the second is recommended.
-The first parameter is an object containing command-line config params, and the
-second parameter is a callback that will be called when npm is loaded and ready
-to serve.
-The first parameter should follow a similar structure as the package.json
-config object.
-For example, to emulate the --dev flag, pass an object that looks like this:
-{
- "dev": true
-}
-
For a list of all the available command-line configs, see npm help config
-
diff --git a/deps/npm/html/partial/doc/api/npm-ls.html b/deps/npm/html/partial/doc/api/npm-ls.html
deleted file mode 100644
index 850955b836120b..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-ls.html
+++ /dev/null
@@ -1,43 +0,0 @@
- List installed packages
-SYNOPSIS
-npm.commands.ls(args, [silent,] callback)
-
DESCRIPTION
-This command will print to stdout all the versions of packages that are
-installed, as well as their dependencies, in a tree-structure. It will also
-return that data using the callback.
-This command does not take any arguments, but args must be defined.
-Beyond that, if any arguments are passed in, npm will politely warn that it
-does not take positional arguments, though you may set config flags
-like with any other command, such as global
to list global packages.
-It will print out extraneous, missing, and invalid packages.
-If the silent parameter is set to true, nothing will be output to the screen,
-but the data will still be returned.
-Callback is provided an error if one occurred, the full data about which
-packages are installed and which dependencies they will receive, and a
-"lite" data object which just shows which versions are installed where.
-Note that the full data object is a circular structure, so care must be
-taken if it is serialized to JSON.
-CONFIGURATION
-long
-
-Default: false
-Type: Boolean
-
-Show extended information.
-parseable
-
-Default: false
-Type: Boolean
-
-Show parseable output instead of tree view.
-global
-
-Default: false
-Type: Boolean
-
-List packages in the global install prefix instead of in the current
-project.
-Note, if parseable is set or long isn't set, then duplicates will be trimmed.
-This means that if a submodule has the same dependency as a parent module, then the
-dependency will only be output once.
-
diff --git a/deps/npm/html/partial/doc/api/npm-outdated.html b/deps/npm/html/partial/doc/api/npm-outdated.html
deleted file mode 100644
index 16d3150d3f7117..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-outdated.html
+++ /dev/null
@@ -1,8 +0,0 @@
- Check for outdated packages
-SYNOPSIS
-npm.commands.outdated([packages,] callback)
-
DESCRIPTION
-This command will check the registry to see if the specified packages are
-currently outdated.
-If the 'packages' parameter is left out, npm will check all packages.
-
diff --git a/deps/npm/html/partial/doc/api/npm-owner.html b/deps/npm/html/partial/doc/api/npm-owner.html
deleted file mode 100644
index 20e8b6840e4eff..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-owner.html
+++ /dev/null
@@ -1,27 +0,0 @@
- Manage package owners
-SYNOPSIS
-npm.commands.owner(args, callback)
-
DESCRIPTION
-The first element of the 'args' parameter defines what to do, and the subsequent
-elements depend on the action. Possible values for the action are (order of
-parameters are given in parenthesis):
-
-ls (package):
-List all the users who have access to modify a package and push new versions.
-Handy when you need to know who to bug for help.
-add (user, package):
-Add a new user as a maintainer of a package. This user is enabled to modify
-metadata, publish new versions, and add other owners.
-rm (user, package):
-Remove a user from the package owner list. This immediately revokes their
-privileges.
-
-Note that there is only one level of access. Either you can modify a package,
-or you can't. Future versions may contain more fine-grained access levels, but
-that is not implemented at this time.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/api/npm-pack.html b/deps/npm/html/partial/doc/api/npm-pack.html
deleted file mode 100644
index 6417688673c4aa..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-pack.html
+++ /dev/null
@@ -1,13 +0,0 @@
- Create a tarball from a package
-SYNOPSIS
-npm.commands.pack([packages,] callback)
-
DESCRIPTION
-For anything that's installable (that is, a package folder, tarball,
-tarball url, name@tag, name@version, or name), this command will fetch
-it to the cache, and then copy the tarball to the current working
-directory as <name>-<version>.tgz
, and then write the filenames out to
-stdout.
-If the same package is specified multiple times, then the file will be
-overwritten the second time.
-If no arguments are supplied, then npm packs the current package folder.
-
diff --git a/deps/npm/html/partial/doc/api/npm-ping.html b/deps/npm/html/partial/doc/api/npm-ping.html
deleted file mode 100644
index ac8a29e185c66b..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-ping.html
+++ /dev/null
@@ -1,8 +0,0 @@
- Ping npm registry
-SYNOPSIS
-npm.registry.ping(registry, options, function (er, pong))
-
DESCRIPTION
-Attempts to connect to the given registry, returning a pong
-object with various metadata if it succeeds.
-This function is primarily useful for debugging connection issues
-to npm registries.
diff --git a/deps/npm/html/partial/doc/api/npm-prefix.html b/deps/npm/html/partial/doc/api/npm-prefix.html
deleted file mode 100644
index e9904b18d9f082..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-prefix.html
+++ /dev/null
@@ -1,9 +0,0 @@
- Display prefix
-SYNOPSIS
-npm.commands.prefix(args, callback)
-
DESCRIPTION
-Print the prefix to standard out.
-'args' is never used and callback is never called with data.
-'args' must be present or things will break.
-This function is not useful programmatically
-
diff --git a/deps/npm/html/partial/doc/api/npm-prune.html b/deps/npm/html/partial/doc/api/npm-prune.html
deleted file mode 100644
index 5835a9b6a79270..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-prune.html
+++ /dev/null
@@ -1,10 +0,0 @@
- Remove extraneous packages
-SYNOPSIS
-npm.commands.prune([packages,] callback)
-
DESCRIPTION
-This command removes "extraneous" packages.
-The first parameter is optional, and it specifies packages to be removed.
-No packages are specified, then all packages will be checked.
-Extraneous packages are packages that are not listed on the parent
-package's dependencies list.
-
diff --git a/deps/npm/html/partial/doc/api/npm-publish.html b/deps/npm/html/partial/doc/api/npm-publish.html
deleted file mode 100644
index f0e5da91ba3d44..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-publish.html
+++ /dev/null
@@ -1,26 +0,0 @@
- Publish a package
-SYNOPSIS
-npm.commands.publish([packages,] callback)
-
DESCRIPTION
-Publishes a package to the registry so that it can be installed by name.
-Possible values in the 'packages' array are:
-
-If the package array is empty, npm will try to publish something in the
-current working directory.
-This command could fails if one of the packages specified already exists in
-the registry. Overwrites when the "force" environment variable is set.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/api/npm-rebuild.html b/deps/npm/html/partial/doc/api/npm-rebuild.html
deleted file mode 100644
index e428728a61775a..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-rebuild.html
+++ /dev/null
@@ -1,10 +0,0 @@
- Rebuild a package
-SYNOPSIS
-npm.commands.rebuild([packages,] callback)
-
DESCRIPTION
-This command runs the npm build
command on each of the matched packages. This is useful
-when you install a new version of node, and must recompile all your C++ addons with
-the new binary. If no 'packages' parameter is specify, every package will be rebuilt.
-CONFIGURATION
-See npm help build
-
diff --git a/deps/npm/html/partial/doc/api/npm-repo.html b/deps/npm/html/partial/doc/api/npm-repo.html
deleted file mode 100644
index 9a18976cd41632..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-repo.html
+++ /dev/null
@@ -1,13 +0,0 @@
- Open package repository page in the browser
-SYNOPSIS
-npm.commands.repo(package, callback)
-
DESCRIPTION
-This command tries to guess at the likely location of a package's
-repository URL, and then tries to open it using the --browser
-config param.
-Like other commands, the first parameter is an array. This command only
-uses the first element, which is expected to be a package name with an
-optional version number.
-This command will launch a browser, so this command may not be the most
-friendly for programmatic use.
-
diff --git a/deps/npm/html/partial/doc/api/npm-restart.html b/deps/npm/html/partial/doc/api/npm-restart.html
deleted file mode 100644
index f0de7504a5b925..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-restart.html
+++ /dev/null
@@ -1,32 +0,0 @@
- Restart a package
-SYNOPSIS
-npm.commands.restart(packages, callback)
-
DESCRIPTION
-This restarts a package (or multiple packages).
-This runs a package's "stop", "restart", and "start" scripts, and associated
-pre- and post- scripts, in the order given below:
-
-prerestart
-prestop
-stop
-poststop
-restart
-prestart
-start
-poststart
-postrestart
-
-If no version is specified, then it restarts the "active" version.
-npm can restart multiple packages. Just specify multiple packages in
-the packages
parameter.
-NOTE
-Note that the "restart" script is run in addition to the "stop"
-and "start" scripts, not instead of them.
-This is the behavior as of npm
major version 2. A change in this
-behavior will be accompanied by an increase in major version number
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/api/npm-root.html b/deps/npm/html/partial/doc/api/npm-root.html
deleted file mode 100644
index 1549515122ede3..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-root.html
+++ /dev/null
@@ -1,9 +0,0 @@
- Display npm root
-SYNOPSIS
-npm.commands.root(args, callback)
-
DESCRIPTION
-Print the effective node_modules
folder to standard out.
-'args' is never used and callback is never called with data.
-'args' must be present or things will break.
-This function is not useful programmatically.
-
diff --git a/deps/npm/html/partial/doc/api/npm-run-script.html b/deps/npm/html/partial/doc/api/npm-run-script.html
deleted file mode 100644
index 7cc42b601adbc9..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-run-script.html
+++ /dev/null
@@ -1,21 +0,0 @@
- Run arbitrary package scripts
-SYNOPSIS
-npm.commands.run-script(args, callback)
-
DESCRIPTION
-This runs an arbitrary command from a package's "scripts" object.
-It is used by the test, start, restart, and stop commands, but can be
-called directly, as well.
-The 'args' parameter is an array of strings. Behavior depends on the number
-of elements. If there is only one element, npm assumes that the element
-represents a command to be run on the local repository. If there is more than
-one element, then the first is assumed to be the package and the second is
-assumed to be the command to run. All other elements are ignored.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/api/npm-search.html b/deps/npm/html/partial/doc/api/npm-search.html
deleted file mode 100644
index 13cceb3d32169c..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-search.html
+++ /dev/null
@@ -1,33 +0,0 @@
- Search for packages
-SYNOPSIS
-npm.commands.search(searchTerms, [silent,] [staleness,] callback)
-
DESCRIPTION
-Search the registry for packages matching the search terms. The available parameters are:
-
-searchTerms:
-Array of search terms. These terms are case-insensitive.
-silent:
-If true, npm will not log anything to the console.
-staleness:
-This is the threshold for stale packages. "Fresh" packages are not refreshed
-from the registry. This value is measured in seconds.
-callback:
-Returns an object where each key is the name of a package, and the value
-is information about that package along with a 'words' property, which is
-a space-delimited string of all of the interesting words in that package.
-The only properties included are those that are searched, which generally include:
-
-name
-description
-maintainers
-url
-keywords
-
-
-
-A search on the registry excludes any result that does not match all of the
-search terms. It also removes any items from the results that contain an
-excluded term (the "searchexclude" config). The search is case insensitive
-and doesn't try to read your mind (it doesn't do any verb tense matching or the
-like).
-
diff --git a/deps/npm/html/partial/doc/api/npm-shrinkwrap.html b/deps/npm/html/partial/doc/api/npm-shrinkwrap.html
deleted file mode 100644
index b5f33599989c7a..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-shrinkwrap.html
+++ /dev/null
@@ -1,13 +0,0 @@
- programmatically generate package shrinkwrap file
-SYNOPSIS
-npm.commands.shrinkwrap(args, [silent,] callback)
-
DESCRIPTION
-This acts much the same ways as shrinkwrapping on the command-line.
-This command does not take any arguments, but 'args' must be defined.
-Beyond that, if any arguments are passed in, npm will politely warn that it
-does not take positional arguments.
-If the 'silent' parameter is set to true, nothing will be output to the screen,
-but the shrinkwrap file will still be written.
-Finally, 'callback' is a function that will be called when the shrinkwrap has
-been saved.
-
diff --git a/deps/npm/html/partial/doc/api/npm-start.html b/deps/npm/html/partial/doc/api/npm-start.html
deleted file mode 100644
index 98bd41f6b24d87..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-start.html
+++ /dev/null
@@ -1,8 +0,0 @@
- Start a package
-SYNOPSIS
-npm.commands.start(packages, callback)
-
DESCRIPTION
-This runs a package's "start" script, if one was provided.
-npm can start multiple packages. Just specify multiple packages in the
-packages
parameter.
-
diff --git a/deps/npm/html/partial/doc/api/npm-stop.html b/deps/npm/html/partial/doc/api/npm-stop.html
deleted file mode 100644
index 5b58289ed840d3..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-stop.html
+++ /dev/null
@@ -1,8 +0,0 @@
- Stop a package
-SYNOPSIS
-npm.commands.stop(packages, callback)
-
DESCRIPTION
-This runs a package's "stop" script, if one was provided.
-npm can run stop on multiple packages. Just specify multiple packages
-in the packages
parameter.
-
diff --git a/deps/npm/html/partial/doc/api/npm-tag.html b/deps/npm/html/partial/doc/api/npm-tag.html
deleted file mode 100644
index 227c91b46ca328..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-tag.html
+++ /dev/null
@@ -1,16 +0,0 @@
- Tag a published version
-SYNOPSIS
-npm.commands.tag(package@version, tag, callback)
-
DESCRIPTION
-Tags the specified version of the package with the specified tag, or the
---tag
config if not specified.
-The 'package@version' is an array of strings, but only the first two elements are
-currently used.
-The first element must be in the form package@version, where package
-is the package name and version is the version number (much like installing a
-specific version).
-The second element is the name of the tag to tag this version with. If this
-parameter is missing or falsey (empty), the default from the config will be
-used. For more information about how to set this config, check
-man 3 npm-config
for programmatic usage or man npm-config
for cli usage.
-
diff --git a/deps/npm/html/partial/doc/api/npm-test.html b/deps/npm/html/partial/doc/api/npm-test.html
deleted file mode 100644
index 9c35bdcfdb8050..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-test.html
+++ /dev/null
@@ -1,10 +0,0 @@
- Test a package
-SYNOPSIS
- npm.commands.test(packages, callback)
-
DESCRIPTION
-This runs a package's "test" script, if one was provided.
-To run tests as a condition of installation, set the npat
config to
-true.
-npm can run tests on multiple packages. Just specify multiple packages
-in the packages
parameter.
-
diff --git a/deps/npm/html/partial/doc/api/npm-uninstall.html b/deps/npm/html/partial/doc/api/npm-uninstall.html
deleted file mode 100644
index 62369e4c7c66ec..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-uninstall.html
+++ /dev/null
@@ -1,10 +0,0 @@
- uninstall a package programmatically
-SYNOPSIS
-npm.commands.uninstall(packages, callback)
-
DESCRIPTION
-This acts much the same ways as uninstalling on the command-line.
-The 'packages' parameter is an array of strings. Each element in the array is
-the name of a package to be uninstalled.
-Finally, 'callback' is a function that will be called when all packages have been
-uninstalled or when an error has been encountered.
-
diff --git a/deps/npm/html/partial/doc/api/npm-unpublish.html b/deps/npm/html/partial/doc/api/npm-unpublish.html
deleted file mode 100644
index ed9948cd849771..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-unpublish.html
+++ /dev/null
@@ -1,13 +0,0 @@
- Remove a package from the registry
-SYNOPSIS
-npm.commands.unpublish(package, callback)
-
DESCRIPTION
-This removes a package version from the registry, deleting its
-entry and removing the tarball.
-The package parameter must be defined.
-Only the first element in the package parameter is used. If there is no first
-element, then npm assumes that the package at the current working directory
-is what is meant.
-If no version is specified, or if all versions are removed then
-the root package entry is removed from the registry entirely.
-
diff --git a/deps/npm/html/partial/doc/api/npm-update.html b/deps/npm/html/partial/doc/api/npm-update.html
deleted file mode 100644
index 5d48bc0d8ec83c..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-update.html
+++ /dev/null
@@ -1,13 +0,0 @@
- Update a package
-SYNOPSIS
-npm.commands.update(packages, callback)
-
DESCRIPTION
-Updates a package, upgrading it to the latest version. It also installs any
-missing packages.
-The packages
argument is an array of packages to update. The callback
-parameter will be called when done or when an error occurs.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/api/npm-version.html b/deps/npm/html/partial/doc/api/npm-version.html
deleted file mode 100644
index c2b8d5eb8b91a1..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-version.html
+++ /dev/null
@@ -1,12 +0,0 @@
- Bump a package version
-SYNOPSIS
-npm.commands.version(newversion, callback)
-
DESCRIPTION
-Run this in a package directory to bump the version and write the new
-data back to the package.json file.
-If run in a git repo, it will also create a version commit and tag, and
-fail if the repo is not clean.
-Like all other commands, this function takes a string array as its first
-parameter. The difference, however, is this function will fail if it does
-not have exactly one element. The only element should be a version number.
-
diff --git a/deps/npm/html/partial/doc/api/npm-view.html b/deps/npm/html/partial/doc/api/npm-view.html
deleted file mode 100644
index 4f5acf62439424..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-view.html
+++ /dev/null
@@ -1,61 +0,0 @@
- View registry info
-SYNOPSIS
-npm.commands.view(args, [silent,] callback)
-
DESCRIPTION
-This command shows data about a package and prints it to the stream
-referenced by the outfd
config, which defaults to stdout.
-The "args" parameter is an ordered list that closely resembles the command-line
-usage. The elements should be ordered such that the first element is
-the package and version (package@version). The version is optional. After that,
-the rest of the parameters are fields with optional subfields ("field.subfield")
-which can be used to get only the information desired from the registry.
-The callback will be passed all of the data returned by the query.
-For example, to get the package registry entry for the connect
package,
-you can do this:
-npm.commands.view(["connect"], callback)
-
If no version is specified, "latest" is assumed.
-Field names can be specified after the package descriptor.
-For example, to show the dependencies of the ronn
package at version
-0.3.5, you could do the following:
-npm.commands.view(["ronn@0.3.5", "dependencies"], callback)
-
You can view child field by separating them with a period.
-To view the git repository URL for the latest version of npm, you could
-do this:
-npm.commands.view(["npm", "repository.url"], callback)
-
For fields that are arrays, requesting a non-numeric field will return
-all of the values from the objects in the list. For example, to get all
-the contributor names for the "express" project, you can do this:
-npm.commands.view(["express", "contributors.email"], callback)
-
You may also use numeric indices in square braces to specifically select
-an item in an array field. To just get the email address of the first
-contributor in the list, you can do this:
-npm.commands.view(["express", "contributors[0].email"], callback)
-
Multiple fields may be specified, and will be printed one after another.
-For exampls, to get all the contributor names and email addresses, you
-can do this:
-npm.commands.view(["express", "contributors.name", "contributors.email"], callback)
-
"Person" fields are shown as a string if they would be shown as an
-object. So, for example, this will show the list of npm contributors in
-the shortened string format. (See npm help json
for more on this.)
-npm.commands.view(["npm", "contributors"], callback)
-
If a version range is provided, then data will be printed for every
-matching version of the package. This will show which version of jsdom
-was required by each matching version of yui3:
-npm.commands.view(["yui3@'>0.5.4'", "dependencies.jsdom"], callback)
-
OUTPUT
-If only a single string field for a single version is output, then it
-will not be colorized or quoted, so as to enable piping the output to
-another command.
-If the version range matches multiple versions, than each printed value
-will be prefixed with the version it applies to.
-If multiple fields are requested, than each of them are prefixed with
-the field name.
-Console output can be disabled by setting the 'silent' parameter to true.
-RETURN VALUE
-The data returned will be an object in this formation:
-{ <version>:
- { <field>: <value>
- , ... }
-, ... }
-
corresponding to the list of fields selected.
-
diff --git a/deps/npm/html/partial/doc/api/npm-whoami.html b/deps/npm/html/partial/doc/api/npm-whoami.html
deleted file mode 100644
index 3428a9e76777be..00000000000000
--- a/deps/npm/html/partial/doc/api/npm-whoami.html
+++ /dev/null
@@ -1,9 +0,0 @@
- Display npm username
-SYNOPSIS
-npm.commands.whoami(args, callback)
-
DESCRIPTION
-Print the username
config to standard output.
-'args' is never used and callback is never called with data.
-'args' must be present or things will break.
-This function is not useful programmatically
-
diff --git a/deps/npm/html/partial/doc/api/npm.html b/deps/npm/html/partial/doc/api/npm.html
deleted file mode 100644
index 5c57fd4bd7507c..00000000000000
--- a/deps/npm/html/partial/doc/api/npm.html
+++ /dev/null
@@ -1,89 +0,0 @@
- javascript package manager
-SYNOPSIS
-var npm = require("npm")
-npm.load([configObject, ]function (er, npm) {
- // use the npm object, now that it's loaded.
-
- npm.config.set(key, val)
- val = npm.config.get(key)
-
- console.log("prefix = %s", npm.prefix)
-
- npm.commands.install(["package"], cb)
-})
-
VERSION
-2.13.3
-DESCRIPTION
-This is the API documentation for npm.
-To find documentation of the command line
-client, see npm(1)
.
-Prior to using npm's commands, npm.load()
must be called. If you provide
-configObject
as an object map of top-level configs, they override the values
-stored in the various config locations. In the npm command line client, this
-set of configs is parsed from the command line options. Additional
-configuration params are loaded from two configuration files. See
-npm-config(1)
, npm-config(7)
, and npmrc(5)
for more information.
-After that, each of the functions are accessible in the
-commands object: npm.commands.<cmd>
. See npm-index(7)
for a list of
-all possible commands.
-All commands on the command object take an array of positional argument
-strings . The last argument to any function is a callback. Some
-commands take other optional arguments.
-Configs cannot currently be set on a per function basis, as each call to
-npm.config.set will change the value for all npm commands in that process.
-To find API documentation for a specific command, run the npm apihelp
-command.
-METHODS AND PROPERTIES
-
-npm.load(configs, cb)
- Load the configuration params, and call the cb
function once the
- globalconfig and userconfig files have been loaded as well, or on
- nextTick if they've already been loaded.
-
-npm.config
- An object for accessing npm configuration parameters.
-
-npm.config.get(key)
-npm.config.set(key, val)
-npm.config.del(key)
-
-
-npm.dir
or npm.root
- The node_modules
directory where npm will operate.
-
-npm.prefix
- The prefix where npm is operating. (Most often the current working
- directory.)
-
-npm.cache
- The place where npm keeps JSON and tarballs it fetches from the
- registry (or uploads to the registry).
-
-npm.tmp
- npm's temporary working directory.
-
-npm.deref
- Get the "real" name for a command that has either an alias or
- abbreviation.
-
-
-MAGIC
-For each of the methods in the npm.commands
object, a method is added to the
-npm object, which takes a set of positional string arguments rather than an
-array and a callback.
-If the last argument is a callback, then it will use the supplied
-callback. However, if no callback is provided, then it will print out
-the error or results.
-For example, this would work in a node repl:
-> npm = require("npm")
-> npm.load() // wait a sec...
-> npm.install("dnode", "express")
-
Note that that won't work in a node program, since the install
-method will get called before the configuration load is completed.
-ABBREVS
-In order to support npm ins foo
instead of npm install foo
, the
-npm.commands
object has a set of abbreviations as well as the full
-method names. Use the npm.deref
method to find the real name.
-For example:
-var cmd = npm.deref("unp") // cmd === "unpublish"
-
diff --git a/deps/npm/html/partial/doc/cli/npm-access.html b/deps/npm/html/partial/doc/cli/npm-access.html
deleted file mode 100644
index 9d84e6db958ede..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-access.html
+++ /dev/null
@@ -1,55 +0,0 @@
- Set access level on published packages
-SYNOPSIS
-npm access public [<package>]
-npm access restricted [<package>]
-
-npm access add <read-only|read-write> <entity> [<package>]
-npm access rm <entity> [<package>]
-
-npm access ls [<package>]
-npm access edit [<package>]
-
DESCRIPTION
-Used to set access controls on private packages.
-For all of the subcommands, npm access
will perform actions on the packages
-in the current working directory if no package name is passed to the
-subcommand.
-
-public / restricted:
-Set a package to be either publicly accessible or restricted.
-
-add / rm:
-Add or remove the ability of users and teams to have read-only or read-write
-access to a package.
-
-ls:
-Show all of the access privileges for a package. Will only show permissions
-for packages to which you have at least read access.
-
-edit:
-Set the access privileges for a package at once using $EDITOR
.
-
-
-DETAILS
-npm access
always operates directly on the current registry, configurable
-from the command line using --registry=<registry url>
.
-Unscoped packages are always public .
-Scoped packages default to restricted , but you can either publish them as
-public using npm publish --access=public
, or set their access as public using
-npm access public
after the initial publish.
-You must have privileges to set the access of a package:
-
-You are an owner of an unscoped or scoped package.
-You are a member of the team that owns a scope.
-You have been given read-write privileges for a package, either as a member
-of a team or directly as an owner.
-
-If your account is not paid, then attempts to publish scoped packages will fail
-with an HTTP 402 status code (logically enough), unless you use
---access=public
.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-adduser.html b/deps/npm/html/partial/doc/cli/npm-adduser.html
deleted file mode 100644
index ce2c5dcce6f36b..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-adduser.html
+++ /dev/null
@@ -1,48 +0,0 @@
- Add a registry user account
-SYNOPSIS
-npm adduser [--registry=url] [--scope=@orgname] [--always-auth]
-
DESCRIPTION
-Create or verify a user named <username>
in the specified registry, and
-save the credentials to the .npmrc
file. If no registry is specified,
-the default registry will be used (see npm-config(7)
).
-The username, password, and email are read in from prompts.
-To reset your password, go to https://www.npmjs.com/forgot
-To change your email address, go to https://www.npmjs.com/email-edit
-You may use this command multiple times with the same user account to
-authorize on a new machine. When authenticating on a new machine,
-the username, password and email address must all match with
-your existing record.
-npm login
is an alias to adduser
and behaves exactly the same way.
-CONFIGURATION
-registry
-Default: http://registry.npmjs.org/
-The base URL of the npm package registry. If scope
is also specified,
-this registry will only be used for packages with that scope. See npm-scope(7)
.
-scope
-Default: none
-If specified, the user and login credentials given will be associated
-with the specified scope. See npm-scope(7)
. You can use both at the same time,
-e.g.
-npm adduser --registry=http://myregistry.example.com --scope=@myco
-
This will set a registry for the given scope and login or create a user for
-that registry at the same time.
-always-auth
-Default: false
-If specified, save configuration indicating that all requests to the given
-registry should include authorization information. Useful for private
-registries. Can be used with --registry
and / or --scope
, e.g.
-npm adduser --registry=http://private-registry.example.com --always-auth
-
This will ensure that all requests to that registry (including for tarballs)
-include an authorization header. See always-auth
in npm-config(7)
for more
-details on always-auth. Registry-specific configuration of always-auth
takes
-precedence over any global configuration.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-bin.html b/deps/npm/html/partial/doc/cli/npm-bin.html
deleted file mode 100644
index 1485681b5f672f..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-bin.html
+++ /dev/null
@@ -1,15 +0,0 @@
- Display npm bin folder
-SYNOPSIS
-npm bin
-
DESCRIPTION
-Print the folder where npm will install executables.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-bugs.html b/deps/npm/html/partial/doc/cli/npm-bugs.html
deleted file mode 100644
index d40152e3884057..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-bugs.html
+++ /dev/null
@@ -1,34 +0,0 @@
- Bugs for a package in a web browser maybe
-SYNOPSIS
-npm bugs <pkgname>
-npm bugs (with no args in a package dir)
-
DESCRIPTION
-This command tries to guess at the likely location of a package's
-bug tracker URL, and then tries to open it using the --browser
-config param. If no package name is provided, it will search for
-a package.json
in the current folder and use the name
property.
-CONFIGURATION
-browser
-
-Default: OS X: "open"
, Windows: "start"
, Others: "xdg-open"
-Type: String
-
-The browser that is called by the npm bugs
command to open websites.
-registry
-
-The base URL of the npm package registry.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-build.html b/deps/npm/html/partial/doc/cli/npm-build.html
deleted file mode 100644
index 11ba89b11f8c0a..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-build.html
+++ /dev/null
@@ -1,20 +0,0 @@
- Build a package
-SYNOPSIS
-npm build <package-folder>
-
-<package-folder>
:
-A folder containing a package.json
file in its root.
-
-DESCRIPTION
-This is the plumbing command called by npm link
and npm install
.
-It should generally be called during installation, but if you need to run it
-directly, run:
-npm run-script build
-
SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-bundle.html b/deps/npm/html/partial/doc/cli/npm-bundle.html
deleted file mode 100644
index 38bbdd83e38d4a..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-bundle.html
+++ /dev/null
@@ -1,11 +0,0 @@
- REMOVED
-DESCRIPTION
-The npm bundle
command has been removed in 1.0, for the simple reason
-that it is no longer necessary, as the default behavior is now to
-install packages into the local space.
-Just use npm install
now to do what npm bundle
used to do.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-cache.html b/deps/npm/html/partial/doc/cli/npm-cache.html
deleted file mode 100644
index f1a3b1896439ea..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-cache.html
+++ /dev/null
@@ -1,61 +0,0 @@
- Manipulates packages cache
-SYNOPSIS
-npm cache add <tarball file>
-npm cache add <folder>
-npm cache add <tarball url>
-npm cache add <name>@<version>
-
-npm cache ls [<path>]
-
-npm cache clean [<path>]
-
DESCRIPTION
-Used to add, list, or clear the npm cache folder.
-
-add:
-Add the specified package to the local cache. This command is primarily
-intended to be used internally by npm, but it can provide a way to
-add data to the local installation cache explicitly.
-
-ls:
-Show the data in the cache. Argument is a path to show in the cache
-folder. Works a bit like the find
program, but limited by the
-depth
config.
-
-clean:
-Delete data out of the cache folder. If an argument is provided, then
-it specifies a subpath to delete. If no argument is provided, then
-the entire cache is cleared.
-
-
-DETAILS
-npm stores cache data in the directory specified in npm config get cache
.
-For each package that is added to the cache, three pieces of information are
-stored in {cache}/{name}/{version}
:
-
-.../package/package.json:
-The package.json file, as npm sees it.
-.../package.tgz:
-The tarball for that version.
-
-Additionally, whenever a registry request is made, a .cache.json
file
-is placed at the corresponding URI, to store the ETag and the requested
-data. This is stored in {cache}/{hostname}/{path}/.cache.json
.
-Commands that make non-essential registry requests (such as search
and
-view
, or the completion scripts) generally specify a minimum timeout.
-If the .cache.json
file is younger than the specified timeout, then
-they do not make an HTTP request to the registry.
-CONFIGURATION
-cache
-Default: ~/.npm
on Posix, or %AppData%/npm-cache
on Windows.
-The root cache folder.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-completion.html b/deps/npm/html/partial/doc/cli/npm-completion.html
deleted file mode 100644
index 1c9879337a5438..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-completion.html
+++ /dev/null
@@ -1,22 +0,0 @@
- Tab Completion for npm
-SYNOPSIS
-. <(npm completion)
-
DESCRIPTION
-Enables tab-completion in all npm commands.
-The synopsis above
-loads the completions into your current shell. Adding it to
-your ~/.bashrc or ~/.zshrc will make the completions available
-everywhere.
-You may of course also pipe the output of npm completion to a file
-such as /usr/local/etc/bash_completion.d/npm
if you have a system
-that will read that file for you.
-When COMP_CWORD
, COMP_LINE
, and COMP_POINT
are defined in the
-environment, npm completion
acts in "plumbing mode", and outputs
-completions based on the arguments.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-config.html b/deps/npm/html/partial/doc/cli/npm-config.html
deleted file mode 100644
index 3fee266c1c0e28..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-config.html
+++ /dev/null
@@ -1,46 +0,0 @@
- Manage the npm configuration files
-SYNOPSIS
-npm config set <key> <value> [--global]
-npm config get <key>
-npm config delete <key>
-npm config list
-npm config edit
-npm c [set|get|delete|list]
-npm get <key>
-npm set <key> <value> [--global]
-
DESCRIPTION
-npm gets its config settings from the command line, environment
-variables, npmrc
files, and in some cases, the package.json
file.
-See npmrc(5) for more information about the npmrc files.
-See npm-config(7)
for a more thorough discussion of the mechanisms
-involved.
-The npm config
command can be used to update and edit the contents
-of the user and global npmrc files.
-Sub-commands
-Config supports the following sub-commands:
-set
-npm config set key value
-
Sets the config key to the value.
-If value is omitted, then it sets it to "true".
-get
-npm config get key
-
Echo the config value to stdout.
-list
-npm config list
-
Show all the config settings.
-delete
-npm config delete key
-
Deletes the key from all configuration files.
-edit
-npm config edit
-
Opens the config file in an editor. Use the --global
flag to edit the
-global config.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-dedupe.html b/deps/npm/html/partial/doc/cli/npm-dedupe.html
deleted file mode 100644
index 56a37c32db00d9..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-dedupe.html
+++ /dev/null
@@ -1,43 +0,0 @@
- Reduce duplication
-SYNOPSIS
-npm dedupe [package names...]
-npm ddp [package names...]
-
DESCRIPTION
-Searches the local package tree and attempts to simplify the overall
-structure by moving dependencies further up the tree, where they can
-be more effectively shared by multiple dependent packages.
-For example, consider this dependency graph:
-a
-+-- b <-- depends on c@1.0.x
-| `-- c@1.0.3
-`-- d <-- depends on c@~1.0.9
- `-- c@1.0.10
-
In this case, npm-dedupe(1)
will transform the tree to:
-a
-+-- b
-+-- d
-`-- c@1.0.10
-
Because of the hierarchical nature of node's module lookup, b and d
-will both get their dependency met by the single c package at the root
-level of the tree.
-If a suitable version exists at the target location in the tree
-already, then it will be left untouched, but the other duplicates will
-be deleted.
-If no suitable version can be found, then a warning is printed, and
-nothing is done.
-If any arguments are supplied, then they are filters, and only the
-named packages will be touched.
-Note that this operation transforms the dependency tree, and may
-result in packages getting updated versions, perhaps from the npm
-registry.
-This feature is experimental, and may change in future versions.
-The --tag
argument will apply to all of the affected dependencies. If a
-tag with the given name exists, the tagged version is preferred over newer
-versions.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-deprecate.html b/deps/npm/html/partial/doc/cli/npm-deprecate.html
deleted file mode 100644
index 0657facd8ef612..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-deprecate.html
+++ /dev/null
@@ -1,18 +0,0 @@
- Deprecate a version of a package
-SYNOPSIS
-npm deprecate <name>[@<version>] <message>
-
DESCRIPTION
-This command will update the npm registry entry for a package, providing
-a deprecation warning to all who attempt to install it.
-It works on version ranges as well as specific versions, so you can do
-something like this:
-npm deprecate my-thing@"< 0.2.3" "critical bug fixed in v0.2.3"
-
Note that you must be the package owner to deprecate something. See the
-owner
and adduser
help topics.
-To un-deprecate a package, specify an empty string (""
) for the message
argument.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-dist-tag.html b/deps/npm/html/partial/doc/cli/npm-dist-tag.html
deleted file mode 100644
index e99e059aee4382..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-dist-tag.html
+++ /dev/null
@@ -1,57 +0,0 @@
- Modify package distribution tags
-SYNOPSIS
-npm dist-tag add <pkg>@<version> [<tag>]
-npm dist-tag rm <pkg> <tag>
-npm dist-tag ls [<pkg>]
-
DESCRIPTION
-Add, remove, and enumerate distribution tags on a package:
-
-add:
-Tags the specified version of the package with the specified tag, or the
---tag
config if not specified.
-
-rm:
-Clear a tag that is no longer in use from the package.
-
-ls:
-Show all of the dist-tags for a package, defaulting to the package in
-the current prefix.
-
-
-A tag can be used when installing packages as a reference to a version instead
-of using a specific version number:
-npm install <name>@<tag>
-
When installing dependencies, a preferred tagged version may be specified:
-npm install --tag <tag>
-
This also applies to npm dedupe
.
-Publishing a package sets the "latest" tag to the published version unless the
---tag
option is used. For example, npm publish --tag=beta
.
-PURPOSE
-Tags can be used to provide an alias instead of version numbers. For
-example, npm
currently uses the tag "next" to identify the upcoming
-version, and the tag "latest" to identify the current version.
-A project might choose to have multiple streams of development, e.g.,
-"stable", "canary".
-CAVEATS
-This command used to be known as npm tag
, which only created new tags, and so
-had a different syntax.
-Tags must share a namespace with version numbers, because they are specified in
-the same slot: npm install <pkg>@<version>
vs npm install <pkg>@<tag>
.
-Tags that can be interpreted as valid semver ranges will be rejected. For
-example, v1.4
cannot be used as a tag, because it is interpreted by semver as
->=1.4.0 <1.5.0
. See https://github.com/npm/npm/issues/6082 .
-The simplest way to avoid semver problems with tags is to use tags that do not
-begin with a number or the letter v
.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-docs.html b/deps/npm/html/partial/doc/cli/npm-docs.html
deleted file mode 100644
index 3866ff1a0a4056..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-docs.html
+++ /dev/null
@@ -1,36 +0,0 @@
- Docs for a package in a web browser maybe
-SYNOPSIS
-npm docs [<pkgname> [<pkgname> ...]]
-npm docs (with no args in a package dir)
-npm home [<pkgname> [<pkgname> ...]]
-npm home (with no args in a package dir)
-
DESCRIPTION
-This command tries to guess at the likely location of a package's
-documentation URL, and then tries to open it using the --browser
-config param. You can pass multiple package names at once. If no
-package name is provided, it will search for a package.json
in
-the current folder and use the name
property.
-CONFIGURATION
-browser
-
-Default: OS X: "open"
, Windows: "start"
, Others: "xdg-open"
-Type: String
-
-The browser that is called by the npm docs
command to open websites.
-registry
-
-The base URL of the npm package registry.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-edit.html b/deps/npm/html/partial/doc/cli/npm-edit.html
deleted file mode 100644
index 82b75ad7f3c1cb..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-edit.html
+++ /dev/null
@@ -1,29 +0,0 @@
- Edit an installed package
-SYNOPSIS
-npm edit <name>[@<version>]
-
DESCRIPTION
-Opens the package folder in the default editor (or whatever you've
-configured as the npm editor
config -- see npm-config(7)
.)
-After it has been edited, the package is rebuilt so as to pick up any
-changes in compiled packages.
-For instance, you can do npm install connect
to install connect
-into your package, and then npm edit connect
to make a few
-changes to your locally installed copy.
-CONFIGURATION
-editor
-
-Default: EDITOR
environment variable if set, or "vi"
on Posix,
-or "notepad"
on Windows.
-Type: path
-
-The command to run for npm edit
or npm config edit
.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-explore.html b/deps/npm/html/partial/doc/cli/npm-explore.html
deleted file mode 100644
index fe2fbd494caeaa..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-explore.html
+++ /dev/null
@@ -1,29 +0,0 @@
- Browse an installed package
-SYNOPSIS
-npm explore <name> [ -- <cmd>]
-
DESCRIPTION
-Spawn a subshell in the directory of the installed package specified.
-If a command is specified, then it is run in the subshell, which then
-immediately terminates.
-This is particularly handy in the case of git submodules in the
-node_modules
folder:
-npm explore some-dependency -- git pull origin master
-
Note that the package is not automatically rebuilt afterwards, so be
-sure to use npm rebuild <pkg>
if you make any changes.
-CONFIGURATION
-shell
-
-Default: SHELL environment variable, or "bash" on Posix, or "cmd" on
-Windows
-Type: path
-
-The shell to run for the npm explore
command.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-help-search.html b/deps/npm/html/partial/doc/cli/npm-help-search.html
deleted file mode 100644
index afd8fb47313740..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-help-search.html
+++ /dev/null
@@ -1,26 +0,0 @@
- Search npm help documentation
-SYNOPSIS
-npm help-search some search terms
-
DESCRIPTION
-This command will search the npm markdown documentation files for the
-terms provided, and then list the results, sorted by relevance.
-If only one result is found, then it will show that help topic.
-If the argument to npm help
is not a known help topic, then it will
-call help-search
. It is rarely if ever necessary to call this
-command directly.
-CONFIGURATION
-long
-
-Type: Boolean
-Default false
-
-If true, the "long" flag will cause help-search to output context around
-where the terms were found in the documentation.
-If false, then help-search will just list out the help topics found.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-help.html b/deps/npm/html/partial/doc/cli/npm-help.html
deleted file mode 100644
index 4217b8447c5065..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-help.html
+++ /dev/null
@@ -1,32 +0,0 @@
- Get help on npm
-SYNOPSIS
-npm help <topic>
-npm help some search terms
-
DESCRIPTION
-If supplied a topic, then show the appropriate documentation page.
-If the topic does not exist, or if multiple terms are provided, then run
-the help-search
command to find a match. Note that, if help-search
-finds a single subject, then it will run help
on that topic, so unique
-matches are equivalent to specifying a topic name.
-CONFIGURATION
-viewer
-
-Default: "man" on Posix, "browser" on Windows
-Type: path
-
-The program to use to view help content.
-Set to "browser"
to view html help content in the default web browser.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-init.html b/deps/npm/html/partial/doc/cli/npm-init.html
deleted file mode 100644
index ff363fab1a6909..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-init.html
+++ /dev/null
@@ -1,28 +0,0 @@
- Interactively create a package.json file
-SYNOPSIS
-npm init [-f|--force|-y|--yes]
-
DESCRIPTION
-This will ask you a bunch of questions, and then write a package.json for you.
-It attempts to make reasonable guesses about what you want things to be set to,
-and then writes a package.json file with the options you've selected.
-If you already have a package.json file, it'll read that first, and default to
-the options in there.
-It is strictly additive, so it does not delete options from your package.json
-without a really good reason to do so.
-If you invoke it with -f
, --force
, -y
, or --yes
, it will use only
-defaults and not prompt you for any options.
-CONFIGURATION
-scope
-
-Default: none
-Type: String
-
-The scope under which the new module should be created.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-install.html b/deps/npm/html/partial/doc/cli/npm-install.html
deleted file mode 100644
index 98dadcc9135b3f..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-install.html
+++ /dev/null
@@ -1,257 +0,0 @@
- Install a package
-SYNOPSIS
-npm install (with no args in a package dir)
-npm install <tarball file>
-npm install <tarball url>
-npm install <folder>
-npm install [@<scope>/]<name> [--save|--save-dev|--save-optional] [--save-exact]
-npm install [@<scope>/]<name>@<tag>
-npm install [@<scope>/]<name>@<version>
-npm install [@<scope>/]<name>@<version range>
-npm i (with any of the previous argument usage)
-
DESCRIPTION
-This command installs a package, and any packages that it depends on. If the
-package has a shrinkwrap file, the installation of dependencies will be driven
-by that. See npm-shrinkwrap(1) .
-A package
is:
-
-a) a folder containing a program described by a package.json file
-b) a gzipped tarball containing (a)
-c) a url that resolves to (b)
-d) a <name>@<version>
that is published on the registry (see npm-registry(7)
) with (c)
-e) a <name>@<tag>
that points to (d)
-f) a <name>
that has a "latest" tag satisfying (e)
-g) a <git remote url>
that resolves to (b)
-
-Even if you never publish your package, you can still get a lot of
-benefits of using npm if you just want to write a node program (a), and
-perhaps if you also want to be able to easily install it elsewhere
-after packing it up into a tarball (b).
-
-npm install
(in package directory, no arguments):
- Install the dependencies in the local node_modules folder.
- In global mode (ie, with -g
or --global
appended to the command),
- it installs the current package context (ie, the current working
- directory) as a global package.
- By default, npm install
will install all modules listed as dependencies.
- With the --production
flag (or when the NODE_ENV
environment variable
- is set to production
), npm will not install modules listed in
- devDependencies
.
-
-npm install <folder>
:
- Install a package that is sitting in a folder on the filesystem.
-
-npm install <tarball file>
:
- Install a package that is sitting on the filesystem. Note: if you just want
- to link a dev directory into your npm root, you can do this more easily by
- using npm link
.
- Example:
- npm install ./package.tgz
-
-npm install <tarball url>
:
- Fetch the tarball url, and then install it. In order to distinguish between
- this and other options, the argument must start with "http://" or "https://"
- Example:
- npm install https://github.com/indexzero/forever/tarball/v0.5.6
-
-npm install [@<scope>/]<name> [--save|--save-dev|--save-optional]
:
- Do a <name>@<tag>
install, where <tag>
is the "tag" config. (See
- npm-config(7)
.)
- In most cases, this will install the latest version
- of the module published on npm.
- Example:
- npm install sax
-
npm install
takes 3 exclusive, optional flags which save or update
- the package version in your main package.json:
-
---save
: Package will appear in your dependencies
.
-
---save-dev
: Package will appear in your devDependencies
.
-
---save-optional
: Package will appear in your optionalDependencies
.
-When using any of the above options to save dependencies to your
-package.json, there is an additional, optional flag:
-
---save-exact
: Saved dependencies will be configured with an
-exact version rather than using npm's default semver range
-operator.
-<scope>
is optional. The package will be downloaded from the registry
-associated with the specified scope. If no registry is associated with
-the given scope the default registry is assumed. See npm-scope(7)
.
-Note: if you do not include the @-symbol on your scope name, npm will
-interpret this as a GitHub repository instead, see below. Scopes names
-must also be followed by a slash.
-Examples:
-npm install sax --save
-npm install githubname/reponame
-npm install @myorg/privatepackage
-npm install node-tap --save-dev
-npm install dtrace-provider --save-optional
-npm install readable-stream --save --save-exact
-
-
-
-
-**Note**: If there is a file or folder named `<name>` in the current
-working directory, then it will try to install that, and only try to
-fetch the package by name if it is not valid.
-
-npm install [@<scope>/]<name>@<tag>
:
- Install the version of the package that is referenced by the specified tag.
- If the tag does not exist in the registry data for that package, then this
- will fail.
- Example:
- npm install sax@latest
- npm install @myorg/mypackage@latest
-
-npm install [@<scope>/]<name>@<version>
:
- Install the specified version of the package. This will fail if the
- version has not been published to the registry.
- Example:
- npm install sax@0.1.1
- npm install @myorg/privatepackage@1.5.0
-
-npm install [@<scope>/]<name>@<version range>
:
- Install a version of the package matching the specified version range. This
- will follow the same rules for resolving dependencies described in package.json(5)
.
- Note that most version ranges must be put in quotes so that your shell will
- treat it as a single argument.
- Example:
- npm install sax@">=0.1.0 <0.2.0"
- npm install @myorg/privatepackage@">=0.1.0 <0.2.0"
-
-npm install <git remote url>
:
- Install a package by cloning a git remote url. The format of the git
- url is:
- <protocol>://[<user>[:<password>]@]<hostname>[:<port>][:/]<path>[#<commit-ish>]
-
<protocol>
is one of git
, git+ssh
, git+http
, or
- git+https
. If no <commit-ish>
is specified, then master
is
- used.
- The following git environment variables are recognized by npm and will be added
- to the environment when running git:
-
-GIT_ASKPASS
-GIT_PROXY_COMMAND
-GIT_SSH
-GIT_SSH_COMMAND
-GIT_SSL_CAINFO
-GIT_SSL_NO_VERIFY
-See the git man page for details.
-Examples:
-npm install git+ssh://git@github.com:npm/npm.git#v1.0.27
-npm install git+https://isaacs@github.com/npm/npm.git
-npm install git://github.com/npm/npm.git#v1.0.27
-GIT_SSH_COMMAND='ssh -i ~/.ssh/custom_ident' npm install git+ssh://git@github.com:npm/npm.git
-
-
-
-npm install <githubname>/<githubrepo>[#<commit-ish>]
:
-
-npm install github:<githubname>/<githubrepo>[#<commit-ish>]
:
- Install the package at https://github.com/githubname/githubrepo
by
- attempting to clone it using git
.
- If you don't specify a commit-ish then master
will be used.
- Examples:
- npm install mygithubuser/myproject
- npm install github:mygithubuser/myproject
-
-npm install gist:[<githubname>/]<gistID>[#<commit-ish>]
:
- Install the package at https://gist.github.com/gistID
by attempting to
- clone it using git
. The GitHub username associated with the gist is
- optional and will not be saved in package.json
if --save
is used.
- If you don't specify a commit-ish then master
will be used.
- Example:
- npm install gist:101a11beef
-
-npm install bitbucket:<bitbucketname>/<bitbucketrepo>[#<commit-ish>]
:
- Install the package at https://bitbucket.org/bitbucketname/bitbucketrepo
- by attempting to clone it using git
.
- If you don't specify a commit-ish then master
will be used.
- Example:
- npm install bitbucket:mybitbucketuser/myproject
-
-npm install gitlab:<gitlabname>/<gitlabrepo>[#<commit-ish>]
:
- Install the package at https://gitlab.com/gitlabname/gitlabrepo
- by attempting to clone it using git
.
- If you don't specify a commit-ish then master
will be used.
- Example:
- npm install gitlab:mygitlabuser/myproject
-
-
-You may combine multiple arguments, and even multiple types of arguments.
-For example:
-npm install sax@">=0.1.0 <0.2.0" bench supervisor
-
The --tag
argument will apply to all of the specified install targets. If a
-tag with the given name exists, the tagged version is preferred over newer
-versions.
-The --force
argument will force npm to fetch remote resources even if a
-local copy exists on disk.
-npm install sax --force
-
The --global
argument will cause npm to install the package globally
-rather than locally. See npm-folders(5)
.
-The --link
argument will cause npm to link global installs into the
-local space in some cases.
-The --no-bin-links
argument will prevent npm from creating symlinks for
-any binaries the package might contain.
-The --no-optional
argument will prevent optional dependencies from
-being installed.
-The --no-shrinkwrap
argument, which will ignore an available
-shrinkwrap file and use the package.json instead.
-The --nodedir=/path/to/node/source
argument will allow npm to find the
-node source code so that npm can compile native modules.
-See npm-config(7)
. Many of the configuration params have some
-effect on installation, since that's most of what npm does.
-ALGORITHM
-To install a package, npm uses the following algorithm:
-install(where, what, family, ancestors)
-fetch what, unpack to <where>/node_modules/<what>
-for each dep in what.dependencies
- resolve dep to precise version
-for each dep@version in what.dependencies
- not in <where>/node_modules/<what>/node_modules/*
- and not in <family>
- add precise version deps to <family>
- install(<where>/node_modules/<what>, dep, family)
-
For this package{dep}
structure: A{B,C}, B{C}, C{D}
,
-this algorithm produces:
-A
-+-- B
-`-- C
- `-- D
-
That is, the dependency from B to C is satisfied by the fact that A
-already caused C to be installed at a higher level.
-See npm-folders(5) for a more detailed description of the specific
-folder structures that npm creates.
-Limitations of npm's Install Algorithm
-There are some very rare and pathological edge-cases where a cycle can
-cause npm to try to install a never-ending tree of packages. Here is
-the simplest case:
-A -> B -> A' -> B' -> A -> B -> A' -> B' -> A -> ...
-
where A
is some version of a package, and A'
is a different version
-of the same package. Because B
depends on a different version of A
-than the one that is already in the tree, it must install a separate
-copy. The same is true of A'
, which must install B'
. Because B'
-depends on the original version of A
, which has been overridden, the
-cycle falls into infinite regress.
-To avoid this situation, npm flat-out refuses to install any
-name@version
that is already present anywhere in the tree of package
-folder ancestors. A more correct, but more complex, solution would be
-to symlink the existing version into the new location. If this ever
-affects a real use-case, it will be investigated.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-link.html b/deps/npm/html/partial/doc/cli/npm-link.html
deleted file mode 100644
index d25a64005b1852..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-link.html
+++ /dev/null
@@ -1,52 +0,0 @@
- Symlink a package folder
-SYNOPSIS
-npm link (in package folder)
-npm link [@<scope>/]<pkgname>
-npm ln (with any of the previous argument usage)
-
DESCRIPTION
-Package linking is a two-step process.
-First, npm link
in a package folder will create a globally-installed
-symbolic link from prefix/package-name
to the current folder (see
-npm-config(7)
for the value of prefix
).
-Next, in some other location, npm link package-name
will create a
-symlink from the local node_modules
folder to the global symlink.
-Note that package-name
is taken from package.json
,
-not from directory name.
-The package name can be optionally prefixed with a scope. See npm-scope(7)
.
-The scope must be preceded by an @-symbol and followed by a slash.
-When creating tarballs for npm publish
, the linked packages are
-"snapshotted" to their current state by resolving the symbolic links.
-This is handy for installing your own stuff, so that you can work on it and
-test it iteratively without having to continually rebuild.
-For example:
-cd ~/projects/node-redis # go into the package directory
-npm link # creates global link
-cd ~/projects/node-bloggy # go into some other package directory.
-npm link redis # link-install the package
-
Now, any changes to ~/projects/node-redis will be reflected in
-~/projects/node-bloggy/node_modules/node-redis/. Note that the link should
-be to the package name, not the directory name for that package.
-You may also shortcut the two steps in one. For example, to do the
-above use-case in a shorter way:
-cd ~/projects/node-bloggy # go into the dir of your main project
-npm link ../node-redis # link the dir of your dependency
-
The second line is the equivalent of doing:
-(cd ../node-redis; npm link)
-npm link node-redis
-
That is, it first creates a global link, and then links the global
-installation target into your project's node_modules
folder.
-If your linked package is scoped (see npm-scope(7)
) your link command must
-include that scope, e.g.
-npm link @myorg/privatepackage
-
SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-logout.html b/deps/npm/html/partial/doc/cli/npm-logout.html
deleted file mode 100644
index 63c28a3d7ca7cd..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-logout.html
+++ /dev/null
@@ -1,35 +0,0 @@
- Log out of the registry
-SYNOPSIS
-npm logout [--registry=url] [--scope=@orgname]
-
DESCRIPTION
-When logged into a registry that supports token-based authentication, tell the
-server to end this token's session. This will invalidate the token everywhere
-you're using it, not just for the current environment.
-When logged into a legacy registry that uses username and password authentication, this will
-clear the credentials in your user configuration. In this case, it will only affect
-the current environment.
-If --scope
is provided, this will find the credentials for the registry
-connected to that scope, if set.
-CONFIGURATION
-registry
-Default: http://registry.npmjs.org/
-The base URL of the npm package registry. If scope
is also specified,
-it takes precedence.
-scope
-Default: none
-If specified, the user and login credentials given will be associated
-with the specified scope. See npm-scope(7)
. You can use both at the same time,
-e.g.
-npm adduser --registry=http://myregistry.example.com --scope=@myco
-
This will set a registry for the given scope and login or create a user for
-that registry at the same time.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-ls.html b/deps/npm/html/partial/doc/cli/npm-ls.html
deleted file mode 100644
index 9674a414fe6a7c..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-ls.html
+++ /dev/null
@@ -1,77 +0,0 @@
- List installed packages
-SYNOPSIS
-npm list [[@<scope>/]<pkg> ...]
-npm ls [[@<scope>/]<pkg> ...]
-npm la [[@<scope>/]<pkg> ...]
-npm ll [[@<scope>/]<pkg> ...]
-
DESCRIPTION
-This command will print to stdout all the versions of packages that are
-installed, as well as their dependencies, in a tree-structure.
-Positional arguments are name@version-range
identifiers, which will
-limit the results to only the paths to the packages named. Note that
-nested packages will also show the paths to the specified packages.
-For example, running npm ls promzard
in npm's source tree will show:
-npm@2.13.3 /path/to/npm
-└─┬ init-package-json@0.0.4
- └── promzard@0.1.5
-
It will print out extraneous, missing, and invalid packages.
-If a project specifies git urls for dependencies these are shown
-in parentheses after the name@version to make it easier for users to
-recognize potential forks of a project.
-When run as ll
or la
, it shows extended information by default.
-CONFIGURATION
-json
-
-Default: false
-Type: Boolean
-
-Show information in JSON format.
-long
-
-Default: false
-Type: Boolean
-
-Show extended information.
-parseable
-
-Default: false
-Type: Boolean
-
-Show parseable output instead of tree view.
-global
-
-Default: false
-Type: Boolean
-
-List packages in the global install prefix instead of in the current
-project.
-depth
-
-Max display depth of the dependency tree.
-prod / production
-
-Type: Boolean
-Default: false
-
-Display only the dependency tree for packages in dependencies
.
-dev
-
-Type: Boolean
-Default: false
-
-Display only the dependency tree for packages in devDependencies
.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-outdated.html b/deps/npm/html/partial/doc/cli/npm-outdated.html
deleted file mode 100644
index ea07e01c1ce841..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-outdated.html
+++ /dev/null
@@ -1,47 +0,0 @@
- Check for outdated packages
-SYNOPSIS
-npm outdated [<name> [<name> ...]]
-
DESCRIPTION
-This command will check the registry to see if any (or, specific) installed
-packages are currently outdated.
-The resulting field 'wanted' shows the latest version according to the
-version specified in the package.json, the field 'latest' the very latest
-version of the package.
-CONFIGURATION
-json
-
-Default: false
-Type: Boolean
-
-Show information in JSON format.
-long
-
-Default: false
-Type: Boolean
-
-Show extended information.
-parseable
-
-Default: false
-Type: Boolean
-
-Show parseable output instead of tree view.
-global
-
-Default: false
-Type: Boolean
-
-Check packages in the global install prefix instead of in the current
-project.
-depth
-
-Max depth for checking dependency tree.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-owner.html b/deps/npm/html/partial/doc/cli/npm-owner.html
deleted file mode 100644
index 0e0dc92e41684a..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-owner.html
+++ /dev/null
@@ -1,29 +0,0 @@
- Manage package owners
-SYNOPSIS
-npm owner ls <package name>
-npm owner add <user> <package name>
-npm owner rm <user> <package name>
-
DESCRIPTION
-Manage ownership of published packages.
-
-ls:
-List all the users who have access to modify a package and push new versions.
-Handy when you need to know who to bug for help.
-add:
-Add a new user as a maintainer of a package. This user is enabled to modify
-metadata, publish new versions, and add other owners.
-rm:
-Remove a user from the package owner list. This immediately revokes their
-privileges.
-
-Note that there is only one level of access. Either you can modify a package,
-or you can't. Future versions may contain more fine-grained access levels, but
-that is not implemented at this time.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-pack.html b/deps/npm/html/partial/doc/cli/npm-pack.html
deleted file mode 100644
index 865f14afd4683f..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-pack.html
+++ /dev/null
@@ -1,21 +0,0 @@
- Create a tarball from a package
-SYNOPSIS
-npm pack [<pkg> [<pkg> ...]]
-
DESCRIPTION
-For anything that's installable (that is, a package folder, tarball,
-tarball url, name@tag, name@version, or name), this command will fetch
-it to the cache, and then copy the tarball to the current working
-directory as <name>-<version>.tgz
, and then write the filenames out to
-stdout.
-If the same package is specified multiple times, then the file will be
-overwritten the second time.
-If no arguments are supplied, then npm packs the current package folder.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-ping.html b/deps/npm/html/partial/doc/cli/npm-ping.html
deleted file mode 100644
index c71423d5eee4fc..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-ping.html
+++ /dev/null
@@ -1,11 +0,0 @@
- Ping npm registry
-SYNOPSIS
-npm ping [--registry <registry>]
-
DESCRIPTION
-Ping the configured or given npm registry and verify authentication.
-SEE ALSO
-
diff --git a/deps/npm/html/partial/doc/cli/npm-prefix.html b/deps/npm/html/partial/doc/cli/npm-prefix.html
deleted file mode 100644
index bca3f6689c7b51..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-prefix.html
+++ /dev/null
@@ -1,18 +0,0 @@
- Display prefix
-SYNOPSIS
-npm prefix [-g]
-
DESCRIPTION
-Print the local prefix to standard out. This is the closest parent directory
-to contain a package.json file unless -g
is also specified.
-If -g
is specified, this will be the value of the global prefix. See
-npm-config(7)
for more detail.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-prune.html b/deps/npm/html/partial/doc/cli/npm-prune.html
deleted file mode 100644
index 8bb16677da18af..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-prune.html
+++ /dev/null
@@ -1,21 +0,0 @@
- Remove extraneous packages
-SYNOPSIS
-npm prune [<name> [<name ...]]
-npm prune [<name> [<name ...]] [--production]
-
DESCRIPTION
-This command removes "extraneous" packages. If a package name is
-provided, then only packages matching one of the supplied names are
-removed.
-Extraneous packages are packages that are not listed on the parent
-package's dependencies list.
-If the --production
flag is specified or the NODE_ENV
environment
-variable is set to production
, this command will remove the packages
-specified in your devDependencies
. Setting --production=false
will
-negate NODE_ENV
being set to production
.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-publish.html b/deps/npm/html/partial/doc/cli/npm-publish.html
deleted file mode 100644
index 8d9321292a431b..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-publish.html
+++ /dev/null
@@ -1,46 +0,0 @@
- Publish a package
-SYNOPSIS
-npm publish <tarball> [--tag <tag>] [--access <public|restricted>]
-npm publish <folder> [--tag <tag>] [--access <public|restricted>]
-
DESCRIPTION
-Publishes a package to the registry so that it can be installed by name. See
-npm-developers(7)
for details on what's included in the published package, as
-well as details on how the package is built.
-By default npm will publish to the public registry. This can be overridden by
-specifying a different default registry or using a npm-scope(7)
in the name
-(see package.json(5)
).
-
-<folder>
:
-A folder containing a package.json file
-
-<tarball>
:
-A url or file path to a gzipped tar archive containing a single folder
-with a package.json file inside.
-
-[--tag <tag>]
-Registers the published package with the given tag, such that npm install
-<name>@<tag>
will install this version. By default, npm publish
updates
-and npm install
installs the latest
tag.
-
-[--access <public|restricted>]
-Tells the registry whether this package should be published as public or
-restricted. Only applies to scoped packages, which default to restricted
.
-If you don't have a paid account, you must publish with --access public
-to publish scoped packages.
-
-
-Fails if the package name and version combination already exists in
-the specified registry.
-Once a package is published with a given name and version, that
-specific name and version combination can never be used again, even if
-it is removed with npm-unpublish(1) .
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-rebuild.html b/deps/npm/html/partial/doc/cli/npm-rebuild.html
deleted file mode 100644
index b06f0705e3eaa2..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-rebuild.html
+++ /dev/null
@@ -1,18 +0,0 @@
- Rebuild a package
-SYNOPSIS
-npm rebuild [<name> [<name> ...]]
-npm rb [<name> [<name> ...]]
-
-<name>
:
-The package to rebuild
-
-DESCRIPTION
-This command runs the npm build
command on the matched folders. This is useful
-when you install a new version of node, and must recompile all your C++ addons with
-the new binary.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-repo.html b/deps/npm/html/partial/doc/cli/npm-repo.html
deleted file mode 100644
index 55fcb5f4c96586..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-repo.html
+++ /dev/null
@@ -1,22 +0,0 @@
- Open package repository page in the browser
-SYNOPSIS
-npm repo <pkgname>
-npm repo (with no args in a package dir)
-
DESCRIPTION
-This command tries to guess at the likely location of a package's
-repository URL, and then tries to open it using the --browser
-config param. If no package name is provided, it will search for
-a package.json
in the current folder and use the name
property.
-CONFIGURATION
-browser
-
-Default: OS X: "open"
, Windows: "start"
, Others: "xdg-open"
-Type: String
-
-The browser that is called by the npm repo
command to open websites.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-restart.html b/deps/npm/html/partial/doc/cli/npm-restart.html
deleted file mode 100644
index 2186473373c513..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-restart.html
+++ /dev/null
@@ -1,33 +0,0 @@
- Restart a package
-SYNOPSIS
-npm restart [-- <args>]
-
DESCRIPTION
-This restarts a package.
-This runs a package's "stop", "restart", and "start" scripts, and associated
-pre- and post- scripts, in the order given below:
-
-prerestart
-prestop
-stop
-poststop
-restart
-prestart
-start
-poststart
-postrestart
-
-NOTE
-Note that the "restart" script is run in addition to the "stop"
-and "start" scripts, not instead of them.
-This is the behavior as of npm
major version 2. A change in this
-behavior will be accompanied by an increase in major version number
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-rm.html b/deps/npm/html/partial/doc/cli/npm-rm.html
deleted file mode 100644
index 24cd07eeecd8db..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-rm.html
+++ /dev/null
@@ -1,19 +0,0 @@
- Remove a package
-SYNOPSIS
-npm rm <name>
-npm r <name>
-npm uninstall <name>
-npm un <name>
-
DESCRIPTION
-This uninstalls a package, completely removing everything npm installed
-on its behalf.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-root.html b/deps/npm/html/partial/doc/cli/npm-root.html
deleted file mode 100644
index e9b5ad0df8c298..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-root.html
+++ /dev/null
@@ -1,15 +0,0 @@
- Display npm root
-SYNOPSIS
-npm root
-
DESCRIPTION
-Print the effective node_modules
folder to standard out.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-run-script.html b/deps/npm/html/partial/doc/cli/npm-run-script.html
deleted file mode 100644
index e79376870e69ab..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-run-script.html
+++ /dev/null
@@ -1,37 +0,0 @@
- Run arbitrary package scripts
-SYNOPSIS
-npm run-script [command] [-- <args>]
-npm run [command] [-- <args>]
-
DESCRIPTION
-This runs an arbitrary command from a package's "scripts"
object. If no
-"command"
is provided, it will list the available scripts. run[-script]
is
-used by the test, start, restart, and stop commands, but can be called
-directly, as well. When the scripts in the package are printed out, they're
-separated into lifecycle (test, start, restart) and directly-run scripts.
-As of npm@2.0.0
, you can
-use custom arguments when executing scripts. The special option --
is used by
-getopt to delimit the end of the options. npm will pass
-all the arguments after the --
directly to your script:
-npm run test -- --grep="pattern"
-
The arguments will only be passed to the script specified after npm run
-and not to any pre or post script.
-The env
script is a special built-in command that can be used to list
-environment variables that will be available to the script at runtime. If an
-"env" command is defined in your package it will take precedence over the
-built-in.
-In addition to the shell's pre-existing PATH
, npm run
adds
-node_modules/.bin
to the PATH
provided to scripts. Any binaries provided by
-locally-installed dependencies can be used without the node_modules/.bin
-prefix. For example, if there is a devDependency
on tap
in your package,
-you should write:
-"scripts": {"test": "tap test/\*.js"}
-
instead of "scripts": {"test": "node_modules/.bin/tap test/\*.js"}
to run your tests.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-search.html b/deps/npm/html/partial/doc/cli/npm-search.html
deleted file mode 100644
index ae66e47ead1cd3..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-search.html
+++ /dev/null
@@ -1,29 +0,0 @@
- Search for packages
-SYNOPSIS
-npm search [--long] [search terms ...]
-npm s [search terms ...]
-npm se [search terms ...]
-
DESCRIPTION
-Search the registry for packages matching the search terms.
-If a term starts with /
, then it's interpreted as a regular expression.
-A trailing /
will be ignored in this case. (Note that many regular
-expression characters must be escaped or quoted in most shells.)
-CONFIGURATION
-long
-
-Default: false
-Type: Boolean
-
-Display full package descriptions and other long text across multiple
-lines. When disabled (default) search results are truncated to fit
-neatly on a single line. Modules with extremely long names will
-fall on multiple lines.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-shrinkwrap.html b/deps/npm/html/partial/doc/cli/npm-shrinkwrap.html
deleted file mode 100644
index 8ac97fc3eed892..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-shrinkwrap.html
+++ /dev/null
@@ -1,144 +0,0 @@
- Lock down dependency versions
-SYNOPSIS
-npm shrinkwrap
-
DESCRIPTION
-This command locks down the versions of a package's dependencies so
-that you can control exactly which versions of each dependency will be
-used when your package is installed. The package.json
file is still
-required if you want to use npm install
.
-By default, npm install
recursively installs the target's
-dependencies (as specified in package.json
), choosing the latest
-available version that satisfies the dependency's semver pattern. In
-some situations, particularly when shipping software where each change
-is tightly managed, it's desirable to fully specify each version of
-each dependency recursively so that subsequent builds and deploys do
-not inadvertently pick up newer versions of a dependency that satisfy
-the semver pattern. Specifying specific semver patterns in each
-dependency's package.json
would facilitate this, but that's not always
-possible or desirable, as when another author owns the npm package.
-It's also possible to check dependencies directly into source control,
-but that may be undesirable for other reasons.
-As an example, consider package A:
-{
- "name": "A",
- "version": "0.1.0",
- "dependencies": {
- "B": "<0.1.0"
- }
-}
-
package B:
-{
- "name": "B",
- "version": "0.0.1",
- "dependencies": {
- "C": "<0.1.0"
- }
-}
-
and package C:
-{
- "name": "C",
- "version": "0.0.1"
-}
-
If these are the only versions of A, B, and C available in the
-registry, then a normal npm install A
will install:
-A@0.1.0
-`-- B@0.0.1
- `-- C@0.0.1
-
However, if B@0.0.2 is published, then a fresh npm install A
will
-install:
-A@0.1.0
-`-- B@0.0.2
- `-- C@0.0.1
-
assuming the new version did not modify B's dependencies. Of course,
-the new version of B could include a new version of C and any number
-of new dependencies. If such changes are undesirable, the author of A
-could specify a dependency on B@0.0.1. However, if A's author and B's
-author are not the same person, there's no way for A's author to say
-that he or she does not want to pull in newly published versions of C
-when B hasn't changed at all.
-In this case, A's author can run
-npm shrinkwrap
-
This generates npm-shrinkwrap.json
, which will look something like this:
-{
- "name": "A",
- "version": "0.1.0",
- "dependencies": {
- "B": {
- "version": "0.0.1",
- "dependencies": {
- "C": {
- "version": "0.0.1"
- }
- }
- }
- }
-}
-
The shrinkwrap command has locked down the dependencies based on
-what's currently installed in node_modules. When npm install
-installs a package with an npm-shrinkwrap.json
in the package
-root, the shrinkwrap file (rather than package.json
files) completely
-drives the installation of that package and all of its dependencies
-(recursively). So now the author publishes A@0.1.0, and subsequent
-installs of this package will use B@0.0.1 and C@0.0.1, regardless the
-dependencies and versions listed in A's, B's, and C's package.json
-files.
-Using shrinkwrapped packages
-Using a shrinkwrapped package is no different than using any other
-package: you can npm install
it by hand, or add a dependency to your
-package.json
file and npm install
it.
-Building shrinkwrapped packages
-To shrinkwrap an existing package:
-
-Run npm install
in the package root to install the current
-versions of all dependencies.
-Validate that the package works as expected with these versions.
-Run npm shrinkwrap
, add npm-shrinkwrap.json
to git, and publish
-your package.
-
-To add or update a dependency in a shrinkwrapped package:
-
-Run npm install
in the package root to install the current
-versions of all dependencies.
-Add or update dependencies. npm install
each new or updated
-package individually and then update package.json
. Note that they
-must be explicitly named in order to be installed: running npm
-install
with no arguments will merely reproduce the existing
-shrinkwrap.
-Validate that the package works as expected with the new
-dependencies.
-Run npm shrinkwrap
, commit the new npm-shrinkwrap.json
, and
-publish your package.
-
-You can use npm-outdated(1) to view dependencies with newer versions
-available.
-Other Notes
-A shrinkwrap file must be consistent with the package's package.json
-file. npm shrinkwrap
will fail if required dependencies are not
-already installed, since that would result in a shrinkwrap that
-wouldn't actually work. Similarly, the command will fail if there are
-extraneous packages (not referenced by package.json
), since that would
-indicate that package.json
is not correct.
-Since npm shrinkwrap
is intended to lock down your dependencies for
-production use, devDependencies
will not be included unless you
-explicitly set the --dev
flag when you run npm shrinkwrap
. If
-installed devDependencies
are excluded, then npm will print a
-warning. If you want them to be installed with your module by
-default, please consider adding them to dependencies
instead.
-If shrinkwrapped package A depends on shrinkwrapped package B, B's
-shrinkwrap will not be used as part of the installation of A. However,
-because A's shrinkwrap is constructed from a valid installation of B
-and recursively specifies all dependencies, the contents of B's
-shrinkwrap will implicitly be included in A's shrinkwrap.
-Caveats
-If you wish to lock down the specific bytes included in a package, for
-example to have 100% confidence in being able to reproduce a
-deployment or build, then you ought to check your dependencies into
-source control, or pursue some other mechanism that can verify
-contents rather than versions.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-star.html b/deps/npm/html/partial/doc/cli/npm-star.html
deleted file mode 100644
index 7377d9bc5ddb1e..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-star.html
+++ /dev/null
@@ -1,16 +0,0 @@
- Mark your favorite packages
-SYNOPSIS
-npm star <pkgname> [<pkg>, ...]
-npm unstar <pkgname> [<pkg>, ...]
-
DESCRIPTION
-"Starring" a package means that you have some interest in it. It's
-a vaguely positive way to show that you care.
-"Unstarring" is the same thing, but in reverse.
-It's a boolean thing. Starring repeatedly has no additional effect.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-stars.html b/deps/npm/html/partial/doc/cli/npm-stars.html
deleted file mode 100644
index 6ffda95b83868d..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-stars.html
+++ /dev/null
@@ -1,17 +0,0 @@
- View packages marked as favorites
-SYNOPSIS
-npm stars
-npm stars [username]
-
DESCRIPTION
-If you have starred a lot of neat things and want to find them again
-quickly this command lets you do just that.
-You may also want to see your friend's favorite packages, in this case
-you will most certainly enjoy this command.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-start.html b/deps/npm/html/partial/doc/cli/npm-start.html
deleted file mode 100644
index bfd673ca26b5f4..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-start.html
+++ /dev/null
@@ -1,14 +0,0 @@
- Start a package
-SYNOPSIS
-npm start [-- <args>]
-
DESCRIPTION
-This runs a package's "start" script, if one was provided.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-stop.html b/deps/npm/html/partial/doc/cli/npm-stop.html
deleted file mode 100644
index 3b974c46a1e221..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-stop.html
+++ /dev/null
@@ -1,14 +0,0 @@
- Stop a package
-SYNOPSIS
-npm stop [-- <args>]
-
DESCRIPTION
-This runs a package's "stop" script, if one was provided.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-tag.html b/deps/npm/html/partial/doc/cli/npm-tag.html
deleted file mode 100644
index b12d5de7a4c62f..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-tag.html
+++ /dev/null
@@ -1,42 +0,0 @@
- Tag a published version
-SYNOPSIS
-npm tag <name>@<version> [<tag>]
-
DESCRIPTION
-THIS COMMAND IS DEPRECATED. See npm-dist-tag(1) for details.
-Tags the specified version of the package with the specified tag, or the
---tag
config if not specified.
-A tag can be used when installing packages as a reference to a version instead
-of using a specific version number:
-npm install <name>@<tag>
-
When installing dependencies, a preferred tagged version may be specified:
-npm install --tag <tag>
-
This also applies to npm dedupe
.
-Publishing a package always sets the "latest" tag to the published version.
-PURPOSE
-Tags can be used to provide an alias instead of version numbers. For
-example, npm
currently uses the tag "next" to identify the upcoming
-version, and the tag "latest" to identify the current version.
-A project might choose to have multiple streams of development, e.g.,
-"stable", "canary".
-CAVEATS
-Tags must share a namespace with version numbers, because they are
-specified in the same slot: npm install <pkg>@<version>
vs npm
-install <pkg>@<tag>
.
-Tags that can be interpreted as valid semver ranges will be
-rejected. For example, v1.4
cannot be used as a tag, because it is
-interpreted by semver as >=1.4.0 <1.5.0
. See
-https://github.com/npm/npm/issues/6082 .
-The simplest way to avoid semver problems with tags is to use tags
-that do not begin with a number or the letter v
.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-test.html b/deps/npm/html/partial/doc/cli/npm-test.html
deleted file mode 100644
index 4a48e657d92246..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-test.html
+++ /dev/null
@@ -1,17 +0,0 @@
- Test a package
-SYNOPSIS
- npm test [-- <args>]
- npm tst [-- <args>]
-
DESCRIPTION
-This runs a package's "test" script, if one was provided.
-To run tests as a condition of installation, set the npat
config to
-true.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-uninstall.html b/deps/npm/html/partial/doc/cli/npm-uninstall.html
deleted file mode 100644
index 5b247402bdc808..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-uninstall.html
+++ /dev/null
@@ -1,37 +0,0 @@
- Remove a package
-SYNOPSIS
-npm uninstall [@<scope>/]<package> [--save|--save-dev|--save-optional]
-npm rm (with any of the previous argument usage)
-
DESCRIPTION
-This uninstalls a package, completely removing everything npm installed
-on its behalf.
-Example:
-npm uninstall sax
-
In global mode (ie, with -g
or --global
appended to the command),
-it uninstalls the current package context as a global package.
-npm uninstall
takes 3 exclusive, optional flags which save or update
-the package version in your main package.json:
-
---save
: Package will be removed from your dependencies
.
-
---save-dev
: Package will be removed from your devDependencies
.
-
---save-optional
: Package will be removed from your optionalDependencies
.
-
-
-Scope is optional and follows the usual rules for npm-scope(7)
.
-Examples:
-npm uninstall sax --save
-npm uninstall @myorg/privatepackage --save
-npm uninstall node-tap --save-dev
-npm uninstall dtrace-provider --save-optional
-
SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-unpublish.html b/deps/npm/html/partial/doc/cli/npm-unpublish.html
deleted file mode 100644
index 9790cd4327452a..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-unpublish.html
+++ /dev/null
@@ -1,27 +0,0 @@
- Remove a package from the registry
-SYNOPSIS
-npm unpublish [@<scope>/]<name>[@<version>]
-
WARNING
-It is generally considered bad behavior to remove versions of a library
-that others are depending on!
-Consider using the deprecate
command
-instead, if your intent is to encourage users to upgrade.
-There is plenty of room on the registry.
-DESCRIPTION
-This removes a package version from the registry, deleting its
-entry and removing the tarball.
-If no version is specified, or if all versions are removed then
-the root package entry is removed from the registry entirely.
-Even if a package version is unpublished, that specific name and
-version combination can never be reused. In order to publish the
-package again, a new version number must be used.
-The scope is optional and follows the usual rules for npm-scope(7)
.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-update.html b/deps/npm/html/partial/doc/cli/npm-update.html
deleted file mode 100644
index ecc6640f21ddcd..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-update.html
+++ /dev/null
@@ -1,99 +0,0 @@
- Update a package
-SYNOPSIS
-npm update [-g] [<name> [<name> ...]]
-
DESCRIPTION
-This command will update all the packages listed to the latest version
-(specified by the tag
config), respecting semver.
-It will also install missing packages. As with all commands that install
-packages, the --dev
flag will cause devDependencies
to be processed
-as well.
-If the -g
flag is specified, this command will update globally installed
-packages.
-If no package name is specified, all packages in the specified location (global
-or local) will be updated.
-As of npm@2.6.1
, the npm update
will only inspect top-level packages.
-Prior versions of npm
would also recursively inspect all dependencies.
-To get the old behavior, use npm --depth 9999 update
, but be warned that
-simultaneous asynchronous update of all packages, including npm
itself
-and packages that npm
depends on, often causes problems up to and including
-the uninstallation of npm
itself.
-To restore a missing npm
, use the command:
-curl -L https://npmjs.com/install.sh | sh
-
EXAMPLES
-IMPORTANT VERSION NOTE: these examples assume npm@2.6.1
or later. For
-older versions of npm
, you must specify --depth 0
to get the behavior
-described below.
-For the examples below, assume that the current package is app
and it depends
-on dependencies, dep1
(dep2
, .. etc.). The published versions of dep1
are:
-{
- dist-tags: { latest: "1.2.2" },
- versions: { "1.2.2",
- "1.2.1",
- "1.2.0",
- "1.1.2",
- "1.1.1",
- "1.0.0",
- "0.4.1",
- "0.4.0",
- "0.2.0"
- }
-}
-
Caret Dependencies
-If app
's package.json
contains:
-dependencies: {
- dep1: "^1.1.1"
-}
-
Then npm update
will install dep1@1.2.2
, because 1.2.2
is latest
and
-1.2.2
satisfies ^1.1.1
.
-Tilde Dependencies
-However, if app
's package.json
contains:
-dependencies: {
- dep1: "~1.1.1"
-}
-
In this case, running npm update
will install dep1@1.1.2
. Even though the latest
-tag points to 1.2.2
, this version does not satisfy ~1.1.1
, which is equivalent
-to >=1.1.1 <1.2.0
. So the highest-sorting version that satisfies ~1.1.1
is used,
-which is 1.1.2
.
-Caret Dependencies below 1.0.0
-Suppose app
has a caret dependency on a version below 1.0.0
, for example:
-dependencies: {
- dep1: "^0.2.0"
-}
-
npm update
will install dep1@0.2.0
, because there are no other
-versions which satisfy ^0.2.0
.
-If the dependence were on ^0.4.0
:
-dependencies: {
- dep1: "^0.4.0"
-}
-
Then npm update
will install dep1@0.4.1
, because that is the highest-sorting
-version that satisfies ^0.4.0
(>= 0.4.0 <0.5.0
)
-Recording Updates with --save
-When you want to update a package and save the new version as
-the minimum required dependency in package.json
, you can use
-npm update --save
. For example if package.json
contains
-dependencies: {
- dep1: "^1.1.1"
-}
-
Then npm update --save
will install dep1@1.2.2
(i.e., latest
),
-and package.json
will be modified:
-dependencies: {
- dep1: "^1.2.2"
-}
-
Note that npm
will only write an updated version to package.json
-if it installs a new package.
-Updating Globally-Installed Packages
-npm update -g
will apply the update
action to each globally- installed
-package that is outdated
-- that is, has a version that is different from
-latest
.
-NOTE: If a package has been upgraded to a version newer than latest
, it will
-be downgraded .
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-version.html b/deps/npm/html/partial/doc/cli/npm-version.html
deleted file mode 100644
index 1beda3d2884aad..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-version.html
+++ /dev/null
@@ -1,75 +0,0 @@
- Bump a package version
-SYNOPSIS
-npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease]
-
DESCRIPTION
-Run this in a package directory to bump the version and write the new
-data back to package.json
and, if present, npm-shrinkwrap.json
.
-The newversion
argument should be a valid semver string, or a
-valid second argument to semver.inc (one of patch
, minor
, major
,
-prepatch
, preminor
, premajor
, prerelease
). In the second case,
-the existing version will be incremented by 1 in the specified field.
-If run in a git repo, it will also create a version commit and tag.
-This behavior is controlled by git-tag-version
(see below), and can
-be disabled on the command line by running npm --no-git-tag-version version
.
-It will fail if the working directory is not clean, unless the --force
-flag is set.
-If supplied with --message
(shorthand: -m
) config option, npm will
-use it as a commit message when creating a version commit. If the
-message
config contains %s
then that will be replaced with the
-resulting version number. For example:
-npm version patch -m "Upgrade to %s for reasons"
-
If the sign-git-tag
config is set, then the tag will be signed using
-the -s
flag to git. Note that you must have a default GPG key set up
-in your git config for this to work properly. For example:
-$ npm config set sign-git-tag true
-$ npm version patch
-
-You need a passphrase to unlock the secret key for
-user: "isaacs (http://blog.izs.me/) <i@izs.me>"
-2048-bit RSA key, ID 6C481CF6, created 2010-08-31
-
-Enter passphrase:
-
If preversion
, version
, or postversion
are in the scripts
property of
-the package.json, they will be executed as part of running npm version
.
-The exact order of execution is as follows:
-
-Check to make sure the git working directory is clean before we get started.
-Your scripts may add files to the commit in future steps.
-This step is skipped if the --force
flag is set.
-Run the preversion
script. These scripts have access to the old version
in package.json.
-A typical use would be running your full test suite before deploying.
-Any files you want added to the commit should be explicitly added using git add
.
-Bump version
in package.json
as requested (patch
, minor
, major
, etc).
-Run the version
script. These scripts have access to the new version
in package.json
-(so they can incorporate it into file headers in generated files for example).
-Again, scripts should explicitly add generated files to the commit using git add
.
-Commit and tag.
-Run the postversion
script. Use it to clean up the file system or automatically push
-the commit and/or tag.
-
-Take the following example:
-"scripts": {
- "preversion": "npm test",
- "version": "npm run build && git add -A dist",
- "postversion": "git push && git push --tags && rm -rf build/temp"
-}
-
This runs all your tests, and proceeds only if they pass. Then runs your build
script, and
-adds everything in the dist
directory to the commit. After the commit, it pushes the new commit
-and tag up to the server, and deletes the build/temp
directory.
-CONFIGURATION
-git-tag-version
-
-Default: true
-Type: Boolean
-
-Commit and tag the version change.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-view.html b/deps/npm/html/partial/doc/cli/npm-view.html
deleted file mode 100644
index dcd41693e7e49b..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-view.html
+++ /dev/null
@@ -1,62 +0,0 @@
- View registry info
-SYNOPSIS
-npm view [@<scope>/]<name>[@<version>] [<field>[.<subfield>]...]
-npm v [@<scope>/]<name>[@<version>] [<field>[.<subfield>]...]
-
DESCRIPTION
-This command shows data about a package and prints it to the stream
-referenced by the outfd
config, which defaults to stdout.
-To show the package registry entry for the connect
package, you can do
-this:
-npm view connect
-
The default version is "latest" if unspecified.
-Field names can be specified after the package descriptor.
-For example, to show the dependencies of the ronn
package at version
-0.3.5, you could do the following:
-npm view ronn@0.3.5 dependencies
-
You can view child fields by separating them with a period.
-To view the git repository URL for the latest version of npm, you could
-do this:
-npm view npm repository.url
-
This makes it easy to view information about a dependency with a bit of
-shell scripting. For example, to view all the data about the version of
-opts that ronn depends on, you can do this:
-npm view opts@$(npm view ronn dependencies.opts)
-
For fields that are arrays, requesting a non-numeric field will return
-all of the values from the objects in the list. For example, to get all
-the contributor names for the "express" project, you can do this:
-npm view express contributors.email
-
You may also use numeric indices in square braces to specifically select
-an item in an array field. To just get the email address of the first
-contributor in the list, you can do this:
-npm view express contributors[0].email
-
Multiple fields may be specified, and will be printed one after another.
-For exampls, to get all the contributor names and email addresses, you
-can do this:
-npm view express contributors.name contributors.email
-
"Person" fields are shown as a string if they would be shown as an
-object. So, for example, this will show the list of npm contributors in
-the shortened string format. (See package.json(5)
for more on this.)
-npm view npm contributors
-
If a version range is provided, then data will be printed for every
-matching version of the package. This will show which version of jsdom
-was required by each matching version of yui3:
-npm view yui3@'>0.5.4' dependencies.jsdom
-
OUTPUT
-If only a single string field for a single version is output, then it
-will not be colorized or quoted, so as to enable piping the output to
-another command. If the field is an object, it will be output as a JavaScript object literal.
-If the --json flag is given, the outputted fields will be JSON.
-If the version range matches multiple versions, than each printed value
-will be prefixed with the version it applies to.
-If multiple fields are requested, than each of them are prefixed with
-the field name.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm-whoami.html b/deps/npm/html/partial/doc/cli/npm-whoami.html
deleted file mode 100644
index a0c0dd4cd82fa4..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm-whoami.html
+++ /dev/null
@@ -1,13 +0,0 @@
- Display npm username
-SYNOPSIS
-npm whoami
-
DESCRIPTION
-Print the username
config to standard output.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/cli/npm.html b/deps/npm/html/partial/doc/cli/npm.html
deleted file mode 100644
index 683606b8387b99..00000000000000
--- a/deps/npm/html/partial/doc/cli/npm.html
+++ /dev/null
@@ -1,134 +0,0 @@
- javascript package manager
-SYNOPSIS
-npm <command> [args]
-
VERSION
-2.13.3
-DESCRIPTION
-npm is the package manager for the Node JavaScript platform. It puts
-modules in place so that node can find them, and manages dependency
-conflicts intelligently.
-It is extremely configurable to support a wide variety of use cases.
-Most commonly, it is used to publish, discover, install, and develop node
-programs.
-Run npm help
to get a list of available commands.
-INTRODUCTION
-You probably got npm because you want to install stuff.
-Use npm install blerg
to install the latest version of "blerg". Check out
-npm-install(1)
for more info. It can do a lot of stuff.
-Use the npm search
command to show everything that's available.
-Use npm ls
to show everything you've installed.
-DEPENDENCIES
-If a package references to another package with a git URL, npm depends
-on a preinstalled git.
-If one of the packages npm tries to install is a native node module and
-requires compiling of C++ Code, npm will use
-node-gyp for that task.
-For a Unix system, node-gyp
-needs Python, make and a buildchain like GCC. On Windows,
-Python and Microsoft Visual Studio C++ is needed. Python 3 is
-not supported by node-gyp .
-For more information visit
-the node-gyp repository and
-the node-gyp Wiki .
-DIRECTORIES
-See npm-folders(5)
to learn about where npm puts stuff.
-In particular, npm has two modes of operation:
-
-global mode: npm installs packages into the install prefix at
-prefix/lib/node_modules
and bins are installed in prefix/bin
.
-local mode: npm installs packages into the current project directory, which
-defaults to the current working directory. Packages are installed to
-./node_modules
, and bins are installed to ./node_modules/.bin
.
-
-Local mode is the default. Use --global
or -g
on any command to
-operate in global mode instead.
-DEVELOPER USAGE
-If you're using npm to develop and publish your code, check out the
-following help topics:
-
-json:
-Make a package.json file. See package.json(5)
.
-link:
-For linking your current working code into Node's path, so that you
-don't have to reinstall every time you make a change. Use
-npm link
to do this.
-install:
-It's a good idea to install things if you don't need the symbolic link.
-Especially, installing other peoples code from the registry is done via
-npm install
-adduser:
-Create an account or log in. Credentials are stored in the
-user config file.
-publish:
-Use the npm publish
command to upload your code to the registry.
-
-CONFIGURATION
-npm is extremely configurable. It reads its configuration options from
-5 places.
-
-Command line switches: Set a config with --key val
. All keys take a value, even if they
-are booleans (the config parser doesn't know what the options are at
-the time of parsing.) If no value is provided, then the option is set
-to boolean true
.
-Environment Variables: Set any config by prefixing the name in an environment variable with
-npm_config_
. For example, export npm_config_key=val
.
-User Configs: The file at $HOME/.npmrc is an ini-formatted list of configs. If
-present, it is parsed. If the userconfig
option is set in the cli
-or env, then that will be used instead.
-Global Configs: The file found at ../etc/npmrc (from the node executable, by default
-this resolves to /usr/local/etc/npmrc) will be parsed if it is found.
-If the globalconfig
option is set in the cli, env, or user config,
-then that file is parsed instead.
-Defaults: npm's default configuration options are defined in
-lib/utils/config-defs.js. These must not be changed.
-
-See npm-config(7)
for much much more information.
-CONTRIBUTIONS
-Patches welcome!
-
-code:
-Read through npm-coding-style(7)
if you plan to submit code.
-You don't have to agree with it, but you do have to follow it.
-docs:
-If you find an error in the documentation, edit the appropriate markdown
-file in the "doc" folder. (Don't worry about generating the man page.)
-
-Contributors are listed in npm's package.json
file. You can view them
-easily by doing npm view npm contributors
.
-If you would like to contribute, but don't know what to work on, check
-the issues list or ask on the mailing list.
-
-BUGS
-When you find issues, please report them:
-
-Be sure to include all of the output from the npm command that didn't work
-as expected. The npm-debug.log
file is also helpful to provide.
-You can also look for isaacs in #node.js on irc://irc.freenode.net. He
-will no doubt tell you to put the output in a gist or email.
-AUTHOR
-Isaac Z. Schlueter ::
-isaacs ::
-@izs ::
-i@izs.me
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/files/npm-folders.html b/deps/npm/html/partial/doc/files/npm-folders.html
deleted file mode 100644
index 08ea7ed13aa9a7..00000000000000
--- a/deps/npm/html/partial/doc/files/npm-folders.html
+++ /dev/null
@@ -1,164 +0,0 @@
- Folder Structures Used by npm
-DESCRIPTION
-npm puts various things on your computer. That's its job.
-This document will tell you what it puts where.
-tl;dr
-
-Local install (default): puts stuff in ./node_modules
of the current
-package root.
-Global install (with -g
): puts stuff in /usr/local or wherever node
-is installed.
-Install it locally if you're going to require()
it.
-Install it globally if you're going to run it on the command line.
-If you need both, then install it in both places, or use npm link
.
-
-prefix Configuration
-The prefix
config defaults to the location where node is installed.
-On most systems, this is /usr/local
, and most of the time is the same
-as node's process.installPrefix
.
-On windows, this is the exact location of the node.exe binary. On Unix
-systems, it's one level up, since node is typically installed at
-{prefix}/bin/node
rather than {prefix}/node.exe
.
-When the global
flag is set, npm installs things into this prefix.
-When it is not set, it uses the root of the current package, or the
-current working directory if not in a package already.
-Node Modules
-Packages are dropped into the node_modules
folder under the prefix
.
-When installing locally, this means that you can
-require("packagename")
to load its main module, or
-require("packagename/lib/path/to/sub/module")
to load other modules.
-Global installs on Unix systems go to {prefix}/lib/node_modules
.
-Global installs on Windows go to {prefix}/node_modules
(that is, no
-lib
folder.)
-Scoped packages are installed the same way, except they are grouped together
-in a sub-folder of the relevant node_modules
folder with the name of that
-scope prefix by the @ symbol, e.g. npm install @myorg/package
would place
-the package in {prefix}/node_modules/@myorg/package
. See scopes(7)
for
-more details.
-If you wish to require()
a package, then install it locally.
-Executables
-When in global mode, executables are linked into {prefix}/bin
on Unix,
-or directly into {prefix}
on Windows.
-When in local mode, executables are linked into
-./node_modules/.bin
so that they can be made available to scripts run
-through npm. (For example, so that a test runner will be in the path
-when you run npm test
.)
-Man Pages
-When in global mode, man pages are linked into {prefix}/share/man
.
-When in local mode, man pages are not installed.
-Man pages are not installed on Windows systems.
-Cache
-See npm-cache(1)
. Cache files are stored in ~/.npm
on Posix, or
-~/npm-cache
on Windows.
-This is controlled by the cache
configuration param.
-Temp Files
-Temporary files are stored by default in the folder specified by the
-tmp
config, which defaults to the TMPDIR, TMP, or TEMP environment
-variables, or /tmp
on Unix and c:\windows\temp
on Windows.
-Temp files are given a unique folder under this root for each run of the
-program, and are deleted upon successful exit.
-
-When installing locally, npm first tries to find an appropriate
-prefix
folder. This is so that npm install foo@1.2.3
will install
-to the sensible root of your package, even if you happen to have cd
ed
-into some other folder.
-Starting at the $PWD, npm will walk up the folder tree checking for a
-folder that contains either a package.json
file, or a node_modules
-folder. If such a thing is found, then that is treated as the effective
-"current directory" for the purpose of running npm commands. (This
-behavior is inspired by and similar to git's .git-folder seeking
-logic when running git commands in a working dir.)
-If no package root is found, then the current folder is used.
-When you run npm install foo@1.2.3
, then the package is loaded into
-the cache, and then unpacked into ./node_modules/foo
. Then, any of
-foo's dependencies are similarly unpacked into
-./node_modules/foo/node_modules/...
.
-Any bin files are symlinked to ./node_modules/.bin/
, so that they may
-be found by npm scripts when necessary.
-Global Installation
-If the global
configuration is set to true, then npm will
-install packages "globally".
-For global installation, packages are installed roughly the same way,
-but using the folders described above.
-Cycles, Conflicts, and Folder Parsimony
-Cycles are handled using the property of node's module system that it
-walks up the directories looking for node_modules
folders. So, at every
-stage, if a package is already installed in an ancestor node_modules
-folder, then it is not installed at the current location.
-Consider the case above, where foo -> bar -> baz
. Imagine if, in
-addition to that, baz depended on bar, so you'd have:
-foo -> bar -> baz -> bar -> baz ...
. However, since the folder
-structure is: foo/node_modules/bar/node_modules/baz
, there's no need to
-put another copy of bar into .../baz/node_modules
, since when it calls
-require("bar"), it will get the copy that is installed in
-foo/node_modules/bar
.
-This shortcut is only used if the exact same
-version would be installed in multiple nested node_modules
folders. It
-is still possible to have a/node_modules/b/node_modules/a
if the two
-"a" packages are different versions. However, without repeating the
-exact same package multiple times, an infinite regress will always be
-prevented.
-Another optimization can be made by installing dependencies at the
-highest level possible, below the localized "target" folder.
-Example
-Consider this dependency graph:
-foo
-+-- blerg@1.2.5
-+-- bar@1.2.3
-| +-- blerg@1.x (latest=1.3.7)
-| +-- baz@2.x
-| | `-- quux@3.x
-| | `-- bar@1.2.3 (cycle)
-| `-- asdf@*
-`-- baz@1.2.3
- `-- quux@3.x
- `-- bar
-
In this case, we might expect a folder structure like this:
-foo
-+-- node_modules
- +-- blerg (1.2.5) <---[A]
- +-- bar (1.2.3) <---[B]
- | `-- node_modules
- | +-- baz (2.0.2) <---[C]
- | | `-- node_modules
- | | `-- quux (3.2.0)
- | `-- asdf (2.3.4)
- `-- baz (1.2.3) <---[D]
- `-- node_modules
- `-- quux (3.2.0) <---[E]
-
Since foo depends directly on bar@1.2.3
and baz@1.2.3
, those are
-installed in foo's node_modules
folder.
-Even though the latest copy of blerg is 1.3.7, foo has a specific
-dependency on version 1.2.5. So, that gets installed at [A]. Since the
-parent installation of blerg satisfies bar's dependency on blerg@1.x
,
-it does not install another copy under [B].
-Bar [B] also has dependencies on baz and asdf, so those are installed in
-bar's node_modules
folder. Because it depends on baz@2.x
, it cannot
-re-use the baz@1.2.3
installed in the parent node_modules
folder [D],
-and must install its own copy [C].
-Underneath bar, the baz -> quux -> bar
dependency creates a cycle.
-However, because bar is already in quux's ancestry [B], it does not
-unpack another copy of bar into that folder.
-Underneath foo -> baz
[D], quux's [E] folder tree is empty, because its
-dependency on bar is satisfied by the parent folder copy installed at [B].
-For a graphical breakdown of what is installed where, use npm ls
.
-Publishing
-Upon publishing, npm will look in the node_modules
folder. If any of
-the items there are not in the bundledDependencies
array, then they will
-not be included in the package tarball.
-This allows a package maintainer to install all of their dependencies
-(and dev dependencies) locally, but only re-publish those items that
-cannot be found elsewhere. See package.json(5)
for more information.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/files/npm-global.html b/deps/npm/html/partial/doc/files/npm-global.html
deleted file mode 100644
index 08ea7ed13aa9a7..00000000000000
--- a/deps/npm/html/partial/doc/files/npm-global.html
+++ /dev/null
@@ -1,164 +0,0 @@
- Folder Structures Used by npm
-DESCRIPTION
-npm puts various things on your computer. That's its job.
-This document will tell you what it puts where.
-tl;dr
-
-Local install (default): puts stuff in ./node_modules
of the current
-package root.
-Global install (with -g
): puts stuff in /usr/local or wherever node
-is installed.
-Install it locally if you're going to require()
it.
-Install it globally if you're going to run it on the command line.
-If you need both, then install it in both places, or use npm link
.
-
-prefix Configuration
-The prefix
config defaults to the location where node is installed.
-On most systems, this is /usr/local
, and most of the time is the same
-as node's process.installPrefix
.
-On windows, this is the exact location of the node.exe binary. On Unix
-systems, it's one level up, since node is typically installed at
-{prefix}/bin/node
rather than {prefix}/node.exe
.
-When the global
flag is set, npm installs things into this prefix.
-When it is not set, it uses the root of the current package, or the
-current working directory if not in a package already.
-Node Modules
-Packages are dropped into the node_modules
folder under the prefix
.
-When installing locally, this means that you can
-require("packagename")
to load its main module, or
-require("packagename/lib/path/to/sub/module")
to load other modules.
-Global installs on Unix systems go to {prefix}/lib/node_modules
.
-Global installs on Windows go to {prefix}/node_modules
(that is, no
-lib
folder.)
-Scoped packages are installed the same way, except they are grouped together
-in a sub-folder of the relevant node_modules
folder with the name of that
-scope prefix by the @ symbol, e.g. npm install @myorg/package
would place
-the package in {prefix}/node_modules/@myorg/package
. See scopes(7)
for
-more details.
-If you wish to require()
a package, then install it locally.
-Executables
-When in global mode, executables are linked into {prefix}/bin
on Unix,
-or directly into {prefix}
on Windows.
-When in local mode, executables are linked into
-./node_modules/.bin
so that they can be made available to scripts run
-through npm. (For example, so that a test runner will be in the path
-when you run npm test
.)
-Man Pages
-When in global mode, man pages are linked into {prefix}/share/man
.
-When in local mode, man pages are not installed.
-Man pages are not installed on Windows systems.
-Cache
-See npm-cache(1)
. Cache files are stored in ~/.npm
on Posix, or
-~/npm-cache
on Windows.
-This is controlled by the cache
configuration param.
-Temp Files
-Temporary files are stored by default in the folder specified by the
-tmp
config, which defaults to the TMPDIR, TMP, or TEMP environment
-variables, or /tmp
on Unix and c:\windows\temp
on Windows.
-Temp files are given a unique folder under this root for each run of the
-program, and are deleted upon successful exit.
-
-When installing locally, npm first tries to find an appropriate
-prefix
folder. This is so that npm install foo@1.2.3
will install
-to the sensible root of your package, even if you happen to have cd
ed
-into some other folder.
-Starting at the $PWD, npm will walk up the folder tree checking for a
-folder that contains either a package.json
file, or a node_modules
-folder. If such a thing is found, then that is treated as the effective
-"current directory" for the purpose of running npm commands. (This
-behavior is inspired by and similar to git's .git-folder seeking
-logic when running git commands in a working dir.)
-If no package root is found, then the current folder is used.
-When you run npm install foo@1.2.3
, then the package is loaded into
-the cache, and then unpacked into ./node_modules/foo
. Then, any of
-foo's dependencies are similarly unpacked into
-./node_modules/foo/node_modules/...
.
-Any bin files are symlinked to ./node_modules/.bin/
, so that they may
-be found by npm scripts when necessary.
-Global Installation
-If the global
configuration is set to true, then npm will
-install packages "globally".
-For global installation, packages are installed roughly the same way,
-but using the folders described above.
-Cycles, Conflicts, and Folder Parsimony
-Cycles are handled using the property of node's module system that it
-walks up the directories looking for node_modules
folders. So, at every
-stage, if a package is already installed in an ancestor node_modules
-folder, then it is not installed at the current location.
-Consider the case above, where foo -> bar -> baz
. Imagine if, in
-addition to that, baz depended on bar, so you'd have:
-foo -> bar -> baz -> bar -> baz ...
. However, since the folder
-structure is: foo/node_modules/bar/node_modules/baz
, there's no need to
-put another copy of bar into .../baz/node_modules
, since when it calls
-require("bar"), it will get the copy that is installed in
-foo/node_modules/bar
.
-This shortcut is only used if the exact same
-version would be installed in multiple nested node_modules
folders. It
-is still possible to have a/node_modules/b/node_modules/a
if the two
-"a" packages are different versions. However, without repeating the
-exact same package multiple times, an infinite regress will always be
-prevented.
-Another optimization can be made by installing dependencies at the
-highest level possible, below the localized "target" folder.
-Example
-Consider this dependency graph:
-foo
-+-- blerg@1.2.5
-+-- bar@1.2.3
-| +-- blerg@1.x (latest=1.3.7)
-| +-- baz@2.x
-| | `-- quux@3.x
-| | `-- bar@1.2.3 (cycle)
-| `-- asdf@*
-`-- baz@1.2.3
- `-- quux@3.x
- `-- bar
-
In this case, we might expect a folder structure like this:
-foo
-+-- node_modules
- +-- blerg (1.2.5) <---[A]
- +-- bar (1.2.3) <---[B]
- | `-- node_modules
- | +-- baz (2.0.2) <---[C]
- | | `-- node_modules
- | | `-- quux (3.2.0)
- | `-- asdf (2.3.4)
- `-- baz (1.2.3) <---[D]
- `-- node_modules
- `-- quux (3.2.0) <---[E]
-
Since foo depends directly on bar@1.2.3
and baz@1.2.3
, those are
-installed in foo's node_modules
folder.
-Even though the latest copy of blerg is 1.3.7, foo has a specific
-dependency on version 1.2.5. So, that gets installed at [A]. Since the
-parent installation of blerg satisfies bar's dependency on blerg@1.x
,
-it does not install another copy under [B].
-Bar [B] also has dependencies on baz and asdf, so those are installed in
-bar's node_modules
folder. Because it depends on baz@2.x
, it cannot
-re-use the baz@1.2.3
installed in the parent node_modules
folder [D],
-and must install its own copy [C].
-Underneath bar, the baz -> quux -> bar
dependency creates a cycle.
-However, because bar is already in quux's ancestry [B], it does not
-unpack another copy of bar into that folder.
-Underneath foo -> baz
[D], quux's [E] folder tree is empty, because its
-dependency on bar is satisfied by the parent folder copy installed at [B].
-For a graphical breakdown of what is installed where, use npm ls
.
-Publishing
-Upon publishing, npm will look in the node_modules
folder. If any of
-the items there are not in the bundledDependencies
array, then they will
-not be included in the package tarball.
-This allows a package maintainer to install all of their dependencies
-(and dev dependencies) locally, but only re-publish those items that
-cannot be found elsewhere. See package.json(5)
for more information.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/files/npm-json.html b/deps/npm/html/partial/doc/files/npm-json.html
deleted file mode 100644
index b2e54ba742ed95..00000000000000
--- a/deps/npm/html/partial/doc/files/npm-json.html
+++ /dev/null
@@ -1,545 +0,0 @@
- Specifics of npm's package.json handling
-DESCRIPTION
-This document is all you need to know about what's required in your package.json
-file. It must be actual JSON, not just a JavaScript object literal.
-A lot of the behavior described in this document is affected by the config
-settings described in npm-config(7)
.
-name
-The most important things in your package.json are the name and version fields.
-Those are actually required, and your package won't install without
-them. The name and version together form an identifier that is assumed
-to be completely unique. Changes to the package should come along with
-changes to the version.
-The name is what your thing is called.
-Some rules:
-
-The name must be shorter than 214 characters. This includes the scope for
-scoped packages.
-The name can't start with a dot or an underscore.
-New packages must not have uppercase letters in the name.
-The name ends up being part of a URL, an argument on the command line, and a
-folder name. Therefore, the name can't contain any non-URL-safe characters.
-
-Some tips:
-
-Don't use the same name as a core Node module.
-Don't put "js" or "node" in the name. It's assumed that it's js, since you're
-writing a package.json file, and you can specify the engine using the "engines"
-field. (See below.)
-The name will probably be passed as an argument to require(), so it should
-be something short, but also reasonably descriptive.
-You may want to check the npm registry to see if there's something by that name
-already, before you get too attached to it. https://www.npmjs.com/
-
-A name can be optionally prefixed by a scope, e.g. @myorg/mypackage
. See
-npm-scope(7)
for more detail.
-version
-The most important things in your package.json are the name and version fields.
-Those are actually required, and your package won't install without
-them. The name and version together form an identifier that is assumed
-to be completely unique. Changes to the package should come along with
-changes to the version.
-Version must be parseable by
-node-semver , which is bundled
-with npm as a dependency. (npm install semver
to use it yourself.)
-More on version numbers and ranges at semver(7) .
-description
-Put a description in it. It's a string. This helps people discover your
-package, as it's listed in npm search
.
-keywords
-Put keywords in it. It's an array of strings. This helps people
-discover your package as it's listed in npm search
.
-homepage
-The url to the project homepage.
-NOTE : This is not the same as "url". If you put a "url" field,
-then the registry will think it's a redirection to your package that has
-been published somewhere else, and spit at you.
-Literally. Spit. I'm so not kidding.
-bugs
-The url to your project's issue tracker and / or the email address to which
-issues should be reported. These are helpful for people who encounter issues
-with your package.
-It should look like this:
-{ "url" : "https://github.com/owner/project/issues"
-, "email" : "project@hostname.com"
-}
-
You can specify either one or both values. If you want to provide only a url,
-you can specify the value for "bugs" as a simple string instead of an object.
-If a url is provided, it will be used by the npm bugs
command.
-license
-You should specify a license for your package so that people know how they are
-permitted to use it, and any restrictions you're placing on it.
-If you're using a common license such as BSD-2-Clause or MIT, add a
-current SPDX license identifier for the license you're using, like this:
-{ "license" : "BSD-3-Clause" }
-
You can check the full list of SPDX license IDs .
-Ideally you should pick one that is
-OSI approved.
-If your package is licensed under multiple common licenses, use an SPDX license
-expression syntax version 2.0 string , like this:
-{ "license" : "(ISC OR GPL-3.0)" }
-
If you are using a license that hasn't been assigned an SPDX identifier, or if
-you are using a custom license, use the following valid SPDX expression:
-{ "license" : "SEE LICENSE IN <filename>" }
-
Then include a file named <filename>
at the top level of the package.
-Some old packages used license objects or a "licenses" property containing an
-array of license objects:
-// Not valid metadata
-{ "license" :
- { "type" : "ISC"
- , "url" : "http://opensource.org/licenses/ISC"
- }
-}
-
-// Not valid metadata
-{ "licenses" :
- [
- { "type": "MIT"
- , "url": "http://www.opensource.org/licenses/mit-license.php"
- }
- , { "type": "Apache-2.0"
- , "url": "http://opensource.org/licenses/apache2.0.php"
- }
- ]
-}
-
Those styles are now deprecated. Instead, use SPDX expressions, like this:
-{ "license": "ISC" }
-
-{ "license": "(MIT OR Apache-2.0)" }
-
Finally, if you do not wish to grant others the right to use a private or
-unpublished package under any terms:
-{ "license": "UNLICENSED"}
-
Consider also setting "private": true
to prevent accidental publication.
-people fields: author, contributors
-The "author" is one person. "contributors" is an array of people. A "person"
-is an object with a "name" field and optionally "url" and "email", like this:
-{ "name" : "Barney Rubble"
-, "email" : "b@rubble.com"
-, "url" : "http://barnyrubble.tumblr.com/"
-}
-
Or you can shorten that all into a single string, and npm will parse it for you:
-"Barney Rubble <b@rubble.com> (http://barnyrubble.tumblr.com/)"
-
Both email and url are optional either way.
-npm also sets a top-level "maintainers" field with your npm user info.
-files
-The "files" field is an array of files to include in your project. If
-you name a folder in the array, then it will also include the files
-inside that folder. (Unless they would be ignored by another rule.)
-You can also provide a ".npmignore" file in the root of your package,
-which will keep files from being included, even if they would be picked
-up by the files array. The ".npmignore" file works just like a
-".gitignore".
-Certain files are always included, regardless of settings:
-
-package.json
-README
(and its variants)
-CHANGELOG
(and its variants)
-LICENSE
/ LICENCE
-
-Conversely, some files are always ignored:
-
-.git
-CVS
-.svn
-.hg
-.lock-wscript
-.wafpickle-N
-*.swp
-.DS_Store
-._*
-npm-debug.log
-
-main
-The main field is a module ID that is the primary entry point to your program.
-That is, if your package is named foo
, and a user installs it, and then does
-require("foo")
, then your main module's exports object will be returned.
-This should be a module ID relative to the root of your package folder.
-For most modules, it makes the most sense to have a main script and often not
-much else.
-bin
-A lot of packages have one or more executable files that they'd like to
-install into the PATH. npm makes this pretty easy (in fact, it uses this
-feature to install the "npm" executable.)
-To use this, supply a bin
field in your package.json which is a map of
-command name to local file name. On install, npm will symlink that file into
-prefix/bin
for global installs, or ./node_modules/.bin/
for local
-installs.
-For example, myapp could have this:
-{ "bin" : { "myapp" : "./cli.js" } }
-
So, when you install myapp, it'll create a symlink from the cli.js
script to
-/usr/local/bin/myapp
.
-If you have a single executable, and its name should be the name
-of the package, then you can just supply it as a string. For example:
-{ "name": "my-program"
-, "version": "1.2.5"
-, "bin": "./path/to/program" }
-
would be the same as this:
-{ "name": "my-program"
-, "version": "1.2.5"
-, "bin" : { "my-program" : "./path/to/program" } }
-
man
-Specify either a single file or an array of filenames to put in place for the
-man
program to find.
-If only a single file is provided, then it's installed such that it is the
-result from man <pkgname>
, regardless of its actual filename. For example:
-{ "name" : "foo"
-, "version" : "1.2.3"
-, "description" : "A packaged foo fooer for fooing foos"
-, "main" : "foo.js"
-, "man" : "./man/doc.1"
-}
-
would link the ./man/doc.1
file in such that it is the target for man foo
-If the filename doesn't start with the package name, then it's prefixed.
-So, this:
-{ "name" : "foo"
-, "version" : "1.2.3"
-, "description" : "A packaged foo fooer for fooing foos"
-, "main" : "foo.js"
-, "man" : [ "./man/foo.1", "./man/bar.1" ]
-}
-
will create files to do man foo
and man foo-bar
.
-Man files must end with a number, and optionally a .gz
suffix if they are
-compressed. The number dictates which man section the file is installed into.
-{ "name" : "foo"
-, "version" : "1.2.3"
-, "description" : "A packaged foo fooer for fooing foos"
-, "main" : "foo.js"
-, "man" : [ "./man/foo.1", "./man/foo.2" ]
-}
-
will create entries for man foo
and man 2 foo
-directories
-The CommonJS Packages spec details a
-few ways that you can indicate the structure of your package using a directories
-object. If you look at npm's package.json ,
-you'll see that it has directories for doc, lib, and man.
-In the future, this information may be used in other creative ways.
-directories.lib
-Tell people where the bulk of your library is. Nothing special is done
-with the lib folder in any way, but it's useful meta info.
-directories.bin
-If you specify a bin
directory in directories.bin
, all the files in
-that folder will be added.
-Because of the way the bin
directive works, specifying both a
-bin
path and setting directories.bin
is an error. If you want to
-specify individual files, use bin
, and for all the files in an
-existing bin
directory, use directories.bin
.
-directories.man
-A folder that is full of man pages. Sugar to generate a "man" array by
-walking the folder.
-directories.doc
-Put markdown files in here. Eventually, these will be displayed nicely,
-maybe, someday.
-directories.example
-Put example scripts in here. Someday, it might be exposed in some clever way.
-repository
-Specify the place where your code lives. This is helpful for people who
-want to contribute. If the git repo is on GitHub, then the npm docs
-command will be able to find you.
-Do it like this:
-"repository" :
- { "type" : "git"
- , "url" : "https://github.com/npm/npm.git"
- }
-
-"repository" :
- { "type" : "svn"
- , "url" : "https://v8.googlecode.com/svn/trunk/"
- }
-
The URL should be a publicly available (perhaps read-only) url that can be handed
-directly to a VCS program without any modification. It should not be a url to an
-html project page that you put in your browser. It's for computers.
-For GitHub, GitHub gist, Bitbucket, or GitLab repositories you can use the same
-shortcut syntax you use for npm install
:
-"repository": "npm/npm"
-
-"repository": "gist:11081aaa281"
-
-"repository": "bitbucket:example/repo"
-
-"repository": "gitlab:another/repo"
-
scripts
-The "scripts" 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.
-See npm-scripts(7)
to find out more about writing package scripts.
-config
-A "config" object can be used to set configuration parameters used in package
-scripts that persist across upgrades. For instance, if a package had the
-following:
-{ "name" : "foo"
-, "config" : { "port" : "8080" } }
-
and then had a "start" command that then referenced the
-npm_package_config_port
environment variable, then the user could
-override that by doing npm config set foo:port 8001
.
-See npm-config(7)
and npm-scripts(7)
for more on package
-configs.
-dependencies
-Dependencies are specified in a simple object that maps a package name to a
-version range. The version range is a string which has one or more
-space-separated descriptors. Dependencies can also be identified with a
-tarball or git URL.
-Please do not put test harnesses or transpilers in your
-dependencies
object. See devDependencies
, below.
-See semver(7) for more details about specifying version ranges.
-
-version
Must match version
exactly
->version
Must be greater than version
->=version
etc
-<version
-<=version
-~version
"Approximately equivalent to version" See semver(7)
-^version
"Compatible with version" See semver(7)
-1.2.x
1.2.0, 1.2.1, etc., but not 1.3.0
-http://...
See 'URLs as Dependencies' below
-*
Matches any version
-""
(just an empty string) Same as *
-version1 - version2
Same as >=version1 <=version2
.
-range1 || range2
Passes if either range1 or range2 are satisfied.
-git...
See 'Git URLs as Dependencies' below
-user/repo
See 'GitHub URLs' below
-tag
A specific version tagged and published as tag
See npm-tag(1)
-path/path/path
See Local Paths below
-
-For example, these are all valid:
-{ "dependencies" :
- { "foo" : "1.0.0 - 2.9999.9999"
- , "bar" : ">=1.0.2 <2.1.2"
- , "baz" : ">1.0.2 <=2.3.4"
- , "boo" : "2.0.1"
- , "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"
- , "asd" : "http://asdf.com/asdf.tar.gz"
- , "til" : "~1.2"
- , "elf" : "~1.2.3"
- , "two" : "2.x"
- , "thr" : "3.3.x"
- , "lat" : "latest"
- , "dyl" : "file:../dyl"
- }
-}
-
URLs as Dependencies
-You may specify a tarball URL in place of a version range.
-This tarball will be downloaded and installed locally to your package at
-install time.
-Git URLs as Dependencies
-Git urls can be of the form:
-git://github.com/user/project.git#commit-ish
-git+ssh://user@hostname:project.git#commit-ish
-git+ssh://user@hostname/project.git#commit-ish
-git+http://user@hostname/project/blah.git#commit-ish
-git+https://user@hostname/project/blah.git#commit-ish
-
The commit-ish
can be any tag, sha, or branch which can be supplied as
-an argument to git checkout
. The default is master
.
-GitHub URLs
-As of version 1.1.65, you can refer to GitHub urls as just "foo":
-"user/foo-project". Just as with git URLs, a commit-ish
suffix can be
-included. For example:
-{
- "name": "foo",
- "version": "0.0.0",
- "dependencies": {
- "express": "visionmedia/express",
- "mocha": "visionmedia/mocha#4727d357ea"
- }
-}
-
Local Paths
-As of version 2.0.0 you can provide a path to a local directory that contains a
-package. Local paths can be saved using npm install --save
, using any of
-these forms:
-../foo/bar
-~/foo/bar
-./foo/bar
-/foo/bar
-
in which case they will be normalized to a relative path and added to your
-package.json
. For example:
-{
- "name": "baz",
- "dependencies": {
- "bar": "file:../foo/bar"
- }
-}
-
This feature is helpful for local offline development and creating
-tests that require npm installing where you don't want to hit an
-external server, but should not be used when publishing packages
-to the public registry.
-devDependencies
-If someone is planning on downloading and using your module in their
-program, then they probably don't want or need to download and build
-the external test or documentation framework that you use.
-In this case, it's best to map these additional items in a devDependencies
-object.
-These things will be installed when doing npm link
or npm install
-from the root of a package, and can be managed like any other npm
-configuration param. See npm-config(7)
for more on the topic.
-For build steps that are not platform-specific, such as compiling
-CoffeeScript or other languages to JavaScript, use the prepublish
-script to do this, and make the required package a devDependency.
-For example:
-{ "name": "ethopia-waza",
- "description": "a delightfully fruity coffee varietal",
- "version": "1.2.3",
- "devDependencies": {
- "coffee-script": "~1.6.3"
- },
- "scripts": {
- "prepublish": "coffee -o lib/ -c src/waza.coffee"
- },
- "main": "lib/waza.js"
-}
-
The prepublish
script will be run before publishing, so that users
-can consume the functionality without requiring them to compile it
-themselves. In dev mode (ie, locally running npm install
), it'll
-run this script as well, so that you can test it easily.
-peerDependencies
-In some cases, you want to express the compatibility of your package with a
-host tool or library, while not necessarily doing a require
of this host.
-This is usually referred to as a plugin . Notably, your module may be exposing
-a specific interface, expected and specified by the host documentation.
-For example:
-{
- "name": "tea-latte",
- "version": "1.3.5",
- "peerDependencies": {
- "tea": "2.x"
- }
-}
-
This ensures your package tea-latte
can be installed along with the second
-major version of the host package tea
only. npm install tea-latte
could
-possibly yield the following dependency graph:
-├── tea-latte@1.3.5
-└── tea@2.2.0
-
NOTE: npm versions 1 and 2 will automatically install peerDependencies
if
-they are not explicitly depended upon higher in the dependency tree. In the
-next major version of npm (npm@3), this will no longer be the case. You will
-receive a warning that the peerDependency is not installed instead. The
-behavior in npms 1 & 2 was frequently confusing and could easily put you into
-dependency hell, a situation that npm is designed to avoid as much as possible.
-Trying to install another plugin with a conflicting requirement will cause an
-error. For this reason, make sure your plugin requirement is as broad as
-possible, and not to lock it down to specific patch versions.
-Assuming the host complies with semver , only changes in
-the host package's major version will break your plugin. Thus, if you've worked
-with every 1.x version of the host package, use "^1.0"
or "1.x"
to express
-this. If you depend on features introduced in 1.5.2, use ">= 1.5.2 < 2"
.
-bundledDependencies
-Array of package names that will be bundled when publishing the package.
-If this is spelled "bundleDependencies"
, then that is also honorable.
-optionalDependencies
-If a dependency can be used, but you would like npm to proceed if it cannot be
-found or fails to install, then you may put it in the optionalDependencies
-object. This is a map of package name to version or url, just like the
-dependencies
object. The difference is that build failures do not cause
-installation to fail.
-It is still your program's responsibility to handle the lack of the
-dependency. For example, something like this:
-try {
- var foo = require('foo')
- var fooVersion = require('foo/package.json').version
-} catch (er) {
- foo = null
-}
-if ( notGoodFooVersion(fooVersion) ) {
- foo = null
-}
-
-// .. then later in your program ..
-
-if (foo) {
- foo.doFooThings()
-}
-
Entries in optionalDependencies
will override entries of the same name in
-dependencies
, so it's usually best to only put in one place.
-engines
-You can specify the version of node that your stuff works on:
-{ "engines" : { "node" : ">=0.10.3 <0.12" } }
-
And, like with dependencies, if you don't specify the version (or if you
-specify "*" as the version), then any version of node will do.
-If you specify an "engines" field, then npm will require that "node" be
-somewhere on that list. If "engines" is omitted, then npm will just assume
-that it works on node.
-You can also use the "engines" field to specify which versions of npm
-are capable of properly installing your program. For example:
-{ "engines" : { "npm" : "~1.0.20" } }
-
Note that, unless the user has set the engine-strict
config flag, this
-field is advisory only.
-engineStrict
-NOTE: This feature is deprecated and will be removed in npm 3.0.0.
-If you are sure that your module will definitely not run properly on
-versions of Node/npm other than those specified in the engines
object,
-then you can set "engineStrict": true
in your package.json file.
-This will override the user's engine-strict
config setting.
-Please do not do this unless you are really very very sure. If your
-engines object is something overly restrictive, you can quite easily and
-inadvertently lock yourself into obscurity and prevent your users from
-updating to new versions of Node. Consider this choice carefully.
-os
-You can specify which operating systems your
-module will run on:
-"os" : [ "darwin", "linux" ]
-
You can also blacklist instead of whitelist operating systems,
-just prepend the blacklisted os with a '!':
-"os" : [ "!win32" ]
-
The host operating system is determined by process.platform
-It is allowed to both blacklist, and whitelist, although there isn't any
-good reason to do this.
-cpu
-If your code only runs on certain cpu architectures,
-you can specify which ones.
-"cpu" : [ "x64", "ia32" ]
-
Like the os
option, you can also blacklist architectures:
-"cpu" : [ "!arm", "!mips" ]
-
The host architecture is determined by process.arch
-preferGlobal
-If your package is primarily a command-line application that should be
-installed globally, then set this value to true
to provide a warning
-if it is installed locally.
-It doesn't actually prevent users from installing it locally, but it
-does help prevent some confusion if it doesn't work as expected.
-private
-If you set "private": true
in your package.json, then npm will refuse
-to publish it.
-This is a way to prevent accidental publication of private repositories. If
-you would like to ensure that a given package is only ever published to a
-specific registry (for example, an internal registry), then use the
-publishConfig
dictionary described below to override the registry
config
-param at publish-time.
-publishConfig
-This is a set of config values that will be used at publish-time. It's
-especially handy if you want to set the tag, registry or access, so that
-you can ensure that a given package is not tagged with "latest", published
-to the global public registry or that a scoped module is private by default.
-Any config values can be overridden, but of course only "tag", "registry" and
-"access" probably matter for the purposes of publishing.
-See npm-config(7)
to see the list of config options that can be
-overridden.
-DEFAULT VALUES
-npm will default some values based on package contents.
-
-"scripts": {"start": "node server.js"}
-If there is a server.js
file in the root of your package, then npm
-will default the start
command to node server.js
.
-
-"scripts":{"preinstall": "node-gyp rebuild"}
-If there is a binding.gyp
file in the root of your package, npm will
-default the preinstall
command to compile using node-gyp.
-
-"contributors": [...]
-If there is an AUTHORS
file in the root of your package, npm will
-treat each line as a Name <email> (url)
format, where email and url
-are optional. Lines which start with a #
or are blank, will be
-ignored.
-
-
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/files/npmrc.html b/deps/npm/html/partial/doc/files/npmrc.html
deleted file mode 100644
index ed1eb0295fa5e3..00000000000000
--- a/deps/npm/html/partial/doc/files/npmrc.html
+++ /dev/null
@@ -1,63 +0,0 @@
- The npm config files
-DESCRIPTION
-npm gets its config settings from the command line, environment
-variables, and npmrc
files.
-The npm config
command can be used to update and edit the contents
-of the user and global npmrc files.
-For a list of available configuration options, see npm-config(7) .
-FILES
-The four relevant files are:
-
-per-project config file (/path/to/my/project/.npmrc)
-per-user config file (~/.npmrc)
-global config file ($PREFIX/etc/npmrc)
-npm builtin config file (/path/to/npm/npmrc)
-
-All npm config files are an ini-formatted list of key = value
-parameters. Environment variables can be replaced using
-${VARIABLE_NAME}
. For example:
-prefix = ${HOME}/.npm-packages
-
Each of these files is loaded, and config options are resolved in
-priority order. For example, a setting in the userconfig file would
-override the setting in the globalconfig file.
-Array values are specified by adding "[]" after the key name. For
-example:
-key[] = "first value"
-key[] = "second value"
-
NOTE: Because local (per-project or per-user) .npmrc
files can contain
-sensitive credentials, they must be readable and writable only by your user
-account (i.e. must have a mode of 0600
), otherwise they will be ignored by
-npm!
-Per-project config file
-When working locally in a project, a .npmrc
file in the root of the
-project (ie, a sibling of node_modules
and package.json
) will set
-config values specific to this project.
-Note that this only applies to the root of the project that you're
-running npm in. It has no effect when your module is published. For
-example, you can't publish a module that forces itself to install
-globally, or in a different location.
-Additionally, this file is not read in global mode, such as when running
-npm install -g
.
-Per-user config file
-$HOME/.npmrc
(or the userconfig
param, if set in the environment
-or on the command line)
-Global config file
-$PREFIX/etc/npmrc
(or the globalconfig
param, if set above):
-This file is an ini-file formatted list of key = value
parameters.
-Environment variables can be replaced as above.
-Built-in config file
-path/to/npm/itself/npmrc
-This is an unchangeable "builtin" configuration file that npm keeps
-consistent across updates. Set fields in here using the ./configure
-script that comes with npm. This is primarily for distribution
-maintainers to override default configs in a standard and consistent
-manner.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/files/package.json.html b/deps/npm/html/partial/doc/files/package.json.html
deleted file mode 100644
index b2e54ba742ed95..00000000000000
--- a/deps/npm/html/partial/doc/files/package.json.html
+++ /dev/null
@@ -1,545 +0,0 @@
- Specifics of npm's package.json handling
-DESCRIPTION
-This document is all you need to know about what's required in your package.json
-file. It must be actual JSON, not just a JavaScript object literal.
-A lot of the behavior described in this document is affected by the config
-settings described in npm-config(7)
.
-name
-The most important things in your package.json are the name and version fields.
-Those are actually required, and your package won't install without
-them. The name and version together form an identifier that is assumed
-to be completely unique. Changes to the package should come along with
-changes to the version.
-The name is what your thing is called.
-Some rules:
-
-The name must be shorter than 214 characters. This includes the scope for
-scoped packages.
-The name can't start with a dot or an underscore.
-New packages must not have uppercase letters in the name.
-The name ends up being part of a URL, an argument on the command line, and a
-folder name. Therefore, the name can't contain any non-URL-safe characters.
-
-Some tips:
-
-Don't use the same name as a core Node module.
-Don't put "js" or "node" in the name. It's assumed that it's js, since you're
-writing a package.json file, and you can specify the engine using the "engines"
-field. (See below.)
-The name will probably be passed as an argument to require(), so it should
-be something short, but also reasonably descriptive.
-You may want to check the npm registry to see if there's something by that name
-already, before you get too attached to it. https://www.npmjs.com/
-
-A name can be optionally prefixed by a scope, e.g. @myorg/mypackage
. See
-npm-scope(7)
for more detail.
-version
-The most important things in your package.json are the name and version fields.
-Those are actually required, and your package won't install without
-them. The name and version together form an identifier that is assumed
-to be completely unique. Changes to the package should come along with
-changes to the version.
-Version must be parseable by
-node-semver , which is bundled
-with npm as a dependency. (npm install semver
to use it yourself.)
-More on version numbers and ranges at semver(7) .
-description
-Put a description in it. It's a string. This helps people discover your
-package, as it's listed in npm search
.
-keywords
-Put keywords in it. It's an array of strings. This helps people
-discover your package as it's listed in npm search
.
-homepage
-The url to the project homepage.
-NOTE : This is not the same as "url". If you put a "url" field,
-then the registry will think it's a redirection to your package that has
-been published somewhere else, and spit at you.
-Literally. Spit. I'm so not kidding.
-bugs
-The url to your project's issue tracker and / or the email address to which
-issues should be reported. These are helpful for people who encounter issues
-with your package.
-It should look like this:
-{ "url" : "https://github.com/owner/project/issues"
-, "email" : "project@hostname.com"
-}
-
You can specify either one or both values. If you want to provide only a url,
-you can specify the value for "bugs" as a simple string instead of an object.
-If a url is provided, it will be used by the npm bugs
command.
-license
-You should specify a license for your package so that people know how they are
-permitted to use it, and any restrictions you're placing on it.
-If you're using a common license such as BSD-2-Clause or MIT, add a
-current SPDX license identifier for the license you're using, like this:
-{ "license" : "BSD-3-Clause" }
-
You can check the full list of SPDX license IDs .
-Ideally you should pick one that is
-OSI approved.
-If your package is licensed under multiple common licenses, use an SPDX license
-expression syntax version 2.0 string , like this:
-{ "license" : "(ISC OR GPL-3.0)" }
-
If you are using a license that hasn't been assigned an SPDX identifier, or if
-you are using a custom license, use the following valid SPDX expression:
-{ "license" : "SEE LICENSE IN <filename>" }
-
Then include a file named <filename>
at the top level of the package.
-Some old packages used license objects or a "licenses" property containing an
-array of license objects:
-// Not valid metadata
-{ "license" :
- { "type" : "ISC"
- , "url" : "http://opensource.org/licenses/ISC"
- }
-}
-
-// Not valid metadata
-{ "licenses" :
- [
- { "type": "MIT"
- , "url": "http://www.opensource.org/licenses/mit-license.php"
- }
- , { "type": "Apache-2.0"
- , "url": "http://opensource.org/licenses/apache2.0.php"
- }
- ]
-}
-
Those styles are now deprecated. Instead, use SPDX expressions, like this:
-{ "license": "ISC" }
-
-{ "license": "(MIT OR Apache-2.0)" }
-
Finally, if you do not wish to grant others the right to use a private or
-unpublished package under any terms:
-{ "license": "UNLICENSED"}
-
Consider also setting "private": true
to prevent accidental publication.
-people fields: author, contributors
-The "author" is one person. "contributors" is an array of people. A "person"
-is an object with a "name" field and optionally "url" and "email", like this:
-{ "name" : "Barney Rubble"
-, "email" : "b@rubble.com"
-, "url" : "http://barnyrubble.tumblr.com/"
-}
-
Or you can shorten that all into a single string, and npm will parse it for you:
-"Barney Rubble <b@rubble.com> (http://barnyrubble.tumblr.com/)"
-
Both email and url are optional either way.
-npm also sets a top-level "maintainers" field with your npm user info.
-files
-The "files" field is an array of files to include in your project. If
-you name a folder in the array, then it will also include the files
-inside that folder. (Unless they would be ignored by another rule.)
-You can also provide a ".npmignore" file in the root of your package,
-which will keep files from being included, even if they would be picked
-up by the files array. The ".npmignore" file works just like a
-".gitignore".
-Certain files are always included, regardless of settings:
-
-package.json
-README
(and its variants)
-CHANGELOG
(and its variants)
-LICENSE
/ LICENCE
-
-Conversely, some files are always ignored:
-
-.git
-CVS
-.svn
-.hg
-.lock-wscript
-.wafpickle-N
-*.swp
-.DS_Store
-._*
-npm-debug.log
-
-main
-The main field is a module ID that is the primary entry point to your program.
-That is, if your package is named foo
, and a user installs it, and then does
-require("foo")
, then your main module's exports object will be returned.
-This should be a module ID relative to the root of your package folder.
-For most modules, it makes the most sense to have a main script and often not
-much else.
-bin
-A lot of packages have one or more executable files that they'd like to
-install into the PATH. npm makes this pretty easy (in fact, it uses this
-feature to install the "npm" executable.)
-To use this, supply a bin
field in your package.json which is a map of
-command name to local file name. On install, npm will symlink that file into
-prefix/bin
for global installs, or ./node_modules/.bin/
for local
-installs.
-For example, myapp could have this:
-{ "bin" : { "myapp" : "./cli.js" } }
-
So, when you install myapp, it'll create a symlink from the cli.js
script to
-/usr/local/bin/myapp
.
-If you have a single executable, and its name should be the name
-of the package, then you can just supply it as a string. For example:
-{ "name": "my-program"
-, "version": "1.2.5"
-, "bin": "./path/to/program" }
-
would be the same as this:
-{ "name": "my-program"
-, "version": "1.2.5"
-, "bin" : { "my-program" : "./path/to/program" } }
-
man
-Specify either a single file or an array of filenames to put in place for the
-man
program to find.
-If only a single file is provided, then it's installed such that it is the
-result from man <pkgname>
, regardless of its actual filename. For example:
-{ "name" : "foo"
-, "version" : "1.2.3"
-, "description" : "A packaged foo fooer for fooing foos"
-, "main" : "foo.js"
-, "man" : "./man/doc.1"
-}
-
would link the ./man/doc.1
file in such that it is the target for man foo
-If the filename doesn't start with the package name, then it's prefixed.
-So, this:
-{ "name" : "foo"
-, "version" : "1.2.3"
-, "description" : "A packaged foo fooer for fooing foos"
-, "main" : "foo.js"
-, "man" : [ "./man/foo.1", "./man/bar.1" ]
-}
-
will create files to do man foo
and man foo-bar
.
-Man files must end with a number, and optionally a .gz
suffix if they are
-compressed. The number dictates which man section the file is installed into.
-{ "name" : "foo"
-, "version" : "1.2.3"
-, "description" : "A packaged foo fooer for fooing foos"
-, "main" : "foo.js"
-, "man" : [ "./man/foo.1", "./man/foo.2" ]
-}
-
will create entries for man foo
and man 2 foo
-directories
-The CommonJS Packages spec details a
-few ways that you can indicate the structure of your package using a directories
-object. If you look at npm's package.json ,
-you'll see that it has directories for doc, lib, and man.
-In the future, this information may be used in other creative ways.
-directories.lib
-Tell people where the bulk of your library is. Nothing special is done
-with the lib folder in any way, but it's useful meta info.
-directories.bin
-If you specify a bin
directory in directories.bin
, all the files in
-that folder will be added.
-Because of the way the bin
directive works, specifying both a
-bin
path and setting directories.bin
is an error. If you want to
-specify individual files, use bin
, and for all the files in an
-existing bin
directory, use directories.bin
.
-directories.man
-A folder that is full of man pages. Sugar to generate a "man" array by
-walking the folder.
-directories.doc
-Put markdown files in here. Eventually, these will be displayed nicely,
-maybe, someday.
-directories.example
-Put example scripts in here. Someday, it might be exposed in some clever way.
-repository
-Specify the place where your code lives. This is helpful for people who
-want to contribute. If the git repo is on GitHub, then the npm docs
-command will be able to find you.
-Do it like this:
-"repository" :
- { "type" : "git"
- , "url" : "https://github.com/npm/npm.git"
- }
-
-"repository" :
- { "type" : "svn"
- , "url" : "https://v8.googlecode.com/svn/trunk/"
- }
-
The URL should be a publicly available (perhaps read-only) url that can be handed
-directly to a VCS program without any modification. It should not be a url to an
-html project page that you put in your browser. It's for computers.
-For GitHub, GitHub gist, Bitbucket, or GitLab repositories you can use the same
-shortcut syntax you use for npm install
:
-"repository": "npm/npm"
-
-"repository": "gist:11081aaa281"
-
-"repository": "bitbucket:example/repo"
-
-"repository": "gitlab:another/repo"
-
scripts
-The "scripts" 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.
-See npm-scripts(7)
to find out more about writing package scripts.
-config
-A "config" object can be used to set configuration parameters used in package
-scripts that persist across upgrades. For instance, if a package had the
-following:
-{ "name" : "foo"
-, "config" : { "port" : "8080" } }
-
and then had a "start" command that then referenced the
-npm_package_config_port
environment variable, then the user could
-override that by doing npm config set foo:port 8001
.
-See npm-config(7)
and npm-scripts(7)
for more on package
-configs.
-dependencies
-Dependencies are specified in a simple object that maps a package name to a
-version range. The version range is a string which has one or more
-space-separated descriptors. Dependencies can also be identified with a
-tarball or git URL.
-Please do not put test harnesses or transpilers in your
-dependencies
object. See devDependencies
, below.
-See semver(7) for more details about specifying version ranges.
-
-version
Must match version
exactly
->version
Must be greater than version
->=version
etc
-<version
-<=version
-~version
"Approximately equivalent to version" See semver(7)
-^version
"Compatible with version" See semver(7)
-1.2.x
1.2.0, 1.2.1, etc., but not 1.3.0
-http://...
See 'URLs as Dependencies' below
-*
Matches any version
-""
(just an empty string) Same as *
-version1 - version2
Same as >=version1 <=version2
.
-range1 || range2
Passes if either range1 or range2 are satisfied.
-git...
See 'Git URLs as Dependencies' below
-user/repo
See 'GitHub URLs' below
-tag
A specific version tagged and published as tag
See npm-tag(1)
-path/path/path
See Local Paths below
-
-For example, these are all valid:
-{ "dependencies" :
- { "foo" : "1.0.0 - 2.9999.9999"
- , "bar" : ">=1.0.2 <2.1.2"
- , "baz" : ">1.0.2 <=2.3.4"
- , "boo" : "2.0.1"
- , "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"
- , "asd" : "http://asdf.com/asdf.tar.gz"
- , "til" : "~1.2"
- , "elf" : "~1.2.3"
- , "two" : "2.x"
- , "thr" : "3.3.x"
- , "lat" : "latest"
- , "dyl" : "file:../dyl"
- }
-}
-
URLs as Dependencies
-You may specify a tarball URL in place of a version range.
-This tarball will be downloaded and installed locally to your package at
-install time.
-Git URLs as Dependencies
-Git urls can be of the form:
-git://github.com/user/project.git#commit-ish
-git+ssh://user@hostname:project.git#commit-ish
-git+ssh://user@hostname/project.git#commit-ish
-git+http://user@hostname/project/blah.git#commit-ish
-git+https://user@hostname/project/blah.git#commit-ish
-
The commit-ish
can be any tag, sha, or branch which can be supplied as
-an argument to git checkout
. The default is master
.
-GitHub URLs
-As of version 1.1.65, you can refer to GitHub urls as just "foo":
-"user/foo-project". Just as with git URLs, a commit-ish
suffix can be
-included. For example:
-{
- "name": "foo",
- "version": "0.0.0",
- "dependencies": {
- "express": "visionmedia/express",
- "mocha": "visionmedia/mocha#4727d357ea"
- }
-}
-
Local Paths
-As of version 2.0.0 you can provide a path to a local directory that contains a
-package. Local paths can be saved using npm install --save
, using any of
-these forms:
-../foo/bar
-~/foo/bar
-./foo/bar
-/foo/bar
-
in which case they will be normalized to a relative path and added to your
-package.json
. For example:
-{
- "name": "baz",
- "dependencies": {
- "bar": "file:../foo/bar"
- }
-}
-
This feature is helpful for local offline development and creating
-tests that require npm installing where you don't want to hit an
-external server, but should not be used when publishing packages
-to the public registry.
-devDependencies
-If someone is planning on downloading and using your module in their
-program, then they probably don't want or need to download and build
-the external test or documentation framework that you use.
-In this case, it's best to map these additional items in a devDependencies
-object.
-These things will be installed when doing npm link
or npm install
-from the root of a package, and can be managed like any other npm
-configuration param. See npm-config(7)
for more on the topic.
-For build steps that are not platform-specific, such as compiling
-CoffeeScript or other languages to JavaScript, use the prepublish
-script to do this, and make the required package a devDependency.
-For example:
-{ "name": "ethopia-waza",
- "description": "a delightfully fruity coffee varietal",
- "version": "1.2.3",
- "devDependencies": {
- "coffee-script": "~1.6.3"
- },
- "scripts": {
- "prepublish": "coffee -o lib/ -c src/waza.coffee"
- },
- "main": "lib/waza.js"
-}
-
The prepublish
script will be run before publishing, so that users
-can consume the functionality without requiring them to compile it
-themselves. In dev mode (ie, locally running npm install
), it'll
-run this script as well, so that you can test it easily.
-peerDependencies
-In some cases, you want to express the compatibility of your package with a
-host tool or library, while not necessarily doing a require
of this host.
-This is usually referred to as a plugin . Notably, your module may be exposing
-a specific interface, expected and specified by the host documentation.
-For example:
-{
- "name": "tea-latte",
- "version": "1.3.5",
- "peerDependencies": {
- "tea": "2.x"
- }
-}
-
This ensures your package tea-latte
can be installed along with the second
-major version of the host package tea
only. npm install tea-latte
could
-possibly yield the following dependency graph:
-├── tea-latte@1.3.5
-└── tea@2.2.0
-
NOTE: npm versions 1 and 2 will automatically install peerDependencies
if
-they are not explicitly depended upon higher in the dependency tree. In the
-next major version of npm (npm@3), this will no longer be the case. You will
-receive a warning that the peerDependency is not installed instead. The
-behavior in npms 1 & 2 was frequently confusing and could easily put you into
-dependency hell, a situation that npm is designed to avoid as much as possible.
-Trying to install another plugin with a conflicting requirement will cause an
-error. For this reason, make sure your plugin requirement is as broad as
-possible, and not to lock it down to specific patch versions.
-Assuming the host complies with semver , only changes in
-the host package's major version will break your plugin. Thus, if you've worked
-with every 1.x version of the host package, use "^1.0"
or "1.x"
to express
-this. If you depend on features introduced in 1.5.2, use ">= 1.5.2 < 2"
.
-bundledDependencies
-Array of package names that will be bundled when publishing the package.
-If this is spelled "bundleDependencies"
, then that is also honorable.
-optionalDependencies
-If a dependency can be used, but you would like npm to proceed if it cannot be
-found or fails to install, then you may put it in the optionalDependencies
-object. This is a map of package name to version or url, just like the
-dependencies
object. The difference is that build failures do not cause
-installation to fail.
-It is still your program's responsibility to handle the lack of the
-dependency. For example, something like this:
-try {
- var foo = require('foo')
- var fooVersion = require('foo/package.json').version
-} catch (er) {
- foo = null
-}
-if ( notGoodFooVersion(fooVersion) ) {
- foo = null
-}
-
-// .. then later in your program ..
-
-if (foo) {
- foo.doFooThings()
-}
-
Entries in optionalDependencies
will override entries of the same name in
-dependencies
, so it's usually best to only put in one place.
-engines
-You can specify the version of node that your stuff works on:
-{ "engines" : { "node" : ">=0.10.3 <0.12" } }
-
And, like with dependencies, if you don't specify the version (or if you
-specify "*" as the version), then any version of node will do.
-If you specify an "engines" field, then npm will require that "node" be
-somewhere on that list. If "engines" is omitted, then npm will just assume
-that it works on node.
-You can also use the "engines" field to specify which versions of npm
-are capable of properly installing your program. For example:
-{ "engines" : { "npm" : "~1.0.20" } }
-
Note that, unless the user has set the engine-strict
config flag, this
-field is advisory only.
-engineStrict
-NOTE: This feature is deprecated and will be removed in npm 3.0.0.
-If you are sure that your module will definitely not run properly on
-versions of Node/npm other than those specified in the engines
object,
-then you can set "engineStrict": true
in your package.json file.
-This will override the user's engine-strict
config setting.
-Please do not do this unless you are really very very sure. If your
-engines object is something overly restrictive, you can quite easily and
-inadvertently lock yourself into obscurity and prevent your users from
-updating to new versions of Node. Consider this choice carefully.
-os
-You can specify which operating systems your
-module will run on:
-"os" : [ "darwin", "linux" ]
-
You can also blacklist instead of whitelist operating systems,
-just prepend the blacklisted os with a '!':
-"os" : [ "!win32" ]
-
The host operating system is determined by process.platform
-It is allowed to both blacklist, and whitelist, although there isn't any
-good reason to do this.
-cpu
-If your code only runs on certain cpu architectures,
-you can specify which ones.
-"cpu" : [ "x64", "ia32" ]
-
Like the os
option, you can also blacklist architectures:
-"cpu" : [ "!arm", "!mips" ]
-
The host architecture is determined by process.arch
-preferGlobal
-If your package is primarily a command-line application that should be
-installed globally, then set this value to true
to provide a warning
-if it is installed locally.
-It doesn't actually prevent users from installing it locally, but it
-does help prevent some confusion if it doesn't work as expected.
-private
-If you set "private": true
in your package.json, then npm will refuse
-to publish it.
-This is a way to prevent accidental publication of private repositories. If
-you would like to ensure that a given package is only ever published to a
-specific registry (for example, an internal registry), then use the
-publishConfig
dictionary described below to override the registry
config
-param at publish-time.
-publishConfig
-This is a set of config values that will be used at publish-time. It's
-especially handy if you want to set the tag, registry or access, so that
-you can ensure that a given package is not tagged with "latest", published
-to the global public registry or that a scoped module is private by default.
-Any config values can be overridden, but of course only "tag", "registry" and
-"access" probably matter for the purposes of publishing.
-See npm-config(7)
to see the list of config options that can be
-overridden.
-DEFAULT VALUES
-npm will default some values based on package contents.
-
-"scripts": {"start": "node server.js"}
-If there is a server.js
file in the root of your package, then npm
-will default the start
command to node server.js
.
-
-"scripts":{"preinstall": "node-gyp rebuild"}
-If there is a binding.gyp
file in the root of your package, npm will
-default the preinstall
command to compile using node-gyp.
-
-"contributors": [...]
-If there is an AUTHORS
file in the root of your package, npm will
-treat each line as a Name <email> (url)
format, where email and url
-are optional. Lines which start with a #
or are blank, will be
-ignored.
-
-
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/index.html b/deps/npm/html/partial/doc/index.html
deleted file mode 100644
index d074d9127bb6ee..00000000000000
--- a/deps/npm/html/partial/doc/index.html
+++ /dev/null
@@ -1,220 +0,0 @@
- Index of all npm documentation
-
-a JavaScript package manager
-Command Line Documentation
-Using npm on the command line
-
-javascript package manager
-
-Set access level on published packages
-
-Add a registry user account
-
-Display npm bin folder
-
-Bugs for a package in a web browser maybe
-
-Build a package
-
-REMOVED
-
-Manipulates packages cache
-
-Tab Completion for npm
-
-Manage the npm configuration files
-
-Reduce duplication
-
-Deprecate a version of a package
-
-Modify package distribution tags
-
-Docs for a package in a web browser maybe
-
-Edit an installed package
-
-Browse an installed package
-
-Search npm help documentation
-
-Get help on npm
-
-Interactively create a package.json file
-
-Install a package
-
-Symlink a package folder
-
-Log out of the registry
-
-List installed packages
-
-Check for outdated packages
-
-Manage package owners
-
-Create a tarball from a package
-
-Ping npm registry
-
-Display prefix
-
-Remove extraneous packages
-
-Publish a package
-
-Rebuild a package
-
-Open package repository page in the browser
-
-Restart a package
-
-Remove a package
-
-Display npm root
-
-Run arbitrary package scripts
-
-Search for packages
-
-Lock down dependency versions
-
-Mark your favorite packages
-
-View packages marked as favorites
-
-Start a package
-
-Stop a package
-
-Tag a published version
-
-Test a package
-
-Remove a package
-
-Remove a package from the registry
-
-Update a package
-
-Bump a package version
-
-View registry info
-
-Display npm username
-API Documentation
-Using npm in your Node programs
-
-javascript package manager
-
-Display npm bin folder
-
-Bugs for a package in a web browser maybe
-
-manage the npm cache programmatically
-
-npm commands
-
-Manage the npm configuration files
-
-Deprecate a version of a package
-
-Docs for a package in a web browser maybe
-
-Edit an installed package
-
-Browse an installed package
-
-Search the help pages
-
-Interactively create a package.json file
-
-install a package programmatically
-
-Symlink a package folder
-
-Load config settings
-
-List installed packages
-
-Check for outdated packages
-
-Manage package owners
-
-Create a tarball from a package
-
-Ping npm registry
-
-Display prefix
-
-Remove extraneous packages
-
-Publish a package
-
-Rebuild a package
-
-Open package repository page in the browser
-
-Restart a package
-
-Display npm root
-
-Run arbitrary package scripts
-
-Search for packages
-
-programmatically generate package shrinkwrap file
-
-Start a package
-
-Stop a package
-
-Tag a published version
-
-Test a package
-
-uninstall a package programmatically
-
-Remove a package from the registry
-
-Update a package
-
-Bump a package version
-
-View registry info
-
-Display npm username
-Files
-File system structures npm uses
-
-Folder Structures Used by npm
-
-The npm config files
-
-Specifics of npm's package.json handling
-Misc
-Various other bits and bobs
-
-npm's "funny" coding style
-
-More than you probably want to know about npm configuration
-
-Developer Guide
-
-Handling Module Name Disputes
-
-Frequently Asked Questions
-
-Index of all npm documentation
-
-The JavaScript Package Registry
-
-Scoped packages
-
-How npm handles the "scripts" field
-
-Cleaning the Slate
-
-The semantic versioner for npm
-
diff --git a/deps/npm/html/partial/doc/misc/npm-coding-style.html b/deps/npm/html/partial/doc/misc/npm-coding-style.html
deleted file mode 100644
index b50b95f27f7e45..00000000000000
--- a/deps/npm/html/partial/doc/misc/npm-coding-style.html
+++ /dev/null
@@ -1,127 +0,0 @@
- npm's "funny" coding style
-DESCRIPTION
-npm's coding style is a bit unconventional. It is not different for
-difference's sake, but rather a carefully crafted style that is
-designed to reduce visual clutter and make bugs more apparent.
-If you want to contribute to npm (which is very encouraged), you should
-make your code conform to npm's style.
-Note: this concerns npm's code not the specific packages that you can download from the npm registry.
-Line Length
-Keep lines shorter than 80 characters. It's better for lines to be
-too short than to be too long. Break up long lists, objects, and other
-statements onto multiple lines.
-Indentation
-Two-spaces. Tabs are better, but they look like hell in web browsers
-(and on GitHub), and node uses 2 spaces, so that's that.
-Configure your editor appropriately.
-Curly braces
-Curly braces belong on the same line as the thing that necessitates them.
-Bad:
-function ()
-{
-
Good:
-function () {
-
If a block needs to wrap to the next line, use a curly brace. Don't
-use it if it doesn't.
-Bad:
-if (foo) { bar() }
-while (foo)
- bar()
-
Good:
-if (foo) bar()
-while (foo) {
- bar()
-}
-
Semicolons
-Don't use them except in four situations:
-
-for (;;)
loops. They're actually required.
-null loops like: while (something) ;
(But you'd better have a good
-reason for doing that.)
-case "foo": doSomething(); break
-In front of a leading (
or [
at the start of the line.
-This prevents the expression from being interpreted
-as a function call or property access, respectively.
-
-Some examples of good semicolon usage:
-;(x || y).doSomething()
-;[a, b, c].forEach(doSomething)
-for (var i = 0; i < 10; i ++) {
- switch (state) {
- case "begin": start(); continue
- case "end": finish(); break
- default: throw new Error("unknown state")
- }
- end()
-}
-
Note that starting lines with -
and +
also should be prefixed
-with a semicolon, but this is much less common.
-Comma First
-If there is a list of things separated by commas, and it wraps
-across multiple lines, put the comma at the start of the next
-line, directly below the token that starts the list. Put the
-final token in the list on a line by itself. For example:
-var magicWords = [ "abracadabra"
- , "gesundheit"
- , "ventrilo"
- ]
- , spells = { "fireball" : function () { setOnFire() }
- , "water" : function () { putOut() }
- }
- , a = 1
- , b = "abc"
- , etc
- , somethingElse
-
Whitespace
-Put a single space in front of ( for anything other than a function call.
-Also use a single space wherever it makes things more readable.
-Don't leave trailing whitespace at the end of lines. Don't indent empty
-lines. Don't use more spaces than are helpful.
-Functions
-Use named functions. They make stack traces a lot easier to read.
-Callbacks, Sync/async Style
-Use the asynchronous/non-blocking versions of things as much as possible.
-It might make more sense for npm to use the synchronous fs APIs, but this
-way, the fs and http and child process stuff all uses the same callback-passing
-methodology.
-The callback should always be the last argument in the list. Its first
-argument is the Error or null.
-Be very careful never to ever ever throw anything. It's worse than useless.
-Just send the error message back as the first argument to the callback.
-Errors
-Always create a new Error object with your message. Don't just return a
-string message to the callback. Stack traces are handy.
-Logging
-Logging is done using the npmlog
-utility.
-Please clean up logs when they are no longer helpful. In particular,
-logging the same object over and over again is not helpful. Logs should
-report what's happening so that it's easier to track down where a fault
-occurs.
-Use appropriate log levels. See npm-config(7)
and search for
-"loglevel".
-Case, naming, etc.
-Use lowerCamelCase
for multiword identifiers when they refer to objects,
-functions, methods, properties, or anything not specified in this section.
-Use UpperCamelCase
for class names (things that you'd pass to "new").
-Use all-lower-hyphen-css-case
for multiword filenames and config keys.
-Use named functions. They make stack traces easier to follow.
-Use CAPS_SNAKE_CASE
for constants, things that should never change
-and are rarely used.
-Use a single uppercase letter for function names where the function
-would normally be anonymous, but needs to call itself recursively. It
-makes it clear that it's a "throwaway" function.
-null, undefined, false, 0
-Boolean variables and functions should always be either true
or
-false
. Don't set it to 0 unless it's supposed to be a number.
-When something is intentionally missing or removed, set it to null
.
-Don't set things to undefined
. Reserve that value to mean "not yet
-set to anything."
-Boolean objects are verboten.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/misc/npm-config.html b/deps/npm/html/partial/doc/misc/npm-config.html
deleted file mode 100644
index 2694cb8b2d6ea0..00000000000000
--- a/deps/npm/html/partial/doc/misc/npm-config.html
+++ /dev/null
@@ -1,779 +0,0 @@
- More than you probably want to know about npm configuration
-DESCRIPTION
-npm gets its configuration values from the following sources, sorted by priority:
-Command Line Flags
-Putting --foo bar
on the command line sets the foo
configuration
-parameter to "bar"
. A --
argument tells the cli parser to stop
-reading flags. A --flag
parameter that is at the end of the
-command will be given the value of true
.
-Environment Variables
-Any environment variables that start with npm_config_
will be
-interpreted as a configuration parameter. For example, putting
-npm_config_foo=bar
in your environment will set the foo
-configuration parameter to bar
. Any environment configurations that
-are not given a value will be given the value of true
. Config
-values are case-insensitive, so NPM_CONFIG_FOO=bar
will work the
-same.
-npmrc Files
-The four relevant files are:
-
-per-project config file (/path/to/my/project/.npmrc)
-per-user config file (~/.npmrc)
-global config file ($PREFIX/npmrc)
-npm builtin config file (/path/to/npm/npmrc)
-
-See npmrc(5) for more details.
-Default Configs
-A set of configuration parameters that are internal to npm, and are
-defaults if nothing else is specified.
-Shorthands and Other CLI Niceties
-The following shorthands are parsed on the command-line:
-
--v
: --version
--h
, -?
, --help
, -H
: --usage
--s
, --silent
: --loglevel silent
--q
, --quiet
: --loglevel warn
--d
: --loglevel info
--dd
, --verbose
: --loglevel verbose
--ddd
: --loglevel silly
--g
: --global
--C
: --prefix
--l
: --long
--m
: --message
--p
, --porcelain
: --parseable
--reg
: --registry
--f
: --force
--desc
: --description
--S
: --save
--D
: --save-dev
--O
: --save-optional
--B
: --save-bundle
--E
: --save-exact
--y
: --yes
--n
: --yes false
-ll
and la
commands: ls --long
-
-If the specified configuration param resolves unambiguously to a known
-configuration parameter, then it is expanded to that configuration
-parameter. For example:
-npm ls --par
-# same as:
-npm ls --parseable
-
If multiple single-character shorthands are strung together, and the
-resulting combination is unambiguously not some other configuration
-param, then it is expanded to its various component pieces. For
-example:
-npm ls -gpld
-# same as:
-npm ls --global --parseable --long --loglevel info
-
Per-Package Config Settings
-When running scripts (see npm-scripts(7)
) the package.json "config"
-keys are overwritten in the environment if there is a config param of
-<name>[@<version>]:<key>
. For example, if the package.json has
-this:
-{ "name" : "foo"
-, "config" : { "port" : "8080" }
-, "scripts" : { "start" : "node server.js" } }
-
and the server.js is this:
-http.createServer(...).listen(process.env.npm_package_config_port)
-
then the user could change the behavior by doing:
-npm config set foo:port 80
-
See package.json(5) for more information.
-Config Settings
-access
-
-Default: restricted
-Type: Access
-
-When publishing scoped packages, the access level defaults to restricted
. If
-you want your scoped package to be publicly viewable (and installable) set
---access=public
. The only valid values for access
are public
and
-restricted
. Unscoped packages always have an access level of public
.
-always-auth
-
-Default: false
-Type: Boolean
-
-Force npm to always require authentication when accessing the registry,
-even for GET
requests.
-bin-links
-
-Default: true
-Type: Boolean
-
-Tells npm to create symlinks (or .cmd
shims on Windows) for package
-executables.
-Set to false to have it not do this. This can be used to work around
-the fact that some file systems don't support symlinks, even on
-ostensibly Unix systems.
-browser
-
-Default: OS X: "open"
, Windows: "start"
, Others: "xdg-open"
-Type: String
-
-The browser that is called by the npm docs
command to open websites.
-ca
-
-Default: The npm CA certificate
-Type: String, Array or null
-
-The Certificate Authority signing certificate that is trusted for SSL
-connections to the registry. Values should be in PEM format with newlines
-replaced by the string "\n". For example:
-ca="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----"
-
Set to null
to only allow "known" registrars, or to a specific CA cert
-to trust only that specific signing authority.
-Multiple CAs can be trusted by specifying an array of certificates:
-ca[]="..."
-ca[]="..."
-
See also the strict-ssl
config.
-cafile
-
-Default: null
-Type: path
-
-A path to a file containing one or multiple Certificate Authority signing
-certificates. Similar to the ca
setting, but allows for multiple CA's, as
-well as for the CA information to be stored in a file on disk.
-cache
-
-Default: Windows: %AppData%\npm-cache
, Posix: ~/.npm
-Type: path
-
-The location of npm's cache directory. See npm-cache(1)
-cache-lock-stale
-
-Default: 60000 (1 minute)
-Type: Number
-
-The number of ms before cache folder lockfiles are considered stale.
-cache-lock-retries
-
-Default: 10
-Type: Number
-
-Number of times to retry to acquire a lock on cache folder lockfiles.
-cache-lock-wait
-
-Default: 10000 (10 seconds)
-Type: Number
-
-Number of ms to wait for cache lock files to expire.
-cache-max
-
-Default: Infinity
-Type: Number
-
-The maximum time (in seconds) to keep items in the registry cache before
-re-checking against the registry.
-Note that no purging is done unless the npm cache clean
command is
-explicitly used, and that only GET requests use the cache.
-cache-min
-
-Default: 10
-Type: Number
-
-The minimum time (in seconds) to keep items in the registry cache before
-re-checking against the registry.
-Note that no purging is done unless the npm cache clean
command is
-explicitly used, and that only GET requests use the cache.
-cert
-
-Default: null
-Type: String
-
-A client certificate to pass when accessing the registry.
-color
-
-Default: true on Posix, false on Windows
-Type: Boolean or "always"
-
-If false, never shows colors. If "always"
then always shows colors.
-If true, then only prints color codes for tty file descriptors.
-depth
-
-Default: Infinity
-Type: Number
-
-The depth to go when recursing directories for npm ls
,
-npm cache ls
, and npm outdated
.
-For npm outdated
, a setting of Infinity
will be treated as 0
-since that gives more useful information. To show the outdated status
-of all packages and dependents, use a large integer value,
-e.g., npm outdated --depth 9999
-description
-
-Default: true
-Type: Boolean
-
-Show the description in npm search
-dev
-
-Default: false
-Type: Boolean
-
-Install dev-dependencies
along with packages.
-Note that dev-dependencies
are also installed if the npat
flag is
-set.
-editor
-
-Default: EDITOR
environment variable if set, or "vi"
on Posix,
-or "notepad"
on Windows.
-Type: path
-
-The command to run for npm edit
or npm config edit
.
-engine-strict
-
-Default: false
-Type: Boolean
-
-If set to true, then npm will stubbornly refuse to install (or even
-consider installing) any package that claims to not be compatible with
-the current Node.js version.
-force
-
-Default: false
-Type: Boolean
-
-Makes various commands more forceful.
-
-lifecycle script failure does not block progress.
-publishing clobbers previously published versions.
-skips cache when requesting from the registry.
-prevents checks against clobbering non-npm files.
-
-fetch-retries
-
-Default: 2
-Type: Number
-
-The "retries" config for the retry
module to use when fetching
-packages from the registry.
-fetch-retry-factor
-
-Default: 10
-Type: Number
-
-The "factor" config for the retry
module to use when fetching
-packages.
-fetch-retry-mintimeout
-
-Default: 10000 (10 seconds)
-Type: Number
-
-The "minTimeout" config for the retry
module to use when fetching
-packages.
-fetch-retry-maxtimeout
-
-Default: 60000 (1 minute)
-Type: Number
-
-The "maxTimeout" config for the retry
module to use when fetching
-packages.
-git
-
-Default: "git"
-Type: String
-
-The command to use for git commands. If git is installed on the
-computer, but is not in the PATH
, then set this to the full path to
-the git binary.
-git-tag-version
-
-Default: true
-Type: Boolean
-
-Tag the commit when using the npm version
command.
-global
-
-Default: false
-Type: Boolean
-
-Operates in "global" mode, so that packages are installed into the
-prefix
folder instead of the current working directory. See
-npm-folders(5)
for more on the differences in behavior.
-
-packages are installed into the {prefix}/lib/node_modules
folder, instead of the
-current working directory.
-bin files are linked to {prefix}/bin
-man pages are linked to {prefix}/share/man
-
-globalconfig
-
-Default: {prefix}/etc/npmrc
-Type: path
-
-The config file to read for global config options.
-group
-
-Default: GID of the current process
-Type: String or Number
-
-The group to use when running package scripts in global mode as the root
-user.
-heading
-
-Default: "npm"
-Type: String
-
-The string that starts all the debugging log output.
-https-proxy
-
-Default: null
-Type: url
-
-A proxy to use for outgoing https requests. If the HTTPS_PROXY
or
-https_proxy
or HTTP_PROXY
or http_proxy
environment variables are set,
-proxy settings will be honored by the underlying request
library.
-if-present
-
-Default: false
-Type: Boolean
-
-If true, npm will not exit with an error code when run-script
is invoked for
-a script that isn't defined in the scripts
section of package.json
. This
-option can be used when it's desirable to optionally run a script when it's
-present and fail if the script fails. This is useful, for example, when running
-scripts that may only apply for some builds in an otherwise generic CI setup.
-ignore-scripts
-
-Default: false
-Type: Boolean
-
-If true, npm does not run scripts specified in package.json files.
-init-module
-
-Default: ~/.npm-init.js
-Type: path
-
-A module that will be loaded by the npm init
command. See the
-documentation for the
-init-package-json module
-for more information, or npm-init(1) .
-init-author-name
-
-Default: ""
-Type: String
-
-The value npm init
should use by default for the package author's name.
-init-author-email
-
-Default: ""
-Type: String
-
-The value npm init
should use by default for the package author's email.
-init-author-url
-
-Default: ""
-Type: String
-
-The value npm init
should use by default for the package author's homepage.
-init-license
-
-Default: "ISC"
-Type: String
-
-The value npm init
should use by default for the package license.
-init-version
-
-Default: "1.0.0"
-Type: semver
-
-The value that npm init
should use by default for the package
-version number, if not already set in package.json.
-json
-
-Default: false
-Type: Boolean
-
-Whether or not to output JSON data, rather than the normal output.
-This feature is currently experimental, and the output data structures
-for many commands is either not implemented in JSON yet, or subject to
-change. Only the output from npm ls --json
is currently valid.
-key
-
-Default: null
-Type: String
-
-A client key to pass when accessing the registry.
-link
-
-Default: false
-Type: Boolean
-
-If true, then local installs will link if there is a suitable globally
-installed package.
-Note that this means that local installs can cause things to be
-installed into the global space at the same time. The link is only done
-if one of the two conditions are met:
-
-The package is not already installed globally, or
-the globally installed version is identical to the version that is
-being installed locally.
-
-local-address
-
-Default: undefined
-Type: IP Address
-
-The IP address of the local interface to use when making connections
-to the npm registry. Must be IPv4 in versions of Node prior to 0.12.
-loglevel
-
-Default: "warn"
-Type: String
-Values: "silent", "error", "warn", "http", "info", "verbose", "silly"
-
-What level of logs to report. On failure, all logs are written to
-npm-debug.log
in the current working directory.
-Any logs of a higher level than the setting are shown.
-The default is "warn", which shows warn and error output.
-logstream
-
-Default: process.stderr
-Type: Stream
-
-This is the stream that is passed to the
-npmlog module at run time.
-It cannot be set from the command line, but if you are using npm
-programmatically, you may wish to send logs to somewhere other than
-stderr.
-If the color
config is set to true, then this stream will receive
-colored output if it is a TTY.
-long
-
-Default: false
-Type: Boolean
-
-Show extended information in npm ls
and npm search
.
-message
-
-Default: "%s"
-Type: String
-
-Commit message which is used by npm version
when creating version commit.
-Any "%s" in the message will be replaced with the version number.
-node-version
-
-Default: process.version
-Type: semver or false
-
-The node version to use when checking a package's engines
map.
-npat
-
-Default: false
-Type: Boolean
-
-Run tests on installation.
-onload-script
-
-Default: false
-Type: path
-
-A node module to require()
when npm loads. Useful for programmatic
-usage.
-optional
-
-Default: true
-Type: Boolean
-
-Attempt to install packages in the optionalDependencies
object. Note
-that if these packages fail to install, the overall installation
-process is not aborted.
-parseable
-
-Default: false
-Type: Boolean
-
-Output parseable results from commands that write to
-standard output.
-prefix
-
-The location to install global items. If set on the command line, then
-it forces non-global commands to run in the specified folder.
-production
-
-Default: false
-Type: Boolean
-
-Set to true to run in "production" mode.
-
-devDependencies are not installed at the topmost level when running
-local npm install
without any arguments.
-Set the NODE_ENV="production" for lifecycle scripts.
-
-proprietary-attribs
-
-Default: true
-Type: Boolean
-
-Whether or not to include proprietary extended attributes in the
-tarballs created by npm.
-Unless you are expecting to unpack package tarballs with something other
-than npm -- particularly a very outdated tar implementation -- leave
-this as true.
-proxy
-
-Default: null
-Type: url
-
-A proxy to use for outgoing http requests. If the HTTP_PROXY
or
-http_proxy
environment variables are set, proxy settings will be
-honored by the underlying request
library.
-rebuild-bundle
-
-Default: true
-Type: Boolean
-
-Rebuild bundled dependencies after installation.
-registry
-
-The base URL of the npm package registry.
-rollback
-
-Default: true
-Type: Boolean
-
-Remove failed installs.
-save
-
-Default: false
-Type: Boolean
-
-Save installed packages to a package.json file as dependencies.
-When used with the npm rm
command, it removes it from the dependencies
-object.
-Only works if there is already a package.json file present.
-save-bundle
-
-Default: false
-Type: Boolean
-
-If a package would be saved at install time by the use of --save
,
---save-dev
, or --save-optional
, then also put it in the
-bundleDependencies
list.
-When used with the npm rm
command, it removes it from the
-bundledDependencies list.
-save-dev
-
-Default: false
-Type: Boolean
-
-Save installed packages to a package.json file as devDependencies
.
-When used with the npm rm
command, it removes it from the
-devDependencies
object.
-Only works if there is already a package.json file present.
-save-exact
-
-Default: false
-Type: Boolean
-
-Dependencies saved to package.json using --save
, --save-dev
or
---save-optional
will be configured with an exact version rather than
-using npm's default semver range operator.
-save-optional
-
-Default: false
-Type: Boolean
-
-Save installed packages to a package.json file as
-optionalDependencies.
-When used with the npm rm
command, it removes it from the
-devDependencies
object.
-Only works if there is already a package.json file present.
-save-prefix
-
-Default: '^'
-Type: String
-
-Configure how versions of packages installed to a package.json file via
---save
or --save-dev
get prefixed.
-For example if a package has version 1.2.3
, by default its version is
-set to ^1.2.3
which allows minor upgrades for that package, but after
-npm config set save-prefix='~'
it would be set to ~1.2.3
which only allows
-patch upgrades.
-scope
-
-Default: ""
-Type: String
-
-Associate an operation with a scope for a scoped registry. Useful when logging
-in to a private registry for the first time:
-npm login --scope=@organization --registry=registry.organization.com
, which
-will cause @organization
to be mapped to the registry for future installation
-of packages specified according to the pattern @organization/package
.
-searchopts
-
-Default: ""
-Type: String
-
-Space-separated options that are always passed to search.
-searchexclude
-
-Default: ""
-Type: String
-
-Space-separated options that limit the results from search.
-searchsort
-
-Default: "name"
-Type: String
-Values: "name", "-name", "date", "-date", "description",
-"-description", "keywords", "-keywords"
-
-Indication of which field to sort search results by. Prefix with a -
-character to indicate reverse sort.
-shell
-
-Default: SHELL environment variable, or "bash" on Posix, or "cmd" on
-Windows
-Type: path
-
-The shell to run for the npm explore
command.
-shrinkwrap
-
-Default: true
-Type: Boolean
-
-If set to false, then ignore npm-shrinkwrap.json
files when
-installing.
-sign-git-tag
-
-Default: false
-Type: Boolean
-
-If set to true, then the npm version
command will tag the version
-using -s
to add a signature.
-Note that git requires you to have set up GPG keys in your git configs
-for this to work properly.
-spin
-
-Default: true
-Type: Boolean or "always"
-
-When set to true
, npm will display an ascii spinner while it is doing
-things, if process.stderr
is a TTY.
-Set to false
to suppress the spinner, or set to always
to output
-the spinner even for non-TTY outputs.
-strict-ssl
-
-Default: true
-Type: Boolean
-
-Whether or not to do SSL key validation when making requests to the
-registry via https.
-See also the ca
config.
-tag
-
-Default: latest
-Type: String
-
-If you ask npm to install a package and don't tell it a specific version, then
-it will install the specified tag.
-Also the tag that is added to the package@version specified by the npm
-tag
command, if no explicit tag is given.
-tag-version-prefix
-
-Default: "v"
-Type: String
-
-If set, alters the prefix used when tagging a new version when performing a
-version increment using npm-version
. To remove the prefix altogether, set it
-to the empty string: ""
.
-Because other tools may rely on the convention that npm version tags look like
-v1.0.0
, only use this property if it is absolutely necessary . In
-particular, use care when overriding this setting for public packages.
-tmp
-
-Default: TMPDIR environment variable, or "/tmp"
-Type: path
-
-Where to store temporary files and folders. All temp files are deleted
-on success, but left behind on failure for forensic purposes.
-unicode
-
-Default: true
-Type: Boolean
-
-When set to true, npm uses unicode characters in the tree output. When
-false, it uses ascii characters to draw trees.
-unsafe-perm
-
-Default: false if running as root, true otherwise
-Type: Boolean
-
-Set to true to suppress the UID/GID switching when running package
-scripts. If set explicitly to false, then installing as a non-root user
-will fail.
-usage
-
-Default: false
-Type: Boolean
-
-Set to show short usage output (like the -H output)
-instead of complete help when doing npm-help(1)
.
-user
-
-Default: "nobody"
-Type: String or Number
-
-The UID to set to when running package scripts as root.
-userconfig
-
-Default: ~/.npmrc
-Type: path
-
-The location of user-level configuration settings.
-umask
-
-Default: 022
-Type: Octal numeric string in range 0000..0777 (0..511)
-
-The "umask" value to use when setting the file creation mode on files
-and folders.
-Folders and executables are given a mode which is 0777
masked against
-this value. Other files are given a mode which is 0666
masked against
-this value. Thus, the defaults are 0755
and 0644
respectively.
-user-agent
-
-Default: node/{process.version} {process.platform} {process.arch}
-Type: String
-
-Sets a User-Agent to the request header
-version
-
-Default: false
-Type: boolean
-
-If true, output the npm version and exit successfully.
-Only relevant when specified explicitly on the command line.
-versions
-
-Default: false
-Type: boolean
-
-If true, output the npm version as well as node's process.versions
map, and
-exit successfully.
-Only relevant when specified explicitly on the command line.
-viewer
-
-Default: "man" on Posix, "browser" on Windows
-Type: path
-
-The program to use to view help content.
-Set to "browser"
to view html help content in the default web browser.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/misc/npm-developers.html b/deps/npm/html/partial/doc/misc/npm-developers.html
deleted file mode 100644
index 10d0cd89198a3f..00000000000000
--- a/deps/npm/html/partial/doc/misc/npm-developers.html
+++ /dev/null
@@ -1,169 +0,0 @@
- Developer Guide
-DESCRIPTION
-So, you've decided to use npm to develop (and maybe publish/deploy)
-your project.
-Fantastic!
-There are a few things that you need to do above the simple steps
-that your users will do to install your program.
-About These Documents
-These are man pages. If you install npm, you should be able to
-then do man npm-thing
to get the documentation on a particular
-topic, or npm help thing
to see the same information.
-What is a package
-A package is:
-
-a) a folder containing a program described by a package.json file
-b) a gzipped tarball containing (a)
-c) a url that resolves to (b)
-d) a <name>@<version>
that is published on the registry with (c)
-e) a <name>@<tag>
that points to (d)
-f) a <name>
that has a "latest" tag satisfying (e)
-g) a git
url that, when cloned, results in (a).
-
-Even if you never publish your package, you can still get a lot of
-benefits of using npm if you just want to write a node program (a), and
-perhaps if you also want to be able to easily install it elsewhere
-after packing it up into a tarball (b).
-Git urls can be of the form:
-git://github.com/user/project.git#commit-ish
-git+ssh://user@hostname:project.git#commit-ish
-git+http://user@hostname/project/blah.git#commit-ish
-git+https://user@hostname/project/blah.git#commit-ish
-
The commit-ish
can be any tag, sha, or branch which can be supplied as
-an argument to git checkout
. The default is master
.
-The package.json File
-You need to have a package.json
file in the root of your project to do
-much of anything with npm. That is basically the whole interface.
-See package.json(5)
for details about what goes in that file. At the very
-least, you need:
-
-name:
-This should be a string that identifies your project. Please do not
-use the name to specify that it runs on node, or is in JavaScript.
-You can use the "engines" field to explicitly state the versions of
-node (or whatever else) that your program requires, and it's pretty
-well assumed that it's javascript.
-It does not necessarily need to match your github repository name.
-So, node-foo
and bar-js
are bad names. foo
or bar
are better.
-
-version:
-A semver-compatible version.
-
-engines:
-Specify the versions of node (or whatever else) that your program
-runs on. The node API changes a lot, and there may be bugs or new
-functionality that you depend on. Be explicit.
-
-author:
-Take some credit.
-
-scripts:
-If you have a special compilation or installation script, then you
-should put it in the scripts
object. You should definitely have at
-least a basic smoke-test command as the "scripts.test" field.
-See npm-scripts(7) .
-
-main:
-If you have a single module that serves as the entry point to your
-program (like what the "foo" package gives you at require("foo")),
-then you need to specify that in the "main" field.
-
-directories:
-This is an object mapping names to folders. The best ones to include are
-"lib" and "doc", but if you use "man" to specify a folder full of man pages,
-they'll get installed just like these ones.
-
-
-You can use npm init
in the root of your package in order to get you
-started with a pretty basic package.json file. See npm-init(1)
for
-more info.
-Keeping files out of your package
-Use a .npmignore
file to keep stuff out of your package. If there's
-no .npmignore
file, but there is a .gitignore
file, then npm will
-ignore the stuff matched by the .gitignore
file. If you want to
-include something that is excluded by your .gitignore
file, you can
-create an empty .npmignore
file to override it.
-.npmignore
files follow the same pattern rules
-as .gitignore
files:
-
-Blank lines or lines starting with #
are ignored.
-Standard glob patterns work.
-You can end patterns with a forward slash /
to specify a directory.
-You can negate a pattern by starting it with an exclamation point !
.
-
-By default, the following paths and files are ignored, so there's no
-need to add them to .npmignore
explicitly:
-
-.*.swp
-._*
-.DS_Store
-.git
-.hg
-.lock-wscript
-.svn
-.wafpickle-*
-CVS
-npm-debug.log
-
-Additionally, everything in node_modules
is ignored, except for
-bundled dependencies. npm automatically handles this for you, so don't
-bother adding node_modules
to .npmignore
.
-The following paths and files are never ignored, so adding them to
-.npmignore
is pointless:
-
-Link Packages
-npm link
is designed to install a development package and see the
-changes in real time without having to keep re-installing it. (You do
-need to either re-link or npm rebuild -g
to update compiled packages,
-of course.)
-More info at npm-link(1)
.
-Before Publishing: Make Sure Your Package Installs and Works
-This is important.
-If you can not install it locally, you'll have
-problems trying to publish it. Or, worse yet, you'll be able to
-publish it, but you'll be publishing a broken or pointless package.
-So don't do that.
-In the root of your package, do this:
-npm install . -g
-
That'll show you that it's working. If you'd rather just create a symlink
-package that points to your working directory, then do this:
-npm link
-
Use npm ls -g
to see if it's there.
-To test a local install, go into some other folder, and then do:
-cd ../some-other-folder
-npm install ../my-package
-
to install it locally into the node_modules folder in that other place.
-Then go into the node-repl, and try using require("my-thing") to
-bring in your module's main module.
-Create a User Account
-Create a user with the adduser command. It works like this:
-npm adduser
-
and then follow the prompts.
-This is documented better in npm-adduser(1) .
-Publish your package
-This part's easy. IN the root of your folder, do this:
-npm publish
-
You can give publish a url to a tarball, or a filename of a tarball,
-or a path to a folder.
-Note that pretty much everything in that folder will be exposed
-by default. So, if you have secret stuff in there, use a
-.npmignore
file to list out the globs to ignore, or publish
-from a fresh checkout.
-Brag about it
-Send emails, write blogs, blab in IRC.
-Tell the world how easy it is to install your program!
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/misc/npm-disputes.html b/deps/npm/html/partial/doc/misc/npm-disputes.html
deleted file mode 100644
index 15f650627c7a42..00000000000000
--- a/deps/npm/html/partial/doc/misc/npm-disputes.html
+++ /dev/null
@@ -1,92 +0,0 @@
- Handling Module Name Disputes
-SYNOPSIS
-
-Get the author email with npm owner ls <pkgname>
-Email the author, CC support@npmjs.com
-After a few weeks, if there's no resolution, we'll sort it out.
-
-Don't squat on package names. Publish code or move out of the way.
-DESCRIPTION
-There sometimes arise cases where a user publishes a module, and then
-later, some other user wants to use that name. Here are some common
-ways that happens (each of these is based on actual events.)
-
-Joe writes a JavaScript module foo
, which is not node-specific.
-Joe doesn't use node at all. Bob wants to use foo
in node, so he
-wraps it in an npm module. Some time later, Joe starts using node,
-and wants to take over management of his program.
-Bob writes an npm module foo
, and publishes it. Perhaps much
-later, Joe finds a bug in foo
, and fixes it. He sends a pull
-request to Bob, but Bob doesn't have the time to deal with it,
-because he has a new job and a new baby and is focused on his new
-erlang project, and kind of not involved with node any more. Joe
-would like to publish a new foo
, but can't, because the name is
-taken.
-Bob writes a 10-line flow-control library, and calls it foo
, and
-publishes it to the npm registry. Being a simple little thing, it
-never really has to be updated. Joe works for Foo Inc, the makers
-of the critically acclaimed and widely-marketed foo
JavaScript
-toolkit framework. They publish it to npm as foojs
, but people are
-routinely confused when npm install foo
is some different thing.
-Bob writes a parser for the widely-known foo
file format, because
-he needs it for work. Then, he gets a new job, and never updates the
-prototype. Later on, Joe writes a much more complete foo
parser,
-but can't publish, because Bob's foo
is in the way.
-
-The validity of Joe's claim in each situation can be debated. However,
-Joe's appropriate course of action in each case is the same.
-
-npm owner ls foo
. This will tell Joe the email address of the
-owner (Bob).
-Joe emails Bob, explaining the situation as respectfully as
-possible , and what he would like to do with the module name. He
-adds the npm support staff support@npmjs.com to the CC list of
-the email. Mention in the email that Bob can run npm owner add
-joe foo
to add Joe as an owner of the foo
package.
-After a reasonable amount of time, if Bob has not responded, or if
-Bob and Joe can't come to any sort of resolution, email support
-support@npmjs.com and we'll sort it out. ("Reasonable" is
-usually at least 4 weeks, but extra time is allowed around common
-holidays.)
-
-REASONING
-In almost every case so far, the parties involved have been able to reach
-an amicable resolution without any major intervention. Most people
-really do want to be reasonable, and are probably not even aware that
-they're in your way.
-Module ecosystems are most vibrant and powerful when they are as
-self-directed as possible. If an admin one day deletes something you
-had worked on, then that is going to make most people quite upset,
-regardless of the justification. When humans solve their problems by
-talking to other humans with respect, everyone has the chance to end up
-feeling good about the interaction.
-EXCEPTIONS
-Some things are not allowed, and will be removed without discussion if
-they are brought to the attention of the npm registry admins, including
-but not limited to:
-
-Malware (that is, a package designed to exploit or harm the machine on
-which it is installed).
-Violations of copyright or licenses (for example, cloning an
-MIT-licensed program, and then removing or changing the copyright and
-license statement).
-Illegal content.
-"Squatting" on a package name that you plan to use, but aren't
-actually using. Sorry, I don't care how great the name is, or how
-perfect a fit it is for the thing that someday might happen. If
-someone wants to use it today, and you're just taking up space with
-an empty tarball, you're going to be evicted.
-Putting empty packages in the registry. Packages must have SOME
-functionality. It can be silly, but it can't be nothing . (See
-also: squatting.)
-Doing weird things with the registry, like using it as your own
-personal application database or otherwise putting non-packagey
-things into it.
-
-If you see bad behavior like this, please report it right away.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/misc/npm-faq.html b/deps/npm/html/partial/doc/misc/npm-faq.html
deleted file mode 100644
index f9a13cf4edbe94..00000000000000
--- a/deps/npm/html/partial/doc/misc/npm-faq.html
+++ /dev/null
@@ -1,288 +0,0 @@
- Frequently Asked Questions
-Where can I find these docs in HTML?
-https://docs.npmjs.com/ , or run:
-npm config set viewer browser
-
to open these documents in your default web browser rather than man
.
-It didn't work.
-That's not really a question.
-Why didn't it work?
-I don't know yet.
-Read the error output, and if you can't figure out what it means,
-do what it says and post a bug with all the information it asks for.
-Where does npm put stuff?
-See npm-folders(5)
-tl;dr:
-
-Use the npm root
command to see where modules go, and the npm bin
-command to see where executables go
-Global installs are different from local installs. If you install
-something with the -g
flag, then its executables go in npm bin -g
-and its modules go in npm root -g
.
-
-How do I install something on my computer in a central location?
-Install it globally by tacking -g
or --global
to the command. (This
-is especially important for command line utilities that need to add
-their bins to the global system PATH
.)
-I installed something globally, but I can't require()
it
-Install it locally.
-The global install location is a place for command-line utilities
-to put their bins in the system PATH
. It's not for use with require()
.
-If you require()
a module in your code, then that means it's a
-dependency, and a part of your program. You need to install it locally
-in your program.
-Why can't npm just put everything in one place, like other package managers?
-Not every change is an improvement, but every improvement is a change.
-This would be like asking git to do network IO for every commit. It's
-not going to happen, because it's a terrible idea that causes more
-problems than it solves.
-It is much harder to avoid dependency conflicts without nesting
-dependencies. This is fundamental to the way that npm works, and has
-proven to be an extremely successful approach. See npm-folders(5)
for
-more details.
-If you want a package to be installed in one place, and have all your
-programs reference the same copy of it, then use the npm link
command.
-That's what it's for. Install it globally, then link it into each
-program that uses it.
-Whatever, I really want the old style 'everything global' style.
-Write your own package manager. You could probably even wrap up npm
-in a shell script if you really wanted to.
-npm will not help you do something that is known to be a bad idea.
-Should I check my node_modules
folder into git?
-Usually, no. Allow npm to resolve dependencies for your packages.
-For packages you deploy , such as websites and apps,
-you should use npm shrinkwrap to lock down your full dependency tree:
-https://docs.npmjs.com/cli/shrinkwrap
-If you are paranoid about depending on the npm ecosystem,
-you should run a private npm mirror or a private cache.
-If you want 100% confidence in being able to reproduce the specific bytes
-included in a deployment, you should use an additional mechanism that can
-verify contents rather than versions. For example,
-Amazon machine images, DigitalOcean snapshots, Heroku slugs, or simple tarballs.
-Is it 'npm' or 'NPM' or 'Npm'?
-npm should never be capitalized unless it is being displayed in a
-location that is customarily all-caps (such as the title of man pages.)
-If 'npm' is an acronym, why is it never capitalized?
-Contrary to the belief of many, "npm" is not in fact an abbreviation for
-"Node Package Manager". It is a recursive bacronymic abbreviation for
-"npm is not an acronym". (If it was "ninaa", then it would be an
-acronym, and thus incorrectly named.)
-"NPM", however, is an acronym (more precisely, a capitonym) for the
-National Association of Pastoral Musicians. You can learn more
-about them at http://npm.org/ .
-In software, "NPM" is a Non-Parametric Mapping utility written by
-Chris Rorden. You can analyze pictures of brains with it. Learn more
-about the (capitalized) NPM program at http://www.cabiatl.com/mricro/npm/ .
-The first seed that eventually grew into this flower was a bash utility
-named "pm", which was a shortened descendent of "pkgmakeinst", a
-bash function that was used to install various different things on different
-platforms, most often using Yahoo's yinst
. If npm
was ever an
-acronym for anything, it was node pm
or maybe new pm
.
-So, in all seriousness, the "npm" project is named after its command-line
-utility, which was organically selected to be easily typed by a right-handed
-programmer using a US QWERTY keyboard layout, ending with the
-right-ring-finger in a postition to type the -
key for flags and
-other command-line arguments. That command-line utility is always
-lower-case, though it starts most sentences it is a part of.
-How do I list installed packages?
-npm ls
-How do I search for packages?
-npm search
-Arguments are greps. npm search jsdom
shows jsdom packages.
-How do I update npm?
-npm install npm -g
-
You can also update all outdated local packages by doing npm update
without
-any arguments, or global packages by doing npm update -g
.
-Occasionally, the version of npm will progress such that the current
-version cannot be properly installed with the version that you have
-installed already. (Consider, if there is ever a bug in the update
-command.)
-In those cases, you can do this:
-curl https://www.npmjs.com/install.sh | sh
-
What is a package
?
-A package is:
-
-a) a folder containing a program described by a package.json file
-b) a gzipped tarball containing (a)
-c) a url that resolves to (b)
-d) a <name>@<version>
that is published on the registry with (c)
-e) a <name>@<tag>
that points to (d)
-f) a <name>
that has a "latest" tag satisfying (e)
-g) a git
url that, when cloned, results in (a).
-
-Even if you never publish your package, you can still get a lot of
-benefits of using npm if you just want to write a node program (a), and
-perhaps if you also want to be able to easily install it elsewhere
-after packing it up into a tarball (b).
-Git urls can be of the form:
-git://github.com/user/project.git#commit-ish
-git+ssh://user@hostname:project.git#commit-ish
-git+http://user@hostname/project/blah.git#commit-ish
-git+https://user@hostname/project/blah.git#commit-ish
-
The commit-ish
can be any tag, sha, or branch which can be supplied as
-an argument to git checkout
. The default is master
.
-What is a module
?
-A module is anything that can be loaded with require()
in a Node.js
-program. The following things are all examples of things that can be
-loaded as modules:
-
-A folder with a package.json
file containing a main
field.
-A folder with an index.js
file in it.
-A JavaScript file.
-
-Most npm packages are modules, because they are libraries that you
-load with require
. However, there's no requirement that an npm
-package be a module! Some only contain an executable command-line
-interface, and don't provide a main
field for use in Node programs.
-Almost all npm packages (at least, those that are Node programs)
-contain many modules within them (because every file they load with
-require()
is a module).
-In the context of a Node program, the module
is also the thing that
-was loaded from a file. For example, in the following program:
-var req = require('request')
-
we might say that "The variable req
refers to the request
module".
-So, why is it the "node_modules
" folder, but "package.json
" file? Why not node_packages
or module.json
?
-The package.json
file defines the package. (See "What is a
-package?" above.)
-The node_modules
folder is the place Node.js looks for modules.
-(See "What is a module?" above.)
-For example, if you create a file at node_modules/foo.js
and then
-had a program that did var f = require('foo.js')
then it would load
-the module. However, foo.js
is not a "package" in this case,
-because it does not have a package.json.
-Alternatively, if you create a package which does not have an
-index.js
or a "main"
field in the package.json
file, then it is
-not a module. Even if it's installed in node_modules
, it can't be
-an argument to require()
.
-
-No. This will never happen. This question comes up sometimes,
-because it seems silly from the outside that npm couldn't just be
-configured to put stuff somewhere else, and then npm could load them
-from there. It's an arbitrary spelling choice, right? What's the big
-deal?
-At the time of this writing, the string 'node_modules'
appears 151
-times in 53 separate files in npm and node core (excluding tests and
-documentation).
-Some of these references are in node's built-in module loader. Since
-npm is not involved at all at run-time, node itself would have to
-be configured to know where you've decided to stick stuff. Complexity
-hurdle #1. Since the Node module system is locked, this cannot be
-changed, and is enough to kill this request. But I'll continue, in
-deference to your deity's delicate feelings regarding spelling.
-Many of the others are in dependencies that npm uses, which are not
-necessarily tightly coupled to npm (in the sense that they do not read
-npm's configuration files, etc.) Each of these would have to be
-configured to take the name of the node_modules
folder as a
-parameter. Complexity hurdle #2.
-Furthermore, npm has the ability to "bundle" dependencies by adding
-the dep names to the "bundledDependencies"
list in package.json,
-which causes the folder to be included in the package tarball. What
-if the author of a module bundles its dependencies, and they use a
-different spelling for node_modules
? npm would have to rename the
-folder at publish time, and then be smart enough to unpack it using
-your locally configured name. Complexity hurdle #3.
-Furthermore, what happens when you change this name? Fine, it's
-easy enough the first time, just rename the node_modules
folders to
-./blergyblerp/
or whatever name you choose. But what about when you
-change it again? npm doesn't currently track any state about past
-configuration settings, so this would be rather difficult to do
-properly. It would have to track every previous value for this
-config, and always accept any of them, or else yesterday's install may
-be broken tomorrow. Complexity hurdle #4.
-Never going to happen. The folder is named node_modules
. It is
-written indelibly in the Node Way, handed down from the ancient times
-of Node 0.3.
-How do I install node with npm?
-You don't. Try one of these node version managers:
-Unix:
-
-Windows:
-
-How can I use npm for development?
-See npm-developers(7)
and package.json(5)
.
-You'll most likely want to npm link
your development folder. That's
-awesomely handy.
-To set up your own private registry, check out npm-registry(7)
.
-Can I list a url as a dependency?
-Yes. It should be a url to a gzipped tarball containing a single folder
-that has a package.json in its root, or a git url.
-(See "what is a package?" above.)
-How do I symlink to a dev folder so I don't have to keep re-installing?
-See npm-link(1)
-The package registry website. What is that exactly?
-See npm-registry(7)
.
-I forgot my password, and can't publish. How do I reset it?
-Go to https://npmjs.com/forgot .
-I get ECONNREFUSED a lot. What's up?
-Either the registry is down, or node's DNS isn't able to reach out.
-To check if the registry is down, open up
-https://registry.npmjs.org/ in a web browser. This will also tell
-you if you are just unable to access the internet for some reason.
-If the registry IS down, let us know by emailing support@npmjs.com
-or posting an issue at https://github.com/npm/npm/issues . If it's
-down for the world (and not just on your local network) then we're
-probably already being pinged about it.
-You can also often get a faster response by visiting the #npm channel
-on Freenode IRC.
-Why no namespaces?
-npm has only one global namespace. If you want to namespace your own packages,
-you may: simply use the -
character to separate the names or use scoped
-packages. npm is a mostly anarchic system. There is not sufficient need to
-impose namespace rules on everyone.
-As of 2.0, npm supports scoped packages, which allow you to publish a group of
-related modules without worrying about name collisions.
-Every npm user owns the scope associated with their username. For example, the
-user named npm
owns the scope @npm
. Scoped packages are published inside a
-scope by naming them as if they were files under the scope directory, e.g., by
-setting name
in package.json
to @npm/npm
.
-Scoped packages are supported by the public npm registry. The npm client is
-backwards-compatible with un-scoped registries, so it can be used to work with
-scoped and un-scoped registries at the same time.
-Unscoped packages can only depend on other unscoped packages. Scoped packages
-can depend on packages from their own scope, a different scope, or the public
-registry (unscoped).
-For the current documentation of scoped packages, see
-https://docs.npmjs.com/misc/scope
-References:
-
-For the reasoning behind the "one global namespace", please see this
-discussion: https://github.com/npm/npm/issues/798 (TL;DR: It doesn't
-actually make things better, and can make them worse.)
-
-For the pre-implementation discussion of the scoped package feature, see
-this discussion: https://github.com/npm/npm/issues/5239
-
-
-Who does npm?
-npm was originally written by Isaac Z. Schlueter, and many others have
-contributed to it, some of them quite substantially.
-The npm open source project, The npm Registry, and the community
-website are maintained and operated by the
-good folks at npm, Inc.
-I have a question or request not addressed here. Where should I put it?
-Post an issue on the github project:
-
-Why does npm hate me?
-npm is not capable of hatred. It loves everyone, especially you.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/misc/npm-index.html b/deps/npm/html/partial/doc/misc/npm-index.html
deleted file mode 100644
index a75c025771f879..00000000000000
--- a/deps/npm/html/partial/doc/misc/npm-index.html
+++ /dev/null
@@ -1,220 +0,0 @@
- Index of all npm documentation
-
-a JavaScript package manager
-Command Line Documentation
-Using npm on the command line
-
-javascript package manager
-
-Set access level on published packages
-
-Add a registry user account
-
-Display npm bin folder
-
-Bugs for a package in a web browser maybe
-
-Build a package
-
-REMOVED
-
-Manipulates packages cache
-
-Tab Completion for npm
-
-Manage the npm configuration files
-
-Reduce duplication
-
-Deprecate a version of a package
-
-Modify package distribution tags
-
-Docs for a package in a web browser maybe
-
-Edit an installed package
-
-Browse an installed package
-
-Search npm help documentation
-
-Get help on npm
-
-Interactively create a package.json file
-
-Install a package
-
-Symlink a package folder
-
-Log out of the registry
-
-List installed packages
-
-Check for outdated packages
-
-Manage package owners
-
-Create a tarball from a package
-
-Ping npm registry
-
-Display prefix
-
-Remove extraneous packages
-
-Publish a package
-
-Rebuild a package
-
-Open package repository page in the browser
-
-Restart a package
-
-Remove a package
-
-Display npm root
-
-Run arbitrary package scripts
-
-Search for packages
-
-Lock down dependency versions
-
-Mark your favorite packages
-
-View packages marked as favorites
-
-Start a package
-
-Stop a package
-
-Tag a published version
-
-Test a package
-
-Remove a package
-
-Remove a package from the registry
-
-Update a package
-
-Bump a package version
-
-View registry info
-
-Display npm username
-API Documentation
-Using npm in your Node programs
-
-javascript package manager
-
-Display npm bin folder
-
-Bugs for a package in a web browser maybe
-
-manage the npm cache programmatically
-
-npm commands
-
-Manage the npm configuration files
-
-Deprecate a version of a package
-
-Docs for a package in a web browser maybe
-
-Edit an installed package
-
-Browse an installed package
-
-Search the help pages
-
-Interactively create a package.json file
-
-install a package programmatically
-
-Symlink a package folder
-
-Load config settings
-
-List installed packages
-
-Check for outdated packages
-
-Manage package owners
-
-Create a tarball from a package
-
-Ping npm registry
-
-Display prefix
-
-Remove extraneous packages
-
-Publish a package
-
-Rebuild a package
-
-Open package repository page in the browser
-
-Restart a package
-
-Display npm root
-
-Run arbitrary package scripts
-
-Search for packages
-
-programmatically generate package shrinkwrap file
-
-Start a package
-
-Stop a package
-
-Tag a published version
-
-Test a package
-
-uninstall a package programmatically
-
-Remove a package from the registry
-
-Update a package
-
-Bump a package version
-
-View registry info
-
-Display npm username
-Files
-File system structures npm uses
-
-Folder Structures Used by npm
-
-The npm config files
-
-Specifics of npm's package.json handling
-Misc
-Various other bits and bobs
-
-npm's "funny" coding style
-
-More than you probably want to know about npm configuration
-
-Developer Guide
-
-Handling Module Name Disputes
-
-Frequently Asked Questions
-
-Index of all npm documentation
-
-The JavaScript Package Registry
-
-Scoped packages
-
-How npm handles the "scripts" field
-
-Cleaning the Slate
-
-The semantic versioner for npm
-
diff --git a/deps/npm/html/partial/doc/misc/npm-registry.html b/deps/npm/html/partial/doc/misc/npm-registry.html
deleted file mode 100644
index 8dd80d4d25b281..00000000000000
--- a/deps/npm/html/partial/doc/misc/npm-registry.html
+++ /dev/null
@@ -1,50 +0,0 @@
- The JavaScript Package Registry
-DESCRIPTION
-To resolve packages by name and version, npm talks to a registry website
-that implements the CommonJS Package Registry specification for reading
-package info.
-Additionally, npm's package registry implementation supports several
-write APIs as well, to allow for publishing packages and managing user
-account information.
-The official public npm registry is at http://registry.npmjs.org/ . It
-is powered by a CouchDB database, of which there is a public mirror at
-http://skimdb.npmjs.com/registry . The code for the couchapp is
-available at http://github.com/npm/npm-registry-couchapp .
-The registry URL used is determined by the scope of the package (see
-npm-scope(7)
). If no scope is specified, the default registry is used, which is
-supplied by the registry
config parameter. See npm-config(1)
,
-npmrc(5)
, and npm-config(7)
for more on managing npm's configuration.
-Can I run my own private registry?
-Yes!
-The easiest way is to replicate the couch database, and use the same (or
-similar) design doc to implement the APIs.
-If you set up continuous replication from the official CouchDB, and then
-set your internal CouchDB as the registry config, then you'll be able
-to read any published packages, in addition to your private ones, and by
-default will only publish internally.
-If you then want to publish a package for the whole world to see, you can
-simply override the --registry
option for that publish
command.
-I don't want my package published in the official registry. It's private.
-Set "private": true
in your package.json to prevent it from being
-published at all, or
-"publishConfig":{"registry":"http://my-internal-registry.local"}
-to force it to be published only to your internal registry.
-See package.json(5)
for more info on what goes in the package.json file.
-Will you replicate from my registry into the public one?
-No. If you want things to be public, then publish them into the public
-registry using npm. What little security there is would be for nought
-otherwise.
-Do I have to use couchdb to build a registry that npm can talk to?
-No, but it's way easier. Basically, yes, you do, or you have to
-effectively implement the entire CouchDB API anyway.
-Is there a website or something to see package docs and such?
-Yes, head over to https://npmjs.com/
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/misc/npm-scope.html b/deps/npm/html/partial/doc/misc/npm-scope.html
deleted file mode 100644
index f65c44036761fb..00000000000000
--- a/deps/npm/html/partial/doc/misc/npm-scope.html
+++ /dev/null
@@ -1,71 +0,0 @@
- Scoped packages
-DESCRIPTION
-All npm packages have a name. Some package names also have a scope. A scope
-follows the usual rules for package names (url-safe characters, no leading dots
-or underscores). When used in package names, preceded by an @-symbol and
-followed by a slash, e.g.
-@somescope/somepackagename
-
Scopes are a way of grouping related packages together, and also affect a few
-things about the way npm treats the package.
-Scoped packages are supported by the public npm registry. The npm
-client is backwards-compatible with un-scoped registries, so it can be
-used to work with scoped and un-scoped registries at the same time.
-Installing scoped packages
-Scoped packages are installed to a sub-folder of the regular installation
-folder, e.g. if your other packages are installed in node_modules/packagename
,
-scoped modules will be in node_modules/@myorg/packagename
. The scope folder
-(@myorg
) is simply the name of the scope preceded by an @-symbol, and can
-contain any number of scoped packages.
-A scoped package is installed by referencing it by name, preceded by an
-@-symbol, in npm install
:
-npm install @myorg/mypackage
-
Or in package.json
:
-"dependencies": {
- "@myorg/mypackage": "^1.3.0"
-}
-
Note that if the @-symbol is omitted in either case npm will instead attempt to
-install from GitHub; see npm-install(1)
.
-Requiring scoped packages
-Because scoped packages are installed into a scope folder, you have to
-include the name of the scope when requiring them in your code, e.g.
-require('@myorg/mypackage')
-
There is nothing special about the way Node treats scope folders, this is
-just specifying to require the module mypackage
in the folder called @myorg
.
-Publishing scoped packages
-Scoped packages can be published to any registry that supports them, including
-the public npm registry.
-(As of 2015-04-19, the public npm registry does support scoped packages)
-If you wish, you may associate a scope with a registry; see below.
-Publishing public scoped packages to the public npm registry
-To publish a public scoped package, you must specify --access public
with
-the initial publication. This will publish the package and set access
-to public
as if you had run npm access public
after publishing.
-Publishing private scoped packages to the npm registry
-To publish a private scoped package to the npm registry, you must have
-an npm Private Modules
-account.
-You can then publish the module with npm publish
or npm publish
---access restricted
, and it will be present in the npm registry, with
-restricted access. You can then change the access permissions, if
-desired, with npm access
or on the npmjs.com website.
-Associating a scope with a registry
-Scopes can be associated with a separate registry. This allows you to
-seamlessly use a mix of packages from the public npm registry and one or more
-private registries, such as npm Enterprise.
-You can associate a scope with a registry at login, e.g.
-npm login --registry=http://reg.example.com --scope=@myco
-
Scopes have a many-to-one relationship with registries: one registry can
-host multiple scopes, but a scope only ever points to one registry.
-You can also associate a scope with a registry using npm config
:
-npm config set @myco:registry http://reg.example.com
-
Once a scope is associated with a registry, any npm install
for a package
-with that scope will request packages from that registry instead. Any
-npm publish
for a package name that contains the scope will be published to
-that registry instead.
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/misc/npm-scripts.html b/deps/npm/html/partial/doc/misc/npm-scripts.html
deleted file mode 100644
index f4ce3221a3cdef..00000000000000
--- a/deps/npm/html/partial/doc/misc/npm-scripts.html
+++ /dev/null
@@ -1,187 +0,0 @@
- How npm handles the "scripts" field
-DESCRIPTION
-npm supports the "scripts" property of the package.json script, for the
-following scripts:
-
-prepublish:
-Run BEFORE the package is published. (Also run on local npm
-install
without any arguments.)
-publish, postpublish:
-Run AFTER the package is published.
-preinstall:
-Run BEFORE the package is installed
-install, postinstall:
-Run AFTER the package is installed.
-preuninstall, uninstall:
-Run BEFORE the package is uninstalled.
-postuninstall:
-Run AFTER the package is uninstalled.
-preversion, version:
-Run BEFORE bump the package version.
-postversion:
-Run AFTER bump the package version.
-pretest, test, posttest:
-Run by the npm test
command.
-prestop, stop, poststop:
-Run by the npm stop
command.
-prestart, start, poststart:
-Run by the npm start
command.
-prerestart, restart, postrestart:
-Run by the npm restart
command. Note: npm restart
will run the
-stop and start scripts if no restart
script is provided.
-
-Additionally, arbitrary scripts can be executed by running npm
-run-script <pkg> <stage>
. Pre and post commands with matching
-names will be run for those as well (e.g. premyscript
, myscript
,
-postmyscript
).
-COMMON USES
-If you need to perform operations on your package before it is used, in a way
-that is not dependent on the operating system or architecture of the
-target system, use a prepublish
script. This includes
-tasks such as:
-
-Compiling CoffeeScript source code into JavaScript.
-Creating minified versions of JavaScript source code.
-Fetching remote resources that your package will use.
-
-The advantage of doing these things at prepublish
time is that they can be done once, in a
-single place, thus reducing complexity and variability.
-Additionally, this means that:
-
-You can depend on coffee-script
as a devDependency
, and thus
-your users don't need to have it installed.
-You don't need to include minifiers in your package, reducing
-the size for your users.
-You don't need to rely on your users having curl
or wget
or
-other system tools on the target machines.
-
-DEFAULT VALUES
-npm will default some script values based on package contents.
-
-"start": "node server.js"
:
-If there is a server.js
file in the root of your package, then npm
-will default the start
command to node server.js
.
-
-"preinstall": "node-waf clean || true; node-waf configure build"
:
-If there is a wscript
file in the root of your package, npm will
-default the preinstall
command to compile using node-waf.
-
-
-USER
-If npm was invoked with root privileges, then it will change the uid
-to the user account or uid specified by the user
config, which
-defaults to nobody
. Set the unsafe-perm
flag to run scripts with
-root privileges.
-ENVIRONMENT
-Package scripts run in an environment where many pieces of information
-are made available regarding the setup of npm and the current state of
-the process.
-path
-If you depend on modules that define executable scripts, like test
-suites, then those executables will be added to the PATH
for
-executing the scripts. So, if your package.json has this:
-{ "name" : "foo"
-, "dependencies" : { "bar" : "0.1.x" }
-, "scripts": { "start" : "bar ./test" } }
-
then you could run npm start
to execute the bar
script, which is
-exported into the node_modules/.bin
directory on npm install
.
-package.json vars
-The package.json fields are tacked onto the npm_package_
prefix. So,
-for instance, if you had {"name":"foo", "version":"1.2.5"}
in your
-package.json file, then your package scripts would have the
-npm_package_name
environment variable set to "foo", and the
-npm_package_version
set to "1.2.5"
-configuration
-Configuration parameters are put in the environment with the
-npm_config_
prefix. For instance, you can view the effective root
-config by checking the npm_config_root
environment variable.
-Special: package.json "config" object
-The package.json "config" keys are overwritten in the environment if
-there is a config param of <name>[@<version>]:<key>
. For example,
-if the package.json has this:
-{ "name" : "foo"
-, "config" : { "port" : "8080" }
-, "scripts" : { "start" : "node server.js" } }
-
and the server.js is this:
-http.createServer(...).listen(process.env.npm_package_config_port)
-
then the user could change the behavior by doing:
-npm config set foo:port 80
-
current lifecycle event
-Lastly, the npm_lifecycle_event
environment variable is set to
-whichever stage of the cycle is being executed. So, you could have a
-single script used for different parts of the process which switches
-based on what's currently happening.
-Objects are flattened following this format, so if you had
-{"scripts":{"install":"foo.js"}}
in your package.json, then you'd
-see this in the script:
-process.env.npm_package_scripts_install === "foo.js"
-
EXAMPLES
-For example, if your package.json contains this:
-{ "scripts" :
- { "install" : "scripts/install.js"
- , "postinstall" : "scripts/install.js"
- , "uninstall" : "scripts/uninstall.js"
- }
-}
-
then the scripts/install.js
will be called for the install,
-post-install, stages of the lifecycle, and the scripts/uninstall.js
-would be called when the package is uninstalled. Since
-scripts/install.js
is running for three different phases, it would
-be wise in this case to look at the npm_lifecycle_event
environment
-variable.
-If you want to run a make command, you can do so. This works just
-fine:
-{ "scripts" :
- { "preinstall" : "./configure"
- , "install" : "make && make install"
- , "test" : "make test"
- }
-}
-
EXITING
-Scripts are run by passing the line as a script argument to sh
.
-If the script exits with a code other than 0, then this will abort the
-process.
-Note that these script files don't have to be nodejs or even
-javascript programs. They just have to be some kind of executable
-file.
-HOOK SCRIPTS
-If you want to run a specific script at a specific lifecycle event for
-ALL packages, then you can use a hook script.
-Place an executable file at node_modules/.hooks/{eventname}
, and
-it'll get run for all packages when they are going through that point
-in the package lifecycle for any packages installed in that root.
-Hook scripts are run exactly the same way as package.json scripts.
-That is, they are in a separate child process, with the env described
-above.
-BEST PRACTICES
-
-Don't exit with a non-zero error code unless you really mean it.
-Except for uninstall scripts, this will cause the npm action to
-fail, and potentially be rolled back. If the failure is minor or
-only will prevent some optional features, then it's better to just
-print a warning and exit successfully.
-Try not to use scripts to do what npm can do for you. Read through
-package.json(5)
to see all the things that you can specify and enable
-by simply describing your package appropriately. In general, this
-will lead to a more robust and consistent state.
-Inspect the env to determine where to put things. For instance, if
-the npm_config_binroot
environ is set to /home/user/bin
, then
-don't try to install executables into /usr/local/bin
. The user
-probably set it up that way for a reason.
-Don't prefix your script commands with "sudo". If root permissions
-are required for some reason, then it'll fail with that error, and
-the user will sudo the npm command in question.
-Don't use install
. Use a .gyp
file for compilation, and prepublish
-for anything else. You should almost never have to explicitly set a
-preinstall or install script. If you are doing this, please consider if
-there is another option. The only valid use of install
or preinstall
-scripts is for compilation which must be done on the target architecture.
-
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/misc/removing-npm.html b/deps/npm/html/partial/doc/misc/removing-npm.html
deleted file mode 100644
index 3b3968bfc012fa..00000000000000
--- a/deps/npm/html/partial/doc/misc/removing-npm.html
+++ /dev/null
@@ -1,37 +0,0 @@
- Cleaning the Slate
-SYNOPSIS
-So sad to see you go.
-sudo npm uninstall npm -g
-
Or, if that fails, get the npm source code, and do:
-sudo make uninstall
-
More Severe Uninstalling
-Usually, the above instructions are sufficient. That will remove
-npm, but leave behind anything you've installed.
-If that doesn't work, or if you require more drastic measures,
-continue reading.
-Note that this is only necessary for globally-installed packages. Local
-installs are completely contained within a project's node_modules
-folder. Delete that folder, and everything is gone (unless a package's
-install script is particularly ill-behaved).
-This assumes that you installed node and npm in the default place. If
-you configured node with a different --prefix
, or installed npm with a
-different prefix setting, then adjust the paths accordingly, replacing
-/usr/local
with your install prefix.
-To remove everything npm-related manually:
-rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/npm*
-
If you installed things with npm, then your best bet is to uninstall
-them with npm first, and then install them again once you have a
-proper install. This can help find any symlinks that are lying
-around:
-ls -laF /usr/local/{lib/node{,/.npm},bin,share/man} | grep npm
-
Prior to version 0.3, npm used shim files for executables and node
-modules. To track those down, you can do the following:
-find /usr/local/{lib/node,bin} -exec grep -l npm \{\} \; ;
-
(This is also in the README file.)
-SEE ALSO
-
-
diff --git a/deps/npm/html/partial/doc/misc/semver.html b/deps/npm/html/partial/doc/misc/semver.html
deleted file mode 100644
index 9b763ed18caaa8..00000000000000
--- a/deps/npm/html/partial/doc/misc/semver.html
+++ /dev/null
@@ -1,262 +0,0 @@
- The semantic versioner for npm
-Usage
-$ npm install semver
-
-semver.valid('1.2.3') // '1.2.3'
-semver.valid('a.b.c') // null
-semver.clean(' =v1.2.3 ') // '1.2.3'
-semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
-semver.gt('1.2.3', '9.8.7') // false
-semver.lt('1.2.3', '9.8.7') // true
-
As a command-line utility:
-$ semver -h
-
-Usage: semver <version> [<version> [...]] [-r <range> | -i <inc> | --preid <identifier> | -l | -rv]
-Test if version(s) satisfy the supplied range(s), and sort them.
-
-Multiple versions or ranges may be supplied, unless increment
-option is specified. In that case, only a single version may
-be used, and it is incremented by the specified level
-
-Program exits successfully if any valid version satisfies
-all supplied ranges, and prints all satisfying versions.
-
-If no versions are valid, or ranges are not satisfied,
-then exits failure.
-
-Versions are printed in ascending order, so supplying
-multiple versions to the utility will just sort them.
-
Versions
-A "version" is described by the v2.0.0
specification found at
-http://semver.org/ .
-A leading "="
or "v"
character is stripped off and ignored.
-Ranges
-A version range
is a set of comparators
which specify versions
-that satisfy the range.
-A comparator
is composed of an operator
and a version
. The set
-of primitive operators
is:
-
-<
Less than
-<=
Less than or equal to
->
Greater than
->=
Greater than or equal to
-=
Equal. If no operator is specified, then equality is assumed,
-so this operator is optional, but MAY be included.
-
-For example, the comparator >=1.2.7
would match the versions
-1.2.7
, 1.2.8
, 2.5.3
, and 1.3.9
, but not the versions 1.2.6
-or 1.1.0
.
-Comparators can be joined by whitespace to form a comparator set
,
-which is satisfied by the intersection of all of the comparators
-it includes.
-A range is composed of one or more comparator sets, joined by ||
. A
-version matches a range if and only if every comparator in at least
-one of the ||
-separated comparator sets is satisfied by the version.
-For example, the range >=1.2.7 <1.3.0
would match the versions
-1.2.7
, 1.2.8
, and 1.2.99
, but not the versions 1.2.6
, 1.3.0
,
-or 1.1.0
.
-The range 1.2.7 || >=1.2.9 <2.0.0
would match the versions 1.2.7
,
-1.2.9
, and 1.4.6
, but not the versions 1.2.8
or 2.0.0
.
-
-If a version has a prerelease tag (for example, 1.2.3-alpha.3
) then
-it will only be allowed to satisfy comparator sets if at least one
-comparator with the same [major, minor, patch]
tuple also has a
-prerelease tag.
-For example, the range >1.2.3-alpha.3
would be allowed to match the
-version 1.2.3-alpha.7
, but it would not be satisfied by
-3.4.5-alpha.9
, even though 3.4.5-alpha.9
is technically "greater
-than" 1.2.3-alpha.3
according to the SemVer sort rules. The version
-range only accepts prerelease tags on the 1.2.3
version. The
-version 3.4.5
would satisfy the range, because it does not have a
-prerelease flag, and 3.4.5
is greater than 1.2.3-alpha.7
.
-The purpose for this behavior is twofold. First, prerelease versions
-frequently are updated very quickly, and contain many breaking changes
-that are (by the author's design) not yet fit for public consumption.
-Therefore, by default, they are excluded from range matching
-semantics.
-Second, a user who has opted into using a prerelease version has
-clearly indicated the intent to use that specific set of
-alpha/beta/rc versions. By including a prerelease tag in the range,
-the user is indicating that they are aware of the risk. However, it
-is still not appropriate to assume that they have opted into taking a
-similar risk on the next set of prerelease versions.
-Prerelease Identifiers
-The method .inc
takes an additional identifier
string argument that
-will append the value of the string as a prerelease identifier:
-> semver.inc('1.2.3', 'pre', 'beta')
-'1.2.4-beta.0'
-
-command-line example:
-$ semver 1.2.3 -i prerelease --preid beta
-1.2.4-beta.0
-
-Which then can be used to increment further:
-$ semver 1.2.4-beta.0 -i prerelease
-1.2.4-beta.1
-
-Advanced Range Syntax
-Advanced range syntax desugars to primitive comparators in
-deterministic ways.
-Advanced ranges may be combined in the same way as primitive
-comparators using white space or ||
.
-Hyphen Ranges X.Y.Z - A.B.C
-Specifies an inclusive set.
-
-1.2.3 - 2.3.4
:= >=1.2.3 <=2.3.4
-
-If a partial version is provided as the first version in the inclusive
-range, then the missing pieces are replaced with zeroes.
-
-1.2 - 2.3.4
:= >=1.2.0 <=2.3.4
-
-If a partial version is provided as the second version in the
-inclusive range, then all versions that start with the supplied parts
-of the tuple are accepted, but nothing that would be greater than the
-provided tuple parts.
-
-1.2.3 - 2.3
:= >=1.2.3 <2.4.0
-1.2.3 - 2
:= >=1.2.3 <3.0.0
-
-X-Ranges 1.2.x
1.X
1.2.*
*
-Any of X
, x
, or *
may be used to "stand in" for one of the
-numeric values in the [major, minor, patch]
tuple.
-
-*
:= >=0.0.0
(Any version satisfies)
-1.x
:= >=1.0.0 <2.0.0
(Matching major version)
-1.2.x
:= >=1.2.0 <1.3.0
(Matching major and minor versions)
-
-A partial version range is treated as an X-Range, so the special
-character is in fact optional.
-
-""
(empty string) := *
:= >=0.0.0
-1
:= 1.x.x
:= >=1.0.0 <2.0.0
-1.2
:= 1.2.x
:= >=1.2.0 <1.3.0
-
-Tilde Ranges ~1.2.3
~1.2
~1
-Allows patch-level changes if a minor version is specified on the
-comparator. Allows minor-level changes if not.
-
-~1.2.3
:= >=1.2.3 <1.(2+1).0
:= >=1.2.3 <1.3.0
-~1.2
:= >=1.2.0 <1.(2+1).0
:= >=1.2.0 <1.3.0
(Same as 1.2.x
)
-~1
:= >=1.0.0 <(1+1).0.0
:= >=1.0.0 <2.0.0
(Same as 1.x
)
-~0.2.3
:= >=0.2.3 <0.(2+1).0
:= >=0.2.3 <0.3.0
-~0.2
:= >=0.2.0 <0.(2+1).0
:= >=0.2.0 <0.3.0
(Same as 0.2.x
)
-~0
:= >=0.0.0 <(0+1).0.0
:= >=0.0.0 <1.0.0
(Same as 0.x
)
-~1.2.3-beta.2
:= >=1.2.3-beta.2 <1.3.0
Note that prereleases in
-the 1.2.3
version will be allowed, if they are greater than or
-equal to beta.2
. So, 1.2.3-beta.4
would be allowed, but
-1.2.4-beta.2
would not, because it is a prerelease of a
-different [major, minor, patch]
tuple.
-
-Caret Ranges ^1.2.3
^0.2.5
^0.0.4
-Allows changes that do not modify the left-most non-zero digit in the
-[major, minor, patch]
tuple. In other words, this allows patch and
-minor updates for versions 1.0.0
and above, patch updates for
-versions 0.X >=0.1.0
, and no updates for versions 0.0.X
.
-Many authors treat a 0.x
version as if the x
were the major
-"breaking-change" indicator.
-Caret ranges are ideal when an author may make breaking changes
-between 0.2.4
and 0.3.0
releases, which is a common practice.
-However, it presumes that there will not be breaking changes between
-0.2.4
and 0.2.5
. It allows for changes that are presumed to be
-additive (but non-breaking), according to commonly observed practices.
-
-^1.2.3
:= >=1.2.3 <2.0.0
-^0.2.3
:= >=0.2.3 <0.3.0
-^0.0.3
:= >=0.0.3 <0.0.4
-^1.2.3-beta.2
:= >=1.2.3-beta.2 <2.0.0
Note that prereleases in
-the 1.2.3
version will be allowed, if they are greater than or
-equal to beta.2
. So, 1.2.3-beta.4
would be allowed, but
-1.2.4-beta.2
would not, because it is a prerelease of a
-different [major, minor, patch]
tuple.
-^0.0.3-beta
:= >=0.0.3-beta <0.0.4
Note that prereleases in the
-0.0.3
version only will be allowed, if they are greater than or
-equal to beta
. So, 0.0.3-pr.2
would be allowed.
-
-When parsing caret ranges, a missing patch
value desugars to the
-number 0
, but will allow flexibility within that value, even if the
-major and minor versions are both 0
.
-
-^1.2.x
:= >=1.2.0 <2.0.0
-^0.0.x
:= >=0.0.0 <0.1.0
-^0.0
:= >=0.0.0 <0.1.0
-
-A missing minor
and patch
values will desugar to zero, but also
-allow flexibility within those values, even if the major version is
-zero.
-
-^1.x
:= >=1.0.0 <2.0.0
-^0.x
:= >=0.0.0 <1.0.0
-
-Functions
-All methods and classes take a final loose
boolean argument that, if
-true, will be more forgiving about not-quite-valid semver strings.
-The resulting output will always be 100% strict, of course.
-Strict-mode Comparators and Ranges will be strict about the SemVer
-strings that they parse.
-
-valid(v)
: Return the parsed version, or null if it's not valid.
-inc(v, release)
: Return the version incremented by the release
-type (major
, premajor
, minor
, preminor
, patch
,
-prepatch
, or prerelease
), or null if it's not valid
-premajor
in one call will bump the version up to the next major
-version and down to a prerelease of that major version.
-preminor
, and prepatch
work the same way.
-If called from a non-prerelease version, the prerelease
will work the
-same as prepatch
. It increments the patch version, then makes a
-prerelease. If the input version is already a prerelease it simply
-increments it.
-
-
-major(v)
: Return the major version number.
-minor(v)
: Return the minor version number.
-patch(v)
: Return the patch version number.
-
-Comparison
-
-gt(v1, v2)
: v1 > v2
-gte(v1, v2)
: v1 >= v2
-lt(v1, v2)
: v1 < v2
-lte(v1, v2)
: v1 <= v2
-eq(v1, v2)
: v1 == v2
This is true if they're logically equivalent,
-even if they're not the exact same string. You already know how to
-compare strings.
-neq(v1, v2)
: v1 != v2
The opposite of eq
.
-cmp(v1, comparator, v2)
: Pass in a comparison string, and it'll call
-the corresponding function above. "==="
and "!=="
do simple
-string comparison, but are included for completeness. Throws if an
-invalid comparison string is provided.
-compare(v1, v2)
: Return 0
if v1 == v2
, or 1
if v1
is greater, or -1
if
-v2
is greater. Sorts in ascending order if passed to Array.sort()
.
-rcompare(v1, v2)
: The reverse of compare. Sorts an array of versions
-in descending order when passed to Array.sort()
.
-diff(v1, v2)
: Returns difference between two versions by the release type
-(major
, premajor
, minor
, preminor
, patch
, prepatch
, or prerelease
),
-or null if the versions are the same.
-
-Ranges
-
-validRange(range)
: Return the valid range or null if it's not valid
-satisfies(version, range)
: Return true if the version satisfies the
-range.
-maxSatisfying(versions, range)
: Return the highest version in the list
-that satisfies the range, or null
if none of them do.
-gtr(version, range)
: Return true
if version is greater than all the
-versions possible in the range.
-ltr(version, range)
: Return true
if version is less than all the
-versions possible in the range.
-outside(version, range, hilo)
: Return true if the version is outside
-the bounds of the range in either the high or low direction. The
-hilo
argument must be either the string '>'
or '<'
. (This is
-the function called by gtr
and ltr
.)
-
-Note that, since ranges may be non-contiguous, a version might not be
-greater than a range, less than a range, or satisfy a range! For
-example, the range 1.2 <1.2.9 || >2.0.0
would have a hole from 1.2.9
-until 2.0.0
, so the version 1.2.10
would not be greater than the
-range (because 2.0.1
satisfies, which is higher), nor less than the
-range (since 1.2.8
satisfies, which is lower), and it also does not
-satisfy the range.
-If you want to know if a version satisfies or does not satisfy a
-range, use the satisfies(version, range)
function.
-
diff --git a/deps/npm/lib/access.js b/deps/npm/lib/access.js
index cf960a67d8b8aa..790a760cb72201 100644
--- a/deps/npm/lib/access.js
+++ b/deps/npm/lib/access.js
@@ -1,123 +1,110 @@
-var assert = require("assert")
-var resolve = require("path").resolve
-var url = require("url")
+'use strict'
-var log = require("npmlog")
-var readPackageJson = require("read-package-json")
+var resolve = require('path').resolve
-var mapToRegistry = require("./utils/map-to-registry.js")
-var npa = require("npm-package-arg")
-var npm = require("./npm.js")
+var readPackageJson = require('read-package-json')
+var mapToRegistry = require('./utils/map-to-registry.js')
+var npm = require('./npm.js')
+
+var whoami = require('./whoami')
module.exports = access
-access.usage = "npm access public []"
- + "\nnpm access restricted []"
- + "\nnpm access add []"
- + "\nnpm access rm []"
- + "\nnpm access ls []"
- + "\nnpm access edit []"
+access.usage =
+ 'npm access public []\n' +
+ 'npm access restricted []\n' +
+ 'npm access grant []\n' +
+ 'npm access revoke []\n' +
+ 'npm access ls-packages [||]\n' +
+ 'npm access ls-collaborators [ []]\n' +
+ 'npm access edit []'
+
+access.subcommands = ['public', 'restricted', 'grant', 'revoke',
+ 'ls-packages', 'ls-collaborators', 'edit']
access.completion = function (opts, cb) {
var argv = opts.conf.argv.remain
if (argv.length === 2) {
- return cb(null, ["public", "restricted", "add", "rm", "ls", "edit"])
+ return cb(null, access.subcommands)
}
switch (argv[2]) {
- case "public":
- case "restricted":
- case "ls":
- case "edit":
- return cb(new Error("unimplemented: packages you can change"))
- case "add":
- if (argv.length === 3) return cb(null, ["read-only", "read-write"])
-
- return cb(new Error("unimplemented: entities and packages"))
- case "rm":
- return cb(new Error("unimplemented: entities and packages"))
+ case 'grant':
+ if (argv.length === 3) {
+ return cb(null, ['read-only', 'read-write'])
+ } else {
+ return cb(null, [])
+ }
+ case 'public':
+ case 'restricted':
+ case 'ls-packages':
+ case 'ls-collaborators':
+ case 'edit':
+ return cb(null, [])
+ case 'revoke':
+ return cb(null, [])
default:
- return cb(new Error(argv[2]+" not recognized"))
+ return cb(new Error(argv[2] + ' not recognized'))
}
}
function access (args, cb) {
var cmd = args.shift()
- switch (cmd) {
- case "public": case "restricted": return changeAccess(args, cmd, cb)
- case "add": case "set": return add(args, cb)
- case "rm": case "del": case "clear": return rm(args, cb)
- case "list": case "sl": case "ls": return ls(args, cb)
- case "edit": case "ed": return edit(args, cb)
- default: return cb("Usage:\n"+access.usage)
- }
-}
-
-function changeAccess (args, level, cb) {
- assert(Array.isArray(args), "changeAccess requires args be an array")
- assert(
- ["public", "restricted"].indexOf(level) !== -1,
- "access level must be either 'public' or 'restricted'"
- )
- assert(typeof cb === "function", "changeAccess requires a callback")
-
- var p = (args.shift() || "").trim()
- if (!p) return getCurrentPackage(level, cb)
- changeAccess_(p, level, cb)
-}
-
-function getCurrentPackage (level, cb) {
- var here = resolve(npm.prefix, "package.json")
- log.verbose("setPackageLevel", "here", here)
-
- readPackageJson(here, function (er, data) {
- if (er) return cb(er)
-
- if (!data.name) {
- return cb(new Error("Package must be named"))
- }
-
- changeAccess_(data.name, level, cb)
+ var params
+ return parseParams(cmd, args, function (err, p) {
+ if (err) { return cb(err) }
+ params = p
+ return mapToRegistry(params.package, npm.config, invokeCmd)
})
-}
-function changeAccess_ (name, level, cb) {
- log.verbose("changeAccess", "name", name, "level", level)
- mapToRegistry(name, npm.config, function (er, uri, auth, base) {
- if (er) return cb(er)
-
- var data = npa(name)
- if (!data.scope) {
- var msg = "Sorry, you can't change the access level of unscoped packages."
- log.error("access", msg)
- return cb(new Error(msg))
+ function invokeCmd (err, uri, auth, base) {
+ if (err) { return cb(err) }
+ params.auth = auth
+ try {
+ return npm.registry.access(cmd, uri, params, function (err, data) {
+ !err && data && console.log(JSON.stringify(data, undefined, 2))
+ cb(err, data)
+ })
+ } catch (e) {
+ cb(e.message + '\n\nUsage:\n' + access.usage)
}
+ }
+}
- // name must be scoped, so escape separator
- name = name.replace("/", "%2f")
- // FIXME: mapToRegistry still isn't generic enough SIGH
- uri = url.resolve(base, "-/package/"+name+"/access")
- var params = {
- level : level,
- auth : auth
+function parseParams (cmd, args, cb) {
+ var params = {}
+ if (cmd === 'grant') {
+ params.permissions = args.shift()
+ }
+ if (['grant', 'revoke', 'ls-packages'].indexOf(cmd) !== -1) {
+ var entity = (args.shift() || '').split(':')
+ params.scope = entity[0]
+ params.team = entity[1]
+ }
+ getPackage(args.shift(), function (err, pkg) {
+ if (err) { return cb(err) }
+ params.package = pkg
+
+ if (!params.scope && cmd === 'ls-packages') {
+ whoami([], true, function (err, scope) {
+ params.scope = scope
+ cb(err, params)
+ })
+ } else {
+ if (cmd === 'ls-collaborators') {
+ params.user = args.shift()
+ }
+ cb(null, params)
}
-
- npm.registry.access(uri, params, cb)
})
}
-function add (args, cb) {
- return cb(new Error("npm access add isn't implemented yet!"))
-}
-
-function rm (args, cb) {
- return cb(new Error("npm access rm isn't implemented yet!"))
-}
-
-function ls (args, cb) {
- return cb(new Error("npm access ls isn't implemented yet!"))
-}
-
-function edit (args, cb) {
- return cb(new Error("npm access edit isn't implemented yet!"))
+function getPackage (name, cb) {
+ if (name && name.trim()) {
+ cb(null, name.trim())
+ } else {
+ readPackageJson(
+ resolve(npm.prefix, 'package.json'),
+ function (err, data) { cb(err, data.name) })
+ }
}
diff --git a/deps/npm/lib/adduser.js b/deps/npm/lib/adduser.js
index f59372a296ccf0..367f3ba0d92754 100644
--- a/deps/npm/lib/adduser.js
+++ b/deps/npm/lib/adduser.js
@@ -8,7 +8,7 @@ var log = require("npmlog")
, crypto
try {
- crypto = process.binding("crypto") && require("crypto")
+ crypto = require("crypto")
} catch (ex) {}
adduser.usage = "npm adduser\nThen enter stuff at the prompts"
diff --git a/deps/npm/lib/build.js b/deps/npm/lib/build.js
index c5ee76e5c851c4..1f2d2efceb4618 100644
--- a/deps/npm/lib/build.js
+++ b/deps/npm/lib/build.js
@@ -122,10 +122,10 @@ function shouldWarn(pkg, folder, global, cb) {
// current searched package is the linked package on first call
if (linkedPkg !== currentPkg) {
- if (!topPkg.dependencies) return cb()
-
// don't generate a warning if it's listed in dependencies
- if (Object.keys(topPkg.dependencies).indexOf(currentPkg) === -1) {
+ if (Object.keys(topPkg.dependencies || {})
+ .concat(Object.keys(topPkg.devDependencies || {}))
+ .indexOf(currentPkg) === -1) {
if (top && pkg.preferGlobal && !global) {
log.warn("prefer global", pkg._id + " should be installed with -g")
diff --git a/deps/npm/lib/link.js b/deps/npm/lib/link.js
index 916ebd6afeff45..19c5dd062906e6 100644
--- a/deps/npm/lib/link.js
+++ b/deps/npm/lib/link.js
@@ -26,13 +26,13 @@ link.completion = function (opts, cb) {
}
function link (args, cb) {
- if (process.platform === "win32") {
- var semver = require("semver")
- if (!semver.satisfies(process.version, ">=0.7.9")) {
- var msg = "npm link not supported on windows prior to node 0.7.9"
- , e = new Error(msg)
- e.code = "ENOTSUP"
- e.errno = require("constants").ENOTSUP
+ if (process.platform === 'win32') {
+ var semver = require('semver')
+ if (!semver.gte(process.version, '0.7.9')) {
+ var msg = 'npm link not supported on windows prior to node 0.7.9'
+ var e = new Error(msg)
+ e.code = 'ENOTSUP'
+ e.errno = require('constants').ENOTSUP
return cb(e)
}
}
@@ -97,14 +97,13 @@ function linkInstall (pkgs, cb) {
function next () {
chain
- ( [ [npm.commands, "unbuild", [target]]
- , [function (cb) {
+ ( [ [function (cb) {
log.verbose("link", "symlinking %s to %s", pp, target)
cb()
}]
, [symlink, pp, target]
- // do run lifecycle scripts - full build here.
- , rp && [build, [target]]
+ // do not run any scripts
+ , rp && [build, [target], npm.config.get("global"), build._noLC, true]
, [ resultPrinter, pkg, pp, target, rp ] ]
, cb )
}
diff --git a/deps/npm/lib/npm.js b/deps/npm/lib/npm.js
index 97cdad4de264bc..c049d95ba6e24b 100644
--- a/deps/npm/lib/npm.js
+++ b/deps/npm/lib/npm.js
@@ -113,6 +113,7 @@ var commandCache = {}
, "unpublish"
, "owner"
, "access"
+ , "team"
, "deprecate"
, "shrinkwrap"
diff --git a/deps/npm/lib/run-script.js b/deps/npm/lib/run-script.js
index 057af2bc69cb73..2c805615a42e3a 100644
--- a/deps/npm/lib/run-script.js
+++ b/deps/npm/lib/run-script.js
@@ -62,7 +62,7 @@ function runScript (args, cb) {
function list(cb) {
var json = path.join(npm.localPrefix, "package.json")
var cmdList = [ "publish", "install", "uninstall"
- , "test", "stop", "start", "restart"
+ , "test", "stop", "start", "restart", "version"
].reduce(function (l, p) {
return l.concat(["pre" + p, p, "post" + p])
}, [])
diff --git a/deps/npm/lib/team.js b/deps/npm/lib/team.js
new file mode 100644
index 00000000000000..324d8df5e22848
--- /dev/null
+++ b/deps/npm/lib/team.js
@@ -0,0 +1,54 @@
+var mapToRegistry = require('./utils/map-to-registry.js')
+var npm = require('./npm')
+
+module.exports = team
+
+team.subcommands = ['create', 'destroy', 'add', 'rm', 'ls', 'edit']
+
+team.usage =
+ 'npm team create \n' +
+ 'npm team destroy \n' +
+ 'npm team add \n' +
+ 'npm team rm \n' +
+ 'npm team ls |\n' +
+ 'npm team edit '
+
+team.completion = function (opts, cb) {
+ var argv = opts.conf.argv.remain
+ if (argv.length === 2) {
+ return cb(null, team.subcommands)
+ }
+ switch (argv[2]) {
+ case 'ls':
+ case 'create':
+ case 'destroy':
+ case 'add':
+ case 'rm':
+ case 'edit':
+ return cb(null, [])
+ default:
+ return cb(new Error(argv[2] + ' not recognized'))
+ }
+}
+
+function team (args, cb) {
+ // Entities are in the format :
+ var cmd = args.shift()
+ var entity = (args.shift() || '').split(':')
+ return mapToRegistry('/', npm.config, function (err, uri, auth) {
+ if (err) { return cb(err) }
+ try {
+ return npm.registry.team(cmd, uri, {
+ auth: auth,
+ scope: entity[0],
+ team: entity[1],
+ user: args.shift()
+ }, function (err, data) {
+ !err && data && console.log(JSON.stringify(data, undefined, 2))
+ cb(err, data)
+ })
+ } catch (e) {
+ cb(e.message + '\n\nUsage:\n' + team.usage)
+ }
+ })
+}
diff --git a/deps/npm/lib/utils/completion.sh b/deps/npm/lib/utils/completion.sh
index 3c7a3590d80f71..25bef2c17b4b29 100755
--- a/deps/npm/lib/utils/completion.sh
+++ b/deps/npm/lib/utils/completion.sh
@@ -7,17 +7,21 @@
# Or, maybe: npm completion > /usr/local/etc/bash_completion.d/npm
#
-COMP_WORDBREAKS=${COMP_WORDBREAKS/=/}
-COMP_WORDBREAKS=${COMP_WORDBREAKS/@/}
-export COMP_WORDBREAKS
-
if type complete &>/dev/null; then
_npm_completion () {
+ local words cword
+ if type _get_comp_words_by_ref &>/dev/null; then
+ _get_comp_words_by_ref -n = -n @ -w words -i cword
+ else
+ cword="$COMP_CWORD"
+ words=("${COMP_WORDS[@]}")
+ fi
+
local si="$IFS"
- IFS=$'\n' COMPREPLY=($(COMP_CWORD="$COMP_CWORD" \
+ IFS=$'\n' COMPREPLY=($(COMP_CWORD="$cword" \
COMP_LINE="$COMP_LINE" \
COMP_POINT="$COMP_POINT" \
- npm completion -- "${COMP_WORDS[@]}" \
+ npm completion -- "${words[@]}" \
2>/dev/null)) || return $?
IFS="$si"
}
diff --git a/deps/npm/lib/utils/error-handler.js b/deps/npm/lib/utils/error-handler.js
index 6ffb2867e2780c..dac6a17f251c90 100644
--- a/deps/npm/lib/utils/error-handler.js
+++ b/deps/npm/lib/utils/error-handler.js
@@ -366,6 +366,14 @@ function errorHandler (er) {
].join("\n"))
break
+ case "EISDIR":
+ log.error("eisdir", [er.message
+ ,"This is most likely not a problem with npm itself"
+ ,"and is related to npm not being able to find a package.json in"
+ ,"a package you are trying to install."
+ ].join("\n"))
+ break
+
default:
log.error("", er.message || er)
log.error("", ["", "If you need help, you may report this error at:"
diff --git a/deps/npm/lib/utils/lifecycle.js b/deps/npm/lib/utils/lifecycle.js
index a6f2b98e88d2f3..9805a1c0c1dc45 100644
--- a/deps/npm/lib/utils/lifecycle.js
+++ b/deps/npm/lib/utils/lifecycle.js
@@ -196,12 +196,12 @@ function runCmd_ (cmd, pkg, env, wd, stage, unsafe, uid, gid, cb_) {
conf.gid = gid ^ 0
}
- var sh = "sh"
- var shFlag = "-c"
+ var sh = 'sh'
+ var shFlag = '-c'
- if (process.platform === "win32") {
- sh = process.env.comspec || "cmd"
- shFlag = "/c"
+ if (process.platform === 'win32') {
+ sh = process.env.comspec || 'cmd'
+ shFlag = '/d /s /c'
conf.windowsVerbatimArguments = true
}
@@ -313,7 +313,9 @@ function makeEnv (data, prefix, env) {
, verPref = data.name + "@" + data.version + ":"
keys.forEach(function (i) {
- if (i.charAt(0) === "_" && i.indexOf("_"+namePref) !== 0) {
+ // in some rare cases (e.g. working with nerf darts), there are segmented
+ // "private" (underscore-prefixed) config names -- don't export
+ if (i.charAt(0) === '_' && i.indexOf('_' + namePref) !== 0 || i.match(/:_/)) {
return
}
var value = npm.config.get(i)
diff --git a/deps/npm/lib/version.js b/deps/npm/lib/version.js
index b33392488f3765..dbd48a0145a3d7 100644
--- a/deps/npm/lib/version.js
+++ b/deps/npm/lib/version.js
@@ -141,7 +141,7 @@ function dump (data, cb) {
function checkGit (localData, cb) {
fs.stat(path.join(npm.localPrefix, '.git'), function (er, s) {
- var doGit = !er && s.isDirectory() && npm.config.get('git-tag-version')
+ var doGit = !er && npm.config.get('git-tag-version')
if (!doGit) {
if (er) log.verbose('version', 'error checking for .git', er)
log.verbose('version', 'not tagging in git')
diff --git a/deps/npm/lib/whoami.js b/deps/npm/lib/whoami.js
index d92a6574a181e4..bef0184a0065bd 100644
--- a/deps/npm/lib/whoami.js
+++ b/deps/npm/lib/whoami.js
@@ -40,7 +40,7 @@ function whoami (args, silent, cb) {
// At this point, if they have a credentials object, it doesn't have a token
// or auth in it. Probably just the default registry.
var needAuth = new Error(
- "'npm whoami' requires you to be logged in."
+ "this command requires you to be logged in."
)
needAuth.code = 'ENEEDAUTH'
process.nextTick(cb.bind(this, needAuth))
diff --git a/deps/npm/man/man1/npm-README.1 b/deps/npm/man/man1/npm-README.1
index 997fa50f29a2da..e9951dba866120 100644
--- a/deps/npm/man/man1/npm-README.1
+++ b/deps/npm/man/man1/npm-README.1
@@ -1,4 +1,4 @@
-.TH "NPM" "1" "July 2015" "" ""
+.TH "NPM" "1" "September 2015" "" ""
.SH "NAME"
\fBnpm\fR \- a JavaScript package manager
.P
@@ -16,7 +16,7 @@ To install an old \fBand unsupported\fR version of npm that works on node 0\.3
and prior, clone the git repo and dig through the old tags and branches\.
.SH Super Easy Install
.P
-npm comes with node \fIhttp://nodejs\.org/download/\fR now\.
+npm is bundled with node \fIhttp://nodejs\.org/download/\fR\|\.
.SS Windows Computers
.P
Get the MSI \fIhttp://nodejs\.org/download/\fR\|\. npm is in it\.
diff --git a/deps/npm/man/man1/npm-access.1 b/deps/npm/man/man1/npm-access.1
index f1d7272469bf21..5914028674f9f1 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" "July 2015" "" ""
+.TH "NPM\-ACCESS" "1" "September 2015" "" ""
.SH "NAME"
\fBnpm-access\fR \- Set access level on published packages
.SH SYNOPSIS
@@ -8,10 +8,11 @@
npm access public []
npm access restricted []
-npm access add []
-npm access rm []
+npm access grant []
+npm access revoke []
-npm access ls []
+npm access ls\-packages [||]
+npm access ls\-collaborators [ []]
npm access edit []
.fi
.RE
@@ -27,13 +28,19 @@ subcommand\.
public / restricted:
Set a package to be either publicly accessible or restricted\.
.IP \(bu 2
-add / rm:
+grant / revoke:
Add or remove the ability of users and teams to have read\-only or read\-write
access to a package\.
.IP \(bu 2
-ls:
+ls\-packages:
+Show all of the packages a user or a team is able to access, along with the
+access level, except for read\-only public packages (it won't print the whole
+registry listing)
+.IP \(bu 2
+ls\-collaborators:
Show all of the access privileges for a package\. Will only show permissions
-for packages to which you have at least read access\.
+for packages to which you have at least read access\. If \fB\fP is passed in,
+the list is filtered only to teams \fIthat\fR user happens to belong to\.
.IP \(bu 2
edit:
Set the access privileges for a package at once using \fB$EDITOR\fP\|\.
@@ -65,9 +72,13 @@ of a team or directly as an owner\.
If your account is not paid, then attempts to publish scoped packages will fail
with an HTTP 402 status code (logically enough), unless you use
\fB\-\-access=public\fP\|\.
+.P
+Management of teams and team memberships is done with the \fBnpm team\fP command\.
.SH SEE ALSO
.RS 0
.IP \(bu 2
+npm help team
+.IP \(bu 2
npm help publish
.IP \(bu 2
npm help 7 config
diff --git a/deps/npm/man/man1/npm-adduser.1 b/deps/npm/man/man1/npm-adduser.1
index ade506ef539ecb..478088fdd280b2 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" "July 2015" "" ""
+.TH "NPM\-ADDUSER" "1" "September 2015" "" ""
.SH "NAME"
\fBnpm-adduser\fR \- Add a registry user account
.SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-bin.1 b/deps/npm/man/man1/npm-bin.1
index 6250b242ff475e..e0effefc538371 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" "July 2015" "" ""
+.TH "NPM\-BIN" "1" "September 2015" "" ""
.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 fde8d06191b254..7cab65c79f54c8 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" "July 2015" "" ""
+.TH "NPM\-BUGS" "1" "September 2015" "" ""
.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 d17fe158c82ede..f7c947b8ed6924 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" "July 2015" "" ""
+.TH "NPM\-BUILD" "1" "September 2015" "" ""
.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 04bd9694272ff0..fd23854f9cf6d3 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" "July 2015" "" ""
+.TH "NPM\-BUNDLE" "1" "September 2015" "" ""
.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 5c84c222a629c7..059584a1c2f7cd 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" "July 2015" "" ""
+.TH "NPM\-CACHE" "1" "September 2015" "" ""
.SH "NAME"
\fBnpm-cache\fR \- Manipulates packages cache
.SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-completion.1 b/deps/npm/man/man1/npm-completion.1
index 15a8a21a0d1891..17cdf2fe52a2e6 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" "July 2015" "" ""
+.TH "NPM\-COMPLETION" "1" "September 2015" "" ""
.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 75c458ddbdb5ef..881e86a143ed83 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" "July 2015" "" ""
+.TH "NPM\-CONFIG" "1" "September 2015" "" ""
.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 587cfb7ac5d2ec..57b67484c23ffd 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" "July 2015" "" ""
+.TH "NPM\-DEDUPE" "1" "September 2015" "" ""
.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 ae01b145a48e51..38366de592df54 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" "July 2015" "" ""
+.TH "NPM\-DEPRECATE" "1" "September 2015" "" ""
.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 51444feee39bbc..0b7d572446ae80 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" "July 2015" "" ""
+.TH "NPM\-DIST\-TAG" "1" "September 2015" "" ""
.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 fa164136c50943..4d4e207bc67728 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" "July 2015" "" ""
+.TH "NPM\-DOCS" "1" "September 2015" "" ""
.SH "NAME"
\fBnpm-docs\fR \- Docs for a package in a web browser maybe
.SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-edit.1 b/deps/npm/man/man1/npm-edit.1
index ac1857bc3d74e0..59b139d5481199 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" "July 2015" "" ""
+.TH "NPM\-EDIT" "1" "September 2015" "" ""
.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 40d02a1c870fbd..339707fb3fc067 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" "July 2015" "" ""
+.TH "NPM\-EXPLORE" "1" "September 2015" "" ""
.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 08d94430442569..605033bfcc3fa4 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" "July 2015" "" ""
+.TH "NPM\-HELP\-SEARCH" "1" "September 2015" "" ""
.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 2a529a5d7e88be..912dd892ac37ff 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" "July 2015" "" ""
+.TH "NPM\-HELP" "1" "September 2015" "" ""
.SH "NAME"
\fBnpm-help\fR \- Get help on npm
.SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-init.1 b/deps/npm/man/man1/npm-init.1
index d8886630f9e105..fb563d9240c0a7 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" "July 2015" "" ""
+.TH "NPM\-INIT" "1" "September 2015" "" ""
.SH "NAME"
\fBnpm-init\fR \- Interactively create a package\.json file
.SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-install.1 b/deps/npm/man/man1/npm-install.1
index 6639b6992646ac..a1523abe780db7 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" "July 2015" "" ""
+.TH "NPM\-INSTALL" "1" "September 2015" "" ""
.SH "NAME"
\fBnpm-install\fR \- Install a package
.SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-link.1 b/deps/npm/man/man1/npm-link.1
index 8a0c843fa2fcb5..d379b7447aae0d 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" "July 2015" "" ""
+.TH "NPM\-LINK" "1" "September 2015" "" ""
.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 379b9b030622a9..9b792e84a73ebc 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" "July 2015" "" ""
+.TH "NPM\-LOGOUT" "1" "September 2015" "" ""
.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 b7775375c1949d..46bdd29a857cfb 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" "July 2015" "" ""
+.TH "NPM\-LS" "1" "September 2015" "" ""
.SH "NAME"
\fBnpm-ls\fR \- List installed packages
.SH SYNOPSIS
@@ -23,7 +23,7 @@ For example, running \fBnpm ls promzard\fP in npm's source tree will show:
.P
.RS 2
.nf
-npm@2.13.3 /path/to/npm
+npm@2.14.4 /path/to/npm
└─┬ init\-package\-json@0\.0\.4
└── promzard@0\.1\.5
.fi
diff --git a/deps/npm/man/man1/npm-outdated.1 b/deps/npm/man/man1/npm-outdated.1
index 01b44601404174..abf70f9e53bc83 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" "July 2015" "" ""
+.TH "NPM\-OUTDATED" "1" "September 2015" "" ""
.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 c6ef75bb35ce68..d4cdeddabe9059 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" "July 2015" "" ""
+.TH "NPM\-OWNER" "1" "September 2015" "" ""
.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 a630def97a034b..705b3279513d7d 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" "July 2015" "" ""
+.TH "NPM\-PACK" "1" "September 2015" "" ""
.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 098e82cfb67096..471dde932780e6 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" "July 2015" "" ""
+.TH "NPM\-PING" "1" "September 2015" "" ""
.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 1bc68d0c0d1e2e..108d280349b082 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" "July 2015" "" ""
+.TH "NPM\-PREFIX" "1" "September 2015" "" ""
.SH "NAME"
\fBnpm-prefix\fR \- Display prefix
.SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-prune.1 b/deps/npm/man/man1/npm-prune.1
index 937fbb34f13e3c..91387d93034b3c 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" "July 2015" "" ""
+.TH "NPM\-PRUNE" "1" "September 2015" "" ""
.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 a6cab551937449..b7592a85b9a440 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" "July 2015" "" ""
+.TH "NPM\-PUBLISH" "1" "September 2015" "" ""
.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 7e890d50b5fecd..50fc7fe2794927 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" "July 2015" "" ""
+.TH "NPM\-REBUILD" "1" "September 2015" "" ""
.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 477f87a3c5fa36..92c2e5d9fa0456 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" "July 2015" "" ""
+.TH "NPM\-REPO" "1" "September 2015" "" ""
.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 bbfd94f741cc4a..605c164670c408 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" "July 2015" "" ""
+.TH "NPM\-RESTART" "1" "September 2015" "" ""
.SH "NAME"
\fBnpm-restart\fR \- Restart a package
.SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-rm.1 b/deps/npm/man/man1/npm-rm.1
index 784d7e283f4eba..1a7d5fe4b9cebc 100644
--- a/deps/npm/man/man1/npm-rm.1
+++ b/deps/npm/man/man1/npm-rm.1
@@ -1,4 +1,4 @@
-.TH "NPM\-RM" "1" "July 2015" "" ""
+.TH "NPM\-RM" "1" "September 2015" "" ""
.SH "NAME"
\fBnpm-rm\fR \- Remove a package
.SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-root.1 b/deps/npm/man/man1/npm-root.1
index 7f3c87b76e19d7..e3419b8550d895 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" "July 2015" "" ""
+.TH "NPM\-ROOT" "1" "September 2015" "" ""
.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 51c94d9d41c7ac..cca066e3539a5f 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" "July 2015" "" ""
+.TH "NPM\-RUN\-SCRIPT" "1" "September 2015" "" ""
.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 d9110550944f0e..86f51f4389d2ae 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" "July 2015" "" ""
+.TH "NPM\-SEARCH" "1" "September 2015" "" ""
.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 7b3569a172a95c..3833db9efde40e 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" "July 2015" "" ""
+.TH "NPM\-SHRINKWRAP" "1" "September 2015" "" ""
.SH "NAME"
\fBnpm-shrinkwrap\fR \- Lock down dependency versions
.SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-star.1 b/deps/npm/man/man1/npm-star.1
index d28d81168b065f..d3ca505139336b 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" "July 2015" "" ""
+.TH "NPM\-STAR" "1" "September 2015" "" ""
.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 0f6c5342e8c542..81010dde8595de 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" "July 2015" "" ""
+.TH "NPM\-STARS" "1" "September 2015" "" ""
.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 55e2e9c7f20351..32175dc1a7e006 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" "July 2015" "" ""
+.TH "NPM\-START" "1" "September 2015" "" ""
.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 b4d12d6b7797a3..aa29a741900ae0 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" "July 2015" "" ""
+.TH "NPM\-STOP" "1" "September 2015" "" ""
.SH "NAME"
\fBnpm-stop\fR \- Stop a package
.SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-tag.1 b/deps/npm/man/man1/npm-tag.1
index 606270e9b46868..8205efdf373885 100644
--- a/deps/npm/man/man1/npm-tag.1
+++ b/deps/npm/man/man1/npm-tag.1
@@ -1,4 +1,4 @@
-.TH "NPM\-TAG" "1" "July 2015" "" ""
+.TH "NPM\-TAG" "1" "September 2015" "" ""
.SH "NAME"
\fBnpm-tag\fR \- Tag a published version
.SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-team.1 b/deps/npm/man/man1/npm-team.1
new file mode 100644
index 00000000000000..1a49d86f1c2d81
--- /dev/null
+++ b/deps/npm/man/man1/npm-team.1
@@ -0,0 +1,63 @@
+.TH "NPM\-TEAM" "1" "September 2015" "" ""
+.SH "NAME"
+\fBnpm-team\fR \- Manage organization teams and team memberships
+.SH SYNOPSIS
+.P
+.RS 2
+.nf
+npm team create
+npm team destroy
+
+npm team add
+npm team rm
+
+npm team ls |
+
+npm team edit
+.fi
+.RE
+.SH DESCRIPTION
+.P
+Used to manage teams in organizations, and change team memberships\. Does not
+handle permissions for packages\.
+.P
+Teams must always be fully qualified with the organization/scope they belond to
+when operating on them, separated by a colon (\fB:\fP)\. That is, if you have a
+\fBdevelopers\fP team on a \fBfoo\fP organization, you must always refer to that team as
+\fBdevelopers:foo\fP in these commands\.
+.RS 0
+.IP \(bu 2
+create / destroy:
+Create a new team, or destroy an existing one\.
+.IP \(bu 2
+add / rm:
+Add a user to an existing team, or remove a user from a team they belong to\.
+.IP \(bu 2
+ls:
+If performed on an organization name, will return a list of existing teams
+under that organization\. If performed on a team, it will instead return a list
+of all users belonging to that particular team\.
+
+.RE
+.SH DETAILS
+.P
+\fBnpm team\fP always operates directly on the current registry, configurable from
+the command line using \fB\-\-registry=\fP\|\.
+.P
+In order to create teams and manage team membership, you must be a \fIteam admin\fR
+under the given organization\. Listing teams and team memberships may be done by
+any member of the organizations\.
+.P
+Organization creation and management of team admins and \fIorganization\fR members
+is done through the website, not the npm CLI\.
+.P
+To use teams to manage permissions on packages belonging to your organization,
+use the \fBnpm access\fP command to grant or revoke the appropriate permissions\.
+.SH SEE ALSO
+.RS 0
+.IP \(bu 2
+npm help access
+.IP \(bu 2
+npm help 7 registr
+
+.RE
diff --git a/deps/npm/man/man1/npm-test.1 b/deps/npm/man/man1/npm-test.1
index 658b8e9cce75fc..c83273fafc2836 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" "July 2015" "" ""
+.TH "NPM\-TEST" "1" "September 2015" "" ""
.SH "NAME"
\fBnpm-test\fR \- Test a package
.SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-uninstall.1 b/deps/npm/man/man1/npm-uninstall.1
index 11bb0c235ffe94..1ce230a33daa4e 100644
--- a/deps/npm/man/man1/npm-uninstall.1
+++ b/deps/npm/man/man1/npm-uninstall.1
@@ -1,4 +1,4 @@
-.TH "NPM\-RM" "1" "July 2015" "" ""
+.TH "NPM\-RM" "1" "September 2015" "" ""
.SH "NAME"
\fBnpm-rm\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 dbb4bf91e4a854..df115205b8c2ff 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" "July 2015" "" ""
+.TH "NPM\-UNPUBLISH" "1" "September 2015" "" ""
.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 d9afff56cde21c..6f1cec26c42b41 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" "July 2015" "" ""
+.TH "NPM\-UPDATE" "1" "September 2015" "" ""
.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 1d72440fe1ec63..7e1fa8a1df768c 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" "July 2015" "" ""
+.TH "NPM\-VERSION" "1" "September 2015" "" ""
.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 70f47dc979a54d..aa9a71e0dd76b1 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" "July 2015" "" ""
+.TH "NPM\-VIEW" "1" "September 2015" "" ""
.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 d887b35dc0b47c..c0b3332be434eb 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" "July 2015" "" ""
+.TH "NPM\-WHOAMI" "1" "September 2015" "" ""
.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 cb0814dde86212..a99d270bb303f8 100644
--- a/deps/npm/man/man1/npm.1
+++ b/deps/npm/man/man1/npm.1
@@ -1,4 +1,4 @@
-.TH "NPM" "1" "July 2015" "" ""
+.TH "NPM" "1" "September 2015" "" ""
.SH "NAME"
\fBnpm\fR \- javascript package manager
.SH SYNOPSIS
@@ -10,7 +10,7 @@ npm [args]
.RE
.SH VERSION
.P
-2.13.3
+2.14.4
.SH DESCRIPTION
.P
npm is the package manager for the Node JavaScript platform\. It puts
diff --git a/deps/npm/man/man3/npm-bin.3 b/deps/npm/man/man3/npm-bin.3
index 3e67fc13f3aeac..4e906209f5dcd8 100644
--- a/deps/npm/man/man3/npm-bin.3
+++ b/deps/npm/man/man3/npm-bin.3
@@ -1,4 +1,4 @@
-.TH "NPM\-BIN" "3" "July 2015" "" ""
+.TH "NPM\-BIN" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-bin\fR \- Display npm bin folder
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-bugs.3 b/deps/npm/man/man3/npm-bugs.3
index 03f349ecec7c93..0f646542bc1e66 100644
--- a/deps/npm/man/man3/npm-bugs.3
+++ b/deps/npm/man/man3/npm-bugs.3
@@ -1,4 +1,4 @@
-.TH "NPM\-BUGS" "3" "July 2015" "" ""
+.TH "NPM\-BUGS" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-bugs\fR \- Bugs for a package in a web browser maybe
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-cache.3 b/deps/npm/man/man3/npm-cache.3
index 0f3a376af4eeda..245d72a363a1ec 100644
--- a/deps/npm/man/man3/npm-cache.3
+++ b/deps/npm/man/man3/npm-cache.3
@@ -1,4 +1,4 @@
-.TH "NPM\-CACHE" "3" "July 2015" "" ""
+.TH "NPM\-CACHE" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-cache\fR \- manage the npm cache programmatically
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-commands.3 b/deps/npm/man/man3/npm-commands.3
index 31112f889611af..38fdc358cb5021 100644
--- a/deps/npm/man/man3/npm-commands.3
+++ b/deps/npm/man/man3/npm-commands.3
@@ -1,4 +1,4 @@
-.TH "NPM\-COMMANDS" "3" "July 2015" "" ""
+.TH "NPM\-COMMANDS" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-commands\fR \- npm commands
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-config.3 b/deps/npm/man/man3/npm-config.3
index 216d4d78dfd384..63f3d9feb86c31 100644
--- a/deps/npm/man/man3/npm-config.3
+++ b/deps/npm/man/man3/npm-config.3
@@ -1,4 +1,4 @@
-.TH "NPM\-CONFIG" "3" "July 2015" "" ""
+.TH "NPM\-CONFIG" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-config\fR \- Manage the npm configuration files
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-deprecate.3 b/deps/npm/man/man3/npm-deprecate.3
index 7963db6ba9b20d..b3834757b61d4f 100644
--- a/deps/npm/man/man3/npm-deprecate.3
+++ b/deps/npm/man/man3/npm-deprecate.3
@@ -1,4 +1,4 @@
-.TH "NPM\-DEPRECATE" "3" "July 2015" "" ""
+.TH "NPM\-DEPRECATE" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-deprecate\fR \- Deprecate a version of a package
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-docs.3 b/deps/npm/man/man3/npm-docs.3
index b99ea3fe948a56..d81ec50b9e18e7 100644
--- a/deps/npm/man/man3/npm-docs.3
+++ b/deps/npm/man/man3/npm-docs.3
@@ -1,4 +1,4 @@
-.TH "NPM\-DOCS" "3" "July 2015" "" ""
+.TH "NPM\-DOCS" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-docs\fR \- Docs for a package in a web browser maybe
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-edit.3 b/deps/npm/man/man3/npm-edit.3
index d76cea18a5f84d..817134fb002385 100644
--- a/deps/npm/man/man3/npm-edit.3
+++ b/deps/npm/man/man3/npm-edit.3
@@ -1,4 +1,4 @@
-.TH "NPM\-EDIT" "3" "July 2015" "" ""
+.TH "NPM\-EDIT" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-edit\fR \- Edit an installed package
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-explore.3 b/deps/npm/man/man3/npm-explore.3
index 7f253524a17370..530ee8814eae0d 100644
--- a/deps/npm/man/man3/npm-explore.3
+++ b/deps/npm/man/man3/npm-explore.3
@@ -1,4 +1,4 @@
-.TH "NPM\-EXPLORE" "3" "July 2015" "" ""
+.TH "NPM\-EXPLORE" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-explore\fR \- Browse an installed package
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-help-search.3 b/deps/npm/man/man3/npm-help-search.3
index 6aa3df57047f16..a22a99c73ff8b2 100644
--- a/deps/npm/man/man3/npm-help-search.3
+++ b/deps/npm/man/man3/npm-help-search.3
@@ -1,4 +1,4 @@
-.TH "NPM\-HELP\-SEARCH" "3" "July 2015" "" ""
+.TH "NPM\-HELP\-SEARCH" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-help-search\fR \- Search the help pages
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-init.3 b/deps/npm/man/man3/npm-init.3
index b69fdfd952b741..26c3bb5582c88c 100644
--- a/deps/npm/man/man3/npm-init.3
+++ b/deps/npm/man/man3/npm-init.3
@@ -1,4 +1,4 @@
-.TH "NPM" "" "July 2015" "" ""
+.TH "NPM" "" "September 2015" "" ""
.SH "NAME"
\fBnpm\fR
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-install.3 b/deps/npm/man/man3/npm-install.3
index e639afde0a5a91..ee741fbf4cb364 100644
--- a/deps/npm/man/man3/npm-install.3
+++ b/deps/npm/man/man3/npm-install.3
@@ -1,4 +1,4 @@
-.TH "NPM\-INSTALL" "3" "July 2015" "" ""
+.TH "NPM\-INSTALL" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-install\fR \- install a package programmatically
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-link.3 b/deps/npm/man/man3/npm-link.3
index c8a35f631caa18..a9dc6b40c83479 100644
--- a/deps/npm/man/man3/npm-link.3
+++ b/deps/npm/man/man3/npm-link.3
@@ -1,4 +1,4 @@
-.TH "NPM\-LINK" "3" "July 2015" "" ""
+.TH "NPM\-LINK" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-link\fR \- Symlink a package folder
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-load.3 b/deps/npm/man/man3/npm-load.3
index 7268d01ad59c9d..2fb068e7ee3937 100644
--- a/deps/npm/man/man3/npm-load.3
+++ b/deps/npm/man/man3/npm-load.3
@@ -1,4 +1,4 @@
-.TH "NPM\-LOAD" "3" "July 2015" "" ""
+.TH "NPM\-LOAD" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-load\fR \- Load config settings
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-ls.3 b/deps/npm/man/man3/npm-ls.3
index 1e43327495bb1b..3913f3c22ca890 100644
--- a/deps/npm/man/man3/npm-ls.3
+++ b/deps/npm/man/man3/npm-ls.3
@@ -1,4 +1,4 @@
-.TH "NPM\-LS" "3" "July 2015" "" ""
+.TH "NPM\-LS" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-ls\fR \- List installed packages
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-outdated.3 b/deps/npm/man/man3/npm-outdated.3
index 9a570e8215a648..9a1f3c28f371d4 100644
--- a/deps/npm/man/man3/npm-outdated.3
+++ b/deps/npm/man/man3/npm-outdated.3
@@ -1,4 +1,4 @@
-.TH "NPM\-OUTDATED" "3" "July 2015" "" ""
+.TH "NPM\-OUTDATED" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-outdated\fR \- Check for outdated packages
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-owner.3 b/deps/npm/man/man3/npm-owner.3
index 03b8d869e6bab5..e0371ae4f0d774 100644
--- a/deps/npm/man/man3/npm-owner.3
+++ b/deps/npm/man/man3/npm-owner.3
@@ -1,4 +1,4 @@
-.TH "NPM\-OWNER" "3" "July 2015" "" ""
+.TH "NPM\-OWNER" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-owner\fR \- Manage package owners
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-pack.3 b/deps/npm/man/man3/npm-pack.3
index de3d36c4f557d4..42d0499847172d 100644
--- a/deps/npm/man/man3/npm-pack.3
+++ b/deps/npm/man/man3/npm-pack.3
@@ -1,4 +1,4 @@
-.TH "NPM\-PACK" "3" "July 2015" "" ""
+.TH "NPM\-PACK" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-pack\fR \- Create a tarball from a package
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-ping.3 b/deps/npm/man/man3/npm-ping.3
index 5fe65f4d2319c4..3cb43167a3f507 100644
--- a/deps/npm/man/man3/npm-ping.3
+++ b/deps/npm/man/man3/npm-ping.3
@@ -1,4 +1,4 @@
-.TH "NPM\-PING" "3" "July 2015" "" ""
+.TH "NPM\-PING" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-ping\fR \- Ping npm registry
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-prefix.3 b/deps/npm/man/man3/npm-prefix.3
index 39b7e382e90268..0a389f83db3c1b 100644
--- a/deps/npm/man/man3/npm-prefix.3
+++ b/deps/npm/man/man3/npm-prefix.3
@@ -1,4 +1,4 @@
-.TH "NPM\-PREFIX" "3" "July 2015" "" ""
+.TH "NPM\-PREFIX" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-prefix\fR \- Display prefix
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-prune.3 b/deps/npm/man/man3/npm-prune.3
index 1adb72e0564861..f3dabf0c50ae29 100644
--- a/deps/npm/man/man3/npm-prune.3
+++ b/deps/npm/man/man3/npm-prune.3
@@ -1,4 +1,4 @@
-.TH "NPM\-PRUNE" "3" "July 2015" "" ""
+.TH "NPM\-PRUNE" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-prune\fR \- Remove extraneous packages
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-publish.3 b/deps/npm/man/man3/npm-publish.3
index 650efc706c0296..a82dfd0d553e73 100644
--- a/deps/npm/man/man3/npm-publish.3
+++ b/deps/npm/man/man3/npm-publish.3
@@ -1,4 +1,4 @@
-.TH "NPM\-PUBLISH" "3" "July 2015" "" ""
+.TH "NPM\-PUBLISH" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-publish\fR \- Publish a package
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-rebuild.3 b/deps/npm/man/man3/npm-rebuild.3
index e1bdde2484d20e..dec35212e4733c 100644
--- a/deps/npm/man/man3/npm-rebuild.3
+++ b/deps/npm/man/man3/npm-rebuild.3
@@ -1,4 +1,4 @@
-.TH "NPM\-REBUILD" "3" "July 2015" "" ""
+.TH "NPM\-REBUILD" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-rebuild\fR \- Rebuild a package
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-repo.3 b/deps/npm/man/man3/npm-repo.3
index 66558d6508a60e..828bf3733df000 100644
--- a/deps/npm/man/man3/npm-repo.3
+++ b/deps/npm/man/man3/npm-repo.3
@@ -1,4 +1,4 @@
-.TH "NPM\-REPO" "3" "July 2015" "" ""
+.TH "NPM\-REPO" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-repo\fR \- Open package repository page in the browser
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-restart.3 b/deps/npm/man/man3/npm-restart.3
index 0d6b0c03beee06..b1acd0a5211624 100644
--- a/deps/npm/man/man3/npm-restart.3
+++ b/deps/npm/man/man3/npm-restart.3
@@ -1,4 +1,4 @@
-.TH "NPM\-RESTART" "3" "July 2015" "" ""
+.TH "NPM\-RESTART" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-restart\fR \- Restart a package
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-root.3 b/deps/npm/man/man3/npm-root.3
index d34c979024e105..82d4187dde502b 100644
--- a/deps/npm/man/man3/npm-root.3
+++ b/deps/npm/man/man3/npm-root.3
@@ -1,4 +1,4 @@
-.TH "NPM\-ROOT" "3" "July 2015" "" ""
+.TH "NPM\-ROOT" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-root\fR \- Display npm root
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-run-script.3 b/deps/npm/man/man3/npm-run-script.3
index 2908d02eaa00d1..ea2cf417e9dcb2 100644
--- a/deps/npm/man/man3/npm-run-script.3
+++ b/deps/npm/man/man3/npm-run-script.3
@@ -1,4 +1,4 @@
-.TH "NPM\-RUN\-SCRIPT" "3" "July 2015" "" ""
+.TH "NPM\-RUN\-SCRIPT" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-run-script\fR \- Run arbitrary package scripts
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-search.3 b/deps/npm/man/man3/npm-search.3
index b4cb98248b3388..f56b0e2bbaf938 100644
--- a/deps/npm/man/man3/npm-search.3
+++ b/deps/npm/man/man3/npm-search.3
@@ -1,4 +1,4 @@
-.TH "NPM\-SEARCH" "3" "July 2015" "" ""
+.TH "NPM\-SEARCH" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-search\fR \- Search for packages
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-shrinkwrap.3 b/deps/npm/man/man3/npm-shrinkwrap.3
index 63d019aa749e7e..3f74eb8304836b 100644
--- a/deps/npm/man/man3/npm-shrinkwrap.3
+++ b/deps/npm/man/man3/npm-shrinkwrap.3
@@ -1,4 +1,4 @@
-.TH "NPM\-SHRINKWRAP" "3" "July 2015" "" ""
+.TH "NPM\-SHRINKWRAP" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-shrinkwrap\fR \- programmatically generate package shrinkwrap file
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-start.3 b/deps/npm/man/man3/npm-start.3
index d309d4264af75b..3481911cbe6351 100644
--- a/deps/npm/man/man3/npm-start.3
+++ b/deps/npm/man/man3/npm-start.3
@@ -1,4 +1,4 @@
-.TH "NPM\-START" "3" "July 2015" "" ""
+.TH "NPM\-START" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-start\fR \- Start a package
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-stop.3 b/deps/npm/man/man3/npm-stop.3
index 30e3444a9d4939..1cc1f0e9369ac1 100644
--- a/deps/npm/man/man3/npm-stop.3
+++ b/deps/npm/man/man3/npm-stop.3
@@ -1,4 +1,4 @@
-.TH "NPM\-STOP" "3" "July 2015" "" ""
+.TH "NPM\-STOP" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-stop\fR \- Stop a package
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-tag.3 b/deps/npm/man/man3/npm-tag.3
index 2eecc980615555..266f1d0f274327 100644
--- a/deps/npm/man/man3/npm-tag.3
+++ b/deps/npm/man/man3/npm-tag.3
@@ -1,4 +1,4 @@
-.TH "NPM\-TAG" "3" "July 2015" "" ""
+.TH "NPM\-TAG" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-tag\fR \- Tag a published version
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-test.3 b/deps/npm/man/man3/npm-test.3
index 3c91fde9806231..2dd90ae624f178 100644
--- a/deps/npm/man/man3/npm-test.3
+++ b/deps/npm/man/man3/npm-test.3
@@ -1,4 +1,4 @@
-.TH "NPM\-TEST" "3" "July 2015" "" ""
+.TH "NPM\-TEST" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-test\fR \- Test a package
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-uninstall.3 b/deps/npm/man/man3/npm-uninstall.3
index d5027d84b14348..53a2fbdc13693f 100644
--- a/deps/npm/man/man3/npm-uninstall.3
+++ b/deps/npm/man/man3/npm-uninstall.3
@@ -1,4 +1,4 @@
-.TH "NPM\-UNINSTALL" "3" "July 2015" "" ""
+.TH "NPM\-UNINSTALL" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-uninstall\fR \- uninstall a package programmatically
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-unpublish.3 b/deps/npm/man/man3/npm-unpublish.3
index f9b333da5be897..29f59578fbaef3 100644
--- a/deps/npm/man/man3/npm-unpublish.3
+++ b/deps/npm/man/man3/npm-unpublish.3
@@ -1,4 +1,4 @@
-.TH "NPM\-UNPUBLISH" "3" "July 2015" "" ""
+.TH "NPM\-UNPUBLISH" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-unpublish\fR \- Remove a package from the registry
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-update.3 b/deps/npm/man/man3/npm-update.3
index 51601179d988e6..238c5baff193dc 100644
--- a/deps/npm/man/man3/npm-update.3
+++ b/deps/npm/man/man3/npm-update.3
@@ -1,4 +1,4 @@
-.TH "NPM\-UPDATE" "3" "July 2015" "" ""
+.TH "NPM\-UPDATE" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-update\fR \- Update a package
.SH SYNOPSIS
@@ -8,7 +8,7 @@
npm\.commands\.update(packages, callback)
.fi
.RE
-.TH "DESCRIPTION" "" "July 2015" "" ""
+.TH "DESCRIPTION" "" "September 2015" "" ""
.SH "NAME"
\fBDESCRIPTION\fR
.P
diff --git a/deps/npm/man/man3/npm-version.3 b/deps/npm/man/man3/npm-version.3
index bbc5785d8859ec..7ac421e29a3771 100644
--- a/deps/npm/man/man3/npm-version.3
+++ b/deps/npm/man/man3/npm-version.3
@@ -1,4 +1,4 @@
-.TH "NPM\-VERSION" "3" "July 2015" "" ""
+.TH "NPM\-VERSION" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-version\fR \- Bump a package version
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm-view.3 b/deps/npm/man/man3/npm-view.3
index 65a201f65b7225..c5dba4f2c44c8d 100644
--- a/deps/npm/man/man3/npm-view.3
+++ b/deps/npm/man/man3/npm-view.3
@@ -1,4 +1,4 @@
-.TH "NPM\-VIEW" "3" "July 2015" "" ""
+.TH "NPM\-VIEW" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-view\fR \- View registry info
.SH SYNOPSIS
@@ -98,7 +98,7 @@ was required by each matching version of yui3:
.P
.RS 2
.nf
-npm\.commands\.view(["yui3@'>0\.5\.4'", "dependencies\.jsdom"], callback)
+npm\.commands\.view(["yui3@>0\.5\.4", "dependencies\.jsdom"], callback)
.fi
.RE
.SH OUTPUT
diff --git a/deps/npm/man/man3/npm-whoami.3 b/deps/npm/man/man3/npm-whoami.3
index c9e20c789573a6..ff9389e9d2782e 100644
--- a/deps/npm/man/man3/npm-whoami.3
+++ b/deps/npm/man/man3/npm-whoami.3
@@ -1,4 +1,4 @@
-.TH "NPM\-WHOAMI" "3" "July 2015" "" ""
+.TH "NPM\-WHOAMI" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm-whoami\fR \- Display npm username
.SH SYNOPSIS
diff --git a/deps/npm/man/man3/npm.3 b/deps/npm/man/man3/npm.3
index ddb2025944f63d..0fb9bbb56b5aff 100644
--- a/deps/npm/man/man3/npm.3
+++ b/deps/npm/man/man3/npm.3
@@ -1,4 +1,4 @@
-.TH "NPM" "3" "July 2015" "" ""
+.TH "NPM" "3" "September 2015" "" ""
.SH "NAME"
\fBnpm\fR \- javascript package manager
.SH SYNOPSIS
@@ -20,7 +20,7 @@ npm\.load([configObject, ]function (er, npm) {
.RE
.SH VERSION
.P
-2.13.3
+2.14.4
.SH DESCRIPTION
.P
This is the API documentation for npm\.
diff --git a/deps/npm/man/man5/npm-folders.5 b/deps/npm/man/man5/npm-folders.5
index f1b2a8d7f2f26b..ede6c826071746 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" "July 2015" "" ""
+.TH "NPM\-FOLDERS" "5" "September 2015" "" ""
.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 f1b2a8d7f2f26b..ede6c826071746 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" "July 2015" "" ""
+.TH "NPM\-FOLDERS" "5" "September 2015" "" ""
.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 3f1754eedb203e..989a20bdbcdd75 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" "July 2015" "" ""
+.TH "PACKAGE\.JSON" "5" "September 2015" "" ""
.SH "NAME"
\fBpackage.json\fR \- Specifics of npm's package\.json handling
.SH DESCRIPTION
@@ -217,10 +217,10 @@ The "files" field is an array of files to include in your project\. If
you name a folder in the array, then it will also include the files
inside that folder\. (Unless they would be ignored by another rule\.)
.P
-You can also provide a "\.npmignore" file in the root of your package,
-which will keep files from being included, even if they would be picked
-up by the files array\. The "\.npmignore" file works just like a
-"\.gitignore"\.
+You can also provide a "\.npmignore" file in the root of your package or
+in subdirectories, which will keep files from being included, even
+if they would be picked up by the files array\. The \fB\|\.npmignore\fP file
+works just like a \fB\|\.gitignore\fP\|\.
.P
Certain files are always included, regardless of settings:
.RS 0
@@ -694,7 +694,7 @@ this\. If you depend on features introduced in 1\.5\.2, use \fB">= 1\.5\.2 < 2"\
.P
Array of package names that will be bundled when publishing the package\.
.P
-If this is spelled \fB"bundleDependencies"\fP, then that is also honorable\.
+If this is spelled \fB"bundleDependencies"\fP, then that is also honored\.
.SH optionalDependencies
.P
If a dependency can be used, but you would like npm to proceed if it cannot be
diff --git a/deps/npm/man/man5/npmrc.5 b/deps/npm/man/man5/npmrc.5
index 246c4a39c44b67..2b3c1917b12944 100644
--- a/deps/npm/man/man5/npmrc.5
+++ b/deps/npm/man/man5/npmrc.5
@@ -1,4 +1,4 @@
-.TH "NPMRC" "5" "July 2015" "" ""
+.TH "NPMRC" "5" "September 2015" "" ""
.SH "NAME"
\fBnpmrc\fR \- The npm config files
.SH DESCRIPTION
diff --git a/deps/npm/man/man5/package.json.5 b/deps/npm/man/man5/package.json.5
index 3f1754eedb203e..989a20bdbcdd75 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" "July 2015" "" ""
+.TH "PACKAGE\.JSON" "5" "September 2015" "" ""
.SH "NAME"
\fBpackage.json\fR \- Specifics of npm's package\.json handling
.SH DESCRIPTION
@@ -217,10 +217,10 @@ The "files" field is an array of files to include in your project\. If
you name a folder in the array, then it will also include the files
inside that folder\. (Unless they would be ignored by another rule\.)
.P
-You can also provide a "\.npmignore" file in the root of your package,
-which will keep files from being included, even if they would be picked
-up by the files array\. The "\.npmignore" file works just like a
-"\.gitignore"\.
+You can also provide a "\.npmignore" file in the root of your package or
+in subdirectories, which will keep files from being included, even
+if they would be picked up by the files array\. The \fB\|\.npmignore\fP file
+works just like a \fB\|\.gitignore\fP\|\.
.P
Certain files are always included, regardless of settings:
.RS 0
@@ -694,7 +694,7 @@ this\. If you depend on features introduced in 1\.5\.2, use \fB">= 1\.5\.2 < 2"\
.P
Array of package names that will be bundled when publishing the package\.
.P
-If this is spelled \fB"bundleDependencies"\fP, then that is also honorable\.
+If this is spelled \fB"bundleDependencies"\fP, then that is also honored\.
.SH optionalDependencies
.P
If a dependency can be used, but you would like npm to proceed if it cannot be
diff --git a/deps/npm/man/man7/npm-coding-style.7 b/deps/npm/man/man7/npm-coding-style.7
index b7c629c3fbcc87..89230807e91405 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" "July 2015" "" ""
+.TH "NPM\-CODING\-STYLE" "7" "September 2015" "" ""
.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 8a446f1d39f185..9e42d65fd9b183 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" "July 2015" "" ""
+.TH "NPM\-CONFIG" "7" "September 2015" "" ""
.SH "NAME"
\fBnpm-config\fR \- More than you probably want to know about npm configuration
.SH DESCRIPTION
diff --git a/deps/npm/man/man7/npm-developers.7 b/deps/npm/man/man7/npm-developers.7
index 90dff7ba16c1e9..a3c83ecc18ec21 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" "July 2015" "" ""
+.TH "NPM\-DEVELOPERS" "7" "September 2015" "" ""
.SH "NAME"
\fBnpm-developers\fR \- Developer Guide
.SH DESCRIPTION
@@ -110,7 +110,9 @@ Use a \fB\|\.npmignore\fP file to keep stuff out of your package\. If there's
no \fB\|\.npmignore\fP file, but there \fIis\fR a \fB\|\.gitignore\fP file, then npm will
ignore the stuff matched by the \fB\|\.gitignore\fP file\. If you \fIwant\fR to
include something that is excluded by your \fB\|\.gitignore\fP file, you can
-create an empty \fB\|\.npmignore\fP file to override it\.
+create an empty \fB\|\.npmignore\fP file to override it\. Like \fBgit\fP, \fBnpm\fP looks
+for \fB\|\.npmignore\fP and \fB\|\.gitignore\fP files in all subdirectories of your
+package, not only the root directory\.
.P
\fB\|\.npmignore\fP files follow the same pattern rules \fIhttp://git\-scm\.com/book/en/v2/Git\-Basics\-Recording\-Changes\-to\-the\-Repository#Ignoring\-Files\fR
as \fB\|\.gitignore\fP files:
@@ -140,12 +142,16 @@ need to add them to \fB\|\.npmignore\fP explicitly:
.IP \(bu 2
\fB\|\.hg\fP
.IP \(bu 2
+\fB\|\.npmrc\fP
+.IP \(bu 2
\fB\|\.lock\-wscript\fP
.IP \(bu 2
\fB\|\.svn\fP
.IP \(bu 2
\fB\|\.wafpickle\-*\fP
.IP \(bu 2
+\fBconfig\.gypi\fP
+.IP \(bu 2
\fBCVS\fP
.IP \(bu 2
\fBnpm\-debug\.log\fP
@@ -162,7 +168,11 @@ The following paths and files are never ignored, so adding them to
.IP \(bu 2
\fBpackage\.json\fP
.IP \(bu 2
-\fBREADME\.*\fP
+\fBREADME\fP (and its variants)
+.IP \(bu 2
+\fBCHANGELOG\fP (and its variants)
+.IP \(bu 2
+\fBLICENSE\fP / \fBLICENCE\fP
.RE
.SH Link Packages
diff --git a/deps/npm/man/man7/npm-disputes.7 b/deps/npm/man/man7/npm-disputes.7
index 42f47cd24fa57e..e99504da23bb1b 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" "July 2015" "" ""
+.TH "NPM\-DISPUTES" "7" "September 2015" "" ""
.SH "NAME"
\fBnpm-disputes\fR \- Handling Module Name Disputes
.SH SYNOPSIS
diff --git a/deps/npm/man/man7/npm-faq.7 b/deps/npm/man/man7/npm-faq.7
index 907c2591bcfc4f..14c1706d165a10 100644
--- a/deps/npm/man/man7/npm-faq.7
+++ b/deps/npm/man/man7/npm-faq.7
@@ -1,4 +1,4 @@
-.TH "NPM\-FAQ" "7" "July 2015" "" ""
+.TH "NPM\-FAQ" "7" "September 2015" "" ""
.SH "NAME"
\fBnpm-faq\fR \- Frequently Asked Questions
.SH Where can I find these docs in HTML?
diff --git a/deps/npm/man/man7/npm-index.7 b/deps/npm/man/man7/npm-index.7
index 6cf62b8de6b793..de053dfa22d49c 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" "July 2015" "" ""
+.TH "NPM\-INDEX" "7" "September 2015" "" ""
.SH "NAME"
\fBnpm-index\fR \- Index of all npm documentation
.SS npm help README
@@ -136,6 +136,9 @@ Stop a package
.SS npm help tag
.P
Tag a published version
+.SS npm help team
+.P
+Manage organization teams and team memberships
.SS npm help test
.P
Test a package
diff --git a/deps/npm/man/man7/npm-registry.7 b/deps/npm/man/man7/npm-registry.7
index a1cf07f1d83167..6a2fd659948a19 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" "July 2015" "" ""
+.TH "NPM\-REGISTRY" "7" "September 2015" "" ""
.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 5c1ffb242280d7..67cda838215f5c 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" "July 2015" "" ""
+.TH "NPM\-SCOPE" "7" "September 2015" "" ""
.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 1e1002dea70984..d4bed1b7d6fe48 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" "July 2015" "" ""
+.TH "NPM\-SCRIPTS" "7" "September 2015" "" ""
.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 bf1c9ca9f49947..d3c303b3a24e32 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" "July 2015" "" ""
+.TH "NPM\-REMOVAL" "1" "September 2015" "" ""
.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 994615e4c917bf..3c2594da295f37 100644
--- a/deps/npm/man/man7/semver.7
+++ b/deps/npm/man/man7/semver.7
@@ -1,4 +1,4 @@
-.TH "SEMVER" "7" "July 2015" "" ""
+.TH "SEMVER" "7" "September 2015" "" ""
.SH "NAME"
\fBsemver\fR \- The semantic versioner for npm
.SH Usage
diff --git a/deps/npm/node_modules/chmodr/chmodr.js b/deps/npm/node_modules/chmodr/chmodr.js
index 9edaa7f02d7c69..1e167da21bfcb6 100644
--- a/deps/npm/node_modules/chmodr/chmodr.js
+++ b/deps/npm/node_modules/chmodr/chmodr.js
@@ -18,7 +18,15 @@ function chmodr (p, mode, cb) {
var len = children.length
var errState = null
children.forEach(function (child) {
- chmodr(path.resolve(p, child), mode, then)
+ var pathChild = path.resolve(p, child);
+ fs.lstat(pathChild, function(er, stats) {
+ if (er)
+ return cb(er)
+ if (!stats.isSymbolicLink())
+ chmodr(pathChild, mode, then)
+ else
+ then()
+ })
})
function then (er) {
if (errState) return
@@ -39,7 +47,10 @@ function chmodrSync (p, mode) {
if (!children.length) return fs.chmodSync(p, dirMode(mode))
children.forEach(function (child) {
- chmodrSync(path.resolve(p, child), mode)
+ var pathChild = path.resolve(p, child)
+ var stats = fs.lstatSync(pathChild)
+ if (!stats.isSymbolicLink())
+ chmodrSync(pathChild, mode)
})
return fs.chmodSync(p, dirMode(mode))
}
diff --git a/deps/npm/node_modules/chmodr/package.json b/deps/npm/node_modules/chmodr/package.json
index e253434ef45432..54febed62cb8c9 100644
--- a/deps/npm/node_modules/chmodr/package.json
+++ b/deps/npm/node_modules/chmodr/package.json
@@ -6,38 +6,41 @@
},
"name": "chmodr",
"description": "like `chmod -R`",
- "version": "0.1.1",
+ "version": "1.0.1",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/chmodr.git"
},
"main": "chmodr.js",
"devDependencies": {
- "tap": "0.2",
"mkdirp": "0.3",
- "rimraf": ""
+ "rimraf": "",
+ "tap": "^1.3.2"
},
"scripts": {
"test": "tap test/*.js"
},
"license": "ISC",
- "gitHead": "2f301476bc6fc93e47d2ba2e3ab0409f0d0c15ba",
+ "files": [
+ "chmodr.js"
+ ],
+ "gitHead": "a1ffe57f50c7d1a32e342ed1a03772d37bb4d00e",
"bugs": {
"url": "https://github.com/isaacs/chmodr/issues"
},
"homepage": "https://github.com/isaacs/chmodr#readme",
- "_id": "chmodr@0.1.1",
- "_shasum": "115c8f9ec62be3ef019085782c9448e471560261",
- "_from": "chmodr@0.1.1",
- "_npmVersion": "2.10.0",
- "_nodeVersion": "2.0.1",
+ "_id": "chmodr@1.0.1",
+ "_shasum": "858e07efd75b6633ae6121ffaa33b2900bcfe18d",
+ "_from": "chmodr@>=1.0.1 <1.1.0",
+ "_npmVersion": "3.2.1",
+ "_nodeVersion": "2.2.1",
"_npmUser": {
"name": "isaacs",
"email": "isaacs@npmjs.com"
},
"dist": {
- "shasum": "115c8f9ec62be3ef019085782c9448e471560261",
- "tarball": "http://registry.npmjs.org/chmodr/-/chmodr-0.1.1.tgz"
+ "shasum": "858e07efd75b6633ae6121ffaa33b2900bcfe18d",
+ "tarball": "http://registry.npmjs.org/chmodr/-/chmodr-1.0.1.tgz"
},
"maintainers": [
{
@@ -46,5 +49,5 @@
}
],
"directories": {},
- "_resolved": "https://registry.npmjs.org/chmodr/-/chmodr-0.1.1.tgz"
+ "_resolved": "https://registry.npmjs.org/chmodr/-/chmodr-1.0.1.tgz"
}
diff --git a/deps/npm/node_modules/chmodr/test/basic.js b/deps/npm/node_modules/chmodr/test/basic.js
deleted file mode 100644
index aba1cd30a7018c..00000000000000
--- a/deps/npm/node_modules/chmodr/test/basic.js
+++ /dev/null
@@ -1,63 +0,0 @@
-var chmodr = require("../")
-, test = require("tap").test
-, mkdirp = require("mkdirp")
-, rimraf = require("rimraf")
-, fs = require("fs")
-, dirs = []
-
-rimraf("/tmp/chmodr", function (er) {
- if (er) throw er
- var cnt = 5
- for (var i = 0; i < 5; i ++) {
- mkdirp(getDir(), then)
- }
- function then (er) {
- if (er) throw er
- if (-- cnt === 0) {
- runTest()
- }
- }
-})
-
-function getDir () {
- var dir = "/tmp/chmodr"
-
- dir += "/" + Math.floor(Math.random() * Math.pow(16,4)).toString(16)
- dirs.push(dir)
- dir += "/" + Math.floor(Math.random() * Math.pow(16,4)).toString(16)
- dirs.push(dir)
- dir += "/" + Math.floor(Math.random() * Math.pow(16,4)).toString(16)
- dirs.push(dir)
- return dir
-}
-
-function runTest () {
- test("should complete successfully", function (t) {
- console.error("calling chmodr 0700")
- chmodr("/tmp/chmodr", 0700, function (er) {
- t.ifError(er)
- t.end()
- })
- })
-
- dirs.forEach(function (dir) {
- test("verify "+dir, function (t) {
- fs.stat(dir, function (er, st) {
- if (er) {
- t.ifError(er)
- return t.end()
- }
- t.equal(st.mode & 0777, 0700, "mode should be 0700")
- t.end()
- })
- })
- })
-
- test("cleanup", function (t) {
- rimraf("/tmp/chmodr/", function (er) {
- t.ifError(er)
- t.end()
- })
- })
-}
-
diff --git a/deps/npm/node_modules/chmodr/test/sync.js b/deps/npm/node_modules/chmodr/test/sync.js
deleted file mode 100644
index 71f90cd1ee96d2..00000000000000
--- a/deps/npm/node_modules/chmodr/test/sync.js
+++ /dev/null
@@ -1,58 +0,0 @@
-var chmodr = require("../")
-, test = require("tap").test
-, mkdirp = require("mkdirp")
-, rimraf = require("rimraf")
-, fs = require("fs")
-, dirs = []
-
-rimraf("/tmp/chmodr", function (er) {
- if (er) throw er
- var cnt = 5
- for (var i = 0; i < 5; i ++) {
- mkdirp(getDir(), then)
- }
- function then (er) {
- if (er) throw er
- if (-- cnt === 0) {
- runTest()
- }
- }
-})
-
-function getDir () {
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var dir = "/tmp/chmodr/" + [x,y,z].join("/")
- dirs.push(dir)
- return dir
-}
-
-function runTest () {
- test("should complete successfully", function (t) {
- console.error("calling chmodr 0700")
- chmodr.sync("/tmp/chmodr", 0700)
- t.end()
- })
-
- dirs.forEach(function (dir) {
- test("verify "+dir, function (t) {
- fs.stat(dir, function (er, st) {
- if (er) {
- t.ifError(er)
- return t.end()
- }
- t.equal(st.mode & 0777, 0700, "uid should be 0700")
- t.end()
- })
- })
- })
-
- test("cleanup", function (t) {
- rimraf("/tmp/chmodr", function (er) {
- t.ifError(er)
- t.end()
- })
- })
-}
-
diff --git a/deps/npm/node_modules/chownr/LICENCE b/deps/npm/node_modules/chownr/LICENCE
deleted file mode 100644
index 74489e2e2658e7..00000000000000
--- a/deps/npm/node_modules/chownr/LICENCE
+++ /dev/null
@@ -1,25 +0,0 @@
-Copyright (c) Isaac Z. Schlueter
-All rights reserved.
-
-The BSD License
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
-``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/deps/npm/node_modules/chownr/chownr.js b/deps/npm/node_modules/chownr/chownr.js
index 598b8f844190b8..ecd7b452df57d7 100644
--- a/deps/npm/node_modules/chownr/chownr.js
+++ b/deps/npm/node_modules/chownr/chownr.js
@@ -14,7 +14,15 @@ function chownr (p, uid, gid, cb) {
var len = children.length
, errState = null
children.forEach(function (child) {
- chownr(path.resolve(p, child), uid, gid, then)
+ var pathChild = path.resolve(p, child);
+ fs.lstat(pathChild, function(er, stats) {
+ if (er)
+ return cb(er)
+ if (!stats.isSymbolicLink())
+ chownr(pathChild, uid, gid, then)
+ else
+ then()
+ })
})
function then (er) {
if (errState) return
@@ -35,7 +43,10 @@ function chownrSync (p, uid, gid) {
if (!children.length) return fs.chownSync(p, uid, gid)
children.forEach(function (child) {
- chownrSync(path.resolve(p, child), uid, gid)
+ var pathChild = path.resolve(p, child)
+ var stats = fs.lstatSync(pathChild)
+ if (!stats.isSymbolicLink())
+ chownrSync(pathChild, uid, gid)
})
return fs.chownSync(p, uid, gid)
}
diff --git a/deps/npm/node_modules/chownr/package.json b/deps/npm/node_modules/chownr/package.json
index a551c869ec1a34..fdd1dd23083e77 100644
--- a/deps/npm/node_modules/chownr/package.json
+++ b/deps/npm/node_modules/chownr/package.json
@@ -6,38 +6,41 @@
},
"name": "chownr",
"description": "like `chown -R`",
- "version": "0.0.2",
+ "version": "1.0.1",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/chownr.git"
},
"main": "chownr.js",
+ "files": [
+ "chownr.js"
+ ],
"devDependencies": {
- "tap": "0.2",
"mkdirp": "0.3",
- "rimraf": ""
+ "rimraf": "",
+ "tap": "^1.2.0"
},
"scripts": {
"test": "tap test/*.js"
},
"license": "ISC",
- "gitHead": "3cafeb70b2c343e893f710750406b3909ec537cb",
+ "gitHead": "c6c43844e80d7c7045e737a72b9fbb1ba0579a26",
"bugs": {
"url": "https://github.com/isaacs/chownr/issues"
},
"homepage": "https://github.com/isaacs/chownr#readme",
- "_id": "chownr@0.0.2",
- "_shasum": "2f9aebf746f90808ce00607b72ba73b41604c485",
- "_from": "chownr@0.0.2",
- "_npmVersion": "2.10.0",
- "_nodeVersion": "2.0.1",
+ "_id": "chownr@1.0.1",
+ "_shasum": "e2a75042a9551908bebd25b8523d5f9769d79181",
+ "_from": "chownr@1.0.1",
+ "_npmVersion": "3.2.2",
+ "_nodeVersion": "2.2.1",
"_npmUser": {
"name": "isaacs",
"email": "isaacs@npmjs.com"
},
"dist": {
- "shasum": "2f9aebf746f90808ce00607b72ba73b41604c485",
- "tarball": "http://registry.npmjs.org/chownr/-/chownr-0.0.2.tgz"
+ "shasum": "e2a75042a9551908bebd25b8523d5f9769d79181",
+ "tarball": "http://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz"
},
"maintainers": [
{
@@ -46,5 +49,6 @@
}
],
"directories": {},
- "_resolved": "https://registry.npmjs.org/chownr/-/chownr-0.0.2.tgz"
+ "_resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/chownr/test/basic.js b/deps/npm/node_modules/chownr/test/basic.js
deleted file mode 100644
index 9e4f6bde038454..00000000000000
--- a/deps/npm/node_modules/chownr/test/basic.js
+++ /dev/null
@@ -1,84 +0,0 @@
-if (!process.getuid || !process.getgid) {
- throw new Error("Tests require getuid/getgid support")
-}
-
-var curUid = +process.getuid()
-, curGid = +process.getgid()
-, chownr = require("../")
-, test = require("tap").test
-, mkdirp = require("mkdirp")
-, rimraf = require("rimraf")
-, fs = require("fs")
-
-// sniff the 'id' command for other groups that i can legally assign to
-var exec = require("child_process").exec
-, groups
-, dirs = []
-
-exec("id", function (code, output) {
- if (code) throw new Error("failed to run 'id' command")
- groups = output.trim().split("groups=")[1].split(",").map(function (s) {
- return parseInt(s, 10)
- }).filter(function (g) {
- return g !== curGid
- })
-
- console.error([curUid, groups[0]], "uid, gid")
-
- rimraf("/tmp/chownr", function (er) {
- if (er) throw er
- var cnt = 5
- for (var i = 0; i < 5; i ++) {
- mkdirp(getDir(), then)
- }
- function then (er) {
- if (er) throw er
- if (-- cnt === 0) {
- runTest()
- }
- }
- })
-})
-
-function getDir () {
- var dir = "/tmp/chownr"
-
- dir += "/" + Math.floor(Math.random() * Math.pow(16,4)).toString(16)
- dirs.push(dir)
- dir += "/" + Math.floor(Math.random() * Math.pow(16,4)).toString(16)
- dirs.push(dir)
- dir += "/" + Math.floor(Math.random() * Math.pow(16,4)).toString(16)
- dirs.push(dir)
- return dir
-}
-
-function runTest () {
- test("should complete successfully", function (t) {
- console.error("calling chownr", curUid, groups[0], typeof curUid, typeof groups[0])
- chownr("/tmp/chownr", curUid, groups[0], function (er) {
- t.ifError(er)
- t.end()
- })
- })
-
- dirs.forEach(function (dir) {
- test("verify "+dir, function (t) {
- fs.stat(dir, function (er, st) {
- if (er) {
- t.ifError(er)
- return t.end()
- }
- t.equal(st.uid, curUid, "uid should be " + curUid)
- t.equal(st.gid, groups[0], "gid should be "+groups[0])
- t.end()
- })
- })
- })
-
- test("cleanup", function (t) {
- rimraf("/tmp/chownr/", function (er) {
- t.ifError(er)
- t.end()
- })
- })
-}
diff --git a/deps/npm/node_modules/chownr/test/sync.js b/deps/npm/node_modules/chownr/test/sync.js
deleted file mode 100644
index 2e26c56aafd294..00000000000000
--- a/deps/npm/node_modules/chownr/test/sync.js
+++ /dev/null
@@ -1,79 +0,0 @@
-if (!process.getuid || !process.getgid) {
- throw new Error("Tests require getuid/getgid support")
-}
-
-var curUid = +process.getuid()
-, curGid = +process.getgid()
-, chownr = require("../")
-, test = require("tap").test
-, mkdirp = require("mkdirp")
-, rimraf = require("rimraf")
-, fs = require("fs")
-
-// sniff the 'id' command for other groups that i can legally assign to
-var exec = require("child_process").exec
-, groups
-, dirs = []
-
-exec("id", function (code, output) {
- if (code) throw new Error("failed to run 'id' command")
- groups = output.trim().split("groups=")[1].split(",").map(function (s) {
- return parseInt(s, 10)
- }).filter(function (g) {
- return g !== curGid
- })
-
- console.error([curUid, groups[0]], "uid, gid")
-
- rimraf("/tmp/chownr", function (er) {
- if (er) throw er
- var cnt = 5
- for (var i = 0; i < 5; i ++) {
- mkdirp(getDir(), then)
- }
- function then (er) {
- if (er) throw er
- if (-- cnt === 0) {
- runTest()
- }
- }
- })
-})
-
-function getDir () {
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var dir = "/tmp/chownr/" + [x,y,z].join("/")
- dirs.push(dir)
- return dir
-}
-
-function runTest () {
- test("should complete successfully", function (t) {
- console.error("calling chownr", curUid, groups[0], typeof curUid, typeof groups[0])
- chownr.sync("/tmp/chownr", curUid, groups[0])
- t.end()
- })
-
- dirs.forEach(function (dir) {
- test("verify "+dir, function (t) {
- fs.stat(dir, function (er, st) {
- if (er) {
- t.ifError(er)
- return t.end()
- }
- t.equal(st.uid, curUid, "uid should be " + curUid)
- t.equal(st.gid, groups[0], "gid should be "+groups[0])
- t.end()
- })
- })
- })
-
- test("cleanup", function (t) {
- rimraf("/tmp/chownr/", function (er) {
- t.ifError(er)
- t.end()
- })
- })
-}
diff --git a/deps/npm/node_modules/columnify/columnify.js b/deps/npm/node_modules/columnify/columnify.js
index db10a01181752d..42b2089a3485c0 100644
--- a/deps/npm/node_modules/columnify/columnify.js
+++ b/deps/npm/node_modules/columnify/columnify.js
@@ -1,6 +1,4 @@
-'use strict';
-
-var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } };
+"use strict";
var wcwidth = require('./width');
@@ -35,7 +33,7 @@ var DEFAULTS = Object.freeze({
});
module.exports = function (items) {
- var options = arguments[1] === undefined ? {} : arguments[1];
+ var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
var columnConfigs = options.config || {};
delete options.config; // remove config so doesn't appear on every column.
@@ -217,6 +215,7 @@ function createRows(items, columns, columnNames, paddingChr) {
columnNames.forEach(function (columnName) {
numLines = Math.max(numLines, item[columnName].length);
});
+ // combine matching lines of each rows
var _loop = function (i) {
row[i] = row[i] || [];
@@ -227,7 +226,6 @@ function createRows(items, columns, columnNames, paddingChr) {
});
};
- // combine matching lines of each rows
for (var i = 0; i < numLines; i++) {
_loop(i);
}
@@ -242,18 +240,13 @@ function createRows(items, columns, columnNames, paddingChr) {
*/
function mixin() {
- for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
-
- if (Object.assign) {
- return Object.assign.apply(Object, _toConsumableArray(args));
- }return ObjectAssign.apply(undefined, _toConsumableArray(args));
+ if (Object.assign) return Object.assign.apply(Object, arguments);
+ return ObjectAssign.apply(undefined, arguments);
}
function ObjectAssign(target, firstSource) {
- 'use strict';
- if (target === undefined || target === null) throw new TypeError('Cannot convert first argument to object');
+ "use strict";
+ if (target === undefined || target === null) throw new TypeError("Cannot convert first argument to object");
var to = Object(target);
@@ -295,9 +288,8 @@ function endsWith(target, searchString, position) {
}
function toArray(items, columnNames) {
- if (Array.isArray(items)) {
- return items;
- }var rows = [];
+ if (Array.isArray(items)) return items;
+ var rows = [];
for (var key in items) {
var item = {};
item[columnNames[0] || 'key'] = key;
diff --git a/deps/npm/node_modules/columnify/node_modules/strip-ansi/cli.js b/deps/npm/node_modules/columnify/node_modules/strip-ansi/cli.js
deleted file mode 100755
index b83f63b907e2e0..00000000000000
--- a/deps/npm/node_modules/columnify/node_modules/strip-ansi/cli.js
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env node
-'use strict';
-var fs = require('fs');
-var pkg = require('./package.json');
-var stripAnsi = require('./');
-var argv = process.argv.slice(2);
-var input = argv[0];
-
-function help() {
- console.log([
- '',
- ' ' + pkg.description,
- '',
- ' Usage',
- ' strip-ansi > ',
- ' cat | strip-ansi > ',
- '',
- ' Example',
- ' strip-ansi unicorn.txt > unicorn-stripped.txt'
- ].join('\n'));
-}
-
-function init(data) {
- process.stdout.write(stripAnsi(data));
-}
-
-if (argv.indexOf('--help') !== -1) {
- help();
- return;
-}
-
-if (argv.indexOf('--version') !== -1) {
- console.log(pkg.version);
- return;
-}
-
-if (!input && process.stdin.isTTY) {
- help();
- return;
-}
-
-if (input) {
- init(fs.readFileSync(input, 'utf8'));
-} else {
- process.stdin.setEncoding('utf8');
- process.stdin.on('data', init);
-}
diff --git a/deps/npm/node_modules/columnify/node_modules/strip-ansi/license b/deps/npm/node_modules/columnify/node_modules/strip-ansi/license
new file mode 100644
index 00000000000000..654d0bfe943437
--- /dev/null
+++ b/deps/npm/node_modules/columnify/node_modules/strip-ansi/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus (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/columnify/node_modules/strip-ansi/node_modules/ansi-regex/index.js b/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/index.js
index 2fcdd1e472f961..4906755bc93573 100644
--- a/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/index.js
+++ b/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/index.js
@@ -1,4 +1,4 @@
'use strict';
module.exports = function () {
- return /(?:(?:\u001b\[)|\u009b)(?:(?:[0-9]{1,3})?(?:(?:;[0-9]{0,3})*)?[A-M|f-m])|\u001b[A-M]/g;
+ return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g;
};
diff --git a/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/package.json b/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/package.json
index da92c5d12e08b3..7fc07677a044ac 100644
--- a/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/package.json
+++ b/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/package.json
@@ -1,6 +1,6 @@
{
"name": "ansi-regex",
- "version": "1.1.1",
+ "version": "2.0.0",
"description": "Regular expression for matching ANSI escape codes",
"license": "MIT",
"repository": {
@@ -10,18 +10,16 @@
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
- "url": "http://sindresorhus.com"
+ "url": "sindresorhus.com"
},
"maintainers": [
{
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "http://sindresorhus.com"
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
},
{
- "name": "Joshua Appelman",
- "email": "jappelman@xebia.com",
- "url": "http://jbnicolai.com"
+ "name": "jbnicolai",
+ "email": "jappelman@xebia.com"
}
],
"engines": {
@@ -64,14 +62,25 @@
"devDependencies": {
"mocha": "*"
},
- "readme": "# ansi-regex [](https://travis-ci.org/sindresorhus/ansi-regex)\n\n> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)\n\n\n## Install\n\n```sh\n$ npm install --save ansi-regex\n```\n\n\n## Usage\n\n```js\nvar ansiRegex = require('ansi-regex');\n\nansiRegex().test('\\u001b[4mcake\\u001b[0m');\n//=> true\n\nansiRegex().test('cake');\n//=> false\n\n'\\u001b[4mcake\\u001b[0m'.match(ansiRegex());\n//=> ['\\u001b[4m', '\\u001b[0m']\n```\n\n*It's a function so you can create multiple instances. Regexes with the global flag will have the `.lastIndex` property changed for each call to methods on the instance. Therefore reusing the instance with multiple calls will not work as expected for `.test()`.*\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n",
- "readmeFilename": "readme.md",
+ "gitHead": "57c3f2941a73079fa8b081e02a522e3d29913e2f",
"bugs": {
"url": "https://github.com/sindresorhus/ansi-regex/issues"
},
- "homepage": "https://github.com/sindresorhus/ansi-regex#readme",
- "_id": "ansi-regex@1.1.1",
- "_shasum": "41c847194646375e6a1a5d10c3ca054ef9fc980d",
- "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz",
- "_from": "ansi-regex@>=1.0.0 <2.0.0"
+ "homepage": "https://github.com/sindresorhus/ansi-regex",
+ "_id": "ansi-regex@2.0.0",
+ "_shasum": "c5061b6e0ef8a81775e50f5d66151bf6bf371107",
+ "_from": "ansi-regex@>=2.0.0 <3.0.0",
+ "_npmVersion": "2.11.2",
+ "_nodeVersion": "0.12.5",
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "dist": {
+ "shasum": "c5061b6e0ef8a81775e50f5d66151bf6bf371107",
+ "tarball": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/readme.md b/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/readme.md
index ae876e7292feb7..1a4894ec1110e3 100644
--- a/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/readme.md
+++ b/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/readme.md
@@ -5,7 +5,7 @@
## Install
-```sh
+```
$ npm install --save ansi-regex
```
@@ -25,8 +25,6 @@ ansiRegex().test('cake');
//=> ['\u001b[4m', '\u001b[0m']
```
-*It's a function so you can create multiple instances. Regexes with the global flag will have the `.lastIndex` property changed for each call to methods on the instance. Therefore reusing the instance with multiple calls will not work as expected for `.test()`.*
-
## License
diff --git a/deps/npm/node_modules/columnify/node_modules/strip-ansi/package.json b/deps/npm/node_modules/columnify/node_modules/strip-ansi/package.json
index e43cfb5a5c4d09..2871d037908d62 100644
--- a/deps/npm/node_modules/columnify/node_modules/strip-ansi/package.json
+++ b/deps/npm/node_modules/columnify/node_modules/strip-ansi/package.json
@@ -1,6 +1,6 @@
{
"name": "strip-ansi",
- "version": "2.0.1",
+ "version": "3.0.0",
"description": "Strip ANSI escape codes",
"license": "MIT",
"repository": {
@@ -10,20 +10,26 @@
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
- "url": "http://sindresorhus.com"
- },
- "bin": {
- "strip-ansi": "cli.js"
+ "url": "sindresorhus.com"
},
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ {
+ "name": "jbnicolai",
+ "email": "jappelman@xebia.com"
+ }
+ ],
"engines": {
"node": ">=0.10.0"
},
"scripts": {
- "test": "mocha"
+ "test": "node test.js"
},
"files": [
- "index.js",
- "cli.js"
+ "index.js"
],
"keywords": [
"strip",
@@ -36,7 +42,6 @@
"colors",
"terminal",
"console",
- "cli",
"string",
"tty",
"escape",
@@ -51,19 +56,30 @@
"text"
],
"dependencies": {
- "ansi-regex": "^1.0.0"
+ "ansi-regex": "^2.0.0"
},
"devDependencies": {
- "mocha": "*"
+ "ava": "0.0.4"
},
- "readme": "# strip-ansi [](https://travis-ci.org/sindresorhus/strip-ansi)\n\n> Strip [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)\n\n\n## Install\n\n```sh\n$ npm install --save strip-ansi\n```\n\n\n## Usage\n\n```js\nvar stripAnsi = require('strip-ansi');\n\nstripAnsi('\\u001b[4mcake\\u001b[0m');\n//=> 'cake'\n```\n\n\n## CLI\n\n```sh\n$ npm install --global strip-ansi\n```\n\n```sh\n$ strip-ansi --help\n\n Usage\n strip-ansi > \n cat | strip-ansi > \n\n Example\n strip-ansi unicorn.txt > unicorn-stripped.txt\n```\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n",
- "readmeFilename": "readme.md",
+ "gitHead": "3f05b9810e1438f946e2eb84ee854cc00b972e9e",
"bugs": {
"url": "https://github.com/sindresorhus/strip-ansi/issues"
},
- "homepage": "https://github.com/sindresorhus/strip-ansi#readme",
- "_id": "strip-ansi@2.0.1",
- "_shasum": "df62c1aa94ed2f114e1d0f21fd1d50482b79a60e",
- "_resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz",
- "_from": "strip-ansi@>=2.0.1 <3.0.0"
+ "homepage": "https://github.com/sindresorhus/strip-ansi",
+ "_id": "strip-ansi@3.0.0",
+ "_shasum": "7510b665567ca914ccb5d7e072763ac968be3724",
+ "_from": "strip-ansi@>=3.0.0 <4.0.0",
+ "_npmVersion": "2.11.2",
+ "_nodeVersion": "0.12.5",
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "dist": {
+ "shasum": "7510b665567ca914ccb5d7e072763ac968be3724",
+ "tarball": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/columnify/node_modules/strip-ansi/readme.md b/deps/npm/node_modules/columnify/node_modules/strip-ansi/readme.md
index 53ec26436ca545..76091512df5e46 100644
--- a/deps/npm/node_modules/columnify/node_modules/strip-ansi/readme.md
+++ b/deps/npm/node_modules/columnify/node_modules/strip-ansi/readme.md
@@ -5,7 +5,7 @@
## Install
-```sh
+```
$ npm install --save strip-ansi
```
@@ -20,22 +20,12 @@ stripAnsi('\u001b[4mcake\u001b[0m');
```
-## CLI
-
-```sh
-$ npm install --global strip-ansi
-```
-
-```sh
-$ strip-ansi --help
-
- Usage
- strip-ansi >
- cat | strip-ansi >
+## Related
- Example
- strip-ansi unicorn.txt > unicorn-stripped.txt
-```
+- [strip-ansi-cli](https://github.com/sindresorhus/strip-ansi-cli) - CLI for this module
+- [has-ansi](https://github.com/sindresorhus/has-ansi) - Check if a string has ANSI escape codes
+- [ansi-regex](https://github.com/sindresorhus/ansi-regex) - Regular expression for matching ANSI escape codes
+- [chalk](https://github.com/sindresorhus/chalk) - Terminal string styling done right
## License
diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/package.json b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/package.json
index dc56f3f191f7fb..bc8e878a54c34b 100644
--- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/package.json
+++ b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/package.json
@@ -122,6 +122,5 @@
"tarball": "http://registry.npmjs.org/clone/-/clone-0.1.19.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/clone/-/clone-0.1.19.tgz",
- "readme": "ERROR: No README data found!"
+ "_resolved": "https://registry.npmjs.org/clone/-/clone-0.1.19.tgz"
}
diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/package.json b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/package.json
index eea2e9b0f60bc9..fdd074d0f4afbb 100644
--- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/package.json
+++ b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/package.json
@@ -49,6 +49,5 @@
"tarball": "http://registry.npmjs.org/defaults/-/defaults-1.0.2.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.2.tgz",
- "readme": "ERROR: No README data found!"
+ "_resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.2.tgz"
}
diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/package.json b/deps/npm/node_modules/columnify/node_modules/wcwidth/package.json
index 49fc6f0408a7a5..4744d9dc3f7f7b 100644
--- a/deps/npm/node_modules/columnify/node_modules/wcwidth/package.json
+++ b/deps/npm/node_modules/columnify/node_modules/wcwidth/package.json
@@ -56,6 +56,5 @@
"shasum": "02d059ff7a8fc741e0f6b5da1e69b2b40daeca6f",
"tarball": "http://registry.npmjs.org/wcwidth/-/wcwidth-1.0.0.tgz"
},
- "_resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.0.tgz",
- "readme": "ERROR: No README data found!"
+ "_resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.0.tgz"
}
diff --git a/deps/npm/node_modules/columnify/package.json b/deps/npm/node_modules/columnify/package.json
index eaef8abcb89b51..1dc803973c6900 100644
--- a/deps/npm/node_modules/columnify/package.json
+++ b/deps/npm/node_modules/columnify/package.json
@@ -1,7 +1,7 @@
{
"name": "columnify",
- "version": "1.5.1",
- "description": "Render data in text columns. supports in-column text-wrap.",
+ "version": "1.5.2",
+ "description": "Render data in text columns. Supports in-column text-wrap.",
"main": "columnify.js",
"scripts": {
"pretest": "npm prune",
@@ -14,10 +14,10 @@
},
"license": "MIT",
"devDependencies": {
- "babel": "^5.0.10",
- "chalk": "^1.0.0",
- "tap-spec": "^3.0.0",
- "tape": "^4.0.0"
+ "babel": "^5.8.21",
+ "chalk": "^1.1.0",
+ "tap-spec": "^4.0.2",
+ "tape": "^4.0.3"
},
"repository": {
"type": "git",
@@ -37,18 +37,18 @@
},
"homepage": "https://github.com/timoxley/columnify",
"dependencies": {
- "strip-ansi": "^2.0.1",
+ "strip-ansi": "^3.0.0",
"wcwidth": "^1.0.0"
},
"directories": {
"test": "test"
},
- "gitHead": "1e5f5ec9478d7dbd1e3d1d74343b552da7ae01ba",
- "_id": "columnify@1.5.1",
- "_shasum": "15fdda803a3875f87f9d302b3bc828932d664003",
- "_from": "columnify@>=1.5.1 <1.6.0",
- "_npmVersion": "2.7.6",
- "_nodeVersion": "0.10.36",
+ "gitHead": "e7417b78091844ff2f3ba62551a4817c7ae217bd",
+ "_id": "columnify@1.5.2",
+ "_shasum": "6937930d47c22a9bfa20732a7fd619d47eaba65a",
+ "_from": "columnify@1.5.2",
+ "_npmVersion": "2.9.0",
+ "_nodeVersion": "2.0.1",
"_npmUser": {
"name": "timoxley",
"email": "secoif@gmail.com"
@@ -60,9 +60,8 @@
}
],
"dist": {
- "shasum": "15fdda803a3875f87f9d302b3bc828932d664003",
- "tarball": "http://registry.npmjs.org/columnify/-/columnify-1.5.1.tgz"
+ "shasum": "6937930d47c22a9bfa20732a7fd619d47eaba65a",
+ "tarball": "http://registry.npmjs.org/columnify/-/columnify-1.5.2.tgz"
},
- "_resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.1.tgz",
- "readme": "ERROR: No README data found!"
+ "_resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.2.tgz"
}
diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/.npmignore b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/.npmignore
deleted file mode 100644
index c2658d7d1b3184..00000000000000
--- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules/
diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/README.md b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/README.md
deleted file mode 100644
index 13a2e86050a3eb..00000000000000
--- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# graceful-fs
-
-graceful-fs functions as a drop-in replacement for the fs module,
-making various improvements.
-
-The improvements are meant to normalize behavior across different
-platforms and environments, and to make filesystem access more
-resilient to errors.
-
-## Improvements over [fs module](http://api.nodejs.org/fs.html)
-
-graceful-fs:
-
-* Queues up `open` and `readdir` calls, and retries them once
- something closes if there is an EMFILE error from too many file
- descriptors.
-* fixes `lchmod` for Node versions prior to 0.6.2.
-* implements `fs.lutimes` if possible. Otherwise it becomes a noop.
-* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or
- `lchown` if the user isn't root.
-* makes `lchmod` and `lchown` become noops, if not available.
-* retries reading a file if `read` results in EAGAIN error.
-
-On Windows, it retries renaming a file for up to one second if `EACCESS`
-or `EPERM` error occurs, likely because antivirus software has locked
-the directory.
-
-## USAGE
-
-```javascript
-// use just like fs
-var fs = require('graceful-fs')
-
-// now go and do stuff with it...
-fs.readFileSync('some-file-or-whatever')
-```
diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/fs.js b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/fs.js
deleted file mode 100644
index 64ad980232ec0d..00000000000000
--- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/fs.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// eeeeeevvvvviiiiiiillllll
-// more evil than monkey-patching the native builtin?
-// Not sure.
-
-var mod = require("module")
-var pre = '(function (exports, require, module, __filename, __dirname) { '
-var post = '});'
-var src = pre + process.binding('natives').fs + post
-var vm = require('vm')
-var fn = vm.runInThisContext(src)
-fn(exports, require, module, __filename, __dirname)
diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/graceful-fs.js b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/graceful-fs.js
deleted file mode 100644
index fb206b83854a19..00000000000000
--- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/graceful-fs.js
+++ /dev/null
@@ -1,158 +0,0 @@
-// Monkey-patching the fs module.
-// It's ugly, but there is simply no other way to do this.
-var fs = module.exports = require('./fs.js')
-
-var assert = require('assert')
-
-// fix up some busted stuff, mostly on windows and old nodes
-require('./polyfills.js')
-
-var util = require('util')
-
-function noop () {}
-
-var debug = noop
-if (util.debuglog)
- debug = util.debuglog('gfs')
-else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || ''))
- debug = function() {
- var m = util.format.apply(util, arguments)
- m = 'GFS: ' + m.split(/\n/).join('\nGFS: ')
- console.error(m)
- }
-
-if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) {
- process.on('exit', function() {
- debug('fds', fds)
- debug(queue)
- assert.equal(queue.length, 0)
- })
-}
-
-
-var originalOpen = fs.open
-fs.open = open
-
-function open(path, flags, mode, cb) {
- if (typeof mode === "function") cb = mode, mode = null
- if (typeof cb !== "function") cb = noop
- new OpenReq(path, flags, mode, cb)
-}
-
-function OpenReq(path, flags, mode, cb) {
- this.path = path
- this.flags = flags
- this.mode = mode
- this.cb = cb
- Req.call(this)
-}
-
-util.inherits(OpenReq, Req)
-
-OpenReq.prototype.process = function() {
- originalOpen.call(fs, this.path, this.flags, this.mode, this.done)
-}
-
-var fds = {}
-OpenReq.prototype.done = function(er, fd) {
- debug('open done', er, fd)
- if (fd)
- fds['fd' + fd] = this.path
- Req.prototype.done.call(this, er, fd)
-}
-
-
-var originalReaddir = fs.readdir
-fs.readdir = readdir
-
-function readdir(path, cb) {
- if (typeof cb !== "function") cb = noop
- new ReaddirReq(path, cb)
-}
-
-function ReaddirReq(path, cb) {
- this.path = path
- this.cb = cb
- Req.call(this)
-}
-
-util.inherits(ReaddirReq, Req)
-
-ReaddirReq.prototype.process = function() {
- originalReaddir.call(fs, this.path, this.done)
-}
-
-ReaddirReq.prototype.done = function(er, files) {
- if (files && files.sort)
- files = files.sort()
- Req.prototype.done.call(this, er, files)
- onclose()
-}
-
-
-var originalClose = fs.close
-fs.close = close
-
-function close (fd, cb) {
- debug('close', fd)
- if (typeof cb !== "function") cb = noop
- delete fds['fd' + fd]
- originalClose.call(fs, fd, function(er) {
- onclose()
- cb(er)
- })
-}
-
-
-var originalCloseSync = fs.closeSync
-fs.closeSync = closeSync
-
-function closeSync (fd) {
- try {
- return originalCloseSync(fd)
- } finally {
- onclose()
- }
-}
-
-
-// Req class
-function Req () {
- // start processing
- this.done = this.done.bind(this)
- this.failures = 0
- this.process()
-}
-
-Req.prototype.done = function (er, result) {
- var tryAgain = false
- if (er) {
- var code = er.code
- var tryAgain = code === "EMFILE" || code === "ENFILE"
- if (process.platform === "win32")
- tryAgain = tryAgain || code === "OK"
- }
-
- if (tryAgain) {
- this.failures ++
- enqueue(this)
- } else {
- var cb = this.cb
- cb(er, result)
- }
-}
-
-var queue = []
-
-function enqueue(req) {
- queue.push(req)
- debug('enqueue %d %s', queue.length, req.constructor.name, req)
-}
-
-function onclose() {
- var req = queue.shift()
- if (req) {
- debug('process', req.constructor.name, req)
- req.process()
- }
-}
diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/package.json b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/package.json
deleted file mode 100644
index 6aa482b61bbd8c..00000000000000
--- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/package.json
+++ /dev/null
@@ -1,96 +0,0 @@
-{
- "_args": [
- [
- "graceful-fs@^3.0.2",
- "/Users/isaacs/dev/npm/npm/node_modules/fs-vacuum"
- ]
- ],
- "_from": "graceful-fs@>=3.0.2 <4.0.0",
- "_id": "graceful-fs@3.0.8",
- "_inCache": true,
- "_location": "/fs-vacuum/graceful-fs",
- "_nodeVersion": "2.0.1",
- "_npmUser": {
- "email": "isaacs@npmjs.com",
- "name": "isaacs"
- },
- "_npmVersion": "2.10.1",
- "_phantomChildren": {},
- "_requested": {
- "name": "graceful-fs",
- "raw": "graceful-fs@^3.0.2",
- "rawSpec": "^3.0.2",
- "scope": null,
- "spec": ">=3.0.2 <4.0.0",
- "type": "range"
- },
- "_requiredBy": [
- "/fs-vacuum"
- ],
- "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz",
- "_shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22",
- "_shrinkwrap": null,
- "_spec": "graceful-fs@^3.0.2",
- "_where": "/Users/isaacs/dev/npm/npm/node_modules/fs-vacuum",
- "author": {
- "email": "i@izs.me",
- "name": "Isaac Z. Schlueter",
- "url": "http://blog.izs.me"
- },
- "bugs": {
- "url": "https://github.com/isaacs/node-graceful-fs/issues"
- },
- "dependencies": {},
- "description": "A drop-in replacement for fs, making various improvements.",
- "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"
- },
- "gitHead": "45c57aa5e323c35a985a525de6f0c9a6ef59e1f8",
- "homepage": "https://github.com/isaacs/node-graceful-fs#readme",
- "keywords": [
- "EACCESS",
- "EAGAIN",
- "EINVAL",
- "EMFILE",
- "EPERM",
- "error",
- "errors",
- "fs",
- "handling",
- "module",
- "queue",
- "reading",
- "retries",
- "retry"
- ],
- "license": "ISC",
- "main": "graceful-fs.js",
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "name": "graceful-fs",
- "optionalDependencies": {},
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/node-graceful-fs.git"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "version": "3.0.8"
-}
diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/polyfills.js b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/polyfills.js
deleted file mode 100644
index 8ac5006e2da24d..00000000000000
--- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/polyfills.js
+++ /dev/null
@@ -1,254 +0,0 @@
-var fs = require('./fs.js')
-var constants = require('constants')
-
-var origCwd = process.cwd
-var cwd = null
-process.cwd = function() {
- if (!cwd)
- cwd = origCwd.call(process)
- return cwd
-}
-var chdir = process.chdir
-process.chdir = function(d) {
- cwd = null
- chdir.call(process, d)
-}
-
-// (re-)implement some things that are known busted or missing.
-
-// lchmod, broken prior to 0.6.2
-// back-port the fix here.
-if (constants.hasOwnProperty('O_SYMLINK') &&
- process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
- fs.lchmod = function (path, mode, callback) {
- callback = callback || noop
- fs.open( path
- , constants.O_WRONLY | constants.O_SYMLINK
- , mode
- , function (err, fd) {
- if (err) {
- callback(err)
- return
- }
- // prefer to return the chmod error, if one occurs,
- // but still try to close, and report closing errors if they occur.
- fs.fchmod(fd, mode, function (err) {
- fs.close(fd, function(err2) {
- callback(err || err2)
- })
- })
- })
- }
-
- fs.lchmodSync = function (path, mode) {
- var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)
-
- // prefer to return the chmod error, if one occurs,
- // but still try to close, and report closing errors if they occur.
- var err, err2
- try {
- var ret = fs.fchmodSync(fd, mode)
- } catch (er) {
- err = er
- }
- try {
- fs.closeSync(fd)
- } catch (er) {
- err2 = er
- }
- if (err || err2) throw (err || err2)
- return ret
- }
-}
-
-
-// lutimes implementation, or no-op
-if (!fs.lutimes) {
- if (constants.hasOwnProperty("O_SYMLINK")) {
- fs.lutimes = function (path, at, mt, cb) {
- fs.open(path, constants.O_SYMLINK, function (er, fd) {
- cb = cb || noop
- if (er) return cb(er)
- fs.futimes(fd, at, mt, function (er) {
- fs.close(fd, function (er2) {
- return cb(er || er2)
- })
- })
- })
- }
-
- fs.lutimesSync = function (path, at, mt) {
- var fd = fs.openSync(path, constants.O_SYMLINK)
- , err
- , err2
- , ret
-
- try {
- var ret = fs.futimesSync(fd, at, mt)
- } catch (er) {
- err = er
- }
- try {
- fs.closeSync(fd)
- } catch (er) {
- err2 = er
- }
- if (err || err2) throw (err || err2)
- return ret
- }
-
- } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) {
- // maybe utimensat will be bound soonish?
- fs.lutimes = function (path, at, mt, cb) {
- fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb)
- }
-
- fs.lutimesSync = function (path, at, mt) {
- return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW)
- }
-
- } else {
- fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) }
- fs.lutimesSync = function () {}
- }
-}
-
-
-// https://github.com/isaacs/node-graceful-fs/issues/4
-// Chown should not fail on einval or eperm if non-root.
-// It should not fail on enosys ever, as this just indicates
-// that a fs doesn't support the intended operation.
-
-fs.chown = chownFix(fs.chown)
-fs.fchown = chownFix(fs.fchown)
-fs.lchown = chownFix(fs.lchown)
-
-fs.chmod = chownFix(fs.chmod)
-fs.fchmod = chownFix(fs.fchmod)
-fs.lchmod = chownFix(fs.lchmod)
-
-fs.chownSync = chownFixSync(fs.chownSync)
-fs.fchownSync = chownFixSync(fs.fchownSync)
-fs.lchownSync = chownFixSync(fs.lchownSync)
-
-fs.chmodSync = chownFix(fs.chmodSync)
-fs.fchmodSync = chownFix(fs.fchmodSync)
-fs.lchmodSync = chownFix(fs.lchmodSync)
-
-function chownFix (orig) {
- if (!orig) return orig
- return function (target, uid, gid, cb) {
- return orig.call(fs, target, uid, gid, function (er, res) {
- if (chownErOk(er)) er = null
- cb(er, res)
- })
- }
-}
-
-function chownFixSync (orig) {
- if (!orig) return orig
- return function (target, uid, gid) {
- try {
- return orig.call(fs, target, uid, gid)
- } catch (er) {
- if (!chownErOk(er)) throw er
- }
- }
-}
-
-// ENOSYS means that the fs doesn't support the op. Just ignore
-// that, because it doesn't matter.
-//
-// if there's no getuid, or if getuid() is something other
-// than 0, and the error is EINVAL or EPERM, then just ignore
-// it.
-//
-// This specific case is a silent failure in cp, install, tar,
-// and most other unix tools that manage permissions.
-//
-// When running as root, or if other types of errors are
-// encountered, then it's strict.
-function chownErOk (er) {
- if (!er)
- return true
-
- if (er.code === "ENOSYS")
- return true
-
- var nonroot = !process.getuid || process.getuid() !== 0
- if (nonroot) {
- if (er.code === "EINVAL" || er.code === "EPERM")
- return true
- }
-
- return false
-}
-
-
-// if lchmod/lchown do not exist, then make them no-ops
-if (!fs.lchmod) {
- fs.lchmod = function (path, mode, cb) {
- process.nextTick(cb)
- }
- fs.lchmodSync = function () {}
-}
-if (!fs.lchown) {
- fs.lchown = function (path, uid, gid, cb) {
- process.nextTick(cb)
- }
- fs.lchownSync = function () {}
-}
-
-
-
-// on Windows, A/V software can lock the directory, causing this
-// to fail with an EACCES or EPERM if the directory contains newly
-// created files. Try again on failure, for up to 1 second.
-if (process.platform === "win32") {
- var rename_ = fs.rename
- fs.rename = function rename (from, to, cb) {
- var start = Date.now()
- rename_(from, to, function CB (er) {
- if (er
- && (er.code === "EACCES" || er.code === "EPERM")
- && Date.now() - start < 1000) {
- return rename_(from, to, CB)
- }
- if(cb) cb(er)
- })
- }
-}
-
-
-// if read() returns EAGAIN, then just try it again.
-var read = fs.read
-fs.read = function (fd, buffer, offset, length, position, callback_) {
- var callback
- if (callback_ && typeof callback_ === 'function') {
- var eagCounter = 0
- callback = function (er, _, __) {
- if (er && er.code === 'EAGAIN' && eagCounter < 10) {
- eagCounter ++
- return read.call(fs, fd, buffer, offset, length, position, callback)
- }
- callback_.apply(this, arguments)
- }
- }
- return read.call(fs, fd, buffer, offset, length, position, callback)
-}
-
-var readSync = fs.readSync
-fs.readSync = function (fd, buffer, offset, length, position) {
- var eagCounter = 0
- while (true) {
- try {
- return readSync.call(fs, fd, buffer, offset, length, position)
- } catch (er) {
- if (er.code === 'EAGAIN' && eagCounter < 10) {
- eagCounter ++
- continue
- }
- throw er
- }
- }
-}
diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/max-open.js b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/max-open.js
deleted file mode 100644
index a6b9ba43d3a6de..00000000000000
--- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/max-open.js
+++ /dev/null
@@ -1,69 +0,0 @@
-var test = require('tap').test
-var fs = require('../')
-
-test('open lots of stuff', function (t) {
- // Get around EBADF from libuv by making sure that stderr is opened
- // Otherwise Darwin will refuse to give us a FD for stderr!
- process.stderr.write('')
-
- // How many parallel open()'s to do
- var n = 1024
- var opens = 0
- var fds = []
- var going = true
- var closing = false
- var doneCalled = 0
-
- for (var i = 0; i < n; i++) {
- go()
- }
-
- function go() {
- opens++
- fs.open(__filename, 'r', function (er, fd) {
- if (er) throw er
- fds.push(fd)
- if (going) go()
- })
- }
-
- // should hit ulimit pretty fast
- setTimeout(function () {
- going = false
- t.equal(opens - fds.length, n)
- done()
- }, 100)
-
-
- function done () {
- if (closing) return
- doneCalled++
-
- if (fds.length === 0) {
- console.error('done called %d times', doneCalled)
- // First because of the timeout
- // Then to close the fd's opened afterwards
- // Then this time, to complete.
- // Might take multiple passes, depending on CPU speed
- // and ulimit, but at least 3 in every case.
- t.ok(doneCalled >= 2)
- return t.end()
- }
-
- closing = true
- setTimeout(function () {
- // console.error('do closing again')
- closing = false
- done()
- }, 100)
-
- // console.error('closing time')
- var closes = fds.slice(0)
- fds.length = 0
- closes.forEach(function (fd) {
- fs.close(fd, function (er) {
- if (er) throw er
- })
- })
- }
-})
diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/open.js b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/open.js
deleted file mode 100644
index 85732f236b0026..00000000000000
--- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/open.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var test = require('tap').test
-var fs = require('../graceful-fs.js')
-
-test('graceful fs is monkeypatched fs', function (t) {
- t.equal(fs, require('../fs.js'))
- t.end()
-})
-
-test('open an existing file works', function (t) {
- var fd = fs.openSync(__filename, 'r')
- fs.closeSync(fd)
- fs.open(__filename, 'r', function (er, fd) {
- if (er) throw er
- fs.close(fd, function (er) {
- if (er) throw er
- t.pass('works')
- t.end()
- })
- })
-})
-
-test('open a non-existing file throws', function (t) {
- var er
- try {
- var fd = fs.openSync('this file does not exist', 'r')
- } catch (x) {
- er = x
- }
- t.ok(er, 'should throw')
- t.notOk(fd, 'should not get an fd')
- t.equal(er.code, 'ENOENT')
-
- fs.open('neither does this file', 'r', function (er, fd) {
- t.ok(er, 'should throw')
- t.notOk(fd, 'should not get an fd')
- t.equal(er.code, 'ENOENT')
- t.end()
- })
-})
diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/readdir-sort.js b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/readdir-sort.js
deleted file mode 100644
index cb63a6846ed78f..00000000000000
--- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/readdir-sort.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var test = require("tap").test
-var fs = require("../fs.js")
-
-var readdir = fs.readdir
-fs.readdir = function(path, cb) {
- process.nextTick(function() {
- cb(null, ["b", "z", "a"])
- })
-}
-
-var g = require("../")
-
-test("readdir reorder", function (t) {
- g.readdir("whatevers", function (er, files) {
- if (er)
- throw er
- t.same(files, [ "a", "b", "z" ])
- t.end()
- })
-})
diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/write-then-read.js b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/write-then-read.js
deleted file mode 100644
index 21e4c26bf6c9dc..00000000000000
--- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/write-then-read.js
+++ /dev/null
@@ -1,47 +0,0 @@
-var fs = require('../');
-var rimraf = require('rimraf');
-var mkdirp = require('mkdirp');
-var test = require('tap').test;
-var p = require('path').resolve(__dirname, 'files');
-
-process.chdir(__dirname)
-
-// Make sure to reserve the stderr fd
-process.stderr.write('');
-
-var num = 4097;
-var paths = new Array(num);
-
-test('make files', function (t) {
- rimraf.sync(p);
- mkdirp.sync(p);
-
- for (var i = 0; i < num; ++i) {
- paths[i] = 'files/file-' + i;
- fs.writeFileSync(paths[i], 'content');
- }
-
- t.end();
-})
-
-test('read files', function (t) {
- // now read them
- var done = 0;
- for (var i = 0; i < num; ++i) {
- fs.readFile(paths[i], function(err, data) {
- if (err)
- throw err;
-
- ++done;
- if (done === num) {
- t.pass('success');
- t.end()
- }
- });
- }
-});
-
-test('cleanup', function (t) {
- rimraf.sync(p);
- t.end();
-});
diff --git a/deps/npm/node_modules/fs-vacuum/package.json b/deps/npm/node_modules/fs-vacuum/package.json
index 3b4935451812b4..c7d9895a924d72 100644
--- a/deps/npm/node_modules/fs-vacuum/package.json
+++ b/deps/npm/node_modules/fs-vacuum/package.json
@@ -1,6 +1,6 @@
{
"name": "fs-vacuum",
- "version": "1.2.6",
+ "version": "1.2.7",
"description": "recursively remove empty directories -- to a point",
"main": "vacuum.js",
"scripts": {
@@ -30,30 +30,14 @@
"tmp": "0.0.24"
},
"dependencies": {
- "graceful-fs": "^3.0.2",
+ "graceful-fs": "^4.1.2",
"path-is-inside": "^1.0.1",
"rimraf": "^2.2.8"
},
- "gitHead": "04b5093ac6fbcc4135835fb1c4ed990dfed5a04c",
- "_id": "fs-vacuum@1.2.6",
- "_shasum": "860c5e4b3e3aa2a6a3cbb327c57534f3a3bff642",
- "_from": "fs-vacuum@>=1.2.5 <1.3.0",
- "_npmVersion": "2.10.1",
- "_nodeVersion": "2.0.2",
- "_npmUser": {
- "name": "othiym23",
- "email": "ogd@aoaioxxysz.net"
- },
- "dist": {
- "shasum": "860c5e4b3e3aa2a6a3cbb327c57534f3a3bff642",
- "tarball": "http://registry.npmjs.org/fs-vacuum/-/fs-vacuum-1.2.6.tgz"
- },
- "maintainers": [
- {
- "name": "othiym23",
- "email": "ogd@aoaioxxysz.net"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/fs-vacuum/-/fs-vacuum-1.2.6.tgz"
+ "readme": "# fs-vacuum\n\nRemove the empty branches of a directory tree, optionally up to (but not\nincluding) a specified base directory. Optionally nukes the leaf directory.\n\n## Usage\n\n```javascript\nvar logger = require(\"npmlog\");\nvar vacuum = require(\"fs-vacuum\");\n\nvar options = {\n base : \"/path/to/my/tree/root\",\n purge : true,\n log : logger.silly.bind(logger, \"myCleanup\")\n};\n\n/* Assuming there are no other files or directories in \"out\", \"to\", or \"my\",\n * the final path will just be \"/path/to/my/tree/root\".\n */\nvacuum(\"/path/to/my/tree/root/out/to/my/files\", function (error) {\n if (error) console.error(\"Unable to cleanly vacuum:\", error.message);\n});\n```\n# vacuum(directory, options, callback)\n\n* `directory` {String} Leaf node to remove. **Must be a directory, symlink, or file.**\n* `options` {Object}\n * `base` {String} No directories at or above this level of the filesystem will be removed.\n * `purge` {Boolean} If set, nuke the whole leaf directory, including its contents.\n * `log` {Function} A logging function that takes `npmlog`-compatible argument lists.\n* `callback` {Function} Function to call once vacuuming is complete.\n * `error` {Error} What went wrong along the way, if anything.\n",
+ "readmeFilename": "README.md",
+ "gitHead": "498a44d987ee11bc355fe1ec479d55a689fc37ef",
+ "_id": "fs-vacuum@1.2.7",
+ "_shasum": "75e501f9d2889ba2fe9fe12f936ba5dad50ca35a",
+ "_from": "fs-vacuum@1.2.7"
}
diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/.npmignore b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/.npmignore
deleted file mode 100644
index c2658d7d1b3184..00000000000000
--- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules/
diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/LICENSE b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/LICENSE
deleted file mode 100644
index 19129e315fe593..00000000000000
--- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/README.md b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/README.md
deleted file mode 100644
index 13a2e86050a3eb..00000000000000
--- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# graceful-fs
-
-graceful-fs functions as a drop-in replacement for the fs module,
-making various improvements.
-
-The improvements are meant to normalize behavior across different
-platforms and environments, and to make filesystem access more
-resilient to errors.
-
-## Improvements over [fs module](http://api.nodejs.org/fs.html)
-
-graceful-fs:
-
-* Queues up `open` and `readdir` calls, and retries them once
- something closes if there is an EMFILE error from too many file
- descriptors.
-* fixes `lchmod` for Node versions prior to 0.6.2.
-* implements `fs.lutimes` if possible. Otherwise it becomes a noop.
-* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or
- `lchown` if the user isn't root.
-* makes `lchmod` and `lchown` become noops, if not available.
-* retries reading a file if `read` results in EAGAIN error.
-
-On Windows, it retries renaming a file for up to one second if `EACCESS`
-or `EPERM` error occurs, likely because antivirus software has locked
-the directory.
-
-## USAGE
-
-```javascript
-// use just like fs
-var fs = require('graceful-fs')
-
-// now go and do stuff with it...
-fs.readFileSync('some-file-or-whatever')
-```
diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/fs.js b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/fs.js
deleted file mode 100644
index 64ad980232ec0d..00000000000000
--- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/fs.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// eeeeeevvvvviiiiiiillllll
-// more evil than monkey-patching the native builtin?
-// Not sure.
-
-var mod = require("module")
-var pre = '(function (exports, require, module, __filename, __dirname) { '
-var post = '});'
-var src = pre + process.binding('natives').fs + post
-var vm = require('vm')
-var fn = vm.runInThisContext(src)
-fn(exports, require, module, __filename, __dirname)
diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/graceful-fs.js b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/graceful-fs.js
deleted file mode 100644
index fb206b83854a19..00000000000000
--- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/graceful-fs.js
+++ /dev/null
@@ -1,158 +0,0 @@
-// Monkey-patching the fs module.
-// It's ugly, but there is simply no other way to do this.
-var fs = module.exports = require('./fs.js')
-
-var assert = require('assert')
-
-// fix up some busted stuff, mostly on windows and old nodes
-require('./polyfills.js')
-
-var util = require('util')
-
-function noop () {}
-
-var debug = noop
-if (util.debuglog)
- debug = util.debuglog('gfs')
-else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || ''))
- debug = function() {
- var m = util.format.apply(util, arguments)
- m = 'GFS: ' + m.split(/\n/).join('\nGFS: ')
- console.error(m)
- }
-
-if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) {
- process.on('exit', function() {
- debug('fds', fds)
- debug(queue)
- assert.equal(queue.length, 0)
- })
-}
-
-
-var originalOpen = fs.open
-fs.open = open
-
-function open(path, flags, mode, cb) {
- if (typeof mode === "function") cb = mode, mode = null
- if (typeof cb !== "function") cb = noop
- new OpenReq(path, flags, mode, cb)
-}
-
-function OpenReq(path, flags, mode, cb) {
- this.path = path
- this.flags = flags
- this.mode = mode
- this.cb = cb
- Req.call(this)
-}
-
-util.inherits(OpenReq, Req)
-
-OpenReq.prototype.process = function() {
- originalOpen.call(fs, this.path, this.flags, this.mode, this.done)
-}
-
-var fds = {}
-OpenReq.prototype.done = function(er, fd) {
- debug('open done', er, fd)
- if (fd)
- fds['fd' + fd] = this.path
- Req.prototype.done.call(this, er, fd)
-}
-
-
-var originalReaddir = fs.readdir
-fs.readdir = readdir
-
-function readdir(path, cb) {
- if (typeof cb !== "function") cb = noop
- new ReaddirReq(path, cb)
-}
-
-function ReaddirReq(path, cb) {
- this.path = path
- this.cb = cb
- Req.call(this)
-}
-
-util.inherits(ReaddirReq, Req)
-
-ReaddirReq.prototype.process = function() {
- originalReaddir.call(fs, this.path, this.done)
-}
-
-ReaddirReq.prototype.done = function(er, files) {
- if (files && files.sort)
- files = files.sort()
- Req.prototype.done.call(this, er, files)
- onclose()
-}
-
-
-var originalClose = fs.close
-fs.close = close
-
-function close (fd, cb) {
- debug('close', fd)
- if (typeof cb !== "function") cb = noop
- delete fds['fd' + fd]
- originalClose.call(fs, fd, function(er) {
- onclose()
- cb(er)
- })
-}
-
-
-var originalCloseSync = fs.closeSync
-fs.closeSync = closeSync
-
-function closeSync (fd) {
- try {
- return originalCloseSync(fd)
- } finally {
- onclose()
- }
-}
-
-
-// Req class
-function Req () {
- // start processing
- this.done = this.done.bind(this)
- this.failures = 0
- this.process()
-}
-
-Req.prototype.done = function (er, result) {
- var tryAgain = false
- if (er) {
- var code = er.code
- var tryAgain = code === "EMFILE" || code === "ENFILE"
- if (process.platform === "win32")
- tryAgain = tryAgain || code === "OK"
- }
-
- if (tryAgain) {
- this.failures ++
- enqueue(this)
- } else {
- var cb = this.cb
- cb(er, result)
- }
-}
-
-var queue = []
-
-function enqueue(req) {
- queue.push(req)
- debug('enqueue %d %s', queue.length, req.constructor.name, req)
-}
-
-function onclose() {
- var req = queue.shift()
- if (req) {
- debug('process', req.constructor.name, req)
- req.process()
- }
-}
diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/package.json b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/package.json
deleted file mode 100644
index 221f8b781db77a..00000000000000
--- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/package.json
+++ /dev/null
@@ -1,96 +0,0 @@
-{
- "_args": [
- [
- "graceful-fs@^3.0.2",
- "/Users/isaacs/dev/npm/npm/node_modules/fs-write-stream-atomic"
- ]
- ],
- "_from": "graceful-fs@>=3.0.2 <4.0.0",
- "_id": "graceful-fs@3.0.8",
- "_inCache": true,
- "_location": "/fs-write-stream-atomic/graceful-fs",
- "_nodeVersion": "2.0.1",
- "_npmUser": {
- "email": "isaacs@npmjs.com",
- "name": "isaacs"
- },
- "_npmVersion": "2.10.1",
- "_phantomChildren": {},
- "_requested": {
- "name": "graceful-fs",
- "raw": "graceful-fs@^3.0.2",
- "rawSpec": "^3.0.2",
- "scope": null,
- "spec": ">=3.0.2 <4.0.0",
- "type": "range"
- },
- "_requiredBy": [
- "/fs-write-stream-atomic"
- ],
- "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz",
- "_shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22",
- "_shrinkwrap": null,
- "_spec": "graceful-fs@^3.0.2",
- "_where": "/Users/isaacs/dev/npm/npm/node_modules/fs-write-stream-atomic",
- "author": {
- "email": "i@izs.me",
- "name": "Isaac Z. Schlueter",
- "url": "http://blog.izs.me"
- },
- "bugs": {
- "url": "https://github.com/isaacs/node-graceful-fs/issues"
- },
- "dependencies": {},
- "description": "A drop-in replacement for fs, making various improvements.",
- "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"
- },
- "gitHead": "45c57aa5e323c35a985a525de6f0c9a6ef59e1f8",
- "homepage": "https://github.com/isaacs/node-graceful-fs#readme",
- "keywords": [
- "EACCESS",
- "EAGAIN",
- "EINVAL",
- "EMFILE",
- "EPERM",
- "error",
- "errors",
- "fs",
- "handling",
- "module",
- "queue",
- "reading",
- "retries",
- "retry"
- ],
- "license": "ISC",
- "main": "graceful-fs.js",
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "name": "graceful-fs",
- "optionalDependencies": {},
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/node-graceful-fs.git"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "version": "3.0.8"
-}
diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/polyfills.js b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/polyfills.js
deleted file mode 100644
index 8ac5006e2da24d..00000000000000
--- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/polyfills.js
+++ /dev/null
@@ -1,254 +0,0 @@
-var fs = require('./fs.js')
-var constants = require('constants')
-
-var origCwd = process.cwd
-var cwd = null
-process.cwd = function() {
- if (!cwd)
- cwd = origCwd.call(process)
- return cwd
-}
-var chdir = process.chdir
-process.chdir = function(d) {
- cwd = null
- chdir.call(process, d)
-}
-
-// (re-)implement some things that are known busted or missing.
-
-// lchmod, broken prior to 0.6.2
-// back-port the fix here.
-if (constants.hasOwnProperty('O_SYMLINK') &&
- process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
- fs.lchmod = function (path, mode, callback) {
- callback = callback || noop
- fs.open( path
- , constants.O_WRONLY | constants.O_SYMLINK
- , mode
- , function (err, fd) {
- if (err) {
- callback(err)
- return
- }
- // prefer to return the chmod error, if one occurs,
- // but still try to close, and report closing errors if they occur.
- fs.fchmod(fd, mode, function (err) {
- fs.close(fd, function(err2) {
- callback(err || err2)
- })
- })
- })
- }
-
- fs.lchmodSync = function (path, mode) {
- var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)
-
- // prefer to return the chmod error, if one occurs,
- // but still try to close, and report closing errors if they occur.
- var err, err2
- try {
- var ret = fs.fchmodSync(fd, mode)
- } catch (er) {
- err = er
- }
- try {
- fs.closeSync(fd)
- } catch (er) {
- err2 = er
- }
- if (err || err2) throw (err || err2)
- return ret
- }
-}
-
-
-// lutimes implementation, or no-op
-if (!fs.lutimes) {
- if (constants.hasOwnProperty("O_SYMLINK")) {
- fs.lutimes = function (path, at, mt, cb) {
- fs.open(path, constants.O_SYMLINK, function (er, fd) {
- cb = cb || noop
- if (er) return cb(er)
- fs.futimes(fd, at, mt, function (er) {
- fs.close(fd, function (er2) {
- return cb(er || er2)
- })
- })
- })
- }
-
- fs.lutimesSync = function (path, at, mt) {
- var fd = fs.openSync(path, constants.O_SYMLINK)
- , err
- , err2
- , ret
-
- try {
- var ret = fs.futimesSync(fd, at, mt)
- } catch (er) {
- err = er
- }
- try {
- fs.closeSync(fd)
- } catch (er) {
- err2 = er
- }
- if (err || err2) throw (err || err2)
- return ret
- }
-
- } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) {
- // maybe utimensat will be bound soonish?
- fs.lutimes = function (path, at, mt, cb) {
- fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb)
- }
-
- fs.lutimesSync = function (path, at, mt) {
- return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW)
- }
-
- } else {
- fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) }
- fs.lutimesSync = function () {}
- }
-}
-
-
-// https://github.com/isaacs/node-graceful-fs/issues/4
-// Chown should not fail on einval or eperm if non-root.
-// It should not fail on enosys ever, as this just indicates
-// that a fs doesn't support the intended operation.
-
-fs.chown = chownFix(fs.chown)
-fs.fchown = chownFix(fs.fchown)
-fs.lchown = chownFix(fs.lchown)
-
-fs.chmod = chownFix(fs.chmod)
-fs.fchmod = chownFix(fs.fchmod)
-fs.lchmod = chownFix(fs.lchmod)
-
-fs.chownSync = chownFixSync(fs.chownSync)
-fs.fchownSync = chownFixSync(fs.fchownSync)
-fs.lchownSync = chownFixSync(fs.lchownSync)
-
-fs.chmodSync = chownFix(fs.chmodSync)
-fs.fchmodSync = chownFix(fs.fchmodSync)
-fs.lchmodSync = chownFix(fs.lchmodSync)
-
-function chownFix (orig) {
- if (!orig) return orig
- return function (target, uid, gid, cb) {
- return orig.call(fs, target, uid, gid, function (er, res) {
- if (chownErOk(er)) er = null
- cb(er, res)
- })
- }
-}
-
-function chownFixSync (orig) {
- if (!orig) return orig
- return function (target, uid, gid) {
- try {
- return orig.call(fs, target, uid, gid)
- } catch (er) {
- if (!chownErOk(er)) throw er
- }
- }
-}
-
-// ENOSYS means that the fs doesn't support the op. Just ignore
-// that, because it doesn't matter.
-//
-// if there's no getuid, or if getuid() is something other
-// than 0, and the error is EINVAL or EPERM, then just ignore
-// it.
-//
-// This specific case is a silent failure in cp, install, tar,
-// and most other unix tools that manage permissions.
-//
-// When running as root, or if other types of errors are
-// encountered, then it's strict.
-function chownErOk (er) {
- if (!er)
- return true
-
- if (er.code === "ENOSYS")
- return true
-
- var nonroot = !process.getuid || process.getuid() !== 0
- if (nonroot) {
- if (er.code === "EINVAL" || er.code === "EPERM")
- return true
- }
-
- return false
-}
-
-
-// if lchmod/lchown do not exist, then make them no-ops
-if (!fs.lchmod) {
- fs.lchmod = function (path, mode, cb) {
- process.nextTick(cb)
- }
- fs.lchmodSync = function () {}
-}
-if (!fs.lchown) {
- fs.lchown = function (path, uid, gid, cb) {
- process.nextTick(cb)
- }
- fs.lchownSync = function () {}
-}
-
-
-
-// on Windows, A/V software can lock the directory, causing this
-// to fail with an EACCES or EPERM if the directory contains newly
-// created files. Try again on failure, for up to 1 second.
-if (process.platform === "win32") {
- var rename_ = fs.rename
- fs.rename = function rename (from, to, cb) {
- var start = Date.now()
- rename_(from, to, function CB (er) {
- if (er
- && (er.code === "EACCES" || er.code === "EPERM")
- && Date.now() - start < 1000) {
- return rename_(from, to, CB)
- }
- if(cb) cb(er)
- })
- }
-}
-
-
-// if read() returns EAGAIN, then just try it again.
-var read = fs.read
-fs.read = function (fd, buffer, offset, length, position, callback_) {
- var callback
- if (callback_ && typeof callback_ === 'function') {
- var eagCounter = 0
- callback = function (er, _, __) {
- if (er && er.code === 'EAGAIN' && eagCounter < 10) {
- eagCounter ++
- return read.call(fs, fd, buffer, offset, length, position, callback)
- }
- callback_.apply(this, arguments)
- }
- }
- return read.call(fs, fd, buffer, offset, length, position, callback)
-}
-
-var readSync = fs.readSync
-fs.readSync = function (fd, buffer, offset, length, position) {
- var eagCounter = 0
- while (true) {
- try {
- return readSync.call(fs, fd, buffer, offset, length, position)
- } catch (er) {
- if (er.code === 'EAGAIN' && eagCounter < 10) {
- eagCounter ++
- continue
- }
- throw er
- }
- }
-}
diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/max-open.js b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/max-open.js
deleted file mode 100644
index a6b9ba43d3a6de..00000000000000
--- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/max-open.js
+++ /dev/null
@@ -1,69 +0,0 @@
-var test = require('tap').test
-var fs = require('../')
-
-test('open lots of stuff', function (t) {
- // Get around EBADF from libuv by making sure that stderr is opened
- // Otherwise Darwin will refuse to give us a FD for stderr!
- process.stderr.write('')
-
- // How many parallel open()'s to do
- var n = 1024
- var opens = 0
- var fds = []
- var going = true
- var closing = false
- var doneCalled = 0
-
- for (var i = 0; i < n; i++) {
- go()
- }
-
- function go() {
- opens++
- fs.open(__filename, 'r', function (er, fd) {
- if (er) throw er
- fds.push(fd)
- if (going) go()
- })
- }
-
- // should hit ulimit pretty fast
- setTimeout(function () {
- going = false
- t.equal(opens - fds.length, n)
- done()
- }, 100)
-
-
- function done () {
- if (closing) return
- doneCalled++
-
- if (fds.length === 0) {
- console.error('done called %d times', doneCalled)
- // First because of the timeout
- // Then to close the fd's opened afterwards
- // Then this time, to complete.
- // Might take multiple passes, depending on CPU speed
- // and ulimit, but at least 3 in every case.
- t.ok(doneCalled >= 2)
- return t.end()
- }
-
- closing = true
- setTimeout(function () {
- // console.error('do closing again')
- closing = false
- done()
- }, 100)
-
- // console.error('closing time')
- var closes = fds.slice(0)
- fds.length = 0
- closes.forEach(function (fd) {
- fs.close(fd, function (er) {
- if (er) throw er
- })
- })
- }
-})
diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/open.js b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/open.js
deleted file mode 100644
index 85732f236b0026..00000000000000
--- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/open.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var test = require('tap').test
-var fs = require('../graceful-fs.js')
-
-test('graceful fs is monkeypatched fs', function (t) {
- t.equal(fs, require('../fs.js'))
- t.end()
-})
-
-test('open an existing file works', function (t) {
- var fd = fs.openSync(__filename, 'r')
- fs.closeSync(fd)
- fs.open(__filename, 'r', function (er, fd) {
- if (er) throw er
- fs.close(fd, function (er) {
- if (er) throw er
- t.pass('works')
- t.end()
- })
- })
-})
-
-test('open a non-existing file throws', function (t) {
- var er
- try {
- var fd = fs.openSync('this file does not exist', 'r')
- } catch (x) {
- er = x
- }
- t.ok(er, 'should throw')
- t.notOk(fd, 'should not get an fd')
- t.equal(er.code, 'ENOENT')
-
- fs.open('neither does this file', 'r', function (er, fd) {
- t.ok(er, 'should throw')
- t.notOk(fd, 'should not get an fd')
- t.equal(er.code, 'ENOENT')
- t.end()
- })
-})
diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/readdir-sort.js b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/readdir-sort.js
deleted file mode 100644
index cb63a6846ed78f..00000000000000
--- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/readdir-sort.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var test = require("tap").test
-var fs = require("../fs.js")
-
-var readdir = fs.readdir
-fs.readdir = function(path, cb) {
- process.nextTick(function() {
- cb(null, ["b", "z", "a"])
- })
-}
-
-var g = require("../")
-
-test("readdir reorder", function (t) {
- g.readdir("whatevers", function (er, files) {
- if (er)
- throw er
- t.same(files, [ "a", "b", "z" ])
- t.end()
- })
-})
diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/write-then-read.js b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/write-then-read.js
deleted file mode 100644
index 21e4c26bf6c9dc..00000000000000
--- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/write-then-read.js
+++ /dev/null
@@ -1,47 +0,0 @@
-var fs = require('../');
-var rimraf = require('rimraf');
-var mkdirp = require('mkdirp');
-var test = require('tap').test;
-var p = require('path').resolve(__dirname, 'files');
-
-process.chdir(__dirname)
-
-// Make sure to reserve the stderr fd
-process.stderr.write('');
-
-var num = 4097;
-var paths = new Array(num);
-
-test('make files', function (t) {
- rimraf.sync(p);
- mkdirp.sync(p);
-
- for (var i = 0; i < num; ++i) {
- paths[i] = 'files/file-' + i;
- fs.writeFileSync(paths[i], 'content');
- }
-
- t.end();
-})
-
-test('read files', function (t) {
- // now read them
- var done = 0;
- for (var i = 0; i < num; ++i) {
- fs.readFile(paths[i], function(err, data) {
- if (err)
- throw err;
-
- ++done;
- if (done === num) {
- t.pass('success');
- t.end()
- }
- });
- }
-});
-
-test('cleanup', function (t) {
- rimraf.sync(p);
- t.end();
-});
diff --git a/deps/npm/node_modules/fs-write-stream-atomic/package.json b/deps/npm/node_modules/fs-write-stream-atomic/package.json
index c300228a5d3361..a94785682a9f91 100644
--- a/deps/npm/node_modules/fs-write-stream-atomic/package.json
+++ b/deps/npm/node_modules/fs-write-stream-atomic/package.json
@@ -1,23 +1,23 @@
{
"name": "fs-write-stream-atomic",
- "version": "1.0.3",
+ "version": "1.0.4",
"description": "Like `fs.createWriteStream(...)`, but atomic.",
"main": "index.js",
"directories": {
"test": "test"
},
"dependencies": {
- "graceful-fs": "^3.0.2"
+ "graceful-fs": "^4.1.2"
},
"devDependencies": {
- "tap": "^0.4.12"
+ "tap": "^1.2.0"
},
"scripts": {
"test": "tap test/*.js"
},
"repository": {
"type": "git",
- "url": "https://github.com/npm/fs-write-stream-atomic"
+ "url": "git+https://github.com/npm/fs-write-stream-atomic.git"
},
"author": {
"name": "Isaac Z. Schlueter",
@@ -29,29 +29,10 @@
"url": "https://github.com/npm/fs-write-stream-atomic/issues"
},
"homepage": "https://github.com/npm/fs-write-stream-atomic",
- "gitHead": "78573c09271f3ec672740862dad80be3d75e1963",
- "_id": "fs-write-stream-atomic@1.0.3",
- "_shasum": "c8fe17f66d7d3f50e9aee59195c358e7710372cc",
- "_from": "fs-write-stream-atomic@1.0.3",
- "_npmVersion": "2.7.6",
- "_nodeVersion": "1.6.2",
- "_npmUser": {
- "name": "iarna",
- "email": "me@re-becca.org"
- },
- "dist": {
- "shasum": "c8fe17f66d7d3f50e9aee59195c358e7710372cc",
- "tarball": "http://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.3.tgz"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- {
- "name": "iarna",
- "email": "me@re-becca.org"
- }
- ],
- "_resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.3.tgz"
+ "readme": "# fs-write-stream-atomic\n\nLike `fs.createWriteStream(...)`, but atomic.\n\nWrites to a tmp file and does an atomic `fs.rename` to move it into\nplace when it's done.\n\nFirst rule of debugging: **It's always a race condition.**\n\n## USAGE\n\n```javascript\nvar fsWriteStreamAtomic = require('fs-write-stream-atomic')\n// options are optional.\nvar write = fsWriteStreamAtomic('output.txt', options)\nvar read = fs.createReadStream('input.txt')\nread.pipe(write)\n\n// When the write stream emits a 'finish' or 'close' event,\n// you can be sure that it is moved into place, and contains\n// all the bytes that were written to it, even if something else\n// was writing to `output.txt` at the same time.\n```\n\n### `fsWriteStreamAtomic(filename, [options])`\n\n* `filename` {String} The file we want to write to\n* `options` {Object}\n * `chown` {Object} User and group to set ownership after write\n * `uid` {Number}\n * `gid` {Number}\n * `encoding` {String} default = 'utf8'\n * `mode` {Number} default = `0666`\n * `flags` {String} default = `'w'`\n\n",
+ "readmeFilename": "README.md",
+ "gitHead": "6ca2651b913149543c5390c6c4f7d370bdca42b5",
+ "_id": "fs-write-stream-atomic@1.0.4",
+ "_shasum": "c1ea55889f036ceebdead7d1055edbad998fe5e9",
+ "_from": "fs-write-stream-atomic@1.0.4"
}
diff --git a/deps/npm/node_modules/fs-write-stream-atomic/test/toolong.js b/deps/npm/node_modules/fs-write-stream-atomic/test/toolong.js
index e5b2b05b8c3a04..a1e5b714a697ad 100644
--- a/deps/npm/node_modules/fs-write-stream-atomic/test/toolong.js
+++ b/deps/npm/node_modules/fs-write-stream-atomic/test/toolong.js
@@ -14,11 +14,15 @@ var target = path.resolve(__dirname, repeat(1000,'test'))
test('name too long', function (t) {
var stream = writeStream(target)
+ var hadError = false
stream.on('error', function (er) {
- t.is(er.code, 'ENAMETOOLONG', target.length + " character name results in ENAMETOOLONG")
+ if (!hadError) {
+ t.is(er.code, 'ENAMETOOLONG', target.length + " character name results in ENAMETOOLONG")
+ hadError = true
+ }
})
stream.on('close', function () {
t.end()
})
stream.end()
-})
\ No newline at end of file
+})
diff --git a/deps/npm/node_modules/fstream-npm/.travis.yml b/deps/npm/node_modules/fstream-npm/.travis.yml
new file mode 100644
index 00000000000000..c225dd42746cf8
--- /dev/null
+++ b/deps/npm/node_modules/fstream-npm/.travis.yml
@@ -0,0 +1,13 @@
+language: node_js
+sudo: false
+node_js:
+ - iojs
+ - "0.12"
+ - "0.10"
+ - "0.8"
+before_install:
+ - "npm config set spin false"
+ - "npm install -g npm/npm#2.x"
+script: "npm test"
+notifications:
+ slack: npm-inc:kRqQjto7YbINqHPb1X6nS3g8
diff --git a/deps/npm/node_modules/fstream-npm/fstream-npm.js b/deps/npm/node_modules/fstream-npm/fstream-npm.js
index ab528952c104cb..5541c3197191fd 100644
--- a/deps/npm/node_modules/fstream-npm/fstream-npm.js
+++ b/deps/npm/node_modules/fstream-npm/fstream-npm.js
@@ -109,16 +109,19 @@ Packer.prototype.applyIgnores = function (entry, partial, entryObj) {
if (mainFile && path.resolve(this.path, entry) === path.resolve(this.path, mainFile)) return true
// some files are *never* allowed under any circumstances
+ // (VCS folders, native build cruft, npm cruft, regular cruft)
if (entry === '.git' ||
- entry === '.lock-wscript' ||
- entry.match(/^\.wafpickle-[0-9]+$/) ||
entry === 'CVS' ||
entry === '.svn' ||
entry === '.hg' ||
+ entry === '.lock-wscript' ||
+ entry.match(/^\.wafpickle-[0-9]+$/) ||
+ entry === 'config.gypi' ||
+ entry === 'npm-debug.log' ||
+ entry === '.npmrc' ||
entry.match(/^\..*\.swp$/) ||
entry === '.DS_Store' ||
- entry.match(/^\._/) ||
- entry === 'npm-debug.log'
+ entry.match(/^\._/)
) {
return false
}
diff --git a/deps/npm/node_modules/fstream-npm/package.json b/deps/npm/node_modules/fstream-npm/package.json
index e44a6dd92ba24f..f3ab7b8faf1adc 100644
--- a/deps/npm/node_modules/fstream-npm/package.json
+++ b/deps/npm/node_modules/fstream-npm/package.json
@@ -6,13 +6,13 @@
},
"name": "fstream-npm",
"description": "fstream class for creating npm packages",
- "version": "1.0.4",
+ "version": "1.0.5",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/fstream-npm.git"
},
"scripts": {
- "test": "standard"
+ "test": "standard && tap test/*.js"
},
"main": "./fstream-npm.js",
"dependencies": {
@@ -20,17 +20,21 @@
"inherits": "2"
},
"devDependencies": {
- "standard": "^4.3.1"
+ "graceful-fs": "^4.1.2",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.4.2",
+ "standard": "^4.3.1",
+ "tap": "^1.3.2"
},
"license": "ISC",
"readme": "# fstream-npm\n\nThis is an fstream DirReader class that will read a directory and filter\nthings according to the semantics of what goes in an npm package.\n\nFor example:\n\n```javascript\n// This will print out all the files that would be included\n// by 'npm publish' or 'npm install' of this directory.\n\nvar FN = require(\"fstream-npm\")\nFN({ path: \"./\" })\n .on(\"child\", function (e) {\n console.error(e.path.substr(e.root.path.length + 1))\n })\n```\n\n",
"readmeFilename": "README.md",
- "gitHead": "d4bec1d24e777b8cef64857d26af828cff1bba68",
+ "gitHead": "f6ec06b9c45d7330213a5b446fff424b5a74e197",
"bugs": {
"url": "https://github.com/isaacs/fstream-npm/issues"
},
"homepage": "https://github.com/isaacs/fstream-npm#readme",
- "_id": "fstream-npm@1.0.4",
- "_shasum": "22196318b8fc2ab5ce15fd330fff931165e0305a",
- "_from": "fstream-npm@>=1.0.3 <1.1.0"
+ "_id": "fstream-npm@1.0.5",
+ "_shasum": "4c1d1cbc6da95c745f8d2c52077a1d2e7b337206",
+ "_from": "fstream-npm@>=1.0.5 <1.1.0"
}
diff --git a/deps/npm/node_modules/fstream-npm/test/ignores.js b/deps/npm/node_modules/fstream-npm/test/ignores.js
new file mode 100644
index 00000000000000..fef5dcc222bc70
--- /dev/null
+++ b/deps/npm/node_modules/fstream-npm/test/ignores.js
@@ -0,0 +1,95 @@
+var fs = require('graceful-fs')
+var join = require('path').join
+
+var mkdirp = require('mkdirp')
+var rimraf = require('rimraf')
+var test = require('tap').test
+
+var Packer = require('..')
+
+var pkg = join(__dirname, 'test-package')
+
+var gitDir = join(pkg, '.git')
+
+var elfJS = function () {/*
+module.exports = function () {
+ console.log("i'm a elf")
+}
+*/}.toString().split('\n').slice(1, -1).join()
+
+var json = {
+ 'name': 'test-package',
+ 'version': '3.1.4',
+ 'main': 'elf.js'
+}
+
+test('setup', function (t) {
+ setup()
+ t.end()
+})
+
+var included = [
+ 'package.json',
+ 'elf.js'
+]
+
+test('follows npm package ignoring rules', function (t) {
+ var subject = new Packer({ path: pkg, type: 'Directory', isDirectory: true })
+ subject.on('entry', function (entry) {
+ t.equal(entry.type, 'File', 'only files in this package')
+ var filename = entry.basename
+ t.ok(
+ included.indexOf(filename) > -1,
+ filename + ' is included'
+ )
+ })
+ // need to do this so fstream doesn't explode when files are removed from
+ // under it
+ subject.on('end', function () { t.end() })
+})
+
+test('cleanup', function (t) {
+ cleanup()
+ t.end()
+})
+
+function setup () {
+ cleanup()
+ mkdirp.sync(pkg)
+ fs.writeFileSync(
+ join(pkg, 'package.json'),
+ JSON.stringify(json, null, 2)
+ )
+
+ fs.writeFileSync(
+ join(pkg, 'elf.js'),
+ elfJS
+ )
+
+ fs.writeFileSync(
+ join(pkg, '.npmrc'),
+ 'packaged=false'
+ )
+
+ var build = join(pkg, 'build')
+ mkdirp.sync(build)
+ fs.writeFileSync(
+ join(build, 'config.gypi'),
+ "i_wont_be_included_by_fstream='with any luck'"
+ )
+
+ fs.writeFileSync(
+ join(build, 'npm-debug.log'),
+ '0 lol\n'
+ )
+
+ mkdirp.sync(gitDir)
+ fs.writeFileSync(
+ join(gitDir, 'gitstub'),
+ "won't fool git, also won't be included by fstream"
+ )
+}
+
+function cleanup () {
+ rimraf.sync(pkg)
+}
diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/.npmignore b/deps/npm/node_modules/fstream/node_modules/graceful-fs/.npmignore
deleted file mode 100644
index c2658d7d1b3184..00000000000000
--- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules/
diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/LICENSE b/deps/npm/node_modules/fstream/node_modules/graceful-fs/LICENSE
deleted file mode 100644
index 19129e315fe593..00000000000000
--- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/README.md b/deps/npm/node_modules/fstream/node_modules/graceful-fs/README.md
deleted file mode 100644
index 13a2e86050a3eb..00000000000000
--- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# graceful-fs
-
-graceful-fs functions as a drop-in replacement for the fs module,
-making various improvements.
-
-The improvements are meant to normalize behavior across different
-platforms and environments, and to make filesystem access more
-resilient to errors.
-
-## Improvements over [fs module](http://api.nodejs.org/fs.html)
-
-graceful-fs:
-
-* Queues up `open` and `readdir` calls, and retries them once
- something closes if there is an EMFILE error from too many file
- descriptors.
-* fixes `lchmod` for Node versions prior to 0.6.2.
-* implements `fs.lutimes` if possible. Otherwise it becomes a noop.
-* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or
- `lchown` if the user isn't root.
-* makes `lchmod` and `lchown` become noops, if not available.
-* retries reading a file if `read` results in EAGAIN error.
-
-On Windows, it retries renaming a file for up to one second if `EACCESS`
-or `EPERM` error occurs, likely because antivirus software has locked
-the directory.
-
-## USAGE
-
-```javascript
-// use just like fs
-var fs = require('graceful-fs')
-
-// now go and do stuff with it...
-fs.readFileSync('some-file-or-whatever')
-```
diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/fs.js b/deps/npm/node_modules/fstream/node_modules/graceful-fs/fs.js
deleted file mode 100644
index 64ad980232ec0d..00000000000000
--- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/fs.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// eeeeeevvvvviiiiiiillllll
-// more evil than monkey-patching the native builtin?
-// Not sure.
-
-var mod = require("module")
-var pre = '(function (exports, require, module, __filename, __dirname) { '
-var post = '});'
-var src = pre + process.binding('natives').fs + post
-var vm = require('vm')
-var fn = vm.runInThisContext(src)
-fn(exports, require, module, __filename, __dirname)
diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js b/deps/npm/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js
deleted file mode 100644
index fb206b83854a19..00000000000000
--- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js
+++ /dev/null
@@ -1,158 +0,0 @@
-// Monkey-patching the fs module.
-// It's ugly, but there is simply no other way to do this.
-var fs = module.exports = require('./fs.js')
-
-var assert = require('assert')
-
-// fix up some busted stuff, mostly on windows and old nodes
-require('./polyfills.js')
-
-var util = require('util')
-
-function noop () {}
-
-var debug = noop
-if (util.debuglog)
- debug = util.debuglog('gfs')
-else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || ''))
- debug = function() {
- var m = util.format.apply(util, arguments)
- m = 'GFS: ' + m.split(/\n/).join('\nGFS: ')
- console.error(m)
- }
-
-if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) {
- process.on('exit', function() {
- debug('fds', fds)
- debug(queue)
- assert.equal(queue.length, 0)
- })
-}
-
-
-var originalOpen = fs.open
-fs.open = open
-
-function open(path, flags, mode, cb) {
- if (typeof mode === "function") cb = mode, mode = null
- if (typeof cb !== "function") cb = noop
- new OpenReq(path, flags, mode, cb)
-}
-
-function OpenReq(path, flags, mode, cb) {
- this.path = path
- this.flags = flags
- this.mode = mode
- this.cb = cb
- Req.call(this)
-}
-
-util.inherits(OpenReq, Req)
-
-OpenReq.prototype.process = function() {
- originalOpen.call(fs, this.path, this.flags, this.mode, this.done)
-}
-
-var fds = {}
-OpenReq.prototype.done = function(er, fd) {
- debug('open done', er, fd)
- if (fd)
- fds['fd' + fd] = this.path
- Req.prototype.done.call(this, er, fd)
-}
-
-
-var originalReaddir = fs.readdir
-fs.readdir = readdir
-
-function readdir(path, cb) {
- if (typeof cb !== "function") cb = noop
- new ReaddirReq(path, cb)
-}
-
-function ReaddirReq(path, cb) {
- this.path = path
- this.cb = cb
- Req.call(this)
-}
-
-util.inherits(ReaddirReq, Req)
-
-ReaddirReq.prototype.process = function() {
- originalReaddir.call(fs, this.path, this.done)
-}
-
-ReaddirReq.prototype.done = function(er, files) {
- if (files && files.sort)
- files = files.sort()
- Req.prototype.done.call(this, er, files)
- onclose()
-}
-
-
-var originalClose = fs.close
-fs.close = close
-
-function close (fd, cb) {
- debug('close', fd)
- if (typeof cb !== "function") cb = noop
- delete fds['fd' + fd]
- originalClose.call(fs, fd, function(er) {
- onclose()
- cb(er)
- })
-}
-
-
-var originalCloseSync = fs.closeSync
-fs.closeSync = closeSync
-
-function closeSync (fd) {
- try {
- return originalCloseSync(fd)
- } finally {
- onclose()
- }
-}
-
-
-// Req class
-function Req () {
- // start processing
- this.done = this.done.bind(this)
- this.failures = 0
- this.process()
-}
-
-Req.prototype.done = function (er, result) {
- var tryAgain = false
- if (er) {
- var code = er.code
- var tryAgain = code === "EMFILE" || code === "ENFILE"
- if (process.platform === "win32")
- tryAgain = tryAgain || code === "OK"
- }
-
- if (tryAgain) {
- this.failures ++
- enqueue(this)
- } else {
- var cb = this.cb
- cb(er, result)
- }
-}
-
-var queue = []
-
-function enqueue(req) {
- queue.push(req)
- debug('enqueue %d %s', queue.length, req.constructor.name, req)
-}
-
-function onclose() {
- var req = queue.shift()
- if (req) {
- debug('process', req.constructor.name, req)
- req.process()
- }
-}
diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/package.json b/deps/npm/node_modules/fstream/node_modules/graceful-fs/package.json
deleted file mode 100644
index 458bb9538dbfd4..00000000000000
--- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/package.json
+++ /dev/null
@@ -1,96 +0,0 @@
-{
- "_args": [
- [
- "graceful-fs@3",
- "/Users/isaacs/dev/npm/npm/node_modules/fstream"
- ]
- ],
- "_from": "graceful-fs@>=3.0.0 <4.0.0",
- "_id": "graceful-fs@3.0.8",
- "_inCache": true,
- "_location": "/fstream/graceful-fs",
- "_nodeVersion": "2.0.1",
- "_npmUser": {
- "email": "isaacs@npmjs.com",
- "name": "isaacs"
- },
- "_npmVersion": "2.10.1",
- "_phantomChildren": {},
- "_requested": {
- "name": "graceful-fs",
- "raw": "graceful-fs@3",
- "rawSpec": "3",
- "scope": null,
- "spec": ">=3.0.0 <4.0.0",
- "type": "range"
- },
- "_requiredBy": [
- "/fstream"
- ],
- "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz",
- "_shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22",
- "_shrinkwrap": null,
- "_spec": "graceful-fs@3",
- "_where": "/Users/isaacs/dev/npm/npm/node_modules/fstream",
- "author": {
- "email": "i@izs.me",
- "name": "Isaac Z. Schlueter",
- "url": "http://blog.izs.me"
- },
- "bugs": {
- "url": "https://github.com/isaacs/node-graceful-fs/issues"
- },
- "dependencies": {},
- "description": "A drop-in replacement for fs, making various improvements.",
- "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"
- },
- "gitHead": "45c57aa5e323c35a985a525de6f0c9a6ef59e1f8",
- "homepage": "https://github.com/isaacs/node-graceful-fs#readme",
- "keywords": [
- "EACCESS",
- "EAGAIN",
- "EINVAL",
- "EMFILE",
- "EPERM",
- "error",
- "errors",
- "fs",
- "handling",
- "module",
- "queue",
- "reading",
- "retries",
- "retry"
- ],
- "license": "ISC",
- "main": "graceful-fs.js",
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "name": "graceful-fs",
- "optionalDependencies": {},
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/node-graceful-fs.git"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "version": "3.0.8"
-}
diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/polyfills.js b/deps/npm/node_modules/fstream/node_modules/graceful-fs/polyfills.js
deleted file mode 100644
index 8ac5006e2da24d..00000000000000
--- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/polyfills.js
+++ /dev/null
@@ -1,254 +0,0 @@
-var fs = require('./fs.js')
-var constants = require('constants')
-
-var origCwd = process.cwd
-var cwd = null
-process.cwd = function() {
- if (!cwd)
- cwd = origCwd.call(process)
- return cwd
-}
-var chdir = process.chdir
-process.chdir = function(d) {
- cwd = null
- chdir.call(process, d)
-}
-
-// (re-)implement some things that are known busted or missing.
-
-// lchmod, broken prior to 0.6.2
-// back-port the fix here.
-if (constants.hasOwnProperty('O_SYMLINK') &&
- process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
- fs.lchmod = function (path, mode, callback) {
- callback = callback || noop
- fs.open( path
- , constants.O_WRONLY | constants.O_SYMLINK
- , mode
- , function (err, fd) {
- if (err) {
- callback(err)
- return
- }
- // prefer to return the chmod error, if one occurs,
- // but still try to close, and report closing errors if they occur.
- fs.fchmod(fd, mode, function (err) {
- fs.close(fd, function(err2) {
- callback(err || err2)
- })
- })
- })
- }
-
- fs.lchmodSync = function (path, mode) {
- var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)
-
- // prefer to return the chmod error, if one occurs,
- // but still try to close, and report closing errors if they occur.
- var err, err2
- try {
- var ret = fs.fchmodSync(fd, mode)
- } catch (er) {
- err = er
- }
- try {
- fs.closeSync(fd)
- } catch (er) {
- err2 = er
- }
- if (err || err2) throw (err || err2)
- return ret
- }
-}
-
-
-// lutimes implementation, or no-op
-if (!fs.lutimes) {
- if (constants.hasOwnProperty("O_SYMLINK")) {
- fs.lutimes = function (path, at, mt, cb) {
- fs.open(path, constants.O_SYMLINK, function (er, fd) {
- cb = cb || noop
- if (er) return cb(er)
- fs.futimes(fd, at, mt, function (er) {
- fs.close(fd, function (er2) {
- return cb(er || er2)
- })
- })
- })
- }
-
- fs.lutimesSync = function (path, at, mt) {
- var fd = fs.openSync(path, constants.O_SYMLINK)
- , err
- , err2
- , ret
-
- try {
- var ret = fs.futimesSync(fd, at, mt)
- } catch (er) {
- err = er
- }
- try {
- fs.closeSync(fd)
- } catch (er) {
- err2 = er
- }
- if (err || err2) throw (err || err2)
- return ret
- }
-
- } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) {
- // maybe utimensat will be bound soonish?
- fs.lutimes = function (path, at, mt, cb) {
- fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb)
- }
-
- fs.lutimesSync = function (path, at, mt) {
- return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW)
- }
-
- } else {
- fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) }
- fs.lutimesSync = function () {}
- }
-}
-
-
-// https://github.com/isaacs/node-graceful-fs/issues/4
-// Chown should not fail on einval or eperm if non-root.
-// It should not fail on enosys ever, as this just indicates
-// that a fs doesn't support the intended operation.
-
-fs.chown = chownFix(fs.chown)
-fs.fchown = chownFix(fs.fchown)
-fs.lchown = chownFix(fs.lchown)
-
-fs.chmod = chownFix(fs.chmod)
-fs.fchmod = chownFix(fs.fchmod)
-fs.lchmod = chownFix(fs.lchmod)
-
-fs.chownSync = chownFixSync(fs.chownSync)
-fs.fchownSync = chownFixSync(fs.fchownSync)
-fs.lchownSync = chownFixSync(fs.lchownSync)
-
-fs.chmodSync = chownFix(fs.chmodSync)
-fs.fchmodSync = chownFix(fs.fchmodSync)
-fs.lchmodSync = chownFix(fs.lchmodSync)
-
-function chownFix (orig) {
- if (!orig) return orig
- return function (target, uid, gid, cb) {
- return orig.call(fs, target, uid, gid, function (er, res) {
- if (chownErOk(er)) er = null
- cb(er, res)
- })
- }
-}
-
-function chownFixSync (orig) {
- if (!orig) return orig
- return function (target, uid, gid) {
- try {
- return orig.call(fs, target, uid, gid)
- } catch (er) {
- if (!chownErOk(er)) throw er
- }
- }
-}
-
-// ENOSYS means that the fs doesn't support the op. Just ignore
-// that, because it doesn't matter.
-//
-// if there's no getuid, or if getuid() is something other
-// than 0, and the error is EINVAL or EPERM, then just ignore
-// it.
-//
-// This specific case is a silent failure in cp, install, tar,
-// and most other unix tools that manage permissions.
-//
-// When running as root, or if other types of errors are
-// encountered, then it's strict.
-function chownErOk (er) {
- if (!er)
- return true
-
- if (er.code === "ENOSYS")
- return true
-
- var nonroot = !process.getuid || process.getuid() !== 0
- if (nonroot) {
- if (er.code === "EINVAL" || er.code === "EPERM")
- return true
- }
-
- return false
-}
-
-
-// if lchmod/lchown do not exist, then make them no-ops
-if (!fs.lchmod) {
- fs.lchmod = function (path, mode, cb) {
- process.nextTick(cb)
- }
- fs.lchmodSync = function () {}
-}
-if (!fs.lchown) {
- fs.lchown = function (path, uid, gid, cb) {
- process.nextTick(cb)
- }
- fs.lchownSync = function () {}
-}
-
-
-
-// on Windows, A/V software can lock the directory, causing this
-// to fail with an EACCES or EPERM if the directory contains newly
-// created files. Try again on failure, for up to 1 second.
-if (process.platform === "win32") {
- var rename_ = fs.rename
- fs.rename = function rename (from, to, cb) {
- var start = Date.now()
- rename_(from, to, function CB (er) {
- if (er
- && (er.code === "EACCES" || er.code === "EPERM")
- && Date.now() - start < 1000) {
- return rename_(from, to, CB)
- }
- if(cb) cb(er)
- })
- }
-}
-
-
-// if read() returns EAGAIN, then just try it again.
-var read = fs.read
-fs.read = function (fd, buffer, offset, length, position, callback_) {
- var callback
- if (callback_ && typeof callback_ === 'function') {
- var eagCounter = 0
- callback = function (er, _, __) {
- if (er && er.code === 'EAGAIN' && eagCounter < 10) {
- eagCounter ++
- return read.call(fs, fd, buffer, offset, length, position, callback)
- }
- callback_.apply(this, arguments)
- }
- }
- return read.call(fs, fd, buffer, offset, length, position, callback)
-}
-
-var readSync = fs.readSync
-fs.readSync = function (fd, buffer, offset, length, position) {
- var eagCounter = 0
- while (true) {
- try {
- return readSync.call(fs, fd, buffer, offset, length, position)
- } catch (er) {
- if (er.code === 'EAGAIN' && eagCounter < 10) {
- eagCounter ++
- continue
- }
- throw er
- }
- }
-}
diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/max-open.js b/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/max-open.js
deleted file mode 100644
index a6b9ba43d3a6de..00000000000000
--- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/max-open.js
+++ /dev/null
@@ -1,69 +0,0 @@
-var test = require('tap').test
-var fs = require('../')
-
-test('open lots of stuff', function (t) {
- // Get around EBADF from libuv by making sure that stderr is opened
- // Otherwise Darwin will refuse to give us a FD for stderr!
- process.stderr.write('')
-
- // How many parallel open()'s to do
- var n = 1024
- var opens = 0
- var fds = []
- var going = true
- var closing = false
- var doneCalled = 0
-
- for (var i = 0; i < n; i++) {
- go()
- }
-
- function go() {
- opens++
- fs.open(__filename, 'r', function (er, fd) {
- if (er) throw er
- fds.push(fd)
- if (going) go()
- })
- }
-
- // should hit ulimit pretty fast
- setTimeout(function () {
- going = false
- t.equal(opens - fds.length, n)
- done()
- }, 100)
-
-
- function done () {
- if (closing) return
- doneCalled++
-
- if (fds.length === 0) {
- console.error('done called %d times', doneCalled)
- // First because of the timeout
- // Then to close the fd's opened afterwards
- // Then this time, to complete.
- // Might take multiple passes, depending on CPU speed
- // and ulimit, but at least 3 in every case.
- t.ok(doneCalled >= 2)
- return t.end()
- }
-
- closing = true
- setTimeout(function () {
- // console.error('do closing again')
- closing = false
- done()
- }, 100)
-
- // console.error('closing time')
- var closes = fds.slice(0)
- fds.length = 0
- closes.forEach(function (fd) {
- fs.close(fd, function (er) {
- if (er) throw er
- })
- })
- }
-})
diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/open.js b/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/open.js
deleted file mode 100644
index 85732f236b0026..00000000000000
--- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/open.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var test = require('tap').test
-var fs = require('../graceful-fs.js')
-
-test('graceful fs is monkeypatched fs', function (t) {
- t.equal(fs, require('../fs.js'))
- t.end()
-})
-
-test('open an existing file works', function (t) {
- var fd = fs.openSync(__filename, 'r')
- fs.closeSync(fd)
- fs.open(__filename, 'r', function (er, fd) {
- if (er) throw er
- fs.close(fd, function (er) {
- if (er) throw er
- t.pass('works')
- t.end()
- })
- })
-})
-
-test('open a non-existing file throws', function (t) {
- var er
- try {
- var fd = fs.openSync('this file does not exist', 'r')
- } catch (x) {
- er = x
- }
- t.ok(er, 'should throw')
- t.notOk(fd, 'should not get an fd')
- t.equal(er.code, 'ENOENT')
-
- fs.open('neither does this file', 'r', function (er, fd) {
- t.ok(er, 'should throw')
- t.notOk(fd, 'should not get an fd')
- t.equal(er.code, 'ENOENT')
- t.end()
- })
-})
diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js b/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js
deleted file mode 100644
index cb63a6846ed78f..00000000000000
--- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var test = require("tap").test
-var fs = require("../fs.js")
-
-var readdir = fs.readdir
-fs.readdir = function(path, cb) {
- process.nextTick(function() {
- cb(null, ["b", "z", "a"])
- })
-}
-
-var g = require("../")
-
-test("readdir reorder", function (t) {
- g.readdir("whatevers", function (er, files) {
- if (er)
- throw er
- t.same(files, [ "a", "b", "z" ])
- t.end()
- })
-})
diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/write-then-read.js b/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/write-then-read.js
deleted file mode 100644
index 21e4c26bf6c9dc..00000000000000
--- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/write-then-read.js
+++ /dev/null
@@ -1,47 +0,0 @@
-var fs = require('../');
-var rimraf = require('rimraf');
-var mkdirp = require('mkdirp');
-var test = require('tap').test;
-var p = require('path').resolve(__dirname, 'files');
-
-process.chdir(__dirname)
-
-// Make sure to reserve the stderr fd
-process.stderr.write('');
-
-var num = 4097;
-var paths = new Array(num);
-
-test('make files', function (t) {
- rimraf.sync(p);
- mkdirp.sync(p);
-
- for (var i = 0; i < num; ++i) {
- paths[i] = 'files/file-' + i;
- fs.writeFileSync(paths[i], 'content');
- }
-
- t.end();
-})
-
-test('read files', function (t) {
- // now read them
- var done = 0;
- for (var i = 0; i < num; ++i) {
- fs.readFile(paths[i], function(err, data) {
- if (err)
- throw err;
-
- ++done;
- if (done === num) {
- t.pass('success');
- t.end()
- }
- });
- }
-});
-
-test('cleanup', function (t) {
- rimraf.sync(p);
- t.end();
-});
diff --git a/deps/npm/node_modules/fstream/package.json b/deps/npm/node_modules/fstream/package.json
index 0109d940c27aa1..8c008195442823 100644
--- a/deps/npm/node_modules/fstream/package.json
+++ b/deps/npm/node_modules/fstream/package.json
@@ -6,7 +6,7 @@
},
"name": "fstream",
"description": "Advanced file system stream things",
- "version": "1.0.7",
+ "version": "1.0.8",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/fstream.git"
@@ -16,7 +16,7 @@
"node": ">=0.6"
},
"dependencies": {
- "graceful-fs": "3",
+ "graceful-fs": "^4.1.2",
"inherits": "~2.0.0",
"mkdirp": ">=0.5 0",
"rimraf": "2"
@@ -31,12 +31,12 @@
"license": "ISC",
"readme": "Like FS streams, but with stat on them, and supporting directories and\nsymbolic links, as well as normal files. Also, you can use this to set\nthe stats on a file, even if you don't change its contents, or to create\na symlink, etc.\n\nSo, for example, you can \"write\" a directory, and it'll call `mkdir`. You\ncan specify a uid and gid, and it'll call `chown`. You can specify a\n`mtime` and `atime`, and it'll call `utimes`. You can call it a symlink\nand provide a `linkpath` and it'll call `symlink`.\n\nNote that it won't automatically resolve symbolic links. So, if you\ncall `fstream.Reader('/some/symlink')` then you'll get an object\nthat stats and then ends immediately (since it has no data). To follow\nsymbolic links, do this: `fstream.Reader({path:'/some/symlink', follow:\ntrue })`.\n\nThere are various checks to make sure that the bytes emitted are the\nsame as the intended size, if the size is set.\n\n## Examples\n\n```javascript\nfstream\n .Writer({ path: \"path/to/file\"\n , mode: 0755\n , size: 6\n })\n .write(\"hello\\n\")\n .end()\n```\n\nThis will create the directories if they're missing, and then write\n`hello\\n` into the file, chmod it to 0755, and assert that 6 bytes have\nbeen written when it's done.\n\n```javascript\nfstream\n .Writer({ path: \"path/to/file\"\n , mode: 0755\n , size: 6\n , flags: \"a\"\n })\n .write(\"hello\\n\")\n .end()\n```\n\nYou can pass flags in, if you want to append to a file.\n\n```javascript\nfstream\n .Writer({ path: \"path/to/symlink\"\n , linkpath: \"./file\"\n , SymbolicLink: true\n , mode: \"0755\" // octal strings supported\n })\n .end()\n```\n\nIf isSymbolicLink is a function, it'll be called, and if it returns\ntrue, then it'll treat it as a symlink. If it's not a function, then\nany truish value will make a symlink, or you can set `type:\n'SymbolicLink'`, which does the same thing.\n\nNote that the linkpath is relative to the symbolic link location, not\nthe parent dir or cwd.\n\n```javascript\nfstream\n .Reader(\"path/to/dir\")\n .pipe(fstream.Writer(\"path/to/other/dir\"))\n```\n\nThis will do like `cp -Rp path/to/dir path/to/other/dir`. If the other\ndir exists and isn't a directory, then it'll emit an error. It'll also\nset the uid, gid, mode, etc. to be identical. In this way, it's more\nlike `rsync -a` than simply a copy.\n",
"readmeFilename": "README.md",
- "gitHead": "586e8efc1cf77883f6c22fc32a7cb38f0eb88911",
+ "gitHead": "d9f81146c50e687f1df04c1a0e7e4c173eb3dae2",
"bugs": {
"url": "https://github.com/isaacs/fstream/issues"
},
"homepage": "https://github.com/isaacs/fstream#readme",
- "_id": "fstream@1.0.7",
- "_shasum": "455a1aa1d46077668d95b6d27838e1b1daa78c78",
- "_from": "fstream@>=1.0.7 <1.1.0"
+ "_id": "fstream@1.0.8",
+ "_shasum": "7e8d7a73abb3647ef36e4b8a15ca801dba03d038",
+ "_from": "fstream@1.0.8"
}
diff --git a/deps/npm/node_modules/init-package-json/default-input.js b/deps/npm/node_modules/init-package-json/default-input.js
index ef5161e7926a96..59f8fec6121a8c 100644
--- a/deps/npm/node_modules/init-package-json/default-input.js
+++ b/deps/npm/node_modules/init-package-json/default-input.js
@@ -32,6 +32,9 @@ function readDeps (test) { return function (cb) {
try { p = JSON.parse(p) }
catch (e) { return next() }
if (!p.version) return next()
+ if (p._requiredBy) {
+ if (!p._requiredBy.some(function (req) { return req === '#USER' })) return next()
+ }
deps[d] = config.get('save-exact') ? p.version : config.get('save-prefix') + p.version
return next()
})
diff --git a/deps/npm/node_modules/init-package-json/init-package-json.js b/deps/npm/node_modules/init-package-json/init-package-json.js
index 5e50e712747a18..87c72ccf948b7e 100644
--- a/deps/npm/node_modules/init-package-json/init-package-json.js
+++ b/deps/npm/node_modules/init-package-json/init-package-json.js
@@ -106,7 +106,9 @@ function init (dir, input, config, cb) {
var d = JSON.stringify(pkg, null, 2) + '\n'
function write (yes) {
fs.writeFile(package, d, 'utf8', function (er) {
- if (!er && yes) console.log('Wrote to %s:\n\n%s\n', package, d)
+ if (!er && yes && !config.get('silent')) {
+ console.log('Wrote to %s:\n\n%s\n', package, d)
+ }
return cb(er, pkg)
})
}
diff --git a/deps/npm/node_modules/init-package-json/package.json b/deps/npm/node_modules/init-package-json/package.json
index ad9fab899bfc28..0cc543ece404f1 100644
--- a/deps/npm/node_modules/init-package-json/package.json
+++ b/deps/npm/node_modules/init-package-json/package.json
@@ -1,6 +1,6 @@
{
"name": "init-package-json",
- "version": "1.7.1",
+ "version": "1.9.1",
"main": "init-package-json.js",
"scripts": {
"test": "tap test/*.js"
@@ -23,7 +23,7 @@
"read": "~1.0.1",
"read-package-json": "1 || 2",
"semver": "2.x || 3.x || 4 || 5",
- "validate-npm-package-license": "^2.0.0",
+ "validate-npm-package-license": "^3.0.1",
"validate-npm-package-name": "^2.0.1"
},
"devDependencies": {
@@ -41,14 +41,42 @@
"prompt",
"start"
],
- "readme": "# init-package-json\n\nA node module to get your node module started.\n\n[](http://travis-ci.org/npm/init-package-json)\n\n## Usage\n\n```javascript\nvar init = require('init-package-json')\nvar path = require('path')\n\n// a path to a promzard module. In the event that this file is\n// not found, one will be provided for you.\nvar initFile = path.resolve(process.env.HOME, '.npm-init')\n\n// the dir where we're doin stuff.\nvar dir = process.cwd()\n\n// extra stuff that gets put into the PromZard module's context.\n// In npm, this is the resolved config object. Exposed as 'config'\n// Optional.\nvar configData = { some: 'extra stuff' }\n\n// Any existing stuff from the package.json file is also exposed in the\n// PromZard module as the `package` object. There will also be free\n// vars for:\n// * `filename` path to the package.json file\n// * `basename` the tip of the package dir\n// * `dirname` the parent of the package dir\n\ninit(dir, initFile, configData, function (er, data) {\n // the data's already been written to {dir}/package.json\n // now you can do stuff with it\n})\n```\n\nOr from the command line:\n\n```\n$ npm-init\n```\n\nSee [PromZard](https://github.com/isaacs/promzard) for details about\nwhat can go in the config file.\n",
- "readmeFilename": "README.md",
- "gitHead": "443031e837c81bb10548212a7b3700b5dde94cfb",
+ "gitHead": "37c38b4e23189eb5645901fa6851f343fddd4b73",
"bugs": {
"url": "https://github.com/isaacs/init-package-json/issues"
},
"homepage": "https://github.com/isaacs/init-package-json#readme",
- "_id": "init-package-json@1.7.1",
- "_shasum": "32a8643779c91732d901a6fdc7505de7119fb7ad",
- "_from": "init-package-json@>=1.7.1 <1.8.0"
+ "_id": "init-package-json@1.9.1",
+ "_shasum": "a28e05b5baeb3363cd473df68d30d3a80523a31c",
+ "_from": "init-package-json@1.9.1",
+ "_npmVersion": "2.14.1",
+ "_nodeVersion": "2.2.2",
+ "_npmUser": {
+ "name": "zkat",
+ "email": "kat@sykosomatic.org"
+ },
+ "dist": {
+ "shasum": "a28e05b5baeb3363cd473df68d30d3a80523a31c",
+ "tarball": "http://registry.npmjs.org/init-package-json/-/init-package-json-1.9.1.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "isaacs",
+ "email": "isaacs@npmjs.com"
+ },
+ {
+ "name": "othiym23",
+ "email": "ogd@aoaioxxysz.net"
+ },
+ {
+ "name": "iarna",
+ "email": "me@re-becca.org"
+ },
+ {
+ "name": "zkat",
+ "email": "kat@sykosomatic.org"
+ }
+ ],
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-1.9.1.tgz"
}
diff --git a/deps/npm/node_modules/init-package-json/test/silent.js b/deps/npm/node_modules/init-package-json/test/silent.js
new file mode 100644
index 00000000000000..4937020562a3da
--- /dev/null
+++ b/deps/npm/node_modules/init-package-json/test/silent.js
@@ -0,0 +1,23 @@
+var tap = require('tap')
+var init = require('../')
+var rimraf = require('rimraf')
+
+var log = console.log
+var logged = false
+console.log = function () {
+ logged = true
+}
+
+tap.test('silent: true', function (t) {
+ init(__dirname, __dirname, {yes: 'yes', silent: true}, function (er, data) {
+ if (er) throw er
+
+ t.false(logged, 'did not print anything')
+ t.end()
+ })
+})
+
+tap.test('teardown', function (t) {
+ console.log = log
+ rimraf(__dirname + '/package.json', t.end.bind(t))
+})
diff --git a/deps/npm/node_modules/node-gyp/.npmignore b/deps/npm/node_modules/node-gyp/.npmignore
index b0b49bd62b6405..6748492014230d 100644
--- a/deps/npm/node_modules/node-gyp/.npmignore
+++ b/deps/npm/node_modules/node-gyp/.npmignore
@@ -1 +1,3 @@
gyp/test
+node_modules
+test/.node-gyp
diff --git a/deps/npm/node_modules/node-gyp/0001-gyp-always-install-into-PRODUCT_DIR.patch b/deps/npm/node_modules/node-gyp/0001-gyp-always-install-into-PRODUCT_DIR.patch
index 3607789397f62a..694913f5954c25 100644
--- a/deps/npm/node_modules/node-gyp/0001-gyp-always-install-into-PRODUCT_DIR.patch
+++ b/deps/npm/node_modules/node-gyp/0001-gyp-always-install-into-PRODUCT_DIR.patch
@@ -28,7 +28,8 @@ index b88a433..9b3e4e3 100644
+ # # convenient access with LD_LIBRARY_PATH.
+ # return '$(builddir)/lib.%s/%s' % (self.toolset, self.alias)
return '$(builddir)/' + self.alias
-
-
---
+
+
+--
2.3.2 (Apple Git-55)
+
diff --git a/deps/npm/node_modules/node-gyp/0002-gyp-apply-https-codereview.chromium.org-11361103.patch b/deps/npm/node_modules/node-gyp/0002-gyp-apply-https-codereview.chromium.org-11361103.patch
index cc0a5b87f85872..d1c5cac7177490 100644
--- a/deps/npm/node_modules/node-gyp/0002-gyp-apply-https-codereview.chromium.org-11361103.patch
+++ b/deps/npm/node_modules/node-gyp/0002-gyp-apply-https-codereview.chromium.org-11361103.patch
@@ -18,7 +18,7 @@ index d8e0872..c59aea1 100644
+ if 'TargetExt' not in msbuild_attributes and 'product_extension' in spec:
+ ext = spec.get('product_extension')
+ msbuild_attributes['TargetExt'] = '.' + ext
-
+
if spec.get('msvs_external_builder'):
external_out_dir = spec.get('msvs_external_builder_out_dir', '.')
@@ -2773,6 +2776,9 @@ def _GetMSBuildConfigurationGlobalProperties(spec, configurations, build_file):
@@ -28,8 +28,9 @@ index d8e0872..c59aea1 100644
+ if 'TargetExt' in attributes:
+ _AddConditionalProperty(properties, condition, 'TargetExt',
+ attributes['TargetExt'])
-
+
if attributes.get('TargetPath'):
_AddConditionalProperty(properties, condition, 'TargetPath',
---
+--
2.3.2 (Apple Git-55)
+
diff --git a/deps/npm/node_modules/node-gyp/0003-gyp-don-t-use-links-at-all-just-copy-the-files-inste.patch b/deps/npm/node_modules/node-gyp/0003-gyp-don-t-use-links-at-all-just-copy-the-files-inste.patch
index 291e82dcad13d7..673a3ddd38516f 100644
--- a/deps/npm/node_modules/node-gyp/0003-gyp-don-t-use-links-at-all-just-copy-the-files-inste.patch
+++ b/deps/npm/node_modules/node-gyp/0003-gyp-don-t-use-links-at-all-just-copy-the-files-inste.patch
@@ -13,12 +13,12 @@ index 9b3e4e3..b3f8a2b 100644
--- a/gyp/pylib/gyp/generator/make.py
+++ b/gyp/pylib/gyp/generator/make.py
@@ -372,7 +372,7 @@ cmd_touch = touch $@
-
+
quiet_cmd_copy = COPY $@
# send stderr to /dev/null to ignore messages when linking directories.
-cmd_copy = ln -f "$<" "$@" 2>/dev/null || (rm -rf "$@" && cp -af "$<" "$@")
+cmd_copy = rm -rf "$@" && cp -af "$<" "$@"
-
+
%(link_commands)s
"""
diff --git a/gyp/pylib/gyp/generator/ninja.py b/gyp/pylib/gyp/generator/ninja.py
@@ -32,7 +32,8 @@ index 7461814..c2951a4 100644
- command='ln -f $in $out 2>/dev/null || (rm -rf $out && cp -af $in $out)')
+ command='rm -rf $out && cp -af $in $out')
master_ninja.newline()
-
+
all_targets = set()
---
+--
2.3.2 (Apple Git-55)
+
diff --git a/deps/npm/node_modules/node-gyp/CHANGELOG.md b/deps/npm/node_modules/node-gyp/CHANGELOG.md
new file mode 100644
index 00000000000000..4c8cc367814497
--- /dev/null
+++ b/deps/npm/node_modules/node-gyp/CHANGELOG.md
@@ -0,0 +1,24 @@
+v3.0.3 2015-09-14
+
+* [[`ad827cda30`](https://github.com/nodejs/node-gyp/commit/ad827cda30)] - tarballUrl global and && when checking for iojs (Lars-Magnus Skog) [#729](https://github.com/nodejs/node-gyp/pull/729)
+
+v3.0.2 2015-09-12
+
+* [[`6e8c3bf3c6`](https://github.com/nodejs/node-gyp/commit/6e8c3bf3c6)] - add back support for passing additional cmdline args (Rod Vagg) [#723](https://github.com/nodejs/node-gyp/pull/723)
+* [[`ff82f2f3b9`](https://github.com/nodejs/node-gyp/commit/ff82f2f3b9)] - fixed broken link in docs to Visual Studio 2013 download (simon-p-r) [#722](https://github.com/nodejs/node-gyp/pull/722)
+
+v3.0.1 2015-09-08
+
+* [[`846337e36b`](https://github.com/nodejs/node-gyp/commit/846337e36b)] - normalise versions for target == this comparison (Rod Vagg) [#716](https://github.com/nodejs/node-gyp/pull/716)
+
+v3.0.0 2015-09-08
+
+* [[`9720d0373c`](https://github.com/nodejs/node-gyp/commit/9720d0373c)] - remove node_modules from tree (Rod Vagg) [#711](https://github.com/nodejs/node-gyp/pull/711)
+* [[`6dcf220db7`](https://github.com/nodejs/node-gyp/commit/6dcf220db7)] - test version major directly, don't use semver.satisfies() (Rod Vagg) [#711](https://github.com/nodejs/node-gyp/pull/711)
+* [[`938dd18d1c`](https://github.com/nodejs/node-gyp/commit/938dd18d1c)] - refactor for clarity, fix dist-url, add env var dist-url functionality (Rod Vagg) [#711](https://github.com/nodejs/node-gyp/pull/711)
+* [[`9e9df66a06`](https://github.com/nodejs/node-gyp/commit/9e9df66a06)] - use process.release, make aware of io.js & node v4 differences (Rod Vagg) [#711](https://github.com/nodejs/node-gyp/pull/711)
+* [[`1ea7ed01f4`](https://github.com/nodejs/node-gyp/commit/1ea7ed01f4)] - **deps**: update graceful-fs dependency to the latest (Sakthipriyan Vairamani) [#714](https://github.com/nodejs/node-gyp/pull/714)
+* [[`0fbc387b35`](https://github.com/nodejs/node-gyp/commit/0fbc387b35)] - Update repository URLs. (Ben Noordhuis) [#715](https://github.com/nodejs/node-gyp/pull/715)
+* [[`bbedb8868b`](https://github.com/nodejs/node-gyp/commit/bbedb8868b)] - **(SEMVER-MAJOR)** **win**: enable delay-load hook by default (Jeremiah Senkpiel) [#708](https://github.com/nodejs/node-gyp/pull/708)
+* [[`85ed107565`](https://github.com/nodejs/node-gyp/commit/85ed107565)] - Merge pull request #664 from othiym23/othiym23/allow-semver-5 (Nathan Rajlich)
+* [[`0c720d234c`](https://github.com/nodejs/node-gyp/commit/0c720d234c)] - allow semver@5 (Forrest L Norvell)
diff --git a/deps/npm/node_modules/node-gyp/README.md b/deps/npm/node_modules/node-gyp/README.md
index edde1f6c39ab87..779dc6adc2713b 100644
--- a/deps/npm/node_modules/node-gyp/README.md
+++ b/deps/npm/node_modules/node-gyp/README.md
@@ -139,7 +139,7 @@ Some additional resources for addons and writing `gyp` files:
* ["Hello World" node addon example](https://github.com/joyent/node/tree/master/test/addons/hello-world)
* [gyp user documentation](https://chromium.googlesource.com/external/gyp/+/master/docs/UserDocumentation.md)
* [gyp input format reference](https://chromium.googlesource.com/external/gyp/+/master/docs/InputFormatReference.md)
- * [*"binding.gyp" files out in the wild* wiki page](https://github.com/TooTallNate/node-gyp/wiki/%22binding.gyp%22-files-out-in-the-wild)
+ * [*"binding.gyp" files out in the wild* wiki page](https://github.com/nodejs/node-gyp/wiki/%22binding.gyp%22-files-out-in-the-wild)
Commands
@@ -187,6 +187,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
[windows-python]: http://www.python.org/getit/windows
[windows-python-v2.7.3]: http://www.python.org/download/releases/2.7.3#download
-[msvc2013]: http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs
+[msvc2013]: http://www.microsoft.com/en-gb/download/details.aspx?id=44914
[win7sdk]: http://www.microsoft.com/en-us/download/details.aspx?id=8279
[compiler update for the Windows SDK 7.1]: http://www.microsoft.com/en-us/download/details.aspx?id=4422
diff --git a/deps/npm/node_modules/node-gyp/addon.gypi b/deps/npm/node_modules/node-gyp/addon.gypi
index 93f84892434256..510b00c713f55c 100644
--- a/deps/npm/node_modules/node-gyp/addon.gypi
+++ b/deps/npm/node_modules/node-gyp/addon.gypi
@@ -79,7 +79,7 @@
'-luuid.lib',
'-lodbc32.lib',
'-lDelayImp.lib',
- '-l"<(node_root_dir)/$(ConfigurationName)/iojs.lib"'
+ '-l"<(node_root_dir)/$(ConfigurationName)/<(node_lib_file)"'
],
'msvs_disabled_warnings': [
# warning C4251: 'node::ObjectWrap::handle_' : class 'v8::Persistent'
diff --git a/deps/npm/node_modules/node-gyp/bin/node-gyp.js b/deps/npm/node_modules/node-gyp/bin/node-gyp.js
index 4678260fd5b050..e44e73877c73b9 100755
--- a/deps/npm/node_modules/node-gyp/bin/node-gyp.js
+++ b/deps/npm/node_modules/node-gyp/bin/node-gyp.js
@@ -125,7 +125,7 @@ function issueMessage () {
errorMessage()
log.error('', [ 'This is a bug in `node-gyp`.'
, 'Try to update node-gyp and file an Issue if it does not help:'
- , ' '
+ , ' '
].join('\n'))
}
diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py
index b71e9d4e8a5168..2b0bb60cb4296b 100644
--- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py
+++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py
@@ -115,7 +115,7 @@ def WriteXmlIfChanged(content, path, encoding='utf-8', pretty=False,
xml_string = XmlToString(content, encoding, pretty)
if win32 and os.linesep != '\r\n':
xml_string = xml_string.replace('\n', '\r\n')
-
+
try:
xml_string = xml_string.encode(encoding)
except Exception:
diff --git a/deps/npm/node_modules/node-gyp/lib/build.js b/deps/npm/node_modules/node-gyp/lib/build.js
index b35ca01624b979..198017b262add5 100644
--- a/deps/npm/node_modules/node-gyp/lib/build.js
+++ b/deps/npm/node_modules/node-gyp/lib/build.js
@@ -13,13 +13,14 @@ var fs = require('graceful-fs')
, which = require('which')
, mkdirp = require('mkdirp')
, exec = require('child_process').exec
+ , processRelease = require('./process-release')
, win = process.platform == 'win32'
exports.usage = 'Invokes `' + (win ? 'msbuild' : 'make') + '` and builds the module'
function build (gyp, argv, callback) {
-
- var makeCommand = gyp.opts.make || process.env.MAKE
+ var release = processRelease(argv, gyp, process.version, process.release)
+ , makeCommand = gyp.opts.make || process.env.MAKE
|| (process.platform.indexOf('bsd') != -1 && process.platform.indexOf('kfreebsd') == -1 ? 'gmake' : 'make')
, command = win ? 'msbuild' : makeCommand
, buildDir = path.resolve('build')
@@ -173,7 +174,7 @@ function build (gyp, argv, callback) {
}
/**
- * Copies the iojs.lib file for the current target architecture into the
+ * Copies the node.lib file for the current target architecture into the
* current proper dev dir location.
*/
@@ -181,15 +182,15 @@ function build (gyp, argv, callback) {
if (!win || !copyDevLib) return doBuild()
var buildDir = path.resolve(nodeDir, buildType)
- , archNodeLibPath = path.resolve(nodeDir, arch, 'iojs.lib')
- , buildNodeLibPath = path.resolve(buildDir, 'iojs.lib')
+ , archNodeLibPath = path.resolve(nodeDir, arch, release.name + '.lib')
+ , buildNodeLibPath = path.resolve(buildDir, release.name + '.lib')
mkdirp(buildDir, function (err, isNew) {
if (err) return callback(err)
log.verbose('"' + buildType + '" dir needed to be created?', isNew)
var rs = fs.createReadStream(archNodeLibPath)
, ws = fs.createWriteStream(buildNodeLibPath)
- log.verbose('copying "iojs.lib" for ' + arch, buildNodeLibPath)
+ log.verbose('copying "' + release.name + '.lib" for ' + arch, buildNodeLibPath)
rs.pipe(ws)
rs.on('error', callback)
ws.on('error', callback)
diff --git a/deps/npm/node_modules/node-gyp/lib/configure.js b/deps/npm/node_modules/node-gyp/lib/configure.js
index 291fbd0d34dbe9..009935202af98a 100644
--- a/deps/npm/node_modules/node-gyp/lib/configure.js
+++ b/deps/npm/node_modules/node-gyp/lib/configure.js
@@ -15,6 +15,7 @@ var fs = require('graceful-fs')
, cp = require('child_process')
, PathArray = require('path-array')
, extend = require('util')._extend
+ , processRelease = require('./process-release')
, spawn = cp.spawn
, execFile = cp.execFile
, win = process.platform == 'win32'
@@ -28,6 +29,7 @@ function configure (gyp, argv, callback) {
, configNames = [ 'config.gypi', 'common.gypi' ]
, configs = []
, nodeDir
+ , release = processRelease(argv, gyp, process.version, process.release)
checkPython()
@@ -135,35 +137,25 @@ function configure (gyp, argv, callback) {
} else {
// if no --nodedir specified, ensure node dependencies are installed
- var version
- var versionStr
-
- if (gyp.opts.target) {
+ if ('v' + release.version !== process.version) {
// if --target was given, then determine a target version to compile for
- versionStr = gyp.opts.target
- log.verbose('get node dir', 'compiling against --target node version: %s', versionStr)
+ log.verbose('get node dir', 'compiling against --target node version: %s', release.version)
} else {
// if no --target was specified then use the current host node version
- versionStr = process.version
- log.verbose('get node dir', 'no --target version specified, falling back to host node version: %s', versionStr)
+ log.verbose('get node dir', 'no --target version specified, falling back to host node version: %s', release.version)
}
- // make sure we have a valid version
- try {
- version = semver.parse(versionStr)
- } catch (e) {
- return callback(e)
- }
- if (!version) {
- return callback(new Error('Invalid version number: ' + versionStr))
+ if (!release.semver) {
+ // could not parse the version string with semver
+ return callback(new Error('Invalid version number: ' + release.version))
}
// ensure that the target node version's dev files are installed
gyp.opts.ensure = true
- gyp.commands.install([ versionStr ], function (err, version) {
+ gyp.commands.install([ release.version ], function (err, version) {
if (err) return callback(err)
- log.verbose('get node dir', 'target node version installed:', version)
- nodeDir = path.resolve(gyp.devDir, version)
+ log.verbose('get node dir', 'target node version installed:', release.versionDir)
+ nodeDir = path.resolve(gyp.devDir, release.versionDir)
createBuildDir()
})
}
@@ -311,45 +303,47 @@ function configure (gyp, argv, callback) {
var gyp_script = path.resolve(__dirname, '..', 'gyp', 'gyp_main.py')
var addon_gypi = path.resolve(__dirname, '..', 'addon.gypi')
var common_gypi = path.resolve(nodeDir, 'include/node/common.gypi')
- //TODO: ideally async
- if (!fs.existsSync(common_gypi))
- common_gypi = path.resolve(nodeDir, 'common.gypi')
-
- var output_dir = 'build'
- if (win) {
- // Windows expects an absolute path
- output_dir = buildDir
- }
- var nodeGypDir = path.resolve(__dirname, '..')
+ fs.stat(common_gypi, function (err, stat) {
+ if (err)
+ common_gypi = path.resolve(nodeDir, 'common.gypi')
- argv.push('-I', addon_gypi)
- argv.push('-I', common_gypi)
- argv.push('-Dlibrary=shared_library')
- argv.push('-Dvisibility=default')
- argv.push('-Dnode_root_dir=' + nodeDir)
- argv.push('-Dnode_gyp_dir=' + nodeGypDir)
- argv.push('-Dmodule_root_dir=' + process.cwd())
- argv.push('--depth=.')
- argv.push('--no-parallel')
+ var output_dir = 'build'
+ if (win) {
+ // Windows expects an absolute path
+ output_dir = buildDir
+ }
+ var nodeGypDir = path.resolve(__dirname, '..')
- // tell gyp to write the Makefile/Solution files into output_dir
- argv.push('--generator-output', output_dir)
+ argv.push('-I', addon_gypi)
+ argv.push('-I', common_gypi)
+ argv.push('-Dlibrary=shared_library')
+ argv.push('-Dvisibility=default')
+ argv.push('-Dnode_root_dir=' + nodeDir)
+ argv.push('-Dnode_gyp_dir=' + nodeGypDir)
+ argv.push('-Dnode_lib_file=' + release.name + '.lib')
+ argv.push('-Dmodule_root_dir=' + process.cwd())
+ argv.push('--depth=.')
+ argv.push('--no-parallel')
- // tell make to write its output into the same dir
- argv.push('-Goutput_dir=.')
+ // tell gyp to write the Makefile/Solution files into output_dir
+ argv.push('--generator-output', output_dir)
- // enforce use of the "binding.gyp" file
- argv.unshift('binding.gyp')
+ // tell make to write its output into the same dir
+ argv.push('-Goutput_dir=.')
- // execute `gyp` from the current target nodedir
- argv.unshift(gyp_script)
+ // enforce use of the "binding.gyp" file
+ argv.unshift('binding.gyp')
- // make sure python uses files that came with this particular node package
- var pypath = new PathArray(process.env, 'PYTHONPATH')
- pypath.unshift(path.join(__dirname, '..', 'gyp', 'pylib'))
+ // execute `gyp` from the current target nodedir
+ argv.unshift(gyp_script)
- var cp = gyp.spawn(python, argv)
- cp.on('exit', onCpExit)
+ // make sure python uses files that came with this particular node package
+ var pypath = new PathArray(process.env, 'PYTHONPATH')
+ pypath.unshift(path.join(__dirname, '..', 'gyp', 'pylib'))
+
+ var cp = gyp.spawn(python, argv)
+ cp.on('exit', onCpExit)
+ })
}
/**
diff --git a/deps/npm/node_modules/node-gyp/lib/install.js b/deps/npm/node_modules/node-gyp/lib/install.js
index 79b6cd38266f7d..ddad77ec2b9509 100644
--- a/deps/npm/node_modules/node-gyp/lib/install.js
+++ b/deps/npm/node_modules/node-gyp/lib/install.js
@@ -20,10 +20,13 @@ var fs = require('graceful-fs')
, request = require('request')
, minimatch = require('minimatch')
, mkdir = require('mkdirp')
+ , processRelease = require('./process-release')
, win = process.platform == 'win32'
function install (gyp, argv, callback) {
+ var release = processRelease(argv, gyp, process.version, process.release)
+
// ensure no double-callbacks happen
function cb (err) {
if (cb.done) return
@@ -31,34 +34,29 @@ function install (gyp, argv, callback) {
if (err) {
log.warn('install', 'got an error, rolling back install')
// roll-back the install if anything went wrong
- gyp.commands.remove([ version ], function (err2) {
+ gyp.commands.remove([ release.versionDir ], function (err2) {
callback(err)
})
} else {
- callback(null, version)
+ callback(null, release.version)
}
}
- var defaultUrl = getDefaultIojsUrl(process.version)
- var distUrl = gyp.opts['dist-url'] || gyp.opts.disturl || defaultUrl
-
// Determine which node dev files version we are installing
- var versionStr = argv[0] || gyp.opts.target || process.version
- log.verbose('install', 'input version string %j', versionStr)
+ log.verbose('install', 'input version string %j', release.version)
- // parse the version to normalize and ensure it's valid
- var version = semver.parse(versionStr)
- if (!version) {
- return callback(new Error('Invalid version number: ' + versionStr))
+ if (!release.semver) {
+ // could not parse the version string with semver
+ return callback(new Error('Invalid version number: ' + release.version))
}
- if (semver.lt(versionStr, '0.8.0')) {
- return callback(new Error('Minimum target version is `0.8.0` or greater. Got: ' + versionStr))
+ if (semver.lt(release.version, '0.8.0')) {
+ return callback(new Error('Minimum target version is `0.8.0` or greater. Got: ' + release.version))
}
// 0.x.y-pre versions are not published yet and cannot be installed. Bail.
- if (version.prerelease[0] === 'pre') {
- log.verbose('detected "pre" node version', versionStr)
+ if (release.semver.prerelease[0] === 'pre') {
+ log.verbose('detected "pre" node version', release.version)
if (gyp.opts.nodedir) {
log.verbose('--nodedir flag was passed; skipping install', gyp.opts.nodedir)
callback()
@@ -69,14 +67,10 @@ function install (gyp, argv, callback) {
}
// flatten version into String
- version = version.version
- log.verbose('install', 'installing version: %s', version)
-
- // distributions starting with 0.10.0 contain sha256 checksums
- var checksumAlgo = semver.gte(version, '0.10.0') ? 'sha256' : 'sha1'
+ log.verbose('install', 'installing version: %s', release.versionDir)
// the directory where the dev files will be installed
- var devDir = path.resolve(gyp.devDir, version)
+ var devDir = path.resolve(gyp.devDir, release.versionDir)
// If '--ensure' was passed, then don't *always* install the version;
// check if it is already installed, and only install when needed
@@ -85,7 +79,7 @@ function install (gyp, argv, callback) {
fs.stat(devDir, function (err, stat) {
if (err) {
if (err.code == 'ENOENT') {
- log.verbose('install', 'version not already installed, continuing with install', version)
+ log.verbose('install', 'version not already installed, continuing with install', release.version)
go()
} else if (err.code == 'EACCES') {
eaccesFallback()
@@ -142,7 +136,7 @@ function install (gyp, argv, callback) {
}
try {
// The "request" constructor can throw sometimes apparently :(
- // See: https://github.com/TooTallNate/node-gyp/issues/114
+ // See: https://github.com/nodejs/node-gyp/issues/114
req = request(requestOpts)
} catch (e) {
cb(e)
@@ -156,7 +150,7 @@ function install (gyp, argv, callback) {
}
function getContentSha(res, callback) {
- var shasum = crypto.createHash(checksumAlgo)
+ var shasum = crypto.createHash('sha256')
res.on('data', function (chunk) {
shasum.update(chunk)
}).on('end', function () {
@@ -184,9 +178,8 @@ function install (gyp, argv, callback) {
}
// now download the node tarball
- var tarPath = gyp.opts['tarball']
- var tarballUrl = tarPath ? tarPath : distUrl + '/v' + version + '/iojs-v' + version + '-headers.tar.gz'
- , badDownload = false
+ var tarPath = gyp.opts.tarball
+ var badDownload = false
, extractCount = 0
, gunzip = zlib.createGunzip()
, extracter = tar.Extract({ path: devDir, strip: 1, filter: isValid })
@@ -220,12 +213,12 @@ function install (gyp, argv, callback) {
// download the tarball, gunzip and extract!
if (tarPath) {
- var input = fs.createReadStream(tarballUrl)
+ var input = fs.createReadStream(tarPath)
input.pipe(gunzip).pipe(extracter)
return
}
- var req = download(tarballUrl)
+ var req = download(release.tarballUrl)
if (!req) return
// something went wrong downloading the tarball?
@@ -248,12 +241,12 @@ function install (gyp, argv, callback) {
req.on('response', function (res) {
if (res.statusCode !== 200) {
badDownload = true
- cb(new Error(res.statusCode + ' response downloading ' + tarballUrl))
+ cb(new Error(res.statusCode + ' response downloading ' + release.tarballUrl))
return
}
// content checksum
getContentSha(res, function (_, checksum) {
- var filename = path.basename(tarballUrl).trim()
+ var filename = path.basename(release.tarballUrl).trim()
contentShasums[filename] = checksum
log.verbose('content checksum', filename, checksum)
})
@@ -272,7 +265,7 @@ function install (gyp, argv, callback) {
var async = 0
if (win) {
- // need to download iojs.lib
+ // need to download node.lib
async++
downloadNodeLib(deref)
}
@@ -314,13 +307,11 @@ function install (gyp, argv, callback) {
}
function downloadShasums(done) {
- var shasumsFile = (checksumAlgo === 'sha256') ? 'SHASUMS256.txt' : 'SHASUMS.txt'
- log.verbose('check download content checksum, need to download `' + shasumsFile + '`...')
- var shasumsPath = path.resolve(devDir, shasumsFile)
- , shasumsUrl = distUrl + '/v' + version + '/' + shasumsFile
+ log.verbose('check download content checksum, need to download `SHASUMS256.txt`...')
+ var shasumsPath = path.resolve(devDir, 'SHASUMS256.txt')
- log.verbose('checksum url', shasumsUrl)
- var req = download(shasumsUrl)
+ log.verbose('checksum url', release.shasumsUrl)
+ var req = download(release.shasumsUrl)
if (!req) return
req.on('error', done)
req.on('response', function (res) {
@@ -351,39 +342,37 @@ function install (gyp, argv, callback) {
}
function downloadNodeLib (done) {
- log.verbose('on Windows; need to download `iojs.lib`...')
+ log.verbose('on Windows; need to download `' + release.name + '.lib`...')
var dir32 = path.resolve(devDir, 'ia32')
, dir64 = path.resolve(devDir, 'x64')
- , nodeLibPath32 = path.resolve(dir32, 'iojs.lib')
- , nodeLibPath64 = path.resolve(dir64, 'iojs.lib')
- , nodeLibUrl32 = distUrl + '/v' + version + '/win-x86/iojs.lib'
- , nodeLibUrl64 = distUrl + '/v' + version + '/win-x64/iojs.lib'
+ , libPath32 = path.resolve(dir32, release.name + '.lib')
+ , libPath64 = path.resolve(dir64, release.name + '.lib')
- log.verbose('32-bit iojs.lib dir', dir32)
- log.verbose('64-bit iojs.lib dir', dir64)
- log.verbose('`iojs.lib` 32-bit url', nodeLibUrl32)
- log.verbose('`iojs.lib` 64-bit url', nodeLibUrl64)
+ log.verbose('32-bit ' + release.name + '.lib dir', dir32)
+ log.verbose('64-bit ' + release.name + '.lib dir', dir64)
+ log.verbose('`' + release.name + '.lib` 32-bit url', release.libUrl32)
+ log.verbose('`' + release.name + '.lib` 64-bit url', release.libUrl64)
var async = 2
mkdir(dir32, function (err) {
if (err) return done(err)
- log.verbose('streaming 32-bit iojs.lib to:', nodeLibPath32)
+ log.verbose('streaming 32-bit ' + release.name + '.lib to:', libPath32)
- var req = download(nodeLibUrl32)
+ var req = download(release.libUrl32)
if (!req) return
req.on('error', done)
req.on('response', function (res) {
if (res.statusCode !== 200) {
- done(new Error(res.statusCode + ' status code downloading 32-bit iojs.lib'))
+ done(new Error(res.statusCode + ' status code downloading 32-bit ' + release.name + '.lib'))
return
}
getContentSha(res, function (_, checksum) {
- contentShasums['win-x86/iojs.lib'] = checksum
- log.verbose('content checksum', 'win-x86/iojs.lib', checksum)
+ contentShasums[release.libPath32] = checksum
+ log.verbose('content checksum', release.libPath32, checksum)
})
- var ws = fs.createWriteStream(nodeLibPath32)
+ var ws = fs.createWriteStream(libPath32)
ws.on('error', cb)
req.pipe(ws)
})
@@ -393,23 +382,23 @@ function install (gyp, argv, callback) {
})
mkdir(dir64, function (err) {
if (err) return done(err)
- log.verbose('streaming 64-bit iojs.lib to:', nodeLibPath64)
+ log.verbose('streaming 64-bit ' + release.name + '.lib to:', libPath64)
- var req = download(nodeLibUrl64)
+ var req = download(release.libUrl64)
if (!req) return
req.on('error', done)
req.on('response', function (res) {
if (res.statusCode !== 200) {
- done(new Error(res.statusCode + ' status code downloading 64-bit iojs.lib'))
+ done(new Error(res.statusCode + ' status code downloading 64-bit ' + release.name + '.lib'))
return
}
getContentSha(res, function (_, checksum) {
- contentShasums['win-x64/iojs.lib'] = checksum
- log.verbose('content checksum', 'win-x64/iojs.lib', checksum)
+ contentShasums[release.libPath64] = checksum
+ log.verbose('content checksum', release.libPath64, checksum)
})
- var ws = fs.createWriteStream(nodeLibPath64)
+ var ws = fs.createWriteStream(libPath64)
ws.on('error', cb)
req.pipe(ws)
})
@@ -455,30 +444,3 @@ function install (gyp, argv, callback) {
}
}
-
-
-// pick out 'nightly', 'next-nightly' or 'rc' from the version string if it's there
-// adjust URL accordingly
-function getDefaultIojsUrl(version) {
- var versionMatch = version.match(/^v\d+\.\d+\.\d+-(?:(?:(nightly|next-nightly)\.?\d{8}[0-9a-f]{10})|(?:(rc)\.\d+))$/)
- var distType = versionMatch ? versionMatch[1] || versionMatch[2] : 'release'
- var defaultUrl = `https://iojs.org/download/${distType}`
- return defaultUrl
-}
-
-
-if (require.main === module) {
- var assert = require('assert')
- console.log('test v2.3.4 -> https://iojs.org/download/release')
- assert.equal(getDefaultIojsUrl('v2.3.4'), 'https://iojs.org/download/release')
- console.log('test v2.3.4-nightly12345678aaaaaaaaaa -> https://iojs.org/download/nightly')
- assert.equal(getDefaultIojsUrl('v2.3.4-nightly12345678aaaaaaaaaa'), 'https://iojs.org/download/nightly')
- console.log('test v2.3.4-nightly.12345678aaaaaaaaaa -> https://iojs.org/download/nightly')
- assert.equal(getDefaultIojsUrl('v2.3.4-nightly.12345678aaaaaaaaaa'), 'https://iojs.org/download/nightly')
- console.log('test v2.3.4-next-nightly12345678aaaaaaaaaa -> https://iojs.org/download/release/next-nightly')
- assert.equal(getDefaultIojsUrl('v2.3.4-next-nightly12345678aaaaaaaaaa'), 'https://iojs.org/download/next-nightly')
- console.log('test v2.3.4-next-nightly.12345678aaaaaaaaaa -> https://iojs.org/download/release/next-nightly')
- assert.equal(getDefaultIojsUrl('v2.3.4-next-nightly.12345678aaaaaaaaaa'), 'https://iojs.org/download/next-nightly')
- console.log('test v2.3.4-rc.100 -> https://iojs.org/download/rc')
- assert.equal(getDefaultIojsUrl('v2.3.4-rc.100'), 'https://iojs.org/download/rc')
-}
diff --git a/deps/npm/node_modules/node-gyp/lib/node-gyp.js b/deps/npm/node_modules/node-gyp/lib/node-gyp.js
index 6223d4b1943ad9..d6d6509a7a8b03 100644
--- a/deps/npm/node_modules/node-gyp/lib/node-gyp.js
+++ b/deps/npm/node_modules/node-gyp/lib/node-gyp.js
@@ -48,7 +48,7 @@ function Gyp () {
// set the dir where node-gyp dev files get installed
// TODO: make this *more* configurable?
- // see: https://github.com/TooTallNate/node-gyp/issues/21
+ // see: https://github.com/nodejs/node-gyp/issues/21
var homeDir = process.env.HOME || process.env.USERPROFILE
if (!homeDir) {
throw new Error(
diff --git a/deps/npm/node_modules/node-gyp/lib/process-release.js b/deps/npm/node_modules/node-gyp/lib/process-release.js
new file mode 100644
index 00000000000000..2a574f437e10af
--- /dev/null
+++ b/deps/npm/node_modules/node-gyp/lib/process-release.js
@@ -0,0 +1,133 @@
+var semver = require('semver')
+ , url = require('url')
+ , path = require('path')
+
+ , bitsre = /\/win-(x86|x64)\//
+ , bitsreV3 = /\/win-(x86|ia32|x64)\// // io.js v3.x.x shipped with "ia32" but should
+ // have been "x86"
+
+// Captures all the logic required to determine download URLs, local directory and
+// file names. Inputs come from command-line switches (--target, --dist-url),
+// `process.version` and `process.release` where it exists.
+function processRelease (argv, gyp, defaultVersion, defaultRelease) {
+ var version = (semver.valid(argv[0]) && argv[0]) || gyp.opts.target || defaultVersion
+ , versionSemver = semver.parse(version)
+ , overrideDistUrl = gyp.opts['dist-url'] || gyp.opts.disturl
+ , isDefaultVersion
+ , isIojs
+ , name
+ , distBaseUrl
+ , baseUrl
+ , libUrl32
+ , libUrl64
+ , tarballUrl
+
+ if (!versionSemver) {
+ // not a valid semver string, nothing we can do
+ return { version: version }
+ }
+ // flatten version into String
+ version = versionSemver.version
+
+ // defaultVersion should come from process.version so ought to be valid semver
+ isDefaultVersion = version === semver.parse(defaultVersion).version
+
+ // can't use process.release if we're using --target=x.y.z
+ if (!isDefaultVersion)
+ defaultRelease = null
+
+ if (defaultRelease) {
+ // v3 onward, has process.release
+ name = defaultRelease.name.replace(/io\.js/, 'iojs') // remove the '.' for directory naming purposes
+ isIojs = name === 'iojs'
+ } else {
+ // old node or alternative --target=
+ // semver.satisfies() doesn't like prerelease tags so test major directly
+ isIojs = versionSemver.major >= 1 && versionSemver.major < 4
+ name = isIojs ? 'iojs' : 'node'
+ }
+
+ // check for the nvm.sh standard mirror env variables
+ if (!overrideDistUrl) {
+ if (isIojs && process.env.NVM_IOJS_ORG_MIRROR)
+ overrideDistUrl = process.env.NVM_IOJS_ORG_MIRROR
+ else if (process.env.NVM_NODEJS_ORG_MIRROR)
+ overrideDistUrl = process.env.NVM_NODEJS_ORG_MIRROR
+ }
+
+
+ if (overrideDistUrl)
+ distBaseUrl = overrideDistUrl.replace(/\/+$/, '')
+ else
+ distBaseUrl = isIojs ? 'https://iojs.org/download/release' : 'https://nodejs.org/dist'
+ distBaseUrl += '/v' + version + '/'
+
+ // new style, based on process.release so we have a lot of the data we need
+ if (defaultRelease && defaultRelease.headersUrl && !overrideDistUrl) {
+ baseUrl = url.resolve(defaultRelease.headersUrl, './')
+ libUrl32 = resolveLibUrl(name, defaultRelease.libUrl || baseUrl || distBaseUrl, 'x86', versionSemver.major)
+ libUrl64 = resolveLibUrl(name, defaultRelease.libUrl || baseUrl || distBaseUrl, 'x64', versionSemver.major)
+
+ return {
+ version: version,
+ semver: versionSemver,
+ name: name,
+ baseUrl: baseUrl,
+ tarballUrl: defaultRelease.headersUrl,
+ shasumsUrl: url.resolve(baseUrl, 'SHASUMS256.txt'),
+ versionDir: (name !== 'node' ? name + '-' : '') + version,
+ libUrl32: libUrl32,
+ libUrl64: libUrl64,
+ libPath32: normalizePath(path.relative(url.parse(baseUrl).path, url.parse(libUrl32).path)),
+ libPath64: normalizePath(path.relative(url.parse(baseUrl).path, url.parse(libUrl64).path))
+ }
+ }
+
+ // older versions without process.release are captured here and we have to make
+ // a lot of assumptions, additionally if you --target=x.y.z then we can't use the
+ // current process.release
+
+ baseUrl = distBaseUrl
+ libUrl32 = resolveLibUrl(name, baseUrl, 'x86', versionSemver.major)
+ libUrl64 = resolveLibUrl(name, baseUrl, 'x64', versionSemver.major)
+ // making the bold assumption that anything with a version number >3.0.0 will
+ // have a *-headers.tar.gz file in its dist location, even some frankenstein
+ // custom version
+ tarballUrl = url.resolve(baseUrl, name + '-v' + version + (versionSemver.major >= 3 ? '-headers' : '') + '.tar.gz')
+
+ return {
+ version: version,
+ semver: versionSemver,
+ name: name,
+ baseUrl: baseUrl,
+ tarballUrl: tarballUrl,
+ shasumsUrl: url.resolve(baseUrl, 'SHASUMS256.txt'),
+ versionDir: (name !== 'node' ? name + '-' : '') + version,
+ libUrl32: libUrl32,
+ libUrl64: libUrl64,
+ libPath32: normalizePath(path.relative(url.parse(baseUrl).path, url.parse(libUrl32).path)),
+ libPath64: normalizePath(path.relative(url.parse(baseUrl).path, url.parse(libUrl64).path))
+ }
+}
+
+function normalizePath (p) {
+ return path.normalize(p).replace(/\\/g, '/')
+}
+
+function resolveLibUrl (name, defaultUrl, arch, versionMajor) {
+ var base = url.resolve(defaultUrl, './')
+ , hasLibUrl = bitsre.test(defaultUrl) || (versionMajor === 3 && bitsreV3.test(defaultUrl))
+
+ if (!hasLibUrl) {
+ // let's assume it's a baseUrl then
+ if (versionMajor >= 1)
+ return url.resolve(base, 'win-' + arch +'/' + name + '.lib')
+ // prior to io.js@1.0.0 32-bit node.lib lives in /, 64-bit lives in /x64/
+ return url.resolve(base, (arch === 'x64' ? 'x64/' : '') + name + '.lib')
+ }
+
+ // else we have a proper url to a .lib, just make sure it's the right arch
+ return defaultUrl.replace(versionMajor === 3 ? bitsreV3 : bitsre, '/win-' + arch + '/')
+}
+
+module.exports = processRelease
diff --git a/deps/npm/node_modules/node-gyp/lib/remove.js b/deps/npm/node_modules/node-gyp/lib/remove.js
index 068d1e3892d0b3..eb80981b88febf 100644
--- a/deps/npm/node_modules/node-gyp/lib/remove.js
+++ b/deps/npm/node_modules/node-gyp/lib/remove.js
@@ -19,23 +19,19 @@ function remove (gyp, argv, callback) {
log.verbose('remove', 'using node-gyp dir:', devDir)
// get the user-specified version to remove
- var v = argv[0] || gyp.opts.target
- log.verbose('remove', 'removing target version:', v)
+ var version = argv[0] || gyp.opts.target
+ log.verbose('remove', 'removing target version:', version)
- if (!v) {
+ if (!version) {
return callback(new Error('You must specify a version number to remove. Ex: "' + process.version + '"'))
}
- // parse the version to normalize and make sure it's valid
- var version = semver.parse(v)
-
- if (!version) {
- return callback(new Error('Invalid version number: ' + v))
+ var versionSemver = semver.parse(version)
+ if (versionSemver) {
+ // flatten the version Array into a String
+ version = versionSemver.version
}
- // flatten the version Array into a String
- version = version.version
-
var versionPath = path.resolve(gyp.devDir, version)
log.verbose('remove', 'removing development files for version:', version)
diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/browser.js b/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/browser.js
index 967b45c0d67eba..7d0515920e5cb3 100644
--- a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/browser.js
+++ b/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/browser.js
@@ -1,4 +1,4 @@
-(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o one single character
var patternListStack = []
+ var negativeLists = []
var plType
var stateChar
var inClass = false
@@ -373,9 +374,13 @@ function parse (pattern, isSub) {
}
plType = stateChar
- patternListStack.push({ type: plType, start: i - 1, reStart: re.length })
+ patternListStack.push({
+ type: plType,
+ start: i - 1,
+ reStart: re.length
+ })
// negation is (?:(?!js)[^/]*)
- re += stateChar === '!' ? '(?:(?!' : '(?:'
+ re += stateChar === '!' ? '(?:(?!(?:' : '(?:'
this.debug('plType %j %j', stateChar, re)
stateChar = false
continue
@@ -389,12 +394,15 @@ function parse (pattern, isSub) {
clearStateChar()
hasMagic = true
re += ')'
- plType = patternListStack.pop().type
+ var pl = patternListStack.pop()
+ plType = pl.type
// negation is (?:(?!js)[^/]*)
// The others are (?:)
switch (plType) {
case '!':
- re += '[^/]*?)'
+ negativeLists.push(pl)
+ re += ')[^/]*?)'
+ pl.reEnd = re.length
break
case '?':
case '+':
@@ -508,7 +516,7 @@ function parse (pattern, isSub) {
// and escape any | chars that were passed through as-is for the regexp.
// Go through and escape them, taking care not to double-escape any
// | chars that were already escaped.
- for (var pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
+ for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
var tail = re.slice(pl.reStart + 3)
// maybe some even number of \, then maybe 1 \, followed by a |
tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) {
@@ -551,12 +559,49 @@ function parse (pattern, isSub) {
case '(': addPatternStart = true
}
+ // Hack to work around lack of negative lookbehind in JS
+ // A pattern like: *.!(x).!(y|z) needs to ensure that a name
+ // like 'a.xyz.yz' doesn't match. So, the first negative
+ // lookahead, has to look ALL the way ahead, to the end of
+ // the pattern.
+ for (var n = negativeLists.length - 1; n > -1; n--) {
+ var nl = negativeLists[n]
+
+ var nlBefore = re.slice(0, nl.reStart)
+ var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)
+ var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)
+ var nlAfter = re.slice(nl.reEnd)
+
+ nlLast += nlAfter
+
+ // Handle nested stuff like *(*.js|!(*.json)), where open parens
+ // mean that we should *not* include the ) in the bit that is considered
+ // "after" the negated section.
+ var openParensBefore = nlBefore.split('(').length - 1
+ var cleanAfter = nlAfter
+ for (i = 0; i < openParensBefore; i++) {
+ cleanAfter = cleanAfter.replace(/\)[+*?]?/, '')
+ }
+ nlAfter = cleanAfter
+
+ var dollar = ''
+ if (nlAfter === '' && isSub !== SUBPARSE) {
+ dollar = '$'
+ }
+ var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast
+ re = newRe
+ }
+
// if the re is not "" at this point, then we need to make sure
// it doesn't match against an empty path part.
// Otherwise a/* will match a/, which it should not.
- if (re !== '' && hasMagic) re = '(?=.)' + re
+ if (re !== '' && hasMagic) {
+ re = '(?=.)' + re
+ }
- if (addPatternStart) re = patternStart + re
+ if (addPatternStart) {
+ re = patternStart + re
+ }
// parsing just a piece of a larger pattern.
if (isSub === SUBPARSE) {
@@ -1110,4 +1155,5 @@ module.exports = function (xs, fn) {
return res;
};
-},{}]},{},[1]);
+},{}]},{},[1])(1)
+});
\ No newline at end of file
diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/minimatch.js b/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/minimatch.js
index 5e13d6d5b2e62b..ec4c05c570c52e 100644
--- a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/minimatch.js
+++ b/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/minimatch.js
@@ -272,6 +272,7 @@ function parse (pattern, isSub) {
var escaping = false
// ? => one single character
var patternListStack = []
+ var negativeLists = []
var plType
var stateChar
var inClass = false
@@ -372,9 +373,13 @@ function parse (pattern, isSub) {
}
plType = stateChar
- patternListStack.push({ type: plType, start: i - 1, reStart: re.length })
+ patternListStack.push({
+ type: plType,
+ start: i - 1,
+ reStart: re.length
+ })
// negation is (?:(?!js)[^/]*)
- re += stateChar === '!' ? '(?:(?!' : '(?:'
+ re += stateChar === '!' ? '(?:(?!(?:' : '(?:'
this.debug('plType %j %j', stateChar, re)
stateChar = false
continue
@@ -388,12 +393,15 @@ function parse (pattern, isSub) {
clearStateChar()
hasMagic = true
re += ')'
- plType = patternListStack.pop().type
+ var pl = patternListStack.pop()
+ plType = pl.type
// negation is (?:(?!js)[^/]*)
// The others are (?:)
switch (plType) {
case '!':
- re += '[^/]*?)'
+ negativeLists.push(pl)
+ re += ')[^/]*?)'
+ pl.reEnd = re.length
break
case '?':
case '+':
@@ -507,7 +515,7 @@ function parse (pattern, isSub) {
// and escape any | chars that were passed through as-is for the regexp.
// Go through and escape them, taking care not to double-escape any
// | chars that were already escaped.
- for (var pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
+ for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
var tail = re.slice(pl.reStart + 3)
// maybe some even number of \, then maybe 1 \, followed by a |
tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) {
@@ -550,12 +558,49 @@ function parse (pattern, isSub) {
case '(': addPatternStart = true
}
+ // Hack to work around lack of negative lookbehind in JS
+ // A pattern like: *.!(x).!(y|z) needs to ensure that a name
+ // like 'a.xyz.yz' doesn't match. So, the first negative
+ // lookahead, has to look ALL the way ahead, to the end of
+ // the pattern.
+ for (var n = negativeLists.length - 1; n > -1; n--) {
+ var nl = negativeLists[n]
+
+ var nlBefore = re.slice(0, nl.reStart)
+ var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)
+ var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)
+ var nlAfter = re.slice(nl.reEnd)
+
+ nlLast += nlAfter
+
+ // Handle nested stuff like *(*.js|!(*.json)), where open parens
+ // mean that we should *not* include the ) in the bit that is considered
+ // "after" the negated section.
+ var openParensBefore = nlBefore.split('(').length - 1
+ var cleanAfter = nlAfter
+ for (i = 0; i < openParensBefore; i++) {
+ cleanAfter = cleanAfter.replace(/\)[+*?]?/, '')
+ }
+ nlAfter = cleanAfter
+
+ var dollar = ''
+ if (nlAfter === '' && isSub !== SUBPARSE) {
+ dollar = '$'
+ }
+ var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast
+ re = newRe
+ }
+
// if the re is not "" at this point, then we need to make sure
// it doesn't match against an empty path part.
// Otherwise a/* will match a/, which it should not.
- if (re !== '' && hasMagic) re = '(?=.)' + re
+ if (re !== '' && hasMagic) {
+ re = '(?=.)' + re
+ }
- if (addPatternStart) re = patternStart + re
+ if (addPatternStart) {
+ re = patternStart + re
+ }
// parsing just a piece of a larger pattern.
if (isSub === SUBPARSE) {
diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json b/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json
index b516138098fba9..386ed516010565 100644
--- a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json
+++ b/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json
@@ -78,6 +78,5 @@
}
],
"_shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b",
- "_resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "readme": "ERROR: No README data found!"
+ "_resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
}
diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/package.json b/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/package.json
index 986de93892aca6..3dc6beb49f684a 100644
--- a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/package.json
+++ b/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/package.json
@@ -6,16 +6,16 @@
},
"name": "minimatch",
"description": "a glob matcher in javascript",
- "version": "2.0.8",
+ "version": "2.0.10",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/minimatch.git"
},
"main": "minimatch.js",
"scripts": {
- "pretest": "standard minimatch.js test/*.js",
+ "posttest": "standard minimatch.js test/*.js",
"test": "tap test/*.js",
- "prepublish": "browserify -o browser.js -e minimatch.js --bare"
+ "prepublish": "browserify -o browser.js -e minimatch.js -s minimatch --bare"
},
"engines": {
"node": "*"
@@ -26,30 +26,30 @@
"devDependencies": {
"browserify": "^9.0.3",
"standard": "^3.7.2",
- "tap": ""
+ "tap": "^1.2.0"
},
"license": "ISC",
"files": [
"minimatch.js",
"browser.js"
],
- "gitHead": "0bc7d9c4b2bc816502184862b45bd090de3406a3",
+ "gitHead": "6afb85f0c324b321f76a38df81891e562693e257",
"bugs": {
"url": "https://github.com/isaacs/minimatch/issues"
},
"homepage": "https://github.com/isaacs/minimatch#readme",
- "_id": "minimatch@2.0.8",
- "_shasum": "0bc20f6bf3570a698ef0ddff902063c6cabda6bf",
+ "_id": "minimatch@2.0.10",
+ "_shasum": "8d087c39c6b38c001b97fca7ce6d0e1e80afbac7",
"_from": "minimatch@>=2.0.1 <3.0.0",
- "_npmVersion": "2.10.0",
- "_nodeVersion": "2.0.1",
+ "_npmVersion": "3.1.0",
+ "_nodeVersion": "2.2.1",
"_npmUser": {
"name": "isaacs",
"email": "isaacs@npmjs.com"
},
"dist": {
- "shasum": "0bc20f6bf3570a698ef0ddff902063c6cabda6bf",
- "tarball": "http://registry.npmjs.org/minimatch/-/minimatch-2.0.8.tgz"
+ "shasum": "8d087c39c6b38c001b97fca7ce6d0e1e80afbac7",
+ "tarball": "http://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz"
},
"maintainers": [
{
@@ -58,6 +58,6 @@
}
],
"directories": {},
- "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.8.tgz",
+ "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
"readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/.npmignore b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/.npmignore
deleted file mode 100644
index c2658d7d1b3184..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules/
diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/LICENSE b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/LICENSE
deleted file mode 100644
index 19129e315fe593..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/README.md b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/README.md
deleted file mode 100644
index 13a2e86050a3eb..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# graceful-fs
-
-graceful-fs functions as a drop-in replacement for the fs module,
-making various improvements.
-
-The improvements are meant to normalize behavior across different
-platforms and environments, and to make filesystem access more
-resilient to errors.
-
-## Improvements over [fs module](http://api.nodejs.org/fs.html)
-
-graceful-fs:
-
-* Queues up `open` and `readdir` calls, and retries them once
- something closes if there is an EMFILE error from too many file
- descriptors.
-* fixes `lchmod` for Node versions prior to 0.6.2.
-* implements `fs.lutimes` if possible. Otherwise it becomes a noop.
-* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or
- `lchown` if the user isn't root.
-* makes `lchmod` and `lchown` become noops, if not available.
-* retries reading a file if `read` results in EAGAIN error.
-
-On Windows, it retries renaming a file for up to one second if `EACCESS`
-or `EPERM` error occurs, likely because antivirus software has locked
-the directory.
-
-## USAGE
-
-```javascript
-// use just like fs
-var fs = require('graceful-fs')
-
-// now go and do stuff with it...
-fs.readFileSync('some-file-or-whatever')
-```
diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/fs.js b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/fs.js
deleted file mode 100644
index 64ad980232ec0d..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/fs.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// eeeeeevvvvviiiiiiillllll
-// more evil than monkey-patching the native builtin?
-// Not sure.
-
-var mod = require("module")
-var pre = '(function (exports, require, module, __filename, __dirname) { '
-var post = '});'
-var src = pre + process.binding('natives').fs + post
-var vm = require('vm')
-var fn = vm.runInThisContext(src)
-fn(exports, require, module, __filename, __dirname)
diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/graceful-fs.js b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/graceful-fs.js
deleted file mode 100644
index fb206b83854a19..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/graceful-fs.js
+++ /dev/null
@@ -1,158 +0,0 @@
-// Monkey-patching the fs module.
-// It's ugly, but there is simply no other way to do this.
-var fs = module.exports = require('./fs.js')
-
-var assert = require('assert')
-
-// fix up some busted stuff, mostly on windows and old nodes
-require('./polyfills.js')
-
-var util = require('util')
-
-function noop () {}
-
-var debug = noop
-if (util.debuglog)
- debug = util.debuglog('gfs')
-else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || ''))
- debug = function() {
- var m = util.format.apply(util, arguments)
- m = 'GFS: ' + m.split(/\n/).join('\nGFS: ')
- console.error(m)
- }
-
-if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) {
- process.on('exit', function() {
- debug('fds', fds)
- debug(queue)
- assert.equal(queue.length, 0)
- })
-}
-
-
-var originalOpen = fs.open
-fs.open = open
-
-function open(path, flags, mode, cb) {
- if (typeof mode === "function") cb = mode, mode = null
- if (typeof cb !== "function") cb = noop
- new OpenReq(path, flags, mode, cb)
-}
-
-function OpenReq(path, flags, mode, cb) {
- this.path = path
- this.flags = flags
- this.mode = mode
- this.cb = cb
- Req.call(this)
-}
-
-util.inherits(OpenReq, Req)
-
-OpenReq.prototype.process = function() {
- originalOpen.call(fs, this.path, this.flags, this.mode, this.done)
-}
-
-var fds = {}
-OpenReq.prototype.done = function(er, fd) {
- debug('open done', er, fd)
- if (fd)
- fds['fd' + fd] = this.path
- Req.prototype.done.call(this, er, fd)
-}
-
-
-var originalReaddir = fs.readdir
-fs.readdir = readdir
-
-function readdir(path, cb) {
- if (typeof cb !== "function") cb = noop
- new ReaddirReq(path, cb)
-}
-
-function ReaddirReq(path, cb) {
- this.path = path
- this.cb = cb
- Req.call(this)
-}
-
-util.inherits(ReaddirReq, Req)
-
-ReaddirReq.prototype.process = function() {
- originalReaddir.call(fs, this.path, this.done)
-}
-
-ReaddirReq.prototype.done = function(er, files) {
- if (files && files.sort)
- files = files.sort()
- Req.prototype.done.call(this, er, files)
- onclose()
-}
-
-
-var originalClose = fs.close
-fs.close = close
-
-function close (fd, cb) {
- debug('close', fd)
- if (typeof cb !== "function") cb = noop
- delete fds['fd' + fd]
- originalClose.call(fs, fd, function(er) {
- onclose()
- cb(er)
- })
-}
-
-
-var originalCloseSync = fs.closeSync
-fs.closeSync = closeSync
-
-function closeSync (fd) {
- try {
- return originalCloseSync(fd)
- } finally {
- onclose()
- }
-}
-
-
-// Req class
-function Req () {
- // start processing
- this.done = this.done.bind(this)
- this.failures = 0
- this.process()
-}
-
-Req.prototype.done = function (er, result) {
- var tryAgain = false
- if (er) {
- var code = er.code
- var tryAgain = code === "EMFILE" || code === "ENFILE"
- if (process.platform === "win32")
- tryAgain = tryAgain || code === "OK"
- }
-
- if (tryAgain) {
- this.failures ++
- enqueue(this)
- } else {
- var cb = this.cb
- cb(er, result)
- }
-}
-
-var queue = []
-
-function enqueue(req) {
- queue.push(req)
- debug('enqueue %d %s', queue.length, req.constructor.name, req)
-}
-
-function onclose() {
- var req = queue.shift()
- if (req) {
- debug('process', req.constructor.name, req)
- req.process()
- }
-}
diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/package.json b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/package.json
deleted file mode 100644
index 9add3d355157f7..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/package.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me"
- },
- "name": "graceful-fs",
- "description": "A drop-in replacement for fs, making various improvements.",
- "version": "3.0.8",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/node-graceful-fs.git"
- },
- "main": "graceful-fs.js",
- "engines": {
- "node": ">=0.4.0"
- },
- "directories": {
- "test": "test"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "keywords": [
- "fs",
- "module",
- "reading",
- "retry",
- "retries",
- "queue",
- "error",
- "errors",
- "handling",
- "EMFILE",
- "EAGAIN",
- "EINVAL",
- "EPERM",
- "EACCESS"
- ],
- "license": "ISC",
- "devDependencies": {
- "mkdirp": "^0.5.0",
- "rimraf": "^2.2.8",
- "tap": "^1.2.0"
- },
- "gitHead": "45c57aa5e323c35a985a525de6f0c9a6ef59e1f8",
- "bugs": {
- "url": "https://github.com/isaacs/node-graceful-fs/issues"
- },
- "homepage": "https://github.com/isaacs/node-graceful-fs#readme",
- "_id": "graceful-fs@3.0.8",
- "_shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22",
- "_from": "graceful-fs@>=3.0.0 <4.0.0",
- "_npmVersion": "2.10.1",
- "_nodeVersion": "2.0.1",
- "_npmUser": {
- "name": "isaacs",
- "email": "isaacs@npmjs.com"
- },
- "dist": {
- "shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22",
- "tarball": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/polyfills.js b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/polyfills.js
deleted file mode 100644
index 8ac5006e2da24d..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/polyfills.js
+++ /dev/null
@@ -1,254 +0,0 @@
-var fs = require('./fs.js')
-var constants = require('constants')
-
-var origCwd = process.cwd
-var cwd = null
-process.cwd = function() {
- if (!cwd)
- cwd = origCwd.call(process)
- return cwd
-}
-var chdir = process.chdir
-process.chdir = function(d) {
- cwd = null
- chdir.call(process, d)
-}
-
-// (re-)implement some things that are known busted or missing.
-
-// lchmod, broken prior to 0.6.2
-// back-port the fix here.
-if (constants.hasOwnProperty('O_SYMLINK') &&
- process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
- fs.lchmod = function (path, mode, callback) {
- callback = callback || noop
- fs.open( path
- , constants.O_WRONLY | constants.O_SYMLINK
- , mode
- , function (err, fd) {
- if (err) {
- callback(err)
- return
- }
- // prefer to return the chmod error, if one occurs,
- // but still try to close, and report closing errors if they occur.
- fs.fchmod(fd, mode, function (err) {
- fs.close(fd, function(err2) {
- callback(err || err2)
- })
- })
- })
- }
-
- fs.lchmodSync = function (path, mode) {
- var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)
-
- // prefer to return the chmod error, if one occurs,
- // but still try to close, and report closing errors if they occur.
- var err, err2
- try {
- var ret = fs.fchmodSync(fd, mode)
- } catch (er) {
- err = er
- }
- try {
- fs.closeSync(fd)
- } catch (er) {
- err2 = er
- }
- if (err || err2) throw (err || err2)
- return ret
- }
-}
-
-
-// lutimes implementation, or no-op
-if (!fs.lutimes) {
- if (constants.hasOwnProperty("O_SYMLINK")) {
- fs.lutimes = function (path, at, mt, cb) {
- fs.open(path, constants.O_SYMLINK, function (er, fd) {
- cb = cb || noop
- if (er) return cb(er)
- fs.futimes(fd, at, mt, function (er) {
- fs.close(fd, function (er2) {
- return cb(er || er2)
- })
- })
- })
- }
-
- fs.lutimesSync = function (path, at, mt) {
- var fd = fs.openSync(path, constants.O_SYMLINK)
- , err
- , err2
- , ret
-
- try {
- var ret = fs.futimesSync(fd, at, mt)
- } catch (er) {
- err = er
- }
- try {
- fs.closeSync(fd)
- } catch (er) {
- err2 = er
- }
- if (err || err2) throw (err || err2)
- return ret
- }
-
- } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) {
- // maybe utimensat will be bound soonish?
- fs.lutimes = function (path, at, mt, cb) {
- fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb)
- }
-
- fs.lutimesSync = function (path, at, mt) {
- return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW)
- }
-
- } else {
- fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) }
- fs.lutimesSync = function () {}
- }
-}
-
-
-// https://github.com/isaacs/node-graceful-fs/issues/4
-// Chown should not fail on einval or eperm if non-root.
-// It should not fail on enosys ever, as this just indicates
-// that a fs doesn't support the intended operation.
-
-fs.chown = chownFix(fs.chown)
-fs.fchown = chownFix(fs.fchown)
-fs.lchown = chownFix(fs.lchown)
-
-fs.chmod = chownFix(fs.chmod)
-fs.fchmod = chownFix(fs.fchmod)
-fs.lchmod = chownFix(fs.lchmod)
-
-fs.chownSync = chownFixSync(fs.chownSync)
-fs.fchownSync = chownFixSync(fs.fchownSync)
-fs.lchownSync = chownFixSync(fs.lchownSync)
-
-fs.chmodSync = chownFix(fs.chmodSync)
-fs.fchmodSync = chownFix(fs.fchmodSync)
-fs.lchmodSync = chownFix(fs.lchmodSync)
-
-function chownFix (orig) {
- if (!orig) return orig
- return function (target, uid, gid, cb) {
- return orig.call(fs, target, uid, gid, function (er, res) {
- if (chownErOk(er)) er = null
- cb(er, res)
- })
- }
-}
-
-function chownFixSync (orig) {
- if (!orig) return orig
- return function (target, uid, gid) {
- try {
- return orig.call(fs, target, uid, gid)
- } catch (er) {
- if (!chownErOk(er)) throw er
- }
- }
-}
-
-// ENOSYS means that the fs doesn't support the op. Just ignore
-// that, because it doesn't matter.
-//
-// if there's no getuid, or if getuid() is something other
-// than 0, and the error is EINVAL or EPERM, then just ignore
-// it.
-//
-// This specific case is a silent failure in cp, install, tar,
-// and most other unix tools that manage permissions.
-//
-// When running as root, or if other types of errors are
-// encountered, then it's strict.
-function chownErOk (er) {
- if (!er)
- return true
-
- if (er.code === "ENOSYS")
- return true
-
- var nonroot = !process.getuid || process.getuid() !== 0
- if (nonroot) {
- if (er.code === "EINVAL" || er.code === "EPERM")
- return true
- }
-
- return false
-}
-
-
-// if lchmod/lchown do not exist, then make them no-ops
-if (!fs.lchmod) {
- fs.lchmod = function (path, mode, cb) {
- process.nextTick(cb)
- }
- fs.lchmodSync = function () {}
-}
-if (!fs.lchown) {
- fs.lchown = function (path, uid, gid, cb) {
- process.nextTick(cb)
- }
- fs.lchownSync = function () {}
-}
-
-
-
-// on Windows, A/V software can lock the directory, causing this
-// to fail with an EACCES or EPERM if the directory contains newly
-// created files. Try again on failure, for up to 1 second.
-if (process.platform === "win32") {
- var rename_ = fs.rename
- fs.rename = function rename (from, to, cb) {
- var start = Date.now()
- rename_(from, to, function CB (er) {
- if (er
- && (er.code === "EACCES" || er.code === "EPERM")
- && Date.now() - start < 1000) {
- return rename_(from, to, CB)
- }
- if(cb) cb(er)
- })
- }
-}
-
-
-// if read() returns EAGAIN, then just try it again.
-var read = fs.read
-fs.read = function (fd, buffer, offset, length, position, callback_) {
- var callback
- if (callback_ && typeof callback_ === 'function') {
- var eagCounter = 0
- callback = function (er, _, __) {
- if (er && er.code === 'EAGAIN' && eagCounter < 10) {
- eagCounter ++
- return read.call(fs, fd, buffer, offset, length, position, callback)
- }
- callback_.apply(this, arguments)
- }
- }
- return read.call(fs, fd, buffer, offset, length, position, callback)
-}
-
-var readSync = fs.readSync
-fs.readSync = function (fd, buffer, offset, length, position) {
- var eagCounter = 0
- while (true) {
- try {
- return readSync.call(fs, fd, buffer, offset, length, position)
- } catch (er) {
- if (er.code === 'EAGAIN' && eagCounter < 10) {
- eagCounter ++
- continue
- }
- throw er
- }
- }
-}
diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/max-open.js b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/max-open.js
deleted file mode 100644
index a6b9ba43d3a6de..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/max-open.js
+++ /dev/null
@@ -1,69 +0,0 @@
-var test = require('tap').test
-var fs = require('../')
-
-test('open lots of stuff', function (t) {
- // Get around EBADF from libuv by making sure that stderr is opened
- // Otherwise Darwin will refuse to give us a FD for stderr!
- process.stderr.write('')
-
- // How many parallel open()'s to do
- var n = 1024
- var opens = 0
- var fds = []
- var going = true
- var closing = false
- var doneCalled = 0
-
- for (var i = 0; i < n; i++) {
- go()
- }
-
- function go() {
- opens++
- fs.open(__filename, 'r', function (er, fd) {
- if (er) throw er
- fds.push(fd)
- if (going) go()
- })
- }
-
- // should hit ulimit pretty fast
- setTimeout(function () {
- going = false
- t.equal(opens - fds.length, n)
- done()
- }, 100)
-
-
- function done () {
- if (closing) return
- doneCalled++
-
- if (fds.length === 0) {
- console.error('done called %d times', doneCalled)
- // First because of the timeout
- // Then to close the fd's opened afterwards
- // Then this time, to complete.
- // Might take multiple passes, depending on CPU speed
- // and ulimit, but at least 3 in every case.
- t.ok(doneCalled >= 2)
- return t.end()
- }
-
- closing = true
- setTimeout(function () {
- // console.error('do closing again')
- closing = false
- done()
- }, 100)
-
- // console.error('closing time')
- var closes = fds.slice(0)
- fds.length = 0
- closes.forEach(function (fd) {
- fs.close(fd, function (er) {
- if (er) throw er
- })
- })
- }
-})
diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/open.js b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/open.js
deleted file mode 100644
index 85732f236b0026..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/open.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var test = require('tap').test
-var fs = require('../graceful-fs.js')
-
-test('graceful fs is monkeypatched fs', function (t) {
- t.equal(fs, require('../fs.js'))
- t.end()
-})
-
-test('open an existing file works', function (t) {
- var fd = fs.openSync(__filename, 'r')
- fs.closeSync(fd)
- fs.open(__filename, 'r', function (er, fd) {
- if (er) throw er
- fs.close(fd, function (er) {
- if (er) throw er
- t.pass('works')
- t.end()
- })
- })
-})
-
-test('open a non-existing file throws', function (t) {
- var er
- try {
- var fd = fs.openSync('this file does not exist', 'r')
- } catch (x) {
- er = x
- }
- t.ok(er, 'should throw')
- t.notOk(fd, 'should not get an fd')
- t.equal(er.code, 'ENOENT')
-
- fs.open('neither does this file', 'r', function (er, fd) {
- t.ok(er, 'should throw')
- t.notOk(fd, 'should not get an fd')
- t.equal(er.code, 'ENOENT')
- t.end()
- })
-})
diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/readdir-sort.js b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/readdir-sort.js
deleted file mode 100644
index cb63a6846ed78f..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/readdir-sort.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var test = require("tap").test
-var fs = require("../fs.js")
-
-var readdir = fs.readdir
-fs.readdir = function(path, cb) {
- process.nextTick(function() {
- cb(null, ["b", "z", "a"])
- })
-}
-
-var g = require("../")
-
-test("readdir reorder", function (t) {
- g.readdir("whatevers", function (er, files) {
- if (er)
- throw er
- t.same(files, [ "a", "b", "z" ])
- t.end()
- })
-})
diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/write-then-read.js b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/write-then-read.js
deleted file mode 100644
index 21e4c26bf6c9dc..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/write-then-read.js
+++ /dev/null
@@ -1,47 +0,0 @@
-var fs = require('../');
-var rimraf = require('rimraf');
-var mkdirp = require('mkdirp');
-var test = require('tap').test;
-var p = require('path').resolve(__dirname, 'files');
-
-process.chdir(__dirname)
-
-// Make sure to reserve the stderr fd
-process.stderr.write('');
-
-var num = 4097;
-var paths = new Array(num);
-
-test('make files', function (t) {
- rimraf.sync(p);
- mkdirp.sync(p);
-
- for (var i = 0; i < num; ++i) {
- paths[i] = 'files/file-' + i;
- fs.writeFileSync(paths[i], 'content');
- }
-
- t.end();
-})
-
-test('read files', function (t) {
- // now read them
- var done = 0;
- for (var i = 0; i < num; ++i) {
- fs.readFile(paths[i], function(err, data) {
- if (err)
- throw err;
-
- ++done;
- if (done === num) {
- t.pass('success');
- t.end()
- }
- });
- }
-});
-
-test('cleanup', function (t) {
- rimraf.sync(p);
- t.end();
-});
diff --git a/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/.jshintrc b/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/.jshintrc
new file mode 100644
index 00000000000000..182e34d07d7835
--- /dev/null
+++ b/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/.jshintrc
@@ -0,0 +1,4 @@
+{
+ "asi": true,
+ "laxcomma": true
+}
diff --git a/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/node_modules/debug/.jshintrc b/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/node_modules/debug/.jshintrc
new file mode 100644
index 00000000000000..299877f26aeb6c
--- /dev/null
+++ b/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/node_modules/debug/.jshintrc
@@ -0,0 +1,3 @@
+{
+ "laxbreak": true
+}
diff --git a/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/package.json b/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/package.json
index 8ed83ab2436443..6ba9df72c29bc3 100644
--- a/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/package.json
+++ b/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/package.json
@@ -53,5 +53,6 @@
"tarball": "http://registry.npmjs.org/array-index/-/array-index-0.1.1.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/array-index/-/array-index-0.1.1.tgz"
+ "_resolved": "https://registry.npmjs.org/array-index/-/array-index-0.1.1.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/node-gyp/node_modules/path-array/package.json b/deps/npm/node_modules/node-gyp/node_modules/path-array/package.json
index ad8edc9f83eedd..41d25482b86772 100644
--- a/deps/npm/node_modules/node-gyp/node_modules/path-array/package.json
+++ b/deps/npm/node_modules/node-gyp/node_modules/path-array/package.json
@@ -51,5 +51,6 @@
"tarball": "http://registry.npmjs.org/path-array/-/path-array-1.0.0.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/path-array/-/path-array-1.0.0.tgz"
+ "_resolved": "https://registry.npmjs.org/path-array/-/path-array-1.0.0.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/.npmignore b/deps/npm/node_modules/node-gyp/node_modules/semver/.npmignore
deleted file mode 100644
index 534108e3f481cf..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/semver/.npmignore
+++ /dev/null
@@ -1,4 +0,0 @@
-node_modules/
-coverage/
-.nyc_output/
-nyc_output/
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/LICENSE b/deps/npm/node_modules/node-gyp/node_modules/semver/LICENSE
deleted file mode 100644
index 19129e315fe593..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/semver/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/Makefile b/deps/npm/node_modules/node-gyp/node_modules/semver/Makefile
deleted file mode 100644
index 71af0e9750cd0a..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/semver/Makefile
+++ /dev/null
@@ -1,24 +0,0 @@
-files = semver.browser.js \
- semver.min.js \
- semver.browser.js.gz \
- semver.min.js.gz
-
-all: $(files)
-
-clean:
- rm -f $(files)
-
-semver.browser.js: head.js.txt semver.js foot.js.txt
- ( cat head.js.txt; \
- cat semver.js | \
- egrep -v '^ *\/\* nomin \*\/' | \
- perl -pi -e 's/debug\([^\)]+\)//g'; \
- cat foot.js.txt ) > semver.browser.js
-
-semver.min.js: semver.browser.js
- uglifyjs -m semver.min.js
-
-%.gz: %
- gzip --stdout -9 <$< >$@
-
-.PHONY: all clean
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/README.md b/deps/npm/node_modules/node-gyp/node_modules/semver/README.md
deleted file mode 100644
index b5e35ff0b5bd95..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/semver/README.md
+++ /dev/null
@@ -1,303 +0,0 @@
-semver(1) -- The semantic versioner for npm
-===========================================
-
-## Usage
-
- $ npm install semver
-
- semver.valid('1.2.3') // '1.2.3'
- semver.valid('a.b.c') // null
- semver.clean(' =v1.2.3 ') // '1.2.3'
- semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
- semver.gt('1.2.3', '9.8.7') // false
- semver.lt('1.2.3', '9.8.7') // true
-
-As a command-line utility:
-
- $ semver -h
-
- Usage: semver [ [...]] [-r | -i | --preid | -l | -rv]
- Test if version(s) satisfy the supplied range(s), and sort them.
-
- Multiple versions or ranges may be supplied, unless increment
- option is specified. In that case, only a single version may
- be used, and it is incremented by the specified level
-
- Program exits successfully if any valid version satisfies
- all supplied ranges, and prints all satisfying versions.
-
- If no versions are valid, or ranges are not satisfied,
- then exits failure.
-
- Versions are printed in ascending order, so supplying
- multiple versions to the utility will just sort them.
-
-## Versions
-
-A "version" is described by the `v2.0.0` specification found at
- .
-
-A leading `"="` or `"v"` character is stripped off and ignored.
-
-## Ranges
-
-A `version range` is a set of `comparators` which specify versions
-that satisfy the range.
-
-A `comparator` is composed of an `operator` and a `version`. The set
-of primitive `operators` is:
-
-* `<` Less than
-* `<=` Less than or equal to
-* `>` Greater than
-* `>=` Greater than or equal to
-* `=` Equal. If no operator is specified, then equality is assumed,
- so this operator is optional, but MAY be included.
-
-For example, the comparator `>=1.2.7` would match the versions
-`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6`
-or `1.1.0`.
-
-Comparators can be joined by whitespace to form a `comparator set`,
-which is satisfied by the **intersection** of all of the comparators
-it includes.
-
-A range is composed of one or more comparator sets, joined by `||`. A
-version matches a range if and only if every comparator in at least
-one of the `||`-separated comparator sets is satisfied by the version.
-
-For example, the range `>=1.2.7 <1.3.0` would match the versions
-`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`,
-or `1.1.0`.
-
-The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`,
-`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`.
-
-### Prerelease Tags
-
-If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then
-it will only be allowed to satisfy comparator sets if at least one
-comparator with the same `[major, minor, patch]` tuple also has a
-prerelease tag.
-
-For example, the range `>1.2.3-alpha.3` would be allowed to match the
-version `1.2.3-alpha.7`, but it would *not* be satisfied by
-`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater
-than" `1.2.3-alpha.3` according to the SemVer sort rules. The version
-range only accepts prerelease tags on the `1.2.3` version. The
-version `3.4.5` *would* satisfy the range, because it does not have a
-prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`.
-
-The purpose for this behavior is twofold. First, prerelease versions
-frequently are updated very quickly, and contain many breaking changes
-that are (by the author's design) not yet fit for public consumption.
-Therefore, by default, they are excluded from range matching
-semantics.
-
-Second, a user who has opted into using a prerelease version has
-clearly indicated the intent to use *that specific* set of
-alpha/beta/rc versions. By including a prerelease tag in the range,
-the user is indicating that they are aware of the risk. However, it
-is still not appropriate to assume that they have opted into taking a
-similar risk on the *next* set of prerelease versions.
-
-#### Prerelease Identifiers
-
-The method `.inc` takes an additional `identifier` string argument that
-will append the value of the string as a prerelease identifier:
-
-```javascript
-> semver.inc('1.2.3', 'pre', 'beta')
-'1.2.4-beta.0'
-```
-
-command-line example:
-
-```shell
-$ semver 1.2.3 -i prerelease --preid beta
-1.2.4-beta.0
-```
-
-Which then can be used to increment further:
-
-```shell
-$ semver 1.2.4-beta.0 -i prerelease
-1.2.4-beta.1
-```
-
-### Advanced Range Syntax
-
-Advanced range syntax desugars to primitive comparators in
-deterministic ways.
-
-Advanced ranges may be combined in the same way as primitive
-comparators using white space or `||`.
-
-#### Hyphen Ranges `X.Y.Z - A.B.C`
-
-Specifies an inclusive set.
-
-* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`
-
-If a partial version is provided as the first version in the inclusive
-range, then the missing pieces are replaced with zeroes.
-
-* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4`
-
-If a partial version is provided as the second version in the
-inclusive range, then all versions that start with the supplied parts
-of the tuple are accepted, but nothing that would be greater than the
-provided tuple parts.
-
-* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0`
-* `1.2.3 - 2` := `>=1.2.3 <3.0.0`
-
-#### X-Ranges `1.2.x` `1.X` `1.2.*` `*`
-
-Any of `X`, `x`, or `*` may be used to "stand in" for one of the
-numeric values in the `[major, minor, patch]` tuple.
-
-* `*` := `>=0.0.0` (Any version satisfies)
-* `1.x` := `>=1.0.0 <2.0.0` (Matching major version)
-* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions)
-
-A partial version range is treated as an X-Range, so the special
-character is in fact optional.
-
-* `""` (empty string) := `*` := `>=0.0.0`
-* `1` := `1.x.x` := `>=1.0.0 <2.0.0`
-* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0`
-
-#### Tilde Ranges `~1.2.3` `~1.2` `~1`
-
-Allows patch-level changes if a minor version is specified on the
-comparator. Allows minor-level changes if not.
-
-* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0`
-* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`)
-* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`)
-* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0`
-* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`)
-* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`)
-* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in
- the `1.2.3` version will be allowed, if they are greater than or
- equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
- `1.2.4-beta.2` would not, because it is a prerelease of a
- different `[major, minor, patch]` tuple.
-
-#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4`
-
-Allows changes that do not modify the left-most non-zero digit in the
-`[major, minor, patch]` tuple. In other words, this allows patch and
-minor updates for versions `1.0.0` and above, patch updates for
-versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`.
-
-Many authors treat a `0.x` version as if the `x` were the major
-"breaking-change" indicator.
-
-Caret ranges are ideal when an author may make breaking changes
-between `0.2.4` and `0.3.0` releases, which is a common practice.
-However, it presumes that there will *not* be breaking changes between
-`0.2.4` and `0.2.5`. It allows for changes that are presumed to be
-additive (but non-breaking), according to commonly observed practices.
-
-* `^1.2.3` := `>=1.2.3 <2.0.0`
-* `^0.2.3` := `>=0.2.3 <0.3.0`
-* `^0.0.3` := `>=0.0.3 <0.0.4`
-* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in
- the `1.2.3` version will be allowed, if they are greater than or
- equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
- `1.2.4-beta.2` would not, because it is a prerelease of a
- different `[major, minor, patch]` tuple.
-* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4` Note that prereleases in the
- `0.0.3` version *only* will be allowed, if they are greater than or
- equal to `beta`. So, `0.0.3-pr.2` would be allowed.
-
-When parsing caret ranges, a missing `patch` value desugars to the
-number `0`, but will allow flexibility within that value, even if the
-major and minor versions are both `0`.
-
-* `^1.2.x` := `>=1.2.0 <2.0.0`
-* `^0.0.x` := `>=0.0.0 <0.1.0`
-* `^0.0` := `>=0.0.0 <0.1.0`
-
-A missing `minor` and `patch` values will desugar to zero, but also
-allow flexibility within those values, even if the major version is
-zero.
-
-* `^1.x` := `>=1.0.0 <2.0.0`
-* `^0.x` := `>=0.0.0 <1.0.0`
-
-## Functions
-
-All methods and classes take a final `loose` boolean argument that, if
-true, will be more forgiving about not-quite-valid semver strings.
-The resulting output will always be 100% strict, of course.
-
-Strict-mode Comparators and Ranges will be strict about the SemVer
-strings that they parse.
-
-* `valid(v)`: Return the parsed version, or null if it's not valid.
-* `inc(v, release)`: Return the version incremented by the release
- type (`major`, `premajor`, `minor`, `preminor`, `patch`,
- `prepatch`, or `prerelease`), or null if it's not valid
- * `premajor` in one call will bump the version up to the next major
- version and down to a prerelease of that major version.
- `preminor`, and `prepatch` work the same way.
- * If called from a non-prerelease version, the `prerelease` will work the
- same as `prepatch`. It increments the patch version, then makes a
- prerelease. If the input version is already a prerelease it simply
- increments it.
-* `major(v)`: Return the major version number.
-* `minor(v)`: Return the minor version number.
-* `patch(v)`: Return the patch version number.
-
-### Comparison
-
-* `gt(v1, v2)`: `v1 > v2`
-* `gte(v1, v2)`: `v1 >= v2`
-* `lt(v1, v2)`: `v1 < v2`
-* `lte(v1, v2)`: `v1 <= v2`
-* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent,
- even if they're not the exact same string. You already know how to
- compare strings.
-* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`.
-* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call
- the corresponding function above. `"==="` and `"!=="` do simple
- string comparison, but are included for completeness. Throws if an
- invalid comparison string is provided.
-* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if
- `v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
-* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions
- in descending order when passed to `Array.sort()`.
-* `diff(v1, v2)`: Returns difference between two versions by the release type
- (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`),
- or null if the versions are the same.
-
-
-### Ranges
-
-* `validRange(range)`: Return the valid range or null if it's not valid
-* `satisfies(version, range)`: Return true if the version satisfies the
- range.
-* `maxSatisfying(versions, range)`: Return the highest version in the list
- that satisfies the range, or `null` if none of them do.
-* `gtr(version, range)`: Return `true` if version is greater than all the
- versions possible in the range.
-* `ltr(version, range)`: Return `true` if version is less than all the
- versions possible in the range.
-* `outside(version, range, hilo)`: Return true if the version is outside
- the bounds of the range in either the high or low direction. The
- `hilo` argument must be either the string `'>'` or `'<'`. (This is
- the function called by `gtr` and `ltr`.)
-
-Note that, since ranges may be non-contiguous, a version might not be
-greater than a range, less than a range, *or* satisfy a range! For
-example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`
-until `2.0.0`, so the version `1.2.10` would not be greater than the
-range (because `2.0.1` satisfies, which is higher), nor less than the
-range (since `1.2.8` satisfies, which is lower), and it also does not
-satisfy the range.
-
-If you want to know if a version satisfies or does not satisfy a
-range, use the `satisfies(version, range)` function.
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/bin/semver b/deps/npm/node_modules/node-gyp/node_modules/semver/bin/semver
deleted file mode 100755
index c5f2e857e82790..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/semver/bin/semver
+++ /dev/null
@@ -1,133 +0,0 @@
-#!/usr/bin/env node
-// Standalone semver comparison program.
-// Exits successfully and prints matching version(s) if
-// any supplied version is valid and passes all tests.
-
-var argv = process.argv.slice(2)
- , versions = []
- , range = []
- , gt = []
- , lt = []
- , eq = []
- , inc = null
- , version = require("../package.json").version
- , loose = false
- , identifier = undefined
- , semver = require("../semver")
- , reverse = false
-
-main()
-
-function main () {
- if (!argv.length) return help()
- while (argv.length) {
- var a = argv.shift()
- var i = a.indexOf('=')
- if (i !== -1) {
- a = a.slice(0, i)
- argv.unshift(a.slice(i + 1))
- }
- switch (a) {
- case "-rv": case "-rev": case "--rev": case "--reverse":
- reverse = true
- break
- case "-l": case "--loose":
- loose = true
- break
- case "-v": case "--version":
- versions.push(argv.shift())
- break
- case "-i": case "--inc": case "--increment":
- switch (argv[0]) {
- case "major": case "minor": case "patch": case "prerelease":
- case "premajor": case "preminor": case "prepatch":
- inc = argv.shift()
- break
- default:
- inc = "patch"
- break
- }
- break
- case "--preid":
- identifier = argv.shift()
- break
- case "-r": case "--range":
- range.push(argv.shift())
- break
- case "-h": case "--help": case "-?":
- return help()
- default:
- versions.push(a)
- break
- }
- }
-
- versions = versions.filter(function (v) {
- return semver.valid(v, loose)
- })
- if (!versions.length) return fail()
- if (inc && (versions.length !== 1 || range.length))
- return failInc()
-
- for (var i = 0, l = range.length; i < l ; i ++) {
- versions = versions.filter(function (v) {
- return semver.satisfies(v, range[i], loose)
- })
- if (!versions.length) return fail()
- }
- return success(versions)
-}
-
-function failInc () {
- console.error("--inc can only be used on a single version with no range")
- fail()
-}
-
-function fail () { process.exit(1) }
-
-function success () {
- var compare = reverse ? "rcompare" : "compare"
- versions.sort(function (a, b) {
- return semver[compare](a, b, loose)
- }).map(function (v) {
- return semver.clean(v, loose)
- }).map(function (v) {
- return inc ? semver.inc(v, inc, loose, identifier) : v
- }).forEach(function (v,i,_) { console.log(v) })
-}
-
-function help () {
- console.log(["SemVer " + version
- ,""
- ,"A JavaScript implementation of the http://semver.org/ specification"
- ,"Copyright Isaac Z. Schlueter"
- ,""
- ,"Usage: semver [options] [ [...]]"
- ,"Prints valid versions sorted by SemVer precedence"
- ,""
- ,"Options:"
- ,"-r --range "
- ," Print versions that match the specified range."
- ,""
- ,"-i --increment []"
- ," Increment a version by the specified level. Level can"
- ," be one of: major, minor, patch, premajor, preminor,"
- ," prepatch, or prerelease. Default level is 'patch'."
- ," Only one version may be specified."
- ,""
- ,"--preid "
- ," Identifier to be used to prefix premajor, preminor,"
- ," prepatch or prerelease version increments."
- ,""
- ,"-l --loose"
- ," Interpret versions and ranges loosely"
- ,""
- ,"Program exits successfully if any valid version satisfies"
- ,"all supplied ranges, and prints all satisfying versions."
- ,""
- ,"If no satisfying versions are found, then exits failure."
- ,""
- ,"Versions are printed in ascending order, so supplying"
- ,"multiple versions to the utility will just sort them."
- ].join("\n"))
-}
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/foot.js.txt b/deps/npm/node_modules/node-gyp/node_modules/semver/foot.js.txt
deleted file mode 100644
index 8f83c20f8ed5a6..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/semver/foot.js.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-
-})(
- typeof exports === 'object' ? exports :
- typeof define === 'function' && define.amd ? {} :
- semver = {}
-);
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/head.js.txt b/deps/npm/node_modules/node-gyp/node_modules/semver/head.js.txt
deleted file mode 100644
index 591afab46f939f..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/semver/head.js.txt
+++ /dev/null
@@ -1 +0,0 @@
-;(function(exports) {
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/package.json b/deps/npm/node_modules/node-gyp/node_modules/semver/package.json
deleted file mode 100644
index e9b6abe3f7e0d8..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/semver/package.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "name": "semver",
- "version": "4.3.6",
- "description": "The semantic version parser used by npm.",
- "main": "semver.js",
- "browser": "semver.browser.js",
- "min": "semver.min.js",
- "scripts": {
- "test": "tap test/*.js",
- "prepublish": "make"
- },
- "devDependencies": {
- "tap": "^1.2.0",
- "uglify-js": "~2.3.6"
- },
- "license": "ISC",
- "repository": {
- "type": "git",
- "url": "git://github.com/npm/node-semver.git"
- },
- "bin": {
- "semver": "./bin/semver"
- },
- "gitHead": "63c48296ca5da3ba6a88c743bb8c92effc789811",
- "bugs": {
- "url": "https://github.com/npm/node-semver/issues"
- },
- "homepage": "https://github.com/npm/node-semver#readme",
- "_id": "semver@4.3.6",
- "_shasum": "300bc6e0e86374f7ba61068b5b1ecd57fc6532da",
- "_from": "semver@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0||>=4.0.0 <5.0.0",
- "_npmVersion": "2.10.1",
- "_nodeVersion": "2.0.1",
- "_npmUser": {
- "name": "isaacs",
- "email": "isaacs@npmjs.com"
- },
- "dist": {
- "shasum": "300bc6e0e86374f7ba61068b5b1ecd57fc6532da",
- "tarball": "http://registry.npmjs.org/semver/-/semver-4.3.6.tgz"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "isaacs@npmjs.com"
- },
- {
- "name": "othiym23",
- "email": "ogd@aoaioxxysz.net"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/semver.browser.js b/deps/npm/node_modules/node-gyp/node_modules/semver/semver.browser.js
deleted file mode 100644
index 4b0cfecf2c0312..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/semver/semver.browser.js
+++ /dev/null
@@ -1,1201 +0,0 @@
-;(function(exports) {
-
-// export the class if we are in a Node-like system.
-if (typeof module === 'object' && module.exports === exports)
- exports = module.exports = SemVer;
-
-// The debug function is excluded entirely from the minified version.
-
-// Note: this is the semver.org version of the spec that it implements
-// Not necessarily the package version of this code.
-exports.SEMVER_SPEC_VERSION = '2.0.0';
-
-var MAX_LENGTH = 256;
-var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
-
-// The actual regexps go on exports.re
-var re = exports.re = [];
-var src = exports.src = [];
-var R = 0;
-
-// The following Regular Expressions can be used for tokenizing,
-// validating, and parsing SemVer version strings.
-
-// ## Numeric Identifier
-// A single `0`, or a non-zero digit followed by zero or more digits.
-
-var NUMERICIDENTIFIER = R++;
-src[NUMERICIDENTIFIER] = '0|[1-9]\\d*';
-var NUMERICIDENTIFIERLOOSE = R++;
-src[NUMERICIDENTIFIERLOOSE] = '[0-9]+';
-
-
-// ## Non-numeric Identifier
-// Zero or more digits, followed by a letter or hyphen, and then zero or
-// more letters, digits, or hyphens.
-
-var NONNUMERICIDENTIFIER = R++;
-src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*';
-
-
-// ## Main Version
-// Three dot-separated numeric identifiers.
-
-var MAINVERSION = R++;
-src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' +
- '(' + src[NUMERICIDENTIFIER] + ')\\.' +
- '(' + src[NUMERICIDENTIFIER] + ')';
-
-var MAINVERSIONLOOSE = R++;
-src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
- '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
- '(' + src[NUMERICIDENTIFIERLOOSE] + ')';
-
-// ## Pre-release Version Identifier
-// A numeric identifier, or a non-numeric identifier.
-
-var PRERELEASEIDENTIFIER = R++;
-src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +
- '|' + src[NONNUMERICIDENTIFIER] + ')';
-
-var PRERELEASEIDENTIFIERLOOSE = R++;
-src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +
- '|' + src[NONNUMERICIDENTIFIER] + ')';
-
-
-// ## Pre-release Version
-// Hyphen, followed by one or more dot-separated pre-release version
-// identifiers.
-
-var PRERELEASE = R++;
-src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +
- '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))';
-
-var PRERELEASELOOSE = R++;
-src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +
- '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))';
-
-// ## Build Metadata Identifier
-// Any combination of digits, letters, or hyphens.
-
-var BUILDIDENTIFIER = R++;
-src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+';
-
-// ## Build Metadata
-// Plus sign, followed by one or more period-separated build metadata
-// identifiers.
-
-var BUILD = R++;
-src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] +
- '(?:\\.' + src[BUILDIDENTIFIER] + ')*))';
-
-
-// ## Full Version String
-// A main version, followed optionally by a pre-release version and
-// build metadata.
-
-// Note that the only major, minor, patch, and pre-release sections of
-// the version string are capturing groups. The build metadata is not a
-// capturing group, because it should not ever be used in version
-// comparison.
-
-var FULL = R++;
-var FULLPLAIN = 'v?' + src[MAINVERSION] +
- src[PRERELEASE] + '?' +
- src[BUILD] + '?';
-
-src[FULL] = '^' + FULLPLAIN + '$';
-
-// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
-// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
-// common in the npm registry.
-var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] +
- src[PRERELEASELOOSE] + '?' +
- src[BUILD] + '?';
-
-var LOOSE = R++;
-src[LOOSE] = '^' + LOOSEPLAIN + '$';
-
-var GTLT = R++;
-src[GTLT] = '((?:<|>)?=?)';
-
-// Something like "2.*" or "1.2.x".
-// Note that "x.x" is a valid xRange identifer, meaning "any version"
-// Only the first item is strictly required.
-var XRANGEIDENTIFIERLOOSE = R++;
-src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*';
-var XRANGEIDENTIFIER = R++;
-src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*';
-
-var XRANGEPLAIN = R++;
-src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:' + src[PRERELEASE] + ')?' +
- src[BUILD] + '?' +
- ')?)?';
-
-var XRANGEPLAINLOOSE = R++;
-src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:' + src[PRERELEASELOOSE] + ')?' +
- src[BUILD] + '?' +
- ')?)?';
-
-var XRANGE = R++;
-src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$';
-var XRANGELOOSE = R++;
-src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$';
-
-// Tilde ranges.
-// Meaning is "reasonably at or greater than"
-var LONETILDE = R++;
-src[LONETILDE] = '(?:~>?)';
-
-var TILDETRIM = R++;
-src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+';
-re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g');
-var tildeTrimReplace = '$1~';
-
-var TILDE = R++;
-src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$';
-var TILDELOOSE = R++;
-src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$';
-
-// Caret ranges.
-// Meaning is "at least and backwards compatible with"
-var LONECARET = R++;
-src[LONECARET] = '(?:\\^)';
-
-var CARETTRIM = R++;
-src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+';
-re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g');
-var caretTrimReplace = '$1^';
-
-var CARET = R++;
-src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$';
-var CARETLOOSE = R++;
-src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$';
-
-// A simple gt/lt/eq thing, or just "" to indicate "any version"
-var COMPARATORLOOSE = R++;
-src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$';
-var COMPARATOR = R++;
-src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$';
-
-
-// An expression to strip any whitespace between the gtlt and the thing
-// it modifies, so that `> 1.2.3` ==> `>1.2.3`
-var COMPARATORTRIM = R++;
-src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] +
- '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')';
-
-// this one has to use the /g flag
-re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g');
-var comparatorTrimReplace = '$1$2$3';
-
-
-// Something like `1.2.3 - 1.2.4`
-// Note that these all use the loose form, because they'll be
-// checked against either the strict or loose comparator form
-// later.
-var HYPHENRANGE = R++;
-src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' +
- '\\s+-\\s+' +
- '(' + src[XRANGEPLAIN] + ')' +
- '\\s*$';
-
-var HYPHENRANGELOOSE = R++;
-src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' +
- '\\s+-\\s+' +
- '(' + src[XRANGEPLAINLOOSE] + ')' +
- '\\s*$';
-
-// Star ranges basically just allow anything at all.
-var STAR = R++;
-src[STAR] = '(<|>)?=?\\s*\\*';
-
-// Compile to actual regexp objects.
-// All are flag-free, unless they were created above with a flag.
-for (var i = 0; i < R; i++) {
- ;
- if (!re[i])
- re[i] = new RegExp(src[i]);
-}
-
-exports.parse = parse;
-function parse(version, loose) {
- if (version instanceof SemVer)
- return version;
-
- if (typeof version !== 'string')
- return null;
-
- if (version.length > MAX_LENGTH)
- return null;
-
- var r = loose ? re[LOOSE] : re[FULL];
- if (!r.test(version))
- return null;
-
- try {
- return new SemVer(version, loose);
- } catch (er) {
- return null;
- }
-}
-
-exports.valid = valid;
-function valid(version, loose) {
- var v = parse(version, loose);
- return v ? v.version : null;
-}
-
-
-exports.clean = clean;
-function clean(version, loose) {
- var s = parse(version.trim().replace(/^[=v]+/, ''), loose);
- return s ? s.version : null;
-}
-
-exports.SemVer = SemVer;
-
-function SemVer(version, loose) {
- if (version instanceof SemVer) {
- if (version.loose === loose)
- return version;
- else
- version = version.version;
- } else if (typeof version !== 'string') {
- throw new TypeError('Invalid Version: ' + version);
- }
-
- if (version.length > MAX_LENGTH)
- throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
-
- if (!(this instanceof SemVer))
- return new SemVer(version, loose);
-
- ;
- this.loose = loose;
- var m = version.trim().match(loose ? re[LOOSE] : re[FULL]);
-
- if (!m)
- throw new TypeError('Invalid Version: ' + version);
-
- this.raw = version;
-
- // these are actually numbers
- this.major = +m[1];
- this.minor = +m[2];
- this.patch = +m[3];
-
- if (this.major > MAX_SAFE_INTEGER || this.major < 0)
- throw new TypeError('Invalid major version')
-
- if (this.minor > MAX_SAFE_INTEGER || this.minor < 0)
- throw new TypeError('Invalid minor version')
-
- if (this.patch > MAX_SAFE_INTEGER || this.patch < 0)
- throw new TypeError('Invalid patch version')
-
- // numberify any prerelease numeric ids
- if (!m[4])
- this.prerelease = [];
- else
- this.prerelease = m[4].split('.').map(function(id) {
- if (/^[0-9]+$/.test(id)) {
- var num = +id
- if (num >= 0 && num < MAX_SAFE_INTEGER)
- return num
- }
- return id;
- });
-
- this.build = m[5] ? m[5].split('.') : [];
- this.format();
-}
-
-SemVer.prototype.format = function() {
- this.version = this.major + '.' + this.minor + '.' + this.patch;
- if (this.prerelease.length)
- this.version += '-' + this.prerelease.join('.');
- return this.version;
-};
-
-SemVer.prototype.inspect = function() {
- return '';
-};
-
-SemVer.prototype.toString = function() {
- return this.version;
-};
-
-SemVer.prototype.compare = function(other) {
- ;
- if (!(other instanceof SemVer))
- other = new SemVer(other, this.loose);
-
- return this.compareMain(other) || this.comparePre(other);
-};
-
-SemVer.prototype.compareMain = function(other) {
- if (!(other instanceof SemVer))
- other = new SemVer(other, this.loose);
-
- return compareIdentifiers(this.major, other.major) ||
- compareIdentifiers(this.minor, other.minor) ||
- compareIdentifiers(this.patch, other.patch);
-};
-
-SemVer.prototype.comparePre = function(other) {
- if (!(other instanceof SemVer))
- other = new SemVer(other, this.loose);
-
- // NOT having a prerelease is > having one
- if (this.prerelease.length && !other.prerelease.length)
- return -1;
- else if (!this.prerelease.length && other.prerelease.length)
- return 1;
- else if (!this.prerelease.length && !other.prerelease.length)
- return 0;
-
- var i = 0;
- do {
- var a = this.prerelease[i];
- var b = other.prerelease[i];
- ;
- if (a === undefined && b === undefined)
- return 0;
- else if (b === undefined)
- return 1;
- else if (a === undefined)
- return -1;
- else if (a === b)
- continue;
- else
- return compareIdentifiers(a, b);
- } while (++i);
-};
-
-// preminor will bump the version up to the next minor release, and immediately
-// down to pre-release. premajor and prepatch work the same way.
-SemVer.prototype.inc = function(release, identifier) {
- switch (release) {
- case 'premajor':
- this.prerelease.length = 0;
- this.patch = 0;
- this.minor = 0;
- this.major++;
- this.inc('pre', identifier);
- break;
- case 'preminor':
- this.prerelease.length = 0;
- this.patch = 0;
- this.minor++;
- this.inc('pre', identifier);
- break;
- case 'prepatch':
- // If this is already a prerelease, it will bump to the next version
- // drop any prereleases that might already exist, since they are not
- // relevant at this point.
- this.prerelease.length = 0;
- this.inc('patch', identifier);
- this.inc('pre', identifier);
- break;
- // If the input is a non-prerelease version, this acts the same as
- // prepatch.
- case 'prerelease':
- if (this.prerelease.length === 0)
- this.inc('patch', identifier);
- this.inc('pre', identifier);
- break;
-
- case 'major':
- // If this is a pre-major version, bump up to the same major version.
- // Otherwise increment major.
- // 1.0.0-5 bumps to 1.0.0
- // 1.1.0 bumps to 2.0.0
- if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0)
- this.major++;
- this.minor = 0;
- this.patch = 0;
- this.prerelease = [];
- break;
- case 'minor':
- // If this is a pre-minor version, bump up to the same minor version.
- // Otherwise increment minor.
- // 1.2.0-5 bumps to 1.2.0
- // 1.2.1 bumps to 1.3.0
- if (this.patch !== 0 || this.prerelease.length === 0)
- this.minor++;
- this.patch = 0;
- this.prerelease = [];
- break;
- case 'patch':
- // If this is not a pre-release version, it will increment the patch.
- // If it is a pre-release it will bump up to the same patch version.
- // 1.2.0-5 patches to 1.2.0
- // 1.2.0 patches to 1.2.1
- if (this.prerelease.length === 0)
- this.patch++;
- this.prerelease = [];
- break;
- // This probably shouldn't be used publicly.
- // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
- case 'pre':
- if (this.prerelease.length === 0)
- this.prerelease = [0];
- else {
- var i = this.prerelease.length;
- while (--i >= 0) {
- if (typeof this.prerelease[i] === 'number') {
- this.prerelease[i]++;
- i = -2;
- }
- }
- if (i === -1) // didn't increment anything
- this.prerelease.push(0);
- }
- if (identifier) {
- // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
- // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
- if (this.prerelease[0] === identifier) {
- if (isNaN(this.prerelease[1]))
- this.prerelease = [identifier, 0];
- } else
- this.prerelease = [identifier, 0];
- }
- break;
-
- default:
- throw new Error('invalid increment argument: ' + release);
- }
- this.format();
- return this;
-};
-
-exports.inc = inc;
-function inc(version, release, loose, identifier) {
- if (typeof(loose) === 'string') {
- identifier = loose;
- loose = undefined;
- }
-
- try {
- return new SemVer(version, loose).inc(release, identifier).version;
- } catch (er) {
- return null;
- }
-}
-
-exports.diff = diff;
-function diff(version1, version2) {
- if (eq(version1, version2)) {
- return null;
- } else {
- var v1 = parse(version1);
- var v2 = parse(version2);
- if (v1.prerelease.length || v2.prerelease.length) {
- for (var key in v1) {
- if (key === 'major' || key === 'minor' || key === 'patch') {
- if (v1[key] !== v2[key]) {
- return 'pre'+key;
- }
- }
- }
- return 'prerelease';
- }
- for (var key in v1) {
- if (key === 'major' || key === 'minor' || key === 'patch') {
- if (v1[key] !== v2[key]) {
- return key;
- }
- }
- }
- }
-}
-
-exports.compareIdentifiers = compareIdentifiers;
-
-var numeric = /^[0-9]+$/;
-function compareIdentifiers(a, b) {
- var anum = numeric.test(a);
- var bnum = numeric.test(b);
-
- if (anum && bnum) {
- a = +a;
- b = +b;
- }
-
- return (anum && !bnum) ? -1 :
- (bnum && !anum) ? 1 :
- a < b ? -1 :
- a > b ? 1 :
- 0;
-}
-
-exports.rcompareIdentifiers = rcompareIdentifiers;
-function rcompareIdentifiers(a, b) {
- return compareIdentifiers(b, a);
-}
-
-exports.major = major;
-function major(a, loose) {
- return new SemVer(a, loose).major;
-}
-
-exports.minor = minor;
-function minor(a, loose) {
- return new SemVer(a, loose).minor;
-}
-
-exports.patch = patch;
-function patch(a, loose) {
- return new SemVer(a, loose).patch;
-}
-
-exports.compare = compare;
-function compare(a, b, loose) {
- return new SemVer(a, loose).compare(b);
-}
-
-exports.compareLoose = compareLoose;
-function compareLoose(a, b) {
- return compare(a, b, true);
-}
-
-exports.rcompare = rcompare;
-function rcompare(a, b, loose) {
- return compare(b, a, loose);
-}
-
-exports.sort = sort;
-function sort(list, loose) {
- return list.sort(function(a, b) {
- return exports.compare(a, b, loose);
- });
-}
-
-exports.rsort = rsort;
-function rsort(list, loose) {
- return list.sort(function(a, b) {
- return exports.rcompare(a, b, loose);
- });
-}
-
-exports.gt = gt;
-function gt(a, b, loose) {
- return compare(a, b, loose) > 0;
-}
-
-exports.lt = lt;
-function lt(a, b, loose) {
- return compare(a, b, loose) < 0;
-}
-
-exports.eq = eq;
-function eq(a, b, loose) {
- return compare(a, b, loose) === 0;
-}
-
-exports.neq = neq;
-function neq(a, b, loose) {
- return compare(a, b, loose) !== 0;
-}
-
-exports.gte = gte;
-function gte(a, b, loose) {
- return compare(a, b, loose) >= 0;
-}
-
-exports.lte = lte;
-function lte(a, b, loose) {
- return compare(a, b, loose) <= 0;
-}
-
-exports.cmp = cmp;
-function cmp(a, op, b, loose) {
- var ret;
- switch (op) {
- case '===':
- if (typeof a === 'object') a = a.version;
- if (typeof b === 'object') b = b.version;
- ret = a === b;
- break;
- case '!==':
- if (typeof a === 'object') a = a.version;
- if (typeof b === 'object') b = b.version;
- ret = a !== b;
- break;
- case '': case '=': case '==': ret = eq(a, b, loose); break;
- case '!=': ret = neq(a, b, loose); break;
- case '>': ret = gt(a, b, loose); break;
- case '>=': ret = gte(a, b, loose); break;
- case '<': ret = lt(a, b, loose); break;
- case '<=': ret = lte(a, b, loose); break;
- default: throw new TypeError('Invalid operator: ' + op);
- }
- return ret;
-}
-
-exports.Comparator = Comparator;
-function Comparator(comp, loose) {
- if (comp instanceof Comparator) {
- if (comp.loose === loose)
- return comp;
- else
- comp = comp.value;
- }
-
- if (!(this instanceof Comparator))
- return new Comparator(comp, loose);
-
- ;
- this.loose = loose;
- this.parse(comp);
-
- if (this.semver === ANY)
- this.value = '';
- else
- this.value = this.operator + this.semver.version;
-
- ;
-}
-
-var ANY = {};
-Comparator.prototype.parse = function(comp) {
- var r = this.loose ? re[COMPARATORLOOSE] : re[COMPARATOR];
- var m = comp.match(r);
-
- if (!m)
- throw new TypeError('Invalid comparator: ' + comp);
-
- this.operator = m[1];
- if (this.operator === '=')
- this.operator = '';
-
- // if it literally is just '>' or '' then allow anything.
- if (!m[2])
- this.semver = ANY;
- else
- this.semver = new SemVer(m[2], this.loose);
-};
-
-Comparator.prototype.inspect = function() {
- return '';
-};
-
-Comparator.prototype.toString = function() {
- return this.value;
-};
-
-Comparator.prototype.test = function(version) {
- ;
-
- if (this.semver === ANY)
- return true;
-
- if (typeof version === 'string')
- version = new SemVer(version, this.loose);
-
- return cmp(version, this.operator, this.semver, this.loose);
-};
-
-
-exports.Range = Range;
-function Range(range, loose) {
- if ((range instanceof Range) && range.loose === loose)
- return range;
-
- if (!(this instanceof Range))
- return new Range(range, loose);
-
- this.loose = loose;
-
- // First, split based on boolean or ||
- this.raw = range;
- this.set = range.split(/\s*\|\|\s*/).map(function(range) {
- return this.parseRange(range.trim());
- }, this).filter(function(c) {
- // throw out any that are not relevant for whatever reason
- return c.length;
- });
-
- if (!this.set.length) {
- throw new TypeError('Invalid SemVer Range: ' + range);
- }
-
- this.format();
-}
-
-Range.prototype.inspect = function() {
- return '';
-};
-
-Range.prototype.format = function() {
- this.range = this.set.map(function(comps) {
- return comps.join(' ').trim();
- }).join('||').trim();
- return this.range;
-};
-
-Range.prototype.toString = function() {
- return this.range;
-};
-
-Range.prototype.parseRange = function(range) {
- var loose = this.loose;
- range = range.trim();
- ;
- // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
- var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE];
- range = range.replace(hr, hyphenReplace);
- ;
- // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
- range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace);
- ;
-
- // `~ 1.2.3` => `~1.2.3`
- range = range.replace(re[TILDETRIM], tildeTrimReplace);
-
- // `^ 1.2.3` => `^1.2.3`
- range = range.replace(re[CARETTRIM], caretTrimReplace);
-
- // normalize spaces
- range = range.split(/\s+/).join(' ');
-
- // At this point, the range is completely trimmed and
- // ready to be split into comparators.
-
- var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR];
- var set = range.split(' ').map(function(comp) {
- return parseComparator(comp, loose);
- }).join(' ').split(/\s+/);
- if (this.loose) {
- // in loose mode, throw out any that are not valid comparators
- set = set.filter(function(comp) {
- return !!comp.match(compRe);
- });
- }
- set = set.map(function(comp) {
- return new Comparator(comp, loose);
- });
-
- return set;
-};
-
-// Mostly just for testing and legacy API reasons
-exports.toComparators = toComparators;
-function toComparators(range, loose) {
- return new Range(range, loose).set.map(function(comp) {
- return comp.map(function(c) {
- return c.value;
- }).join(' ').trim().split(' ');
- });
-}
-
-// comprised of xranges, tildes, stars, and gtlt's at this point.
-// already replaced the hyphen ranges
-// turn into a set of JUST comparators.
-function parseComparator(comp, loose) {
- ;
- comp = replaceCarets(comp, loose);
- ;
- comp = replaceTildes(comp, loose);
- ;
- comp = replaceXRanges(comp, loose);
- ;
- comp = replaceStars(comp, loose);
- ;
- return comp;
-}
-
-function isX(id) {
- return !id || id.toLowerCase() === 'x' || id === '*';
-}
-
-// ~, ~> --> * (any, kinda silly)
-// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
-// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
-// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
-// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
-// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
-function replaceTildes(comp, loose) {
- return comp.trim().split(/\s+/).map(function(comp) {
- return replaceTilde(comp, loose);
- }).join(' ');
-}
-
-function replaceTilde(comp, loose) {
- var r = loose ? re[TILDELOOSE] : re[TILDE];
- return comp.replace(r, function(_, M, m, p, pr) {
- ;
- var ret;
-
- if (isX(M))
- ret = '';
- else if (isX(m))
- ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
- else if (isX(p))
- // ~1.2 == >=1.2.0- <1.3.0-
- ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
- else if (pr) {
- ;
- if (pr.charAt(0) !== '-')
- pr = '-' + pr;
- ret = '>=' + M + '.' + m + '.' + p + pr +
- ' <' + M + '.' + (+m + 1) + '.0';
- } else
- // ~1.2.3 == >=1.2.3 <1.3.0
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + M + '.' + (+m + 1) + '.0';
-
- ;
- return ret;
- });
-}
-
-// ^ --> * (any, kinda silly)
-// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
-// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
-// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
-// ^1.2.3 --> >=1.2.3 <2.0.0
-// ^1.2.0 --> >=1.2.0 <2.0.0
-function replaceCarets(comp, loose) {
- return comp.trim().split(/\s+/).map(function(comp) {
- return replaceCaret(comp, loose);
- }).join(' ');
-}
-
-function replaceCaret(comp, loose) {
- ;
- var r = loose ? re[CARETLOOSE] : re[CARET];
- return comp.replace(r, function(_, M, m, p, pr) {
- ;
- var ret;
-
- if (isX(M))
- ret = '';
- else if (isX(m))
- ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
- else if (isX(p)) {
- if (M === '0')
- ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
- else
- ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';
- } else if (pr) {
- ;
- if (pr.charAt(0) !== '-')
- pr = '-' + pr;
- if (M === '0') {
- if (m === '0')
- ret = '>=' + M + '.' + m + '.' + p + pr +
- ' <' + M + '.' + m + '.' + (+p + 1);
- else
- ret = '>=' + M + '.' + m + '.' + p + pr +
- ' <' + M + '.' + (+m + 1) + '.0';
- } else
- ret = '>=' + M + '.' + m + '.' + p + pr +
- ' <' + (+M + 1) + '.0.0';
- } else {
- ;
- if (M === '0') {
- if (m === '0')
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + M + '.' + m + '.' + (+p + 1);
- else
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + M + '.' + (+m + 1) + '.0';
- } else
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + (+M + 1) + '.0.0';
- }
-
- ;
- return ret;
- });
-}
-
-function replaceXRanges(comp, loose) {
- ;
- return comp.split(/\s+/).map(function(comp) {
- return replaceXRange(comp, loose);
- }).join(' ');
-}
-
-function replaceXRange(comp, loose) {
- comp = comp.trim();
- var r = loose ? re[XRANGELOOSE] : re[XRANGE];
- return comp.replace(r, function(ret, gtlt, M, m, p, pr) {
- ;
- var xM = isX(M);
- var xm = xM || isX(m);
- var xp = xm || isX(p);
- var anyX = xp;
-
- if (gtlt === '=' && anyX)
- gtlt = '';
-
- if (xM) {
- if (gtlt === '>' || gtlt === '<') {
- // nothing is allowed
- ret = '<0.0.0';
- } else {
- // nothing is forbidden
- ret = '*';
- }
- } else if (gtlt && anyX) {
- // replace X with 0
- if (xm)
- m = 0;
- if (xp)
- p = 0;
-
- if (gtlt === '>') {
- // >1 => >=2.0.0
- // >1.2 => >=1.3.0
- // >1.2.3 => >= 1.2.4
- gtlt = '>=';
- if (xm) {
- M = +M + 1;
- m = 0;
- p = 0;
- } else if (xp) {
- m = +m + 1;
- p = 0;
- }
- } else if (gtlt === '<=') {
- // <=0.7.x is actually <0.8.0, since any 0.7.x should
- // pass. Similarly, <=7.x is actually <8.0.0, etc.
- gtlt = '<'
- if (xm)
- M = +M + 1
- else
- m = +m + 1
- }
-
- ret = gtlt + M + '.' + m + '.' + p;
- } else if (xm) {
- ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
- } else if (xp) {
- ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
- }
-
- ;
-
- return ret;
- });
-}
-
-// Because * is AND-ed with everything else in the comparator,
-// and '' means "any version", just remove the *s entirely.
-function replaceStars(comp, loose) {
- ;
- // Looseness is ignored here. star is always as loose as it gets!
- return comp.trim().replace(re[STAR], '');
-}
-
-// This function is passed to string.replace(re[HYPHENRANGE])
-// M, m, patch, prerelease, build
-// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
-// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
-// 1.2 - 3.4 => >=1.2.0 <3.5.0
-function hyphenReplace($0,
- from, fM, fm, fp, fpr, fb,
- to, tM, tm, tp, tpr, tb) {
-
- if (isX(fM))
- from = '';
- else if (isX(fm))
- from = '>=' + fM + '.0.0';
- else if (isX(fp))
- from = '>=' + fM + '.' + fm + '.0';
- else
- from = '>=' + from;
-
- if (isX(tM))
- to = '';
- else if (isX(tm))
- to = '<' + (+tM + 1) + '.0.0';
- else if (isX(tp))
- to = '<' + tM + '.' + (+tm + 1) + '.0';
- else if (tpr)
- to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;
- else
- to = '<=' + to;
-
- return (from + ' ' + to).trim();
-}
-
-
-// if ANY of the sets match ALL of its comparators, then pass
-Range.prototype.test = function(version) {
- if (!version)
- return false;
-
- if (typeof version === 'string')
- version = new SemVer(version, this.loose);
-
- for (var i = 0; i < this.set.length; i++) {
- if (testSet(this.set[i], version))
- return true;
- }
- return false;
-};
-
-function testSet(set, version) {
- for (var i = 0; i < set.length; i++) {
- if (!set[i].test(version))
- return false;
- }
-
- if (version.prerelease.length) {
- // Find the set of versions that are allowed to have prereleases
- // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
- // That should allow `1.2.3-pr.2` to pass.
- // However, `1.2.4-alpha.notready` should NOT be allowed,
- // even though it's within the range set by the comparators.
- for (var i = 0; i < set.length; i++) {
- ;
- if (set[i].semver === ANY)
- continue;
-
- if (set[i].semver.prerelease.length > 0) {
- var allowed = set[i].semver;
- if (allowed.major === version.major &&
- allowed.minor === version.minor &&
- allowed.patch === version.patch)
- return true;
- }
- }
-
- // Version has a -pre, but it's not one of the ones we like.
- return false;
- }
-
- return true;
-}
-
-exports.satisfies = satisfies;
-function satisfies(version, range, loose) {
- try {
- range = new Range(range, loose);
- } catch (er) {
- return false;
- }
- return range.test(version);
-}
-
-exports.maxSatisfying = maxSatisfying;
-function maxSatisfying(versions, range, loose) {
- return versions.filter(function(version) {
- return satisfies(version, range, loose);
- }).sort(function(a, b) {
- return rcompare(a, b, loose);
- })[0] || null;
-}
-
-exports.validRange = validRange;
-function validRange(range, loose) {
- try {
- // Return '*' instead of '' so that truthiness works.
- // This will throw if it's invalid anyway
- return new Range(range, loose).range || '*';
- } catch (er) {
- return null;
- }
-}
-
-// Determine if version is less than all the versions possible in the range
-exports.ltr = ltr;
-function ltr(version, range, loose) {
- return outside(version, range, '<', loose);
-}
-
-// Determine if version is greater than all the versions possible in the range.
-exports.gtr = gtr;
-function gtr(version, range, loose) {
- return outside(version, range, '>', loose);
-}
-
-exports.outside = outside;
-function outside(version, range, hilo, loose) {
- version = new SemVer(version, loose);
- range = new Range(range, loose);
-
- var gtfn, ltefn, ltfn, comp, ecomp;
- switch (hilo) {
- case '>':
- gtfn = gt;
- ltefn = lte;
- ltfn = lt;
- comp = '>';
- ecomp = '>=';
- break;
- case '<':
- gtfn = lt;
- ltefn = gte;
- ltfn = gt;
- comp = '<';
- ecomp = '<=';
- break;
- default:
- throw new TypeError('Must provide a hilo val of "<" or ">"');
- }
-
- // If it satisifes the range it is not outside
- if (satisfies(version, range, loose)) {
- return false;
- }
-
- // From now on, variable terms are as if we're in "gtr" mode.
- // but note that everything is flipped for the "ltr" function.
-
- for (var i = 0; i < range.set.length; ++i) {
- var comparators = range.set[i];
-
- var high = null;
- var low = null;
-
- comparators.forEach(function(comparator) {
- if (comparator.semver === ANY) {
- comparator = new Comparator('>=0.0.0')
- }
- high = high || comparator;
- low = low || comparator;
- if (gtfn(comparator.semver, high.semver, loose)) {
- high = comparator;
- } else if (ltfn(comparator.semver, low.semver, loose)) {
- low = comparator;
- }
- });
-
- // If the edge version comparator has a operator then our version
- // isn't outside it
- if (high.operator === comp || high.operator === ecomp) {
- return false;
- }
-
- // If the lowest version comparator has an operator and our version
- // is less than it then it isn't higher than the range
- if ((!low.operator || low.operator === comp) &&
- ltefn(version, low.semver)) {
- return false;
- } else if (low.operator === ecomp && ltfn(version, low.semver)) {
- return false;
- }
- }
- return true;
-}
-
-// Use the define() function if we're in AMD land
-if (typeof define === 'function' && define.amd)
- define(exports);
-
-})(
- typeof exports === 'object' ? exports :
- typeof define === 'function' && define.amd ? {} :
- semver = {}
-);
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/semver.browser.js.gz b/deps/npm/node_modules/node-gyp/node_modules/semver/semver.browser.js.gz
deleted file mode 100644
index d67009d8ad2cd5..00000000000000
Binary files a/deps/npm/node_modules/node-gyp/node_modules/semver/semver.browser.js.gz and /dev/null differ
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/semver.js b/deps/npm/node_modules/node-gyp/node_modules/semver/semver.js
deleted file mode 100644
index cafcc006b06dc0..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/semver/semver.js
+++ /dev/null
@@ -1,1205 +0,0 @@
-// export the class if we are in a Node-like system.
-if (typeof module === 'object' && module.exports === exports)
- exports = module.exports = SemVer;
-
-// The debug function is excluded entirely from the minified version.
-/* nomin */ var debug;
-/* nomin */ if (typeof process === 'object' &&
- /* nomin */ process.env &&
- /* nomin */ process.env.NODE_DEBUG &&
- /* nomin */ /\bsemver\b/i.test(process.env.NODE_DEBUG))
- /* nomin */ debug = function() {
- /* nomin */ var args = Array.prototype.slice.call(arguments, 0);
- /* nomin */ args.unshift('SEMVER');
- /* nomin */ console.log.apply(console, args);
- /* nomin */ };
-/* nomin */ else
- /* nomin */ debug = function() {};
-
-// Note: this is the semver.org version of the spec that it implements
-// Not necessarily the package version of this code.
-exports.SEMVER_SPEC_VERSION = '2.0.0';
-
-var MAX_LENGTH = 256;
-var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
-
-// The actual regexps go on exports.re
-var re = exports.re = [];
-var src = exports.src = [];
-var R = 0;
-
-// The following Regular Expressions can be used for tokenizing,
-// validating, and parsing SemVer version strings.
-
-// ## Numeric Identifier
-// A single `0`, or a non-zero digit followed by zero or more digits.
-
-var NUMERICIDENTIFIER = R++;
-src[NUMERICIDENTIFIER] = '0|[1-9]\\d*';
-var NUMERICIDENTIFIERLOOSE = R++;
-src[NUMERICIDENTIFIERLOOSE] = '[0-9]+';
-
-
-// ## Non-numeric Identifier
-// Zero or more digits, followed by a letter or hyphen, and then zero or
-// more letters, digits, or hyphens.
-
-var NONNUMERICIDENTIFIER = R++;
-src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*';
-
-
-// ## Main Version
-// Three dot-separated numeric identifiers.
-
-var MAINVERSION = R++;
-src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' +
- '(' + src[NUMERICIDENTIFIER] + ')\\.' +
- '(' + src[NUMERICIDENTIFIER] + ')';
-
-var MAINVERSIONLOOSE = R++;
-src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
- '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
- '(' + src[NUMERICIDENTIFIERLOOSE] + ')';
-
-// ## Pre-release Version Identifier
-// A numeric identifier, or a non-numeric identifier.
-
-var PRERELEASEIDENTIFIER = R++;
-src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +
- '|' + src[NONNUMERICIDENTIFIER] + ')';
-
-var PRERELEASEIDENTIFIERLOOSE = R++;
-src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +
- '|' + src[NONNUMERICIDENTIFIER] + ')';
-
-
-// ## Pre-release Version
-// Hyphen, followed by one or more dot-separated pre-release version
-// identifiers.
-
-var PRERELEASE = R++;
-src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +
- '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))';
-
-var PRERELEASELOOSE = R++;
-src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +
- '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))';
-
-// ## Build Metadata Identifier
-// Any combination of digits, letters, or hyphens.
-
-var BUILDIDENTIFIER = R++;
-src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+';
-
-// ## Build Metadata
-// Plus sign, followed by one or more period-separated build metadata
-// identifiers.
-
-var BUILD = R++;
-src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] +
- '(?:\\.' + src[BUILDIDENTIFIER] + ')*))';
-
-
-// ## Full Version String
-// A main version, followed optionally by a pre-release version and
-// build metadata.
-
-// Note that the only major, minor, patch, and pre-release sections of
-// the version string are capturing groups. The build metadata is not a
-// capturing group, because it should not ever be used in version
-// comparison.
-
-var FULL = R++;
-var FULLPLAIN = 'v?' + src[MAINVERSION] +
- src[PRERELEASE] + '?' +
- src[BUILD] + '?';
-
-src[FULL] = '^' + FULLPLAIN + '$';
-
-// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
-// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
-// common in the npm registry.
-var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] +
- src[PRERELEASELOOSE] + '?' +
- src[BUILD] + '?';
-
-var LOOSE = R++;
-src[LOOSE] = '^' + LOOSEPLAIN + '$';
-
-var GTLT = R++;
-src[GTLT] = '((?:<|>)?=?)';
-
-// Something like "2.*" or "1.2.x".
-// Note that "x.x" is a valid xRange identifer, meaning "any version"
-// Only the first item is strictly required.
-var XRANGEIDENTIFIERLOOSE = R++;
-src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*';
-var XRANGEIDENTIFIER = R++;
-src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*';
-
-var XRANGEPLAIN = R++;
-src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
- '(?:' + src[PRERELEASE] + ')?' +
- src[BUILD] + '?' +
- ')?)?';
-
-var XRANGEPLAINLOOSE = R++;
-src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
- '(?:' + src[PRERELEASELOOSE] + ')?' +
- src[BUILD] + '?' +
- ')?)?';
-
-var XRANGE = R++;
-src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$';
-var XRANGELOOSE = R++;
-src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$';
-
-// Tilde ranges.
-// Meaning is "reasonably at or greater than"
-var LONETILDE = R++;
-src[LONETILDE] = '(?:~>?)';
-
-var TILDETRIM = R++;
-src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+';
-re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g');
-var tildeTrimReplace = '$1~';
-
-var TILDE = R++;
-src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$';
-var TILDELOOSE = R++;
-src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$';
-
-// Caret ranges.
-// Meaning is "at least and backwards compatible with"
-var LONECARET = R++;
-src[LONECARET] = '(?:\\^)';
-
-var CARETTRIM = R++;
-src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+';
-re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g');
-var caretTrimReplace = '$1^';
-
-var CARET = R++;
-src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$';
-var CARETLOOSE = R++;
-src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$';
-
-// A simple gt/lt/eq thing, or just "" to indicate "any version"
-var COMPARATORLOOSE = R++;
-src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$';
-var COMPARATOR = R++;
-src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$';
-
-
-// An expression to strip any whitespace between the gtlt and the thing
-// it modifies, so that `> 1.2.3` ==> `>1.2.3`
-var COMPARATORTRIM = R++;
-src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] +
- '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')';
-
-// this one has to use the /g flag
-re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g');
-var comparatorTrimReplace = '$1$2$3';
-
-
-// Something like `1.2.3 - 1.2.4`
-// Note that these all use the loose form, because they'll be
-// checked against either the strict or loose comparator form
-// later.
-var HYPHENRANGE = R++;
-src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' +
- '\\s+-\\s+' +
- '(' + src[XRANGEPLAIN] + ')' +
- '\\s*$';
-
-var HYPHENRANGELOOSE = R++;
-src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' +
- '\\s+-\\s+' +
- '(' + src[XRANGEPLAINLOOSE] + ')' +
- '\\s*$';
-
-// Star ranges basically just allow anything at all.
-var STAR = R++;
-src[STAR] = '(<|>)?=?\\s*\\*';
-
-// Compile to actual regexp objects.
-// All are flag-free, unless they were created above with a flag.
-for (var i = 0; i < R; i++) {
- debug(i, src[i]);
- if (!re[i])
- re[i] = new RegExp(src[i]);
-}
-
-exports.parse = parse;
-function parse(version, loose) {
- if (version instanceof SemVer)
- return version;
-
- if (typeof version !== 'string')
- return null;
-
- if (version.length > MAX_LENGTH)
- return null;
-
- var r = loose ? re[LOOSE] : re[FULL];
- if (!r.test(version))
- return null;
-
- try {
- return new SemVer(version, loose);
- } catch (er) {
- return null;
- }
-}
-
-exports.valid = valid;
-function valid(version, loose) {
- var v = parse(version, loose);
- return v ? v.version : null;
-}
-
-
-exports.clean = clean;
-function clean(version, loose) {
- var s = parse(version.trim().replace(/^[=v]+/, ''), loose);
- return s ? s.version : null;
-}
-
-exports.SemVer = SemVer;
-
-function SemVer(version, loose) {
- if (version instanceof SemVer) {
- if (version.loose === loose)
- return version;
- else
- version = version.version;
- } else if (typeof version !== 'string') {
- throw new TypeError('Invalid Version: ' + version);
- }
-
- if (version.length > MAX_LENGTH)
- throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
-
- if (!(this instanceof SemVer))
- return new SemVer(version, loose);
-
- debug('SemVer', version, loose);
- this.loose = loose;
- var m = version.trim().match(loose ? re[LOOSE] : re[FULL]);
-
- if (!m)
- throw new TypeError('Invalid Version: ' + version);
-
- this.raw = version;
-
- // these are actually numbers
- this.major = +m[1];
- this.minor = +m[2];
- this.patch = +m[3];
-
- if (this.major > MAX_SAFE_INTEGER || this.major < 0)
- throw new TypeError('Invalid major version')
-
- if (this.minor > MAX_SAFE_INTEGER || this.minor < 0)
- throw new TypeError('Invalid minor version')
-
- if (this.patch > MAX_SAFE_INTEGER || this.patch < 0)
- throw new TypeError('Invalid patch version')
-
- // numberify any prerelease numeric ids
- if (!m[4])
- this.prerelease = [];
- else
- this.prerelease = m[4].split('.').map(function(id) {
- if (/^[0-9]+$/.test(id)) {
- var num = +id
- if (num >= 0 && num < MAX_SAFE_INTEGER)
- return num
- }
- return id;
- });
-
- this.build = m[5] ? m[5].split('.') : [];
- this.format();
-}
-
-SemVer.prototype.format = function() {
- this.version = this.major + '.' + this.minor + '.' + this.patch;
- if (this.prerelease.length)
- this.version += '-' + this.prerelease.join('.');
- return this.version;
-};
-
-SemVer.prototype.inspect = function() {
- return '';
-};
-
-SemVer.prototype.toString = function() {
- return this.version;
-};
-
-SemVer.prototype.compare = function(other) {
- debug('SemVer.compare', this.version, this.loose, other);
- if (!(other instanceof SemVer))
- other = new SemVer(other, this.loose);
-
- return this.compareMain(other) || this.comparePre(other);
-};
-
-SemVer.prototype.compareMain = function(other) {
- if (!(other instanceof SemVer))
- other = new SemVer(other, this.loose);
-
- return compareIdentifiers(this.major, other.major) ||
- compareIdentifiers(this.minor, other.minor) ||
- compareIdentifiers(this.patch, other.patch);
-};
-
-SemVer.prototype.comparePre = function(other) {
- if (!(other instanceof SemVer))
- other = new SemVer(other, this.loose);
-
- // NOT having a prerelease is > having one
- if (this.prerelease.length && !other.prerelease.length)
- return -1;
- else if (!this.prerelease.length && other.prerelease.length)
- return 1;
- else if (!this.prerelease.length && !other.prerelease.length)
- return 0;
-
- var i = 0;
- do {
- var a = this.prerelease[i];
- var b = other.prerelease[i];
- debug('prerelease compare', i, a, b);
- if (a === undefined && b === undefined)
- return 0;
- else if (b === undefined)
- return 1;
- else if (a === undefined)
- return -1;
- else if (a === b)
- continue;
- else
- return compareIdentifiers(a, b);
- } while (++i);
-};
-
-// preminor will bump the version up to the next minor release, and immediately
-// down to pre-release. premajor and prepatch work the same way.
-SemVer.prototype.inc = function(release, identifier) {
- switch (release) {
- case 'premajor':
- this.prerelease.length = 0;
- this.patch = 0;
- this.minor = 0;
- this.major++;
- this.inc('pre', identifier);
- break;
- case 'preminor':
- this.prerelease.length = 0;
- this.patch = 0;
- this.minor++;
- this.inc('pre', identifier);
- break;
- case 'prepatch':
- // If this is already a prerelease, it will bump to the next version
- // drop any prereleases that might already exist, since they are not
- // relevant at this point.
- this.prerelease.length = 0;
- this.inc('patch', identifier);
- this.inc('pre', identifier);
- break;
- // If the input is a non-prerelease version, this acts the same as
- // prepatch.
- case 'prerelease':
- if (this.prerelease.length === 0)
- this.inc('patch', identifier);
- this.inc('pre', identifier);
- break;
-
- case 'major':
- // If this is a pre-major version, bump up to the same major version.
- // Otherwise increment major.
- // 1.0.0-5 bumps to 1.0.0
- // 1.1.0 bumps to 2.0.0
- if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0)
- this.major++;
- this.minor = 0;
- this.patch = 0;
- this.prerelease = [];
- break;
- case 'minor':
- // If this is a pre-minor version, bump up to the same minor version.
- // Otherwise increment minor.
- // 1.2.0-5 bumps to 1.2.0
- // 1.2.1 bumps to 1.3.0
- if (this.patch !== 0 || this.prerelease.length === 0)
- this.minor++;
- this.patch = 0;
- this.prerelease = [];
- break;
- case 'patch':
- // If this is not a pre-release version, it will increment the patch.
- // If it is a pre-release it will bump up to the same patch version.
- // 1.2.0-5 patches to 1.2.0
- // 1.2.0 patches to 1.2.1
- if (this.prerelease.length === 0)
- this.patch++;
- this.prerelease = [];
- break;
- // This probably shouldn't be used publicly.
- // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
- case 'pre':
- if (this.prerelease.length === 0)
- this.prerelease = [0];
- else {
- var i = this.prerelease.length;
- while (--i >= 0) {
- if (typeof this.prerelease[i] === 'number') {
- this.prerelease[i]++;
- i = -2;
- }
- }
- if (i === -1) // didn't increment anything
- this.prerelease.push(0);
- }
- if (identifier) {
- // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
- // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
- if (this.prerelease[0] === identifier) {
- if (isNaN(this.prerelease[1]))
- this.prerelease = [identifier, 0];
- } else
- this.prerelease = [identifier, 0];
- }
- break;
-
- default:
- throw new Error('invalid increment argument: ' + release);
- }
- this.format();
- return this;
-};
-
-exports.inc = inc;
-function inc(version, release, loose, identifier) {
- if (typeof(loose) === 'string') {
- identifier = loose;
- loose = undefined;
- }
-
- try {
- return new SemVer(version, loose).inc(release, identifier).version;
- } catch (er) {
- return null;
- }
-}
-
-exports.diff = diff;
-function diff(version1, version2) {
- if (eq(version1, version2)) {
- return null;
- } else {
- var v1 = parse(version1);
- var v2 = parse(version2);
- if (v1.prerelease.length || v2.prerelease.length) {
- for (var key in v1) {
- if (key === 'major' || key === 'minor' || key === 'patch') {
- if (v1[key] !== v2[key]) {
- return 'pre'+key;
- }
- }
- }
- return 'prerelease';
- }
- for (var key in v1) {
- if (key === 'major' || key === 'minor' || key === 'patch') {
- if (v1[key] !== v2[key]) {
- return key;
- }
- }
- }
- }
-}
-
-exports.compareIdentifiers = compareIdentifiers;
-
-var numeric = /^[0-9]+$/;
-function compareIdentifiers(a, b) {
- var anum = numeric.test(a);
- var bnum = numeric.test(b);
-
- if (anum && bnum) {
- a = +a;
- b = +b;
- }
-
- return (anum && !bnum) ? -1 :
- (bnum && !anum) ? 1 :
- a < b ? -1 :
- a > b ? 1 :
- 0;
-}
-
-exports.rcompareIdentifiers = rcompareIdentifiers;
-function rcompareIdentifiers(a, b) {
- return compareIdentifiers(b, a);
-}
-
-exports.major = major;
-function major(a, loose) {
- return new SemVer(a, loose).major;
-}
-
-exports.minor = minor;
-function minor(a, loose) {
- return new SemVer(a, loose).minor;
-}
-
-exports.patch = patch;
-function patch(a, loose) {
- return new SemVer(a, loose).patch;
-}
-
-exports.compare = compare;
-function compare(a, b, loose) {
- return new SemVer(a, loose).compare(b);
-}
-
-exports.compareLoose = compareLoose;
-function compareLoose(a, b) {
- return compare(a, b, true);
-}
-
-exports.rcompare = rcompare;
-function rcompare(a, b, loose) {
- return compare(b, a, loose);
-}
-
-exports.sort = sort;
-function sort(list, loose) {
- return list.sort(function(a, b) {
- return exports.compare(a, b, loose);
- });
-}
-
-exports.rsort = rsort;
-function rsort(list, loose) {
- return list.sort(function(a, b) {
- return exports.rcompare(a, b, loose);
- });
-}
-
-exports.gt = gt;
-function gt(a, b, loose) {
- return compare(a, b, loose) > 0;
-}
-
-exports.lt = lt;
-function lt(a, b, loose) {
- return compare(a, b, loose) < 0;
-}
-
-exports.eq = eq;
-function eq(a, b, loose) {
- return compare(a, b, loose) === 0;
-}
-
-exports.neq = neq;
-function neq(a, b, loose) {
- return compare(a, b, loose) !== 0;
-}
-
-exports.gte = gte;
-function gte(a, b, loose) {
- return compare(a, b, loose) >= 0;
-}
-
-exports.lte = lte;
-function lte(a, b, loose) {
- return compare(a, b, loose) <= 0;
-}
-
-exports.cmp = cmp;
-function cmp(a, op, b, loose) {
- var ret;
- switch (op) {
- case '===':
- if (typeof a === 'object') a = a.version;
- if (typeof b === 'object') b = b.version;
- ret = a === b;
- break;
- case '!==':
- if (typeof a === 'object') a = a.version;
- if (typeof b === 'object') b = b.version;
- ret = a !== b;
- break;
- case '': case '=': case '==': ret = eq(a, b, loose); break;
- case '!=': ret = neq(a, b, loose); break;
- case '>': ret = gt(a, b, loose); break;
- case '>=': ret = gte(a, b, loose); break;
- case '<': ret = lt(a, b, loose); break;
- case '<=': ret = lte(a, b, loose); break;
- default: throw new TypeError('Invalid operator: ' + op);
- }
- return ret;
-}
-
-exports.Comparator = Comparator;
-function Comparator(comp, loose) {
- if (comp instanceof Comparator) {
- if (comp.loose === loose)
- return comp;
- else
- comp = comp.value;
- }
-
- if (!(this instanceof Comparator))
- return new Comparator(comp, loose);
-
- debug('comparator', comp, loose);
- this.loose = loose;
- this.parse(comp);
-
- if (this.semver === ANY)
- this.value = '';
- else
- this.value = this.operator + this.semver.version;
-
- debug('comp', this);
-}
-
-var ANY = {};
-Comparator.prototype.parse = function(comp) {
- var r = this.loose ? re[COMPARATORLOOSE] : re[COMPARATOR];
- var m = comp.match(r);
-
- if (!m)
- throw new TypeError('Invalid comparator: ' + comp);
-
- this.operator = m[1];
- if (this.operator === '=')
- this.operator = '';
-
- // if it literally is just '>' or '' then allow anything.
- if (!m[2])
- this.semver = ANY;
- else
- this.semver = new SemVer(m[2], this.loose);
-};
-
-Comparator.prototype.inspect = function() {
- return '';
-};
-
-Comparator.prototype.toString = function() {
- return this.value;
-};
-
-Comparator.prototype.test = function(version) {
- debug('Comparator.test', version, this.loose);
-
- if (this.semver === ANY)
- return true;
-
- if (typeof version === 'string')
- version = new SemVer(version, this.loose);
-
- return cmp(version, this.operator, this.semver, this.loose);
-};
-
-
-exports.Range = Range;
-function Range(range, loose) {
- if ((range instanceof Range) && range.loose === loose)
- return range;
-
- if (!(this instanceof Range))
- return new Range(range, loose);
-
- this.loose = loose;
-
- // First, split based on boolean or ||
- this.raw = range;
- this.set = range.split(/\s*\|\|\s*/).map(function(range) {
- return this.parseRange(range.trim());
- }, this).filter(function(c) {
- // throw out any that are not relevant for whatever reason
- return c.length;
- });
-
- if (!this.set.length) {
- throw new TypeError('Invalid SemVer Range: ' + range);
- }
-
- this.format();
-}
-
-Range.prototype.inspect = function() {
- return '';
-};
-
-Range.prototype.format = function() {
- this.range = this.set.map(function(comps) {
- return comps.join(' ').trim();
- }).join('||').trim();
- return this.range;
-};
-
-Range.prototype.toString = function() {
- return this.range;
-};
-
-Range.prototype.parseRange = function(range) {
- var loose = this.loose;
- range = range.trim();
- debug('range', range, loose);
- // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
- var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE];
- range = range.replace(hr, hyphenReplace);
- debug('hyphen replace', range);
- // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
- range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace);
- debug('comparator trim', range, re[COMPARATORTRIM]);
-
- // `~ 1.2.3` => `~1.2.3`
- range = range.replace(re[TILDETRIM], tildeTrimReplace);
-
- // `^ 1.2.3` => `^1.2.3`
- range = range.replace(re[CARETTRIM], caretTrimReplace);
-
- // normalize spaces
- range = range.split(/\s+/).join(' ');
-
- // At this point, the range is completely trimmed and
- // ready to be split into comparators.
-
- var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR];
- var set = range.split(' ').map(function(comp) {
- return parseComparator(comp, loose);
- }).join(' ').split(/\s+/);
- if (this.loose) {
- // in loose mode, throw out any that are not valid comparators
- set = set.filter(function(comp) {
- return !!comp.match(compRe);
- });
- }
- set = set.map(function(comp) {
- return new Comparator(comp, loose);
- });
-
- return set;
-};
-
-// Mostly just for testing and legacy API reasons
-exports.toComparators = toComparators;
-function toComparators(range, loose) {
- return new Range(range, loose).set.map(function(comp) {
- return comp.map(function(c) {
- return c.value;
- }).join(' ').trim().split(' ');
- });
-}
-
-// comprised of xranges, tildes, stars, and gtlt's at this point.
-// already replaced the hyphen ranges
-// turn into a set of JUST comparators.
-function parseComparator(comp, loose) {
- debug('comp', comp);
- comp = replaceCarets(comp, loose);
- debug('caret', comp);
- comp = replaceTildes(comp, loose);
- debug('tildes', comp);
- comp = replaceXRanges(comp, loose);
- debug('xrange', comp);
- comp = replaceStars(comp, loose);
- debug('stars', comp);
- return comp;
-}
-
-function isX(id) {
- return !id || id.toLowerCase() === 'x' || id === '*';
-}
-
-// ~, ~> --> * (any, kinda silly)
-// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
-// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
-// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
-// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
-// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
-function replaceTildes(comp, loose) {
- return comp.trim().split(/\s+/).map(function(comp) {
- return replaceTilde(comp, loose);
- }).join(' ');
-}
-
-function replaceTilde(comp, loose) {
- var r = loose ? re[TILDELOOSE] : re[TILDE];
- return comp.replace(r, function(_, M, m, p, pr) {
- debug('tilde', comp, _, M, m, p, pr);
- var ret;
-
- if (isX(M))
- ret = '';
- else if (isX(m))
- ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
- else if (isX(p))
- // ~1.2 == >=1.2.0- <1.3.0-
- ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
- else if (pr) {
- debug('replaceTilde pr', pr);
- if (pr.charAt(0) !== '-')
- pr = '-' + pr;
- ret = '>=' + M + '.' + m + '.' + p + pr +
- ' <' + M + '.' + (+m + 1) + '.0';
- } else
- // ~1.2.3 == >=1.2.3 <1.3.0
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + M + '.' + (+m + 1) + '.0';
-
- debug('tilde return', ret);
- return ret;
- });
-}
-
-// ^ --> * (any, kinda silly)
-// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
-// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
-// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
-// ^1.2.3 --> >=1.2.3 <2.0.0
-// ^1.2.0 --> >=1.2.0 <2.0.0
-function replaceCarets(comp, loose) {
- return comp.trim().split(/\s+/).map(function(comp) {
- return replaceCaret(comp, loose);
- }).join(' ');
-}
-
-function replaceCaret(comp, loose) {
- debug('caret', comp, loose);
- var r = loose ? re[CARETLOOSE] : re[CARET];
- return comp.replace(r, function(_, M, m, p, pr) {
- debug('caret', comp, _, M, m, p, pr);
- var ret;
-
- if (isX(M))
- ret = '';
- else if (isX(m))
- ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
- else if (isX(p)) {
- if (M === '0')
- ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
- else
- ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';
- } else if (pr) {
- debug('replaceCaret pr', pr);
- if (pr.charAt(0) !== '-')
- pr = '-' + pr;
- if (M === '0') {
- if (m === '0')
- ret = '>=' + M + '.' + m + '.' + p + pr +
- ' <' + M + '.' + m + '.' + (+p + 1);
- else
- ret = '>=' + M + '.' + m + '.' + p + pr +
- ' <' + M + '.' + (+m + 1) + '.0';
- } else
- ret = '>=' + M + '.' + m + '.' + p + pr +
- ' <' + (+M + 1) + '.0.0';
- } else {
- debug('no pr');
- if (M === '0') {
- if (m === '0')
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + M + '.' + m + '.' + (+p + 1);
- else
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + M + '.' + (+m + 1) + '.0';
- } else
- ret = '>=' + M + '.' + m + '.' + p +
- ' <' + (+M + 1) + '.0.0';
- }
-
- debug('caret return', ret);
- return ret;
- });
-}
-
-function replaceXRanges(comp, loose) {
- debug('replaceXRanges', comp, loose);
- return comp.split(/\s+/).map(function(comp) {
- return replaceXRange(comp, loose);
- }).join(' ');
-}
-
-function replaceXRange(comp, loose) {
- comp = comp.trim();
- var r = loose ? re[XRANGELOOSE] : re[XRANGE];
- return comp.replace(r, function(ret, gtlt, M, m, p, pr) {
- debug('xRange', comp, ret, gtlt, M, m, p, pr);
- var xM = isX(M);
- var xm = xM || isX(m);
- var xp = xm || isX(p);
- var anyX = xp;
-
- if (gtlt === '=' && anyX)
- gtlt = '';
-
- if (xM) {
- if (gtlt === '>' || gtlt === '<') {
- // nothing is allowed
- ret = '<0.0.0';
- } else {
- // nothing is forbidden
- ret = '*';
- }
- } else if (gtlt && anyX) {
- // replace X with 0
- if (xm)
- m = 0;
- if (xp)
- p = 0;
-
- if (gtlt === '>') {
- // >1 => >=2.0.0
- // >1.2 => >=1.3.0
- // >1.2.3 => >= 1.2.4
- gtlt = '>=';
- if (xm) {
- M = +M + 1;
- m = 0;
- p = 0;
- } else if (xp) {
- m = +m + 1;
- p = 0;
- }
- } else if (gtlt === '<=') {
- // <=0.7.x is actually <0.8.0, since any 0.7.x should
- // pass. Similarly, <=7.x is actually <8.0.0, etc.
- gtlt = '<'
- if (xm)
- M = +M + 1
- else
- m = +m + 1
- }
-
- ret = gtlt + M + '.' + m + '.' + p;
- } else if (xm) {
- ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
- } else if (xp) {
- ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
- }
-
- debug('xRange return', ret);
-
- return ret;
- });
-}
-
-// Because * is AND-ed with everything else in the comparator,
-// and '' means "any version", just remove the *s entirely.
-function replaceStars(comp, loose) {
- debug('replaceStars', comp, loose);
- // Looseness is ignored here. star is always as loose as it gets!
- return comp.trim().replace(re[STAR], '');
-}
-
-// This function is passed to string.replace(re[HYPHENRANGE])
-// M, m, patch, prerelease, build
-// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
-// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
-// 1.2 - 3.4 => >=1.2.0 <3.5.0
-function hyphenReplace($0,
- from, fM, fm, fp, fpr, fb,
- to, tM, tm, tp, tpr, tb) {
-
- if (isX(fM))
- from = '';
- else if (isX(fm))
- from = '>=' + fM + '.0.0';
- else if (isX(fp))
- from = '>=' + fM + '.' + fm + '.0';
- else
- from = '>=' + from;
-
- if (isX(tM))
- to = '';
- else if (isX(tm))
- to = '<' + (+tM + 1) + '.0.0';
- else if (isX(tp))
- to = '<' + tM + '.' + (+tm + 1) + '.0';
- else if (tpr)
- to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;
- else
- to = '<=' + to;
-
- return (from + ' ' + to).trim();
-}
-
-
-// if ANY of the sets match ALL of its comparators, then pass
-Range.prototype.test = function(version) {
- if (!version)
- return false;
-
- if (typeof version === 'string')
- version = new SemVer(version, this.loose);
-
- for (var i = 0; i < this.set.length; i++) {
- if (testSet(this.set[i], version))
- return true;
- }
- return false;
-};
-
-function testSet(set, version) {
- for (var i = 0; i < set.length; i++) {
- if (!set[i].test(version))
- return false;
- }
-
- if (version.prerelease.length) {
- // Find the set of versions that are allowed to have prereleases
- // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
- // That should allow `1.2.3-pr.2` to pass.
- // However, `1.2.4-alpha.notready` should NOT be allowed,
- // even though it's within the range set by the comparators.
- for (var i = 0; i < set.length; i++) {
- debug(set[i].semver);
- if (set[i].semver === ANY)
- continue;
-
- if (set[i].semver.prerelease.length > 0) {
- var allowed = set[i].semver;
- if (allowed.major === version.major &&
- allowed.minor === version.minor &&
- allowed.patch === version.patch)
- return true;
- }
- }
-
- // Version has a -pre, but it's not one of the ones we like.
- return false;
- }
-
- return true;
-}
-
-exports.satisfies = satisfies;
-function satisfies(version, range, loose) {
- try {
- range = new Range(range, loose);
- } catch (er) {
- return false;
- }
- return range.test(version);
-}
-
-exports.maxSatisfying = maxSatisfying;
-function maxSatisfying(versions, range, loose) {
- return versions.filter(function(version) {
- return satisfies(version, range, loose);
- }).sort(function(a, b) {
- return rcompare(a, b, loose);
- })[0] || null;
-}
-
-exports.validRange = validRange;
-function validRange(range, loose) {
- try {
- // Return '*' instead of '' so that truthiness works.
- // This will throw if it's invalid anyway
- return new Range(range, loose).range || '*';
- } catch (er) {
- return null;
- }
-}
-
-// Determine if version is less than all the versions possible in the range
-exports.ltr = ltr;
-function ltr(version, range, loose) {
- return outside(version, range, '<', loose);
-}
-
-// Determine if version is greater than all the versions possible in the range.
-exports.gtr = gtr;
-function gtr(version, range, loose) {
- return outside(version, range, '>', loose);
-}
-
-exports.outside = outside;
-function outside(version, range, hilo, loose) {
- version = new SemVer(version, loose);
- range = new Range(range, loose);
-
- var gtfn, ltefn, ltfn, comp, ecomp;
- switch (hilo) {
- case '>':
- gtfn = gt;
- ltefn = lte;
- ltfn = lt;
- comp = '>';
- ecomp = '>=';
- break;
- case '<':
- gtfn = lt;
- ltefn = gte;
- ltfn = gt;
- comp = '<';
- ecomp = '<=';
- break;
- default:
- throw new TypeError('Must provide a hilo val of "<" or ">"');
- }
-
- // If it satisifes the range it is not outside
- if (satisfies(version, range, loose)) {
- return false;
- }
-
- // From now on, variable terms are as if we're in "gtr" mode.
- // but note that everything is flipped for the "ltr" function.
-
- for (var i = 0; i < range.set.length; ++i) {
- var comparators = range.set[i];
-
- var high = null;
- var low = null;
-
- comparators.forEach(function(comparator) {
- if (comparator.semver === ANY) {
- comparator = new Comparator('>=0.0.0')
- }
- high = high || comparator;
- low = low || comparator;
- if (gtfn(comparator.semver, high.semver, loose)) {
- high = comparator;
- } else if (ltfn(comparator.semver, low.semver, loose)) {
- low = comparator;
- }
- });
-
- // If the edge version comparator has a operator then our version
- // isn't outside it
- if (high.operator === comp || high.operator === ecomp) {
- return false;
- }
-
- // If the lowest version comparator has an operator and our version
- // is less than it then it isn't higher than the range
- if ((!low.operator || low.operator === comp) &&
- ltefn(version, low.semver)) {
- return false;
- } else if (low.operator === ecomp && ltfn(version, low.semver)) {
- return false;
- }
- }
- return true;
-}
-
-// Use the define() function if we're in AMD land
-if (typeof define === 'function' && define.amd)
- define(exports);
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/semver.min.js b/deps/npm/node_modules/node-gyp/node_modules/semver/semver.min.js
deleted file mode 100644
index dea027b11b8e2f..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/semver/semver.min.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(e){if(typeof module==="object"&&module.exports===e)e=module.exports=K;e.SEMVER_SPEC_VERSION="2.0.0";var r=256;var t=Number.MAX_SAFE_INTEGER||9007199254740991;var n=e.re=[];var i=e.src=[];var s=0;var o=s++;i[o]="0|[1-9]\\d*";var a=s++;i[a]="[0-9]+";var f=s++;i[f]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var u=s++;i[u]="("+i[o]+")\\."+"("+i[o]+")\\."+"("+i[o]+")";var l=s++;i[l]="("+i[a]+")\\."+"("+i[a]+")\\."+"("+i[a]+")";var p=s++;i[p]="(?:"+i[o]+"|"+i[f]+")";var c=s++;i[c]="(?:"+i[a]+"|"+i[f]+")";var h=s++;i[h]="(?:-("+i[p]+"(?:\\."+i[p]+")*))";var v=s++;i[v]="(?:-?("+i[c]+"(?:\\."+i[c]+")*))";var m=s++;i[m]="[0-9A-Za-z-]+";var g=s++;i[g]="(?:\\+("+i[m]+"(?:\\."+i[m]+")*))";var w=s++;var y="v?"+i[u]+i[h]+"?"+i[g]+"?";i[w]="^"+y+"$";var d="[v=\\s]*"+i[l]+i[v]+"?"+i[g]+"?";var j=s++;i[j]="^"+d+"$";var b=s++;i[b]="((?:<|>)?=?)";var E=s++;i[E]=i[a]+"|x|X|\\*";var $=s++;i[$]=i[o]+"|x|X|\\*";var k=s++;i[k]="[v=\\s]*("+i[$]+")"+"(?:\\.("+i[$]+")"+"(?:\\.("+i[$]+")"+"(?:"+i[h]+")?"+i[g]+"?"+")?)?";var R=s++;i[R]="[v=\\s]*("+i[E]+")"+"(?:\\.("+i[E]+")"+"(?:\\.("+i[E]+")"+"(?:"+i[v]+")?"+i[g]+"?"+")?)?";var S=s++;i[S]="^"+i[b]+"\\s*"+i[k]+"$";var x=s++;i[x]="^"+i[b]+"\\s*"+i[R]+"$";var I=s++;i[I]="(?:~>?)";var T=s++;i[T]="(\\s*)"+i[I]+"\\s+";n[T]=new RegExp(i[T],"g");var V="$1~";var A=s++;i[A]="^"+i[I]+i[k]+"$";var C=s++;i[C]="^"+i[I]+i[R]+"$";var M=s++;i[M]="(?:\\^)";var N=s++;i[N]="(\\s*)"+i[M]+"\\s+";n[N]=new RegExp(i[N],"g");var _="$1^";var z=s++;i[z]="^"+i[M]+i[k]+"$";var P=s++;i[P]="^"+i[M]+i[R]+"$";var X=s++;i[X]="^"+i[b]+"\\s*("+d+")$|^$";var Z=s++;i[Z]="^"+i[b]+"\\s*("+y+")$|^$";var q=s++;i[q]="(\\s*)"+i[b]+"\\s*("+d+"|"+i[k]+")";n[q]=new RegExp(i[q],"g");var L="$1$2$3";var F=s++;i[F]="^\\s*("+i[k]+")"+"\\s+-\\s+"+"("+i[k]+")"+"\\s*$";var G=s++;i[G]="^\\s*("+i[R]+")"+"\\s+-\\s+"+"("+i[R]+")"+"\\s*$";var O=s++;i[O]="(<|>)?=?\\s*\\*";for(var B=0;Br)return null;var i=t?n[j]:n[w];if(!i.test(e))return null;try{return new K(e,t)}catch(s){return null}}e.valid=H;function H(e,r){var t=D(e,r);return t?t.version:null}e.clean=J;function J(e,r){var t=D(e.trim().replace(/^[=v]+/,""),r);return t?t.version:null}e.SemVer=K;function K(e,i){if(e instanceof K){if(e.loose===i)return e;else e=e.version}else if(typeof e!=="string"){throw new TypeError("Invalid Version: "+e)}if(e.length>r)throw new TypeError("version is longer than "+r+" characters");if(!(this instanceof K))return new K(e,i);this.loose=i;var s=e.trim().match(i?n[j]:n[w]);if(!s)throw new TypeError("Invalid Version: "+e);this.raw=e;this.major=+s[1];this.minor=+s[2];this.patch=+s[3];if(this.major>t||this.major<0)throw new TypeError("Invalid major version");if(this.minor>t||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>t||this.patch<0)throw new TypeError("Invalid patch version");if(!s[4])this.prerelease=[];else this.prerelease=s[4].split(".").map(function(e){if(/^[0-9]+$/.test(e)){var r=+e;if(r>=0&&r'};K.prototype.toString=function(){return this.version};K.prototype.compare=function(e){if(!(e instanceof K))e=new K(e,this.loose);return this.compareMain(e)||this.comparePre(e)};K.prototype.compareMain=function(e){if(!(e instanceof K))e=new K(e,this.loose);return Y(this.major,e.major)||Y(this.minor,e.minor)||Y(this.patch,e.patch)};K.prototype.comparePre=function(e){if(!(e instanceof K))e=new K(e,this.loose);if(this.prerelease.length&&!e.prerelease.length)return-1;else if(!this.prerelease.length&&e.prerelease.length)return 1;else if(!this.prerelease.length&&!e.prerelease.length)return 0;var r=0;do{var t=this.prerelease[r];var n=e.prerelease[r];if(t===undefined&&n===undefined)return 0;else if(n===undefined)return 1;else if(t===undefined)return-1;else if(t===n)continue;else return Y(t,n)}while(++r)};K.prototype.inc=function(e,r){switch(e){case"premajor":this.prerelease.length=0;this.patch=0;this.minor=0;this.major++;this.inc("pre",r);break;case"preminor":this.prerelease.length=0;this.patch=0;this.minor++;this.inc("pre",r);break;case"prepatch":this.prerelease.length=0;this.inc("patch",r);this.inc("pre",r);break;case"prerelease":if(this.prerelease.length===0)this.inc("patch",r);this.inc("pre",r);break;case"major":if(this.minor!==0||this.patch!==0||this.prerelease.length===0)this.major++;this.minor=0;this.patch=0;this.prerelease=[];break;case"minor":if(this.patch!==0||this.prerelease.length===0)this.minor++;this.patch=0;this.prerelease=[];break;case"patch":if(this.prerelease.length===0)this.patch++;this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else{var t=this.prerelease.length;while(--t>=0){if(typeof this.prerelease[t]==="number"){this.prerelease[t]++;t=-2}}if(t===-1)this.prerelease.push(0)}if(r){if(this.prerelease[0]===r){if(isNaN(this.prerelease[1]))this.prerelease=[r,0]}else this.prerelease=[r,0]}break;default:throw new Error("invalid increment argument: "+e)}this.format();return this};e.inc=Q;function Q(e,r,t,n){if(typeof t==="string"){n=t;t=undefined}try{return new K(e,t).inc(r,n).version}catch(i){return null}}e.diff=U;function U(e,r){if(pr(e,r)){return null}else{var t=D(e);var n=D(r);if(t.prerelease.length||n.prerelease.length){for(var i in t){if(i==="major"||i==="minor"||i==="patch"){if(t[i]!==n[i]){return"pre"+i}}}return"prerelease"}for(var i in t){if(i==="major"||i==="minor"||i==="patch"){if(t[i]!==n[i]){return i}}}}}e.compareIdentifiers=Y;var W=/^[0-9]+$/;function Y(e,r){var t=W.test(e);var n=W.test(r);if(t&&n){e=+e;r=+r}return t&&!n?-1:n&&!t?1:er?1:0}e.rcompareIdentifiers=er;function er(e,r){return Y(r,e)}e.major=rr;function rr(e,r){return new K(e,r).major}e.minor=tr;function tr(e,r){return new K(e,r).minor}e.patch=nr;function nr(e,r){return new K(e,r).patch}e.compare=ir;function ir(e,r,t){return new K(e,t).compare(r)}e.compareLoose=sr;function sr(e,r){return ir(e,r,true)}e.rcompare=or;function or(e,r,t){return ir(r,e,t)}e.sort=ar;function ar(r,t){return r.sort(function(r,n){return e.compare(r,n,t)})}e.rsort=fr;function fr(r,t){return r.sort(function(r,n){return e.rcompare(r,n,t)})}e.gt=ur;function ur(e,r,t){return ir(e,r,t)>0}e.lt=lr;function lr(e,r,t){return ir(e,r,t)<0}e.eq=pr;function pr(e,r,t){return ir(e,r,t)===0}e.neq=cr;function cr(e,r,t){return ir(e,r,t)!==0}e.gte=hr;function hr(e,r,t){return ir(e,r,t)>=0}e.lte=vr;function vr(e,r,t){return ir(e,r,t)<=0}e.cmp=mr;function mr(e,r,t,n){var i;switch(r){case"===":if(typeof e==="object")e=e.version;if(typeof t==="object")t=t.version;i=e===t;break;case"!==":if(typeof e==="object")e=e.version;if(typeof t==="object")t=t.version;i=e!==t;break;case"":case"=":case"==":i=pr(e,t,n);break;case"!=":i=cr(e,t,n);break;case">":i=ur(e,t,n);break;case">=":i=hr(e,t,n);break;case"<":i=lr(e,t,n);break;case"<=":i=vr(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return i}e.Comparator=gr;function gr(e,r){if(e instanceof gr){if(e.loose===r)return e;else e=e.value}if(!(this instanceof gr))return new gr(e,r);this.loose=r;this.parse(e);if(this.semver===wr)this.value="";else this.value=this.operator+this.semver.version}var wr={};gr.prototype.parse=function(e){var r=this.loose?n[X]:n[Z];var t=e.match(r);if(!t)throw new TypeError("Invalid comparator: "+e);this.operator=t[1];if(this.operator==="=")this.operator="";if(!t[2])this.semver=wr;else this.semver=new K(t[2],this.loose)};gr.prototype.inspect=function(){return''};gr.prototype.toString=function(){return this.value};gr.prototype.test=function(e){if(this.semver===wr)return true;if(typeof e==="string")e=new K(e,this.loose);return mr(e,this.operator,this.semver,this.loose)};e.Range=yr;function yr(e,r){if(e instanceof yr&&e.loose===r)return e;if(!(this instanceof yr))return new yr(e,r);this.loose=r;this.raw=e;this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length});if(!this.set.length){throw new TypeError("Invalid SemVer Range: "+e)}this.format()}yr.prototype.inspect=function(){return''};yr.prototype.format=function(){this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim();return this.range};yr.prototype.toString=function(){return this.range};yr.prototype.parseRange=function(e){var r=this.loose;e=e.trim();var t=r?n[G]:n[F];e=e.replace(t,Tr);e=e.replace(n[q],L);e=e.replace(n[T],V);e=e.replace(n[N],_);e=e.split(/\s+/).join(" ");var i=r?n[X]:n[Z];var s=e.split(" ").map(function(e){return jr(e,r)}).join(" ").split(/\s+/);if(this.loose){s=s.filter(function(e){return!!e.match(i)})}s=s.map(function(e){return new gr(e,r)});return s};e.toComparators=dr;function dr(e,r){return new yr(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})}function jr(e,r){e=kr(e,r);e=Er(e,r);e=Sr(e,r);e=Ir(e,r);return e}function br(e){return!e||e.toLowerCase()==="x"||e==="*"}function Er(e,r){return e.trim().split(/\s+/).map(function(e){return $r(e,r)}).join(" ")}function $r(e,r){var t=r?n[C]:n[A];return e.replace(t,function(e,r,t,n,i){var s;if(br(r))s="";else if(br(t))s=">="+r+".0.0 <"+(+r+1)+".0.0";else if(br(n))s=">="+r+"."+t+".0 <"+r+"."+(+t+1)+".0";else if(i){if(i.charAt(0)!=="-")i="-"+i;s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+" <"+r+"."+(+t+1)+".0";return s})}function kr(e,r){return e.trim().split(/\s+/).map(function(e){return Rr(e,r)}).join(" ")}function Rr(e,r){var t=r?n[P]:n[z];return e.replace(t,function(e,r,t,n,i){var s;if(br(r))s="";else if(br(t))s=">="+r+".0.0 <"+(+r+1)+".0.0";else if(br(n)){if(r==="0")s=">="+r+"."+t+".0 <"+r+"."+(+t+1)+".0";else s=">="+r+"."+t+".0 <"+(+r+1)+".0.0"}else if(i){if(i.charAt(0)!=="-")i="-"+i;if(r==="0"){if(t==="0")s=">="+r+"."+t+"."+n+i+" <"+r+"."+t+"."+(+n+1);else s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+i+" <"+(+r+1)+".0.0"}else{if(r==="0"){if(t==="0")s=">="+r+"."+t+"."+n+" <"+r+"."+t+"."+(+n+1);else s=">="+r+"."+t+"."+n+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+" <"+(+r+1)+".0.0"}return s})}function Sr(e,r){return e.split(/\s+/).map(function(e){return xr(e,r)}).join(" ")}function xr(e,r){e=e.trim();var t=r?n[x]:n[S];return e.replace(t,function(e,r,t,n,i,s){var o=br(t);var a=o||br(n);var f=a||br(i);var u=f;if(r==="="&&u)r="";if(o){if(r===">"||r==="<"){e="<0.0.0"}else{e="*"}}else if(r&&u){if(a)n=0;if(f)i=0;if(r===">"){r=">=";if(a){t=+t+1;n=0;i=0}else if(f){n=+n+1;i=0}}else if(r==="<="){r="<";if(a)t=+t+1;else n=+n+1}e=r+t+"."+n+"."+i}else if(a){e=">="+t+".0.0 <"+(+t+1)+".0.0"}else if(f){e=">="+t+"."+n+".0 <"+t+"."+(+n+1)+".0"}return e})}function Ir(e,r){return e.trim().replace(n[O],"")}function Tr(e,r,t,n,i,s,o,a,f,u,l,p,c){if(br(t))r="";else if(br(n))r=">="+t+".0.0";else if(br(i))r=">="+t+"."+n+".0";else r=">="+r;if(br(f))a="";else if(br(u))a="<"+(+f+1)+".0.0";else if(br(l))a="<"+f+"."+(+u+1)+".0";else if(p)a="<="+f+"."+u+"."+l+"-"+p;else a="<="+a;return(r+" "+a).trim()}yr.prototype.test=function(e){if(!e)return false;if(typeof e==="string")e=new K(e,this.loose);for(var r=0;r0){var n=e[t].semver;if(n.major===r.major&&n.minor===r.minor&&n.patch===r.patch)return true}}return false}return true}e.satisfies=Ar;function Ar(e,r,t){try{r=new yr(r,t)}catch(n){return false}return r.test(e)}e.maxSatisfying=Cr;function Cr(e,r,t){return e.filter(function(e){return Ar(e,r,t)}).sort(function(e,r){return or(e,r,t)})[0]||null}e.validRange=Mr;function Mr(e,r){try{return new yr(e,r).range||"*"}catch(t){return null}}e.ltr=Nr;function Nr(e,r,t){return zr(e,r,"<",t)}e.gtr=_r;function _r(e,r,t){return zr(e,r,">",t)}e.outside=zr;function zr(e,r,t,n){e=new K(e,n);r=new yr(r,n);var i,s,o,a,f;switch(t){case">":i=ur;s=vr;o=lr;a=">";f=">=";break;case"<":i=lr;s=hr;o=ur;a="<";f="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Ar(e,r,n)){return false}for(var u=0;u=0.0.0")}p=p||e;c=c||e;if(i(e.semver,p.semver,n)){p=e}else if(o(e.semver,c.semver,n)){c=e}});if(p.operator===a||p.operator===f){return false}if((!c.operator||c.operator===a)&&s(e,c.semver)){return false}else if(c.operator===f&&o(e,c.semver)){return false}}return true}if(typeof define==="function"&&define.amd)define(e)})(typeof exports==="object"?exports:typeof define==="function"&&define.amd?{}:semver={});
\ No newline at end of file
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/semver.min.js.gz b/deps/npm/node_modules/node-gyp/node_modules/semver/semver.min.js.gz
deleted file mode 100644
index cbbc16188002f2..00000000000000
Binary files a/deps/npm/node_modules/node-gyp/node_modules/semver/semver.min.js.gz and /dev/null differ
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/test/amd.js b/deps/npm/node_modules/node-gyp/node_modules/semver/test/amd.js
deleted file mode 100644
index a6041341b37ee9..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/semver/test/amd.js
+++ /dev/null
@@ -1,15 +0,0 @@
-var tap = require('tap');
-var test = tap.test;
-
-test('amd', function(t) {
- global.define = define;
- define.amd = true;
- var defined = null;
- function define(stuff) {
- defined = stuff;
- }
- var fromRequire = require('../');
- t.ok(defined, 'amd function called');
- t.equal(fromRequire, defined, 'amd stuff same as require stuff');
- t.end();
-});
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/test/big-numbers.js b/deps/npm/node_modules/node-gyp/node_modules/semver/test/big-numbers.js
deleted file mode 100644
index c051864bc978c2..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/semver/test/big-numbers.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var test = require('tap').test
-var semver = require('../')
-
-test('long version is too long', function (t) {
- var v = '1.2.' + new Array(256).join('1')
- t.throws(function () {
- new semver.SemVer(v)
- })
- t.equal(semver.valid(v, false), null)
- t.equal(semver.valid(v, true), null)
- t.equal(semver.inc(v, 'patch'), null)
- t.end()
-})
-
-test('big number is like too long version', function (t) {
- var v = '1.2.' + new Array(100).join('1')
- t.throws(function () {
- new semver.SemVer(v)
- })
- t.equal(semver.valid(v, false), null)
- t.equal(semver.valid(v, true), null)
- t.equal(semver.inc(v, 'patch'), null)
- t.end()
-})
-
-test('parsing null does not throw', function (t) {
- t.equal(semver.parse(null), null)
- t.equal(semver.parse({}), null)
- t.equal(semver.parse(new semver.SemVer('1.2.3')).version, '1.2.3')
- t.end()
-})
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/test/clean.js b/deps/npm/node_modules/node-gyp/node_modules/semver/test/clean.js
deleted file mode 100644
index 9e268de950ce8c..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/semver/test/clean.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var tap = require('tap');
-var test = tap.test;
-var semver = require('../semver.js');
-var clean = semver.clean;
-
-test('\nclean tests', function(t) {
- // [range, version]
- // Version should be detectable despite extra characters
- [
- ['1.2.3', '1.2.3'],
- [' 1.2.3 ', '1.2.3'],
- [' 1.2.3-4 ', '1.2.3-4'],
- [' 1.2.3-pre ', '1.2.3-pre'],
- [' =v1.2.3 ', '1.2.3'],
- ['v1.2.3', '1.2.3'],
- [' v1.2.3 ', '1.2.3'],
- ['\t1.2.3', '1.2.3'],
- ['>1.2.3', null],
- ['~1.2.3', null],
- ['<=1.2.3', null],
- ['1.2.x', null]
- ].forEach(function(tuple) {
- var range = tuple[0];
- var version = tuple[1];
- var msg = 'clean(' + range + ') = ' + version;
- t.equal(clean(range), version, msg);
- });
- t.end();
-});
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/test/gtr.js b/deps/npm/node_modules/node-gyp/node_modules/semver/test/gtr.js
deleted file mode 100644
index bbb87896c64fbb..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/semver/test/gtr.js
+++ /dev/null
@@ -1,173 +0,0 @@
-var tap = require('tap');
-var test = tap.test;
-var semver = require('../semver.js');
-var gtr = semver.gtr;
-
-test('\ngtr tests', function(t) {
- // [range, version, loose]
- // Version should be greater than range
- [
- ['~1.2.2', '1.3.0'],
- ['~0.6.1-1', '0.7.1-1'],
- ['1.0.0 - 2.0.0', '2.0.1'],
- ['1.0.0', '1.0.1-beta1'],
- ['1.0.0', '2.0.0'],
- ['<=2.0.0', '2.1.1'],
- ['<=2.0.0', '3.2.9'],
- ['<2.0.0', '2.0.0'],
- ['0.1.20 || 1.2.4', '1.2.5'],
- ['2.x.x', '3.0.0'],
- ['1.2.x', '1.3.0'],
- ['1.2.x || 2.x', '3.0.0'],
- ['2.*.*', '5.0.1'],
- ['1.2.*', '1.3.3'],
- ['1.2.* || 2.*', '4.0.0'],
- ['2', '3.0.0'],
- ['2.3', '2.4.2'],
- ['~2.4', '2.5.0'], // >=2.4.0 <2.5.0
- ['~2.4', '2.5.5'],
- ['~>3.2.1', '3.3.0'], // >=3.2.1 <3.3.0
- ['~1', '2.2.3'], // >=1.0.0 <2.0.0
- ['~>1', '2.2.4'],
- ['~> 1', '3.2.3'],
- ['~1.0', '1.1.2'], // >=1.0.0 <1.1.0
- ['~ 1.0', '1.1.0'],
- ['<1.2', '1.2.0'],
- ['< 1.2', '1.2.1'],
- ['1', '2.0.0beta', true],
- ['~v0.5.4-pre', '0.6.0'],
- ['~v0.5.4-pre', '0.6.1-pre'],
- ['=0.7.x', '0.8.0'],
- ['=0.7.x', '0.8.0-asdf'],
- ['<0.7.x', '0.7.0'],
- ['~1.2.2', '1.3.0'],
- ['1.0.0 - 2.0.0', '2.2.3'],
- ['1.0.0', '1.0.1'],
- ['<=2.0.0', '3.0.0'],
- ['<=2.0.0', '2.9999.9999'],
- ['<=2.0.0', '2.2.9'],
- ['<2.0.0', '2.9999.9999'],
- ['<2.0.0', '2.2.9'],
- ['2.x.x', '3.1.3'],
- ['1.2.x', '1.3.3'],
- ['1.2.x || 2.x', '3.1.3'],
- ['2.*.*', '3.1.3'],
- ['1.2.*', '1.3.3'],
- ['1.2.* || 2.*', '3.1.3'],
- ['2', '3.1.2'],
- ['2.3', '2.4.1'],
- ['~2.4', '2.5.0'], // >=2.4.0 <2.5.0
- ['~>3.2.1', '3.3.2'], // >=3.2.1 <3.3.0
- ['~1', '2.2.3'], // >=1.0.0 <2.0.0
- ['~>1', '2.2.3'],
- ['~1.0', '1.1.0'], // >=1.0.0 <1.1.0
- ['<1', '1.0.0'],
- ['1', '2.0.0beta', true],
- ['<1', '1.0.0beta', true],
- ['< 1', '1.0.0beta', true],
- ['=0.7.x', '0.8.2'],
- ['<0.7.x', '0.7.2']
- ].forEach(function(tuple) {
- var range = tuple[0];
- var version = tuple[1];
- var loose = tuple[2] || false;
- var msg = 'gtr(' + version + ', ' + range + ', ' + loose + ')';
- t.ok(gtr(version, range, loose), msg);
- });
- t.end();
-});
-
-test('\nnegative gtr tests', function(t) {
- // [range, version, loose]
- // Version should NOT be greater than range
- [
- ['~0.6.1-1', '0.6.1-1'],
- ['1.0.0 - 2.0.0', '1.2.3'],
- ['1.0.0 - 2.0.0', '0.9.9'],
- ['1.0.0', '1.0.0'],
- ['>=*', '0.2.4'],
- ['', '1.0.0', true],
- ['*', '1.2.3'],
- ['*', 'v1.2.3-foo'],
- ['>=1.0.0', '1.0.0'],
- ['>=1.0.0', '1.0.1'],
- ['>=1.0.0', '1.1.0'],
- ['>1.0.0', '1.0.1'],
- ['>1.0.0', '1.1.0'],
- ['<=2.0.0', '2.0.0'],
- ['<=2.0.0', '1.9999.9999'],
- ['<=2.0.0', '0.2.9'],
- ['<2.0.0', '1.9999.9999'],
- ['<2.0.0', '0.2.9'],
- ['>= 1.0.0', '1.0.0'],
- ['>= 1.0.0', '1.0.1'],
- ['>= 1.0.0', '1.1.0'],
- ['> 1.0.0', '1.0.1'],
- ['> 1.0.0', '1.1.0'],
- ['<= 2.0.0', '2.0.0'],
- ['<= 2.0.0', '1.9999.9999'],
- ['<= 2.0.0', '0.2.9'],
- ['< 2.0.0', '1.9999.9999'],
- ['<\t2.0.0', '0.2.9'],
- ['>=0.1.97', 'v0.1.97'],
- ['>=0.1.97', '0.1.97'],
- ['0.1.20 || 1.2.4', '1.2.4'],
- ['0.1.20 || >1.2.4', '1.2.4'],
- ['0.1.20 || 1.2.4', '1.2.3'],
- ['0.1.20 || 1.2.4', '0.1.20'],
- ['>=0.2.3 || <0.0.1', '0.0.0'],
- ['>=0.2.3 || <0.0.1', '0.2.3'],
- ['>=0.2.3 || <0.0.1', '0.2.4'],
- ['||', '1.3.4'],
- ['2.x.x', '2.1.3'],
- ['1.2.x', '1.2.3'],
- ['1.2.x || 2.x', '2.1.3'],
- ['1.2.x || 2.x', '1.2.3'],
- ['x', '1.2.3'],
- ['2.*.*', '2.1.3'],
- ['1.2.*', '1.2.3'],
- ['1.2.* || 2.*', '2.1.3'],
- ['1.2.* || 2.*', '1.2.3'],
- ['1.2.* || 2.*', '1.2.3'],
- ['*', '1.2.3'],
- ['2', '2.1.2'],
- ['2.3', '2.3.1'],
- ['~2.4', '2.4.0'], // >=2.4.0 <2.5.0
- ['~2.4', '2.4.5'],
- ['~>3.2.1', '3.2.2'], // >=3.2.1 <3.3.0
- ['~1', '1.2.3'], // >=1.0.0 <2.0.0
- ['~>1', '1.2.3'],
- ['~> 1', '1.2.3'],
- ['~1.0', '1.0.2'], // >=1.0.0 <1.1.0
- ['~ 1.0', '1.0.2'],
- ['>=1', '1.0.0'],
- ['>= 1', '1.0.0'],
- ['<1.2', '1.1.1'],
- ['< 1.2', '1.1.1'],
- ['1', '1.0.0beta', true],
- ['~v0.5.4-pre', '0.5.5'],
- ['~v0.5.4-pre', '0.5.4'],
- ['=0.7.x', '0.7.2'],
- ['>=0.7.x', '0.7.2'],
- ['=0.7.x', '0.7.0-asdf'],
- ['>=0.7.x', '0.7.0-asdf'],
- ['<=0.7.x', '0.6.2'],
- ['>0.2.3 >0.2.4 <=0.2.5', '0.2.5'],
- ['>=0.2.3 <=0.2.4', '0.2.4'],
- ['1.0.0 - 2.0.0', '2.0.0'],
- ['^1', '0.0.0-0'],
- ['^3.0.0', '2.0.0'],
- ['^1.0.0 || ~2.0.1', '2.0.0'],
- ['^0.1.0 || ~3.0.1 || 5.0.0', '3.2.0'],
- ['^0.1.0 || ~3.0.1 || 5.0.0', '1.0.0beta', true],
- ['^0.1.0 || ~3.0.1 || 5.0.0', '5.0.0-0', true],
- ['^0.1.0 || ~3.0.1 || >4 <=5.0.0', '3.5.0']
- ].forEach(function(tuple) {
- var range = tuple[0];
- var version = tuple[1];
- var loose = tuple[2] || false;
- var msg = '!gtr(' + version + ', ' + range + ', ' + loose + ')';
- t.notOk(gtr(version, range, loose), msg);
- });
- t.end();
-});
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/test/index.js b/deps/npm/node_modules/node-gyp/node_modules/semver/test/index.js
deleted file mode 100644
index c256c79479c144..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/semver/test/index.js
+++ /dev/null
@@ -1,685 +0,0 @@
-'use strict';
-
-var tap = require('tap');
-var test = tap.test;
-var semver = require('../semver.js');
-var eq = semver.eq;
-var gt = semver.gt;
-var lt = semver.lt;
-var neq = semver.neq;
-var cmp = semver.cmp;
-var gte = semver.gte;
-var lte = semver.lte;
-var satisfies = semver.satisfies;
-var validRange = semver.validRange;
-var inc = semver.inc;
-var diff = semver.diff;
-var replaceStars = semver.replaceStars;
-var toComparators = semver.toComparators;
-var SemVer = semver.SemVer;
-var Range = semver.Range;
-
-test('\ncomparison tests', function(t) {
- // [version1, version2]
- // version1 should be greater than version2
- [['0.0.0', '0.0.0-foo'],
- ['0.0.1', '0.0.0'],
- ['1.0.0', '0.9.9'],
- ['0.10.0', '0.9.0'],
- ['0.99.0', '0.10.0'],
- ['2.0.0', '1.2.3'],
- ['v0.0.0', '0.0.0-foo', true],
- ['v0.0.1', '0.0.0', true],
- ['v1.0.0', '0.9.9', true],
- ['v0.10.0', '0.9.0', true],
- ['v0.99.0', '0.10.0', true],
- ['v2.0.0', '1.2.3', true],
- ['0.0.0', 'v0.0.0-foo', true],
- ['0.0.1', 'v0.0.0', true],
- ['1.0.0', 'v0.9.9', true],
- ['0.10.0', 'v0.9.0', true],
- ['0.99.0', 'v0.10.0', true],
- ['2.0.0', 'v1.2.3', true],
- ['1.2.3', '1.2.3-asdf'],
- ['1.2.3', '1.2.3-4'],
- ['1.2.3', '1.2.3-4-foo'],
- ['1.2.3-5-foo', '1.2.3-5'],
- ['1.2.3-5', '1.2.3-4'],
- ['1.2.3-5-foo', '1.2.3-5-Foo'],
- ['3.0.0', '2.7.2+asdf'],
- ['1.2.3-a.10', '1.2.3-a.5'],
- ['1.2.3-a.b', '1.2.3-a.5'],
- ['1.2.3-a.b', '1.2.3-a'],
- ['1.2.3-a.b.c.10.d.5', '1.2.3-a.b.c.5.d.100'],
- ['1.2.3-r2', '1.2.3-r100'],
- ['1.2.3-r100', '1.2.3-R2']
- ].forEach(function(v) {
- var v0 = v[0];
- var v1 = v[1];
- var loose = v[2];
- t.ok(gt(v0, v1, loose), "gt('" + v0 + "', '" + v1 + "')");
- t.ok(lt(v1, v0, loose), "lt('" + v1 + "', '" + v0 + "')");
- t.ok(!gt(v1, v0, loose), "!gt('" + v1 + "', '" + v0 + "')");
- t.ok(!lt(v0, v1, loose), "!lt('" + v0 + "', '" + v1 + "')");
- t.ok(eq(v0, v0, loose), "eq('" + v0 + "', '" + v0 + "')");
- t.ok(eq(v1, v1, loose), "eq('" + v1 + "', '" + v1 + "')");
- t.ok(neq(v0, v1, loose), "neq('" + v0 + "', '" + v1 + "')");
- t.ok(cmp(v1, '==', v1, loose), "cmp('" + v1 + "' == '" + v1 + "')");
- t.ok(cmp(v0, '>=', v1, loose), "cmp('" + v0 + "' >= '" + v1 + "')");
- t.ok(cmp(v1, '<=', v0, loose), "cmp('" + v1 + "' <= '" + v0 + "')");
- t.ok(cmp(v0, '!=', v1, loose), "cmp('" + v0 + "' != '" + v1 + "')");
- });
- t.end();
-});
-
-test('\nequality tests', function(t) {
- // [version1, version2]
- // version1 should be equivalent to version2
- [['1.2.3', 'v1.2.3', true],
- ['1.2.3', '=1.2.3', true],
- ['1.2.3', 'v 1.2.3', true],
- ['1.2.3', '= 1.2.3', true],
- ['1.2.3', ' v1.2.3', true],
- ['1.2.3', ' =1.2.3', true],
- ['1.2.3', ' v 1.2.3', true],
- ['1.2.3', ' = 1.2.3', true],
- ['1.2.3-0', 'v1.2.3-0', true],
- ['1.2.3-0', '=1.2.3-0', true],
- ['1.2.3-0', 'v 1.2.3-0', true],
- ['1.2.3-0', '= 1.2.3-0', true],
- ['1.2.3-0', ' v1.2.3-0', true],
- ['1.2.3-0', ' =1.2.3-0', true],
- ['1.2.3-0', ' v 1.2.3-0', true],
- ['1.2.3-0', ' = 1.2.3-0', true],
- ['1.2.3-1', 'v1.2.3-1', true],
- ['1.2.3-1', '=1.2.3-1', true],
- ['1.2.3-1', 'v 1.2.3-1', true],
- ['1.2.3-1', '= 1.2.3-1', true],
- ['1.2.3-1', ' v1.2.3-1', true],
- ['1.2.3-1', ' =1.2.3-1', true],
- ['1.2.3-1', ' v 1.2.3-1', true],
- ['1.2.3-1', ' = 1.2.3-1', true],
- ['1.2.3-beta', 'v1.2.3-beta', true],
- ['1.2.3-beta', '=1.2.3-beta', true],
- ['1.2.3-beta', 'v 1.2.3-beta', true],
- ['1.2.3-beta', '= 1.2.3-beta', true],
- ['1.2.3-beta', ' v1.2.3-beta', true],
- ['1.2.3-beta', ' =1.2.3-beta', true],
- ['1.2.3-beta', ' v 1.2.3-beta', true],
- ['1.2.3-beta', ' = 1.2.3-beta', true],
- ['1.2.3-beta+build', ' = 1.2.3-beta+otherbuild', true],
- ['1.2.3+build', ' = 1.2.3+otherbuild', true],
- ['1.2.3-beta+build', '1.2.3-beta+otherbuild'],
- ['1.2.3+build', '1.2.3+otherbuild'],
- [' v1.2.3+build', '1.2.3+otherbuild']
- ].forEach(function(v) {
- var v0 = v[0];
- var v1 = v[1];
- var loose = v[2];
- t.ok(eq(v0, v1, loose), "eq('" + v0 + "', '" + v1 + "')");
- t.ok(!neq(v0, v1, loose), "!neq('" + v0 + "', '" + v1 + "')");
- t.ok(cmp(v0, '==', v1, loose), 'cmp(' + v0 + '==' + v1 + ')');
- t.ok(!cmp(v0, '!=', v1, loose), '!cmp(' + v0 + '!=' + v1 + ')');
- t.ok(!cmp(v0, '===', v1, loose), '!cmp(' + v0 + '===' + v1 + ')');
- t.ok(cmp(v0, '!==', v1, loose), 'cmp(' + v0 + '!==' + v1 + ')');
- t.ok(!gt(v0, v1, loose), "!gt('" + v0 + "', '" + v1 + "')");
- t.ok(gte(v0, v1, loose), "gte('" + v0 + "', '" + v1 + "')");
- t.ok(!lt(v0, v1, loose), "!lt('" + v0 + "', '" + v1 + "')");
- t.ok(lte(v0, v1, loose), "lte('" + v0 + "', '" + v1 + "')");
- });
- t.end();
-});
-
-
-test('\nrange tests', function(t) {
- // [range, version]
- // version should be included by range
- [['1.0.0 - 2.0.0', '1.2.3'],
- ['^1.2.3+build', '1.2.3'],
- ['^1.2.3+build', '1.3.0'],
- ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '1.2.3'],
- ['1.2.3pre+asdf - 2.4.3-pre+asdf', '1.2.3', true],
- ['1.2.3-pre+asdf - 2.4.3pre+asdf', '1.2.3', true],
- ['1.2.3pre+asdf - 2.4.3pre+asdf', '1.2.3', true],
- ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '1.2.3-pre.2'],
- ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '2.4.3-alpha'],
- ['1.2.3+asdf - 2.4.3+asdf', '1.2.3'],
- ['1.0.0', '1.0.0'],
- ['>=*', '0.2.4'],
- ['', '1.0.0'],
- ['*', '1.2.3'],
- ['*', 'v1.2.3', true],
- ['>=1.0.0', '1.0.0'],
- ['>=1.0.0', '1.0.1'],
- ['>=1.0.0', '1.1.0'],
- ['>1.0.0', '1.0.1'],
- ['>1.0.0', '1.1.0'],
- ['<=2.0.0', '2.0.0'],
- ['<=2.0.0', '1.9999.9999'],
- ['<=2.0.0', '0.2.9'],
- ['<2.0.0', '1.9999.9999'],
- ['<2.0.0', '0.2.9'],
- ['>= 1.0.0', '1.0.0'],
- ['>= 1.0.0', '1.0.1'],
- ['>= 1.0.0', '1.1.0'],
- ['> 1.0.0', '1.0.1'],
- ['> 1.0.0', '1.1.0'],
- ['<= 2.0.0', '2.0.0'],
- ['<= 2.0.0', '1.9999.9999'],
- ['<= 2.0.0', '0.2.9'],
- ['< 2.0.0', '1.9999.9999'],
- ['<\t2.0.0', '0.2.9'],
- ['>=0.1.97', 'v0.1.97', true],
- ['>=0.1.97', '0.1.97'],
- ['0.1.20 || 1.2.4', '1.2.4'],
- ['>=0.2.3 || <0.0.1', '0.0.0'],
- ['>=0.2.3 || <0.0.1', '0.2.3'],
- ['>=0.2.3 || <0.0.1', '0.2.4'],
- ['||', '1.3.4'],
- ['2.x.x', '2.1.3'],
- ['1.2.x', '1.2.3'],
- ['1.2.x || 2.x', '2.1.3'],
- ['1.2.x || 2.x', '1.2.3'],
- ['x', '1.2.3'],
- ['2.*.*', '2.1.3'],
- ['1.2.*', '1.2.3'],
- ['1.2.* || 2.*', '2.1.3'],
- ['1.2.* || 2.*', '1.2.3'],
- ['*', '1.2.3'],
- ['2', '2.1.2'],
- ['2.3', '2.3.1'],
- ['~2.4', '2.4.0'], // >=2.4.0 <2.5.0
- ['~2.4', '2.4.5'],
- ['~>3.2.1', '3.2.2'], // >=3.2.1 <3.3.0,
- ['~1', '1.2.3'], // >=1.0.0 <2.0.0
- ['~>1', '1.2.3'],
- ['~> 1', '1.2.3'],
- ['~1.0', '1.0.2'], // >=1.0.0 <1.1.0,
- ['~ 1.0', '1.0.2'],
- ['~ 1.0.3', '1.0.12'],
- ['>=1', '1.0.0'],
- ['>= 1', '1.0.0'],
- ['<1.2', '1.1.1'],
- ['< 1.2', '1.1.1'],
- ['~v0.5.4-pre', '0.5.5'],
- ['~v0.5.4-pre', '0.5.4'],
- ['=0.7.x', '0.7.2'],
- ['<=0.7.x', '0.7.2'],
- ['>=0.7.x', '0.7.2'],
- ['<=0.7.x', '0.6.2'],
- ['~1.2.1 >=1.2.3', '1.2.3'],
- ['~1.2.1 =1.2.3', '1.2.3'],
- ['~1.2.1 1.2.3', '1.2.3'],
- ['~1.2.1 >=1.2.3 1.2.3', '1.2.3'],
- ['~1.2.1 1.2.3 >=1.2.3', '1.2.3'],
- ['~1.2.1 1.2.3', '1.2.3'],
- ['>=1.2.1 1.2.3', '1.2.3'],
- ['1.2.3 >=1.2.1', '1.2.3'],
- ['>=1.2.3 >=1.2.1', '1.2.3'],
- ['>=1.2.1 >=1.2.3', '1.2.3'],
- ['>=1.2', '1.2.8'],
- ['^1.2.3', '1.8.1'],
- ['^0.1.2', '0.1.2'],
- ['^0.1', '0.1.2'],
- ['^1.2', '1.4.2'],
- ['^1.2 ^1', '1.4.2'],
- ['^1.2.3-alpha', '1.2.3-pre'],
- ['^1.2.0-alpha', '1.2.0-pre'],
- ['^0.0.1-alpha', '0.0.1-beta']
- ].forEach(function(v) {
- var range = v[0];
- var ver = v[1];
- var loose = v[2];
- t.ok(satisfies(ver, range, loose), range + ' satisfied by ' + ver);
- });
- t.end();
-});
-
-test('\nnegative range tests', function(t) {
- // [range, version]
- // version should not be included by range
- [['1.0.0 - 2.0.0', '2.2.3'],
- ['1.2.3+asdf - 2.4.3+asdf', '1.2.3-pre.2'],
- ['1.2.3+asdf - 2.4.3+asdf', '2.4.3-alpha'],
- ['^1.2.3+build', '2.0.0'],
- ['^1.2.3+build', '1.2.0'],
- ['^1.2.3', '1.2.3-pre'],
- ['^1.2', '1.2.0-pre'],
- ['>1.2', '1.3.0-beta'],
- ['<=1.2.3', '1.2.3-beta'],
- ['^1.2.3', '1.2.3-beta'],
- ['=0.7.x', '0.7.0-asdf'],
- ['>=0.7.x', '0.7.0-asdf'],
- ['1', '1.0.0beta', true],
- ['<1', '1.0.0beta', true],
- ['< 1', '1.0.0beta', true],
- ['1.0.0', '1.0.1'],
- ['>=1.0.0', '0.0.0'],
- ['>=1.0.0', '0.0.1'],
- ['>=1.0.0', '0.1.0'],
- ['>1.0.0', '0.0.1'],
- ['>1.0.0', '0.1.0'],
- ['<=2.0.0', '3.0.0'],
- ['<=2.0.0', '2.9999.9999'],
- ['<=2.0.0', '2.2.9'],
- ['<2.0.0', '2.9999.9999'],
- ['<2.0.0', '2.2.9'],
- ['>=0.1.97', 'v0.1.93', true],
- ['>=0.1.97', '0.1.93'],
- ['0.1.20 || 1.2.4', '1.2.3'],
- ['>=0.2.3 || <0.0.1', '0.0.3'],
- ['>=0.2.3 || <0.0.1', '0.2.2'],
- ['2.x.x', '1.1.3'],
- ['2.x.x', '3.1.3'],
- ['1.2.x', '1.3.3'],
- ['1.2.x || 2.x', '3.1.3'],
- ['1.2.x || 2.x', '1.1.3'],
- ['2.*.*', '1.1.3'],
- ['2.*.*', '3.1.3'],
- ['1.2.*', '1.3.3'],
- ['1.2.* || 2.*', '3.1.3'],
- ['1.2.* || 2.*', '1.1.3'],
- ['2', '1.1.2'],
- ['2.3', '2.4.1'],
- ['~2.4', '2.5.0'], // >=2.4.0 <2.5.0
- ['~2.4', '2.3.9'],
- ['~>3.2.1', '3.3.2'], // >=3.2.1 <3.3.0
- ['~>3.2.1', '3.2.0'], // >=3.2.1 <3.3.0
- ['~1', '0.2.3'], // >=1.0.0 <2.0.0
- ['~>1', '2.2.3'],
- ['~1.0', '1.1.0'], // >=1.0.0 <1.1.0
- ['<1', '1.0.0'],
- ['>=1.2', '1.1.1'],
- ['1', '2.0.0beta', true],
- ['~v0.5.4-beta', '0.5.4-alpha'],
- ['=0.7.x', '0.8.2'],
- ['>=0.7.x', '0.6.2'],
- ['<0.7.x', '0.7.2'],
- ['<1.2.3', '1.2.3-beta'],
- ['=1.2.3', '1.2.3-beta'],
- ['>1.2', '1.2.8'],
- ['^1.2.3', '2.0.0-alpha'],
- ['^1.2.3', '1.2.2'],
- ['^1.2', '1.1.9'],
- ['*', 'v1.2.3-foo', true],
- // invalid ranges never satisfied!
- ['blerg', '1.2.3'],
- ['git+https://user:password0123@github.com/foo', '123.0.0', true],
- ['^1.2.3', '2.0.0-pre']
- ].forEach(function(v) {
- var range = v[0];
- var ver = v[1];
- var loose = v[2];
- var found = satisfies(ver, range, loose);
- t.ok(!found, ver + ' not satisfied by ' + range);
- });
- t.end();
-});
-
-test('\nincrement versions test', function(t) {
-// [version, inc, result, identifier]
-// inc(version, inc) -> result
- [['1.2.3', 'major', '2.0.0'],
- ['1.2.3', 'minor', '1.3.0'],
- ['1.2.3', 'patch', '1.2.4'],
- ['1.2.3tag', 'major', '2.0.0', true],
- ['1.2.3-tag', 'major', '2.0.0'],
- ['1.2.3', 'fake', null],
- ['1.2.0-0', 'patch', '1.2.0'],
- ['fake', 'major', null],
- ['1.2.3-4', 'major', '2.0.0'],
- ['1.2.3-4', 'minor', '1.3.0'],
- ['1.2.3-4', 'patch', '1.2.3'],
- ['1.2.3-alpha.0.beta', 'major', '2.0.0'],
- ['1.2.3-alpha.0.beta', 'minor', '1.3.0'],
- ['1.2.3-alpha.0.beta', 'patch', '1.2.3'],
- ['1.2.4', 'prerelease', '1.2.5-0'],
- ['1.2.3-0', 'prerelease', '1.2.3-1'],
- ['1.2.3-alpha.0', 'prerelease', '1.2.3-alpha.1'],
- ['1.2.3-alpha.1', 'prerelease', '1.2.3-alpha.2'],
- ['1.2.3-alpha.2', 'prerelease', '1.2.3-alpha.3'],
- ['1.2.3-alpha.0.beta', 'prerelease', '1.2.3-alpha.1.beta'],
- ['1.2.3-alpha.1.beta', 'prerelease', '1.2.3-alpha.2.beta'],
- ['1.2.3-alpha.2.beta', 'prerelease', '1.2.3-alpha.3.beta'],
- ['1.2.3-alpha.10.0.beta', 'prerelease', '1.2.3-alpha.10.1.beta'],
- ['1.2.3-alpha.10.1.beta', 'prerelease', '1.2.3-alpha.10.2.beta'],
- ['1.2.3-alpha.10.2.beta', 'prerelease', '1.2.3-alpha.10.3.beta'],
- ['1.2.3-alpha.10.beta.0', 'prerelease', '1.2.3-alpha.10.beta.1'],
- ['1.2.3-alpha.10.beta.1', 'prerelease', '1.2.3-alpha.10.beta.2'],
- ['1.2.3-alpha.10.beta.2', 'prerelease', '1.2.3-alpha.10.beta.3'],
- ['1.2.3-alpha.9.beta', 'prerelease', '1.2.3-alpha.10.beta'],
- ['1.2.3-alpha.10.beta', 'prerelease', '1.2.3-alpha.11.beta'],
- ['1.2.3-alpha.11.beta', 'prerelease', '1.2.3-alpha.12.beta'],
- ['1.2.0', 'prepatch', '1.2.1-0'],
- ['1.2.0-1', 'prepatch', '1.2.1-0'],
- ['1.2.0', 'preminor', '1.3.0-0'],
- ['1.2.3-1', 'preminor', '1.3.0-0'],
- ['1.2.0', 'premajor', '2.0.0-0'],
- ['1.2.3-1', 'premajor', '2.0.0-0'],
- ['1.2.0-1', 'minor', '1.2.0'],
- ['1.0.0-1', 'major', '1.0.0'],
-
- ['1.2.3', 'major', '2.0.0', false, 'dev'],
- ['1.2.3', 'minor', '1.3.0', false, 'dev'],
- ['1.2.3', 'patch', '1.2.4', false, 'dev'],
- ['1.2.3tag', 'major', '2.0.0', true, 'dev'],
- ['1.2.3-tag', 'major', '2.0.0', false, 'dev'],
- ['1.2.3', 'fake', null, false, 'dev'],
- ['1.2.0-0', 'patch', '1.2.0', false, 'dev'],
- ['fake', 'major', null, false, 'dev'],
- ['1.2.3-4', 'major', '2.0.0', false, 'dev'],
- ['1.2.3-4', 'minor', '1.3.0', false, 'dev'],
- ['1.2.3-4', 'patch', '1.2.3', false, 'dev'],
- ['1.2.3-alpha.0.beta', 'major', '2.0.0', false, 'dev'],
- ['1.2.3-alpha.0.beta', 'minor', '1.3.0', false, 'dev'],
- ['1.2.3-alpha.0.beta', 'patch', '1.2.3', false, 'dev'],
- ['1.2.4', 'prerelease', '1.2.5-dev.0', false, 'dev'],
- ['1.2.3-0', 'prerelease', '1.2.3-dev.0', false, 'dev'],
- ['1.2.3-alpha.0', 'prerelease', '1.2.3-dev.0', false, 'dev'],
- ['1.2.3-alpha.0', 'prerelease', '1.2.3-alpha.1', false, 'alpha'],
- ['1.2.3-alpha.0.beta', 'prerelease', '1.2.3-dev.0', false, 'dev'],
- ['1.2.3-alpha.0.beta', 'prerelease', '1.2.3-alpha.1.beta', false, 'alpha'],
- ['1.2.3-alpha.10.0.beta', 'prerelease', '1.2.3-dev.0', false, 'dev'],
- ['1.2.3-alpha.10.0.beta', 'prerelease', '1.2.3-alpha.10.1.beta', false, 'alpha'],
- ['1.2.3-alpha.10.1.beta', 'prerelease', '1.2.3-alpha.10.2.beta', false, 'alpha'],
- ['1.2.3-alpha.10.2.beta', 'prerelease', '1.2.3-alpha.10.3.beta', false, 'alpha'],
- ['1.2.3-alpha.10.beta.0', 'prerelease', '1.2.3-dev.0', false, 'dev'],
- ['1.2.3-alpha.10.beta.0', 'prerelease', '1.2.3-alpha.10.beta.1', false, 'alpha'],
- ['1.2.3-alpha.10.beta.1', 'prerelease', '1.2.3-alpha.10.beta.2', false, 'alpha'],
- ['1.2.3-alpha.10.beta.2', 'prerelease', '1.2.3-alpha.10.beta.3', false, 'alpha'],
- ['1.2.3-alpha.9.beta', 'prerelease', '1.2.3-dev.0', false, 'dev'],
- ['1.2.3-alpha.9.beta', 'prerelease', '1.2.3-alpha.10.beta', false, 'alpha'],
- ['1.2.3-alpha.10.beta', 'prerelease', '1.2.3-alpha.11.beta', false, 'alpha'],
- ['1.2.3-alpha.11.beta', 'prerelease', '1.2.3-alpha.12.beta', false, 'alpha'],
- ['1.2.0', 'prepatch', '1.2.1-dev.0', 'dev'],
- ['1.2.0-1', 'prepatch', '1.2.1-dev.0', 'dev'],
- ['1.2.0', 'preminor', '1.3.0-dev.0', 'dev'],
- ['1.2.3-1', 'preminor', '1.3.0-dev.0', 'dev'],
- ['1.2.0', 'premajor', '2.0.0-dev.0', 'dev'],
- ['1.2.3-1', 'premajor', '2.0.0-dev.0', 'dev'],
- ['1.2.0-1', 'minor', '1.2.0', 'dev'],
- ['1.0.0-1', 'major', '1.0.0', 'dev'],
- ['1.2.3-dev.bar', 'prerelease', '1.2.3-dev.0', false, 'dev']
-
- ].forEach(function(v) {
- var pre = v[0];
- var what = v[1];
- var wanted = v[2];
- var loose = v[3];
- var id = v[4];
- var found = inc(pre, what, loose, id);
- var cmd = 'inc(' + pre + ', ' + what + ', ' + id + ')';
- t.equal(found, wanted, cmd + ' === ' + wanted);
- });
-
- t.end();
-});
-
-test('\ndiff versions test', function(t) {
-// [version1, version2, result]
-// diff(version1, version2) -> result
- [['1.2.3', '0.2.3', 'major'],
- ['1.4.5', '0.2.3', 'major'],
- ['1.2.3', '2.0.0-pre', 'premajor'],
- ['1.2.3', '1.3.3', 'minor'],
- ['1.0.1', '1.1.0-pre', 'preminor'],
- ['1.2.3', '1.2.4', 'patch'],
- ['1.2.3', '1.2.4-pre', 'prepatch'],
- ['0.0.1', '0.0.1-pre', 'prerelease'],
- ['0.0.1', '0.0.1-pre-2', 'prerelease'],
- ['1.1.0', '1.1.0-pre', 'prerelease'],
- ['1.1.0-pre-1', '1.1.0-pre-2', 'prerelease'],
- ['1.0.0', '1.0.0', null]
-
- ].forEach(function(v) {
- var version1 = v[0];
- var version2 = v[1];
- var wanted = v[2];
- var found = diff(version1, version2);
- var cmd = 'diff(' + version1 + ', ' + version2 + ')';
- t.equal(found, wanted, cmd + ' === ' + wanted);
- });
-
- t.end();
-});
-
-test('\nvalid range test', function(t) {
- // [range, result]
- // validRange(range) -> result
- // translate ranges into their canonical form
- [['1.0.0 - 2.0.0', '>=1.0.0 <=2.0.0'],
- ['1.0.0', '1.0.0'],
- ['>=*', '*'],
- ['', '*'],
- ['*', '*'],
- ['*', '*'],
- ['>=1.0.0', '>=1.0.0'],
- ['>1.0.0', '>1.0.0'],
- ['<=2.0.0', '<=2.0.0'],
- ['1', '>=1.0.0 <2.0.0'],
- ['<=2.0.0', '<=2.0.0'],
- ['<=2.0.0', '<=2.0.0'],
- ['<2.0.0', '<2.0.0'],
- ['<2.0.0', '<2.0.0'],
- ['>= 1.0.0', '>=1.0.0'],
- ['>= 1.0.0', '>=1.0.0'],
- ['>= 1.0.0', '>=1.0.0'],
- ['> 1.0.0', '>1.0.0'],
- ['> 1.0.0', '>1.0.0'],
- ['<= 2.0.0', '<=2.0.0'],
- ['<= 2.0.0', '<=2.0.0'],
- ['<= 2.0.0', '<=2.0.0'],
- ['< 2.0.0', '<2.0.0'],
- ['< 2.0.0', '<2.0.0'],
- ['>=0.1.97', '>=0.1.97'],
- ['>=0.1.97', '>=0.1.97'],
- ['0.1.20 || 1.2.4', '0.1.20||1.2.4'],
- ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1'],
- ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1'],
- ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1'],
- ['||', '||'],
- ['2.x.x', '>=2.0.0 <3.0.0'],
- ['1.2.x', '>=1.2.0 <1.3.0'],
- ['1.2.x || 2.x', '>=1.2.0 <1.3.0||>=2.0.0 <3.0.0'],
- ['1.2.x || 2.x', '>=1.2.0 <1.3.0||>=2.0.0 <3.0.0'],
- ['x', '*'],
- ['2.*.*', '>=2.0.0 <3.0.0'],
- ['1.2.*', '>=1.2.0 <1.3.0'],
- ['1.2.* || 2.*', '>=1.2.0 <1.3.0||>=2.0.0 <3.0.0'],
- ['*', '*'],
- ['2', '>=2.0.0 <3.0.0'],
- ['2.3', '>=2.3.0 <2.4.0'],
- ['~2.4', '>=2.4.0 <2.5.0'],
- ['~2.4', '>=2.4.0 <2.5.0'],
- ['~>3.2.1', '>=3.2.1 <3.3.0'],
- ['~1', '>=1.0.0 <2.0.0'],
- ['~>1', '>=1.0.0 <2.0.0'],
- ['~> 1', '>=1.0.0 <2.0.0'],
- ['~1.0', '>=1.0.0 <1.1.0'],
- ['~ 1.0', '>=1.0.0 <1.1.0'],
- ['^0', '>=0.0.0 <1.0.0'],
- ['^ 1', '>=1.0.0 <2.0.0'],
- ['^0.1', '>=0.1.0 <0.2.0'],
- ['^1.0', '>=1.0.0 <2.0.0'],
- ['^1.2', '>=1.2.0 <2.0.0'],
- ['^0.0.1', '>=0.0.1 <0.0.2'],
- ['^0.0.1-beta', '>=0.0.1-beta <0.0.2'],
- ['^0.1.2', '>=0.1.2 <0.2.0'],
- ['^1.2.3', '>=1.2.3 <2.0.0'],
- ['^1.2.3-beta.4', '>=1.2.3-beta.4 <2.0.0'],
- ['<1', '<1.0.0'],
- ['< 1', '<1.0.0'],
- ['>=1', '>=1.0.0'],
- ['>= 1', '>=1.0.0'],
- ['<1.2', '<1.2.0'],
- ['< 1.2', '<1.2.0'],
- ['1', '>=1.0.0 <2.0.0'],
- ['>01.02.03', '>1.2.3', true],
- ['>01.02.03', null],
- ['~1.2.3beta', '>=1.2.3-beta <1.3.0', true],
- ['~1.2.3beta', null],
- ['^ 1.2 ^ 1', '>=1.2.0 <2.0.0 >=1.0.0 <2.0.0']
- ].forEach(function(v) {
- var pre = v[0];
- var wanted = v[1];
- var loose = v[2];
- var found = validRange(pre, loose);
-
- t.equal(found, wanted, 'validRange(' + pre + ') === ' + wanted);
- });
-
- t.end();
-});
-
-test('\ncomparators test', function(t) {
- // [range, comparators]
- // turn range into a set of individual comparators
- [['1.0.0 - 2.0.0', [['>=1.0.0', '<=2.0.0']]],
- ['1.0.0', [['1.0.0']]],
- ['>=*', [['']]],
- ['', [['']]],
- ['*', [['']]],
- ['*', [['']]],
- ['>=1.0.0', [['>=1.0.0']]],
- ['>=1.0.0', [['>=1.0.0']]],
- ['>=1.0.0', [['>=1.0.0']]],
- ['>1.0.0', [['>1.0.0']]],
- ['>1.0.0', [['>1.0.0']]],
- ['<=2.0.0', [['<=2.0.0']]],
- ['1', [['>=1.0.0', '<2.0.0']]],
- ['<=2.0.0', [['<=2.0.0']]],
- ['<=2.0.0', [['<=2.0.0']]],
- ['<2.0.0', [['<2.0.0']]],
- ['<2.0.0', [['<2.0.0']]],
- ['>= 1.0.0', [['>=1.0.0']]],
- ['>= 1.0.0', [['>=1.0.0']]],
- ['>= 1.0.0', [['>=1.0.0']]],
- ['> 1.0.0', [['>1.0.0']]],
- ['> 1.0.0', [['>1.0.0']]],
- ['<= 2.0.0', [['<=2.0.0']]],
- ['<= 2.0.0', [['<=2.0.0']]],
- ['<= 2.0.0', [['<=2.0.0']]],
- ['< 2.0.0', [['<2.0.0']]],
- ['<\t2.0.0', [['<2.0.0']]],
- ['>=0.1.97', [['>=0.1.97']]],
- ['>=0.1.97', [['>=0.1.97']]],
- ['0.1.20 || 1.2.4', [['0.1.20'], ['1.2.4']]],
- ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1']]],
- ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1']]],
- ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1']]],
- ['||', [[''], ['']]],
- ['2.x.x', [['>=2.0.0', '<3.0.0']]],
- ['1.2.x', [['>=1.2.0', '<1.3.0']]],
- ['1.2.x || 2.x', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]],
- ['1.2.x || 2.x', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]],
- ['x', [['']]],
- ['2.*.*', [['>=2.0.0', '<3.0.0']]],
- ['1.2.*', [['>=1.2.0', '<1.3.0']]],
- ['1.2.* || 2.*', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]],
- ['1.2.* || 2.*', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]],
- ['*', [['']]],
- ['2', [['>=2.0.0', '<3.0.0']]],
- ['2.3', [['>=2.3.0', '<2.4.0']]],
- ['~2.4', [['>=2.4.0', '<2.5.0']]],
- ['~2.4', [['>=2.4.0', '<2.5.0']]],
- ['~>3.2.1', [['>=3.2.1', '<3.3.0']]],
- ['~1', [['>=1.0.0', '<2.0.0']]],
- ['~>1', [['>=1.0.0', '<2.0.0']]],
- ['~> 1', [['>=1.0.0', '<2.0.0']]],
- ['~1.0', [['>=1.0.0', '<1.1.0']]],
- ['~ 1.0', [['>=1.0.0', '<1.1.0']]],
- ['~ 1.0.3', [['>=1.0.3', '<1.1.0']]],
- ['~> 1.0.3', [['>=1.0.3', '<1.1.0']]],
- ['<1', [['<1.0.0']]],
- ['< 1', [['<1.0.0']]],
- ['>=1', [['>=1.0.0']]],
- ['>= 1', [['>=1.0.0']]],
- ['<1.2', [['<1.2.0']]],
- ['< 1.2', [['<1.2.0']]],
- ['1', [['>=1.0.0', '<2.0.0']]],
- ['1 2', [['>=1.0.0', '<2.0.0', '>=2.0.0', '<3.0.0']]],
- ['1.2 - 3.4.5', [['>=1.2.0', '<=3.4.5']]],
- ['1.2.3 - 3.4', [['>=1.2.3', '<3.5.0']]],
- ['1.2.3 - 3', [['>=1.2.3', '<4.0.0']]],
- ['>*', [['<0.0.0']]],
- ['<*', [['<0.0.0']]]
- ].forEach(function(v) {
- var pre = v[0];
- var wanted = v[1];
- var found = toComparators(v[0]);
- var jw = JSON.stringify(wanted);
- t.equivalent(found, wanted, 'toComparators(' + pre + ') === ' + jw);
- });
-
- t.end();
-});
-
-test('\ninvalid version numbers', function(t) {
- ['1.2.3.4',
- 'NOT VALID',
- 1.2,
- null,
- 'Infinity.NaN.Infinity'
- ].forEach(function(v) {
- t.throws(function() {
- new SemVer(v);
- }, {name:'TypeError', message:'Invalid Version: ' + v});
- });
-
- t.end();
-});
-
-test('\nstrict vs loose version numbers', function(t) {
- [['=1.2.3', '1.2.3'],
- ['01.02.03', '1.2.3'],
- ['1.2.3-beta.01', '1.2.3-beta.1'],
- [' =1.2.3', '1.2.3'],
- ['1.2.3foo', '1.2.3-foo']
- ].forEach(function(v) {
- var loose = v[0];
- var strict = v[1];
- t.throws(function() {
- new SemVer(loose);
- });
- var lv = new SemVer(loose, true);
- t.equal(lv.version, strict);
- t.ok(eq(loose, strict, true));
- t.throws(function() {
- eq(loose, strict);
- });
- t.throws(function() {
- new SemVer(strict).compare(loose);
- });
- });
- t.end();
-});
-
-test('\nstrict vs loose ranges', function(t) {
- [['>=01.02.03', '>=1.2.3'],
- ['~1.02.03beta', '>=1.2.3-beta <1.3.0']
- ].forEach(function(v) {
- var loose = v[0];
- var comps = v[1];
- t.throws(function() {
- new Range(loose);
- });
- t.equal(new Range(loose, true).range, comps);
- });
- t.end();
-});
-
-test('\nmax satisfying', function(t) {
- [[['1.2.3', '1.2.4'], '1.2', '1.2.4'],
- [['1.2.4', '1.2.3'], '1.2', '1.2.4'],
- [['1.2.3', '1.2.4', '1.2.5', '1.2.6'], '~1.2.3', '1.2.6'],
- [['1.1.0', '1.2.0', '1.2.1', '1.3.0', '2.0.0b1', '2.0.0b2', '2.0.0b3', '2.0.0', '2.1.0'], '~2.0.0', '2.0.0', true]
- ].forEach(function(v) {
- var versions = v[0];
- var range = v[1];
- var expect = v[2];
- var loose = v[3];
- var actual = semver.maxSatisfying(versions, range, loose);
- t.equal(actual, expect);
- });
- t.end();
-});
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/test/ltr.js b/deps/npm/node_modules/node-gyp/node_modules/semver/test/ltr.js
deleted file mode 100644
index 0f7167d6589258..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/semver/test/ltr.js
+++ /dev/null
@@ -1,181 +0,0 @@
-var tap = require('tap');
-var test = tap.test;
-var semver = require('../semver.js');
-var ltr = semver.ltr;
-
-test('\nltr tests', function(t) {
- // [range, version, loose]
- // Version should be less than range
- [
- ['~1.2.2', '1.2.1'],
- ['~0.6.1-1', '0.6.1-0'],
- ['1.0.0 - 2.0.0', '0.0.1'],
- ['1.0.0-beta.2', '1.0.0-beta.1'],
- ['1.0.0', '0.0.0'],
- ['>=2.0.0', '1.1.1'],
- ['>=2.0.0', '1.2.9'],
- ['>2.0.0', '2.0.0'],
- ['0.1.20 || 1.2.4', '0.1.5'],
- ['2.x.x', '1.0.0'],
- ['1.2.x', '1.1.0'],
- ['1.2.x || 2.x', '1.0.0'],
- ['2.*.*', '1.0.1'],
- ['1.2.*', '1.1.3'],
- ['1.2.* || 2.*', '1.1.9999'],
- ['2', '1.0.0'],
- ['2.3', '2.2.2'],
- ['~2.4', '2.3.0'], // >=2.4.0 <2.5.0
- ['~2.4', '2.3.5'],
- ['~>3.2.1', '3.2.0'], // >=3.2.1 <3.3.0
- ['~1', '0.2.3'], // >=1.0.0 <2.0.0
- ['~>1', '0.2.4'],
- ['~> 1', '0.2.3'],
- ['~1.0', '0.1.2'], // >=1.0.0 <1.1.0
- ['~ 1.0', '0.1.0'],
- ['>1.2', '1.2.0'],
- ['> 1.2', '1.2.1'],
- ['1', '0.0.0beta', true],
- ['~v0.5.4-pre', '0.5.4-alpha'],
- ['~v0.5.4-pre', '0.5.4-alpha'],
- ['=0.7.x', '0.6.0'],
- ['=0.7.x', '0.6.0-asdf'],
- ['>=0.7.x', '0.6.0'],
- ['~1.2.2', '1.2.1'],
- ['1.0.0 - 2.0.0', '0.2.3'],
- ['1.0.0', '0.0.1'],
- ['>=2.0.0', '1.0.0'],
- ['>=2.0.0', '1.9999.9999'],
- ['>=2.0.0', '1.2.9'],
- ['>2.0.0', '2.0.0'],
- ['>2.0.0', '1.2.9'],
- ['2.x.x', '1.1.3'],
- ['1.2.x', '1.1.3'],
- ['1.2.x || 2.x', '1.1.3'],
- ['2.*.*', '1.1.3'],
- ['1.2.*', '1.1.3'],
- ['1.2.* || 2.*', '1.1.3'],
- ['2', '1.9999.9999'],
- ['2.3', '2.2.1'],
- ['~2.4', '2.3.0'], // >=2.4.0 <2.5.0
- ['~>3.2.1', '2.3.2'], // >=3.2.1 <3.3.0
- ['~1', '0.2.3'], // >=1.0.0 <2.0.0
- ['~>1', '0.2.3'],
- ['~1.0', '0.0.0'], // >=1.0.0 <1.1.0
- ['>1', '1.0.0'],
- ['2', '1.0.0beta', true],
- ['>1', '1.0.0beta', true],
- ['> 1', '1.0.0beta', true],
- ['=0.7.x', '0.6.2'],
- ['=0.7.x', '0.7.0-asdf'],
- ['^1', '1.0.0-0'],
- ['>=0.7.x', '0.7.0-asdf'],
- ['1', '1.0.0beta', true],
- ['>=0.7.x', '0.6.2'],
- ['>1.2.3', '1.3.0-alpha']
- ].forEach(function(tuple) {
- var range = tuple[0];
- var version = tuple[1];
- var loose = tuple[2] || false;
- var msg = 'ltr(' + version + ', ' + range + ', ' + loose + ')';
- t.ok(ltr(version, range, loose), msg);
- });
- t.end();
-});
-
-test('\nnegative ltr tests', function(t) {
- // [range, version, loose]
- // Version should NOT be less than range
- [
- ['~ 1.0', '1.1.0'],
- ['~0.6.1-1', '0.6.1-1'],
- ['1.0.0 - 2.0.0', '1.2.3'],
- ['1.0.0 - 2.0.0', '2.9.9'],
- ['1.0.0', '1.0.0'],
- ['>=*', '0.2.4'],
- ['', '1.0.0', true],
- ['*', '1.2.3'],
- ['>=1.0.0', '1.0.0'],
- ['>=1.0.0', '1.0.1'],
- ['>=1.0.0', '1.1.0'],
- ['>1.0.0', '1.0.1'],
- ['>1.0.0', '1.1.0'],
- ['<=2.0.0', '2.0.0'],
- ['<=2.0.0', '1.9999.9999'],
- ['<=2.0.0', '0.2.9'],
- ['<2.0.0', '1.9999.9999'],
- ['<2.0.0', '0.2.9'],
- ['>= 1.0.0', '1.0.0'],
- ['>= 1.0.0', '1.0.1'],
- ['>= 1.0.0', '1.1.0'],
- ['> 1.0.0', '1.0.1'],
- ['> 1.0.0', '1.1.0'],
- ['<= 2.0.0', '2.0.0'],
- ['<= 2.0.0', '1.9999.9999'],
- ['<= 2.0.0', '0.2.9'],
- ['< 2.0.0', '1.9999.9999'],
- ['<\t2.0.0', '0.2.9'],
- ['>=0.1.97', 'v0.1.97'],
- ['>=0.1.97', '0.1.97'],
- ['0.1.20 || 1.2.4', '1.2.4'],
- ['0.1.20 || >1.2.4', '1.2.4'],
- ['0.1.20 || 1.2.4', '1.2.3'],
- ['0.1.20 || 1.2.4', '0.1.20'],
- ['>=0.2.3 || <0.0.1', '0.0.0'],
- ['>=0.2.3 || <0.0.1', '0.2.3'],
- ['>=0.2.3 || <0.0.1', '0.2.4'],
- ['||', '1.3.4'],
- ['2.x.x', '2.1.3'],
- ['1.2.x', '1.2.3'],
- ['1.2.x || 2.x', '2.1.3'],
- ['1.2.x || 2.x', '1.2.3'],
- ['x', '1.2.3'],
- ['2.*.*', '2.1.3'],
- ['1.2.*', '1.2.3'],
- ['1.2.* || 2.*', '2.1.3'],
- ['1.2.* || 2.*', '1.2.3'],
- ['1.2.* || 2.*', '1.2.3'],
- ['*', '1.2.3'],
- ['2', '2.1.2'],
- ['2.3', '2.3.1'],
- ['~2.4', '2.4.0'], // >=2.4.0 <2.5.0
- ['~2.4', '2.4.5'],
- ['~>3.2.1', '3.2.2'], // >=3.2.1 <3.3.0
- ['~1', '1.2.3'], // >=1.0.0 <2.0.0
- ['~>1', '1.2.3'],
- ['~> 1', '1.2.3'],
- ['~1.0', '1.0.2'], // >=1.0.0 <1.1.0
- ['~ 1.0', '1.0.2'],
- ['>=1', '1.0.0'],
- ['>= 1', '1.0.0'],
- ['<1.2', '1.1.1'],
- ['< 1.2', '1.1.1'],
- ['~v0.5.4-pre', '0.5.5'],
- ['~v0.5.4-pre', '0.5.4'],
- ['=0.7.x', '0.7.2'],
- ['>=0.7.x', '0.7.2'],
- ['<=0.7.x', '0.6.2'],
- ['>0.2.3 >0.2.4 <=0.2.5', '0.2.5'],
- ['>=0.2.3 <=0.2.4', '0.2.4'],
- ['1.0.0 - 2.0.0', '2.0.0'],
- ['^3.0.0', '4.0.0'],
- ['^1.0.0 || ~2.0.1', '2.0.0'],
- ['^0.1.0 || ~3.0.1 || 5.0.0', '3.2.0'],
- ['^0.1.0 || ~3.0.1 || 5.0.0', '1.0.0beta', true],
- ['^0.1.0 || ~3.0.1 || 5.0.0', '5.0.0-0', true],
- ['^0.1.0 || ~3.0.1 || >4 <=5.0.0', '3.5.0'],
- ['^1.0.0alpha', '1.0.0beta', true],
- ['~1.0.0alpha', '1.0.0beta', true],
- ['^1.0.0-alpha', '1.0.0beta', true],
- ['~1.0.0-alpha', '1.0.0beta', true],
- ['^1.0.0-alpha', '1.0.0-beta'],
- ['~1.0.0-alpha', '1.0.0-beta'],
- ['=0.1.0', '1.0.0']
- ].forEach(function(tuple) {
- var range = tuple[0];
- var version = tuple[1];
- var loose = tuple[2] || false;
- var msg = '!ltr(' + version + ', ' + range + ', ' + loose + ')';
- t.notOk(ltr(version, range, loose), msg);
- });
- t.end();
-});
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/test/major-minor-patch.js b/deps/npm/node_modules/node-gyp/node_modules/semver/test/major-minor-patch.js
deleted file mode 100644
index e9d4039c8be629..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/semver/test/major-minor-patch.js
+++ /dev/null
@@ -1,72 +0,0 @@
-var tap = require('tap');
-var test = tap.test;
-var semver = require('../semver.js');
-
-test('\nmajor tests', function(t) {
- // [range, version]
- // Version should be detectable despite extra characters
- [
- ['1.2.3', 1],
- [' 1.2.3 ', 1],
- [' 2.2.3-4 ', 2],
- [' 3.2.3-pre ', 3],
- ['v5.2.3', 5],
- [' v8.2.3 ', 8],
- ['\t13.2.3', 13],
- ['=21.2.3', 21, true],
- ['v=34.2.3', 34, true]
- ].forEach(function(tuple) {
- var range = tuple[0];
- var version = tuple[1];
- var loose = tuple[2] || false;
- var msg = 'major(' + range + ') = ' + version;
- t.equal(semver.major(range, loose), version, msg);
- });
- t.end();
-});
-
-test('\nminor tests', function(t) {
- // [range, version]
- // Version should be detectable despite extra characters
- [
- ['1.1.3', 1],
- [' 1.1.3 ', 1],
- [' 1.2.3-4 ', 2],
- [' 1.3.3-pre ', 3],
- ['v1.5.3', 5],
- [' v1.8.3 ', 8],
- ['\t1.13.3', 13],
- ['=1.21.3', 21, true],
- ['v=1.34.3', 34, true]
- ].forEach(function(tuple) {
- var range = tuple[0];
- var version = tuple[1];
- var loose = tuple[2] || false;
- var msg = 'minor(' + range + ') = ' + version;
- t.equal(semver.minor(range, loose), version, msg);
- });
- t.end();
-});
-
-test('\npatch tests', function(t) {
- // [range, version]
- // Version should be detectable despite extra characters
- [
- ['1.2.1', 1],
- [' 1.2.1 ', 1],
- [' 1.2.2-4 ', 2],
- [' 1.2.3-pre ', 3],
- ['v1.2.5', 5],
- [' v1.2.8 ', 8],
- ['\t1.2.13', 13],
- ['=1.2.21', 21, true],
- ['v=1.2.34', 34, true]
- ].forEach(function(tuple) {
- var range = tuple[0];
- var version = tuple[1];
- var loose = tuple[2] || false;
- var msg = 'patch(' + range + ') = ' + version;
- t.equal(semver.patch(range, loose), version, msg);
- });
- t.end();
-});
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/test/no-module.js b/deps/npm/node_modules/node-gyp/node_modules/semver/test/no-module.js
deleted file mode 100644
index 274f63d1bbc823..00000000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/semver/test/no-module.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var tap = require('tap');
-var test = tap.test;
-
-test('no module system', function(t) {
- var fs = require('fs');
- var vm = require('vm');
- var head = fs.readFileSync(require.resolve('../head.js.txt'), 'utf8');
- var src = fs.readFileSync(require.resolve('../'), 'utf8');
- var foot = fs.readFileSync(require.resolve('../foot.js.txt'), 'utf8');
- vm.runInThisContext(head + src + foot, 'semver.js');
-
- // just some basic poking to see if it did some stuff
- t.type(global.semver, 'object');
- t.type(global.semver.SemVer, 'function');
- t.type(global.semver.Range, 'function');
- t.ok(global.semver.satisfies('1.2.3', '1.2'));
- t.end();
-});
diff --git a/deps/npm/node_modules/node-gyp/node_modules/tar/package.json b/deps/npm/node_modules/node-gyp/node_modules/tar/package.json
index 5aa78aec301062..7fab5394cd6ec2 100644
--- a/deps/npm/node_modules/node-gyp/node_modules/tar/package.json
+++ b/deps/npm/node_modules/node-gyp/node_modules/tar/package.json
@@ -56,5 +56,6 @@
"tarball": "http://registry.npmjs.org/tar/-/tar-1.0.3.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/tar/-/tar-1.0.3.tgz"
+ "_resolved": "https://registry.npmjs.org/tar/-/tar-1.0.3.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/node-gyp/package.json b/deps/npm/node_modules/node-gyp/package.json
index 2191b9c55dabc7..76fc168f2d955d 100644
--- a/deps/npm/node_modules/node-gyp/package.json
+++ b/deps/npm/node_modules/node-gyp/package.json
@@ -11,7 +11,7 @@
"bindings",
"gyp"
],
- "version": "2.0.2",
+ "version": "3.0.3",
"installVersion": 9,
"author": {
"name": "Nathan Rajlich",
@@ -20,7 +20,7 @@
},
"repository": {
"type": "git",
- "url": "git://github.com/TooTallNate/node-gyp.git"
+ "url": "git://github.com/nodejs/node-gyp.git"
},
"preferGlobal": true,
"bin": {
@@ -30,7 +30,7 @@
"dependencies": {
"fstream": "^1.0.0",
"glob": "3 || 4",
- "graceful-fs": "3",
+ "graceful-fs": "^4.1.2",
"minimatch": "1",
"mkdirp": "^0.5.0",
"nopt": "2 || 3",
@@ -39,27 +39,32 @@
"path-array": "^1.0.0",
"request": "2",
"rimraf": "2",
- "semver": "2.x || 3.x || 4",
+ "semver": "2.x || 3.x || 4 || 5",
"tar": "^1.0.0",
"which": "1"
},
"engines": {
"node": ">= 0.8.0"
},
- "gitHead": "f403e263b87f6a8ad130add248c90565d49427f7",
+ "devDependencies": {
+ "tape": "~4.2.0"
+ },
+ "scripts": {
+ "test": "tape test/test-*"
+ },
+ "gitHead": "d6b03851d366c7fa78e7d2f57c61bb074ea45ea3",
"bugs": {
- "url": "https://github.com/TooTallNate/node-gyp/issues"
+ "url": "https://github.com/nodejs/node-gyp/issues"
},
- "homepage": "https://github.com/TooTallNate/node-gyp#readme",
- "_id": "node-gyp@2.0.2",
- "scripts": {},
- "_shasum": "6350760aaba74ba108fdc368afd8864e14b6ad91",
- "_from": "node-gyp@latest",
- "_npmVersion": "2.11.2",
- "_nodeVersion": "0.12.6",
+ "homepage": "https://github.com/nodejs/node-gyp",
+ "_id": "node-gyp@3.0.3",
+ "_shasum": "9b004219f4fa9efbfd78c5fc674aa12e58fb8694",
+ "_from": "node-gyp@3.0.3",
+ "_npmVersion": "2.14.2",
+ "_nodeVersion": "4.0.0",
"_npmUser": {
- "name": "tootallnate",
- "email": "nathan@tootallnate.net"
+ "name": "rvagg",
+ "email": "rod@vagg.org"
},
"maintainers": [
{
@@ -67,18 +72,27 @@
"email": "nathan@tootallnate.net"
},
{
- "name": "tootallnate",
- "email": "nathan@tootallnate.net"
+ "name": "fishrock123",
+ "email": "fishrock123@rocketmail.com"
},
{
"name": "isaacs",
- "email": "i@izs.me"
+ "email": "isaacs@npmjs.com"
+ },
+ {
+ "name": "rvagg",
+ "email": "rod@vagg.org"
+ },
+ {
+ "name": "tootallnate",
+ "email": "nathan@tootallnate.net"
}
],
"dist": {
- "shasum": "6350760aaba74ba108fdc368afd8864e14b6ad91",
- "tarball": "http://registry.npmjs.org/node-gyp/-/node-gyp-2.0.2.tgz"
+ "shasum": "9b004219f4fa9efbfd78c5fc674aa12e58fb8694",
+ "tarball": "http://registry.npmjs.org/node-gyp/-/node-gyp-3.0.3.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-2.0.2.tgz"
+ "_resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.0.3.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/node-gyp/test/docker.sh b/deps/npm/node_modules/node-gyp/test/docker.sh
new file mode 100755
index 00000000000000..b64b79a3769186
--- /dev/null
+++ b/deps/npm/node_modules/node-gyp/test/docker.sh
@@ -0,0 +1,143 @@
+#!/bin/bash
+
+#set -e
+
+test_node_versions="0.8.28 0.10.40 0.12.7"
+test_iojs_versions="1.8.4 2.4.0 3.3.0"
+
+__dirname="$(CDPATH= cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+dot_node_gyp=${__dirname}/.node-gyp/
+
+# borrows from https://github.com/rvagg/dnt/
+
+# Simple setup function for a container:
+# setup_container(image id, base image, commands to run to set up)
+setup_container() {
+ local container_id="$1"
+ local base_container="$2"
+ local run_cmd="$3"
+
+ # Does this image exist? If yes, ignore
+ docker inspect "$container_id" &> /dev/null
+ if [[ $? -eq 0 ]]; then
+ echo "Found existing container [$container_id]"
+ else
+ # No such image, so make it
+ echo "Did not find container [$container_id], creating..."
+ docker run -i $base_container /bin/bash -c "$run_cmd"
+ sleep 2
+ docker commit $(docker ps -l -q) $container_id
+ fi
+}
+
+# Run tests inside each of the versioned containers, copy cwd into npm's copy of node-gyp
+# so it'll be invoked by npm when a compile is needed
+# run_tests(version, test-commands)
+run_tests() {
+ local version="$1"
+ local run_cmd="$2"
+
+ run_cmd="rsync -aAXx --delete --exclude .git --exclude build /node-gyp-src/ /usr/lib/node_modules/npm/node_modules/node-gyp/;
+ /bin/su -s /bin/bash node-gyp -c 'cd && ${run_cmd}'"
+
+ rm -rf $dot_node_gyp
+
+ docker run \
+ --rm -i \
+ -v ~/.npm/:/node-gyp/.npm/ \
+ -v ${dot_node_gyp}:/node-gyp/.node-gyp/ \
+ -v $(pwd):/node-gyp-src/:ro \
+ node-gyp-test/${version} /bin/bash -c "${run_cmd}"
+}
+
+# A base image with build tools and a user account
+setup_container "node-gyp-test/base" "ubuntu:14.04" "
+ apt-get update &&
+ apt-get install -y build-essential python git rsync curl &&
+ adduser --gecos node-gyp --home /node-gyp/ --disabled-login node-gyp &&
+ echo "node-gyp:node-gyp" | chpasswd
+"
+
+# An image on top of the base containing clones of repos we want to use for testing
+setup_container "node-gyp-test/clones" "node-gyp-test/base" "
+ cd /node-gyp/ && git clone https://github.com/justmoon/node-bignum.git &&
+ cd /node-gyp/ && git clone https://github.com/bnoordhuis/node-buffertools.git &&
+ chown -R node-gyp.node-gyp /node-gyp/
+"
+
+# An image for each of the node versions we want to test with that version installed and the latest npm
+for v in $test_node_versions; do
+ setup_container "node-gyp-test/${v}" "node-gyp-test/clones" "
+ curl -sL https://nodejs.org/dist/v${v}/node-v${v}-linux-x64.tar.gz | tar -zxv --strip-components=1 -C /usr/ &&
+ npm install npm@latest -g &&
+ node -v && npm -v
+ "
+done
+
+# An image for each of the io.js versions we want to test with that version installed and the latest npm
+for v in $test_iojs_versions; do
+ setup_container "node-gyp-test/${v}" "node-gyp-test/clones" "
+ curl -sL https://iojs.org/dist/v${v}/iojs-v${v}-linux-x64.tar.gz | tar -zxv --strip-components=1 -C /usr/ &&
+ npm install npm@latest -g &&
+ node -v && npm -v
+ "
+done
+
+# Run the tests for all of the test images we've created,
+# we should see node-gyp doing its download, configure and run thing
+# _NOTE: bignum doesn't compile on 0.8 currently so it'll fail for that version only_
+for v in $test_node_versions $test_iojs_versions; do
+ run_tests $v "
+ cd node-buffertools && npm install --loglevel=info && npm test && cd
+ "
+ # removed for now, too noisy: cd node-bignum && npm install --loglevel=info && npm test
+done
+
+# Test use of --target=x.y.z to compile against alternate versions
+test_download_node_version() {
+ local run_with_ver="$1"
+ local expected_dir="$2"
+ local expected_ver="$3"
+ run_tests $run_with_ver "cd node-buffertools && npm install --loglevel=info --target=${expected_ver}"
+ local node_ver=$(cat "${dot_node_gyp}${expected_dir}/node_version.h" | grep '#define NODE_\w*_VERSION [0-9]*$')
+ node_ver=$(echo $node_ver | sed 's/#define NODE_[A-Z]*_VERSION //g' | sed 's/ /./g')
+ if [ "X$(echo $node_ver)" != "X${expected_ver}" ]; then
+ echo "Did not download v${expected_ver} using --target, instead got: $(echo $node_ver)"
+ exit 1
+ fi
+ echo "Verified correct download of [v${node_ver}]"
+}
+
+test_download_node_version "0.12.7" "0.10.30/src" "0.10.30"
+test_download_node_version "3.3.0" "iojs-1.8.4/src" "1.8.4"
+# should download the headers file
+test_download_node_version "3.3.0" "iojs-3.2.0/include/node" "3.2.0"
+
+# TODO: test --dist-url by starting up a localhost server and serving up tarballs
+
+# testing --dist-url, using simple-proxy.js to make localhost work as a distribution
+# point for tarballs
+# we can test whether it uses the proxy because after 2 connections the proxy will
+# die and therefore should not be running at the end of the test, `nc` can tell us this
+run_tests "3.3.0" "
+ (node /node-gyp-src/test/simple-proxy.js 8080 /foobar/ https://iojs.org/dist/ &) &&
+ cd node-buffertools &&
+ /node-gyp-src/bin/node-gyp.js --loglevel=info --dist-url=http://localhost:8080/foobar/ rebuild &&
+ nc -z localhost 8080 && echo -e \"\\n\\n\\033[31mFAILED TO USE LOCAL PROXY\\033[39m\\n\\n\"
+"
+
+run_tests "3.3.0" "
+ (node /node-gyp-src/test/simple-proxy.js 8080 /doobar/ https://iojs.org/dist/ &) &&
+ cd node-buffertools &&
+ NVM_IOJS_ORG_MIRROR=http://localhost:8080/doobar/ /node-gyp-src/bin/node-gyp.js --loglevel=info rebuild &&
+ nc -z localhost 8080 && echo -e \"\\n\\n\\033[31mFAILED TO USE LOCAL PROXY\\033[39m\\n\\n\"
+"
+
+run_tests "0.12.7" "
+ (node /node-gyp-src/test/simple-proxy.js 8080 /boombar/ https://nodejs.org/dist/ &) &&
+ cd node-buffertools &&
+ NVM_NODEJS_ORG_MIRROR=http://localhost:8080/boombar/ /node-gyp-src/bin/node-gyp.js --loglevel=info rebuild &&
+ nc -z localhost 8080 && echo -e \"\\n\\n\\033[31mFAILED TO USE LOCAL PROXY\\033[39m\\n\\n\"
+"
+
+rm -rf $dot_node_gyp
diff --git a/deps/npm/node_modules/node-gyp/test/simple-proxy.js b/deps/npm/node_modules/node-gyp/test/simple-proxy.js
new file mode 100644
index 00000000000000..e55330c445bf6e
--- /dev/null
+++ b/deps/npm/node_modules/node-gyp/test/simple-proxy.js
@@ -0,0 +1,24 @@
+var http = require('http')
+ , https = require('https')
+ , server = http.createServer(handler)
+ , port = +process.argv[2]
+ , prefix = process.argv[3]
+ , upstream = process.argv[4]
+ , calls = 0
+
+server.listen(port)
+
+function handler (req, res) {
+ if (req.url.indexOf(prefix) != 0)
+ throw new Error('request url [' + req.url + '] does not start with [' + prefix + ']')
+
+ var upstreamUrl = upstream + req.url.substring(prefix.length)
+ console.log(req.url + ' -> ' + upstreamUrl)
+ https.get(upstreamUrl, function (ures) {
+ ures.on('end', function () {
+ if (++calls == 2)
+ server.close()
+ })
+ ures.pipe(res)
+ })
+}
diff --git a/deps/npm/node_modules/node-gyp/test/test-process-release.js b/deps/npm/node_modules/node-gyp/test/test-process-release.js
new file mode 100644
index 00000000000000..33655ab726a555
--- /dev/null
+++ b/deps/npm/node_modules/node-gyp/test/test-process-release.js
@@ -0,0 +1,450 @@
+var test = require('tape')
+var processRelease = require('../lib/process-release')
+
+test('test process release - process.version = 0.8.20', function (t) {
+ t.plan(2)
+
+ var release = processRelease([], { opts: {} }, 'v0.8.20', null)
+
+ t.equal(release.semver.version, '0.8.20')
+ delete release.semver
+
+ t.deepEqual(release, {
+ version: '0.8.20',
+ name: 'node',
+ baseUrl: 'https://nodejs.org/dist/v0.8.20/',
+ tarballUrl: 'https://nodejs.org/dist/v0.8.20/node-v0.8.20.tar.gz',
+ shasumsUrl: 'https://nodejs.org/dist/v0.8.20/SHASUMS256.txt',
+ versionDir: '0.8.20',
+ libUrl32: 'https://nodejs.org/dist/v0.8.20/node.lib',
+ libUrl64: 'https://nodejs.org/dist/v0.8.20/x64/node.lib',
+ libPath32: 'node.lib',
+ libPath64: 'x64/node.lib'
+ })
+})
+
+test('test process release - process.version = 0.10.21', function (t) {
+ t.plan(2)
+
+ var release = processRelease([], { opts: {} }, 'v0.10.21', null)
+
+ t.equal(release.semver.version, '0.10.21')
+ delete release.semver
+
+ t.deepEqual(release, {
+ version: '0.10.21',
+ name: 'node',
+ baseUrl: 'https://nodejs.org/dist/v0.10.21/',
+ tarballUrl: 'https://nodejs.org/dist/v0.10.21/node-v0.10.21.tar.gz',
+ shasumsUrl: 'https://nodejs.org/dist/v0.10.21/SHASUMS256.txt',
+ versionDir: '0.10.21',
+ libUrl32: 'https://nodejs.org/dist/v0.10.21/node.lib',
+ libUrl64: 'https://nodejs.org/dist/v0.10.21/x64/node.lib',
+ libPath32: 'node.lib',
+ libPath64: 'x64/node.lib'
+ })
+})
+
+test('test process release - process.version = 0.12.22', function (t) {
+ t.plan(2)
+
+ var release = processRelease([], { opts: {} }, 'v0.12.22', null)
+
+ t.equal(release.semver.version, '0.12.22')
+ delete release.semver
+
+ t.deepEqual(release, {
+ version: '0.12.22',
+ name: 'node',
+ baseUrl: 'https://nodejs.org/dist/v0.12.22/',
+ tarballUrl: 'https://nodejs.org/dist/v0.12.22/node-v0.12.22.tar.gz',
+ shasumsUrl: 'https://nodejs.org/dist/v0.12.22/SHASUMS256.txt',
+ versionDir: '0.12.22',
+ libUrl32: 'https://nodejs.org/dist/v0.12.22/node.lib',
+ libUrl64: 'https://nodejs.org/dist/v0.12.22/x64/node.lib',
+ libPath32: 'node.lib',
+ libPath64: 'x64/node.lib'
+ })
+})
+
+test('test process release - process.release ~ node@4.1.23', function (t) {
+ t.plan(2)
+
+ var release = processRelease([], { opts: {} }, 'v4.1.23', {
+ name: 'node',
+ headersUrl: 'https://nodejs.org/dist/v4.1.23/node-v4.1.23-headers.tar.gz'
+ })
+
+ t.equal(release.semver.version, '4.1.23')
+ delete release.semver
+
+ t.deepEqual(release, {
+ version: '4.1.23',
+ name: 'node',
+ baseUrl: 'https://nodejs.org/dist/v4.1.23/',
+ tarballUrl: 'https://nodejs.org/dist/v4.1.23/node-v4.1.23-headers.tar.gz',
+ shasumsUrl: 'https://nodejs.org/dist/v4.1.23/SHASUMS256.txt',
+ versionDir: '4.1.23',
+ libUrl32: 'https://nodejs.org/dist/v4.1.23/win-x86/node.lib',
+ libUrl64: 'https://nodejs.org/dist/v4.1.23/win-x64/node.lib',
+ libPath32: 'win-x86/node.lib',
+ libPath64: 'win-x64/node.lib'
+ })
+})
+
+test('test process release - process.release ~ node@4.1.23 / corp build', function (t) {
+ t.plan(2)
+
+ var release = processRelease([], { opts: {} }, 'v4.1.23', {
+ name: 'node',
+ headersUrl: 'https://some.custom.location/node-v4.1.23-headers.tar.gz'
+ })
+
+ t.equal(release.semver.version, '4.1.23')
+ delete release.semver
+
+ t.deepEqual(release, {
+ version: '4.1.23',
+ name: 'node',
+ baseUrl: 'https://some.custom.location/',
+ tarballUrl: 'https://some.custom.location/node-v4.1.23-headers.tar.gz',
+ shasumsUrl: 'https://some.custom.location/SHASUMS256.txt',
+ versionDir: '4.1.23',
+ libUrl32: 'https://some.custom.location/win-x86/node.lib',
+ libUrl64: 'https://some.custom.location/win-x64/node.lib',
+ libPath32: 'win-x86/node.lib',
+ libPath64: 'win-x64/node.lib'
+ })
+})
+
+test('test process release - process.version = 1.8.4', function (t) {
+ t.plan(2)
+
+ var release = processRelease([], { opts: {} }, 'v1.8.4', null)
+
+ t.equal(release.semver.version, '1.8.4')
+ delete release.semver
+
+ t.deepEqual(release, {
+ version: '1.8.4',
+ name: 'iojs',
+ baseUrl: 'https://iojs.org/download/release/v1.8.4/',
+ tarballUrl: 'https://iojs.org/download/release/v1.8.4/iojs-v1.8.4.tar.gz',
+ shasumsUrl: 'https://iojs.org/download/release/v1.8.4/SHASUMS256.txt',
+ versionDir: 'iojs-1.8.4',
+ libUrl32: 'https://iojs.org/download/release/v1.8.4/win-x86/iojs.lib',
+ libUrl64: 'https://iojs.org/download/release/v1.8.4/win-x64/iojs.lib',
+ libPath32: 'win-x86/iojs.lib',
+ libPath64: 'win-x64/iojs.lib'
+ })
+})
+
+test('test process release - process.release ~ iojs@3.2.24', function (t) {
+ t.plan(2)
+
+ var release = processRelease([], { opts: {} }, 'v3.2.24', {
+ name: 'io.js',
+ headersUrl: 'https://iojs.org/download/release/v3.2.24/iojs-v3.2.24-headers.tar.gz'
+ })
+
+ t.equal(release.semver.version, '3.2.24')
+ delete release.semver
+
+ t.deepEqual(release, {
+ version: '3.2.24',
+ name: 'iojs',
+ baseUrl: 'https://iojs.org/download/release/v3.2.24/',
+ tarballUrl: 'https://iojs.org/download/release/v3.2.24/iojs-v3.2.24-headers.tar.gz',
+ shasumsUrl: 'https://iojs.org/download/release/v3.2.24/SHASUMS256.txt',
+ versionDir: 'iojs-3.2.24',
+ libUrl32: 'https://iojs.org/download/release/v3.2.24/win-x86/iojs.lib',
+ libUrl64: 'https://iojs.org/download/release/v3.2.24/win-x64/iojs.lib',
+ libPath32: 'win-x86/iojs.lib',
+ libPath64: 'win-x64/iojs.lib'
+ })
+})
+
+test('test process release - process.release ~ iojs@3.2.11 +libUrl32', function (t) {
+ t.plan(2)
+
+ var release = processRelease([], { opts: {} }, 'v3.2.11', {
+ name: 'io.js',
+ headersUrl: 'https://iojs.org/download/release/v3.2.11/iojs-v3.2.11-headers.tar.gz',
+ libUrl: 'https://iojs.org/download/release/v3.2.11/win-x86/iojs.lib' // custom
+ })
+
+ t.equal(release.semver.version, '3.2.11')
+ delete release.semver
+
+ t.deepEqual(release, {
+ version: '3.2.11',
+ name: 'iojs',
+ baseUrl: 'https://iojs.org/download/release/v3.2.11/',
+ tarballUrl: 'https://iojs.org/download/release/v3.2.11/iojs-v3.2.11-headers.tar.gz',
+ shasumsUrl: 'https://iojs.org/download/release/v3.2.11/SHASUMS256.txt',
+ versionDir: 'iojs-3.2.11',
+ libUrl32: 'https://iojs.org/download/release/v3.2.11/win-x86/iojs.lib',
+ libUrl64: 'https://iojs.org/download/release/v3.2.11/win-x64/iojs.lib',
+ libPath32: 'win-x86/iojs.lib',
+ libPath64: 'win-x64/iojs.lib'
+ })
+})
+
+test('test process release - process.release ~ iojs@3.2.101 +libUrl64', function (t) {
+ t.plan(2)
+
+ var release = processRelease([], { opts: {} }, 'v3.2.101', {
+ name: 'io.js',
+ headersUrl: 'https://iojs.org/download/release/v3.2.101/iojs-v3.2.101-headers.tar.gz',
+ libUrl: 'https://iojs.org/download/release/v3.2.101/win-x64/iojs.lib' // custom
+ })
+
+ t.equal(release.semver.version, '3.2.101')
+ delete release.semver
+
+ t.deepEqual(release, {
+ version: '3.2.101',
+ name: 'iojs',
+ baseUrl: 'https://iojs.org/download/release/v3.2.101/',
+ tarballUrl: 'https://iojs.org/download/release/v3.2.101/iojs-v3.2.101-headers.tar.gz',
+ shasumsUrl: 'https://iojs.org/download/release/v3.2.101/SHASUMS256.txt',
+ versionDir: 'iojs-3.2.101',
+ libUrl32: 'https://iojs.org/download/release/v3.2.101/win-x86/iojs.lib',
+ libUrl64: 'https://iojs.org/download/release/v3.2.101/win-x64/iojs.lib',
+ libPath32: 'win-x86/iojs.lib',
+ libPath64: 'win-x64/iojs.lib'
+ })
+})
+
+test('test process release - process.release ~ iojs@3.3.0 - borked win-ia32', function (t) {
+ t.plan(2)
+
+ var release = processRelease([], { opts: {} }, 'v3.2.101', {
+ name: 'io.js',
+ headersUrl: 'https://iojs.org/download/release/v3.2.101/iojs-v3.2.101-headers.tar.gz',
+ libUrl: 'https://iojs.org/download/release/v3.2.101/win-ia32/iojs.lib' // custom
+ })
+
+ t.equal(release.semver.version, '3.2.101')
+ delete release.semver
+
+ t.deepEqual(release, {
+ version: '3.2.101',
+ name: 'iojs',
+ baseUrl: 'https://iojs.org/download/release/v3.2.101/',
+ tarballUrl: 'https://iojs.org/download/release/v3.2.101/iojs-v3.2.101-headers.tar.gz',
+ shasumsUrl: 'https://iojs.org/download/release/v3.2.101/SHASUMS256.txt',
+ versionDir: 'iojs-3.2.101',
+ libUrl32: 'https://iojs.org/download/release/v3.2.101/win-x86/iojs.lib',
+ libUrl64: 'https://iojs.org/download/release/v3.2.101/win-x64/iojs.lib',
+ libPath32: 'win-x86/iojs.lib',
+ libPath64: 'win-x64/iojs.lib'
+ })
+})
+
+test('test process release - process.release ~ node@4.1.23 --target=0.10.40', function (t) {
+ t.plan(2)
+
+ var release = processRelease([], { opts: { target: '0.10.40' } }, 'v4.1.23', {
+ name: 'node',
+ headersUrl: 'https://nodejs.org/dist/v4.1.23/node-v4.1.23-headers.tar.gz'
+ })
+
+ t.equal(release.semver.version, '0.10.40')
+ delete release.semver
+
+ t.deepEqual(release, {
+ version: '0.10.40',
+ name: 'node',
+ baseUrl: 'https://nodejs.org/dist/v0.10.40/',
+ tarballUrl: 'https://nodejs.org/dist/v0.10.40/node-v0.10.40.tar.gz',
+ shasumsUrl: 'https://nodejs.org/dist/v0.10.40/SHASUMS256.txt',
+ versionDir: '0.10.40',
+ libUrl32: 'https://nodejs.org/dist/v0.10.40/node.lib',
+ libUrl64: 'https://nodejs.org/dist/v0.10.40/x64/node.lib',
+ libPath32: 'node.lib',
+ libPath64: 'x64/node.lib'
+ })
+})
+
+test('test process release - process.release ~ node@4.1.23 --target=1.8.4', function (t) {
+ t.plan(2)
+
+ var release = processRelease([], { opts: { target: '1.8.4' } }, 'v4.1.23', {
+ name: 'node',
+ headersUrl: 'https://nodejs.org/dist/v4.1.23/node-v4.1.23-headers.tar.gz'
+ })
+
+ t.equal(release.semver.version, '1.8.4')
+ delete release.semver
+
+ t.deepEqual(release, {
+ version: '1.8.4',
+ name: 'iojs',
+ baseUrl: 'https://iojs.org/download/release/v1.8.4/',
+ tarballUrl: 'https://iojs.org/download/release/v1.8.4/iojs-v1.8.4.tar.gz',
+ shasumsUrl: 'https://iojs.org/download/release/v1.8.4/SHASUMS256.txt',
+ versionDir: 'iojs-1.8.4',
+ libUrl32: 'https://iojs.org/download/release/v1.8.4/win-x86/iojs.lib',
+ libUrl64: 'https://iojs.org/download/release/v1.8.4/win-x64/iojs.lib',
+ libPath32: 'win-x86/iojs.lib',
+ libPath64: 'win-x64/iojs.lib'
+ })
+})
+
+test('test process release - process.release ~ node@4.1.23 --dist-url=https://foo.bar/baz', function (t) {
+ t.plan(2)
+
+ var release = processRelease([], { opts: { 'dist-url': 'https://foo.bar/baz' } }, 'v4.1.23', {
+ name: 'node',
+ headersUrl: 'https://nodejs.org/dist/v4.1.23/node-v4.1.23-headers.tar.gz'
+ })
+
+ t.equal(release.semver.version, '4.1.23')
+ delete release.semver
+
+ t.deepEqual(release, {
+ version: '4.1.23',
+ name: 'node',
+ baseUrl: 'https://foo.bar/baz/v4.1.23/',
+ tarballUrl: 'https://foo.bar/baz/v4.1.23/node-v4.1.23-headers.tar.gz',
+ shasumsUrl: 'https://foo.bar/baz/v4.1.23/SHASUMS256.txt',
+ versionDir: '4.1.23',
+ libUrl32: 'https://foo.bar/baz/v4.1.23/win-x86/node.lib',
+ libUrl64: 'https://foo.bar/baz/v4.1.23/win-x64/node.lib',
+ libPath32: 'win-x86/node.lib',
+ libPath64: 'win-x64/node.lib'
+ })
+})
+
+test('test process release - process.release ~ frankenstein@4.1.23', function (t) {
+ t.plan(2)
+
+ var release = processRelease([], { opts: {} }, 'v4.1.23', {
+ name: 'frankenstein',
+ headersUrl: 'https://frankensteinjs.org/dist/v4.1.23/frankenstein-v4.1.23-headers.tar.gz'
+ })
+
+ t.equal(release.semver.version, '4.1.23')
+ delete release.semver
+
+ t.deepEqual(release, {
+ version: '4.1.23',
+ name: 'frankenstein',
+ baseUrl: 'https://frankensteinjs.org/dist/v4.1.23/',
+ tarballUrl: 'https://frankensteinjs.org/dist/v4.1.23/frankenstein-v4.1.23-headers.tar.gz',
+ shasumsUrl: 'https://frankensteinjs.org/dist/v4.1.23/SHASUMS256.txt',
+ versionDir: 'frankenstein-4.1.23',
+ libUrl32: 'https://frankensteinjs.org/dist/v4.1.23/win-x86/frankenstein.lib',
+ libUrl64: 'https://frankensteinjs.org/dist/v4.1.23/win-x64/frankenstein.lib',
+ libPath32: 'win-x86/frankenstein.lib',
+ libPath64: 'win-x64/frankenstein.lib'
+ })
+})
+
+
+test('test process release - process.release ~ frankenstein@4.1.23 --dist-url=http://foo.bar/baz/', function (t) {
+ t.plan(2)
+
+ var release = processRelease([], { opts: { 'dist-url': 'http://foo.bar/baz/' } }, 'v4.1.23', {
+ name: 'frankenstein',
+ headersUrl: 'https://frankensteinjs.org/dist/v4.1.23/frankenstein-v4.1.23.tar.gz'
+ })
+
+ t.equal(release.semver.version, '4.1.23')
+ delete release.semver
+
+ t.deepEqual(release, {
+ version: '4.1.23',
+ name: 'frankenstein',
+ baseUrl: 'http://foo.bar/baz/v4.1.23/',
+ tarballUrl: 'http://foo.bar/baz/v4.1.23/frankenstein-v4.1.23-headers.tar.gz',
+ shasumsUrl: 'http://foo.bar/baz/v4.1.23/SHASUMS256.txt',
+ versionDir: 'frankenstein-4.1.23',
+ libUrl32: 'http://foo.bar/baz/v4.1.23/win-x86/frankenstein.lib',
+ libUrl64: 'http://foo.bar/baz/v4.1.23/win-x64/frankenstein.lib',
+ libPath32: 'win-x86/frankenstein.lib',
+ libPath64: 'win-x64/frankenstein.lib'
+ })
+})
+
+test('test process release - process.release ~ node@4.0.0-rc.4', function (t) {
+ t.plan(2)
+
+ var release = processRelease([], { opts: {} }, 'v4.0.0-rc.4', {
+ name: 'node',
+ headersUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/node-v4.0.0-rc.4-headers.tar.gz'
+ })
+
+ t.equal(release.semver.version, '4.0.0-rc.4')
+ delete release.semver
+
+ t.deepEqual(release, {
+ version: '4.0.0-rc.4',
+ name: 'node',
+ baseUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/',
+ tarballUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/node-v4.0.0-rc.4-headers.tar.gz',
+ shasumsUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/SHASUMS256.txt',
+ versionDir: '4.0.0-rc.4',
+ libUrl32: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-x86/node.lib',
+ libUrl64: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-x64/node.lib',
+ libPath32: 'win-x86/node.lib',
+ libPath64: 'win-x64/node.lib'
+ })
+})
+
+
+test('test process release - process.release ~ node@4.0.0-rc.4 passed as argv[0]', function (t) {
+ t.plan(2)
+
+ // note the missing 'v' on the arg, it should normalise when checking
+ // whether we're on the default or not
+ var release = processRelease([ '4.0.0-rc.4' ], { opts: {} }, 'v4.0.0-rc.4', {
+ name: 'node',
+ headersUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/node-v4.0.0-rc.4-headers.tar.gz'
+ })
+
+ t.equal(release.semver.version, '4.0.0-rc.4')
+ delete release.semver
+
+ t.deepEqual(release, {
+ version: '4.0.0-rc.4',
+ name: 'node',
+ baseUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/',
+ tarballUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/node-v4.0.0-rc.4-headers.tar.gz',
+ shasumsUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/SHASUMS256.txt',
+ versionDir: '4.0.0-rc.4',
+ libUrl32: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-x86/node.lib',
+ libUrl64: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-x64/node.lib',
+ libPath32: 'win-x86/node.lib',
+ libPath64: 'win-x64/node.lib'
+ })
+})
+
+
+test('test process release - process.release ~ node@4.0.0-rc.4 - bogus string passed as argv[0]', function (t) {
+ t.plan(2)
+
+ // additional arguments can be passed in on the commandline that should be ignored if they
+ // are not specifying a valid version @ position 0
+ var release = processRelease([ 'this is no version!' ], { opts: {} }, 'v4.0.0-rc.4', {
+ name: 'node',
+ headersUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/node-v4.0.0-rc.4-headers.tar.gz'
+ })
+
+ t.equal(release.semver.version, '4.0.0-rc.4')
+ delete release.semver
+
+ t.deepEqual(release, {
+ version: '4.0.0-rc.4',
+ name: 'node',
+ baseUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/',
+ tarballUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/node-v4.0.0-rc.4-headers.tar.gz',
+ shasumsUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/SHASUMS256.txt',
+ versionDir: '4.0.0-rc.4',
+ libUrl32: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-x86/node.lib',
+ libUrl64: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-x64/node.lib',
+ libPath32: 'win-x86/node.lib',
+ libPath64: 'win-x64/node.lib'
+ })
+})
diff --git a/deps/npm/node_modules/nopt/README.md b/deps/npm/node_modules/nopt/README.md
index 22c50ec406ebe2..f21a4b31c5d482 100644
--- a/deps/npm/node_modules/nopt/README.md
+++ b/deps/npm/node_modules/nopt/README.md
@@ -29,7 +29,8 @@ nice option parser.
, "bloo" : [ "big", "medium", "small" ]
, "flag" : Boolean
, "pick" : Boolean
- , "many" : [String, Array]
+ , "many1" : [String, Array]
+ , "many2" : [path]
}
, shortHands = { "foofoo" : ["--foo", "Mr. Foo"]
, "b7" : ["--bar", "7"]
@@ -78,11 +79,11 @@ $ node my-program.js --baz b/a/z # known paths are resolved.
# values, and will always be an array. The other types provided
# specify what types are allowed in the list.
-$ node my-program.js --many 1 --many null --many foo
-{ many: ["1", "null", "foo"] }
+$ node my-program.js --many1 5 --many1 null --many1 foo
+{ many1: ["5", "null", "foo"] }
-$ node my-program.js --many foo
-{ many: ["foo"] }
+$ node my-program.js --many2 foo --many2 bar
+{ many2: ["/path/to/foo", "path/to/bar"] }
```
Read the tests at the bottom of `lib/nopt.js` for more examples of
@@ -138,8 +139,8 @@ config object and remove its invalid properties.
## Error Handling
-By default, nopt outputs a warning to standard error when invalid
-options are found. You can change this behavior by assigning a method
+By default, nopt outputs a warning to standard error when invalid values for
+known options are found. You can change this behavior by assigning a method
to `nopt.invalidHandler`. This method will be called with
the offending `nopt.invalidHandler(key, val, types)`.
diff --git a/deps/npm/node_modules/nopt/package.json b/deps/npm/node_modules/nopt/package.json
index c44afa1a269526..618f93467e283f 100644
--- a/deps/npm/node_modules/nopt/package.json
+++ b/deps/npm/node_modules/nopt/package.json
@@ -1,6 +1,6 @@
{
"name": "nopt",
- "version": "3.0.3",
+ "version": "3.0.4",
"description": "Option parsing for Node, supporting types, shorthands, etc. Used by npm.",
"author": {
"name": "Isaac Z. Schlueter",
@@ -25,30 +25,14 @@
"devDependencies": {
"tap": "^1.2.0"
},
- "gitHead": "f64a64cd48d9f2660dd4e59191ff46a26397d6b1",
+ "readme": "If you want to write an option parser, and have it be good, there are\ntwo ways to do it. The Right Way, and the Wrong Way.\n\nThe Wrong Way is to sit down and write an option parser. We've all done\nthat.\n\nThe Right Way is to write some complex configurable program with so many\noptions that you hit the limit of your frustration just trying to\nmanage them all, and defer it with duct-tape solutions until you see\nexactly to the core of the problem, and finally snap and write an\nawesome option parser.\n\nIf you want to write an option parser, don't write an option parser.\nWrite a package manager, or a source control system, or a service\nrestarter, or an operating system. You probably won't end up with a\ngood one of those, but if you don't give up, and you are relentless and\ndiligent enough in your procrastination, you may just end up with a very\nnice option parser.\n\n## USAGE\n\n // my-program.js\n var nopt = require(\"nopt\")\n , Stream = require(\"stream\").Stream\n , path = require(\"path\")\n , knownOpts = { \"foo\" : [String, null]\n , \"bar\" : [Stream, Number]\n , \"baz\" : path\n , \"bloo\" : [ \"big\", \"medium\", \"small\" ]\n , \"flag\" : Boolean\n , \"pick\" : Boolean\n , \"many1\" : [String, Array]\n , \"many2\" : [path]\n }\n , shortHands = { \"foofoo\" : [\"--foo\", \"Mr. Foo\"]\n , \"b7\" : [\"--bar\", \"7\"]\n , \"m\" : [\"--bloo\", \"medium\"]\n , \"p\" : [\"--pick\"]\n , \"f\" : [\"--flag\"]\n }\n // everything is optional.\n // knownOpts and shorthands default to {}\n // arg list defaults to process.argv\n // slice defaults to 2\n , parsed = nopt(knownOpts, shortHands, process.argv, 2)\n console.log(parsed)\n\nThis would give you support for any of the following:\n\n```bash\n$ node my-program.js --foo \"blerp\" --no-flag\n{ \"foo\" : \"blerp\", \"flag\" : false }\n\n$ node my-program.js ---bar 7 --foo \"Mr. Hand\" --flag\n{ bar: 7, foo: \"Mr. Hand\", flag: true }\n\n$ node my-program.js --foo \"blerp\" -f -----p\n{ foo: \"blerp\", flag: true, pick: true }\n\n$ node my-program.js -fp --foofoo\n{ foo: \"Mr. Foo\", flag: true, pick: true }\n\n$ node my-program.js --foofoo -- -fp # -- stops the flag parsing.\n{ foo: \"Mr. Foo\", argv: { remain: [\"-fp\"] } }\n\n$ node my-program.js --blatzk -fp # unknown opts are ok.\n{ blatzk: true, flag: true, pick: true }\n\n$ node my-program.js --blatzk=1000 -fp # but you need to use = if they have a value\n{ blatzk: 1000, flag: true, pick: true }\n\n$ node my-program.js --no-blatzk -fp # unless they start with \"no-\"\n{ blatzk: false, flag: true, pick: true }\n\n$ node my-program.js --baz b/a/z # known paths are resolved.\n{ baz: \"/Users/isaacs/b/a/z\" }\n\n# if Array is one of the types, then it can take many\n# values, and will always be an array. The other types provided\n# specify what types are allowed in the list.\n\n$ node my-program.js --many1 5 --many1 null --many1 foo\n{ many1: [\"5\", \"null\", \"foo\"] }\n\n$ node my-program.js --many2 foo --many2 bar\n{ many2: [\"/path/to/foo\", \"path/to/bar\"] }\n```\n\nRead the tests at the bottom of `lib/nopt.js` for more examples of\nwhat this puppy can do.\n\n## Types\n\nThe following types are supported, and defined on `nopt.typeDefs`\n\n* String: A normal string. No parsing is done.\n* path: A file system path. Gets resolved against cwd if not absolute.\n* url: A url. If it doesn't parse, it isn't accepted.\n* Number: Must be numeric.\n* Date: Must parse as a date. If it does, and `Date` is one of the options,\n then it will return a Date object, not a string.\n* Boolean: Must be either `true` or `false`. If an option is a boolean,\n then it does not need a value, and its presence will imply `true` as\n the value. To negate boolean flags, do `--no-whatever` or `--whatever\n false`\n* NaN: Means that the option is strictly not allowed. Any value will\n fail.\n* Stream: An object matching the \"Stream\" class in node. Valuable\n for use when validating programmatically. (npm uses this to let you\n supply any WriteStream on the `outfd` and `logfd` config options.)\n* Array: If `Array` is specified as one of the types, then the value\n will be parsed as a list of options. This means that multiple values\n can be specified, and that the value will always be an array.\n\nIf a type is an array of values not on this list, then those are\nconsidered valid values. For instance, in the example above, the\n`--bloo` option can only be one of `\"big\"`, `\"medium\"`, or `\"small\"`,\nand any other value will be rejected.\n\nWhen parsing unknown fields, `\"true\"`, `\"false\"`, and `\"null\"` will be\ninterpreted as their JavaScript equivalents.\n\nYou can also mix types and values, or multiple types, in a list. For\ninstance `{ blah: [Number, null] }` would allow a value to be set to\neither a Number or null. When types are ordered, this implies a\npreference, and the first type that can be used to properly interpret\nthe value will be used.\n\nTo define a new type, add it to `nopt.typeDefs`. Each item in that\nhash is an object with a `type` member and a `validate` method. The\n`type` member is an object that matches what goes in the type list. The\n`validate` method is a function that gets called with `validate(data,\nkey, val)`. Validate methods should assign `data[key]` to the valid\nvalue of `val` if it can be handled properly, or return boolean\n`false` if it cannot.\n\nYou can also call `nopt.clean(data, types, typeDefs)` to clean up a\nconfig object and remove its invalid properties.\n\n## Error Handling\n\nBy default, nopt outputs a warning to standard error when invalid values for\nknown options are found. You can change this behavior by assigning a method\nto `nopt.invalidHandler`. This method will be called with\nthe offending `nopt.invalidHandler(key, val, types)`.\n\nIf no `nopt.invalidHandler` is assigned, then it will console.error\nits whining. If it is assigned to boolean `false` then the warning is\nsuppressed.\n\n## Abbreviations\n\nYes, they are supported. If you define options like this:\n\n```javascript\n{ \"foolhardyelephants\" : Boolean\n, \"pileofmonkeys\" : Boolean }\n```\n\nThen this will work:\n\n```bash\nnode program.js --foolhar --pil\nnode program.js --no-f --pileofmon\n# etc.\n```\n\n## Shorthands\n\nShorthands are a hash of shorter option names to a snippet of args that\nthey expand to.\n\nIf multiple one-character shorthands are all combined, and the\ncombination does not unambiguously match any other option or shorthand,\nthen they will be broken up into their constituent parts. For example:\n\n```json\n{ \"s\" : [\"--loglevel\", \"silent\"]\n, \"g\" : \"--global\"\n, \"f\" : \"--force\"\n, \"p\" : \"--parseable\"\n, \"l\" : \"--long\"\n}\n```\n\n```bash\nnpm ls -sgflp\n# just like doing this:\nnpm ls --loglevel silent --global --force --long --parseable\n```\n\n## The Rest of the args\n\nThe config object returned by nopt is given a special member called\n`argv`, which is an object with the following fields:\n\n* `remain`: The remaining args after all the parsing has occurred.\n* `original`: The args as they originally appeared.\n* `cooked`: The args after flags and shorthands are expanded.\n\n## Slicing\n\nNode programs are called with more or less the exact argv as it appears\nin C land, after the v8 and node-specific options have been plucked off.\nAs such, `argv[0]` is always `node` and `argv[1]` is always the\nJavaScript program being run.\n\nThat's usually not very useful to you. So they're sliced off by\ndefault. If you want them, then you can pass in `0` as the last\nargument, or any other number that you'd like to slice off the start of\nthe list.\n",
+ "readmeFilename": "README.md",
+ "gitHead": "f52626631ea1afef5a6dd9acf23ddd1466831a08",
"bugs": {
"url": "https://github.com/isaacs/nopt/issues"
},
"homepage": "https://github.com/isaacs/nopt#readme",
- "_id": "nopt@3.0.3",
- "_shasum": "0e9978f33016bae0b75e3748c03bbbb71da5c530",
- "_from": "nopt@>=3.0.3 <3.1.0",
- "_npmVersion": "2.12.0",
- "_nodeVersion": "2.2.1",
- "_npmUser": {
- "name": "isaacs",
- "email": "isaacs@npmjs.com"
- },
- "dist": {
- "shasum": "0e9978f33016bae0b75e3748c03bbbb71da5c530",
- "tarball": "http://registry.npmjs.org/nopt/-/nopt-3.0.3.tgz"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.3.tgz"
+ "_id": "nopt@3.0.4",
+ "_shasum": "dd63bc9c72a6e4e85b85cdc0ca314598facede5e",
+ "_from": "nopt@3.0.4"
}
diff --git a/deps/npm/node_modules/normalize-package-data/package.json b/deps/npm/node_modules/normalize-package-data/package.json
index 0ea7c5418084cf..23878ef1ef65df 100644
--- a/deps/npm/node_modules/normalize-package-data/package.json
+++ b/deps/npm/node_modules/normalize-package-data/package.json
@@ -1,6 +1,6 @@
{
"name": "normalize-package-data",
- "version": "2.3.1",
+ "version": "2.3.2",
"author": {
"name": "Meryn Stol",
"email": "merynstol@gmail.com"
@@ -18,7 +18,7 @@
"dependencies": {
"hosted-git-info": "^2.0.2",
"semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^2.0.0"
+ "validate-npm-package-license": "^3.0.1"
},
"devDependencies": {
"async": "~0.9.0",
@@ -41,12 +41,12 @@
],
"readme": "# normalize-package-data [](https://travis-ci.org/npm/normalize-package-data)\n\nnormalize-package data exports a function that normalizes package metadata. This data is typically found in a package.json file, but in principle could come from any source - for example the npm registry.\n\nnormalize-package-data is used by [read-package-json](https://npmjs.org/package/read-package-json) to normalize the data it reads from a package.json file. In turn, read-package-json is used by [npm](https://npmjs.org/package/npm) and various npm-related tools.\n\n## Installation\n\n```\nnpm install normalize-package-data\n```\n\n## Usage\n\nBasic usage is really simple. You call the function that normalize-package-data exports. Let's call it `normalizeData`.\n\n```javascript\nnormalizeData = require('normalize-package-data')\npackageData = fs.readFileSync(\"package.json\")\nnormalizeData(packageData)\n// packageData is now normalized\n```\n\n#### Strict mode\n\nYou may activate strict validation by passing true as the second argument.\n\n```javascript\nnormalizeData = require('normalize-package-data')\npackageData = fs.readFileSync(\"package.json\")\nwarnFn = function(msg) { console.error(msg) }\nnormalizeData(packageData, true)\n// packageData is now normalized\n```\n\nIf strict mode is activated, only Semver 2.0 version strings are accepted. Otherwise, Semver 1.0 strings are accepted as well. Packages must have a name, and the name field must not have contain leading or trailing whitespace.\n\n#### Warnings\n\nOptionally, you may pass a \"warning\" function. It gets called whenever the `normalizeData` function encounters something that doesn't look right. It indicates less than perfect input data.\n\n```javascript\nnormalizeData = require('normalize-package-data')\npackageData = fs.readFileSync(\"package.json\")\nwarnFn = function(msg) { console.error(msg) }\nnormalizeData(packageData, warnFn)\n// packageData is now normalized. Any number of warnings may have been logged.\n```\n\nYou may combine strict validation with warnings by passing `true` as the second argument, and `warnFn` as third.\n\nWhen `private` field is set to `true`, warnings will be suppressed.\n\n### Potential exceptions\n\nIf the supplied data has an invalid name or version vield, `normalizeData` will throw an error. Depending on where you call `normalizeData`, you may want to catch these errors so can pass them to a callback.\n\n## What normalization (currently) entails\n\n* The value of `name` field gets trimmed (unless in strict mode).\n* The value of the `version` field gets cleaned by `semver.clean`. See [documentation for the semver module](https://github.com/isaacs/node-semver).\n* If `name` and/or `version` fields are missing, they are set to empty strings.\n* If `files` field is not an array, it will be removed.\n* If `bin` field is a string, then `bin` field will become an object with `name` set to the value of the `name` field, and `bin` set to the original string value.\n* If `man` field is a string, it will become an array with the original string as its sole member.\n* If `keywords` field is string, it is considered to be a list of keywords separated by one or more white-space characters. It gets converted to an array by splitting on `\\s+`.\n* All people fields (`author`, `maintainers`, `contributors`) get converted into objects with name, email and url properties.\n* If `bundledDependencies` field (a typo) exists and `bundleDependencies` field does not, `bundledDependencies` will get renamed to `bundleDependencies`.\n* If the value of any of the dependencies fields (`dependencies`, `devDependencies`, `optionalDependencies`) is a string, it gets converted into an object with familiar `name=>value` pairs.\n* The values in `optionalDependencies` get added to `dependencies`. The `optionalDependencies` array is left untouched.\n* As of v2: Dependencies that point at known hosted git providers (currently: github, bitbucket, gitlab) will have their URLs canonicalized, but protocols will be preserved.\n* As of v2: Dependencies that use shortcuts for hosted git providers (`org/proj`, `github:org/proj`, `bitbucket:org/proj`, `gitlab:org/proj`, `gist:docid`) will have the shortcut left in place. (In the case of github, the `org/proj` form will be expanded to `github:org/proj`.) THIS MARKS A BREAKING CHANGE FROM V1, where the shorcut was previously expanded to a URL.\n* If `description` field does not exist, but `readme` field does, then (more or less) the first paragraph of text that's found in the readme is taken as value for `description`.\n* If `repository` field is a string, it will become an object with `url` set to the original string value, and `type` set to `\"git\"`.\n* If `repository.url` is not a valid url, but in the style of \"[owner-name]/[repo-name]\", `repository.url` will be set to https://github.com/[owner-name]/[repo-name]\n* If `bugs` field is a string, the value of `bugs` field is changed into an object with `url` set to the original string value.\n* If `bugs` field does not exist, but `repository` field points to a repository hosted on GitHub, the value of the `bugs` field gets set to an url in the form of https://github.com/[owner-name]/[repo-name]/issues . If the repository field points to a GitHub Gist repo url, the associated http url is chosen.\n* If `bugs` field is an object, the resulting value only has email and url properties. If email and url properties are not strings, they are ignored. If no valid values for either email or url is found, bugs field will be removed.\n* If `homepage` field is not a string, it will be removed.\n* If the url in the `homepage` field does not specify a protocol, then http is assumed. For example, `myproject.org` will be changed to `http://myproject.org`.\n* If `homepage` field does not exist, but `repository` field points to a repository hosted on GitHub, the value of the `homepage` field gets set to an url in the form of https://github.com/[owner-name]/[repo-name]/ . If the repository field points to a GitHub Gist repo url, the associated http url is chosen.\n\n### Rules for name field\n\nIf `name` field is given, the value of the name field must be a string. The string may not:\n\n* start with a period.\n* contain the following characters: `/@\\s+%`\n* contain and characters that would need to be encoded for use in urls.\n* resemble the word `node_modules` or `favicon.ico` (case doesn't matter).\n\n### Rules for version field\n\nIf `version` field is given, the value of the version field must be a valid *semver* string, as determined by the `semver.valid` method. See [documentation for the semver module](https://github.com/isaacs/node-semver).\n\n### Rules for license field\n\nThe `license` field should be a valid *SDPDX 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).\n\n## Credits\n\nThis package contains code based on read-package-json written by Isaac Z. Schlueter. Used with permisson.\n\n## License\n\nnormalize-package-data is released under the [BSD 2-Clause License](http://opensource.org/licenses/MIT). \nCopyright (c) 2013 Meryn Stol \n",
"readmeFilename": "README.md",
- "gitHead": "43b844bd37aac28d204be7567b731d9c55025871",
+ "gitHead": "c0518cf9a352af940fee94b1d3144da576c3e44b",
"bugs": {
"url": "https://github.com/npm/normalize-package-data/issues"
},
"homepage": "https://github.com/npm/normalize-package-data#readme",
- "_id": "normalize-package-data@2.3.1",
- "_shasum": "e2d24a5ab38a90b22cd697753407d8564f49a890",
- "_from": "normalize-package-data@>=2.3.1 <2.4.0"
+ "_id": "normalize-package-data@2.3.2",
+ "_shasum": "ff6d437374188a21921c85fbe5ad11e34ae6ead5",
+ "_from": "normalize-package-data@>=2.3.2 <2.4.0"
}
diff --git a/deps/npm/node_modules/npm-registry-client/lib/access.js b/deps/npm/node_modules/npm-registry-client/lib/access.js
index b671f6b5f219c1..badb770ea49a75 100644
--- a/deps/npm/node_modules/npm-registry-client/lib/access.js
+++ b/deps/npm/node_modules/npm-registry-client/lib/access.js
@@ -1,30 +1,153 @@
module.exports = access
var assert = require('assert')
+var url = require('url')
+var npa = require('npm-package-arg')
+var subcommands = {}
-function access (uri, params, cb) {
- assert(typeof uri === 'string', 'must pass registry URI to access')
- assert(params && typeof params === 'object', 'must pass params to access')
- assert(typeof cb === 'function', 'muss pass callback to access')
-
- assert(typeof params.level === 'string', 'must pass level to access')
- assert(
- ['public', 'restricted'].indexOf(params.level) !== -1,
- "access level must be either 'public' or 'restricted'"
- )
- assert(
- params.auth && typeof params.auth === 'object',
- 'must pass auth to access'
- )
-
- var body = {
- access: params.level
- }
+function access (sub, uri, params, cb) {
+ accessAssertions(sub, uri, params, cb)
+ return subcommands[sub].call(this, uri, params, cb)
+}
+
+subcommands.public = function (uri, params, cb) {
+ return setAccess.call(this, 'public', uri, params, cb)
+}
+subcommands.restricted = function (uri, params, cb) {
+ return setAccess.call(this, 'restricted', uri, params, cb)
+}
- var options = {
+function setAccess (access, uri, params, cb) {
+ return this.request(apiUri(uri, 'package', params.package, 'access'), {
method: 'POST',
- body: JSON.stringify(body),
+ auth: params.auth,
+ body: JSON.stringify({ access: access })
+ }, cb)
+}
+
+subcommands.grant = function (uri, params, cb) {
+ var reqUri = apiUri(uri, 'team', params.scope, params.team, 'package')
+ return this.request(reqUri, {
+ method: 'PUT',
+ auth: params.auth,
+ body: JSON.stringify({
+ permissions: params.permissions,
+ package: params.package
+ })
+ }, cb)
+}
+
+subcommands.revoke = function (uri, params, cb) {
+ var reqUri = apiUri(uri, 'team', params.scope, params.team, 'package')
+ return this.request(reqUri, {
+ method: 'DELETE',
+ auth: params.auth,
+ body: JSON.stringify({
+ package: params.package
+ })
+ }, cb)
+}
+
+subcommands['ls-packages'] = function (uri, params, cb, type) {
+ type = type || (params.team ? 'team' : 'org')
+ var client = this
+ var uriParams = '?format=cli'
+ var reqUri = apiUri(uri, type, params.scope, params.team, 'package')
+ return client.request(reqUri + uriParams, {
+ method: 'GET',
+ auth: params.auth
+ }, function (err, perms) {
+ if (err && err.statusCode === 404 && type === 'org') {
+ subcommands['ls-packages'].call(client, uri, params, cb, 'user')
+ } else {
+ cb(err, perms && translatePermissions(perms))
+ }
+ })
+}
+
+subcommands['ls-collaborators'] = function (uri, params, cb) {
+ var uriParams = '?format=cli'
+ if (params.user) {
+ uriParams += ('&user=' + encodeURIComponent(params.user))
+ }
+ var reqUri = apiUri(uri, 'package', params.package, 'collaborators')
+ return this.request(reqUri + uriParams, {
+ method: 'GET',
auth: params.auth
+ }, function (err, perms) {
+ cb(err, perms && translatePermissions(perms))
+ })
+}
+
+subcommands.edit = function () {
+ throw new Error('edit subcommand is not implemented yet')
+}
+
+function apiUri (registryUri) {
+ var path = Array.prototype.slice.call(arguments, 1)
+ .filter(function (x) { return x })
+ .map(encodeURIComponent)
+ .join('/')
+ return url.resolve(registryUri, '-/' + path)
+}
+
+function accessAssertions (subcommand, uri, params, cb) {
+ assert(subcommands.hasOwnProperty(subcommand),
+ 'access subcommand must be one of ' +
+ Object.keys(subcommands).join(', '))
+ typeChecks({
+ 'uri': [uri, 'string'],
+ 'params': [params, 'object'],
+ 'auth': [params.auth, 'object'],
+ 'callback': [cb, 'function']
+ })
+ if (contains([
+ 'public', 'restricted', 'grant', 'revoke', 'ls-collaborators'
+ ], subcommand)) {
+ typeChecks({ 'package': [params.package, 'string']})
+ assert(!!npa(params.package).scope,
+ 'access commands are only accessible for scoped packages')
+ }
+ if (contains(['grant', 'revoke', 'ls-packages'], subcommand)) {
+ typeChecks({ 'scope': [params.scope, 'string']})
+ }
+ if (contains(['grant', 'revoke'], subcommand)) {
+ typeChecks({ 'team': [params.team, 'string']})
+ }
+ if (subcommand === 'grant') {
+ typeChecks({ 'permissions': [params.permissions, 'string']})
+ assert(params.permissions === 'read-only' ||
+ params.permissions === 'read-write',
+ 'permissions must be either read-only or read-write')
+ }
+}
+
+function typeChecks (specs) {
+ Object.keys(specs).forEach(function (key) {
+ var checks = specs[key]
+ assert(typeof checks[0] === checks[1],
+ key + ' is required and must be of type ' + checks[1])
+ })
+}
+
+function contains (arr, item) {
+ return arr.indexOf(item) !== -1
+}
+
+function translatePermissions (perms) {
+ var newPerms = {}
+ for (var key in perms) {
+ if (perms.hasOwnProperty(key)) {
+ if (perms[key] === 'read') {
+ newPerms[key] = 'read-only'
+ } else if (perms[key] === 'write') {
+ newPerms[key] = 'read-write'
+ } else {
+ // This shouldn't happen, but let's not break things
+ // if the API starts returning different things.
+ newPerms[key] = perms[key]
+ }
+ }
}
- this.request(uri, options, cb)
+ return newPerms
}
diff --git a/deps/npm/node_modules/npm-registry-client/lib/request.js b/deps/npm/node_modules/npm-registry-client/lib/request.js
index 168a9d160af215..e4dc39957255e0 100644
--- a/deps/npm/node_modules/npm-registry-client/lib/request.js
+++ b/deps/npm/node_modules/npm-registry-client/lib/request.js
@@ -9,6 +9,7 @@ var assert = require('assert')
var url = require('url')
var zlib = require('zlib')
var Stream = require('stream').Stream
+var STATUS_CODES = require('http').STATUS_CODES
var request = require('request')
var once = require('once')
@@ -208,8 +209,9 @@ function requestDone (method, where, cb) {
// expect data with any error codes
if (!data && response.statusCode >= 400) {
+ var code = response.statusCode
return cb(
- response.statusCode + ' ' + require('http').STATUS_CODES[response.statusCode],
+ makeError(code + ' ' + STATUS_CODES[code], null, code),
null,
data,
response
@@ -236,22 +238,33 @@ function requestDone (method, where, cb) {
}
if (!parsed.error) {
- er = new Error(
+ er = makeError(
'Registry returned ' + response.statusCode +
' for ' + method +
- ' on ' + where
+ ' on ' + where,
+ name,
+ response.statusCode
)
} else if (name && parsed.error === 'not_found') {
- er = new Error('404 Not Found: ' + name)
+ er = makeError('404 Not Found: ' + name, name, response.statusCode)
} else {
- er = new Error(
- parsed.error + ' ' + (parsed.reason || '') + ': ' + (name || w)
+ er = makeError(
+ parsed.error + ' ' + (parsed.reason || '') + ': ' + (name || w),
+ name,
+ response.statusCode
)
}
- if (name) er.pkgid = name
- er.statusCode = response.statusCode
- er.code = 'E' + er.statusCode
}
return cb(er, parsed, data, response)
}.bind(this)
}
+
+function makeError (message, name, code) {
+ var er = new Error(message)
+ if (name) er.pkgid = name
+ if (code) {
+ er.statusCode = code
+ er.code = 'E' + code
+ }
+ return er
+}
diff --git a/deps/npm/node_modules/npm-registry-client/lib/team.js b/deps/npm/node_modules/npm-registry-client/lib/team.js
new file mode 100644
index 00000000000000..3e3794e0477688
--- /dev/null
+++ b/deps/npm/node_modules/npm-registry-client/lib/team.js
@@ -0,0 +1,105 @@
+module.exports = team
+
+var assert = require('assert')
+var url = require('url')
+
+var subcommands = {}
+
+function team (sub, uri, params, cb) {
+ teamAssertions(sub, uri, params, cb)
+ return subcommands[sub].call(this, uri, params, cb)
+}
+
+subcommands.create = function (uri, params, cb) {
+ return this.request(apiUri(uri, 'org', params.scope, 'team'), {
+ method: 'PUT',
+ auth: params.auth,
+ body: JSON.stringify({
+ name: params.team
+ })
+ }, cb)
+}
+
+subcommands.destroy = function (uri, params, cb) {
+ return this.request(apiUri(uri, 'team', params.scope, params.team), {
+ method: 'DELETE',
+ auth: params.auth
+ }, cb)
+}
+
+subcommands.add = function (uri, params, cb) {
+ return this.request(apiUri(uri, 'team', params.scope, params.team, 'user'), {
+ method: 'PUT',
+ auth: params.auth,
+ body: JSON.stringify({
+ user: params.user
+ })
+ }, cb)
+}
+
+subcommands.rm = function (uri, params, cb) {
+ return this.request(apiUri(uri, 'team', params.scope, params.team, 'user'), {
+ method: 'DELETE',
+ auth: params.auth,
+ body: JSON.stringify({
+ user: params.user
+ })
+ }, cb)
+}
+
+subcommands.ls = function (uri, params, cb) {
+ var uriParams = '?format=cli'
+ if (params.team) {
+ var reqUri = apiUri(
+ uri, 'team', params.scope, params.team, 'user') + uriParams
+ return this.request(reqUri, {
+ method: 'GET',
+ auth: params.auth
+ }, cb)
+ } else {
+ return this.request(apiUri(uri, 'org', params.scope, 'team') + uriParams, {
+ method: 'GET',
+ auth: params.auth
+ }, cb)
+ }
+}
+
+// TODO - we punted this to v2
+// subcommands.edit = function (uri, params, cb) {
+// return this.request(apiUri(uri, 'team', params.scope, params.team, 'user'), {
+// method: 'POST',
+// auth: params.auth,
+// body: JSON.stringify({
+// users: params.users
+// })
+// }, cb)
+// }
+
+function apiUri (registryUri) {
+ var path = Array.prototype.slice.call(arguments, 1)
+ .map(encodeURIComponent)
+ .join('/')
+ return url.resolve(registryUri, '-/' + path)
+}
+
+function teamAssertions (subcommand, uri, params, cb) {
+ assert(subcommand, 'subcommand is required')
+ assert(subcommands.hasOwnProperty(subcommand),
+ 'team subcommand must be one of ' + Object.keys(subcommands))
+ assert(typeof uri === 'string', 'registry URI is required')
+ assert(typeof params === 'object', 'params are required')
+ assert(typeof params.auth === 'object', 'auth is required')
+ assert(typeof params.scope === 'string', 'scope is required')
+ assert(!cb || typeof cb === 'function', 'callback must be a function')
+ if (subcommand !== 'ls') {
+ assert(typeof params.team === 'string', 'team name is required')
+ }
+ if (subcommand === 'rm' || subcommand === 'add') {
+ assert(typeof params.user === 'string', 'user is required')
+ }
+ if (subcommand === 'edit') {
+ assert(typeof params.users === 'object' &&
+ params.users.length != null,
+ 'users is required')
+ }
+}
diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/LICENSE b/deps/npm/node_modules/npm-registry-client/node_modules/chownr/LICENSE
similarity index 100%
rename from deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/LICENSE
rename to deps/npm/node_modules/npm-registry-client/node_modules/chownr/LICENSE
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/chownr/README.md b/deps/npm/node_modules/npm-registry-client/node_modules/chownr/README.md
new file mode 100644
index 00000000000000..70e9a54a32b8e0
--- /dev/null
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/chownr/README.md
@@ -0,0 +1,3 @@
+Like `chown -R`.
+
+Takes the same arguments as `fs.chown()`
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/chownr/chownr.js b/deps/npm/node_modules/npm-registry-client/node_modules/chownr/chownr.js
new file mode 100644
index 00000000000000..ecd7b452df57d7
--- /dev/null
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/chownr/chownr.js
@@ -0,0 +1,52 @@
+module.exports = chownr
+chownr.sync = chownrSync
+
+var fs = require("fs")
+, path = require("path")
+
+function chownr (p, uid, gid, cb) {
+ fs.readdir(p, function (er, children) {
+ // any error other than ENOTDIR means it's not readable, or
+ // doesn't exist. give up.
+ if (er && er.code !== "ENOTDIR") return cb(er)
+ if (er || !children.length) return fs.chown(p, uid, gid, cb)
+
+ var len = children.length
+ , errState = null
+ children.forEach(function (child) {
+ var pathChild = path.resolve(p, child);
+ fs.lstat(pathChild, function(er, stats) {
+ if (er)
+ return cb(er)
+ if (!stats.isSymbolicLink())
+ chownr(pathChild, uid, gid, then)
+ else
+ then()
+ })
+ })
+ function then (er) {
+ if (errState) return
+ if (er) return cb(errState = er)
+ if (-- len === 0) return fs.chown(p, uid, gid, cb)
+ }
+ })
+}
+
+function chownrSync (p, uid, gid) {
+ var children
+ try {
+ children = fs.readdirSync(p)
+ } catch (er) {
+ if (er && er.code === "ENOTDIR") return fs.chownSync(p, uid, gid)
+ throw er
+ }
+ if (!children.length) return fs.chownSync(p, uid, gid)
+
+ children.forEach(function (child) {
+ var pathChild = path.resolve(p, child)
+ var stats = fs.lstatSync(pathChild)
+ if (!stats.isSymbolicLink())
+ chownrSync(pathChild, uid, gid)
+ })
+ return fs.chownSync(p, uid, gid)
+}
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/chownr/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/chownr/package.json
new file mode 100644
index 00000000000000..d19604dac4aa9d
--- /dev/null
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/chownr/package.json
@@ -0,0 +1,54 @@
+{
+ "author": {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me",
+ "url": "http://blog.izs.me/"
+ },
+ "name": "chownr",
+ "description": "like `chown -R`",
+ "version": "1.0.1",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/isaacs/chownr.git"
+ },
+ "main": "chownr.js",
+ "files": [
+ "chownr.js"
+ ],
+ "devDependencies": {
+ "mkdirp": "0.3",
+ "rimraf": "",
+ "tap": "^1.2.0"
+ },
+ "scripts": {
+ "test": "tap test/*.js"
+ },
+ "license": "ISC",
+ "gitHead": "c6c43844e80d7c7045e737a72b9fbb1ba0579a26",
+ "bugs": {
+ "url": "https://github.com/isaacs/chownr/issues"
+ },
+ "homepage": "https://github.com/isaacs/chownr#readme",
+ "_id": "chownr@1.0.1",
+ "_shasum": "e2a75042a9551908bebd25b8523d5f9769d79181",
+ "_from": "chownr@>=1.0.1 <2.0.0",
+ "_npmVersion": "3.2.2",
+ "_nodeVersion": "2.2.1",
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "isaacs@npmjs.com"
+ },
+ "dist": {
+ "shasum": "e2a75042a9551908bebd25b8523d5f9769d79181",
+ "tarball": "http://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ }
+ ],
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json
index b67333380c265e..466dfdfe0139b3 100644
--- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json
@@ -29,9 +29,25 @@
},
"readme": "# core-util-is\n\nThe `util.is*` functions introduced in Node v0.12.\n",
"readmeFilename": "README.md",
- "homepage": "https://github.com/isaacs/core-util-is#readme",
+ "homepage": "https://github.com/isaacs/core-util-is",
"_id": "core-util-is@1.0.1",
+ "dist": {
+ "shasum": "6b07085aef9a3ccac6ee53bf9d3df0c1521a5538",
+ "tarball": "http://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
+ },
+ "_from": "core-util-is@>=1.0.0 <1.1.0",
+ "_npmVersion": "1.3.23",
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "maintainers": [
+ {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ }
+ ],
+ "directories": {},
"_shasum": "6b07085aef9a3ccac6ee53bf9d3df0c1521a5538",
- "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz",
- "_from": "core-util-is@>=1.0.0 <1.1.0"
+ "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
}
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/package.json
index fb1eb3786d8168..19228ab6fdcaaf 100644
--- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/package.json
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/package.json
@@ -26,13 +26,28 @@
"url": "http://juliangruber.com"
},
"license": "MIT",
- "readme": "\n# isarray\n\n`Array#isArray` for older browsers.\n\n## Usage\n\n```js\nvar isArray = require('isarray');\n\nconsole.log(isArray([])); // => true\nconsole.log(isArray({})); // => false\n```\n\n## Installation\n\nWith [npm](http://npmjs.org) do\n\n```bash\n$ npm install isarray\n```\n\nThen bundle for the browser with\n[browserify](https://github.com/substack/browserify).\n\nWith [component](http://component.io) do\n\n```bash\n$ component install juliangruber/isarray\n```\n\n## License\n\n(MIT)\n\nCopyright (c) 2013 Julian Gruber <julian@juliangruber.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n",
- "readmeFilename": "README.md",
- "bugs": {
- "url": "https://github.com/juliangruber/isarray/issues"
- },
"_id": "isarray@0.0.1",
+ "dist": {
+ "shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf",
+ "tarball": "http://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
+ },
+ "_from": "isarray@0.0.1",
+ "_npmVersion": "1.2.18",
+ "_npmUser": {
+ "name": "juliangruber",
+ "email": "julian@juliangruber.com"
+ },
+ "maintainers": [
+ {
+ "name": "juliangruber",
+ "email": "julian@juliangruber.com"
+ }
+ ],
+ "directories": {},
"_shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf",
"_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "_from": "isarray@0.0.1"
+ "bugs": {
+ "url": "https://github.com/juliangruber/isarray/issues"
+ },
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json
index ee70702359198d..0364d54ba46af6 100644
--- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json
@@ -22,13 +22,33 @@
"browserify"
],
"license": "MIT",
- "readme": "**string_decoder.js** (`require('string_decoder')`) from Node.js core\n\nCopyright Joyent, Inc. and other Node contributors. See LICENCE file for details.\n\nVersion numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.**\n\nThe *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version.",
- "readmeFilename": "README.md",
+ "gitHead": "d46d4fd87cf1d06e031c23f1ba170ca7d4ade9a0",
"bugs": {
"url": "https://github.com/rvagg/string_decoder/issues"
},
"_id": "string_decoder@0.10.31",
"_shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94",
+ "_from": "string_decoder@>=0.10.0 <0.11.0",
+ "_npmVersion": "1.4.23",
+ "_npmUser": {
+ "name": "rvagg",
+ "email": "rod@vagg.org"
+ },
+ "maintainers": [
+ {
+ "name": "substack",
+ "email": "mail@substack.net"
+ },
+ {
+ "name": "rvagg",
+ "email": "rod@vagg.org"
+ }
+ ],
+ "dist": {
+ "shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94",
+ "tarball": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
+ },
+ "directories": {},
"_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "_from": "string_decoder@>=0.10.0 <0.11.0"
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/npm-registry-client/package.json b/deps/npm/node_modules/npm-registry-client/package.json
index ffcccd85dd3358..2a0a1611b685a5 100644
--- a/deps/npm/node_modules/npm-registry-client/package.json
+++ b/deps/npm/node_modules/npm-registry-client/package.json
@@ -6,7 +6,7 @@
},
"name": "npm-registry-client",
"description": "Client for the npm registry",
- "version": "6.5.1",
+ "version": "7.0.1",
"repository": {
"url": "git://github.com/isaacs/npm-registry-client.git"
},
@@ -15,7 +15,7 @@
"test": "standard && tap test/*.js"
},
"dependencies": {
- "chownr": "0",
+ "chownr": "^1.0.1",
"concat-stream": "^1.4.6",
"graceful-fs": "^3.0.0",
"mkdirp": "^0.5.0",
@@ -39,14 +39,42 @@
"npmlog": ""
},
"license": "ISC",
- "readme": "# npm-registry-client\n\nThe code that npm uses to talk to the registry.\n\nIt handles all the caching and HTTP calls.\n\n## Usage\n\n```javascript\nvar RegClient = require('npm-registry-client')\nvar client = new RegClient(config)\nvar uri = \"https://registry.npmjs.org/npm\"\nvar params = {timeout: 1000}\n\nclient.get(uri, params, function (error, data, raw, res) {\n // error is an error if there was a problem.\n // data is the parsed data object\n // raw is the json string\n // res is the response from couch\n})\n```\n\n# Registry URLs\n\nThe registry calls take either a full URL pointing to a resource in the\nregistry, or a base URL for the registry as a whole (including the registry\npath – but be sure to terminate the path with `/`). `http` and `https` URLs are\nthe only ones supported.\n\n## Using the client\n\nEvery call to the client follows the same pattern:\n\n* `uri` {String} The *fully-qualified* URI of the registry API method being\n invoked.\n* `params` {Object} Per-request parameters.\n* `callback` {Function} Callback to be invoked when the call is complete.\n\n### Credentials\n\nMany requests to the registry can by authenticated, and require credentials\nfor authorization. These credentials always look the same:\n\n* `username` {String}\n* `password` {String}\n* `email` {String}\n* `alwaysAuth` {Boolean} Whether calls to the target registry are always\n authed.\n\n**or**\n\n* `token` {String}\n* `alwaysAuth` {Boolean} Whether calls to the target registry are always\n authed.\n\n## API\n\n### client.access(uri, params, cb)\n\n* `uri` {String} Registry URL for the package's access API endpoint.\n Looks like `/-/package//access`.\n* `params` {Object} Object containing per-request properties.\n * `access` {String} New access level for the package. Can be either\n `public` or `restricted`. Registry will raise an error if trying\n to change the access level of an unscoped package.\n * `auth` {Credentials}\n\nSet the access level for scoped packages. For now, there are only two\naccess levels: \"public\" and \"restricted\".\n\n### client.adduser(uri, params, cb)\n\n* `uri` {String} Base registry URL.\n* `params` {Object} Object containing per-request properties.\n * `auth` {Credentials}\n* `cb` {Function}\n * `error` {Error | null}\n * `data` {Object} the parsed data object\n * `raw` {String} the json\n * `res` {Response Object} response from couch\n\nAdd a user account to the registry, or verify the credentials.\n\n### client.deprecate(uri, params, cb)\n\n* `uri` {String} Full registry URI for the deprecated package.\n* `params` {Object} Object containing per-request properties.\n * `version` {String} Semver version range.\n * `message` {String} The message to use as a deprecation warning.\n * `auth` {Credentials}\n* `cb` {Function}\n\nDeprecate a version of a package in the registry.\n\n### client.distTags.fetch(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `auth` {Credentials}\n* `cb` {Function}\n\nFetch all of the `dist-tags` for the named package.\n\n### client.distTags.add(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTag` {String} Name of the new `dist-tag`.\n * `version` {String} Exact version to be mapped to the `dist-tag`.\n * `auth` {Credentials}\n* `cb` {Function}\n\nAdd (or replace) a single dist-tag onto the named package.\n\n### client.distTags.set(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTags` {Object} Object containing a map from tag names to package\n versions.\n * `auth` {Credentials}\n* `cb` {Function}\n\nSet all of the `dist-tags` for the named package at once, creating any\n`dist-tags` that do not already exit. Any `dist-tags` not included in the\n`distTags` map will be removed.\n\n### client.distTags.update(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTags` {Object} Object containing a map from tag names to package\n versions.\n * `auth` {Credentials}\n* `cb` {Function}\n\nUpdate the values of multiple `dist-tags`, creating any `dist-tags` that do\nnot already exist. Any pre-existing `dist-tags` not included in the `distTags`\nmap will be left alone.\n\n### client.distTags.rm(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTag` {String} Name of the new `dist-tag`.\n * `auth` {Credentials}\n* `cb` {Function}\n\nRemove a single `dist-tag` from the named package.\n\n### client.get(uri, params, cb)\n\n* `uri` {String} The complete registry URI to fetch\n* `params` {Object} Object containing per-request properties.\n * `timeout` {Number} Duration before the request times out. Optional\n (default: never).\n * `follow` {Boolean} Follow 302/301 responses. Optional (default: true).\n * `staleOk` {Boolean} If there's cached data available, then return that to\n the callback quickly, and update the cache the background. Optional\n (default: false).\n * `auth` {Credentials} Optional.\n* `cb` {Function}\n\nFetches data from the registry via a GET request, saving it in the cache folder\nwith the ETag or the \"Last Modified\" timestamp.\n\n### client.publish(uri, params, cb)\n\n* `uri` {String} The registry URI for the package to publish.\n* `params` {Object} Object containing per-request properties.\n * `metadata` {Object} Package metadata.\n * `access` {String} Access for the package. Can be `public` or `restricted` (no default).\n * `body` {Stream} Stream of the package body / tarball.\n * `auth` {Credentials}\n* `cb` {Function}\n\nPublish a package to the registry.\n\nNote that this does not create the tarball from a folder.\n\n### client.star(uri, params, cb)\n\n* `uri` {String} The complete registry URI for the package to star.\n* `params` {Object} Object containing per-request properties.\n * `starred` {Boolean} True to star the package, false to unstar it. Optional\n (default: false).\n * `auth` {Credentials}\n* `cb` {Function}\n\nStar or unstar a package.\n\nNote that the user does not have to be the package owner to star or unstar a\npackage, though other writes do require that the user be the package owner.\n\n### client.stars(uri, params, cb)\n\n* `uri` {String} The base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `username` {String} Name of user to fetch starred packages for. Optional\n (default: user in `auth`).\n * `auth` {Credentials} Optional (required if `username` is omitted).\n* `cb` {Function}\n\nView your own or another user's starred packages.\n\n### client.tag(uri, params, cb)\n\n* `uri` {String} The complete registry URI to tag\n* `params` {Object} Object containing per-request properties.\n * `version` {String} Version to tag.\n * `tag` {String} Tag name to apply.\n * `auth` {Credentials}\n* `cb` {Function}\n\nMark a version in the `dist-tags` hash, so that `pkg@tag` will fetch the\nspecified version.\n\n### client.unpublish(uri, params, cb)\n\n* `uri` {String} The complete registry URI of the package to unpublish.\n* `params` {Object} Object containing per-request properties.\n * `version` {String} version to unpublish. Optional – omit to unpublish all\n versions.\n * `auth` {Credentials}\n* `cb` {Function}\n\nRemove a version of a package (or all versions) from the registry. When the\nlast version us unpublished, the entire document is removed from the database.\n\n### client.whoami(uri, params, cb)\n\n* `uri` {String} The base registry for the URI.\n* `params` {Object} Object containing per-request properties.\n * `auth` {Credentials}\n* `cb` {Function}\n\nSimple call to see who the registry thinks you are. Especially useful with\ntoken-based auth.\n\n\n## PLUMBING\n\nThe below are primarily intended for use by the rest of the API, or by the npm\ncaching logic directly.\n\n### client.request(uri, params, cb)\n\n* `uri` {String} URI pointing to the resource to request.\n* `params` {Object} Object containing per-request properties.\n * `method` {String} HTTP method. Optional (default: \"GET\").\n * `body` {Stream | Buffer | String | Object} The request body. Objects\n that are not Buffers or Streams are encoded as JSON. Optional – body\n only used for write operations.\n * `etag` {String} The cached ETag. Optional.\n * `lastModified` {String} The cached Last-Modified timestamp. Optional.\n * `follow` {Boolean} Follow 302/301 responses. Optional (default: true).\n * `auth` {Credentials} Optional.\n* `cb` {Function}\n * `error` {Error | null}\n * `data` {Object} the parsed data object\n * `raw` {String} the json\n * `res` {Response Object} response from couch\n\nMake a generic request to the registry. All the other methods are wrappers\naround `client.request`.\n\n### client.fetch(uri, params, cb)\n\n* `uri` {String} The complete registry URI to upload to\n* `params` {Object} Object containing per-request properties.\n * `headers` {Stream} HTTP headers to be included with the request. Optional.\n * `auth` {Credentials} Optional.\n* `cb` {Function}\n\nFetch a package from a URL, with auth set appropriately if included. Used to\ncache remote tarballs as well as request package tarballs from the registry.\n\n# Configuration\n\nThe client uses its own configuration, which is just passed in as a simple\nnested object. The following are the supported values (with their defaults, if\nany):\n\n* `proxy.http` {URL} The URL to proxy HTTP requests through.\n* `proxy.https` {URL} The URL to proxy HTTPS requests through. Defaults to be\n the same as `proxy.http` if unset.\n* `proxy.localAddress` {IP} The local address to use on multi-homed systems.\n* `ssl.ca` {String} Certificate signing authority certificates to trust.\n* `ssl.certificate` {String} Client certificate (PEM encoded). Enable access\n to servers that require client certificates.\n* `ssl.key` {String} Private key (PEM encoded) for client certificate.\n* `ssl.strict` {Boolean} Whether or not to be strict with SSL certificates.\n Default = `true`\n* `retry.count` {Number} Number of times to retry on GET failures. Default = 2.\n* `retry.factor` {Number} `factor` setting for `node-retry`. Default = 10.\n* `retry.minTimeout` {Number} `minTimeout` setting for `node-retry`.\n Default = 10000 (10 seconds)\n* `retry.maxTimeout` {Number} `maxTimeout` setting for `node-retry`.\n Default = 60000 (60 seconds)\n* `userAgent` {String} User agent header to send. Default =\n `\"node/{process.version}\"`\n* `log` {Object} The logger to use. Defaults to `require(\"npmlog\")` if\n that works, otherwise logs are disabled.\n* `defaultTag` {String} The default tag to use when publishing new packages.\n Default = `\"latest\"`\n* `couchToken` {Object} A token for use with\n [couch-login](https://npmjs.org/package/couch-login).\n* `sessionToken` {string} A random identifier for this set of client requests.\n Default = 8 random hexadecimal bytes.\n",
- "readmeFilename": "README.md",
- "gitHead": "dbb351ae906f40be03f21bbe28bd392a380dc7bb",
+ "gitHead": "250563a6a64f73e5e683e75aa21d36739f63159a",
"bugs": {
"url": "https://github.com/isaacs/npm-registry-client/issues"
},
"homepage": "https://github.com/isaacs/npm-registry-client#readme",
- "_id": "npm-registry-client@6.5.1",
- "_shasum": "328d2088252b69fa541c3dd9f7690288661592a1",
- "_from": "npm-registry-client@>=6.5.1 <6.6.0"
+ "_id": "npm-registry-client@7.0.1",
+ "_shasum": "1184253d2085dcaa01a394cfdd66f2dad0d26feb",
+ "_from": "npm-registry-client@7.0.1",
+ "_npmVersion": "2.13.5",
+ "_nodeVersion": "2.2.2",
+ "_npmUser": {
+ "name": "zkat",
+ "email": "kat@sykosomatic.org"
+ },
+ "dist": {
+ "shasum": "1184253d2085dcaa01a394cfdd66f2dad0d26feb",
+ "tarball": "http://registry.npmjs.org/npm-registry-client/-/npm-registry-client-7.0.1.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "isaacs",
+ "email": "isaacs@npmjs.com"
+ },
+ {
+ "name": "othiym23",
+ "email": "ogd@aoaioxxysz.net"
+ },
+ {
+ "name": "iarna",
+ "email": "me@re-becca.org"
+ },
+ {
+ "name": "zkat",
+ "email": "kat@sykosomatic.org"
+ }
+ ],
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-7.0.1.tgz"
}
diff --git a/deps/npm/node_modules/npm-registry-client/test/access.js b/deps/npm/node_modules/npm-registry-client/test/access.js
index 4081c329f7fb44..ba0fb2c813642e 100644
--- a/deps/npm/node_modules/npm-registry-client/test/access.js
+++ b/deps/npm/node_modules/npm-registry-client/test/access.js
@@ -6,91 +6,292 @@ var client = common.freshClient()
function nop () {}
-var URI = 'http://localhost:1337/-/package/underscore/access'
-var TOKEN = 'foo'
-var AUTH = {
- token: TOKEN
-}
-var LEVEL = 'public'
+var URI = 'http://localhost:1337'
var PARAMS = {
- level: LEVEL,
- auth: AUTH
+ auth: { token: 'foo' },
+ scope: 'myorg',
+ team: 'myteam',
+ package: '@foo/bar',
+ permissions: 'read-write'
}
-test('access call contract', function (t) {
- t.throws(function () {
- client.access(undefined, AUTH, nop)
- }, 'requires a URI')
-
- t.throws(function () {
- client.access([], PARAMS, nop)
- }, 'requires URI to be a string')
-
- t.throws(function () {
- client.access(URI, undefined, nop)
- }, 'requires params object')
-
- t.throws(function () {
- client.access(URI, '', nop)
- }, 'params must be object')
-
- t.throws(function () {
- client.access(URI, PARAMS, undefined)
- }, 'requires callback')
-
- t.throws(function () {
- client.access(URI, PARAMS, 'callback')
- }, 'callback must be function')
-
- t.throws(
- function () {
- var params = {
- auth: AUTH
- }
- client.access(URI, params, nop)
- },
- { name: 'AssertionError', message: 'must pass level to access' },
- 'access must include level'
- )
-
- t.throws(
- function () {
- var params = {
- level: LEVEL
- }
- client.access(URI, params, nop)
- },
- { name: 'AssertionError', message: 'must pass auth to access' },
- 'access must include auth'
- )
+var commands = [
+ 'public', 'restricted', 'grant', 'revoke', 'ls-packages', 'ls-collaborators'
+]
- t.end()
+test('access public', function (t) {
+ server.expect('POST', '/-/package/%40foo%2Fbar/access', function (req, res) {
+ t.equal(req.method, 'POST')
+ onJsonReq(req, function (json) {
+ t.deepEqual(json, { access: 'public' })
+ res.statusCode = 200
+ res.json({ accessChanged: true })
+ })
+ })
+ var params = Object.create(PARAMS)
+ params.package = '@foo/bar'
+ client.access('public', URI, params, function (error, data) {
+ t.ifError(error, 'no errors')
+ t.ok(data.accessChanged, 'access level set')
+ t.end()
+ })
})
-test('set access level on a package', function (t) {
- server.expect('POST', '/-/package/underscore/access', function (req, res) {
+test('access restricted', function (t) {
+ server.expect('POST', '/-/package/%40foo%2Fbar/access', function (req, res) {
t.equal(req.method, 'POST')
-
- var b = ''
- req.setEncoding('utf8')
- req.on('data', function (d) {
- b += d
+ onJsonReq(req, function (json) {
+ t.deepEqual(json, { access: 'restricted' })
+ res.statusCode = 200
+ res.json({ accessChanged: true })
})
+ })
+ client.access('restricted', URI, PARAMS, function (error, data) {
+ t.ifError(error, 'no errors')
+ t.ok(data.accessChanged, 'access level set')
+ t.end()
+ })
+})
- req.on('end', function () {
- var updated = JSON.parse(b)
-
- t.deepEqual(updated, { access: 'public' })
-
+test('access grant basic', function (t) {
+ server.expect('PUT', '/-/team/myorg/myteam/package', function (req, res) {
+ t.equal(req.method, 'PUT')
+ onJsonReq(req, function (json) {
+ t.deepEqual(json, {
+ permissions: PARAMS.permissions,
+ package: PARAMS.package
+ })
res.statusCode = 201
res.json({ accessChanged: true })
})
})
+ client.access('grant', URI, PARAMS, function (error, data) {
+ t.ifError(error, 'no errors')
+ t.ok(data.accessChanged, 'access level set')
+ t.end()
+ })
+})
- client.access(URI, PARAMS, function (error, data) {
+test('access revoke basic', function (t) {
+ server.expect('DELETE', '/-/team/myorg/myteam/package', function (req, res) {
+ t.equal(req.method, 'DELETE')
+ onJsonReq(req, function (json) {
+ t.deepEqual(json, {
+ package: PARAMS.package
+ })
+ res.statusCode = 200
+ res.json({ accessChanged: true })
+ })
+ })
+ client.access('revoke', URI, PARAMS, function (error, data) {
t.ifError(error, 'no errors')
t.ok(data.accessChanged, 'access level set')
+ t.end()
+ })
+})
+
+test('ls-packages on team', function (t) {
+ var serverPackages = {
+ '@foo/bar': 'write',
+ '@foo/util': 'read'
+ }
+ var clientPackages = {
+ '@foo/bar': 'read-write',
+ '@foo/util': 'read-only'
+ }
+ var uri = '/-/team/myorg/myteam/package?format=cli'
+ server.expect('GET', uri, function (req, res) {
+ t.equal(req.method, 'GET')
+ res.statusCode = 200
+ res.json(serverPackages)
+ })
+ client.access('ls-packages', URI, PARAMS, function (error, data) {
+ t.ifError(error, 'no errors')
+ t.same(data, clientPackages)
+ t.end()
+ })
+})
+
+test('ls-packages on org', function (t) {
+ var serverPackages = {
+ '@foo/bar': 'write',
+ '@foo/util': 'read'
+ }
+ var clientPackages = {
+ '@foo/bar': 'read-write',
+ '@foo/util': 'read-only'
+ }
+ var uri = '/-/org/myorg/package?format=cli'
+ server.expect('GET', uri, function (req, res) {
+ t.equal(req.method, 'GET')
+ res.statusCode = 200
+ res.json(serverPackages)
+ })
+ var params = Object.create(PARAMS)
+ params.team = null
+ client.access('ls-packages', URI, params, function (error, data) {
+ t.ifError(error, 'no errors')
+ t.same(data, clientPackages)
+ t.end()
+ })
+})
+test('ls-packages on user', function (t) {
+ var serverPackages = {
+ '@foo/bar': 'write',
+ '@foo/util': 'read'
+ }
+ var clientPackages = {
+ '@foo/bar': 'read-write',
+ '@foo/util': 'read-only'
+ }
+ var firstUri = '/-/org/myorg/package?format=cli'
+ server.expect('GET', firstUri, function (req, res) {
+ t.equal(req.method, 'GET')
+ res.statusCode = 404
+ res.json({error: 'not found'})
+ })
+ var secondUri = '/-/user/myorg/package?format=cli'
+ server.expect('GET', secondUri, function (req, res) {
+ t.equal(req.method, 'GET')
+ res.statusCode = 200
+ res.json(serverPackages)
+ })
+ var params = Object.create(PARAMS)
+ params.team = null
+ client.access('ls-packages', URI, params, function (error, data) {
+ t.ifError(error, 'no errors')
+ t.same(data, clientPackages)
t.end()
})
})
+
+test('ls-collaborators', function (t) {
+ var serverCollaborators = {
+ 'myorg:myteam': 'write',
+ 'myorg:anotherteam': 'read'
+ }
+ var clientCollaborators = {
+ 'myorg:myteam': 'read-write',
+ 'myorg:anotherteam': 'read-only'
+ }
+ var uri = '/-/package/%40foo%2Fbar/collaborators?format=cli'
+ server.expect('GET', uri, function (req, res) {
+ t.equal(req.method, 'GET')
+ res.statusCode = 200
+ res.json(serverCollaborators)
+ })
+ client.access('ls-collaborators', URI, PARAMS, function (error, data) {
+ t.ifError(error, 'no errors')
+ t.same(data, clientCollaborators)
+ t.end()
+ })
+})
+
+test('ls-collaborators w/ scope', function (t) {
+ var serverCollaborators = {
+ 'myorg:myteam': 'write',
+ 'myorg:anotherteam': 'read'
+ }
+ var clientCollaborators = {
+ 'myorg:myteam': 'read-write',
+ 'myorg:anotherteam': 'read-only'
+ }
+ var uri = '/-/package/%40foo%2Fbar/collaborators?format=cli&user=zkat'
+ server.expect('GET', uri, function (req, res) {
+ t.equal(req.method, 'GET')
+ res.statusCode = 200
+ res.json(serverCollaborators)
+ })
+ var params = Object.create(PARAMS)
+ params.user = 'zkat'
+ client.access('ls-collaborators', URI, params, function (error, data) {
+ t.ifError(error, 'no errors')
+ t.same(data, clientCollaborators)
+ t.end()
+ })
+})
+
+test('access command base validation', function (t) {
+ t.throws(function () {
+ client.access(undefined, URI, PARAMS, nop)
+ }, 'command is required')
+ t.throws(function () {
+ client.access('whoops', URI, PARAMS, nop)
+ }, 'command must be a valid subcommand')
+ commands.forEach(function (cmd) {
+ t.throws(function () {
+ client.access(cmd, undefined, PARAMS, nop)
+ }, 'registry URI is required')
+ t.throws(function () {
+ client.access(cmd, URI, undefined, nop)
+ }, 'params is required')
+ t.throws(function () {
+ client.access(cmd, URI, '', nop)
+ }, 'params must be an object')
+ t.throws(function () {
+ client.access(cmd, URI, {scope: 'o', team: 't'}, nop)
+ }, 'auth is required')
+ t.throws(function () {
+ client.access(cmd, URI, {auth: 5, scope: 'o', team: 't'}, nop)
+ }, 'auth must be an object')
+ t.throws(function () {
+ client.access(cmd, URI, PARAMS, {})
+ }, 'callback must be a function')
+ t.throws(function () {
+ client.access(cmd, URI, PARAMS, undefined)
+ }, 'callback is required')
+ if (contains([
+ 'public', 'restricted', 'grant', 'revoke', 'ls-collaborators'
+ ], cmd)) {
+ t.throws(function () {
+ var params = Object.create(PARAMS)
+ params.package = null
+ client.access(cmd, URI, params, nop)
+ }, 'package is required')
+ t.throws(function () {
+ var params = Object.create(PARAMS)
+ params.package = 'underscore'
+ client.access(cmd, URI, params, nop)
+ }, 'only scopes packages are allowed')
+ }
+ if (contains(['grant', 'revoke', 'ls-packages'], cmd)) {
+ t.throws(function () {
+ var params = Object.create(PARAMS)
+ params.scope = null
+ client.access(cmd, URI, params, nop)
+ }, 'scope is required')
+ }
+ if (contains(['grant', 'revoke'], cmd)) {
+ t.throws(function () {
+ var params = Object.create(PARAMS)
+ params.team = null
+ client.access(cmd, URI, params, nop)
+ }, 'team is required')
+ }
+ if (cmd === 'grant') {
+ t.throws(function () {
+ var params = Object.create(PARAMS)
+ params.permissions = null
+ client.access(cmd, URI, params, nop)
+ }, 'permissions are required')
+ t.throws(function () {
+ var params = Object.create(PARAMS)
+ params.permissions = 'idkwhat'
+ client.access(cmd, URI, params, nop)
+ }, 'permissions must be either read-only or read-write')
+ }
+ })
+ t.end()
+})
+
+function onJsonReq (req, cb) {
+ var buffer = ''
+ req.setEncoding('utf8')
+ req.on('data', function (data) { buffer += data })
+ req.on('end', function () { cb(buffer ? JSON.parse(buffer) : undefined) })
+}
+
+function contains (arr, item) {
+ return arr.indexOf(item) !== -1
+}
diff --git a/deps/npm/node_modules/npm-registry-client/test/fetch-404.js b/deps/npm/node_modules/npm-registry-client/test/fetch-404.js
index e05e36f26cd833..805c88a672577f 100644
--- a/deps/npm/node_modules/npm-registry-client/test/fetch-404.js
+++ b/deps/npm/node_modules/npm-registry-client/test/fetch-404.js
@@ -1,9 +1,7 @@
var resolve = require('path').resolve
var createReadStream = require('graceful-fs').createReadStream
-var readFileSync = require('graceful-fs').readFileSync
var tap = require('tap')
-var cat = require('concat-stream')
var server = require('./lib/server.js')
var common = require('./lib/common.js')
@@ -14,10 +12,7 @@ tap.test('fetch with a 404 response', function (t) {
server.expect('/underscore/-/underscore-1.3.3.tgz', function (req, res) {
t.equal(req.method, 'GET', 'got expected method')
- res.writeHead(200, {
- 'content-type': 'application/x-tar',
- 'content-encoding': 'gzip'
- })
+ res.writeHead(404)
createReadStream(tgz).pipe(res)
})
@@ -27,19 +22,13 @@ tap.test('fetch with a 404 response', function (t) {
client.fetch(
'http://localhost:1337/underscore/-/underscore-1.3.3.tgz',
defaulted,
- function (er, res) {
- t.ifError(er, 'loaded successfully')
-
- var sink = cat(function (data) {
- t.deepEqual(data, readFileSync(tgz))
- t.end()
- })
-
- res.on('error', function (error) {
- t.ifError(error, 'no errors on stream')
- })
-
- res.pipe(sink)
+ function (err, res) {
+ t.equal(
+ err.message,
+ 'fetch failed with status code 404',
+ 'got expected error message'
+ )
+ t.end()
}
)
})
diff --git a/deps/npm/node_modules/npm-registry-client/test/fixtures/@npm/npm-registry-client/cache.json b/deps/npm/node_modules/npm-registry-client/test/fixtures/@npm/npm-registry-client/cache.json
new file mode 100644
index 00000000000000..4561db502b18e5
--- /dev/null
+++ b/deps/npm/node_modules/npm-registry-client/test/fixtures/@npm/npm-registry-client/cache.json
@@ -0,0 +1 @@
+{"_id":"@npm%2fnpm-registry-client","_rev":"213-0a1049cf56172b7d9a1184742c6477b9","name":"@npm/npm-registry-client","description":"Client for the npm registry","dist-tags":{"latest":"2.0.4","v2.0":"2.0.3"},"versions":{"0.0.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"@npm%2fnpm-registry-client@0.0.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.7.10-pre","_defaultsLoaded":true,"dist":{"shasum":"693a08f6d2faea22bbd2bf412508a63d3e6229a7","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.1.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"@npm%2fnpm-registry-client@0.0.2","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.7.10-pre","_defaultsLoaded":true,"dist":{"shasum":"b48c0ec5563c6a6fdc253454fc56d2c60c5a26f4","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.2.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"@npm%2fnpm-registry-client@0.0.3","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.7.10-pre","_defaultsLoaded":true,"dist":{"shasum":"ccc0254c2d59e3ea9b9050e2b16edef78df1a1e8","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.3.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"@npm%2fnpm-registry-client@0.0.4","_engineSupported":true,"_npmVersion":"1.1.25","_nodeVersion":"v0.7.10-pre","_defaultsLoaded":true,"dist":{"shasum":"faabd25ef477521c74ac21e0f4cf3a2f66d18fb3","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.4.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.5":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.5","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_id":"@npm%2fnpm-registry-client@0.0.5","dist":{"shasum":"85219810c9d89ae8d28ea766e7cf74efbd9f1e52","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.5.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.6":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"The code that npm uses to talk to the registry","version":"0.0.6","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_id":"@npm%2fnpm-registry-client@0.0.6","dist":{"shasum":"cc6533b3b41df65e6e9db2601fbbf1a509a7e94c","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.6.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.7":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"The code that npm uses to talk to the registry","version":"0.0.7","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_id":"@npm%2fnpm-registry-client@0.0.7","dist":{"shasum":"0cee1d1c61f1c8e483774fe1f7bbb81c4f394a3a","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.7.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.8":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.8","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.0.8","dist":{"shasum":"1b7411c3f7310ec2a96b055b00e7ca606e47bd07","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.8.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.9":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.9","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.0.9","dist":{"shasum":"6d5bfde431559ac9e2e52a7db85f5839b874f022","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.9.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.10":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.10","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.0.10","dist":{"shasum":"0c8b6a4615bce82aa6cc04a0d1f7dc89921f7a38","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.10.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.11":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.11","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.0.11","dist":{"shasum":"afab40be5bed1faa946d8e1827844698f2ec1db7","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.11.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.1.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.1.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.1.0","dist":{"shasum":"1077d6bbb5e432450239dc6622a59474953ffbea","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.1.0.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.1.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.1.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.1.1","dist":{"shasum":"759765361d09b715270f59cf50f10908e4e9c5fc","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.1.1.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.1.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.1.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.1.2","dist":{"shasum":"541ce93abb3d35f5c325545c718dd3bbeaaa9ff0","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.1.2.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.1.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.1.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.1.3","dist":{"shasum":"e9a40d7031e8f809af5fd85aa9aac979e17efc97","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.1.3.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.1.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.1.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.1.4","dist":{"shasum":"b211485b046191a1085362376530316f0cab0420","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.1.4.tgz"},"_npmVersion":"1.1.48","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.0","dist":{"shasum":"6508a4b4d96f31057d5200ca5779531bafd2b840","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.0.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.1","dist":{"shasum":"1bc8c4576c368cd88253d8a52daf40c55b89bb1a","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.1.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.5":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.5","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.5","dist":{"shasum":"2f55d675dfb977403b1ad0d96874c1d30e8058d7","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.5.tgz"},"_npmVersion":"1.1.51","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.6":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.6","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.6","dist":{"shasum":"f05df6695360360ad220e6e13a6a7bace7165fbe","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.6.tgz"},"_npmVersion":"1.1.56","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.7":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.7","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.7","dist":{"shasum":"867bad8854cae82ed89ee3b7f1d391af59491671","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.7.tgz"},"_npmVersion":"1.1.59","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.8":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.8","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.8","dist":{"shasum":"ef194cdb70f1ea03a576cff2c97392fa96e36563","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.8.tgz"},"_npmVersion":"1.1.62","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.9":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.9","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.9","dist":{"shasum":"3cec10431dfed1594adaf99c50f482ee56ecf9e4","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.9.tgz"},"_npmVersion":"1.1.59","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.10":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.10","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.10","dist":{"shasum":"1e69726dae0944e78562fd77243f839c6a2ced1e","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.10.tgz"},"_npmVersion":"1.1.64","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.11":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.11","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.11","dist":{"shasum":"d92f33c297eb1bbd57fd597c3d8f5f7e9340a0b5","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.11.tgz"},"_npmVersion":"1.1.70","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.12":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.12","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.12","dist":{"shasum":"3bfb6fc0e4b131d665580cd1481c341fe521bfd3","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.12.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.13":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.13","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.13","dist":{"shasum":"e03f2a4340065511b7184a3e2862cd5d459ef027","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.13.tgz"},"_from":".","_npmVersion":"1.2.4","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.14":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.14","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.14","dist":{"shasum":"186874a7790417a340d582b1cd4a7c338087ee12","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.14.tgz"},"_from":".","_npmVersion":"1.2.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.15":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.15","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.15","dist":{"shasum":"f71f32b7185855f1f8b7a5ef49e49d2357c2c552","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.15.tgz"},"_from":".","_npmVersion":"1.2.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.16":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.16","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.16","dist":{"shasum":"3331323b5050fc5afdf77c3a35913c16f3e43964","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.16.tgz"},"_from":".","_npmVersion":"1.2.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.17":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.17","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.17","dist":{"shasum":"1df2bbecac6751f5d9600fb43722aef96d956773","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.17.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.18":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.18","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.18","dist":{"shasum":"198c8d15ed9b1ed546faf6e431eb63a6b18193ad","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.18.tgz"},"_from":".","_npmVersion":"1.2.13","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.19":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.19","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.16","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.19","dist":{"shasum":"106da826f0d2007f6e081f2b68fb6f26fa951b20","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.19.tgz"},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.20":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.20","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.16","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.20","dist":{"shasum":"3fff194331e26660be2cf8ebf45ddf7d36add5f6","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.20.tgz"},"_from":".","_npmVersion":"1.2.15","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.21":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.21","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.16","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.21","dist":{"shasum":"d85dd32525f193925c46ff9eb0e0f529dfd1b254","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.21.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.22":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.22","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.20.0","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.22","dist":{"shasum":"caa22ff40a1ccd632a660b8b80c333c8f92d5a17","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.22.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.23":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.23","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.20.0","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.23","dist":{"shasum":"a320ab2b1d048b4f7b88e40bd86974ca322b4c24","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.23.tgz"},"_from":".","_npmVersion":"1.2.19","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.24":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.24","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.20.0","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.24","dist":{"shasum":"e12f644338619319ee7f233363a1714a87f3c72d","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.24.tgz"},"_from":".","_npmVersion":"1.2.22","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.25":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.25","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.20.0","graceful-fs":"~1.2.0","semver":"~2.0.5","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.25","dist":{"shasum":"c2caeb1dcf937d6fcc4a187765d401f5e2f54027","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.25.tgz"},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.26":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.26","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.20.0","graceful-fs":"~1.2.0","semver":"~2.0.5","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.26","dist":{"shasum":"4c5a2b3de946e383032f10fa497d0c15ee5f4c60","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.26.tgz"},"_from":".","_npmVersion":"1.3.1","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.27":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.27","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.20.0","graceful-fs":"~2.0.0","semver":"~2.0.5","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.27","dist":{"shasum":"8f338189d32769267886a07ad7b7fd2267446adf","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.27.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.28":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.28","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"~2.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.28","dist":{"shasum":"959141fc0180d7b1ad089e87015a8a2142a8bffc","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.28.tgz"},"_from":".","_npmVersion":"1.3.6","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.29":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.29","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.2.29","dist":{"shasum":"66ff2766f0c61d41e8a6139d3692d8833002c686","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.29.tgz"},"_from":".","_npmVersion":"1.3.12","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.30":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.30","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.2.30","dist":{"shasum":"f01cae5c51aa0a1c5dc2516cbad3ebde068d3eaa","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.30.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.31":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.31","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.2.31","dist":{"shasum":"24a23e24e43246677cb485f8391829e9536563d4","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.31.tgz"},"_from":".","_npmVersion":"1.3.17","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.0","dist":{"shasum":"66eab02a69be67f232ac14023eddfb8308c2eccd","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.0.tgz"},"_from":".","_npmVersion":"1.3.18","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.1","dist":{"shasum":"16dba07cc304442edcece378218672d0a1258ef8","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.1.tgz"},"_from":".","_npmVersion":"1.3.18","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.2","dist":{"shasum":"ea3060bd0a87fb1d97b87433b50f38f7272b1686","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.2.tgz"},"_from":".","_npmVersion":"1.3.20","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.3","dist":{"shasum":"da08bb681fb24aa5c988ca71f8c10f27f09daf4a","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.3.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.4","dist":{"shasum":"25d771771590b1ca39277aea4506af234c5f4342","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.4.tgz"},"_from":".","_npmVersion":"1.3.25","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.5":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.5","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.5","dist":{"shasum":"98ba1ac851a3939a3fb9917c28fa8da522dc635f","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.5.tgz"},"_from":".","_npmVersion":"1.3.25","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.6":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.6","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.6","dist":{"shasum":"c48a2a03643769acc49672860f7920ec6bffac6e","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.6.tgz"},"_from":".","_npmVersion":"1.3.26","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.0","dist":{"shasum":"30d0c178b7f2e54183a6a3fc9fe4071eb10290bf","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.0.tgz"},"_from":".","_npmVersion":"1.3.26","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.1","dist":{"shasum":"9c49b3e44558e2072158fb085be8a083c5f83537","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.1.tgz"},"_from":".","_npmVersion":"1.4.0","_npmUser":{"name":"npm-www","email":"npm@npmjs.com"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.2","dist":{"shasum":"d9568a9413bee14951201ce73f3b3992ec6658c0","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.2.tgz"},"_from":".","_npmVersion":"1.4.1","_npmUser":{"name":"npm-www","email":"npm@npmjs.com"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.3","dist":{"shasum":"aa188fc5067158e991a57f4697c54994108f5389","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.3.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.4","dist":{"shasum":"f9dbc383a49069d8c7f67755a3ff6e424aff584f","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.4.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.5":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.5","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.5","dist":{"shasum":"7d6fdca46139470715f9477ddb5ad3e770d4de7b","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.5.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.6":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.6","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.6","_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"657f69a79543fc4cc264c3b2de958bd15f7140fe","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.6.tgz"},"directories":{}},"0.4.7":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.7","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.7","dist":{"shasum":"f4369b59890da7882527eb7c427dd95d43707afb","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.7.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.8":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.8","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.8","_shasum":"a6685a161033101be6064b7af887ab440e8695d0","_from":".","_npmVersion":"1.4.8","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"a6685a161033101be6064b7af887ab440e8695d0","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.8.tgz"},"directories":{}},"0.4.9":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.9","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.9","_shasum":"304d3d4726a58e33d8cc965afdc9ed70b996580c","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"304d3d4726a58e33d8cc965afdc9ed70b996580c","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.9.tgz"},"directories":{}},"0.4.10":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.10","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.10","_shasum":"ab7bf1be3ba07d769eaf74dee3c9347e02283116","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"ab7bf1be3ba07d769eaf74dee3c9347e02283116","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.10.tgz"},"directories":{}},"0.4.11":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.11","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"2 >=2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.11","_shasum":"032e9b6b050ed052ee9441841a945a184ea6bc33","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"032e9b6b050ed052ee9441841a945a184ea6bc33","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.11.tgz"},"directories":{}},"0.4.12":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.12","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"2 >=2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.12","_shasum":"34303422f6a3da93ca3a387a2650d707c8595b99","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"34303422f6a3da93ca3a387a2650d707c8595b99","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.12.tgz"},"directories":{}},"1.0.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"1.0.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"~2.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@1.0.0","_shasum":"2a6f9dfdce5f8ebf4b9af4dbfd738384d25014e5","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"2a6f9dfdce5f8ebf4b9af4dbfd738384d25014e5","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-1.0.0.tgz"},"directories":{}},"1.0.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"1.0.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"~2.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"98b1278c230cf6c159f189e2f8c69daffa727ab8","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@1.0.1","_shasum":"c5f6a87d285f2005a35d3f67d9c724bce551b0f1","_from":".","_npmVersion":"1.4.13","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"c5f6a87d285f2005a35d3f67d9c724bce551b0f1","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-1.0.1.tgz"},"directories":{}},"2.0.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"2.0.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"~2.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"47a98069b6a34e751cbd5b84ce92858cae5abe70","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@2.0.0","_shasum":"88810dac2d534c0df1d905c79e723392fcfc791a","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"88810dac2d534c0df1d905c79e723392fcfc791a","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-2.0.0.tgz"},"directories":{}},"2.0.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"2.0.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"123e40131f83f7265f66ecd2a558cce44a3aea86","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@2.0.1","_shasum":"611c7cb7c8f7ff22be2ebc6398423b5de10db0e2","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"611c7cb7c8f7ff22be2ebc6398423b5de10db0e2","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-2.0.1.tgz"},"directories":{}},"2.0.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"2.0.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"6ecc311c9dd4890f2d9b6bae60447070a3321e12","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@2.0.2","_shasum":"a82b000354c7f830114fb18444764bc477d5740f","_from":".","_npmVersion":"1.4.15","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"a82b000354c7f830114fb18444764bc477d5740f","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-2.0.2.tgz"},"directories":{}},"3.0.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","normalize-package-data":"^0.4.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"6bb1aec1e85fa82ee075bd997d6fb9f2dbb7f643","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.0","_shasum":"4febc5cdb274e9fa06bc3008910e3fa1ec007994","_from":".","_npmVersion":"1.5.0-pre","_npmUser":{"name":"othiym23","email":"ogd@aoaioxxysz.net"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"4febc5cdb274e9fa06bc3008910e3fa1ec007994","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.0.tgz"},"directories":{}},"3.0.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","normalize-package-data":"^0.4.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"fe8382dde609ea1e3580fcdc5bc3d0bba119cfc6","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.1","_shasum":"5f3ee362ce5c237cfb798fce22c77875fc1a63c2","_from":".","_npmVersion":"1.5.0-alpha-1","_npmUser":{"name":"othiym23","email":"ogd@aoaioxxysz.net"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"5f3ee362ce5c237cfb798fce22c77875fc1a63c2","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.1.tgz"},"directories":{}},"2.0.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"2.0.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"2578fb9a807d77417554ba235ba8fac39405e832","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@2.0.3","_shasum":"93dad3d9a162c99404badb71739c622c0f3b9a72","_from":".","_npmVersion":"1.5.0-alpha-1","_npmUser":{"name":"othiym23","email":"ogd@aoaioxxysz.net"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"93dad3d9a162c99404badb71739c622c0f3b9a72","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-2.0.3.tgz"},"directories":{}},"3.0.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","normalize-package-data":"^0.4.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"15343019160ace0b9874cf0ec186b3425dbc7301","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.2","_shasum":"5dd0910157ce55f4286a1871d39f9a2128cd3c99","_from":".","_npmVersion":"1.5.0-alpha-2","_npmUser":{"name":"othiym23","email":"ogd@aoaioxxysz.net"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"5dd0910157ce55f4286a1871d39f9a2128cd3c99","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.2.tgz"},"directories":{}},"3.0.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","normalize-package-data":"^0.4.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1 || 3.x","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"b18a780d1185f27c06c27812147b83aba0d4a2f5","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.3","_shasum":"2377dc1cf69b4d374b3a95fb7feba8c804d8cb30","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"2377dc1cf69b4d374b3a95fb7feba8c804d8cb30","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.3.tgz"},"directories":{}},"3.0.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.5.0","normalize-package-data":"^0.4.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1 || 3.x","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"54900fe4b2eb5b99ee6dfe173f145732fdfae80e","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.4","_shasum":"d4a177d1f25615cfaef9b6844fa366ffbf5f578a","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"d4a177d1f25615cfaef9b6844fa366ffbf5f578a","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.4.tgz"},"directories":{}},"3.0.5":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.5","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"0.5","normalize-package-data":"0.4","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"2","semver":"2 >=2.2.1 || 3.x","slide":"^1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"635db1654346bc86473df7b39626601425f46177","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.5","_shasum":"cdabaefa399b81ac8a86a48718aefd80e7b19ff3","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"cdabaefa399b81ac8a86a48718aefd80e7b19ff3","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.5.tgz"},"directories":{}},"3.0.6":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.6","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"^0.5.0","normalize-package-data":"0.4","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"2","semver":"2 >=2.2.1 || 3.x","slide":"^1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"ISC","gitHead":"eba30fadd724ed5cad1aec95ac3ee907a59b7317","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.6","_shasum":"14a17d9a60ed2a80b04edcbc596dbce0d96540ee","_from":".","_npmVersion":"1.4.22","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"14a17d9a60ed2a80b04edcbc596dbce0d96540ee","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.6.tgz"},"directories":{}},"2.0.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"2.0.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"^0.5.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"ISC","gitHead":"a10f621d9cdc813b9d3092a14b661f65bfa6d40d","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@2.0.4","_shasum":"528e08900d7655c12096d1637d1c3a7a5b451019","_from":".","_npmVersion":"1.4.22","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"528e08900d7655c12096d1637d1c3a7a5b451019","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-2.0.4.tgz"},"directories":{}}},"readme":"# npm-registry-client\u000a\u000aThe code that npm uses to talk to the registry.\u000a\u000aIt handles all the caching and HTTP calls.\u000a\u000a## Usage\u000a\u000a```javascript\u000avar RegClient = require('npm-registry-client')\u000avar client = new RegClient(config)\u000avar uri = \"npm://registry.npmjs.org/npm\"\u000avar options = {timeout: 1000}\u000a\u000aclient.get(uri, options, function (error, data, raw, res) {\u000a // error is an error if there was a problem.\u000a // data is the parsed data object\u000a // raw is the json string\u000a // res is the response from couch\u000a})\u000a```\u000a\u000a# Registry URLs\u000a\u000aThe registry calls take either a full URL pointing to a resource in the\u000aregistry, or a base URL for the registry as a whole (for the base URL, any path\u000awill be ignored). In addition to `http` and `https`, `npm` URLs are allowed.\u000a`npm` URLs are `https` URLs with the additional restrictions that they will\u000aalways include authorization credentials, and the response is always registry\u000ametadata (and not tarballs or other attachments).\u000a\u000a# Configuration\u000a\u000aThis program is designed to work with\u000a[npmconf](https://npmjs.org/package/npmconf), but you can also pass in\u000aa plain-jane object with the appropriate configs, and it'll shim it\u000afor you. Any configuration thingie that has get/set/del methods will\u000aalso be accepted.\u000a\u000a* `cache` **Required** {String} Path to the cache folder\u000a* `always-auth` {Boolean} Auth even for GET requests.\u000a* `auth` {String} A base64-encoded `username:password`\u000a* `email` {String} User's email address\u000a* `tag` {String} The default tag to use when publishing new packages.\u000a Default = `\"latest\"`\u000a* `ca` {String} Cerficate signing authority certificates to trust.\u000a* `cert` {String} Client certificate (PEM encoded). Enable access\u000a to servers that require client certificates\u000a* `key` {String} Private key (PEM encoded) for client certificate 'cert'\u000a* `strict-ssl` {Boolean} Whether or not to be strict with SSL\u000a certificates. Default = `true`\u000a* `user-agent` {String} User agent header to send. Default =\u000a `\"node/{process.version} {process.platform} {process.arch}\"`\u000a* `log` {Object} The logger to use. Defaults to `require(\"npmlog\")` if\u000a that works, otherwise logs are disabled.\u000a* `fetch-retries` {Number} Number of times to retry on GET failures.\u000a Default=2\u000a* `fetch-retry-factor` {Number} `factor` setting for `node-retry`. Default=10\u000a* `fetch-retry-mintimeout` {Number} `minTimeout` setting for `node-retry`.\u000a Default=10000 (10 seconds)\u000a* `fetch-retry-maxtimeout` {Number} `maxTimeout` setting for `node-retry`.\u000a Default=60000 (60 seconds)\u000a* `proxy` {URL} The url to proxy requests through.\u000a* `https-proxy` {URL} The url to proxy https requests through.\u000a Defaults to be the same as `proxy` if unset.\u000a* `_auth` {String} The base64-encoded authorization header.\u000a* `username` `_password` {String} Username/password to use to generate\u000a `_auth` if not supplied.\u000a* `_token` {Object} A token for use with\u000a [couch-login](https://npmjs.org/package/couch-login)\u000a\u000a# client.request(method, uri, options, cb)\u000a\u000a* `method` {String} HTTP method\u000a* `uri` {String} URI pointing to the resource to request\u000a* `options` {Object} Object containing optional per-request properties.\u000a * `what` {Stream | Buffer | String | Object} The request body. Objects\u000a that are not Buffers or Streams are encoded as JSON.\u000a * `etag` {String} The cached ETag\u000a * `follow` {Boolean} Follow 302/301 responses (defaults to true)\u000a* `cb` {Function}\u000a * `error` {Error | null}\u000a * `data` {Object} the parsed data object\u000a * `raw` {String} the json\u000a * `res` {Response Object} response from couch\u000a\u000aMake a request to the registry. All the other methods are wrappers around\u000a`request`.\u000a\u000a# client.adduser(base, username, password, email, cb)\u000a\u000a* `base` {String} Base registry URL\u000a* `username` {String}\u000a* `password` {String}\u000a* `email` {String}\u000a* `cb` {Function}\u000a\u000aAdd a user account to the registry, or verify the credentials.\u000a\u000a# client.deprecate(uri, version, message, cb)\u000a\u000a* `uri` {String} Full registry URI for the deprecated package\u000a* `version` {String} Semver version range\u000a* `message` {String} The message to use as a deprecation warning\u000a* `cb` {Function}\u000a\u000aDeprecate a version of a package in the registry.\u000a\u000a# client.bugs(uri, cb)\u000a\u000a* `uri` {String} Full registry URI for the package\u000a* `cb` {Function}\u000a\u000aGet the url for bugs of a package\u000a\u000a# client.get(uri, options, cb)\u000a\u000a* `uri` {String} The complete registry URI to fetch\u000a* `options` {Object} Object containing optional per-request properties.\u000a * `timeout` {Number} Duration before the request times out.\u000a * `follow` {Boolean} Follow 302/301 responses (defaults to true)\u000a * `staleOk` {Boolean} If there's cached data available, then return that\u000a to the callback quickly, and update the cache the background.\u000a\u000aFetches data from the registry via a GET request, saving it in the cache folder\u000awith the ETag.\u000a\u000a# client.publish(uri, data, tarball, cb)\u000a\u000a* `uri` {String} The registry URI to publish to\u000a* `data` {Object} Package data\u000a* `tarball` {String | Stream} Filename or stream of the package tarball\u000a* `cb` {Function}\u000a\u000aPublish a package to the registry.\u000a\u000aNote that this does not create the tarball from a folder. However, it can\u000aaccept a gzipped tar stream or a filename to a tarball.\u000a\u000a# client.star(uri, starred, cb)\u000a\u000a* `uri` {String} The complete registry URI to star\u000a* `starred` {Boolean} True to star the package, false to unstar it.\u000a* `cb` {Function}\u000a\u000aStar or unstar a package.\u000a\u000aNote that the user does not have to be the package owner to star or unstar a\u000apackage, though other writes do require that the user be the package owner.\u000a\u000a# client.stars(base, username, cb)\u000a\u000a* `base` {String} The base URL for the registry\u000a* `username` {String} Name of user to fetch starred packages for.\u000a* `cb` {Function}\u000a\u000aView your own or another user's starred packages.\u000a\u000a# client.tag(uri, version, tag, cb)\u000a\u000a* `uri` {String} The complete registry URI to tag\u000a* `version` {String} Version to tag\u000a* `tag` {String} Tag name to apply\u000a* `cb` {Function}\u000a\u000aMark a version in the `dist-tags` hash, so that `pkg@tag` will fetch the\u000aspecified version.\u000a\u000a# client.unpublish(uri, [ver], cb)\u000a\u000a* `uri` {String} The complete registry URI to unpublish\u000a* `ver` {String} version to unpublish. Leave blank to unpublish all\u000a versions.\u000a* `cb` {Function}\u000a\u000aRemove a version of a package (or all versions) from the registry. When the\u000alast version us unpublished, the entire document is removed from the database.\u000a\u000a# client.upload(uri, file, [etag], [nofollow], cb)\u000a\u000a* `uri` {String} The complete registry URI to upload to\u000a* `file` {String | Stream} Either the filename or a readable stream\u000a* `etag` {String} Cache ETag\u000a* `nofollow` {Boolean} Do not follow 301/302 responses\u000a* `cb` {Function}\u000a\u000aUpload an attachment. Mostly used by `client.publish()`.\u000a","maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"time":{"modified":"2014-07-31T21:59:52.896Z","created":"2012-06-07T04:43:36.581Z","0.0.1":"2012-06-07T04:43:38.123Z","0.0.2":"2012-06-07T05:35:05.937Z","0.0.3":"2012-06-09T00:55:25.861Z","0.0.4":"2012-06-11T03:53:26.548Z","0.0.5":"2012-06-11T23:48:11.235Z","0.0.6":"2012-06-17T06:23:27.320Z","0.0.7":"2012-06-18T19:19:38.315Z","0.0.8":"2012-06-28T20:40:20.563Z","0.0.9":"2012-07-10T03:28:04.651Z","0.0.10":"2012-07-11T17:03:45.151Z","0.0.11":"2012-07-17T14:06:37.489Z","0.1.0":"2012-07-23T18:17:38.007Z","0.1.1":"2012-07-23T21:21:28.196Z","0.1.2":"2012-07-24T06:14:12.831Z","0.1.3":"2012-08-07T02:02:20.564Z","0.1.4":"2012-08-15T03:04:52.822Z","0.1.5":"2012-08-17T21:59:33.310Z","0.2.0":"2012-08-17T22:00:18.081Z","0.2.1":"2012-08-17T22:07:28.827Z","0.2.2":"2012-08-17T22:37:24.352Z","0.2.3":"2012-08-19T19:16:44.808Z","0.2.4":"2012-08-19T19:18:51.792Z","0.2.5":"2012-08-20T16:54:50.794Z","0.2.6":"2012-08-22T00:25:04.766Z","0.2.7":"2012-08-27T19:07:34.829Z","0.2.8":"2012-10-02T19:53:50.661Z","0.2.9":"2012-10-03T22:09:50.766Z","0.2.10":"2012-10-25T14:55:54.216Z","0.2.11":"2012-12-21T16:26:38.094Z","0.2.12":"2013-01-18T22:22:41.668Z","0.2.13":"2013-02-06T00:16:35.939Z","0.2.14":"2013-02-10T02:44:02.764Z","0.2.15":"2013-02-11T19:18:55.678Z","0.2.16":"2013-02-15T17:09:03.249Z","0.2.17":"2013-02-16T03:47:13.898Z","0.2.18":"2013-03-06T22:09:23.536Z","0.2.19":"2013-03-20T06:27:39.128Z","0.2.20":"2013-03-28T00:43:07.558Z","0.2.21":"2013-04-29T15:46:54.094Z","0.2.22":"2013-04-29T15:51:02.178Z","0.2.23":"2013-05-11T00:28:14.198Z","0.2.24":"2013-05-24T21:27:50.693Z","0.2.25":"2013-06-20T15:36:46.277Z","0.2.26":"2013-07-06T17:12:54.670Z","0.2.27":"2013-07-11T07:14:45.740Z","0.2.28":"2013-08-02T20:27:41.732Z","0.2.29":"2013-10-28T18:23:24.477Z","0.2.30":"2013-11-18T23:12:00.540Z","0.2.31":"2013-12-16T08:36:43.044Z","0.3.0":"2013-12-17T07:03:10.699Z","0.3.1":"2013-12-17T16:53:27.867Z","0.3.2":"2013-12-17T22:25:14.882Z","0.3.3":"2013-12-21T16:07:06.773Z","0.3.4":"2014-01-29T15:24:05.163Z","0.3.5":"2014-01-31T01:53:19.656Z","0.3.6":"2014-02-07T00:17:21.362Z","0.4.0":"2014-02-13T01:17:18.973Z","0.4.1":"2014-02-13T23:47:37.892Z","0.4.2":"2014-02-14T00:29:13.086Z","0.4.3":"2014-02-16T03:40:54.640Z","0.4.4":"2014-02-16T03:41:48.856Z","0.4.5":"2014-03-12T05:09:17.474Z","0.4.6":"2014-03-29T19:44:15.041Z","0.4.7":"2014-04-02T19:41:07.149Z","0.4.8":"2014-05-01T22:24:54.980Z","0.4.9":"2014-05-12T21:52:55.127Z","0.4.10":"2014-05-13T16:44:29.801Z","0.4.11":"2014-05-13T20:33:04.738Z","0.4.12":"2014-05-14T06:14:22.842Z","1.0.0":"2014-05-14T23:04:37.188Z","1.0.1":"2014-06-03T00:55:54.448Z","2.0.0":"2014-06-06T04:23:46.579Z","2.0.1":"2014-06-06T06:25:14.419Z","2.0.2":"2014-06-14T00:33:10.205Z","3.0.0":"2014-07-02T00:30:29.154Z","3.0.1":"2014-07-14T23:29:05.057Z","2.0.3":"2014-07-15T00:09:36.043Z","3.0.2":"2014-07-17T06:30:02.659Z","3.0.3":"2014-07-23T21:20:42.406Z","3.0.4":"2014-07-25T00:27:26.007Z","3.0.5":"2014-07-25T00:28:48.007Z","3.0.6":"2014-07-31T21:57:49.043Z","2.0.4":"2014-07-31T21:59:52.896Z"},"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"repository":{"url":"git://github.com/isaacs/npm-registry-client"},"users":{"fgribreau":true,"fengmk2":true},"readmeFilename":"README.md","homepage":"https://github.com/isaacs/npm-registry-client","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"license":"ISC","_attachments":{}}
diff --git a/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/cache.json b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/cache.json
new file mode 100644
index 00000000000000..01da3002763731
--- /dev/null
+++ b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/cache.json
@@ -0,0 +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.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://registry.npmjs.org/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":{}}
\ No newline at end of file
diff --git a/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/package.tgz b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/package.tgz
new file mode 100644
index 00000000000000..19da9baa7fb191
Binary files /dev/null and b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/package.tgz differ
diff --git a/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/cache.json b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/cache.json
new file mode 100644
index 00000000000000..d899f11922a405
--- /dev/null
+++ b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/cache.json
@@ -0,0 +1 @@
+{"_id":"underscore","_rev":"72-47f2986bfd8e8b55068b204588bbf484","name":"underscore","description":"JavaScript's functional programming helper library.","dist-tags":{"latest":"1.3.3","stable":"1.3.3"},"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://registry.npmjs.org/underscore/-/underscore-1.0.3.tgz"},"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://registry.npmjs.org/underscore/-/underscore-1.0.4.tgz"},"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://registry.npmjs.org/underscore/-/underscore-1.1.0.tgz"},"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://registry.npmjs.org/underscore/-/underscore-1.1.1.tgz"},"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://registry.npmjs.org/underscore/-/underscore-1.1.2.tgz"},"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://registry.npmjs.org/underscore/-/underscore-1.1.3.tgz"},"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://registry.npmjs.org/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://registry.npmjs.org/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://registry.npmjs.org/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://registry.npmjs.org/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://registry.npmjs.org/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://registry.npmjs.org/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://registry.npmjs.org/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://registry.npmjs.org/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://registry.npmjs.org/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://registry.npmjs.org/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://registry.npmjs.org/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://registry.npmjs.org/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://registry.npmjs.org/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":{}}},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"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"},"repository":{"type":"git","url":"git://github.com/documentcloud/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}}
\ No newline at end of file
diff --git a/deps/npm/node_modules/npm-registry-client/test/request.js b/deps/npm/node_modules/npm-registry-client/test/request.js
index 68af9bcca2baf9..113bafd348a329 100644
--- a/deps/npm/node_modules/npm-registry-client/test/request.js
+++ b/deps/npm/node_modules/npm-registry-client/test/request.js
@@ -81,7 +81,7 @@ test('request call contract', function (t) {
})
test('run request through its paces', function (t) {
- t.plan(29)
+ t.plan(34)
server.expect('/request-defaults', function (req, res) {
t.equal(req.method, 'GET', 'uses GET by default')
@@ -173,6 +173,13 @@ test('run request through its paces', function (t) {
}))
})
+ server.expect('GET', '/not-found-no-body', function (req, res) {
+ req.pipe(concat(function () {
+ res.statusCode = 404
+ res.end()
+ }))
+ })
+
var defaults = {}
client.request(
common.registry + '/request-defaults',
@@ -260,4 +267,12 @@ test('run request through its paces', function (t) {
client.request(common.registry + '/@scoped%2Fpackage-failing', defaults, function (er) {
t.equals(er.message, 'payment required : @scoped/package-failing')
})
+
+ client.request(common.registry + '/not-found-no-body', defaults, function (er) {
+ t.equals(er.message, '404 Not Found')
+ t.equals(er.statusCode, 404, 'got back 404 as .statusCode')
+ t.equals(er.code, 'E404', 'got back expected string code')
+ t.notOk(er.pkgid, "no package name returned when there's no body on response")
+ t.ok(typeof er !== 'string', "Error shouldn't be returned as string.")
+ })
})
diff --git a/deps/npm/node_modules/npm-registry-client/test/team.js b/deps/npm/node_modules/npm-registry-client/test/team.js
new file mode 100644
index 00000000000000..638690c57a3f71
--- /dev/null
+++ b/deps/npm/node_modules/npm-registry-client/test/team.js
@@ -0,0 +1,210 @@
+var test = require('tap').test
+
+var server = require('./lib/server.js')
+var common = require('./lib/common.js')
+var client = common.freshClient()
+
+function nop () {}
+
+var URI = 'http://localhost:1337'
+var PARAMS = {
+ auth: {
+ token: 'foo'
+ },
+ scope: 'myorg',
+ team: 'myteam'
+}
+
+var commands = ['create', 'destroy', 'add', 'rm', 'ls']
+
+test('team create basic', function (t) {
+ var teamData = {
+ name: PARAMS.team,
+ scope_id: 1234,
+ created: '2015-07-23T18:07:49.959Z',
+ updated: '2015-07-23T18:07:49.959Z',
+ deleted: null
+ }
+ server.expect('PUT', '/-/org/myorg/team', function (req, res) {
+ t.equal(req.method, 'PUT')
+ onJsonReq(req, function (json) {
+ t.same(json, { name: PARAMS.team })
+ res.statusCode = 200
+ res.json(teamData)
+ })
+ })
+ client.team('create', URI, PARAMS, function (err, data) {
+ t.ifError(err, 'no errors')
+ t.same(data, teamData)
+ t.end()
+ })
+})
+
+test('team destroy', function (t) {
+ var teamData = {
+ name: 'myteam',
+ scope_id: 1234,
+ created: '2015-07-23T18:07:49.959Z',
+ updated: '2015-07-23T18:07:49.959Z',
+ deleted: '2015-07-23T18:27:27.178Z'
+ }
+ server.expect('DELETE', '/-/team/myorg/myteam', function (req, res) {
+ t.equal(req.method, 'DELETE')
+ onJsonReq(req, function (json) {
+ t.same(json, undefined)
+ res.statusCode = 200
+ res.json(teamData)
+ })
+ })
+ client.team('destroy', URI, PARAMS, function (err, data) {
+ t.ifError(err, 'no errors')
+ t.same(data, teamData)
+ t.end()
+ })
+})
+
+test('team add basic', function (t) {
+ var params = Object.create(PARAMS)
+ params.user = 'zkat'
+ server.expect('PUT', '/-/team/myorg/myteam/user', function (req, res) {
+ t.equal(req.method, 'PUT')
+ onJsonReq(req, function (json) {
+ t.same(json, { user: params.user })
+ res.statusCode = 200
+ res.json(undefined)
+ })
+ })
+ client.team('add', URI, params, function (err, data) {
+ t.ifError(err, 'no errors')
+ t.same(data, undefined)
+ t.end()
+ })
+})
+
+test('team add user not in org', function (t) {
+ var params = Object.create(PARAMS)
+ params.user = 'zkat'
+ var errMsg = 'user is already in team'
+ server.expect('PUT', '/-/team/myorg/myteam/user', function (req, res) {
+ t.equal(req.method, 'PUT')
+ res.statusCode = 400
+ res.json({
+ error: errMsg
+ })
+ })
+ client.team('add', URI, params, function (err, data) {
+ t.equal(err.message, errMsg + ' : ' + '-/team/myorg/myteam/user')
+ t.same(data, {error: errMsg})
+ t.end()
+ })
+})
+
+test('team rm basic', function (t) {
+ var params = Object.create(PARAMS)
+ params.user = 'bcoe'
+ server.expect('DELETE', '/-/team/myorg/myteam/user', function (req, res) {
+ t.equal(req.method, 'DELETE')
+ onJsonReq(req, function (json) {
+ t.same(json, params)
+ res.statusCode = 200
+ res.json(undefined)
+ })
+ })
+ client.team('rm', URI, params, function (err, data) {
+ t.ifError(err, 'no errors')
+ t.same(data, undefined)
+ t.end()
+ })
+})
+
+test('team ls (on org)', function (t) {
+ var params = Object.create(PARAMS)
+ params.team = null
+ var teams = ['myorg:team1', 'myorg:team2', 'myorg:team3']
+ server.expect('GET', '/-/org/myorg/team?format=cli', function (req, res) {
+ t.equal(req.method, 'GET')
+ onJsonReq(req, function (json) {
+ t.same(json, undefined)
+ res.statusCode = 200
+ res.json(teams)
+ })
+ })
+ client.team('ls', URI, params, function (err, data) {
+ t.ifError(err, 'no errors')
+ t.same(data, teams)
+ t.end()
+ })
+})
+
+test('team ls (on team)', function (t) {
+ var uri = '/-/team/myorg/myteam/user?format=cli'
+ var users = ['zkat', 'bcoe']
+ server.expect('GET', uri, function (req, res) {
+ t.equal(req.method, 'GET')
+ onJsonReq(req, function (json) {
+ t.same(json, undefined)
+ res.statusCode = 200
+ res.json(users)
+ })
+ })
+ client.team('ls', URI, PARAMS, function (err, data) {
+ t.ifError(err, 'no errors')
+ t.same(data, users)
+ t.end()
+ })
+})
+
+// test('team edit', function (t) {
+// server.expect('PUT', '/-/org/myorg/team', function (req, res) {
+// t.equal(req.method, 'PUT')
+// res.statusCode = 201
+// res.json({})
+// })
+// client.team('create', URI, PARAMS, function (err, data) {
+// t.ifError(err, 'no errors')
+// t.end()
+// })
+// })
+
+test('team command base validation', function (t) {
+ t.throws(function () {
+ client.team(undefined, URI, PARAMS, nop)
+ }, 'command is required')
+ commands.forEach(function (cmd) {
+ t.throws(function () {
+ client.team(cmd, undefined, PARAMS, nop)
+ }, 'registry URI is required')
+ t.throws(function () {
+ client.team(cmd, URI, undefined, nop)
+ }, 'params is required')
+ t.throws(function () {
+ client.team(cmd, URI, {scope: 'o', team: 't'}, nop)
+ }, 'auth is required')
+ t.throws(function () {
+ client.team(cmd, URI, {auth: {token: 'f'}, team: 't'}, nop)
+ }, 'scope is required')
+ t.throws(function () {
+ client.team(cmd, URI, PARAMS, {})
+ }, 'callback must be a function')
+ if (cmd !== 'ls') {
+ t.throws(function () {
+ client.team(
+ cmd, URI, {auth: {token: 'f'}, scope: 'o'}, nop)
+ }, 'team name is required')
+ }
+ if (cmd === 'add' || cmd === 'rm') {
+ t.throws(function () {
+ client.team(
+ cmd, URI, PARAMS, nop)
+ }, 'user is required')
+ }
+ })
+ t.end()
+})
+
+function onJsonReq (req, cb) {
+ var buffer = ''
+ req.setEncoding('utf8')
+ req.on('data', function (data) { buffer += data })
+ req.on('end', function () { cb(buffer ? JSON.parse(buffer) : undefined) })
+}
diff --git a/deps/npm/node_modules/npmlog/.npmrc b/deps/npm/node_modules/npmlog/.npmrc
deleted file mode 100644
index ca0bc48dd5524f..00000000000000
--- a/deps/npm/node_modules/npmlog/.npmrc
+++ /dev/null
@@ -1,2 +0,0 @@
-save-prefix = ~
-proprietary-attribs = false
diff --git a/deps/npm/node_modules/read-installed/node_modules/debuglog/package.json b/deps/npm/node_modules/read-installed/node_modules/debuglog/package.json
index b622fe92286aca..39fac076703ce0 100644
--- a/deps/npm/node_modules/read-installed/node_modules/debuglog/package.json
+++ b/deps/npm/node_modules/read-installed/node_modules/debuglog/package.json
@@ -6,7 +6,7 @@
"main": "debuglog.js",
"repository": {
"type": "git",
- "url": "git+https://github.com/sam-github/node-debuglog.git"
+ "url": "https://github.com/sam-github/node-debuglog.git"
},
"author": {
"name": "Sam Roberts",
@@ -41,6 +41,5 @@
],
"directories": {},
"_shasum": "aa24ffb9ac3df9a2351837cfb2d279360cd78492",
- "_resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz",
- "readme": "ERROR: No README data found!"
+ "_resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz"
}
diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/.npmignore b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/.npmignore
deleted file mode 100644
index c2658d7d1b3184..00000000000000
--- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules/
diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/LICENSE b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/LICENSE
deleted file mode 100644
index 19129e315fe593..00000000000000
--- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/README.md b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/README.md
deleted file mode 100644
index 13a2e86050a3eb..00000000000000
--- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# graceful-fs
-
-graceful-fs functions as a drop-in replacement for the fs module,
-making various improvements.
-
-The improvements are meant to normalize behavior across different
-platforms and environments, and to make filesystem access more
-resilient to errors.
-
-## Improvements over [fs module](http://api.nodejs.org/fs.html)
-
-graceful-fs:
-
-* Queues up `open` and `readdir` calls, and retries them once
- something closes if there is an EMFILE error from too many file
- descriptors.
-* fixes `lchmod` for Node versions prior to 0.6.2.
-* implements `fs.lutimes` if possible. Otherwise it becomes a noop.
-* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or
- `lchown` if the user isn't root.
-* makes `lchmod` and `lchown` become noops, if not available.
-* retries reading a file if `read` results in EAGAIN error.
-
-On Windows, it retries renaming a file for up to one second if `EACCESS`
-or `EPERM` error occurs, likely because antivirus software has locked
-the directory.
-
-## USAGE
-
-```javascript
-// use just like fs
-var fs = require('graceful-fs')
-
-// now go and do stuff with it...
-fs.readFileSync('some-file-or-whatever')
-```
diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/fs.js b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/fs.js
deleted file mode 100644
index 64ad980232ec0d..00000000000000
--- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/fs.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// eeeeeevvvvviiiiiiillllll
-// more evil than monkey-patching the native builtin?
-// Not sure.
-
-var mod = require("module")
-var pre = '(function (exports, require, module, __filename, __dirname) { '
-var post = '});'
-var src = pre + process.binding('natives').fs + post
-var vm = require('vm')
-var fn = vm.runInThisContext(src)
-fn(exports, require, module, __filename, __dirname)
diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/graceful-fs.js b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/graceful-fs.js
deleted file mode 100644
index fb206b83854a19..00000000000000
--- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/graceful-fs.js
+++ /dev/null
@@ -1,158 +0,0 @@
-// Monkey-patching the fs module.
-// It's ugly, but there is simply no other way to do this.
-var fs = module.exports = require('./fs.js')
-
-var assert = require('assert')
-
-// fix up some busted stuff, mostly on windows and old nodes
-require('./polyfills.js')
-
-var util = require('util')
-
-function noop () {}
-
-var debug = noop
-if (util.debuglog)
- debug = util.debuglog('gfs')
-else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || ''))
- debug = function() {
- var m = util.format.apply(util, arguments)
- m = 'GFS: ' + m.split(/\n/).join('\nGFS: ')
- console.error(m)
- }
-
-if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) {
- process.on('exit', function() {
- debug('fds', fds)
- debug(queue)
- assert.equal(queue.length, 0)
- })
-}
-
-
-var originalOpen = fs.open
-fs.open = open
-
-function open(path, flags, mode, cb) {
- if (typeof mode === "function") cb = mode, mode = null
- if (typeof cb !== "function") cb = noop
- new OpenReq(path, flags, mode, cb)
-}
-
-function OpenReq(path, flags, mode, cb) {
- this.path = path
- this.flags = flags
- this.mode = mode
- this.cb = cb
- Req.call(this)
-}
-
-util.inherits(OpenReq, Req)
-
-OpenReq.prototype.process = function() {
- originalOpen.call(fs, this.path, this.flags, this.mode, this.done)
-}
-
-var fds = {}
-OpenReq.prototype.done = function(er, fd) {
- debug('open done', er, fd)
- if (fd)
- fds['fd' + fd] = this.path
- Req.prototype.done.call(this, er, fd)
-}
-
-
-var originalReaddir = fs.readdir
-fs.readdir = readdir
-
-function readdir(path, cb) {
- if (typeof cb !== "function") cb = noop
- new ReaddirReq(path, cb)
-}
-
-function ReaddirReq(path, cb) {
- this.path = path
- this.cb = cb
- Req.call(this)
-}
-
-util.inherits(ReaddirReq, Req)
-
-ReaddirReq.prototype.process = function() {
- originalReaddir.call(fs, this.path, this.done)
-}
-
-ReaddirReq.prototype.done = function(er, files) {
- if (files && files.sort)
- files = files.sort()
- Req.prototype.done.call(this, er, files)
- onclose()
-}
-
-
-var originalClose = fs.close
-fs.close = close
-
-function close (fd, cb) {
- debug('close', fd)
- if (typeof cb !== "function") cb = noop
- delete fds['fd' + fd]
- originalClose.call(fs, fd, function(er) {
- onclose()
- cb(er)
- })
-}
-
-
-var originalCloseSync = fs.closeSync
-fs.closeSync = closeSync
-
-function closeSync (fd) {
- try {
- return originalCloseSync(fd)
- } finally {
- onclose()
- }
-}
-
-
-// Req class
-function Req () {
- // start processing
- this.done = this.done.bind(this)
- this.failures = 0
- this.process()
-}
-
-Req.prototype.done = function (er, result) {
- var tryAgain = false
- if (er) {
- var code = er.code
- var tryAgain = code === "EMFILE" || code === "ENFILE"
- if (process.platform === "win32")
- tryAgain = tryAgain || code === "OK"
- }
-
- if (tryAgain) {
- this.failures ++
- enqueue(this)
- } else {
- var cb = this.cb
- cb(er, result)
- }
-}
-
-var queue = []
-
-function enqueue(req) {
- queue.push(req)
- debug('enqueue %d %s', queue.length, req.constructor.name, req)
-}
-
-function onclose() {
- var req = queue.shift()
- if (req) {
- debug('process', req.constructor.name, req)
- req.process()
- }
-}
diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/package.json b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/package.json
deleted file mode 100644
index 40b65a3c2e0485..00000000000000
--- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/package.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me"
- },
- "name": "graceful-fs",
- "description": "A drop-in replacement for fs, making various improvements.",
- "version": "3.0.8",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/node-graceful-fs.git"
- },
- "main": "graceful-fs.js",
- "engines": {
- "node": ">=0.4.0"
- },
- "directories": {
- "test": "test"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "keywords": [
- "fs",
- "module",
- "reading",
- "retry",
- "retries",
- "queue",
- "error",
- "errors",
- "handling",
- "EMFILE",
- "EAGAIN",
- "EINVAL",
- "EPERM",
- "EACCESS"
- ],
- "license": "ISC",
- "devDependencies": {
- "mkdirp": "^0.5.0",
- "rimraf": "^2.2.8",
- "tap": "^1.2.0"
- },
- "gitHead": "45c57aa5e323c35a985a525de6f0c9a6ef59e1f8",
- "bugs": {
- "url": "https://github.com/isaacs/node-graceful-fs/issues"
- },
- "homepage": "https://github.com/isaacs/node-graceful-fs#readme",
- "_id": "graceful-fs@3.0.8",
- "_shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22",
- "_from": "graceful-fs@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0",
- "_npmVersion": "2.10.1",
- "_nodeVersion": "2.0.1",
- "_npmUser": {
- "name": "isaacs",
- "email": "isaacs@npmjs.com"
- },
- "dist": {
- "shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22",
- "tarball": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/polyfills.js b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/polyfills.js
deleted file mode 100644
index 8ac5006e2da24d..00000000000000
--- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/polyfills.js
+++ /dev/null
@@ -1,254 +0,0 @@
-var fs = require('./fs.js')
-var constants = require('constants')
-
-var origCwd = process.cwd
-var cwd = null
-process.cwd = function() {
- if (!cwd)
- cwd = origCwd.call(process)
- return cwd
-}
-var chdir = process.chdir
-process.chdir = function(d) {
- cwd = null
- chdir.call(process, d)
-}
-
-// (re-)implement some things that are known busted or missing.
-
-// lchmod, broken prior to 0.6.2
-// back-port the fix here.
-if (constants.hasOwnProperty('O_SYMLINK') &&
- process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
- fs.lchmod = function (path, mode, callback) {
- callback = callback || noop
- fs.open( path
- , constants.O_WRONLY | constants.O_SYMLINK
- , mode
- , function (err, fd) {
- if (err) {
- callback(err)
- return
- }
- // prefer to return the chmod error, if one occurs,
- // but still try to close, and report closing errors if they occur.
- fs.fchmod(fd, mode, function (err) {
- fs.close(fd, function(err2) {
- callback(err || err2)
- })
- })
- })
- }
-
- fs.lchmodSync = function (path, mode) {
- var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)
-
- // prefer to return the chmod error, if one occurs,
- // but still try to close, and report closing errors if they occur.
- var err, err2
- try {
- var ret = fs.fchmodSync(fd, mode)
- } catch (er) {
- err = er
- }
- try {
- fs.closeSync(fd)
- } catch (er) {
- err2 = er
- }
- if (err || err2) throw (err || err2)
- return ret
- }
-}
-
-
-// lutimes implementation, or no-op
-if (!fs.lutimes) {
- if (constants.hasOwnProperty("O_SYMLINK")) {
- fs.lutimes = function (path, at, mt, cb) {
- fs.open(path, constants.O_SYMLINK, function (er, fd) {
- cb = cb || noop
- if (er) return cb(er)
- fs.futimes(fd, at, mt, function (er) {
- fs.close(fd, function (er2) {
- return cb(er || er2)
- })
- })
- })
- }
-
- fs.lutimesSync = function (path, at, mt) {
- var fd = fs.openSync(path, constants.O_SYMLINK)
- , err
- , err2
- , ret
-
- try {
- var ret = fs.futimesSync(fd, at, mt)
- } catch (er) {
- err = er
- }
- try {
- fs.closeSync(fd)
- } catch (er) {
- err2 = er
- }
- if (err || err2) throw (err || err2)
- return ret
- }
-
- } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) {
- // maybe utimensat will be bound soonish?
- fs.lutimes = function (path, at, mt, cb) {
- fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb)
- }
-
- fs.lutimesSync = function (path, at, mt) {
- return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW)
- }
-
- } else {
- fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) }
- fs.lutimesSync = function () {}
- }
-}
-
-
-// https://github.com/isaacs/node-graceful-fs/issues/4
-// Chown should not fail on einval or eperm if non-root.
-// It should not fail on enosys ever, as this just indicates
-// that a fs doesn't support the intended operation.
-
-fs.chown = chownFix(fs.chown)
-fs.fchown = chownFix(fs.fchown)
-fs.lchown = chownFix(fs.lchown)
-
-fs.chmod = chownFix(fs.chmod)
-fs.fchmod = chownFix(fs.fchmod)
-fs.lchmod = chownFix(fs.lchmod)
-
-fs.chownSync = chownFixSync(fs.chownSync)
-fs.fchownSync = chownFixSync(fs.fchownSync)
-fs.lchownSync = chownFixSync(fs.lchownSync)
-
-fs.chmodSync = chownFix(fs.chmodSync)
-fs.fchmodSync = chownFix(fs.fchmodSync)
-fs.lchmodSync = chownFix(fs.lchmodSync)
-
-function chownFix (orig) {
- if (!orig) return orig
- return function (target, uid, gid, cb) {
- return orig.call(fs, target, uid, gid, function (er, res) {
- if (chownErOk(er)) er = null
- cb(er, res)
- })
- }
-}
-
-function chownFixSync (orig) {
- if (!orig) return orig
- return function (target, uid, gid) {
- try {
- return orig.call(fs, target, uid, gid)
- } catch (er) {
- if (!chownErOk(er)) throw er
- }
- }
-}
-
-// ENOSYS means that the fs doesn't support the op. Just ignore
-// that, because it doesn't matter.
-//
-// if there's no getuid, or if getuid() is something other
-// than 0, and the error is EINVAL or EPERM, then just ignore
-// it.
-//
-// This specific case is a silent failure in cp, install, tar,
-// and most other unix tools that manage permissions.
-//
-// When running as root, or if other types of errors are
-// encountered, then it's strict.
-function chownErOk (er) {
- if (!er)
- return true
-
- if (er.code === "ENOSYS")
- return true
-
- var nonroot = !process.getuid || process.getuid() !== 0
- if (nonroot) {
- if (er.code === "EINVAL" || er.code === "EPERM")
- return true
- }
-
- return false
-}
-
-
-// if lchmod/lchown do not exist, then make them no-ops
-if (!fs.lchmod) {
- fs.lchmod = function (path, mode, cb) {
- process.nextTick(cb)
- }
- fs.lchmodSync = function () {}
-}
-if (!fs.lchown) {
- fs.lchown = function (path, uid, gid, cb) {
- process.nextTick(cb)
- }
- fs.lchownSync = function () {}
-}
-
-
-
-// on Windows, A/V software can lock the directory, causing this
-// to fail with an EACCES or EPERM if the directory contains newly
-// created files. Try again on failure, for up to 1 second.
-if (process.platform === "win32") {
- var rename_ = fs.rename
- fs.rename = function rename (from, to, cb) {
- var start = Date.now()
- rename_(from, to, function CB (er) {
- if (er
- && (er.code === "EACCES" || er.code === "EPERM")
- && Date.now() - start < 1000) {
- return rename_(from, to, CB)
- }
- if(cb) cb(er)
- })
- }
-}
-
-
-// if read() returns EAGAIN, then just try it again.
-var read = fs.read
-fs.read = function (fd, buffer, offset, length, position, callback_) {
- var callback
- if (callback_ && typeof callback_ === 'function') {
- var eagCounter = 0
- callback = function (er, _, __) {
- if (er && er.code === 'EAGAIN' && eagCounter < 10) {
- eagCounter ++
- return read.call(fs, fd, buffer, offset, length, position, callback)
- }
- callback_.apply(this, arguments)
- }
- }
- return read.call(fs, fd, buffer, offset, length, position, callback)
-}
-
-var readSync = fs.readSync
-fs.readSync = function (fd, buffer, offset, length, position) {
- var eagCounter = 0
- while (true) {
- try {
- return readSync.call(fs, fd, buffer, offset, length, position)
- } catch (er) {
- if (er.code === 'EAGAIN' && eagCounter < 10) {
- eagCounter ++
- continue
- }
- throw er
- }
- }
-}
diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/max-open.js b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/max-open.js
deleted file mode 100644
index a6b9ba43d3a6de..00000000000000
--- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/max-open.js
+++ /dev/null
@@ -1,69 +0,0 @@
-var test = require('tap').test
-var fs = require('../')
-
-test('open lots of stuff', function (t) {
- // Get around EBADF from libuv by making sure that stderr is opened
- // Otherwise Darwin will refuse to give us a FD for stderr!
- process.stderr.write('')
-
- // How many parallel open()'s to do
- var n = 1024
- var opens = 0
- var fds = []
- var going = true
- var closing = false
- var doneCalled = 0
-
- for (var i = 0; i < n; i++) {
- go()
- }
-
- function go() {
- opens++
- fs.open(__filename, 'r', function (er, fd) {
- if (er) throw er
- fds.push(fd)
- if (going) go()
- })
- }
-
- // should hit ulimit pretty fast
- setTimeout(function () {
- going = false
- t.equal(opens - fds.length, n)
- done()
- }, 100)
-
-
- function done () {
- if (closing) return
- doneCalled++
-
- if (fds.length === 0) {
- console.error('done called %d times', doneCalled)
- // First because of the timeout
- // Then to close the fd's opened afterwards
- // Then this time, to complete.
- // Might take multiple passes, depending on CPU speed
- // and ulimit, but at least 3 in every case.
- t.ok(doneCalled >= 2)
- return t.end()
- }
-
- closing = true
- setTimeout(function () {
- // console.error('do closing again')
- closing = false
- done()
- }, 100)
-
- // console.error('closing time')
- var closes = fds.slice(0)
- fds.length = 0
- closes.forEach(function (fd) {
- fs.close(fd, function (er) {
- if (er) throw er
- })
- })
- }
-})
diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/open.js b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/open.js
deleted file mode 100644
index 85732f236b0026..00000000000000
--- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/open.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var test = require('tap').test
-var fs = require('../graceful-fs.js')
-
-test('graceful fs is monkeypatched fs', function (t) {
- t.equal(fs, require('../fs.js'))
- t.end()
-})
-
-test('open an existing file works', function (t) {
- var fd = fs.openSync(__filename, 'r')
- fs.closeSync(fd)
- fs.open(__filename, 'r', function (er, fd) {
- if (er) throw er
- fs.close(fd, function (er) {
- if (er) throw er
- t.pass('works')
- t.end()
- })
- })
-})
-
-test('open a non-existing file throws', function (t) {
- var er
- try {
- var fd = fs.openSync('this file does not exist', 'r')
- } catch (x) {
- er = x
- }
- t.ok(er, 'should throw')
- t.notOk(fd, 'should not get an fd')
- t.equal(er.code, 'ENOENT')
-
- fs.open('neither does this file', 'r', function (er, fd) {
- t.ok(er, 'should throw')
- t.notOk(fd, 'should not get an fd')
- t.equal(er.code, 'ENOENT')
- t.end()
- })
-})
diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/readdir-sort.js b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/readdir-sort.js
deleted file mode 100644
index cb63a6846ed78f..00000000000000
--- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/readdir-sort.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var test = require("tap").test
-var fs = require("../fs.js")
-
-var readdir = fs.readdir
-fs.readdir = function(path, cb) {
- process.nextTick(function() {
- cb(null, ["b", "z", "a"])
- })
-}
-
-var g = require("../")
-
-test("readdir reorder", function (t) {
- g.readdir("whatevers", function (er, files) {
- if (er)
- throw er
- t.same(files, [ "a", "b", "z" ])
- t.end()
- })
-})
diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/write-then-read.js b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/write-then-read.js
deleted file mode 100644
index 21e4c26bf6c9dc..00000000000000
--- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/write-then-read.js
+++ /dev/null
@@ -1,47 +0,0 @@
-var fs = require('../');
-var rimraf = require('rimraf');
-var mkdirp = require('mkdirp');
-var test = require('tap').test;
-var p = require('path').resolve(__dirname, 'files');
-
-process.chdir(__dirname)
-
-// Make sure to reserve the stderr fd
-process.stderr.write('');
-
-var num = 4097;
-var paths = new Array(num);
-
-test('make files', function (t) {
- rimraf.sync(p);
- mkdirp.sync(p);
-
- for (var i = 0; i < num; ++i) {
- paths[i] = 'files/file-' + i;
- fs.writeFileSync(paths[i], 'content');
- }
-
- t.end();
-})
-
-test('read files', function (t) {
- // now read them
- var done = 0;
- for (var i = 0; i < num; ++i) {
- fs.readFile(paths[i], function(err, data) {
- if (err)
- throw err;
-
- ++done;
- if (done === num) {
- t.pass('success');
- t.end()
- }
- });
- }
-});
-
-test('cleanup', function (t) {
- rimraf.sync(p);
- t.end();
-});
diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/.travis.yml b/deps/npm/node_modules/read-installed/node_modules/readdir-scoped-modules/.travis.yml
similarity index 54%
rename from deps/npm/node_modules/node-gyp/node_modules/semver/.travis.yml
rename to deps/npm/node_modules/read-installed/node_modules/readdir-scoped-modules/.travis.yml
index 991d04b6e2272b..e1bcee1acd90c1 100644
--- a/deps/npm/node_modules/node-gyp/node_modules/semver/.travis.yml
+++ b/deps/npm/node_modules/read-installed/node_modules/readdir-scoped-modules/.travis.yml
@@ -1,5 +1,7 @@
language: node_js
+before_script: npm install -g npm@latest
node_js:
+ - '0.8'
- '0.10'
- '0.12'
- 'iojs'
diff --git a/deps/npm/node_modules/read-installed/node_modules/readdir-scoped-modules/package.json b/deps/npm/node_modules/read-installed/node_modules/readdir-scoped-modules/package.json
index c3a39d401f6b3e..d9c7b715554e80 100644
--- a/deps/npm/node_modules/read-installed/node_modules/readdir-scoped-modules/package.json
+++ b/deps/npm/node_modules/read-installed/node_modules/readdir-scoped-modules/package.json
@@ -1,6 +1,6 @@
{
"name": "readdir-scoped-modules",
- "version": "1.0.1",
+ "version": "1.0.2",
"description": "Like `fs.readdir` but handling `@org/module` dirs as if they were a single entry.",
"main": "readdir.js",
"directories": {
@@ -9,11 +9,11 @@
"dependencies": {
"debuglog": "^1.0.1",
"dezalgo": "^1.0.0",
- "graceful-fs": "^3.0.4",
+ "graceful-fs": "^4.1.2",
"once": "^1.3.0"
},
"devDependencies": {
- "tap": "0.4"
+ "tap": "^1.2.0"
},
"scripts": {
"test": "tap test/*.js"
@@ -32,30 +32,10 @@
"url": "https://github.com/npm/readdir-scoped-modules/issues"
},
"homepage": "https://github.com/npm/readdir-scoped-modules",
- "gitHead": "451d38946c5b6b6c0db33a890f33536a11ed79f7",
- "_id": "readdir-scoped-modules@1.0.1",
- "_shasum": "5c2a77f3e08250a8fddf53fa58cdc17900b808b9",
- "_from": "readdir-scoped-modules@>=1.0.0 <2.0.0",
- "_npmVersion": "2.1.9",
- "_nodeVersion": "0.10.33",
- "_npmUser": {
- "name": "othiym23",
- "email": "ogd@aoaioxxysz.net"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- {
- "name": "othiym23",
- "email": "ogd@aoaioxxysz.net"
- }
- ],
- "dist": {
- "shasum": "5c2a77f3e08250a8fddf53fa58cdc17900b808b9",
- "tarball": "http://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.0.1.tgz"
- },
- "_resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.0.1.tgz",
- "readme": "ERROR: No README data found!"
+ "readme": "# readdir-scoped-modules\n\nLike `fs.readdir` but handling `@org/module` dirs as if they were\na single entry.\n\nUsed by npm.\n\n## USAGE\n\n```javascript\nvar readdir = require('readdir-scoped-modules')\n\nreaddir('node_modules', function (er, entries) {\n // entries will be something like\n // ['a', '@org/foo', '@org/bar']\n})\n```\n",
+ "readmeFilename": "README.md",
+ "gitHead": "d41d5de877cb4e9e3f14b92913132680af73d1b4",
+ "_id": "readdir-scoped-modules@1.0.2",
+ "_shasum": "9fafa37d286be5d92cbaebdee030dc9b5f406747",
+ "_from": "readdir-scoped-modules@>=1.0.0 <2.0.0"
}
diff --git a/deps/npm/node_modules/read-installed/package.json b/deps/npm/node_modules/read-installed/package.json
index a7e0932169f556..b1b3c5fa5a9fbc 100644
--- a/deps/npm/node_modules/read-installed/package.json
+++ b/deps/npm/node_modules/read-installed/package.json
@@ -1,7 +1,7 @@
{
"name": "read-installed",
"description": "Read all the installed packages in a folder, and return a tree structure with all the data.",
- "version": "4.0.2",
+ "version": "4.0.3",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/read-installed.git"
@@ -17,10 +17,10 @@
"semver": "2 || 3 || 4 || 5",
"slide": "~1.1.3",
"util-extend": "^1.0.1",
- "graceful-fs": "2 || 3"
+ "graceful-fs": "^4.1.2"
},
"optionalDependencies": {
- "graceful-fs": "2 || 3"
+ "graceful-fs": "^4.1.2"
},
"author": {
"name": "Isaac Z. Schlueter",
@@ -35,12 +35,12 @@
},
"readme": "# read-installed\n\nRead all the installed packages in a folder, and return a tree\nstructure with all the data.\n\nnpm uses this.\n\n## 2.0.0\n\nBreaking changes in `2.0.0`:\n\nThe second argument is now an `Object` that contains the following keys:\n\n * `depth` optional, defaults to Infinity\n * `log` optional log Function\n * `dev` optional, default false, set to true to include devDependencies\n\n## Usage\n\n```javascript\nvar readInstalled = require(\"read-installed\")\n// optional options\nvar options = { dev: false, log: fn, depth: 2 }\nreadInstalled(folder, options, function (er, data) {\n ...\n})\n```\n",
"readmeFilename": "README.md",
- "gitHead": "e683eb7f2bb8e9b7b40c1e26192b385b92a3192f",
+ "gitHead": "da02df6acdb5f5ee31d8c637ef31fb50efb455c1",
"bugs": {
"url": "https://github.com/isaacs/read-installed/issues"
},
"homepage": "https://github.com/isaacs/read-installed#readme",
- "_id": "read-installed@4.0.2",
- "_shasum": "4e8b18be974ccb75654b28ddcc9aac686404690e",
- "_from": "read-installed@>=4.0.2 <4.1.0"
+ "_id": "read-installed@4.0.3",
+ "_shasum": "ff9b8b67f187d1e4c29b9feb31f6b223acd19067",
+ "_from": "read-installed@4.0.3"
}
diff --git a/deps/npm/node_modules/read-package-json/.travis.yml b/deps/npm/node_modules/read-package-json/.travis.yml
new file mode 100644
index 00000000000000..f84676a909a702
--- /dev/null
+++ b/deps/npm/node_modules/read-package-json/.travis.yml
@@ -0,0 +1,9 @@
+language: node_js
+node_js:
+ - '0.8'
+ - '0.10'
+ - '0.12'
+ - 'iojs'
+sudo: false
+before_install:
+ - npm install -g npm@latest
diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/.npmignore b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/.npmignore
deleted file mode 100644
index c2658d7d1b3184..00000000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules/
diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/LICENSE b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/LICENSE
deleted file mode 100644
index 19129e315fe593..00000000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/README.md b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/README.md
deleted file mode 100644
index 13a2e86050a3eb..00000000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# graceful-fs
-
-graceful-fs functions as a drop-in replacement for the fs module,
-making various improvements.
-
-The improvements are meant to normalize behavior across different
-platforms and environments, and to make filesystem access more
-resilient to errors.
-
-## Improvements over [fs module](http://api.nodejs.org/fs.html)
-
-graceful-fs:
-
-* Queues up `open` and `readdir` calls, and retries them once
- something closes if there is an EMFILE error from too many file
- descriptors.
-* fixes `lchmod` for Node versions prior to 0.6.2.
-* implements `fs.lutimes` if possible. Otherwise it becomes a noop.
-* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or
- `lchown` if the user isn't root.
-* makes `lchmod` and `lchown` become noops, if not available.
-* retries reading a file if `read` results in EAGAIN error.
-
-On Windows, it retries renaming a file for up to one second if `EACCESS`
-or `EPERM` error occurs, likely because antivirus software has locked
-the directory.
-
-## USAGE
-
-```javascript
-// use just like fs
-var fs = require('graceful-fs')
-
-// now go and do stuff with it...
-fs.readFileSync('some-file-or-whatever')
-```
diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/fs.js b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/fs.js
deleted file mode 100644
index 64ad980232ec0d..00000000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/fs.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// eeeeeevvvvviiiiiiillllll
-// more evil than monkey-patching the native builtin?
-// Not sure.
-
-var mod = require("module")
-var pre = '(function (exports, require, module, __filename, __dirname) { '
-var post = '});'
-var src = pre + process.binding('natives').fs + post
-var vm = require('vm')
-var fn = vm.runInThisContext(src)
-fn(exports, require, module, __filename, __dirname)
diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/graceful-fs.js b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/graceful-fs.js
deleted file mode 100644
index fb206b83854a19..00000000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/graceful-fs.js
+++ /dev/null
@@ -1,158 +0,0 @@
-// Monkey-patching the fs module.
-// It's ugly, but there is simply no other way to do this.
-var fs = module.exports = require('./fs.js')
-
-var assert = require('assert')
-
-// fix up some busted stuff, mostly on windows and old nodes
-require('./polyfills.js')
-
-var util = require('util')
-
-function noop () {}
-
-var debug = noop
-if (util.debuglog)
- debug = util.debuglog('gfs')
-else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || ''))
- debug = function() {
- var m = util.format.apply(util, arguments)
- m = 'GFS: ' + m.split(/\n/).join('\nGFS: ')
- console.error(m)
- }
-
-if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) {
- process.on('exit', function() {
- debug('fds', fds)
- debug(queue)
- assert.equal(queue.length, 0)
- })
-}
-
-
-var originalOpen = fs.open
-fs.open = open
-
-function open(path, flags, mode, cb) {
- if (typeof mode === "function") cb = mode, mode = null
- if (typeof cb !== "function") cb = noop
- new OpenReq(path, flags, mode, cb)
-}
-
-function OpenReq(path, flags, mode, cb) {
- this.path = path
- this.flags = flags
- this.mode = mode
- this.cb = cb
- Req.call(this)
-}
-
-util.inherits(OpenReq, Req)
-
-OpenReq.prototype.process = function() {
- originalOpen.call(fs, this.path, this.flags, this.mode, this.done)
-}
-
-var fds = {}
-OpenReq.prototype.done = function(er, fd) {
- debug('open done', er, fd)
- if (fd)
- fds['fd' + fd] = this.path
- Req.prototype.done.call(this, er, fd)
-}
-
-
-var originalReaddir = fs.readdir
-fs.readdir = readdir
-
-function readdir(path, cb) {
- if (typeof cb !== "function") cb = noop
- new ReaddirReq(path, cb)
-}
-
-function ReaddirReq(path, cb) {
- this.path = path
- this.cb = cb
- Req.call(this)
-}
-
-util.inherits(ReaddirReq, Req)
-
-ReaddirReq.prototype.process = function() {
- originalReaddir.call(fs, this.path, this.done)
-}
-
-ReaddirReq.prototype.done = function(er, files) {
- if (files && files.sort)
- files = files.sort()
- Req.prototype.done.call(this, er, files)
- onclose()
-}
-
-
-var originalClose = fs.close
-fs.close = close
-
-function close (fd, cb) {
- debug('close', fd)
- if (typeof cb !== "function") cb = noop
- delete fds['fd' + fd]
- originalClose.call(fs, fd, function(er) {
- onclose()
- cb(er)
- })
-}
-
-
-var originalCloseSync = fs.closeSync
-fs.closeSync = closeSync
-
-function closeSync (fd) {
- try {
- return originalCloseSync(fd)
- } finally {
- onclose()
- }
-}
-
-
-// Req class
-function Req () {
- // start processing
- this.done = this.done.bind(this)
- this.failures = 0
- this.process()
-}
-
-Req.prototype.done = function (er, result) {
- var tryAgain = false
- if (er) {
- var code = er.code
- var tryAgain = code === "EMFILE" || code === "ENFILE"
- if (process.platform === "win32")
- tryAgain = tryAgain || code === "OK"
- }
-
- if (tryAgain) {
- this.failures ++
- enqueue(this)
- } else {
- var cb = this.cb
- cb(er, result)
- }
-}
-
-var queue = []
-
-function enqueue(req) {
- queue.push(req)
- debug('enqueue %d %s', queue.length, req.constructor.name, req)
-}
-
-function onclose() {
- var req = queue.shift()
- if (req) {
- debug('process', req.constructor.name, req)
- req.process()
- }
-}
diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/package.json b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/package.json
deleted file mode 100644
index 349c3d8247e9cc..00000000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/package.json
+++ /dev/null
@@ -1,96 +0,0 @@
-{
- "_args": [
- [
- "graceful-fs@2 || 3",
- "/Users/isaacs/dev/npm/npm/node_modules/read-package-json"
- ]
- ],
- "_from": "graceful-fs@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0",
- "_id": "graceful-fs@3.0.8",
- "_inCache": true,
- "_location": "/read-package-json/graceful-fs",
- "_nodeVersion": "2.0.1",
- "_npmUser": {
- "email": "isaacs@npmjs.com",
- "name": "isaacs"
- },
- "_npmVersion": "2.10.1",
- "_phantomChildren": {},
- "_requested": {
- "name": "graceful-fs",
- "raw": "graceful-fs@2 || 3",
- "rawSpec": "2 || 3",
- "scope": null,
- "spec": ">=2.0.0 <3.0.0||>=3.0.0 <4.0.0",
- "type": "range"
- },
- "_requiredBy": [
- "/read-package-json"
- ],
- "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz",
- "_shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22",
- "_shrinkwrap": null,
- "_spec": "graceful-fs@2 || 3",
- "_where": "/Users/isaacs/dev/npm/npm/node_modules/read-package-json",
- "author": {
- "email": "i@izs.me",
- "name": "Isaac Z. Schlueter",
- "url": "http://blog.izs.me"
- },
- "bugs": {
- "url": "https://github.com/isaacs/node-graceful-fs/issues"
- },
- "dependencies": {},
- "description": "A drop-in replacement for fs, making various improvements.",
- "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"
- },
- "gitHead": "45c57aa5e323c35a985a525de6f0c9a6ef59e1f8",
- "homepage": "https://github.com/isaacs/node-graceful-fs#readme",
- "keywords": [
- "EACCESS",
- "EAGAIN",
- "EINVAL",
- "EMFILE",
- "EPERM",
- "error",
- "errors",
- "fs",
- "handling",
- "module",
- "queue",
- "reading",
- "retries",
- "retry"
- ],
- "license": "ISC",
- "main": "graceful-fs.js",
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "name": "graceful-fs",
- "optionalDependencies": {},
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/node-graceful-fs.git"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "version": "3.0.8"
-}
diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/polyfills.js b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/polyfills.js
deleted file mode 100644
index 8ac5006e2da24d..00000000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/polyfills.js
+++ /dev/null
@@ -1,254 +0,0 @@
-var fs = require('./fs.js')
-var constants = require('constants')
-
-var origCwd = process.cwd
-var cwd = null
-process.cwd = function() {
- if (!cwd)
- cwd = origCwd.call(process)
- return cwd
-}
-var chdir = process.chdir
-process.chdir = function(d) {
- cwd = null
- chdir.call(process, d)
-}
-
-// (re-)implement some things that are known busted or missing.
-
-// lchmod, broken prior to 0.6.2
-// back-port the fix here.
-if (constants.hasOwnProperty('O_SYMLINK') &&
- process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
- fs.lchmod = function (path, mode, callback) {
- callback = callback || noop
- fs.open( path
- , constants.O_WRONLY | constants.O_SYMLINK
- , mode
- , function (err, fd) {
- if (err) {
- callback(err)
- return
- }
- // prefer to return the chmod error, if one occurs,
- // but still try to close, and report closing errors if they occur.
- fs.fchmod(fd, mode, function (err) {
- fs.close(fd, function(err2) {
- callback(err || err2)
- })
- })
- })
- }
-
- fs.lchmodSync = function (path, mode) {
- var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)
-
- // prefer to return the chmod error, if one occurs,
- // but still try to close, and report closing errors if they occur.
- var err, err2
- try {
- var ret = fs.fchmodSync(fd, mode)
- } catch (er) {
- err = er
- }
- try {
- fs.closeSync(fd)
- } catch (er) {
- err2 = er
- }
- if (err || err2) throw (err || err2)
- return ret
- }
-}
-
-
-// lutimes implementation, or no-op
-if (!fs.lutimes) {
- if (constants.hasOwnProperty("O_SYMLINK")) {
- fs.lutimes = function (path, at, mt, cb) {
- fs.open(path, constants.O_SYMLINK, function (er, fd) {
- cb = cb || noop
- if (er) return cb(er)
- fs.futimes(fd, at, mt, function (er) {
- fs.close(fd, function (er2) {
- return cb(er || er2)
- })
- })
- })
- }
-
- fs.lutimesSync = function (path, at, mt) {
- var fd = fs.openSync(path, constants.O_SYMLINK)
- , err
- , err2
- , ret
-
- try {
- var ret = fs.futimesSync(fd, at, mt)
- } catch (er) {
- err = er
- }
- try {
- fs.closeSync(fd)
- } catch (er) {
- err2 = er
- }
- if (err || err2) throw (err || err2)
- return ret
- }
-
- } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) {
- // maybe utimensat will be bound soonish?
- fs.lutimes = function (path, at, mt, cb) {
- fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb)
- }
-
- fs.lutimesSync = function (path, at, mt) {
- return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW)
- }
-
- } else {
- fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) }
- fs.lutimesSync = function () {}
- }
-}
-
-
-// https://github.com/isaacs/node-graceful-fs/issues/4
-// Chown should not fail on einval or eperm if non-root.
-// It should not fail on enosys ever, as this just indicates
-// that a fs doesn't support the intended operation.
-
-fs.chown = chownFix(fs.chown)
-fs.fchown = chownFix(fs.fchown)
-fs.lchown = chownFix(fs.lchown)
-
-fs.chmod = chownFix(fs.chmod)
-fs.fchmod = chownFix(fs.fchmod)
-fs.lchmod = chownFix(fs.lchmod)
-
-fs.chownSync = chownFixSync(fs.chownSync)
-fs.fchownSync = chownFixSync(fs.fchownSync)
-fs.lchownSync = chownFixSync(fs.lchownSync)
-
-fs.chmodSync = chownFix(fs.chmodSync)
-fs.fchmodSync = chownFix(fs.fchmodSync)
-fs.lchmodSync = chownFix(fs.lchmodSync)
-
-function chownFix (orig) {
- if (!orig) return orig
- return function (target, uid, gid, cb) {
- return orig.call(fs, target, uid, gid, function (er, res) {
- if (chownErOk(er)) er = null
- cb(er, res)
- })
- }
-}
-
-function chownFixSync (orig) {
- if (!orig) return orig
- return function (target, uid, gid) {
- try {
- return orig.call(fs, target, uid, gid)
- } catch (er) {
- if (!chownErOk(er)) throw er
- }
- }
-}
-
-// ENOSYS means that the fs doesn't support the op. Just ignore
-// that, because it doesn't matter.
-//
-// if there's no getuid, or if getuid() is something other
-// than 0, and the error is EINVAL or EPERM, then just ignore
-// it.
-//
-// This specific case is a silent failure in cp, install, tar,
-// and most other unix tools that manage permissions.
-//
-// When running as root, or if other types of errors are
-// encountered, then it's strict.
-function chownErOk (er) {
- if (!er)
- return true
-
- if (er.code === "ENOSYS")
- return true
-
- var nonroot = !process.getuid || process.getuid() !== 0
- if (nonroot) {
- if (er.code === "EINVAL" || er.code === "EPERM")
- return true
- }
-
- return false
-}
-
-
-// if lchmod/lchown do not exist, then make them no-ops
-if (!fs.lchmod) {
- fs.lchmod = function (path, mode, cb) {
- process.nextTick(cb)
- }
- fs.lchmodSync = function () {}
-}
-if (!fs.lchown) {
- fs.lchown = function (path, uid, gid, cb) {
- process.nextTick(cb)
- }
- fs.lchownSync = function () {}
-}
-
-
-
-// on Windows, A/V software can lock the directory, causing this
-// to fail with an EACCES or EPERM if the directory contains newly
-// created files. Try again on failure, for up to 1 second.
-if (process.platform === "win32") {
- var rename_ = fs.rename
- fs.rename = function rename (from, to, cb) {
- var start = Date.now()
- rename_(from, to, function CB (er) {
- if (er
- && (er.code === "EACCES" || er.code === "EPERM")
- && Date.now() - start < 1000) {
- return rename_(from, to, CB)
- }
- if(cb) cb(er)
- })
- }
-}
-
-
-// if read() returns EAGAIN, then just try it again.
-var read = fs.read
-fs.read = function (fd, buffer, offset, length, position, callback_) {
- var callback
- if (callback_ && typeof callback_ === 'function') {
- var eagCounter = 0
- callback = function (er, _, __) {
- if (er && er.code === 'EAGAIN' && eagCounter < 10) {
- eagCounter ++
- return read.call(fs, fd, buffer, offset, length, position, callback)
- }
- callback_.apply(this, arguments)
- }
- }
- return read.call(fs, fd, buffer, offset, length, position, callback)
-}
-
-var readSync = fs.readSync
-fs.readSync = function (fd, buffer, offset, length, position) {
- var eagCounter = 0
- while (true) {
- try {
- return readSync.call(fs, fd, buffer, offset, length, position)
- } catch (er) {
- if (er.code === 'EAGAIN' && eagCounter < 10) {
- eagCounter ++
- continue
- }
- throw er
- }
- }
-}
diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/max-open.js b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/max-open.js
deleted file mode 100644
index a6b9ba43d3a6de..00000000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/max-open.js
+++ /dev/null
@@ -1,69 +0,0 @@
-var test = require('tap').test
-var fs = require('../')
-
-test('open lots of stuff', function (t) {
- // Get around EBADF from libuv by making sure that stderr is opened
- // Otherwise Darwin will refuse to give us a FD for stderr!
- process.stderr.write('')
-
- // How many parallel open()'s to do
- var n = 1024
- var opens = 0
- var fds = []
- var going = true
- var closing = false
- var doneCalled = 0
-
- for (var i = 0; i < n; i++) {
- go()
- }
-
- function go() {
- opens++
- fs.open(__filename, 'r', function (er, fd) {
- if (er) throw er
- fds.push(fd)
- if (going) go()
- })
- }
-
- // should hit ulimit pretty fast
- setTimeout(function () {
- going = false
- t.equal(opens - fds.length, n)
- done()
- }, 100)
-
-
- function done () {
- if (closing) return
- doneCalled++
-
- if (fds.length === 0) {
- console.error('done called %d times', doneCalled)
- // First because of the timeout
- // Then to close the fd's opened afterwards
- // Then this time, to complete.
- // Might take multiple passes, depending on CPU speed
- // and ulimit, but at least 3 in every case.
- t.ok(doneCalled >= 2)
- return t.end()
- }
-
- closing = true
- setTimeout(function () {
- // console.error('do closing again')
- closing = false
- done()
- }, 100)
-
- // console.error('closing time')
- var closes = fds.slice(0)
- fds.length = 0
- closes.forEach(function (fd) {
- fs.close(fd, function (er) {
- if (er) throw er
- })
- })
- }
-})
diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/open.js b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/open.js
deleted file mode 100644
index 85732f236b0026..00000000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/open.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var test = require('tap').test
-var fs = require('../graceful-fs.js')
-
-test('graceful fs is monkeypatched fs', function (t) {
- t.equal(fs, require('../fs.js'))
- t.end()
-})
-
-test('open an existing file works', function (t) {
- var fd = fs.openSync(__filename, 'r')
- fs.closeSync(fd)
- fs.open(__filename, 'r', function (er, fd) {
- if (er) throw er
- fs.close(fd, function (er) {
- if (er) throw er
- t.pass('works')
- t.end()
- })
- })
-})
-
-test('open a non-existing file throws', function (t) {
- var er
- try {
- var fd = fs.openSync('this file does not exist', 'r')
- } catch (x) {
- er = x
- }
- t.ok(er, 'should throw')
- t.notOk(fd, 'should not get an fd')
- t.equal(er.code, 'ENOENT')
-
- fs.open('neither does this file', 'r', function (er, fd) {
- t.ok(er, 'should throw')
- t.notOk(fd, 'should not get an fd')
- t.equal(er.code, 'ENOENT')
- t.end()
- })
-})
diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/readdir-sort.js b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/readdir-sort.js
deleted file mode 100644
index cb63a6846ed78f..00000000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/readdir-sort.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var test = require("tap").test
-var fs = require("../fs.js")
-
-var readdir = fs.readdir
-fs.readdir = function(path, cb) {
- process.nextTick(function() {
- cb(null, ["b", "z", "a"])
- })
-}
-
-var g = require("../")
-
-test("readdir reorder", function (t) {
- g.readdir("whatevers", function (er, files) {
- if (er)
- throw er
- t.same(files, [ "a", "b", "z" ])
- t.end()
- })
-})
diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/write-then-read.js b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/write-then-read.js
deleted file mode 100644
index 21e4c26bf6c9dc..00000000000000
--- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/write-then-read.js
+++ /dev/null
@@ -1,47 +0,0 @@
-var fs = require('../');
-var rimraf = require('rimraf');
-var mkdirp = require('mkdirp');
-var test = require('tap').test;
-var p = require('path').resolve(__dirname, 'files');
-
-process.chdir(__dirname)
-
-// Make sure to reserve the stderr fd
-process.stderr.write('');
-
-var num = 4097;
-var paths = new Array(num);
-
-test('make files', function (t) {
- rimraf.sync(p);
- mkdirp.sync(p);
-
- for (var i = 0; i < num; ++i) {
- paths[i] = 'files/file-' + i;
- fs.writeFileSync(paths[i], 'content');
- }
-
- t.end();
-})
-
-test('read files', function (t) {
- // now read them
- var done = 0;
- for (var i = 0; i < num; ++i) {
- fs.readFile(paths[i], function(err, data) {
- if (err)
- throw err;
-
- ++done;
- if (done === num) {
- t.pass('success');
- t.end()
- }
- });
- }
-});
-
-test('cleanup', function (t) {
- rimraf.sync(p);
- t.end();
-});
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/package.json b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/package.json
index bdcdae6b461781..ed34885e26881b 100644
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/package.json
+++ b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/package.json
@@ -8,7 +8,7 @@
},
"repository": {
"type": "git",
- "url": "git://github.com/rlidwka/jju"
+ "url": "git://github.com/rlidwka/jju.git"
},
"bugs": {
"url": "https://github.com/rlidwka/jju/issues"
diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/package.json b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/package.json
index 9ebc2ff8a6abcf..2a5a98fc32a02c 100644
--- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/package.json
+++ b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/package.json
@@ -9,7 +9,7 @@
},
"repository": {
"type": "git",
- "url": "https://github.com/smikes/json-parse-helpfulerror.git"
+ "url": "git+https://github.com/smikes/json-parse-helpfulerror.git"
},
"keywords": [
"json",
diff --git a/deps/npm/node_modules/read-package-json/package.json b/deps/npm/node_modules/read-package-json/package.json
index e83b1f08903104..17113419c0ab74 100644
--- a/deps/npm/node_modules/read-package-json/package.json
+++ b/deps/npm/node_modules/read-package-json/package.json
@@ -1,6 +1,6 @@
{
"name": "read-package-json",
- "version": "2.0.0",
+ "version": "2.0.1",
"author": {
"name": "Isaac Z. Schlueter",
"email": "i@izs.me",
@@ -19,24 +19,24 @@
"glob": "^5.0.3",
"json-parse-helpfulerror": "^1.0.2",
"normalize-package-data": "^2.0.0",
- "graceful-fs": "2 || 3"
+ "graceful-fs": "^4.1.2"
},
"devDependencies": {
"standard": "^3.3.1",
- "tap": "^0.7.1"
+ "tap": "^1.2.0"
},
"optionalDependencies": {
- "graceful-fs": "2 || 3"
+ "graceful-fs": "^4.1.2"
},
"license": "ISC",
- "gitHead": "1a0476fef4ed8a70b48bfdc90070d897b8ad5469",
"readme": "# read-package-json\n\nThis is the thing that npm uses to read package.json files. It\nvalidates some stuff, and loads some default things.\n\nIt keeps a cache of the files you've read, so that you don't end\nup reading the same package.json file multiple times.\n\nNote that if you just want to see what's literally in the package.json\nfile, you can usually do `var data = require('some-module/package.json')`.\n\nThis module is basically only needed by npm, but it's handy to see what\nnpm will see when it looks at your package.\n\n## Usage\n\n```javascript\nvar readJson = require('read-package-json')\n\n// readJson(filename, [logFunction=noop], [strict=false], cb)\nreadJson('/path/to/package.json', console.error, false, function (er, data) {\n if (er) {\n console.error(\"There was an error reading the file\")\n return\n }\n\n console.error('the package data is', data)\n});\n```\n\n## readJson(file, [logFn = noop], [strict = false], cb)\n\n* `file` {String} The path to the package.json file\n* `logFn` {Function} Function to handle logging. Defaults to a noop.\n* `strict` {Boolean} True to enforce SemVer 2.0 version strings, and\n other strict requirements.\n* `cb` {Function} Gets called with `(er, data)`, as is The Node Way.\n\nReads the JSON file and does the things.\n\n## `package.json` Fields\n\nSee `man 5 package.json` or `npm help json`.\n\n## readJson.log\n\nBy default this is a reference to the `npmlog` module. But if that\nmodule can't be found, then it'll be set to just a dummy thing that does\nnothing.\n\nReplace with your own `{log,warn,error}` object for fun loggy time.\n\n## readJson.extras(file, data, cb)\n\nRun all the extra stuff relative to the file, with the parsed data.\n\nModifies the data as it does stuff. Calls the cb when it's done.\n\n## readJson.extraSet = [fn, fn, ...]\n\nArray of functions that are called by `extras`. Each one receives the\narguments `fn(file, data, cb)` and is expected to call `cb(er, data)`\nwhen done or when an error occurs.\n\nOrder is indeterminate, so each function should be completely\nindependent.\n\nMix and match!\n\n## readJson.cache\n\nThe `lru-cache` object that readJson uses to not read the same file over\nand over again. See\n[lru-cache](https://github.com/isaacs/node-lru-cache) for details.\n\n## Other Relevant Files Besides `package.json`\n\nSome other files have an effect on the resulting data object, in the\nfollowing ways:\n\n### `README?(.*)`\n\nIf there is a `README` or `README.*` file present, then npm will attach\na `readme` field to the data with the contents of this file.\n\nOwing to the fact that roughly 100% of existing node modules have\nMarkdown README files, it will generally be assumed to be Markdown,\nregardless of the extension. Please plan accordingly.\n\n### `server.js`\n\nIf there is a `server.js` file, and there is not already a\n`scripts.start` field, then `scripts.start` will be set to `node\nserver.js`.\n\n### `AUTHORS`\n\nIf there is not already a `contributors` field, then the `contributors`\nfield will be set to the contents of the `AUTHORS` file, split by lines,\nand parsed.\n\n### `bindings.gyp`\n\nIf a bindings.gyp file exists, and there is not already a\n`scripts.install` field, then the `scripts.install` field will be set to\n`node-gyp rebuild`.\n\n### `wscript`\n\nIf a wscript file exists, and there is not already a `scripts.install`\nfield, then the `scripts.install` field will be set to `node-waf clean ;\nnode-waf configure build`.\n\nNote that the `bindings.gyp` file supercedes this, since node-waf has\nbeen deprecated in favor of node-gyp.\n\n### `index.js`\n\nIf the json file does not exist, but there is a `index.js` file\npresent instead, and that file has a package comment, then it will try\nto parse the package comment, and use that as the data instead.\n\nA package comment looks like this:\n\n```javascript\n/**package\n * { \"name\": \"my-bare-module\"\n * , \"version\": \"1.2.3\"\n * , \"description\": \"etc....\" }\n **/\n\n// or...\n\n/**package\n{ \"name\": \"my-bare-module\"\n, \"version\": \"1.2.3\"\n, \"description\": \"etc....\" }\n**/\n```\n\nThe important thing is that it starts with `/**package`, and ends with\n`**/`. If the package.json file exists, then the index.js is not\nparsed.\n\n### `{directories.man}/*.[0-9]`\n\nIf there is not already a `man` field defined as an array of files or a\nsingle file, and\nthere is a `directories.man` field defined, then that directory will\nbe searched for manpages.\n\nAny valid manpages found in that directory will be assigned to the `man`\narray, and installed in the appropriate man directory at package install\ntime, when installed globally on a Unix system.\n\n### `{directories.bin}/*`\n\nIf there is not already a `bin` field defined as a string filename or a\nhash of ` : ` pairs, then the `directories.bin`\ndirectory will be searched and all the files within it will be linked as\nexecutables at install time.\n\nWhen installing locally, npm links bins into `node_modules/.bin`, which\nis in the `PATH` environ when npm runs scripts. When\ninstalling globally, they are linked into `{prefix}/bin`, which is\npresumably in the `PATH` environment variable.\n",
"readmeFilename": "README.md",
+ "gitHead": "d4f9f52c823750e7f2a7b9069bc56b9fd3a0ee96",
"bugs": {
"url": "https://github.com/isaacs/read-package-json/issues"
},
- "homepage": "https://github.com/isaacs/read-package-json",
- "_id": "read-package-json@2.0.0",
- "_shasum": "ca7543298275028d27064b9118e6e501c9b3ae41",
- "_from": "read-package-json@>=2.0.0 <2.1.0"
+ "homepage": "https://github.com/isaacs/read-package-json#readme",
+ "_id": "read-package-json@2.0.1",
+ "_shasum": "b822abfc2c4f0abfe7f52de6448be4560b6e7053",
+ "_from": "read-package-json@2.0.1"
}
diff --git a/deps/npm/node_modules/read-package-json/test/fixtures/badbin.json b/deps/npm/node_modules/read-package-json/test/fixtures/badbin.json
index 06c57f43bcbe9f..3eb58d9c114bb0 100644
--- a/deps/npm/node_modules/read-package-json/test/fixtures/badbin.json
+++ b/deps/npm/node_modules/read-package-json/test/fixtures/badbin.json
@@ -7,5 +7,6 @@
},
"version": "0.0.1",
"readme": "hello world",
- "bin": "./bin/typo"
+ "bin": "./bin/typo",
+ "license": "ISC"
}
diff --git a/deps/npm/node_modules/read-package-json/test/fixtures/bin.json b/deps/npm/node_modules/read-package-json/test/fixtures/bin.json
index d47a5270c6e734..70a26eec712dcd 100644
--- a/deps/npm/node_modules/read-package-json/test/fixtures/bin.json
+++ b/deps/npm/node_modules/read-package-json/test/fixtures/bin.json
@@ -7,5 +7,6 @@
},
"version": "0.0.1",
"readme": "hello world",
- "bin": "./bin/echo"
+ "bin": "./bin/echo",
+ "license": "ISC"
}
diff --git a/deps/npm/node_modules/read-package-json/test/fixtures/emptybin.json b/deps/npm/node_modules/read-package-json/test/fixtures/emptybin.json
index 5e12ed4e9a75d2..4fbf40075d0aad 100644
--- a/deps/npm/node_modules/read-package-json/test/fixtures/emptybin.json
+++ b/deps/npm/node_modules/read-package-json/test/fixtures/emptybin.json
@@ -7,5 +7,6 @@
},
"version": "0.0.1",
"readme": "hello world",
- "bin": {}
+ "bin": {},
+ "license": "ISC"
}
diff --git a/deps/npm/node_modules/read/.npmignore b/deps/npm/node_modules/read/.npmignore
deleted file mode 100644
index 0db216bfa4c14a..00000000000000
--- a/deps/npm/node_modules/read/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-npm-debug.log
-node_modules
diff --git a/deps/npm/node_modules/read/LICENCE b/deps/npm/node_modules/read/LICENCE
deleted file mode 100644
index 74489e2e2658e7..00000000000000
--- a/deps/npm/node_modules/read/LICENCE
+++ /dev/null
@@ -1,25 +0,0 @@
-Copyright (c) Isaac Z. Schlueter
-All rights reserved.
-
-The BSD License
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
-``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/deps/npm/node_modules/read/example/example.js b/deps/npm/node_modules/read/example/example.js
deleted file mode 100644
index cf213bf88e09d4..00000000000000
--- a/deps/npm/node_modules/read/example/example.js
+++ /dev/null
@@ -1,13 +0,0 @@
-var read = require("../lib/read.js")
-
-read({prompt: "Username: ", default: "test-user" }, function (er, user) {
- read({prompt: "Password: ", default: "test-pass", silent: true }, function (er, pass) {
- read({prompt: "Password again: ", default: "test-pass", silent: true }, function (er, pass2) {
- console.error({user: user,
- pass: pass,
- verify: pass2,
- passMatch: (pass === pass2)})
- console.error("the program should exit now")
- })
- })
-})
diff --git a/deps/npm/node_modules/read/package.json b/deps/npm/node_modules/read/package.json
index b424aa3c0cc908..b8357c6315dde0 100644
--- a/deps/npm/node_modules/read/package.json
+++ b/deps/npm/node_modules/read/package.json
@@ -1,12 +1,12 @@
{
"name": "read",
- "version": "1.0.6",
+ "version": "1.0.7",
"main": "lib/read.js",
"dependencies": {
"mute-stream": "~0.0.4"
},
"devDependencies": {
- "tap": "*"
+ "tap": "^1.2.0"
},
"engines": {
"node": ">=0.8"
@@ -25,23 +25,26 @@
"scripts": {
"test": "tap test/*.js"
},
- "gitHead": "2f5101c8e41332a033e5aa4e27e33fd6e09598e2",
+ "files": [
+ "lib/read.js"
+ ],
+ "gitHead": "b14516b9236c40140fd0666567f5d0c588a09a62",
"bugs": {
"url": "https://github.com/isaacs/read/issues"
},
"homepage": "https://github.com/isaacs/read#readme",
- "_id": "read@1.0.6",
- "_shasum": "09873c14ecc114d063fad43b8ca5a33d304721c8",
- "_from": "read@1.0.6",
- "_npmVersion": "2.10.0",
- "_nodeVersion": "2.0.1",
+ "_id": "read@1.0.7",
+ "_shasum": "b3da19bd052431a97671d44a42634adf710b40c4",
+ "_from": "read@1.0.7",
+ "_npmVersion": "3.2.2",
+ "_nodeVersion": "2.2.1",
"_npmUser": {
"name": "isaacs",
"email": "isaacs@npmjs.com"
},
"dist": {
- "shasum": "09873c14ecc114d063fad43b8ca5a33d304721c8",
- "tarball": "http://registry.npmjs.org/read/-/read-1.0.6.tgz"
+ "shasum": "b3da19bd052431a97671d44a42634adf710b40c4",
+ "tarball": "http://registry.npmjs.org/read/-/read-1.0.7.tgz"
},
"maintainers": [
{
@@ -50,5 +53,5 @@
}
],
"directories": {},
- "_resolved": "https://registry.npmjs.org/read/-/read-1.0.6.tgz"
+ "_resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz"
}
diff --git a/deps/npm/node_modules/read/rs.js b/deps/npm/node_modules/read/rs.js
deleted file mode 100644
index d9f7f48dd61400..00000000000000
--- a/deps/npm/node_modules/read/rs.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var read = require('read');
-read({ silent: true, prompt: 'stars: ' }, function(er, data) {
- console.log(er, data)
-})
diff --git a/deps/npm/node_modules/read/test/basic.js b/deps/npm/node_modules/read/test/basic.js
deleted file mode 100644
index f0926f3f2ecfc3..00000000000000
--- a/deps/npm/node_modules/read/test/basic.js
+++ /dev/null
@@ -1,60 +0,0 @@
-var tap = require('tap')
-var read = require('../lib/read.js')
-
-if (process.argv[2] === 'child') {
- return child()
-}
-
-var CLOSE = 'close'
-if (process.version.match(/^v0\.6/)) {
- CLOSE = 'exit'
-}
-
-var spawn = require('child_process').spawn
-
-tap.test('basic', function (t) {
- var child = spawn(process.execPath, [__filename, 'child'])
- var output = ''
- var write = child.stdin.write.bind(child.stdin)
- child.stdout.on('data', function (c) {
- console.error('data %s', c)
- output += c
- if (output.match(/Username: \(test-user\) $/)) {
- process.nextTick(write.bind(null, 'a user\n'))
- } else if (output.match(/Password: \(\) $/)) {
- process.nextTick(write.bind(null, 'a password\n'))
- } else if (output.match(/Password again: \(\) $/)) {
- process.nextTick(write.bind(null, 'a password\n'))
- } else {
- console.error('prompts done, output=%j', output)
- }
- })
-
- var result = ''
- child.stderr.on('data', function (c) {
- result += c
- console.error('result %j', c.toString())
- })
-
- child.on(CLOSE, function () {
- result = JSON.parse(result)
- t.same(result, {"user":"a user","pass":"a password","verify":"a password","passMatch":true})
- t.equal(output, 'Username: (test-user) Password: () Password again: () ')
- t.end()
- })
-})
-
-function child () {
- read({prompt: "Username: ", default: "test-user" }, function (er, user) {
- read({prompt: "Password: ", default: "test-pass", silent: true }, function (er, pass) {
- read({prompt: "Password again: ", default: "test-pass", silent: true }, function (er, pass2) {
- console.error(JSON.stringify({user: user,
- pass: pass,
- verify: pass2,
- passMatch: (pass === pass2)}))
- if (process.stdin.unref)
- process.stdin.unref()
- })
- })
- })
-}
diff --git a/deps/npm/node_modules/read/test/defaults.js b/deps/npm/node_modules/read/test/defaults.js
deleted file mode 100644
index e3d2ac71061ab0..00000000000000
--- a/deps/npm/node_modules/read/test/defaults.js
+++ /dev/null
@@ -1,60 +0,0 @@
-var tap = require('tap')
-var read = require('../lib/read.js')
-
-if (process.argv[2] === 'child') {
- return child()
-}
-
-var CLOSE = 'close'
-if (process.version.match(/^v0\.6/)) {
- CLOSE = 'exit'
-}
-
-var spawn = require('child_process').spawn
-
-tap.test('defaults', function (t) {
- var child = spawn(process.execPath, [__filename, 'child'])
- var output = ''
- var write = child.stdin.write.bind(child.stdin)
- child.stdout.on('data', function (c) {
- console.error('data %s', c)
- output += c
- if (output.match(/Username: \(test-user\) $/)) {
- process.nextTick(write.bind(null, '\n'))
- } else if (output.match(/Password: \(\) $/)) {
- process.nextTick(write.bind(null, '\n'))
- } else if (output.match(/Password again: \(\) $/)) {
- process.nextTick(write.bind(null, '\n'))
- } else {
- console.error('prompts done, output=%j', output)
- }
- })
-
- var result = ''
- child.stderr.on('data', function (c) {
- result += c
- console.error('result %j', c.toString())
- })
-
- child.on(CLOSE, function () {
- result = JSON.parse(result)
- t.same(result, {"user":"test-user","pass":"test-pass","verify":"test-pass","passMatch":true})
- t.equal(output, 'Username: (test-user) Password: () Password again: () ')
- t.end()
- })
-})
-
-function child () {
- read({prompt: "Username: ", default: "test-user" }, function (er, user) {
- read({prompt: "Password: ", default: "test-pass", silent: true }, function (er, pass) {
- read({prompt: "Password again: ", default: "test-pass", silent: true }, function (er, pass2) {
- console.error(JSON.stringify({user: user,
- pass: pass,
- verify: pass2,
- passMatch: (pass === pass2)}))
- if (process.stdin.unref)
- process.stdin.unref()
- })
- })
- })
-}
diff --git a/deps/npm/node_modules/read/test/many.js b/deps/npm/node_modules/read/test/many.js
deleted file mode 100644
index 6a2f87b869d2fc..00000000000000
--- a/deps/npm/node_modules/read/test/many.js
+++ /dev/null
@@ -1,83 +0,0 @@
-var tap = require('tap')
-var read = require('../lib/read.js')
-
-var CLOSE = 'close'
-if (process.version.match(/^v0\.6/)) {
- CLOSE = 'exit'
-}
-
-if (process.argv[2] === 'child') {
- return child()
-}
-
-var spawn = require('child_process').spawn
-function child () {
- read({prompt:'1'}, function (er, r1) {if (er) throw er
- read({prompt:'2'}, function (er, r2) {if (er) throw er
- read({prompt:'3'}, function (er, r3) {if (er) throw er
- read({prompt:'4'}, function (er, r4) {if (er) throw er
- read({prompt:'5'}, function (er, r5) {if (er) throw er
- read({prompt:'6'}, function (er, r6) {if (er) throw er
- read({prompt:'7'}, function (er, r7) {if (er) throw er
- read({prompt:'8'}, function (er, r8) {if (er) throw er
- read({prompt:'9'}, function (er, r9) {if (er) throw er
- read({prompt:'10'}, function (er, r10) {if (er) throw er
- read({prompt:'11'}, function (er, r11) {if (er) throw er
- read({prompt:'12'}, function (er, r12) {if (er) throw er
- read({prompt:'13'}, function (er, r13) {if (er) throw er
- read({prompt:'14'}, function (er, r14) {if (er) throw er
- read({prompt:'15'}, function (er, r15) {if (er) throw er
- read({prompt:'16'}, function (er, r16) {if (er) throw er
- read({prompt:'17'}, function (er, r17) {if (er) throw er
- read({prompt:'18'}, function (er, r18) {if (er) throw er
- console.log(r1, r2, r3, r4, r5, r6, r7, r8, r9, r10,
- r11, r12, r13, r14, r15, r16, r17, r18)
- if (process.stdin.unref)
- process.stdin.unref()
- })})})})})})})})})})})})})})})})})})
-}
-
-tap.test('many reads', function (t) {
- var child = spawn(process.execPath, [__filename, 'child'])
- var n = 0
- var output = ''
- var expect = '1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ' +
- '16 17 18 1 2 3 4 5 6 7 8 9 10 11 12 ' +
- '13 14 15 16 17 18\n'
- var write = child.stdin.write.bind(child.stdin)
- var answers =
- [ '1\n',
- '2\n',
- '3\n',
- '4\n',
- '5\n',
- '6\n',
- '7\n',
- '8\n',
- '9\n',
- '10\n',
- '11\n',
- '12\n',
- '13\n',
- '14\n',
- '15\n',
- '16\n',
- '17\n',
- '18\n' ]
- child.stdout.on('data', function (c) {
- n++;
- output += c
- if (answers.length) {
- write(answers.shift())
- }
- })
- child.stderr.on('data', function (c) {
- output += c
- console.error('' + c)
- })
- child.on(CLOSE, function (c) {
- t.equal(output, expect)
- t.equal(n, 19)
- t.end()
- })
-})
diff --git a/deps/npm/node_modules/request/.eslintrc b/deps/npm/node_modules/request/.eslintrc
new file mode 100644
index 00000000000000..e79f481f0cedcc
--- /dev/null
+++ b/deps/npm/node_modules/request/.eslintrc
@@ -0,0 +1,45 @@
+{
+ "env": {
+ "node": true
+ },
+ "rules": {
+ // 2-space indentation
+ "indent": [2, 2],
+ // Disallow semi-colons, unless needed to disambiguate statement
+ "semi": [2, "never"],
+ // Require strings to use single quotes
+ "quotes": [2, "single"],
+ // Require curly braces for all control statements
+ "curly": 2,
+ // Disallow using variables and functions before they've been defined
+ "no-use-before-define": 2,
+ // Allow any case for variable naming
+ "camelcase": 0,
+ // Disallow unused variables, except as function arguments
+ "no-unused-vars": [2, {"args":"none"}],
+ // Allow leading underscores for method names
+ // REASON: we use underscores to denote private methods
+ "no-underscore-dangle": 0,
+ // Allow multi spaces around operators since they are
+ // used for alignment. This is not consistent in the
+ // code.
+ "no-multi-spaces": 0,
+ // Style rule is: most objects use { beforeColon: false, afterColon: true }, unless aligning which uses:
+ //
+ // {
+ // beforeColon : true,
+ // afterColon : true
+ // }
+ //
+ // eslint can't handle this, so the check is disabled.
+ "key-spacing": 0,
+ // Allow shadowing vars in outer scope (needs discussion)
+ "no-shadow": 0,
+ // Use if () { }
+ // ^ space
+ "space-after-keywords": [2, "always"],
+ // Use if () { }
+ // ^ space
+ "space-before-blocks": [2, "always"]
+ }
+}
diff --git a/deps/npm/node_modules/request/CHANGELOG.md b/deps/npm/node_modules/request/CHANGELOG.md
index 4cc1fcbe49f9d3..1e1b02c1dc3c99 100644
--- a/deps/npm/node_modules/request/CHANGELOG.md
+++ b/deps/npm/node_modules/request/CHANGELOG.md
@@ -1,5 +1,15 @@
## Change Log
+### v2.61.0 (2015/08/19)
+- [#1721](https://github.com/request/request/pull/1721) Minor fix in README.md (@arbaaz)
+- [#1733](https://github.com/request/request/pull/1733) Avoid useless Buffer transformation (@michelsalib)
+- [#1726](https://github.com/request/request/pull/1726) Update README.md (@paulomcnally)
+- [#1715](https://github.com/request/request/pull/1715) Fix forever option in node > 0.10 #1709 (@calibr)
+- [#1716](https://github.com/request/request/pull/1716) Do not create Buffer from Object in setContentLength(iojs v3.0 issue) (@calibr)
+- [#1711](https://github.com/request/request/pull/1711) Add ability to detect connect timeouts (@kevinburke)
+- [#1712](https://github.com/request/request/pull/1712) Set certificate expiration to August 2, 2018 (@kevinburke)
+- [#1700](https://github.com/request/request/pull/1700) debug() when JSON.parse() on a response body fails (@phillipj)
+
### v2.60.0 (2015/07/21)
- [#1687](https://github.com/request/request/pull/1687) Fix caseless bug - content-type not being set for multipart/form-data (@simov, @garymathews)
diff --git a/deps/npm/node_modules/request/README.md b/deps/npm/node_modules/request/README.md
index b7227679897e6e..799811370137fe 100644
--- a/deps/npm/node_modules/request/README.md
+++ b/deps/npm/node_modules/request/README.md
@@ -673,12 +673,12 @@ a validation step will check if the HAR Request format matches the latest spec (
var request = require('request')
request({
// will be ignored
- method: 'GET'
+ method: 'GET',
uri: 'http://www.google.com',
// HTTP Archive Request Object
har: {
- url: 'http://www.mockbin.com/har'
+ url: 'http://www.mockbin.com/har',
method: 'POST',
headers: [
{
@@ -784,9 +784,12 @@ The first argument can be either a `url` or an `options` object. The only requir
with your pool options or create the pool object with the `maxSockets`
property outside of the loop.
- `timeout` - Integer containing the number of milliseconds to wait for a
- request to respond before aborting the request. Note that if the underlying
- TCP connection cannot be established, the OS-wide TCP connection timeout will
- overrule the `timeout` option ([the default in Linux is around 20 seconds](http://www.sekuda.com/overriding_the_default_linux_kernel_20_second_tcp_socket_connect_timeout)).
+server to send response headers (and start the response body) before aborting
+the request. Note that if the underlying TCP connection cannot be established,
+the OS-wide TCP connection timeout will overrule the `timeout` option ([the
+default in Linux can be anywhere from 20-120 seconds][linux-timeout]).
+
+[linux-timeout]: http://www.sekuda.com/overriding_the_default_linux_kernel_20_second_tcp_socket_connect_timeout
---
@@ -938,6 +941,35 @@ There are at least three ways to debug the operation of `request`:
---
+## Timeouts
+
+Most requests to external servers should have a timeout attached, in case the
+server is not responding in a timely manner. Without a timeout, your code may
+have a socket open/consume resources for minutes or more.
+
+There are two main types of timeouts: **connection timeouts** and **read
+timeouts**. A connect timeout occurs if the timeout is hit while your client is
+attempting to establish a connection to a remote machine (corresponding to the
+[connect() call][connect] on the socket). A read timeout occurs any time the
+server is too slow to send back a part of the response.
+
+These two situations have widely different implications for what went wrong
+with the request, so it's useful to be able to distinguish them. You can detect
+timeout errors by checking `err.code` for an 'ETIMEDOUT' value. Further, you
+can detect whether the timeout was a connection timeout by checking if the
+`err.connect` property is set to `true`.
+
+```js
+request.get('http://10.255.255.1', {timeout: 1500}, function(err) {
+ console.log(err.code === 'ETIMEDOUT');
+ // Set to `true` if the timeout was a connection timeout, `false` or
+ // `undefined` otherwise.
+ console.log(err.connect === true);
+ process.exit(0);
+});
+```
+
+[connect]: http://linux.die.net/man/2/connect
## Examples:
@@ -1054,8 +1086,8 @@ To inspect your cookie jar after a request:
```js
var j = request.jar()
request({url: 'http://www.google.com', jar: j}, function () {
- var cookie_string = j.getCookieString(uri); // "key1=value1; key2=value2; ..."
- var cookies = j.getCookies(uri);
+ var cookie_string = j.getCookieString(url); // "key1=value1; key2=value2; ..."
+ var cookies = j.getCookies(url);
// [{key: 'key1', value: 'value1', domain: "www.google.com", ...}, ...]
})
```
diff --git a/deps/npm/node_modules/request/index.js b/deps/npm/node_modules/request/index.js
index 3fe600175441cb..d13ab96b238912 100755
--- a/deps/npm/node_modules/request/index.js
+++ b/deps/npm/node_modules/request/index.js
@@ -88,6 +88,8 @@ function wrapRequestMethod (method, options, requester, verb) {
var target = {}
extend(true, target, options, params)
+ target.pool = params.pool || options.pool
+
if (verb) {
target.method = (verb === 'del' ? 'DELETE' : verb.toUpperCase())
}
diff --git a/deps/npm/node_modules/request/node_modules/aws-sign2/package.json b/deps/npm/node_modules/request/node_modules/aws-sign2/package.json
index b454fe46973974..89adc7ded5bc89 100644
--- a/deps/npm/node_modules/request/node_modules/aws-sign2/package.json
+++ b/deps/npm/node_modules/request/node_modules/aws-sign2/package.json
@@ -22,25 +22,9 @@
"bugs": {
"url": "https://github.com/mikeal/aws-sign/issues"
},
+ "homepage": "https://github.com/mikeal/aws-sign#readme",
"_id": "aws-sign2@0.5.0",
- "dist": {
- "shasum": "c57103f7a17fc037f02d7c2e64b602ea223f7d63",
- "tarball": "http://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz"
- },
- "_from": "aws-sign2@>=0.5.0 <0.6.0",
- "_npmVersion": "1.3.2",
- "_npmUser": {
- "name": "mikeal",
- "email": "mikeal.rogers@gmail.com"
- },
- "maintainers": [
- {
- "name": "mikeal",
- "email": "mikeal.rogers@gmail.com"
- }
- ],
- "directories": {},
"_shasum": "c57103f7a17fc037f02d7c2e64b602ea223f7d63",
"_resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz",
- "homepage": "https://github.com/mikeal/aws-sign#readme"
+ "_from": "aws-sign2@>=0.5.0 <0.6.0"
}
diff --git a/deps/npm/node_modules/request/node_modules/bl/.jshintrc b/deps/npm/node_modules/request/node_modules/bl/.jshintrc
new file mode 100644
index 00000000000000..c8ef3ca4097f82
--- /dev/null
+++ b/deps/npm/node_modules/request/node_modules/bl/.jshintrc
@@ -0,0 +1,59 @@
+{
+ "predef": [ ]
+ , "bitwise": false
+ , "camelcase": false
+ , "curly": false
+ , "eqeqeq": false
+ , "forin": false
+ , "immed": false
+ , "latedef": false
+ , "noarg": true
+ , "noempty": true
+ , "nonew": true
+ , "plusplus": false
+ , "quotmark": true
+ , "regexp": false
+ , "undef": true
+ , "unused": true
+ , "strict": false
+ , "trailing": true
+ , "maxlen": 120
+ , "asi": true
+ , "boss": true
+ , "debug": true
+ , "eqnull": true
+ , "esnext": true
+ , "evil": true
+ , "expr": true
+ , "funcscope": false
+ , "globalstrict": false
+ , "iterator": false
+ , "lastsemic": true
+ , "laxbreak": true
+ , "laxcomma": true
+ , "loopfunc": true
+ , "multistr": false
+ , "onecase": false
+ , "proto": false
+ , "regexdash": false
+ , "scripturl": true
+ , "smarttabs": false
+ , "shadow": false
+ , "sub": true
+ , "supernew": false
+ , "validthis": true
+ , "browser": true
+ , "couch": false
+ , "devel": false
+ , "dojo": false
+ , "mootools": false
+ , "node": true
+ , "nonstandard": true
+ , "prototypejs": false
+ , "rhino": false
+ , "worker": true
+ , "wsh": false
+ , "nomen": false
+ , "onevar": false
+ , "passfail": false
+}
\ No newline at end of file
diff --git a/deps/npm/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json b/deps/npm/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json
index 466dfdfe0139b3..b67333380c265e 100644
--- a/deps/npm/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json
+++ b/deps/npm/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json
@@ -29,25 +29,9 @@
},
"readme": "# core-util-is\n\nThe `util.is*` functions introduced in Node v0.12.\n",
"readmeFilename": "README.md",
- "homepage": "https://github.com/isaacs/core-util-is",
+ "homepage": "https://github.com/isaacs/core-util-is#readme",
"_id": "core-util-is@1.0.1",
- "dist": {
- "shasum": "6b07085aef9a3ccac6ee53bf9d3df0c1521a5538",
- "tarball": "http://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
- },
- "_from": "core-util-is@>=1.0.0 <1.1.0",
- "_npmVersion": "1.3.23",
- "_npmUser": {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "directories": {},
"_shasum": "6b07085aef9a3ccac6ee53bf9d3df0c1521a5538",
- "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
+ "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz",
+ "_from": "core-util-is@>=1.0.0 <1.1.0"
}
diff --git a/deps/npm/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json b/deps/npm/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json
index 19228ab6fdcaaf..fb1eb3786d8168 100644
--- a/deps/npm/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json
+++ b/deps/npm/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json
@@ -26,28 +26,13 @@
"url": "http://juliangruber.com"
},
"license": "MIT",
- "_id": "isarray@0.0.1",
- "dist": {
- "shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf",
- "tarball": "http://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
- },
- "_from": "isarray@0.0.1",
- "_npmVersion": "1.2.18",
- "_npmUser": {
- "name": "juliangruber",
- "email": "julian@juliangruber.com"
- },
- "maintainers": [
- {
- "name": "juliangruber",
- "email": "julian@juliangruber.com"
- }
- ],
- "directories": {},
- "_shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf",
- "_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "readme": "\n# isarray\n\n`Array#isArray` for older browsers.\n\n## Usage\n\n```js\nvar isArray = require('isarray');\n\nconsole.log(isArray([])); // => true\nconsole.log(isArray({})); // => false\n```\n\n## Installation\n\nWith [npm](http://npmjs.org) do\n\n```bash\n$ npm install isarray\n```\n\nThen bundle for the browser with\n[browserify](https://github.com/substack/browserify).\n\nWith [component](http://component.io) do\n\n```bash\n$ component install juliangruber/isarray\n```\n\n## License\n\n(MIT)\n\nCopyright (c) 2013 Julian Gruber <julian@juliangruber.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n",
+ "readmeFilename": "README.md",
"bugs": {
"url": "https://github.com/juliangruber/isarray/issues"
},
- "readme": "ERROR: No README data found!"
+ "_id": "isarray@0.0.1",
+ "_shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf",
+ "_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "_from": "isarray@0.0.1"
}
diff --git a/deps/npm/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json b/deps/npm/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json
index 0364d54ba46af6..ee70702359198d 100644
--- a/deps/npm/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json
+++ b/deps/npm/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json
@@ -22,33 +22,13 @@
"browserify"
],
"license": "MIT",
- "gitHead": "d46d4fd87cf1d06e031c23f1ba170ca7d4ade9a0",
+ "readme": "**string_decoder.js** (`require('string_decoder')`) from Node.js core\n\nCopyright Joyent, Inc. and other Node contributors. See LICENCE file for details.\n\nVersion numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.**\n\nThe *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version.",
+ "readmeFilename": "README.md",
"bugs": {
"url": "https://github.com/rvagg/string_decoder/issues"
},
"_id": "string_decoder@0.10.31",
"_shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94",
- "_from": "string_decoder@>=0.10.0 <0.11.0",
- "_npmVersion": "1.4.23",
- "_npmUser": {
- "name": "rvagg",
- "email": "rod@vagg.org"
- },
- "maintainers": [
- {
- "name": "substack",
- "email": "mail@substack.net"
- },
- {
- "name": "rvagg",
- "email": "rod@vagg.org"
- }
- ],
- "dist": {
- "shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94",
- "tarball": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
- },
- "directories": {},
"_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "readme": "ERROR: No README data found!"
+ "_from": "string_decoder@>=0.10.0 <0.11.0"
}
diff --git a/deps/npm/node_modules/request/node_modules/extend/.eslintrc b/deps/npm/node_modules/request/node_modules/extend/.eslintrc
new file mode 100644
index 00000000000000..d49f17353d70e2
--- /dev/null
+++ b/deps/npm/node_modules/request/node_modules/extend/.eslintrc
@@ -0,0 +1,192 @@
+{
+ "env": {
+ "browser": false,
+ "node": true,
+ "amd": false,
+ "mocha": false,
+ "jasmine": false
+ },
+
+ "rules": {
+ "accessor-pairs": [2, { getWithoutSet: false, setWithoutGet: true }],
+ "array-bracket-spacing": [2, "never", {
+ "singleValue": false,
+ "objectsInArrays": false,
+ "arraysInArrays": false
+ }],
+ "block-scoped-var": [0],
+ "brace-style": [2, "1tbs", { "allowSingleLine": true }],
+ "camelcase": [2],
+ "comma-dangle": [2, "never"],
+ "comma-spacing": [2],
+ "comma-style": [2, "last"],
+ "complexity": [2, 15],
+ "computed-property-spacing": [2, "never"],
+ "consistent-return": [2],
+ "consistent-this": [0, "that"],
+ "constructor-super": [2],
+ "curly": [2, "all"],
+ "default-case": [2],
+ "dot-notation": [2, { "allowKeywords": true }],
+ "eol-last": [2],
+ "eqeqeq": [2],
+ "func-names": [0],
+ "func-style": [2, "expression"],
+ "generator-star-spacing": [2, { "before": false, "after": true }],
+ "global-strict": [0, "never"],
+ "guard-for-in": [0],
+ "handle-callback-err": [0],
+ "key-spacing": [2, { "beforeColon": false, "afterColon": true }],
+ "linebreak-style": [2, "unix"],
+ "lines-around-comment": [2, {
+ "beforeBlockComment": false,
+ "afterBlockComment": false,
+ "beforeLineComment": false,
+ "beforeLineComment": false,
+ "allowBlockStart": true,
+ "allowBlockEnd": true
+ }],
+ "quotes": [2, "single", "avoid-escape"],
+ "max-depth": [1, 4],
+ "max-len": [0, 80, 4],
+ "max-nested-callbacks": [2, 2],
+ "max-params": [2, 2],
+ "max-statements": [2, 21],
+ "new-parens": [2],
+ "new-cap": [2],
+ "newline-after-var": [0],
+ "no-alert": [2],
+ "no-array-constructor": [2],
+ "no-bitwise": [0],
+ "no-caller": [2],
+ "no-catch-shadow": [2],
+ "no-cond-assign": [2],
+ "no-console": [2],
+ "no-constant-condition": [2],
+ "no-continue": [2],
+ "no-control-regex": [2],
+ "no-debugger": [2],
+ "no-delete-var": [2],
+ "no-div-regex": [0],
+ "no-dupe-args": [2],
+ "no-dupe-keys": [2],
+ "no-duplicate-case": [2],
+ "no-else-return": [0],
+ "no-empty": [2],
+ "no-empty-character-class": [2],
+ "no-empty-label": [2],
+ "no-eq-null": [0],
+ "no-eval": [2],
+ "no-ex-assign": [2],
+ "no-extend-native": [2],
+ "no-extra-bind": [2],
+ "no-extra-boolean-cast": [2],
+ "no-extra-parens": [0],
+ "no-extra-semi": [2],
+ "no-fallthrough": [2],
+ "no-floating-decimal": [2],
+ "no-func-assign": [2],
+ "no-implied-eval": [2],
+ "no-inline-comments": [0],
+ "no-inner-declarations": [2, "functions"],
+ "no-invalid-regexp": [2],
+ "no-irregular-whitespace": [2],
+ "no-iterator": [2],
+ "no-label-var": [2],
+ "no-labels": [2],
+ "no-lone-blocks": [2],
+ "no-lonely-if": [2],
+ "no-loop-func": [2],
+ "no-mixed-requires": [0, false],
+ "no-mixed-spaces-and-tabs": [2, false],
+ "no-multi-spaces": [2],
+ "no-multi-str": [2],
+ "no-multiple-empty-lines": [2, {"max": 1}],
+ "no-native-reassign": [2],
+ "no-negated-in-lhs": [2],
+ "no-nested-ternary": [0],
+ "no-new": [2],
+ "no-new-func": [2],
+ "no-new-object": [2],
+ "no-new-require": [0],
+ "no-new-wrappers": [2],
+ "no-obj-calls": [2],
+ "no-octal": [2],
+ "no-octal-escape": [2],
+ "no-param-reassign": [2],
+ "no-path-concat": [0],
+ "no-plusplus": [0],
+ "no-process-env": [0],
+ "no-process-exit": [2],
+ "no-proto": [2],
+ "no-redeclare": [2],
+ "no-regex-spaces": [2],
+ "no-reserved-keys": [2],
+ "no-restricted-modules": [0],
+ "no-return-assign": [2, "always"],
+ "no-script-url": [2],
+ "no-self-compare": [0],
+ "no-sequences": [2],
+ "no-shadow": [2],
+ "no-shadow-restricted-names": [2],
+ "no-space-before-semi": [2],
+ "no-spaced-func": [2],
+ "no-sparse-arrays": [2],
+ "no-sync": [0],
+ "no-ternary": [0],
+ "no-this-before-super": [2],
+ "no-throw-literal": [2],
+ "no-trailing-spaces": [2, { "skipBlankLines": false }],
+ "no-undef": [2],
+ "no-undef-init": [2],
+ "no-undefined": [0],
+ "no-underscore-dangle": [2],
+ "no-unexpected-multiline": [2],
+ "no-unneeded-ternary": [2],
+ "no-unreachable": [2],
+ "no-unused-expressions": [2],
+ "no-unused-vars": [2, { "vars": "all", "args": "after-used" }],
+ "no-use-before-define": [2],
+ "no-void": [0],
+ "no-warning-comments": [0, { "terms": ["todo", "fixme", "xxx"], "location": "start" }],
+ "no-with": [2],
+ "no-wrap-func": [2],
+ "object-curly-spacing": [2, "always"],
+ "object-shorthand": [2, "never"],
+ "one-var": [0],
+ "operator-assignment": [0, "always"],
+ "operator-linebreak": [2, "none"],
+ "padded-blocks": [0],
+ "prefer-const": [0],
+ "quote-props": [0],
+ "radix": [0],
+ "semi": [2],
+ "semi-spacing": [2, { "before": false, "after": true }],
+ "sort-vars": [0],
+ "space-after-keywords": [2, "always"],
+ "space-before-function-paren": [2, { "anonymous": "always", "named": "never" }],
+ "space-before-blocks": [0, "always"],
+ "space-in-brackets": [0, "never", {
+ "singleValue": true,
+ "arraysInArrays": false,
+ "arraysInObjects": false,
+ "objectsInArrays": true,
+ "objectsInObjects": true,
+ "propertyName": false
+ }],
+ "space-in-parens": [2, "never"],
+ "space-infix-ops": [2],
+ "space-return-throw-case": [2],
+ "space-unary-ops": [2, { "words": true, "nonwords": false }],
+ "spaced-comment": [2, "always"],
+ "spaced-line-comment": [0, "always"],
+ "strict": [2, "global"],
+ "use-isnan": [2],
+ "valid-jsdoc": [0],
+ "valid-typeof": [2],
+ "vars-on-top": [0],
+ "wrap-iife": [2],
+ "wrap-regex": [2],
+ "yoda": [2, "never", { "exceptRange": true, "onlyEquality": false }]
+ }
+}
diff --git a/deps/npm/node_modules/request/node_modules/forever-agent/package.json b/deps/npm/node_modules/request/node_modules/forever-agent/package.json
index ef074a51063a85..7bdaaaff0d5f2b 100644
--- a/deps/npm/node_modules/request/node_modules/forever-agent/package.json
+++ b/deps/npm/node_modules/request/node_modules/forever-agent/package.json
@@ -18,39 +18,14 @@
"engines": {
"node": "*"
},
- "gitHead": "1b3b6163f2b3c2c4122bbfa288c1325c0df9871d",
+ "readme": "forever-agent\n=============\n\nHTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module.\n",
+ "readmeFilename": "README.md",
"bugs": {
"url": "https://github.com/mikeal/forever-agent/issues"
},
- "homepage": "https://github.com/mikeal/forever-agent",
+ "homepage": "https://github.com/mikeal/forever-agent#readme",
"_id": "forever-agent@0.6.1",
- "scripts": {},
"_shasum": "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91",
- "_from": "forever-agent@>=0.6.0 <0.7.0",
- "_npmVersion": "1.4.28",
- "_npmUser": {
- "name": "simov",
- "email": "simeonvelichkov@gmail.com"
- },
- "maintainers": [
- {
- "name": "mikeal",
- "email": "mikeal.rogers@gmail.com"
- },
- {
- "name": "nylen",
- "email": "jnylen@gmail.com"
- },
- {
- "name": "simov",
- "email": "simeonvelichkov@gmail.com"
- }
- ],
- "dist": {
- "shasum": "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91",
- "tarball": "http://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz"
- },
- "directories": {},
"_resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "readme": "ERROR: No README data found!"
+ "_from": "forever-agent@>=0.6.0 <0.7.0"
}
diff --git a/deps/npm/node_modules/request/node_modules/form-data/Readme.md b/deps/npm/node_modules/request/node_modules/form-data/Readme.md
index c8a1a55db1de34..492773231f6673 100644
--- a/deps/npm/node_modules/request/node_modules/form-data/Readme.md
+++ b/deps/npm/node_modules/request/node_modules/form-data/Readme.md
@@ -1,8 +1,8 @@
-# Form-Data [](https://travis-ci.org/felixge/node-form-data) [](https://gemnasium.com/felixge/node-form-data)
+# Form-Data [](https://gitter.im/form-data/form-data) [](https://travis-ci.org/form-data/form-data) [](https://david-dm.org/form-data/form-data)
-A module to create readable ```"multipart/form-data"``` streams. Can be used to submit forms and file uploads to other web applications.
+A library to create readable ```"multipart/form-data"``` streams. Can be used to submit forms and file uploads to other web applications.
-The API of this module is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd].
+The API of this library is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd].
[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface
[streams2-thing]: http://nodejs.org/api/stream.html#stream_compatibility_with_older_node_versions
@@ -43,7 +43,7 @@ http.request('http://nodejs.org/images/logo.png', function(response) {
});
```
-Or @mikeal's request stream:
+Or @mikeal's [request](https://github.com/request/request) stream:
``` javascript
var FormData = require('form-data');
@@ -61,7 +61,7 @@ In order to submit this form to a web application, call ```submit(url, [callback
``` javascript
form.submit('http://example.org/', function(err, res) {
// res – response object (http.IncomingMessage) //
- res.resume(); // for node-0.10.x
+ res.resume();
});
```
@@ -161,15 +161,50 @@ form.submit({
});
```
+### Integration with other libraries
+
+#### Request
+
+Form submission using [request](https://github.com/request/request):
+
+```javascript
+var formData = {
+ my_field: 'my_value',
+ my_file: fs.createReadStream(__dirname + '/unicycle.jpg'),
+};
+
+request.post({url:'http://service.com/upload', formData: formData}, function(err, httpResponse, body) {
+ if (err) {
+ return console.error('upload failed:', err);
+ }
+ console.log('Upload successful! Server responded with:', body);
+});
+```
+
+For more details see [request readme](https://github.com/request/request#multipartform-data-multipart-form-uploads).
+
+#### node-fetch
+
+You can also submit a form using [node-fetch](https://github.com/bitinn/node-fetch):
+
+```javascript
+var form = new FormData();
+
+form.append('a', 1);
+
+fetch('http://example.com', { method: 'POST', body: form })
+ .then(function(res) {
+ return res.json();
+ }).then(function(json) {
+ console.log(json);
+ });
+```
+
## Notes
- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround.
- If it feels like FormData hangs after submit and you're on ```node-0.10```, please check [Compatibility with Older Node Versions][streams2-thing]
-## TODO
-
-- Add new streams (0.10) support and try really hard not to break it for 0.8.x.
-
## License
Form-Data is licensed under the MIT license.
diff --git a/deps/npm/node_modules/request/node_modules/form-data/lib/form_data.js b/deps/npm/node_modules/request/node_modules/form-data/lib/form_data.js
index 89505f6eb26342..0cbb2e8331a871 100644
--- a/deps/npm/node_modules/request/node_modules/form-data/lib/form_data.js
+++ b/deps/npm/node_modules/request/node_modules/form-data/lib/form_data.js
@@ -19,9 +19,12 @@ function FormData() {
util.inherits(FormData, CombinedStream);
FormData.LINE_BREAK = '\r\n';
+FormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream';
FormData.prototype.append = function(field, value, options) {
- options = options || {};
+ options = (typeof options === 'string')
+ ? { filename: options }
+ : options || {};
var append = CombinedStream.prototype.append.bind(this);
@@ -133,37 +136,57 @@ FormData.prototype._trackLength = function(header, value, options) {
};
FormData.prototype._multiPartHeader = function(field, value, options) {
- var boundary = this.getBoundary();
- var header = '';
-
// custom header specified (as string)?
// it becomes responsible for boundary
// (e.g. to handle extra CRLFs on .NET servers)
if (options.header != null) {
- header = options.header;
- } else {
- header += '--' + boundary + FormData.LINE_BREAK +
- 'Content-Disposition: form-data; name="' + field + '"';
-
- // fs- and request- streams have path property
- // or use custom filename and/or contentType
- // TODO: Use request's response mime-type
- if (options.filename || value.path) {
- header +=
- '; filename="' + path.basename(options.filename || value.path) + '"' + FormData.LINE_BREAK +
- 'Content-Type: ' + (options.contentType || mime.lookup(options.filename || value.path));
-
- // http response has not
- } else if (value.readable && value.hasOwnProperty('httpVersion')) {
- header +=
- '; filename="' + path.basename(value.client._httpMessage.path) + '"' + FormData.LINE_BREAK +
- 'Content-Type: ' + value.headers['content-type'];
- }
+ return options.header;
+ }
+
+ var contents = '';
+ var headers = {
+ 'Content-Disposition': ['form-data', 'name="' + field + '"'],
+ 'Content-Type': []
+ };
- header += FormData.LINE_BREAK + FormData.LINE_BREAK;
+ // fs- and request- streams have path property
+ // or use custom filename and/or contentType
+ // TODO: Use request's response mime-type
+ if (options.filename || value.path) {
+ headers['Content-Disposition'].push(
+ 'filename="' + path.basename(options.filename || value.path) + '"'
+ );
+ headers['Content-Type'].push(
+ options.contentType ||
+ mime.lookup(options.filename || value.path) ||
+ FormData.DEFAULT_CONTENT_TYPE
+ );
+ // http response has not
+ } else if (value.readable && value.hasOwnProperty('httpVersion')) {
+ headers['Content-Disposition'].push(
+ 'filename="' + path.basename(value.client._httpMessage.path) + '"'
+ );
+ headers['Content-Type'].push(
+ options.contentType ||
+ value.headers['content-type'] ||
+ FormData.DEFAULT_CONTENT_TYPE
+ );
+ } else if (Buffer.isBuffer(value)) {
+ headers['Content-Type'].push(
+ options.contentType ||
+ FormData.DEFAULT_CONTENT_TYPE
+ );
+ } else if (options.contentType) {
+ headers['Content-Type'].push(options.contentType);
+ }
+
+ for (var prop in headers) {
+ if (headers[prop].length) {
+ contents += prop + ': ' + headers[prop].join('; ') + FormData.LINE_BREAK;
+ }
}
- return header;
+ return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK;
};
FormData.prototype._multiPartFooter = function(field, value, options) {
diff --git a/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/.jscsrc b/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/.jscsrc
deleted file mode 100644
index b8cfa1731924bf..00000000000000
--- a/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/.jscsrc
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "validateIndentation": 4
-}
\ No newline at end of file
diff --git a/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/CHANGELOG.md b/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/CHANGELOG.md
index 293ba59f7476e5..b0ffd4f3b6bc1e 100644
--- a/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/CHANGELOG.md
+++ b/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/CHANGELOG.md
@@ -1,3 +1,25 @@
+# v1.4.2
+
+- Ensure coverage files don't get published on npm (#879)
+
+# v1.4.1
+
+- Add in overlooked `detectLimit` method (#866)
+- Removed unnecessary files from npm releases (#861)
+- Removed usage of a reserved word to prevent :boom: in older environments (#870)
+
+# v1.4.0
+
+- `asyncify` now supports promises (#840)
+- Added `Limit` versions of `filter` and `reject` (#836)
+- Add `Limit` versions of `detect`, `some` and `every` (#828, #829)
+- `some`, `every` and `detect` now short circuit early (#828, #829)
+- Improve detection of the global object (#804), enabling use in WebWorkers
+- `whilst` now called with arguments from iterator (#823)
+- `during` now gets called with arguments from iterator (#824)
+- Code simplifications and optimizations aplenty ([diff](https://github.com/caolan/async/compare/v1.3.0...v1.4.0))
+
+
# v1.3.0
New Features:
@@ -13,6 +35,7 @@ New Features:
Bug Fixes:
- `cargo` now exposes the `payload` size, and `cargo.payload` can be changed on the fly after the `cargo` is created. (#740, #744, #783)
+
# v1.2.1
Bug Fix:
diff --git a/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/README.md b/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/README.md
deleted file mode 100644
index c0a93c1b131039..00000000000000
--- a/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/README.md
+++ /dev/null
@@ -1,1789 +0,0 @@
-# Async.js
-
-[](https://travis-ci.org/caolan/async)
-[](https://www.npmjs.org/package/async)
-[](https://coveralls.io/r/caolan/async?branch=master)
-[](https://gitter.im/caolan/async?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-
-
-Async is a utility module which provides straight-forward, powerful functions
-for working with asynchronous JavaScript. Although originally designed for
-use with [Node.js](http://nodejs.org) and installable via `npm install async`,
-it can also be used directly in the browser.
-
-Async is also installable via:
-
-- [bower](http://bower.io/): `bower install async`
-- [component](https://github.com/component/component): `component install
- caolan/async`
-- [jam](http://jamjs.org/): `jam install async`
-- [spm](http://spmjs.io/): `spm install async`
-
-Async provides around 20 functions that include the usual 'functional'
-suspects (`map`, `reduce`, `filter`, `each`…) as well as some common patterns
-for asynchronous control flow (`parallel`, `series`, `waterfall`…). All these
-functions assume you follow the Node.js convention of providing a single
-callback as the last argument of your `async` function.
-
-
-## Quick Examples
-
-```javascript
-async.map(['file1','file2','file3'], fs.stat, function(err, results){
- // results is now an array of stats for each file
-});
-
-async.filter(['file1','file2','file3'], fs.exists, function(results){
- // results now equals an array of the existing files
-});
-
-async.parallel([
- function(){ ... },
- function(){ ... }
-], callback);
-
-async.series([
- function(){ ... },
- function(){ ... }
-]);
-```
-
-There are many more functions available so take a look at the docs below for a
-full list. This module aims to be comprehensive, so if you feel anything is
-missing please create a GitHub issue for it.
-
-## Common Pitfalls [(StackOverflow)](http://stackoverflow.com/questions/tagged/async.js)
-### Synchronous iteration functions
-
-If you get an error like `RangeError: Maximum call stack size exceeded.` or other stack overflow issues when using async, you are likely using a synchronous iterator. By *synchronous* we mean a function that calls its callback on the same tick in the javascript event loop, without doing any I/O or using any timers. Calling many callbacks iteratively will quickly overflow the stack. If you run into this issue, just defer your callback with `async.nextTick` to start a new call stack on the next tick of the event loop.
-
-This can also arise by accident if you callback early in certain cases:
-
-```js
-async.eachSeries(hugeArray, function iterator(item, callback) {
- if (inCache(item)) {
- callback(null, cache[item]); // if many items are cached, you'll overflow
- } else {
- doSomeIO(item, callback);
- }
-}, function done() {
- //...
-});
-```
-
-Just change it to:
-
-```js
-async.eachSeries(hugeArray, function iterator(item, callback) {
- if (inCache(item)) {
- async.setImmediate(function () {
- callback(null, cache[item]);
- });
- } else {
- doSomeIO(item, callback);
- //...
-```
-
-Async guards against synchronous functions in some, but not all, cases. If you are still running into stack overflows, you can defer as suggested above, or wrap functions with [`async.ensureAsync`](#ensureAsync) Functions that are asynchronous by their nature do not have this problem and don't need the extra callback deferral.
-
-If javascript's event loop is still a bit nebulous, check out [this article](http://blog.carbonfive.com/2013/10/27/the-javascript-event-loop-explained/) or [this talk](http://2014.jsconf.eu/speakers/philip-roberts-what-the-heck-is-the-event-loop-anyway.html) for more detailed information about how it works.
-
-
-### Multiple callbacks
-
-Make sure to always `return` when calling a callback early, otherwise you will cause multiple callbacks and unpredictable behavior in many cases.
-
-```js
-async.waterfall([
- function (callback) {
- getSomething(options, function (err, result) {
- if (err) {
- callback(new Error("failed getting something:" + err.message));
- // we should return here
- }
- // since we did not return, this callback still will be called and
- // `processData` will be called twice
- callback(result);
- });
- },
- processData
-], done)
-```
-
-It is always good practice to `return callback(err, result)` whenever a callback call is not the last statement of a function.
-
-
-### Binding a context to an iterator
-
-This section is really about `bind`, not about `async`. If you are wondering how to
-make `async` execute your iterators in a given context, or are confused as to why
-a method of another library isn't working as an iterator, study this example:
-
-```js
-// Here is a simple object with an (unnecessarily roundabout) squaring method
-var AsyncSquaringLibrary = {
- squareExponent: 2,
- square: function(number, callback){
- var result = Math.pow(number, this.squareExponent);
- setTimeout(function(){
- callback(null, result);
- }, 200);
- }
-};
-
-async.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){
- // result is [NaN, NaN, NaN]
- // This fails because the `this.squareExponent` expression in the square
- // function is not evaluated in the context of AsyncSquaringLibrary, and is
- // therefore undefined.
-});
-
-async.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){
- // result is [1, 4, 9]
- // With the help of bind we can attach a context to the iterator before
- // passing it to async. Now the square function will be executed in its
- // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent`
- // will be as expected.
-});
-```
-
-## Download
-
-The source is available for download from
-[GitHub](https://github.com/caolan/async/blob/master/lib/async.js).
-Alternatively, you can install using Node Package Manager (`npm`):
-
- npm install async
-
-As well as using Bower:
-
- bower install async
-
-__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed
-
-## In the Browser
-
-So far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5.
-
-Usage:
-
-```html
-
-
-```
-
-## Documentation
-
-Some functions are also available in the following forms:
-* `Series` - the same as `` but runs only a single async operation at a time
-* `Limit` - the same as `` but runs a maximum of `limit` async operations at a time
-
-### Collections
-
-* [`each`](#each), `eachSeries`, `eachLimit`
-* [`forEachOf`](#forEachOf), `forEachOfSeries`, `forEachOfLimit`
-* [`map`](#map), `mapSeries`, `mapLimit`
-* [`filter`](#filter), `filterSeries`, `filterLimit`
-* [`reject`](#reject), `rejectSeries`, `rejectLimit`
-* [`reduce`](#reduce), [`reduceRight`](#reduceRight)
-* [`detect`](#detect), `detectSeries`, `detectLimit`
-* [`sortBy`](#sortBy)
-* [`some`](#some), `someLimit`
-* [`every`](#every), `everyLimit`
-* [`concat`](#concat), `concatSeries`
-
-### Control Flow
-
-* [`series`](#seriestasks-callback)
-* [`parallel`](#parallel), `parallelLimit`
-* [`whilst`](#whilst), [`doWhilst`](#doWhilst)
-* [`until`](#until), [`doUntil`](#doUntil)
-* [`during`](#during), [`doDuring`](#doDuring)
-* [`forever`](#forever)
-* [`waterfall`](#waterfall)
-* [`compose`](#compose)
-* [`seq`](#seq)
-* [`applyEach`](#applyEach), `applyEachSeries`
-* [`queue`](#queue), [`priorityQueue`](#priorityQueue)
-* [`cargo`](#cargo)
-* [`auto`](#auto)
-* [`retry`](#retry)
-* [`iterator`](#iterator)
-* [`times`](#times), `timesSeries`, `timesLimit`
-
-### Utils
-
-* [`apply`](#apply)
-* [`nextTick`](#nextTick)
-* [`memoize`](#memoize)
-* [`unmemoize`](#unmemoize)
-* [`ensureAsync`](#ensureAsync)
-* [`constant`](#constant)
-* [`asyncify`](#asyncify)
-* [`wrapSync`](#wrapSync)
-* [`log`](#log)
-* [`dir`](#dir)
-* [`noConflict`](#noConflict)
-
-## Collections
-
-
-
-### each(arr, iterator, [callback])
-
-Applies the function `iterator` to each item in `arr`, in parallel.
-The `iterator` is called with an item from the list, and a callback for when it
-has finished. If the `iterator` passes an error to its `callback`, the main
-`callback` (for the `each` function) is immediately called with the error.
-
-Note, that since this function applies `iterator` to each item in parallel,
-there is no guarantee that the iterator functions will complete in order.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A function to apply to each item in `arr`.
- The iterator is passed a `callback(err)` which must be called once it has
- completed. If no error has occurred, the `callback` should be run without
- arguments or with an explicit `null` argument. The array index is not passed
- to the iterator. If you need the index, use [`forEachOf`](#forEachOf).
-* `callback(err)` - *Optional* A callback which is called when all `iterator` functions
- have finished, or an error occurs.
-
-__Examples__
-
-
-```js
-// assuming openFiles is an array of file names and saveFile is a function
-// to save the modified contents of that file:
-
-async.each(openFiles, saveFile, function(err){
- // if any of the saves produced an error, err would equal that error
-});
-```
-
-```js
-// assuming openFiles is an array of file names
-
-async.each(openFiles, function(file, callback) {
-
- // Perform operation on file here.
- console.log('Processing file ' + file);
-
- if( file.length > 32 ) {
- console.log('This file name is too long');
- callback('File name too long');
- } else {
- // Do work to process file here
- console.log('File processed');
- callback();
- }
-}, function(err){
- // if any of the file processing produced an error, err would equal that error
- if( err ) {
- // One of the iterations produced an error.
- // All processing will now stop.
- console.log('A file failed to process');
- } else {
- console.log('All files have been processed successfully');
- }
-});
-```
-
-__Related__
-
-* eachSeries(arr, iterator, [callback])
-* eachLimit(arr, limit, iterator, [callback])
-
----------------------------------------
-
-
-
-
-### forEachOf(obj, iterator, [callback])
-
-Like `each`, except that it iterates over objects, and passes the key as the second argument to the iterator.
-
-__Arguments__
-
-* `obj` - An object or array to iterate over.
-* `iterator(item, key, callback)` - A function to apply to each item in `obj`.
-The `key` is the item's key, or index in the case of an array. The iterator is
-passed a `callback(err)` which must be called once it has completed. If no
-error has occurred, the callback should be run without arguments or with an
-explicit `null` argument.
-* `callback(err)` - *Optional* A callback which is called when all `iterator` functions have finished, or an error occurs.
-
-__Example__
-
-```js
-var obj = {dev: "/dev.json", test: "/test.json", prod: "/prod.json"};
-var configs = {};
-
-async.forEachOf(obj, function (value, key, callback) {
- fs.readFile(__dirname + value, "utf8", function (err, data) {
- if (err) return callback(err);
- try {
- configs[key] = JSON.parse(data);
- } catch (e) {
- return callback(e);
- }
- callback();
- })
-}, function (err) {
- if (err) console.error(err.message);
- // configs is now a map of JSON data
- doSomethingWith(configs);
-})
-```
-
-__Related__
-
-* forEachOfSeries(obj, iterator, [callback])
-* forEachOfLimit(obj, limit, iterator, [callback])
-
----------------------------------------
-
-
-### map(arr, iterator, [callback])
-
-Produces a new array of values by mapping each value in `arr` through
-the `iterator` function. The `iterator` is called with an item from `arr` and a
-callback for when it has finished processing. Each of these callback takes 2 arguments:
-an `error`, and the transformed item from `arr`. If `iterator` passes an error to its
-callback, the main `callback` (for the `map` function) is immediately called with the error.
-
-Note, that since this function applies the `iterator` to each item in parallel,
-there is no guarantee that the `iterator` functions will complete in order.
-However, the results array will be in the same order as the original `arr`.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A function to apply to each item in `arr`.
- The iterator is passed a `callback(err, transformed)` which must be called once
- it has completed with an error (which can be `null`) and a transformed item.
-* `callback(err, results)` - *Optional* A callback which is called when all `iterator`
- functions have finished, or an error occurs. Results is an array of the
- transformed items from the `arr`.
-
-__Example__
-
-```js
-async.map(['file1','file2','file3'], fs.stat, function(err, results){
- // results is now an array of stats for each file
-});
-```
-
-__Related__
-* mapSeries(arr, iterator, [callback])
-* mapLimit(arr, limit, iterator, [callback])
-
----------------------------------------
-
-
-
-### filter(arr, iterator, [callback])
-
-__Alias:__ `select`
-
-Returns a new array of all the values in `arr` which pass an async truth test.
-_The callback for each `iterator` call only accepts a single argument of `true` or
-`false`; it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like `fs.exists`. This operation is
-performed in parallel, but the results array will be in the same order as the
-original.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A truth test to apply to each item in `arr`.
- The `iterator` is passed a `callback(truthValue)`, which must be called with a
- boolean argument once it has completed.
-* `callback(results)` - *Optional* A callback which is called after all the `iterator`
- functions have finished.
-
-__Example__
-
-```js
-async.filter(['file1','file2','file3'], fs.exists, function(results){
- // results now equals an array of the existing files
-});
-```
-
-__Related__
-
-* filterSeries(arr, iterator, [callback])
-* filterLimit(arr, limit, iterator, [callback])
-
----------------------------------------
-
-
-### reject(arr, iterator, [callback])
-
-The opposite of [`filter`](#filter). Removes values that pass an `async` truth test.
-
-__Related__
-
-* rejectSeries(arr, iterator, [callback])
-* rejectLimit(arr, limit, iterator, [callback])
-
----------------------------------------
-
-
-### reduce(arr, memo, iterator, [callback])
-
-__Aliases:__ `inject`, `foldl`
-
-Reduces `arr` into a single value using an async `iterator` to return
-each successive step. `memo` is the initial state of the reduction.
-This function only operates in series.
-
-For performance reasons, it may make sense to split a call to this function into
-a parallel map, and then use the normal `Array.prototype.reduce` on the results.
-This function is for situations where each step in the reduction needs to be async;
-if you can get the data before reducing it, then it's probably a good idea to do so.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `memo` - The initial state of the reduction.
-* `iterator(memo, item, callback)` - A function applied to each item in the
- array to produce the next step in the reduction. The `iterator` is passed a
- `callback(err, reduction)` which accepts an optional error as its first
- argument, and the state of the reduction as the second. If an error is
- passed to the callback, the reduction is stopped and the main `callback` is
- immediately called with the error.
-* `callback(err, result)` - *Optional* A callback which is called after all the `iterator`
- functions have finished. Result is the reduced value.
-
-__Example__
-
-```js
-async.reduce([1,2,3], 0, function(memo, item, callback){
- // pointless async:
- process.nextTick(function(){
- callback(null, memo + item)
- });
-}, function(err, result){
- // result is now equal to the last value of memo, which is 6
-});
-```
-
----------------------------------------
-
-
-### reduceRight(arr, memo, iterator, [callback])
-
-__Alias:__ `foldr`
-
-Same as [`reduce`](#reduce), only operates on `arr` in reverse order.
-
-
----------------------------------------
-
-
-### detect(arr, iterator, [callback])
-
-Returns the first value in `arr` that passes an async truth test. The
-`iterator` is applied in parallel, meaning the first iterator to return `true` will
-fire the detect `callback` with that result. That means the result might not be
-the first item in the original `arr` (in terms of order) that passes the test.
-
-If order within the original `arr` is important, then look at [`detectSeries`](#detectSeries).
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A truth test to apply to each item in `arr`.
- The iterator is passed a `callback(truthValue)` which must be called with a
- boolean argument once it has completed. **Note: this callback does not take an error as its first argument.**
-* `callback(result)` - *Optional* A callback which is called as soon as any iterator returns
- `true`, or after all the `iterator` functions have finished. Result will be
- the first item in the array that passes the truth test (iterator) or the
- value `undefined` if none passed. **Note: this callback does not take an error as its first argument.**
-
-__Example__
-
-```js
-async.detect(['file1','file2','file3'], fs.exists, function(result){
- // result now equals the first file in the list that exists
-});
-```
-
-__Related__
-
-* detectSeries(arr, iterator, [callback])
-* detectLimit(arr, limit, iterator, [callback])
-
----------------------------------------
-
-
-### sortBy(arr, iterator, [callback])
-
-Sorts a list by the results of running each `arr` value through an async `iterator`.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A function to apply to each item in `arr`.
- The iterator is passed a `callback(err, sortValue)` which must be called once it
- has completed with an error (which can be `null`) and a value to use as the sort
- criteria.
-* `callback(err, results)` - *Optional* A callback which is called after all the `iterator`
- functions have finished, or an error occurs. Results is the items from
- the original `arr` sorted by the values returned by the `iterator` calls.
-
-__Example__
-
-```js
-async.sortBy(['file1','file2','file3'], function(file, callback){
- fs.stat(file, function(err, stats){
- callback(err, stats.mtime);
- });
-}, function(err, results){
- // results is now the original array of files sorted by
- // modified date
-});
-```
-
-__Sort Order__
-
-By modifying the callback parameter the sorting order can be influenced:
-
-```js
-//ascending order
-async.sortBy([1,9,3,5], function(x, callback){
- callback(null, x);
-}, function(err,result){
- //result callback
-} );
-
-//descending order
-async.sortBy([1,9,3,5], function(x, callback){
- callback(null, x*-1); //<- x*-1 instead of x, turns the order around
-}, function(err,result){
- //result callback
-} );
-```
-
----------------------------------------
-
-
-### some(arr, iterator, [callback])
-
-__Alias:__ `any`
-
-Returns `true` if at least one element in the `arr` satisfies an async test.
-_The callback for each iterator call only accepts a single argument of `true` or
-`false`; it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like `fs.exists`. Once any iterator
-call returns `true`, the main `callback` is immediately called.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A truth test to apply to each item in the array
- in parallel. The iterator is passed a `callback(truthValue)`` which must be
- called with a boolean argument once it has completed.
-* `callback(result)` - *Optional* A callback which is called as soon as any iterator returns
- `true`, or after all the iterator functions have finished. Result will be
- either `true` or `false` depending on the values of the async tests.
-
- **Note: the callbacks do not take an error as their first argument.**
-__Example__
-
-```js
-async.some(['file1','file2','file3'], fs.exists, function(result){
- // if result is true then at least one of the files exists
-});
-```
-
-__Related__
-
-* someLimit(arr, limit, iterator, callback)
-
----------------------------------------
-
-
-### every(arr, iterator, [callback])
-
-__Alias:__ `all`
-
-Returns `true` if every element in `arr` satisfies an async test.
-_The callback for each `iterator` call only accepts a single argument of `true` or
-`false`; it does not accept an error argument first!_ This is in-line with the
-way node libraries work with truth tests like `fs.exists`.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A truth test to apply to each item in the array
- in parallel. The iterator is passed a `callback(truthValue)` which must be
- called with a boolean argument once it has completed.
-* `callback(result)` - *Optional* A callback which is called after all the `iterator`
- functions have finished. Result will be either `true` or `false` depending on
- the values of the async tests.
-
- **Note: the callbacks do not take an error as their first argument.**
-
-__Example__
-
-```js
-async.every(['file1','file2','file3'], fs.exists, function(result){
- // if result is true then every file exists
-});
-```
-
-__Related__
-
-* everyLimit(arr, limit, iterator, callback)
-
----------------------------------------
-
-
-### concat(arr, iterator, [callback])
-
-Applies `iterator` to each item in `arr`, concatenating the results. Returns the
-concatenated list. The `iterator`s are called in parallel, and the results are
-concatenated as they return. There is no guarantee that the results array will
-be returned in the original order of `arr` passed to the `iterator` function.
-
-__Arguments__
-
-* `arr` - An array to iterate over.
-* `iterator(item, callback)` - A function to apply to each item in `arr`.
- The iterator is passed a `callback(err, results)` which must be called once it
- has completed with an error (which can be `null`) and an array of results.
-* `callback(err, results)` - *Optional* A callback which is called after all the `iterator`
- functions have finished, or an error occurs. Results is an array containing
- the concatenated results of the `iterator` function.
-
-__Example__
-
-```js
-async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){
- // files is now a list of filenames that exist in the 3 directories
-});
-```
-
-__Related__
-
-* concatSeries(arr, iterator, [callback])
-
-
-## Control Flow
-
-
-### series(tasks, [callback])
-
-Run the functions in the `tasks` array in series, each one running once the previous
-function has completed. If any functions in the series pass an error to its
-callback, no more functions are run, and `callback` is immediately called with the value of the error.
-Otherwise, `callback` receives an array of results when `tasks` have completed.
-
-It is also possible to use an object instead of an array. Each property will be
-run as a function, and the results will be passed to the final `callback` as an object
-instead of an array. This can be a more readable way of handling results from
-[`series`](#series).
-
-**Note** that while many implementations preserve the order of object properties, the
-[ECMAScript Language Specifcation](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6)
-explicitly states that
-
-> The mechanics and order of enumerating the properties is not specified.
-
-So if you rely on the order in which your series of functions are executed, and want
-this to work on all platforms, consider using an array.
-
-__Arguments__
-
-* `tasks` - An array or object containing functions to run, each function is passed
- a `callback(err, result)` it must call on completion with an error `err` (which can
- be `null`) and an optional `result` value.
-* `callback(err, results)` - An optional callback to run once all the functions
- have completed. This function gets a results array (or object) containing all
- the result arguments passed to the `task` callbacks.
-
-__Example__
-
-```js
-async.series([
- function(callback){
- // do some stuff ...
- callback(null, 'one');
- },
- function(callback){
- // do some more stuff ...
- callback(null, 'two');
- }
-],
-// optional callback
-function(err, results){
- // results is now equal to ['one', 'two']
-});
-
-
-// an example using an object instead of an array
-async.series({
- one: function(callback){
- setTimeout(function(){
- callback(null, 1);
- }, 200);
- },
- two: function(callback){
- setTimeout(function(){
- callback(null, 2);
- }, 100);
- }
-},
-function(err, results) {
- // results is now equal to: {one: 1, two: 2}
-});
-```
-
----------------------------------------
-
-
-### parallel(tasks, [callback])
-
-Run the `tasks` array of functions in parallel, without waiting until the previous
-function has completed. If any of the functions pass an error to its
-callback, the main `callback` is immediately called with the value of the error.
-Once the `tasks` have completed, the results are passed to the final `callback` as an
-array.
-
-**Note:** `parallel` is about kicking-off I/O tasks in parallel, not about parallel execution of code. If your tasks do not use any timers or perform any I/O, they will actually be executed in series. Any synchronous setup sections for each task will happen one after the other. JavaScript remains single-threaded.
-
-It is also possible to use an object instead of an array. Each property will be
-run as a function and the results will be passed to the final `callback` as an object
-instead of an array. This can be a more readable way of handling results from
-[`parallel`](#parallel).
-
-
-__Arguments__
-
-* `tasks` - An array or object containing functions to run. Each function is passed
- a `callback(err, result)` which it must call on completion with an error `err`
- (which can be `null`) and an optional `result` value.
-* `callback(err, results)` - An optional callback to run once all the functions
- have completed. This function gets a results array (or object) containing all
- the result arguments passed to the task callbacks.
-
-__Example__
-
-```js
-async.parallel([
- function(callback){
- setTimeout(function(){
- callback(null, 'one');
- }, 200);
- },
- function(callback){
- setTimeout(function(){
- callback(null, 'two');
- }, 100);
- }
-],
-// optional callback
-function(err, results){
- // the results array will equal ['one','two'] even though
- // the second function had a shorter timeout.
-});
-
-
-// an example using an object instead of an array
-async.parallel({
- one: function(callback){
- setTimeout(function(){
- callback(null, 1);
- }, 200);
- },
- two: function(callback){
- setTimeout(function(){
- callback(null, 2);
- }, 100);
- }
-},
-function(err, results) {
- // results is now equals to: {one: 1, two: 2}
-});
-```
-
-__Related__
-
-* parallelLimit(tasks, limit, [callback])
-
----------------------------------------
-
-
-### whilst(test, fn, callback)
-
-Repeatedly call `fn`, while `test` returns `true`. Calls `callback` when stopped,
-or an error occurs.
-
-__Arguments__
-
-* `test()` - synchronous truth test to perform before each execution of `fn`.
-* `fn(callback)` - A function which is called each time `test` passes. The function is
- passed a `callback(err)`, which must be called once it has completed with an
- optional `err` argument.
-* `callback(err)` - A callback which is called after the test fails and repeated
- execution of `fn` has stopped.
-
-__Example__
-
-```js
-var count = 0;
-
-async.whilst(
- function () { return count < 5; },
- function (callback) {
- count++;
- setTimeout(callback, 1000);
- },
- function (err) {
- // 5 seconds have passed
- }
-);
-```
-
----------------------------------------
-
-
-### doWhilst(fn, test, callback)
-
-The post-check version of [`whilst`](#whilst). To reflect the difference in
-the order of operations, the arguments `test` and `fn` are switched.
-
-`doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.
-
----------------------------------------
-
-
-### until(test, fn, callback)
-
-Repeatedly call `fn` until `test` returns `true`. Calls `callback` when stopped,
-or an error occurs.
-
-The inverse of [`whilst`](#whilst).
-
----------------------------------------
-
-
-### doUntil(fn, test, callback)
-
-Like [`doWhilst`](#doWhilst), except the `test` is inverted. Note the argument ordering differs from `until`.
-
----------------------------------------
-
-
-### during(test, fn, callback)
-
-Like [`whilst`](#whilst), except the `test` is an asynchronous function that is passed a callback in the form of `function (err, truth)`. If error is passed to `test` or `fn`, the main callback is immediately called with the value of the error.
-
-__Example__
-
-```js
-var count = 0;
-
-async.during(
- function (callback) {
- return callback(null, count < 5);
- },
- function (callback) {
- count++;
- setTimeout(callback, 1000);
- },
- function (err) {
- // 5 seconds have passed
- }
-);
-```
-
----------------------------------------
-
-
-### doDuring(fn, test, callback)
-
-The post-check version of [`during`](#during). To reflect the difference in
-the order of operations, the arguments `test` and `fn` are switched.
-
-Also a version of [`doWhilst`](#doWhilst) with asynchronous `test` function.
-
----------------------------------------
-
-
-### forever(fn, [errback])
-
-Calls the asynchronous function `fn` with a callback parameter that allows it to
-call itself again, in series, indefinitely.
-
-If an error is passed to the callback then `errback` is called with the
-error, and execution stops, otherwise it will never be called.
-
-```js
-async.forever(
- function(next) {
- // next is suitable for passing to things that need a callback(err [, whatever]);
- // it will result in this function being called again.
- },
- function(err) {
- // if next is called with a value in its first parameter, it will appear
- // in here as 'err', and execution will stop.
- }
-);
-```
-
----------------------------------------
-
-
-### waterfall(tasks, [callback])
-
-Runs the `tasks` array of functions in series, each passing their results to the next in
-the array. However, if any of the `tasks` pass an error to their own callback, the
-next function is not executed, and the main `callback` is immediately called with
-the error.
-
-__Arguments__
-
-* `tasks` - An array of functions to run, each function is passed a
- `callback(err, result1, result2, ...)` it must call on completion. The first
- argument is an error (which can be `null`) and any further arguments will be
- passed as arguments in order to the next task.
-* `callback(err, [results])` - An optional callback to run once all the functions
- have completed. This will be passed the results of the last task's callback.
-
-
-
-__Example__
-
-```js
-async.waterfall([
- function(callback) {
- callback(null, 'one', 'two');
- },
- function(arg1, arg2, callback) {
- // arg1 now equals 'one' and arg2 now equals 'two'
- callback(null, 'three');
- },
- function(arg1, callback) {
- // arg1 now equals 'three'
- callback(null, 'done');
- }
-], function (err, result) {
- // result now equals 'done'
-});
-```
-
----------------------------------------
-
-### compose(fn1, fn2...)
-
-Creates a function which is a composition of the passed asynchronous
-functions. Each function consumes the return value of the function that
-follows. Composing functions `f()`, `g()`, and `h()` would produce the result of
-`f(g(h()))`, only this version uses callbacks to obtain the return values.
-
-Each function is executed with the `this` binding of the composed function.
-
-__Arguments__
-
-* `functions...` - the asynchronous functions to compose
-
-
-__Example__
-
-```js
-function add1(n, callback) {
- setTimeout(function () {
- callback(null, n + 1);
- }, 10);
-}
-
-function mul3(n, callback) {
- setTimeout(function () {
- callback(null, n * 3);
- }, 10);
-}
-
-var add1mul3 = async.compose(mul3, add1);
-
-add1mul3(4, function (err, result) {
- // result now equals 15
-});
-```
-
----------------------------------------
-
-### seq(fn1, fn2...)
-
-Version of the compose function that is more natural to read.
-Each function consumes the return value of the previous function.
-It is the equivalent of [`compose`](#compose) with the arguments reversed.
-
-Each function is executed with the `this` binding of the composed function.
-
-__Arguments__
-
-* `functions...` - the asynchronous functions to compose
-
-
-__Example__
-
-```js
-// Requires lodash (or underscore), express3 and dresende's orm2.
-// Part of an app, that fetches cats of the logged user.
-// This example uses `seq` function to avoid overnesting and error
-// handling clutter.
-app.get('/cats', function(request, response) {
- var User = request.models.User;
- async.seq(
- _.bind(User.get, User), // 'User.get' has signature (id, callback(err, data))
- function(user, fn) {
- user.getCats(fn); // 'getCats' has signature (callback(err, data))
- }
- )(req.session.user_id, function (err, cats) {
- if (err) {
- console.error(err);
- response.json({ status: 'error', message: err.message });
- } else {
- response.json({ status: 'ok', message: 'Cats found', data: cats });
- }
- });
-});
-```
-
----------------------------------------
-
-### applyEach(fns, args..., callback)
-
-Applies the provided arguments to each function in the array, calling
-`callback` after all functions have completed. If you only provide the first
-argument, then it will return a function which lets you pass in the
-arguments as if it were a single function call.
-
-__Arguments__
-
-* `fns` - the asynchronous functions to all call with the same arguments
-* `args...` - any number of separate arguments to pass to the function
-* `callback` - the final argument should be the callback, called when all
- functions have completed processing
-
-
-__Example__
-
-```js
-async.applyEach([enableSearch, updateSchema], 'bucket', callback);
-
-// partial application example:
-async.each(
- buckets,
- async.applyEach([enableSearch, updateSchema]),
- callback
-);
-```
-
-__Related__
-
-* applyEachSeries(tasks, args..., [callback])
-
----------------------------------------
-
-
-### queue(worker, [concurrency])
-
-Creates a `queue` object with the specified `concurrency`. Tasks added to the
-`queue` are processed in parallel (up to the `concurrency` limit). If all
-`worker`s are in progress, the task is queued until one becomes available.
-Once a `worker` completes a `task`, that `task`'s callback is called.
-
-__Arguments__
-
-* `worker(task, callback)` - An asynchronous function for processing a queued
- task, which must call its `callback(err)` argument when finished, with an
- optional `error` as an argument. If you want to handle errors from an individual task, pass a callback to `q.push()`.
-* `concurrency` - An `integer` for determining how many `worker` functions should be
- run in parallel. If omitted, the concurrency defaults to `1`. If the concurrency is `0`, an error is thrown.
-
-__Queue objects__
-
-The `queue` object returned by this function has the following properties and
-methods:
-
-* `length()` - a function returning the number of items waiting to be processed.
-* `started` - a function returning whether or not any items have been pushed and processed by the queue
-* `running()` - a function returning the number of items currently being processed.
-* `idle()` - a function returning false if there are items waiting or being processed, or true if not.
-* `concurrency` - an integer for determining how many `worker` functions should be
- run in parallel. This property can be changed after a `queue` is created to
- alter the concurrency on-the-fly.
-* `push(task, [callback])` - add a new task to the `queue`. Calls `callback` once
- the `worker` has finished processing the task. Instead of a single task, a `tasks` array
- can be submitted. The respective callback is used for every task in the list.
-* `unshift(task, [callback])` - add a new task to the front of the `queue`.
-* `saturated` - a callback that is called when the `queue` length hits the `concurrency` limit,
- and further tasks will be queued.
-* `empty` - a callback that is called when the last item from the `queue` is given to a `worker`.
-* `drain` - a callback that is called when the last item from the `queue` has returned from the `worker`.
-* `paused` - a boolean for determining whether the queue is in a paused state
-* `pause()` - a function that pauses the processing of tasks until `resume()` is called.
-* `resume()` - a function that resumes the processing of queued tasks when the queue is paused.
-* `kill()` - a function that removes the `drain` callback and empties remaining tasks from the queue forcing it to go idle.
-
-__Example__
-
-```js
-// create a queue object with concurrency 2
-
-var q = async.queue(function (task, callback) {
- console.log('hello ' + task.name);
- callback();
-}, 2);
-
-
-// assign a callback
-q.drain = function() {
- console.log('all items have been processed');
-}
-
-// add some items to the queue
-
-q.push({name: 'foo'}, function (err) {
- console.log('finished processing foo');
-});
-q.push({name: 'bar'}, function (err) {
- console.log('finished processing bar');
-});
-
-// add some items to the queue (batch-wise)
-
-q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {
- console.log('finished processing item');
-});
-
-// add some items to the front of the queue
-
-q.unshift({name: 'bar'}, function (err) {
- console.log('finished processing bar');
-});
-```
-
-
----------------------------------------
-
-
-### priorityQueue(worker, concurrency)
-
-The same as [`queue`](#queue) only tasks are assigned a priority and completed in ascending priority order. There are two differences between `queue` and `priorityQueue` objects:
-
-* `push(task, priority, [callback])` - `priority` should be a number. If an array of
- `tasks` is given, all tasks will be assigned the same priority.
-* The `unshift` method was removed.
-
----------------------------------------
-
-
-### cargo(worker, [payload])
-
-Creates a `cargo` object with the specified payload. Tasks added to the
-cargo will be processed altogether (up to the `payload` limit). If the
-`worker` is in progress, the task is queued until it becomes available. Once
-the `worker` has completed some tasks, each callback of those tasks is called.
-Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) for how `cargo` and `queue` work.
-
-While [queue](#queue) passes only one task to one of a group of workers
-at a time, cargo passes an array of tasks to a single worker, repeating
-when the worker is finished.
-
-__Arguments__
-
-* `worker(tasks, callback)` - An asynchronous function for processing an array of
- queued tasks, which must call its `callback(err)` argument when finished, with
- an optional `err` argument.
-* `payload` - An optional `integer` for determining how many tasks should be
- processed per round; if omitted, the default is unlimited.
-
-__Cargo objects__
-
-The `cargo` object returned by this function has the following properties and
-methods:
-
-* `length()` - A function returning the number of items waiting to be processed.
-* `payload` - An `integer` for determining how many tasks should be
- process per round. This property can be changed after a `cargo` is created to
- alter the payload on-the-fly.
-* `push(task, [callback])` - Adds `task` to the `queue`. The callback is called
- once the `worker` has finished processing the task. Instead of a single task, an array of `tasks`
- can be submitted. The respective callback is used for every task in the list.
-* `saturated` - A callback that is called when the `queue.length()` hits the concurrency and further tasks will be queued.
-* `empty` - A callback that is called when the last item from the `queue` is given to a `worker`.
-* `drain` - A callback that is called when the last item from the `queue` has returned from the `worker`.
-* `idle()`, `pause()`, `resume()`, `kill()` - cargo inherits all of the same methods and event calbacks as [`queue`](#queue)
-
-__Example__
-
-```js
-// create a cargo object with payload 2
-
-var cargo = async.cargo(function (tasks, callback) {
- for(var i=0; i
-### auto(tasks, [callback])
-
-Determines the best order for running the functions in `tasks`, based on their requirements. Each function can optionally depend on other functions being completed first, and each function is run as soon as its requirements are satisfied.
-
-If any of the functions pass an error to their callback, the `auto` sequence will stop. Further tasks will not execute (so any other functions depending on it will not run), and the main `callback` is immediately called with the error. Functions also receive an object containing the results of functions which have completed so far.
-
-Note, all functions are called with a `results` object as a second argument,
-so it is unsafe to pass functions in the `tasks` object which cannot handle the
-extra argument.
-
-For example, this snippet of code:
-
-```js
-async.auto({
- readData: async.apply(fs.readFile, 'data.txt', 'utf-8')
-}, callback);
-```
-
-will have the effect of calling `readFile` with the results object as the last
-argument, which will fail:
-
-```js
-fs.readFile('data.txt', 'utf-8', cb, {});
-```
-
-Instead, wrap the call to `readFile` in a function which does not forward the
-`results` object:
-
-```js
-async.auto({
- readData: function(cb, results){
- fs.readFile('data.txt', 'utf-8', cb);
- }
-}, callback);
-```
-
-__Arguments__
-
-* `tasks` - An object. Each of its properties is either a function or an array of
- requirements, with the function itself the last item in the array. The object's key
- of a property serves as the name of the task defined by that property,
- i.e. can be used when specifying requirements for other tasks.
- The function receives two arguments: (1) a `callback(err, result)` which must be
- called when finished, passing an `error` (which can be `null`) and the result of
- the function's execution, and (2) a `results` object, containing the results of
- the previously executed functions.
-* `callback(err, results)` - An optional callback which is called when all the
- tasks have been completed. It receives the `err` argument if any `tasks`
- pass an error to their callback. Results are always returned; however, if
- an error occurs, no further `tasks` will be performed, and the results
- object will only contain partial results.
-
-
-__Example__
-
-```js
-async.auto({
- get_data: function(callback){
- console.log('in get_data');
- // async code to get some data
- callback(null, 'data', 'converted to array');
- },
- make_folder: function(callback){
- console.log('in make_folder');
- // async code to create a directory to store a file in
- // this is run at the same time as getting the data
- callback(null, 'folder');
- },
- write_file: ['get_data', 'make_folder', function(callback, results){
- console.log('in write_file', JSON.stringify(results));
- // once there is some data and the directory exists,
- // write the data to a file in the directory
- callback(null, 'filename');
- }],
- email_link: ['write_file', function(callback, results){
- console.log('in email_link', JSON.stringify(results));
- // once the file is written let's email a link to it...
- // results.write_file contains the filename returned by write_file.
- callback(null, {'file':results.write_file, 'email':'user@example.com'});
- }]
-}, function(err, results) {
- console.log('err = ', err);
- console.log('results = ', results);
-});
-```
-
-This is a fairly trivial example, but to do this using the basic parallel and
-series functions would look like this:
-
-```js
-async.parallel([
- function(callback){
- console.log('in get_data');
- // async code to get some data
- callback(null, 'data', 'converted to array');
- },
- function(callback){
- console.log('in make_folder');
- // async code to create a directory to store a file in
- // this is run at the same time as getting the data
- callback(null, 'folder');
- }
-],
-function(err, results){
- async.series([
- function(callback){
- console.log('in write_file', JSON.stringify(results));
- // once there is some data and the directory exists,
- // write the data to a file in the directory
- results.push('filename');
- callback(null);
- },
- function(callback){
- console.log('in email_link', JSON.stringify(results));
- // once the file is written let's email a link to it...
- callback(null, {'file':results.pop(), 'email':'user@example.com'});
- }
- ]);
-});
-```
-
-For a complicated series of `async` tasks, using the [`auto`](#auto) function makes adding
-new tasks much easier (and the code more readable).
-
-
----------------------------------------
-
-
-### retry([opts = {times: 5, interval: 0}| 5], task, [callback])
-
-Attempts to get a successful response from `task` no more than `times` times before
-returning an error. If the task is successful, the `callback` will be passed the result
-of the successful task. If all attempts fail, the callback will be passed the error and
-result (if any) of the final attempt.
-
-__Arguments__
-
-* `opts` - Can be either an object with `times` and `interval` or a number. `times` is how many attempts should be made before giving up. `interval` is how long to wait inbetween attempts. Defaults to {times: 5, interval: 0}
- * if a number is passed in it sets `times` only (with `interval` defaulting to 0).
-* `task(callback, results)` - A function which receives two arguments: (1) a `callback(err, result)`
- which must be called when finished, passing `err` (which can be `null`) and the `result` of
- the function's execution, and (2) a `results` object, containing the results of
- the previously executed functions (if nested inside another control flow).
-* `callback(err, results)` - An optional callback which is called when the
- task has succeeded, or after the final failed attempt. It receives the `err` and `result` arguments of the last attempt at completing the `task`.
-
-The [`retry`](#retry) function can be used as a stand-alone control flow by passing a
-callback, as shown below:
-
-```js
-async.retry(3, apiMethod, function(err, result) {
- // do something with the result
-});
-```
-
-```js
-async.retry({times: 3, interval: 200}, apiMethod, function(err, result) {
- // do something with the result
-});
-```
-
-It can also be embeded within other control flow functions to retry individual methods
-that are not as reliable, like this:
-
-```js
-async.auto({
- users: api.getUsers.bind(api),
- payments: async.retry(3, api.getPayments.bind(api))
-}, function(err, results) {
- // do something with the results
-});
-```
-
-
----------------------------------------
-
-
-### iterator(tasks)
-
-Creates an iterator function which calls the next function in the `tasks` array,
-returning a continuation to call the next one after that. It's also possible to
-“peek” at the next iterator with `iterator.next()`.
-
-This function is used internally by the `async` module, but can be useful when
-you want to manually control the flow of functions in series.
-
-__Arguments__
-
-* `tasks` - An array of functions to run.
-
-__Example__
-
-```js
-var iterator = async.iterator([
- function(){ sys.p('one'); },
- function(){ sys.p('two'); },
- function(){ sys.p('three'); }
-]);
-
-node> var iterator2 = iterator();
-'one'
-node> var iterator3 = iterator2();
-'two'
-node> iterator3();
-'three'
-node> var nextfn = iterator2.next();
-node> nextfn();
-'three'
-```
-
----------------------------------------
-
-
-### apply(function, arguments..)
-
-Creates a continuation function with some arguments already applied.
-
-Useful as a shorthand when combined with other control flow functions. Any arguments
-passed to the returned function are added to the arguments originally passed
-to apply.
-
-__Arguments__
-
-* `function` - The function you want to eventually apply all arguments to.
-* `arguments...` - Any number of arguments to automatically apply when the
- continuation is called.
-
-__Example__
-
-```js
-// using apply
-
-async.parallel([
- async.apply(fs.writeFile, 'testfile1', 'test1'),
- async.apply(fs.writeFile, 'testfile2', 'test2'),
-]);
-
-
-// the same process without using apply
-
-async.parallel([
- function(callback){
- fs.writeFile('testfile1', 'test1', callback);
- },
- function(callback){
- fs.writeFile('testfile2', 'test2', callback);
- }
-]);
-```
-
-It's possible to pass any number of additional arguments when calling the
-continuation:
-
-```js
-node> var fn = async.apply(sys.puts, 'one');
-node> fn('two', 'three');
-one
-two
-three
-```
-
----------------------------------------
-
-
-### nextTick(callback), setImmediate(callback)
-
-Calls `callback` on a later loop around the event loop. In Node.js this just
-calls `process.nextTick`; in the browser it falls back to `setImmediate(callback)`
-if available, otherwise `setTimeout(callback, 0)`, which means other higher priority
-events may precede the execution of `callback`.
-
-This is used internally for browser-compatibility purposes.
-
-__Arguments__
-
-* `callback` - The function to call on a later loop around the event loop.
-
-__Example__
-
-```js
-var call_order = [];
-async.nextTick(function(){
- call_order.push('two');
- // call_order now equals ['one','two']
-});
-call_order.push('one')
-```
-
-
-### times(n, iterator, [callback])
-
-Calls the `iterator` function `n` times, and accumulates results in the same manner
-you would use with [`map`](#map).
-
-__Arguments__
-
-* `n` - The number of times to run the function.
-* `iterator` - The function to call `n` times.
-* `callback` - see [`map`](#map)
-
-__Example__
-
-```js
-// Pretend this is some complicated async factory
-var createUser = function(id, callback) {
- callback(null, {
- id: 'user' + id
- })
-}
-// generate 5 users
-async.times(5, function(n, next){
- createUser(n, function(err, user) {
- next(err, user)
- })
-}, function(err, users) {
- // we should now have 5 users
-});
-```
-
-__Related__
-
-* timesSeries(n, iterator, [callback])
-* timesLimit(n, limit, iterator, [callback])
-
-
-## Utils
-
-
-### memoize(fn, [hasher])
-
-Caches the results of an `async` function. When creating a hash to store function
-results against, the callback is omitted from the hash and an optional hash
-function can be used.
-
-If no hash function is specified, the first argument is used as a hash key, which may work reasonably if it is a string or a data type that converts to a distinct string. Note that objects and arrays will not behave reasonably. Neither will cases where the other arguments are significant. In such cases, specify your own hash function.
-
-The cache of results is exposed as the `memo` property of the function returned
-by `memoize`.
-
-__Arguments__
-
-* `fn` - The function to proxy and cache results from.
-* `hasher` - An optional function for generating a custom hash for storing
- results. It has all the arguments applied to it apart from the callback, and
- must be synchronous.
-
-__Example__
-
-```js
-var slow_fn = function (name, callback) {
- // do something
- callback(null, result);
-};
-var fn = async.memoize(slow_fn);
-
-// fn can now be used as if it were slow_fn
-fn('some name', function () {
- // callback
-});
-```
-
-
-### unmemoize(fn)
-
-Undoes a [`memoize`](#memoize)d function, reverting it to the original, unmemoized
-form. Handy for testing.
-
-__Arguments__
-
-* `fn` - the memoized function
-
----------------------------------------
-
-
-### ensureAsync(fn)
-
-Wrap an async function and ensure it calls its callback on a later tick of the event loop. If the function already calls its callback on a next tick, no extra deferral is added. This is useful for preventing stack overflows (`RangeError: Maximum call stack size exceeded`) and generally keeping [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony) contained.
-
-__Arguments__
-
-* `fn` - an async function, one that expects a node-style callback as its last argument
-
-Returns a wrapped function with the exact same call signature as the function passed in.
-
-__Example__
-
-```js
-function sometimesAsync(arg, callback) {
- if (cache[arg]) {
- return callback(null, cache[arg]); // this would be synchronous!!
- } else {
- doSomeIO(arg, callback); // this IO would be asynchronous
- }
-}
-
-// this has a risk of stack overflows if many results are cached in a row
-async.mapSeries(args, sometimesAsync, done);
-
-// this will defer sometimesAsync's callback if necessary,
-// preventing stack overflows
-async.mapSeries(args, async.ensureAsync(sometimesAsync), done);
-
-```
-
----------------------------------------
-
-
-### constant(values...)
-
-Returns a function that when called, calls-back with the values provided. Useful as the first function in a `waterfall`, or for plugging values in to `auto`.
-
-__Example__
-
-```js
-async.waterfall([
- async.constant(42),
- function (value, next) {
- // value === 42
- },
- //...
-], callback);
-
-async.waterfall([
- async.constant(filename, "utf8"),
- fs.readFile,
- function (fileData, next) {
- //...
- }
- //...
-], callback);
-
-async.auto({
- hostname: async.constant("https://server.net/"),
- port: findFreePort,
- launchServer: ["hostname", "port", function (cb, options) {
- startServer(options, cb);
- }],
- //...
-}, callback);
-
-```
-
----------------------------------------
-
-
-
-### asyncify(func)
-
-__Alias:__ `wrapSync`
-
-Take a sync function and make it async, passing its return value to a callback. This is useful for plugging sync functions into a waterfall, series, or other async functions. Any arguments passed to the generated function will be passed to the wrapped function (except for the final callback argument). Errors thrown will be passed to the callback.
-
-__Example__
-
-```js
-async.waterfall([
- async.apply(fs.readFile, filename, "utf8"),
- async.asyncify(JSON.parse),
- function (data, next) {
- // data is the result of parsing the text.
- // If there was a parsing error, it would have been caught.
- }
-], callback)
-```
-
----------------------------------------
-
-
-### log(function, arguments)
-
-Logs the result of an `async` function to the `console`. Only works in Node.js or
-in browsers that support `console.log` and `console.error` (such as FF and Chrome).
-If multiple arguments are returned from the async function, `console.log` is
-called on each argument in order.
-
-__Arguments__
-
-* `function` - The function you want to eventually apply all arguments to.
-* `arguments...` - Any number of arguments to apply to the function.
-
-__Example__
-
-```js
-var hello = function(name, callback){
- setTimeout(function(){
- callback(null, 'hello ' + name);
- }, 1000);
-};
-```
-```js
-node> async.log(hello, 'world');
-'hello world'
-```
-
----------------------------------------
-
-
-### dir(function, arguments)
-
-Logs the result of an `async` function to the `console` using `console.dir` to
-display the properties of the resulting object. Only works in Node.js or
-in browsers that support `console.dir` and `console.error` (such as FF and Chrome).
-If multiple arguments are returned from the async function, `console.dir` is
-called on each argument in order.
-
-__Arguments__
-
-* `function` - The function you want to eventually apply all arguments to.
-* `arguments...` - Any number of arguments to apply to the function.
-
-__Example__
-
-```js
-var hello = function(name, callback){
- setTimeout(function(){
- callback(null, {hello: name});
- }, 1000);
-};
-```
-```js
-node> async.dir(hello, 'world');
-{hello: 'world'}
-```
-
----------------------------------------
-
-
-### noConflict()
-
-Changes the value of `async` back to its original value, returning a reference to the
-`async` object.
diff --git a/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/lib/async.js b/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/lib/async.js
index f3cfb807191e81..1f1e0effaa7cb6 100644
--- a/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/lib/async.js
+++ b/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/lib/async.js
@@ -62,6 +62,12 @@
return _toString.call(obj) === '[object Array]';
};
+ // Ported from underscore.js isObject
+ var _isObject = function(obj) {
+ var type = typeof obj;
+ return type === 'function' || type === 'object' && !!obj;
+ };
+
function _isArrayLike(arr) {
return _isArray(arr) || (
// has a positive integer length property
@@ -165,7 +171,6 @@
switch (startIndex) {
case 0: return func.call(this, rest);
case 1: return func.call(this, arguments[0], rest);
- case 2: return func.call(this, arguments[0], arguments[1], rest);
}
// Currently unused but handle cases outside of the switch statement:
// var args = Array(startIndex + 1);
@@ -462,6 +467,7 @@
}
async.detect = _createTester(async.eachOf, identity, _findGetResult);
async.detectSeries = _createTester(async.eachOfSeries, identity, _findGetResult);
+ async.detectLimit = _createTester(async.eachOfLimit, identity, _findGetResult);
async.sortBy = function (arr, iterator, callback) {
async.map(arr, function (x, callback) {
@@ -593,7 +599,7 @@
acc.times = parseInt(t.times, 10) || DEFAULT_TIMES;
acc.interval = parseInt(t.interval, 10) || DEFAULT_INTERVAL;
} else {
- throw new Error('Unsupported argument type for \'times\': ' + typeof(t));
+ throw new Error('Unsupported argument type for \'times\': ' + typeof t);
}
}
@@ -1013,7 +1019,7 @@
function _console_fn(name) {
return _restParam(function (fn, args) {
fn.apply(null, args.concat([_restParam(function (err, args) {
- if (typeof console !== 'undefined') {
+ if (typeof console === 'object') {
if (err) {
if (console.error) {
console.error(err);
@@ -1186,10 +1192,10 @@
return callback(e);
}
// if result is Promise object
- if (typeof result !== 'undefined' && typeof result.then === "function") {
+ if (_isObject(result) && typeof result.then === "function") {
result.then(function(value) {
callback(null, value);
- }).catch(function(err) {
+ })["catch"](function(err) {
callback(err.message ? err : new Error(err));
});
} else {
@@ -1199,11 +1205,11 @@
};
// Node.js
- if (typeof module !== 'undefined' && module.exports) {
+ if (typeof module === 'object' && module.exports) {
module.exports = async;
}
// AMD / RequireJS
- else if (typeof define !== 'undefined' && define.amd) {
+ else if (typeof define === 'function' && define.amd) {
define([], function () {
return async;
});
diff --git a/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/package.json b/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/package.json
index 2b8128b926ed47..d646d803453f3d 100644
--- a/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/package.json
+++ b/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/package.json
@@ -2,10 +2,13 @@
"name": "async",
"description": "Higher-order functions and common patterns for asynchronous code",
"main": "lib/async.js",
+ "files": [
+ "lib"
+ ],
"author": {
"name": "Caolan McMahon"
},
- "version": "1.4.0",
+ "version": "1.4.2",
"keywords": [
"async",
"callback",
@@ -23,12 +26,19 @@
"devDependencies": {
"benchmark": "github:bestiejs/benchmark.js",
"bluebird": "^2.9.32",
+ "chai": "^3.1.0",
"coveralls": "^2.11.2",
"es6-promise": "^2.3.0",
"jscs": "^1.13.1",
"jshint": "~2.8.0",
+ "karma": "^0.13.2",
+ "karma-browserify": "^4.2.1",
+ "karma-firefox-launcher": "^0.1.6",
+ "karma-mocha": "^0.2.0",
+ "karma-mocha-reporter": "^1.0.2",
"lodash": "^3.9.0",
"mkdirp": "~0.5.1",
+ "mocha": "^2.2.5",
"native-promise-only": "^0.8.0-a",
"nodeunit": ">0.0.0",
"nyc": "^2.1.0",
@@ -49,7 +59,11 @@
]
},
"scripts": {
- "test": "npm run-script lint && nodeunit test/test-async.js",
+ "mocha-node-test": "mocha mocha_test/",
+ "mocha-browser-test": "karma start",
+ "mocha-test": "npm run mocha-node-test && npm run mocha-browser-test",
+ "nodeunit-test": "nodeunit test/test-async.js",
+ "test": "npm run-script lint && npm run nodeunit-test && npm run mocha-test",
"lint": "jshint lib/*.js test/*.js perf/*.js && jscs lib/*.js test/*.js perf/*.js",
"coverage": "nyc npm test && nyc report",
"coveralls": "nyc npm test && nyc report --reporter=text-lcov | coveralls"
@@ -67,20 +81,20 @@
"tests"
]
},
- "gitHead": "5bfcd31c72e003f96df025e75753463da61f49f9",
+ "gitHead": "92f78aebad222d60c13e4299c0e723f2fe2d6611",
"homepage": "https://github.com/caolan/async#readme",
- "_id": "async@1.4.0",
- "_shasum": "35f86f83c59e0421d099cd9a91d8278fb578c00d",
- "_from": "async@>=1.2.1 <2.0.0",
- "_npmVersion": "2.13.0",
- "_nodeVersion": "2.4.0",
+ "_id": "async@1.4.2",
+ "_shasum": "6c9edcb11ced4f0dd2f2d40db0d49a109c088aab",
+ "_from": "async@>=1.4.0 <2.0.0",
+ "_npmVersion": "2.9.0",
+ "_nodeVersion": "2.0.1",
"_npmUser": {
"name": "megawac",
"email": "megawac@gmail.com"
},
"dist": {
- "shasum": "35f86f83c59e0421d099cd9a91d8278fb578c00d",
- "tarball": "http://registry.npmjs.org/async/-/async-1.4.0.tgz"
+ "shasum": "6c9edcb11ced4f0dd2f2d40db0d49a109c088aab",
+ "tarball": "http://registry.npmjs.org/async/-/async-1.4.2.tgz"
},
"maintainers": [
{
@@ -101,6 +115,6 @@
}
],
"directories": {},
- "_resolved": "https://registry.npmjs.org/async/-/async-1.4.0.tgz",
+ "_resolved": "https://registry.npmjs.org/async/-/async-1.4.2.tgz",
"readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/support/sync-package-managers.js b/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/support/sync-package-managers.js
deleted file mode 100755
index 28c22e9f91c37b..00000000000000
--- a/deps/npm/node_modules/request/node_modules/form-data/node_modules/async/support/sync-package-managers.js
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/env node
-
-// This should probably be its own module but complaints about bower/etc.
-// support keep coming up and I'd rather just enable the workflow here for now
-// and figure out where this should live later. -- @beaugunderson
-
-var fs = require('fs');
-var _ = require('lodash');
-
-var packageJson = require('../package.json');
-
-var IGNORES = ['**/.*', 'node_modules', 'bower_components', 'test', 'tests'];
-var INCLUDES = ['lib/async.js', 'README.md', 'LICENSE'];
-var REPOSITORY_NAME = 'caolan/async';
-
-packageJson.jam = {
- main: packageJson.main,
- include: INCLUDES,
- categories: ['Utilities']
-};
-
-packageJson.spm = {
- main: packageJson.main
-};
-
-packageJson.volo = {
- main: packageJson.main,
- ignore: IGNORES
-};
-
-var bowerSpecific = {
- moduleType: ['amd', 'globals', 'node'],
- ignore: IGNORES,
- authors: [packageJson.author]
-};
-
-var bowerInclude = ['name', 'description', 'main', 'keywords',
- 'license', 'homepage', 'repository', 'devDependencies'];
-
-var componentSpecific = {
- repository: REPOSITORY_NAME,
- scripts: [packageJson.main]
-};
-
-var componentInclude = ['name', 'description', 'version', 'keywords',
- 'license', 'main'];
-
-var bowerJson = _.merge({}, _.pick(packageJson, bowerInclude), bowerSpecific);
-var componentJson = _.merge({}, _.pick(packageJson, componentInclude), componentSpecific);
-
-fs.writeFileSync('./bower.json', JSON.stringify(bowerJson, null, 2));
-fs.writeFileSync('./component.json', JSON.stringify(componentJson, null, 2));
-fs.writeFileSync('./package.json', JSON.stringify(packageJson, null, 2));
diff --git a/deps/npm/node_modules/request/node_modules/form-data/package.json b/deps/npm/node_modules/request/node_modules/form-data/package.json
index 9835d49803312c..8fba29b8002baa 100644
--- a/deps/npm/node_modules/request/node_modules/form-data/package.json
+++ b/deps/npm/node_modules/request/node_modules/form-data/package.json
@@ -5,49 +5,53 @@
"url": "http://debuggable.com/"
},
"name": "form-data",
- "description": "A module to create readable \"multipart/form-data\" streams. Can be used to submit forms and file uploads to other web applications.",
- "version": "1.0.0-rc2",
+ "description": "A library to create readable \"multipart/form-data\" streams. Can be used to submit forms and file uploads to other web applications.",
+ "version": "1.0.0-rc3",
"repository": {
"type": "git",
- "url": "git://github.com/felixge/node-form-data.git"
+ "url": "git://github.com/form-data/form-data.git"
},
"main": "./lib/form_data",
"browser": "./lib/browser",
"scripts": {
- "test": "node test/run.js"
+ "test": "./test/run.js"
},
+ "pre-commit": [
+ "test"
+ ],
"engines": {
"node": ">= 0.10"
},
"dependencies": {
- "async": "^1.2.1",
- "combined-stream": "^1.0.3",
- "mime-types": "^2.1.1"
+ "async": "^1.4.0",
+ "combined-stream": "^1.0.5",
+ "mime-types": "^2.1.3"
},
"license": "MIT",
"devDependencies": {
"fake": "^0.2.2",
"far": "^0.0.7",
"formidable": "^1.0.17",
- "request": "^2.57.0"
+ "pre-commit": "^1.0.10",
+ "request": "^2.60.0"
},
- "gitHead": "9f29fefe9633f3adae72d6416fd6822c060ff6b6",
+ "gitHead": "c174f1b7f3a78a00ec5af0360469280445e37804",
"bugs": {
- "url": "https://github.com/felixge/node-form-data/issues"
+ "url": "https://github.com/form-data/form-data/issues"
},
- "homepage": "https://github.com/felixge/node-form-data#readme",
- "_id": "form-data@1.0.0-rc2",
- "_shasum": "5bc9c9b3dd3dec1977b0abf58790192081d95235",
+ "homepage": "https://github.com/form-data/form-data#readme",
+ "_id": "form-data@1.0.0-rc3",
+ "_shasum": "d35bc62e7fbc2937ae78f948aaa0d38d90607577",
"_from": "form-data@>=1.0.0-rc1 <1.1.0",
- "_npmVersion": "2.10.1",
- "_nodeVersion": "0.12.4",
+ "_npmVersion": "2.11.0",
+ "_nodeVersion": "2.2.1",
"_npmUser": {
- "name": "alexindigo",
- "email": "iam@alexindigo.com"
+ "name": "dylanpiercey",
+ "email": "pierceydylan@gmail.com"
},
"dist": {
- "shasum": "5bc9c9b3dd3dec1977b0abf58790192081d95235",
- "tarball": "http://registry.npmjs.org/form-data/-/form-data-1.0.0-rc2.tgz"
+ "shasum": "d35bc62e7fbc2937ae78f948aaa0d38d90607577",
+ "tarball": "http://registry.npmjs.org/form-data/-/form-data-1.0.0-rc3.tgz"
},
"maintainers": [
{
@@ -69,8 +73,13 @@
{
"name": "celer",
"email": "dtyree77@gmail.com"
+ },
+ {
+ "name": "dylanpiercey",
+ "email": "pierceydylan@gmail.com"
}
],
"directories": {},
- "_resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc2.tgz"
+ "_resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc3.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/chalk/index.js b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/chalk/index.js
index cbe928862f4793..2d85a91747a71a 100644
--- a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/chalk/index.js
+++ b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/chalk/index.js
@@ -36,7 +36,7 @@ var styles = (function () {
var proto = defineProps(function chalk() {}, styles);
function build(_styles) {
- var builder = function builder() {
+ var builder = function () {
return applyStyle.apply(builder, arguments);
};
@@ -44,7 +44,7 @@ function build(_styles) {
builder.enabled = this.enabled;
// __proto__ is used because we must return a function, but there is
// no way to create a function with a different prototype.
- /*eslint no-proto: 0 */
+ /* eslint-disable no-proto */
builder.__proto__ = proto;
return builder;
diff --git a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/package.json b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/package.json
index 813c9089d27760..b2bafb26a04f02 100644
--- a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/package.json
+++ b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/package.json
@@ -14,12 +14,14 @@
},
"maintainers": [
{
- "name": "sindresorhus",
- "email": "sindresorhus@gmail.com"
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "http://sindresorhus.com"
},
{
- "name": "jbnicolai",
- "email": "jappelman@xebia.com"
+ "name": "Joshua Appelman",
+ "email": "jappelman@xebia.com",
+ "url": "http://jbnicolai.com"
}
],
"engines": {
@@ -46,25 +48,14 @@
"devDependencies": {
"mocha": "*"
},
- "gitHead": "1e446e6b4449b5f1f8868cd31bf8fd25ee37fb4b",
+ "readme": "# escape-string-regexp [](https://travis-ci.org/sindresorhus/escape-string-regexp)\n\n> Escape RegExp special characters\n\n\n## Install\n\n```sh\n$ npm install --save escape-string-regexp\n```\n\n\n## Usage\n\n```js\nvar escapeStringRegexp = require('escape-string-regexp');\n\nvar escapedString = escapeStringRegexp('how much $ for a unicorn?');\n//=> how much \\$ for a unicorn\\?\n\nnew RegExp(escapedString);\n```\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n",
+ "readmeFilename": "readme.md",
"bugs": {
"url": "https://github.com/sindresorhus/escape-string-regexp/issues"
},
- "homepage": "https://github.com/sindresorhus/escape-string-regexp",
+ "homepage": "https://github.com/sindresorhus/escape-string-regexp#readme",
"_id": "escape-string-regexp@1.0.3",
"_shasum": "9e2d8b25bc2555c3336723750e03f099c2735bb5",
- "_from": "escape-string-regexp@>=1.0.2 <2.0.0",
- "_npmVersion": "2.1.16",
- "_nodeVersion": "0.10.35",
- "_npmUser": {
- "name": "jbnicolai",
- "email": "jappelman@xebia.com"
- },
- "dist": {
- "shasum": "9e2d8b25bc2555c3336723750e03f099c2735bb5",
- "tarball": "http://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz"
- },
- "directories": {},
"_resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz",
- "readme": "ERROR: No README data found!"
+ "_from": "escape-string-regexp@>=1.0.2 <2.0.0"
}
diff --git a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/chalk/package.json b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/chalk/package.json
index e420227996cbfa..a6120d20c890b9 100644
--- a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/chalk/package.json
+++ b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/chalk/package.json
@@ -1,6 +1,6 @@
{
"name": "chalk",
- "version": "1.1.0",
+ "version": "1.1.1",
"description": "Terminal string styling done right. Much color.",
"license": "MIT",
"repository": {
@@ -25,7 +25,7 @@
"node": ">=0.10.0"
},
"scripts": {
- "test": "mocha",
+ "test": "xo && mocha",
"bench": "matcha benchmark.js",
"coverage": "nyc npm test && nyc report",
"coveralls": "nyc npm test && nyc report --reporter=text-lcov | coveralls"
@@ -70,27 +70,34 @@
"nyc": "^3.0.0",
"require-uncached": "^1.0.2",
"resolve-from": "^1.0.0",
- "semver": "^4.3.3"
+ "semver": "^4.3.3",
+ "xo": "*"
},
- "gitHead": "e9bb6e6000b1c5d4508afabfdc85dd70f582f515",
+ "xo": {
+ "envs": [
+ "node",
+ "mocha"
+ ]
+ },
+ "gitHead": "8b554e254e89c85c1fd04dcc444beeb15824e1a5",
"bugs": {
"url": "https://github.com/chalk/chalk/issues"
},
- "homepage": "https://github.com/chalk/chalk",
- "_id": "chalk@1.1.0",
- "_shasum": "09b453cec497a75520e4a60ae48214a8700e0921",
+ "homepage": "https://github.com/chalk/chalk#readme",
+ "_id": "chalk@1.1.1",
+ "_shasum": "509afb67066e7499f7eb3535c77445772ae2d019",
"_from": "chalk@>=1.0.0 <2.0.0",
- "_npmVersion": "2.10.1",
- "_nodeVersion": "0.12.4",
+ "_npmVersion": "2.13.5",
+ "_nodeVersion": "0.12.7",
"_npmUser": {
- "name": "jbnicolai",
- "email": "jappelman@xebia.com"
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
},
"dist": {
- "shasum": "09b453cec497a75520e4a60ae48214a8700e0921",
- "tarball": "http://registry.npmjs.org/chalk/-/chalk-1.1.0.tgz"
+ "shasum": "509afb67066e7499f7eb3535c77445772ae2d019",
+ "tarball": "http://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.0.tgz",
+ "_resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz",
"readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/chalk/readme.md b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/chalk/readme.md
index f757e59d6eef54..5cf111e353383d 100644
--- a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/chalk/readme.md
+++ b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/chalk/readme.md
@@ -30,7 +30,7 @@
- Clean and focused
- Auto-detects color support
- Actively maintained
-- [Used by ~4000 modules](https://www.npmjs.com/browse/depended/chalk) as of May 24, 2015
+- [Used by ~4500 modules](https://www.npmjs.com/browse/depended/chalk) as of July 15, 2015
## Install
@@ -189,7 +189,7 @@ if (!chalk.supportsColor) {
## 256-colors
-Chalk does not support support anything other than the base eight colors, which guarantees it will work on all terminals and systems. Some terminals, specifically `xterm` compliant ones, will support the full range of 8-bit colors. For this the lower level [ansi-256-colors](https://github.com/jbnicolai/ansi-256-colors) package can be used.
+Chalk does not support anything other than the base eight colors, which guarantees it will work on all terminals and systems. Some terminals, specifically `xterm` compliant ones, will support the full range of 8-bit colors. For this the lower level [ansi-256-colors](https://github.com/jbnicolai/ansi-256-colors) package can be used.
## Windows
@@ -205,6 +205,7 @@ If you're on Windows, do yourself a favor and use [`cmder`](http://bliker.github
- [strip-ansi](https://github.com/chalk/strip-ansi) - Strip ANSI escape codes
- [has-ansi](https://github.com/chalk/has-ansi) - Check if a string has ANSI escape codes
- [ansi-regex](https://github.com/chalk/ansi-regex) - Regular expression for matching ANSI escape codes
+- [wrap-ansi](https://github.com/chalk/wrap-ansi) - Wordwrap a string with ANSI escape codes
## License
diff --git a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/package.json b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/package.json
index 5b8486a16f8bc4..64d7d644dbcb59 100644
--- a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/package.json
+++ b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/package.json
@@ -22,27 +22,10 @@
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
- "gitHead": "f6655275bebef706fb63fd01b5f062a7052419a5",
+ "readme": "# graceful-readlink\n[](https://www.npmjs.org/package/graceful-readlink)\n[](https://www.npmjs.org/package/graceful-readlink)\n\n\n## Usage\n\n```js\nvar readlinkSync = require('graceful-readlink').readlinkSync;\nconsole.log(readlinkSync(f));\n// output\n// the file pointed to when `f` is a symbolic link\n// the `f` itself when `f` is not a symbolic link\n```\n## Licence\n\nMIT License\n",
+ "readmeFilename": "README.md",
"_id": "graceful-readlink@1.0.1",
"_shasum": "4cafad76bc62f02fa039b2f94e9a3dd3a391a725",
- "_from": "graceful-readlink@>=1.0.0",
- "_npmVersion": "2.1.17",
- "_nodeVersion": "0.11.14",
- "_npmUser": {
- "name": "zhiyelee",
- "email": "zhiyelee@gmail.com"
- },
- "maintainers": [
- {
- "name": "zhiyelee",
- "email": "zhiyelee@gmail.com"
- }
- ],
- "dist": {
- "shasum": "4cafad76bc62f02fa039b2f94e9a3dd3a391a725",
- "tarball": "http://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz"
- },
- "directories": {},
"_resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
- "readme": "ERROR: No README data found!"
+ "_from": "graceful-readlink@>=1.0.0"
}
diff --git a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/index.js b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/index.js
index 6fef4ed6f0f5c0..7820e6497b5af1 100644
--- a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/index.js
+++ b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/index.js
@@ -518,7 +518,11 @@ var compile = function(schema, cache, root, reporter, opts) {
if (properties) {
Object.keys(properties).forEach(function(p) {
+ if (Array.isArray(type) && type.indexOf('null') !== -1) validate('if (%s !== null) {', name)
+
visit(genobj(name, p), properties[p], reporter, filter)
+
+ if (Array.isArray(type) && type.indexOf('null') !== -1) validate('}')
})
}
diff --git a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/package.json b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/package.json
index db1ac2aa364f5d..e2bc77284d01bc 100644
--- a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/package.json
+++ b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/package.json
@@ -28,26 +28,10 @@
"devDependencies": {
"tape": "^2.13.4"
},
- "gitHead": "3d5fc8de5859be95f58e3af9bfb5f663edd95149",
+ "readme": "# generate-function\n\nModule that helps you write generated functions in Node\n\n```\nnpm install generate-function\n```\n\n[](http://travis-ci.org/mafintosh/generate-function)\n\n## Disclamer\n\nWriting code that generates code is hard.\nYou should only use this if you really, really, really need this for performance reasons (like schema validators / parsers etc).\n\n## Usage\n\n``` js\nvar genfun = require('generate-function')\n\nvar addNumber = function(val) {\n var fn = genfun()\n ('function add(n) {')\n ('return n + %d', val) // supports format strings to insert values\n ('}')\n\n return fn.toFunction() // will compile the function\n}\n\nvar add2 = addNumber(2)\n\nconsole.log('1+2=', add2(1))\nconsole.log(add2.toString()) // prints the generated function\n```\n\nIf you need to close over variables in your generated function pass them to `toFunction(scope)`\n\n``` js\nvar multiply = function(a, b) {\n return a * b\n}\n\nvar addAndMultiplyNumber = function(val) {\n var fn = genfun()\n ('function(n) {')\n ('if (typeof n !== \"number\") {') // ending a line with { will indent the source\n ('throw new Error(\"argument should be a number\")')\n ('}')\n ('var result = multiply(%d, n+%d)', val, val)\n ('return result')\n ('}')\n\n // use fn.toString() if you want to see the generated source\n\n return fn.toFunction({\n multiply: multiply\n })\n}\n\nvar addAndMultiply2 = addAndMultiplyNumber(2)\n\nconsole.log('(3 + 2) * 2 =', addAndMultiply2(3))\n```\n\n## Related\n\nSee [generate-object-property](https://github.com/mafintosh/generate-object-property) if you need to safely generate code that\ncan be used to reference an object property\n\n## License\n\nMIT",
+ "readmeFilename": "README.md",
"_id": "generate-function@2.0.0",
"_shasum": "6858fe7c0969b7d4e9093337647ac79f60dfbe74",
- "_from": "generate-function@>=2.0.0 <3.0.0",
- "_npmVersion": "1.4.23",
- "_npmUser": {
- "name": "mafintosh",
- "email": "mathiasbuus@gmail.com"
- },
- "maintainers": [
- {
- "name": "mafintosh",
- "email": "mathiasbuus@gmail.com"
- }
- ],
- "dist": {
- "shasum": "6858fe7c0969b7d4e9093337647ac79f60dfbe74",
- "tarball": "http://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz"
- },
- "directories": {},
"_resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
- "readme": "ERROR: No README data found!"
+ "_from": "generate-function@>=2.0.0 <3.0.0"
}
diff --git a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/package.json b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/package.json
index 9f23619477398c..41225e266e4c80 100644
--- a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/package.json
+++ b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/package.json
@@ -30,30 +30,15 @@
"name": "Mikola Lysenko"
},
"license": "MIT",
+ "readmeFilename": "README.md",
"gitHead": "0a85ea5b6b1264ea1cdecc6e5cf186adbb3ffc50",
"bugs": {
"url": "https://github.com/mikolalysenko/is-property/issues"
},
- "homepage": "https://github.com/mikolalysenko/is-property",
+ "readme": "is-property\n===========\nTests if a property of a JavaScript object can be accessed using the dot (.) notation or if it must be enclosed in brackets, (ie use x[\" ... \"])\n\nExample\n-------\n\n```javascript\nvar isProperty = require(\"is-property\")\n\nconsole.log(isProperty(\"foo\")) //Prints true\nconsole.log(isProperty(\"0\")) //Prints false\n```\n\nInstall\n-------\n\n npm install is-property\n \n### `require(\"is-property\")(str)`\nChecks if str is a property\n\n* `str` is a string which we will test if it is a property or not\n\n**Returns** true or false depending if str is a property\n\n## Credits\n(c) 2013 Mikola Lysenko. MIT License",
+ "homepage": "https://github.com/mikolalysenko/is-property#readme",
"_id": "is-property@1.0.2",
"_shasum": "57fe1c4e48474edd65b09911f26b1cd4095dda84",
- "_from": "is-property@>=1.0.0 <2.0.0",
- "_npmVersion": "2.1.4",
- "_nodeVersion": "0.10.26",
- "_npmUser": {
- "name": "mikolalysenko",
- "email": "mikolalysenko@gmail.com"
- },
- "maintainers": [
- {
- "name": "mikolalysenko",
- "email": "mikolalysenko@gmail.com"
- }
- ],
- "dist": {
- "shasum": "57fe1c4e48474edd65b09911f26b1cd4095dda84",
- "tarball": "http://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz"
- },
"_resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
- "readme": "ERROR: No README data found!"
+ "_from": "is-property@>=1.0.0 <2.0.0"
}
diff --git a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/package.json b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/package.json
index a86a787e038bf9..64e45bd03ac94a 100644
--- a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/package.json
+++ b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/package.json
@@ -35,26 +35,11 @@
"scripts": {
"test": "node test.js"
},
+ "readme": "# JSON Pointer for nodejs\n\nThis is an implementation of [JSON Pointer](http://tools.ietf.org/html/draft-ietf-appsawg-json-pointer-08).\n\n## Usage\n\n var jsonpointer = require(\"jsonpointer\");\n var obj = { foo: 1, bar: { baz: 2}, qux: [3, 4, 5]};\n var one = jsonpointer.get(obj, \"/foo\");\n var two = jsonpointer.get(obj, \"/bar/baz\");\n var three = jsonpointer.get(obj, \"/qux/0\");\n var four = jsonpointer.get(obj, \"/qux/1\");\n var five = jsonpointer.get(obj, \"/qux/2\");\n\n jsonpointer.set(obj, \"/foo\", 6); // obj.foo = 6;\n\n## Testing\n\n $ node test.js\n All tests pass.\n $\n\n[](undefined)\n\n## Author\n\n(c) 2011 Jan Lehnardt \n\n## License\n\nMIT License.",
+ "readmeFilename": "README.md",
+ "homepage": "https://github.com/janl/node-jsonpointer#readme",
"_id": "jsonpointer@1.1.0",
- "dist": {
- "shasum": "c3c72efaed3b97154163dc01dd349e1cfe0f80fc",
- "tarball": "http://registry.npmjs.org/jsonpointer/-/jsonpointer-1.1.0.tgz"
- },
- "_npmVersion": "1.1.69",
- "_npmUser": {
- "name": "jan",
- "email": "jan@apache.org"
- },
- "maintainers": [
- {
- "name": "jan",
- "email": "jan@apache.org"
- }
- ],
- "directories": {},
"_shasum": "c3c72efaed3b97154163dc01dd349e1cfe0f80fc",
"_resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-1.1.0.tgz",
- "_from": "jsonpointer@>=1.1.0 <2.0.0",
- "readme": "ERROR: No README data found!",
- "homepage": "https://github.com/janl/node-jsonpointer#readme"
+ "_from": "jsonpointer@>=1.1.0 <2.0.0"
}
diff --git a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/.jshintrc b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/.jshintrc
new file mode 100644
index 00000000000000..77887b5f0f2efc
--- /dev/null
+++ b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/.jshintrc
@@ -0,0 +1,30 @@
+{
+ "maxdepth": 4,
+ "maxstatements": 200,
+ "maxcomplexity": 12,
+ "maxlen": 80,
+ "maxparams": 5,
+
+ "curly": true,
+ "eqeqeq": true,
+ "immed": true,
+ "latedef": false,
+ "noarg": true,
+ "noempty": true,
+ "nonew": true,
+ "undef": true,
+ "unused": "vars",
+ "trailing": true,
+
+ "quotmark": true,
+ "expr": true,
+ "asi": true,
+
+ "browser": false,
+ "esnext": true,
+ "devel": false,
+ "node": false,
+ "nonstandard": false,
+
+ "predef": ["require", "module", "__dirname", "__filename"]
+}
diff --git a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/package.json b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/package.json
index 907a720da7e2f6..c087642df8c5e3 100644
--- a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/package.json
+++ b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/package.json
@@ -63,26 +63,10 @@
"engines": {
"node": ">=0.4"
},
- "gitHead": "94a95d76154103290533b2c55ffa0fe4be16bfef",
+ "readme": "# xtend\n\n[![browser support][3]][4]\n\n[](http://github.com/badges/stability-badges)\n\nExtend like a boss\n\nxtend is a basic utility library which allows you to extend an object by appending all of the properties from each object in a list. When there are identical properties, the right-most property takes precedence.\n\n## Examples\n\n```js\nvar extend = require(\"xtend\")\n\n// extend returns a new object. Does not mutate arguments\nvar combination = extend({\n a: \"a\",\n b: 'c'\n}, {\n b: \"b\"\n})\n// { a: \"a\", b: \"b\" }\n```\n\n## Stability status: Locked\n\n## MIT Licenced\n\n\n [3]: http://ci.testling.com/Raynos/xtend.png\n [4]: http://ci.testling.com/Raynos/xtend\n",
+ "readmeFilename": "README.md",
"_id": "xtend@4.0.0",
"_shasum": "8bc36ff87aedbe7ce9eaf0bca36b2354a743840f",
- "_from": "xtend@>=4.0.0 <5.0.0",
- "_npmVersion": "1.4.15",
- "_npmUser": {
- "name": "raynos",
- "email": "raynos2@gmail.com"
- },
- "maintainers": [
- {
- "name": "raynos",
- "email": "raynos2@gmail.com"
- }
- ],
- "dist": {
- "shasum": "8bc36ff87aedbe7ce9eaf0bca36b2354a743840f",
- "tarball": "http://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz"
- },
- "directories": {},
"_resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz",
- "readme": "ERROR: No README data found!"
+ "_from": "xtend@>=4.0.0 <5.0.0"
}
diff --git a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/package.json b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/package.json
index 4f090f3c606d37..e5efff086bbf1d 100644
--- a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/package.json
+++ b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/package.json
@@ -1,6 +1,6 @@
{
"name": "is-my-json-valid",
- "version": "2.12.0",
+ "version": "2.12.1",
"description": "A JSONSchema validator that uses code generation to be extremely fast",
"main": "index.js",
"dependencies": {
@@ -33,16 +33,20 @@
"url": "https://github.com/mafintosh/is-my-json-valid/issues"
},
"homepage": "https://github.com/mafintosh/is-my-json-valid",
- "gitHead": "fc2d995ecb1bdb0f367ddf114dfd069265043c6c",
- "_id": "is-my-json-valid@2.12.0",
- "_shasum": "8fa6c408b26be95b45a23e8f8c4b464a53874d2b",
+ "gitHead": "9c5b316e7868710e31fb7c9605f72250d31d9134",
+ "_id": "is-my-json-valid@2.12.1",
+ "_shasum": "0ee5c19c9e93bae2760410cc72ef2798b52cc871",
"_from": "is-my-json-valid@>=2.12.0 <3.0.0",
- "_npmVersion": "2.9.0",
- "_nodeVersion": "2.0.1",
+ "_npmVersion": "2.13.0",
+ "_nodeVersion": "2.4.0",
"_npmUser": {
"name": "mafintosh",
"email": "mathiasbuus@gmail.com"
},
+ "dist": {
+ "shasum": "0ee5c19c9e93bae2760410cc72ef2798b52cc871",
+ "tarball": "http://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.1.tgz"
+ },
"maintainers": [
{
"name": "mafintosh",
@@ -57,11 +61,7 @@
"email": "freeall@gmail.com"
}
],
- "dist": {
- "shasum": "8fa6c408b26be95b45a23e8f8c4b464a53874d2b",
- "tarball": "http://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.0.tgz"
- },
"directories": {},
- "_resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.0.tgz",
+ "_resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.1.tgz",
"readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndObject.json b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndObject.json
new file mode 100644
index 00000000000000..c65c02c36f9706
--- /dev/null
+++ b/deps/npm/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndObject.json
@@ -0,0 +1,18 @@
+[
+ {
+ "description": "multiple types of null and object containing properties",
+ "schema": {
+ "type": ["null", "object"],
+ "properties": {
+ "foo": {}
+ }
+ },
+ "tests": [
+ {
+ "description": "null is valid",
+ "data": null,
+ "valid": true
+ }
+ ]
+ }
+]
diff --git a/deps/npm/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json b/deps/npm/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json
index 31dbaba6b38979..3a25386213453c 100644
--- a/deps/npm/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json
+++ b/deps/npm/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json
@@ -36,30 +36,14 @@
"url": "http://github.com/hapijs/cryptiles/raw/master/LICENSE"
}
],
- "gitHead": "944263dbb628b9b3da542d35600d587f861eeaf0",
+ "readme": "cryptiles\n=========\n\nGeneral purpose crypto utilities\n\n[](http://travis-ci.org/hapijs/cryptiles)\n\n## Methods\n\n### `randomString( size)`\nReturns a cryptographically strong pseudo-random data string. Takes a size argument for the length of the string.\n\n### `fixedTimeComparison( a, b)`\nCompare two strings using fixed time algorithm (to prevent time-based analysis of MAC digest match). Returns `true` if the strings match, `false` if they differ.\n",
+ "readmeFilename": "README.md",
"bugs": {
"url": "https://github.com/hapijs/cryptiles/issues"
},
- "homepage": "https://github.com/hapijs/cryptiles",
+ "homepage": "https://github.com/hapijs/cryptiles#readme",
"_id": "cryptiles@2.0.4",
"_shasum": "09ea1775b9e1c7de7e60a99d42ab6f08ce1a1285",
- "_from": "cryptiles@>=2.0.0 <3.0.0",
- "_npmVersion": "1.4.23",
- "_npmUser": {
- "name": "hueniverse",
- "email": "eran@hueniverse.com"
- },
- "maintainers": [
- {
- "name": "hueniverse",
- "email": "eran@hueniverse.com"
- }
- ],
- "dist": {
- "shasum": "09ea1775b9e1c7de7e60a99d42ab6f08ce1a1285",
- "tarball": "http://registry.npmjs.org/cryptiles/-/cryptiles-2.0.4.tgz"
- },
- "directories": {},
"_resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.4.tgz",
- "readme": "ERROR: No README data found!"
+ "_from": "cryptiles@>=2.0.0 <3.0.0"
}
diff --git a/deps/npm/node_modules/request/node_modules/hawk/node_modules/sntp/package.json b/deps/npm/node_modules/request/node_modules/hawk/node_modules/sntp/package.json
index 8b664b60fcd738..9ae1b926efae26 100644
--- a/deps/npm/node_modules/request/node_modules/hawk/node_modules/sntp/package.json
+++ b/deps/npm/node_modules/request/node_modules/hawk/node_modules/sntp/package.json
@@ -36,30 +36,14 @@
"url": "http://github.com/hueniverse/sntp/raw/master/LICENSE"
}
],
- "gitHead": "ee2e35284f684609990681734d39010cd356d7da",
+ "readme": "# sntp\n\nAn SNTP v4 client (RFC4330) for node. Simpy connects to the NTP or SNTP server requested and returns the server time\nalong with the roundtrip duration and clock offset. To adjust the local time to the NTP time, add the returned `t` offset\nto the local time.\n\n[](http://travis-ci.org/hueniverse/sntp)\n\n# Usage\n\n```javascript\nvar Sntp = require('sntp');\n\n// All options are optional\n\nvar options = {\n host: 'nist1-sj.ustiming.org', // Defaults to pool.ntp.org\n port: 123, // Defaults to 123 (NTP)\n resolveReference: true, // Default to false (not resolving)\n timeout: 1000 // Defaults to zero (no timeout)\n};\n\n// Request server time\n\nSntp.time(options, function (err, time) {\n\n if (err) {\n console.log('Failed: ' + err.message);\n process.exit(1);\n }\n\n console.log('Local clock is off by: ' + time.t + ' milliseconds');\n process.exit(0);\n});\n```\n\nIf an application needs to maintain continuous time synchronization, the module provides a stateful method for\nquerying the current offset only when the last one is too old (defaults to daily).\n\n```javascript\n// Request offset once\n\nSntp.offset(function (err, offset) {\n\n console.log(offset); // New (served fresh)\n\n // Request offset again\n\n Sntp.offset(function (err, offset) {\n\n console.log(offset); // Identical (served from cache)\n });\n});\n```\n\nTo set a background offset refresh, start the interval and use the provided now() method. If for any reason the\nclient fails to obtain an up-to-date offset, the current system clock is used.\n\n```javascript\nvar before = Sntp.now(); // System time without offset\n\nSntp.start(function () {\n\n var now = Sntp.now(); // With offset\n Sntp.stop();\n});\n```\n\n",
+ "readmeFilename": "README.md",
"bugs": {
"url": "https://github.com/hueniverse/sntp/issues"
},
- "homepage": "https://github.com/hueniverse/sntp",
+ "homepage": "https://github.com/hueniverse/sntp#readme",
"_id": "sntp@1.0.9",
"_shasum": "6541184cc90aeea6c6e7b35e2659082443c66198",
- "_from": "sntp@>=1.0.0 <2.0.0",
- "_npmVersion": "1.4.23",
- "_npmUser": {
- "name": "hueniverse",
- "email": "eran@hueniverse.com"
- },
- "maintainers": [
- {
- "name": "hueniverse",
- "email": "eran@hueniverse.com"
- }
- ],
- "dist": {
- "shasum": "6541184cc90aeea6c6e7b35e2659082443c66198",
- "tarball": "http://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz"
- },
- "directories": {},
"_resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
- "readme": "ERROR: No README data found!"
+ "_from": "sntp@>=1.0.0 <2.0.0"
}
diff --git a/deps/npm/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json b/deps/npm/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json
index be2bc636ad376a..034c2b48f14c79 100644
--- a/deps/npm/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json
+++ b/deps/npm/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json
@@ -32,32 +32,14 @@
"pretest": "which gjslint; if [[ \"$?\" = 0 ]] ; then gjslint --nojsdoc -r lib -r tst; else echo \"Missing gjslint. Skipping lint\"; fi",
"test": "tap ./tst"
},
- "_npmUser": {
- "name": "mcavage",
- "email": "mcavage@gmail.com"
+ "readme": "node-asn1 is a library for encoding and decoding ASN.1 datatypes in pure JS.\nCurrently BER encoding is supported; at some point I'll likely have to do DER.\n\n## Usage\n\nMostly, if you're *actually* needing to read and write ASN.1, you probably don't\nneed this readme to explain what and why. If you have no idea what ASN.1 is,\nsee this: ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc\n\nThe source is pretty much self-explanatory, and has read/write methods for the\ncommon types out there.\n\n### Decoding\n\nThe following reads an ASN.1 sequence with a boolean.\n\n var Ber = require('asn1').Ber;\n\n var reader = new Ber.Reader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff]));\n\n reader.readSequence();\n console.log('Sequence len: ' + reader.length);\n if (reader.peek() === Ber.Boolean)\n console.log(reader.readBoolean());\n\n### Encoding\n\nThe following generates the same payload as above.\n\n var Ber = require('asn1').Ber;\n\n var writer = new Ber.Writer();\n\n writer.startSequence();\n writer.writeBoolean(true);\n writer.endSequence();\n\n console.log(writer.buffer);\n\n## Installation\n\n npm install asn1\n\n## License\n\nMIT.\n\n## Bugs\n\nSee .\n",
+ "readmeFilename": "README.md",
+ "bugs": {
+ "url": "https://github.com/mcavage/node-asn1/issues"
},
+ "homepage": "https://github.com/mcavage/node-asn1#readme",
"_id": "asn1@0.1.11",
- "_engineSupported": true,
- "_npmVersion": "1.1.0-beta-4",
- "_nodeVersion": "v0.6.6",
- "_defaultsLoaded": true,
- "dist": {
- "shasum": "559be18376d08a4ec4dbe80877d27818639b2df7",
- "tarball": "http://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz"
- },
- "maintainers": [
- {
- "name": "mcavage",
- "email": "mcavage@gmail.com"
- }
- ],
- "directories": {},
"_shasum": "559be18376d08a4ec4dbe80877d27818639b2df7",
"_resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz",
- "_from": "asn1@0.1.11",
- "bugs": {
- "url": "https://github.com/mcavage/node-asn1/issues"
- },
- "readme": "ERROR: No README data found!",
- "homepage": "https://github.com/mcavage/node-asn1#readme"
+ "_from": "asn1@0.1.11"
}
diff --git a/deps/npm/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json b/deps/npm/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json
index 6fcca673f1935c..b3317675d295de 100644
--- a/deps/npm/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json
+++ b/deps/npm/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json
@@ -16,30 +16,15 @@
"engines": {
"node": ">=0.8"
},
+ "readme": "# node-assert-plus\n\nThis library is a super small wrapper over node's assert module that has two\nthings: (1) the ability to disable assertions with the environment variable\nNODE_NDEBUG, and (2) some API wrappers for argument testing. Like\n`assert.string(myArg, 'myArg')`. As a simple example, most of my code looks\nlike this:\n\n var assert = require('assert-plus');\n\n function fooAccount(options, callback) {\n\t assert.object(options, 'options');\n\t\tassert.number(options.id, 'options.id);\n\t\tassert.bool(options.isManager, 'options.isManager');\n\t\tassert.string(options.name, 'options.name');\n\t\tassert.arrayOfString(options.email, 'options.email');\n\t\tassert.func(callback, 'callback');\n\n // Do stuff\n\t\tcallback(null, {});\n }\n\n# API\n\nAll methods that *aren't* part of node's core assert API are simply assumed to\ntake an argument, and then a string 'name' that's not a message; `AssertionError`\nwill be thrown if the assertion fails with a message like:\n\n AssertionError: foo (string) is required\n\tat test (/home/mark/work/foo/foo.js:3:9)\n\tat Object. (/home/mark/work/foo/foo.js:15:1)\n\tat Module._compile (module.js:446:26)\n\tat Object..js (module.js:464:10)\n\tat Module.load (module.js:353:31)\n\tat Function._load (module.js:311:12)\n\tat Array.0 (module.js:484:10)\n\tat EventEmitter._tickCallback (node.js:190:38)\n\nfrom:\n\n function test(foo) {\n\t assert.string(foo, 'foo');\n }\n\nThere you go. You can check that arrays are of a homogenous type with `Arrayof$Type`:\n\n function test(foo) {\n\t assert.arrayOfString(foo, 'foo');\n }\n\nYou can assert IFF an argument is not `undefined` (i.e., an optional arg):\n\n assert.optionalString(foo, 'foo');\n\nLastly, you can opt-out of assertion checking altogether by setting the\nenvironment variable `NODE_NDEBUG=1`. This is pseudo-useful if you have\nlots of assertions, and don't want to pay `typeof ()` taxes to v8 in\nproduction.\n\nThe complete list of APIs is:\n\n* assert.bool\n* assert.buffer\n* assert.func\n* assert.number\n* assert.object\n* assert.string\n* assert.arrayOfBool\n* assert.arrayOfFunc\n* assert.arrayOfNumber\n* assert.arrayOfObject\n* assert.arrayOfString\n* assert.optionalBool\n* assert.optionalBuffer\n* assert.optionalFunc\n* assert.optionalNumber\n* assert.optionalObject\n* assert.optionalString\n* assert.optionalArrayOfBool\n* assert.optionalArrayOfFunc\n* assert.optionalArrayOfNumber\n* assert.optionalArrayOfObject\n* assert.optionalArrayOfString\n* assert.AssertionError\n* assert.fail\n* assert.ok\n* assert.equal\n* assert.notEqual\n* assert.deepEqual\n* assert.notDeepEqual\n* assert.strictEqual\n* assert.notStrictEqual\n* assert.throws\n* assert.doesNotThrow\n* assert.ifError\n\n# Installation\n\n npm install assert-plus\n\n## License\n\nThe MIT License (MIT)\nCopyright (c) 2012 Mark Cavage\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n## Bugs\n\nSee .\n",
+ "readmeFilename": "README.md",
"bugs": {
"url": "https://github.com/mcavage/node-assert-plus/issues"
},
+ "homepage": "https://github.com/mcavage/node-assert-plus#readme",
"dependencies": {},
"_id": "assert-plus@0.1.5",
- "dist": {
- "shasum": "ee74009413002d84cec7219c6ac811812e723160",
- "tarball": "http://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz"
- },
- "_from": "assert-plus@>=0.1.5 <0.2.0",
- "_npmVersion": "1.3.11",
- "_npmUser": {
- "name": "mcavage",
- "email": "mcavage@gmail.com"
- },
- "maintainers": [
- {
- "name": "mcavage",
- "email": "mcavage@gmail.com"
- }
- ],
- "directories": {},
"_shasum": "ee74009413002d84cec7219c6ac811812e723160",
"_resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz",
- "readme": "ERROR: No README data found!",
- "homepage": "https://github.com/mcavage/node-assert-plus#readme"
+ "_from": "assert-plus@>=0.1.5 <0.2.0"
}
diff --git a/deps/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json b/deps/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json
index c33f8a5742ae69..2090a5ea3c2a47 100644
--- a/deps/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json
+++ b/deps/npm/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json
@@ -15,28 +15,13 @@
"type": "git",
"url": "git+https://github.com/rmustacc/node-ctype.git"
},
- "_id": "ctype@0.5.3",
- "dist": {
- "shasum": "82c18c2461f74114ef16c135224ad0b9144ca12f",
- "tarball": "http://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz"
- },
- "_npmVersion": "1.1.59",
- "_npmUser": {
- "name": "rm",
- "email": "rm@fingolfin.org"
- },
- "maintainers": [
- {
- "name": "rm",
- "email": "rm@fingolfin.org"
- }
- ],
- "directories": {},
- "_shasum": "82c18c2461f74114ef16c135224ad0b9144ca12f",
- "_resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz",
- "_from": "ctype@0.5.3",
+ "readme": "Node-CType is a way to read and write binary data in structured and easy to use\nformat. Its name comes from the C header file.\n\nTo get started, simply clone the repository or use npm to install it. Once it is\nthere, simply require it.\n\ngit clone git://github.com/rmustacc/node-ctype\nnpm install ctype\nvar mod_ctype = require('ctype')\n\n\nThere are two APIs that you can use, depending on what abstraction you'd like.\nThe low level API let's you read and write individual integers and floats from\nbuffers. The higher level API let's you read and write structures of these. To\nillustrate this, let's looks look at how we would read and write a binary\nencoded x,y point.\n\nIn C we would define this structure as follows:\n\ntypedef struct point {\n\tuint16_t\tp_x;\n\tuint16_t\tp_y;\n} point_t;\n\nTo read a binary encoded point from a Buffer, we first need to create a CType\nparser (where we specify the endian and other options) and add the typedef.\n\nvar parser = new mod_ctype.Parser({ endian: 'big' });\nparser.typedef('point_t', [\n\t{ x: { type: 'uint16_t' } },\n\t{ y: { type: 'uint16_t' } }\n]);\n\nFrom here, given a buffer buf and an offset into it, we can read a point.\n\nvar out = parser.readData([ { point: { type: 'point_t' } } ], buffer, 0);\nconsole.log(out);\n{ point: { x: 23, y: 42 } }\n\nAnother way to get the same information would be to use the low level methods.\nNote that these require you to manually deal with the offset. Here's how we'd\nget the same values of x and y from the buffer.\n\nvar x = mod_ctype.ruint16(buf, 'big', 0);\nvar y = mod_ctype.ruint16(buf, 'big', 2);\nconsole.log(x + ', ' + y);\n23, 42\n\nThe true power of this API comes from the ability to define and nest typedefs,\njust as you would in C. By default, the following types are defined by default.\nNote that they return a Number, unless indicated otherwise.\n\n * int8_t\n * int16_t\n * int32_t\n * int64_t (returns an array where val[0] << 32 + val[1] would be the value)\n * uint8_t\n * uint16_t\n * uint32_t\n * uint64_t (returns an array where val[0] << 32 + val[1] would be the value)\n * float\n * double\n * char (either returns a buffer with that character or a uint8_t)\n * char[] (returns an object with the buffer and the number of characters read which is either the total amount requested or until the first 0)\n\n\nctf2json integration:\n\nNode-CType supports consuming the output of ctf2json. Once you read in a JSON file,\nall you have to do to add all the definitions it contains is:\n\nvar data, parser;\ndata = JSON.parse(parsedJSONData);\nparser = mod_ctype.parseCTF(data, { endian: 'big' });\n\nFor more documentation, see the file README.old. Full documentation is in the\nprocess of being rewritten as a series of manual pages which will be available\nin the repository and online for viewing.\n\nTo read the ctio manual page simple run, from the root of the workspace:\n\nman -Mman -s 3ctype ctio\n",
+ "readmeFilename": "README",
"bugs": {
"url": "https://github.com/rmustacc/node-ctype/issues"
},
- "readme": "ERROR: No README data found!"
+ "_id": "ctype@0.5.3",
+ "_shasum": "82c18c2461f74114ef16c135224ad0b9144ca12f",
+ "_resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz",
+ "_from": "ctype@0.5.3"
}
diff --git a/deps/npm/node_modules/request/node_modules/isstream/.jshintrc b/deps/npm/node_modules/request/node_modules/isstream/.jshintrc
new file mode 100644
index 00000000000000..c8ef3ca4097f82
--- /dev/null
+++ b/deps/npm/node_modules/request/node_modules/isstream/.jshintrc
@@ -0,0 +1,59 @@
+{
+ "predef": [ ]
+ , "bitwise": false
+ , "camelcase": false
+ , "curly": false
+ , "eqeqeq": false
+ , "forin": false
+ , "immed": false
+ , "latedef": false
+ , "noarg": true
+ , "noempty": true
+ , "nonew": true
+ , "plusplus": false
+ , "quotmark": true
+ , "regexp": false
+ , "undef": true
+ , "unused": true
+ , "strict": false
+ , "trailing": true
+ , "maxlen": 120
+ , "asi": true
+ , "boss": true
+ , "debug": true
+ , "eqnull": true
+ , "esnext": true
+ , "evil": true
+ , "expr": true
+ , "funcscope": false
+ , "globalstrict": false
+ , "iterator": false
+ , "lastsemic": true
+ , "laxbreak": true
+ , "laxcomma": true
+ , "loopfunc": true
+ , "multistr": false
+ , "onecase": false
+ , "proto": false
+ , "regexdash": false
+ , "scripturl": true
+ , "smarttabs": false
+ , "shadow": false
+ , "sub": true
+ , "supernew": false
+ , "validthis": true
+ , "browser": true
+ , "couch": false
+ , "devel": false
+ , "dojo": false
+ , "mootools": false
+ , "node": true
+ , "nonstandard": true
+ , "prototypejs": false
+ , "rhino": false
+ , "worker": true
+ , "wsh": false
+ , "nomen": false
+ , "onevar": false
+ , "passfail": false
+}
\ No newline at end of file
diff --git a/deps/npm/node_modules/request/node_modules/isstream/package.json b/deps/npm/node_modules/request/node_modules/isstream/package.json
index 74e97e608cc11e..d0338b882c58e8 100644
--- a/deps/npm/node_modules/request/node_modules/isstream/package.json
+++ b/deps/npm/node_modules/request/node_modules/isstream/package.json
@@ -33,27 +33,10 @@
"url": "https://github.com/rvagg/isstream/issues"
},
"homepage": "https://github.com/rvagg/isstream",
- "gitHead": "cd39cba6da939b4fc9110825203adc506422c3dc",
+ "readme": "# isStream\n\n[](http://travis-ci.org/rvagg/isstream)\n\n**Test if an object is a `Stream`**\n\n[](https://nodei.co/npm/isstream/)\n\nThe missing `Stream.isStream(obj)`: determine if an object is standard Node.js `Stream`. Works for Node-core `Stream` objects (for 0.8, 0.10, 0.11, and in theory, older and newer versions) and all versions of **[readable-stream](https://github.com/isaacs/readable-stream)**.\n\n## Usage:\n\n```js\nvar isStream = require('isstream')\nvar Stream = require('stream')\n\nisStream(new Stream()) // true\n\nisStream({}) // false\n\nisStream(new Stream.Readable()) // true\nisStream(new Stream.Writable()) // true\nisStream(new Stream.Duplex()) // true\nisStream(new Stream.Transform()) // true\nisStream(new Stream.PassThrough()) // true\n```\n\n## But wait! There's more!\n\nYou can also test for `isReadable(obj)`, `isWritable(obj)` and `isDuplex(obj)` to test for implementations of Streams2 (and Streams3) base classes.\n\n```js\nvar isReadable = require('isstream').isReadable\nvar isWritable = require('isstream').isWritable\nvar isDuplex = require('isstream').isDuplex\nvar Stream = require('stream')\n\nisReadable(new Stream()) // false\nisWritable(new Stream()) // false\nisDuplex(new Stream()) // false\n\nisReadable(new Stream.Readable()) // true\nisReadable(new Stream.Writable()) // false\nisReadable(new Stream.Duplex()) // true\nisReadable(new Stream.Transform()) // true\nisReadable(new Stream.PassThrough()) // true\n\nisWritable(new Stream.Readable()) // false\nisWritable(new Stream.Writable()) // true\nisWritable(new Stream.Duplex()) // true\nisWritable(new Stream.Transform()) // true\nisWritable(new Stream.PassThrough()) // true\n\nisDuplex(new Stream.Readable()) // false\nisDuplex(new Stream.Writable()) // false\nisDuplex(new Stream.Duplex()) // true\nisDuplex(new Stream.Transform()) // true\nisDuplex(new Stream.PassThrough()) // true\n```\n\n*Reminder: when implementing your own streams, please [use **readable-stream** rather than core streams](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html).*\n\n\n## License\n\n**isStream** is Copyright (c) 2015 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE.md file for more details.\n",
+ "readmeFilename": "README.md",
"_id": "isstream@0.1.2",
"_shasum": "47e63f7af55afa6f92e1500e690eb8b8529c099a",
- "_from": "isstream@>=0.1.1 <0.2.0",
- "_npmVersion": "2.6.1",
- "_nodeVersion": "1.4.3",
- "_npmUser": {
- "name": "rvagg",
- "email": "rod@vagg.org"
- },
- "maintainers": [
- {
- "name": "rvagg",
- "email": "rod@vagg.org"
- }
- ],
- "dist": {
- "shasum": "47e63f7af55afa6f92e1500e690eb8b8529c099a",
- "tarball": "http://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz"
- },
- "directories": {},
"_resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "readme": "ERROR: No README data found!"
+ "_from": "isstream@>=0.1.1 <0.2.0"
}
diff --git a/deps/npm/node_modules/request/node_modules/mime-types/HISTORY.md b/deps/npm/node_modules/request/node_modules/mime-types/HISTORY.md
index c5b8f5f133ff1e..566df7303b8799 100644
--- a/deps/npm/node_modules/request/node_modules/mime-types/HISTORY.md
+++ b/deps/npm/node_modules/request/node_modules/mime-types/HISTORY.md
@@ -1,3 +1,15 @@
+2.1.5 / 2015-08-20
+==================
+
+ * deps: mime-db@~1.17.0
+ - Add new mime types
+
+2.1.4 / 2015-07-30
+==================
+
+ * deps: mime-db@~1.16.0
+ - Add new mime types
+
2.1.3 / 2015-07-13
==================
diff --git a/deps/npm/node_modules/request/node_modules/mime-types/index.js b/deps/npm/node_modules/request/node_modules/mime-types/index.js
index 9edf72b75e9fef..f7008b246d1e4c 100644
--- a/deps/npm/node_modules/request/node_modules/mime-types/index.js
+++ b/deps/npm/node_modules/request/node_modules/mime-types/index.js
@@ -177,7 +177,7 @@ function populateMaps(extensions, types) {
if (types[extension] !== 'application/octet-stream'
&& from > to || (from === to && types[extension].substr(0, 12) === 'application/')) {
// skip the remapping
- return
+ continue
}
}
diff --git a/deps/npm/node_modules/request/node_modules/mime-types/node_modules/mime-db/HISTORY.md b/deps/npm/node_modules/request/node_modules/mime-types/node_modules/mime-db/HISTORY.md
index fa40614d9c8caf..b8c7fae316652d 100644
--- a/deps/npm/node_modules/request/node_modules/mime-types/node_modules/mime-db/HISTORY.md
+++ b/deps/npm/node_modules/request/node_modules/mime-types/node_modules/mime-db/HISTORY.md
@@ -1,3 +1,16 @@
+1.17.0 / 2015-08-13
+===================
+
+ * Add `application/x-msdos-program`
+ * Add `audio/g711-0`
+ * Add `image/vnd.mozilla.apng`
+ * Add extension `.exe` to `application/x-msdos-program`
+
+1.16.0 / 2015-07-29
+===================
+
+ * Add `application/vnd.uri-map`
+
1.15.0 / 2015-07-13
===================
diff --git a/deps/npm/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json b/deps/npm/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json
index 2f2dc448eb522f..f91d6fd5e9123d 100644
--- a/deps/npm/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json
+++ b/deps/npm/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json
@@ -3839,6 +3839,9 @@
"application/vnd.uplanet.signal": {
"source": "iana"
},
+ "application/vnd.uri-map": {
+ "source": "iana"
+ },
"application/vnd.valve.source.material": {
"source": "iana"
},
@@ -4385,6 +4388,9 @@
"source": "apache",
"extensions": ["clp"]
},
+ "application/x-msdos-program": {
+ "extensions": ["exe"]
+ },
"application/x-msdownload": {
"source": "apache",
"extensions": ["exe","dll","com","bat","msi"]
@@ -4819,6 +4825,9 @@
"audio/fwdred": {
"source": "iana"
},
+ "audio/g711-0": {
+ "source": "iana"
+ },
"audio/g719": {
"source": "iana"
},
@@ -5405,6 +5414,9 @@
"image/vnd.mix": {
"source": "iana"
},
+ "image/vnd.mozilla.apng": {
+ "source": "iana"
+ },
"image/vnd.ms-modi": {
"source": "iana",
"extensions": ["mdi"]
diff --git a/deps/npm/node_modules/request/node_modules/mime-types/node_modules/mime-db/package.json b/deps/npm/node_modules/request/node_modules/mime-types/node_modules/mime-db/package.json
index a07ee866a76cab..f71680b992a8ca 100644
--- a/deps/npm/node_modules/request/node_modules/mime-types/node_modules/mime-db/package.json
+++ b/deps/npm/node_modules/request/node_modules/mime-types/node_modules/mime-db/package.json
@@ -1,7 +1,7 @@
{
"name": "mime-db",
"description": "Media Type Database",
- "version": "1.15.0",
+ "version": "1.17.0",
"contributors": [
{
"name": "Douglas Christopher Wilson",
@@ -33,10 +33,10 @@
"url": "git+https://github.com/jshttp/mime-db.git"
},
"devDependencies": {
- "bluebird": "2.9.33",
+ "bluebird": "2.9.34",
"co": "4.6.0",
"cogent": "1.0.1",
- "csv-parse": "0.1.3",
+ "csv-parse": "1.0.0",
"gnode": "0.1.1",
"istanbul": "0.3.17",
"mocha": "1.21.5",
@@ -61,14 +61,14 @@
"test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/",
"update": "npm run fetch && npm run build"
},
- "gitHead": "96922b79fcaacf8c2a95ce3368739ec71c9471a2",
+ "gitHead": "6525b89bd6d8f901d3c5b072741f0fbc4a4d60c3",
"bugs": {
"url": "https://github.com/jshttp/mime-db/issues"
},
"homepage": "https://github.com/jshttp/mime-db",
- "_id": "mime-db@1.15.0",
- "_shasum": "d219e6214bbcae23a6fa69c0868c4fadc1405e8a",
- "_from": "mime-db@>=1.15.0 <1.16.0",
+ "_id": "mime-db@1.17.0",
+ "_shasum": "95bdc044092d2bcc3189dd19fbed6ed3a3f3df2a",
+ "_from": "mime-db@>=1.17.0 <1.18.0",
"_npmVersion": "1.4.28",
"_npmUser": {
"name": "dougwilson",
@@ -85,10 +85,10 @@
}
],
"dist": {
- "shasum": "d219e6214bbcae23a6fa69c0868c4fadc1405e8a",
- "tarball": "http://registry.npmjs.org/mime-db/-/mime-db-1.15.0.tgz"
+ "shasum": "95bdc044092d2bcc3189dd19fbed6ed3a3f3df2a",
+ "tarball": "http://registry.npmjs.org/mime-db/-/mime-db-1.17.0.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.15.0.tgz",
+ "_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.17.0.tgz",
"readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/request/node_modules/mime-types/package.json b/deps/npm/node_modules/request/node_modules/mime-types/package.json
index 4fbb21420e7ec7..9136f84419b66c 100644
--- a/deps/npm/node_modules/request/node_modules/mime-types/package.json
+++ b/deps/npm/node_modules/request/node_modules/mime-types/package.json
@@ -1,7 +1,7 @@
{
"name": "mime-types",
"description": "The ultimate javascript content-type utility.",
- "version": "2.1.3",
+ "version": "2.1.5",
"contributors": [
{
"name": "Douglas Christopher Wilson",
@@ -25,13 +25,13 @@
],
"repository": {
"type": "git",
- "url": "git+https://github.com/jshttp/mime-types.git"
+ "url": "https://github.com/jshttp/mime-types"
},
"dependencies": {
- "mime-db": "~1.15.0"
+ "mime-db": "~1.17.0"
},
"devDependencies": {
- "istanbul": "0.3.17",
+ "istanbul": "0.3.18",
"mocha": "~1.21.5"
},
"files": [
@@ -47,13 +47,13 @@
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/test.js",
"test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot test/test.js"
},
- "gitHead": "565c49ad5683d4a123a170da3444ed32ce426c3a",
+ "gitHead": "de48c96e731e5903433ac2cb5c0d9fd056d9d19b",
"bugs": {
"url": "https://github.com/jshttp/mime-types/issues"
},
"homepage": "https://github.com/jshttp/mime-types",
- "_id": "mime-types@2.1.3",
- "_shasum": "f259849c7eb1f85b8f5f826187278a7f74f0c966",
+ "_id": "mime-types@2.1.5",
+ "_shasum": "2355ac0e1e0c5a68d8df6474b431192743f0a3ea",
"_from": "mime-types@>=2.1.2 <2.2.0",
"_npmVersion": "1.4.28",
"_npmUser": {
@@ -75,10 +75,9 @@
}
],
"dist": {
- "shasum": "f259849c7eb1f85b8f5f826187278a7f74f0c966",
- "tarball": "http://registry.npmjs.org/mime-types/-/mime-types-2.1.3.tgz"
+ "shasum": "2355ac0e1e0c5a68d8df6474b431192743f0a3ea",
+ "tarball": "http://registry.npmjs.org/mime-types/-/mime-types-2.1.5.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.3.tgz",
- "readme": "ERROR: No README data found!"
+ "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.5.tgz"
}
diff --git a/deps/npm/node_modules/request/node_modules/stringstream/package.json b/deps/npm/node_modules/request/node_modules/stringstream/package.json
index 3b1373bb581d02..37b7bec834a17a 100644
--- a/deps/npm/node_modules/request/node_modules/stringstream/package.json
+++ b/deps/npm/node_modules/request/node_modules/stringstream/package.json
@@ -21,28 +21,12 @@
"license": "MIT",
"readme": "# Decode streams into strings The Right Way(tm)\n\n```javascript\nvar fs = require('fs')\nvar zlib = require('zlib')\nvar strs = require('stringstream')\n\nvar utf8Stream = fs.createReadStream('massiveLogFile.gz')\n .pipe(zlib.createGunzip())\n .pipe(strs('utf8'))\n```\n\nNo need to deal with `setEncoding()` weirdness, just compose streams\nlike they were supposed to be!\n\nHandles input and output encoding:\n\n```javascript\n// Stream from utf8 to hex to base64... Why not, ay.\nvar hex64Stream = fs.createReadStream('myFile')\n .pipe(strs('utf8', 'hex'))\n .pipe(strs('hex', 'base64'))\n```\n\nAlso deals with `base64` output correctly by aligning each emitted data\nchunk so that there are no dangling `=` characters:\n\n```javascript\nvar stream = fs.createReadStream('myFile').pipe(strs('base64'))\n\nvar base64Str = ''\n\nstream.on('data', function(data) { base64Str += data })\nstream.on('end', function() {\n console.log('My base64 encoded file is: ' + base64Str) // Wouldn't work with setEncoding()\n console.log('Original file is: ' + new Buffer(base64Str, 'base64'))\n})\n```\n",
"readmeFilename": "README.md",
- "_id": "stringstream@0.0.4",
- "dist": {
- "shasum": "0f0e3423f942960b5692ac324a57dd093bc41a92",
- "tarball": "http://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz"
- },
- "_npmVersion": "1.2.0",
- "_npmUser": {
- "name": "hichaelmart",
- "email": "michael.hart.au@gmail.com"
- },
- "maintainers": [
- {
- "name": "hichaelmart",
- "email": "michael.hart.au@gmail.com"
- }
- ],
- "directories": {},
- "_shasum": "0f0e3423f942960b5692ac324a57dd093bc41a92",
- "_resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz",
- "_from": "stringstream@>=0.0.4 <0.1.0",
"bugs": {
"url": "https://github.com/mhart/StringStream/issues"
},
- "homepage": "https://github.com/mhart/StringStream#readme"
+ "homepage": "https://github.com/mhart/StringStream#readme",
+ "_id": "stringstream@0.0.4",
+ "_shasum": "0f0e3423f942960b5692ac324a57dd093bc41a92",
+ "_resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz",
+ "_from": "stringstream@>=0.0.4 <0.1.0"
}
diff --git a/deps/npm/node_modules/request/node_modules/tunnel-agent/.jshintrc b/deps/npm/node_modules/request/node_modules/tunnel-agent/.jshintrc
new file mode 100644
index 00000000000000..4c1c8d49723519
--- /dev/null
+++ b/deps/npm/node_modules/request/node_modules/tunnel-agent/.jshintrc
@@ -0,0 +1,5 @@
+{
+ "node": true,
+ "asi": true,
+ "laxcomma": true
+}
diff --git a/deps/npm/node_modules/request/package.json b/deps/npm/node_modules/request/package.json
index 0f3275a9b1be72..a218c027e140ed 100644
--- a/deps/npm/node_modules/request/package.json
+++ b/deps/npm/node_modules/request/package.json
@@ -7,7 +7,7 @@
"util",
"utility"
],
- "version": "2.60.0",
+ "version": "2.61.0",
"author": {
"name": "Mikeal Rogers",
"email": "mikeal.rogers@gmail.com"
@@ -73,11 +73,11 @@
"taper": "~0.4.0",
"bluebird": "~2.9.21"
},
- "gitHead": "af19cef3bc60e9151ffce5015d8ce3c0728d3aca",
+ "gitHead": "8492d18add93af1214943ee12e25371f9f9adad3",
"homepage": "https://github.com/request/request#readme",
- "_id": "request@2.60.0",
- "_shasum": "498820957fcdded1d37749069610c85f61a29f2d",
- "_from": "request@2.60.0",
+ "_id": "request@2.61.0",
+ "_shasum": "6973cb2ac94885f02693f554eec64481d6013f9f",
+ "_from": "request@>=2.61.0 <2.62.0",
"_npmVersion": "2.11.2",
"_nodeVersion": "0.12.6",
"_npmUser": {
@@ -85,8 +85,8 @@
"email": "simeonvelichkov@gmail.com"
},
"dist": {
- "shasum": "498820957fcdded1d37749069610c85f61a29f2d",
- "tarball": "http://registry.npmjs.org/request/-/request-2.60.0.tgz"
+ "shasum": "6973cb2ac94885f02693f554eec64481d6013f9f",
+ "tarball": "http://registry.npmjs.org/request/-/request-2.61.0.tgz"
},
"maintainers": [
{
@@ -107,5 +107,5 @@
}
],
"directories": {},
- "_resolved": "https://registry.npmjs.org/request/-/request-2.60.0.tgz"
+ "_resolved": "https://registry.npmjs.org/request/-/request-2.61.0.tgz"
}
diff --git a/deps/npm/node_modules/request/request.js b/deps/npm/node_modules/request/request.js
index f3f5dd915560fd..700b9e0a92dc45 100644
--- a/deps/npm/node_modules/request/request.js
+++ b/deps/npm/node_modules/request/request.js
@@ -432,13 +432,18 @@ Request.prototype.init = function (options) {
}
function setContentLength () {
- if (!Buffer.isBuffer(self.body) && !Array.isArray(self.body)) {
- self.body = new Buffer(self.body)
- }
if (!self.hasHeader('content-length')) {
- var length = (Array.isArray(self.body))
- ? self.body.reduce(function (a, b) {return a + b.length}, 0)
- : self.body.length
+ var length
+ if (typeof self.body === 'string') {
+ length = Buffer.byteLength(self.body)
+ }
+ else if (Array.isArray(self.body)) {
+ length = self.body.reduce(function (a, b) {return a + b.length}, 0)
+ }
+ else {
+ length = self.body.length
+ }
+
if (length) {
self.setHeader('content-length', length)
} else {
@@ -483,10 +488,9 @@ Request.prototype.init = function (options) {
if (v.major === 0 && v.minor <= 10) {
self.agentClass = protocol === 'http:' ? ForeverAgent : ForeverAgent.SSL
} else {
- self.agent = new self.httpModule.Agent({
- keepAlive: true,
- maxSockets: (options.pool && options.pool.maxSockets) || Infinity
- })
+ self.agentClass = self.httpModule.Agent
+ self.agentOptions = self.agentOptions || {}
+ self.agentOptions.keepAlive = true
}
} else {
self.agentClass = self.httpModule.Agent
@@ -804,21 +808,33 @@ Request.prototype.start = function () {
if (self.timeout && !self.timeoutTimer) {
var timeout = self.timeout < 0 ? 0 : self.timeout
+ // Set a timeout in memory - this block will throw if the server takes more
+ // than `timeout` to write the HTTP status and headers (corresponding to
+ // the on('response') event on the client). NB: this measures wall-clock
+ // time, not the time between bytes sent by the server.
self.timeoutTimer = setTimeout(function () {
+ var connectTimeout = self.req.socket && self.req.socket.readable === false
self.abort()
var e = new Error('ETIMEDOUT')
e.code = 'ETIMEDOUT'
+ e.connect = connectTimeout
self.emit('error', e)
}, timeout)
- // Set additional timeout on socket - in case if remote
- // server freeze after sending headers
if (self.req.setTimeout) { // only works on node 0.6+
+ // Set an additional timeout on the socket, via the `setsockopt` syscall.
+ // This timeout sets the amount of time to wait *between* bytes sent
+ // from the server, and may or may not correspond to the wall-clock time
+ // elapsed from the start of the request.
+ //
+ // In particular, it's useful for erroring if the server fails to send
+ // data halfway through streaming a response.
self.req.setTimeout(timeout, function () {
if (self.req) {
self.req.abort()
var e = new Error('ESOCKETTIMEDOUT')
e.code = 'ESOCKETTIMEDOUT'
+ e.connect = false
self.emit('error', e)
}
})
@@ -1047,7 +1063,7 @@ Request.prototype.onRequestResponse = function (response) {
try {
response.body = JSON.parse(response.body, self._jsonReviver)
} catch (e) {
- // empty
+ debug('invalid JSON received', self.uri.href)
}
}
debug('emitting complete', self.uri.href)
diff --git a/deps/npm/node_modules/rimraf/package.json b/deps/npm/node_modules/rimraf/package.json
index 449d380d9d8552..7576f528f72db2 100644
--- a/deps/npm/node_modules/rimraf/package.json
+++ b/deps/npm/node_modules/rimraf/package.json
@@ -1,6 +1,6 @@
{
"name": "rimraf",
- "version": "2.4.2",
+ "version": "2.4.3",
"main": "rimraf.js",
"description": "A deep deletion module for node (like `rm -rf`)",
"author": {
@@ -32,23 +32,23 @@
"mkdirp": "^0.5.1",
"tap": "^1.3.1"
},
- "gitHead": "4359e9d3b3c0f26e6abe3139a00b93337f1689d7",
+ "gitHead": "ec7050f8ca14c931b847414f18466e601ca7c02e",
"bugs": {
"url": "https://github.com/isaacs/rimraf/issues"
},
"homepage": "https://github.com/isaacs/rimraf#readme",
- "_id": "rimraf@2.4.2",
- "_shasum": "ab4f39b08b72eae07c3d9fe9f4831aebfc9f431d",
- "_from": "rimraf@2.4.2",
- "_npmVersion": "3.1.0",
+ "_id": "rimraf@2.4.3",
+ "_shasum": "e5b51c9437a4c582adb955e9f28cf8d945e272af",
+ "_from": "rimraf@2.4.3",
+ "_npmVersion": "3.2.2",
"_nodeVersion": "2.2.1",
"_npmUser": {
"name": "isaacs",
"email": "isaacs@npmjs.com"
},
"dist": {
- "shasum": "ab4f39b08b72eae07c3d9fe9f4831aebfc9f431d",
- "tarball": "http://registry.npmjs.org/rimraf/-/rimraf-2.4.2.tgz"
+ "shasum": "e5b51c9437a4c582adb955e9f28cf8d945e272af",
+ "tarball": "http://registry.npmjs.org/rimraf/-/rimraf-2.4.3.tgz"
},
"maintainers": [
{
@@ -57,6 +57,5 @@
}
],
"directories": {},
- "_resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.2.tgz",
- "readme": "ERROR: No README data found!"
+ "_resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.3.tgz"
}
diff --git a/deps/npm/node_modules/rimraf/rimraf.js b/deps/npm/node_modules/rimraf/rimraf.js
index 447705ac97bb0b..7771b530caa3e3 100644
--- a/deps/npm/node_modules/rimraf/rimraf.js
+++ b/deps/npm/node_modules/rimraf/rimraf.js
@@ -83,7 +83,7 @@ function rimraf (p, options, cb) {
results.forEach(function (p) {
rimraf_(p, options, function CB (er) {
if (er) {
- if (isWindows && (er.code === "EBUSY" || er.code === "ENOTEMPTY") &&
+ if (isWindows && (er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") &&
busyTries < options.maxBusyTries) {
busyTries ++
var time = busyTries * 100
diff --git a/deps/npm/node_modules/tar/lib/entry.js b/deps/npm/node_modules/tar/lib/entry.js
index 4af5c410838af8..5f5dd3c2688a8b 100644
--- a/deps/npm/node_modules/tar/lib/entry.js
+++ b/deps/npm/node_modules/tar/lib/entry.js
@@ -24,6 +24,7 @@ function Entry (header, extended, global) {
this._ending = false
this._ended = false
this._remaining = 0
+ this._abort = false
this._queue = []
this._index = 0
this._queueLen = 0
@@ -209,5 +210,11 @@ Entry.prototype._setProps = function () {
this._remaining = props.size
}
+// the parser may not call write if _abort is true.
+// useful for skipping data from some files quickly.
+Entry.prototype.abort = function(){
+ this._abort = true
+}
+
Entry.prototype.warn = fstream.warn
Entry.prototype.error = fstream.error
diff --git a/deps/npm/node_modules/tar/lib/parse.js b/deps/npm/node_modules/tar/lib/parse.js
index 1c53d9d26d7f21..600ad782f0f61d 100644
--- a/deps/npm/node_modules/tar/lib/parse.js
+++ b/deps/npm/node_modules/tar/lib/parse.js
@@ -102,7 +102,11 @@ Parse.prototype._process = function (c) {
if (this._entry) {
var entry = this._entry
- entry.write(c)
+ if(!entry._abort) entry.write(c)
+ else {
+ entry._remaining -= c.length
+ if(entry._remaining < 0) entry._remaining = 0
+ }
if (entry._remaining === 0) {
entry.end()
this._entry = null
diff --git a/deps/npm/node_modules/tar/package.json b/deps/npm/node_modules/tar/package.json
index f160d0bd0a8ff1..2d0846a1fde27b 100644
--- a/deps/npm/node_modules/tar/package.json
+++ b/deps/npm/node_modules/tar/package.json
@@ -6,7 +6,7 @@
},
"name": "tar",
"description": "tar for node",
- "version": "2.1.1",
+ "version": "2.2.1",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/node-tar.git"
@@ -21,7 +21,7 @@
"inherits": "2"
},
"devDependencies": {
- "graceful-fs": "^3.0.2",
+ "graceful-fs": "^4.1.2",
"rimraf": "1.x",
"tap": "0.x",
"mkdirp": "^0.5.0"
@@ -29,12 +29,12 @@
"license": "ISC",
"readme": "# node-tar\n\nTar for Node.js.\n\n[](https://nodei.co/npm/tar/)\n\n## API\n\nSee `examples/` for usage examples.\n\n### var tar = require('tar')\n\nReturns an object with `.Pack`, `.Extract` and `.Parse` methods.\n\n### tar.Pack([properties])\n\nReturns a through stream. Use\n[fstream](https://npmjs.org/package/fstream) to write files into the\npack stream and you will receive tar archive data from the pack\nstream.\n\nThis only works with directories, it does not work with individual files.\n\nThe optional `properties` object are used to set properties in the tar\n'Global Extended Header'. If the `fromBase` property is set to true,\nthe tar will contain files relative to the path passed, and not with\nthe path included.\n\n### tar.Extract([options])\n\nReturns a through stream. Write tar data to the stream and the files\nin the tarball will be extracted onto the filesystem.\n\n`options` can be:\n\n```js\n{\n path: '/path/to/extract/tar/into',\n strip: 0, // how many path segments to strip from the root when extracting\n}\n```\n\n`options` also get passed to the `fstream.Writer` instance that `tar`\nuses internally.\n\n### tar.Parse()\n\nReturns a writable stream. Write tar data to it and it will emit\n`entry` events for each entry parsed from the tarball. This is used by\n`tar.Extract`.\n",
"readmeFilename": "README.md",
- "gitHead": "2cbe6c805fc5d87ce099183ed13c43faba962224",
+ "gitHead": "52237e39d2eb68d22a32d9a98f1d762189fe6a3d",
"bugs": {
"url": "https://github.com/isaacs/node-tar/issues"
},
"homepage": "https://github.com/isaacs/node-tar#readme",
- "_id": "tar@2.1.1",
- "_shasum": "ac0649e135fa4546e430c7698514e1da2e8a7cc4",
- "_from": "tar@>=2.1.1 <2.2.0"
+ "_id": "tar@2.2.1",
+ "_shasum": "8e4d2a256c0e2185c6b18ad694aec968b83cb1d1",
+ "_from": "tar@2.2.1"
}
diff --git a/deps/npm/node_modules/tar/test/parse-discard.js b/deps/npm/node_modules/tar/test/parse-discard.js
new file mode 100644
index 00000000000000..79408c274b96e9
--- /dev/null
+++ b/deps/npm/node_modules/tar/test/parse-discard.js
@@ -0,0 +1,29 @@
+var tap = require("tap")
+ , tar = require("../tar.js")
+ , fs = require("fs")
+ , path = require("path")
+ , file = path.resolve(__dirname, "fixtures/c.tar")
+
+tap.test("parser test", function (t) {
+ var parser = tar.Parse()
+ var total = 0
+ var dataTotal = 0
+
+ parser.on("end", function () {
+
+ t.equals(total-513,dataTotal,'should have discarded only c.txt')
+
+ t.end()
+ })
+
+ fs.createReadStream(file)
+ .pipe(parser)
+ .on('entry',function(entry){
+ if(entry.path === 'c.txt') entry.abort()
+
+ total += entry.size;
+ entry.on('data',function(data){
+ dataTotal += data.length
+ })
+ })
+})
diff --git a/deps/npm/node_modules/validate-npm-package-license/README.md b/deps/npm/node_modules/validate-npm-package-license/README.md
index 2c51c8e640da8a..c5b3bfcf381d33 100644
--- a/deps/npm/node_modules/validate-npm-package-license/README.md
+++ b/deps/npm/node_modules/validate-npm-package-license/README.md
@@ -3,59 +3,111 @@ validate-npm-package-license
Give me a string and I'll tell you if it's a valid npm package license string.
-
+```javascript
+var valid = require('validate-npm-package-license');
+```
+
+SPDX license identifiers are valid license strings:
-```js
-var noWarnings = {
+```javascript
+
+var assert = require('assert');
+var validSPDXExpression = {
validForNewPackages: true,
- validForOldPackages: true
+ validForOldPackages: true,
+ spdx: true
};
-// SPDX license identifier for common open-source licenses
-valid('MIT'); // => noWarnings
-valid('BSD-2-Clause'); // => noWarnings
-valid('Apache-2.0'); // => noWarnings
-valid('ISC'); // => noWarnings
-
-// Simple SPDX license expression for dual licensing
-valid('(GPL-3.0 OR BSD-2-Clause)'); // => noWarnings
+assert.deepEqual(valid('MIT'), validSPDXExpression);
+assert.deepEqual(valid('BSD-2-Clause'), validSPDXExpression);
+assert.deepEqual(valid('Apache-2.0'), validSPDXExpression);
+assert.deepEqual(valid('ISC'), validSPDXExpression);
+```
+The function will return a warning and suggestion for nearly-correct license identifiers:
-// Refer to a non-standard license found in the package
-valid('SEE LICENSE IN LICENSE.txt'); // => noWarnings
-valid('SEE LICENSE IN license.md'); // => noWarnings
+```javascript
+assert.deepEqual(
+ valid('Apache 2.0'),
+ {
+ validForOldPackages: false,
+ validForNewPackages: false,
+ warnings: [
+ 'license should be ' +
+ 'a valid SPDX license expression (without "LicenseRef"), ' +
+ '"UNLICENSED", or ' +
+ '"SEE LICENSE IN "',
+ 'license is similar to the valid expression "Apache-2.0"'
+ ]
+ }
+);
+```
-// No license
-valid('UNLICENSED'); // => noWarnings
-valid('UNLICENCED'); // => noWarnings
+SPDX expressions are valid, too ...
-var warningsWithSuggestion = {
- validForOldPackages: false,
- validForNewPackages: false,
- warnings: [
- 'license should be ' +
- 'a valid SPDX license expression without "LicenseRef", ' +
- '"UNLICENSED", or ' +
- '"SEE LICENSE IN "',
- 'license is similar to the valid expression "Apache-2.0"'
- ]
-};
+```javascript
+// Simple SPDX license expression for dual licensing
+assert.deepEqual(
+ valid('(GPL-3.0 OR BSD-2-Clause)'),
+ validSPDXExpression
+);
+```
-// Almost a valid SPDX license identifier
-valid('Apache 2.0'); // => warningsWithSuggestion
+... except if they contain `LicenseRef`:
+```javascript
var warningAboutLicenseRef = {
validForOldPackages: false,
validForNewPackages: false,
+ spdx: true,
warnings: [
'license should be ' +
- 'a valid SPDX license expression without "LicenseRef", ' +
+ 'a valid SPDX license expression (without "LicenseRef"), ' +
'"UNLICENSED", or ' +
'"SEE LICENSE IN "',
]
};
-// LicenseRef-* identifiers are valid SPDX expressions,
-// but not valid in package.json
-valid('LicenseRef-Made-Up'); // => warningAboutLicenseRef
-valid('(MIT OR LicenseRef-Made-Up)'); // => warningAboutLicenseRef
+assert.deepEqual(
+ valid('LicenseRef-Made-Up'),
+ warningAboutLicenseRef
+);
+
+assert.deepEqual(
+ valid('(MIT OR LicenseRef-Made-Up)'),
+ warningAboutLicenseRef
+);
+```
+
+If you can't describe your licensing terms with standardized SPDX identifiers, put the terms in a file in the package and point users there:
+
+```javascript
+assert.deepEqual(
+ valid('SEE LICENSE IN LICENSE.txt'),
+ {
+ validForNewPackages: true,
+ validForOldPackages: true,
+ inFile: 'LICENSE.txt'
+ }
+);
+
+assert.deepEqual(
+ valid('SEE LICENSE IN license.md'),
+ {
+ validForNewPackages: true,
+ validForOldPackages: true,
+ inFile: 'license.md'
+ }
+);
+```
+
+If there aren't any licensing terms, use `UNLICENSED`:
+
+```javascript
+var unlicensed = {
+ validForNewPackages: true,
+ validForOldPackages: true,
+ unlicensed: true
+};
+assert.deepEqual(valid('UNLICENSED'), unlicensed);
+assert.deepEqual(valid('UNLICENCED'), unlicensed);
```
diff --git a/deps/npm/node_modules/validate-npm-package-license/index.js b/deps/npm/node_modules/validate-npm-package-license/index.js
index adf58d6751bf5e..2ad98d9d84d370 100644
--- a/deps/npm/node_modules/validate-npm-package-license/index.js
+++ b/deps/npm/node_modules/validate-npm-package-license/index.js
@@ -1,14 +1,9 @@
-var spdx = require('spdx');
+var parse = require('spdx-expression-parse');
var correct = require('spdx-correct');
-var validResult = {
- validForNewPackages: true,
- validForOldPackages: true
-};
-
var genericWarning = (
'license should be ' +
- 'a valid SPDX license expression without "LicenseRef", ' +
+ 'a valid SPDX license expression (without "LicenseRef"), ' +
'"UNLICENSED", or ' +
'"SEE LICENSE IN "'
);
@@ -38,14 +33,24 @@ module.exports = function(argument) {
var ast;
try {
- ast = spdx.parse(argument);
+ ast = parse(argument);
} catch (e) {
+ var match
if (
argument === 'UNLICENSED' ||
- argument === 'UNLICENCED' ||
- fileReferenceRE.test(argument)
+ argument === 'UNLICENCED'
) {
- return validResult;
+ return {
+ validForOldPackages: true,
+ validForNewPackages: true,
+ unlicensed: true
+ };
+ } else if (match = fileReferenceRE.exec(argument)) {
+ return {
+ validForOldPackages: true,
+ validForNewPackages: true,
+ inFile: match[1]
+ };
} else {
var result = {
validForOldPackages: false,
@@ -66,9 +71,14 @@ module.exports = function(argument) {
return {
validForNewPackages: false,
validForOldPackages: false,
+ spdx: true,
warnings: [genericWarning]
};
} else {
- return validResult;
+ return {
+ validForNewPackages: true,
+ validForOldPackages: true,
+ spdx: true
+ };
}
};
diff --git a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/LICENSE b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/LICENSE
deleted file mode 100644
index 17de51c642a7da..00000000000000
--- a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/LICENSE
+++ /dev/null
@@ -1,174 +0,0 @@
-SPDX:Apache-2.0
-
-Apache License
-
-Version 2.0, January 2004
-
-http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction, and
-distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by the
-copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and all other
-entities that control, are controlled by, or are under common control
-with that entity. For the purposes of this definition, "control" means
-(i) the power, direct or indirect, to cause the direction or management
-of such entity, whether by contract or otherwise, or (ii) ownership of
-fifty percent (50%) or more of the outstanding shares, or (iii)
-beneficial ownership of such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity exercising
-permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications,
-including but not limited to software source code, documentation source,
-and configuration files.
-
-"Object" form shall mean any form resulting from mechanical
-transformation or translation of a Source form, including but not
-limited to compiled object code, generated documentation, and
-conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object
-form, made available under the License, as indicated by a copyright
-notice that is included in or attached to the work (an example is
-provided in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object
-form, that is based on (or derived from) the Work and for which the
-editorial revisions, annotations, elaborations, or other modifications
-represent, as a whole, an original work of authorship. For the purposes
-of this License, Derivative Works shall not include works that remain
-separable from, or merely link (or bind by name) to the interfaces of,
-the Work and Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original
-version of the Work and any modifications or additions to that Work or
-Derivative Works thereof, that is intentionally submitted to Licensor
-for inclusion in the Work by the copyright owner or by an individual or
-Legal Entity authorized to submit on behalf of the copyright owner. For
-the purposes of this definition, "submitted" means any form of
-electronic, verbal, or written communication sent to the Licensor or its
-representatives, including but not limited to communication on
-electronic mailing lists, source code control systems, and issue
-tracking systems that are managed by, or on behalf of, the Licensor for
-the purpose of discussing and improving the Work, but excluding
-communication that is conspicuously marked or otherwise designated in
-writing by the copyright owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity on
-behalf of whom a Contribution has been received by Licensor and
-subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
-this License, each Contributor hereby grants to You a perpetual,
-worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright
-license to reproduce, prepare Derivative Works of, publicly display,
-publicly perform, sublicense, and distribute the Work and such
-Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of this
-License, each Contributor hereby grants to You a perpetual, worldwide,
-non-exclusive, no-charge, royalty-free, irrevocable (except as stated in
-this section) patent license to make, have made, use, offer to sell,
-sell, import, and otherwise transfer the Work, where such license
-applies only to those patent claims licensable by such Contributor that
-are necessarily infringed by their Contribution(s) alone or by
-combination of their Contribution(s) with the Work to which such
-Contribution(s) was submitted. If You institute patent litigation
-against any entity (including a cross-claim or counterclaim in a
-lawsuit) alleging that the Work or a Contribution incorporated within
-the Work constitutes direct or contributory patent infringement, then
-any patent licenses granted to You under this License for that Work
-shall terminate as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the Work
-or Derivative Works thereof in any medium, with or without
-modifications, and in Source or Object form, provided that You meet the
-following conditions:
-
-(a) You must give any other recipients of the Work or Derivative Works a
-copy of this License; and
-
-(b) You must cause any modified files to carry prominent notices stating
-that You changed the files; and
-
-(c) You must retain, in the Source form of any Derivative Works that You
-distribute, all copyright, patent, trademark, and attribution notices
-from the Source form of the Work, excluding those notices that do not
-pertain to any part of the Derivative Works; and
-
-(d) If the Work includes a "NOTICE" text file as part of its
-distribution, then any Derivative Works that You distribute must include
-a readable copy of the attribution notices contained within such NOTICE
-file, excluding those notices that do not pertain to any part of the
-Derivative Works, in at least one of the following places: within a
-NOTICE text file distributed as part of the Derivative Works; within the
-Source form or documentation, if provided along with the Derivative
-Works; or, within a display generated by the Derivative Works, if and
-wherever such third-party notices normally appear. The contents of the
-NOTICE file are for informational purposes only and do not modify the
-License. You may add Your own attribution notices within Derivative
-Works that You distribute, alongside or as an addendum to the NOTICE
-text from the Work, provided that such additional attribution notices
-cannot be construed as modifying the License.
-
-You may add Your own copyright statement to Your modifications and may
-provide additional or different license terms and conditions for use,
-reproduction, or distribution of Your modifications, or for any such
-Derivative Works as a whole, provided Your use, reproduction, and
-distribution of the Work otherwise complies with the conditions stated
-in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
-any Contribution intentionally submitted for inclusion in the Work by
-You to the Licensor shall be under the terms and conditions of this
-License, without any additional terms or conditions. Notwithstanding the
-above, nothing herein shall supersede or modify the terms of any
-separate license agreement you may have executed with Licensor regarding
-such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
-names, trademarks, service marks, or product names of the Licensor,
-except as required for reasonable and customary use in describing the
-origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or agreed
-to in writing, Licensor provides the Work (and each Contributor provides
-its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, either express or implied, including, without limitation,
-any warranties or conditions of TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely
-responsible for determining the appropriateness of using or
-redistributing the Work and assume any risks associated with Your
-exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
-whether in tort (including negligence), contract, or otherwise, unless
-required by applicable law (such as deliberate and grossly negligent
-acts) or agreed to in writing, shall any Contributor be liable to You
-for damages, including any direct, indirect, special, incidental, or
-consequential damages of any character arising as a result of this
-License or out of the use or inability to use the Work (including but
-not limited to damages for loss of goodwill, work stoppage, computer
-failure or malfunction, or any and all other commercial damages or
-losses), even if such Contributor has been advised of the possibility of
-such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing the
-Work or Derivative Works thereof, You may choose to offer, and charge a
-fee for, acceptance of support, warranty, indemnity, or other liability
-obligations and/or rights consistent with this License. However, in
-accepting such obligations, You may act only on Your own behalf and on
-Your sole responsibility, not on behalf of any other Contributor, and
-only if You agree to indemnify, defend, and hold each Contributor
-harmless for any liability incurred by, or claims asserted against, such
-Contributor by reason of your accepting any such warranty or additional
-liability.
diff --git a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/README.md b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/README.md
index 05cd9947d22ccd..4289e5cd8c5719 100644
--- a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/README.md
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/README.md
@@ -1,21 +1,10 @@
-spdx-correct.js
-===============
+```javascript
+var correct = require('spdx-correct');
+var assert = require('assert');
-[](https://www.npmjs.com/package/spdx-correct)
-[](http://www.apache.org/licenses/LICENSE-2.0)
-[](http://travis-ci.org/kemitchell/spdx-correct.js)
+assert.equal(correct('mit'), 'MIT')
+assert.equal(correct('Apache 2'), 'Apache-2.0')
-Correct invalid SPDX identifiers.
-
-
-
-```js
-correct('mit'); // => 'MIT'
-
-correct('Apache 2'); // => 'Apache-2.0'
-
-correct('No idea what license'); // => null
+assert(correct('No idea what license') === null)
```
diff --git a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/spdx-correct.js b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/index.js
similarity index 98%
rename from deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/spdx-correct.js
rename to deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/index.js
index 094712d62361c8..75b7a21afebb65 100644
--- a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/spdx-correct.js
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/index.js
@@ -1,6 +1,8 @@
-var spdx = require('spdx');
+var licenseIDs = require('spdx-license-ids');
-var valid = spdx.valid.bind(spdx);
+function valid(string) {
+ return licenseIDs.indexOf(string) > -1;
+}
// Common transpositions of license identifier acronyms
var transpositions = [
diff --git a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/node_modules/spdx-license-ids/LICENSE b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/node_modules/spdx-license-ids/LICENSE
new file mode 100644
index 00000000000000..68a49daad8ff7e
--- /dev/null
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/node_modules/spdx-license-ids/LICENSE
@@ -0,0 +1,24 @@
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+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 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.
+
+For more information, please refer to
diff --git a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/node_modules/spdx-license-ids/README.md b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/node_modules/spdx-license-ids/README.md
new file mode 100755
index 00000000000000..92523532b24609
--- /dev/null
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/node_modules/spdx-license-ids/README.md
@@ -0,0 +1,55 @@
+# spdx-license-ids
+
+A list of [SPDX license](https://spdx.org/licenses/) identifiers
+
+[**Download JSON**](https://raw.githubusercontent.com/shinnn/spdx-license-ids/master/spdx-license-ids.json)
+
+## Use as a JavaScript Library
+
+[](https://www.npmjs.org/package/spdx-license-ids)
+[](https://github.com/shinnn/spdx-license-ids/releases)
+[](https://travis-ci.org/shinnn/spdx-license-ids)
+[](https://coveralls.io/r/shinnn/spdx-license-ids)
+[](https://david-dm.org/shinnn/spdx-license-ids#info=devDependencies)
+
+### Installation
+
+#### Package managers
+
+##### [npm](https://www.npmjs.com/)
+
+```sh
+npm install spdx-license-ids
+```
+
+##### [bower](http://bower.io/)
+
+```sh
+bower install spdx-license-ids
+```
+
+##### [Duo](http://duojs.org/)
+
+```javascript
+const spdxLicenseIds = require('shinnn/spdx-license-ids');
+```
+
+#### Standalone
+
+[Download the script file directly.](https://raw.githubusercontent.com/shinnn/spdx-license-ids/master/spdx-license-ids-browser.js)
+
+### API
+
+#### spdxLicenseIds
+
+Type: `Array` of `String`
+
+It returns an array of SPDX license identifiers.
+
+```javascript
+const spdxLicenseIds = require('spdx-license-ids'); //=> ['Glide', 'Abstyles', 'AFL-1.1', ... ]
+```
+
+## License
+
+[The Unlicense](./LICENSE).
diff --git a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/node_modules/spdx-license-ids/package.json b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/node_modules/spdx-license-ids/package.json
new file mode 100644
index 00000000000000..62c5c37ba96261
--- /dev/null
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/node_modules/spdx-license-ids/package.json
@@ -0,0 +1,77 @@
+{
+ "name": "spdx-license-ids",
+ "version": "1.0.2",
+ "description": "A list of SPDX license identifiers",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/shinnn/spdx-license-ids.git"
+ },
+ "author": {
+ "name": "Shinnosuke Watanabe",
+ "url": "https://github.com/shinnn"
+ },
+ "scripts": {
+ "build": "node --harmony_arrow_functions build.js",
+ "lint": "eslint --config node_modules/@shinnn/eslintrc/rc.json --ignore-path .gitignore .",
+ "pretest": "${npm_package_scripts_build} && ${npm_package_scripts_lint}",
+ "test": "node --harmony_arrow_functions test.js",
+ "coverage": "node --harmony_arrow_functions node_modules/.bin/istanbul cover test.js",
+ "coveralls": "${npm_package_scripts_coverage} && istanbul-coveralls"
+ },
+ "license": "Unlicense",
+ "main": "spdx-license-ids.json",
+ "files": [
+ "spdx-license-ids.json"
+ ],
+ "keywords": [
+ "spdx",
+ "license",
+ "licenses",
+ "id",
+ "identifier",
+ "identifiers",
+ "json",
+ "array",
+ "oss",
+ "browser",
+ "client-side"
+ ],
+ "devDependencies": {
+ "@shinnn/eslintrc": "^1.0.0",
+ "each-async": "^1.1.1",
+ "eslint": "^0.24.0",
+ "got": "^3.3.0",
+ "istanbul": "^0.3.17",
+ "istanbul-coveralls": "^1.0.3",
+ "require-bower-files": "^2.0.0",
+ "rimraf": "^2.4.1",
+ "stringify-object": "^2.2.0",
+ "tape": "^4.0.0"
+ },
+ "gitHead": "df183ecdf1738f77b1e8e41f686ee56206a40693",
+ "bugs": {
+ "url": "https://github.com/shinnn/spdx-license-ids/issues"
+ },
+ "homepage": "https://github.com/shinnn/spdx-license-ids#readme",
+ "_id": "spdx-license-ids@1.0.2",
+ "_shasum": "0674e9c9a230f980016b5b073a10aa165701677c",
+ "_from": "spdx-license-ids@>=1.0.0 <2.0.0",
+ "_npmVersion": "2.12.1",
+ "_nodeVersion": "2.3.3",
+ "_npmUser": {
+ "name": "shinnn",
+ "email": "snnskwtnb@gmail.com"
+ },
+ "maintainers": [
+ {
+ "name": "shinnn",
+ "email": "snnskwtnb@gmail.com"
+ }
+ ],
+ "dist": {
+ "shasum": "0674e9c9a230f980016b5b073a10aa165701677c",
+ "tarball": "http://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.0.2.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.0.2.tgz"
+}
diff --git a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/node_modules/spdx-license-ids/spdx-license-ids.json b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/node_modules/spdx-license-ids/spdx-license-ids.json
new file mode 100644
index 00000000000000..2a4a78f549f06e
--- /dev/null
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/node_modules/spdx-license-ids/spdx-license-ids.json
@@ -0,0 +1,303 @@
+[
+ "Glide",
+ "Abstyles",
+ "AFL-1.1",
+ "AFL-1.2",
+ "AFL-2.0",
+ "AFL-2.1",
+ "AFL-3.0",
+ "AMPAS",
+ "APL-1.0",
+ "Adobe-Glyph",
+ "APAFML",
+ "Adobe-2006",
+ "AGPL-1.0",
+ "Afmparse",
+ "Aladdin",
+ "ADSL",
+ "AMDPLPA",
+ "ANTLR-PD",
+ "Apache-1.0",
+ "Apache-1.1",
+ "Apache-2.0",
+ "AML",
+ "APSL-1.0",
+ "APSL-1.1",
+ "APSL-1.2",
+ "APSL-2.0",
+ "Artistic-1.0",
+ "Artistic-1.0-Perl",
+ "Artistic-1.0-cl8",
+ "Artistic-2.0",
+ "AAL",
+ "Bahyph",
+ "Barr",
+ "Beerware",
+ "BitTorrent-1.0",
+ "BitTorrent-1.1",
+ "BSL-1.0",
+ "Borceux",
+ "BSD-2-Clause",
+ "BSD-2-Clause-FreeBSD",
+ "BSD-2-Clause-NetBSD",
+ "BSD-3-Clause",
+ "BSD-3-Clause-Clear",
+ "BSD-4-Clause",
+ "BSD-Protection",
+ "BSD-3-Clause-Attribution",
+ "BSD-4-Clause-UC",
+ "bzip2-1.0.5",
+ "bzip2-1.0.6",
+ "Caldera",
+ "CECILL-1.0",
+ "CECILL-1.1",
+ "CECILL-2.0",
+ "CECILL-B",
+ "CECILL-C",
+ "ClArtistic",
+ "MIT-CMU",
+ "CNRI-Jython",
+ "CNRI-Python",
+ "CNRI-Python-GPL-Compatible",
+ "CPOL-1.02",
+ "CDDL-1.0",
+ "CDDL-1.1",
+ "CPAL-1.0",
+ "CPL-1.0",
+ "CATOSL-1.1",
+ "Condor-1.1",
+ "CC-BY-1.0",
+ "CC-BY-2.0",
+ "CC-BY-2.5",
+ "CC-BY-3.0",
+ "CC-BY-4.0",
+ "CC-BY-ND-1.0",
+ "CC-BY-ND-2.0",
+ "CC-BY-ND-2.5",
+ "CC-BY-ND-3.0",
+ "CC-BY-ND-4.0",
+ "CC-BY-NC-1.0",
+ "CC-BY-NC-2.0",
+ "CC-BY-NC-2.5",
+ "CC-BY-NC-3.0",
+ "CC-BY-NC-4.0",
+ "CC-BY-NC-ND-1.0",
+ "CC-BY-NC-ND-2.0",
+ "CC-BY-NC-ND-2.5",
+ "CC-BY-NC-ND-3.0",
+ "CC-BY-NC-ND-4.0",
+ "CC-BY-NC-SA-1.0",
+ "CC-BY-NC-SA-2.0",
+ "CC-BY-NC-SA-2.5",
+ "CC-BY-NC-SA-3.0",
+ "CC-BY-NC-SA-4.0",
+ "CC-BY-SA-1.0",
+ "CC-BY-SA-2.0",
+ "CC-BY-SA-2.5",
+ "CC-BY-SA-3.0",
+ "CC-BY-SA-4.0",
+ "CC0-1.0",
+ "Crossword",
+ "CUA-OPL-1.0",
+ "Cube",
+ "D-FSL-1.0",
+ "diffmark",
+ "WTFPL",
+ "DOC",
+ "Dotseqn",
+ "DSDP",
+ "dvipdfm",
+ "EPL-1.0",
+ "ECL-1.0",
+ "ECL-2.0",
+ "eGenix",
+ "EFL-1.0",
+ "EFL-2.0",
+ "MIT-advertising",
+ "MIT-enna",
+ "Entessa",
+ "ErlPL-1.1",
+ "EUDatagrid",
+ "EUPL-1.0",
+ "EUPL-1.1",
+ "Eurosym",
+ "Fair",
+ "MIT-feh",
+ "Frameworx-1.0",
+ "FreeImage",
+ "FTL",
+ "FSFUL",
+ "FSFULLR",
+ "Giftware",
+ "GL2PS",
+ "Glulxe",
+ "AGPL-3.0",
+ "GFDL-1.1",
+ "GFDL-1.2",
+ "GFDL-1.3",
+ "GPL-1.0",
+ "GPL-2.0",
+ "GPL-3.0",
+ "LGPL-2.1",
+ "LGPL-3.0",
+ "LGPL-2.0",
+ "gnuplot",
+ "gSOAP-1.3b",
+ "HaskellReport",
+ "HPND",
+ "IBM-pibs",
+ "IPL-1.0",
+ "ICU",
+ "ImageMagick",
+ "iMatix",
+ "Imlib2",
+ "IJG",
+ "Intel-ACPI",
+ "Intel",
+ "IPA",
+ "ISC",
+ "JasPer-2.0",
+ "JSON",
+ "LPPL-1.3a",
+ "LPPL-1.0",
+ "LPPL-1.1",
+ "LPPL-1.2",
+ "LPPL-1.3c",
+ "Latex2e",
+ "BSD-3-Clause-LBNL",
+ "Leptonica",
+ "LGPLLR",
+ "Libpng",
+ "libtiff",
+ "LPL-1.02",
+ "LPL-1.0",
+ "MakeIndex",
+ "MTLL",
+ "MS-PL",
+ "MS-RL",
+ "MirOS",
+ "MITNFA",
+ "MIT",
+ "Motosoto",
+ "MPL-1.0",
+ "MPL-1.1",
+ "MPL-2.0",
+ "MPL-2.0-no-copyleft-exception",
+ "mpich2",
+ "Multics",
+ "Mup",
+ "NASA-1.3",
+ "Naumen",
+ "NBPL-1.0",
+ "NetCDF",
+ "NGPL",
+ "NOSL",
+ "NPL-1.0",
+ "NPL-1.1",
+ "Newsletr",
+ "NLPL",
+ "Nokia",
+ "NPOSL-3.0",
+ "Noweb",
+ "NRL",
+ "NTP",
+ "Nunit",
+ "OCLC-2.0",
+ "ODbL-1.0",
+ "PDDL-1.0",
+ "OGTSL",
+ "OLDAP-2.2.2",
+ "OLDAP-1.1",
+ "OLDAP-1.2",
+ "OLDAP-1.3",
+ "OLDAP-1.4",
+ "OLDAP-2.0",
+ "OLDAP-2.0.1",
+ "OLDAP-2.1",
+ "OLDAP-2.2",
+ "OLDAP-2.2.1",
+ "OLDAP-2.3",
+ "OLDAP-2.4",
+ "OLDAP-2.5",
+ "OLDAP-2.6",
+ "OLDAP-2.7",
+ "OLDAP-2.8",
+ "OML",
+ "OPL-1.0",
+ "OSL-1.0",
+ "OSL-1.1",
+ "OSL-2.0",
+ "OSL-2.1",
+ "OSL-3.0",
+ "OpenSSL",
+ "PHP-3.0",
+ "PHP-3.01",
+ "Plexus",
+ "PostgreSQL",
+ "psfrag",
+ "psutils",
+ "Python-2.0",
+ "QPL-1.0",
+ "Qhull",
+ "Rdisc",
+ "RPSL-1.0",
+ "RPL-1.1",
+ "RPL-1.5",
+ "RHeCos-1.1",
+ "RSCPL",
+ "RSA-MD",
+ "Ruby",
+ "SAX-PD",
+ "Saxpath",
+ "SCEA",
+ "SWL",
+ "SGI-B-1.0",
+ "SGI-B-1.1",
+ "SGI-B-2.0",
+ "OFL-1.0",
+ "OFL-1.1",
+ "SimPL-2.0",
+ "Sleepycat",
+ "SNIA",
+ "Spencer-86",
+ "Spencer-94",
+ "Spencer-99",
+ "SMLNJ",
+ "SugarCRM-1.1.3",
+ "SISSL",
+ "SISSL-1.2",
+ "SPL-1.0",
+ "Watcom-1.0",
+ "TCL",
+ "Unlicense",
+ "TMate",
+ "TORQUE-1.1",
+ "TOSL",
+ "Unicode-TOU",
+ "UPL-1.0",
+ "NCSA",
+ "Vim",
+ "VOSTROM",
+ "VSL-1.0",
+ "W3C-19980720",
+ "W3C",
+ "Wsuipa",
+ "Xnet",
+ "X11",
+ "Xerox",
+ "XFree86-1.1",
+ "xinetd",
+ "xpp",
+ "XSkat",
+ "YPL-1.0",
+ "YPL-1.1",
+ "Zed",
+ "Zend-2.0",
+ "Zimbra-1.3",
+ "Zimbra-1.4",
+ "Zlib",
+ "zlib-acknowledgement",
+ "ZPL-1.1",
+ "ZPL-2.0",
+ "ZPL-2.1"
+]
diff --git a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/package.json b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/package.json
index d0946e3e25a54a..f1a85e2ea38e0c 100644
--- a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/package.json
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-correct/package.json
@@ -1,25 +1,21 @@
{
"name": "spdx-correct",
"description": "correct invalid SPDX identifiers",
- "version": "1.0.0",
+ "version": "1.0.1",
"author": {
"name": "Kyle E. Mitchell",
"email": "kyle@kemitchell.com",
- "url": "http://kemitchell.com"
- },
- "bugs": {
- "url": "https://github.com/kemitchell/spdx-correct.js/issues"
+ "url": "https://kemitchell.com"
},
"dependencies": {
- "spdx": "^0.4.0"
+ "spdx-license-ids": "^1.0.2"
},
"devDependencies": {
- "jscs": "~1.13.1",
- "jshint": "~2.8.0",
- "jsmd": "~0.3.0",
+ "defence-cli": "^1.0.1",
+ "replace-require-self": "^1.0.0",
+ "spdx-expression-parse": "^1.0.0",
"tape": "~4.0.0"
},
- "homepage": "https://github.com/kemitchell/spdx-correct.js",
"keywords": [
"SPDX",
"law",
@@ -28,37 +24,41 @@
"metadata"
],
"license": "Apache-2.0",
- "main": "spdx-correct.js",
"repository": {
"type": "git",
"url": "git+https://github.com/kemitchell/spdx-correct.js.git"
},
"scripts": {
- "lint": "jshint spdx-correct.js test && jscs spdx-correct.js test",
- "precommit": "npm run lint && npm run test",
- "test": "jsmd README.md && tape test/*.test.js"
+ "test": "defence README.md | replace-require-self | node && tape *.test.js"
+ },
+ "gitHead": "f3581dea1529d975851ceab7f86e646d8220608a",
+ "bugs": {
+ "url": "https://github.com/kemitchell/spdx-correct.js/issues"
},
- "gitHead": "eab00824e5a1281fd7c522f33f0498c7d1cedd13",
- "_id": "spdx-correct@1.0.0",
- "_shasum": "c2a8654a5a56d8b2d44ee82dfdfc24aaec6b702c",
+ "homepage": "https://github.com/kemitchell/spdx-correct.js#readme",
+ "_id": "spdx-correct@1.0.1",
+ "_shasum": "ac075f5f2f6a06c0bfdd1c847eb3dde3dd8221ea",
"_from": "spdx-correct@>=1.0.0 <1.1.0",
- "_npmVersion": "2.11.0",
- "_nodeVersion": "2.2.1",
+ "_npmVersion": "2.13.5",
+ "_nodeVersion": "0.12.7",
"_npmUser": {
"name": "kemitchell",
"email": "kyle@kemitchell.com"
},
+ "dist": {
+ "shasum": "ac075f5f2f6a06c0bfdd1c847eb3dde3dd8221ea",
+ "tarball": "http://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.1.tgz"
+ },
"maintainers": [
{
"name": "kemitchell",
"email": "kyle@kemitchell.com"
+ },
+ {
+ "name": "othiym23",
+ "email": "ogd@aoaioxxysz.net"
}
],
- "dist": {
- "shasum": "c2a8654a5a56d8b2d44ee82dfdfc24aaec6b702c",
- "tarball": "http://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.0.tgz"
- },
"directories": {},
- "_resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.0.tgz",
- "readme": "ERROR: No README data found!"
+ "_resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.1.tgz"
}
diff --git a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/LICENSE b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/LICENSE
new file mode 100644
index 00000000000000..442142822dd18a
--- /dev/null
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/LICENSE
@@ -0,0 +1,24 @@
+SPDX:MIT
+
+MIT License
+
+Copyright (c) 2015 Kyle E. Mitchell
+
+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/validate-npm-package-license/node_modules/spdx-expression-parse/README.md b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/README.md
new file mode 100644
index 00000000000000..897aa43f33eda4
--- /dev/null
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/README.md
@@ -0,0 +1,34 @@
+```javascript
+var parse = require('./')
+var assert = require('assert')
+
+var firstAST = {
+ left: { license: 'LGPL-2.1' },
+ conjunction: 'or',
+ right: {
+ left: { license: 'BSD-3-Clause' },
+ conjunction: 'and',
+ right: { license: 'MIT' } } }
+
+assert.deepEqual(
+ parse('(LGPL-2.1 OR BSD-3-Clause AND MIT)'),
+ firstAST)
+
+var secondAST = {
+ left: { license: 'MIT' },
+ conjunction: 'and',
+ right: {
+ left: {
+ license: 'LGPL-2.1',
+ plus: true },
+ conjunction: 'and',
+ right: { license: 'BSD-3-Clause' } } }
+
+assert.deepEqual(
+ parse('(MIT AND (LGPL-2.1+ AND BSD-3-Clause))'),
+ secondAST)
+```
+
+---
+
+[The Software Package Data Exchange (SPDX) specification](http://spdx.org) is the work of the [Linux Foundation](http://www.linuxfoundation.org) and its contributors, and is licensed under the terms of [the Creative Commons Attribution License 3.0 Unported (SPDX: "CC-BY-3.0")](http://spdx.org/licenses/CC-BY-3.0). "SPDX" is a United States federally registered trademark of the Linux Foundation.
diff --git a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/index.js b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/index.js
new file mode 100644
index 00000000000000..3f38e3a7491c39
--- /dev/null
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/index.js
@@ -0,0 +1,4 @@
+var parser = require('./parser.generated.js').parser
+
+module.exports = function(argument) {
+ return parser.parse(argument) }
diff --git a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-exceptions/.npmignore b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-exceptions/.npmignore
new file mode 100644
index 00000000000000..5825067776c896
--- /dev/null
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-exceptions/.npmignore
@@ -0,0 +1,2 @@
+.npmiginore
+.travis.yml
diff --git a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-exceptions/LICENSE.md b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-exceptions/LICENSE.md
new file mode 100644
index 00000000000000..6c255589566ffe
--- /dev/null
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-exceptions/LICENSE.md
@@ -0,0 +1,9 @@
+The MIT License
+
+Copyright (c) 2015 Kyle E. Mitchell
+
+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/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-exceptions/README.md b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-exceptions/README.md
new file mode 100644
index 00000000000000..ef377325ee1e74
--- /dev/null
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-exceptions/README.md
@@ -0,0 +1,13 @@
+```javascript
+var assert = require('assert')
+var spdxExceptions = require('spdx-exceptions')
+
+assert(Array.isArray(spdxExceptions))
+
+assert(spdxExceptions.length > 0)
+
+function isString(x) {
+ return typeof x === 'string' }
+
+assert(spdxExceptions.every(isString))
+```
diff --git a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-exceptions/index.json b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-exceptions/index.json
new file mode 100644
index 00000000000000..dd9277891ec266
--- /dev/null
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-exceptions/index.json
@@ -0,0 +1,24 @@
+[
+ "389-exception",
+ "Autoconf-exception-2.0 ",
+ "Autoconf-exception-3.0 ",
+ "Bison-exception-2.2",
+ "CLISP-exception-2.0",
+ "Classpath-exception-2.0",
+ "FLTK-exception ",
+ "FLTK-exception-2.0 ",
+ "Font-exception-2.0 ",
+ "GCC-exception-2.0",
+ "GCC-exception-3.1",
+ "LZMA-exception ",
+ "Libtool-exception",
+ "Nokia-Qt-exception-1.1 ",
+ "Qwt-exception-1.0",
+ "WxWindows-exception-3.1",
+ "eCos-exception-2.0 ",
+ "freertos-exception-2.0 ",
+ "gnu-javamail-exception ",
+ "i2p-gpl-java-exception ",
+ "mif-exception",
+ "u-boot-exception-2.0 "
+]
diff --git a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-exceptions/package.json b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-exceptions/package.json
new file mode 100644
index 00000000000000..08249989340112
--- /dev/null
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-exceptions/package.json
@@ -0,0 +1,52 @@
+{
+ "name": "spdx-exceptions",
+ "description": "list of SPDX standard license exceptions",
+ "version": "1.0.2",
+ "author": {
+ "name": "The Linux Foundation"
+ },
+ "contributors": [
+ {
+ "name": "Kyle E. Mitchell",
+ "email": "kyle@kemitchell.com",
+ "url": "https://kemitchell.com/"
+ }
+ ],
+ "devDependencies": {
+ "defence-cli": "^1.0.1"
+ },
+ "license": "CC-BY-3.0",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/kemitchell/spdx-exceptions.js.git"
+ },
+ "scripts": {
+ "test": "defence -i javascript README.md | sed 's!spdx-exceptions!./!' | node"
+ },
+ "gitHead": "a1e7b0595efee0e4436e9807dd36280791e44c82",
+ "bugs": {
+ "url": "https://github.com/kemitchell/spdx-exceptions.js/issues"
+ },
+ "homepage": "https://github.com/kemitchell/spdx-exceptions.js#readme",
+ "_id": "spdx-exceptions@1.0.2",
+ "_shasum": "c584a2875a1db1c8743266990af6e0c82e143a5b",
+ "_from": "spdx-exceptions@>=1.0.0 <2.0.0",
+ "_npmVersion": "2.13.3",
+ "_nodeVersion": "0.12.7",
+ "_npmUser": {
+ "name": "kemitchell",
+ "email": "kyle@kemitchell.com"
+ },
+ "dist": {
+ "shasum": "c584a2875a1db1c8743266990af6e0c82e143a5b",
+ "tarball": "http://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-1.0.2.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "kemitchell",
+ "email": "kyle@kemitchell.com"
+ }
+ ],
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-1.0.2.tgz"
+}
diff --git a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-license-ids/LICENSE b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-license-ids/LICENSE
new file mode 100644
index 00000000000000..68a49daad8ff7e
--- /dev/null
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-license-ids/LICENSE
@@ -0,0 +1,24 @@
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+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 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.
+
+For more information, please refer to
diff --git a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-license-ids/README.md b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-license-ids/README.md
new file mode 100755
index 00000000000000..92523532b24609
--- /dev/null
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-license-ids/README.md
@@ -0,0 +1,55 @@
+# spdx-license-ids
+
+A list of [SPDX license](https://spdx.org/licenses/) identifiers
+
+[**Download JSON**](https://raw.githubusercontent.com/shinnn/spdx-license-ids/master/spdx-license-ids.json)
+
+## Use as a JavaScript Library
+
+[](https://www.npmjs.org/package/spdx-license-ids)
+[](https://github.com/shinnn/spdx-license-ids/releases)
+[](https://travis-ci.org/shinnn/spdx-license-ids)
+[](https://coveralls.io/r/shinnn/spdx-license-ids)
+[](https://david-dm.org/shinnn/spdx-license-ids#info=devDependencies)
+
+### Installation
+
+#### Package managers
+
+##### [npm](https://www.npmjs.com/)
+
+```sh
+npm install spdx-license-ids
+```
+
+##### [bower](http://bower.io/)
+
+```sh
+bower install spdx-license-ids
+```
+
+##### [Duo](http://duojs.org/)
+
+```javascript
+const spdxLicenseIds = require('shinnn/spdx-license-ids');
+```
+
+#### Standalone
+
+[Download the script file directly.](https://raw.githubusercontent.com/shinnn/spdx-license-ids/master/spdx-license-ids-browser.js)
+
+### API
+
+#### spdxLicenseIds
+
+Type: `Array` of `String`
+
+It returns an array of SPDX license identifiers.
+
+```javascript
+const spdxLicenseIds = require('spdx-license-ids'); //=> ['Glide', 'Abstyles', 'AFL-1.1', ... ]
+```
+
+## License
+
+[The Unlicense](./LICENSE).
diff --git a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-license-ids/package.json b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-license-ids/package.json
new file mode 100644
index 00000000000000..62c5c37ba96261
--- /dev/null
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-license-ids/package.json
@@ -0,0 +1,77 @@
+{
+ "name": "spdx-license-ids",
+ "version": "1.0.2",
+ "description": "A list of SPDX license identifiers",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/shinnn/spdx-license-ids.git"
+ },
+ "author": {
+ "name": "Shinnosuke Watanabe",
+ "url": "https://github.com/shinnn"
+ },
+ "scripts": {
+ "build": "node --harmony_arrow_functions build.js",
+ "lint": "eslint --config node_modules/@shinnn/eslintrc/rc.json --ignore-path .gitignore .",
+ "pretest": "${npm_package_scripts_build} && ${npm_package_scripts_lint}",
+ "test": "node --harmony_arrow_functions test.js",
+ "coverage": "node --harmony_arrow_functions node_modules/.bin/istanbul cover test.js",
+ "coveralls": "${npm_package_scripts_coverage} && istanbul-coveralls"
+ },
+ "license": "Unlicense",
+ "main": "spdx-license-ids.json",
+ "files": [
+ "spdx-license-ids.json"
+ ],
+ "keywords": [
+ "spdx",
+ "license",
+ "licenses",
+ "id",
+ "identifier",
+ "identifiers",
+ "json",
+ "array",
+ "oss",
+ "browser",
+ "client-side"
+ ],
+ "devDependencies": {
+ "@shinnn/eslintrc": "^1.0.0",
+ "each-async": "^1.1.1",
+ "eslint": "^0.24.0",
+ "got": "^3.3.0",
+ "istanbul": "^0.3.17",
+ "istanbul-coveralls": "^1.0.3",
+ "require-bower-files": "^2.0.0",
+ "rimraf": "^2.4.1",
+ "stringify-object": "^2.2.0",
+ "tape": "^4.0.0"
+ },
+ "gitHead": "df183ecdf1738f77b1e8e41f686ee56206a40693",
+ "bugs": {
+ "url": "https://github.com/shinnn/spdx-license-ids/issues"
+ },
+ "homepage": "https://github.com/shinnn/spdx-license-ids#readme",
+ "_id": "spdx-license-ids@1.0.2",
+ "_shasum": "0674e9c9a230f980016b5b073a10aa165701677c",
+ "_from": "spdx-license-ids@>=1.0.0 <2.0.0",
+ "_npmVersion": "2.12.1",
+ "_nodeVersion": "2.3.3",
+ "_npmUser": {
+ "name": "shinnn",
+ "email": "snnskwtnb@gmail.com"
+ },
+ "maintainers": [
+ {
+ "name": "shinnn",
+ "email": "snnskwtnb@gmail.com"
+ }
+ ],
+ "dist": {
+ "shasum": "0674e9c9a230f980016b5b073a10aa165701677c",
+ "tarball": "http://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.0.2.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.0.2.tgz"
+}
diff --git a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-license-ids/spdx-license-ids.json b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-license-ids/spdx-license-ids.json
new file mode 100644
index 00000000000000..2a4a78f549f06e
--- /dev/null
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/node_modules/spdx-license-ids/spdx-license-ids.json
@@ -0,0 +1,303 @@
+[
+ "Glide",
+ "Abstyles",
+ "AFL-1.1",
+ "AFL-1.2",
+ "AFL-2.0",
+ "AFL-2.1",
+ "AFL-3.0",
+ "AMPAS",
+ "APL-1.0",
+ "Adobe-Glyph",
+ "APAFML",
+ "Adobe-2006",
+ "AGPL-1.0",
+ "Afmparse",
+ "Aladdin",
+ "ADSL",
+ "AMDPLPA",
+ "ANTLR-PD",
+ "Apache-1.0",
+ "Apache-1.1",
+ "Apache-2.0",
+ "AML",
+ "APSL-1.0",
+ "APSL-1.1",
+ "APSL-1.2",
+ "APSL-2.0",
+ "Artistic-1.0",
+ "Artistic-1.0-Perl",
+ "Artistic-1.0-cl8",
+ "Artistic-2.0",
+ "AAL",
+ "Bahyph",
+ "Barr",
+ "Beerware",
+ "BitTorrent-1.0",
+ "BitTorrent-1.1",
+ "BSL-1.0",
+ "Borceux",
+ "BSD-2-Clause",
+ "BSD-2-Clause-FreeBSD",
+ "BSD-2-Clause-NetBSD",
+ "BSD-3-Clause",
+ "BSD-3-Clause-Clear",
+ "BSD-4-Clause",
+ "BSD-Protection",
+ "BSD-3-Clause-Attribution",
+ "BSD-4-Clause-UC",
+ "bzip2-1.0.5",
+ "bzip2-1.0.6",
+ "Caldera",
+ "CECILL-1.0",
+ "CECILL-1.1",
+ "CECILL-2.0",
+ "CECILL-B",
+ "CECILL-C",
+ "ClArtistic",
+ "MIT-CMU",
+ "CNRI-Jython",
+ "CNRI-Python",
+ "CNRI-Python-GPL-Compatible",
+ "CPOL-1.02",
+ "CDDL-1.0",
+ "CDDL-1.1",
+ "CPAL-1.0",
+ "CPL-1.0",
+ "CATOSL-1.1",
+ "Condor-1.1",
+ "CC-BY-1.0",
+ "CC-BY-2.0",
+ "CC-BY-2.5",
+ "CC-BY-3.0",
+ "CC-BY-4.0",
+ "CC-BY-ND-1.0",
+ "CC-BY-ND-2.0",
+ "CC-BY-ND-2.5",
+ "CC-BY-ND-3.0",
+ "CC-BY-ND-4.0",
+ "CC-BY-NC-1.0",
+ "CC-BY-NC-2.0",
+ "CC-BY-NC-2.5",
+ "CC-BY-NC-3.0",
+ "CC-BY-NC-4.0",
+ "CC-BY-NC-ND-1.0",
+ "CC-BY-NC-ND-2.0",
+ "CC-BY-NC-ND-2.5",
+ "CC-BY-NC-ND-3.0",
+ "CC-BY-NC-ND-4.0",
+ "CC-BY-NC-SA-1.0",
+ "CC-BY-NC-SA-2.0",
+ "CC-BY-NC-SA-2.5",
+ "CC-BY-NC-SA-3.0",
+ "CC-BY-NC-SA-4.0",
+ "CC-BY-SA-1.0",
+ "CC-BY-SA-2.0",
+ "CC-BY-SA-2.5",
+ "CC-BY-SA-3.0",
+ "CC-BY-SA-4.0",
+ "CC0-1.0",
+ "Crossword",
+ "CUA-OPL-1.0",
+ "Cube",
+ "D-FSL-1.0",
+ "diffmark",
+ "WTFPL",
+ "DOC",
+ "Dotseqn",
+ "DSDP",
+ "dvipdfm",
+ "EPL-1.0",
+ "ECL-1.0",
+ "ECL-2.0",
+ "eGenix",
+ "EFL-1.0",
+ "EFL-2.0",
+ "MIT-advertising",
+ "MIT-enna",
+ "Entessa",
+ "ErlPL-1.1",
+ "EUDatagrid",
+ "EUPL-1.0",
+ "EUPL-1.1",
+ "Eurosym",
+ "Fair",
+ "MIT-feh",
+ "Frameworx-1.0",
+ "FreeImage",
+ "FTL",
+ "FSFUL",
+ "FSFULLR",
+ "Giftware",
+ "GL2PS",
+ "Glulxe",
+ "AGPL-3.0",
+ "GFDL-1.1",
+ "GFDL-1.2",
+ "GFDL-1.3",
+ "GPL-1.0",
+ "GPL-2.0",
+ "GPL-3.0",
+ "LGPL-2.1",
+ "LGPL-3.0",
+ "LGPL-2.0",
+ "gnuplot",
+ "gSOAP-1.3b",
+ "HaskellReport",
+ "HPND",
+ "IBM-pibs",
+ "IPL-1.0",
+ "ICU",
+ "ImageMagick",
+ "iMatix",
+ "Imlib2",
+ "IJG",
+ "Intel-ACPI",
+ "Intel",
+ "IPA",
+ "ISC",
+ "JasPer-2.0",
+ "JSON",
+ "LPPL-1.3a",
+ "LPPL-1.0",
+ "LPPL-1.1",
+ "LPPL-1.2",
+ "LPPL-1.3c",
+ "Latex2e",
+ "BSD-3-Clause-LBNL",
+ "Leptonica",
+ "LGPLLR",
+ "Libpng",
+ "libtiff",
+ "LPL-1.02",
+ "LPL-1.0",
+ "MakeIndex",
+ "MTLL",
+ "MS-PL",
+ "MS-RL",
+ "MirOS",
+ "MITNFA",
+ "MIT",
+ "Motosoto",
+ "MPL-1.0",
+ "MPL-1.1",
+ "MPL-2.0",
+ "MPL-2.0-no-copyleft-exception",
+ "mpich2",
+ "Multics",
+ "Mup",
+ "NASA-1.3",
+ "Naumen",
+ "NBPL-1.0",
+ "NetCDF",
+ "NGPL",
+ "NOSL",
+ "NPL-1.0",
+ "NPL-1.1",
+ "Newsletr",
+ "NLPL",
+ "Nokia",
+ "NPOSL-3.0",
+ "Noweb",
+ "NRL",
+ "NTP",
+ "Nunit",
+ "OCLC-2.0",
+ "ODbL-1.0",
+ "PDDL-1.0",
+ "OGTSL",
+ "OLDAP-2.2.2",
+ "OLDAP-1.1",
+ "OLDAP-1.2",
+ "OLDAP-1.3",
+ "OLDAP-1.4",
+ "OLDAP-2.0",
+ "OLDAP-2.0.1",
+ "OLDAP-2.1",
+ "OLDAP-2.2",
+ "OLDAP-2.2.1",
+ "OLDAP-2.3",
+ "OLDAP-2.4",
+ "OLDAP-2.5",
+ "OLDAP-2.6",
+ "OLDAP-2.7",
+ "OLDAP-2.8",
+ "OML",
+ "OPL-1.0",
+ "OSL-1.0",
+ "OSL-1.1",
+ "OSL-2.0",
+ "OSL-2.1",
+ "OSL-3.0",
+ "OpenSSL",
+ "PHP-3.0",
+ "PHP-3.01",
+ "Plexus",
+ "PostgreSQL",
+ "psfrag",
+ "psutils",
+ "Python-2.0",
+ "QPL-1.0",
+ "Qhull",
+ "Rdisc",
+ "RPSL-1.0",
+ "RPL-1.1",
+ "RPL-1.5",
+ "RHeCos-1.1",
+ "RSCPL",
+ "RSA-MD",
+ "Ruby",
+ "SAX-PD",
+ "Saxpath",
+ "SCEA",
+ "SWL",
+ "SGI-B-1.0",
+ "SGI-B-1.1",
+ "SGI-B-2.0",
+ "OFL-1.0",
+ "OFL-1.1",
+ "SimPL-2.0",
+ "Sleepycat",
+ "SNIA",
+ "Spencer-86",
+ "Spencer-94",
+ "Spencer-99",
+ "SMLNJ",
+ "SugarCRM-1.1.3",
+ "SISSL",
+ "SISSL-1.2",
+ "SPL-1.0",
+ "Watcom-1.0",
+ "TCL",
+ "Unlicense",
+ "TMate",
+ "TORQUE-1.1",
+ "TOSL",
+ "Unicode-TOU",
+ "UPL-1.0",
+ "NCSA",
+ "Vim",
+ "VOSTROM",
+ "VSL-1.0",
+ "W3C-19980720",
+ "W3C",
+ "Wsuipa",
+ "Xnet",
+ "X11",
+ "Xerox",
+ "XFree86-1.1",
+ "xinetd",
+ "xpp",
+ "XSkat",
+ "YPL-1.0",
+ "YPL-1.1",
+ "Zed",
+ "Zend-2.0",
+ "Zimbra-1.3",
+ "Zimbra-1.4",
+ "Zlib",
+ "zlib-acknowledgement",
+ "ZPL-1.1",
+ "ZPL-2.0",
+ "ZPL-2.1"
+]
diff --git a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/package.json b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/package.json
new file mode 100644
index 00000000000000..e38d0b5a9671c1
--- /dev/null
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/package.json
@@ -0,0 +1,65 @@
+{
+ "name": "spdx-expression-parse",
+ "description": "parse SPDX license expressions",
+ "version": "1.0.0",
+ "author": {
+ "name": "Kyle E. Mitchell",
+ "email": "kyle@kemitchell.com",
+ "url": "http://kemitchell.com"
+ },
+ "dependencies": {
+ "spdx-exceptions": "^1.0.0",
+ "spdx-license-ids": "^1.0.0"
+ },
+ "devDependencies": {
+ "defence-cli": "^1.0.1",
+ "jison": "^0.4.15"
+ },
+ "keywords": [
+ "SPDX",
+ "law",
+ "legal",
+ "license",
+ "metadata",
+ "package",
+ "package.json",
+ "standards"
+ ],
+ "license": "(MIT AND CC-BY-3.0)",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/kemitchell/spdx-expression-parse.js.git"
+ },
+ "scripts": {
+ "generate": "node generate-parser.js > parser.generated.js",
+ "prepublish": "npm run generate",
+ "pretest": "npm run generate",
+ "test": "defence -i javascript README.md | node"
+ },
+ "gitHead": "213bc03808f709a4ceaadb8466740a8c96c1e896",
+ "bugs": {
+ "url": "https://github.com/kemitchell/spdx-expression-parse.js/issues"
+ },
+ "homepage": "https://github.com/kemitchell/spdx-expression-parse.js#readme",
+ "_id": "spdx-expression-parse@1.0.0",
+ "_shasum": "4fbb7e738c9e98fa0b0914dfd961ac6629fbcdef",
+ "_from": "spdx-expression-parse@>=1.0.0 <1.1.0",
+ "_npmVersion": "2.13.3",
+ "_nodeVersion": "0.12.7",
+ "_npmUser": {
+ "name": "kemitchell",
+ "email": "kyle@kemitchell.com"
+ },
+ "dist": {
+ "shasum": "4fbb7e738c9e98fa0b0914dfd961ac6629fbcdef",
+ "tarball": "http://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.0.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "kemitchell",
+ "email": "kyle@kemitchell.com"
+ }
+ ],
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.0.tgz"
+}
diff --git a/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/parser.generated.js b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/parser.generated.js
new file mode 100644
index 00000000000000..59747a3cf8735c
--- /dev/null
+++ b/deps/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/parser.generated.js
@@ -0,0 +1,1289 @@
+/* parser generated by jison 0.4.15 */
+/*
+ Returns a Parser object of the following structure:
+
+ Parser: {
+ yy: {}
+ }
+
+ Parser.prototype: {
+ yy: {},
+ trace: function(),
+ symbols_: {associative list: name ==> number},
+ terminals_: {associative list: number ==> name},
+ productions_: [...],
+ performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
+ table: [...],
+ defaultActions: {...},
+ parseError: function(str, hash),
+ parse: function(input),
+
+ lexer: {
+ EOF: 1,
+ parseError: function(str, hash),
+ setInput: function(input),
+ input: function(),
+ unput: function(str),
+ more: function(),
+ less: function(n),
+ pastInput: function(),
+ upcomingInput: function(),
+ showPosition: function(),
+ test_match: function(regex_match_array, rule_index),
+ next: function(),
+ lex: function(),
+ begin: function(condition),
+ popState: function(),
+ _currentRules: function(),
+ topState: function(),
+ pushState: function(condition),
+
+ options: {
+ ranges: boolean (optional: true ==> token location info will include a .range[] member)
+ flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
+ backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
+ },
+
+ performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
+ rules: [...],
+ conditions: {associative list: name ==> set},
+ }
+ }
+
+
+ token location info (@$, _$, etc.): {
+ first_line: n,
+ last_line: n,
+ first_column: n,
+ last_column: n,
+ range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)
+ }
+
+
+ the parseError function receives a 'hash' object with these members for lexer and parser errors: {
+ text: (matched text)
+ token: (the produced terminal token, if any)
+ line: (yylineno)
+ }
+ while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
+ loc: (yylloc)
+ expected: (string describing the set of expected tokens)
+ recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
+ }
+*/
+var spdxparse = (function(){
+var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,5],$V1=[1,6],$V2=[1,7],$V3=[1,4],$V4=[1,9],$V5=[1,10],$V6=[5,14,15,17],$V7=[5,12,14,15,17];
+var parser = {trace: function trace() { },
+yy: {},
+symbols_: {"error":2,"start":3,"expression":4,"EOS":5,"simpleExpression":6,"LICENSE":7,"PLUS":8,"LICENSEREF":9,"DOCUMENTREF":10,"COLON":11,"WITH":12,"EXCEPTION":13,"AND":14,"OR":15,"OPEN":16,"CLOSE":17,"$accept":0,"$end":1},
+terminals_: {2:"error",5:"EOS",7:"LICENSE",8:"PLUS",9:"LICENSEREF",10:"DOCUMENTREF",11:"COLON",12:"WITH",13:"EXCEPTION",14:"AND",15:"OR",16:"OPEN",17:"CLOSE"},
+productions_: [0,[3,2],[6,1],[6,2],[6,1],[6,3],[4,1],[4,3],[4,3],[4,3],[4,3]],
+performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
+/* this == yyval */
+
+var $0 = $$.length - 1;
+switch (yystate) {
+case 1:
+return this.$ = $$[$0-1];
+break;
+case 2: case 4: case 5:
+this.$ = { license: yytext };
+break;
+case 3:
+this.$ = { license: $$[$0-1], plus: true };
+break;
+case 6:
+this.$ = $$[$0];
+break;
+case 7:
+this.$ = { exception: $$[$0] };
+this.$.license = $$[$0-2].license;
+if ($$[$0-2].hasOwnProperty('plus')) {
+ this.$.plus = $$[$0-2].plus;
+}
+break;
+case 8:
+this.$ = { conjunction: 'and', left: $$[$0-2], right: $$[$0] };
+break;
+case 9:
+this.$ = { conjunction: 'or', left: $$[$0-2], right: $$[$0] };
+break;
+case 10:
+this.$ = $$[$0-1]
+break;
+}
+},
+table: [{3:1,4:2,6:3,7:$V0,9:$V1,10:$V2,16:$V3},{1:[3]},{5:[1,8],14:$V4,15:$V5},o($V6,[2,6],{12:[1,11]}),{4:12,6:3,7:$V0,9:$V1,10:$V2,16:$V3},o($V7,[2,2],{8:[1,13]}),o($V7,[2,4]),{11:[1,14]},{1:[2,1]},{4:15,6:3,7:$V0,9:$V1,10:$V2,16:$V3},{4:16,6:3,7:$V0,9:$V1,10:$V2,16:$V3},{13:[1,17]},{14:$V4,15:$V5,17:[1,18]},o($V7,[2,3]),{9:[1,19]},o($V6,[2,8]),o([5,15,17],[2,9],{14:$V4}),o($V6,[2,7]),o($V6,[2,10]),o($V7,[2,5])],
+defaultActions: {8:[2,1]},
+parseError: function parseError(str, hash) {
+ if (hash.recoverable) {
+ this.trace(str);
+ } else {
+ throw new Error(str);
+ }
+},
+parse: function parse(input) {
+ var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
+ var args = lstack.slice.call(arguments, 1);
+ var lexer = Object.create(this.lexer);
+ var sharedState = { yy: {} };
+ for (var k in this.yy) {
+ if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
+ sharedState.yy[k] = this.yy[k];
+ }
+ }
+ lexer.setInput(input, sharedState.yy);
+ sharedState.yy.lexer = lexer;
+ sharedState.yy.parser = this;
+ if (typeof lexer.yylloc == 'undefined') {
+ lexer.yylloc = {};
+ }
+ var yyloc = lexer.yylloc;
+ lstack.push(yyloc);
+ var ranges = lexer.options && lexer.options.ranges;
+ if (typeof sharedState.yy.parseError === 'function') {
+ this.parseError = sharedState.yy.parseError;
+ } else {
+ this.parseError = Object.getPrototypeOf(this).parseError;
+ }
+ function popStack(n) {
+ stack.length = stack.length - 2 * n;
+ vstack.length = vstack.length - n;
+ lstack.length = lstack.length - n;
+ }
+ _token_stack:
+ function lex() {
+ var token;
+ token = lexer.lex() || EOF;
+ if (typeof token !== 'number') {
+ token = self.symbols_[token] || token;
+ }
+ return token;
+ }
+ var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
+ while (true) {
+ state = stack[stack.length - 1];
+ if (this.defaultActions[state]) {
+ action = this.defaultActions[state];
+ } else {
+ if (symbol === null || typeof symbol == 'undefined') {
+ symbol = lex();
+ }
+ action = table[state] && table[state][symbol];
+ }
+ if (typeof action === 'undefined' || !action.length || !action[0]) {
+ var errStr = '';
+ expected = [];
+ for (p in table[state]) {
+ if (this.terminals_[p] && p > TERROR) {
+ expected.push('\'' + this.terminals_[p] + '\'');
+ }
+ }
+ if (lexer.showPosition) {
+ errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
+ } else {
+ errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
+ }
+ this.parseError(errStr, {
+ text: lexer.match,
+ token: this.terminals_[symbol] || symbol,
+ line: lexer.yylineno,
+ loc: yyloc,
+ expected: expected
+ });
+ }
+ if (action[0] instanceof Array && action.length > 1) {
+ throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
+ }
+ switch (action[0]) {
+ case 1:
+ stack.push(symbol);
+ vstack.push(lexer.yytext);
+ lstack.push(lexer.yylloc);
+ stack.push(action[1]);
+ symbol = null;
+ if (!preErrorSymbol) {
+ yyleng = lexer.yyleng;
+ yytext = lexer.yytext;
+ yylineno = lexer.yylineno;
+ yyloc = lexer.yylloc;
+ if (recovering > 0) {
+ recovering--;
+ }
+ } else {
+ symbol = preErrorSymbol;
+ preErrorSymbol = null;
+ }
+ break;
+ case 2:
+ len = this.productions_[action[1]][1];
+ yyval.$ = vstack[vstack.length - len];
+ yyval._$ = {
+ first_line: lstack[lstack.length - (len || 1)].first_line,
+ last_line: lstack[lstack.length - 1].last_line,
+ first_column: lstack[lstack.length - (len || 1)].first_column,
+ last_column: lstack[lstack.length - 1].last_column
+ };
+ if (ranges) {
+ yyval._$.range = [
+ lstack[lstack.length - (len || 1)].range[0],
+ lstack[lstack.length - 1].range[1]
+ ];
+ }
+ r = this.performAction.apply(yyval, [
+ yytext,
+ yyleng,
+ yylineno,
+ sharedState.yy,
+ action[1],
+ vstack,
+ lstack
+ ].concat(args));
+ if (typeof r !== 'undefined') {
+ return r;
+ }
+ if (len) {
+ stack = stack.slice(0, -1 * len * 2);
+ vstack = vstack.slice(0, -1 * len);
+ lstack = lstack.slice(0, -1 * len);
+ }
+ stack.push(this.productions_[action[1]][0]);
+ vstack.push(yyval.$);
+ lstack.push(yyval._$);
+ newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
+ stack.push(newState);
+ break;
+ case 3:
+ return true;
+ }
+ }
+ return true;
+}};
+/* generated by jison-lex 0.3.4 */
+var lexer = (function(){
+var lexer = ({
+
+EOF:1,
+
+parseError:function parseError(str, hash) {
+ if (this.yy.parser) {
+ this.yy.parser.parseError(str, hash);
+ } else {
+ throw new Error(str);
+ }
+ },
+
+// resets the lexer, sets new input
+setInput:function (input, yy) {
+ this.yy = yy || this.yy || {};
+ this._input = input;
+ this._more = this._backtrack = this.done = false;
+ this.yylineno = this.yyleng = 0;
+ this.yytext = this.matched = this.match = '';
+ this.conditionStack = ['INITIAL'];
+ this.yylloc = {
+ first_line: 1,
+ first_column: 0,
+ last_line: 1,
+ last_column: 0
+ };
+ if (this.options.ranges) {
+ this.yylloc.range = [0,0];
+ }
+ this.offset = 0;
+ return this;
+ },
+
+// consumes and returns one char from the input
+input:function () {
+ var ch = this._input[0];
+ this.yytext += ch;
+ this.yyleng++;
+ this.offset++;
+ this.match += ch;
+ this.matched += ch;
+ var lines = ch.match(/(?:\r\n?|\n).*/g);
+ if (lines) {
+ this.yylineno++;
+ this.yylloc.last_line++;
+ } else {
+ this.yylloc.last_column++;
+ }
+ if (this.options.ranges) {
+ this.yylloc.range[1]++;
+ }
+
+ this._input = this._input.slice(1);
+ return ch;
+ },
+
+// unshifts one char (or a string) into the input
+unput:function (ch) {
+ var len = ch.length;
+ var lines = ch.split(/(?:\r\n?|\n)/g);
+
+ this._input = ch + this._input;
+ this.yytext = this.yytext.substr(0, this.yytext.length - len);
+ //this.yyleng -= len;
+ this.offset -= len;
+ var oldLines = this.match.split(/(?:\r\n?|\n)/g);
+ this.match = this.match.substr(0, this.match.length - 1);
+ this.matched = this.matched.substr(0, this.matched.length - 1);
+
+ if (lines.length - 1) {
+ this.yylineno -= lines.length - 1;
+ }
+ var r = this.yylloc.range;
+
+ this.yylloc = {
+ first_line: this.yylloc.first_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.first_column,
+ last_column: lines ?
+ (lines.length === oldLines.length ? this.yylloc.first_column : 0)
+ + oldLines[oldLines.length - lines.length].length - lines[0].length :
+ this.yylloc.first_column - len
+ };
+
+ if (this.options.ranges) {
+ this.yylloc.range = [r[0], r[0] + this.yyleng - len];
+ }
+ this.yyleng = this.yytext.length;
+ return this;
+ },
+
+// When called from action, caches matched text and appends it on next action
+more:function () {
+ this._more = true;
+ return this;
+ },
+
+// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
+reject:function () {
+ if (this.options.backtrack_lexer) {
+ this._backtrack = true;
+ } else {
+ return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno
+ });
+
+ }
+ return this;
+ },
+
+// retain first n characters of the match
+less:function (n) {
+ this.unput(this.match.slice(n));
+ },
+
+// displays already matched input, i.e. for error messages
+pastInput:function () {
+ var past = this.matched.substr(0, this.matched.length - this.match.length);
+ return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
+ },
+
+// displays upcoming input, i.e. for error messages
+upcomingInput:function () {
+ var next = this.match;
+ if (next.length < 20) {
+ next += this._input.substr(0, 20-next.length);
+ }
+ return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
+ },
+
+// displays the character position where the lexing error occurred, i.e. for error messages
+showPosition:function () {
+ var pre = this.pastInput();
+ var c = new Array(pre.length + 1).join("-");
+ return pre + this.upcomingInput() + "\n" + c + "^";
+ },
+
+// test the lexed token: return FALSE when not a match, otherwise return token
+test_match:function (match, indexed_rule) {
+ var token,
+ lines,
+ backup;
+
+ if (this.options.backtrack_lexer) {
+ // save context
+ backup = {
+ yylineno: this.yylineno,
+ yylloc: {
+ first_line: this.yylloc.first_line,
+ last_line: this.last_line,
+ first_column: this.yylloc.first_column,
+ last_column: this.yylloc.last_column
+ },
+ yytext: this.yytext,
+ match: this.match,
+ matches: this.matches,
+ matched: this.matched,
+ yyleng: this.yyleng,
+ offset: this.offset,
+ _more: this._more,
+ _input: this._input,
+ yy: this.yy,
+ conditionStack: this.conditionStack.slice(0),
+ done: this.done
+ };
+ if (this.options.ranges) {
+ backup.yylloc.range = this.yylloc.range.slice(0);
+ }
+ }
+
+ lines = match[0].match(/(?:\r\n?|\n).*/g);
+ if (lines) {
+ this.yylineno += lines.length;
+ }
+ this.yylloc = {
+ first_line: this.yylloc.last_line,
+ last_line: this.yylineno + 1,
+ first_column: this.yylloc.last_column,
+ last_column: lines ?
+ lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length :
+ this.yylloc.last_column + match[0].length
+ };
+ this.yytext += match[0];
+ this.match += match[0];
+ this.matches = match;
+ this.yyleng = this.yytext.length;
+ if (this.options.ranges) {
+ this.yylloc.range = [this.offset, this.offset += this.yyleng];
+ }
+ this._more = false;
+ this._backtrack = false;
+ this._input = this._input.slice(match[0].length);
+ this.matched += match[0];
+ token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
+ if (this.done && this._input) {
+ this.done = false;
+ }
+ if (token) {
+ return token;
+ } else if (this._backtrack) {
+ // recover context
+ for (var k in backup) {
+ this[k] = backup[k];
+ }
+ return false; // rule action called reject() implying the next rule should be tested instead.
+ }
+ return false;
+ },
+
+// return next match in input
+next:function () {
+ if (this.done) {
+ return this.EOF;
+ }
+ if (!this._input) {
+ this.done = true;
+ }
+
+ var token,
+ match,
+ tempMatch,
+ index;
+ if (!this._more) {
+ this.yytext = '';
+ this.match = '';
+ }
+ var rules = this._currentRules();
+ for (var i = 0; i < rules.length; i++) {
+ tempMatch = this._input.match(this.rules[rules[i]]);
+ if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
+ match = tempMatch;
+ index = i;
+ if (this.options.backtrack_lexer) {
+ token = this.test_match(tempMatch, rules[i]);
+ if (token !== false) {
+ return token;
+ } else if (this._backtrack) {
+ match = false;
+ continue; // rule action called reject() implying a rule MISmatch.
+ } else {
+ // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+ return false;
+ }
+ } else if (!this.options.flex) {
+ break;
+ }
+ }
+ }
+ if (match) {
+ token = this.test_match(match, rules[index]);
+ if (token !== false) {
+ return token;
+ }
+ // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
+ return false;
+ }
+ if (this._input === "") {
+ return this.EOF;
+ } else {
+ return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
+ text: "",
+ token: null,
+ line: this.yylineno
+ });
+ }
+ },
+
+// return next match that has a token
+lex:function lex() {
+ var r = this.next();
+ if (r) {
+ return r;
+ } else {
+ return this.lex();
+ }
+ },
+
+// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
+begin:function begin(condition) {
+ this.conditionStack.push(condition);
+ },
+
+// pop the previously active lexer condition state off the condition stack
+popState:function popState() {
+ var n = this.conditionStack.length - 1;
+ if (n > 0) {
+ return this.conditionStack.pop();
+ } else {
+ return this.conditionStack[0];
+ }
+ },
+
+// produce the lexer rule set which is active for the currently active lexer condition state
+_currentRules:function _currentRules() {
+ if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
+ return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
+ } else {
+ return this.conditions["INITIAL"].rules;
+ }
+ },
+
+// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
+topState:function topState(n) {
+ n = this.conditionStack.length - 1 - Math.abs(n || 0);
+ if (n >= 0) {
+ return this.conditionStack[n];
+ } else {
+ return "INITIAL";
+ }
+ },
+
+// alias for begin(condition)
+pushState:function pushState(condition) {
+ this.begin(condition);
+ },
+
+// return the number of states currently on the stack
+stateStackSize:function stateStackSize() {
+ return this.conditionStack.length;
+ },
+options: {},
+performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
+var YYSTATE=YY_START;
+switch($avoiding_name_collisions) {
+case 0:return 5;
+break;
+case 1:/* skip whitespace */
+break;
+case 2:return 8;
+break;
+case 3:return 16;
+break;
+case 4:return 17;
+break;
+case 5:return 11;
+break;
+case 6:return 10;
+break;
+case 7:return 9;
+break;
+case 8:return 14;
+break;
+case 9:return 15;
+break;
+case 10:return 12;
+break;
+case 11:return 7
+break;
+case 12:return 7
+break;
+case 13:return 7
+break;
+case 14:return 7
+break;
+case 15:return 7
+break;
+case 16:return 7
+break;
+case 17:return 7
+break;
+case 18:return 7
+break;
+case 19:return 7
+break;
+case 20:return 7
+break;
+case 21:return 7
+break;
+case 22:return 7
+break;
+case 23:return 7
+break;
+case 24:return 7
+break;
+case 25:return 7
+break;
+case 26:return 7
+break;
+case 27:return 7
+break;
+case 28:return 7
+break;
+case 29:return 7
+break;
+case 30:return 7
+break;
+case 31:return 7
+break;
+case 32:return 7
+break;
+case 33:return 7
+break;
+case 34:return 7
+break;
+case 35:return 7
+break;
+case 36:return 7
+break;
+case 37:return 7
+break;
+case 38:return 7
+break;
+case 39:return 7
+break;
+case 40:return 7
+break;
+case 41:return 7
+break;
+case 42:return 7
+break;
+case 43:return 7
+break;
+case 44:return 7
+break;
+case 45:return 7
+break;
+case 46:return 7
+break;
+case 47:return 7
+break;
+case 48:return 7
+break;
+case 49:return 7
+break;
+case 50:return 7
+break;
+case 51:return 7
+break;
+case 52:return 7
+break;
+case 53:return 7
+break;
+case 54:return 7
+break;
+case 55:return 7
+break;
+case 56:return 7
+break;
+case 57:return 7
+break;
+case 58:return 7
+break;
+case 59:return 7
+break;
+case 60:return 7
+break;
+case 61:return 7
+break;
+case 62:return 7
+break;
+case 63:return 7
+break;
+case 64:return 7
+break;
+case 65:return 7
+break;
+case 66:return 7
+break;
+case 67:return 7
+break;
+case 68:return 7
+break;
+case 69:return 7
+break;
+case 70:return 7
+break;
+case 71:return 7
+break;
+case 72:return 7
+break;
+case 73:return 7
+break;
+case 74:return 7
+break;
+case 75:return 7
+break;
+case 76:return 7
+break;
+case 77:return 7
+break;
+case 78:return 7
+break;
+case 79:return 7
+break;
+case 80:return 7
+break;
+case 81:return 7
+break;
+case 82:return 7
+break;
+case 83:return 7
+break;
+case 84:return 7
+break;
+case 85:return 7
+break;
+case 86:return 7
+break;
+case 87:return 7
+break;
+case 88:return 7
+break;
+case 89:return 7
+break;
+case 90:return 7
+break;
+case 91:return 7
+break;
+case 92:return 7
+break;
+case 93:return 7
+break;
+case 94:return 7
+break;
+case 95:return 7
+break;
+case 96:return 7
+break;
+case 97:return 7
+break;
+case 98:return 7
+break;
+case 99:return 7
+break;
+case 100:return 7
+break;
+case 101:return 7
+break;
+case 102:return 7
+break;
+case 103:return 7
+break;
+case 104:return 7
+break;
+case 105:return 7
+break;
+case 106:return 7
+break;
+case 107:return 7
+break;
+case 108:return 7
+break;
+case 109:return 7
+break;
+case 110:return 7
+break;
+case 111:return 7
+break;
+case 112:return 7
+break;
+case 113:return 7
+break;
+case 114:return 7
+break;
+case 115:return 7
+break;
+case 116:return 7
+break;
+case 117:return 7
+break;
+case 118:return 7
+break;
+case 119:return 7
+break;
+case 120:return 7
+break;
+case 121:return 7
+break;
+case 122:return 7
+break;
+case 123:return 7
+break;
+case 124:return 7
+break;
+case 125:return 7
+break;
+case 126:return 7
+break;
+case 127:return 7
+break;
+case 128:return 7
+break;
+case 129:return 7
+break;
+case 130:return 7
+break;
+case 131:return 7
+break;
+case 132:return 7
+break;
+case 133:return 7
+break;
+case 134:return 7
+break;
+case 135:return 7
+break;
+case 136:return 7
+break;
+case 137:return 7
+break;
+case 138:return 7
+break;
+case 139:return 7
+break;
+case 140:return 7
+break;
+case 141:return 7
+break;
+case 142:return 7
+break;
+case 143:return 7
+break;
+case 144:return 7
+break;
+case 145:return 7
+break;
+case 146:return 7
+break;
+case 147:return 7
+break;
+case 148:return 7
+break;
+case 149:return 7
+break;
+case 150:return 7
+break;
+case 151:return 7
+break;
+case 152:return 7
+break;
+case 153:return 7
+break;
+case 154:return 7
+break;
+case 155:return 7
+break;
+case 156:return 7
+break;
+case 157:return 7
+break;
+case 158:return 7
+break;
+case 159:return 7
+break;
+case 160:return 7
+break;
+case 161:return 7
+break;
+case 162:return 7
+break;
+case 163:return 7
+break;
+case 164:return 7
+break;
+case 165:return 7
+break;
+case 166:return 7
+break;
+case 167:return 7
+break;
+case 168:return 7
+break;
+case 169:return 7
+break;
+case 170:return 7
+break;
+case 171:return 7
+break;
+case 172:return 7
+break;
+case 173:return 7
+break;
+case 174:return 7
+break;
+case 175:return 7
+break;
+case 176:return 7
+break;
+case 177:return 7
+break;
+case 178:return 7
+break;
+case 179:return 7
+break;
+case 180:return 7
+break;
+case 181:return 7
+break;
+case 182:return 7
+break;
+case 183:return 7
+break;
+case 184:return 7
+break;
+case 185:return 7
+break;
+case 186:return 7
+break;
+case 187:return 7
+break;
+case 188:return 7
+break;
+case 189:return 7
+break;
+case 190:return 7
+break;
+case 191:return 7
+break;
+case 192:return 7
+break;
+case 193:return 7
+break;
+case 194:return 7
+break;
+case 195:return 7
+break;
+case 196:return 7
+break;
+case 197:return 7
+break;
+case 198:return 7
+break;
+case 199:return 7
+break;
+case 200:return 7
+break;
+case 201:return 7
+break;
+case 202:return 7
+break;
+case 203:return 7
+break;
+case 204:return 7
+break;
+case 205:return 7
+break;
+case 206:return 7
+break;
+case 207:return 7
+break;
+case 208:return 7
+break;
+case 209:return 7
+break;
+case 210:return 7
+break;
+case 211:return 7
+break;
+case 212:return 7
+break;
+case 213:return 7
+break;
+case 214:return 7
+break;
+case 215:return 7
+break;
+case 216:return 7
+break;
+case 217:return 7
+break;
+case 218:return 7
+break;
+case 219:return 7
+break;
+case 220:return 7
+break;
+case 221:return 7
+break;
+case 222:return 7
+break;
+case 223:return 7
+break;
+case 224:return 7
+break;
+case 225:return 7
+break;
+case 226:return 7
+break;
+case 227:return 7
+break;
+case 228:return 7
+break;
+case 229:return 7
+break;
+case 230:return 7
+break;
+case 231:return 7
+break;
+case 232:return 7
+break;
+case 233:return 7
+break;
+case 234:return 7
+break;
+case 235:return 7
+break;
+case 236:return 7
+break;
+case 237:return 7
+break;
+case 238:return 7
+break;
+case 239:return 7
+break;
+case 240:return 7
+break;
+case 241:return 7
+break;
+case 242:return 7
+break;
+case 243:return 7
+break;
+case 244:return 7
+break;
+case 245:return 7
+break;
+case 246:return 7
+break;
+case 247:return 7
+break;
+case 248:return 7
+break;
+case 249:return 7
+break;
+case 250:return 7
+break;
+case 251:return 7
+break;
+case 252:return 7
+break;
+case 253:return 7
+break;
+case 254:return 7
+break;
+case 255:return 7
+break;
+case 256:return 7
+break;
+case 257:return 7
+break;
+case 258:return 7
+break;
+case 259:return 7
+break;
+case 260:return 7
+break;
+case 261:return 7
+break;
+case 262:return 7
+break;
+case 263:return 7
+break;
+case 264:return 7
+break;
+case 265:return 7
+break;
+case 266:return 7
+break;
+case 267:return 7
+break;
+case 268:return 7
+break;
+case 269:return 7
+break;
+case 270:return 7
+break;
+case 271:return 7
+break;
+case 272:return 7
+break;
+case 273:return 7
+break;
+case 274:return 7
+break;
+case 275:return 7
+break;
+case 276:return 7
+break;
+case 277:return 7
+break;
+case 278:return 7
+break;
+case 279:return 7
+break;
+case 280:return 7
+break;
+case 281:return 7
+break;
+case 282:return 7
+break;
+case 283:return 7
+break;
+case 284:return 7
+break;
+case 285:return 7
+break;
+case 286:return 7
+break;
+case 287:return 7
+break;
+case 288:return 7
+break;
+case 289:return 7
+break;
+case 290:return 7
+break;
+case 291:return 7
+break;
+case 292:return 7
+break;
+case 293:return 7
+break;
+case 294:return 7
+break;
+case 295:return 7
+break;
+case 296:return 7
+break;
+case 297:return 7
+break;
+case 298:return 7
+break;
+case 299:return 7
+break;
+case 300:return 7
+break;
+case 301:return 7
+break;
+case 302:return 7
+break;
+case 303:return 7
+break;
+case 304:return 7
+break;
+case 305:return 7
+break;
+case 306:return 7
+break;
+case 307:return 7
+break;
+case 308:return 7
+break;
+case 309:return 7
+break;
+case 310:return 7
+break;
+case 311:return 7
+break;
+case 312:return 13
+break;
+case 313:return 13
+break;
+case 314:return 13
+break;
+case 315:return 13
+break;
+case 316:return 13
+break;
+case 317:return 13
+break;
+case 318:return 13
+break;
+case 319:return 13
+break;
+case 320:return 13
+break;
+case 321:return 13
+break;
+case 322:return 13
+break;
+case 323:return 13
+break;
+case 324:return 13
+break;
+case 325:return 13
+break;
+case 326:return 13
+break;
+case 327:return 13
+break;
+case 328:return 13
+break;
+case 329:return 13
+break;
+case 330:return 13
+break;
+case 331:return 13
+break;
+case 332:return 13
+break;
+case 333:return 13
+break;
+}
+},
+rules: [/^(?:$)/,/^(?:\s+)/,/^(?:\+)/,/^(?:\()/,/^(?:\))/,/^(?::)/,/^(?:DocumentRef-([0-9A-Za-z-+.]+))/,/^(?:LicenseRef-([0-9A-Za-z-+.]+))/,/^(?:AND)/,/^(?:OR)/,/^(?:WITH)/,/^(?:Glide)/,/^(?:Abstyles)/,/^(?:AFL-1.1)/,/^(?:AFL-1.2)/,/^(?:AFL-2.0)/,/^(?:AFL-2.1)/,/^(?:AFL-3.0)/,/^(?:AMPAS)/,/^(?:APL-1.0)/,/^(?:Adobe-Glyph)/,/^(?:APAFML)/,/^(?:Adobe-2006)/,/^(?:AGPL-1.0)/,/^(?:Afmparse)/,/^(?:Aladdin)/,/^(?:ADSL)/,/^(?:AMDPLPA)/,/^(?:ANTLR-PD)/,/^(?:Apache-1.0)/,/^(?:Apache-1.1)/,/^(?:Apache-2.0)/,/^(?:AML)/,/^(?:APSL-1.0)/,/^(?:APSL-1.1)/,/^(?:APSL-1.2)/,/^(?:APSL-2.0)/,/^(?:Artistic-1.0)/,/^(?:Artistic-1.0-Perl)/,/^(?:Artistic-1.0-cl8)/,/^(?:Artistic-2.0)/,/^(?:AAL)/,/^(?:Bahyph)/,/^(?:Barr)/,/^(?:Beerware)/,/^(?:BitTorrent-1.0)/,/^(?:BitTorrent-1.1)/,/^(?:BSL-1.0)/,/^(?:Borceux)/,/^(?:BSD-2-Clause)/,/^(?:BSD-2-Clause-FreeBSD)/,/^(?:BSD-2-Clause-NetBSD)/,/^(?:BSD-3-Clause)/,/^(?:BSD-3-Clause-Clear)/,/^(?:BSD-4-Clause)/,/^(?:BSD-Protection)/,/^(?:BSD-3-Clause-Attribution)/,/^(?:BSD-4-Clause-UC)/,/^(?:bzip2-1.0.5)/,/^(?:bzip2-1.0.6)/,/^(?:Caldera)/,/^(?:CECILL-1.0)/,/^(?:CECILL-1.1)/,/^(?:CECILL-2.0)/,/^(?:CECILL-B)/,/^(?:CECILL-C)/,/^(?:ClArtistic)/,/^(?:MIT-CMU)/,/^(?:CNRI-Jython)/,/^(?:CNRI-Python)/,/^(?:CNRI-Python-GPL-Compatible)/,/^(?:CPOL-1.02)/,/^(?:CDDL-1.0)/,/^(?:CDDL-1.1)/,/^(?:CPAL-1.0)/,/^(?:CPL-1.0)/,/^(?:CATOSL-1.1)/,/^(?:Condor-1.1)/,/^(?:CC-BY-1.0)/,/^(?:CC-BY-2.0)/,/^(?:CC-BY-2.5)/,/^(?:CC-BY-3.0)/,/^(?:CC-BY-4.0)/,/^(?:CC-BY-ND-1.0)/,/^(?:CC-BY-ND-2.0)/,/^(?:CC-BY-ND-2.5)/,/^(?:CC-BY-ND-3.0)/,/^(?:CC-BY-ND-4.0)/,/^(?:CC-BY-NC-1.0)/,/^(?:CC-BY-NC-2.0)/,/^(?:CC-BY-NC-2.5)/,/^(?:CC-BY-NC-3.0)/,/^(?:CC-BY-NC-4.0)/,/^(?:CC-BY-NC-ND-1.0)/,/^(?:CC-BY-NC-ND-2.0)/,/^(?:CC-BY-NC-ND-2.5)/,/^(?:CC-BY-NC-ND-3.0)/,/^(?:CC-BY-NC-ND-4.0)/,/^(?:CC-BY-NC-SA-1.0)/,/^(?:CC-BY-NC-SA-2.0)/,/^(?:CC-BY-NC-SA-2.5)/,/^(?:CC-BY-NC-SA-3.0)/,/^(?:CC-BY-NC-SA-4.0)/,/^(?:CC-BY-SA-1.0)/,/^(?:CC-BY-SA-2.0)/,/^(?:CC-BY-SA-2.5)/,/^(?:CC-BY-SA-3.0)/,/^(?:CC-BY-SA-4.0)/,/^(?:CC0-1.0)/,/^(?:Crossword)/,/^(?:CUA-OPL-1.0)/,/^(?:Cube)/,/^(?:D-FSL-1.0)/,/^(?:diffmark)/,/^(?:WTFPL)/,/^(?:DOC)/,/^(?:Dotseqn)/,/^(?:DSDP)/,/^(?:dvipdfm)/,/^(?:EPL-1.0)/,/^(?:ECL-1.0)/,/^(?:ECL-2.0)/,/^(?:eGenix)/,/^(?:EFL-1.0)/,/^(?:EFL-2.0)/,/^(?:MIT-advertising)/,/^(?:MIT-enna)/,/^(?:Entessa)/,/^(?:ErlPL-1.1)/,/^(?:EUDatagrid)/,/^(?:EUPL-1.0)/,/^(?:EUPL-1.1)/,/^(?:Eurosym)/,/^(?:Fair)/,/^(?:MIT-feh)/,/^(?:Frameworx-1.0)/,/^(?:FreeImage)/,/^(?:FTL)/,/^(?:FSFUL)/,/^(?:FSFULLR)/,/^(?:Giftware)/,/^(?:GL2PS)/,/^(?:Glulxe)/,/^(?:AGPL-3.0)/,/^(?:GFDL-1.1)/,/^(?:GFDL-1.2)/,/^(?:GFDL-1.3)/,/^(?:GPL-1.0)/,/^(?:GPL-2.0)/,/^(?:GPL-3.0)/,/^(?:LGPL-2.1)/,/^(?:LGPL-3.0)/,/^(?:LGPL-2.0)/,/^(?:gnuplot)/,/^(?:gSOAP-1.3b)/,/^(?:HaskellReport)/,/^(?:HPND)/,/^(?:IBM-pibs)/,/^(?:IPL-1.0)/,/^(?:ICU)/,/^(?:ImageMagick)/,/^(?:iMatix)/,/^(?:Imlib2)/,/^(?:IJG)/,/^(?:Intel-ACPI)/,/^(?:Intel)/,/^(?:IPA)/,/^(?:ISC)/,/^(?:JasPer-2.0)/,/^(?:JSON)/,/^(?:LPPL-1.3a)/,/^(?:LPPL-1.0)/,/^(?:LPPL-1.1)/,/^(?:LPPL-1.2)/,/^(?:LPPL-1.3c)/,/^(?:Latex2e)/,/^(?:BSD-3-Clause-LBNL)/,/^(?:Leptonica)/,/^(?:LGPLLR)/,/^(?:Libpng)/,/^(?:libtiff)/,/^(?:LPL-1.02)/,/^(?:LPL-1.0)/,/^(?:MakeIndex)/,/^(?:MTLL)/,/^(?:MS-PL)/,/^(?:MS-RL)/,/^(?:MirOS)/,/^(?:MITNFA)/,/^(?:MIT)/,/^(?:Motosoto)/,/^(?:MPL-1.0)/,/^(?:MPL-1.1)/,/^(?:MPL-2.0)/,/^(?:MPL-2.0-no-copyleft-exception)/,/^(?:mpich2)/,/^(?:Multics)/,/^(?:Mup)/,/^(?:NASA-1.3)/,/^(?:Naumen)/,/^(?:NBPL-1.0)/,/^(?:NetCDF)/,/^(?:NGPL)/,/^(?:NOSL)/,/^(?:NPL-1.0)/,/^(?:NPL-1.1)/,/^(?:Newsletr)/,/^(?:NLPL)/,/^(?:Nokia)/,/^(?:NPOSL-3.0)/,/^(?:Noweb)/,/^(?:NRL)/,/^(?:NTP)/,/^(?:Nunit)/,/^(?:OCLC-2.0)/,/^(?:ODbL-1.0)/,/^(?:PDDL-1.0)/,/^(?:OGTSL)/,/^(?:OLDAP-2.2.2)/,/^(?:OLDAP-1.1)/,/^(?:OLDAP-1.2)/,/^(?:OLDAP-1.3)/,/^(?:OLDAP-1.4)/,/^(?:OLDAP-2.0)/,/^(?:OLDAP-2.0.1)/,/^(?:OLDAP-2.1)/,/^(?:OLDAP-2.2)/,/^(?:OLDAP-2.2.1)/,/^(?:OLDAP-2.3)/,/^(?:OLDAP-2.4)/,/^(?:OLDAP-2.5)/,/^(?:OLDAP-2.6)/,/^(?:OLDAP-2.7)/,/^(?:OLDAP-2.8)/,/^(?:OML)/,/^(?:OPL-1.0)/,/^(?:OSL-1.0)/,/^(?:OSL-1.1)/,/^(?:OSL-2.0)/,/^(?:OSL-2.1)/,/^(?:OSL-3.0)/,/^(?:OpenSSL)/,/^(?:PHP-3.0)/,/^(?:PHP-3.01)/,/^(?:Plexus)/,/^(?:PostgreSQL)/,/^(?:psfrag)/,/^(?:psutils)/,/^(?:Python-2.0)/,/^(?:QPL-1.0)/,/^(?:Qhull)/,/^(?:Rdisc)/,/^(?:RPSL-1.0)/,/^(?:RPL-1.1)/,/^(?:RPL-1.5)/,/^(?:RHeCos-1.1)/,/^(?:RSCPL)/,/^(?:RSA-MD)/,/^(?:Ruby)/,/^(?:SAX-PD)/,/^(?:Saxpath)/,/^(?:SCEA)/,/^(?:SWL)/,/^(?:SGI-B-1.0)/,/^(?:SGI-B-1.1)/,/^(?:SGI-B-2.0)/,/^(?:OFL-1.0)/,/^(?:OFL-1.1)/,/^(?:SimPL-2.0)/,/^(?:Sleepycat)/,/^(?:SNIA)/,/^(?:Spencer-86)/,/^(?:Spencer-94)/,/^(?:Spencer-99)/,/^(?:SMLNJ)/,/^(?:SugarCRM-1.1.3)/,/^(?:SISSL)/,/^(?:SISSL-1.2)/,/^(?:SPL-1.0)/,/^(?:Watcom-1.0)/,/^(?:TCL)/,/^(?:Unlicense)/,/^(?:TMate)/,/^(?:TORQUE-1.1)/,/^(?:TOSL)/,/^(?:Unicode-TOU)/,/^(?:UPL-1.0)/,/^(?:NCSA)/,/^(?:Vim)/,/^(?:VOSTROM)/,/^(?:VSL-1.0)/,/^(?:W3C-19980720)/,/^(?:W3C)/,/^(?:Wsuipa)/,/^(?:Xnet)/,/^(?:X11)/,/^(?:Xerox)/,/^(?:XFree86-1.1)/,/^(?:xinetd)/,/^(?:xpp)/,/^(?:XSkat)/,/^(?:YPL-1.0)/,/^(?:YPL-1.1)/,/^(?:Zed)/,/^(?:Zend-2.0)/,/^(?:Zimbra-1.3)/,/^(?:Zimbra-1.4)/,/^(?:Zlib)/,/^(?:zlib-acknowledgement)/,/^(?:ZPL-1.1)/,/^(?:ZPL-2.0)/,/^(?:ZPL-2.1)/,/^(?:389-exception)/,/^(?:Autoconf-exception-2.0 )/,/^(?:Autoconf-exception-3.0 )/,/^(?:Bison-exception-2.2)/,/^(?:CLISP-exception-2.0)/,/^(?:Classpath-exception-2.0)/,/^(?:FLTK-exception )/,/^(?:FLTK-exception-2.0 )/,/^(?:Font-exception-2.0 )/,/^(?:GCC-exception-2.0)/,/^(?:GCC-exception-3.1)/,/^(?:LZMA-exception )/,/^(?:Libtool-exception)/,/^(?:Nokia-Qt-exception-1.1 )/,/^(?:Qwt-exception-1.0)/,/^(?:WxWindows-exception-3.1)/,/^(?:eCos-exception-2.0 )/,/^(?:freertos-exception-2.0 )/,/^(?:gnu-javamail-exception )/,/^(?:i2p-gpl-java-exception )/,/^(?:mif-exception)/,/^(?:u-boot-exception-2.0 )/],
+conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333],"inclusive":true}}
+});
+return lexer;
+})();
+parser.lexer = lexer;
+function Parser () {
+ this.yy = {};
+}
+Parser.prototype = parser;parser.Parser = Parser;
+return new Parser;
+})();
+
+
+if (typeof require !== 'undefined' && typeof exports !== 'undefined') {
+exports.parser = spdxparse;
+exports.Parser = spdxparse.Parser;
+exports.parse = function () { return spdxparse.parse.apply(spdxparse, arguments); };
+exports.main = function commonjsMain(args) {
+ if (!args[1]) {
+ console.log('Usage: '+args[0]+' FILE');
+ process.exit(1);
+ }
+ var source = require('fs').readFileSync(require('path').normalize(args[1]), "utf8");
+ return exports.parser.parse(source);
+};
+if (typeof module !== 'undefined' && require.main === module) {
+ exports.main(process.argv.slice(1));
+}
+}
diff --git a/deps/npm/node_modules/validate-npm-package-license/package.json b/deps/npm/node_modules/validate-npm-package-license/package.json
index beb00f8bf68e7f..00006cc3904b90 100644
--- a/deps/npm/node_modules/validate-npm-package-license/package.json
+++ b/deps/npm/node_modules/validate-npm-package-license/package.json
@@ -1,23 +1,20 @@
{
"name": "validate-npm-package-license",
"description": "Give me a string and I'll tell you if it's a valid npm package license string",
- "version": "2.0.0",
+ "version": "3.0.1",
"author": {
"name": "Kyle E. Mitchell",
"email": "kyle@kemitchell.com",
- "url": "http://kemitchell.com"
- },
- "bugs": {
- "url": "https://github.com/kemitchell/validate-npm-package-license.js/issues"
+ "url": "https://kemitchell.com"
},
"dependencies": {
- "spdx": "~0.4.0",
- "spdx-correct": "~1.0.0"
+ "spdx-correct": "~1.0.0",
+ "spdx-expression-parse": "~1.0.0"
},
"devDependencies": {
- "jsmd": "~0.3.0"
+ "defence-cli": "^1.0.1",
+ "replace-require-self": "^1.0.0"
},
- "homepage": "https://github.com/kemitchell/validate-npm-package-license.js",
"keywords": [
"license",
"npm",
@@ -25,25 +22,31 @@
"validation"
],
"license": "Apache-2.0",
- "main": "index.js",
"repository": {
"type": "git",
"url": "git+https://github.com/kemitchell/validate-npm-package-license.js.git"
},
"scripts": {
- "precommit": "npm run test",
- "test": "jsmd README.md"
+ "test": "defence README.md | replace-require-self | node"
+ },
+ "gitHead": "00200d28f9960985f221bc1a8a71e4760daf39bf",
+ "bugs": {
+ "url": "https://github.com/kemitchell/validate-npm-package-license.js/issues"
},
- "gitHead": "24544d4688f7cc9ed9685a3f9f90bd3f3bed58c0",
- "_id": "validate-npm-package-license@2.0.0",
- "_shasum": "ce0a29300edfa07e6ac6ad52eed8d6dfd194e42b",
- "_from": "validate-npm-package-license@2.0.0",
- "_npmVersion": "2.11.1",
- "_nodeVersion": "2.3.0",
+ "homepage": "https://github.com/kemitchell/validate-npm-package-license.js#readme",
+ "_id": "validate-npm-package-license@3.0.1",
+ "_shasum": "2804babe712ad3379459acfbe24746ab2c303fbc",
+ "_from": "validate-npm-package-license@3.0.1",
+ "_npmVersion": "2.13.5",
+ "_nodeVersion": "0.12.7",
"_npmUser": {
"name": "kemitchell",
"email": "kyle@kemitchell.com"
},
+ "dist": {
+ "shasum": "2804babe712ad3379459acfbe24746ab2c303fbc",
+ "tarball": "http://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz"
+ },
"maintainers": [
{
"name": "kemitchell",
@@ -54,11 +57,6 @@
"email": "ogd@aoaioxxysz.net"
}
],
- "dist": {
- "shasum": "ce0a29300edfa07e6ac6ad52eed8d6dfd194e42b",
- "tarball": "http://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-2.0.0.tgz"
- },
"directories": {},
- "_resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-2.0.0.tgz",
- "readme": "ERROR: No README data found!"
+ "_resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz"
}
diff --git a/deps/npm/node_modules/which/.travis.yml b/deps/npm/node_modules/which/.travis.yml
new file mode 100644
index 00000000000000..4af02b3d17e64c
--- /dev/null
+++ b/deps/npm/node_modules/which/.travis.yml
@@ -0,0 +1,8 @@
+language: node_js
+node_js:
+ - '0.8'
+ - '0.10'
+ - '0.12'
+ - 'iojs'
+before_install:
+ - npm install -g npm@latest
diff --git a/deps/npm/node_modules/which/package.json b/deps/npm/node_modules/which/package.json
index 8cffb7986e7ab6..0213e184e7b746 100644
--- a/deps/npm/node_modules/which/package.json
+++ b/deps/npm/node_modules/which/package.json
@@ -6,7 +6,7 @@
},
"name": "which",
"description": "Like which(1) unix command. Find the first instance of an executable in the PATH.",
- "version": "1.1.1",
+ "version": "1.1.2",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/node-which.git"
@@ -27,23 +27,23 @@
"scripts": {
"test": "tap test/*.js"
},
- "gitHead": "c80a08e9f8cf7a5c0f39c2e2f87f18f153b118a8",
+ "gitHead": "e576e42f0c377571884f844eec58b3ca4a331681",
"bugs": {
"url": "https://github.com/isaacs/node-which/issues"
},
"homepage": "https://github.com/isaacs/node-which#readme",
- "_id": "which@1.1.1",
- "_shasum": "9ce512459946166e12c083f08ec073380fc8cbbb",
- "_from": "which@>=1.1.1 <1.2.0",
- "_npmVersion": "2.9.1",
- "_nodeVersion": "2.0.1",
+ "_id": "which@1.1.2",
+ "_shasum": "486c48af6dfecc7a7dcf9c655acf108d2dcbdf3d",
+ "_from": "which@1.1.2",
+ "_npmVersion": "3.3.1",
+ "_nodeVersion": "2.5.0",
"_npmUser": {
"name": "isaacs",
"email": "isaacs@npmjs.com"
},
"dist": {
- "shasum": "9ce512459946166e12c083f08ec073380fc8cbbb",
- "tarball": "http://registry.npmjs.org/which/-/which-1.1.1.tgz"
+ "shasum": "486c48af6dfecc7a7dcf9c655acf108d2dcbdf3d",
+ "tarball": "http://registry.npmjs.org/which/-/which-1.1.2.tgz"
},
"maintainers": [
{
@@ -52,5 +52,6 @@
}
],
"directories": {},
- "_resolved": "https://registry.npmjs.org/which/-/which-1.1.1.tgz"
+ "_resolved": "https://registry.npmjs.org/which/-/which-1.1.2.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/which/test/basic.js b/deps/npm/node_modules/which/test/basic.js
index 189ca6d0ad5bb4..80e9e96b2366ab 100644
--- a/deps/npm/node_modules/which/test/basic.js
+++ b/deps/npm/node_modules/which/test/basic.js
@@ -51,31 +51,46 @@ t.test('make executable', function (t) {
})
t.test('find when executable', function (t) {
- t.plan(2)
+ t.plan(4)
var opt = { pathExt: '.sh' }
var expect = path.resolve(fixture, 'foo.sh').toLowerCase()
+ var PATH = process.env.PATH
t.test('absolute', function (t) {
- t.plan(2)
- runTest(t)
+ runTest(fixture + '/foo.sh', t)
+ })
+
+ t.test('with process.env.PATH', function (t) {
+ process.env.PATH = fixture
+ runTest('foo.sh', t)
+ })
+
+ t.test('with process.env.Path', {
+ skip: isWindows ? false : 'Only for Windows'
+ }, function (t) {
+ process.env.PATH = ""
+ process.env.Path = fixture
+ runTest('foo.sh', t)
+ })
+
+ t.test('with path opt', function (t) {
+ opt.path = fixture
+ runTest('foo.sh', t)
})
- function runTest(t) {
- which(fixture + '/foo.sh', opt, function (er, found) {
+ function runTest(exec, t) {
+ t.plan(2)
+ which(exec, opt, function (er, found) {
if (er)
throw er
t.equal(found.toLowerCase(), expect)
+ process.env.PATH = PATH
})
- var found = which.sync(fixture + '/foo.sh', opt).toLowerCase()
+ var found = which.sync(exec, opt).toLowerCase()
t.equal(found, expect)
}
- t.test('with path', function (t) {
- t.plan(2)
- opt.path = fixture
- runTest(t)
- })
})
t.test('clean', function (t) {
diff --git a/deps/npm/node_modules/which/which.js b/deps/npm/node_modules/which/which.js
index 13fc26dcfbb0ce..97579de8ac88aa 100644
--- a/deps/npm/node_modules/which/which.js
+++ b/deps/npm/node_modules/which/which.js
@@ -11,17 +11,21 @@ var isExe
var fs = require('fs')
var isAbsolute = require('is-absolute')
+var G = parseInt('0010', 8)
+var U = parseInt('0100', 8)
+var UG = parseInt('0110', 8)
+
if (isWindows) {
// On windows, there is no good way to check that a file is executable
isExe = function isExe () { return true }
} else {
isExe = function isExe (mod, uid, gid) {
- var ret = (mod & 0001)
- || (mod & 0010) && process.getgid && gid === process.getgid()
- || (mod & 0100) && process.getuid && uid === process.getuid()
- || (mod & 0110) && process.getuid && 0 === process.getuid()
+ var ret = (mod & 1)
+ || (mod & U) && process.getgid && gid === process.getgid()
+ || (mod & G) && process.getuid && uid === process.getuid()
+ || (mod & UG) && process.getuid && 0 === process.getuid()
- if (process.getgroups && (mod & 0010)) {
+ if (!ret && process.getgroups && (mod & G)) {
var groups = process.getgroups()
for (var g = 0; g < groups.length; g++) {
if (groups[g] === gid)
@@ -33,27 +37,11 @@ if (isWindows) {
}
}
-function which (cmd, opt, cb) {
- if (typeof opt === 'function') {
- cb = opt
- opt = {}
- }
-
+function getPathInfo(cmd, opt) {
var colon = opt.colon || COLON
var pathEnv = opt.path || process.env.PATH || ''
var pathExt = ['']
- // On windows, env.Path is common.
- if (isWindows && !pathEnv) {
- var k = Object.keys(process.env)
- for (var p = 0; p < k.length; p++) {
- if (p.toLowerCase() === 'path') {
- pathEnv = process.env[p]
- break
- }
- }
- }
-
pathEnv = pathEnv.split(colon)
if (isWindows) {
@@ -68,6 +56,19 @@ function which (cmd, opt, cb) {
if (isAbsolute(cmd))
pathEnv = ['']
+ return {env: pathEnv, ext: pathExt}
+}
+
+function which (cmd, opt, cb) {
+ if (typeof opt === 'function') {
+ cb = opt
+ opt = {}
+ }
+
+ var info = getPathInfo(cmd, opt)
+ var pathEnv = info.env
+ var pathExt = info.ext
+
;(function F (i, l) {
if (i === l) return cb(new Error('not found: '+cmd))
var p = path.resolve(pathEnv[i], cmd)
@@ -87,38 +88,11 @@ function which (cmd, opt, cb) {
}
function whichSync (cmd, opt) {
- if (!opt)
- opt = {}
+ opt = opt || {}
- var colon = opt.colon || COLON
-
- var pathEnv = opt.path || process.env.PATH || ''
- var pathExt = ['']
-
- // On windows, env.Path is common.
- if (isWindows && !pathEnv) {
- var k = Object.keys(process.env)
- for (var p = 0; p < k.length; p++) {
- if (p.toLowerCase() === 'path') {
- pathEnv = process.env[p]
- break
- }
- }
- }
-
- pathEnv = pathEnv.split(colon)
-
- if (isWindows) {
- pathEnv.unshift(process.cwd())
- pathExt = (opt.pathExt || process.env.PATHEXT || '.EXE').split(colon)
- if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')
- pathExt.unshift('')
- }
-
- // If it's absolute, then we don't bother searching the pathenv.
- // just check the file itself, and that's it.
- if (isAbsolute(cmd))
- pathEnv = ['']
+ var info = getPathInfo(cmd, opt)
+ var pathEnv = info.env
+ var pathExt = info.ext
for (var i = 0, l = pathEnv.length; i < l; i ++) {
var p = path.join(pathEnv[i], cmd)
diff --git a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/.npmignore b/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/.npmignore
deleted file mode 100644
index c2658d7d1b3184..00000000000000
--- a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules/
diff --git a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/LICENSE b/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/LICENSE
deleted file mode 100644
index 19129e315fe593..00000000000000
--- a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/README.md b/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/README.md
deleted file mode 100644
index 13a2e86050a3eb..00000000000000
--- a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# graceful-fs
-
-graceful-fs functions as a drop-in replacement for the fs module,
-making various improvements.
-
-The improvements are meant to normalize behavior across different
-platforms and environments, and to make filesystem access more
-resilient to errors.
-
-## Improvements over [fs module](http://api.nodejs.org/fs.html)
-
-graceful-fs:
-
-* Queues up `open` and `readdir` calls, and retries them once
- something closes if there is an EMFILE error from too many file
- descriptors.
-* fixes `lchmod` for Node versions prior to 0.6.2.
-* implements `fs.lutimes` if possible. Otherwise it becomes a noop.
-* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or
- `lchown` if the user isn't root.
-* makes `lchmod` and `lchown` become noops, if not available.
-* retries reading a file if `read` results in EAGAIN error.
-
-On Windows, it retries renaming a file for up to one second if `EACCESS`
-or `EPERM` error occurs, likely because antivirus software has locked
-the directory.
-
-## USAGE
-
-```javascript
-// use just like fs
-var fs = require('graceful-fs')
-
-// now go and do stuff with it...
-fs.readFileSync('some-file-or-whatever')
-```
diff --git a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/fs.js b/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/fs.js
deleted file mode 100644
index 64ad980232ec0d..00000000000000
--- a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/fs.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// eeeeeevvvvviiiiiiillllll
-// more evil than monkey-patching the native builtin?
-// Not sure.
-
-var mod = require("module")
-var pre = '(function (exports, require, module, __filename, __dirname) { '
-var post = '});'
-var src = pre + process.binding('natives').fs + post
-var vm = require('vm')
-var fn = vm.runInThisContext(src)
-fn(exports, require, module, __filename, __dirname)
diff --git a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/graceful-fs.js b/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/graceful-fs.js
deleted file mode 100644
index fb206b83854a19..00000000000000
--- a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/graceful-fs.js
+++ /dev/null
@@ -1,158 +0,0 @@
-// Monkey-patching the fs module.
-// It's ugly, but there is simply no other way to do this.
-var fs = module.exports = require('./fs.js')
-
-var assert = require('assert')
-
-// fix up some busted stuff, mostly on windows and old nodes
-require('./polyfills.js')
-
-var util = require('util')
-
-function noop () {}
-
-var debug = noop
-if (util.debuglog)
- debug = util.debuglog('gfs')
-else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || ''))
- debug = function() {
- var m = util.format.apply(util, arguments)
- m = 'GFS: ' + m.split(/\n/).join('\nGFS: ')
- console.error(m)
- }
-
-if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) {
- process.on('exit', function() {
- debug('fds', fds)
- debug(queue)
- assert.equal(queue.length, 0)
- })
-}
-
-
-var originalOpen = fs.open
-fs.open = open
-
-function open(path, flags, mode, cb) {
- if (typeof mode === "function") cb = mode, mode = null
- if (typeof cb !== "function") cb = noop
- new OpenReq(path, flags, mode, cb)
-}
-
-function OpenReq(path, flags, mode, cb) {
- this.path = path
- this.flags = flags
- this.mode = mode
- this.cb = cb
- Req.call(this)
-}
-
-util.inherits(OpenReq, Req)
-
-OpenReq.prototype.process = function() {
- originalOpen.call(fs, this.path, this.flags, this.mode, this.done)
-}
-
-var fds = {}
-OpenReq.prototype.done = function(er, fd) {
- debug('open done', er, fd)
- if (fd)
- fds['fd' + fd] = this.path
- Req.prototype.done.call(this, er, fd)
-}
-
-
-var originalReaddir = fs.readdir
-fs.readdir = readdir
-
-function readdir(path, cb) {
- if (typeof cb !== "function") cb = noop
- new ReaddirReq(path, cb)
-}
-
-function ReaddirReq(path, cb) {
- this.path = path
- this.cb = cb
- Req.call(this)
-}
-
-util.inherits(ReaddirReq, Req)
-
-ReaddirReq.prototype.process = function() {
- originalReaddir.call(fs, this.path, this.done)
-}
-
-ReaddirReq.prototype.done = function(er, files) {
- if (files && files.sort)
- files = files.sort()
- Req.prototype.done.call(this, er, files)
- onclose()
-}
-
-
-var originalClose = fs.close
-fs.close = close
-
-function close (fd, cb) {
- debug('close', fd)
- if (typeof cb !== "function") cb = noop
- delete fds['fd' + fd]
- originalClose.call(fs, fd, function(er) {
- onclose()
- cb(er)
- })
-}
-
-
-var originalCloseSync = fs.closeSync
-fs.closeSync = closeSync
-
-function closeSync (fd) {
- try {
- return originalCloseSync(fd)
- } finally {
- onclose()
- }
-}
-
-
-// Req class
-function Req () {
- // start processing
- this.done = this.done.bind(this)
- this.failures = 0
- this.process()
-}
-
-Req.prototype.done = function (er, result) {
- var tryAgain = false
- if (er) {
- var code = er.code
- var tryAgain = code === "EMFILE" || code === "ENFILE"
- if (process.platform === "win32")
- tryAgain = tryAgain || code === "OK"
- }
-
- if (tryAgain) {
- this.failures ++
- enqueue(this)
- } else {
- var cb = this.cb
- cb(er, result)
- }
-}
-
-var queue = []
-
-function enqueue(req) {
- queue.push(req)
- debug('enqueue %d %s', queue.length, req.constructor.name, req)
-}
-
-function onclose() {
- var req = queue.shift()
- if (req) {
- debug('process', req.constructor.name, req)
- req.process()
- }
-}
diff --git a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/package.json b/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/package.json
deleted file mode 100644
index 974aa95169f0af..00000000000000
--- a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/package.json
+++ /dev/null
@@ -1,96 +0,0 @@
-{
- "_args": [
- [
- "graceful-fs@^3.0.2",
- "/Users/isaacs/dev/npm/npm/node_modules/write-file-atomic"
- ]
- ],
- "_from": "graceful-fs@>=3.0.2 <4.0.0",
- "_id": "graceful-fs@3.0.8",
- "_inCache": true,
- "_location": "/write-file-atomic/graceful-fs",
- "_nodeVersion": "2.0.1",
- "_npmUser": {
- "email": "isaacs@npmjs.com",
- "name": "isaacs"
- },
- "_npmVersion": "2.10.1",
- "_phantomChildren": {},
- "_requested": {
- "name": "graceful-fs",
- "raw": "graceful-fs@^3.0.2",
- "rawSpec": "^3.0.2",
- "scope": null,
- "spec": ">=3.0.2 <4.0.0",
- "type": "range"
- },
- "_requiredBy": [
- "/write-file-atomic"
- ],
- "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz",
- "_shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22",
- "_shrinkwrap": null,
- "_spec": "graceful-fs@^3.0.2",
- "_where": "/Users/isaacs/dev/npm/npm/node_modules/write-file-atomic",
- "author": {
- "email": "i@izs.me",
- "name": "Isaac Z. Schlueter",
- "url": "http://blog.izs.me"
- },
- "bugs": {
- "url": "https://github.com/isaacs/node-graceful-fs/issues"
- },
- "dependencies": {},
- "description": "A drop-in replacement for fs, making various improvements.",
- "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"
- },
- "gitHead": "45c57aa5e323c35a985a525de6f0c9a6ef59e1f8",
- "homepage": "https://github.com/isaacs/node-graceful-fs#readme",
- "keywords": [
- "EACCESS",
- "EAGAIN",
- "EINVAL",
- "EMFILE",
- "EPERM",
- "error",
- "errors",
- "fs",
- "handling",
- "module",
- "queue",
- "reading",
- "retries",
- "retry"
- ],
- "license": "ISC",
- "main": "graceful-fs.js",
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "name": "graceful-fs",
- "optionalDependencies": {},
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/node-graceful-fs.git"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "version": "3.0.8"
-}
diff --git a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/polyfills.js b/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/polyfills.js
deleted file mode 100644
index 8ac5006e2da24d..00000000000000
--- a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/polyfills.js
+++ /dev/null
@@ -1,254 +0,0 @@
-var fs = require('./fs.js')
-var constants = require('constants')
-
-var origCwd = process.cwd
-var cwd = null
-process.cwd = function() {
- if (!cwd)
- cwd = origCwd.call(process)
- return cwd
-}
-var chdir = process.chdir
-process.chdir = function(d) {
- cwd = null
- chdir.call(process, d)
-}
-
-// (re-)implement some things that are known busted or missing.
-
-// lchmod, broken prior to 0.6.2
-// back-port the fix here.
-if (constants.hasOwnProperty('O_SYMLINK') &&
- process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
- fs.lchmod = function (path, mode, callback) {
- callback = callback || noop
- fs.open( path
- , constants.O_WRONLY | constants.O_SYMLINK
- , mode
- , function (err, fd) {
- if (err) {
- callback(err)
- return
- }
- // prefer to return the chmod error, if one occurs,
- // but still try to close, and report closing errors if they occur.
- fs.fchmod(fd, mode, function (err) {
- fs.close(fd, function(err2) {
- callback(err || err2)
- })
- })
- })
- }
-
- fs.lchmodSync = function (path, mode) {
- var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)
-
- // prefer to return the chmod error, if one occurs,
- // but still try to close, and report closing errors if they occur.
- var err, err2
- try {
- var ret = fs.fchmodSync(fd, mode)
- } catch (er) {
- err = er
- }
- try {
- fs.closeSync(fd)
- } catch (er) {
- err2 = er
- }
- if (err || err2) throw (err || err2)
- return ret
- }
-}
-
-
-// lutimes implementation, or no-op
-if (!fs.lutimes) {
- if (constants.hasOwnProperty("O_SYMLINK")) {
- fs.lutimes = function (path, at, mt, cb) {
- fs.open(path, constants.O_SYMLINK, function (er, fd) {
- cb = cb || noop
- if (er) return cb(er)
- fs.futimes(fd, at, mt, function (er) {
- fs.close(fd, function (er2) {
- return cb(er || er2)
- })
- })
- })
- }
-
- fs.lutimesSync = function (path, at, mt) {
- var fd = fs.openSync(path, constants.O_SYMLINK)
- , err
- , err2
- , ret
-
- try {
- var ret = fs.futimesSync(fd, at, mt)
- } catch (er) {
- err = er
- }
- try {
- fs.closeSync(fd)
- } catch (er) {
- err2 = er
- }
- if (err || err2) throw (err || err2)
- return ret
- }
-
- } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) {
- // maybe utimensat will be bound soonish?
- fs.lutimes = function (path, at, mt, cb) {
- fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb)
- }
-
- fs.lutimesSync = function (path, at, mt) {
- return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW)
- }
-
- } else {
- fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) }
- fs.lutimesSync = function () {}
- }
-}
-
-
-// https://github.com/isaacs/node-graceful-fs/issues/4
-// Chown should not fail on einval or eperm if non-root.
-// It should not fail on enosys ever, as this just indicates
-// that a fs doesn't support the intended operation.
-
-fs.chown = chownFix(fs.chown)
-fs.fchown = chownFix(fs.fchown)
-fs.lchown = chownFix(fs.lchown)
-
-fs.chmod = chownFix(fs.chmod)
-fs.fchmod = chownFix(fs.fchmod)
-fs.lchmod = chownFix(fs.lchmod)
-
-fs.chownSync = chownFixSync(fs.chownSync)
-fs.fchownSync = chownFixSync(fs.fchownSync)
-fs.lchownSync = chownFixSync(fs.lchownSync)
-
-fs.chmodSync = chownFix(fs.chmodSync)
-fs.fchmodSync = chownFix(fs.fchmodSync)
-fs.lchmodSync = chownFix(fs.lchmodSync)
-
-function chownFix (orig) {
- if (!orig) return orig
- return function (target, uid, gid, cb) {
- return orig.call(fs, target, uid, gid, function (er, res) {
- if (chownErOk(er)) er = null
- cb(er, res)
- })
- }
-}
-
-function chownFixSync (orig) {
- if (!orig) return orig
- return function (target, uid, gid) {
- try {
- return orig.call(fs, target, uid, gid)
- } catch (er) {
- if (!chownErOk(er)) throw er
- }
- }
-}
-
-// ENOSYS means that the fs doesn't support the op. Just ignore
-// that, because it doesn't matter.
-//
-// if there's no getuid, or if getuid() is something other
-// than 0, and the error is EINVAL or EPERM, then just ignore
-// it.
-//
-// This specific case is a silent failure in cp, install, tar,
-// and most other unix tools that manage permissions.
-//
-// When running as root, or if other types of errors are
-// encountered, then it's strict.
-function chownErOk (er) {
- if (!er)
- return true
-
- if (er.code === "ENOSYS")
- return true
-
- var nonroot = !process.getuid || process.getuid() !== 0
- if (nonroot) {
- if (er.code === "EINVAL" || er.code === "EPERM")
- return true
- }
-
- return false
-}
-
-
-// if lchmod/lchown do not exist, then make them no-ops
-if (!fs.lchmod) {
- fs.lchmod = function (path, mode, cb) {
- process.nextTick(cb)
- }
- fs.lchmodSync = function () {}
-}
-if (!fs.lchown) {
- fs.lchown = function (path, uid, gid, cb) {
- process.nextTick(cb)
- }
- fs.lchownSync = function () {}
-}
-
-
-
-// on Windows, A/V software can lock the directory, causing this
-// to fail with an EACCES or EPERM if the directory contains newly
-// created files. Try again on failure, for up to 1 second.
-if (process.platform === "win32") {
- var rename_ = fs.rename
- fs.rename = function rename (from, to, cb) {
- var start = Date.now()
- rename_(from, to, function CB (er) {
- if (er
- && (er.code === "EACCES" || er.code === "EPERM")
- && Date.now() - start < 1000) {
- return rename_(from, to, CB)
- }
- if(cb) cb(er)
- })
- }
-}
-
-
-// if read() returns EAGAIN, then just try it again.
-var read = fs.read
-fs.read = function (fd, buffer, offset, length, position, callback_) {
- var callback
- if (callback_ && typeof callback_ === 'function') {
- var eagCounter = 0
- callback = function (er, _, __) {
- if (er && er.code === 'EAGAIN' && eagCounter < 10) {
- eagCounter ++
- return read.call(fs, fd, buffer, offset, length, position, callback)
- }
- callback_.apply(this, arguments)
- }
- }
- return read.call(fs, fd, buffer, offset, length, position, callback)
-}
-
-var readSync = fs.readSync
-fs.readSync = function (fd, buffer, offset, length, position) {
- var eagCounter = 0
- while (true) {
- try {
- return readSync.call(fs, fd, buffer, offset, length, position)
- } catch (er) {
- if (er.code === 'EAGAIN' && eagCounter < 10) {
- eagCounter ++
- continue
- }
- throw er
- }
- }
-}
diff --git a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/test/max-open.js b/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/test/max-open.js
deleted file mode 100644
index a6b9ba43d3a6de..00000000000000
--- a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/test/max-open.js
+++ /dev/null
@@ -1,69 +0,0 @@
-var test = require('tap').test
-var fs = require('../')
-
-test('open lots of stuff', function (t) {
- // Get around EBADF from libuv by making sure that stderr is opened
- // Otherwise Darwin will refuse to give us a FD for stderr!
- process.stderr.write('')
-
- // How many parallel open()'s to do
- var n = 1024
- var opens = 0
- var fds = []
- var going = true
- var closing = false
- var doneCalled = 0
-
- for (var i = 0; i < n; i++) {
- go()
- }
-
- function go() {
- opens++
- fs.open(__filename, 'r', function (er, fd) {
- if (er) throw er
- fds.push(fd)
- if (going) go()
- })
- }
-
- // should hit ulimit pretty fast
- setTimeout(function () {
- going = false
- t.equal(opens - fds.length, n)
- done()
- }, 100)
-
-
- function done () {
- if (closing) return
- doneCalled++
-
- if (fds.length === 0) {
- console.error('done called %d times', doneCalled)
- // First because of the timeout
- // Then to close the fd's opened afterwards
- // Then this time, to complete.
- // Might take multiple passes, depending on CPU speed
- // and ulimit, but at least 3 in every case.
- t.ok(doneCalled >= 2)
- return t.end()
- }
-
- closing = true
- setTimeout(function () {
- // console.error('do closing again')
- closing = false
- done()
- }, 100)
-
- // console.error('closing time')
- var closes = fds.slice(0)
- fds.length = 0
- closes.forEach(function (fd) {
- fs.close(fd, function (er) {
- if (er) throw er
- })
- })
- }
-})
diff --git a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/test/open.js b/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/test/open.js
deleted file mode 100644
index 85732f236b0026..00000000000000
--- a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/test/open.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var test = require('tap').test
-var fs = require('../graceful-fs.js')
-
-test('graceful fs is monkeypatched fs', function (t) {
- t.equal(fs, require('../fs.js'))
- t.end()
-})
-
-test('open an existing file works', function (t) {
- var fd = fs.openSync(__filename, 'r')
- fs.closeSync(fd)
- fs.open(__filename, 'r', function (er, fd) {
- if (er) throw er
- fs.close(fd, function (er) {
- if (er) throw er
- t.pass('works')
- t.end()
- })
- })
-})
-
-test('open a non-existing file throws', function (t) {
- var er
- try {
- var fd = fs.openSync('this file does not exist', 'r')
- } catch (x) {
- er = x
- }
- t.ok(er, 'should throw')
- t.notOk(fd, 'should not get an fd')
- t.equal(er.code, 'ENOENT')
-
- fs.open('neither does this file', 'r', function (er, fd) {
- t.ok(er, 'should throw')
- t.notOk(fd, 'should not get an fd')
- t.equal(er.code, 'ENOENT')
- t.end()
- })
-})
diff --git a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/test/readdir-sort.js b/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/test/readdir-sort.js
deleted file mode 100644
index cb63a6846ed78f..00000000000000
--- a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/test/readdir-sort.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var test = require("tap").test
-var fs = require("../fs.js")
-
-var readdir = fs.readdir
-fs.readdir = function(path, cb) {
- process.nextTick(function() {
- cb(null, ["b", "z", "a"])
- })
-}
-
-var g = require("../")
-
-test("readdir reorder", function (t) {
- g.readdir("whatevers", function (er, files) {
- if (er)
- throw er
- t.same(files, [ "a", "b", "z" ])
- t.end()
- })
-})
diff --git a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/test/write-then-read.js b/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/test/write-then-read.js
deleted file mode 100644
index 21e4c26bf6c9dc..00000000000000
--- a/deps/npm/node_modules/write-file-atomic/node_modules/graceful-fs/test/write-then-read.js
+++ /dev/null
@@ -1,47 +0,0 @@
-var fs = require('../');
-var rimraf = require('rimraf');
-var mkdirp = require('mkdirp');
-var test = require('tap').test;
-var p = require('path').resolve(__dirname, 'files');
-
-process.chdir(__dirname)
-
-// Make sure to reserve the stderr fd
-process.stderr.write('');
-
-var num = 4097;
-var paths = new Array(num);
-
-test('make files', function (t) {
- rimraf.sync(p);
- mkdirp.sync(p);
-
- for (var i = 0; i < num; ++i) {
- paths[i] = 'files/file-' + i;
- fs.writeFileSync(paths[i], 'content');
- }
-
- t.end();
-})
-
-test('read files', function (t) {
- // now read them
- var done = 0;
- for (var i = 0; i < num; ++i) {
- fs.readFile(paths[i], function(err, data) {
- if (err)
- throw err;
-
- ++done;
- if (done === num) {
- t.pass('success');
- t.end()
- }
- });
- }
-});
-
-test('cleanup', function (t) {
- rimraf.sync(p);
- t.end();
-});
diff --git a/deps/npm/node_modules/write-file-atomic/package.json b/deps/npm/node_modules/write-file-atomic/package.json
index 27f6694b7c0521..4fad94d3dd42dc 100644
--- a/deps/npm/node_modules/write-file-atomic/package.json
+++ b/deps/npm/node_modules/write-file-atomic/package.json
@@ -1,6 +1,6 @@
{
"name": "write-file-atomic",
- "version": "1.1.2",
+ "version": "1.1.3",
"description": "Write files in an atomic fashion w/configurable ownership",
"main": "index.js",
"scripts": {
@@ -8,7 +8,7 @@
},
"repository": {
"type": "git",
- "url": "git@github.com:iarna/write-file-atomic.git"
+ "url": "git+ssh://git@github.com/iarna/write-file-atomic.git"
},
"keywords": [
"writeFile",
@@ -25,26 +25,26 @@
},
"homepage": "https://github.com/iarna/write-file-atomic",
"dependencies": {
- "graceful-fs": "^3.0.2",
+ "graceful-fs": "^4.1.2",
"slide": "^1.1.5"
},
"devDependencies": {
"require-inject": "^1.1.0",
"tap": "^0.4.12"
},
- "gitHead": "b721f8a71223bcf162f1ee4ff4677f31de1c061f",
- "_id": "write-file-atomic@1.1.2",
- "_shasum": "ff3d61f1c2f5bb71e8ebe491a7157bf7d60435a4",
- "_from": "write-file-atomic@>=1.1.2 <1.2.0",
- "_npmVersion": "2.7.6",
- "_nodeVersion": "1.6.2",
+ "gitHead": "65a1e2e156c0d0bfb7acac2e039b943d6ec9876d",
+ "_id": "write-file-atomic@1.1.3",
+ "_shasum": "60eaca258a0b559b37aca82b21d64a293b4b90d0",
+ "_from": "write-file-atomic@1.1.3",
+ "_npmVersion": "3.3.0",
+ "_nodeVersion": "3.1.0",
"_npmUser": {
"name": "iarna",
"email": "me@re-becca.org"
},
"dist": {
- "shasum": "ff3d61f1c2f5bb71e8ebe491a7157bf7d60435a4",
- "tarball": "http://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.1.2.tgz"
+ "shasum": "60eaca258a0b559b37aca82b21d64a293b4b90d0",
+ "tarball": "http://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.1.3.tgz"
},
"maintainers": [
{
@@ -53,5 +53,5 @@
}
],
"directories": {},
- "_resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.1.2.tgz"
+ "_resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.1.3.tgz"
}
diff --git a/deps/npm/package.json b/deps/npm/package.json
index 4cee1cf1a74bf4..706307f68525b0 100644
--- a/deps/npm/package.json
+++ b/deps/npm/package.json
@@ -1,5 +1,5 @@
{
- "version": "2.13.3",
+ "version": "2.14.4",
"name": "npm",
"description": "a package manager for JavaScript",
"keywords": [
@@ -38,17 +38,17 @@
"async-some": "~1.0.2",
"block-stream": "0.0.8",
"char-spinner": "~1.0.1",
- "chmodr": "~0.1.1",
- "chownr": "0.0.2",
+ "chmodr": "~1.0.1",
+ "chownr": "~1.0.1",
"cmd-shim": "~2.0.1",
- "columnify": "~1.5.1",
+ "columnify": "~1.5.2",
"config-chain": "~1.1.9",
"dezalgo": "~1.0.3",
"editor": "~1.0.0",
- "fs-vacuum": "~1.2.6",
- "fs-write-stream-atomic": "~1.0.3",
- "fstream": "~1.0.7",
- "fstream-npm": "~1.0.4",
+ "fs-vacuum": "~1.2.7",
+ "fs-write-stream-atomic": "~1.0.4",
+ "fstream": "~1.0.8",
+ "fstream-npm": "~1.0.5",
"github-url-from-git": "~1.4.0",
"github-url-from-username-repo": "~1.0.2",
"glob": "~5.0.14",
@@ -57,46 +57,47 @@
"inflight": "~1.0.4",
"inherits": "~2.0.1",
"ini": "~1.3.4",
- "init-package-json": "~1.7.1",
+ "init-package-json": "~1.9.1",
"lockfile": "~1.0.1",
"lru-cache": "~2.6.5",
"minimatch": "~2.0.10",
"mkdirp": "~0.5.1",
- "node-gyp": "~2.0.2",
- "nopt": "~3.0.3",
+ "node-gyp": "~3.0.3",
+ "nopt": "~3.0.4",
"normalize-git-url": "~3.0.1",
- "normalize-package-data": "~2.3.1",
+ "normalize-package-data": "~2.3.2",
"npm-cache-filename": "~1.0.2",
"npm-install-checks": "~1.0.6",
"npm-package-arg": "~4.0.2",
- "npm-registry-client": "~6.5.1",
+ "npm-registry-client": "~7.0.1",
"npm-user-validate": "~0.1.2",
"npmlog": "~1.2.1",
"once": "~1.3.2",
"opener": "~1.4.1",
"osenv": "~0.1.3",
"path-is-inside": "~1.0.0",
- "read": "~1.0.6",
- "read-installed": "~4.0.2",
- "read-package-json": "~2.0.0",
+ "read": "~1.0.7",
+ "read-installed": "~4.0.3",
+ "read-package-json": "~2.0.1",
"readable-stream": "~1.1.13",
"realize-package-specifier": "~3.0.1",
- "request": "~2.60.0",
+ "request": "~2.61.0",
"retry": "~0.6.1",
- "rimraf": "~2.4.2",
+ "rimraf": "~2.4.3",
"semver": "~5.0.1",
"sha": "~1.3.0",
"slide": "~1.1.6",
"sorted-object": "~1.0.0",
"spdx": "~0.4.1",
- "tar": "~2.1.1",
+ "tar": "~2.2.1",
"text-table": "~0.2.0",
"uid-number": "0.0.6",
"umask": "~1.1.0",
+ "validate-npm-package-license": "~3.0.1",
"validate-npm-package-name": "~2.2.2",
- "which": "~1.1.1",
+ "which": "~1.1.2",
"wrappy": "~1.0.1",
- "write-file-atomic": "~1.1.2"
+ "write-file-atomic": "~1.1.3"
},
"bundleDependencies": [
"abbrev",
@@ -169,24 +170,25 @@
"write-file-atomic"
],
"devDependencies": {
- "deep-equal": "~1.0.0",
+ "deep-equal": "~1.0.1",
"marked": "~0.3.3",
"marked-man": "~0.1.5",
- "nock": "~2.7.0",
+ "nock": "~2.10.0",
"npm-registry-couchapp": "~2.6.7",
"npm-registry-mock": "~1.0.0",
"require-inject": "~1.2.0",
"sprintf-js": "~1.0.2",
- "tap": "~1.3.1"
+ "tap": "~1.4.1"
},
"scripts": {
- "test-legacy": "node ./test/run.js",
- "test": "tap --timeout 240 test/tap/*.js",
- "tap": "tap --timeout 240 test/tap/*.js",
- "test-all": "npm run test-legacy && npm test",
- "preversion": "bash scripts/update-authors.sh && git add AUTHORS && git commit -m \"update AUTHORS\" || true",
+ "dumpconf": "env | grep npm | sort | uniq",
"prepublish": "node bin/npm-cli.js prune --prefix=. --no-global && rimraf test/*/*/node_modules && make -j4 doc",
- "dumpconf": "env | grep npm | sort | uniq"
+ "preversion": "bash scripts/update-authors.sh && git add AUTHORS && git commit -m \"update AUTHORS\" || true",
+ "tap": "tap --timeout 240",
+ "test": "npm run test-tap",
+ "test-all": "npm run test-legacy && npm run test-tap",
+ "test-legacy": "node ./test/run.js",
+ "test-tap": "npm run tap -- \"test/tap/*.js\""
},
"license": "Artistic-2.0"
}
diff --git a/deps/npm/scripts/doc-build.sh b/deps/npm/scripts/doc-build.sh
index 6a5c7aa70f6b35..61819028be39b2 100755
--- a/deps/npm/scripts/doc-build.sh
+++ b/deps/npm/scripts/doc-build.sh
@@ -103,22 +103,15 @@ case $dest in
| man_replace_tokens > $dest
exit $?
;;
-
- html/partial/*.html)
- url=${dest/html\/partial\//}
- cat $src | ./node_modules/.bin/marked | html_replace_tokens $url > $dest
- ;;
-
- html/*.html)
+ *.html)
url=${dest/html\//}
(cat html/dochead.html && \
- cat $src && \
+ cat $src | ./node_modules/.bin/marked &&
cat html/docfoot.html)\
| html_replace_tokens $url \
> $dest
exit $?
;;
-
*)
echo "Invalid destination type: $dest" >&2
exit 1
diff --git a/deps/npm/test/fixtures/config/.npmrc b/deps/npm/test/fixtures/config/.npmrc
deleted file mode 100644
index 7d59bd8be1b82d..00000000000000
--- a/deps/npm/test/fixtures/config/.npmrc
+++ /dev/null
@@ -1 +0,0 @@
-just = testing
diff --git a/deps/npm/test/npm_cache/npm-test-preferglobal-dep/0.0.0/package.tgz b/deps/npm/test/npm_cache/npm-test-preferglobal-dep/0.0.0/package.tgz
deleted file mode 100644
index 3d33fc88a3f681..00000000000000
Binary files a/deps/npm/test/npm_cache/npm-test-preferglobal-dep/0.0.0/package.tgz and /dev/null differ
diff --git a/deps/npm/test/npm_cache/npm-test-preferglobal-dep/0.0.0/package/package.json b/deps/npm/test/npm_cache/npm-test-preferglobal-dep/0.0.0/package/package.json
deleted file mode 100644
index 75614bdfdaa6fe..00000000000000
--- a/deps/npm/test/npm_cache/npm-test-preferglobal-dep/0.0.0/package/package.json
+++ /dev/null
@@ -1 +0,0 @@
-{"name":"npm-test-preferglobal-dep","version":"0.0.0","preferGlobal":true,"readme":"ERROR: No README data found!","_id":"npm-test-preferglobal-dep@0.0.0","scripts":{},"_shasum":"48c51014a917da64c1770f91dc4db16525c7c5e2","_from":"../npm-test-preferglobal-dep","_resolved":"file:../npm-test-preferglobal-dep"}
\ No newline at end of file
diff --git a/deps/npm/test/npm_cache/registry.npmjs.org/jshint/.cache.json b/deps/npm/test/npm_cache/registry.npmjs.org/jshint/.cache.json
deleted file mode 100644
index eb4066830faef5..00000000000000
--- a/deps/npm/test/npm_cache/registry.npmjs.org/jshint/.cache.json
+++ /dev/null
@@ -1 +0,0 @@
-{"_id":"jshint","_rev":"322-0929561aae4ba51e3c4396517b42d181","name":"jshint","description":"Static analysis tool for JavaScript","dist-tags":{"latest":"2.8.0"},"versions":{"0.1.8":{"name":"jshint","version":"0.1.8","description":"a cli for jshint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"main":"./packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","lib","bin","package.json"],"dependencies":{"argsparser":">=0.0.3"},"_id":"jshint@0.1.8","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.17","_nodeVersion":"v0.4.2","directories":{"lib":"./lib","bin":"./bin"},"bin":{"jshint":"bin/jshint"},"_defaultsLoaded":true,"dist":{"shasum":"d90e12dccb1bc490409a079defa01e21ee16a6e8","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.1.8.tgz"}},"0.1.9":{"name":"jshint","version":"0.1.9","description":"a cli for jshint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"main":"./packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","lib","bin","package.json"],"dependencies":{"argsparser":">=0.0.3"},"_id":"jshint@0.1.9","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.17","_nodeVersion":"v0.4.2","directories":{"lib":"./lib","bin":"./bin"},"bin":{"jshint":"bin/jshint"},"_defaultsLoaded":true,"dist":{"shasum":"4ec9f0415c6746021de4b7eb5a3ca1a3ed7f33a7","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.1.9.tgz"}},"0.2.0":{"name":"jshint","version":"0.2.0","description":"a cli for jshint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"main":"./packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","lib","bin","package.json"],"dependencies":{"argsparser":">=0.0.3"},"_id":"jshint@0.2.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.17","_nodeVersion":"v0.4.2","directories":{"lib":"./lib","bin":"./bin"},"bin":{"jshint":"bin/jshint"},"_defaultsLoaded":true,"dist":{"shasum":"0c63f41429bb1a764ce5936f7aaaf806b771d947","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.2.0.tgz"}},"0.2.1":{"name":"jshint","version":"0.2.1","description":"a cli for jshint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP"],"dependencies":{"argsparser":">=0.0.3"},"devDependencies":{},"_id":"jshint@0.2.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"c8589746ff9750d89c4b9e3a0996a9f81b6493bc","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.2.1.tgz"},"scripts":{},"directories":{}},"0.2.2":{"name":"jshint","version":"0.2.2","description":"a cli for jshint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","bin/hint"],"dependencies":{"argsparser":">=0.0.3"},"_npmJsonOpts":{"file":"/Users/isaacs/.npm/jshint/0.2.2/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"jshint@0.2.2","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.13","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"77091e70ea88bc28904d8e0e7ae2c45b638b477a","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.2.2.tgz"},"scripts":{},"directories":{}},"0.2.3":{"name":"jshint","version":"0.2.3","description":"a cli for jshint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","bin/hint","lib"],"dependencies":{"argsparser":">=0.0.3"},"preferGlobal":true,"_npmJsonOpts":{"file":"/home/brent/.npm/jshint/0.2.3/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"jshint@0.2.3","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.15","_nodeVersion":"v0.4.8","_defaultsLoaded":true,"dist":{"shasum":"d31480ae27228f1c4a7267d521b85fcb9662e53e","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.2.3.tgz"},"scripts":{},"directories":{}},"0.3.0":{"name":"jshint","version":"0.3.0","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","bin/hint","lib"],"dependencies":{"argsparser":">=0.0.3","glob":">=2.0.7"},"preferGlobal":true,"_npmJsonOpts":{"file":"/Users/brent/.npm/jshint/0.3.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"jshint@0.3.0","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"b011c63b3a805e80e03453768f5a399e02fe5bc0","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.3.0.tgz"},"scripts":{},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"}],"directories":{}},"0.3.1":{"name":"jshint","version":"0.3.1","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","bin/hint","lib"],"dependencies":{"argsparser":">=0.0.3","glob":">=2.0.7"},"preferGlobal":true,"_npmJsonOpts":{"file":"/Users/brent/.npm/jshint/0.3.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"jshint@0.3.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"260df1eaaa6462becf1693da55e831fa87abcb69","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.3.1.tgz"},"scripts":{},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"}],"directories":{}},"0.4.0":{"name":"jshint","version":"0.4.0","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","bin/hint","lib"],"dependencies":{"argsparser":">=0.0.3","glob":">=2.0.7","jasmine-node":"1.0.7"},"bundledDependencies":["argsparser","glob"],"preferGlobal":true,"_npmJsonOpts":{"file":"/Users/brent/.npm/jshint/0.4.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"jshint@0.4.0","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.27","_nodeVersion":"v0.4.11","_defaultsLoaded":true,"dist":{"shasum":"8349e2e7bb89147c8c8b47c8b1353d735af6dfeb","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.4.0.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"}],"directories":{}},"0.5.0":{"name":"jshint","version":"0.5.0","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","bin/hint","lib"],"dependencies":{"argsparser":">=0.0.3","jasmine-node":"1.0.7","minimatch":">=0.0.4"},"preferGlobal":true,"_npmUser":{"name":"brentlintner","email":"brent.lintner@gmail.com"},"_id":"jshint@0.5.0","bundleDependencies":["argsparser","minimatch"],"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.93","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"a2351b0dbd7ba63f7b94da7d0769ac600e788fdd","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.5.0.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"}],"directories":{}},"0.5.1":{"name":"jshint","version":"0.5.1","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","bin/hint","lib"],"dependencies":{"argsparser":">=0.0.3","minimatch":">=0.0.4"},"devDependencies":{"jasmine-node":"1.0.7"},"preferGlobal":true,"_npmUser":{"name":"brentlintner","email":"brent.lintner@gmail.com"},"_id":"jshint@0.5.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.99","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"3bc469d32d67e818055799cc2f7212a6f9b8d25a","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.5.1.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"}],"directories":{}},"0.5.2":{"name":"jshint","version":"0.5.2","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","bin/hint","lib"],"dependencies":{"argsparser":">=0.0.3","minimatch":">=0.0.4"},"devDependencies":{"jasmine-node":"1.0.7"},"preferGlobal":true,"_npmUser":{"name":"brentlintner","email":"brent.lintner@gmail.com"},"_id":"jshint@0.5.2","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.99","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"2db6c1b8597fd820ae161f60d77c9db12efe40b9","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.5.2.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"}],"directories":{}},"0.5.3":{"name":"jshint","version":"0.5.3","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","bin/hint","lib"],"dependencies":{"argsparser":">=0.0.3","minimatch":">=0.0.4"},"devDependencies":{"jasmine-node":"1.0.7"},"preferGlobal":true,"_npmUser":{"name":"brentlintner","email":"brent.lintner@gmail.com"},"_id":"jshint@0.5.3","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-2","_nodeVersion":"v0.6.3","_defaultsLoaded":true,"dist":{"shasum":"7519c1c8d42eca0799f4f30e58b172ff806f5e78","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.5.3.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"}],"directories":{}},"0.5.4":{"name":"jshint","version":"0.5.4","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","bin/hint","lib"],"dependencies":{"argsparser":">=0.0.3","minimatch":">=0.0.4"},"devDependencies":{"jasmine-node":"1.0.7"},"preferGlobal":true,"_npmUser":{"name":"brentlintner","email":"brent.lintner@gmail.com"},"_id":"jshint@0.5.4","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-2","_nodeVersion":"v0.6.3","_defaultsLoaded":true,"dist":{"shasum":"7660480d2a99fd693addbaeecb56ac5d6ad4e1e2","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.5.4.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"}],"directories":{}},"0.5.5":{"name":"jshint","version":"0.5.5","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","bin/hint","lib"],"dependencies":{"argsparser":">=0.0.3","minimatch":">=0.0.4"},"devDependencies":{"jasmine-node":"1.0.7"},"preferGlobal":true,"_npmUser":{"name":"brentlintner","email":"brent.lintner@gmail.com"},"_id":"jshint@0.5.5","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-2","_nodeVersion":"v0.6.3","_defaultsLoaded":true,"dist":{"shasum":"f2a2a69ea0d159058cfd56a6bd481866e6d82a82","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.5.5.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"}],"directories":{}},"0.5.6":{"name":"jshint","version":"0.5.6","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","bin/hint","lib"],"dependencies":{"argsparser":">=0.0.3","minimatch":">=0.0.4"},"devDependencies":{"jasmine-node":"1.0.7"},"preferGlobal":true,"_npmUser":{"name":"brentlintner","email":"brent.lintner@gmail.com"},"_id":"jshint@0.5.6","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"64ed3d3701d2becbd3f838b4d4280aef72731b2c","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.5.6.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"}],"directories":{}},"0.5.7":{"name":"jshint","version":"0.5.7","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","bin/hint","lib"],"dependencies":{"argsparser":">=0.0.3","minimatch":">=0.0.4"},"devDependencies":{"jasmine-node":"1.0.7"},"preferGlobal":true,"_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"_id":"jshint@0.5.7","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"d7944db46f3bb7baefea3d13f23c99a8cd5b753b","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.5.7.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"0.5.8":{"name":"jshint","version":"0.5.8","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","bin/hint","lib"],"dependencies":{"argsparser":">=0.0.3","minimatch":">=0.0.4"},"devDependencies":{"jasmine-node":"1.0.7"},"preferGlobal":true,"_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"_id":"jshint@0.5.8","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"8ce1e5a237aa1d1d8957e6b048028dc26a3e22a8","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.5.8.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"0.5.9":{"name":"jshint","version":"0.5.9","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","bin/hint","lib"],"dependencies":{"argsparser":">=0.0.3","minimatch":">=0.0.4"},"devDependencies":{"jasmine-node":"1.0.7"},"preferGlobal":true,"_npmUser":{"name":"brentlintner","email":"brent.lintner@gmail.com"},"_id":"jshint@0.5.9","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"ccb5ba9d2818dfe78857feaa71ccba0cb10aebc9","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.5.9.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"0.6.0":{"name":"jshint","version":"0.6.0","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","bin/hint","lib"],"dependencies":{"argsparser":"0.0.x","minimatch":"0.0.x"},"devDependencies":{"jasmine-node":"1.0.x"},"preferGlobal":true,"_npmUser":{"name":"brentlintner","email":"brent.lintner@gmail.com"},"_id":"jshint@0.6.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"38c95b34c825861cb7123f913cbcbe9091247d25","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.6.0.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"0.6.1":{"name":"jshint","version":"0.6.1","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","bin/hint","lib"],"dependencies":{"argsparser":"0.0.x","minimatch":"0.0.x"},"devDependencies":{"jasmine-node":"1.0.x"},"preferGlobal":true,"_npmUser":{"name":"brentlintner","email":"brent.lintner@gmail.com"},"_id":"jshint@0.6.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"5b9e69b5867cb356e25d49d7a642a696207e46fa","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.6.1.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"0.6.2":{"name":"jshint","version":"0.6.2","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","bin/hint","lib"],"dependencies":{"argsparser":"0.0.x","minimatch":"0.0.x"},"devDependencies":{"jasmine-node":"1.0.x"},"preferGlobal":true,"_npmUser":{"name":"brentlintner","email":"brent.lintner@gmail.com"},"_id":"jshint@0.6.2","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"b461612bf710df8d71d4274e04f5dcc7bee2a4d1","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.6.2.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"0.6.3":{"name":"jshint","version":"0.6.3","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","bin/hint","lib"],"dependencies":{"argsparser":"0.0.x","minimatch":"0.0.x"},"devDependencies":{"jasmine-node":"1.0.x"},"preferGlobal":true,"_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"_id":"jshint@0.6.3","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"d07c254c928a842fbe92881ad3342c98bdd79530","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.6.3.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"0.7.0":{"name":"jshint","version":"0.7.0","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","HELP","bin/hint","lib"],"dependencies":{"cli":"0.4.3","minimatch":"0.0.x"},"devDependencies":{"jasmine-node":"1.0.x"},"preferGlobal":true,"_npmUser":{"name":"brentlintner","email":"brent.lintner@gmail.com"},"_id":"jshint@0.7.0","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"4070f1ed3c13c154ce87eb4037593bbb5e4d9cd8","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.7.0.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"0.7.1":{"name":"jshint","version":"0.7.1","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","bin/hint","lib"],"dependencies":{"cli":"0.4.3","minimatch":"0.0.x"},"devDependencies":{"jasmine-node":"1.0.x"},"preferGlobal":true,"_npmUser":{"name":"brentlintner","email":"brent.lintner@gmail.com"},"_id":"jshint@0.7.1","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"7c62cdd1b260ec71743a9851ce79a9fc9d22ff15","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.7.1.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"0.7.2":{"name":"jshint","version":"0.7.2","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","bin/hint","lib"],"dependencies":{"cli":"0.4.3","minimatch":"0.0.x"},"devDependencies":{"jasmine-node":"1.0.x"},"preferGlobal":true,"_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"_id":"jshint@0.7.2","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"35064bd9aef2798e56ae9e81962bdd3435151510","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.7.2.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"0.7.3":{"name":"jshint","version":"0.7.3","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","bin/hint","lib"],"dependencies":{"cli":"0.4.3","minimatch":"0.0.x"},"devDependencies":{"jasmine-node":"1.0.x"},"preferGlobal":true,"_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"_id":"jshint@0.7.3","optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"a1920fe3d12401d36333955691e14e888796e218","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.7.3.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"0.8.0":{"name":"jshint","version":"0.8.0","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","bin/hint","lib"],"dependencies":{"cli":"0.4.3","minimatch":"0.0.x"},"devDependencies":{"jasmine-node":"1.0.x"},"preferGlobal":true,"_id":"jshint@0.8.0","dist":{"shasum":"19393131b1bdff8fadb94c104be8425e65fdade4","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.8.0.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"0.8.1":{"name":"jshint","version":"0.8.1","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","bin/hint","lib"],"dependencies":{"cli":"0.4.3","minimatch":"0.0.x"},"devDependencies":{"jasmine-node":"1.0.x"},"preferGlobal":true,"_id":"jshint@0.8.1","dist":{"shasum":"9bcaeb31a7fd3e799d4bea20be784724feeabead","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.8.1.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"0.8.2":{"name":"jshint","version":"0.8.2","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","bin/hint","lib"],"dependencies":{"cli":"0.4.3","minimatch":"0.0.x"},"devDependencies":{"jasmine-node":"1.0.x"},"preferGlobal":true,"_id":"jshint@0.8.2","dist":{"shasum":"b49311dcbcf7c8cb8aa81319372959f201013191","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.8.2.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"0.9.0":{"name":"jshint","version":"0.9.0","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","bin/hint","lib"],"dependencies":{"cli":"0.4.3","minimatch":"0.0.x"},"devDependencies":{"jasmine-node":"1.0.x"},"preferGlobal":true,"_id":"jshint@0.9.0","dist":{"shasum":"225022bdeb44ac608ce5773ebe01e020eef413c3","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.9.0.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"0.9.1":{"name":"jshint","version":"0.9.1","description":"A CLI for JSHint","homepage":"http://github.com/jshint/node-jshint","author":{"name":"Brent Lintner","email":"brent.lintner@gmail.com","url":"http://github.com/brentlintner"},"licenses":[{"type":"MIT","url":"http://www.opensource.org/licenses/mit-license.php"}],"bin":{"jshint":"./bin/hint"},"main":"packages/jshint/jshint","files":["packages/jshint/README.markdown","packages/jshint/jshint.js","README.md","LICENSE","bin/hint","lib"],"dependencies":{"cli":"0.4.3","minimatch":"0.0.x"},"devDependencies":{"jasmine-node":"1.0.x"},"preferGlobal":true,"_id":"jshint@0.9.1","dist":{"shasum":"ff32ec7f09f84001f7498eeafd63c9e4fbb2dc0e","tarball":"http://registry.npmjs.org/jshint/-/jshint-0.9.1.tgz"},"_npmVersion":"1.1.59","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"1.0.0":{"name":"jshint","version":"1.0.0","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"bin":{"jshint":"./bin/jshint"},"scripts":{"test":"node ./make.js test","lint":"node ./make.js lint"},"main":"./src/stable/jshint.js","dependencies":{"esprima":"https://github.com/ariya/esprima/tarball/master","shelljs":"*","underscore":"*","peakle":"*","cli":"0.4.3","minimatch":"0.x.x"},"devDependencies":{"jshint":"*","shelljs":"*","browserify":"*","coveraje":"*","nodeunit":"*","sinon":"*"},"preferGlobal":true,"_id":"jshint@1.0.0","dist":{"shasum":"dcd5b7adf776a9f65197990b61fcfa71a3256f03","tarball":"http://registry.npmjs.org/jshint/-/jshint-1.0.0.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"1.1.0":{"name":"jshint","version":"1.1.0","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"bin":{"jshint":"./bin/jshint"},"scripts":{"test":"node ./make.js test","lint":"node ./make.js lint"},"main":"./src/stable/jshint.js","dependencies":{"esprima":"https://github.com/ariya/esprima/tarball/master","shelljs":"0.1.x","underscore":"1.4.x","peakle":"0.0.x","cli":"0.4.x","minimatch":"0.x.x"},"devDependencies":{"jshint":"1.1.0","shelljs":"0.1.x","browserify":"1.16.1","coveraje":"0.2.x","nodeunit":"0.7.x","sinon":"1.6.x"},"preferGlobal":true,"_id":"jshint@1.1.0","dist":{"shasum":"9987b90b860556cbc7f380d5755a23d504213513","tarball":"http://registry.npmjs.org/jshint/-/jshint-1.1.0.tgz"},"_npmVersion":"1.1.63","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.0.0":{"name":"jshint","version":"2.0.0","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node ./make.js build","test":"node ./make.js test","lint":"node ./make.js lint"},"main":"./src/stable/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x"},"devDependencies":{"jshint":"1.1.0","shelljs":"0.1.x","browserify":"2.12.x","coveraje":"0.2.x","nodeunit":"0.7.x","sinon":"1.6.x","console-browserify":"0.1.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"_id":"jshint@2.0.0","dist":{"shasum":"4a5618819c4e7f63b00bf0ff387ee1360c924306","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.0.0.tgz"},"_npmVersion":"1.1.63","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.0.1":{"name":"jshint","version":"2.0.1","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node ./make.js build","test":"node ./make.js test","lint":"node ./make.js lint"},"main":"./src/stable/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","console-browserify":"0.1.x"},"devDependencies":{"jshint":"1.1.0","shelljs":"0.1.x","browserify":"2.12.x","coveraje":"0.2.x","nodeunit":"0.7.x","sinon":"1.6.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"_id":"jshint@2.0.1","dist":{"shasum":"b04cde939472afd7ba0ecf98cd0175ba9ed445a4","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.0.1.tgz"},"_npmVersion":"1.1.63","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.1.0":{"name":"jshint","version":"2.1.0","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node ./make.js build","test":"node ./make.js test","lint":"node ./make.js lint"},"main":"./src/stable/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","console-browserify":"0.1.x"},"devDependencies":{"jshint":"1.1.0","shelljs":"0.1.x","browserify":"2.12.x","coveraje":"0.2.x","nodeunit":"0.7.x","sinon":"1.6.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"_id":"jshint@2.1.0","dist":{"shasum":"a824d872d4a291c8bb0bda9a3aa4f7dfdf2959e1","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.1.0.tgz"},"_npmVersion":"1.1.63","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.1.1":{"name":"jshint","version":"2.1.1","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node ./make.js build","test":"node ./make.js test","lint":"node ./make.js lint"},"main":"./src/stable/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","console-browserify":"0.1.x"},"devDependencies":{"jshint":"1.1.0","shelljs":"0.1.x","browserify":"2.12.x","coveraje":"0.2.x","nodeunit":"0.7.x","sinon":"1.6.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"_id":"jshint@2.1.1","dist":{"shasum":"a5611a822407a3a6a51079318b8897d85abd2cb8","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.1.1.tgz"},"_npmVersion":"1.1.63","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.1.2":{"name":"jshint","version":"2.1.2","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node ./make.js build","test":"node ./make.js test","lint":"node ./make.js lint"},"main":"./src/stable/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","console-browserify":"0.1.x"},"devDependencies":{"jshint":"1.1.0","shelljs":"0.1.x","browserify":"2.12.x","coveraje":"0.2.x","nodeunit":"0.7.x","sinon":"1.6.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"_id":"jshint@2.1.2","dist":{"shasum":"1fb7b77df7b8620c17d4f807945bb2d24990969e","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.1.2.tgz"},"_npmVersion":"1.1.63","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.1.3":{"name":"jshint","version":"2.1.3","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node ./make.js build","test":"node ./make.js test","lint":"node ./make.js lint"},"main":"./src/stable/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","console-browserify":"0.1.x"},"devDependencies":{"jshint":"2.1.x","shelljs":"0.1.x","browserify":"2.12.x","coveraje":"0.2.x","nodeunit":"0.8.x","sinon":"1.7.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"_id":"jshint@2.1.3","dist":{"shasum":"2392e062f7f080fc5ee6d6db8164b6c81b1abaaf","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.1.3.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.1.4":{"name":"jshint","version":"2.1.4","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node ./make.js build","test":"node ./make.js test","lint":"node ./make.js lint"},"main":"./src/stable/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","console-browserify":"0.1.x"},"devDependencies":{"jshint":"2.1.x","shelljs":"0.1.x","browserify":"2.12.x","coveraje":"0.2.x","nodeunit":"0.8.x","sinon":"1.7.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"_id":"jshint@2.1.4","dist":{"shasum":"8d5be86628eea91c073c8700dd6e4c90afd9ab38","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.1.4.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.1.5":{"name":"jshint","version":"2.1.5","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node ./make.js build","test":"node ./make.js test","lint":"node ./make.js lint"},"main":"./src/stable/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","console-browserify":"0.1.x"},"devDependencies":{"jshint":"2.1.x","shelljs":"0.1.x","browserify":"2.12.x","coveraje":"0.2.x","nodeunit":"0.8.x","sinon":"1.7.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src"],"_id":"jshint@2.1.5","dist":{"shasum":"fc95a40ea89a14522fec1d03950f6eaa0e363499","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.1.5.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.1.6":{"name":"jshint","version":"2.1.6","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node ./make.js build","test":"node ./make.js test","lint":"node ./make.js lint"},"main":"./src/stable/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","console-browserify":"0.1.x"},"devDependencies":{"jshint":"2.1.x","shelljs":"0.1.x","browserify":"2.12.x","coveraje":"0.2.x","nodeunit":"0.8.x","sinon":"1.7.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src"],"_id":"jshint@2.1.6","dist":{"shasum":"8e00e8893099128fc3d4478e3aedba8079ff3b02","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.1.6.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.1.7":{"name":"jshint","version":"2.1.7","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node ./make.js build","test":"node ./make.js test","lint":"node ./make.js lint"},"main":"./src/stable/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","console-browserify":"0.1.x"},"devDependencies":{"jshint":"2.1.x","shelljs":"0.1.x","browserify":"2.12.x","coveraje":"0.2.x","nodeunit":"0.8.x","sinon":"1.7.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src"],"_id":"jshint@2.1.7","dist":{"shasum":"11f4214333a0cd2df88057b88c4d751d0c0658a0","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.1.7.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.1.8":{"name":"jshint","version":"2.1.8","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node ./make.js build","test":"node ./make.js test","lint":"node ./make.js lint"},"main":"./src/stable/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","console-browserify":"0.1.x"},"devDependencies":{"jshint":"2.1.x","shelljs":"0.1.x","browserify":"2.12.x","coveraje":"0.2.x","nodeunit":"0.8.x","sinon":"1.7.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src"],"_id":"jshint@2.1.8","dist":{"shasum":"c4bfe5c28718d101148cfba9e285053a7671ccf2","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.1.8.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.1.9":{"name":"jshint","version":"2.1.9","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node make.js build","test":"nodeunit tests tests/stable/regression tests/stable/unit","pretest":"jshint --config=jshint.json src"},"main":"./src/stable/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","console-browserify":"0.1.x"},"devDependencies":{"jshint":"2.1.x","shelljs":"0.1.x","browserify":"2.12.x","coveraje":"0.2.x","nodeunit":"0.8.x","sinon":"1.7.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src"],"_id":"jshint@2.1.9","dist":{"shasum":"65cdbb2302cbf27e45db0066669b5d5e74f66465","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.1.9.tgz"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.1.10":{"name":"jshint","version":"2.1.10","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node make.js build","test":"nodeunit tests tests/regression tests/unit","pretest":"jshint src"},"main":"./src/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","console-browserify":"0.1.x"},"devDependencies":{"jshint":"2.1.x","shelljs":"0.1.x","browserify":"2.12.x","coveraje":"0.2.x","nodeunit":"0.8.x","sinon":"1.7.x"},"jshintConfig":{"boss":true,"node":true,"strict":true,"white":true,"smarttabs":true,"maxlen":100,"newcap":false,"undef":true,"unused":true,"onecase":true,"indent":2},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src"],"_id":"jshint@2.1.10","dist":{"shasum":"0c015ec5bc5ad65c11c4b5152f221f24b7af5522","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.1.10.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.1.11":{"name":"jshint","version":"2.1.11","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node bin/build","test":"nodeunit tests tests/regression tests/unit","pretest":"jshint src"},"main":"./src/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","console-browserify":"0.1.x"},"devDependencies":{"jshint":"2.1.x","shelljs":"0.1.x","browserify":"2.12.x","coveraje":"0.2.x","nodeunit":"0.8.x","sinon":"1.7.x"},"jshintConfig":{"boss":true,"node":true,"strict":true,"white":true,"smarttabs":true,"maxlen":100,"newcap":false,"undef":true,"unused":true,"onecase":true,"indent":2},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src"],"_id":"jshint@2.1.11","dist":{"shasum":"eb5108fef9ba5ddebb830983f572d242e49e3f96","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.1.11.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.2.0":{"name":"jshint","version":"2.2.0","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"data":"node scripts/generate-identifier-data","build":"node bin/build","test":"nodeunit tests tests/regression tests/unit","pretest":"jshint src"},"main":"./src/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","console-browserify":"0.1.x"},"devDependencies":{"jshint":"2.1.x","shelljs":"0.1.x","browserify":"2.12.x","coveraje":"0.2.x","nodeunit":"0.8.x","sinon":"1.7.x","unicode-6.3.0":"0.1.x","regenerate":"0.5.x"},"jshintConfig":{"boss":true,"node":true,"strict":true,"white":true,"smarttabs":true,"maxlen":100,"newcap":false,"undef":true,"unused":true,"onecase":true,"indent":2},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src","data"],"_id":"jshint@2.2.0","dist":{"shasum":"9cd120e17c6635a5bfd6339531b088ed33eb5af2","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.2.0.tgz"},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.3.0":{"name":"jshint","version":"2.3.0","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"data":"node scripts/generate-identifier-data","build":"node bin/build","test":"nodeunit tests tests/regression tests/unit","pretest":"jshint src"},"main":"./src/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","console-browserify":"0.1.x"},"devDependencies":{"jshint":"2.3.x","shelljs":"0.1.x","browserify":"2.12.x","coveraje":"0.2.x","nodeunit":"0.8.x","sinon":"1.7.x","unicode-6.3.0":"0.1.x","regenerate":"0.5.x"},"jshintConfig":{"boss":true,"node":true,"strict":true,"white":true,"smarttabs":true,"maxlen":100,"newcap":false,"undef":true,"unused":true,"onecase":true,"indent":2},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src","data"],"_id":"jshint@2.3.0","dist":{"shasum":"19504455a2c20c46ee183361eb87f3a1c0b7dc47","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.3.0.tgz"},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.4.0":{"name":"jshint","version":"2.4.0","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"data":"node scripts/generate-identifier-data","build":"node bin/build","test":"nodeunit tests tests/regression tests/unit","pretest":"jshint src"},"main":"./src/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","htmlparser2":"3.3.x","console-browserify":"0.1.x"},"devDependencies":{"jshint":"2.4.x","shelljs":"0.1.x","browserify":"3.x","coveraje":"0.2.x","nodeunit":"0.8.x","sinon":"1.7.x","unicode-6.3.0":"0.1.x","regenerate":"0.5.x"},"jshintConfig":{"boss":true,"node":true,"strict":true,"white":true,"smarttabs":true,"maxlen":100,"newcap":false,"undef":true,"unused":true,"onecase":true,"indent":2},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src","data"],"_id":"jshint@2.4.0","dist":{"shasum":"31717646cee2137cdd7f1b773c3fce58f4d99fc5","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.4.0.tgz"},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.4.1":{"name":"jshint","version":"2.4.1","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"data":"node scripts/generate-identifier-data","build":"node bin/build","test":"nodeunit tests tests/regression tests/unit","pretest":"jshint src"},"main":"./src/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","htmlparser2":"3.3.x","console-browserify":"0.1.x"},"devDependencies":{"jshint":"2.4.x","shelljs":"0.1.x","browserify":"3.x","coveraje":"0.2.x","nodeunit":"0.8.x","sinon":"1.7.x","unicode-6.3.0":"0.1.x","regenerate":"0.5.x"},"jshintConfig":{"boss":true,"node":true,"strict":true,"white":true,"smarttabs":true,"maxlen":100,"newcap":false,"undef":true,"unused":true,"onecase":true,"indent":2},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src","data"],"_id":"jshint@2.4.1","dist":{"shasum":"833f361a56577b80816b64f18434cce3b3942591","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.4.1.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.4.2":{"name":"jshint","version":"2.4.2","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"data":"node scripts/generate-identifier-data","build":"node bin/build","test":"nodeunit tests tests/regression tests/unit","pretest":"jshint src"},"main":"./src/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","htmlparser2":"3.3.x","console-browserify":"0.1.x"},"devDependencies":{"jshint":"2.4.x","shelljs":"0.1.x","browserify":"3.x","coveraje":"0.2.x","nodeunit":"0.8.x","sinon":"1.7.x","unicode-6.3.0":"0.1.x","regenerate":"0.5.x"},"jshintConfig":{"boss":true,"node":true,"strict":true,"white":true,"smarttabs":true,"maxlen":100,"newcap":false,"undef":true,"unused":true,"onecase":true,"indent":2},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src","data"],"_id":"jshint@2.4.2","dist":{"shasum":"4f85a8e3133e5bded5b84e06718889bcbb9fa4d0","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.4.2.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.4.3":{"name":"jshint","version":"2.4.3","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"data":"node scripts/generate-identifier-data","build":"node bin/build","test":"nodeunit tests tests/regression tests/unit","pretest":"jshint src"},"main":"./src/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","htmlparser2":"3.3.x","console-browserify":"0.1.x"},"devDependencies":{"jshint":"2.4.x","shelljs":"0.1.x","browserify":"3.x","coveraje":"0.2.x","nodeunit":"0.8.x","sinon":"1.7.x","unicode-6.3.0":"0.1.x","regenerate":"0.5.x"},"jshintConfig":{"boss":true,"node":true,"strict":true,"white":true,"smarttabs":true,"maxlen":100,"newcap":false,"undef":true,"unused":true,"onecase":true,"indent":2},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src","data"],"_id":"jshint@2.4.3","dist":{"shasum":"1beb074b4d9f817773bb5aa16882fd67164c216a","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.4.3.tgz"},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.4.4":{"name":"jshint","version":"2.4.4","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"data":"node scripts/generate-identifier-data","build":"node bin/build","test":"nodeunit tests tests/regression tests/unit","pretest":"jshint src"},"main":"./src/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","htmlparser2":"3.3.x","console-browserify":"0.1.x","exit":"0.1.x"},"devDependencies":{"jshint":"2.4.x","shelljs":"0.1.x","browserify":"3.x","coveraje":"0.2.x","nodeunit":"0.8.x","sinon":"1.7.x","unicode-6.3.0":"0.1.x","regenerate":"0.5.x"},"jshintConfig":{"boss":true,"node":true,"strict":true,"white":true,"smarttabs":true,"maxlen":100,"newcap":false,"undef":true,"unused":true,"onecase":true,"indent":2},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src","data"],"_id":"jshint@2.4.4","dist":{"shasum":"4162238314c649f987752651e8e064e30a68706e","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.4.4.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"brentlintner","email":"brent.lintner@gmail.com"},{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.5.0":{"name":"jshint","version":"2.5.0","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"data":"node scripts/generate-identifier-data","build":"node bin/build","test":"nodeunit tests tests/regression tests/unit","pretest":"jshint src"},"main":"./src/jshint.js","dependencies":{"shelljs":"0.1.x","underscore":"1.4.x","cli":"0.4.x","minimatch":"0.x.x","htmlparser2":"3.3.x","console-browserify":"0.1.x","exit":"0.1.x","strip-json-comments":"0.1.x"},"devDependencies":{"jshint":"2.4.x","shelljs":"0.1.x","browserify":"3.x","coveraje":"0.2.x","nodeunit":"0.8.x","sinon":"1.7.x","unicode-6.3.0":"0.1.x","regenerate":"0.5.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src","data"],"_id":"jshint@2.5.0","dist":{"shasum":"82fd1a235ffce75fad1b40b2a38bef47beac8c54","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.5.0.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.5.1":{"name":"jshint","version":"2.5.1","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"data":"node scripts/generate-identifier-data","build":"node bin/build","test":"nodeunit tests tests/regression tests/unit","pretest":"jshint src"},"main":"./src/jshint.js","dependencies":{"shelljs":"0.3.x","underscore":"1.6.x","cli":"0.6.x","minimatch":"0.x.x","htmlparser2":"3.7.x","console-browserify":"1.1.x","exit":"0.1.x","strip-json-comments":"0.1.x"},"devDependencies":{"jshint":"2.5.x","browserify":"4.x","coveraje":"0.2.x","nodeunit":"0.9.x","sinon":"1.9.x","unicode-6.3.0":"0.1.x","regenerate":"0.6.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src","data","dist"],"_id":"jshint@2.5.1","dist":{"shasum":"8e96d27377806767d40f16676fbec113d33520ec","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.5.1.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.5.2":{"name":"jshint","version":"2.5.2","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"data":"node scripts/generate-identifier-data","build":"node bin/build","test":"nodeunit tests tests/regression tests/unit","pretest":"jshint src"},"main":"./src/jshint.js","dependencies":{"shelljs":"0.3.x","underscore":"1.6.x","cli":"0.6.x","minimatch":"0.x.x","htmlparser2":"3.7.x","console-browserify":"1.1.x","exit":"0.1.x","strip-json-comments":"0.1.x"},"devDependencies":{"jshint":"2.5.x","browserify":"4.x","coveraje":"0.2.x","nodeunit":"0.9.x","sinon":"1.9.x","unicode-6.3.0":"0.1.x","regenerate":"0.6.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src","data","dist"],"_id":"jshint@2.5.2","dist":{"shasum":"bec223d5149e49ef6ea96dcf8b3504a27613e8be","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.5.2.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"antonkovalyov","email":"anton@kovalyov.net"},"maintainers":[{"name":"antonkovalyov","email":"anton@kovalyov.net"}],"directories":{}},"2.5.3":{"name":"jshint","version":"2.5.3","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"data":"node scripts/generate-identifier-data","build":"node bin/build","test":"nodeunit tests tests/regression tests/unit","pretest":"jshint src"},"main":"./src/jshint.js","dependencies":{"shelljs":"0.3.x","underscore":"1.6.x","cli":"0.6.x","minimatch":"0.x.x","htmlparser2":"3.7.x","console-browserify":"1.1.x","exit":"0.1.x","strip-json-comments":"0.1.x"},"devDependencies":{"jshint":"2.5.x","browserify":"4.x","coveraje":"0.2.x","nodeunit":"0.9.x","sinon":"1.9.x","unicode-6.3.0":"0.1.x","regenerate":"0.6.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src","data","dist"],"gitHead":"e3250b47e0c1fbb11a782864166900ba5b60cf41","_id":"jshint@2.5.3","_shasum":"821c14ff5ccaa458ae1b34a2caa70bf753f963ea","_from":".","_npmVersion":"1.5.0-alpha-1","_npmUser":{"name":"rwaldron","email":"waldron.rick@gmail.com"},"maintainers":[{"name":"antonkovalyov","email":"anton@kovalyov.net"},{"name":"rwaldron","email":"waldron.rick@gmail.com"}],"dist":{"shasum":"821c14ff5ccaa458ae1b34a2caa70bf753f963ea","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.5.3.tgz"},"directories":{}},"2.5.4":{"name":"jshint","version":"2.5.4","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"data":"node scripts/generate-identifier-data","build":"node bin/build","test":"nodeunit tests tests/regression tests/unit","pretest":"jshint src"},"main":"./src/jshint.js","dependencies":{"shelljs":"0.3.x","underscore":"1.6.x","cli":"0.6.x","minimatch":"0.x.x","htmlparser2":"3.7.x","console-browserify":"1.1.x","exit":"0.1.x","strip-json-comments":"0.1.x"},"devDependencies":{"jshint":"2.5.x","browserify":"4.x","coveraje":"0.2.x","nodeunit":"0.9.x","sinon":"1.9.x","unicode-6.3.0":"0.1.x","regenerate":"0.6.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src","data","dist"],"gitHead":"be724857242ecf6931387feed23d5cae285354d0","_id":"jshint@2.5.4","_shasum":"3dc82cb37b381b65f0e95ec7a616d39b4e95faef","_from":".","_npmVersion":"1.5.0-alpha-1","_npmUser":{"name":"rwaldron","email":"waldron.rick@gmail.com"},"maintainers":[{"name":"antonkovalyov","email":"anton@kovalyov.net"},{"name":"rwaldron","email":"waldron.rick@gmail.com"}],"dist":{"shasum":"3dc82cb37b381b65f0e95ec7a616d39b4e95faef","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.5.4.tgz"},"directories":{}},"2.5.5":{"name":"jshint","version":"2.5.5","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"data":"node scripts/generate-identifier-data","build":"node bin/build","test":"nodeunit tests tests/regression tests/unit","pretest":"jshint src"},"main":"./src/jshint.js","dependencies":{"shelljs":"0.3.x","underscore":"1.6.x","cli":"0.6.x","minimatch":"0.x.x","htmlparser2":"3.7.x","console-browserify":"1.1.x","exit":"0.1.x","strip-json-comments":"0.1.x"},"devDependencies":{"jshint":"2.5.x","browserify":"4.x","coveraje":"0.2.x","nodeunit":"0.9.x","sinon":"1.9.x","unicode-6.3.0":"0.1.x","regenerate":"0.6.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src","data","dist"],"gitHead":"94df11c872bccd979c8deffed612e4421abdf17d","_id":"jshint@2.5.5","_shasum":"9f24958dcd11c5e2ceba96ec92225873b02f4775","_from":".","_npmVersion":"1.5.0-alpha-1","_npmUser":{"name":"rwaldron","email":"waldron.rick@gmail.com"},"maintainers":[{"name":"antonkovalyov","email":"anton@kovalyov.net"},{"name":"rwaldron","email":"waldron.rick@gmail.com"}],"dist":{"shasum":"9f24958dcd11c5e2ceba96ec92225873b02f4775","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.5.5.tgz"},"directories":{}},"2.5.6":{"name":"jshint","version":"2.5.6","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"data":"node scripts/generate-identifier-data","build":"node bin/build","test":"nodeunit tests tests/regression tests/unit","pretest":"jshint src"},"main":"./src/jshint.js","dependencies":{"shelljs":"0.3.x","underscore":"1.6.x","cli":"0.6.x","minimatch":"1.0.x","htmlparser2":"3.7.x","console-browserify":"1.1.x","exit":"0.1.x","strip-json-comments":"1.0.x"},"devDependencies":{"jshint":"2.5.x","browserify":"5.x","coveraje":"0.2.x","nodeunit":"0.9.x","sinon":"1.10.x","unicode-6.3.0":"0.1.x","regenerate":"0.6.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src","data","dist"],"gitHead":"17e9355cd27ef53c76c82e9c8514118eabe25ffe","_id":"jshint@2.5.6","_shasum":"1685ce1f9e1c74832375d83fe89728589bd9d8c7","_from":".","_npmVersion":"1.5.0-alpha-1","_npmUser":{"name":"rwaldron","email":"waldron.rick@gmail.com"},"maintainers":[{"name":"antonkovalyov","email":"anton@kovalyov.net"},{"name":"rwaldron","email":"waldron.rick@gmail.com"}],"dist":{"shasum":"1685ce1f9e1c74832375d83fe89728589bd9d8c7","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.5.6.tgz"},"directories":{}},"2.5.7":{"name":"jshint","version":"2.5.7","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"data":"node scripts/generate-identifier-data","build":"node bin/build","test":"nodeunit tests tests/regression tests/unit","pretest":"jshint src"},"main":"./src/jshint.js","dependencies":{"shelljs":"0.3.x","underscore":"1.6.x","cli":"0.6.x","minimatch":"1.0.x","htmlparser2":"3.7.x","console-browserify":"1.1.x","exit":"0.1.x","strip-json-comments":"1.0.x"},"devDependencies":{"jshint":"2.5.x","browserify":"6.x","coveraje":"0.2.x","nodeunit":"0.9.x","sinon":"1.10.x","unicode-6.3.0":"0.1.x","regenerate":"0.6.x","mock-stdin":"^0.3.0"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","src","data","dist"],"gitHead":"5b779e62d99c1182581167d07a870b34fc4579b0","_id":"jshint@2.5.7","_shasum":"69a6dfa046f3164f904a82f9b0ab57192fc13749","_from":".","_npmVersion":"1.5.0-alpha-1","_npmUser":{"name":"rwaldron","email":"waldron.rick@gmail.com"},"maintainers":[{"name":"antonkovalyov","email":"anton@kovalyov.net"},{"name":"rwaldron","email":"waldron.rick@gmail.com"}],"dist":{"shasum":"69a6dfa046f3164f904a82f9b0ab57192fc13749","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.5.7.tgz"},"directories":{}},"2.5.8":{"name":"jshint","version":"2.5.8","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node bin/build","data":"node scripts/generate-identifier-data","pretest":"jshint src","test":"nodeunit tests tests/regression tests/unit"},"main":"./src/jshint.js","dependencies":{"cli":"0.6.x","console-browserify":"1.1.x","exit":"0.1.x","htmlparser2":"3.8.x","minimatch":"1.0.x","shelljs":"0.3.x","strip-json-comments":"1.0.x","underscore":"1.6.x"},"devDependencies":{"browserify":"6.x","coveraje":"0.2.x","jshint":"2.5.x","mock-stdin":"0.3.x","nodeunit":"0.9.x","regenerate":"1.0.x","sinon":"1.11.x","unicode-6.3.0":"0.1.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","data","dist","src"],"gitHead":"53556a7e6a4f6a7bb1bee6e83a229e0481b782b9","_id":"jshint@2.5.8","_shasum":"31ddb3c17df48fe04cff24abe0a1bb1c1bc529f5","_from":".","_npmVersion":"1.5.0-alpha-1","_npmUser":{"name":"rwaldron","email":"waldron.rick@gmail.com"},"maintainers":[{"name":"antonkovalyov","email":"anton@kovalyov.net"},{"name":"rwaldron","email":"waldron.rick@gmail.com"}],"dist":{"shasum":"31ddb3c17df48fe04cff24abe0a1bb1c1bc529f5","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.5.8.tgz"},"directories":{}},"2.5.9":{"name":"jshint","version":"2.5.9","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node bin/build","data":"node scripts/generate-identifier-data","pretest":"jshint src","test":"nodeunit tests tests/regression tests/unit"},"main":"./src/jshint.js","dependencies":{"cli":"0.6.x","console-browserify":"1.1.x","exit":"0.1.x","htmlparser2":"3.8.x","minimatch":"1.0.x","shelljs":"0.3.x","strip-json-comments":"1.0.x","underscore":"1.6.x"},"devDependencies":{"browserify":"6.x","coveraje":"0.2.x","jshint":"2.5.x","mock-stdin":"0.3.x","nodeunit":"0.9.x","regenerate":"1.0.x","sinon":"1.11.x","unicode-6.3.0":"0.1.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","data","dist","src"],"gitHead":"1839f7a0b504890fec60d27e0d6945cb52a697fb","_id":"jshint@2.5.9","_shasum":"c2d514d6dcc03bfc4d0c5c1f5d1033a4cc1539d4","_from":".","_npmVersion":"1.5.0-alpha-1","_npmUser":{"name":"rwaldron","email":"waldron.rick@gmail.com"},"maintainers":[{"name":"antonkovalyov","email":"anton@kovalyov.net"},{"name":"rwaldron","email":"waldron.rick@gmail.com"}],"dist":{"shasum":"c2d514d6dcc03bfc4d0c5c1f5d1033a4cc1539d4","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.5.9.tgz"},"directories":{}},"2.5.10":{"name":"jshint","version":"2.5.10","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node bin/build","data":"node scripts/generate-identifier-data","pretest":"jshint src","test":"nodeunit tests tests/regression tests/unit"},"main":"./src/jshint.js","dependencies":{"cli":"0.6.x","console-browserify":"1.1.x","exit":"0.1.x","htmlparser2":"3.8.x","minimatch":"1.0.x","shelljs":"0.3.x","strip-json-comments":"1.0.x","underscore":"1.6.x"},"devDependencies":{"browserify":"6.x","coveraje":"0.2.x","jshint":"2.5.x","mock-stdin":"0.3.x","nodeunit":"0.9.x","regenerate":"1.0.x","sinon":"1.11.x","unicode-6.3.0":"0.1.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","data","dist","src"],"gitHead":"3a71ce850c57be8c03599462f42245708387a5f6","_id":"jshint@2.5.10","_shasum":"2fef47ee0901914e31832123d5d3f434c28060ef","_from":".","_npmVersion":"1.5.0-alpha-1","_npmUser":{"name":"rwaldron","email":"waldron.rick@gmail.com"},"maintainers":[{"name":"antonkovalyov","email":"anton@kovalyov.net"},{"name":"rwaldron","email":"waldron.rick@gmail.com"}],"dist":{"shasum":"2fef47ee0901914e31832123d5d3f434c28060ef","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.5.10.tgz"},"directories":{}},"2.5.11":{"name":"jshint","version":"2.5.11","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node bin/build","coverage":"istanbul -- cover ./node_modules/.bin/nodeunit tests/unit","data":"node scripts/generate-identifier-data","pretest":"jshint src","test":"nodeunit tests tests/regression tests/unit"},"main":"./src/jshint.js","dependencies":{"cli":"0.6.x","console-browserify":"1.1.x","exit":"0.1.x","htmlparser2":"3.8.x","minimatch":"1.0.x","shelljs":"0.3.x","strip-json-comments":"1.0.x","underscore":"1.6.x"},"devDependencies":{"browserify":"6.x","coveralls":"2.11.x","istanbul":"0.3.x","jshint":"2.5.x","mock-stdin":"0.3.x","nodeunit":"0.9.x","regenerate":"1.0.x","sinon":"1.11.x","unicode-6.3.0":"0.1.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","data","dist","src"],"gitHead":"29bda1104e117c34bdd7702854fbc40cd00e66ac","_id":"jshint@2.5.11","_shasum":"e2d95858bbb1aa78300108a2e81099fb095622e0","_from":".","_npmVersion":"1.5.0-alpha-1","_npmUser":{"name":"rwaldron","email":"waldron.rick@gmail.com"},"maintainers":[{"name":"antonkovalyov","email":"anton@kovalyov.net"},{"name":"rwaldron","email":"waldron.rick@gmail.com"}],"dist":{"shasum":"e2d95858bbb1aa78300108a2e81099fb095622e0","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.5.11.tgz"},"directories":{}},"2.6.0":{"name":"jshint","version":"2.6.0","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node bin/build","coverage":"istanbul -- cover ./node_modules/.bin/nodeunit tests/unit","data":"node scripts/generate-identifier-data","pretest":"jshint src && jscs src","test":"nodeunit tests tests/regression tests/unit"},"main":"./src/jshint.js","dependencies":{"cli":"0.6.x","console-browserify":"1.1.x","exit":"0.1.x","htmlparser2":"3.8.x","minimatch":"1.0.x","shelljs":"0.3.x","strip-json-comments":"1.0.x","underscore":"1.6.x"},"devDependencies":{"browserify":"6.x","coveralls":"2.11.x","istanbul":"0.3.x","jscs":"1.9.x","jshint":"2.5.x","mock-stdin":"0.3.x","nodeunit":"0.9.x","regenerate":"1.0.x","sinon":"1.11.x","unicode-6.3.0":"0.1.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","data","dist","src"],"gitHead":"f1fabe31294552a05d41259e64bb83427bfb2f7f","_id":"jshint@2.6.0","_shasum":"04e59d04da83aa32301d89115628274871597f33","_from":".","_npmVersion":"2.1.18","_nodeVersion":"0.10.35","_npmUser":{"name":"rwaldron","email":"waldron.rick@gmail.com"},"maintainers":[{"name":"antonkovalyov","email":"anton@kovalyov.net"},{"name":"rwaldron","email":"waldron.rick@gmail.com"}],"dist":{"shasum":"04e59d04da83aa32301d89115628274871597f33","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.6.0.tgz"},"directories":{}},"2.6.1":{"name":"jshint","version":"2.6.1","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node bin/build","coverage":"istanbul -- cover ./node_modules/.bin/nodeunit tests/unit","data":"node scripts/generate-identifier-data","pretest":"jshint src && jscs src","test":"nodeunit tests tests/regression tests/unit"},"main":"./src/jshint.js","dependencies":{"cli":"0.6.x","console-browserify":"1.1.x","exit":"0.1.x","htmlparser2":"3.8.x","minimatch":"1.0.x","shelljs":"0.3.x","strip-json-comments":"1.0.x","underscore":"1.6.x"},"devDependencies":{"browserify":"6.x","coveralls":"2.11.x","istanbul":"0.3.x","jscs":"1.11.x","jshint":"2.5.x","mock-stdin":"0.3.x","nodeunit":"0.9.x","regenerate":"1.0.x","sinon":"1.11.x","unicode-6.3.0":"0.1.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","data","dist","src"],"gitHead":"02c2628de6401363fad48b3cc7668eef2c2d7c1a","_id":"jshint@2.6.1","_shasum":"2a431526e20215043e56831d228c769f3a9f5bc9","_from":".","_npmVersion":"2.1.18","_nodeVersion":"0.10.35","_npmUser":{"name":"rwaldron","email":"waldron.rick@gmail.com"},"maintainers":[{"name":"antonkovalyov","email":"anton@kovalyov.net"},{"name":"rwaldron","email":"waldron.rick@gmail.com"}],"dist":{"shasum":"2a431526e20215043e56831d228c769f3a9f5bc9","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.6.1.tgz"},"directories":{}},"2.6.2":{"name":"jshint","version":"2.6.2","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node bin/build","coverage":"istanbul -- cover ./node_modules/.bin/nodeunit tests/unit","data":"node scripts/generate-identifier-data","pretest":"jshint src && jscs src","test":"nodeunit tests tests/regression tests/unit"},"main":"./src/jshint.js","dependencies":{"cli":"0.6.x","console-browserify":"1.1.x","exit":"0.1.x","htmlparser2":"3.8.x","minimatch":"1.0.x","shelljs":"0.3.x","strip-json-comments":"1.0.x","underscore":"1.6.x"},"devDependencies":{"browserify":"6.x","coveralls":"2.11.x","istanbul":"0.3.x","jscs":"1.11.x","jshint":"2.5.x","mock-stdin":"0.3.x","nodeunit":"0.9.x","regenerate":"1.0.x","sinon":"1.11.x","unicode-6.3.0":"0.1.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","data","dist","src"],"gitHead":"d82cf19916ea35079dc239f32b950dfc0767b795","_id":"jshint@2.6.2","_shasum":"fce55812fc9374855238ab2b08c8b37fbd9b5bee","_from":".","_npmVersion":"2.1.18","_nodeVersion":"0.10.35","_npmUser":{"name":"rwaldron","email":"waldron.rick@gmail.com"},"maintainers":[{"name":"antonkovalyov","email":"anton@kovalyov.net"},{"name":"rwaldron","email":"waldron.rick@gmail.com"}],"dist":{"shasum":"fce55812fc9374855238ab2b08c8b37fbd9b5bee","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.6.2.tgz"},"directories":{}},"2.6.3":{"name":"jshint","version":"2.6.3","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node bin/build","coverage":"istanbul -- cover ./node_modules/.bin/nodeunit tests/unit","data":"node scripts/generate-identifier-data","pretest":"jshint src && jscs src","test":"nodeunit tests tests/regression tests/unit"},"main":"./src/jshint.js","dependencies":{"cli":"0.6.x","console-browserify":"1.1.x","exit":"0.1.x","htmlparser2":"3.8.x","minimatch":"1.0.x","shelljs":"0.3.x","strip-json-comments":"1.0.x","underscore":"1.6.x"},"devDependencies":{"browserify":"6.x","coveralls":"2.11.x","istanbul":"0.3.x","jscs":"1.11.x","jshint":"2.5.x","mock-stdin":"0.3.x","nodeunit":"0.9.x","regenerate":"1.0.x","sinon":"1.11.x","unicode-6.3.0":"0.1.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","data","dist","src"],"gitHead":"983fc8de62dc826670b7af8e64fd67de0a4d1a27","_id":"jshint@2.6.3","_shasum":"84b470b8e5d5cd7adf0a3bd4975250443c9d311a","_from":".","_npmVersion":"2.1.18","_nodeVersion":"0.10.35","_npmUser":{"name":"rwaldron","email":"waldron.rick@gmail.com"},"maintainers":[{"name":"antonkovalyov","email":"anton@kovalyov.net"},{"name":"rwaldron","email":"waldron.rick@gmail.com"}],"dist":{"shasum":"84b470b8e5d5cd7adf0a3bd4975250443c9d311a","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.6.3.tgz"},"directories":{}},"2.7.0":{"name":"jshint","version":"2.7.0","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node bin/build","coverage":"istanbul -- cover ./node_modules/.bin/nodeunit tests/unit","data":"node scripts/generate-identifier-data","pretest":"jshint src && jscs src","test":"nodeunit tests tests/regression tests/unit"},"main":"./src/jshint.js","dependencies":{"cli":"0.6.x","console-browserify":"1.1.x","exit":"0.1.x","htmlparser2":"3.8.x","minimatch":"2.0.x","shelljs":"0.3.x","strip-json-comments":"1.0.x","lodash":"3.6.x"},"devDependencies":{"browserify":"9.x","coveralls":"2.11.x","istanbul":"0.3.x","jscs":"1.11.x","jshint":"2.6.x","mock-stdin":"0.3.x","nodeunit":"0.9.x","regenerate":"1.2.x","sinon":"1.12.x","unicode-6.3.0":"0.1.x"},"licenses":[{"type":"MIT","url":"https://github.com/jshint/jshint/blob/master/LICENSE"}],"preferGlobal":true,"files":["bin","data","dist","src"],"gitHead":"dd768c243af2bd3a8beb5e47768eef3ec7ab2e5e","_id":"jshint@2.7.0","_shasum":"d512bb14731dac09e49f212e6b2f1b0fdbabbc4f","_from":".","_npmVersion":"2.1.18","_nodeVersion":"0.10.35","_npmUser":{"name":"rwaldron","email":"waldron.rick@gmail.com"},"maintainers":[{"name":"antonkovalyov","email":"anton@kovalyov.net"},{"name":"rwaldron","email":"waldron.rick@gmail.com"}],"dist":{"shasum":"d512bb14731dac09e49f212e6b2f1b0fdbabbc4f","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.7.0.tgz"},"directories":{}},"2.8.0":{"name":"jshint","version":"2.8.0","homepage":"http://jshint.com/","description":"Static analysis tool for JavaScript","author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"bugs":{"url":"https://github.com/jshint/jshint/issues"},"bin":{"jshint":"./bin/jshint"},"scripts":{"build":"node bin/build","coverage":"istanbul -- cover ./node_modules/.bin/nodeunit tests/unit","data":"node scripts/generate-identifier-data","pretest":"jshint src && jscs src","test":"nodeunit tests tests/regression tests/unit"},"main":"./src/jshint.js","dependencies":{"cli":"0.6.x","console-browserify":"1.1.x","exit":"0.1.x","htmlparser2":"3.8.x","minimatch":"2.0.x","shelljs":"0.3.x","strip-json-comments":"1.0.x","lodash":"3.7.x"},"devDependencies":{"browserify":"9.x","coveralls":"2.11.x","istanbul":"0.3.x","jscs":"1.11.x","jshint":"2.6.x","mock-stdin":"0.3.x","nodeunit":"0.9.x","regenerate":"1.2.x","sinon":"1.12.x","unicode-6.3.0":"0.1.x"},"license":"(MIT AND JSON)","preferGlobal":true,"files":["bin","data","dist","src"],"gitHead":"e6611af2d180bd2317d5762e85807a481de99ccb","_id":"jshint@2.8.0","_shasum":"1d09a3bd913c4cadfa81bf18d582bd85bffe0d44","_from":".","_npmVersion":"2.6.0","_nodeVersion":"0.12.0","_npmUser":{"name":"jugglinmike","email":"mike@mikepennisi.com"},"maintainers":[{"name":"antonkovalyov","email":"anton@kovalyov.net"},{"name":"rwaldron","email":"waldron.rick@gmail.com"},{"name":"jugglinmike","email":"mike@mikepennisi.com"}],"dist":{"shasum":"1d09a3bd913c4cadfa81bf18d582bd85bffe0d44","tarball":"http://registry.npmjs.org/jshint/-/jshint-2.8.0.tgz"},"directories":{}}},"maintainers":[{"name":"antonkovalyov","email":"anton@kovalyov.net"},{"name":"rwaldron","email":"waldron.rick@gmail.com"},{"name":"jugglinmike","email":"mike@mikepennisi.com"}],"time":{"modified":"2015-05-31T17:47:28.288Z","created":"2011-03-27T18:32:36.942Z","0.1.8":"2011-03-27T18:32:37.263Z","0.1.9":"2011-03-30T01:23:22.132Z","0.2.0":"2011-04-07T01:29:17.412Z","0.2.1":"2011-05-06T15:19:59.724Z","0.2.2":"2011-05-26T02:28:56.346Z","0.2.3":"2011-06-22T00:20:15.092Z","0.3.0":"2011-08-20T23:55:34.317Z","0.3.1":"2011-09-05T17:43:21.706Z","0.4.0":"2011-10-11T01:30:17.763Z","0.5.0":"2011-10-13T02:31:28.177Z","0.5.1":"2011-10-15T20:27:49.794Z","0.5.2":"2011-10-27T23:47:13.813Z","0.5.3":"2011-12-06T17:04:23.138Z","0.5.4":"2011-12-09T16:22:22.276Z","0.5.5":"2011-12-12T23:04:51.885Z","0.5.6":"2012-01-10T19:47:14.374Z","0.5.7":"2012-01-20T17:56:31.354Z","0.5.8":"2012-02-14T03:54:59.373Z","0.5.9":"2012-02-28T19:37:50.194Z","0.6.0":"2012-04-04T20:08:42.115Z","0.6.1":"2012-04-11T18:54:41.288Z","0.6.2":"2012-04-30T15:42:49.409Z","0.6.3":"2012-05-02T05:57:50.465Z","0.7.0":"2012-05-08T17:08:21.221Z","0.7.1":"2012-05-17T21:06:25.975Z","0.7.2":"2012-07-26T23:52:25.934Z","0.7.3":"2012-08-06T04:29:47.399Z","0.8.0":"2012-08-20T18:38:37.399Z","0.8.1":"2012-08-27T16:42:17.856Z","0.8.2":"2012-08-30T16:06:24.563Z","0.9.0":"2012-09-03T22:09:34.078Z","0.9.1":"2012-09-25T19:05:55.651Z","1.0.0":"2013-02-21T20:56:02.439Z","1.1.0":"2013-03-06T01:06:48.338Z","2.0.0":"2013-05-08T20:38:37.226Z","2.0.1":"2013-05-08T21:01:32.782Z","2.1.0":"2013-05-21T04:36:39.121Z","2.1.1":"2013-05-21T19:13:39.939Z","2.1.2":"2013-05-22T02:23:18.655Z","2.1.3":"2013-06-03T02:19:30.866Z","2.1.4":"2013-06-24T18:45:59.139Z","2.1.5":"2013-07-27T22:58:03.807Z","2.1.6":"2013-07-29T05:07:25.272Z","2.1.7":"2013-07-29T18:11:57.558Z","2.1.8":"2013-08-01T03:14:32.906Z","2.1.9":"2013-08-02T20:38:14.506Z","2.1.10":"2013-08-15T22:44:38.250Z","2.1.11":"2013-09-20T22:42:42.815Z","2.2.0":"2013-10-18T17:31:51.676Z","2.3.0":"2013-10-21T01:32:59.427Z","2.4.0":"2013-12-25T01:57:21.185Z","2.4.1":"2014-01-03T21:06:46.027Z","2.4.2":"2014-01-21T19:28:04.110Z","2.4.3":"2014-01-26T03:31:02.974Z","2.4.4":"2014-02-21T02:20:54.850Z","2.5.0":"2014-04-02T05:16:29.038Z","2.5.1":"2014-05-16T04:23:38.796Z","2.5.2":"2014-07-05T16:46:57.881Z","2.5.3":"2014-08-08T19:00:00.438Z","2.5.4":"2014-08-18T16:11:02.461Z","2.5.5":"2014-08-24T04:20:32.497Z","2.5.6":"2014-09-21T17:21:30.478Z","2.5.7":"2014-10-28T16:51:38.395Z","2.5.8":"2014-10-29T21:48:42.556Z","2.5.9":"2014-11-06T13:43:15.032Z","2.5.10":"2014-11-06T18:55:24.861Z","2.5.11":"2014-12-18T19:22:58.738Z","2.6.0":"2015-01-21T22:25:46.173Z","2.6.1":"2015-02-27T17:25:52.054Z","2.6.2":"2015-02-28T00:22:54.946Z","2.6.3":"2015-02-28T17:18:08.698Z","2.7.0":"2015-04-11T20:42:55.596Z","2.8.0":"2015-05-31T17:47:28.288Z"},"author":{"name":"Anton Kovalyov","email":"anton@kovalyov.net","url":"http://anton.kovalyov.net/"},"users":{"mvolkmann":true,"soldair":true,"danielr":true,"fgribreau":true,"pid":true,"graemef":true,"gillesruppert":true,"jgoodall":true,"tokuhirom":true,"m42am":true,"af":true,"jamesallardice":true,"charmander":true,"sandeepmistry":true,"millermedeiros":true,"ianmcburnie":true,"cparker15":true,"antonnguyen":true,"niftymonkey":true,"blalor":true,"netroy":true,"joliva":true,"pragma-dudes":true,"fibo":true,"adamrenny":true,"codylindley":true,"victorquinn":true,"chrisoei":true,"shiin":true,"mhaidarh":true,"cedx":true,"pragmadash":true,"claveren":true,"chpopov":true,"xtopher":true,"csk83":true,"priyaranjan":true,"jorgemsrs":true,"cilindrox":true,"fmm":true,"darryl.west":true,"renatobalbino":true,"redbe4rd":true,"fei":true,"sionbird":true,"toogle":true,"qiuzuhui":true,"ezhi":true,"davidbaiguini":true,"owaz":true,"chaowi":true,"agent_9191":true,"ambdxtrch":true,"frk1705":true,"tunnckocore":true,"nlwillia":true,"gdibble":true,"goblindegook":true,"antonkovalyov":true,"thebearingedge":true,"jits":true,"qmmr":true,"louxiaojian":true,"markymark":true,"byossarian":true,"alaabadran":true,"piotr23":true,"buster":true,"dgarlitt":true,"waltgiroir":true,"bkimminich":true,"csbun":true,"leobalter":true,"ivangaravito":true,"mjurincic":true,"kws4679":true,"presence":true,"hoitmort":true,"azder":true,"alexandermac":true,"sirreal":true,"kh3phr3n":true,"nitayneeman":true,"nicolasmccurdy":true,"haeck":true,"pnevares":true,"gdbtek":true,"ksmithut":true,"kulakowka":true,"nadimix":true,"trigu":true,"vboctor":true,"shannonmoeller":true,"limit":true,"borjes":true,"yasinaydin":true,"josuehenry14":true,"ericwbailey":true,"kai_":true,"raiseandfall":true,"clux":true,"ugarz":true,"sasquatch":true,"tfentonz":true,"dac2205":true,"subchen":true,"marbio":true,"brandondoran":true,"jackpinto":true,"joris-van-der-wel":true,"rogier.spieker":true,"hassane":true,"sakthiinfotec":true,"season19840122":true,"fvcproductions":true,"felixjung":true,"jamesmgreene":true,"nice_body":true,"maskedcoder":true},"repository":{"type":"git","url":"https://github.com/jshint/jshint.git"},"readme":"# JSHint, A Static Code Analysis Tool for JavaScript\n\n\\[ [Use it online](http://jshint.com/) • [About](http://jshint.com/about/) •\n[Docs](http://jshint.com/docs/) • [FAQ](http://jshint.com/docs/faq) •\n[Install](http://jshint.com/install/) • [Hack](http://jshint.com/hack/) •\n[Blog](http://jshint.com/blog/) • [Twitter](https://twitter.com/jshint/) \\]\n\n[](https://www.npmjs.com/package/jshint)\n[](https://travis-ci.org/jshint/jshint)\n[](https://ci.appveyor.com/project/jshint/jshint/branch/master)\n[](https://david-dm.org/jshint/jshint)\n[](https://david-dm.org/jshint/jshint#info=devDependencies)\n[](https://coveralls.io/r/jshint/jshint?branch=master)\n\nJSHint is a community-driven tool to detect errors and potential problems\nin JavaScript code. It is very flexible so you can easily adjust it to your\nparticular coding guidelines and the environment you expect your code to\nexecute in.\n\n## Reporting a bug\n\nTo report a bug simply create a\n[new GitHub Issue](https://github.com/jshint/jshint/issues/new) and describe\nyour problem or suggestion. We welcome all kinds of feedback regarding\nJSHint including but not limited to:\n\n * When JSHint doesn't work as expected\n * When JSHint complains about valid JavaScript code that works in all browsers\n * When you simply want a new option or feature\n\nBefore reporting a bug look around to see if there are any open or closed tickets\nthat cover your issue. And remember the wisdom: pull request > bug report > tweet.\n\n## Issue Priority\n\n- *P1:* Something is throwing exceptions; broken JSHint backward compatibility.\n- *P2:* Something is not being parsed correctly.\n- *P3:* Features that the core team will work on once P2s and P1s are done.\n- *P4:* Patches welcome; The request is good, but low priority.\n\n\n## License\n\nJSHint is distributed under the MIT License. One file and one file only\n(src/stable/jshint.js) is distributed under the slightly modified MIT License.\n\n## The JSHint Team\n\nJSHint is maintained by [Rick Waldron](https://github.com/rwaldron/), [Caitlin\nPotter](https://github.com/caitp/), [Mike\nSherov](https://github.com/mikesherov/), and [Mike\nPennisi](https://github.com/jugglinmike/).\n\n## Thank you!\n\nWe really appreciate all kinds of feedback and contributions. Thanks for using and supporting JSHint!\n","readmeFilename":"README.md","homepage":"http://jshint.com/","bugs":{"url":"https://github.com/jshint/jshint/issues"},"license":"(MIT AND JSON)","_attachments":{},"_etag":"\"G9561MH4XUZS8T2K8YB5INUN\""}
\ No newline at end of file
diff --git a/deps/npm/test/tap/00-config-setup.js b/deps/npm/test/tap/00-config-setup.js
index 33581eb138ff6f..0daf0decd6a546 100644
--- a/deps/npm/test/tap/00-config-setup.js
+++ b/deps/npm/test/tap/00-config-setup.js
@@ -1,3 +1,4 @@
+var fs = require("graceful-fs")
var path = require("path")
var userconfigSrc = path.resolve(__dirname, "..", "fixtures", "config", "userconfig")
exports.userconfig = userconfigSrc + "-with-gc"
@@ -55,10 +56,24 @@ exports.envDataFix = {
"other-env-thing": 1000
}
+var projectConf = path.resolve(__dirname, '..', '..', '.npmrc')
+try {
+ fs.statSync(projectConf)
+} catch (er) {
+ // project conf not found, probably working with packed npm
+ fs.writeFileSync(projectConf, 'save-prefix = ~\nproprietary-attribs = false\n')
+}
+
+var projectRc = path.join(__dirname, '..', 'fixtures', 'config', '.npmrc')
+try {
+ fs.statSync(projectRc)
+} catch (er) {
+ // project conf not found, probably working with packed npm
+ fs.writeFileSync(projectRc, 'just = testing')
+}
if (module === require.main) {
// set the globalconfig in the userconfig
- var fs = require("fs")
var uc = fs.readFileSync(userconfigSrc)
var gcini = "globalconfig = " + exports.globalconfig + "\n"
fs.writeFileSync(exports.userconfig, gcini + uc)
diff --git a/deps/npm/test/tap/access.js b/deps/npm/test/tap/access.js
index 5ac1d613841301..c72ea5c8986c5f 100644
--- a/deps/npm/test/tap/access.js
+++ b/deps/npm/test/tap/access.js
@@ -1,43 +1,37 @@
-var fs = require("fs")
-var path = require("path")
-var mkdirp = require("mkdirp")
-var rimraf = require("rimraf")
-var mr = require("npm-registry-mock")
+var fs = require('fs')
+var path = require('path')
+var mkdirp = require('mkdirp')
+var rimraf = require('rimraf')
+var mr = require('npm-registry-mock')
-var test = require("tap").test
-var common = require("../common-tap.js")
+var test = require('tap').test
+var common = require('../common-tap.js')
-var pkg = path.resolve(__dirname, "access")
+var pkg = path.resolve(__dirname, 'access')
var server
var scoped = {
- name : "@scoped/pkg",
- version : "1.1.1"
+ name: '@scoped/pkg',
+ version: '1.1.1'
}
var body = {
- access : "public"
+ access: 'public'
}
-function mocks (server) {
- server.post("/-/package/@scoped%2fpkg/access", JSON.stringify(body))
- .reply(200, { "access" : "public" })
- server.post("/-/package/@scoped%2fanother/access", JSON.stringify(body))
- .reply(200, { "access" : "public" })
-}
-
-test("setup", function (t) {
+test('setup', function (t) {
mkdirp(pkg, function (er) {
- t.ifError(er, pkg + " made successfully")
+ t.ifError(er, pkg + ' made successfully')
- mr({port : common.port, plugin : mocks}, function (err, s) {
+ mr({port: common.port}, function (err, s) {
+ t.ifError(err, 'registry mocked successfully')
server = s
fs.writeFile(
- path.join(pkg, "package.json"),
+ path.join(pkg, 'package.json'),
JSON.stringify(scoped),
function (er) {
- t.ifError(er, "wrote package.json")
+ t.ifError(er, 'wrote package.json')
t.end()
}
)
@@ -45,119 +39,364 @@ test("setup", function (t) {
})
})
-test("npm access on current package", function (t) {
+test('npm access public on current package', function (t) {
+ server.post('/-/package/%40scoped%2Fpkg/access', JSON.stringify({
+ access: 'public'
+ })).reply(200, {
+ accessChanged: true
+ })
+ common.npm([
+ 'access',
+ 'public',
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ], {
+ cwd: pkg
+ },
+ function (er, code, stdout, stderr) {
+ t.ifError(er, 'npm access')
+ t.equal(code, 0, 'exited OK')
+ t.equal(stderr, '', 'no error output')
+ t.end()
+ })
+})
+
+test('npm access restricted on current package', function (t) {
+ server.post('/-/package/%40scoped%2Fpkg/access', JSON.stringify({
+ access: 'restricted'
+ })).reply(200, {
+ accessChanged: true
+ })
+ common.npm([
+ 'access',
+ 'restricted',
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ], {
+ cwd: pkg
+ },
+ function (er, code, stdout, stderr) {
+ t.ifError(er, 'npm access')
+ t.equal(code, 0, 'exited OK')
+ t.equal(stderr, '', 'no error output')
+ t.end()
+ })
+})
+
+test('npm access on named package', function (t) {
+ server.post('/-/package/%40scoped%2Fanother/access', {
+ access: 'public'
+ }).reply(200, {
+ accessChaged: true
+ })
common.npm(
[
- "access",
- "public",
- "--registry", common.registry,
- "--loglevel", "silent"
+ 'access',
+ 'public', '@scoped/another',
+ '--registry', common.registry,
+ '--loglevel', 'silent'
],
- { cwd : pkg },
+ { cwd: pkg },
function (er, code, stdout, stderr) {
- t.ifError(er, "npm access")
- t.notOk(code, "exited OK")
- t.notOk(stderr, "no error output")
+ t.ifError(er, 'npm access')
+ t.equal(code, 0, 'exited OK')
+ t.equal(stderr, '', 'no error output')
t.end()
}
)
})
-test("npm access on named package", function (t) {
+test('npm change access on unscoped package', function (t) {
+ common.npm(
+ [
+ 'access',
+ 'restricted', 'yargs',
+ '--registry', common.registry
+ ],
+ { cwd: pkg },
+ function (er, code, stdout, stderr) {
+ t.ok(code, 'exited with Error')
+ t.matches(
+ stderr, /access commands are only accessible for scoped packages/)
+ t.end()
+ }
+ )
+})
+
+test('npm access grant read-only', function (t) {
+ server.put('/-/team/myorg/myteam/package', {
+ permissions: 'read-only',
+ package: '@scoped/another'
+ }).reply(201, {
+ accessChaged: true
+ })
common.npm(
[
- "access",
- "public", "@scoped/another",
- "--registry", common.registry,
- "--loglevel", "silent"
+ 'access',
+ 'grant', 'read-only',
+ 'myorg:myteam',
+ '@scoped/another',
+ '--registry', common.registry
],
- { cwd : pkg },
+ { cwd: pkg },
function (er, code, stdout, stderr) {
- t.ifError(er, "npm access")
- t.notOk(code, "exited OK")
- t.notOk(stderr, "no error output")
+ t.ifError(er, 'npm access grant')
+ t.equal(code, 0, 'exited with Error')
+ t.end()
+ }
+ )
+})
+test('npm access grant read-write', function (t) {
+ server.put('/-/team/myorg/myteam/package', {
+ permissions: 'read-write',
+ package: '@scoped/another'
+ }).reply(201, {
+ accessChaged: true
+ })
+ common.npm(
+ [
+ 'access',
+ 'grant', 'read-write',
+ 'myorg:myteam',
+ '@scoped/another',
+ '--registry', common.registry
+ ],
+ { cwd: pkg },
+ function (er, code, stdout, stderr) {
+ t.ifError(er, 'npm access grant')
+ t.equal(code, 0, 'exited with Error')
t.end()
}
)
})
-test("npm change access on unscoped package", function (t) {
+test('npm access grant others', function (t) {
common.npm(
[
- "access",
- "restricted", "yargs",
- "--registry", common.registry
+ 'access',
+ 'grant', 'rerere',
+ 'myorg:myteam',
+ '@scoped/another',
+ '--registry', common.registry
],
- { cwd : pkg },
+ { cwd: pkg },
function (er, code, stdout, stderr) {
t.ok(code, 'exited with Error')
- t.ok(stderr.match(/you can't change the access level of unscoped packages/))
+ t.matches(stderr, /read-only/)
+ t.matches(stderr, /read-write/)
t.end()
}
)
})
-test('npm access add', function (t) {
+test('npm access revoke', function (t) {
+ server.delete('/-/team/myorg/myteam/package', {
+ package: '@scoped/another'
+ }).reply(200, {
+ accessChaged: true
+ })
common.npm(
[
- "access",
- "add", "@scoped/another",
- "--registry", common.registry
+ 'access',
+ 'revoke',
+ 'myorg:myteam',
+ '@scoped/another',
+ '--registry', common.registry
],
- { cwd : pkg },
+ { cwd: pkg },
function (er, code, stdout, stderr) {
- t.ok(code, 'exited with Error')
- t.ok(stderr.match(/npm access add isn't implemented yet!/))
+ t.ifError(er, 'npm access grant')
+ t.equal(code, 0, 'exited with Error')
t.end()
}
)
})
-test('npm access rm', function (t) {
+test('npm access ls-packages on team', function (t) {
+ var serverPackages = {
+ '@foo/bar': 'write',
+ '@foo/util': 'read'
+ }
+ var clientPackages = {
+ '@foo/bar': 'read-write',
+ '@foo/util': 'read-only'
+ }
+ server.get(
+ '/-/team/myorg/myteam/package?format=cli'
+ ).reply(200, serverPackages)
common.npm(
[
- "access",
- "rm", "@scoped/another",
- "--registry", common.registry
+ 'access',
+ 'ls-packages',
+ 'myorg:myteam',
+ '--registry', common.registry
],
- { cwd : pkg },
+ { cwd: pkg },
function (er, code, stdout, stderr) {
- t.ok(code, 'exited with Error')
- t.ok(stderr.match(/npm access rm isn't implemented yet!/))
+ t.ifError(er, 'npm access ls-packages')
+ t.same(JSON.parse(stdout), clientPackages)
t.end()
}
)
})
-test('npm access ls', function (t) {
+test('npm access ls-packages on org', function (t) {
+ var serverPackages = {
+ '@foo/bar': 'write',
+ '@foo/util': 'read'
+ }
+ var clientPackages = {
+ '@foo/bar': 'read-write',
+ '@foo/util': 'read-only'
+ }
+ server.get(
+ '/-/org/myorg/package?format=cli'
+ ).reply(200, serverPackages)
common.npm(
[
- "access",
- "ls", "@scoped/another",
- "--registry", common.registry
+ 'access',
+ 'ls-packages',
+ 'myorg',
+ '--registry', common.registry
],
- { cwd : pkg },
+ { cwd: pkg },
function (er, code, stdout, stderr) {
- t.ok(code, 'exited with Error')
- t.ok(stderr.match(/npm access ls isn't implemented yet!/))
+ t.ifError(er, 'npm access ls-packages')
+ t.same(JSON.parse(stdout), clientPackages)
+ t.end()
+ }
+ )
+})
+
+test('npm access ls-packages on user', function (t) {
+ var serverPackages = {
+ '@foo/bar': 'write',
+ '@foo/util': 'read'
+ }
+ var clientPackages = {
+ '@foo/bar': 'read-write',
+ '@foo/util': 'read-only'
+ }
+ server.get(
+ '/-/org/myorg/package?format=cli'
+ ).reply(404, {error: 'nope'})
+ server.get(
+ '/-/user/myorg/package?format=cli'
+ ).reply(200, serverPackages)
+ common.npm(
+ [
+ 'access',
+ 'ls-packages',
+ 'myorg',
+ '--registry', common.registry
+ ],
+ { cwd: pkg },
+ function (er, code, stdout, stderr) {
+ t.ifError(er, 'npm access ls-packages')
+ t.same(JSON.parse(stdout), clientPackages)
+ t.end()
+ }
+ )
+})
+
+test('npm access ls-collaborators on current', function (t) {
+ var serverCollaborators = {
+ 'myorg:myteam': 'write',
+ 'myorg:anotherteam': 'read'
+ }
+ var clientCollaborators = {
+ 'myorg:myteam': 'read-write',
+ 'myorg:anotherteam': 'read-only'
+ }
+ server.get(
+ '/-/package/%40scoped%2Fpkg/collaborators?format=cli'
+ ).reply(200, serverCollaborators)
+ common.npm(
+ [
+ 'access',
+ 'ls-collaborators',
+ '--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 package', function (t) {
+ var serverCollaborators = {
+ 'myorg:myteam': 'write',
+ 'myorg:anotherteam': 'read'
+ }
+ var clientCollaborators = {
+ 'myorg:myteam': 'read-write',
+ 'myorg:anotherteam': 'read-only'
+ }
+ server.get(
+ '/-/package/%40scoped%2Fanother/collaborators?format=cli'
+ ).reply(200, serverCollaborators)
+ common.npm(
+ [
+ 'access',
+ 'ls-collaborators',
+ '@scoped/another',
+ '--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',
+ 'myorg:anotherteam': 'read'
+ }
+ var clientCollaborators = {
+ 'myorg:myteam': 'read-write',
+ 'myorg:anotherteam': 'read-only'
+ }
+ server.get(
+ '/-/package/%40scoped%2Fanother/collaborators?format=cli&user=zkat'
+ ).reply(200, serverCollaborators)
+ common.npm(
+ [
+ 'access',
+ 'ls-collaborators',
+ '@scoped/another',
+ 'zkat',
+ '--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 edit', function (t) {
common.npm(
[
- "access",
- "edit", "@scoped/another",
- "--registry", common.registry
+ 'access',
+ 'edit', '@scoped/another',
+ '--registry', common.registry
],
- { cwd : pkg },
+ { cwd: pkg },
function (er, code, stdout, stderr) {
t.ok(code, 'exited with Error')
- t.ok(stderr.match(/npm access edit isn't implemented yet!/))
+ t.match(stderr, /edit subcommand is not implemented yet/)
t.end()
}
)
@@ -166,22 +405,23 @@ test('npm access edit', function (t) {
test('npm access blerg', function (t) {
common.npm(
[
- "access",
- "blerg", "@scoped/another",
- "--registry", common.registry
+ 'access',
+ 'blerg', '@scoped/another',
+ '--registry', common.registry
],
- { cwd : pkg },
+ { cwd: pkg },
function (er, code, stdout, stderr) {
t.ok(code, 'exited with Error')
- t.ok(stderr.match(/Usage:/))
+ t.matches(stderr, /Usage:/)
t.end()
}
)
})
-test("cleanup", function (t) {
- t.pass("cleaned up")
+test('cleanup', function (t) {
+ t.pass('cleaned up')
rimraf.sync(pkg)
+ server.done()
server.close()
t.end()
})
diff --git a/deps/npm/test/tap/install-link-scripts.js b/deps/npm/test/tap/install-link-scripts.js
new file mode 100644
index 00000000000000..bd8b9a3e37b858
--- /dev/null
+++ b/deps/npm/test/tap/install-link-scripts.js
@@ -0,0 +1,131 @@
+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-link-scripts')
+var tmp = path.join(pkg, 'tmp')
+var dep = path.join(pkg, 'dep')
+
+var json = {
+ name: 'install-link-scripts',
+ version: '1.0.0',
+ description: 'a test',
+ repository: 'git://github.com/npm/npm.git',
+ license: 'ISC'
+}
+
+var dependency = {
+ name: 'dep',
+ version: '1.0.0',
+ scripts: {
+ install: './bin/foo'
+ }
+}
+
+var foo = function () {/*
+#!/usr/bin/env node
+
+console.log('hey sup')
+*/}.toString().split('\n').slice(1, -1).join('\n')
+
+process.env.npm_config_prefix = tmp
+
+test('plain install', function (t) {
+ setup()
+
+ common.npm(
+ [
+ 'install', dep,
+ '--tmp', tmp
+ ],
+ { cwd: pkg },
+ function (err, code, stdout, stderr) {
+ t.ifErr(err, 'npm install ' + dep + ' finished without error')
+ t.equal(code, 0, 'exited ok')
+ t.notOk(stderr, 'no output stderr')
+ t.match(stdout, /hey sup/, 'postinstall script for dep ran')
+ t.end()
+ }
+ )
+})
+
+test('link', function (t) {
+ setup()
+
+ common.npm(
+ [
+ 'link',
+ '--tmp', tmp
+ ],
+ { cwd: dep },
+ function (err, code, stdout, stderr) {
+ t.ifErr(err, 'npm link finished without error')
+ t.equal(code, 0, 'exited ok')
+ t.notOk(stderr, 'no output stderr')
+ t.match(stdout, /hey sup/, 'script ran')
+ t.end()
+ }
+ )
+})
+
+test('install --link', function (t) {
+ setup()
+
+ common.npm(
+ [
+ 'link',
+ '--tmp', tmp
+ ],
+ { cwd: dep },
+ function (err, code, stdout, stderr) {
+ t.ifErr(err, 'npm link finished without error')
+
+ common.npm(
+ [
+ 'install', '--link', dependency.name,
+ '--tmp', tmp
+ ],
+ { cwd: pkg },
+ function (err, code, stdout, stderr) {
+ t.ifErr(err, 'npm install --link finished without error')
+ t.equal(code, 0, 'exited ok')
+ t.notOk(stderr, 'no output stderr')
+ t.notMatch(stdout, /hey sup/, "script didn't run")
+ t.end()
+ }
+ )
+ }
+ )
+})
+
+test('cleanup', function (t) {
+ cleanup()
+ t.end()
+})
+
+function setup () {
+ cleanup()
+ mkdirp.sync(tmp)
+ fs.writeFileSync(
+ path.join(pkg, 'package.json'),
+ JSON.stringify(json, null, 2)
+ )
+
+ mkdirp.sync(path.join(dep, 'bin'))
+ fs.writeFileSync(
+ path.join(dep, 'package.json'),
+ JSON.stringify(dependency, null, 2)
+ )
+ fs.writeFileSync(path.join(dep, 'bin', 'foo'), foo, { mode: '0755' })
+}
+
+function cleanup () {
+ process.chdir(osenv.tmpdir())
+ rimraf.sync(pkg)
+}
diff --git a/deps/npm/test/tap/install-preferglobal-warnings.js b/deps/npm/test/tap/install-preferglobal-warnings.js
new file mode 100644
index 00000000000000..9cd2644c5df879
--- /dev/null
+++ b/deps/npm/test/tap/install-preferglobal-warnings.js
@@ -0,0 +1,131 @@
+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 preferGlobalJson = {
+ name: 'npm-test-preferglobal-dep',
+ version: '0.0.0',
+ preferGlobal: true
+}
+
+var dependenciesJson = {
+ name: 'npm-test-preferglobal-dependency-check',
+ version: '0.0.0',
+ dependencies: {
+ 'npm-test-preferglobal-dep': 'file:../' + preferGlobalJson.name
+ }
+}
+
+var devDependenciesJson = {
+ name: 'npm-test-preferglobal-devDependency-check',
+ version: '0.0.0',
+ devDependencies: {
+ 'npm-test-preferglobal-dep': 'file:../' + preferGlobalJson.name
+ }
+}
+
+var emptyPackage = {
+ name: 'npm-test-preferglobal-empty-package',
+ version: '0.0.0'
+}
+
+test('install a preferGlobal dependency without warning', function (t) {
+ setup(dependenciesJson)
+ common.npm([
+ 'install',
+ '--loglevel=warn'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'packages were installed')
+ t.notMatch(
+ stderr,
+ /WARN.*prefer global/,
+ 'install should not warn when dependency is preferGlobal')
+ t.end()
+ })
+})
+
+test('install a preferGlobal dependency without warning', function (t) {
+ setup(devDependenciesJson)
+ common.npm([
+ 'install',
+ '--loglevel=warn'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'packages were installed')
+ t.notMatch(
+ stderr,
+ /WARN.*prefer global/,
+ 'install should not warn when devDependency is preferGlobal')
+ t.end()
+ })
+})
+
+test('warn if a preferGlobal package is being installed direct', function (t) {
+ setup(emptyPackage)
+ common.npm([
+ 'install',
+ 'file:../' + preferGlobalJson.name,
+ '--loglevel=warn'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'packages were installed')
+ t.match(
+ stderr,
+ /WARN.*prefer global/,
+ 'install should warn when new package is preferGlobal')
+ t.end()
+ })
+})
+
+test('warn if a preferGlobal package is being saved', function (t) {
+ setup(emptyPackage)
+ common.npm([
+ 'install',
+ 'file:../' + preferGlobalJson.name,
+ '--save',
+ '--loglevel=warn'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'packages were installed')
+ t.match(
+ stderr,
+ /WARN.*prefer global/,
+ 'install should warn when new package is preferGlobal')
+ t.end()
+ })
+})
+
+test('cleanup', function (t) {
+ cleanup()
+ t.end()
+})
+
+function setup (json) {
+ cleanup()
+ mkPkg(preferGlobalJson)
+ process.chdir(mkPkg(json))
+}
+
+function cleanup () {
+ process.chdir(osenv.tmpdir())
+ var pkgs = [preferGlobalJson,
+ dependenciesJson,
+ devDependenciesJson,
+ emptyPackage]
+ pkgs.forEach(function (json) {
+ rimraf.sync(path.resolve(__dirname, json.name))
+ })
+}
+
+function mkPkg (json) {
+ var pkgPath = path.resolve(__dirname, json.name)
+ mkdirp.sync(pkgPath)
+ fs.writeFileSync(
+ path.join(pkgPath, 'package.json'),
+ JSON.stringify(json, null, 2)
+ )
+ return pkgPath
+}
diff --git a/deps/npm/test/tap/run-script-filter-private.js b/deps/npm/test/tap/run-script-filter-private.js
new file mode 100644
index 00000000000000..631759c13a7336
--- /dev/null
+++ b/deps/npm/test/tap/run-script-filter-private.js
@@ -0,0 +1,52 @@
+var fs = require('graceful-fs')
+var path = require('path')
+
+var mkdirp = require('mkdirp')
+var rimraf = require('rimraf')
+var test = require('tap').test
+
+var common = require('../common-tap')
+
+var pkg = path.resolve(__dirname, 'run-script-filter-private')
+
+var opts = { cwd: pkg }
+
+var json = {
+ name: 'run-script-filter-private',
+ version: '1.2.3'
+}
+
+var npmrc = '//blah.com:_harsh=realms\n'
+
+test('setup', function (t) {
+ cleanup()
+ mkdirp.sync(pkg)
+ fs.writeFileSync(
+ path.resolve(pkg, 'package.json'),
+ JSON.stringify(json, null, 2) + '\n'
+ )
+ fs.writeFileSync(
+ path.resolve(pkg, '.npmrc'),
+ npmrc
+ )
+ t.end()
+})
+
+test('npm run-script env', function (t) {
+ common.npm(['run-script', 'env'], opts, function (er, code, stdout, stderr) {
+ t.ifError(er, 'using default env script')
+ t.notOk(stderr, 'should not generate errors')
+ t.ok(stdout.indexOf('npm_config_init_version') > 0, 'expected values in var list')
+ t.notMatch(stdout, /harsh/, 'unexpected config not there')
+ t.end()
+ })
+})
+
+test('cleanup', function (t) {
+ cleanup()
+ t.end()
+})
+
+function cleanup () {
+ rimraf.sync(pkg)
+}
diff --git a/deps/npm/test/tap/run-script.js b/deps/npm/test/tap/run-script.js
index 8dfe574e139d69..5d414d8e9249f9 100644
--- a/deps/npm/test/tap/run-script.js
+++ b/deps/npm/test/tap/run-script.js
@@ -1,4 +1,4 @@
-var fs = require('fs')
+var fs = require('graceful-fs')
var path = require('path')
var mkdirp = require('mkdirp')
@@ -54,6 +54,14 @@ var both = {
}
}
+var preversionOnly = {
+ name: 'scripted',
+ version: '1.2.3',
+ scripts: {
+ 'preversion': 'echo preversion'
+ }
+}
+
function testOutput (t, command, er, code, stdout, stderr) {
var lines
@@ -192,6 +200,25 @@ test('npm run-script no-params (lifecycle only)', function (t) {
})
})
+test('npm run-script no-params (preversion only)', function (t) {
+ var expected = [
+ 'Lifecycle scripts included in scripted:',
+ ' preversion',
+ ' echo preversion',
+ ''
+ ].join('\n')
+
+ writeMetadata(preversionOnly)
+
+ common.npm(['run-script'], opts, function (err, code, stdout, stderr) {
+ t.ifError(err, 'ran run-script without parameters without crashing')
+ t.notOk(code, 'npm exited without error code')
+ t.notOk(stderr, 'npm printed nothing to stderr')
+ t.equal(stdout, expected, 'got expected output')
+ t.end()
+ })
+})
+
test('npm run-script no-params (direct only)', function (t) {
var expected = [
'Scripts available in scripted via `npm run-script`:',
diff --git a/deps/npm/test/tap/tag-version-prefix.js b/deps/npm/test/tap/tag-version-prefix.js
index efd2d14d4f6da5..f4ba32b1255618 100644
--- a/deps/npm/test/tap/tag-version-prefix.js
+++ b/deps/npm/test/tap/tag-version-prefix.js
@@ -19,70 +19,75 @@ var json = { name: 'blah', version: '0.1.2' }
var configContents = 'sign-git-tag=false\nmessage=":bookmark: %s"\n'
test('npm version with message config', function (t) {
- setup()
-
- npm.load({ prefix: pkg, userconfig: npmrc }, function () {
- var git = require('../../lib/utils/git.js')
-
- common.makeGitRepo({ path: pkg }, function (er) {
- t.ifErr(er, 'git bootstrap ran without error')
-
- common.npm([
- 'config',
- 'set',
- 'tag-version-prefix',
- 'q'
- ], { cwd: pkg, env: { PATH: process.env.PATH } },
- function (err, code, stdout, stderr) {
- t.ifError(err, 'npm config ran without issue')
+ setup()
+
+ npm.load({ prefix: pkg, userconfig: npmrc }, function () {
+ var git = require('../../lib/utils/git.js')
+
+ common.makeGitRepo({ path: pkg }, function (er) {
+ t.ifErr(er, 'git bootstrap ran without error')
+
+ common.npm(
+ [
+ '--userconfig', npmrc,
+ 'config',
+ 'set',
+ 'tag-version-prefix',
+ 'q'
+ ],
+ { cwd: pkg, env: { PATH: process.env.PATH } },
+ function (err, code, stdout, stderr) {
+ t.ifError(err, 'npm config ran without issue')
+ t.notOk(code, 'exited with a non-error code')
+ t.notOk(stderr, 'no error output')
+
+ common.npm(
+ [
+ 'version',
+ 'patch',
+ '--loglevel', 'silent'
+ // package config is picked up from env
+ ],
+ { cwd: pkg, env: { PATH: process.env.PATH } },
+ function (err, code, stdout, stderr) {
+ t.ifError(err, 'npm version ran without issue')
t.notOk(code, 'exited with a non-error code')
t.notOk(stderr, 'no error output')
- common.npm(
- [
- 'version',
- 'patch',
- '--loglevel', 'silent'
- // package config is picked up from env
- ],
- { cwd: pkg, env: { PATH: process.env.PATH } },
- function (err, code, stdout, stderr) {
- t.ifError(err, 'npm version ran without issue')
- t.notOk(code, 'exited with a non-error code')
- t.notOk(stderr, 'no error output')
-
- git.whichAndExec(
- ['tag'],
- { cwd: pkg, env: process.env },
- function (er, tags, stderr) {
- t.ok(tags.match(/q0\.1\.3/g), 'tag was created by version' + tags)
- t.end()
- }
- )
- }
+ git.whichAndExec(
+ ['tag'],
+ { cwd: pkg, env: process.env },
+ function (er, tags, stderr) {
+ t.ok(tags.match(/q0\.1\.3/g), 'tag was created by version' + tags)
+ t.end()
+ }
)
- })
- })
- })
+ }
+ )
+ }
+ )
+ }
+ )
+ })
})
test('cleanup', function (t) {
- cleanup()
- t.end()
+ cleanup()
+ t.end()
})
function cleanup () {
- // windows fix for locked files
- process.chdir(osenv.tmpdir())
+ // windows fix for locked files
+ process.chdir(osenv.tmpdir())
- rimraf.sync(pkg)
+ rimraf.sync(pkg)
}
function setup () {
- cleanup()
- mkdirp.sync(cache)
- process.chdir(pkg)
+ cleanup()
+ mkdirp.sync(cache)
+ process.chdir(pkg)
- fs.writeFileSync(packagePath, JSON.stringify(json), 'utf8')
- fs.writeFileSync(npmrc, configContents, 'ascii')
+ fs.writeFileSync(packagePath, JSON.stringify(json), 'utf8')
+ fs.writeFileSync(npmrc, configContents, 'ascii')
}
diff --git a/deps/npm/test/tap/team.js b/deps/npm/test/tap/team.js
new file mode 100644
index 00000000000000..4bfcbaddb2d90b
--- /dev/null
+++ b/deps/npm/test/tap/team.js
@@ -0,0 +1,136 @@
+var fs = require('fs')
+var path = require('path')
+var rimraf = require('rimraf')
+var mr = require('npm-registry-mock')
+
+var test = require('tap').test
+var common = require('../common-tap.js')
+
+var server
+
+test('setup', function (t) {
+ mr({port: common.port}, function (err, s) {
+ t.ifError(err, 'registry mocked successfully')
+ server = s
+ t.end()
+ })
+})
+
+test('team create basic', function (t) {
+ var teamData = {
+ name: 'test',
+ scope_id: 1234,
+ created: '2015-07-23T18:07:49.959Z',
+ updated: '2015-07-23T18:07:49.959Z',
+ deleted: null
+ }
+ server.put('/-/org/myorg/team', JSON.stringify({
+ name: teamData.name
+ })).reply(200, teamData)
+ common.npm([
+ 'team', 'create', 'myorg:' + teamData.name,
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'npm team')
+ t.equal(code, 0, 'exited OK')
+ t.equal(stderr, '', 'no error output')
+ t.same(JSON.parse(stdout), teamData)
+ t.end()
+ })
+})
+
+test('team destroy', function (t) {
+ var teamData = {
+ name: 'myteam',
+ scope_id: 1234,
+ created: '2015-07-23T18:07:49.959Z',
+ updated: '2015-07-23T18:07:49.959Z',
+ deleted: '2015-07-23T18:27:27.178Z'
+ }
+ server.delete('/-/team/myorg/' + teamData.name).reply(200, teamData)
+ common.npm([
+ 'team', 'destroy', 'myorg:' + teamData.name,
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'npm team')
+ t.equal(code, 0, 'exited OK')
+ t.equal(stderr, '', 'no error output')
+ t.same(JSON.parse(stdout), teamData)
+ t.end()
+ })
+})
+
+test('team add', function (t) {
+ var user = 'zkat'
+ server.put('/-/team/myorg/myteam/user', JSON.stringify({
+ user: user
+ })).reply(200)
+ common.npm([
+ 'team', 'add', 'myorg:myteam', user,
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'npm team')
+ t.equal(code, 0, 'exited OK')
+ t.equal(stderr, '', 'no error output')
+ t.end()
+ })
+})
+
+test('team rm', function (t) {
+ var user = 'zkat'
+ server.delete('/-/team/myorg/myteam/user', JSON.stringify({
+ user: user
+ })).reply(200)
+ common.npm([
+ 'team', 'rm', 'myorg:myteam', user,
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'npm team')
+ t.equal(code, 0, 'exited OK')
+ t.equal(stderr, '', 'no error output')
+ t.end()
+ })
+})
+
+test('team ls (on org)', function (t) {
+ var teams = ['myorg:team1', 'myorg:team2', 'myorg:team3']
+ server.get('/-/org/myorg/team?format=cli').reply(200, teams)
+ common.npm([
+ 'team', 'ls', 'myorg',
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'npm team')
+ t.equal(code, 0, 'exited OK')
+ t.equal(stderr, '', 'no error output')
+ t.same(JSON.parse(stdout), teams)
+ t.end()
+ })
+})
+
+test('team ls (on team)', function (t) {
+ var users = ['zkat', 'bcoe']
+ server.get('/-/team/myorg/myteam/user?format=cli').reply(200, users)
+ common.npm([
+ 'team', 'ls', 'myorg:myteam',
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'npm team')
+ t.equal(code, 0, 'exited OK')
+ t.equal(stderr, '', 'no error output')
+ t.same(JSON.parse(stdout), users)
+ t.end()
+ })
+})
+
+test('cleanup', function (t) {
+ t.pass('cleaned up')
+ server.done()
+ server.close()
+ t.end()
+})
diff --git a/deps/openssl/config/Makefile b/deps/openssl/config/Makefile
index 1d4b1570122bfd..b56e9004c3b732 100644
--- a/deps/openssl/config/Makefile
+++ b/deps/openssl/config/Makefile
@@ -2,10 +2,10 @@ PERL = perl
CONFIGURE = ./Configure
COPT = no-shared no-symlinks
-ARCHS = BSD-x86 BSD-x86_64 VC-WIN32 VC-WIN64A darwin64-x86_64-cc \
-darwin-i386-cc linux-aarch64 linux-armv4 linux-elf linux-x32 \
-linux-x86_64 linux-ppc linux-ppc64 solaris-x86-gcc \
-solaris64-x86_64-gcc
+ARCHS = aix-gcc aix64-gcc BSD-x86 BSD-x86_64 VC-WIN32 \
+VC-WIN64A darwin64-x86_64-cc darwin-i386-cc linux-aarch64 \
+linux-armv4 linux-elf linux-x32 linux-x86_64 linux-ppc \
+linux-ppc64 solaris-x86-gcc solaris64-x86_64-gcc
CFG = opensslconf.h
SRC_CFG = ../openssl/crypto/$(CFG)
diff --git a/deps/openssl/config/archs/aix-gcc/opensslconf.h b/deps/openssl/config/archs/aix-gcc/opensslconf.h
new file mode 100644
index 00000000000000..d419fb02db8289
--- /dev/null
+++ b/deps/openssl/config/archs/aix-gcc/opensslconf.h
@@ -0,0 +1,261 @@
+/* opensslconf.h */
+/* WARNING: Generated automatically from opensslconf.h.in by Configure. */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/* OpenSSL was configured with the following options: */
+#ifndef OPENSSL_SYSNAME_AIX
+# define OPENSSL_SYSNAME_AIX
+#endif
+#ifndef OPENSSL_DOING_MAKEDEPEND
+
+
+#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
+# define OPENSSL_NO_EC_NISTP_64_GCC_128
+#endif
+#ifndef OPENSSL_NO_GMP
+# define OPENSSL_NO_GMP
+#endif
+#ifndef OPENSSL_NO_JPAKE
+# define OPENSSL_NO_JPAKE
+#endif
+#ifndef OPENSSL_NO_KRB5
+# define OPENSSL_NO_KRB5
+#endif
+#ifndef OPENSSL_NO_LIBUNBOUND
+# define OPENSSL_NO_LIBUNBOUND
+#endif
+#ifndef OPENSSL_NO_MD2
+# define OPENSSL_NO_MD2
+#endif
+#ifndef OPENSSL_NO_RC5
+# define OPENSSL_NO_RC5
+#endif
+#ifndef OPENSSL_NO_RFC3779
+# define OPENSSL_NO_RFC3779
+#endif
+#ifndef OPENSSL_NO_SCTP
+# define OPENSSL_NO_SCTP
+#endif
+#ifndef OPENSSL_NO_SSL_TRACE
+# define OPENSSL_NO_SSL_TRACE
+#endif
+#ifndef OPENSSL_NO_STORE
+# define OPENSSL_NO_STORE
+#endif
+#ifndef OPENSSL_NO_UNIT_TEST
+# define OPENSSL_NO_UNIT_TEST
+#endif
+
+#endif /* OPENSSL_DOING_MAKEDEPEND */
+
+#ifndef OPENSSL_THREADS
+# define OPENSSL_THREADS
+#endif
+#ifndef OPENSSL_NO_DYNAMIC_ENGINE
+# define OPENSSL_NO_DYNAMIC_ENGINE
+#endif
+
+/* The OPENSSL_NO_* macros are also defined as NO_* if the application
+ asks for it. This is a transient feature that is provided for those
+ who haven't had the time to do the appropriate changes in their
+ applications. */
+#ifdef OPENSSL_ALGORITHM_DEFINES
+# if defined(OPENSSL_NO_EC_NISTP_64_GCC_128) && !defined(NO_EC_NISTP_64_GCC_128)
+# define NO_EC_NISTP_64_GCC_128
+# endif
+# if defined(OPENSSL_NO_GMP) && !defined(NO_GMP)
+# define NO_GMP
+# endif
+# if defined(OPENSSL_NO_JPAKE) && !defined(NO_JPAKE)
+# define NO_JPAKE
+# endif
+# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5)
+# define NO_KRB5
+# endif
+# if defined(OPENSSL_NO_LIBUNBOUND) && !defined(NO_LIBUNBOUND)
+# define NO_LIBUNBOUND
+# endif
+# if defined(OPENSSL_NO_MD2) && !defined(NO_MD2)
+# define NO_MD2
+# endif
+# if defined(OPENSSL_NO_RC5) && !defined(NO_RC5)
+# define NO_RC5
+# endif
+# if defined(OPENSSL_NO_RFC3779) && !defined(NO_RFC3779)
+# define NO_RFC3779
+# endif
+# if defined(OPENSSL_NO_SCTP) && !defined(NO_SCTP)
+# define NO_SCTP
+# endif
+# if defined(OPENSSL_NO_SSL_TRACE) && !defined(NO_SSL_TRACE)
+# define NO_SSL_TRACE
+# endif
+# if defined(OPENSSL_NO_STORE) && !defined(NO_STORE)
+# define NO_STORE
+# endif
+# if defined(OPENSSL_NO_UNIT_TEST) && !defined(NO_UNIT_TEST)
+# define NO_UNIT_TEST
+# endif
+#endif
+
+
+
+/* crypto/opensslconf.h.in */
+
+/* Generate 80386 code? */
+#undef I386_ONLY
+
+#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
+#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
+#define ENGINESDIR "/usr/local/ssl/lib/engines"
+#define OPENSSLDIR "/usr/local/ssl"
+#endif
+#endif
+
+#undef OPENSSL_UNISTD
+#define OPENSSL_UNISTD
+
+#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
+
+#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
+#define IDEA_INT unsigned int
+#endif
+
+#if defined(HEADER_MD2_H) && !defined(MD2_INT)
+#define MD2_INT unsigned int
+#endif
+
+#if defined(HEADER_RC2_H) && !defined(RC2_INT)
+/* I need to put in a mod for the alpha - eay */
+#define RC2_INT unsigned int
+#endif
+
+#if defined(HEADER_RC4_H)
+#if !defined(RC4_INT)
+/* using int types make the structure larger but make the code faster
+ * on most boxes I have tested - up to %20 faster. */
+/*
+ * I don't know what does "most" mean, but declaring "int" is a must on:
+ * - Intel P6 because partial register stalls are very expensive;
+ * - elder Alpha because it lacks byte load/store instructions;
+ */
+#define RC4_INT unsigned char
+#endif
+#if !defined(RC4_CHUNK)
+/*
+ * This enables code handling data aligned at natural CPU word
+ * boundary. See crypto/rc4/rc4_enc.c for further details.
+ */
+#undef RC4_CHUNK
+#endif
+#endif
+
+#if (defined(HEADER_NEW_DES_H) || defined(HEADER_DES_H)) && !defined(DES_LONG)
+/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
+ * %20 speed up (longs are 8 bytes, int's are 4). */
+#ifndef DES_LONG
+#define DES_LONG unsigned long
+#endif
+#endif
+
+#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
+#define CONFIG_HEADER_BN_H
+#define BN_LLONG
+
+/* Should we define BN_DIV2W here? */
+
+/* Only one for the following should be defined */
+#undef SIXTY_FOUR_BIT_LONG
+#undef SIXTY_FOUR_BIT
+#define THIRTY_TWO_BIT
+#endif
+
+#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
+#define CONFIG_HEADER_RC4_LOCL_H
+/* if this is defined data[i] is used instead of *data, this is a %20
+ * speedup on x86 */
+#undef RC4_INDEX
+#endif
+
+#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
+#define CONFIG_HEADER_BF_LOCL_H
+#undef BF_PTR
+#endif /* HEADER_BF_LOCL_H */
+
+#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H)
+#define CONFIG_HEADER_DES_LOCL_H
+#ifndef DES_DEFAULT_OPTIONS
+/* the following is tweaked from a config script, that is why it is a
+ * protected undef/define */
+#ifndef DES_PTR
+#undef DES_PTR
+#endif
+
+/* This helps C compiler generate the correct code for multiple functional
+ * units. It reduces register dependancies at the expense of 2 more
+ * registers */
+#ifndef DES_RISC1
+#undef DES_RISC1
+#endif
+
+#ifndef DES_RISC2
+#undef DES_RISC2
+#endif
+
+#if defined(DES_RISC1) && defined(DES_RISC2)
+#error YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
+#endif
+
+/* Unroll the inner loop, this sometimes helps, sometimes hinders.
+ * Very mucy CPU dependant */
+#ifndef DES_UNROLL
+#undef DES_UNROLL
+#endif
+
+/* These default values were supplied by
+ * Peter Gutman
+ * They are only used if nothing else has been defined */
+#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
+/* Special defines which change the way the code is built depending on the
+ CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
+ even newer MIPS CPU's, but at the moment one size fits all for
+ optimization options. Older Sparc's work better with only UNROLL, but
+ there's no way to tell at compile time what it is you're running on */
+
+#if defined( sun ) /* Newer Sparc's */
+# define DES_PTR
+# define DES_RISC1
+# define DES_UNROLL
+#elif defined( __ultrix ) /* Older MIPS */
+# define DES_PTR
+# define DES_RISC2
+# define DES_UNROLL
+#elif defined( __osf1__ ) /* Alpha */
+# define DES_PTR
+# define DES_RISC2
+#elif defined ( _AIX ) /* RS6000 */
+ /* Unknown */
+#elif defined( __hpux ) /* HP-PA */
+ /* Unknown */
+#elif defined( __aux ) /* 68K */
+ /* Unknown */
+#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */
+# define DES_UNROLL
+#elif defined( __sgi ) /* Newer MIPS */
+# define DES_PTR
+# define DES_RISC2
+# define DES_UNROLL
+#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */
+# define DES_PTR
+# define DES_RISC1
+# define DES_UNROLL
+#endif /* Systems-specific speed defines */
+#endif
+
+#endif /* DES_DEFAULT_OPTIONS */
+#endif /* HEADER_DES_LOCL_H */
+#ifdef __cplusplus
+}
+#endif
diff --git a/deps/openssl/config/archs/aix64-gcc/opensslconf.h b/deps/openssl/config/archs/aix64-gcc/opensslconf.h
new file mode 100644
index 00000000000000..3c17cfc5d047df
--- /dev/null
+++ b/deps/openssl/config/archs/aix64-gcc/opensslconf.h
@@ -0,0 +1,261 @@
+/* opensslconf.h */
+/* WARNING: Generated automatically from opensslconf.h.in by Configure. */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/* OpenSSL was configured with the following options: */
+#ifndef OPENSSL_SYSNAME_AIX
+# define OPENSSL_SYSNAME_AIX
+#endif
+#ifndef OPENSSL_DOING_MAKEDEPEND
+
+
+#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
+# define OPENSSL_NO_EC_NISTP_64_GCC_128
+#endif
+#ifndef OPENSSL_NO_GMP
+# define OPENSSL_NO_GMP
+#endif
+#ifndef OPENSSL_NO_JPAKE
+# define OPENSSL_NO_JPAKE
+#endif
+#ifndef OPENSSL_NO_KRB5
+# define OPENSSL_NO_KRB5
+#endif
+#ifndef OPENSSL_NO_LIBUNBOUND
+# define OPENSSL_NO_LIBUNBOUND
+#endif
+#ifndef OPENSSL_NO_MD2
+# define OPENSSL_NO_MD2
+#endif
+#ifndef OPENSSL_NO_RC5
+# define OPENSSL_NO_RC5
+#endif
+#ifndef OPENSSL_NO_RFC3779
+# define OPENSSL_NO_RFC3779
+#endif
+#ifndef OPENSSL_NO_SCTP
+# define OPENSSL_NO_SCTP
+#endif
+#ifndef OPENSSL_NO_SSL_TRACE
+# define OPENSSL_NO_SSL_TRACE
+#endif
+#ifndef OPENSSL_NO_STORE
+# define OPENSSL_NO_STORE
+#endif
+#ifndef OPENSSL_NO_UNIT_TEST
+# define OPENSSL_NO_UNIT_TEST
+#endif
+
+#endif /* OPENSSL_DOING_MAKEDEPEND */
+
+#ifndef OPENSSL_THREADS
+# define OPENSSL_THREADS
+#endif
+#ifndef OPENSSL_NO_DYNAMIC_ENGINE
+# define OPENSSL_NO_DYNAMIC_ENGINE
+#endif
+
+/* The OPENSSL_NO_* macros are also defined as NO_* if the application
+ asks for it. This is a transient feature that is provided for those
+ who haven't had the time to do the appropriate changes in their
+ applications. */
+#ifdef OPENSSL_ALGORITHM_DEFINES
+# if defined(OPENSSL_NO_EC_NISTP_64_GCC_128) && !defined(NO_EC_NISTP_64_GCC_128)
+# define NO_EC_NISTP_64_GCC_128
+# endif
+# if defined(OPENSSL_NO_GMP) && !defined(NO_GMP)
+# define NO_GMP
+# endif
+# if defined(OPENSSL_NO_JPAKE) && !defined(NO_JPAKE)
+# define NO_JPAKE
+# endif
+# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5)
+# define NO_KRB5
+# endif
+# if defined(OPENSSL_NO_LIBUNBOUND) && !defined(NO_LIBUNBOUND)
+# define NO_LIBUNBOUND
+# endif
+# if defined(OPENSSL_NO_MD2) && !defined(NO_MD2)
+# define NO_MD2
+# endif
+# if defined(OPENSSL_NO_RC5) && !defined(NO_RC5)
+# define NO_RC5
+# endif
+# if defined(OPENSSL_NO_RFC3779) && !defined(NO_RFC3779)
+# define NO_RFC3779
+# endif
+# if defined(OPENSSL_NO_SCTP) && !defined(NO_SCTP)
+# define NO_SCTP
+# endif
+# if defined(OPENSSL_NO_SSL_TRACE) && !defined(NO_SSL_TRACE)
+# define NO_SSL_TRACE
+# endif
+# if defined(OPENSSL_NO_STORE) && !defined(NO_STORE)
+# define NO_STORE
+# endif
+# if defined(OPENSSL_NO_UNIT_TEST) && !defined(NO_UNIT_TEST)
+# define NO_UNIT_TEST
+# endif
+#endif
+
+
+
+/* crypto/opensslconf.h.in */
+
+/* Generate 80386 code? */
+#undef I386_ONLY
+
+#if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
+#if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
+#define ENGINESDIR "/usr/local/ssl/lib/engines"
+#define OPENSSLDIR "/usr/local/ssl"
+#endif
+#endif
+
+#undef OPENSSL_UNISTD
+#define OPENSSL_UNISTD
+
+#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
+
+#if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
+#define IDEA_INT unsigned int
+#endif
+
+#if defined(HEADER_MD2_H) && !defined(MD2_INT)
+#define MD2_INT unsigned int
+#endif
+
+#if defined(HEADER_RC2_H) && !defined(RC2_INT)
+/* I need to put in a mod for the alpha - eay */
+#define RC2_INT unsigned int
+#endif
+
+#if defined(HEADER_RC4_H)
+#if !defined(RC4_INT)
+/* using int types make the structure larger but make the code faster
+ * on most boxes I have tested - up to %20 faster. */
+/*
+ * I don't know what does "most" mean, but declaring "int" is a must on:
+ * - Intel P6 because partial register stalls are very expensive;
+ * - elder Alpha because it lacks byte load/store instructions;
+ */
+#define RC4_INT unsigned char
+#endif
+#if !defined(RC4_CHUNK)
+/*
+ * This enables code handling data aligned at natural CPU word
+ * boundary. See crypto/rc4/rc4_enc.c for further details.
+ */
+#undef RC4_CHUNK
+#endif
+#endif
+
+#if (defined(HEADER_NEW_DES_H) || defined(HEADER_DES_H)) && !defined(DES_LONG)
+/* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
+ * %20 speed up (longs are 8 bytes, int's are 4). */
+#ifndef DES_LONG
+#define DES_LONG unsigned long
+#endif
+#endif
+
+#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
+#define CONFIG_HEADER_BN_H
+#undef BN_LLONG
+
+/* Should we define BN_DIV2W here? */
+
+/* Only one for the following should be defined */
+#define SIXTY_FOUR_BIT_LONG
+#undef SIXTY_FOUR_BIT
+#undef THIRTY_TWO_BIT
+#endif
+
+#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
+#define CONFIG_HEADER_RC4_LOCL_H
+/* if this is defined data[i] is used instead of *data, this is a %20
+ * speedup on x86 */
+#undef RC4_INDEX
+#endif
+
+#if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
+#define CONFIG_HEADER_BF_LOCL_H
+#undef BF_PTR
+#endif /* HEADER_BF_LOCL_H */
+
+#if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H)
+#define CONFIG_HEADER_DES_LOCL_H
+#ifndef DES_DEFAULT_OPTIONS
+/* the following is tweaked from a config script, that is why it is a
+ * protected undef/define */
+#ifndef DES_PTR
+#undef DES_PTR
+#endif
+
+/* This helps C compiler generate the correct code for multiple functional
+ * units. It reduces register dependancies at the expense of 2 more
+ * registers */
+#ifndef DES_RISC1
+#undef DES_RISC1
+#endif
+
+#ifndef DES_RISC2
+#undef DES_RISC2
+#endif
+
+#if defined(DES_RISC1) && defined(DES_RISC2)
+#error YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
+#endif
+
+/* Unroll the inner loop, this sometimes helps, sometimes hinders.
+ * Very mucy CPU dependant */
+#ifndef DES_UNROLL
+#undef DES_UNROLL
+#endif
+
+/* These default values were supplied by
+ * Peter Gutman
+ * They are only used if nothing else has been defined */
+#if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
+/* Special defines which change the way the code is built depending on the
+ CPU and OS. For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
+ even newer MIPS CPU's, but at the moment one size fits all for
+ optimization options. Older Sparc's work better with only UNROLL, but
+ there's no way to tell at compile time what it is you're running on */
+
+#if defined( sun ) /* Newer Sparc's */
+# define DES_PTR
+# define DES_RISC1
+# define DES_UNROLL
+#elif defined( __ultrix ) /* Older MIPS */
+# define DES_PTR
+# define DES_RISC2
+# define DES_UNROLL
+#elif defined( __osf1__ ) /* Alpha */
+# define DES_PTR
+# define DES_RISC2
+#elif defined ( _AIX ) /* RS6000 */
+ /* Unknown */
+#elif defined( __hpux ) /* HP-PA */
+ /* Unknown */
+#elif defined( __aux ) /* 68K */
+ /* Unknown */
+#elif defined( __dgux ) /* 88K (but P6 in latest boxes) */
+# define DES_UNROLL
+#elif defined( __sgi ) /* Newer MIPS */
+# define DES_PTR
+# define DES_RISC2
+# define DES_UNROLL
+#elif defined(i386) || defined(__i386__) /* x86 boxes, should be gcc */
+# define DES_PTR
+# define DES_RISC1
+# define DES_UNROLL
+#endif /* Systems-specific speed defines */
+#endif
+
+#endif /* DES_DEFAULT_OPTIONS */
+#endif /* HEADER_DES_LOCL_H */
+#ifdef __cplusplus
+}
+#endif
diff --git a/deps/openssl/config/opensslconf.h b/deps/openssl/config/opensslconf.h
index 66cea5c2851c89..9a7cda94543e68 100644
--- a/deps/openssl/config/opensslconf.h
+++ b/deps/openssl/config/opensslconf.h
@@ -18,6 +18,8 @@
| --dest-os | --dest-cpu | OpenSSL target arch | CI |
| --------- | ---------- | -------------------- | --- |
+ | aix | ppc | aix-gcc | o |
+ | aix | ppc64 | aix64-gcc | o |
| linux | ia32 | linux-elf | o |
| linux | x32 | linux-x32 | - |
| linux | x64 | linux-x86_64 | o |
@@ -41,6 +43,7 @@
| --dest-os | pre-defined macro |
| ------------------ | ------------------------- |
+ | aix | _AIX |
| win | _WIN32 |
| win(64bit) | _WIN64 |
| mac | __APPLE__ && __MACH__ |
@@ -62,7 +65,9 @@
| x64 | __x86_64__ |
| x64(win) | _M_X64 |
| ppc | __PPC__ |
+ | | _ARCH_PPC |
| ppc64 | __PPC64__ |
+ | | _ARCH_PPC64 |
These are the list which is not implemented yet.
@@ -115,6 +120,10 @@
# include "./archs/linux-ppc64/opensslconf.h"
#elif defined(OPENSSL_LINUX) && !defined(__PPC64__) && defined(__ppc__)
# include "./archs/linux-ppc/opensslconf.h"
+#elif defined(_AIX) && defined(_ARCH_PPC64)
+# include "./archs/aix64-gcc/opensslconf.h"
+#elif defined(_AIX) && !defined(_ARCH_PPC64) && defined(_ARCH_PPC)
+# include "./archs/aix-gcc/opensslconf.h"
#else
# include "./archs/linux-elf/opensslconf.h"
#endif
diff --git a/deps/openssl/openssl.gyp b/deps/openssl/openssl.gyp
index 0389abdd149184..3a319d91f0df7a 100644
--- a/deps/openssl/openssl.gyp
+++ b/deps/openssl/openssl.gyp
@@ -43,6 +43,14 @@
],
},
}],
+ [ 'OS=="aix"', {
+ # AIX is missing /usr/include/endian.h
+ 'defines': [
+ '__LITTLE_ENDIAN=1234',
+ '__BIG_ENDIAN=4321',
+ '__BYTE_ORDER=__BIG_ENDIAN',
+ '__FLOAT_WORD_ORDER=__BIG_ENDIAN'],
+ }],
[ 'node_byteorder=="big"', {
# Define Big Endian
'defines': ['B_ENDIAN']
diff --git a/deps/uv/AUTHORS b/deps/uv/AUTHORS
index bbb8f4d8cdcadb..7f297b87fd0105 100644
--- a/deps/uv/AUTHORS
+++ b/deps/uv/AUTHORS
@@ -200,3 +200,27 @@ farblue68
Jason Williams
Igor Soarez
Miodrag Milanovic
+Cheng Zhao
+Michael Neumann
+Stefano Cristiano
+heshamsafi
+A. Hauptmann
+John McNamee
+Yosuke Furukawa
+Santiago Gimeno
+guworks
+RossBencina
+Roger A. Light
+chenttuuvv
+Richard Lau
+ronkorving
+Corbin Simpson
+Zachary Hamm
+Karl Skomski
+Jeremy Whitlock
+Willem Thiart
+Ben Trask
+Jianghua Yang
+Colin Snover
+Sakthipriyan Vairamani
+Eli Skeggs
diff --git a/deps/uv/CONTRIBUTING.md b/deps/uv/CONTRIBUTING.md
index 332ed1129b848c..b46edd492aab47 100644
--- a/deps/uv/CONTRIBUTING.md
+++ b/deps/uv/CONTRIBUTING.md
@@ -49,7 +49,7 @@ the [Google C/C++ style guide]. Some of the key points, as well as some
additional guidelines, are enumerated below.
* Code that is specific to unix-y platforms should be placed in `src/unix`, and
- declarations go into `src/uv-unix.h`.
+ declarations go into `include/uv-unix.h`.
* Source code that is Windows-specific goes into `src/win`, and related
publicly exported types, functions and macro declarations should generally
diff --git a/deps/uv/ChangeLog b/deps/uv/ChangeLog
index 5d3a4cad46b383..02168676aa9aef 100644
--- a/deps/uv/ChangeLog
+++ b/deps/uv/ChangeLog
@@ -1,3 +1,194 @@
+2015.09.12, Version 1.7.4 (Stable), a7ad4f52189d89cfcba35f78bfc5ff3b1f4105c4
+
+Changes since version 1.7.3:
+
+* doc: uv_read_start and uv_read_cb clarifications (Ben Trask)
+
+* freebsd: obtain true uptime through clock_gettime() (Jianghua Yang)
+
+* win, tty: do not convert \r to \r\n (Colin Snover)
+
+* build,gyp: add DragonFly to the list of OSes (Michael Neumann)
+
+* fs: fix bug in sendfile for DragonFly (Michael Neumann)
+
+* doc: add uv_dlsym() return type (Brian White)
+
+* tests: fix fs tests run w/o full getdents support (Jeremy Whitlock)
+
+* doc: fix typo (Devchandra Meetei Leishangthem)
+
+* doc: fix uv-unix.h location (Sakthipriyan Vairamani)
+
+* unix: fix error check when closing process pipe fd (Ben Noordhuis)
+
+* test,freebsd: fix ipc_listen_xx_write tests (Santiago Gimeno)
+
+* win: fix unsavory rwlock fallback implementation (Bert Belder)
+
+* doc: clarify repeat timer behavior (Eli Skeggs)
+
+
+2015.08.28, Version 1.7.3 (Stable), 93877b11c8b86e0a6befcda83a54555c1e36e4f0
+
+Changes since version 1.7.2:
+
+* threadpool: fix thread starvation bug (Ben Noordhuis)
+
+
+2015.08.25, Version 1.7.2 (Stable), 4d13a013fcfa72311f0102751fdc7951873f466c
+
+Changes since version 1.7.1:
+
+* unix, win: make uv_loop_init return on error (Willem Thiart)
+
+* win: reset pipe handle for pipe servers (Saúl Ibarra Corretgé)
+
+* win: fix replacing pipe handle for pipe servers (Saúl Ibarra Corretgé)
+
+* win: fix setting pipe pending instances after bind (Saúl Ibarra Corretgé)
+
+
+2015.08.20, Version 1.7.1 (Stable), 44f4b6bd82d8ae4583ccc4768a83af778ef69f85
+
+Changes since version 1.7.0:
+
+* doc: document the procedure for verifying releases (Saúl Ibarra Corretgé)
+
+* doc: add note about Windows binaries to the README (Saúl Ibarra Corretgé)
+
+* doc: use long GPG IDs in MAINTAINERS.md (Saúl Ibarra Corretgé)
+
+* Revert "stream: squelch ECONNRESET error if already closed" (Saúl Ibarra
+ Corretgé)
+
+* doc: clarify uv_read_stop() is idempotent (Corbin Simpson)
+
+* unix: OpenBSD's setsockopt needs an unsigned char for multicast (Zachary
+ Hamm)
+
+* test: Fix two memory leaks (Karl Skomski)
+
+* unix,win: return EINVAL on nullptr args in uv_fs_{read,write} (Karl Skomski)
+
+* win: set accepted TCP sockets as non-inheritable (Saúl Ibarra Corretgé)
+
+* unix: remove superfluous parentheses in fs macros (Ben Noordhuis)
+
+* unix: don't copy arguments for sync fs requests (Ben Noordhuis)
+
+* test: plug small memory leak in unix test runner (Ben Noordhuis)
+
+* unix,windows: allow NULL loop for sync fs requests (Ben Noordhuis)
+
+* unix,windows: don't assert on unknown error code (Ben Noordhuis)
+
+* stream: retry write on EPROTOTYPE on OSX (Brian White)
+
+* common: fix use of snprintf on Windows (Saúl Ibarra Corretgé)
+
+* tests: refactored fs watch_dir tests for stability (Jeremy Whitlock)
+
+
+2015.08.06, Version 1.7.0 (Stable), 415a865d6365ba58d02b92b89d46ba5d7744ec8b
+
+Changes since version 1.6.1:
+
+* win,stream: add slot to remember CRT fd (Bert Belder)
+
+* win,pipe: properly close when created from CRT fd (Bert Belder)
+
+* win,pipe: don't close fd 0-2 (Bert Belder)
+
+* win,tty: convert fd -> handle safely (Bert Belder)
+
+* win,tty: properly close when created from CRT fd (Bert Belder)
+
+* win,tty: don't close fd 0-2 (Bert Belder)
+
+* win,fs: don't close fd 0-2 (Bert Belder)
+
+* win: include "malloc.h" (Cheng Zhao)
+
+* windows: MSVC 2015 has C99 inline (Jason Williams)
+
+* dragonflybsd: fixes for nonblocking and cloexec (Michael Neumann)
+
+* dragonflybsd: use sendfile(2) for uv_fs_sendfile (Michael Neumann)
+
+* dragonflybsd: fix uv_exepath (Michael Neumann)
+
+* win,fs: Fixes align(8) directive on mingw (Stefano Cristiano)
+
+* unix, win: prevent replacing fd in uv_{udp,tcp,pipe}_t (Saúl Ibarra Corretgé)
+
+* win: move logic to set socket non-inheritable to uv_tcp_set_socket (Saúl
+ Ibarra Corretgé)
+
+* unix, win: add ability to create tcp/udp sockets early (Saúl Ibarra Corretgé)
+
+* test: retry select() on EINTR, honor milliseconds (Ben Noordhuis)
+
+* unix: consolidate tcp and udp bind error (Saúl Ibarra Corretgé)
+
+* test: conditionally skip udp_ipv6_multicast_join6 (heshamsafi)
+
+* core: add UV_VERSION_HEX macro (Saúl Ibarra Corretgé)
+
+* doc: add section with version-checking macros and functions (Saúl Ibarra
+ Corretgé)
+
+* tty: cleanup handle if uv_tty_init fails (Saúl Ibarra Corretgé)
+
+* darwin: save a fd when FSEvents is used (Saúl Ibarra Corretgé)
+
+* win: fix returning thread id in uv_thread_self (Saúl Ibarra Corretgé)
+
+* common: use offsetof for QUEUE_DATA (Saúl Ibarra Corretgé)
+
+* win: remove UV_HANDLE_CONNECTED (A. Hauptmann)
+
+* docs: add Windows specific note for uv_fs_open (Saúl Ibarra Corretgé)
+
+* doc: add note about uv_fs_scandir (Saúl Ibarra Corretgé)
+
+* test,unix: reduce stack size of watchdog threads (Ben Noordhuis)
+
+* win: add support for recursive file watching (Saúl Ibarra Corretgé)
+
+* win,tty: support consoles with non-default colors (John McNamee)
+
+* doc: add missing variable name (Yosuke Furukawa)
+
+* stream: squelch ECONNRESET error if already closed (Santiago Gimeno)
+
+* build: remove ancient condition from common.gypi (Saúl Ibarra Corretgé)
+
+* tests: skip some tests when network is unreachable (Luca Bruno)
+
+* build: proper support for android cross compilation (guworks)
+
+* android: add missing include to pthread-fixes.c (RossBencina)
+
+* test: fix compilation warning (Saúl Ibarra Corretgé)
+
+* doc: add a note about uv_dirent_t.type (Saúl Ibarra Corretgé)
+
+* win,test: fix shared library build (Saúl Ibarra Corretgé)
+
+* test: fix compilation warning (Santiago Gimeno)
+
+* build: add experimental Windows installer (Roger A. Light)
+
+* threadpool: send signal only when queue is empty (chenttuuvv)
+
+* aix: fix uv_exepath with relative paths (Richard Lau)
+
+* build: fix version syntax in AppVeyor file (Saúl Ibarra Corretgé)
+
+* unix: allow nbufs > IOV_MAX in uv_fs_{read,write} (ronkorving)
+
+
2015.06.06, Version 1.6.1 (Stable), 30c8be07bb78a66fdee5141626bf53a49a17094a
Changes since version 1.6.0:
diff --git a/deps/uv/MAINTAINERS.md b/deps/uv/MAINTAINERS.md
new file mode 100644
index 00000000000000..4db2f5130c060d
--- /dev/null
+++ b/deps/uv/MAINTAINERS.md
@@ -0,0 +1,36 @@
+
+# Project Maintainers
+
+libuv is currently managed by the following individuals:
+
+* **Ben Noordhuis** ([@bnoordhuis](https://github.com/bnoordhuis))
+ - GPG key: D77B 1E34 243F BAF0 5F8E 9CC3 4F55 C8C8 46AB 89B9 (pubkey-bnoordhuis)
+* **Bert Belder** ([@piscisaureus](https://github.com/piscisaureus))
+* **Fedor Indutny** ([@indutny](https://github.com/indutny))
+ - GPG key: AF2E EA41 EC34 47BF DD86 FED9 D706 3CCE 19B7 E890 (pubkey-indutny)
+* **Saúl Ibarra Corretgé** ([@saghul](https://github.com/saghul))
+ - GPG key: FDF5 1936 4458 319F A823 3DC9 410E 5553 AE9B C059 (pubkey-saghul)
+
+## Storing a maintainer key in Git
+
+It's quite handy to store a maintainer's signature as a git blob, and have
+that object tagged and signed with such key.
+
+Export your public key:
+
+ $ gpg --armor --export saghul@gmail.com > saghul.asc
+
+Store it as a blob on the repo:
+
+ $ git hash-object -w saghul.asc
+
+The previous command returns a hash, copy it. For the sake of this explanation,
+we'll assume it's 'abcd1234'. Storing the blob in git is not enough, it could
+be garbage collected since nothing references it, so we'll create a tag for it:
+
+ $ git tag -s pubkey-saghul abcd1234
+
+Commit the changes and push:
+
+ $ git push origin pubkey-saghul
+
diff --git a/deps/uv/Makefile.am b/deps/uv/Makefile.am
index e9814d7b703e14..f0ca6a7d82b195 100644
--- a/deps/uv/Makefile.am
+++ b/deps/uv/Makefile.am
@@ -186,8 +186,10 @@ test_run_tests_SOURCES = test/blackhole-server.c \
test/test-ping-pong.c \
test/test-pipe-bind-error.c \
test/test-pipe-connect-error.c \
+ test/test-pipe-connect-multiple.c \
test/test-pipe-connect-prepare.c \
test/test-pipe-getsockname.c \
+ test/test-pipe-pending-instances.c \
test/test-pipe-sendmsg.c \
test/test-pipe-server-close.c \
test/test-pipe-close-stdout-read-stdin.c \
@@ -215,6 +217,7 @@ test_run_tests_SOURCES = test/blackhole-server.c \
test/test-tcp-close-accept.c \
test/test-tcp-close-while-connecting.c \
test/test-tcp-close.c \
+ test/test-tcp-create-socket-early.c \
test/test-tcp-connect-error-after-write.c \
test/test-tcp-connect-error.c \
test/test-tcp-connect-timeout.c \
@@ -240,6 +243,7 @@ test_run_tests_SOURCES = test/blackhole-server.c \
test/test-timer.c \
test/test-tty.c \
test/test-udp-bind.c \
+ test/test-udp-create-socket-early.c \
test/test-udp-dgram-too-big.c \
test/test-udp-ipv6.c \
test/test-udp-multicast-interface.c \
diff --git a/deps/uv/README.md b/deps/uv/README.md
index f9a7a1e62e4d3f..0ce26699716a1a 100644
--- a/deps/uv/README.md
+++ b/deps/uv/README.md
@@ -89,6 +89,42 @@ also serve as API specification and usage examples.
These resources are not handled by libuv maintainers and might be out of
date. Please verify it before opening new issues.
+## Downloading
+
+libuv can be downloaded either from the
+[GitHub repository](https://github.com/libuv/libuv)
+or from the [downloads site](http://dist.libuv.org/dist/).
+
+Starting with libuv 1.7.0, binaries for Windows are also provided. This is to
+be considered EXPERIMENTAL.
+
+Before verifying the git tags or signature files, importing the relevant keys
+is necessary. Key IDs are listed in the
+[MAINTAINERS](https://github.com/libuv/libuv/blob/master/MAINTAINERS.md)
+file, but are also available as git blob objects for easier use.
+
+Importing a key the usual way:
+
+ $ gpg --keyserver pool.sks-keyservers.net \
+ --recv-keys AE9BC059
+
+Importing a key from a git blob object:
+
+ $ git show pubkey-saghul | gpg --import
+
+### Verifying releases
+
+Git tags are signed with the developer's key, they can be verified as follows:
+
+ $ git verify-tag v1.6.1
+
+Starting with libuv 1.7.0, the tarballs stored in the
+[downloads site](http://dist.libuv.org/dist/) are signed and an accomanying
+signature file sit alongside each. Once both the release tarball and the
+signature file are downloaded, the file can be verified as follows:
+
+ $ gpg --verify libuv-1.7.0.tar.gz.sign
+
## Build Instructions
For GCC there are two build methods: via autotools or via [GYP][].
diff --git a/deps/uv/android-configure b/deps/uv/android-configure
index 9750581206e27a..e0b250fb6348e2 100755
--- a/deps/uv/android-configure
+++ b/deps/uv/android-configure
@@ -6,7 +6,7 @@ $1/build/tools/make-standalone-toolchain.sh \
--toolchain=arm-linux-androideabi-4.8 \
--arch=arm \
--install-dir=$TOOLCHAIN \
- --platform=android-9
+ --platform=android-21
export PATH=$TOOLCHAIN/bin:$PATH
export AR=arm-linux-androideabi-ar
export CC=arm-linux-androideabi-gcc
@@ -16,5 +16,5 @@ export PLATFORM=android
if [ $2 -a $2 == 'gyp' ]
then
- ./gyp_uv.py -Dtarget_arch=arm -DOS=android
+ ./gyp_uv.py -Dtarget_arch=arm -DOS=android -f make-android
fi
diff --git a/deps/uv/appveyor.yml b/deps/uv/appveyor.yml
new file mode 100644
index 00000000000000..e730e1ca66a3e1
--- /dev/null
+++ b/deps/uv/appveyor.yml
@@ -0,0 +1,36 @@
+version: v1.7.4.build{build}
+
+install:
+ - cinst -y nsis
+
+matrix:
+ fast_finish: true
+ allow_failures:
+ - platform: x86
+ configuration: Release
+ - platform: x64
+ configuration: Release
+
+platform:
+ - x86
+ - x64
+
+configuration:
+ - Release
+
+build_script:
+ # Fixed tag version number if using a tag.
+ - cmd: if "%APPVEYOR_REPO_TAG%" == "true" set APPVEYOR_BUILD_VERSION=%APPVEYOR_REPO_TAG_NAME%
+ # vcbuild overwrites the platform variable.
+ - cmd: set ARCH=%platform%
+ - cmd: vcbuild.bat release %ARCH% shared
+
+after_build:
+ - '"%PROGRAMFILES(x86)%\NSIS\makensis" /DVERSION=%APPVEYOR_BUILD_VERSION% /DARCH=%ARCH% libuv.nsi'
+
+artifacts:
+ - name: Installer
+ path: 'libuv-*.exe'
+
+cache:
+ - C:\projects\libuv\build\gyp
diff --git a/deps/uv/common.gypi b/deps/uv/common.gypi
index ecf9475234f3da..392c85951e1ebd 100644
--- a/deps/uv/common.gypi
+++ b/deps/uv/common.gypi
@@ -37,9 +37,10 @@
'OTHER_CFLAGS': [ '-Wno-strict-aliasing' ],
},
'conditions': [
- ['OS != "win"', {
- 'defines': [ 'EV_VERIFY=2' ],
- }],
+ ['OS == "android"', {
+ 'cflags': [ '-fPIE' ],
+ 'ldflags': [ '-fPIE', '-pie' ]
+ }]
]
},
'Release': {
@@ -128,7 +129,7 @@
}]
]
}],
- ['OS in "freebsd linux openbsd solaris android"', {
+ ['OS in "freebsd dragonflybsd linux openbsd solaris android"', {
'cflags': [ '-Wall' ],
'cflags_cc': [ '-fno-rtti', '-fno-exceptions' ],
'target_conditions': [
diff --git a/deps/uv/configure.ac b/deps/uv/configure.ac
index fe7228e2b726c2..54704a28e927ee 100644
--- a/deps/uv/configure.ac
+++ b/deps/uv/configure.ac
@@ -13,7 +13,7 @@
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
AC_PREREQ(2.57)
-AC_INIT([libuv], [1.6.1], [https://github.com/libuv/libuv/issues])
+AC_INIT([libuv], [1.7.4], [https://github.com/libuv/libuv/issues])
AC_CONFIG_MACRO_DIR([m4])
m4_include([m4/libuv-extra-automake-flags.m4])
m4_include([m4/as_case.m4])
diff --git a/deps/uv/docs/src/check.rst b/deps/uv/docs/src/check.rst
index 8d48f222767b4c..36c93cf03d99c0 100644
--- a/deps/uv/docs/src/check.rst
+++ b/deps/uv/docs/src/check.rst
@@ -31,7 +31,7 @@ N/A
API
---
-.. c:function:: int uv_check_init(uv_loop_t*, uv_check_t* check)
+.. c:function:: int uv_check_init(uv_loop_t* loop, uv_check_t* check)
Initialize the handle.
diff --git a/deps/uv/docs/src/dll.rst b/deps/uv/docs/src/dll.rst
index 3fb11e192db411..fb13f90815996b 100644
--- a/deps/uv/docs/src/dll.rst
+++ b/deps/uv/docs/src/dll.rst
@@ -34,7 +34,7 @@ API
Close the shared library.
-.. c:function:: uv_dlsym(uv_lib_t* lib, const char* name, void** ptr)
+.. c:function:: int uv_dlsym(uv_lib_t* lib, const char* name, void** ptr)
Retrieves a data pointer from a dynamic library. It is legal for a symbol
to map to NULL. Returns 0 on success and -1 if the symbol was not found.
diff --git a/deps/uv/docs/src/errors.rst b/deps/uv/docs/src/errors.rst
index 5d59dc30f2859d..cec25f5187e1ce 100644
--- a/deps/uv/docs/src/errors.rst
+++ b/deps/uv/docs/src/errors.rst
@@ -322,8 +322,10 @@ API
.. c:function:: const char* uv_strerror(int err)
- Returns the error message for the given error code.
+ Returns the error message for the given error code. Leaks a few bytes
+ of memory when you call it with an unknown error code.
.. c:function:: const char* uv_err_name(int err)
- Returns the error name for the given error code.
+ Returns the error name for the given error code. Leaks a few bytes
+ of memory when you call it with an unknown error code.
diff --git a/deps/uv/docs/src/fs.rst b/deps/uv/docs/src/fs.rst
index c2a3fc252a1ffe..33c04406f14d9e 100644
--- a/deps/uv/docs/src/fs.rst
+++ b/deps/uv/docs/src/fs.rst
@@ -168,6 +168,11 @@ API
Equivalent to :man:`open(2)`.
+ .. note::
+ On Windows libuv uses `CreateFileW` and thus the file is always opened
+ in binary mode. Because of this the O_BINARY and O_TEXT flags are not
+ supported.
+
.. c:function:: int uv_fs_read(uv_loop_t* loop, uv_fs_t* req, uv_file file, const uv_buf_t bufs[], unsigned int nbufs, int64_t offset, uv_fs_cb cb)
Equivalent to :man:`preadv(2)`.
@@ -206,6 +211,13 @@ API
get `ent` populated with the next directory entry data. When there are no
more entries ``UV_EOF`` will be returned.
+ .. note::
+ Unlike `scandir(3)`, this function does not return the "." and ".." entries.
+
+ .. note::
+ On Linux, getting the type of an entry is only supported by some filesystems (btrfs, ext2,
+ ext3 and ext4 at the time of this writing), check the :man:`getdents(2)` man page.
+
.. c:function:: int uv_fs_stat(uv_loop_t* loop, uv_fs_t* req, const char* path, uv_fs_cb cb)
.. c:function:: int uv_fs_fstat(uv_loop_t* loop, uv_fs_t* req, uv_file file, uv_fs_cb cb)
.. c:function:: int uv_fs_lstat(uv_loop_t* loop, uv_fs_t* req, const char* path, uv_fs_cb cb)
diff --git a/deps/uv/docs/src/fs_event.rst b/deps/uv/docs/src/fs_event.rst
index 681ae52f95c7a4..c2d7f520236856 100644
--- a/deps/uv/docs/src/fs_event.rst
+++ b/deps/uv/docs/src/fs_event.rst
@@ -88,7 +88,7 @@ API
`path` for changes. `flags` can be an ORed mask of :c:type:`uv_fs_event_flags`.
.. note:: Currently the only supported flag is ``UV_FS_EVENT_RECURSIVE`` and
- only on OSX.
+ only on OSX and Windows.
.. c:function:: int uv_fs_event_stop(uv_fs_event_t* handle)
diff --git a/deps/uv/docs/src/idle.rst b/deps/uv/docs/src/idle.rst
index 81f51d2076e2ca..1f51c4a19e4a0b 100644
--- a/deps/uv/docs/src/idle.rst
+++ b/deps/uv/docs/src/idle.rst
@@ -39,7 +39,7 @@ N/A
API
---
-.. c:function:: int uv_idle_init(uv_loop_t*, uv_idle_t* idle)
+.. c:function:: int uv_idle_init(uv_loop_t* loop, uv_idle_t* idle)
Initialize the handle.
diff --git a/deps/uv/docs/src/index.rst b/deps/uv/docs/src/index.rst
index 9cdc494aecba79..fa89c4bffe580c 100644
--- a/deps/uv/docs/src/index.rst
+++ b/deps/uv/docs/src/index.rst
@@ -68,6 +68,7 @@ Documentation
design
errors
+ version
loop
handle
request
diff --git a/deps/uv/docs/src/misc.rst b/deps/uv/docs/src/misc.rst
index 9708c5dea476cf..e9ddba3db6a953 100644
--- a/deps/uv/docs/src/misc.rst
+++ b/deps/uv/docs/src/misc.rst
@@ -135,17 +135,6 @@ API
For :man:`isatty(3)` equivalent functionality use this function and test
for ``UV_TTY``.
-.. c:function:: unsigned int uv_version(void)
-
- Returns the libuv version packed into a single integer. 8 bits are used for
- each component, with the patch number stored in the 8 least significant
- bits. E.g. for libuv 1.2.3 this would return 0x010203.
-
-.. c:function:: const char* uv_version_string(void)
-
- Returns the libuv version number as a string. For non-release versions
- "-pre" is appended, so the version number could be "1.2.3-pre".
-
.. c:function:: int uv_replace_allocator(uv_malloc_func malloc_func, uv_realloc_func realloc_func, uv_calloc_func calloc_func, uv_free_func free_func)
.. versionadded:: 1.6.0
diff --git a/deps/uv/docs/src/pipe.rst b/deps/uv/docs/src/pipe.rst
index df896a0583447f..d33b0f2b977b5b 100644
--- a/deps/uv/docs/src/pipe.rst
+++ b/deps/uv/docs/src/pipe.rst
@@ -29,12 +29,12 @@ N/A
API
---
-.. c:function:: int uv_pipe_init(uv_loop_t*, uv_pipe_t* handle, int ipc)
+.. c:function:: int uv_pipe_init(uv_loop_t* loop, uv_pipe_t* handle, int ipc)
Initialize a pipe handle. The `ipc` argument is a boolean to indicate if
this pipe will be used for handle passing between processes.
-.. c:function:: int uv_pipe_open(uv_pipe_t*, uv_file file)
+.. c:function:: int uv_pipe_open(uv_pipe_t* handle, uv_file file)
Open an existing file descriptor or HANDLE as a pipe.
diff --git a/deps/uv/docs/src/request.rst b/deps/uv/docs/src/request.rst
index 2f58d46b143c6d..660b80ae9573b3 100644
--- a/deps/uv/docs/src/request.rst
+++ b/deps/uv/docs/src/request.rst
@@ -25,7 +25,7 @@ Data types
Public members
^^^^^^^^^^^^^^
-.. c:member:: void* uv_request_t.data
+.. c:member:: void* uv_req_t.data
Space for user-defined arbitrary data. libuv does not use this field.
diff --git a/deps/uv/docs/src/signal.rst b/deps/uv/docs/src/signal.rst
index 21675945fc4ba9..dc1223b90ac5e2 100644
--- a/deps/uv/docs/src/signal.rst
+++ b/deps/uv/docs/src/signal.rst
@@ -62,7 +62,7 @@ Public members
API
---
-.. c:function:: int uv_signal_init(uv_loop_t*, uv_signal_t* signal)
+.. c:function:: int uv_signal_init(uv_loop_t* loop, uv_signal_t* signal)
Initialize the handle.
diff --git a/deps/uv/docs/src/stream.rst b/deps/uv/docs/src/stream.rst
index 880f0e2ebc75d3..9f0aacd16435d0 100644
--- a/deps/uv/docs/src/stream.rst
+++ b/deps/uv/docs/src/stream.rst
@@ -32,8 +32,14 @@ Data types
Callback called when data was read on a stream.
- `nread` is > 0 if there is data available, 0 if libuv is done reading for
- now, or < 0 on error.
+ `nread` is > 0 if there is data available or < 0 on error. When we've
+ reached EOF, `nread` will be set to ``UV_EOF``. When `nread` < 0,
+ the `buf` parameter might not point to a valid buffer; in that case
+ `buf.len` and `buf.base` are both set to 0.
+
+ .. note::
+ `nread` might be 0, which does *not* indicate an error or EOF. This
+ is equivalent to ``EAGAIN`` or ``EWOULDBLOCK`` under ``read(2)``.
The callee is responsible for stopping closing the stream when an error happens
by calling :c:func:`uv_read_stop` or :c:func:`uv_close`. Trying to read
@@ -123,25 +129,19 @@ API
.. note::
`server` and `client` must be handles running on the same loop.
-.. c:function:: int uv_read_start(uv_stream_t*, uv_alloc_cb alloc_cb, uv_read_cb read_cb)
-
- Read data from an incoming stream. The callback will be made several
- times until there is no more data to read or :c:func:`uv_read_stop` is called.
- When we've reached EOF `nread` will be set to ``UV_EOF``.
+.. c:function:: int uv_read_start(uv_stream_t* stream, uv_alloc_cb alloc_cb, uv_read_cb read_cb)
- When `nread` < 0, the `buf` parameter might not point to a valid buffer;
- in that case `buf.len` and `buf.base` are both set to 0.
-
- .. note::
- `nread` might also be 0, which does *not* indicate an error or EOF, it happens when
- libuv requested a buffer through the alloc callback but then decided that it didn't
- need that buffer.
+ Read data from an incoming stream. The :c:type:`uv_read_cb` callback will
+ be made several times until there is no more data to read or
+ :c:func:`uv_read_stop` is called.
.. c:function:: int uv_read_stop(uv_stream_t*)
Stop reading data from the stream. The :c:type:`uv_read_cb` callback will
no longer be called.
+ This function is idempotent and may be safely called on a stopped stream.
+
.. c:function:: int uv_write(uv_write_t* req, uv_stream_t* handle, const uv_buf_t bufs[], unsigned int nbufs, uv_write_cb cb)
Write data to stream. Buffers are written in order. Example:
diff --git a/deps/uv/docs/src/tcp.rst b/deps/uv/docs/src/tcp.rst
index dd746fe87fba76..dd18522d91d4eb 100644
--- a/deps/uv/docs/src/tcp.rst
+++ b/deps/uv/docs/src/tcp.rst
@@ -28,9 +28,18 @@ N/A
API
---
-.. c:function:: int uv_tcp_init(uv_loop_t*, uv_tcp_t* handle)
+.. c:function:: int uv_tcp_init(uv_loop_t* loop, uv_tcp_t* handle)
- Initialize the handle.
+ Initialize the handle. No socket is created as of yet.
+
+.. c:function:: int uv_tcp_init_ex(uv_loop_t* loop, uv_tcp_t* handle, unsigned int flags)
+
+ Initialize the handle with the specified flags. At the moment the lower 8 bits
+ of the `flags` parameter are used as the socket domain. A socket will be created
+ for the given domain. If the specified domain is ``AF_UNSPEC`` no socket is created,
+ just like :c:func:`uv_tcp_init`.
+
+ .. versionadded:: 1.7.0
.. c:function:: int uv_tcp_open(uv_tcp_t* handle, uv_os_sock_t sock)
diff --git a/deps/uv/docs/src/timer.rst b/deps/uv/docs/src/timer.rst
index e558704cb202cf..31d733efc39cfd 100644
--- a/deps/uv/docs/src/timer.rst
+++ b/deps/uv/docs/src/timer.rst
@@ -54,7 +54,15 @@ API
.. c:function:: void uv_timer_set_repeat(uv_timer_t* handle, uint64_t repeat)
- Set the repeat value in milliseconds.
+ Set the repeat interval value in milliseconds. The timer will be scheduled
+ to run on the given interval, regardless of the callback execution
+ duration, and will follow normal timer semantics in the case of a
+ time-slice overrun.
+
+ For example, if a 50ms repeating timer first runs for 17ms, it will be
+ scheduled to run again 33ms later. If other tasks consume more than the
+ 33ms following the first timer callback, then the callback will run as soon
+ as possible.
.. note::
If the repeat value is set from a timer callback it does not immediately take effect.
diff --git a/deps/uv/docs/src/tty.rst b/deps/uv/docs/src/tty.rst
index 18f34ef46d97b5..655dca9ca20641 100644
--- a/deps/uv/docs/src/tty.rst
+++ b/deps/uv/docs/src/tty.rst
@@ -46,7 +46,7 @@ N/A
API
---
-.. c:function:: int uv_tty_init(uv_loop_t*, uv_tty_t*, uv_file fd, int readable)
+.. c:function:: int uv_tty_init(uv_loop_t* loop, uv_tty_t* handle, uv_file fd, int readable)
Initialize a new TTY stream with the given file descriptor. Usually the
file descriptor will be:
@@ -70,7 +70,7 @@ API
descriptor that refers to a file returns `UV_EINVAL`
on UNIX.
-.. c:function:: int uv_tty_set_mode(uv_tty_t*, uv_tty_mode_t mode)
+.. c:function:: int uv_tty_set_mode(uv_tty_t* handle, uv_tty_mode_t mode)
.. versionchanged:: 1.2.0: the mode is specified as a
:c:type:`uv_tty_mode_t` value.
@@ -86,7 +86,7 @@ API
code ``UV_EBUSY`` if you call it when execution is inside
:c:func:`uv_tty_set_mode`.
-.. c:function:: int uv_tty_get_winsize(uv_tty_t*, int* width, int* height)
+.. c:function:: int uv_tty_get_winsize(uv_tty_t* handle, int* width, int* height)
Gets the current Window size. On success it returns 0.
diff --git a/deps/uv/docs/src/udp.rst b/deps/uv/docs/src/udp.rst
index ec7ce56d38f52c..dd46603394ee7a 100644
--- a/deps/uv/docs/src/udp.rst
+++ b/deps/uv/docs/src/udp.rst
@@ -105,11 +105,20 @@ Public members
API
---
-.. c:function:: int uv_udp_init(uv_loop_t*, uv_udp_t* handle)
+.. c:function:: int uv_udp_init(uv_loop_t* loop, uv_udp_t* handle)
Initialize a new UDP handle. The actual socket is created lazily.
Returns 0 on success.
+.. c:function:: int uv_udp_init_ex(uv_loop_t* loop, uv_udp_t* handle, unsigned int flags)
+
+ Initialize the handle with the specified flags. At the moment the lower 8 bits
+ of the `flags` parameter are used as the socket domain. A socket will be created
+ for the given domain. If the specified domain is ``AF_UNSPEC`` no socket is created,
+ just like :c:func:`uv_udp_init`.
+
+ .. versionadded:: 1.7.0
+
.. c:function:: int uv_udp_open(uv_udp_t* handle, uv_os_sock_t sock)
Opens an existing file descriptor or Windows SOCKET as a UDP handle.
diff --git a/deps/uv/docs/src/version.rst b/deps/uv/docs/src/version.rst
new file mode 100644
index 00000000000000..e1715b2d3c53fa
--- /dev/null
+++ b/deps/uv/docs/src/version.rst
@@ -0,0 +1,60 @@
+
+.. _version:
+
+Version-checking macros and functions
+=====================================
+
+Starting with version 1.0.0 libuv follows the `semantic versioning`_
+scheme. This means that new APIs can be introduced throughout the lifetime of
+a major release. In this section you'll find all macros and functions that
+will allow you to write or compile code conditionally, in order to work with
+multiple libuv versions.
+
+.. _semantic versioning: http://semver.org
+
+
+Macros
+------
+
+.. c:macro:: UV_VERSION_MAJOR
+
+ libuv version's major number.
+
+.. c:macro:: UV_VERSION_MINOR
+
+ libuv version's minor number.
+
+.. c:macro:: UV_VERSION_PATCH
+
+ libuv version's patch number.
+
+.. c:macro:: UV_VERSION_IS_RELEASE
+
+ Set to 1 to indicate a release version of libuv, 0 for a development
+ snapshot.
+
+.. c:macro:: UV_VERSION_SUFFIX
+
+ libuv version suffix. Certain development releases such as Release Candidates
+ might have a suffix such as "rc".
+
+.. c:macro:: UV_VERSION_HEX
+
+ Returns the libuv version packed into a single integer. 8 bits are used for
+ each component, with the patch number stored in the 8 least significant
+ bits. E.g. for libuv 1.2.3 this would be 0x010203.
+
+ .. versionadded:: 1.7.0
+
+
+Functions
+---------
+
+.. c:function:: unsigned int uv_version(void)
+
+ Returns :c:macro:`UV_VERSION_HEX`.
+
+.. c:function:: const char* uv_version_string(void)
+
+ Returns the libuv version number as a string. For non-release versions the
+ version suffix is included.
diff --git a/deps/uv/include/uv-version.h b/deps/uv/include/uv-version.h
index 3372212c8c7cee..f4d91e83bde3c9 100644
--- a/deps/uv/include/uv-version.h
+++ b/deps/uv/include/uv-version.h
@@ -31,9 +31,13 @@
*/
#define UV_VERSION_MAJOR 1
-#define UV_VERSION_MINOR 6
-#define UV_VERSION_PATCH 1
+#define UV_VERSION_MINOR 7
+#define UV_VERSION_PATCH 4
#define UV_VERSION_IS_RELEASE 1
#define UV_VERSION_SUFFIX ""
+#define UV_VERSION_HEX ((UV_VERSION_MAJOR << 16) | \
+ (UV_VERSION_MINOR << 8) | \
+ (UV_VERSION_PATCH))
+
#endif /* UV_VERSION_H */
diff --git a/deps/uv/include/uv-win.h b/deps/uv/include/uv-win.h
index fd844202b99a1a..a0b1ef028d97c6 100644
--- a/deps/uv/include/uv-win.h
+++ b/deps/uv/include/uv-win.h
@@ -250,8 +250,16 @@ typedef union {
/* windows.h. */
SRWLOCK srwlock_;
struct {
- uv_mutex_t read_mutex_;
- uv_mutex_t write_mutex_;
+ union {
+ CRITICAL_SECTION cs;
+ /* TODO: remove me in v2.x. */
+ uv_mutex_t unused;
+ } read_lock_;
+ union {
+ HANDLE sem;
+ /* TODO: remove me in v2.x. */
+ uv_mutex_t unused;
+ } write_lock_;
unsigned int num_readers_;
} fallback_;
} uv_rwlock_t;
diff --git a/deps/uv/include/uv.h b/deps/uv/include/uv.h
index 564af5fad600c6..f96026b603d34e 100644
--- a/deps/uv/include/uv.h
+++ b/deps/uv/include/uv.h
@@ -406,7 +406,10 @@ struct uv_shutdown_s {
/* private */ \
uv_close_cb close_cb; \
void* handle_queue[2]; \
- void* reserved[4]; \
+ union { \
+ int fd; \
+ void* reserved[4]; \
+ } u; \
UV_HANDLE_PRIVATE_FIELDS \
/* The abstract base class of all handles. */
@@ -504,6 +507,7 @@ struct uv_tcp_s {
};
UV_EXTERN int uv_tcp_init(uv_loop_t*, uv_tcp_t* handle);
+UV_EXTERN int uv_tcp_init_ex(uv_loop_t*, uv_tcp_t* handle, unsigned int flags);
UV_EXTERN int uv_tcp_open(uv_tcp_t* handle, uv_os_sock_t sock);
UV_EXTERN int uv_tcp_nodelay(uv_tcp_t* handle, int enable);
UV_EXTERN int uv_tcp_keepalive(uv_tcp_t* handle,
@@ -594,6 +598,7 @@ struct uv_udp_send_s {
};
UV_EXTERN int uv_udp_init(uv_loop_t*, uv_udp_t* handle);
+UV_EXTERN int uv_udp_init_ex(uv_loop_t*, uv_udp_t* handle, unsigned int flags);
UV_EXTERN int uv_udp_open(uv_udp_t* handle, uv_os_sock_t sock);
UV_EXTERN int uv_udp_bind(uv_udp_t* handle,
const struct sockaddr* addr,
diff --git a/deps/uv/libuv.nsi b/deps/uv/libuv.nsi
new file mode 100644
index 00000000000000..159756e196ce47
--- /dev/null
+++ b/deps/uv/libuv.nsi
@@ -0,0 +1,86 @@
+; NSIS installer script for libuv
+
+!include "MUI2.nsh"
+
+Name "libuv"
+OutFile "libuv-${ARCH}-${VERSION}.exe"
+
+!include "x64.nsh"
+# Default install location, for 32-bit files
+InstallDir "$PROGRAMFILES\libuv"
+
+# Override install and registry locations if this is a 64-bit install.
+function .onInit
+ ${If} ${ARCH} == "x64"
+ SetRegView 64
+ StrCpy $INSTDIR "$PROGRAMFILES64\libuv"
+ ${EndIf}
+functionEnd
+
+;--------------------------------
+; Installer pages
+!insertmacro MUI_PAGE_WELCOME
+!insertmacro MUI_PAGE_DIRECTORY
+!insertmacro MUI_PAGE_INSTFILES
+!insertmacro MUI_PAGE_FINISH
+
+
+;--------------------------------
+; Uninstaller pages
+!insertmacro MUI_UNPAGE_WELCOME
+!insertmacro MUI_UNPAGE_CONFIRM
+!insertmacro MUI_UNPAGE_INSTFILES
+!insertmacro MUI_UNPAGE_FINISH
+
+;--------------------------------
+; Languages
+!insertmacro MUI_LANGUAGE "English"
+
+;--------------------------------
+; Installer sections
+
+Section "Files" SecInstall
+ SectionIn RO
+ SetOutPath "$INSTDIR"
+ File "Release\*.dll"
+ File "Release\*.lib"
+ File "LICENSE"
+ File "README.md"
+
+ SetOutPath "$INSTDIR\include"
+ File "include\uv.h"
+ File "include\uv-errno.h"
+ File "include\uv-threadpool.h"
+ File "include\uv-version.h"
+ File "include\uv-win.h"
+ File "include\tree.h"
+
+ WriteUninstaller "$INSTDIR\Uninstall.exe"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\libuv-${ARCH}-${VERSION}" "DisplayName" "libuv-${ARCH}-${VERSION}"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\libuv-${ARCH}-${VERSION}" "UninstallString" "$\"$INSTDIR\Uninstall.exe$\""
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\libuv-${ARCH}-${VERSION}" "QuietUninstallString" "$\"$INSTDIR\Uninstall.exe$\" /S"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\libuv-${ARCH}-${VERSION}" "HelpLink" "http://libuv.org/"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\libuv-${ARCH}-${VERSION}" "URLInfoAbout" "http://libuv.org/"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\libuv-${ARCH}-${VERSION}" "DisplayVersion" "${VERSION}"
+ WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\libuv-${ARCH}-${VERSION}" "NoModify" "1"
+ WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\libuv-${ARCH}-${VERSION}" "NoRepair" "1"
+SectionEnd
+
+Section "Uninstall"
+ Delete "$INSTDIR\libuv.dll"
+ Delete "$INSTDIR\libuv.lib"
+ Delete "$INSTDIR\LICENSE"
+ Delete "$INSTDIR\README.md"
+
+ Delete "$INSTDIR\include\uv.h"
+ Delete "$INSTDIR\include\uv-errno.h"
+ Delete "$INSTDIR\include\uv-threadpool.h"
+ Delete "$INSTDIR\include\uv-version.h"
+ Delete "$INSTDIR\include\uv-win.h"
+ Delete "$INSTDIR\include\tree.h"
+
+ Delete "$INSTDIR\Uninstall.exe"
+ RMDir "$INSTDIR"
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\libuv-${ARCH}-${VERSION}"
+SectionEnd
+
diff --git a/deps/uv/src/queue.h b/deps/uv/src/queue.h
index fe02b454ead24f..60c80000385be5 100644
--- a/deps/uv/src/queue.h
+++ b/deps/uv/src/queue.h
@@ -16,6 +16,8 @@
#ifndef QUEUE_H_
#define QUEUE_H_
+#include
+
typedef void *QUEUE[2];
/* Private macros. */
@@ -26,7 +28,7 @@ typedef void *QUEUE[2];
/* Public macros. */
#define QUEUE_DATA(ptr, type, field) \
- ((type *) ((char *) (ptr) - ((char *) &((type *) 0)->field)))
+ ((type *) ((char *) (ptr) - offsetof(type, field)))
#define QUEUE_FOREACH(q, h) \
for ((q) = QUEUE_NEXT(h); (q) != (h); (q) = QUEUE_NEXT(q))
diff --git a/deps/uv/src/threadpool.c b/deps/uv/src/threadpool.c
index debaf5ca965847..15d719944f1d0c 100644
--- a/deps/uv/src/threadpool.c
+++ b/deps/uv/src/threadpool.c
@@ -44,6 +44,7 @@ static void uv__req_init(uv_loop_t* loop,
static uv_once_t once = UV_ONCE_INIT;
static uv_cond_t cond;
static uv_mutex_t mutex;
+static unsigned int idle_threads;
static unsigned int nthreads;
static uv_thread_t* threads;
static uv_thread_t default_threads[4];
@@ -69,8 +70,11 @@ static void worker(void* arg) {
for (;;) {
uv_mutex_lock(&mutex);
- while (QUEUE_EMPTY(&wq))
+ while (QUEUE_EMPTY(&wq)) {
+ idle_threads += 1;
uv_cond_wait(&cond, &mutex);
+ idle_threads -= 1;
+ }
q = QUEUE_HEAD(&wq);
@@ -103,7 +107,8 @@ static void worker(void* arg) {
static void post(QUEUE* q) {
uv_mutex_lock(&mutex);
QUEUE_INSERT_TAIL(&wq, q);
- uv_cond_signal(&cond);
+ if (idle_threads > 0)
+ uv_cond_signal(&cond);
uv_mutex_unlock(&mutex);
}
diff --git a/deps/uv/src/unix/aix.c b/deps/uv/src/unix/aix.c
index a2b0744a04729d..c90b7e5cb9ba0c 100644
--- a/deps/uv/src/unix/aix.c
+++ b/deps/uv/src/unix/aix.c
@@ -43,6 +43,7 @@
#include
#include
+#include
#include
#include
@@ -288,182 +289,80 @@ uint64_t uv__hrtime(uv_clocktype_t type) {
* and use it in conjunction with PATH environment variable to craft one.
*/
int uv_exepath(char* buffer, size_t* size) {
- ssize_t res;
- char cwd[PATH_MAX], cwdl[PATH_MAX];
- char symlink[PATH_MAX], temp_buffer[PATH_MAX];
- char pp[64];
- struct psinfo ps;
- int fd;
- char **argv;
+ int res;
+ char args[PATH_MAX];
+ char abspath[PATH_MAX];
+ size_t abspath_size;
+ struct procsinfo pi;
if (buffer == NULL || size == NULL || *size == 0)
return -EINVAL;
- snprintf(pp, sizeof(pp), "/proc/%lu/psinfo", (unsigned long) getpid());
-
- fd = open(pp, O_RDONLY);
- if (fd < 0)
- return fd;
-
- res = read(fd, &ps, sizeof(ps));
- uv__close(fd);
- if (res < 0)
- return res;
-
- if (ps.pr_argv == 0)
- return -EINVAL;
-
- argv = (char **) *((char ***) (intptr_t) ps.pr_argv);
-
- if ((argv == NULL) || (argv[0] == NULL))
+ pi.pi_pid = getpid();
+ res = getargs(&pi, sizeof(pi), args, sizeof(args));
+ if (res < 0)
return -EINVAL;
/*
- * Three possibilities for argv[0]:
+ * Possibilities for args:
* i) an absolute path such as: /home/user/myprojects/nodejs/node
- * ii) a relative path such as: ./node or ./myprojects/nodejs/node
+ * ii) a relative path such as: ./node or ../myprojects/nodejs/node
* iii) a bare filename such as "node", after exporting PATH variable
* to its location.
*/
- /* case #1, absolute path. */
- if (argv[0][0] == '/') {
- snprintf(symlink, PATH_MAX-1, "%s", argv[0]);
-
- /* This could or could not be a symlink. */
- res = readlink(symlink, temp_buffer, PATH_MAX-1);
-
- /* if readlink fails, it is a normal file just copy symlink to the
- * output buffer.
- */
- if (res < 0) {
- assert(*size > strlen(symlink));
- strcpy(buffer, symlink);
-
- /* If it is a link, the resolved filename is again a relative path,
- * make it absolute.
- */
- } else {
- assert(*size > (strlen(symlink) + 1 + strlen(temp_buffer)));
- snprintf(buffer, *size-1, "%s/%s", dirname(symlink), temp_buffer);
- }
- *size = strlen(buffer);
- return 0;
-
- /* case #2, relative path with usage of '.' */
- } else if (argv[0][0] == '.') {
- char *relative = strchr(argv[0], '/');
- if (relative == NULL)
- return -EINVAL;
-
- /* Get the current working directory to resolve the relative path. */
- snprintf(cwd, PATH_MAX-1, "/proc/%lu/cwd", (unsigned long) getpid());
-
- /* This is always a symlink, resolve it. */
- res = readlink(cwd, cwdl, sizeof(cwdl) - 1);
- if (res < 0)
+ /* Case i) and ii) absolute or relative paths */
+ if (strchr(args, '/') != NULL) {
+ if (realpath(args, abspath) != abspath)
return -errno;
- snprintf(symlink, PATH_MAX-1, "%s%s", cwdl, relative + 1);
-
- res = readlink(symlink, temp_buffer, PATH_MAX-1);
- if (res < 0) {
- assert(*size > strlen(symlink));
- strcpy(buffer, symlink);
- } else {
- assert(*size > (strlen(symlink) + 1 + strlen(temp_buffer)));
- snprintf(buffer, *size-1, "%s/%s", dirname(symlink), temp_buffer);
- }
- *size = strlen(buffer);
- return 0;
-
- /* case #3, relative path without usage of '.', such as invocations in Node test suite. */
- } else if (strchr(argv[0], '/') != NULL) {
- /* Get the current working directory to resolve the relative path. */
- snprintf(cwd, PATH_MAX-1, "/proc/%lu/cwd", (unsigned long) getpid());
+ abspath_size = strlen(abspath);
- /* This is always a symlink, resolve it. */
- res = readlink(cwd, cwdl, sizeof(cwdl) - 1);
- if (res < 0)
- return -errno;
+ *size -= 1;
+ if (*size > abspath_size)
+ *size = abspath_size;
- snprintf(symlink, PATH_MAX-1, "%s%s", cwdl, argv[0]);
+ memcpy(buffer, abspath, *size);
+ buffer[*size] = '\0';
- res = readlink(symlink, temp_buffer, PATH_MAX-1);
- if (res < 0) {
- assert(*size > strlen(symlink));
- strcpy(buffer, symlink);
- } else {
- assert(*size > (strlen(symlink) + 1 + strlen(temp_buffer)));
- snprintf(buffer, *size-1, "%s/%s", dirname(symlink), temp_buffer);
- }
- *size = strlen(buffer);
return 0;
- /* Usage of absolute filename with location exported in PATH */
} else {
- char clonedpath[8192]; /* assume 8k buffer will fit PATH */
+ /* Case iii). Search PATH environment variable */
+ char trypath[PATH_MAX];
+ char *clonedpath = NULL;
char *token = NULL;
- struct stat statstruct;
-
- /* Get the paths. */
char *path = getenv("PATH");
- if(sizeof(clonedpath) <= strlen(path))
+
+ if (path == NULL)
return -EINVAL;
- /* Get a local copy. */
- strcpy(clonedpath, path);
+ clonedpath = uv__strdup(path);
+ if (clonedpath == NULL)
+ return -ENOMEM;
- /* Tokenize. */
token = strtok(clonedpath, ":");
+ while (token != NULL) {
+ snprintf(trypath, sizeof(trypath) - 1, "%s/%s", token, args);
+ if (realpath(trypath, abspath) == abspath) {
+ /* Check the match is executable */
+ if (access(abspath, X_OK) == 0) {
+ abspath_size = strlen(abspath);
- /* Get current working directory. (may be required in the loop). */
- snprintf(cwd, PATH_MAX-1, "/proc/%lu/cwd", (unsigned long) getpid());
- res = readlink(cwd, cwdl, sizeof(cwdl) - 1);
- if (res < 0)
- return -errno;
- /* Run through the tokens, append our executable file name with each,
- * and see which one succeeds. Exit on first match. */
- while(token != NULL) {
- if (token[0] == '.') {
- /* Path contains a token relative to current directory. */
- char *relative = strchr(token, '/');
- if (relative != NULL)
- /* A path which is not current directory. */
- snprintf(symlink, PATH_MAX-1, "%s%s/%s", cwdl, relative+1, ps.pr_fname);
- else
- snprintf(symlink, PATH_MAX-1, "%s%s", cwdl, ps.pr_fname);
- if (stat(symlink, &statstruct) != -1) {
- /* File exists. Resolve if it is a link. */
- res = readlink(symlink, temp_buffer, PATH_MAX-1);
- if (res < 0) {
- assert(*size > strlen(symlink));
- strcpy(buffer, symlink);
- } else {
- assert(*size > (strlen(symlink) + 1 + strlen(temp_buffer)));
- snprintf(buffer, *size-1, "%s/%s", dirname(symlink), temp_buffer);
- }
- *size = strlen(buffer);
- return 0;
- }
+ *size -= 1;
+ if (*size > abspath_size)
+ *size = abspath_size;
- /* Absolute path names. */
- } else {
- snprintf(symlink, PATH_MAX-1, "%s/%s", token, ps.pr_fname);
- if (stat(symlink, &statstruct) != -1) {
- res = readlink(symlink, temp_buffer, PATH_MAX-1);
- if (res < 0) {
- assert(*size > strlen(symlink));
- strcpy(buffer, symlink);
- } else {
- assert(*size > (strlen(symlink) + 1 + strlen(temp_buffer)));
- snprintf(buffer, *size-1, "%s/%s", dirname(symlink), temp_buffer);
- }
- *size = strlen(buffer);
+ memcpy(buffer, abspath, *size);
+ buffer[*size] = '\0';
+
+ uv__free(clonedpath);
return 0;
}
}
token = strtok(NULL, ":");
}
+ uv__free(clonedpath);
+
/* Out of tokens (path entries), and no match found */
return -EINVAL;
}
diff --git a/deps/uv/src/unix/core.c b/deps/uv/src/unix/core.c
index 826b4113b2a1f4..e149357e076eb2 100644
--- a/deps/uv/src/unix/core.c
+++ b/deps/uv/src/unix/core.c
@@ -35,7 +35,7 @@
#include
#include
#include
-#include /* INT_MAX, PATH_MAX */
+#include /* INT_MAX, PATH_MAX, IOV_MAX */
#include /* writev */
#include /* getrusage */
#include
@@ -55,13 +55,13 @@
# include
#endif
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) || defined(__DragonFly__)
# include
# include
# include
# include
# define UV__O_CLOEXEC O_CLOEXEC
-# if __FreeBSD__ >= 10
+# if defined(__FreeBSD__) && __FreeBSD__ >= 10
# define uv__accept4 accept4
# define UV__SOCK_NONBLOCK SOCK_NONBLOCK
# define UV__SOCK_CLOEXEC SOCK_CLOEXEC
@@ -199,6 +199,19 @@ void uv__make_close_pending(uv_handle_t* handle) {
handle->loop->closing_handles = handle;
}
+int uv__getiovmax(void) {
+#if defined(IOV_MAX)
+ return IOV_MAX;
+#elif defined(_SC_IOV_MAX)
+ static int iovmax = -1;
+ if (iovmax == -1)
+ iovmax = sysconf(_SC_IOV_MAX);
+ return iovmax;
+#else
+ return 1024;
+#endif
+}
+
static void uv__finish_close(uv_handle_t* handle) {
/* Note: while the handle is in the UV_CLOSING state now, it's still possible
@@ -477,7 +490,7 @@ int uv__close(int fd) {
#if defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__) || \
- defined(_AIX)
+ defined(_AIX) || defined(__DragonFly__)
int uv__nonblock(int fd, int set) {
int r;
@@ -506,7 +519,8 @@ int uv__cloexec(int fd, int set) {
return 0;
}
-#else /* !(defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__)) */
+#else /* !(defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__) || \
+ defined(_AIX) || defined(__DragonFly__)) */
int uv__nonblock(int fd, int set) {
int flags;
@@ -569,7 +583,8 @@ int uv__cloexec(int fd, int set) {
return 0;
}
-#endif /* defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__) */
+#endif /* defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__) || \
+ defined(_AIX) || defined(__DragonFly__) */
/* This function is not execve-safe, there is a race window
@@ -907,7 +922,8 @@ int uv__open_cloexec(const char* path, int flags) {
int err;
int fd;
-#if defined(__linux__) || (defined(__FreeBSD__) && __FreeBSD__ >= 9)
+#if defined(__linux__) || (defined(__FreeBSD__) && __FreeBSD__ >= 9) || \
+ defined(__DragonFly__)
static int no_cloexec;
if (!no_cloexec) {
diff --git a/deps/uv/src/unix/freebsd.c b/deps/uv/src/unix/freebsd.c
index 44976f7fe2a3a4..c69608b139973b 100644
--- a/deps/uv/src/unix/freebsd.c
+++ b/deps/uv/src/unix/freebsd.c
@@ -74,6 +74,30 @@ uint64_t uv__hrtime(uv_clocktype_t type) {
}
+#ifdef __DragonFly__
+int uv_exepath(char* buffer, size_t* size) {
+ char abspath[PATH_MAX * 2 + 1];
+ ssize_t abspath_size;
+
+ if (buffer == NULL || size == NULL || *size == 0)
+ return -EINVAL;
+
+ abspath_size = readlink("/proc/curproc/file", abspath, sizeof(abspath));
+ if (abspath_size < 0)
+ return -errno;
+
+ assert(abspath_size > 0);
+ *size -= 1;
+
+ if (*size > abspath_size)
+ *size = abspath_size;
+
+ memcpy(buffer, abspath, *size);
+ buffer[*size] = '\0';
+
+ return 0;
+}
+#else
int uv_exepath(char* buffer, size_t* size) {
char abspath[PATH_MAX * 2 + 1];
int mib[4];
@@ -82,19 +106,12 @@ int uv_exepath(char* buffer, size_t* size) {
if (buffer == NULL || size == NULL || *size == 0)
return -EINVAL;
-#ifdef __DragonFly__
- mib[0] = CTL_KERN;
- mib[1] = KERN_PROC;
- mib[2] = KERN_PROC_ARGS;
- mib[3] = getpid();
-#else
mib[0] = CTL_KERN;
mib[1] = KERN_PROC;
mib[2] = KERN_PROC_PATHNAME;
mib[3] = -1;
-#endif
- abspath_size = sizeof abspath;;
+ abspath_size = sizeof abspath;
if (sysctl(mib, 4, abspath, &abspath_size, NULL, 0))
return -errno;
@@ -110,7 +127,7 @@ int uv_exepath(char* buffer, size_t* size) {
return 0;
}
-
+#endif
uint64_t uv_get_free_memory(void) {
int freecount;
@@ -223,17 +240,13 @@ int uv_resident_set_memory(size_t* rss) {
int uv_uptime(double* uptime) {
- time_t now;
- struct timeval info;
- size_t size = sizeof(info);
- static int which[] = {CTL_KERN, KERN_BOOTTIME};
-
- if (sysctl(which, 2, &info, &size, NULL, 0))
+ int r;
+ struct timespec sp;
+ r = clock_gettime(CLOCK_MONOTONIC, &sp);
+ if (r)
return -errno;
- now = time(NULL);
-
- *uptime = (double)(now - info.tv_sec);
+ *uptime = sp.tv_sec;
return 0;
}
diff --git a/deps/uv/src/unix/fs.c b/deps/uv/src/unix/fs.c
index 9dab202dd76f8e..d739c282585f71 100644
--- a/deps/uv/src/unix/fs.c
+++ b/deps/uv/src/unix/fs.c
@@ -58,52 +58,63 @@
# include
#endif
-#define INIT(type) \
+#define INIT(subtype) \
do { \
- uv__req_init((loop), (req), UV_FS); \
- (req)->fs_type = UV_FS_ ## type; \
- (req)->result = 0; \
- (req)->ptr = NULL; \
- (req)->loop = loop; \
- (req)->path = NULL; \
- (req)->new_path = NULL; \
- (req)->cb = (cb); \
+ req->type = UV_FS; \
+ if (cb != NULL) \
+ uv__req_init(loop, req, UV_FS); \
+ req->fs_type = UV_FS_ ## subtype; \
+ req->result = 0; \
+ req->ptr = NULL; \
+ req->loop = loop; \
+ req->path = NULL; \
+ req->new_path = NULL; \
+ req->cb = cb; \
} \
while (0)
#define PATH \
do { \
- (req)->path = uv__strdup(path); \
- if ((req)->path == NULL) \
- return -ENOMEM; \
+ assert(path != NULL); \
+ if (cb == NULL) { \
+ req->path = path; \
+ } else { \
+ req->path = uv__strdup(path); \
+ if (req->path == NULL) \
+ return -ENOMEM; \
+ } \
} \
while (0)
#define PATH2 \
do { \
- size_t path_len; \
- size_t new_path_len; \
- path_len = strlen((path)) + 1; \
- new_path_len = strlen((new_path)) + 1; \
- (req)->path = uv__malloc(path_len + new_path_len); \
- if ((req)->path == NULL) \
- return -ENOMEM; \
- (req)->new_path = (req)->path + path_len; \
- memcpy((void*) (req)->path, (path), path_len); \
- memcpy((void*) (req)->new_path, (new_path), new_path_len); \
+ if (cb == NULL) { \
+ req->path = path; \
+ req->new_path = new_path; \
+ } else { \
+ size_t path_len; \
+ size_t new_path_len; \
+ path_len = strlen(path) + 1; \
+ new_path_len = strlen(new_path) + 1; \
+ req->path = uv__malloc(path_len + new_path_len); \
+ if (req->path == NULL) \
+ return -ENOMEM; \
+ req->new_path = req->path + path_len; \
+ memcpy((void*) req->path, path, path_len); \
+ memcpy((void*) req->new_path, new_path, new_path_len); \
+ } \
} \
while (0)
#define POST \
do { \
- if ((cb) != NULL) { \
- uv__work_submit((loop), &(req)->work_req, uv__fs_work, uv__fs_done); \
+ if (cb != NULL) { \
+ uv__work_submit(loop, &req->work_req, uv__fs_work, uv__fs_done); \
return 0; \
} \
else { \
- uv__fs_work(&(req)->work_req); \
- uv__fs_done(&(req)->work_req, 0); \
- return (req)->result; \
+ uv__fs_work(&req->work_req); \
+ return req->result; \
} \
} \
while (0)
@@ -309,8 +320,6 @@ static ssize_t uv__fs_read(uv_fs_t* req) {
}
done:
- if (req->bufs != req->bufsml)
- uv__free(req->bufs);
return result;
}
@@ -545,7 +554,7 @@ static ssize_t uv__fs_sendfile(uv_fs_t* req) {
return -1;
}
-#elif defined(__FreeBSD__) || defined(__APPLE__)
+#elif defined(__FreeBSD__) || defined(__APPLE__) || defined(__DragonFly__)
{
off_t len;
ssize_t r;
@@ -555,7 +564,7 @@ static ssize_t uv__fs_sendfile(uv_fs_t* req) {
* number of bytes have been sent, we don't consider it an error.
*/
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__DragonFly__)
len = 0;
r = sendfile(in_fd, out_fd, req->off, req->bufsml[0].len, NULL, &len, 0);
#else
@@ -565,7 +574,14 @@ static ssize_t uv__fs_sendfile(uv_fs_t* req) {
r = sendfile(in_fd, out_fd, req->off, &len, NULL, 0);
#endif
- if (r != -1 || len != 0) {
+ /*
+ * The man page for sendfile(2) on DragonFly states that `len` contains
+ * a meaningful value ONLY in case of EAGAIN and EINTR.
+ * Nothing is said about it's value in case of other errors, so better
+ * not depend on the potential wrong assumption that is was not modified
+ * by the syscall.
+ */
+ if (r == 0 || ((errno == EAGAIN || errno == EINTR) && len != 0)) {
req->off += len;
return (ssize_t) len;
}
@@ -670,9 +686,6 @@ static ssize_t uv__fs_write(uv_fs_t* req) {
pthread_mutex_unlock(&lock);
#endif
- if (req->bufs != req->bufsml)
- uv__free(req->bufs);
-
return r;
}
@@ -777,6 +790,47 @@ static int uv__fs_fstat(int fd, uv_stat_t *buf) {
}
+typedef ssize_t (*uv__fs_buf_iter_processor)(uv_fs_t* req);
+static ssize_t uv__fs_buf_iter(uv_fs_t* req, uv__fs_buf_iter_processor process) {
+ unsigned int iovmax;
+ unsigned int nbufs;
+ uv_buf_t* bufs;
+ ssize_t total;
+ ssize_t result;
+
+ iovmax = uv__getiovmax();
+ nbufs = req->nbufs;
+ bufs = req->bufs;
+ total = 0;
+
+ while (nbufs > 0) {
+ req->nbufs = nbufs;
+ if (req->nbufs > iovmax)
+ req->nbufs = iovmax;
+
+ result = process(req);
+ if (result <= 0) {
+ if (total == 0)
+ total = result;
+ break;
+ }
+
+ if (req->off >= 0)
+ req->off += result;
+
+ req->bufs += req->nbufs;
+ nbufs -= req->nbufs;
+ total += result;
+ }
+
+ if (bufs != req->bufsml)
+ uv__free(bufs);
+ req->bufs = NULL;
+
+ return total;
+}
+
+
static void uv__fs_work(struct uv__work* w) {
int retry_on_eintr;
uv_fs_t* req;
@@ -810,7 +864,7 @@ static void uv__fs_work(struct uv__work* w) {
X(MKDIR, mkdir(req->path, req->mode));
X(MKDTEMP, uv__fs_mkdtemp(req));
X(OPEN, uv__fs_open(req));
- X(READ, uv__fs_read(req));
+ X(READ, uv__fs_buf_iter(req, uv__fs_read));
X(SCANDIR, uv__fs_scandir(req));
X(READLINK, uv__fs_readlink(req));
X(RENAME, rename(req->path, req->new_path));
@@ -820,7 +874,7 @@ static void uv__fs_work(struct uv__work* w) {
X(SYMLINK, symlink(req->path, req->new_path));
X(UNLINK, unlink(req->path));
X(UTIME, uv__fs_utime(req));
- X(WRITE, uv__fs_write(req));
+ X(WRITE, uv__fs_buf_iter(req, uv__fs_write));
default: abort();
}
#undef X
@@ -850,8 +904,7 @@ static void uv__fs_done(struct uv__work* w, int status) {
req->result = -ECANCELED;
}
- if (req->cb != NULL)
- req->cb(req);
+ req->cb(req);
}
@@ -1035,6 +1088,9 @@ int uv_fs_read(uv_loop_t* loop, uv_fs_t* req,
unsigned int nbufs,
int64_t off,
uv_fs_cb cb) {
+ if (bufs == NULL || nbufs == 0)
+ return -EINVAL;
+
INIT(READ);
req->file = file;
@@ -1157,6 +1213,9 @@ int uv_fs_write(uv_loop_t* loop,
unsigned int nbufs,
int64_t off,
uv_fs_cb cb) {
+ if (bufs == NULL || nbufs == 0)
+ return -EINVAL;
+
INIT(WRITE);
req->file = file;
@@ -1176,7 +1235,14 @@ int uv_fs_write(uv_loop_t* loop,
void uv_fs_req_cleanup(uv_fs_t* req) {
- uv__free((void*)req->path);
+ /* Only necessary for asychronous requests, i.e., requests with a callback.
+ * Synchronous ones don't copy their arguments and have req->path and
+ * req->new_path pointing to user-owned memory. UV_FS_MKDTEMP is the
+ * exception to the rule, it always allocates memory.
+ */
+ if (req->path != NULL && (req->cb != NULL || req->fs_type == UV_FS_MKDTEMP))
+ uv__free((void*) req->path); /* Memory is shared with req->new_path. */
+
req->path = NULL;
req->new_path = NULL;
diff --git a/deps/uv/src/unix/internal.h b/deps/uv/src/unix/internal.h
index c31e54992d3e4f..741fa57d69cad3 100644
--- a/deps/uv/src/unix/internal.h
+++ b/deps/uv/src/unix/internal.h
@@ -172,6 +172,7 @@ int uv__socket(int domain, int type, int protocol);
int uv__dup(int fd);
ssize_t uv__recvmsg(int fd, struct msghdr *msg, int flags);
void uv__make_close_pending(uv_handle_t* handle);
+int uv__getiovmax(void);
void uv__io_init(uv__io_t* w, uv__io_cb cb, int fd);
void uv__io_start(uv_loop_t* loop, uv__io_t* w, unsigned int events);
diff --git a/deps/uv/src/unix/kqueue.c b/deps/uv/src/unix/kqueue.c
index 424236a6ef5937..495f20d285fa30 100644
--- a/deps/uv/src/unix/kqueue.c
+++ b/deps/uv/src/unix/kqueue.c
@@ -379,6 +379,10 @@ int uv_fs_event_start(uv_fs_event_t* handle,
if (!(statbuf.st_mode & S_IFDIR))
goto fallback;
+ /* The fallback fd is no longer needed */
+ uv__close(fd);
+ handle->event_watcher.fd = -1;
+
return uv__fsevents_init(handle);
fallback:
@@ -406,8 +410,12 @@ int uv_fs_event_stop(uv_fs_event_t* handle) {
uv__free(handle->path);
handle->path = NULL;
- uv__close(handle->event_watcher.fd);
- handle->event_watcher.fd = -1;
+ if (handle->event_watcher.fd != -1) {
+ /* When FSEvents is used, we don't use the event_watcher's fd under certain
+ * confitions. (see uv_fs_event_start) */
+ uv__close(handle->event_watcher.fd);
+ handle->event_watcher.fd = -1;
+ }
return 0;
}
diff --git a/deps/uv/src/unix/loop.c b/deps/uv/src/unix/loop.c
index aa9146bf9aa9df..92e96f09ed0100 100644
--- a/deps/uv/src/unix/loop.c
+++ b/deps/uv/src/unix/loop.c
@@ -63,24 +63,44 @@ int uv_loop_init(uv_loop_t* loop) {
if (err)
return err;
- uv_signal_init(loop, &loop->child_watcher);
+ err = uv_signal_init(loop, &loop->child_watcher);
+ if (err)
+ goto fail_signal_init;
+
uv__handle_unref(&loop->child_watcher);
loop->child_watcher.flags |= UV__HANDLE_INTERNAL;
QUEUE_INIT(&loop->process_handles);
- if (uv_rwlock_init(&loop->cloexec_lock))
- abort();
+ err = uv_rwlock_init(&loop->cloexec_lock);
+ if (err)
+ goto fail_rwlock_init;
- if (uv_mutex_init(&loop->wq_mutex))
- abort();
+ err = uv_mutex_init(&loop->wq_mutex);
+ if (err)
+ goto fail_mutex_init;
- if (uv_async_init(loop, &loop->wq_async, uv__work_done))
- abort();
+ err = uv_async_init(loop, &loop->wq_async, uv__work_done);
+ if (err)
+ goto fail_async_init;
uv__handle_unref(&loop->wq_async);
loop->wq_async.flags |= UV__HANDLE_INTERNAL;
return 0;
+
+fail_async_init:
+ uv_mutex_destroy(&loop->wq_mutex);
+
+fail_mutex_init:
+ uv_rwlock_destroy(&loop->cloexec_lock);
+
+fail_rwlock_init:
+ uv__signal_loop_cleanup(loop);
+
+fail_signal_init:
+ uv__platform_loop_delete(loop);
+
+ return err;
}
diff --git a/deps/uv/src/unix/process.c b/deps/uv/src/unix/process.c
index f2a83753ee3a88..9fa061e6bc99b6 100644
--- a/deps/uv/src/unix/process.c
+++ b/deps/uv/src/unix/process.c
@@ -226,13 +226,14 @@ static int uv__process_open_stream(uv_stdio_container_t* container,
int pipefds[2],
int writable) {
int flags;
+ int err;
if (!(container->flags & UV_CREATE_PIPE) || pipefds[0] < 0)
return 0;
- if (uv__close(pipefds[1]))
- if (errno != EINTR && errno != EINPROGRESS)
- abort();
+ err = uv__close(pipefds[1]);
+ if (err != 0 && err != -EINPROGRESS)
+ abort();
pipefds[1] = -1;
uv__nonblock(pipefds[0], 1);
diff --git a/deps/uv/src/unix/pthread-fixes.c b/deps/uv/src/unix/pthread-fixes.c
index dc54f35d60af18..3a71eb5aae743f 100644
--- a/deps/uv/src/unix/pthread-fixes.c
+++ b/deps/uv/src/unix/pthread-fixes.c
@@ -35,6 +35,7 @@
* */
#include
#include
+#include
int uv__pthread_sigmask(int how, const sigset_t* set, sigset_t* oset) {
static int workaround;
diff --git a/deps/uv/src/unix/stream.c b/deps/uv/src/unix/stream.c
index 7ad1658cf8d65e..183b68cf7165b0 100644
--- a/deps/uv/src/unix/stream.c
+++ b/deps/uv/src/unix/stream.c
@@ -391,6 +391,9 @@ int uv__stream_open(uv_stream_t* stream, int fd, int flags) {
int enable;
#endif
+ if (!(stream->io_watcher.fd == -1 || stream->io_watcher.fd == fd))
+ return -EBUSY;
+
assert(fd >= 0);
stream->flags |= flags;
@@ -736,19 +739,6 @@ static int uv__handle_fd(uv_handle_t* handle) {
}
}
-static int uv__getiovmax() {
-#if defined(IOV_MAX)
- return IOV_MAX;
-#elif defined(_SC_IOV_MAX)
- static int iovmax = -1;
- if (iovmax == -1)
- iovmax = sysconf(_SC_IOV_MAX);
- return iovmax;
-#else
- return 1024;
-#endif
-}
-
static void uv__write(uv_stream_t* stream) {
struct iovec* iov;
QUEUE* q;
@@ -819,7 +809,17 @@ static void uv__write(uv_stream_t* stream) {
do {
n = sendmsg(uv__stream_fd(stream), &msg, 0);
}
+#if defined(__APPLE__)
+ /*
+ * Due to a possible kernel bug at least in OS X 10.10 "Yosemite",
+ * EPROTOTYPE can be returned while trying to write to a socket that is
+ * shutting down. If we retry the write, we should get the expected EPIPE
+ * instead.
+ */
+ while (n == -1 && (errno == EINTR || errno == EPROTOTYPE));
+#else
while (n == -1 && errno == EINTR);
+#endif
} else {
do {
if (iovcnt == 1) {
@@ -828,7 +828,17 @@ static void uv__write(uv_stream_t* stream) {
n = writev(uv__stream_fd(stream), iov, iovcnt);
}
}
+#if defined(__APPLE__)
+ /*
+ * Due to a possible kernel bug at least in OS X 10.10 "Yosemite",
+ * EPROTOTYPE can be returned while trying to write to a socket that is
+ * shutting down. If we retry the write, we should get the expected EPIPE
+ * instead.
+ */
+ while (n == -1 && (errno == EINTR || errno == EPROTOTYPE));
+#else
while (n == -1 && errno == EINTR);
+#endif
}
if (n < 0) {
diff --git a/deps/uv/src/unix/tcp.c b/deps/uv/src/unix/tcp.c
index 4060e7bd7094e8..6d213a497787d8 100644
--- a/deps/uv/src/unix/tcp.c
+++ b/deps/uv/src/unix/tcp.c
@@ -28,18 +28,14 @@
#include
-int uv_tcp_init(uv_loop_t* loop, uv_tcp_t* tcp) {
- uv__stream_init(loop, (uv_stream_t*)tcp, UV_TCP);
- return 0;
-}
-
-
static int maybe_new_socket(uv_tcp_t* handle, int domain, int flags) {
int sockfd;
int err;
- if (uv__stream_fd(handle) != -1)
+ if (domain == AF_UNSPEC || uv__stream_fd(handle) != -1) {
+ handle->flags |= flags;
return 0;
+ }
err = uv__socket(domain, SOCK_STREAM, 0);
if (err < 0)
@@ -56,6 +52,40 @@ static int maybe_new_socket(uv_tcp_t* handle, int domain, int flags) {
}
+int uv_tcp_init_ex(uv_loop_t* loop, uv_tcp_t* tcp, unsigned int flags) {
+ int domain;
+
+ /* Use the lower 8 bits for the domain */
+ domain = flags & 0xFF;
+ if (domain != AF_INET && domain != AF_INET6 && domain != AF_UNSPEC)
+ return -EINVAL;
+
+ if (flags & ~0xFF)
+ return -EINVAL;
+
+ uv__stream_init(loop, (uv_stream_t*)tcp, UV_TCP);
+
+ /* If anything fails beyond this point we need to remove the handle from
+ * the handle queue, since it was added by uv__handle_init in uv_stream_init.
+ */
+
+ if (domain != AF_UNSPEC) {
+ int err = maybe_new_socket(tcp, domain, 0);
+ if (err) {
+ QUEUE_REMOVE(&tcp->handle_queue);
+ return err;
+ }
+ }
+
+ return 0;
+}
+
+
+int uv_tcp_init(uv_loop_t* loop, uv_tcp_t* tcp) {
+ return uv_tcp_init_ex(loop, tcp, AF_UNSPEC);
+}
+
+
int uv__tcp_bind(uv_tcp_t* tcp,
const struct sockaddr* addr,
unsigned int addrlen,
@@ -91,8 +121,13 @@ int uv__tcp_bind(uv_tcp_t* tcp,
#endif
errno = 0;
- if (bind(tcp->io_watcher.fd, addr, addrlen) && errno != EADDRINUSE)
+ if (bind(tcp->io_watcher.fd, addr, addrlen) && errno != EADDRINUSE) {
+ if (errno == EAFNOSUPPORT)
+ /* OSX, other BSDs and SunoS fail with EAFNOSUPPORT when binding a
+ * socket created with AF_INET to an AF_INET6 address or vice versa. */
+ return -EINVAL;
return -errno;
+ }
tcp->delayed_error = -errno;
if (addr->sa_family == AF_INET6)
diff --git a/deps/uv/src/unix/tty.c b/deps/uv/src/unix/tty.c
index 7783548a6e987d..54c9055a08ae12 100644
--- a/deps/uv/src/unix/tty.c
+++ b/deps/uv/src/unix/tty.c
@@ -51,8 +51,6 @@ int uv_tty_init(uv_loop_t* loop, uv_tty_t* tty, int fd, int readable) {
flags = 0;
newfd = -1;
- uv__stream_init(loop, (uv_stream_t*) tty, UV_TTY);
-
/* Reopen the file descriptor when it refers to a tty. This lets us put the
* tty in non-blocking mode without affecting other processes that share it
* with us.
@@ -89,11 +87,18 @@ int uv_tty_init(uv_loop_t* loop, uv_tty_t* tty, int fd, int readable) {
}
skip:
+ uv__stream_init(loop, (uv_stream_t*) tty, UV_TTY);
+
+ /* If anything fails beyond this point we need to remove the handle from
+ * the handle queue, since it was added by uv__handle_init in uv_stream_init.
+ */
+
#if defined(__APPLE__)
r = uv__stream_try_select((uv_stream_t*) tty, &fd);
if (r) {
if (newfd != -1)
uv__close(newfd);
+ QUEUE_REMOVE(&tty->handle_queue);
return r;
}
#endif
diff --git a/deps/uv/src/unix/udp.c b/deps/uv/src/unix/udp.c
index f85ab1473a944f..66ecc4e341b913 100644
--- a/deps/uv/src/unix/udp.c
+++ b/deps/uv/src/unix/udp.c
@@ -321,6 +321,10 @@ int uv__udp_bind(uv_udp_t* handle,
if (bind(fd, addr, addrlen)) {
err = -errno;
+ if (errno == EAFNOSUPPORT)
+ /* OSX, other BSDs and SunoS fail with EAFNOSUPPORT when binding a
+ * socket created with AF_INET to an AF_INET6 address or vice versa. */
+ err = -EINVAL;
goto out;
}
@@ -551,25 +555,51 @@ static int uv__udp_set_membership6(uv_udp_t* handle,
}
-int uv_udp_init(uv_loop_t* loop, uv_udp_t* handle) {
+int uv_udp_init_ex(uv_loop_t* loop, uv_udp_t* handle, unsigned int flags) {
+ int domain;
+ int err;
+ int fd;
+
+ /* Use the lower 8 bits for the domain */
+ domain = flags & 0xFF;
+ if (domain != AF_INET && domain != AF_INET6 && domain != AF_UNSPEC)
+ return -EINVAL;
+
+ if (flags & ~0xFF)
+ return -EINVAL;
+
+ if (domain != AF_UNSPEC) {
+ err = uv__socket(domain, SOCK_DGRAM, 0);
+ if (err < 0)
+ return err;
+ fd = err;
+ } else {
+ fd = -1;
+ }
+
uv__handle_init(loop, (uv_handle_t*)handle, UV_UDP);
handle->alloc_cb = NULL;
handle->recv_cb = NULL;
handle->send_queue_size = 0;
handle->send_queue_count = 0;
- uv__io_init(&handle->io_watcher, uv__udp_io, -1);
+ uv__io_init(&handle->io_watcher, uv__udp_io, fd);
QUEUE_INIT(&handle->write_queue);
QUEUE_INIT(&handle->write_completed_queue);
return 0;
}
+int uv_udp_init(uv_loop_t* loop, uv_udp_t* handle) {
+ return uv_udp_init_ex(loop, handle, AF_UNSPEC);
+}
+
+
int uv_udp_open(uv_udp_t* handle, uv_os_sock_t sock) {
int err;
/* Check for already active socket. */
if (handle->io_watcher.fd != -1)
- return -EALREADY; /* FIXME(bnoordhuis) Should be -EBUSY. */
+ return -EBUSY;
err = uv__nonblock(sock, 1);
if (err)
@@ -638,6 +668,8 @@ static int uv__setsockopt_maybe_char(uv_udp_t* handle,
int val) {
#if defined(__sun) || defined(_AIX)
char arg = val;
+#elif defined(__OpenBSD__)
+ unsigned char arg = val;
#else
int arg = val;
#endif
@@ -672,13 +704,13 @@ int uv_udp_set_ttl(uv_udp_t* handle, int ttl) {
* so hardcode the size of these options on this platform,
* and use the general uv__setsockopt_maybe_char call on other platforms.
*/
-#if defined(__sun) || defined(_AIX)
+#if defined(__sun) || defined(_AIX) || defined(__OpenBSD__)
return uv__setsockopt(handle,
IP_TTL,
IPV6_UNICAST_HOPS,
&ttl,
sizeof(ttl));
-#endif /* defined(__sun) || defined(_AIX) */
+#endif /* defined(__sun) || defined(_AIX) || defined (__OpenBSD__) */
return uv__setsockopt_maybe_char(handle,
IP_TTL,
diff --git a/deps/uv/src/uv-common.c b/deps/uv/src/uv-common.c
index 77879b9a6c1686..675a776bf4ae1e 100644
--- a/deps/uv/src/uv-common.c
+++ b/deps/uv/src/uv-common.c
@@ -29,7 +29,9 @@
#include /* malloc */
#include /* memset */
-#if !defined(_WIN32)
+#if defined(_WIN32)
+# include /* malloc */
+#else
# include /* if_nametoindex */
#endif
@@ -135,14 +137,27 @@ uv_buf_t uv_buf_init(char* base, unsigned int len) {
}
+static const char* uv__unknown_err_code(int err) {
+ char buf[32];
+ char* copy;
+
+#ifndef _WIN32
+ snprintf(buf, sizeof(buf), "Unknown system error %d", err);
+#else
+ _snprintf(buf, sizeof(buf), "Unknown system error %d", err);
+#endif
+ copy = uv__strdup(buf);
+
+ return copy != NULL ? copy : "Unknown system error";
+}
+
+
#define UV_ERR_NAME_GEN(name, _) case UV_ ## name: return #name;
const char* uv_err_name(int err) {
switch (err) {
UV_ERRNO_MAP(UV_ERR_NAME_GEN)
- default:
- assert(0);
- return NULL;
}
+ return uv__unknown_err_code(err);
}
#undef UV_ERR_NAME_GEN
@@ -151,9 +166,8 @@ const char* uv_err_name(int err) {
const char* uv_strerror(int err) {
switch (err) {
UV_ERRNO_MAP(UV_STRERROR_GEN)
- default:
- return "Unknown system error";
}
+ return uv__unknown_err_code(err);
}
#undef UV_STRERROR_GEN
diff --git a/deps/uv/src/uv-common.h b/deps/uv/src/uv-common.h
index 8258d7a1387d26..b348ec76bd50bd 100644
--- a/deps/uv/src/uv-common.h
+++ b/deps/uv/src/uv-common.h
@@ -196,7 +196,7 @@ void uv__fs_scandir_cleanup(uv_fs_t* req);
(((h)->flags & UV__HANDLE_REF) != 0)
#if defined(_WIN32)
-# define uv__handle_platform_init(h)
+# define uv__handle_platform_init(h) ((h)->u.fd = -1)
#else
# define uv__handle_platform_init(h) ((h)->next_closing = NULL)
#endif
diff --git a/deps/uv/src/version.c b/deps/uv/src/version.c
index ff91a460904e6e..686dedd98d6854 100644
--- a/deps/uv/src/version.c
+++ b/deps/uv/src/version.c
@@ -21,10 +21,6 @@
#include "uv.h"
-#define UV_VERSION ((UV_VERSION_MAJOR << 16) | \
- (UV_VERSION_MINOR << 8) | \
- (UV_VERSION_PATCH))
-
#define UV_STRINGIFY(v) UV_STRINGIFY_HELPER(v)
#define UV_STRINGIFY_HELPER(v) #v
@@ -40,7 +36,7 @@
unsigned int uv_version(void) {
- return UV_VERSION;
+ return UV_VERSION_HEX;
}
diff --git a/deps/uv/src/win/core.c b/deps/uv/src/win/core.c
index 115449224f9651..de0483e1023017 100644
--- a/deps/uv/src/win/core.c
+++ b/deps/uv/src/win/core.c
@@ -124,6 +124,8 @@ static void uv_init(void) {
int uv_loop_init(uv_loop_t* loop) {
+ int err;
+
/* Initialize libuv itself first */
uv__once_init();
@@ -165,16 +167,27 @@ int uv_loop_init(uv_loop_t* loop) {
loop->timer_counter = 0;
loop->stop_flag = 0;
- if (uv_mutex_init(&loop->wq_mutex))
- abort();
+ err = uv_mutex_init(&loop->wq_mutex);
+ if (err)
+ goto fail_mutex_init;
- if (uv_async_init(loop, &loop->wq_async, uv__work_done))
- abort();
+ err = uv_async_init(loop, &loop->wq_async, uv__work_done);
+ if (err)
+ goto fail_async_init;
uv__handle_unref(&loop->wq_async);
loop->wq_async.flags |= UV__HANDLE_INTERNAL;
return 0;
+
+fail_async_init:
+ uv_mutex_destroy(&loop->wq_mutex);
+
+fail_mutex_init:
+ CloseHandle(loop->iocp);
+ loop->iocp = INVALID_HANDLE_VALUE;
+
+ return err;
}
diff --git a/deps/uv/src/win/fs-event.c b/deps/uv/src/win/fs-event.c
index eb205d3921d797..ba68f78c82a610 100644
--- a/deps/uv/src/win/fs-event.c
+++ b/deps/uv/src/win/fs-event.c
@@ -43,7 +43,7 @@ static void uv_fs_event_queue_readdirchanges(uv_loop_t* loop,
if (!ReadDirectoryChangesW(handle->dir_handle,
handle->buffer,
uv_directory_watcher_buffer_size,
- FALSE,
+ (handle->flags & UV_FS_EVENT_RECURSIVE) ? TRUE : FALSE,
FILE_NOTIFY_CHANGE_FILE_NAME |
FILE_NOTIFY_CHANGE_DIR_NAME |
FILE_NOTIFY_CHANGE_ATTRIBUTES |
@@ -63,6 +63,20 @@ static void uv_fs_event_queue_readdirchanges(uv_loop_t* loop,
handle->req_pending = 1;
}
+static int uv_relative_path(const WCHAR* filename,
+ const WCHAR* dir,
+ WCHAR** relpath) {
+ int dirlen = wcslen(dir);
+ int filelen = wcslen(filename);
+ if (dir[dirlen - 1] == '\\')
+ dirlen--;
+ *relpath = uv__malloc((MAX_PATH + 1) * sizeof(WCHAR));
+ if (!*relpath)
+ uv_fatal_error(ERROR_OUTOFMEMORY, "uv__malloc");
+ wcsncpy(*relpath, filename + dirlen + 1, filelen - dirlen - 1);
+ (*relpath)[filelen - dirlen - 1] = L'\0';
+ return 0;
+}
static int uv_split_path(const WCHAR* filename, WCHAR** dir,
WCHAR** file) {
@@ -237,7 +251,7 @@ int uv_fs_event_start(uv_fs_event_t* handle,
if (!ReadDirectoryChangesW(handle->dir_handle,
handle->buffer,
uv_directory_watcher_buffer_size,
- FALSE,
+ (flags & UV_FS_EVENT_RECURSIVE) ? TRUE : FALSE,
FILE_NOTIFY_CHANGE_FILE_NAME |
FILE_NOTIFY_CHANGE_DIR_NAME |
FILE_NOTIFY_CHANGE_ATTRIBUTES |
@@ -410,7 +424,9 @@ void uv_process_fs_event_req(uv_loop_t* loop, uv_req_t* req,
if (long_filenamew) {
/* Get the file name out of the long path. */
- result = uv_split_path(long_filenamew, NULL, &filenamew);
+ result = uv_relative_path(long_filenamew,
+ handle->dirw,
+ &filenamew);
uv__free(long_filenamew);
if (result == 0) {
diff --git a/deps/uv/src/win/fs.c b/deps/uv/src/win/fs.c
index 00d0197a541483..4a17573113ff9b 100644
--- a/deps/uv/src/win/fs.c
+++ b/deps/uv/src/win/fs.c
@@ -116,8 +116,8 @@ void uv_fs_init() {
}
-INLINE static int fs__capture_path(uv_loop_t* loop, uv_fs_t* req,
- const char* path, const char* new_path, const int copy_path) {
+INLINE static int fs__capture_path(uv_fs_t* req, const char* path,
+ const char* new_path, const int copy_path) {
char* buf;
char* pos;
ssize_t buf_sz = 0, path_len, pathw_len = 0, new_pathw_len = 0;
@@ -528,7 +528,11 @@ void fs__close(uv_fs_t* req) {
VERIFY_FD(fd, req);
- result = _close(fd);
+ if (fd > 2)
+ result = _close(fd);
+ else
+ result = 0;
+
SET_REQ_RESULT(req, result);
}
@@ -821,7 +825,11 @@ void fs__scandir(uv_fs_t* req) {
* A file name is at most 256 WCHARs long.
* According to MSDN, the buffer must be aligned at an 8-byte boundary.
*/
+#if _MSC_VER
__declspec(align(8)) char buffer[8192];
+#else
+ __attribute__ ((aligned (8))) char buffer[8192];
+#endif
STATIC_ASSERT(sizeof buffer >=
sizeof(FILE_DIRECTORY_INFORMATION) + 256 * sizeof(WCHAR));
@@ -1754,8 +1762,7 @@ static void uv__fs_done(struct uv__work* w, int status) {
req->result = UV_ECANCELED;
}
- if (req->cb != NULL)
- req->cb(req);
+ req->cb(req);
}
@@ -1784,7 +1791,7 @@ int uv_fs_open(uv_loop_t* loop, uv_fs_t* req, const char* path, int flags,
uv_fs_req_init(loop, req, UV_FS_OPEN, cb);
- err = fs__capture_path(loop, req, path, NULL, cb != NULL);
+ err = fs__capture_path(req, path, NULL, cb != NULL);
if (err) {
return uv_translate_sys_error(err);
}
@@ -1823,6 +1830,9 @@ int uv_fs_read(uv_loop_t* loop,
unsigned int nbufs,
int64_t offset,
uv_fs_cb cb) {
+ if (bufs == NULL || nbufs == 0)
+ return UV_EINVAL;
+
uv_fs_req_init(loop, req, UV_FS_READ, cb);
req->file.fd = fd;
@@ -1856,6 +1866,9 @@ int uv_fs_write(uv_loop_t* loop,
unsigned int nbufs,
int64_t offset,
uv_fs_cb cb) {
+ if (bufs == NULL || nbufs == 0)
+ return UV_EINVAL;
+
uv_fs_req_init(loop, req, UV_FS_WRITE, cb);
req->file.fd = fd;
@@ -1888,7 +1901,7 @@ int uv_fs_unlink(uv_loop_t* loop, uv_fs_t* req, const char* path,
uv_fs_req_init(loop, req, UV_FS_UNLINK, cb);
- err = fs__capture_path(loop, req, path, NULL, cb != NULL);
+ err = fs__capture_path(req, path, NULL, cb != NULL);
if (err) {
return uv_translate_sys_error(err);
}
@@ -1909,7 +1922,7 @@ int uv_fs_mkdir(uv_loop_t* loop, uv_fs_t* req, const char* path, int mode,
uv_fs_req_init(loop, req, UV_FS_MKDIR, cb);
- err = fs__capture_path(loop, req, path, NULL, cb != NULL);
+ err = fs__capture_path(req, path, NULL, cb != NULL);
if (err) {
return uv_translate_sys_error(err);
}
@@ -1932,7 +1945,7 @@ int uv_fs_mkdtemp(uv_loop_t* loop, uv_fs_t* req, const char* tpl,
uv_fs_req_init(loop, req, UV_FS_MKDTEMP, cb);
- err = fs__capture_path(loop, req, tpl, NULL, TRUE);
+ err = fs__capture_path(req, tpl, NULL, TRUE);
if (err)
return uv_translate_sys_error(err);
@@ -1951,7 +1964,7 @@ int uv_fs_rmdir(uv_loop_t* loop, uv_fs_t* req, const char* path, uv_fs_cb cb) {
uv_fs_req_init(loop, req, UV_FS_RMDIR, cb);
- err = fs__capture_path(loop, req, path, NULL, cb != NULL);
+ err = fs__capture_path(req, path, NULL, cb != NULL);
if (err) {
return uv_translate_sys_error(err);
}
@@ -1972,7 +1985,7 @@ int uv_fs_scandir(uv_loop_t* loop, uv_fs_t* req, const char* path, int flags,
uv_fs_req_init(loop, req, UV_FS_SCANDIR, cb);
- err = fs__capture_path(loop, req, path, NULL, cb != NULL);
+ err = fs__capture_path(req, path, NULL, cb != NULL);
if (err) {
return uv_translate_sys_error(err);
}
@@ -1995,7 +2008,7 @@ int uv_fs_link(uv_loop_t* loop, uv_fs_t* req, const char* path,
uv_fs_req_init(loop, req, UV_FS_LINK, cb);
- err = fs__capture_path(loop, req, path, new_path, cb != NULL);
+ err = fs__capture_path(req, path, new_path, cb != NULL);
if (err) {
return uv_translate_sys_error(err);
}
@@ -2016,7 +2029,7 @@ int uv_fs_symlink(uv_loop_t* loop, uv_fs_t* req, const char* path,
uv_fs_req_init(loop, req, UV_FS_SYMLINK, cb);
- err = fs__capture_path(loop, req, path, new_path, cb != NULL);
+ err = fs__capture_path(req, path, new_path, cb != NULL);
if (err) {
return uv_translate_sys_error(err);
}
@@ -2039,7 +2052,7 @@ int uv_fs_readlink(uv_loop_t* loop, uv_fs_t* req, const char* path,
uv_fs_req_init(loop, req, UV_FS_READLINK, cb);
- err = fs__capture_path(loop, req, path, NULL, cb != NULL);
+ err = fs__capture_path(req, path, NULL, cb != NULL);
if (err) {
return uv_translate_sys_error(err);
}
@@ -2060,7 +2073,7 @@ int uv_fs_chown(uv_loop_t* loop, uv_fs_t* req, const char* path, uv_uid_t uid,
uv_fs_req_init(loop, req, UV_FS_CHOWN, cb);
- err = fs__capture_path(loop, req, path, NULL, cb != NULL);
+ err = fs__capture_path(req, path, NULL, cb != NULL);
if (err) {
return uv_translate_sys_error(err);
}
@@ -2094,7 +2107,7 @@ int uv_fs_stat(uv_loop_t* loop, uv_fs_t* req, const char* path, uv_fs_cb cb) {
uv_fs_req_init(loop, req, UV_FS_STAT, cb);
- err = fs__capture_path(loop, req, path, NULL, cb != NULL);
+ err = fs__capture_path(req, path, NULL, cb != NULL);
if (err) {
return uv_translate_sys_error(err);
}
@@ -2114,7 +2127,7 @@ int uv_fs_lstat(uv_loop_t* loop, uv_fs_t* req, const char* path, uv_fs_cb cb) {
uv_fs_req_init(loop, req, UV_FS_LSTAT, cb);
- err = fs__capture_path(loop, req, path, NULL, cb != NULL);
+ err = fs__capture_path(req, path, NULL, cb != NULL);
if (err) {
return uv_translate_sys_error(err);
}
@@ -2149,7 +2162,7 @@ int uv_fs_rename(uv_loop_t* loop, uv_fs_t* req, const char* path,
uv_fs_req_init(loop, req, UV_FS_RENAME, cb);
- err = fs__capture_path(loop, req, path, new_path, cb != NULL);
+ err = fs__capture_path(req, path, new_path, cb != NULL);
if (err) {
return uv_translate_sys_error(err);
}
@@ -2238,7 +2251,7 @@ int uv_fs_access(uv_loop_t* loop,
uv_fs_req_init(loop, req, UV_FS_ACCESS, cb);
- err = fs__capture_path(loop, req, path, NULL, cb != NULL);
+ err = fs__capture_path(req, path, NULL, cb != NULL);
if (err)
return uv_translate_sys_error(err);
@@ -2260,7 +2273,7 @@ int uv_fs_chmod(uv_loop_t* loop, uv_fs_t* req, const char* path, int mode,
uv_fs_req_init(loop, req, UV_FS_CHMOD, cb);
- err = fs__capture_path(loop, req, path, NULL, cb != NULL);
+ err = fs__capture_path(req, path, NULL, cb != NULL);
if (err) {
return uv_translate_sys_error(err);
}
@@ -2300,7 +2313,7 @@ int uv_fs_utime(uv_loop_t* loop, uv_fs_t* req, const char* path, double atime,
uv_fs_req_init(loop, req, UV_FS_UTIME, cb);
- err = fs__capture_path(loop, req, path, NULL, cb != NULL);
+ err = fs__capture_path(req, path, NULL, cb != NULL);
if (err) {
return uv_translate_sys_error(err);
}
diff --git a/deps/uv/src/win/internal.h b/deps/uv/src/win/internal.h
index 04b2a548ca88cc..8d4081bdb51ccf 100644
--- a/deps/uv/src/win/internal.h
+++ b/deps/uv/src/win/internal.h
@@ -64,7 +64,7 @@ extern UV_THREAD_LOCAL int uv__crt_assert_enabled;
/* Used by all handles. */
#define UV_HANDLE_CLOSED 0x00000002
-#define UV_HANDLE_ENDGAME_QUEUED 0x00000004
+#define UV_HANDLE_ENDGAME_QUEUED 0x00000008
/* uv-common.h: #define UV__HANDLE_CLOSING 0x00000001 */
/* uv-common.h: #define UV__HANDLE_ACTIVE 0x00000040 */
@@ -76,7 +76,6 @@ extern UV_THREAD_LOCAL int uv__crt_assert_enabled;
#define UV_HANDLE_BOUND 0x00000200
#define UV_HANDLE_LISTENING 0x00000800
#define UV_HANDLE_CONNECTION 0x00001000
-#define UV_HANDLE_CONNECTED 0x00002000
#define UV_HANDLE_READABLE 0x00008000
#define UV_HANDLE_WRITABLE 0x00010000
#define UV_HANDLE_READ_PENDING 0x00020000
diff --git a/deps/uv/src/win/pipe.c b/deps/uv/src/win/pipe.c
index d232efae3aab5c..8312b1ceb958c3 100644
--- a/deps/uv/src/win/pipe.c
+++ b/deps/uv/src/win/pipe.c
@@ -180,6 +180,18 @@ static HANDLE open_named_pipe(const WCHAR* name, DWORD* duplex_flags) {
}
+static void close_pipe(uv_pipe_t* pipe) {
+ assert(pipe->u.fd == -1 || pipe->u.fd > 2);
+ if (pipe->u.fd == -1)
+ CloseHandle(pipe->handle);
+ else
+ close(pipe->u.fd);
+
+ pipe->u.fd = -1;
+ pipe->handle = INVALID_HANDLE_VALUE;
+}
+
+
int uv_stdio_pipe_server(uv_loop_t* loop, uv_pipe_t* handle, DWORD access,
char* name, size_t nameSize) {
HANDLE pipeHandle;
@@ -233,6 +245,7 @@ int uv_stdio_pipe_server(uv_loop_t* loop, uv_pipe_t* handle, DWORD access,
static int uv_set_pipe_handle(uv_loop_t* loop,
uv_pipe_t* handle,
HANDLE pipeHandle,
+ int fd,
DWORD duplex_flags) {
NTSTATUS nt_status;
IO_STATUS_BLOCK io_status;
@@ -241,6 +254,10 @@ static int uv_set_pipe_handle(uv_loop_t* loop,
DWORD current_mode = 0;
DWORD err = 0;
+ if (!(handle->flags & UV_HANDLE_PIPESERVER) &&
+ handle->handle != INVALID_HANDLE_VALUE)
+ return UV_EBUSY;
+
if (!SetNamedPipeHandleState(pipeHandle, &mode, NULL, NULL)) {
err = GetLastError();
if (err == ERROR_ACCESS_DENIED) {
@@ -292,6 +309,7 @@ static int uv_set_pipe_handle(uv_loop_t* loop,
}
handle->handle = pipeHandle;
+ handle->u.fd = fd;
handle->flags |= duplex_flags;
return 0;
@@ -454,6 +472,8 @@ void uv_pipe_endgame(uv_loop_t* loop, uv_pipe_t* handle) {
void uv_pipe_pending_instances(uv_pipe_t* handle, int count) {
+ if (handle->flags & UV_HANDLE_BOUND)
+ return;
handle->pipe.serv.pending_instances = count;
handle->flags |= UV_HANDLE_PIPESERVER;
}
@@ -527,6 +547,7 @@ int uv_pipe_bind(uv_pipe_t* handle, const char* name) {
if (uv_set_pipe_handle(loop,
handle,
handle->pipe.serv.accept_reqs[0].pipeHandle,
+ -1,
0)) {
err = GetLastError();
goto error;
@@ -580,7 +601,7 @@ static DWORD WINAPI pipe_connect_thread_proc(void* parameter) {
}
if (pipeHandle != INVALID_HANDLE_VALUE &&
- !uv_set_pipe_handle(loop, handle, pipeHandle, duplex_flags)) {
+ !uv_set_pipe_handle(loop, handle, pipeHandle, -1, duplex_flags)) {
SET_REQ_SUCCESS(req);
} else {
SET_REQ_ERROR(req, GetLastError());
@@ -643,6 +664,7 @@ void uv_pipe_connect(uv_connect_t* req, uv_pipe_t* handle,
if (uv_set_pipe_handle(loop,
(uv_pipe_t*) req->handle,
pipeHandle,
+ -1,
duplex_flags)) {
err = GetLastError();
goto error;
@@ -729,6 +751,7 @@ void uv_pipe_cleanup(uv_loop_t* loop, uv_pipe_t* handle) {
handle->pipe.serv.accept_reqs[i].pipeHandle = INVALID_HANDLE_VALUE;
}
}
+ handle->handle = INVALID_HANDLE_VALUE;
}
if (handle->flags & UV_HANDLE_CONNECTION) {
@@ -737,11 +760,8 @@ void uv_pipe_cleanup(uv_loop_t* loop, uv_pipe_t* handle) {
}
if ((handle->flags & UV_HANDLE_CONNECTION)
- && handle->handle != INVALID_HANDLE_VALUE) {
- CloseHandle(handle->handle);
- handle->handle = INVALID_HANDLE_VALUE;
- }
-
+ && handle->handle != INVALID_HANDLE_VALUE)
+ close_pipe(handle);
}
@@ -786,7 +806,7 @@ static void uv_pipe_queue_accept(uv_loop_t* loop, uv_pipe_t* handle,
return;
}
- if (uv_set_pipe_handle(loop, handle, req->pipeHandle, 0)) {
+ if (uv_set_pipe_handle(loop, handle, req->pipeHandle, -1, 0)) {
CloseHandle(req->pipeHandle);
req->pipeHandle = INVALID_HANDLE_VALUE;
SET_REQ_ERROR(req, GetLastError());
@@ -1770,8 +1790,7 @@ void uv_process_pipe_shutdown_req(uv_loop_t* loop, uv_pipe_t* handle,
} else {
/* This pipe is not readable. We can just close it to let the other end */
/* know that we're done writing. */
- CloseHandle(handle->handle);
- handle->handle = INVALID_HANDLE_VALUE;
+ close_pipe(handle);
}
if (req->cb) {
@@ -1838,8 +1857,7 @@ static void eof_timer_cb(uv_timer_t* timer) {
}
/* Force both ends off the pipe. */
- CloseHandle(pipe->handle);
- pipe->handle = INVALID_HANDLE_VALUE;
+ close_pipe(pipe);
/* Stop reading, so the pending read that is going to fail will */
/* not be reported to the user. */
@@ -1874,6 +1892,27 @@ int uv_pipe_open(uv_pipe_t* pipe, uv_file file) {
FILE_ACCESS_INFORMATION access;
DWORD duplex_flags = 0;
+ if (os_handle == INVALID_HANDLE_VALUE)
+ return UV_EBADF;
+
+ /* In order to avoid closing a stdio file descriptor 0-2, duplicate the
+ * underlying OS handle and forget about the original fd.
+ * We could also opt to use the original OS handle and just never close it,
+ * but then there would be no reliable way to cancel pending read operations
+ * upon close.
+ */
+ if (file <= 2) {
+ if (!DuplicateHandle(INVALID_HANDLE_VALUE,
+ os_handle,
+ INVALID_HANDLE_VALUE,
+ &os_handle,
+ 0,
+ FALSE,
+ DUPLICATE_SAME_ACCESS))
+ return uv_translate_sys_error(GetLastError());
+ file = -1;
+ }
+
/* Determine what kind of permissions we have on this handle.
* Cygwin opens the pipe in message mode, but we can support it,
* just query the access flags and set the stream flags accordingly.
@@ -1899,7 +1938,11 @@ int uv_pipe_open(uv_pipe_t* pipe, uv_file file) {
duplex_flags |= UV_HANDLE_READABLE;
if (os_handle == INVALID_HANDLE_VALUE ||
- uv_set_pipe_handle(pipe->loop, pipe, os_handle, duplex_flags) == -1) {
+ uv_set_pipe_handle(pipe->loop,
+ pipe,
+ os_handle,
+ file,
+ duplex_flags) == -1) {
return UV_EINVAL;
}
diff --git a/deps/uv/src/win/process-stdio.c b/deps/uv/src/win/process-stdio.c
index e81f799f0b8355..e3c06f57dea5a4 100644
--- a/deps/uv/src/win/process-stdio.c
+++ b/deps/uv/src/win/process-stdio.c
@@ -407,7 +407,7 @@ int uv__stdio_create(uv_loop_t* loop,
stream_handle = ((uv_tty_t*) stream)->handle;
crt_flags = FOPEN | FDEV;
} else if (stream->type == UV_NAMED_PIPE &&
- stream->flags & UV_HANDLE_CONNECTED) {
+ stream->flags & UV_HANDLE_CONNECTION) {
stream_handle = ((uv_pipe_t*) stream)->handle;
crt_flags = FOPEN | FPIPE;
} else {
diff --git a/deps/uv/src/win/tcp.c b/deps/uv/src/win/tcp.c
index da89f28d161e7a..0f5654863e9790 100644
--- a/deps/uv/src/win/tcp.c
+++ b/deps/uv/src/win/tcp.c
@@ -78,19 +78,27 @@ static int uv__tcp_keepalive(uv_tcp_t* handle, SOCKET socket, int enable, unsign
}
-static int uv_tcp_set_socket(uv_loop_t* loop, uv_tcp_t* handle,
- SOCKET socket, int family, int imported) {
+static int uv_tcp_set_socket(uv_loop_t* loop,
+ uv_tcp_t* handle,
+ SOCKET socket,
+ int family,
+ int imported) {
DWORD yes = 1;
int non_ifs_lsp;
int err;
- assert(handle->socket == INVALID_SOCKET);
+ if (handle->socket != INVALID_SOCKET)
+ return UV_EBUSY;
/* Set the socket to nonblocking mode */
if (ioctlsocket(socket, FIONBIO, &yes) == SOCKET_ERROR) {
return WSAGetLastError();
}
+ /* Make the socket non-inheritable */
+ if (!SetHandleInformation((HANDLE) socket, HANDLE_FLAG_INHERIT, 0))
+ return GetLastError();
+
/* Associate it with the I/O completion port. */
/* Use uv_handle_t pointer as completion key. */
if (CreateIoCompletionPort((HANDLE)socket,
@@ -146,9 +154,18 @@ static int uv_tcp_set_socket(uv_loop_t* loop, uv_tcp_t* handle,
}
-int uv_tcp_init(uv_loop_t* loop, uv_tcp_t* handle) {
- uv_stream_init(loop, (uv_stream_t*) handle, UV_TCP);
+int uv_tcp_init_ex(uv_loop_t* loop, uv_tcp_t* handle, unsigned int flags) {
+ int domain;
+ /* Use the lower 8 bits for the domain */
+ domain = flags & 0xFF;
+ if (domain != AF_INET && domain != AF_INET6 && domain != AF_UNSPEC)
+ return UV_EINVAL;
+
+ if (flags & ~0xFF)
+ return UV_EINVAL;
+
+ uv_stream_init(loop, (uv_stream_t*) handle, UV_TCP);
handle->tcp.serv.accept_reqs = NULL;
handle->tcp.serv.pending_accepts = NULL;
handle->socket = INVALID_SOCKET;
@@ -158,10 +175,39 @@ int uv_tcp_init(uv_loop_t* loop, uv_tcp_t* handle) {
handle->tcp.serv.processed_accepts = 0;
handle->delayed_error = 0;
+ /* If anything fails beyond this point we need to remove the handle from
+ * the handle queue, since it was added by uv__handle_init in uv_stream_init.
+ */
+
+ if (domain != AF_UNSPEC) {
+ SOCKET sock;
+ DWORD err;
+
+ sock = socket(domain, SOCK_STREAM, 0);
+ if (sock == INVALID_SOCKET) {
+ err = WSAGetLastError();
+ QUEUE_REMOVE(&handle->handle_queue);
+ return uv_translate_sys_error(err);
+ }
+
+ err = uv_tcp_set_socket(handle->loop, handle, sock, domain, 0);
+ if (err) {
+ closesocket(sock);
+ QUEUE_REMOVE(&handle->handle_queue);
+ return uv_translate_sys_error(err);
+ }
+
+ }
+
return 0;
}
+int uv_tcp_init(uv_loop_t* loop, uv_tcp_t* handle) {
+ return uv_tcp_init_ex(loop, handle, AF_UNSPEC);
+}
+
+
void uv_tcp_endgame(uv_loop_t* loop, uv_tcp_t* handle) {
int err;
unsigned int i;
@@ -267,13 +313,6 @@ static int uv_tcp_try_bind(uv_tcp_t* handle,
return WSAGetLastError();
}
- /* Make the socket non-inheritable */
- if (!SetHandleInformation((HANDLE) sock, HANDLE_FLAG_INHERIT, 0)) {
- err = GetLastError();
- closesocket(sock);
- return err;
- }
-
err = uv_tcp_set_socket(handle->loop, handle, sock, addr->sa_family, 0);
if (err) {
closesocket(sock);
@@ -774,7 +813,7 @@ int uv_tcp_getsockname(const uv_tcp_t* handle,
int* namelen) {
int result;
- if (!(handle->flags & UV_HANDLE_BOUND)) {
+ if (handle->socket == INVALID_SOCKET) {
return UV_EINVAL;
}
@@ -796,7 +835,7 @@ int uv_tcp_getpeername(const uv_tcp_t* handle,
int* namelen) {
int result;
- if (!(handle->flags & UV_HANDLE_BOUND)) {
+ if (handle->socket == INVALID_SOCKET) {
return UV_EINVAL;
}
@@ -1165,12 +1204,6 @@ int uv_tcp_import(uv_tcp_t* tcp, uv__ipc_socket_info_ex* socket_info_ex,
return WSAGetLastError();
}
- if (!SetHandleInformation((HANDLE) socket, HANDLE_FLAG_INHERIT, 0)) {
- err = GetLastError();
- closesocket(socket);
- return err;
- }
-
err = uv_tcp_set_socket(tcp->loop,
tcp,
socket,
@@ -1426,11 +1459,6 @@ int uv_tcp_open(uv_tcp_t* handle, uv_os_sock_t sock) {
return uv_translate_sys_error(GetLastError());
}
- /* Make the socket non-inheritable */
- if (!SetHandleInformation((HANDLE) sock, HANDLE_FLAG_INHERIT, 0)) {
- return uv_translate_sys_error(GetLastError());
- }
-
err = uv_tcp_set_socket(handle->loop,
handle,
sock,
diff --git a/deps/uv/src/win/thread.c b/deps/uv/src/win/thread.c
index e91ae9b13852d2..bacceab95f05d6 100644
--- a/deps/uv/src/win/thread.c
+++ b/deps/uv/src/win/thread.c
@@ -191,6 +191,7 @@ int uv_thread_create(uv_thread_t *tid, void (*entry)(void *arg), void *arg) {
uv_thread_t uv_thread_self(void) {
+ uv_once(&uv__current_thread_init_guard, uv__init_current_thread_key);
return (uv_thread_t) uv_key_get(&uv__current_thread_key);
}
@@ -395,18 +396,16 @@ static void uv__rwlock_srwlock_wrunlock(uv_rwlock_t* rwlock) {
static int uv__rwlock_fallback_init(uv_rwlock_t* rwlock) {
- int err;
+ /* Initialize the semaphore that acts as the write lock. */
+ HANDLE handle = CreateSemaphoreW(NULL, 1, 1, NULL);
+ if (handle == NULL)
+ return uv_translate_sys_error(GetLastError());
+ rwlock->fallback_.write_lock_.sem = handle;
- err = uv_mutex_init(&rwlock->fallback_.read_mutex_);
- if (err)
- return err;
-
- err = uv_mutex_init(&rwlock->fallback_.write_mutex_);
- if (err) {
- uv_mutex_destroy(&rwlock->fallback_.read_mutex_);
- return err;
- }
+ /* Initialize the critical section protecting the reader count. */
+ InitializeCriticalSection(&rwlock->fallback_.read_lock_.cs);
+ /* Initialize the reader count. */
rwlock->fallback_.num_readers_ = 0;
return 0;
@@ -414,64 +413,88 @@ static int uv__rwlock_fallback_init(uv_rwlock_t* rwlock) {
static void uv__rwlock_fallback_destroy(uv_rwlock_t* rwlock) {
- uv_mutex_destroy(&rwlock->fallback_.read_mutex_);
- uv_mutex_destroy(&rwlock->fallback_.write_mutex_);
+ DeleteCriticalSection(&rwlock->fallback_.read_lock_.cs);
+ CloseHandle(rwlock->fallback_.write_lock_.sem);
}
static void uv__rwlock_fallback_rdlock(uv_rwlock_t* rwlock) {
- uv_mutex_lock(&rwlock->fallback_.read_mutex_);
-
- if (++rwlock->fallback_.num_readers_ == 1)
- uv_mutex_lock(&rwlock->fallback_.write_mutex_);
+ /* Acquire the lock that protects the reader count. */
+ EnterCriticalSection(&rwlock->fallback_.read_lock_.cs);
+
+ /* Increase the reader count, and lock for write if this is the first
+ * reader.
+ */
+ if (++rwlock->fallback_.num_readers_ == 1) {
+ DWORD r = WaitForSingleObject(rwlock->fallback_.write_lock_.sem, INFINITE);
+ if (r != WAIT_OBJECT_0)
+ uv_fatal_error(GetLastError(), "WaitForSingleObject");
+ }
- uv_mutex_unlock(&rwlock->fallback_.read_mutex_);
+ /* Release the lock that protects the reader count. */
+ LeaveCriticalSection(&rwlock->fallback_.read_lock_.cs);
}
static int uv__rwlock_fallback_tryrdlock(uv_rwlock_t* rwlock) {
int err;
- err = uv_mutex_trylock(&rwlock->fallback_.read_mutex_);
- if (err)
- goto out;
+ if (!TryEnterCriticalSection(&rwlock->fallback_.read_lock_.cs))
+ return UV_EAGAIN;
err = 0;
- if (rwlock->fallback_.num_readers_ == 0)
- err = uv_mutex_trylock(&rwlock->fallback_.write_mutex_);
-
- if (err == 0)
- rwlock->fallback_.num_readers_++;
-
- uv_mutex_unlock(&rwlock->fallback_.read_mutex_);
+ if (rwlock->fallback_.num_readers_ == 0) {
+ DWORD r = WaitForSingleObject(rwlock->fallback_.write_lock_.sem, 0);
+ if (r == WAIT_OBJECT_0)
+ rwlock->fallback_.num_readers_++;
+ else if (r == WAIT_TIMEOUT)
+ err = UV_EAGAIN;
+ else if (r == WAIT_FAILED)
+ err = uv_translate_sys_error(GetLastError());
+ else
+ err = UV_EIO;
+ }
-out:
+ LeaveCriticalSection(&rwlock->fallback_.read_lock_.cs);
return err;
}
static void uv__rwlock_fallback_rdunlock(uv_rwlock_t* rwlock) {
- uv_mutex_lock(&rwlock->fallback_.read_mutex_);
+ EnterCriticalSection(&rwlock->fallback_.read_lock_.cs);
- if (--rwlock->fallback_.num_readers_ == 0)
- uv_mutex_unlock(&rwlock->fallback_.write_mutex_);
+ if (--rwlock->fallback_.num_readers_ == 0) {
+ if (!ReleaseSemaphore(rwlock->fallback_.write_lock_.sem, 1, NULL))
+ uv_fatal_error(GetLastError(), "ReleaseSemaphore");
+ }
- uv_mutex_unlock(&rwlock->fallback_.read_mutex_);
+ LeaveCriticalSection(&rwlock->fallback_.read_lock_.cs);
}
static void uv__rwlock_fallback_wrlock(uv_rwlock_t* rwlock) {
- uv_mutex_lock(&rwlock->fallback_.write_mutex_);
+ DWORD r = WaitForSingleObject(rwlock->fallback_.write_lock_.sem, INFINITE);
+ if (r != WAIT_OBJECT_0)
+ uv_fatal_error(GetLastError(), "WaitForSingleObject");
}
static int uv__rwlock_fallback_trywrlock(uv_rwlock_t* rwlock) {
- return uv_mutex_trylock(&rwlock->fallback_.write_mutex_);
+ DWORD r = WaitForSingleObject(rwlock->fallback_.write_lock_.sem, 0);
+ if (r == WAIT_OBJECT_0)
+ return 0;
+ else if (r == WAIT_TIMEOUT)
+ return UV_EAGAIN;
+ else if (r == WAIT_FAILED)
+ return uv_translate_sys_error(GetLastError());
+ else
+ return UV_EIO;
}
static void uv__rwlock_fallback_wrunlock(uv_rwlock_t* rwlock) {
- uv_mutex_unlock(&rwlock->fallback_.write_mutex_);
+ if (!ReleaseSemaphore(rwlock->fallback_.write_lock_.sem, 1, NULL))
+ uv_fatal_error(GetLastError(), "ReleaseSemaphore");
}
diff --git a/deps/uv/src/win/tty.c b/deps/uv/src/win/tty.c
index 7b1e4ba0557fca..b40bb42710ae7b 100644
--- a/deps/uv/src/win/tty.c
+++ b/deps/uv/src/win/tty.c
@@ -55,6 +55,7 @@
#define MAX_INPUT_BUFFER_LENGTH 8192
+static void uv_tty_capture_initial_style(CONSOLE_SCREEN_BUFFER_INFO* info);
static void uv_tty_update_virtual_window(CONSOLE_SCREEN_BUFFER_INFO* info);
@@ -96,6 +97,15 @@ static CRITICAL_SECTION uv_tty_output_lock;
static HANDLE uv_tty_output_handle = INVALID_HANDLE_VALUE;
+static WORD uv_tty_default_text_attributes =
+ FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE;
+
+static char uv_tty_default_fg_color = 7;
+static char uv_tty_default_bg_color = 0;
+static char uv_tty_default_fg_bright = 0;
+static char uv_tty_default_bg_bright = 0;
+static char uv_tty_default_inverse = 0;
+
void uv_console_init() {
InitializeCriticalSection(&uv_tty_output_lock);
@@ -106,9 +116,26 @@ int uv_tty_init(uv_loop_t* loop, uv_tty_t* tty, uv_file fd, int readable) {
HANDLE handle;
CONSOLE_SCREEN_BUFFER_INFO screen_buffer_info;
- handle = (HANDLE) _get_osfhandle(fd);
- if (handle == INVALID_HANDLE_VALUE) {
+ handle = (HANDLE) uv__get_osfhandle(fd);
+ if (handle == INVALID_HANDLE_VALUE)
return UV_EBADF;
+
+ if (fd <= 2) {
+ /* In order to avoid closing a stdio file descriptor 0-2, duplicate the
+ * underlying OS handle and forget about the original fd.
+ * We could also opt to use the original OS handle and just never close it,
+ * but then there would be no reliable way to cancel pending read operations
+ * upon close.
+ */
+ if (!DuplicateHandle(INVALID_HANDLE_VALUE,
+ handle,
+ INVALID_HANDLE_VALUE,
+ &handle,
+ 0,
+ FALSE,
+ DUPLICATE_SAME_ACCESS))
+ return uv_translate_sys_error(GetLastError());
+ fd = -1;
}
if (!readable) {
@@ -126,6 +153,9 @@ int uv_tty_init(uv_loop_t* loop, uv_tty_t* tty, uv_file fd, int readable) {
/* is received. */
uv_tty_output_handle = handle;
+ /* Remember the original console text attributes. */
+ uv_tty_capture_initial_style(&screen_buffer_info);
+
uv_tty_update_virtual_window(&screen_buffer_info);
LeaveCriticalSection(&uv_tty_output_lock);
@@ -136,6 +166,7 @@ int uv_tty_init(uv_loop_t* loop, uv_tty_t* tty, uv_file fd, int readable) {
uv_connection_init((uv_stream_t*) tty);
tty->handle = handle;
+ tty->u.fd = fd;
tty->reqs_pending = 0;
tty->flags |= UV_HANDLE_BOUND;
@@ -170,6 +201,62 @@ int uv_tty_init(uv_loop_t* loop, uv_tty_t* tty, uv_file fd, int readable) {
}
+/* Set the default console text attributes based on how the console was
+ * configured when libuv started.
+ */
+static void uv_tty_capture_initial_style(CONSOLE_SCREEN_BUFFER_INFO* info) {
+ static int style_captured = 0;
+
+ /* Only do this once.
+ /* Assumption: Caller has acquired uv_tty_output_lock. */
+ if (style_captured)
+ return;
+
+ /* Save raw win32 attributes. */
+ uv_tty_default_text_attributes = info->wAttributes;
+
+ /* Convert black text on black background to use white text. */
+ if (uv_tty_default_text_attributes == 0)
+ uv_tty_default_text_attributes = 7;
+
+ /* Convert Win32 attributes to ANSI colors. */
+ uv_tty_default_fg_color = 0;
+ uv_tty_default_bg_color = 0;
+ uv_tty_default_fg_bright = 0;
+ uv_tty_default_bg_bright = 0;
+ uv_tty_default_inverse = 0;
+
+ if (uv_tty_default_text_attributes & FOREGROUND_RED)
+ uv_tty_default_fg_color |= 1;
+
+ if (uv_tty_default_text_attributes & FOREGROUND_GREEN)
+ uv_tty_default_fg_color |= 2;
+
+ if (uv_tty_default_text_attributes & FOREGROUND_BLUE)
+ uv_tty_default_fg_color |= 4;
+
+ if (uv_tty_default_text_attributes & BACKGROUND_RED)
+ uv_tty_default_bg_color |= 1;
+
+ if (uv_tty_default_text_attributes & BACKGROUND_GREEN)
+ uv_tty_default_bg_color |= 2;
+
+ if (uv_tty_default_text_attributes & BACKGROUND_BLUE)
+ uv_tty_default_bg_color |= 4;
+
+ if (uv_tty_default_text_attributes & FOREGROUND_INTENSITY)
+ uv_tty_default_fg_bright = 1;
+
+ if (uv_tty_default_text_attributes & BACKGROUND_INTENSITY)
+ uv_tty_default_bg_bright = 1;
+
+ if (uv_tty_default_text_attributes & COMMON_LVB_REVERSE_VIDEO)
+ uv_tty_default_inverse = 1;
+
+ style_captured = 1;
+}
+
+
int uv_tty_set_mode(uv_tty_t* tty, uv_tty_mode_t mode) {
DWORD flags;
unsigned char was_reading;
@@ -1004,7 +1091,7 @@ static int uv_tty_move_caret(uv_tty_t* handle, int x, unsigned char x_relative,
static int uv_tty_reset(uv_tty_t* handle, DWORD* error) {
const COORD origin = {0, 0};
- const WORD char_attrs = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE;
+ const WORD char_attrs = uv_tty_default_text_attributes;
CONSOLE_SCREEN_BUFFER_INFO info;
DWORD count, written;
@@ -1160,11 +1247,11 @@ static int uv_tty_set_style(uv_tty_t* handle, DWORD* error) {
if (argc == 0) {
/* Reset mode */
- fg_color = 7;
- bg_color = 0;
- fg_bright = 0;
- bg_bright = 0;
- inverse = 0;
+ fg_color = uv_tty_default_fg_color;
+ bg_color = uv_tty_default_bg_color;
+ fg_bright = uv_tty_default_fg_bright;
+ bg_bright = uv_tty_default_bg_bright;
+ inverse = uv_tty_default_inverse;
}
for (i = 0; i < argc; i++) {
@@ -1172,11 +1259,11 @@ static int uv_tty_set_style(uv_tty_t* handle, DWORD* error) {
if (arg == 0) {
/* Reset mode */
- fg_color = 7;
- bg_color = 0;
- fg_bright = 0;
- bg_bright = 0;
- inverse = 0;
+ fg_color = uv_tty_default_fg_color;
+ bg_color = uv_tty_default_bg_color;
+ fg_bright = uv_tty_default_fg_bright;
+ bg_bright = uv_tty_default_bg_bright;
+ inverse = uv_tty_default_inverse;
} else if (arg == 1) {
/* Foreground bright on */
@@ -1213,8 +1300,8 @@ static int uv_tty_set_style(uv_tty_t* handle, DWORD* error) {
} else if (arg == 39) {
/* Default text color */
- fg_color = 7;
- fg_bright = 0;
+ fg_color = uv_tty_default_fg_color;
+ fg_bright = uv_tty_default_fg_bright;
} else if (arg >= 40 && arg <= 47) {
/* Set background color */
@@ -1222,8 +1309,8 @@ static int uv_tty_set_style(uv_tty_t* handle, DWORD* error) {
} else if (arg == 49) {
/* Default background color */
- bg_color = 0;
- bg_bright = 0;
+ bg_color = uv_tty_default_bg_color;
+ bg_bright = uv_tty_default_bg_bright;
} else if (arg >= 90 && arg <= 97) {
/* Set bold foreground color */
@@ -1411,6 +1498,11 @@ static int uv_tty_write_bufs(uv_tty_t* handle,
} \
} while (0)
+#define ENSURE_BUFFER_SPACE(wchars_needed) \
+ if (wchars_needed > ARRAY_SIZE(utf16_buf) - utf16_buf_used) { \
+ FLUSH_TEXT(); \
+ }
+
/* Cache for fast access */
unsigned char utf8_bytes_left = handle->tty.wr.utf8_bytes_left;
unsigned int utf8_codepoint = handle->tty.wr.utf8_codepoint;
@@ -1794,32 +1886,29 @@ static int uv_tty_write_bufs(uv_tty_t* handle,
}
if (utf8_codepoint == 0x0a || utf8_codepoint == 0x0d) {
- /* EOL conversion - emit \r\n, when we see either \r or \n. */
- /* If a \n immediately follows a \r or vice versa, ignore it. */
- if (previous_eol == 0 || utf8_codepoint == previous_eol) {
- /* If there's no room in the utf16 buf, flush it first. */
- if (2 > ARRAY_SIZE(utf16_buf) - utf16_buf_used) {
- uv_tty_emit_text(handle, utf16_buf, utf16_buf_used, error);
- utf16_buf_used = 0;
- }
+ /* EOL conversion - emit \r\n when we see \n. */
+ if (utf8_codepoint == 0x0a && previous_eol != 0x0d) {
+ /* \n was not preceded by \r; print \r\n. */
+ ENSURE_BUFFER_SPACE(2);
utf16_buf[utf16_buf_used++] = L'\r';
utf16_buf[utf16_buf_used++] = L'\n';
- previous_eol = (char) utf8_codepoint;
+ } else if (utf8_codepoint == 0x0d && previous_eol == 0x0a) {
+ /* \n was followed by \r; do not print the \r, since */
+ /* the source was either \r\n\r (so the second \r is */
+ /* redundant) or was \n\r (so the \n was processed */
+ /* by the last case and an \r automatically inserted). */
} else {
- /* Ignore this newline, but don't ignore later ones. */
- previous_eol = 0;
+ /* \r without \n; print \r as-is. */
+ ENSURE_BUFFER_SPACE(1);
+ utf16_buf[utf16_buf_used++] = (WCHAR) utf8_codepoint;
}
+ previous_eol = (char) utf8_codepoint;
+
} else if (utf8_codepoint <= 0xffff) {
/* Encode character into utf-16 buffer. */
-
- /* If there's no room in the utf16 buf, flush it first. */
- if (1 > ARRAY_SIZE(utf16_buf) - utf16_buf_used) {
- uv_tty_emit_text(handle, utf16_buf, utf16_buf_used, error);
- utf16_buf_used = 0;
- }
-
+ ENSURE_BUFFER_SPACE(1);
utf16_buf[utf16_buf_used++] = (WCHAR) utf8_codepoint;
previous_eol = 0;
}
@@ -1916,11 +2005,16 @@ void uv_process_tty_write_req(uv_loop_t* loop, uv_tty_t* handle,
void uv_tty_close(uv_tty_t* handle) {
- CloseHandle(handle->handle);
+ assert(handle->u.fd == -1 || handle->u.fd > 2);
+ if (handle->u.fd == -1)
+ CloseHandle(handle->handle);
+ else
+ close(handle->u.fd);
if (handle->flags & UV_HANDLE_READING)
uv_tty_read_stop(handle);
+ handle->u.fd = -1;
handle->handle = INVALID_HANDLE_VALUE;
handle->flags &= ~(UV_HANDLE_READABLE | UV_HANDLE_WRITABLE);
uv__handle_closing(handle);
diff --git a/deps/uv/src/win/udp.c b/deps/uv/src/win/udp.c
index 197e5d828f2ad4..24792ec067ef2f 100644
--- a/deps/uv/src/win/udp.c
+++ b/deps/uv/src/win/udp.c
@@ -42,7 +42,7 @@ int uv_udp_getsockname(const uv_udp_t* handle,
int* namelen) {
int result;
- if (!(handle->flags & UV_HANDLE_BOUND)) {
+ if (handle->socket == INVALID_SOCKET) {
return UV_EINVAL;
}
@@ -61,7 +61,8 @@ static int uv_udp_set_socket(uv_loop_t* loop, uv_udp_t* handle, SOCKET socket,
WSAPROTOCOL_INFOW info;
int opt_len;
- assert(handle->socket == INVALID_SOCKET);
+ if (handle->socket != INVALID_SOCKET)
+ return UV_EBUSY;
/* Set the socket to nonblocking mode */
if (ioctlsocket(socket, FIONBIO, &yes) == SOCKET_ERROR) {
@@ -122,9 +123,18 @@ static int uv_udp_set_socket(uv_loop_t* loop, uv_udp_t* handle, SOCKET socket,
}
-int uv_udp_init(uv_loop_t* loop, uv_udp_t* handle) {
- uv__handle_init(loop, (uv_handle_t*) handle, UV_UDP);
+int uv_udp_init_ex(uv_loop_t* loop, uv_udp_t* handle, unsigned int flags) {
+ int domain;
+ /* Use the lower 8 bits for the domain */
+ domain = flags & 0xFF;
+ if (domain != AF_INET && domain != AF_INET6 && domain != AF_UNSPEC)
+ return UV_EINVAL;
+
+ if (flags & ~0xFF)
+ return UV_EINVAL;
+
+ uv__handle_init(loop, (uv_handle_t*) handle, UV_UDP);
handle->socket = INVALID_SOCKET;
handle->reqs_pending = 0;
handle->activecnt = 0;
@@ -132,15 +142,42 @@ int uv_udp_init(uv_loop_t* loop, uv_udp_t* handle) {
handle->func_wsarecvfrom = WSARecvFrom;
handle->send_queue_size = 0;
handle->send_queue_count = 0;
-
uv_req_init(loop, (uv_req_t*) &(handle->recv_req));
handle->recv_req.type = UV_UDP_RECV;
handle->recv_req.data = handle;
+ /* If anything fails beyond this point we need to remove the handle from
+ * the handle queue, since it was added by uv__handle_init.
+ */
+
+ if (domain != AF_UNSPEC) {
+ SOCKET sock;
+ DWORD err;
+
+ sock = socket(domain, SOCK_DGRAM, 0);
+ if (sock == INVALID_SOCKET) {
+ err = WSAGetLastError();
+ QUEUE_REMOVE(&handle->handle_queue);
+ return uv_translate_sys_error(err);
+ }
+
+ err = uv_udp_set_socket(handle->loop, handle, sock, domain);
+ if (err) {
+ closesocket(sock);
+ QUEUE_REMOVE(&handle->handle_queue);
+ return uv_translate_sys_error(err);
+ }
+ }
+
return 0;
}
+int uv_udp_init(uv_loop_t* loop, uv_udp_t* handle) {
+ return uv_udp_init_ex(loop, handle, AF_UNSPEC);
+}
+
+
void uv_udp_close(uv_loop_t* loop, uv_udp_t* handle) {
uv_udp_recv_stop(handle);
closesocket(handle->socket);
@@ -190,25 +227,24 @@ static int uv_udp_maybe_bind(uv_udp_t* handle,
closesocket(sock);
return err;
}
+ }
- if (flags & UV_UDP_REUSEADDR) {
- DWORD yes = 1;
- /* Set SO_REUSEADDR on the socket. */
- if (setsockopt(sock,
- SOL_SOCKET,
- SO_REUSEADDR,
- (char*) &yes,
- sizeof yes) == SOCKET_ERROR) {
- err = WSAGetLastError();
- closesocket(sock);
- return err;
- }
+ if (flags & UV_UDP_REUSEADDR) {
+ DWORD yes = 1;
+ /* Set SO_REUSEADDR on the socket. */
+ if (setsockopt(handle->socket,
+ SOL_SOCKET,
+ SO_REUSEADDR,
+ (char*) &yes,
+ sizeof yes) == SOCKET_ERROR) {
+ err = WSAGetLastError();
+ return err;
}
-
- if (addr->sa_family == AF_INET6)
- handle->flags |= UV_HANDLE_IPV6;
}
+ if (addr->sa_family == AF_INET6)
+ handle->flags |= UV_HANDLE_IPV6;
+
if (addr->sa_family == AF_INET6 && !(flags & UV_UDP_IPV6ONLY)) {
/* On windows IPV6ONLY is on by default. */
/* If the user doesn't specify it libuv turns it off. */
diff --git a/deps/uv/test/benchmark-fs-stat.c b/deps/uv/test/benchmark-fs-stat.c
index 5c87de004368ec..32d2589586c1b0 100644
--- a/deps/uv/test/benchmark-fs-stat.c
+++ b/deps/uv/test/benchmark-fs-stat.c
@@ -31,7 +31,7 @@
#define sync_stat(req, path) \
do { \
- uv_fs_stat(uv_default_loop(), (req), (path), NULL); \
+ uv_fs_stat(NULL, (req), (path), NULL); \
uv_fs_req_cleanup((req)); \
} \
while (0)
diff --git a/deps/uv/test/echo-server.c b/deps/uv/test/echo-server.c
index f223981c261f2b..bfed67675dd46a 100644
--- a/deps/uv/test/echo-server.c
+++ b/deps/uv/test/echo-server.c
@@ -304,7 +304,7 @@ static int pipe_echo_start(char* pipeName) {
#ifndef _WIN32
{
uv_fs_t req;
- uv_fs_unlink(uv_default_loop(), &req, pipeName, NULL);
+ uv_fs_unlink(NULL, &req, pipeName, NULL);
uv_fs_req_cleanup(&req);
}
#endif
diff --git a/deps/uv/test/run-tests.c b/deps/uv/test/run-tests.c
index 1f458745327398..b4be01f6f95927 100644
--- a/deps/uv/test/run-tests.c
+++ b/deps/uv/test/run-tests.c
@@ -41,6 +41,7 @@ int ipc_helper_tcp_connection(void);
int ipc_send_recv_helper(void);
int ipc_helper_bind_twice(void);
int stdio_over_pipes_helper(void);
+int spawn_stdin_stdout(void);
static int maybe_run_test(int argc, char **argv);
@@ -172,5 +173,9 @@ static int maybe_run_test(int argc, char **argv) {
}
#endif /* !_WIN32 */
+ if (strcmp(argv[1], "spawn_helper9") == 0) {
+ return spawn_stdin_stdout();
+ }
+
return run_test(argv[1], 0, 1);
}
diff --git a/deps/uv/test/runner-unix.c b/deps/uv/test/runner-unix.c
index 5da720fad43a9d..2264d1e89d5fae 100644
--- a/deps/uv/test/runner-unix.c
+++ b/deps/uv/test/runner-unix.c
@@ -37,6 +37,7 @@
#include
#include
+#include
#include
@@ -173,6 +174,9 @@ int process_wait(process_info_t* vec, int n, int timeout) {
process_info_t* p;
dowait_args args;
pthread_t tid;
+ pthread_attr_t attr;
+ unsigned int elapsed_ms;
+ struct timeval timebase;
struct timeval tv;
fd_set fds;
@@ -199,20 +203,54 @@ int process_wait(process_info_t* vec, int n, int timeout) {
return -1;
}
- r = pthread_create(&tid, NULL, dowait, &args);
+ if (pthread_attr_init(&attr))
+ abort();
+
+ if (pthread_attr_setstacksize(&attr, 256 * 1024))
+ abort();
+
+ r = pthread_create(&tid, &attr, dowait, &args);
+
+ if (pthread_attr_destroy(&attr))
+ abort();
+
if (r) {
perror("pthread_create()");
retval = -1;
goto terminate;
}
- tv.tv_sec = timeout / 1000;
- tv.tv_usec = 0;
+ if (gettimeofday(&timebase, NULL))
+ abort();
+
+ tv = timebase;
+ for (;;) {
+ /* Check that gettimeofday() doesn't jump back in time. */
+ assert(tv.tv_sec == timebase.tv_sec ||
+ (tv.tv_sec == timebase.tv_sec && tv.tv_usec >= timebase.tv_usec));
+
+ elapsed_ms =
+ (tv.tv_sec - timebase.tv_sec) * 1000 +
+ (tv.tv_usec / 1000) -
+ (timebase.tv_usec / 1000);
+
+ r = 0; /* Timeout. */
+ if (elapsed_ms >= (unsigned) timeout)
+ break;
- FD_ZERO(&fds);
- FD_SET(args.pipe[0], &fds);
+ tv.tv_sec = (timeout - elapsed_ms) / 1000;
+ tv.tv_usec = (timeout - elapsed_ms) % 1000 * 1000;
- r = select(args.pipe[0] + 1, &fds, NULL, NULL, &tv);
+ FD_ZERO(&fds);
+ FD_SET(args.pipe[0], &fds);
+
+ r = select(args.pipe[0] + 1, &fds, NULL, NULL, &tv);
+ if (!(r == -1 && errno == EINTR))
+ break;
+
+ if (gettimeofday(&tv, NULL))
+ abort();
+ }
if (r == -1) {
perror("select()");
@@ -229,15 +267,11 @@ int process_wait(process_info_t* vec, int n, int timeout) {
kill(p->pid, SIGTERM);
}
retval = -2;
-
- /* Wait for thread to finish. */
- r = pthread_join(tid, NULL);
- if (r) {
- perror("pthread_join");
- retval = -1;
- }
}
+ if (pthread_join(tid, NULL))
+ abort();
+
terminate:
close(args.pipe[0]);
close(args.pipe[1]);
diff --git a/deps/uv/test/task.h b/deps/uv/test/task.h
index e06a50e21341b7..e736763802f610 100644
--- a/deps/uv/test/task.h
+++ b/deps/uv/test/task.h
@@ -179,8 +179,8 @@ enum test_status {
#include
-/* Define inline for MSVC */
-# ifdef _MSC_VER
+/* Define inline for MSVC<2015 */
+# if defined(_MSC_VER) && _MSC_VER < 1900
# define inline __inline
# endif
diff --git a/deps/uv/test/test-fs-event.c b/deps/uv/test/test-fs-event.c
index 0a2ba331455d5a..a0908ce575bd42 100644
--- a/deps/uv/test/test-fs-event.c
+++ b/deps/uv/test/test-fs-event.c
@@ -37,11 +37,15 @@
static uv_fs_event_t fs_event;
static const char file_prefix[] = "fsevent-";
+static const int fs_event_file_count = 16;
+#if defined(__APPLE__) || defined(_WIN32)
+static const char file_prefix_in_subdir[] = "subdir";
+#endif
static uv_timer_t timer;
static int timer_cb_called;
static int close_cb_called;
-static const int fs_event_file_count = 128;
static int fs_event_created;
+static int fs_event_removed;
static int fs_event_cb_called;
#if defined(PATH_MAX)
static char fs_event_filename[PATH_MAX];
@@ -50,48 +54,45 @@ static char fs_event_filename[1024];
#endif /* defined(PATH_MAX) */
static int timer_cb_touch_called;
-static void fs_event_unlink_files(uv_timer_t* handle);
-
-static void create_dir(uv_loop_t* loop, const char* name) {
+static void create_dir(const char* name) {
int r;
uv_fs_t req;
- r = uv_fs_mkdir(loop, &req, name, 0755, NULL);
+ r = uv_fs_mkdir(NULL, &req, name, 0755, NULL);
ASSERT(r == 0 || r == UV_EEXIST);
uv_fs_req_cleanup(&req);
}
-static void create_file(uv_loop_t* loop, const char* name) {
+static void create_file(const char* name) {
int r;
uv_file file;
uv_fs_t req;
- r = uv_fs_open(loop, &req, name, O_WRONLY | O_CREAT,
- S_IWUSR | S_IRUSR, NULL);
+ r = uv_fs_open(NULL, &req, name, O_WRONLY | O_CREAT, S_IWUSR | S_IRUSR, NULL);
ASSERT(r >= 0);
file = r;
uv_fs_req_cleanup(&req);
- r = uv_fs_close(loop, &req, file, NULL);
+ r = uv_fs_close(NULL, &req, file, NULL);
ASSERT(r == 0);
uv_fs_req_cleanup(&req);
}
-static void touch_file(uv_loop_t* loop, const char* name) {
+static void touch_file(const char* name) {
int r;
uv_file file;
uv_fs_t req;
uv_buf_t buf;
- r = uv_fs_open(loop, &req, name, O_RDWR, 0, NULL);
+ r = uv_fs_open(NULL, &req, name, O_RDWR, 0, NULL);
ASSERT(r >= 0);
file = r;
uv_fs_req_cleanup(&req);
buf = uv_buf_init("foo", 4);
- r = uv_fs_write(loop, &req, file, &buf, 1, -1, NULL);
+ r = uv_fs_write(NULL, &req, file, &buf, 1, -1, NULL);
ASSERT(r >= 0);
uv_fs_req_cleanup(&req);
- r = uv_fs_close(loop, &req, file, NULL);
+ r = uv_fs_close(NULL, &req, file, NULL);
ASSERT(r == 0);
uv_fs_req_cleanup(&req);
}
@@ -119,6 +120,56 @@ static void fs_event_cb_dir(uv_fs_event_t* handle, const char* filename,
uv_close((uv_handle_t*)handle, close_cb);
}
+static const char* fs_event_get_filename(int i) {
+ snprintf(fs_event_filename,
+ sizeof(fs_event_filename),
+ "watch_dir/%s%d",
+ file_prefix,
+ i);
+ return fs_event_filename;
+}
+
+static void fs_event_create_files(uv_timer_t* handle) {
+ /* Make sure we're not attempting to create files we do not intend */
+ ASSERT(fs_event_created < fs_event_file_count);
+
+ /* Create the file */
+ create_file(fs_event_get_filename(fs_event_created));
+
+ if (++fs_event_created < fs_event_file_count) {
+ /* Create another file on a different event loop tick. We do it this way
+ * to avoid fs events coalescing into one fs event. */
+ ASSERT(0 == uv_timer_start(&timer, fs_event_create_files, 1, 0));
+ }
+}
+
+static void fs_event_unlink_files(uv_timer_t* handle) {
+ int r;
+ int i;
+
+ /* NOTE: handle might be NULL if invoked not as timer callback */
+ if (handle == NULL) {
+ /* Unlink all files */
+ for (i = 0; i < 16; i++) {
+ r = remove(fs_event_get_filename(i));
+ if (handle != NULL)
+ ASSERT(r == 0);
+ }
+ } else {
+ /* Make sure we're not attempting to remove files we do not intend */
+ ASSERT(fs_event_removed < fs_event_file_count);
+
+ /* Remove the file */
+ ASSERT(0 == remove(fs_event_get_filename(fs_event_removed)));
+
+ if (++fs_event_removed < fs_event_file_count) {
+ /* Remove another file on a different event loop tick. We do it this way
+ * to avoid fs events coalescing into one fs event. */
+ ASSERT(0 == uv_timer_start(&timer, fs_event_unlink_files, 1, 0));
+ }
+ }
+}
+
static void fs_event_cb_dir_multi_file(uv_fs_event_t* handle,
const char* filename,
int events,
@@ -126,61 +177,92 @@ static void fs_event_cb_dir_multi_file(uv_fs_event_t* handle,
fs_event_cb_called++;
ASSERT(handle == &fs_event);
ASSERT(status == 0);
- ASSERT(events == UV_RENAME);
+ ASSERT(events == UV_CHANGE || UV_RENAME);
ASSERT(filename == NULL ||
strncmp(filename, file_prefix, sizeof(file_prefix) - 1) == 0);
- /* Stop watching dir when received events about all files:
- * both create and close events */
- if (fs_event_cb_called == 2 * fs_event_file_count) {
- ASSERT(0 == uv_fs_event_stop(handle));
+ if (fs_event_created + fs_event_removed == fs_event_file_count) {
+ /* Once we've processed all create events, delete all files */
+ ASSERT(0 == uv_timer_start(&timer, fs_event_unlink_files, 1, 0));
+ } else if (fs_event_cb_called == 2 * fs_event_file_count) {
+ /* Once we've processed all create and delete events, stop watching */
+ uv_close((uv_handle_t*) &timer, close_cb);
uv_close((uv_handle_t*) handle, close_cb);
}
}
-static const char* fs_event_get_filename(int i) {
+#if defined(__APPLE__) || defined(_WIN32)
+static const char* fs_event_get_filename_in_subdir(int i) {
snprintf(fs_event_filename,
sizeof(fs_event_filename),
- "watch_dir/%s%d",
+ "watch_dir/subdir/%s%d",
file_prefix,
i);
return fs_event_filename;
}
-static void fs_event_create_files(uv_timer_t* handle) {
- int i;
-
- /* Already created all files */
- if (fs_event_created == fs_event_file_count) {
- uv_close((uv_handle_t*) &timer, close_cb);
- return;
- }
+static void fs_event_create_files_in_subdir(uv_timer_t* handle) {
+ /* Make sure we're not attempting to create files we do not intend */
+ ASSERT(fs_event_created < fs_event_file_count);
- /* Create all files */
- for (i = 0; i < 16; i++, fs_event_created++)
- create_file(handle->loop, fs_event_get_filename(i));
+ /* Create the file */
+ create_file(fs_event_get_filename_in_subdir(fs_event_created));
- /* And unlink them */
- ASSERT(0 == uv_timer_start(&timer, fs_event_unlink_files, 50, 0));
+ if (++fs_event_created < fs_event_file_count) {
+ /* Create another file on a different event loop tick. We do it this way
+ * to avoid fs events coalescing into one fs event. */
+ ASSERT(0 == uv_timer_start(&timer, fs_event_create_files_in_subdir, 1, 0));
+ }
}
-void fs_event_unlink_files(uv_timer_t* handle) {
+static void fs_event_unlink_files_in_subdir(uv_timer_t* handle) {
int r;
int i;
/* NOTE: handle might be NULL if invoked not as timer callback */
+ if (handle == NULL) {
+ /* Unlink all files */
+ for (i = 0; i < 16; i++) {
+ r = remove(fs_event_get_filename_in_subdir(i));
+ if (handle != NULL)
+ ASSERT(r == 0);
+ }
+ } else {
+ /* Make sure we're not attempting to remove files we do not intend */
+ ASSERT(fs_event_removed < fs_event_file_count);
+
+ /* Remove the file */
+ ASSERT(0 == remove(fs_event_get_filename_in_subdir(fs_event_removed)));
- /* Unlink all files */
- for (i = 0; i < 16; i++) {
- r = remove(fs_event_get_filename(i));
- if (handle != NULL)
- ASSERT(r == 0);
+ if (++fs_event_removed < fs_event_file_count) {
+ /* Remove another file on a different event loop tick. We do it this way
+ * to avoid fs events coalescing into one fs event. */
+ ASSERT(0 == uv_timer_start(&timer, fs_event_unlink_files_in_subdir, 1, 0));
+ }
}
+}
+
+static void fs_event_cb_dir_multi_file_in_subdir(uv_fs_event_t* handle,
+ const char* filename,
+ int events,
+ int status) {
+ fs_event_cb_called++;
+ ASSERT(handle == &fs_event);
+ ASSERT(status == 0);
+ ASSERT(events == UV_CHANGE || UV_RENAME);
+ ASSERT(filename == NULL ||
+ strncmp(filename, file_prefix_in_subdir, sizeof(file_prefix_in_subdir) - 1) == 0);
- /* And create them again */
- if (handle != NULL)
- ASSERT(0 == uv_timer_start(&timer, fs_event_create_files, 50, 0));
+ if (fs_event_created + fs_event_removed == fs_event_file_count) {
+ /* Once we've processed all create events, delete all files */
+ ASSERT(0 == uv_timer_start(&timer, fs_event_unlink_files_in_subdir, 1, 0));
+ } else if (fs_event_cb_called == 2 * fs_event_file_count) {
+ /* Once we've processed all create and delete events, stop watching */
+ uv_close((uv_handle_t*) &timer, close_cb);
+ uv_close((uv_handle_t*) handle, close_cb);
+ }
}
+#endif
static void fs_event_cb_file(uv_fs_event_t* handle, const char* filename,
int events, int status) {
@@ -226,16 +308,16 @@ static void timer_cb_file(uv_timer_t* handle) {
++timer_cb_called;
if (timer_cb_called == 1) {
- touch_file(handle->loop, "watch_dir/file1");
+ touch_file("watch_dir/file1");
} else {
- touch_file(handle->loop, "watch_dir/file2");
+ touch_file("watch_dir/file2");
uv_close((uv_handle_t*)handle, close_cb);
}
}
static void timer_cb_touch(uv_timer_t* timer) {
uv_close((uv_handle_t*)timer, NULL);
- touch_file(timer->loop, "watch_file");
+ touch_file("watch_file");
timer_cb_touch_called++;
}
@@ -255,7 +337,7 @@ TEST_IMPL(fs_event_watch_dir) {
remove("watch_dir/file2");
remove("watch_dir/file1");
remove("watch_dir/");
- create_dir(loop, "watch_dir");
+ create_dir("watch_dir");
r = uv_fs_event_init(loop, &fs_event);
ASSERT(r == 0);
@@ -268,8 +350,7 @@ TEST_IMPL(fs_event_watch_dir) {
uv_run(loop, UV_RUN_DEFAULT);
- ASSERT(fs_event_cb_called == 2 * fs_event_file_count);
- ASSERT(fs_event_created == fs_event_file_count);
+ ASSERT(fs_event_cb_called == fs_event_created + fs_event_removed);
ASSERT(close_cb_called == 2);
/* Cleanup */
@@ -282,6 +363,50 @@ TEST_IMPL(fs_event_watch_dir) {
return 0;
}
+TEST_IMPL(fs_event_watch_dir_recursive) {
+#if defined(__APPLE__) || defined(_WIN32)
+ uv_loop_t* loop;
+ int r;
+
+ /* Setup */
+ loop = uv_default_loop();
+ fs_event_unlink_files(NULL);
+ remove("watch_dir/file2");
+ remove("watch_dir/file1");
+ remove("watch_dir/subdir");
+ remove("watch_dir/");
+ create_dir("watch_dir");
+ create_dir("watch_dir/subdir");
+
+ r = uv_fs_event_init(loop, &fs_event);
+ ASSERT(r == 0);
+ r = uv_fs_event_start(&fs_event, fs_event_cb_dir_multi_file_in_subdir, "watch_dir", UV_FS_EVENT_RECURSIVE);
+ ASSERT(r == 0);
+ r = uv_timer_init(loop, &timer);
+ ASSERT(r == 0);
+ r = uv_timer_start(&timer, fs_event_create_files_in_subdir, 100, 0);
+ ASSERT(r == 0);
+
+ uv_run(loop, UV_RUN_DEFAULT);
+
+ ASSERT(fs_event_cb_called == fs_event_created + fs_event_removed);
+ ASSERT(close_cb_called == 2);
+
+ /* Cleanup */
+ fs_event_unlink_files_in_subdir(NULL);
+ remove("watch_dir/file2");
+ remove("watch_dir/file1");
+ remove("watch_dir/subdir");
+ remove("watch_dir/");
+
+ MAKE_VALGRIND_HAPPY();
+ return 0;
+#else
+ RETURN_SKIP("Recursive directory watching not supported on this platform.");
+#endif
+}
+
+
TEST_IMPL(fs_event_watch_file) {
uv_loop_t* loop = uv_default_loop();
int r;
@@ -290,9 +415,9 @@ TEST_IMPL(fs_event_watch_file) {
remove("watch_dir/file2");
remove("watch_dir/file1");
remove("watch_dir/");
- create_dir(loop, "watch_dir");
- create_file(loop, "watch_dir/file1");
- create_file(loop, "watch_dir/file2");
+ create_dir("watch_dir");
+ create_file("watch_dir/file1");
+ create_file("watch_dir/file2");
r = uv_fs_event_init(loop, &fs_event);
ASSERT(r == 0);
@@ -348,7 +473,7 @@ TEST_IMPL(fs_event_watch_file_current_dir) {
/* Setup */
remove("watch_file");
- create_file(loop, "watch_file");
+ create_file("watch_file");
r = uv_fs_event_init(loop, &fs_event);
ASSERT(r == 0);
@@ -389,8 +514,8 @@ TEST_IMPL(fs_event_no_callback_after_close) {
/* Setup */
remove("watch_dir/file1");
remove("watch_dir/");
- create_dir(loop, "watch_dir");
- create_file(loop, "watch_dir/file1");
+ create_dir("watch_dir");
+ create_file("watch_dir/file1");
r = uv_fs_event_init(loop, &fs_event);
ASSERT(r == 0);
@@ -402,7 +527,7 @@ TEST_IMPL(fs_event_no_callback_after_close) {
uv_close((uv_handle_t*)&fs_event, close_cb);
- touch_file(loop, "watch_dir/file1");
+ touch_file("watch_dir/file1");
uv_run(loop, UV_RUN_DEFAULT);
ASSERT(fs_event_cb_called == 0);
@@ -423,8 +548,8 @@ TEST_IMPL(fs_event_no_callback_on_close) {
/* Setup */
remove("watch_dir/file1");
remove("watch_dir/");
- create_dir(loop, "watch_dir");
- create_file(loop, "watch_dir/file1");
+ create_dir("watch_dir");
+ create_file("watch_dir/file1");
r = uv_fs_event_init(loop, &fs_event);
ASSERT(r == 0);
@@ -497,8 +622,8 @@ TEST_IMPL(fs_event_close_with_pending_event) {
loop = uv_default_loop();
- create_dir(loop, "watch_dir");
- create_file(loop, "watch_dir/file");
+ create_dir("watch_dir");
+ create_file("watch_dir/file");
r = uv_fs_event_init(loop, &fs_event);
ASSERT(r == 0);
@@ -506,7 +631,7 @@ TEST_IMPL(fs_event_close_with_pending_event) {
ASSERT(r == 0);
/* Generate an fs event. */
- touch_file(loop, "watch_dir/file");
+ touch_file("watch_dir/file");
uv_close((uv_handle_t*)&fs_event, close_cb);
@@ -554,12 +679,12 @@ TEST_IMPL(fs_event_close_in_callback) {
loop = uv_default_loop();
- create_dir(loop, "watch_dir");
- create_file(loop, "watch_dir/file1");
- create_file(loop, "watch_dir/file2");
- create_file(loop, "watch_dir/file3");
- create_file(loop, "watch_dir/file4");
- create_file(loop, "watch_dir/file5");
+ create_dir("watch_dir");
+ create_file("watch_dir/file1");
+ create_file("watch_dir/file2");
+ create_file("watch_dir/file3");
+ create_file("watch_dir/file4");
+ create_file("watch_dir/file5");
r = uv_fs_event_init(loop, &fs_event);
ASSERT(r == 0);
@@ -567,11 +692,11 @@ TEST_IMPL(fs_event_close_in_callback) {
ASSERT(r == 0);
/* Generate a couple of fs events. */
- touch_file(loop, "watch_dir/file1");
- touch_file(loop, "watch_dir/file2");
- touch_file(loop, "watch_dir/file3");
- touch_file(loop, "watch_dir/file4");
- touch_file(loop, "watch_dir/file5");
+ touch_file("watch_dir/file1");
+ touch_file("watch_dir/file2");
+ touch_file("watch_dir/file3");
+ touch_file("watch_dir/file4");
+ touch_file("watch_dir/file5");
uv_run(loop, UV_RUN_DEFAULT);
@@ -600,7 +725,7 @@ TEST_IMPL(fs_event_start_and_close) {
loop = uv_default_loop();
- create_dir(loop, "watch_dir");
+ create_dir("watch_dir");
r = uv_fs_event_init(loop, &fs_event1);
ASSERT(r == 0);
@@ -630,7 +755,7 @@ TEST_IMPL(fs_event_getpath) {
char buf[1024];
size_t len;
- create_dir(loop, "watch_dir");
+ create_dir("watch_dir");
r = uv_fs_event_init(loop, &fs_event);
ASSERT(r == 0);
@@ -692,7 +817,7 @@ TEST_IMPL(fs_event_error_reporting) {
TEST_FILE_LIMIT(ARRAY_SIZE(loops) * 3);
remove("watch_dir/");
- create_dir(uv_default_loop(), "watch_dir");
+ create_dir("watch_dir");
/* Create a lot of loops, and start FSEventStream in each of them.
* Eventually, this should create enough streams to make FSEventStreamStart()
diff --git a/deps/uv/test/test-fs.c b/deps/uv/test/test-fs.c
index a0600b30797dd9..90572ca6147150 100644
--- a/deps/uv/test/test-fs.c
+++ b/deps/uv/test/test-fs.c
@@ -119,7 +119,7 @@ static void check_permission(const char* filename, unsigned int mode) {
uv_fs_t req;
uv_stat_t* s;
- r = uv_fs_stat(uv_default_loop(), &req, filename, NULL);
+ r = uv_fs_stat(NULL, &req, filename, NULL);
ASSERT(r == 0);
ASSERT(req.result == 0);
@@ -402,7 +402,7 @@ static void check_mkdtemp_result(uv_fs_t* req) {
check_permission(req->path, 0700);
/* Check if req->path is actually a directory */
- r = uv_fs_stat(uv_default_loop(), &stat_req, req->path, NULL);
+ r = uv_fs_stat(NULL, &stat_req, req->path, NULL);
ASSERT(r == 0);
ASSERT(((uv_stat_t*)stat_req.ptr)->st_mode & S_IFDIR);
uv_fs_req_cleanup(&stat_req);
@@ -427,6 +427,28 @@ static void rmdir_cb(uv_fs_t* req) {
}
+static void assert_is_file_type(uv_dirent_t dent) {
+#ifdef HAVE_DIRENT_TYPES
+ /*
+ * For Apple and Windows, we know getdents is expected to work but for other
+ * environments, the filesystem dictates whether or not getdents supports
+ * returning the file type.
+ *
+ * See:
+ * http://man7.org/linux/man-pages/man2/getdents.2.html
+ * https://github.com/libuv/libuv/issues/501
+ */
+ #if defined(__APPLE__) || defined(_WIN32)
+ ASSERT(dent.type == UV_DIRENT_FILE);
+ #else
+ ASSERT(dent.type == UV_DIRENT_FILE || dent.type == UV_DIRENT_UNKNOWN);
+ #endif
+#else
+ ASSERT(dent.type == UV_DIRENT_UNKNOWN);
+#endif
+}
+
+
static void scandir_cb(uv_fs_t* req) {
uv_dirent_t dent;
ASSERT(req == &scandir_req);
@@ -436,11 +458,7 @@ static void scandir_cb(uv_fs_t* req) {
while (UV_EOF != uv_fs_scandir_next(req, &dent)) {
ASSERT(strcmp(dent.name, "file1") == 0 || strcmp(dent.name, "file2") == 0);
-#ifdef HAVE_DIRENT_TYPES
- ASSERT(dent.type == UV_DIRENT_FILE);
-#else
- ASSERT(dent.type == UV_DIRENT_UNKNOWN);
-#endif
+ assert_is_file_type(dent);
}
scandir_cb_count++;
ASSERT(req->path);
@@ -521,7 +539,7 @@ TEST_IMPL(fs_file_noent) {
loop = uv_default_loop();
- r = uv_fs_open(loop, &req, "does_not_exist", O_RDONLY, 0, NULL);
+ r = uv_fs_open(NULL, &req, "does_not_exist", O_RDONLY, 0, NULL);
ASSERT(r == UV_ENOENT);
ASSERT(req.result == UV_ENOENT);
uv_fs_req_cleanup(&req);
@@ -549,7 +567,7 @@ TEST_IMPL(fs_file_nametoolong) {
memset(name, 'a', TOO_LONG_NAME_LENGTH);
name[TOO_LONG_NAME_LENGTH] = 0;
- r = uv_fs_open(loop, &req, name, O_RDONLY, 0, NULL);
+ r = uv_fs_open(NULL, &req, name, O_RDONLY, 0, NULL);
ASSERT(r == UV_ENAMETOOLONG);
ASSERT(req.result == UV_ENAMETOOLONG);
uv_fs_req_cleanup(&req);
@@ -572,7 +590,7 @@ TEST_IMPL(fs_file_loop) {
loop = uv_default_loop();
unlink("test_symlink");
- r = uv_fs_symlink(loop, &req, "test_symlink", "test_symlink", 0, NULL);
+ r = uv_fs_symlink(NULL, &req, "test_symlink", "test_symlink", 0, NULL);
#ifdef _WIN32
/*
* Windows XP and Server 2003 don't support symlinks; we'll get UV_ENOTSUP.
@@ -585,7 +603,7 @@ TEST_IMPL(fs_file_loop) {
ASSERT(r == 0);
uv_fs_req_cleanup(&req);
- r = uv_fs_open(loop, &req, "test_symlink", O_RDONLY, 0, NULL);
+ r = uv_fs_open(NULL, &req, "test_symlink", O_RDONLY, 0, NULL);
ASSERT(r == UV_ELOOP);
ASSERT(req.result == UV_ELOOP);
uv_fs_req_cleanup(&req);
@@ -730,63 +748,62 @@ TEST_IMPL(fs_file_sync) {
uv_fs_req_cleanup(&open_req1);
iov = uv_buf_init(test_buf, sizeof(test_buf));
- r = uv_fs_write(loop, &write_req, open_req1.result, &iov, 1, -1, NULL);
+ r = uv_fs_write(NULL, &write_req, open_req1.result, &iov, 1, -1, NULL);
ASSERT(r >= 0);
ASSERT(write_req.result >= 0);
uv_fs_req_cleanup(&write_req);
- r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
ASSERT(r == 0);
ASSERT(close_req.result == 0);
uv_fs_req_cleanup(&close_req);
- r = uv_fs_open(loop, &open_req1, "test_file", O_RDWR, 0, NULL);
+ r = uv_fs_open(NULL, &open_req1, "test_file", O_RDWR, 0, NULL);
ASSERT(r >= 0);
ASSERT(open_req1.result >= 0);
uv_fs_req_cleanup(&open_req1);
iov = uv_buf_init(buf, sizeof(buf));
- r = uv_fs_read(loop, &read_req, open_req1.result, &iov, 1, -1, NULL);
+ r = uv_fs_read(NULL, &read_req, open_req1.result, &iov, 1, -1, NULL);
ASSERT(r >= 0);
ASSERT(read_req.result >= 0);
ASSERT(strcmp(buf, test_buf) == 0);
uv_fs_req_cleanup(&read_req);
- r = uv_fs_ftruncate(loop, &ftruncate_req, open_req1.result, 7, NULL);
+ r = uv_fs_ftruncate(NULL, &ftruncate_req, open_req1.result, 7, NULL);
ASSERT(r == 0);
ASSERT(ftruncate_req.result == 0);
uv_fs_req_cleanup(&ftruncate_req);
- r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
ASSERT(r == 0);
ASSERT(close_req.result == 0);
uv_fs_req_cleanup(&close_req);
- r = uv_fs_rename(loop, &rename_req, "test_file", "test_file2", NULL);
+ r = uv_fs_rename(NULL, &rename_req, "test_file", "test_file2", NULL);
ASSERT(r == 0);
ASSERT(rename_req.result == 0);
uv_fs_req_cleanup(&rename_req);
- r = uv_fs_open(loop, &open_req1, "test_file2", O_RDONLY, 0, NULL);
+ r = uv_fs_open(NULL, &open_req1, "test_file2", O_RDONLY, 0, NULL);
ASSERT(r >= 0);
ASSERT(open_req1.result >= 0);
uv_fs_req_cleanup(&open_req1);
memset(buf, 0, sizeof(buf));
iov = uv_buf_init(buf, sizeof(buf));
- r = uv_fs_read(loop, &read_req, open_req1.result, &iov, 1, -1,
- NULL);
+ r = uv_fs_read(NULL, &read_req, open_req1.result, &iov, 1, -1, NULL);
ASSERT(r >= 0);
ASSERT(read_req.result >= 0);
ASSERT(strcmp(buf, "test-bu") == 0);
uv_fs_req_cleanup(&read_req);
- r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
ASSERT(r == 0);
ASSERT(close_req.result == 0);
uv_fs_req_cleanup(&close_req);
- r = uv_fs_unlink(loop, &unlink_req, "test_file2", NULL);
+ r = uv_fs_unlink(NULL, &unlink_req, "test_file2", NULL);
ASSERT(r == 0);
ASSERT(unlink_req.result == 0);
uv_fs_req_cleanup(&unlink_req);
@@ -808,19 +825,19 @@ TEST_IMPL(fs_file_write_null_buffer) {
loop = uv_default_loop();
- r = uv_fs_open(loop, &open_req1, "test_file", O_WRONLY | O_CREAT,
+ r = uv_fs_open(NULL, &open_req1, "test_file", O_WRONLY | O_CREAT,
S_IWUSR | S_IRUSR, NULL);
ASSERT(r >= 0);
ASSERT(open_req1.result >= 0);
uv_fs_req_cleanup(&open_req1);
iov = uv_buf_init(NULL, 0);
- r = uv_fs_write(loop, &write_req, open_req1.result, &iov, 1, -1, NULL);
+ r = uv_fs_write(NULL, &write_req, open_req1.result, &iov, 1, -1, NULL);
ASSERT(r == 0);
ASSERT(write_req.result == 0);
uv_fs_req_cleanup(&write_req);
- r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
ASSERT(r == 0);
ASSERT(close_req.result == 0);
uv_fs_req_cleanup(&close_req);
@@ -850,19 +867,19 @@ TEST_IMPL(fs_async_dir) {
ASSERT(mkdir_cb_count == 1);
/* Create 2 files synchronously. */
- r = uv_fs_open(loop, &open_req1, "test_dir/file1", O_WRONLY | O_CREAT,
+ r = uv_fs_open(NULL, &open_req1, "test_dir/file1", O_WRONLY | O_CREAT,
S_IWUSR | S_IRUSR, NULL);
ASSERT(r >= 0);
uv_fs_req_cleanup(&open_req1);
- r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
ASSERT(r == 0);
uv_fs_req_cleanup(&close_req);
- r = uv_fs_open(loop, &open_req1, "test_dir/file2", O_WRONLY | O_CREAT,
+ r = uv_fs_open(NULL, &open_req1, "test_dir/file2", O_WRONLY | O_CREAT,
S_IWUSR | S_IRUSR, NULL);
ASSERT(r >= 0);
uv_fs_req_cleanup(&open_req1);
- r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
ASSERT(r == 0);
uv_fs_req_cleanup(&close_req);
@@ -873,17 +890,13 @@ TEST_IMPL(fs_async_dir) {
ASSERT(scandir_cb_count == 1);
/* sync uv_fs_scandir */
- r = uv_fs_scandir(loop, &scandir_req, "test_dir", 0, NULL);
+ r = uv_fs_scandir(NULL, &scandir_req, "test_dir", 0, NULL);
ASSERT(r == 2);
ASSERT(scandir_req.result == 2);
ASSERT(scandir_req.ptr);
while (UV_EOF != uv_fs_scandir_next(&scandir_req, &dent)) {
ASSERT(strcmp(dent.name, "file1") == 0 || strcmp(dent.name, "file2") == 0);
-#ifdef HAVE_DIRENT_TYPES
- ASSERT(dent.type == UV_DIRENT_FILE);
-#else
- ASSERT(dent.type == UV_DIRENT_UNKNOWN);
-#endif
+ assert_is_file_type(dent);
}
uv_fs_req_cleanup(&scandir_req);
ASSERT(!scandir_req.ptr);
@@ -957,12 +970,12 @@ TEST_IMPL(fs_async_sendfile) {
ASSERT(r == 0);
/* Test starts here. */
- r = uv_fs_open(loop, &open_req1, "test_file", O_RDWR, 0, NULL);
+ r = uv_fs_open(NULL, &open_req1, "test_file", O_RDWR, 0, NULL);
ASSERT(r >= 0);
ASSERT(open_req1.result >= 0);
uv_fs_req_cleanup(&open_req1);
- r = uv_fs_open(loop, &open_req2, "test_file2", O_WRONLY | O_CREAT,
+ r = uv_fs_open(NULL, &open_req2, "test_file2", O_WRONLY | O_CREAT,
S_IWUSR | S_IRUSR, NULL);
ASSERT(r >= 0);
ASSERT(open_req2.result >= 0);
@@ -975,10 +988,10 @@ TEST_IMPL(fs_async_sendfile) {
ASSERT(sendfile_cb_count == 1);
- r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
ASSERT(r == 0);
uv_fs_req_cleanup(&close_req);
- r = uv_fs_close(loop, &close_req, open_req2.result, NULL);
+ r = uv_fs_close(NULL, &close_req, open_req2.result, NULL);
ASSERT(r == 0);
uv_fs_req_cleanup(&close_req);
@@ -1008,7 +1021,7 @@ TEST_IMPL(fs_mkdtemp) {
ASSERT(mkdtemp_cb_count == 1);
/* sync mkdtemp */
- r = uv_fs_mkdtemp(loop, &mkdtemp_req2, path_template, NULL);
+ r = uv_fs_mkdtemp(NULL, &mkdtemp_req2, path_template, NULL);
ASSERT(r == 0);
check_mkdtemp_result(&mkdtemp_req2);
@@ -1040,7 +1053,7 @@ TEST_IMPL(fs_fstat) {
loop = uv_default_loop();
- r = uv_fs_open(loop, &req, "test_file", O_RDWR | O_CREAT,
+ r = uv_fs_open(NULL, &req, "test_file", O_RDWR | O_CREAT,
S_IWUSR | S_IRUSR, NULL);
ASSERT(r >= 0);
ASSERT(req.result >= 0);
@@ -1048,12 +1061,12 @@ TEST_IMPL(fs_fstat) {
uv_fs_req_cleanup(&req);
iov = uv_buf_init(test_buf, sizeof(test_buf));
- r = uv_fs_write(loop, &req, file, &iov, 1, -1, NULL);
+ r = uv_fs_write(NULL, &req, file, &iov, 1, -1, NULL);
ASSERT(r == sizeof(test_buf));
ASSERT(req.result == sizeof(test_buf));
uv_fs_req_cleanup(&req);
- r = uv_fs_fstat(loop, &req, file, NULL);
+ r = uv_fs_fstat(NULL, &req, file, NULL);
ASSERT(r == 0);
ASSERT(req.result == 0);
s = req.ptr;
@@ -1130,7 +1143,7 @@ TEST_IMPL(fs_fstat) {
ASSERT(fstat_cb_count == 1);
- r = uv_fs_close(loop, &req, file, NULL);
+ r = uv_fs_close(NULL, &req, file, NULL);
ASSERT(r == 0);
ASSERT(req.result == 0);
uv_fs_req_cleanup(&req);
@@ -1161,7 +1174,7 @@ TEST_IMPL(fs_access) {
loop = uv_default_loop();
/* File should not exist */
- r = uv_fs_access(loop, &req, "test_file", F_OK, NULL);
+ r = uv_fs_access(NULL, &req, "test_file", F_OK, NULL);
ASSERT(r < 0);
ASSERT(req.result < 0);
uv_fs_req_cleanup(&req);
@@ -1174,7 +1187,7 @@ TEST_IMPL(fs_access) {
access_cb_count = 0; /* reset for the next test */
/* Create file */
- r = uv_fs_open(loop, &req, "test_file", O_RDWR | O_CREAT,
+ r = uv_fs_open(NULL, &req, "test_file", O_RDWR | O_CREAT,
S_IWUSR | S_IRUSR, NULL);
ASSERT(r >= 0);
ASSERT(req.result >= 0);
@@ -1182,7 +1195,7 @@ TEST_IMPL(fs_access) {
uv_fs_req_cleanup(&req);
/* File should exist */
- r = uv_fs_access(loop, &req, "test_file", F_OK, NULL);
+ r = uv_fs_access(NULL, &req, "test_file", F_OK, NULL);
ASSERT(r == 0);
ASSERT(req.result == 0);
uv_fs_req_cleanup(&req);
@@ -1195,17 +1208,17 @@ TEST_IMPL(fs_access) {
access_cb_count = 0; /* reset for the next test */
/* Close file */
- r = uv_fs_close(loop, &req, file, NULL);
+ r = uv_fs_close(NULL, &req, file, NULL);
ASSERT(r == 0);
ASSERT(req.result == 0);
uv_fs_req_cleanup(&req);
/* Directory access */
- r = uv_fs_mkdir(loop, &req, "test_dir", 0777, NULL);
+ r = uv_fs_mkdir(NULL, &req, "test_dir", 0777, NULL);
ASSERT(r == 0);
uv_fs_req_cleanup(&req);
- r = uv_fs_access(loop, &req, "test_dir", W_OK, NULL);
+ r = uv_fs_access(NULL, &req, "test_dir", W_OK, NULL);
ASSERT(r == 0);
ASSERT(req.result == 0);
uv_fs_req_cleanup(&req);
@@ -1235,7 +1248,7 @@ TEST_IMPL(fs_chmod) {
loop = uv_default_loop();
- r = uv_fs_open(loop, &req, "test_file", O_RDWR | O_CREAT,
+ r = uv_fs_open(NULL, &req, "test_file", O_RDWR | O_CREAT,
S_IWUSR | S_IRUSR, NULL);
ASSERT(r >= 0);
ASSERT(req.result >= 0);
@@ -1243,14 +1256,14 @@ TEST_IMPL(fs_chmod) {
uv_fs_req_cleanup(&req);
iov = uv_buf_init(test_buf, sizeof(test_buf));
- r = uv_fs_write(loop, &req, file, &iov, 1, -1, NULL);
+ r = uv_fs_write(NULL, &req, file, &iov, 1, -1, NULL);
ASSERT(r == sizeof(test_buf));
ASSERT(req.result == sizeof(test_buf));
uv_fs_req_cleanup(&req);
#ifndef _WIN32
/* Make the file write-only */
- r = uv_fs_chmod(loop, &req, "test_file", 0200, NULL);
+ r = uv_fs_chmod(NULL, &req, "test_file", 0200, NULL);
ASSERT(r == 0);
ASSERT(req.result == 0);
uv_fs_req_cleanup(&req);
@@ -1259,7 +1272,7 @@ TEST_IMPL(fs_chmod) {
#endif
/* Make the file read-only */
- r = uv_fs_chmod(loop, &req, "test_file", 0400, NULL);
+ r = uv_fs_chmod(NULL, &req, "test_file", 0400, NULL);
ASSERT(r == 0);
ASSERT(req.result == 0);
uv_fs_req_cleanup(&req);
@@ -1267,7 +1280,7 @@ TEST_IMPL(fs_chmod) {
check_permission("test_file", 0400);
/* Make the file read+write with sync uv_fs_fchmod */
- r = uv_fs_fchmod(loop, &req, file, 0600, NULL);
+ r = uv_fs_fchmod(NULL, &req, file, 0600, NULL);
ASSERT(r == 0);
ASSERT(req.result == 0);
uv_fs_req_cleanup(&req);
@@ -1333,7 +1346,7 @@ TEST_IMPL(fs_unlink_readonly) {
loop = uv_default_loop();
- r = uv_fs_open(loop,
+ r = uv_fs_open(NULL,
&req,
"test_file",
O_RDWR | O_CREAT,
@@ -1345,7 +1358,7 @@ TEST_IMPL(fs_unlink_readonly) {
uv_fs_req_cleanup(&req);
iov = uv_buf_init(test_buf, sizeof(test_buf));
- r = uv_fs_write(loop, &req, file, &iov, 1, -1, NULL);
+ r = uv_fs_write(NULL, &req, file, &iov, 1, -1, NULL);
ASSERT(r == sizeof(test_buf));
ASSERT(req.result == sizeof(test_buf));
uv_fs_req_cleanup(&req);
@@ -1353,7 +1366,7 @@ TEST_IMPL(fs_unlink_readonly) {
close(file);
/* Make the file read-only */
- r = uv_fs_chmod(loop, &req, "test_file", 0400, NULL);
+ r = uv_fs_chmod(NULL, &req, "test_file", 0400, NULL);
ASSERT(r == 0);
ASSERT(req.result == 0);
uv_fs_req_cleanup(&req);
@@ -1361,7 +1374,7 @@ TEST_IMPL(fs_unlink_readonly) {
check_permission("test_file", 0400);
/* Try to unlink the file */
- r = uv_fs_unlink(loop, &req, "test_file", NULL);
+ r = uv_fs_unlink(NULL, &req, "test_file", NULL);
ASSERT(r == 0);
ASSERT(req.result == 0);
uv_fs_req_cleanup(&req);
@@ -1373,7 +1386,7 @@ TEST_IMPL(fs_unlink_readonly) {
uv_run(loop, UV_RUN_DEFAULT);
/* Cleanup. */
- uv_fs_chmod(loop, &req, "test_file", 0600, NULL);
+ uv_fs_chmod(NULL, &req, "test_file", 0600, NULL);
uv_fs_req_cleanup(&req);
unlink("test_file");
@@ -1392,7 +1405,7 @@ TEST_IMPL(fs_chown) {
loop = uv_default_loop();
- r = uv_fs_open(loop, &req, "test_file", O_RDWR | O_CREAT,
+ r = uv_fs_open(NULL, &req, "test_file", O_RDWR | O_CREAT,
S_IWUSR | S_IRUSR, NULL);
ASSERT(r >= 0);
ASSERT(req.result >= 0);
@@ -1400,13 +1413,13 @@ TEST_IMPL(fs_chown) {
uv_fs_req_cleanup(&req);
/* sync chown */
- r = uv_fs_chown(loop, &req, "test_file", -1, -1, NULL);
+ r = uv_fs_chown(NULL, &req, "test_file", -1, -1, NULL);
ASSERT(r == 0);
ASSERT(req.result == 0);
uv_fs_req_cleanup(&req);
/* sync fchown */
- r = uv_fs_fchown(loop, &req, file, -1, -1, NULL);
+ r = uv_fs_fchown(NULL, &req, file, -1, -1, NULL);
ASSERT(r == 0);
ASSERT(req.result == 0);
uv_fs_req_cleanup(&req);
@@ -1458,7 +1471,7 @@ TEST_IMPL(fs_link) {
loop = uv_default_loop();
- r = uv_fs_open(loop, &req, "test_file", O_RDWR | O_CREAT,
+ r = uv_fs_open(NULL, &req, "test_file", O_RDWR | O_CREAT,
S_IWUSR | S_IRUSR, NULL);
ASSERT(r >= 0);
ASSERT(req.result >= 0);
@@ -1466,7 +1479,7 @@ TEST_IMPL(fs_link) {
uv_fs_req_cleanup(&req);
iov = uv_buf_init(test_buf, sizeof(test_buf));
- r = uv_fs_write(loop, &req, file, &iov, 1, -1, NULL);
+ r = uv_fs_write(NULL, &req, file, &iov, 1, -1, NULL);
ASSERT(r == sizeof(test_buf));
ASSERT(req.result == sizeof(test_buf));
uv_fs_req_cleanup(&req);
@@ -1474,12 +1487,12 @@ TEST_IMPL(fs_link) {
close(file);
/* sync link */
- r = uv_fs_link(loop, &req, "test_file", "test_file_link", NULL);
+ r = uv_fs_link(NULL, &req, "test_file", "test_file_link", NULL);
ASSERT(r == 0);
ASSERT(req.result == 0);
uv_fs_req_cleanup(&req);
- r = uv_fs_open(loop, &req, "test_file_link", O_RDWR, 0, NULL);
+ r = uv_fs_open(NULL, &req, "test_file_link", O_RDWR, 0, NULL);
ASSERT(r >= 0);
ASSERT(req.result >= 0);
link = req.result;
@@ -1487,7 +1500,7 @@ TEST_IMPL(fs_link) {
memset(buf, 0, sizeof(buf));
iov = uv_buf_init(buf, sizeof(buf));
- r = uv_fs_read(loop, &req, link, &iov, 1, 0, NULL);
+ r = uv_fs_read(NULL, &req, link, &iov, 1, 0, NULL);
ASSERT(r >= 0);
ASSERT(req.result >= 0);
ASSERT(strcmp(buf, test_buf) == 0);
@@ -1500,7 +1513,7 @@ TEST_IMPL(fs_link) {
uv_run(loop, UV_RUN_DEFAULT);
ASSERT(link_cb_count == 1);
- r = uv_fs_open(loop, &req, "test_file_link2", O_RDWR, 0, NULL);
+ r = uv_fs_open(NULL, &req, "test_file_link2", O_RDWR, 0, NULL);
ASSERT(r >= 0);
ASSERT(req.result >= 0);
link = req.result;
@@ -1508,7 +1521,7 @@ TEST_IMPL(fs_link) {
memset(buf, 0, sizeof(buf));
iov = uv_buf_init(buf, sizeof(buf));
- r = uv_fs_read(loop, &req, link, &iov, 1, 0, NULL);
+ r = uv_fs_read(NULL, &req, link, &iov, 1, 0, NULL);
ASSERT(r >= 0);
ASSERT(req.result >= 0);
ASSERT(strcmp(buf, test_buf) == 0);
@@ -1542,7 +1555,7 @@ TEST_IMPL(fs_readlink) {
ASSERT(req.result == UV_ENOENT);
uv_fs_req_cleanup(&req);
- ASSERT(UV_ENOENT == uv_fs_readlink(loop, &req, "no_such_file", NULL));
+ ASSERT(UV_ENOENT == uv_fs_readlink(NULL, &req, "no_such_file", NULL));
ASSERT(req.ptr == NULL);
ASSERT(req.result == UV_ENOENT);
uv_fs_req_cleanup(&req);
@@ -1567,7 +1580,7 @@ TEST_IMPL(fs_symlink) {
loop = uv_default_loop();
- r = uv_fs_open(loop, &req, "test_file", O_RDWR | O_CREAT,
+ r = uv_fs_open(NULL, &req, "test_file", O_RDWR | O_CREAT,
S_IWUSR | S_IRUSR, NULL);
ASSERT(r >= 0);
ASSERT(req.result >= 0);
@@ -1575,7 +1588,7 @@ TEST_IMPL(fs_symlink) {
uv_fs_req_cleanup(&req);
iov = uv_buf_init(test_buf, sizeof(test_buf));
- r = uv_fs_write(loop, &req, file, &iov, 1, -1, NULL);
+ r = uv_fs_write(NULL, &req, file, &iov, 1, -1, NULL);
ASSERT(r == sizeof(test_buf));
ASSERT(req.result == sizeof(test_buf));
uv_fs_req_cleanup(&req);
@@ -1583,7 +1596,7 @@ TEST_IMPL(fs_symlink) {
close(file);
/* sync symlink */
- r = uv_fs_symlink(loop, &req, "test_file", "test_file_symlink", 0, NULL);
+ r = uv_fs_symlink(NULL, &req, "test_file", "test_file_symlink", 0, NULL);
#ifdef _WIN32
if (r < 0) {
if (r == UV_ENOTSUP) {
@@ -1605,7 +1618,7 @@ TEST_IMPL(fs_symlink) {
ASSERT(req.result == 0);
uv_fs_req_cleanup(&req);
- r = uv_fs_open(loop, &req, "test_file_symlink", O_RDWR, 0, NULL);
+ r = uv_fs_open(NULL, &req, "test_file_symlink", O_RDWR, 0, NULL);
ASSERT(r >= 0);
ASSERT(req.result >= 0);
link = req.result;
@@ -1613,14 +1626,14 @@ TEST_IMPL(fs_symlink) {
memset(buf, 0, sizeof(buf));
iov = uv_buf_init(buf, sizeof(buf));
- r = uv_fs_read(loop, &req, link, &iov, 1, 0, NULL);
+ r = uv_fs_read(NULL, &req, link, &iov, 1, 0, NULL);
ASSERT(r >= 0);
ASSERT(req.result >= 0);
ASSERT(strcmp(buf, test_buf) == 0);
close(link);
- r = uv_fs_symlink(loop,
+ r = uv_fs_symlink(NULL,
&req,
"test_file_symlink",
"test_file_symlink_symlink",
@@ -1629,7 +1642,7 @@ TEST_IMPL(fs_symlink) {
ASSERT(r == 0);
uv_fs_req_cleanup(&req);
- r = uv_fs_readlink(loop, &req, "test_file_symlink_symlink", NULL);
+ r = uv_fs_readlink(NULL, &req, "test_file_symlink_symlink", NULL);
ASSERT(r == 0);
ASSERT(strcmp(req.ptr, "test_file_symlink") == 0);
uv_fs_req_cleanup(&req);
@@ -1645,7 +1658,7 @@ TEST_IMPL(fs_symlink) {
uv_run(loop, UV_RUN_DEFAULT);
ASSERT(symlink_cb_count == 1);
- r = uv_fs_open(loop, &req, "test_file_symlink2", O_RDWR, 0, NULL);
+ r = uv_fs_open(NULL, &req, "test_file_symlink2", O_RDWR, 0, NULL);
ASSERT(r >= 0);
ASSERT(req.result >= 0);
link = req.result;
@@ -1653,14 +1666,14 @@ TEST_IMPL(fs_symlink) {
memset(buf, 0, sizeof(buf));
iov = uv_buf_init(buf, sizeof(buf));
- r = uv_fs_read(loop, &req, link, &iov, 1, 0, NULL);
+ r = uv_fs_read(NULL, &req, link, &iov, 1, 0, NULL);
ASSERT(r >= 0);
ASSERT(req.result >= 0);
ASSERT(strcmp(buf, test_buf) == 0);
close(link);
- r = uv_fs_symlink(loop,
+ r = uv_fs_symlink(NULL,
&req,
"test_file_symlink2",
"test_file_symlink2_symlink",
@@ -1706,7 +1719,7 @@ TEST_IMPL(fs_symlink_dir) {
loop = uv_default_loop();
- uv_fs_mkdir(loop, &req, "test_dir", 0777, NULL);
+ uv_fs_mkdir(NULL, &req, "test_dir", 0777, NULL);
uv_fs_req_cleanup(&req);
#ifdef _WIN32
@@ -1723,18 +1736,19 @@ TEST_IMPL(fs_symlink_dir) {
test_dir = "test_dir";
#endif
- r = uv_fs_symlink(loop, &req, test_dir, "test_dir_symlink",
+ r = uv_fs_symlink(NULL, &req, test_dir, "test_dir_symlink",
UV_FS_SYMLINK_JUNCTION, NULL);
+ fprintf(stderr, "r == %i\n", r);
ASSERT(r == 0);
ASSERT(req.result == 0);
uv_fs_req_cleanup(&req);
- r = uv_fs_stat(loop, &req, "test_dir_symlink", NULL);
+ r = uv_fs_stat(NULL, &req, "test_dir_symlink", NULL);
ASSERT(r == 0);
ASSERT(((uv_stat_t*)req.ptr)->st_mode & S_IFDIR);
uv_fs_req_cleanup(&req);
- r = uv_fs_lstat(loop, &req, "test_dir_symlink", NULL);
+ r = uv_fs_lstat(NULL, &req, "test_dir_symlink", NULL);
ASSERT(r == 0);
ASSERT(((uv_stat_t*)req.ptr)->st_mode & S_IFLNK);
#ifdef _WIN32
@@ -1744,7 +1758,7 @@ TEST_IMPL(fs_symlink_dir) {
#endif
uv_fs_req_cleanup(&req);
- r = uv_fs_readlink(loop, &req, "test_dir_symlink", NULL);
+ r = uv_fs_readlink(NULL, &req, "test_dir_symlink", NULL);
ASSERT(r == 0);
#ifdef _WIN32
ASSERT(strcmp(req.ptr, test_dir + 4) == 0);
@@ -1753,57 +1767,49 @@ TEST_IMPL(fs_symlink_dir) {
#endif
uv_fs_req_cleanup(&req);
- r = uv_fs_open(loop, &open_req1, "test_dir/file1", O_WRONLY | O_CREAT,
+ r = uv_fs_open(NULL, &open_req1, "test_dir/file1", O_WRONLY | O_CREAT,
S_IWUSR | S_IRUSR, NULL);
ASSERT(r >= 0);
uv_fs_req_cleanup(&open_req1);
- r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
ASSERT(r == 0);
uv_fs_req_cleanup(&close_req);
- r = uv_fs_open(loop, &open_req1, "test_dir/file2", O_WRONLY | O_CREAT,
+ r = uv_fs_open(NULL, &open_req1, "test_dir/file2", O_WRONLY | O_CREAT,
S_IWUSR | S_IRUSR, NULL);
ASSERT(r >= 0);
uv_fs_req_cleanup(&open_req1);
- r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
ASSERT(r == 0);
uv_fs_req_cleanup(&close_req);
- r = uv_fs_scandir(loop, &scandir_req, "test_dir_symlink", 0, NULL);
+ r = uv_fs_scandir(NULL, &scandir_req, "test_dir_symlink", 0, NULL);
ASSERT(r == 2);
ASSERT(scandir_req.result == 2);
ASSERT(scandir_req.ptr);
while (UV_EOF != uv_fs_scandir_next(&scandir_req, &dent)) {
ASSERT(strcmp(dent.name, "file1") == 0 || strcmp(dent.name, "file2") == 0);
-#ifdef HAVE_DIRENT_TYPES
- ASSERT(dent.type == UV_DIRENT_FILE);
-#else
- ASSERT(dent.type == UV_DIRENT_UNKNOWN);
-#endif
+ assert_is_file_type(dent);
}
uv_fs_req_cleanup(&scandir_req);
ASSERT(!scandir_req.ptr);
/* unlink will remove the directory symlink */
- r = uv_fs_unlink(loop, &req, "test_dir_symlink", NULL);
+ r = uv_fs_unlink(NULL, &req, "test_dir_symlink", NULL);
ASSERT(r == 0);
uv_fs_req_cleanup(&req);
- r = uv_fs_scandir(loop, &scandir_req, "test_dir_symlink", 0, NULL);
+ r = uv_fs_scandir(NULL, &scandir_req, "test_dir_symlink", 0, NULL);
ASSERT(r == UV_ENOENT);
uv_fs_req_cleanup(&scandir_req);
- r = uv_fs_scandir(loop, &scandir_req, "test_dir", 0, NULL);
+ r = uv_fs_scandir(NULL, &scandir_req, "test_dir", 0, NULL);
ASSERT(r == 2);
ASSERT(scandir_req.result == 2);
ASSERT(scandir_req.ptr);
while (UV_EOF != uv_fs_scandir_next(&scandir_req, &dent)) {
ASSERT(strcmp(dent.name, "file1") == 0 || strcmp(dent.name, "file2") == 0);
-#ifdef HAVE_DIRENT_TYPES
- ASSERT(dent.type == UV_DIRENT_FILE);
-#else
- ASSERT(dent.type == UV_DIRENT_UNKNOWN);
-#endif
+ assert_is_file_type(dent);
}
uv_fs_req_cleanup(&scandir_req);
ASSERT(!scandir_req.ptr);
@@ -1830,8 +1836,7 @@ TEST_IMPL(fs_utime) {
/* Setup. */
loop = uv_default_loop();
unlink(path);
- r = uv_fs_open(loop, &req, path, O_RDWR | O_CREAT,
- S_IWUSR | S_IRUSR, NULL);
+ r = uv_fs_open(NULL, &req, path, O_RDWR | O_CREAT, S_IWUSR | S_IRUSR, NULL);
ASSERT(r >= 0);
ASSERT(req.result >= 0);
uv_fs_req_cleanup(&req);
@@ -1839,12 +1844,12 @@ TEST_IMPL(fs_utime) {
atime = mtime = 400497753; /* 1982-09-10 11:22:33 */
- r = uv_fs_utime(loop, &req, path, atime, mtime, NULL);
+ r = uv_fs_utime(NULL, &req, path, atime, mtime, NULL);
ASSERT(r == 0);
ASSERT(req.result == 0);
uv_fs_req_cleanup(&req);
- r = uv_fs_stat(loop, &req, path, NULL);
+ r = uv_fs_stat(NULL, &req, path, NULL);
ASSERT(r == 0);
ASSERT(req.result == 0);
check_utime(path, atime, mtime);
@@ -1875,26 +1880,26 @@ TEST_IMPL(fs_stat_root) {
int r;
uv_loop_t* loop = uv_default_loop();
- r = uv_fs_stat(loop, &stat_req, "\\", NULL);
+ r = uv_fs_stat(NULL, &stat_req, "\\", NULL);
ASSERT(r == 0);
- r = uv_fs_stat(loop, &stat_req, "..\\..\\..\\..\\..\\..\\..", NULL);
+ r = uv_fs_stat(NULL, &stat_req, "..\\..\\..\\..\\..\\..\\..", NULL);
ASSERT(r == 0);
- r = uv_fs_stat(loop, &stat_req, "..", NULL);
+ r = uv_fs_stat(NULL, &stat_req, "..", NULL);
ASSERT(r == 0);
- r = uv_fs_stat(loop, &stat_req, "..\\", NULL);
+ r = uv_fs_stat(NULL, &stat_req, "..\\", NULL);
ASSERT(r == 0);
/* stats the current directory on c: */
- r = uv_fs_stat(loop, &stat_req, "c:", NULL);
+ r = uv_fs_stat(NULL, &stat_req, "c:", NULL);
ASSERT(r == 0);
- r = uv_fs_stat(loop, &stat_req, "c:\\", NULL);
+ r = uv_fs_stat(NULL, &stat_req, "c:\\", NULL);
ASSERT(r == 0);
- r = uv_fs_stat(loop, &stat_req, "\\\\?\\C:\\", NULL);
+ r = uv_fs_stat(NULL, &stat_req, "\\\\?\\C:\\", NULL);
ASSERT(r == 0);
MAKE_VALGRIND_HAPPY();
@@ -1915,8 +1920,7 @@ TEST_IMPL(fs_futime) {
/* Setup. */
loop = uv_default_loop();
unlink(path);
- r = uv_fs_open(loop, &req, path, O_RDWR | O_CREAT,
- S_IWUSR | S_IRUSR, NULL);
+ r = uv_fs_open(NULL, &req, path, O_RDWR | O_CREAT, S_IWUSR | S_IRUSR, NULL);
ASSERT(r >= 0);
ASSERT(req.result >= 0);
uv_fs_req_cleanup(&req);
@@ -1924,18 +1928,18 @@ TEST_IMPL(fs_futime) {
atime = mtime = 400497753; /* 1982-09-10 11:22:33 */
- r = uv_fs_open(loop, &req, path, O_RDWR, 0, NULL);
+ r = uv_fs_open(NULL, &req, path, O_RDWR, 0, NULL);
ASSERT(r >= 0);
ASSERT(req.result >= 0);
file = req.result; /* FIXME probably not how it's supposed to be used */
uv_fs_req_cleanup(&req);
- r = uv_fs_futime(loop, &req, file, atime, mtime, NULL);
+ r = uv_fs_futime(NULL, &req, file, atime, mtime, NULL);
ASSERT(r == 0);
ASSERT(req.result == 0);
uv_fs_req_cleanup(&req);
- r = uv_fs_stat(loop, &req, path, NULL);
+ r = uv_fs_stat(NULL, &req, path, NULL);
ASSERT(r == 0);
ASSERT(req.result == 0);
check_utime(path, atime, mtime);
@@ -1968,7 +1972,7 @@ TEST_IMPL(fs_stat_missing_path) {
loop = uv_default_loop();
- r = uv_fs_stat(loop, &req, "non_existent_file", NULL);
+ r = uv_fs_stat(NULL, &req, "non_existent_file", NULL);
ASSERT(r == UV_ENOENT);
ASSERT(req.result == UV_ENOENT);
uv_fs_req_cleanup(&req);
@@ -1987,13 +1991,13 @@ TEST_IMPL(fs_scandir_empty_dir) {
path = "./empty_dir/";
loop = uv_default_loop();
- uv_fs_mkdir(loop, &req, path, 0777, NULL);
+ uv_fs_mkdir(NULL, &req, path, 0777, NULL);
uv_fs_req_cleanup(&req);
/* Fill the req to ensure that required fields are cleaned up */
memset(&req, 0xdb, sizeof(req));
- r = uv_fs_scandir(loop, &req, path, 0, NULL);
+ r = uv_fs_scandir(NULL, &req, path, 0, NULL);
ASSERT(r == 0);
ASSERT(req.result == 0);
ASSERT(req.ptr == NULL);
@@ -2007,7 +2011,7 @@ TEST_IMPL(fs_scandir_empty_dir) {
uv_run(loop, UV_RUN_DEFAULT);
ASSERT(scandir_cb_count == 1);
- uv_fs_rmdir(loop, &req, path, NULL);
+ uv_fs_rmdir(NULL, &req, path, NULL);
uv_fs_req_cleanup(&req);
MAKE_VALGRIND_HAPPY();
@@ -2022,7 +2026,7 @@ TEST_IMPL(fs_scandir_file) {
path = "test/fixtures/empty_file";
loop = uv_default_loop();
- r = uv_fs_scandir(loop, &scandir_req, path, 0, NULL);
+ r = uv_fs_scandir(NULL, &scandir_req, path, 0, NULL);
ASSERT(r == UV_ENOTDIR);
uv_fs_req_cleanup(&scandir_req);
@@ -2046,14 +2050,14 @@ TEST_IMPL(fs_open_dir) {
path = ".";
loop = uv_default_loop();
- r = uv_fs_open(loop, &req, path, O_RDONLY, 0, NULL);
+ r = uv_fs_open(NULL, &req, path, O_RDONLY, 0, NULL);
ASSERT(r >= 0);
ASSERT(req.result >= 0);
ASSERT(req.ptr == NULL);
file = r;
uv_fs_req_cleanup(&req);
- r = uv_fs_close(loop, &req, file, NULL);
+ r = uv_fs_close(NULL, &req, file, NULL);
ASSERT(r == 0);
r = uv_fs_open(loop, &req, path, O_RDONLY, 0, open_cb_simple);
@@ -2076,47 +2080,46 @@ TEST_IMPL(fs_file_open_append) {
loop = uv_default_loop();
- r = uv_fs_open(loop, &open_req1, "test_file", O_WRONLY | O_CREAT,
+ r = uv_fs_open(NULL, &open_req1, "test_file", O_WRONLY | O_CREAT,
S_IWUSR | S_IRUSR, NULL);
ASSERT(r >= 0);
ASSERT(open_req1.result >= 0);
uv_fs_req_cleanup(&open_req1);
iov = uv_buf_init(test_buf, sizeof(test_buf));
- r = uv_fs_write(loop, &write_req, open_req1.result, &iov, 1, -1, NULL);
+ r = uv_fs_write(NULL, &write_req, open_req1.result, &iov, 1, -1, NULL);
ASSERT(r >= 0);
ASSERT(write_req.result >= 0);
uv_fs_req_cleanup(&write_req);
- r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
ASSERT(r == 0);
ASSERT(close_req.result == 0);
uv_fs_req_cleanup(&close_req);
- r = uv_fs_open(loop, &open_req1, "test_file", O_RDWR | O_APPEND, 0, NULL);
+ r = uv_fs_open(NULL, &open_req1, "test_file", O_RDWR | O_APPEND, 0, NULL);
ASSERT(r >= 0);
ASSERT(open_req1.result >= 0);
uv_fs_req_cleanup(&open_req1);
iov = uv_buf_init(test_buf, sizeof(test_buf));
- r = uv_fs_write(loop, &write_req, open_req1.result, &iov, 1, -1, NULL);
+ r = uv_fs_write(NULL, &write_req, open_req1.result, &iov, 1, -1, NULL);
ASSERT(r >= 0);
ASSERT(write_req.result >= 0);
uv_fs_req_cleanup(&write_req);
- r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
ASSERT(r == 0);
ASSERT(close_req.result == 0);
uv_fs_req_cleanup(&close_req);
- r = uv_fs_open(loop, &open_req1, "test_file", O_RDONLY, S_IRUSR, NULL);
+ r = uv_fs_open(NULL, &open_req1, "test_file", O_RDONLY, S_IRUSR, NULL);
ASSERT(r >= 0);
ASSERT(open_req1.result >= 0);
uv_fs_req_cleanup(&open_req1);
iov = uv_buf_init(buf, sizeof(buf));
- r = uv_fs_read(loop, &read_req, open_req1.result, &iov, 1, -1,
- NULL);
+ r = uv_fs_read(NULL, &read_req, open_req1.result, &iov, 1, -1, NULL);
printf("read = %d\n", r);
ASSERT(r == 26);
ASSERT(read_req.result == 26);
@@ -2125,7 +2128,7 @@ TEST_IMPL(fs_file_open_append) {
sizeof("test-buffer\n\0test-buffer\n\0") - 1) == 0);
uv_fs_req_cleanup(&read_req);
- r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
ASSERT(r == 0);
ASSERT(close_req.result == 0);
uv_fs_req_cleanup(&close_req);
@@ -2147,54 +2150,53 @@ TEST_IMPL(fs_rename_to_existing_file) {
loop = uv_default_loop();
- r = uv_fs_open(loop, &open_req1, "test_file", O_WRONLY | O_CREAT,
+ r = uv_fs_open(NULL, &open_req1, "test_file", O_WRONLY | O_CREAT,
S_IWUSR | S_IRUSR, NULL);
ASSERT(r >= 0);
ASSERT(open_req1.result >= 0);
uv_fs_req_cleanup(&open_req1);
iov = uv_buf_init(test_buf, sizeof(test_buf));
- r = uv_fs_write(loop, &write_req, open_req1.result, &iov, 1, -1, NULL);
+ r = uv_fs_write(NULL, &write_req, open_req1.result, &iov, 1, -1, NULL);
ASSERT(r >= 0);
ASSERT(write_req.result >= 0);
uv_fs_req_cleanup(&write_req);
- r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
ASSERT(r == 0);
ASSERT(close_req.result == 0);
uv_fs_req_cleanup(&close_req);
- r = uv_fs_open(loop, &open_req1, "test_file2", O_WRONLY | O_CREAT,
+ r = uv_fs_open(NULL, &open_req1, "test_file2", O_WRONLY | O_CREAT,
S_IWUSR | S_IRUSR, NULL);
ASSERT(r >= 0);
ASSERT(open_req1.result >= 0);
uv_fs_req_cleanup(&open_req1);
- r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
ASSERT(r == 0);
ASSERT(close_req.result == 0);
uv_fs_req_cleanup(&close_req);
- r = uv_fs_rename(loop, &rename_req, "test_file", "test_file2", NULL);
+ r = uv_fs_rename(NULL, &rename_req, "test_file", "test_file2", NULL);
ASSERT(r == 0);
ASSERT(rename_req.result == 0);
uv_fs_req_cleanup(&rename_req);
- r = uv_fs_open(loop, &open_req1, "test_file2", O_RDONLY, 0, NULL);
+ r = uv_fs_open(NULL, &open_req1, "test_file2", O_RDONLY, 0, NULL);
ASSERT(r >= 0);
ASSERT(open_req1.result >= 0);
uv_fs_req_cleanup(&open_req1);
memset(buf, 0, sizeof(buf));
iov = uv_buf_init(buf, sizeof(buf));
- r = uv_fs_read(loop, &read_req, open_req1.result, &iov, 1, -1,
- NULL);
+ r = uv_fs_read(NULL, &read_req, open_req1.result, &iov, 1, -1, NULL);
ASSERT(r >= 0);
ASSERT(read_req.result >= 0);
ASSERT(strcmp(buf, test_buf) == 0);
uv_fs_req_cleanup(&read_req);
- r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
ASSERT(r == 0);
ASSERT(close_req.result == 0);
uv_fs_req_cleanup(&close_req);
@@ -2216,44 +2218,44 @@ TEST_IMPL(fs_read_file_eof) {
loop = uv_default_loop();
- r = uv_fs_open(loop, &open_req1, "test_file", O_WRONLY | O_CREAT,
+ r = uv_fs_open(NULL, &open_req1, "test_file", O_WRONLY | O_CREAT,
S_IWUSR | S_IRUSR, NULL);
ASSERT(r >= 0);
ASSERT(open_req1.result >= 0);
uv_fs_req_cleanup(&open_req1);
iov = uv_buf_init(test_buf, sizeof(test_buf));
- r = uv_fs_write(loop, &write_req, open_req1.result, &iov, 1, -1, NULL);
+ r = uv_fs_write(NULL, &write_req, open_req1.result, &iov, 1, -1, NULL);
ASSERT(r >= 0);
ASSERT(write_req.result >= 0);
uv_fs_req_cleanup(&write_req);
- r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
ASSERT(r == 0);
ASSERT(close_req.result == 0);
uv_fs_req_cleanup(&close_req);
- r = uv_fs_open(loop, &open_req1, "test_file", O_RDONLY, 0, NULL);
+ r = uv_fs_open(NULL, &open_req1, "test_file", O_RDONLY, 0, NULL);
ASSERT(r >= 0);
ASSERT(open_req1.result >= 0);
uv_fs_req_cleanup(&open_req1);
memset(buf, 0, sizeof(buf));
iov = uv_buf_init(buf, sizeof(buf));
- r = uv_fs_read(loop, &read_req, open_req1.result, &iov, 1, -1, NULL);
+ r = uv_fs_read(NULL, &read_req, open_req1.result, &iov, 1, -1, NULL);
ASSERT(r >= 0);
ASSERT(read_req.result >= 0);
ASSERT(strcmp(buf, test_buf) == 0);
uv_fs_req_cleanup(&read_req);
iov = uv_buf_init(buf, sizeof(buf));
- r = uv_fs_read(loop, &read_req, open_req1.result, &iov, 1,
+ r = uv_fs_read(NULL, &read_req, open_req1.result, &iov, 1,
read_req.result, NULL);
ASSERT(r == 0);
ASSERT(read_req.result == 0);
uv_fs_req_cleanup(&read_req);
- r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
ASSERT(r == 0);
ASSERT(close_req.result == 0);
uv_fs_req_cleanup(&close_req);
@@ -2275,7 +2277,7 @@ TEST_IMPL(fs_write_multiple_bufs) {
loop = uv_default_loop();
- r = uv_fs_open(loop, &open_req1, "test_file", O_WRONLY | O_CREAT,
+ r = uv_fs_open(NULL, &open_req1, "test_file", O_WRONLY | O_CREAT,
S_IWUSR | S_IRUSR, NULL);
ASSERT(r >= 0);
ASSERT(open_req1.result >= 0);
@@ -2283,17 +2285,17 @@ TEST_IMPL(fs_write_multiple_bufs) {
iovs[0] = uv_buf_init(test_buf, sizeof(test_buf));
iovs[1] = uv_buf_init(test_buf2, sizeof(test_buf2));
- r = uv_fs_write(loop, &write_req, open_req1.result, iovs, 2, 0, NULL);
+ r = uv_fs_write(NULL, &write_req, open_req1.result, iovs, 2, 0, NULL);
ASSERT(r >= 0);
ASSERT(write_req.result >= 0);
uv_fs_req_cleanup(&write_req);
- r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
ASSERT(r == 0);
ASSERT(close_req.result == 0);
uv_fs_req_cleanup(&close_req);
- r = uv_fs_open(loop, &open_req1, "test_file", O_RDONLY, 0, NULL);
+ r = uv_fs_open(NULL, &open_req1, "test_file", O_RDONLY, 0, NULL);
ASSERT(r >= 0);
ASSERT(open_req1.result >= 0);
uv_fs_req_cleanup(&open_req1);
@@ -2303,7 +2305,7 @@ TEST_IMPL(fs_write_multiple_bufs) {
/* Read the strings back to separate buffers. */
iovs[0] = uv_buf_init(buf, sizeof(test_buf));
iovs[1] = uv_buf_init(buf2, sizeof(test_buf2));
- r = uv_fs_read(loop, &read_req, open_req1.result, iovs, 2, 0, NULL);
+ r = uv_fs_read(NULL, &read_req, open_req1.result, iovs, 2, 0, NULL);
ASSERT(r >= 0);
ASSERT(read_req.result >= 0);
ASSERT(strcmp(buf, test_buf) == 0);
@@ -2311,20 +2313,228 @@ TEST_IMPL(fs_write_multiple_bufs) {
uv_fs_req_cleanup(&read_req);
iov = uv_buf_init(buf, sizeof(buf));
- r = uv_fs_read(loop, &read_req, open_req1.result, &iov, 1,
+ r = uv_fs_read(NULL, &read_req, open_req1.result, &iov, 1,
read_req.result, NULL);
ASSERT(r == 0);
ASSERT(read_req.result == 0);
uv_fs_req_cleanup(&read_req);
- r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
+ ASSERT(r == 0);
+ ASSERT(close_req.result == 0);
+ uv_fs_req_cleanup(&close_req);
+
+ /* Cleanup */
+ unlink("test_file");
+
+ MAKE_VALGRIND_HAPPY();
+ return 0;
+}
+
+
+TEST_IMPL(fs_write_alotof_bufs) {
+ const size_t iovcount = 54321;
+ uv_buf_t* iovs;
+ char* buffer;
+ size_t index;
+ int r;
+
+ /* Setup. */
+ unlink("test_file");
+
+ loop = uv_default_loop();
+
+ iovs = malloc(sizeof(*iovs) * iovcount);
+ ASSERT(iovs != NULL);
+
+ r = uv_fs_open(NULL,
+ &open_req1,
+ "test_file",
+ O_RDWR | O_CREAT,
+ S_IWUSR | S_IRUSR,
+ NULL);
+ ASSERT(r >= 0);
+ ASSERT(open_req1.result >= 0);
+ uv_fs_req_cleanup(&open_req1);
+
+ for (index = 0; index < iovcount; ++index)
+ iovs[index] = uv_buf_init(test_buf, sizeof(test_buf));
+
+ r = uv_fs_write(NULL,
+ &write_req,
+ open_req1.result,
+ iovs,
+ iovcount,
+ -1,
+ NULL);
+ ASSERT(r >= 0);
+ ASSERT((size_t)write_req.result == sizeof(test_buf) * iovcount);
+ uv_fs_req_cleanup(&write_req);
+
+ /* Read the strings back to separate buffers. */
+ buffer = malloc(sizeof(test_buf) * iovcount);
+ ASSERT(buffer != NULL);
+
+ for (index = 0; index < iovcount; ++index)
+ iovs[index] = uv_buf_init(buffer + index * sizeof(test_buf),
+ sizeof(test_buf));
+
+ r = uv_fs_read(NULL, &read_req, open_req1.result, iovs, iovcount, 0, NULL);
+ ASSERT(r >= 0);
+ ASSERT((size_t)read_req.result == sizeof(test_buf) * iovcount);
+
+ for (index = 0; index < iovcount; ++index)
+ ASSERT(strncmp(buffer + index * sizeof(test_buf),
+ test_buf,
+ sizeof(test_buf)) == 0);
+
+ uv_fs_req_cleanup(&read_req);
+ free(buffer);
+
+ iov = uv_buf_init(buf, sizeof(buf));
+ r = uv_fs_read(NULL,
+ &read_req,
+ open_req1.result,
+ &iov,
+ 1,
+ read_req.result,
+ NULL);
+ ASSERT(r == 0);
+ ASSERT(read_req.result == 0);
+ uv_fs_req_cleanup(&read_req);
+
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
ASSERT(r == 0);
ASSERT(close_req.result == 0);
uv_fs_req_cleanup(&close_req);
/* Cleanup */
unlink("test_file");
+ free(iovs);
MAKE_VALGRIND_HAPPY();
return 0;
}
+
+
+TEST_IMPL(fs_write_alotof_bufs_with_offset) {
+ const size_t iovcount = 54321;
+ uv_buf_t* iovs;
+ char* buffer;
+ size_t index;
+ int r;
+ int64_t offset;
+ char* filler = "0123456789";
+ int filler_len = strlen(filler);
+
+ /* Setup. */
+ unlink("test_file");
+
+ loop = uv_default_loop();
+
+ iovs = malloc(sizeof(*iovs) * iovcount);
+ ASSERT(iovs != NULL);
+
+ r = uv_fs_open(NULL,
+ &open_req1,
+ "test_file",
+ O_RDWR | O_CREAT,
+ S_IWUSR | S_IRUSR,
+ NULL);
+ ASSERT(r >= 0);
+ ASSERT(open_req1.result >= 0);
+ uv_fs_req_cleanup(&open_req1);
+
+ iov = uv_buf_init(filler, filler_len);
+ r = uv_fs_write(NULL, &write_req, open_req1.result, &iov, 1, -1, NULL);
+ ASSERT(r == filler_len);
+ ASSERT(write_req.result == filler_len);
+ uv_fs_req_cleanup(&write_req);
+ offset = (int64_t)r;
+
+ for (index = 0; index < iovcount; ++index)
+ iovs[index] = uv_buf_init(test_buf, sizeof(test_buf));
+
+ r = uv_fs_write(NULL,
+ &write_req,
+ open_req1.result,
+ iovs,
+ iovcount,
+ offset,
+ NULL);
+ ASSERT(r >= 0);
+ ASSERT((size_t)write_req.result == sizeof(test_buf) * iovcount);
+ uv_fs_req_cleanup(&write_req);
+
+ /* Read the strings back to separate buffers. */
+ buffer = malloc(sizeof(test_buf) * iovcount);
+ ASSERT(buffer != NULL);
+
+ for (index = 0; index < iovcount; ++index)
+ iovs[index] = uv_buf_init(buffer + index * sizeof(test_buf),
+ sizeof(test_buf));
+
+ r = uv_fs_read(NULL, &read_req, open_req1.result,
+ iovs, iovcount, offset, NULL);
+ ASSERT(r >= 0);
+ ASSERT(read_req.result == sizeof(test_buf) * iovcount);
+
+ for (index = 0; index < iovcount; ++index)
+ ASSERT(strncmp(buffer + index * sizeof(test_buf),
+ test_buf,
+ sizeof(test_buf)) == 0);
+
+ uv_fs_req_cleanup(&read_req);
+ free(buffer);
+
+ r = uv_fs_stat(NULL, &stat_req, "test_file", NULL);
+ ASSERT(r == 0);
+ ASSERT((int64_t)((uv_stat_t*)stat_req.ptr)->st_size ==
+ offset + (int64_t)(iovcount * sizeof(test_buf)));
+ uv_fs_req_cleanup(&stat_req);
+
+ iov = uv_buf_init(buf, sizeof(buf));
+ r = uv_fs_read(NULL,
+ &read_req,
+ open_req1.result,
+ &iov,
+ 1,
+ read_req.result + offset,
+ NULL);
+ ASSERT(r == 0);
+ ASSERT(read_req.result == 0);
+ uv_fs_req_cleanup(&read_req);
+
+ r = uv_fs_close(NULL, &close_req, open_req1.result, NULL);
+ ASSERT(r == 0);
+ ASSERT(close_req.result == 0);
+ uv_fs_req_cleanup(&close_req);
+
+ /* Cleanup */
+ unlink("test_file");
+ free(iovs);
+
+ MAKE_VALGRIND_HAPPY();
+ return 0;
+}
+
+
+TEST_IMPL(fs_read_write_null_arguments) {
+ int r;
+
+ r = uv_fs_read(NULL, NULL, 0, NULL, 0, -1, NULL);
+ ASSERT(r == UV_EINVAL);
+
+ r = uv_fs_write(NULL, NULL, 0, NULL, 0, -1, NULL);
+ ASSERT(r == UV_EINVAL);
+
+ iov = uv_buf_init(NULL, 0);
+ r = uv_fs_read(NULL, NULL, 0, &iov, 0, -1, NULL);
+ ASSERT(r == UV_EINVAL);
+
+ iov = uv_buf_init(NULL, 0);
+ r = uv_fs_write(NULL, NULL, 0, &iov, 0, -1, NULL);
+ ASSERT(r == UV_EINVAL);
+
+ return 0;
+}
diff --git a/deps/uv/test/test-ipc.c b/deps/uv/test/test-ipc.c
index ed8c4dd7f00c8e..f018c2d4d49b7f 100644
--- a/deps/uv/test/test-ipc.c
+++ b/deps/uv/test/test-ipc.c
@@ -52,6 +52,7 @@ typedef struct {
} tcp_conn;
#define CONN_COUNT 100
+#define BACKLOG 128
static void close_server_conn_cb(uv_handle_t* handle) {
@@ -179,7 +180,7 @@ static void on_read(uv_stream_t* handle,
r = uv_accept((uv_stream_t*)pipe, (uv_stream_t*)&tcp_server);
ASSERT(r == 0);
- r = uv_listen((uv_stream_t*)&tcp_server, 12, on_connection);
+ r = uv_listen((uv_stream_t*)&tcp_server, BACKLOG, on_connection);
ASSERT(r == 0);
tcp_server_listening = 1;
@@ -242,22 +243,22 @@ static void on_read_listen_after_bound_twice(uv_stream_t* handle,
ASSERT(pending == UV_TCP);
r = uv_tcp_init(uv_default_loop(), &tcp_server);
ASSERT(r == 0);
-
+
r = uv_accept((uv_stream_t*)pipe, (uv_stream_t*)&tcp_server);
ASSERT(r == 0);
-
- r = uv_listen((uv_stream_t*)&tcp_server, 12, on_connection);
- ASSERT(r == 0);
+
+ r = uv_listen((uv_stream_t*)&tcp_server, BACKLOG, on_connection);
+ ASSERT(r == 0);
} else if (read_cb_called == 2) {
/* Accept the second TCP server, and start listening on it. */
ASSERT(pending == UV_TCP);
r = uv_tcp_init(uv_default_loop(), &tcp_server2);
ASSERT(r == 0);
-
+
r = uv_accept((uv_stream_t*)pipe, (uv_stream_t*)&tcp_server2);
ASSERT(r == 0);
-
- r = uv_listen((uv_stream_t*)&tcp_server2, 12, on_connection);
+
+ r = uv_listen((uv_stream_t*)&tcp_server2, BACKLOG, on_connection);
ASSERT(r == UV_EADDRINUSE);
uv_close((uv_handle_t*)&tcp_server, NULL);
@@ -652,7 +653,7 @@ int ipc_helper(int listen_after_write) {
ASSERT(r == 0);
if (!listen_after_write) {
- r = uv_listen((uv_stream_t*)&tcp_server, 12, ipc_on_connection);
+ r = uv_listen((uv_stream_t*)&tcp_server, BACKLOG, ipc_on_connection);
ASSERT(r == 0);
}
@@ -662,7 +663,7 @@ int ipc_helper(int listen_after_write) {
ASSERT(r == 0);
if (listen_after_write) {
- r = uv_listen((uv_stream_t*)&tcp_server, 12, ipc_on_connection);
+ r = uv_listen((uv_stream_t*)&tcp_server, BACKLOG, ipc_on_connection);
ASSERT(r == 0);
}
@@ -703,7 +704,7 @@ int ipc_helper_tcp_connection(void) {
r = uv_tcp_bind(&tcp_server, (const struct sockaddr*) &addr, 0);
ASSERT(r == 0);
- r = uv_listen((uv_stream_t*)&tcp_server, 12, ipc_on_connection_tcp_conn);
+ r = uv_listen((uv_stream_t*)&tcp_server, BACKLOG, ipc_on_connection_tcp_conn);
ASSERT(r == 0);
/* Make a connection to the server */
@@ -772,7 +773,7 @@ int ipc_helper_bind_twice(void) {
r = uv_run(uv_default_loop(), UV_RUN_DEFAULT);
ASSERT(r == 0);
-
+
MAKE_VALGRIND_HAPPY();
return 0;
}
diff --git a/deps/uv/test/test-list.h b/deps/uv/test/test-list.h
index 1e4018c98b8685..31899664f50531 100644
--- a/deps/uv/test/test-list.h
+++ b/deps/uv/test/test-list.h
@@ -66,6 +66,7 @@ TEST_DECLARE (tcp_write_fail)
TEST_DECLARE (tcp_try_write)
TEST_DECLARE (tcp_write_queue_order)
TEST_DECLARE (tcp_open)
+TEST_DECLARE (tcp_open_twice)
TEST_DECLARE (tcp_connect_error_after_write)
TEST_DECLARE (tcp_shutdown_after_write)
TEST_DECLARE (tcp_bind_error_addrinuse)
@@ -80,6 +81,10 @@ TEST_DECLARE (tcp_connect_error_fault)
TEST_DECLARE (tcp_connect_timeout)
TEST_DECLARE (tcp_close_while_connecting)
TEST_DECLARE (tcp_close)
+TEST_DECLARE (tcp_create_early)
+TEST_DECLARE (tcp_create_early_bad_bind)
+TEST_DECLARE (tcp_create_early_bad_domain)
+TEST_DECLARE (tcp_create_early_accept)
#ifndef _WIN32
TEST_DECLARE (tcp_close_accept)
TEST_DECLARE (tcp_oob)
@@ -95,6 +100,9 @@ TEST_DECLARE (tcp_bind6_error_inval)
TEST_DECLARE (tcp_bind6_localhost_ok)
TEST_DECLARE (udp_bind)
TEST_DECLARE (udp_bind_reuseaddr)
+TEST_DECLARE (udp_create_early)
+TEST_DECLARE (udp_create_early_bad_bind)
+TEST_DECLARE (udp_create_early_bad_domain)
TEST_DECLARE (udp_send_and_recv)
TEST_DECLARE (udp_send_immediate)
TEST_DECLARE (udp_send_unreachable)
@@ -110,10 +118,12 @@ TEST_DECLARE (udp_options)
TEST_DECLARE (udp_options6)
TEST_DECLARE (udp_no_autobind)
TEST_DECLARE (udp_open)
+TEST_DECLARE (udp_open_twice)
TEST_DECLARE (udp_try_send)
TEST_DECLARE (pipe_bind_error_addrinuse)
TEST_DECLARE (pipe_bind_error_addrnotavail)
TEST_DECLARE (pipe_bind_error_inval)
+TEST_DECLARE (pipe_connect_multiple)
TEST_DECLARE (pipe_listen_without_bind)
TEST_DECLARE (pipe_connect_bad_name)
TEST_DECLARE (pipe_connect_to_file)
@@ -121,6 +131,7 @@ TEST_DECLARE (pipe_connect_on_prepare)
TEST_DECLARE (pipe_getsockname)
TEST_DECLARE (pipe_getsockname_abstract)
TEST_DECLARE (pipe_getsockname_blocking)
+TEST_DECLARE (pipe_pending_instances)
TEST_DECLARE (pipe_sendmsg)
TEST_DECLARE (pipe_server_close)
TEST_DECLARE (connection_fail)
@@ -221,6 +232,7 @@ TEST_DECLARE (spawn_stdout_and_stderr_to_file_swap)
TEST_DECLARE (spawn_auto_unref)
TEST_DECLARE (spawn_closed_process_io)
TEST_DECLARE (spawn_reads_child_path)
+TEST_DECLARE (spawn_inherit_streams)
TEST_DECLARE (fs_poll)
TEST_DECLARE (fs_poll_getpath)
TEST_DECLARE (kill)
@@ -248,6 +260,7 @@ TEST_DECLARE (fs_file_open_append)
TEST_DECLARE (fs_stat_missing_path)
TEST_DECLARE (fs_read_file_eof)
TEST_DECLARE (fs_event_watch_dir)
+TEST_DECLARE (fs_event_watch_dir_recursive)
TEST_DECLARE (fs_event_watch_file)
TEST_DECLARE (fs_event_watch_file_twice)
TEST_DECLARE (fs_event_watch_file_current_dir)
@@ -264,6 +277,9 @@ TEST_DECLARE (fs_scandir_file)
TEST_DECLARE (fs_open_dir)
TEST_DECLARE (fs_rename_to_existing_file)
TEST_DECLARE (fs_write_multiple_bufs)
+TEST_DECLARE (fs_read_write_null_arguments)
+TEST_DECLARE (fs_write_alotof_bufs)
+TEST_DECLARE (fs_write_alotof_bufs_with_offset)
TEST_DECLARE (threadpool_queue_work_simple)
TEST_DECLARE (threadpool_queue_work_einval)
TEST_DECLARE (threadpool_multiple_event_loops)
@@ -289,8 +305,10 @@ TEST_DECLARE (ip6_addr_link_local)
TEST_DECLARE (poll_close_doesnt_corrupt_stack)
TEST_DECLARE (poll_closesocket)
TEST_DECLARE (spawn_detect_pipe_name_collisions_on_windows)
+#if !defined(USING_UV_SHARED)
TEST_DECLARE (argument_escaping)
TEST_DECLARE (environment_creation)
+#endif
TEST_DECLARE (listen_with_simultaneous_accepts)
TEST_DECLARE (listen_no_simultaneous_accepts)
TEST_DECLARE (fs_stat_root)
@@ -393,6 +411,7 @@ TASK_LIST_START
TEST_ENTRY (tcp_open)
TEST_HELPER (tcp_open, tcp4_echo_server)
+ TEST_ENTRY (tcp_open_twice)
TEST_ENTRY (tcp_shutdown_after_write)
TEST_HELPER (tcp_shutdown_after_write, tcp4_echo_server)
@@ -410,6 +429,10 @@ TASK_LIST_START
TEST_ENTRY (tcp_connect_timeout)
TEST_ENTRY (tcp_close_while_connecting)
TEST_ENTRY (tcp_close)
+ TEST_ENTRY (tcp_create_early)
+ TEST_ENTRY (tcp_create_early_bad_bind)
+ TEST_ENTRY (tcp_create_early_bad_domain)
+ TEST_ENTRY (tcp_create_early_accept)
#ifndef _WIN32
TEST_ENTRY (tcp_close_accept)
TEST_ENTRY (tcp_oob)
@@ -429,6 +452,9 @@ TASK_LIST_START
TEST_ENTRY (udp_bind)
TEST_ENTRY (udp_bind_reuseaddr)
+ TEST_ENTRY (udp_create_early)
+ TEST_ENTRY (udp_create_early_bad_bind)
+ TEST_ENTRY (udp_create_early_bad_domain)
TEST_ENTRY (udp_send_and_recv)
TEST_ENTRY (udp_send_immediate)
TEST_ENTRY (udp_send_unreachable)
@@ -447,14 +473,17 @@ TASK_LIST_START
TEST_ENTRY (udp_open)
TEST_HELPER (udp_open, udp4_echo_server)
+ TEST_ENTRY (udp_open_twice)
TEST_ENTRY (pipe_bind_error_addrinuse)
TEST_ENTRY (pipe_bind_error_addrnotavail)
TEST_ENTRY (pipe_bind_error_inval)
+ TEST_ENTRY (pipe_connect_multiple)
TEST_ENTRY (pipe_listen_without_bind)
TEST_ENTRY (pipe_getsockname)
TEST_ENTRY (pipe_getsockname_abstract)
TEST_ENTRY (pipe_getsockname_blocking)
+ TEST_ENTRY (pipe_pending_instances)
TEST_ENTRY (pipe_sendmsg)
TEST_ENTRY (connection_fail)
@@ -590,6 +619,7 @@ TASK_LIST_START
TEST_ENTRY (spawn_auto_unref)
TEST_ENTRY (spawn_closed_process_io)
TEST_ENTRY (spawn_reads_child_path)
+ TEST_ENTRY (spawn_inherit_streams)
TEST_ENTRY (fs_poll)
TEST_ENTRY (fs_poll_getpath)
TEST_ENTRY (kill)
@@ -598,8 +628,10 @@ TASK_LIST_START
TEST_ENTRY (poll_close_doesnt_corrupt_stack)
TEST_ENTRY (poll_closesocket)
TEST_ENTRY (spawn_detect_pipe_name_collisions_on_windows)
+#if !defined(USING_UV_SHARED)
TEST_ENTRY (argument_escaping)
TEST_ENTRY (environment_creation)
+# endif
TEST_ENTRY (listen_with_simultaneous_accepts)
TEST_ENTRY (listen_no_simultaneous_accepts)
TEST_ENTRY (fs_stat_root)
@@ -644,6 +676,7 @@ TASK_LIST_START
TEST_ENTRY (fs_read_file_eof)
TEST_ENTRY (fs_file_open_append)
TEST_ENTRY (fs_event_watch_dir)
+ TEST_ENTRY (fs_event_watch_dir_recursive)
TEST_ENTRY (fs_event_watch_file)
TEST_ENTRY (fs_event_watch_file_twice)
TEST_ENTRY (fs_event_watch_file_current_dir)
@@ -660,6 +693,9 @@ TASK_LIST_START
TEST_ENTRY (fs_open_dir)
TEST_ENTRY (fs_rename_to_existing_file)
TEST_ENTRY (fs_write_multiple_bufs)
+ TEST_ENTRY (fs_write_alotof_bufs)
+ TEST_ENTRY (fs_write_alotof_bufs_with_offset)
+ TEST_ENTRY (fs_read_write_null_arguments)
TEST_ENTRY (threadpool_queue_work_simple)
TEST_ENTRY (threadpool_queue_work_einval)
TEST_ENTRY (threadpool_multiple_event_loops)
diff --git a/deps/uv/test/test-pipe-connect-multiple.c b/deps/uv/test/test-pipe-connect-multiple.c
new file mode 100644
index 00000000000000..3de5a9a0bf4e83
--- /dev/null
+++ b/deps/uv/test/test-pipe-connect-multiple.c
@@ -0,0 +1,104 @@
+/* Copyright (c) 2015 Saúl Ibarra Corretgé .
+ * All rights reserved.
+ *
+ * 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.
+ */
+
+#include "uv.h"
+#include "task.h"
+#include
+#include
+
+
+static int connection_cb_called = 0;
+static int connect_cb_called = 0;
+
+#define NUM_CLIENTS 4
+
+typedef struct {
+ uv_pipe_t pipe_handle;
+ uv_connect_t conn_req;
+} client_t;
+
+static uv_pipe_t server_handle;
+static client_t clients[NUM_CLIENTS];
+static uv_pipe_t connections[NUM_CLIENTS];
+
+
+static void connection_cb(uv_stream_t* server, int status) {
+ int r;
+ uv_pipe_t* conn;
+ ASSERT(status == 0);
+
+ conn = &connections[connection_cb_called];
+ r = uv_pipe_init(server->loop, conn, 0);
+ ASSERT(r == 0);
+
+ r = uv_accept(server, (uv_stream_t*)conn);
+ ASSERT(r == 0);
+
+ if (++connection_cb_called == NUM_CLIENTS &&
+ connect_cb_called == NUM_CLIENTS) {
+ uv_stop(server->loop);
+ }
+}
+
+
+static void connect_cb(uv_connect_t* connect_req, int status) {
+ ASSERT(status == 0);
+ if (++connect_cb_called == NUM_CLIENTS &&
+ connection_cb_called == NUM_CLIENTS) {
+ uv_stop(connect_req->handle->loop);
+ }
+}
+
+
+TEST_IMPL(pipe_connect_multiple) {
+ int i;
+ int r;
+ uv_loop_t* loop;
+
+ loop = uv_default_loop();
+
+ r = uv_pipe_init(loop, &server_handle, 0);
+ ASSERT(r == 0);
+
+ r = uv_pipe_bind(&server_handle, TEST_PIPENAME);
+ ASSERT(r == 0);
+
+ r = uv_listen((uv_stream_t*)&server_handle, 128, connection_cb);
+ ASSERT(r == 0);
+
+ for (i = 0; i < NUM_CLIENTS; i++) {
+ r = uv_pipe_init(loop, &clients[i].pipe_handle, 0);
+ ASSERT(r == 0);
+ uv_pipe_connect(&clients[i].conn_req,
+ &clients[i].pipe_handle,
+ TEST_PIPENAME,
+ connect_cb);
+ }
+
+ uv_run(loop, UV_RUN_DEFAULT);
+
+ ASSERT(connection_cb_called == NUM_CLIENTS);
+ ASSERT(connect_cb_called == NUM_CLIENTS);
+
+ MAKE_VALGRIND_HAPPY();
+ return 0;
+}
diff --git a/deps/uv/test/test-pipe-pending-instances.c b/deps/uv/test/test-pipe-pending-instances.c
new file mode 100644
index 00000000000000..b6ff911a0f2ab0
--- /dev/null
+++ b/deps/uv/test/test-pipe-pending-instances.c
@@ -0,0 +1,59 @@
+/* Copyright (c) 2015 Saúl Ibarra Corretgé .
+ * All rights reserved.
+ *
+ * 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.
+ */
+
+#include "uv.h"
+#include "task.h"
+
+
+static void connection_cb(uv_stream_t* server, int status) {
+ ASSERT(0 && "this will never be called");
+}
+
+
+TEST_IMPL(pipe_pending_instances) {
+ int r;
+ uv_pipe_t pipe_handle;
+ uv_loop_t* loop;
+
+ loop = uv_default_loop();
+
+ r = uv_pipe_init(loop, &pipe_handle, 0);
+ ASSERT(r == 0);
+
+ uv_pipe_pending_instances(&pipe_handle, 8);
+
+ r = uv_pipe_bind(&pipe_handle, TEST_PIPENAME);
+ ASSERT(r == 0);
+
+ uv_pipe_pending_instances(&pipe_handle, 16);
+
+ r = uv_listen((uv_stream_t*)&pipe_handle, 128, connection_cb);
+ ASSERT(r == 0);
+
+ uv_close((uv_handle_t*)&pipe_handle, NULL);
+
+ r = uv_run(loop, UV_RUN_DEFAULT);
+ ASSERT(r == 0);
+
+ MAKE_VALGRIND_HAPPY();
+ return 0;
+}
diff --git a/deps/uv/test/test-signal-multiple-loops.c b/deps/uv/test/test-signal-multiple-loops.c
index f8fef36ee043ce..158129919bd772 100644
--- a/deps/uv/test/test-signal-multiple-loops.c
+++ b/deps/uv/test/test-signal-multiple-loops.c
@@ -185,6 +185,7 @@ static void loop_creating_worker(void* context) {
ASSERT(r == 0);
uv_loop_close(loop);
+ free(loop);
increment_counter(&loop_creation_counter);
} while (!stop);
diff --git a/deps/uv/test/test-spawn.c b/deps/uv/test/test-spawn.c
index d01862abe1d97a..e71f0f7d53d344 100644
--- a/deps/uv/test/test-spawn.c
+++ b/deps/uv/test/test-spawn.c
@@ -277,7 +277,7 @@ TEST_IMPL(spawn_stdout_to_file) {
init_process_options("spawn_helper2", exit_cb);
- r = uv_fs_open(uv_default_loop(), &fs_req, "stdout_file", O_CREAT | O_RDWR,
+ r = uv_fs_open(NULL, &fs_req, "stdout_file", O_CREAT | O_RDWR,
S_IRUSR | S_IWUSR, NULL);
ASSERT(r != -1);
uv_fs_req_cleanup(&fs_req);
@@ -300,11 +300,11 @@ TEST_IMPL(spawn_stdout_to_file) {
ASSERT(close_cb_called == 1);
buf = uv_buf_init(output, sizeof(output));
- r = uv_fs_read(uv_default_loop(), &fs_req, file, &buf, 1, 0, NULL);
+ r = uv_fs_read(NULL, &fs_req, file, &buf, 1, 0, NULL);
ASSERT(r == 12);
uv_fs_req_cleanup(&fs_req);
- r = uv_fs_close(uv_default_loop(), &fs_req, file, NULL);
+ r = uv_fs_close(NULL, &fs_req, file, NULL);
ASSERT(r == 0);
uv_fs_req_cleanup(&fs_req);
@@ -331,7 +331,7 @@ TEST_IMPL(spawn_stdout_and_stderr_to_file) {
init_process_options("spawn_helper6", exit_cb);
- r = uv_fs_open(uv_default_loop(), &fs_req, "stdout_file", O_CREAT | O_RDWR,
+ r = uv_fs_open(NULL, &fs_req, "stdout_file", O_CREAT | O_RDWR,
S_IRUSR | S_IWUSR, NULL);
ASSERT(r != -1);
uv_fs_req_cleanup(&fs_req);
@@ -356,11 +356,11 @@ TEST_IMPL(spawn_stdout_and_stderr_to_file) {
ASSERT(close_cb_called == 1);
buf = uv_buf_init(output, sizeof(output));
- r = uv_fs_read(uv_default_loop(), &fs_req, file, &buf, 1, 0, NULL);
+ r = uv_fs_read(NULL, &fs_req, file, &buf, 1, 0, NULL);
ASSERT(r == 27);
uv_fs_req_cleanup(&fs_req);
- r = uv_fs_close(uv_default_loop(), &fs_req, file, NULL);
+ r = uv_fs_close(NULL, &fs_req, file, NULL);
ASSERT(r == 0);
uv_fs_req_cleanup(&fs_req);
@@ -389,7 +389,7 @@ TEST_IMPL(spawn_stdout_and_stderr_to_file2) {
init_process_options("spawn_helper6", exit_cb);
/* Replace stderr with our file */
- r = uv_fs_open(uv_default_loop(),
+ r = uv_fs_open(NULL,
&fs_req,
"stdout_file",
O_CREAT | O_RDWR,
@@ -418,11 +418,11 @@ TEST_IMPL(spawn_stdout_and_stderr_to_file2) {
ASSERT(close_cb_called == 1);
buf = uv_buf_init(output, sizeof(output));
- r = uv_fs_read(uv_default_loop(), &fs_req, file, &buf, 1, 0, NULL);
+ r = uv_fs_read(NULL, &fs_req, file, &buf, 1, 0, NULL);
ASSERT(r == 27);
uv_fs_req_cleanup(&fs_req);
- r = uv_fs_close(uv_default_loop(), &fs_req, file, NULL);
+ r = uv_fs_close(NULL, &fs_req, file, NULL);
ASSERT(r == 0);
uv_fs_req_cleanup(&fs_req);
@@ -456,7 +456,7 @@ TEST_IMPL(spawn_stdout_and_stderr_to_file_swap) {
init_process_options("spawn_helper6", exit_cb);
/* open 'stdout_file' and replace STDOUT_FILENO with it */
- r = uv_fs_open(uv_default_loop(),
+ r = uv_fs_open(NULL,
&fs_req,
"stdout_file",
O_CREAT | O_RDWR,
@@ -468,7 +468,7 @@ TEST_IMPL(spawn_stdout_and_stderr_to_file_swap) {
ASSERT(stdout_file != -1);
/* open 'stderr_file' and replace STDERR_FILENO with it */
- r = uv_fs_open(uv_default_loop(), &fs_req, "stderr_file", O_CREAT | O_RDWR,
+ r = uv_fs_open(NULL, &fs_req, "stderr_file", O_CREAT | O_RDWR,
S_IRUSR | S_IWUSR, NULL);
ASSERT(r != -1);
uv_fs_req_cleanup(&fs_req);
@@ -497,11 +497,11 @@ TEST_IMPL(spawn_stdout_and_stderr_to_file_swap) {
buf = uv_buf_init(output, sizeof(output));
/* check the content of stdout_file */
- r = uv_fs_read(uv_default_loop(), &fs_req, stdout_file, &buf, 1, 0, NULL);
+ r = uv_fs_read(NULL, &fs_req, stdout_file, &buf, 1, 0, NULL);
ASSERT(r >= 15);
uv_fs_req_cleanup(&fs_req);
- r = uv_fs_close(uv_default_loop(), &fs_req, stdout_file, NULL);
+ r = uv_fs_close(NULL, &fs_req, stdout_file, NULL);
ASSERT(r == 0);
uv_fs_req_cleanup(&fs_req);
@@ -509,11 +509,11 @@ TEST_IMPL(spawn_stdout_and_stderr_to_file_swap) {
ASSERT(strncmp("hello errworld\n", output, 15) == 0);
/* check the content of stderr_file */
- r = uv_fs_read(uv_default_loop(), &fs_req, stderr_file, &buf, 1, 0, NULL);
+ r = uv_fs_read(NULL, &fs_req, stderr_file, &buf, 1, 0, NULL);
ASSERT(r >= 12);
uv_fs_req_cleanup(&fs_req);
- r = uv_fs_close(uv_default_loop(), &fs_req, stderr_file, NULL);
+ r = uv_fs_close(NULL, &fs_req, stderr_file, NULL);
ASSERT(r == 0);
uv_fs_req_cleanup(&fs_req);
@@ -994,6 +994,7 @@ TEST_IMPL(spawn_detect_pipe_name_collisions_on_windows) {
}
+#if !defined(USING_UV_SHARED)
int make_program_args(char** args, int verbatim_arguments, WCHAR** dst_ptr);
WCHAR* quote_cmd_arg(const WCHAR *source, WCHAR *target);
@@ -1196,6 +1197,7 @@ TEST_IMPL(environment_creation) {
return 0;
}
+#endif
/* Regression test for issue #909 */
TEST_IMPL(spawn_with_an_odd_path) {
@@ -1397,8 +1399,9 @@ TEST_IMPL(spawn_fs_open) {
uv_buf_t buf;
uv_stdio_container_t stdio[1];
- fd = uv_fs_open(uv_default_loop(), &fs_req, "/dev/null", O_RDWR, 0, NULL);
+ fd = uv_fs_open(NULL, &fs_req, "/dev/null", O_RDWR, 0, NULL);
ASSERT(fd >= 0);
+ uv_fs_req_cleanup(&fs_req);
init_process_options("spawn_helper8", exit_cb);
@@ -1415,7 +1418,7 @@ TEST_IMPL(spawn_fs_open) {
ASSERT(0 == uv_write(&write_req, (uv_stream_t*) &in, &buf, 1, write_cb));
ASSERT(0 == uv_run(uv_default_loop(), UV_RUN_DEFAULT));
- ASSERT(0 == uv_fs_close(uv_default_loop(), &fs_req, fd, NULL));
+ ASSERT(0 == uv_fs_close(NULL, &fs_req, fd, NULL));
ASSERT(exit_cb_called == 1);
ASSERT(close_cb_called == 2); /* One for `in`, one for process */
@@ -1540,3 +1543,164 @@ TEST_IMPL(spawn_reads_child_path) {
MAKE_VALGRIND_HAPPY();
return 0;
}
+
+#ifndef _WIN32
+static int mpipe(int *fds) {
+ if (pipe(fds) == -1)
+ return -1;
+ if (fcntl(fds[0], F_SETFD, FD_CLOEXEC) == -1 ||
+ fcntl(fds[1], F_SETFD, FD_CLOEXEC) == -1) {
+ close(fds[0]);
+ close(fds[1]);
+ return -1;
+ }
+ return 0;
+}
+#else
+static int mpipe(int *fds) {
+ SECURITY_ATTRIBUTES attr;
+ HANDLE readh, writeh;
+ attr.nLength = sizeof(attr);
+ attr.lpSecurityDescriptor = NULL;
+ attr.bInheritHandle = FALSE;
+ if (!CreatePipe(&readh, &writeh, &attr, 0))
+ return -1;
+ fds[0] = _open_osfhandle((intptr_t)readh, 0);
+ fds[1] = _open_osfhandle((intptr_t)writeh, 0);
+ if (fds[0] == -1 || fds[1] == -1) {
+ CloseHandle(readh);
+ CloseHandle(writeh);
+ return -1;
+ }
+ return 0;
+}
+#endif /* !_WIN32 */
+
+TEST_IMPL(spawn_inherit_streams) {
+ uv_process_t child_req;
+ uv_stdio_container_t child_stdio[2];
+ int fds_stdin[2];
+ int fds_stdout[2];
+ uv_pipe_t pipe_stdin_child;
+ uv_pipe_t pipe_stdout_child;
+ uv_pipe_t pipe_stdin_parent;
+ uv_pipe_t pipe_stdout_parent;
+ unsigned char ubuf[OUTPUT_SIZE - 1];
+ uv_buf_t buf;
+ unsigned int i;
+ int r;
+ uv_write_t write_req;
+ uv_loop_t* loop;
+
+ init_process_options("spawn_helper9", exit_cb);
+
+ loop = uv_default_loop();
+ ASSERT(uv_pipe_init(loop, &pipe_stdin_child, 0) == 0);
+ ASSERT(uv_pipe_init(loop, &pipe_stdout_child, 0) == 0);
+ ASSERT(uv_pipe_init(loop, &pipe_stdin_parent, 0) == 0);
+ ASSERT(uv_pipe_init(loop, &pipe_stdout_parent, 0) == 0);
+
+ ASSERT(mpipe(fds_stdin) != -1);
+ ASSERT(mpipe(fds_stdout) != -1);
+
+ ASSERT(uv_pipe_open(&pipe_stdin_child, fds_stdin[0]) == 0);
+ ASSERT(uv_pipe_open(&pipe_stdout_child, fds_stdout[1]) == 0);
+ ASSERT(uv_pipe_open(&pipe_stdin_parent, fds_stdin[1]) == 0);
+ ASSERT(uv_pipe_open(&pipe_stdout_parent, fds_stdout[0]) == 0);
+
+ child_stdio[0].flags = UV_INHERIT_STREAM;
+ child_stdio[0].data.stream = (uv_stream_t *)&pipe_stdin_child;
+
+ child_stdio[1].flags = UV_INHERIT_STREAM;
+ child_stdio[1].data.stream = (uv_stream_t *)&pipe_stdout_child;
+
+ options.stdio = child_stdio;
+ options.stdio_count = 2;
+
+ ASSERT(uv_spawn(loop, &child_req, &options) == 0);
+
+ uv_close((uv_handle_t*)&pipe_stdin_child, NULL);
+ uv_close((uv_handle_t*)&pipe_stdout_child, NULL);
+
+ buf = uv_buf_init((char*)ubuf, sizeof ubuf);
+ for (i = 0; i < sizeof ubuf; ++i)
+ ubuf[i] = i & 255u;
+ memset(output, 0, sizeof ubuf);
+
+ r = uv_write(&write_req,
+ (uv_stream_t*)&pipe_stdin_parent,
+ &buf,
+ 1,
+ write_cb);
+ ASSERT(r == 0);
+
+ r = uv_read_start((uv_stream_t*)&pipe_stdout_parent, on_alloc, on_read);
+ ASSERT(r == 0);
+
+ r = uv_run(loop, UV_RUN_DEFAULT);
+ ASSERT(r == 0);
+
+ ASSERT(exit_cb_called == 1);
+ ASSERT(close_cb_called == 3);
+
+ r = memcmp(ubuf, output, sizeof ubuf);
+ ASSERT(r == 0);
+
+ MAKE_VALGRIND_HAPPY();
+ return 0;
+}
+
+/* Helper for child process of spawn_inherit_streams */
+#ifndef _WIN32
+int spawn_stdin_stdout(void) {
+ char buf[1024];
+ char* pbuf;
+ for (;;) {
+ ssize_t r, w, c;
+ do {
+ r = read(0, buf, sizeof buf);
+ } while (r == -1 && errno == EINTR);
+ if (r == 0) {
+ return 1;
+ }
+ ASSERT(r > 0);
+ c = r;
+ pbuf = buf;
+ while (c) {
+ do {
+ w = write(1, pbuf, (size_t)c);
+ } while (w == -1 && errno == EINTR);
+ ASSERT(w >= 0);
+ pbuf = pbuf + w;
+ c = c - w;
+ }
+ }
+ return 2;
+}
+#else
+int spawn_stdin_stdout(void) {
+ char buf[1024];
+ char* pbuf;
+ HANDLE h_stdin = GetStdHandle(STD_INPUT_HANDLE);
+ HANDLE h_stdout = GetStdHandle(STD_OUTPUT_HANDLE);
+ ASSERT(h_stdin != INVALID_HANDLE_VALUE);
+ ASSERT(h_stdout != INVALID_HANDLE_VALUE);
+ for (;;) {
+ DWORD n_read;
+ DWORD n_written;
+ DWORD to_write;
+ if (!ReadFile(h_stdin, buf, sizeof buf, &n_read, NULL)) {
+ ASSERT(GetLastError() == ERROR_BROKEN_PIPE);
+ return 1;
+ }
+ to_write = n_read;
+ pbuf = buf;
+ while (to_write) {
+ ASSERT(WriteFile(h_stdout, pbuf, to_write, &n_written, NULL));
+ to_write -= n_written;
+ pbuf += n_written;
+ }
+ }
+ return 2;
+}
+#endif /* !_WIN32 */
diff --git a/deps/uv/test/test-tcp-close-while-connecting.c b/deps/uv/test/test-tcp-close-while-connecting.c
index 0a69a0ddee7f8f..2c39b652b61078 100644
--- a/deps/uv/test/test-tcp-close-while-connecting.c
+++ b/deps/uv/test/test-tcp-close-while-connecting.c
@@ -59,14 +59,18 @@ TEST_IMPL(tcp_close_while_connecting) {
uv_connect_t connect_req;
struct sockaddr_in addr;
uv_loop_t* loop;
+ int r;
loop = uv_default_loop();
ASSERT(0 == uv_ip4_addr("1.2.3.4", TEST_PORT, &addr));
ASSERT(0 == uv_tcp_init(loop, &tcp_handle));
- ASSERT(0 == uv_tcp_connect(&connect_req,
- &tcp_handle,
- (const struct sockaddr*) &addr,
- connect_cb));
+ r = uv_tcp_connect(&connect_req,
+ &tcp_handle,
+ (const struct sockaddr*) &addr,
+ connect_cb);
+ if (r == UV_ENETUNREACH)
+ RETURN_SKIP("Network unreachable.");
+ ASSERT(r == 0);
ASSERT(0 == uv_timer_init(loop, &timer1_handle));
ASSERT(0 == uv_timer_start(&timer1_handle, timer1_cb, 50, 0));
ASSERT(0 == uv_timer_init(loop, &timer2_handle));
diff --git a/deps/uv/test/test-tcp-connect-timeout.c b/deps/uv/test/test-tcp-connect-timeout.c
index a22c773c6d818b..081424b80023cf 100644
--- a/deps/uv/test/test-tcp-connect-timeout.c
+++ b/deps/uv/test/test-tcp-connect-timeout.c
@@ -79,6 +79,8 @@ TEST_IMPL(tcp_connect_timeout) {
&conn,
(const struct sockaddr*) &addr,
connect_cb);
+ if (r == UV_ENETUNREACH)
+ RETURN_SKIP("Network unreachable.");
ASSERT(r == 0);
r = uv_run(uv_default_loop(), UV_RUN_DEFAULT);
diff --git a/deps/uv/test/test-tcp-create-socket-early.c b/deps/uv/test/test-tcp-create-socket-early.c
new file mode 100644
index 00000000000000..65650adcc27919
--- /dev/null
+++ b/deps/uv/test/test-tcp-create-socket-early.c
@@ -0,0 +1,206 @@
+/* Copyright (c) 2015 Saúl Ibarra Corretgé .
+ * All rights reserved.
+ *
+ * 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.
+ */
+
+#include "uv.h"
+#include "task.h"
+#include
+
+#ifdef _WIN32
+# define INVALID_FD (INVALID_HANDLE_VALUE)
+#else
+# define INVALID_FD (-1)
+#endif
+
+
+static void on_connect(uv_connect_t* req, int status) {
+ ASSERT(status == 0);
+ uv_close((uv_handle_t*) req->handle, NULL);
+}
+
+
+static void on_connection(uv_stream_t* server, int status) {
+ uv_tcp_t* handle;
+ int r;
+
+ ASSERT(status == 0);
+
+ handle = malloc(sizeof(*handle));
+ ASSERT(handle != NULL);
+
+ r = uv_tcp_init_ex(server->loop, handle, AF_INET);
+ ASSERT(r == 0);
+
+ r = uv_accept(server, (uv_stream_t*)handle);
+ ASSERT(r == UV_EBUSY);
+
+ uv_close((uv_handle_t*) server, NULL);
+ uv_close((uv_handle_t*) handle, (uv_close_cb)free);
+}
+
+
+static void tcp_listener(uv_loop_t* loop, uv_tcp_t* server) {
+ struct sockaddr_in addr;
+ int r;
+
+ ASSERT(0 == uv_ip4_addr("0.0.0.0", TEST_PORT, &addr));
+
+ r = uv_tcp_init(loop, server);
+ ASSERT(r == 0);
+
+ r = uv_tcp_bind(server, (const struct sockaddr*) &addr, 0);
+ ASSERT(r == 0);
+
+ r = uv_listen((uv_stream_t*) server, 128, on_connection);
+ ASSERT(r == 0);
+}
+
+
+static void tcp_connector(uv_loop_t* loop, uv_tcp_t* client, uv_connect_t* req) {
+ struct sockaddr_in server_addr;
+ int r;
+
+ ASSERT(0 == uv_ip4_addr("127.0.0.1", TEST_PORT, &server_addr));
+
+ r = uv_tcp_init(loop, client);
+ ASSERT(r == 0);
+
+ r = uv_tcp_connect(req,
+ client,
+ (const struct sockaddr*) &server_addr,
+ on_connect);
+ ASSERT(r == 0);
+}
+
+
+TEST_IMPL(tcp_create_early) {
+ struct sockaddr_in addr;
+ struct sockaddr_in sockname;
+ uv_tcp_t client;
+ uv_os_fd_t fd;
+ int r, namelen;
+
+ ASSERT(0 == uv_ip4_addr("127.0.0.1", TEST_PORT, &addr));
+
+ r = uv_tcp_init_ex(uv_default_loop(), &client, AF_INET);
+ ASSERT(r == 0);
+
+ r = uv_fileno((const uv_handle_t*) &client, &fd);
+ ASSERT(r == 0);
+ ASSERT(fd != INVALID_FD);
+
+ /* Windows returns WSAEINVAL if the socket is not bound */
+#ifndef _WIN32
+ namelen = sizeof sockname;
+ r = uv_tcp_getsockname(&client, (struct sockaddr*) &sockname, &namelen);
+ ASSERT(r == 0);
+ ASSERT(sockname.sin_family == AF_INET);
+#endif
+
+ r = uv_tcp_bind(&client, (const struct sockaddr*) &addr, 0);
+ ASSERT(r == 0);
+
+ namelen = sizeof sockname;
+ r = uv_tcp_getsockname(&client, (struct sockaddr*) &sockname, &namelen);
+ ASSERT(r == 0);
+ ASSERT(memcmp(&addr.sin_addr,
+ &sockname.sin_addr,
+ sizeof(addr.sin_addr)) == 0);
+
+ uv_close((uv_handle_t*) &client, NULL);
+ uv_run(uv_default_loop(), UV_RUN_DEFAULT);
+
+ MAKE_VALGRIND_HAPPY();
+ return 0;
+}
+
+
+TEST_IMPL(tcp_create_early_bad_bind) {
+ struct sockaddr_in addr;
+ uv_tcp_t client;
+ uv_os_fd_t fd;
+ int r;
+
+ ASSERT(0 == uv_ip4_addr("127.0.0.1", TEST_PORT, &addr));
+
+ r = uv_tcp_init_ex(uv_default_loop(), &client, AF_INET6);
+ ASSERT(r == 0);
+
+ r = uv_fileno((const uv_handle_t*) &client, &fd);
+ ASSERT(r == 0);
+ ASSERT(fd != INVALID_FD);
+
+ /* Windows returns WSAEINVAL if the socket is not bound */
+#ifndef _WIN32
+ {
+ int namelen;
+ struct sockaddr_in6 sockname;
+ namelen = sizeof sockname;
+ r = uv_tcp_getsockname(&client, (struct sockaddr*) &sockname, &namelen);
+ ASSERT(r == 0);
+ ASSERT(sockname.sin6_family == AF_INET6);
+ }
+#endif
+
+ r = uv_tcp_bind(&client, (const struct sockaddr*) &addr, 0);
+#ifndef _WIN32
+ ASSERT(r == UV_EINVAL);
+#else
+ ASSERT(r == UV_EFAULT);
+#endif
+
+ uv_close((uv_handle_t*) &client, NULL);
+ uv_run(uv_default_loop(), UV_RUN_DEFAULT);
+
+ MAKE_VALGRIND_HAPPY();
+ return 0;
+}
+
+
+TEST_IMPL(tcp_create_early_bad_domain) {
+ uv_tcp_t client;
+ int r;
+
+ r = uv_tcp_init_ex(uv_default_loop(), &client, 47);
+ ASSERT(r == UV_EINVAL);
+
+ r = uv_tcp_init_ex(uv_default_loop(), &client, 1024);
+ ASSERT(r == UV_EINVAL);
+
+ uv_run(uv_default_loop(), UV_RUN_DEFAULT);
+
+ MAKE_VALGRIND_HAPPY();
+ return 0;
+}
+
+
+TEST_IMPL(tcp_create_early_accept) {
+ uv_tcp_t client, server;
+ uv_connect_t connect_req;
+
+ tcp_listener(uv_default_loop(), &server);
+ tcp_connector(uv_default_loop(), &client, &connect_req);
+
+ uv_run(uv_default_loop(), UV_RUN_DEFAULT);
+
+ MAKE_VALGRIND_HAPPY();
+ return 0;
+}
diff --git a/deps/uv/test/test-tcp-open.c b/deps/uv/test/test-tcp-open.c
index edeacc70e4faf9..6c8d43d0009e79 100644
--- a/deps/uv/test/test-tcp-open.c
+++ b/deps/uv/test/test-tcp-open.c
@@ -71,6 +71,17 @@ static uv_os_sock_t create_tcp_socket(void) {
}
+static void close_socket(uv_os_sock_t sock) {
+ int r;
+#ifdef _WIN32
+ r = closesocket(sock);
+#else
+ r = close(sock);
+#endif
+ ASSERT(r == 0);
+}
+
+
static void alloc_cb(uv_handle_t* handle,
size_t suggested_size,
uv_buf_t* buf) {
@@ -180,3 +191,30 @@ TEST_IMPL(tcp_open) {
MAKE_VALGRIND_HAPPY();
return 0;
}
+
+
+TEST_IMPL(tcp_open_twice) {
+ uv_tcp_t client;
+ uv_os_sock_t sock1, sock2;
+ int r;
+
+ startup();
+ sock1 = create_tcp_socket();
+ sock2 = create_tcp_socket();
+
+ r = uv_tcp_init(uv_default_loop(), &client);
+ ASSERT(r == 0);
+
+ r = uv_tcp_open(&client, sock1);
+ ASSERT(r == 0);
+
+ r = uv_tcp_open(&client, sock2);
+ ASSERT(r == UV_EBUSY);
+ close_socket(sock2);
+
+ uv_close((uv_handle_t*) &client, NULL);
+ uv_run(uv_default_loop(), UV_RUN_DEFAULT);
+
+ MAKE_VALGRIND_HAPPY();
+ return 0;
+}
diff --git a/deps/uv/test/test-tcp-squelch-connreset.c b/deps/uv/test/test-tcp-squelch-connreset.c
new file mode 100644
index 00000000000000..f1c57437977918
--- /dev/null
+++ b/deps/uv/test/test-tcp-squelch-connreset.c
@@ -0,0 +1,119 @@
+/* Copyright (c) 2015, Santiago Gimeno
+ *
+ * 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.
+ */
+
+#include "uv.h"
+#include "task.h"
+#include
+#include
+
+
+static uv_tcp_t tcp_server;
+static uv_tcp_t tcp_client;
+static uv_tcp_t tcp_server_client;
+static uv_connect_t connect_req;
+static uv_write_t write_req;
+
+static void alloc_cb(uv_handle_t* handle,
+ size_t size,
+ uv_buf_t* buf) {
+ buf->base = malloc(size);
+ buf->len = size;
+}
+
+static void read_cb(uv_stream_t* tcp, ssize_t nread, const uv_buf_t* buf) {
+ free(buf->base);
+ ASSERT(nread == UV_EOF);
+}
+
+static void on_connect(uv_connect_t* req, int status) {
+ int r;
+ uv_buf_t outbuf;
+
+ ASSERT(req != NULL);
+ ASSERT(status == 0);
+
+ outbuf = uv_buf_init("ping", 4);
+ r = uv_write(&write_req, (uv_stream_t*) req->handle, &outbuf, 1, NULL);
+ ASSERT(r == 0);
+
+ r = uv_read_start((uv_stream_t*) req->handle, alloc_cb, read_cb);
+ ASSERT(r == 0);
+}
+
+static void on_connection(uv_stream_t* server, int status) {
+ int r;
+
+ ASSERT(status == 0);
+
+ r = uv_tcp_init(uv_default_loop(), &tcp_server_client);
+ ASSERT(r == 0);
+
+ r = uv_accept(server, (uv_stream_t*) &tcp_server_client);
+ ASSERT(r == 0);
+
+ uv_close((uv_handle_t*) &tcp_server_client, NULL);
+ uv_close((uv_handle_t*) &tcp_server, NULL);
+}
+
+static void start_server(void) {
+ struct sockaddr_in addr;
+ int r;
+
+ ASSERT(0 == uv_ip4_addr("0.0.0.0", TEST_PORT, &addr));
+
+ r = uv_tcp_init(uv_default_loop(), &tcp_server);
+ ASSERT(r == 0);
+
+ r = uv_tcp_bind(&tcp_server, (const struct sockaddr*) &addr, 0);
+ ASSERT(r == 0);
+
+ r = uv_listen((uv_stream_t*) &tcp_server, SOMAXCONN, on_connection);
+ ASSERT(r == 0);
+}
+
+static void start_client(void) {
+ struct sockaddr_in addr;
+ int r;
+
+ ASSERT(0 == uv_ip4_addr("127.0.0.1", TEST_PORT, &addr));
+
+ r = uv_tcp_init(uv_default_loop(), &tcp_client);
+ ASSERT(r == 0);
+
+ r = uv_tcp_connect(&connect_req,
+ &tcp_client,
+ (const struct sockaddr*) &addr,
+ on_connect);
+ ASSERT(r == 0);
+}
+
+
+TEST_IMPL(tcp_squelch_connreset) {
+
+ start_server();
+
+ start_client();
+
+ uv_run(uv_default_loop(), UV_RUN_DEFAULT);
+
+ MAKE_VALGRIND_HAPPY();
+ return 0;
+}
diff --git a/deps/uv/test/test-threadpool-cancel.c b/deps/uv/test/test-threadpool-cancel.c
index f999cba818f924..cb456224516823 100644
--- a/deps/uv/test/test-threadpool-cancel.c
+++ b/deps/uv/test/test-threadpool-cancel.c
@@ -279,10 +279,12 @@ TEST_IMPL(threadpool_cancel_fs) {
uv_fs_t reqs[25];
uv_loop_t* loop;
unsigned n;
+ uv_buf_t iov;
INIT_CANCEL_INFO(&ci, reqs);
loop = uv_default_loop();
saturate_threadpool();
+ iov = uv_buf_init(NULL, 0);
/* Needs to match ARRAY_SIZE(fs_reqs). */
n = 0;
@@ -300,7 +302,7 @@ TEST_IMPL(threadpool_cancel_fs) {
ASSERT(0 == uv_fs_lstat(loop, reqs + n++, "/", fs_cb));
ASSERT(0 == uv_fs_mkdir(loop, reqs + n++, "/", 0, fs_cb));
ASSERT(0 == uv_fs_open(loop, reqs + n++, "/", 0, 0, fs_cb));
- ASSERT(0 == uv_fs_read(loop, reqs + n++, 0, NULL, 0, 0, fs_cb));
+ ASSERT(0 == uv_fs_read(loop, reqs + n++, 0, &iov, 1, 0, fs_cb));
ASSERT(0 == uv_fs_scandir(loop, reqs + n++, "/", 0, fs_cb));
ASSERT(0 == uv_fs_readlink(loop, reqs + n++, "/", fs_cb));
ASSERT(0 == uv_fs_rename(loop, reqs + n++, "/", "/", fs_cb));
@@ -310,7 +312,7 @@ TEST_IMPL(threadpool_cancel_fs) {
ASSERT(0 == uv_fs_symlink(loop, reqs + n++, "/", "/", 0, fs_cb));
ASSERT(0 == uv_fs_unlink(loop, reqs + n++, "/", fs_cb));
ASSERT(0 == uv_fs_utime(loop, reqs + n++, "/", 0, 0, fs_cb));
- ASSERT(0 == uv_fs_write(loop, reqs + n++, 0, NULL, 0, 0, fs_cb));
+ ASSERT(0 == uv_fs_write(loop, reqs + n++, 0, &iov, 1, 0, fs_cb));
ASSERT(n == ARRAY_SIZE(reqs));
ASSERT(0 == uv_timer_init(loop, &ci.timer_handle));
diff --git a/deps/uv/test/test-udp-create-socket-early.c b/deps/uv/test/test-udp-create-socket-early.c
new file mode 100644
index 00000000000000..3d0152428b8bc9
--- /dev/null
+++ b/deps/uv/test/test-udp-create-socket-early.c
@@ -0,0 +1,132 @@
+/* Copyright (c) 2015 Saúl Ibarra Corretgé .
+ * All rights reserved.
+ *
+ * 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.
+ */
+
+#include "uv.h"
+#include "task.h"
+#include
+
+#ifdef _WIN32
+# define INVALID_FD (INVALID_HANDLE_VALUE)
+#else
+# define INVALID_FD (-1)
+#endif
+
+
+TEST_IMPL(udp_create_early) {
+ struct sockaddr_in addr;
+ struct sockaddr_in sockname;
+ uv_udp_t client;
+ uv_os_fd_t fd;
+ int r, namelen;
+
+ ASSERT(0 == uv_ip4_addr("127.0.0.1", TEST_PORT, &addr));
+
+ r = uv_udp_init_ex(uv_default_loop(), &client, AF_INET);
+ ASSERT(r == 0);
+
+ r = uv_fileno((const uv_handle_t*) &client, &fd);
+ ASSERT(r == 0);
+ ASSERT(fd != INVALID_FD);
+
+ /* Windows returns WSAEINVAL if the socket is not bound */
+#ifndef _WIN32
+ namelen = sizeof sockname;
+ r = uv_udp_getsockname(&client, (struct sockaddr*) &sockname, &namelen);
+ ASSERT(r == 0);
+ ASSERT(sockname.sin_family == AF_INET);
+#endif
+
+ r = uv_udp_bind(&client, (const struct sockaddr*) &addr, 0);
+ ASSERT(r == 0);
+
+ namelen = sizeof sockname;
+ r = uv_udp_getsockname(&client, (struct sockaddr*) &sockname, &namelen);
+ ASSERT(r == 0);
+ ASSERT(memcmp(&addr.sin_addr,
+ &sockname.sin_addr,
+ sizeof(addr.sin_addr)) == 0);
+
+ uv_close((uv_handle_t*) &client, NULL);
+ uv_run(uv_default_loop(), UV_RUN_DEFAULT);
+
+ MAKE_VALGRIND_HAPPY();
+ return 0;
+}
+
+
+TEST_IMPL(udp_create_early_bad_bind) {
+ struct sockaddr_in addr;
+ uv_udp_t client;
+ uv_os_fd_t fd;
+ int r;
+
+ ASSERT(0 == uv_ip4_addr("127.0.0.1", TEST_PORT, &addr));
+
+ r = uv_udp_init_ex(uv_default_loop(), &client, AF_INET6);
+ ASSERT(r == 0);
+
+ r = uv_fileno((const uv_handle_t*) &client, &fd);
+ ASSERT(r == 0);
+ ASSERT(fd != INVALID_FD);
+
+ /* Windows returns WSAEINVAL if the socket is not bound */
+#ifndef _WIN32
+ {
+ int namelen;
+ struct sockaddr_in6 sockname;
+ namelen = sizeof sockname;
+ r = uv_udp_getsockname(&client, (struct sockaddr*) &sockname, &namelen);
+ ASSERT(r == 0);
+ ASSERT(sockname.sin6_family == AF_INET6);
+ }
+#endif
+
+ r = uv_udp_bind(&client, (const struct sockaddr*) &addr, 0);
+#ifndef _WIN32
+ ASSERT(r == UV_EINVAL);
+#else
+ ASSERT(r == UV_EFAULT);
+#endif
+
+ uv_close((uv_handle_t*) &client, NULL);
+ uv_run(uv_default_loop(), UV_RUN_DEFAULT);
+
+ MAKE_VALGRIND_HAPPY();
+ return 0;
+}
+
+
+TEST_IMPL(udp_create_early_bad_domain) {
+ uv_udp_t client;
+ int r;
+
+ r = uv_udp_init_ex(uv_default_loop(), &client, 47);
+ ASSERT(r == UV_EINVAL);
+
+ r = uv_udp_init_ex(uv_default_loop(), &client, 1024);
+ ASSERT(r == UV_EINVAL);
+
+ uv_run(uv_default_loop(), UV_RUN_DEFAULT);
+
+ MAKE_VALGRIND_HAPPY();
+ return 0;
+}
diff --git a/deps/uv/test/test-udp-multicast-interface.c b/deps/uv/test/test-udp-multicast-interface.c
index f0679c578e2fc0..71001a77e03e18 100644
--- a/deps/uv/test/test-udp-multicast-interface.c
+++ b/deps/uv/test/test-udp-multicast-interface.c
@@ -44,7 +44,7 @@ static void close_cb(uv_handle_t* handle) {
static void sv_send_cb(uv_udp_send_t* req, int status) {
ASSERT(req != NULL);
- ASSERT(status == 0);
+ ASSERT(status == 0 || status == UV_ENETUNREACH);
CHECK_HANDLE(req->handle);
sv_send_cb_called++;
diff --git a/deps/uv/test/test-udp-multicast-join.c b/deps/uv/test/test-udp-multicast-join.c
index 686edf3d22d59a..6110a8d922a0b9 100644
--- a/deps/uv/test/test-udp-multicast-join.c
+++ b/deps/uv/test/test-udp-multicast-join.c
@@ -116,6 +116,8 @@ TEST_IMPL(udp_multicast_join) {
/* join the multicast channel */
r = uv_udp_set_membership(&client, "239.255.0.1", NULL, UV_JOIN_GROUP);
+ if (r == UV_ENODEV)
+ RETURN_SKIP("No multicast support.");
ASSERT(r == 0);
r = uv_udp_recv_start(&client, alloc_cb, cl_recv_cb);
diff --git a/deps/uv/test/test-udp-multicast-join6.c b/deps/uv/test/test-udp-multicast-join6.c
index 9ba201ab9eba98..873cb6d811d749 100644
--- a/deps/uv/test/test-udp-multicast-join6.c
+++ b/deps/uv/test/test-udp-multicast-join6.c
@@ -124,6 +124,11 @@ TEST_IMPL(udp_multicast_join6) {
#else
r = uv_udp_set_membership(&client, "ff02::1", NULL, UV_JOIN_GROUP);
#endif
+ if (r == UV_ENODEV) {
+ MAKE_VALGRIND_HAPPY();
+ RETURN_SKIP("No ipv6 multicast route");
+ }
+
ASSERT(r == 0);
r = uv_udp_recv_start(&client, alloc_cb, cl_recv_cb);
diff --git a/deps/uv/test/test-udp-multicast-ttl.c b/deps/uv/test/test-udp-multicast-ttl.c
index bed0ea134259d5..7f1af9b9dd9bd2 100644
--- a/deps/uv/test/test-udp-multicast-ttl.c
+++ b/deps/uv/test/test-udp-multicast-ttl.c
@@ -44,7 +44,7 @@ static void close_cb(uv_handle_t* handle) {
static void sv_send_cb(uv_udp_send_t* req, int status) {
ASSERT(req != NULL);
- ASSERT(status == 0);
+ ASSERT(status == 0 || status == UV_ENETUNREACH);
CHECK_HANDLE(req->handle);
sv_send_cb_called++;
diff --git a/deps/uv/test/test-udp-open.c b/deps/uv/test/test-udp-open.c
index b2b6117784b810..4d77f45d367eae 100644
--- a/deps/uv/test/test-udp-open.c
+++ b/deps/uv/test/test-udp-open.c
@@ -67,6 +67,17 @@ static uv_os_sock_t create_udp_socket(void) {
}
+static void close_socket(uv_os_sock_t sock) {
+ int r;
+#ifdef _WIN32
+ r = closesocket(sock);
+#else
+ r = close(sock);
+#endif
+ ASSERT(r == 0);
+}
+
+
static void alloc_cb(uv_handle_t* handle,
size_t suggested_size,
uv_buf_t* buf) {
@@ -164,3 +175,30 @@ TEST_IMPL(udp_open) {
MAKE_VALGRIND_HAPPY();
return 0;
}
+
+
+TEST_IMPL(udp_open_twice) {
+ uv_udp_t client;
+ uv_os_sock_t sock1, sock2;
+ int r;
+
+ startup();
+ sock1 = create_udp_socket();
+ sock2 = create_udp_socket();
+
+ r = uv_udp_init(uv_default_loop(), &client);
+ ASSERT(r == 0);
+
+ r = uv_udp_open(&client, sock1);
+ ASSERT(r == 0);
+
+ r = uv_udp_open(&client, sock2);
+ ASSERT(r == UV_EBUSY);
+ close_socket(sock2);
+
+ uv_close((uv_handle_t*) &client, NULL);
+ uv_run(uv_default_loop(), UV_RUN_DEFAULT);
+
+ MAKE_VALGRIND_HAPPY();
+ return 0;
+}
diff --git a/deps/uv/uv.gyp b/deps/uv/uv.gyp
index 7173a827a371ed..8049faa7a66929 100644
--- a/deps/uv/uv.gyp
+++ b/deps/uv/uv.gyp
@@ -326,8 +326,10 @@
'test/test-ping-pong.c',
'test/test-pipe-bind-error.c',
'test/test-pipe-connect-error.c',
+ 'test/test-pipe-connect-multiple.c',
'test/test-pipe-connect-prepare.c',
'test/test-pipe-getsockname.c',
+ 'test/test-pipe-pending-instances.c',
'test/test-pipe-sendmsg.c',
'test/test-pipe-server-close.c',
'test/test-pipe-close-stdout-read-stdin.c',
@@ -356,6 +358,7 @@
'test/test-tcp-close.c',
'test/test-tcp-close-accept.c',
'test/test-tcp-close-while-connecting.c',
+ 'test/test-tcp-create-socket-early.c',
'test/test-tcp-connect-error-after-write.c',
'test/test-tcp-shutdown-after-write.c',
'test/test-tcp-flags.c',
@@ -384,6 +387,7 @@
'test/test-timer.c',
'test/test-tty.c',
'test/test-udp-bind.c',
+ 'test/test-udp-create-socket-early.c',
'test/test-udp-dgram-too-big.c',
'test/test-udp-ipv6.c',
'test/test-udp-open.c',
@@ -427,6 +431,9 @@
'_XOPEN_SOURCE=500',
],
}],
+ ['uv_library=="shared_library"', {
+ 'defines': [ 'USING_UV_SHARED=1' ]
+ }],
],
'msvs-settings': {
'VCLinkerTool': {
@@ -478,7 +485,10 @@
'test/runner-unix.c',
'test/runner-unix.h',
]
- }]
+ }],
+ ['uv_library=="shared_library"', {
+ 'defines': [ 'USING_UV_SHARED=1' ]
+ }],
],
'msvs-settings': {
'VCLinkerTool': {
diff --git a/deps/v8/.gitignore b/deps/v8/.gitignore
index cc424333d31334..d0a859c12dacf9 100644
--- a/deps/v8/.gitignore
+++ b/deps/v8/.gitignore
@@ -60,6 +60,8 @@ shell_g
/test/promises-aplus/promises-tests
/test/promises-aplus/promises-tests.tar.gz
/test/promises-aplus/sinon
+/test/simdjs/ecmascript_simd*
+/test/simdjs/data*
/test/test262/data
/test/test262/data.old
/test/test262/tc39-test262-*
diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS
index b0a9765b4436a5..4f853c275bc249 100644
--- a/deps/v8/AUTHORS
+++ b/deps/v8/AUTHORS
@@ -69,6 +69,7 @@ Kang-Hao (Kenny) Lu
Luis Reis
Luke Zarko
Maciej Małecki
+Marcin Cieślak
Mathias Bynens
Matt Hanselman
Matthew Sporleder
diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn
index feaec2505e8359..3eb7fc73eb9aae 100644
--- a/deps/v8/BUILD.gn
+++ b/deps/v8/BUILD.gn
@@ -52,7 +52,7 @@ config("internal_config") {
include_dirs = [ "." ]
- if (component_mode == "shared_library") {
+ if (is_component_build) {
defines = [
"V8_SHARED",
"BUILDING_V8_SHARED",
@@ -202,8 +202,9 @@ action("js2c") {
sources = [
"src/macros.py",
- "src/messages.h",
+ "src/messages.h",
"src/runtime.js",
+ "src/prologue.js",
"src/v8natives.js",
"src/symbol.js",
"src/array.js",
@@ -215,6 +216,7 @@ action("js2c") {
"src/regexp.js",
"src/arraybuffer.js",
"src/typedarray.js",
+ "src/iterator-prototype.js",
"src/generator.js",
"src/object-observe.js",
"src/collection.js",
@@ -229,6 +231,8 @@ action("js2c") {
"src/mirror-debugger.js",
"src/liveedit-debugger.js",
"src/templates.js",
+ "src/harmony-array.js",
+ "src/harmony-typedarray.js",
]
outputs = [
@@ -264,17 +268,18 @@ action("js2c_experimental") {
sources = [
"src/macros.py",
- "src/messages.h",
+ "src/messages.h",
"src/proxy.js",
"src/generator.js",
- "src/harmony-array.js",
+ "src/harmony-atomics.js",
"src/harmony-array-includes.js",
- "src/harmony-typedarray.js",
+ "src/harmony-concat-spreadable.js",
"src/harmony-tostring.js",
"src/harmony-regexp.js",
"src/harmony-reflect.js",
"src/harmony-spread.js",
- "src/harmony-object.js"
+ "src/harmony-object.js",
+ "src/harmony-sharedarraybuffer.js"
]
outputs = [
@@ -474,9 +479,13 @@ source_set("v8_snapshot") {
":js2c",
":js2c_experimental",
":js2c_extras",
- ":run_mksnapshot",
":v8_base",
]
+ public_deps = [
+ # This should be public so downstream targets can declare the snapshot
+ # output file as their inputs.
+ ":run_mksnapshot",
+ ]
sources = [
"$target_gen_dir/libraries.cc",
@@ -502,9 +511,11 @@ if (v8_use_external_startup_data) {
":js2c",
":js2c_experimental",
":js2c_extras",
- ":run_mksnapshot",
":v8_base",
+ ]
+ public_deps = [
":natives_blob",
+ ":run_mksnapshot",
]
sources = [
@@ -526,6 +537,14 @@ source_set("v8_base") {
visibility = [ ":*" ] # Only targets in this file can depend on this.
sources = [
+ "include/v8-debug.h",
+ "include/v8-platform.h",
+ "include/v8-profiler.h",
+ "include/v8-testing.h",
+ "include/v8-util.h",
+ "include/v8-version.h",
+ "include/v8.h",
+ "include/v8config.h",
"src/accessors.cc",
"src/accessors.h",
"src/allocation.cc",
@@ -544,6 +563,8 @@ source_set("v8_base") {
"src/assembler.h",
"src/assert-scope.h",
"src/assert-scope.cc",
+ "src/ast-literal-reindexer.cc",
+ "src/ast-literal-reindexer.h",
"src/ast-numbering.cc",
"src/ast-numbering.h",
"src/ast-value-factory.cc",
@@ -602,6 +623,8 @@ source_set("v8_base") {
"src/compiler/basic-block-instrumentor.h",
"src/compiler/change-lowering.cc",
"src/compiler/change-lowering.h",
+ "src/compiler/coalesced-live-ranges.cc",
+ "src/compiler/coalesced-live-ranges.h",
"src/compiler/code-generator-impl.h",
"src/compiler/code-generator.cc",
"src/compiler/code-generator.h",
@@ -617,8 +640,8 @@ source_set("v8_base") {
"src/compiler/control-equivalence.h",
"src/compiler/control-flow-optimizer.cc",
"src/compiler/control-flow-optimizer.h",
- "src/compiler/control-reducer.cc",
- "src/compiler/control-reducer.h",
+ "src/compiler/dead-code-elimination.cc",
+ "src/compiler/dead-code-elimination.h",
"src/compiler/diamond.h",
"src/compiler/frame.h",
"src/compiler/frame-elider.cc",
@@ -632,10 +655,14 @@ source_set("v8_base") {
"src/compiler/graph-reducer.h",
"src/compiler/graph-replay.cc",
"src/compiler/graph-replay.h",
+ "src/compiler/graph-trimmer.cc",
+ "src/compiler/graph-trimmer.h",
"src/compiler/graph-visualizer.cc",
"src/compiler/graph-visualizer.h",
"src/compiler/graph.cc",
"src/compiler/graph.h",
+ "src/compiler/greedy-allocator.cc",
+ "src/compiler/greedy-allocator.h",
"src/compiler/instruction-codes.h",
"src/compiler/instruction-selector-impl.h",
"src/compiler/instruction-selector.cc",
@@ -646,6 +673,8 @@ source_set("v8_base") {
"src/compiler/js-builtin-reducer.h",
"src/compiler/js-context-specialization.cc",
"src/compiler/js-context-specialization.h",
+ "src/compiler/js-frame-specialization.cc",
+ "src/compiler/js-frame-specialization.h",
"src/compiler/js-generic-lowering.cc",
"src/compiler/js-generic-lowering.h",
"src/compiler/js-graph.cc",
@@ -774,6 +803,7 @@ source_set("v8_base") {
"src/elements.h",
"src/execution.cc",
"src/execution.h",
+ "src/expression-classifier.h",
"src/extensions/externalize-string-extension.cc",
"src/extensions/externalize-string-extension.h",
"src/extensions/free-buffer-extension.cc",
@@ -830,6 +860,8 @@ source_set("v8_base") {
"src/heap/mark-compact-inl.h",
"src/heap/mark-compact.cc",
"src/heap/mark-compact.h",
+ "src/heap/memory-reducer.cc",
+ "src/heap/memory-reducer.h",
"src/heap/objects-visiting-inl.h",
"src/heap/objects-visiting.cc",
"src/heap/objects-visiting.h",
@@ -958,12 +990,11 @@ source_set("v8_base") {
"src/optimizing-compile-dispatcher.h",
"src/ostreams.cc",
"src/ostreams.h",
+ "src/pattern-rewriter.cc",
"src/parser.cc",
"src/parser.h",
"src/pending-compilation-error-handler.cc",
"src/pending-compilation-error-handler.h",
- "src/perf-jit.cc",
- "src/perf-jit.h",
"src/preparse-data-format.h",
"src/preparse-data.cc",
"src/preparse-data.h",
@@ -992,11 +1023,13 @@ source_set("v8_base") {
"src/runtime-profiler.cc",
"src/runtime-profiler.h",
"src/runtime/runtime-array.cc",
+ "src/runtime/runtime-atomics.cc",
"src/runtime/runtime-classes.cc",
"src/runtime/runtime-collections.cc",
"src/runtime/runtime-compiler.cc",
"src/runtime/runtime-date.cc",
"src/runtime/runtime-debug.cc",
+ "src/runtime/runtime-forin.cc",
"src/runtime/runtime-function.cc",
"src/runtime/runtime-generator.cc",
"src/runtime/runtime-i18n.cc",
@@ -1032,6 +1065,7 @@ source_set("v8_base") {
"src/scopes.cc",
"src/scopes.h",
"src/signature.h",
+ "src/simulator.h",
"src/small-pointer-list.h",
"src/smart-pointers.h",
"src/snapshot/natives.h",
@@ -1040,7 +1074,11 @@ source_set("v8_base") {
"src/snapshot/snapshot-common.cc",
"src/snapshot/snapshot-source-sink.cc",
"src/snapshot/snapshot-source-sink.h",
+ "src/splay-tree.h",
+ "src/splay-tree-inl.h",
"src/snapshot/snapshot.h",
+ "src/startup-data-util.h",
+ "src/startup-data-util.cc",
"src/string-builder.cc",
"src/string-builder.h",
"src/string-search.cc",
@@ -1089,6 +1127,8 @@ source_set("v8_base") {
"src/vm-state.h",
"src/zone.cc",
"src/zone.h",
+ "src/zone-allocator.h",
+ "src/zone-containers.h",
"src/third_party/fdlibm/fdlibm.cc",
"src/third_party/fdlibm/fdlibm.h",
]
@@ -1201,6 +1241,7 @@ source_set("v8_base") {
"src/arm/regexp-macro-assembler-arm.cc",
"src/arm/regexp-macro-assembler-arm.h",
"src/arm/simulator-arm.cc",
+ "src/arm/simulator-arm.h",
"src/compiler/arm/code-generator-arm.cc",
"src/compiler/arm/instruction-codes-arm.h",
"src/compiler/arm/instruction-selector-arm.cc",
@@ -1295,6 +1336,7 @@ source_set("v8_base") {
"src/mips/regexp-macro-assembler-mips.cc",
"src/mips/regexp-macro-assembler-mips.h",
"src/mips/simulator-mips.cc",
+ "src/mips/simulator-mips.h",
"src/compiler/mips/code-generator-mips.cc",
"src/compiler/mips/instruction-codes-mips.h",
"src/compiler/mips/instruction-selector-mips.cc",
@@ -1336,6 +1378,7 @@ source_set("v8_base") {
"src/mips64/regexp-macro-assembler-mips64.cc",
"src/mips64/regexp-macro-assembler-mips64.h",
"src/mips64/simulator-mips64.cc",
+ "src/mips64/simulator-mips64.h",
"src/ic/mips64/access-compiler-mips64.cc",
"src/ic/mips64/handler-compiler-mips64.cc",
"src/ic/mips64/ic-mips64.cc",
@@ -1399,6 +1442,8 @@ source_set("v8_libbase") {
"src/base/atomicops_internals_atomicword_compat.h",
"src/base/atomicops_internals_mac.h",
"src/base/atomicops_internals_mips_gcc.h",
+ "src/base/atomicops_internals_mips64_gcc.h",
+ "src/base/atomicops_internals_portable.h",
"src/base/atomicops_internals_tsan.h",
"src/base/atomicops_internals_x86_gcc.cc",
"src/base/atomicops_internals_x86_gcc.h",
@@ -1558,7 +1603,7 @@ if (current_toolchain == snapshot_toolchain) {
# Public targets
#
-if (component_mode == "shared_library") {
+if (is_component_build) {
component("v8") {
sources = [
"src/v8dll-main.cc",
@@ -1567,11 +1612,17 @@ if (component_mode == "shared_library") {
if (v8_use_snapshot && v8_use_external_startup_data) {
deps = [
":v8_base",
+ ]
+ public_deps = [
":v8_external_snapshot",
]
} else if (v8_use_snapshot) {
deps = [
":v8_base",
+ ]
+ # v8_snapshot should be public so downstream targets can declare the
+ # snapshot file as their input.
+ public_deps = [
":v8_snapshot",
]
} else {
@@ -1607,6 +1658,8 @@ if (component_mode == "shared_library") {
} else if (v8_use_snapshot) {
deps = [
":v8_base",
+ ]
+ public_deps = [
":v8_snapshot",
]
} else {
@@ -1627,8 +1680,6 @@ if ((current_toolchain == host_toolchain && v8_toolset_for_d8 == "host") ||
sources = [
"src/d8.cc",
"src/d8.h",
- "src/startup-data-util.h",
- "src/startup-data-util.cc",
]
configs -= [ "//build/config/compiler:chromium_code" ]
@@ -1657,9 +1708,10 @@ if ((current_toolchain == host_toolchain && v8_toolset_for_d8 == "host") ||
sources += [ "src/d8-windows.cc" ]
}
- if (component_mode != "shared_library") {
+ if (!is_component_build) {
sources += [
"src/d8-debug.cc",
+ "src/d8-debug.h",
"$target_gen_dir/d8-js.cc",
]
}
diff --git a/deps/v8/ChangeLog b/deps/v8/ChangeLog
index c665f1763eb431..e8ce91563387b5 100644
--- a/deps/v8/ChangeLog
+++ b/deps/v8/ChangeLog
@@ -1,3 +1,678 @@
+2015-07-08: Version 4.5.103
+
+ Performance and stability improvements on all platforms.
+
+
+2015-07-08: Version 4.5.102
+
+ Performance and stability improvements on all platforms.
+
+
+2015-07-07: Version 4.5.101
+
+ Move compatible receiver check from CompileHandler to UpdateCaches
+ (Chromium issue 505374).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-07-07: Version 4.5.100
+
+ Performance and stability improvements on all platforms.
+
+
+2015-07-07: Version 4.5.99
+
+ unicode-decoder: fix out-of-band write in utf16 (issue 4274).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-07-06: Version 4.5.98
+
+ Performance and stability improvements on all platforms.
+
+
+2015-07-04: Version 4.5.97
+
+ Performance and stability improvements on all platforms.
+
+
+2015-07-03: Version 4.5.96
+
+ Performance and stability improvements on all platforms.
+
+
+2015-07-03: Version 4.5.95
+
+ Performance and stability improvements on all platforms.
+
+
+2015-07-02: Version 4.5.94
+
+ Performance and stability improvements on all platforms.
+
+
+2015-07-02: Version 4.5.93
+
+ Include Harmony Array/TypedArray methods unconditionally (Chromium issue
+ 504629).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-07-02: Version 4.5.92
+
+ Performance and stability improvements on all platforms.
+
+
+2015-07-01: Version 4.5.91
+
+ Performance and stability improvements on all platforms.
+
+
+2015-07-01: Version 4.5.90
+
+ Performance and stability improvements on all platforms.
+
+
+2015-07-01: Version 4.5.89
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-30: Version 4.5.88
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-30: Version 4.5.87
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-30: Version 4.5.86
+
+ Ensure mjsunit tests use dashes not underscores in flags directives
+ (Chromium issue 505228).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-29: Version 4.5.85
+
+ Fix flag convention in handle count tests and comment (Chromium issue
+ 505228).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-29: Version 4.5.84
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-27: Version 4.5.83
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-26: Version 4.5.82
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-26: Version 4.5.81
+
+ Remove obsolete options in ScriptCompiler::CompileOptions (Chromium
+ issue 399580).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-25: Version 4.5.80
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-25: Version 4.5.79
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-25: Version 4.5.78
+
+ Serializer: clear next link in weak cells (Chromium issue 503552).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-24: Version 4.5.77
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-24: Version 4.5.76
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-24: Version 4.5.75
+
+ Date() should not depend on Date.prototype.toString (issue 4225).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-23: Version 4.5.74
+
+ Expose Map/Set methods through the API (issue 3340).
+
+ [turbofan] NaN is never truish (issue 4207).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-23: Version 4.5.73
+
+ Re-ship Harmony Array/TypedArray methods (issue 3578).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-23: Version 4.5.72
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-23: Version 4.5.71
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-20: Version 4.5.70
+
+ Ship Harmony Array/TypedArray methods (issue 3578).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-20: Version 4.5.69
+
+ Ship arrow functions (issue 2700).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-19: Version 4.5.68
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-19: Version 4.5.67
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-19: Version 4.5.66
+
+ Ship arrow functions (issue 2700).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-18: Version 4.5.65
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-18: Version 4.5.64
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-18: Version 4.5.63
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-17: Version 4.5.62
+
+ Hydrogen object literals: always initialize in-object properties
+ (Chromium issue 500497).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-17: Version 4.5.61
+
+ Add %TypedArray% to proto chain (issue 4085).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-17: Version 4.5.60
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-17: Version 4.5.59
+
+ [crankshaft] Fix wrong bailout points in for-in loop body (Chromium
+ issue 500435).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-16: Version 4.5.58
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-16: Version 4.5.57
+
+ Inline code generation for %_IsTypedArray (issue 4085).
+
+ Allow TypedArrays to be initialized with iterables (issue 4090).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-15: Version 4.5.56
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-15: Version 4.5.55
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-14: Version 4.5.54
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-13: Version 4.5.53
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-12: Version 4.5.52
+
+ Map::TryUpdate() must be in sync with Map::Update() (issue 4173).
+
+ Add ToObject call in Array.prototype.sort (issue 4125).
+
+ In Array.of and Array.from, fall back to DefineOwnProperty (issue 4168).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-12: Version 4.5.51
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-11: Version 4.5.50
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-11: Version 4.5.49
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-11: Version 4.5.48
+
+ Support rest parameters in arrow functions (issue 2700).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-10: Version 4.5.47
+
+ Implement %TypedArray%.prototype.slice (issue 3578).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-09: Version 4.5.46
+
+ Stage ES6 arrow functions (issue 2700).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-09: Version 4.5.45
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-09: Version 4.5.44
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-08: Version 4.5.43
+
+ [for-in] Make ForInNext and ForInFilter deal properly with exceptions
+ (Chromium issue 496331).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-08: Version 4.5.42
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-06: Version 4.5.41
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-05: Version 4.5.40
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-05: Version 4.5.39
+
+ Stage ES6 Array and TypedArray methods (issue 3578).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-05: Version 4.5.38
+
+ Implement %TypedArray%.prototype.{reduce,reduceRight} (issue 3578).
+
+ Add support for Embedded Constant Pools for PPC and Arm (Chromium issue
+ 478811).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-04: Version 4.5.37
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-04: Version 4.5.36
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-04: Version 4.5.35
+
+ Flatten the Arrays returned and consumed by the v8::Map API (Chromium
+ issue 478263).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-03: Version 4.5.34
+
+ Also allocate small typed arrays on heap when initialized from an array-
+ like (issue 3996).
+
+ Implement %TypedArray%.prototype.{reduce,reduceRight} (issue 3578).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-03: Version 4.5.33
+
+ Add support for Embedded Constant Pools for PPC and Arm (Chromium issue
+ 478811).
+
+ Implement %TypedArray%.prototype.{toString,toLocaleString,join} (issue
+ 3578).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-03: Version 4.5.32
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-02: Version 4.5.31
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-02: Version 4.5.30
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-01: Version 4.5.29
+
+ Reland "Re-enable on-heap typed array allocation" (issue 3996).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-01: Version 4.5.28
+
+ Re-enable on-heap typed array allocation (issue 3996).
+
+ Also expose DefineOwnProperty (Chromium issue 475206).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-06-01: Version 4.5.27
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-31: Version 4.5.26
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-30: Version 4.5.25
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-29: Version 4.5.24
+
+ Debugger: consider try-finally scopes not catching wrt debug events
+ (Chromium issue 492522).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-29: Version 4.5.23
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-29: Version 4.5.22
+
+ Do not eagerly convert exception to string when creating a message
+ object (Chromium issue 490680).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-28: Version 4.5.21
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-28: Version 4.5.20
+
+ Introduce v8::Object::CreateDataProperty (Chromium issue 475206).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-27: Version 4.5.19
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-27: Version 4.5.18
+
+ Add {Map,Set}::FromArray to the API (issue 3340).
+
+ Add {Map,Set}::AsArray to the API (issue 3340).
+
+ Add basic API support for Map & Set (issue 3340).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-26: Version 4.5.17
+
+ Correctly hook up materialized receiver into the evaluation context
+ chain (Chromium issue 491943).
+
+ Implement bookmarks for ExternalStreamingStream (Chromium issue 470930).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-26: Version 4.5.16
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-26: Version 4.5.15
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-23: Version 4.5.14
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-22: Version 4.5.13
+
+ Remove v8::Private.
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-22: Version 4.5.12
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-22: Version 4.5.11
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-21: Version 4.5.10
+
+ Re-land %TypedArray%.prototype.{map,filter,some} (issue 3578).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-21: Version 4.5.9
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-20: Version 4.5.8
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-20: Version 4.5.7
+
+ Implement %TypedArray%.{lastI,i}ndexOf (issue 3578).
+
+ Implement %TypedArray%.prototype.sort (issue 3578).
+
+ Implement %TypedArray%.reverse (issue 3578).
+
+ Implement %TypedArray%.prototype.{map,filter,some,reduce,reduceRight}
+ (issue 3578).
+
+ Fix has_pending_exception logic in API's Array::CloneElementAt (issue
+ 4103).
+
+ Adding api to get last gc object statistics for chrome://tracing
+ (Chromium issue 476013).
+
+ Fix harmless HGraph verification failure after hoisting inlined bounds
+ checks (Chromium issue 487608).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-20: Version 4.5.6
+
+ Add TypedArray.from method (issue 3578).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-19: Version 4.5.5
+
+ ARM64: Propagate notification about aborted compilation from
+ RegExpEngine to MacroAssembler (Chromium issue 489290).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-18: Version 4.5.4
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-18: Version 4.5.3
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-17: Version 4.5.2
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-16: Version 4.5.1
+
+ Test that TypedArray methods don't read length (issue 3578).
+
+ Implement %TypedArray%.{fill,find,findIndex} (issue 3578).
+
+ TypedArray.prototype.copyWithin method (issue 3578).
+
+ Provide accessor for object internal properties that doesn't require
+ debugger to be active (Chromium issue 481845).
+
+ Don't create debug context if debug listener is not set (Chromium issue
+ 482290).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-13: Version 4.4.65
+
+ Deprecate Isolate::New.
+
+ Factor out core of Array.forEach and .every, for use in TypedArrays
+ (issue 3578).
+
+ Performance and stability improvements on all platforms.
+
+
+2015-05-12: Version 4.4.64
+
+ Performance and stability improvements on all platforms.
+
+
2015-05-11: Version 4.4.63
Let Runtime_GrowArrayElements accept non-Smi numbers as |key| (Chromium
diff --git a/deps/v8/DEPS b/deps/v8/DEPS
index 711cc53b7e3574..689ae778bb59a4 100644
--- a/deps/v8/DEPS
+++ b/deps/v8/DEPS
@@ -8,23 +8,23 @@ vars = {
deps = {
"v8/build/gyp":
- Var("git_url") + "/external/gyp.git" + "@" + "0bb67471bca068996e15b56738fa4824dfa19de0",
+ Var("git_url") + "/external/gyp.git" + "@" + "5122240c5e5c4d8da12c543d82b03d6089eb77c5",
"v8/third_party/icu":
- Var("git_url") + "/chromium/deps/icu.git" + "@" + "f8c0e585b0a046d83d72b5d37356cb50d5b2031a",
+ Var("git_url") + "/chromium/deps/icu.git" + "@" + "c81a1a3989c3b66fa323e9a6ee7418d7c08297af",
"v8/buildtools":
- Var("git_url") + "/chromium/buildtools.git" + "@" + "b0ede9c89f9d5fbe5387d961ad4c0ec665b6c821",
+ Var("git_url") + "/chromium/buildtools.git" + "@" + "ecc8e253abac3b6186a97573871a084f4c0ca3ae",
"v8/testing/gtest":
- Var("git_url") + "/external/googletest.git" + "@" + "be1868139ffe0ccd0e8e3b37292b84c821d9c8ad",
+ Var("git_url") + "/external/googletest.git" + "@" + "23574bf2333f834ff665f894c97bef8a5b33a0a9",
"v8/testing/gmock":
Var("git_url") + "/external/googlemock.git" + "@" + "29763965ab52f24565299976b936d1265cb6a271", # from svn revision 501
"v8/tools/clang":
- Var("git_url") + "/chromium/src/tools/clang.git" + "@" + "5bab78c6ced45a71a8e095a09697ca80492e57e1",
+ Var("git_url") + "/chromium/src/tools/clang.git" + "@" + "73ec8804ed395b0886d6edf82a9f33583f4a7902",
}
deps_os = {
"android": {
"v8/third_party/android_tools":
- Var("git_url") + "/android_tools.git" + "@" + "4f723e2a5fa5b7b8a198072ac19b92344be2b271",
+ Var("git_url") + "/android_tools.git" + "@" + "21f4bcbd6cd927e4b4227cfde7d5f13486be1236",
},
"win": {
"v8/third_party/cygwin":
diff --git a/deps/v8/LICENSE b/deps/v8/LICENSE
index 2f5bce83697d0f..1ffa949c6c1dfb 100644
--- a/deps/v8/LICENSE
+++ b/deps/v8/LICENSE
@@ -3,12 +3,12 @@ maintained libraries. The externally maintained libraries used by V8
are:
- PCRE test suite, located in
- test/mjsunit/third_party/regexp-pcre.js. This is based on the
+ test/mjsunit/third_party/regexp-pcre/regexp-pcre.js. This is based on the
test suite from PCRE-7.3, which is copyrighted by the University
of Cambridge and Google, Inc. The copyright notice and license
are embedded in regexp-pcre.js.
- - Layout tests, located in test/mjsunit/third_party. These are
+ - Layout tests, located in test/mjsunit/third_party/object-keys. These are
based on layout tests from webkit.org which are copyrighted by
Apple Computer, Inc. and released under a 3-clause BSD license.
@@ -26,6 +26,9 @@ are:
These libraries have their own licenses; we recommend you read them,
as their terms may differ from the terms below.
+Further license information can be found in LICENSE files located in
+sub-directories.
+
Copyright 2014, the V8 project authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
diff --git a/deps/v8/Makefile b/deps/v8/Makefile
index db6cf3b7da534a..97612655a7b1ae 100644
--- a/deps/v8/Makefile
+++ b/deps/v8/Makefile
@@ -31,9 +31,7 @@ OUTDIR ?= out
TESTJOBS ?=
GYPFLAGS ?=
TESTFLAGS ?=
-ANDROID_NDK_ROOT ?=
ANDROID_NDK_HOST_ARCH ?=
-ANDROID_TOOLCHAIN ?=
ANDROID_V8 ?= /data/local/tmp/v8
NACL_SDK_ROOT ?=
@@ -145,10 +143,14 @@ ifeq ($(i18nsupport), off)
GYPFLAGS += -Dv8_enable_i18n_support=0
TESTFLAGS += --noi18n
endif
-# deprecation_warnings=on
+# deprecationwarnings=on
ifeq ($(deprecationwarnings), on)
GYPFLAGS += -Dv8_deprecation_warnings=1
endif
+# imminentdeprecationwarnings=on
+ifeq ($(imminentdeprecationwarnings), on)
+ GYPFLAGS += -Dv8_imminent_deprecation_warnings=1
+endif
# asan=on
ifeq ($(asan), on)
GYPFLAGS += -Dasan=1 -Dclang=1
@@ -246,7 +248,7 @@ NACL_ARCHES = nacl_ia32 nacl_x64
GYPFILES = third_party/icu/icu.gypi third_party/icu/icu.gyp \
build/shim_headers.gypi build/features.gypi build/standalone.gypi \
build/toolchain.gypi build/all.gyp build/mac/asan.gyp \
- build/android.gypi test/cctest/cctest.gyp \
+ test/cctest/cctest.gyp \
test/unittests/unittests.gyp tools/gyp/v8.gyp \
tools/parser-shell.gyp testing/gmock.gyp testing/gtest.gyp \
buildtools/third_party/libc++abi/libc++abi.gyp \
@@ -277,7 +279,6 @@ ENVFILE = $(OUTDIR)/environment
$(ARCHES) $(MODES) $(BUILDS) $(CHECKS) $(addsuffix .clean,$(ARCHES)) \
$(addsuffix .check,$(MODES)) $(addsuffix .check,$(ARCHES)) \
$(ANDROID_ARCHES) $(ANDROID_BUILDS) $(ANDROID_CHECKS) \
- must-set-ANDROID_NDK_ROOT_OR_TOOLCHAIN \
$(NACL_ARCHES) $(NACL_BUILDS) $(NACL_CHECKS) \
must-set-NACL_SDK_ROOT
@@ -311,8 +312,7 @@ native: $(OUTDIR)/Makefile.native
$(ANDROID_ARCHES): $(addprefix $$@.,$(MODES))
-$(ANDROID_BUILDS): $(GYPFILES) $(ENVFILE) build/android.gypi \
- must-set-ANDROID_NDK_ROOT_OR_TOOLCHAIN Makefile.android
+$(ANDROID_BUILDS): $(GYPFILES) $(ENVFILE) Makefile.android
@$(MAKE) -f Makefile.android $@ \
ARCH="$(basename $@)" \
MODE="$(subst .,,$(suffix $@))" \
@@ -448,13 +448,6 @@ $(OUTDIR)/Makefile.native: $(GYPFILES) $(ENVFILE)
build/gyp/gyp --generator-output="$(OUTDIR)" build/all.gyp \
-Ibuild/standalone.gypi --depth=. -S.native $(GYPFLAGS)
-must-set-ANDROID_NDK_ROOT_OR_TOOLCHAIN:
-ifndef ANDROID_NDK_ROOT
-ifndef ANDROID_TOOLCHAIN
- $(error ANDROID_NDK_ROOT or ANDROID_TOOLCHAIN must be set))
-endif
-endif
-
# Note that NACL_SDK_ROOT must be set to point to an appropriate
# Native Client SDK before using this makefile. You can download
# an SDK here:
diff --git a/deps/v8/Makefile.android b/deps/v8/Makefile.android
index f89fd21fda004e..c49cb85b9b6514 100644
--- a/deps/v8/Makefile.android
+++ b/deps/v8/Makefile.android
@@ -35,75 +35,28 @@ MODES = release debug
ANDROID_BUILDS = $(foreach mode,$(MODES), \
$(addsuffix .$(mode),$(ANDROID_ARCHES)))
-HOST_OS = $(shell uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/')
-ANDROID_NDK_HOST_ARCH ?= $(shell uname -m | sed -e 's/i[3456]86/x86/')
-ifeq ($(HOST_OS), linux)
- TOOLCHAIN_DIR = linux-$(ANDROID_NDK_HOST_ARCH)
-else ifeq ($(HOST_OS), mac)
- TOOLCHAIN_DIR = darwin-$(ANDROID_NDK_HOST_ARCH)
-else
- $(error Host platform "${HOST_OS}" is not supported)
-endif
-
ifeq ($(ARCH), android_arm)
- DEFINES = target_arch=arm v8_target_arch=arm android_target_arch=arm android_target_platform=14
- DEFINES += arm_neon=0 arm_version=7
- TOOLCHAIN_ARCH = arm-linux-androideabi
- TOOLCHAIN_PREFIX = $(TOOLCHAIN_ARCH)
- TOOLCHAIN_VER = 4.8
+ DEFINES = target_arch=arm v8_target_arch=arm
else ifeq ($(ARCH), android_arm64)
- DEFINES = target_arch=arm64 v8_target_arch=arm64 android_target_arch=arm64 android_target_platform=21
- TOOLCHAIN_ARCH = aarch64-linux-android
- TOOLCHAIN_PREFIX = $(TOOLCHAIN_ARCH)
- TOOLCHAIN_VER = 4.9
+ DEFINES = target_arch=arm64 v8_target_arch=arm64
else ifeq ($(ARCH), android_mipsel)
- DEFINES = target_arch=mipsel v8_target_arch=mipsel android_target_platform=14
- DEFINES += android_target_arch=mips mips_arch_variant=mips32r2
- TOOLCHAIN_ARCH = mipsel-linux-android
- TOOLCHAIN_PREFIX = $(TOOLCHAIN_ARCH)
- TOOLCHAIN_VER = 4.8
+ DEFINES = target_arch=mipsel v8_target_arch=mipsel
else ifeq ($(ARCH), android_ia32)
- DEFINES = target_arch=ia32 v8_target_arch=ia32 android_target_arch=x86 android_target_platform=14
- TOOLCHAIN_ARCH = x86
- TOOLCHAIN_PREFIX = i686-linux-android
- TOOLCHAIN_VER = 4.8
+ DEFINES = target_arch=ia32 v8_target_arch=ia32
else ifeq ($(ARCH), android_x64)
- DEFINES = target_arch=x64 v8_target_arch=x64 android_target_arch=x86_64 android_target_platform=21
- TOOLCHAIN_ARCH = x86_64
- TOOLCHAIN_PREFIX = x86_64-linux-android
- TOOLCHAIN_VER = 4.9
+ DEFINES = target_arch=x64 v8_target_arch=x64
else ifeq ($(ARCH), android_x87)
- DEFINES = target_arch=x87 v8_target_arch=x87 android_target_arch=x86 android_target_platform=14
- TOOLCHAIN_ARCH = x86
- TOOLCHAIN_PREFIX = i686-linux-android
- TOOLCHAIN_VER = 4.8
+ DEFINES = target_arch=ia32 v8_target_arch=x87
else
$(error Target architecture "${ARCH}" is not supported)
endif
-TOOLCHAIN_PATH = \
- ${ANDROID_NDK_ROOT}/toolchains/${TOOLCHAIN_ARCH}-${TOOLCHAIN_VER}/prebuilt
-ANDROID_TOOLCHAIN ?= ${TOOLCHAIN_PATH}/${TOOLCHAIN_DIR}
-
-ifeq ($(wildcard $(ANDROID_TOOLCHAIN)),)
- $(error Cannot find Android toolchain in "${ANDROID_TOOLCHAIN}". Please \
- check that ANDROID_NDK_ROOT and ANDROID_NDK_HOST_ARCH are set \
- correctly)
-endif
-
-# For mksnapshot host generation.
-DEFINES += host_os=${HOST_OS}
+# Common flags.
DEFINES += OS=android
.SECONDEXPANSION:
$(ANDROID_BUILDS): $(OUTDIR)/Makefile.$$@
@$(MAKE) -C "$(OUTDIR)" -f Makefile.$@ \
- CXX="$(ANDROID_TOOLCHAIN)/bin/${TOOLCHAIN_PREFIX}-g++" \
- AR="$(ANDROID_TOOLCHAIN)/bin/${TOOLCHAIN_PREFIX}-ar" \
- RANLIB="$(ANDROID_TOOLCHAIN)/bin/${TOOLCHAIN_PREFIX}-ranlib" \
- CC="$(ANDROID_TOOLCHAIN)/bin/${TOOLCHAIN_PREFIX}-gcc" \
- LD="$(ANDROID_TOOLCHAIN)/bin/${TOOLCHAIN_PREFIX}-ld" \
- LINK="$(ANDROID_TOOLCHAIN)/bin/${TOOLCHAIN_PREFIX}-g++" \
BUILDTYPE=$(shell echo $(subst .,,$(suffix $@)) | \
python -c "print raw_input().capitalize()") \
builddir="$(shell pwd)/$(OUTDIR)/$@"
@@ -113,9 +66,7 @@ ANDROID_MAKEFILES = $(addprefix $(OUTDIR)/Makefile.,$(ANDROID_BUILDS))
$(ANDROID_MAKEFILES):
GYP_GENERATORS=make-android \
GYP_DEFINES="${DEFINES}" \
- CC="${ANDROID_TOOLCHAIN}/bin/${TOOLCHAIN_PREFIX}-gcc" \
- CXX="${ANDROID_TOOLCHAIN}/bin/${TOOLCHAIN_PREFIX}-g++" \
PYTHONPATH="$(shell pwd)/tools/generate_shim_headers:$(shell pwd)/build:$(PYTHONPATH)" \
build/gyp/gyp --generator-output="${OUTDIR}" build/all.gyp \
- -Ibuild/standalone.gypi --depth=. -Ibuild/android.gypi \
+ -Ibuild/standalone.gypi --depth=. \
-S$(suffix $(basename $@))$(suffix $@) ${GYPFLAGS}
diff --git a/deps/v8/build/android.gypi b/deps/v8/build/android.gypi
deleted file mode 100644
index 7bbf12eed6d99b..00000000000000
--- a/deps/v8/build/android.gypi
+++ /dev/null
@@ -1,266 +0,0 @@
-# Copyright 2012 the V8 project authors. All rights reserved.
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following
-# disclaimer in the documentation and/or other materials provided
-# with the distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Definitions for building standalone V8 binaries to run on Android.
-# This is mostly excerpted from:
-# http://src.chromium.org/viewvc/chrome/trunk/src/build/common.gypi
-
-{
- 'variables': {
- # Location of Android NDK.
- 'variables': {
- 'android_ndk_root%': ' GetExecutionState() const = 0;
- virtual Handle GetEventData() const = 0;
+ virtual Local GetExecutionState() const = 0;
+ virtual Local GetEventData() const = 0;
/**
* Get the debugger protocol JSON.
*/
- virtual Handle GetJSON() const = 0;
+ virtual Local GetJSON() const = 0;
/**
* Get the context active when the debug event happened. Note this is not
* the current active context as the JavaScript part of the debugger is
* running in its own context which is entered at this point.
*/
- virtual Handle GetEventContext() const = 0;
+ virtual Local GetEventContext() const = 0;
/**
* Client data passed with the corresponding request if any. This is the
@@ -104,21 +104,21 @@ class V8_EXPORT Debug {
* Access to execution state and event data of the debug event. Don't store
* these cross callbacks as their content becomes invalid.
*/
- virtual Handle GetExecutionState() const = 0;
- virtual Handle GetEventData() const = 0;
+ virtual Local GetExecutionState() const = 0;
+ virtual Local GetEventData() const = 0;
/**
* Get the context active when the debug event happened. Note this is not
* the current active context as the JavaScript part of the debugger is
* running in its own context which is entered at this point.
*/
- virtual Handle GetEventContext() const = 0;
+ virtual Local GetEventContext() const = 0;
/**
* Client data passed with the corresponding callback when it was
* registered.
*/
- virtual Handle GetCallbackData() const = 0;
+ virtual Local GetCallbackData() const = 0;
/**
* Client data passed to DebugBreakForCommand function. The
@@ -156,7 +156,7 @@ class V8_EXPORT Debug {
typedef void (*DebugMessageDispatchHandler)();
static bool SetDebugEventListener(EventCallback that,
- Handle data = Handle());
+ Local data = Local());
// Schedule a debugger break to happen when JavaScript code is run
// in the given isolate.
@@ -196,20 +196,20 @@ class V8_EXPORT Debug {
*/
static V8_DEPRECATE_SOON(
"Use maybe version",
- Local Call(v8::Handle fun,
- Handle data = Handle()));
+ Local Call(v8::Local fun,
+ Local data = Local()));
// TODO(dcarney): data arg should be a MaybeLocal
static MaybeLocal Call(Local context,
- v8::Handle fun,
- Handle data = Handle());
+ v8::Local fun,
+ Local