diff --git a/.eslintignore b/.eslintignore
index 0be7057993e451..9b5c5fccb643e4 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,5 +1,4 @@
lib/internal/v8_prof_polyfill.js
-lib/internal/v8_prof_processor.js
lib/punycode.js
test/addons/??_*/
test/fixtures
diff --git a/.eslintrc b/.eslintrc
index 8e01cc4c94c0e4..af0e6ddc15670f 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -13,7 +13,7 @@ rules:
no-duplicate-case: 2
no-empty-character-class: 2
no-ex-assign: 2
- no-extra-boolean-cast : 2
+ no-extra-boolean-cast: 2
no-extra-parens: [2, "functions"]
no-extra-semi: 2
no-func-assign: 2
@@ -85,8 +85,9 @@ rules:
prefer-const: 2
# Custom rules in tools/eslint-rules
+ assert-fail-single-argument: 2
new-with-error: [2, "Error", "RangeError", "TypeError", "SyntaxError", "ReferenceError"]
-
+ align-multiline-assignment: 2
# Global scoped method and vars
globals:
diff --git a/.gitignore b/.gitignore
index 734d92d4d719af..c7361af80c79dc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -41,6 +41,8 @@ _UpgradeReport_Files/
ipch/
*.sdf
*.opensdf
+*.VC.opendb
+.vs/
/config.mk
/config.gypi
diff --git a/BUILDING.md b/BUILDING.md
index c6e8656a72c40e..a4aa0808237c54 100644
--- a/BUILDING.md
+++ b/BUILDING.md
@@ -87,7 +87,14 @@ To test if Node.js was built correctly:
$ node -e "console.log('Hello from Node.js ' + process.version)"
```
-### Android / Android based devices, aka. Firefox OS
+### Android / Android-based devices (e.g., Firefox OS)
+
+Although these instructions for building on Android are provided, please note
+that Android is not an officially supported platform at this time. Patches to
+improve the Android build are accepted. However, there is no testing on Android
+in the current continuous integration environment. The participation of people
+dedicated and determined to improve Android building, testing, and support is
+encouraged.
Be sure you have downloaded and extracted [Android NDK]
(https://developer.android.com/tools/sdk/ndk/index.html)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d994f0bff81cc3..7475345104cec9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,127 @@
# Node.js ChangeLog
+## 2016-04-21, Version 5.11.0 (Stable), @thealphanerd
+
+## Notable Changes
+
+* **Buffer**:
+ * `Buffer.prototype.compare` can now compare sub-ranges of two Buffers. (James M Snell) [#5880](https://github.com/nodejs/node/pull/5880)
+* **deps**:
+ * update to http-parser 2.7.0 (Fedor Indutny) [#6279](https://github.com/nodejs/node/pull/6279)
+ * update ESLint to 2.7.0 (silverwind) [#6132](https://github.com/nodejs/node/pull/6132)
+* **net**:
+ * adds support for passing DNS lookup hints to `createConnection()` (Colin Ihrig) [#6000](https://github.com/nodejs/node/pull/6000)
+* **node**:
+ * Make the builtin libraries available for the `--eval` and `--print` CLI options (Anna Henningsen) [#6207](https://github.com/nodejs/node/pull/6207)
+* **npm**:
+ * upgrade npm to 3.8.6 (Kat Marchán) [#6153](https://github.com/nodejs/node/pull/6153)
+* **repl**:
+ * Pressing enter in the repl will repeat the last command by default if no input has been received. This behavior was in node previously and was not removed intentionally. (Rich Trott) [#6090](https://github.com/nodejs/node/pull/6090)
+* **src**:
+ * add SIGINFO to supported signals (James Reggio) [#6093](https://github.com/nodejs/node/pull/6093)
+* **streams**:
+ * Fix a regression that caused by net streams requesting multiple chunks synchronously when combined with cork/uncork (Matteo Collina) [#6164](https://github.com/nodejs/node/pull/6164)
+* **zlib**:
+ * The flushing flag is now configurable allowing for decompression of partial data (Anna Henningsen) [#6069](https://github.com/nodejs/node/pull/6069)
+
+### Commits
+
+* [[`85cb9bb31d`](https://github.com/nodejs/node/commit/85cb9bb31d)] - **assert**: respect assert.doesNotThrow message. (Ilya Shaisultanov) [#2407](https://github.com/nodejs/node/pull/2407)
+* [[`5807f9d378`](https://github.com/nodejs/node/commit/5807f9d378)] - **benchmark**: add module loader benchmark parameter (Brian White) [#5172](https://github.com/nodejs/node/pull/5172)
+* [[`24ec70149c`](https://github.com/nodejs/node/commit/24ec70149c)] - **(SEMVER-MINOR)** **buffer**: add Buffer.prototype.compare by offset (James M Snell) [#5880](https://github.com/nodejs/node/pull/5880)
+* [[`d44540f5af`](https://github.com/nodejs/node/commit/d44540f5af)] - **buffer**: standardize array index check (Trevor Norris) [#6084](https://github.com/nodejs/node/pull/6084)
+* [[`68cf6a5e6a`](https://github.com/nodejs/node/commit/68cf6a5e6a)] - **build**: fix make tar-headers for Linux (Gibson Fahnestock) [#5978](https://github.com/nodejs/node/pull/5978)
+* [[`95e9c0643a`](https://github.com/nodejs/node/commit/95e9c0643a)] - **build**: allow test-ci to run tests in parallel (Johan Bergström) [#6208](https://github.com/nodejs/node/pull/6208)
+* [[`a5f8d0c6ef`](https://github.com/nodejs/node/commit/a5f8d0c6ef)] - **build**: remove -f{data,function}-sections flags (Ben Noordhuis) [#6077](https://github.com/nodejs/node/pull/6077)
+* [[`2e6e2d6511`](https://github.com/nodejs/node/commit/2e6e2d6511)] - **child_process**: add nullptr checks after allocs (Anna Henningsen) [#6256](https://github.com/nodejs/node/pull/6256)
+* [[`5c9dddf66f`](https://github.com/nodejs/node/commit/5c9dddf66f)] - **(SEMVER-MINOR)** **debugger**: run last command on presssing enter (Rich Trott) [#6090](https://github.com/nodejs/node/pull/6090)
+* [[`b7dd451fef`](https://github.com/nodejs/node/commit/b7dd451fef)] - **deps**: update to http-parser 2.7.0 (Fedor Indutny) [#6279](https://github.com/nodejs/node/pull/6279)
+* [[`f8c0ab98ae`](https://github.com/nodejs/node/commit/f8c0ab98ae)] - **deps**: floating fix for npm's test-node script (Kat Marchán) [#6153](https://github.com/nodejs/node/pull/6153)
+* [[`1d669aba06`](https://github.com/nodejs/node/commit/1d669aba06)] - **deps**: upgrade npm to 3.8.6 (Kat Marchán) [#6153](https://github.com/nodejs/node/pull/6153)
+* [[`a7104e4516`](https://github.com/nodejs/node/commit/a7104e4516)] - **deps**: cherry-pick 1383d00 from v8 upstream (Fedor Indutny) [#6179](https://github.com/nodejs/node/pull/6179)
+* [[`632e6b9617`](https://github.com/nodejs/node/commit/632e6b9617)] - **deps**: backport 125ac66 from v8 upstream (Myles Borins) [#6086](https://github.com/nodejs/node/pull/6086)
+* [[`5874502cba`](https://github.com/nodejs/node/commit/5874502cba)] - **doc**: git mv to .md (Robert Jefe Lindstaedt) [#4747](https://github.com/nodejs/node/pull/4747)
+* [[`02a84e20ef`](https://github.com/nodejs/node/commit/02a84e20ef)] - **doc**: add full example for zlib.flush() (Anna Henningsen) [#6172](https://github.com/nodejs/node/pull/6172)
+* [[`9f9371bd61`](https://github.com/nodejs/node/commit/9f9371bd61)] - **doc**: note that zlib.flush acts after pending writes (Anna Henningsen) [#6172](https://github.com/nodejs/node/pull/6172)
+* [[`b74ddea66e`](https://github.com/nodejs/node/commit/b74ddea66e)] - **doc**: fix broken references (Alexander Gromnitsky) [#6100](https://github.com/nodejs/node/pull/6100)
+* [[`b8ae1b86d4`](https://github.com/nodejs/node/commit/b8ae1b86d4)] - **doc**: path.format provide more examples (John Eversole) [#5838](https://github.com/nodejs/node/pull/5838)
+* [[`91001d33cf`](https://github.com/nodejs/node/commit/91001d33cf)] - **doc**: replace functions with arrow functions (abouthiroppy) [#6203](https://github.com/nodejs/node/pull/6203)
+* [[`038801d551`](https://github.com/nodejs/node/commit/038801d551)] - **doc**: DCO anchor that doesn't change (William Kapke) [#6257](https://github.com/nodejs/node/pull/6257)
+* [[`5bf8d1a9bf`](https://github.com/nodejs/node/commit/5bf8d1a9bf)] - **doc**: fix http response event, Agent#getName (Matthew Douglass) [#5993](https://github.com/nodejs/node/pull/5993)
+* [[`ea8fe043ae`](https://github.com/nodejs/node/commit/ea8fe043ae)] - **doc**: document intention and dangers of fs module Buffer API (Nikolai Vavilov) [#6020](https://github.com/nodejs/node/pull/6020)
+* [[`5c4395bc1b`](https://github.com/nodejs/node/commit/5c4395bc1b)] - **doc**: explain differences in console.assert between node and browsers (James M Snell) [#6169](https://github.com/nodejs/node/pull/6169)
+* [[`90eb765c51`](https://github.com/nodejs/node/commit/90eb765c51)] - **doc**: native module reloading is not supported (Bryan English) [#6168](https://github.com/nodejs/node/pull/6168)
+* [[`bb97de0c04`](https://github.com/nodejs/node/commit/bb97de0c04)] - **doc**: clarify fs.watch() and inodes on linux, os x (Joran Dirk Greef) [#6099](https://github.com/nodejs/node/pull/6099)
+* [[`1796e49546`](https://github.com/nodejs/node/commit/1796e49546)] - **doc**: add domain postmortem (Trevor Norris) [#6159](https://github.com/nodejs/node/pull/6159)
+* [[`02bf4599db`](https://github.com/nodejs/node/commit/02bf4599db)] - **doc**: add stefanmb to collaborators (Stefan Budeanu) [#6227](https://github.com/nodejs/node/pull/6227)
+* [[`4a2b53a002`](https://github.com/nodejs/node/commit/4a2b53a002)] - **doc**: add iWuzHere to collaborators (Imran Iqbal) [#6226](https://github.com/nodejs/node/pull/6226)
+* [[`9d3317a327`](https://github.com/nodejs/node/commit/9d3317a327)] - **doc**: add santigimeno to collaborators (Santiago Gimeno) [#6225](https://github.com/nodejs/node/pull/6225)
+* [[`33647030d2`](https://github.com/nodejs/node/commit/33647030d2)] - **doc**: add addaleax to collaborators (Anna Henningsen) [#6224](https://github.com/nodejs/node/pull/6224)
+* [[`6bc3bde47e`](https://github.com/nodejs/node/commit/6bc3bde47e)] - **doc**: fix incorrect references in buffer docs (Amery) [#6194](https://github.com/nodejs/node/pull/6194)
+* [[`b26fea1595`](https://github.com/nodejs/node/commit/b26fea1595)] - **doc**: add copy about how to curl SHA256.txt (Myles Borins) [#6120](https://github.com/nodejs/node/pull/6120)
+* [[`daaad47099`](https://github.com/nodejs/node/commit/daaad47099)] - **doc**: clarification for maxBuffer and Unicode output (James M Snell) [#6030](https://github.com/nodejs/node/pull/6030)
+* [[`5e6915f374`](https://github.com/nodejs/node/commit/5e6915f374)] - **doc**: describe child.kill() pitfalls on linux (Robert Jefe Lindstaedt) [#2098](https://github.com/nodejs/node/issues/2098)
+* [[`a40d0e8f9d`](https://github.com/nodejs/node/commit/a40d0e8f9d)] - **doc**: fix scrolling on iOS devices (Luigi Pinca) [#5878](https://github.com/nodejs/node/pull/5878)
+* [[`a81fca4f99`](https://github.com/nodejs/node/commit/a81fca4f99)] - **doc**: add topic - event loop, timers, `nextTick()` (Jeff Harris) [#4936](https://github.com/nodejs/node/pull/4936)
+* [[`440d1172fd`](https://github.com/nodejs/node/commit/440d1172fd)] - **doc**: add example using algorithms not directly exposed (Brad Hill) [#6108](https://github.com/nodejs/node/pull/6108)
+* [[`96ad5c5303`](https://github.com/nodejs/node/commit/96ad5c5303)] - **doc**: update openssl LICENSE using license-builder.sh (Steven R. Loomis) [#6065](https://github.com/nodejs/node/pull/6065)
+* [[`07829b0bc9`](https://github.com/nodejs/node/commit/07829b0bc9)] - **doc**: simple doc typo fix (Brendon Pierson) [#6041](https://github.com/nodejs/node/pull/6041)
+* [[`bc0ee06226`](https://github.com/nodejs/node/commit/bc0ee06226)] - **doc**: note about Android support (Rich Trott) [#6040](https://github.com/nodejs/node/pull/6040)
+* [[`60a73a2ed2`](https://github.com/nodejs/node/commit/60a73a2ed2)] - **doc**: fix a typo in 5.10.1's changelog (Vladimir Varankin) [#6076](https://github.com/nodejs/node/pull/6076)
+* [[`90aabb9b8a`](https://github.com/nodejs/node/commit/90aabb9b8a)] - **gitignore**: adding .vs/ directory to .gitignore (Mike Kaufman) [#6070](https://github.com/nodejs/node/pull/6070)
+* [[`93f91c60af`](https://github.com/nodejs/node/commit/93f91c60af)] - **gitignore**: ignore VS 2015 *.VC.opendb files (Mike Kaufman) [#6070](https://github.com/nodejs/node/pull/6070)
+* [[`d9cd449aa7`](https://github.com/nodejs/node/commit/d9cd449aa7)] - **http**: disallow sending obviously invalid status codes (Brian White) [#6291](https://github.com/nodejs/node/pull/6291)
+* [[`f6969a1608`](https://github.com/nodejs/node/commit/f6969a1608)] - **http**: skip body and next message of CONNECT res (Fedor Indutny) [#6279](https://github.com/nodejs/node/pull/6279)
+* [[`8ccfb87e1a`](https://github.com/nodejs/node/commit/8ccfb87e1a)] - **http**: unref socket timer on parser execute (Fedor Indutny) [#6286](https://github.com/nodejs/node/pull/6286)
+* [[`d4abca5b27`](https://github.com/nodejs/node/commit/d4abca5b27)] - **lib**: remove bootstrap global context indirection (Jeremiah Senkpiel) [#5881](https://github.com/nodejs/node/pull/5881)
+* [[`90c12a969c`](https://github.com/nodejs/node/commit/90c12a969c)] - **lib,test,tools**: alignment on variable assignments (Rich Trott) [#6242](https://github.com/nodejs/node/pull/6242)
+* [[`36c58da315`](https://github.com/nodejs/node/commit/36c58da315)] - **net**: replace __defineGetter__ with defineProperty (Fedor Indutny) [#6284](https://github.com/nodejs/node/pull/6284)
+* [[`6d9c0c9aa7`](https://github.com/nodejs/node/commit/6d9c0c9aa7)] - **(SEMVER-MINOR)** **net**: support DNS hints in createConnection() (Colin Ihrig) [#6000](https://github.com/nodejs/node/pull/6000)
+* [[`87e0734135`](https://github.com/nodejs/node/commit/87e0734135)] - **(SEMVER-MINOR)** **node**: make builtin libs available for `--eval` (Anna Henningsen) [#6207](https://github.com/nodejs/node/pull/6207)
+* [[`fc89d17656`](https://github.com/nodejs/node/commit/fc89d17656)] - **path**: fixing a test that breaks on some machines. (Mike Kaufman) [#6067](https://github.com/nodejs/node/pull/6067)
+* [[`fbb0a06080`](https://github.com/nodejs/node/commit/fbb0a06080)] - **process**: fix incorrect usage of assert.fail() (Rich Trott) [#6211](https://github.com/nodejs/node/pull/6211)
+* [[`40945e01c3`](https://github.com/nodejs/node/commit/40945e01c3)] - **(SEMVER-MINOR)** **repl**: keep the built-in modules non-enumerable (Anna Henningsen) [#6207](https://github.com/nodejs/node/pull/6207)
+* [[`2254f1a175`](https://github.com/nodejs/node/commit/2254f1a175)] - **repl**: refactor repl.js (Rich Trott) [#6071](https://github.com/nodejs/node/pull/6071)
+* [[`9f2dc70081`](https://github.com/nodejs/node/commit/9f2dc70081)] - **(SEMVER-MINOR)** **src**: add SIGINFO to supported signals (James Reggio) [#6093](https://github.com/nodejs/node/pull/6093)
+* [[`fbc99ba4f1`](https://github.com/nodejs/node/commit/fbc99ba4f1)] - **src**: add missing 'inline' keywords (Ben Noordhuis) [#6056](https://github.com/nodejs/node/pull/6056)
+* [[`20bb92f5c8`](https://github.com/nodejs/node/commit/20bb92f5c8)] - **src**: use size_t for http parser array size fields (Ben Noordhuis) [#5969](https://github.com/nodejs/node/pull/5969)
+* [[`2fd8be2dbe`](https://github.com/nodejs/node/commit/2fd8be2dbe)] - **src**: replace ARRAY_SIZE with typesafe arraysize (Ben Noordhuis) [#5969](https://github.com/nodejs/node/pull/5969)
+* [[`4392b4aee0`](https://github.com/nodejs/node/commit/4392b4aee0)] - **stream**: Fix readableState.awaitDrain mechanism (Anna Henningsen) [#6023](https://github.com/nodejs/node/pull/6023)
+* [[`052d87c167`](https://github.com/nodejs/node/commit/052d87c167)] - **stream_base**: expose `bytesRead` getter (Fedor Indutny) [#6284](https://github.com/nodejs/node/pull/6284)
+* [[`f69416c06e`](https://github.com/nodejs/node/commit/f69416c06e)] - **streams**: support unlimited synchronous cork/uncork cycles (Matteo Collina) [#6164](https://github.com/nodejs/node/pull/6164)
+* [[`3bacd1989b`](https://github.com/nodejs/node/commit/3bacd1989b)] - **test**: add zlib close-after-error regression test (Anna Henningsen) [#6270](https://github.com/nodejs/node/pull/6270)
+* [[`033b21bc78`](https://github.com/nodejs/node/commit/033b21bc78)] - **test**: move more tests from sequential to parallel (Santiago Gimeno) [#6187](https://github.com/nodejs/node/pull/6187)
+* [[`df93d6bfd2`](https://github.com/nodejs/node/commit/df93d6bfd2)] - **test**: assert - fixed error messages to match the tests (surya panikkal) [#6241](https://github.com/nodejs/node/pull/6241)
+* [[`1ef18bd038`](https://github.com/nodejs/node/commit/1ef18bd038)] - **test**: add test for responses to HTTP CONNECT req (Josh Leder) [#6279](https://github.com/nodejs/node/pull/6279)
+* [[`8779967d4b`](https://github.com/nodejs/node/commit/8779967d4b)] - **test**: move debugger tests to sequential (Rich Trott) [#6205](https://github.com/nodejs/node/pull/6205)
+* [[`9293946dd6`](https://github.com/nodejs/node/commit/9293946dd6)] - **test**: move some test from sequential to parallel (Santiago Gimeno) [#6087](https://github.com/nodejs/node/pull/6087)
+* [[`b0ba16f966`](https://github.com/nodejs/node/commit/b0ba16f966)] - **test**: move the debugger tests back to parallel (Santiago Gimeno) [#6246](https://github.com/nodejs/node/pull/6246)
+* [[`8077b899f4`](https://github.com/nodejs/node/commit/8077b899f4)] - **test**: fix issues for ESLint 2.7.0 (silverwind) [#6132](https://github.com/nodejs/node/pull/6132)
+* [[`1af0e4499c`](https://github.com/nodejs/node/commit/1af0e4499c)] - **test**: fix flaky test-http-set-timeout-server (Santiago Gimeno) [#6248](https://github.com/nodejs/node/pull/6248)
+* [[`68c32833c6`](https://github.com/nodejs/node/commit/68c32833c6)] - **test**: fix test-net-settimeout flakiness (Santiago Gimeno) [#6166](https://github.com/nodejs/node/pull/6166)
+* [[`a38b614ae9`](https://github.com/nodejs/node/commit/a38b614ae9)] - **test**: fix flaky test-child-process-fork-net (Rich Trott) [#6138](https://github.com/nodejs/node/pull/6138)
+* [[`476535cc0e`](https://github.com/nodejs/node/commit/476535cc0e)] - **test**: fix flaky test-http-client-abort (Rich Trott) [#6124](https://github.com/nodejs/node/pull/6124)
+* [[`6bb7999bd6`](https://github.com/nodejs/node/commit/6bb7999bd6)] - **test**: refactor test-file-write-stream3 (Rich Trott) [#6050](https://github.com/nodejs/node/pull/6050)
+* [[`a27e95231e`](https://github.com/nodejs/node/commit/a27e95231e)] - **test**: enforce strict mode for test-domain-crypto (Rich Trott) [#6047](https://github.com/nodejs/node/pull/6047)
+* [[`8da4bad1c9`](https://github.com/nodejs/node/commit/8da4bad1c9)] - **test**: fix pummel test failures (Rich Trott) [#6012](https://github.com/nodejs/node/pull/6012)
+* [[`fb2a9784a3`](https://github.com/nodejs/node/commit/fb2a9784a3)] - **test,tools**: enable linting for undefined vars (Rich Trott) [#6255](https://github.com/nodejs/node/pull/6255)
+* [[`01d4522763`](https://github.com/nodejs/node/commit/01d4522763)] - **test,vm**: enable strict mode for vm tests (Rich Trott) [#6209](https://github.com/nodejs/node/pull/6209)
+* [[`73eac79138`](https://github.com/nodejs/node/commit/73eac79138)] - **tools**: lint rule for assert.fail() (Rich Trott) [#6261](https://github.com/nodejs/node/pull/6261)
+* [[`8877703fc4`](https://github.com/nodejs/node/commit/8877703fc4)] - **tools**: enable linting for v8_prof_processor.js (Rich Trott) [#6262](https://github.com/nodejs/node/pull/6262)
+* [[`68925360ee`](https://github.com/nodejs/node/commit/68925360ee)] - **tools**: move message listener to worker objects (Brian White) [#6212](https://github.com/nodejs/node/pull/6212)
+* [[`713f6ff67a`](https://github.com/nodejs/node/commit/713f6ff67a)] - **tools**: improve js linter (Brian White) [#5638](https://github.com/nodejs/node/pull/5638)
+* [[`7ea5e43b98`](https://github.com/nodejs/node/commit/7ea5e43b98)] - **tools**: lint for alignment of variable assignments (Rich Trott) [#6242](https://github.com/nodejs/node/pull/6242)
+* [[`3ce59abb35`](https://github.com/nodejs/node/commit/3ce59abb35)] - **tools**: update ESLint to 2.7.0 (silverwind) [#6132](https://github.com/nodejs/node/pull/6132)
+* [[`fb646309e2`](https://github.com/nodejs/node/commit/fb646309e2)] - **tools**: fix license-builder.sh again for ICU (Steven R. Loomis) [#6068](https://github.com/nodejs/node/pull/6068)
+* [[`fabc33a075`](https://github.com/nodejs/node/commit/fabc33a075)] - **tools**: remove simplejson dependency (Sakthipriyan Vairamani) [#6101](https://github.com/nodejs/node/pull/6101)
+* [[`0658632c08`](https://github.com/nodejs/node/commit/0658632c08)] - **tools,doc**: parse types in braces everywhere (Alexander Makarenko) [#5329](https://github.com/nodejs/node/pull/5329)
+* [[`69eb4a6834`](https://github.com/nodejs/node/commit/69eb4a6834)] - **tools,doc**: fix json for grouped optional params (firedfox) [#5977](https://github.com/nodejs/node/pull/5977)
+* [[`a2dd848764`](https://github.com/nodejs/node/commit/a2dd848764)] - **tools,doc**: fix incomplete json produced by doctool (firedfox) [#5966](https://github.com/nodejs/node/pull/5966)
+* [[`4f6f59977a`](https://github.com/nodejs/node/commit/4f6f59977a)] - **zlib**: fix use after null when calling .close (James Lal) [#5982](https://github.com/nodejs/node/pull/5982)
+* [[`2ac14ee81f`](https://github.com/nodejs/node/commit/2ac14ee81f)] - **(SEMVER-MINOR)** **zlib**: Make the finish flush flag configurable (Anna Henningsen) [#6069](https://github.com/nodejs/node/pull/6069)
+* [[`3a5dd024d3`](https://github.com/nodejs/node/commit/3a5dd024d3)] - **(SEMVER-MINOR)** **zlib**: detect gzip files when using unzip* (Anna Henningsen) [#5884](https://github.com/nodejs/node/pull/5884)
+* [[`61167c3e23`](https://github.com/nodejs/node/commit/61167c3e23)] - **zlib**: fix gzip member head/buffer boundary issue (Anna Henningsen) [#5973](https://github.com/nodejs/node/pull/5973)
+
## 2016-04-05, Version 5.10.1 (Stable), @thealphanerd
### Notable changes
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e37da91ce8a193..bce91a3603cbed 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -49,7 +49,7 @@ and built upon.
#### Respect the stability index
The rules for the master branch are less strict; consult the
-[stability index](./doc/api/documentation.markdown#stability-index) for details.
+[stability index](./doc/api/documentation..md#stability-index) for details.
In a nutshell, modules are at varying levels of API stability. Bug fixes are
always welcome but API or behavioral changes to modules at stability level 3
@@ -173,6 +173,7 @@ to address, apply your changes in a separate commit and push that to your
feature branch. Post a comment in the pull request afterwards; GitHub does
not send out notifications when you add commits.
+
## Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
diff --git a/LICENSE b/LICENSE
index f527a1c8b23124..d0d07f7d429145 100644
--- a/LICENSE
+++ b/LICENSE
@@ -102,44 +102,51 @@ The externally maintained libraries used by Node.js are:
COPYRIGHT AND PERMISSION NOTICE
- Copyright (c) 1995-2015 International Business Machines Corporation and others
+ Copyright (c) 1995-2016 International Business Machines Corporation and others
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, and/or sell
- copies of the Software, and to permit persons
+ 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, and/or sell copies of the Software, and to permit persons
to whom the Software is furnished to do so, provided that the above
- copyright notice(s) and this permission notice appear in all copies
- of the Software and that both the above copyright notice(s) and this
+ copyright notice(s) and this permission notice appear in all copies of
+ the Software and that both the above copyright notice(s) and this
permission notice appear in supporting documentation.
- 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL
- THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM,
- OR ANY SPECIAL 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.
+ 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
+ OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY
+ SPECIAL 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.
- Except as contained in this notice, the name of a copyright holder shall not be
- used in advertising or otherwise to promote the sale, use or other dealings in
- this Software without prior written authorization of the copyright holder.
+ Except as contained in this notice, the name of a copyright holder
+ shall not be used in advertising or otherwise to promote the sale, use
+ or other dealings in this Software without prior written authorization
+ of the copyright holder.
- All trademarks and registered trademarks mentioned herein are the property of their respective owners.
+ All trademarks and registered trademarks mentioned herein are the
+ property of their respective owners.
+
+ ---------------------
Third-Party Software Licenses
- This section contains third-party software notices and/or additional terms for licensed
- third-party software components included within ICU libraries.
+
+ This section contains third-party software notices and/or additional
+ terms for licensed third-party software components included within ICU
+ libraries.
1. Unicode Data Files and Software
COPYRIGHT AND PERMISSION NOTICE
- Copyright © 1991-2015 Unicode, Inc. All rights reserved.
+ Copyright © 1991-2016 Unicode, Inc. All rights reserved.
Distributed under the Terms of Use in
http://www.unicode.org/copyright.html.
@@ -177,281 +184,312 @@ The externally maintained libraries used by Node.js are:
2. Chinese/Japanese Word Break Dictionary Data (cjdict.txt)
- # The Google Chrome software developed by Google is licensed under the BSD license. Other software included in this distribution is provided under other licenses, as set forth below.
+ # The Google Chrome software developed by Google is licensed under
+ # the BSD license. Other software included in this distribution is
+ # provided under other licenses, as set forth below.
#
- # The BSD License
- # http://opensource.org/licenses/bsd-license.php
- # Copyright (C) 2006-2008, Google Inc.
+ # The BSD License
+ # http://opensource.org/licenses/bsd-license.php
+ # Copyright (C) 2006-2008, Google Inc.
#
- # All rights reserved.
+ # All rights reserved.
#
- # Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+ # 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.
+ # 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.
+ # 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.
#
#
- # The word list in cjdict.txt are generated by combining three word lists listed
- # below with further processing for compound word breaking. The frequency is generated
- # with an iterative training against Google web corpora.
+ # The word list in cjdict.txt are generated by combining three word lists
+ # listed below with further processing for compound word breaking. The
+ # frequency is generated with an iterative training against Google web
+ # corpora.
#
- # * Libtabe (Chinese)
- # - https://sourceforge.net/project/?group_id=1519
- # - Its license terms and conditions are shown below.
+ # * Libtabe (Chinese)
+ # - https://sourceforge.net/project/?group_id=1519
+ # - Its license terms and conditions are shown below.
#
- # * IPADIC (Japanese)
- # - http://chasen.aist-nara.ac.jp/chasen/distribution.html
- # - Its license terms and conditions are shown below.
+ # * IPADIC (Japanese)
+ # - http://chasen.aist-nara.ac.jp/chasen/distribution.html
+ # - Its license terms and conditions are shown below.
#
- # ---------COPYING.libtabe ---- BEGIN--------------------
+ # ---------COPYING.libtabe ---- BEGIN--------------------
#
- # /*
- # * Copyrighy (c) 1999 TaBE Project.
- # * Copyright (c) 1999 Pai-Hsiang Hsiao.
- # * 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 the TaBE Project 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
- # * REGENTS 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.
- # */
+ # /*
+ # * Copyrighy (c) 1999 TaBE Project.
+ # * Copyright (c) 1999 Pai-Hsiang Hsiao.
+ # * 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 the TaBE Project 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
+ # * REGENTS 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.
+ # */
#
- # /*
- # * Copyright (c) 1999 Computer Systems and Communication Lab,
- # * Institute of Information Science, Academia Sinica.
- # * 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 the Computer Systems and Communication Lab
- # * 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
- # * REGENTS 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.
- # */
+ # /*
+ # * Copyright (c) 1999 Computer Systems and Communication Lab,
+ # * Institute of Information Science, Academia
+ # * Sinica. 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 the Computer Systems and Communication Lab
+ # * 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
+ # * REGENTS 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.
+ # */
#
- # Copyright 1996 Chih-Hao Tsai @ Beckman Institute, University of Illinois
- # c-tsai4@uiuc.edu http://casper.beckman.uiuc.edu/~c-tsai4
+ # Copyright 1996 Chih-Hao Tsai @ Beckman Institute,
+ # University of Illinois
+ # c-tsai4@uiuc.edu http://casper.beckman.uiuc.edu/~c-tsai4
#
- # ---------------COPYING.libtabe-----END------------------------------------
+ # ---------------COPYING.libtabe-----END--------------------------------
#
#
- # ---------------COPYING.ipadic-----BEGIN------------------------------------
+ # ---------------COPYING.ipadic-----BEGIN-------------------------------
#
- # Copyright 2000, 2001, 2002, 2003 Nara Institute of Science
- # and Technology. All Rights Reserved.
+ # Copyright 2000, 2001, 2002, 2003 Nara Institute of Science
+ # and Technology. All Rights Reserved.
#
- # Use, reproduction, and distribution of this software is permitted.
- # Any copy of this software, whether in its original form or modified,
- # must include both the above copyright notice and the following
- # paragraphs.
+ # Use, reproduction, and distribution of this software is permitted.
+ # Any copy of this software, whether in its original form or modified,
+ # must include both the above copyright notice and the following
+ # paragraphs.
#
- # Nara Institute of Science and Technology (NAIST),
- # the copyright holders, disclaims all warranties with regard to this
- # software, including all implied warranties of merchantability and
- # fitness, in no event shall NAIST be liable for
- # any special, 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 tortuous action, arising out
- # of or in connection with the use or performance of this software.
+ # Nara Institute of Science and Technology (NAIST),
+ # the copyright holders, disclaims all warranties with regard to this
+ # software, including all implied warranties of merchantability and
+ # fitness, in no event shall NAIST be liable for
+ # any special, 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 tortuous action, arising out
+ # of or in connection with the use or performance of this software.
#
- # A large portion of the dictionary entries
- # originate from ICOT Free Software. The following conditions for ICOT
- # Free Software applies to the current dictionary as well.
+ # A large portion of the dictionary entries
+ # originate from ICOT Free Software. The following conditions for ICOT
+ # Free Software applies to the current dictionary as well.
#
- # Each User may also freely distribute the Program, whether in its
- # original form or modified, to any third party or parties, PROVIDED
- # that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear
- # on, or be attached to, the Program, which is distributed substantially
- # in the same form as set out herein and that such intended
- # distribution, if actually made, will neither violate or otherwise
- # contravene any of the laws and regulations of the countries having
- # jurisdiction over the User or the intended distribution itself.
+ # Each User may also freely distribute the Program, whether in its
+ # original form or modified, to any third party or parties, PROVIDED
+ # that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear
+ # on, or be attached to, the Program, which is distributed substantially
+ # in the same form as set out herein and that such intended
+ # distribution, if actually made, will neither violate or otherwise
+ # contravene any of the laws and regulations of the countries having
+ # jurisdiction over the User or the intended distribution itself.
#
- # NO WARRANTY
+ # NO WARRANTY
#
- # The program was produced on an experimental basis in the course of the
- # research and development conducted during the project and is provided
- # to users as so produced on an experimental basis. Accordingly, the
- # program is provided without any warranty whatsoever, whether express,
- # implied, statutory or otherwise. The term "warranty" used herein
- # includes, but is not limited to, any warranty of the quality,
- # performance, merchantability and fitness for a particular purpose of
- # the program and the nonexistence of any infringement or violation of
- # any right of any third party.
+ # The program was produced on an experimental basis in the course of the
+ # research and development conducted during the project and is provided
+ # to users as so produced on an experimental basis. Accordingly, the
+ # program is provided without any warranty whatsoever, whether express,
+ # implied, statutory or otherwise. The term "warranty" used herein
+ # includes, but is not limited to, any warranty of the quality,
+ # performance, merchantability and fitness for a particular purpose of
+ # the program and the nonexistence of any infringement or violation of
+ # any right of any third party.
#
- # Each user of the program will agree and understand, and be deemed to
- # have agreed and understood, that there is no warranty whatsoever for
- # the program and, accordingly, the entire risk arising from or
- # otherwise connected with the program is assumed by the user.
+ # Each user of the program will agree and understand, and be deemed to
+ # have agreed and understood, that there is no warranty whatsoever for
+ # the program and, accordingly, the entire risk arising from or
+ # otherwise connected with the program is assumed by the user.
#
- # Therefore, neither ICOT, the copyright holder, or any other
- # organization that participated in or was otherwise related to the
- # development of the program and their respective officials, directors,
- # officers and other employees shall be held liable for any and all
- # damages, including, without limitation, general, special, incidental
- # and consequential damages, arising out of or otherwise in connection
- # with the use or inability to use the program or any product, material
- # or result produced or otherwise obtained by using the program,
- # regardless of whether they have been advised of, or otherwise had
- # knowledge of, the possibility of such damages at any time during the
- # project or thereafter. Each user will be deemed to have agreed to the
- # foregoing by his or her commencement of use of the program. The term
- # "use" as used herein includes, but is not limited to, the use,
- # modification, copying and distribution of the program and the
- # production of secondary products from the program.
+ # Therefore, neither ICOT, the copyright holder, or any other
+ # organization that participated in or was otherwise related to the
+ # development of the program and their respective officials, directors,
+ # officers and other employees shall be held liable for any and all
+ # damages, including, without limitation, general, special, incidental
+ # and consequential damages, arising out of or otherwise in connection
+ # with the use or inability to use the program or any product, material
+ # or result produced or otherwise obtained by using the program,
+ # regardless of whether they have been advised of, or otherwise had
+ # knowledge of, the possibility of such damages at any time during the
+ # project or thereafter. Each user will be deemed to have agreed to the
+ # foregoing by his or her commencement of use of the program. The term
+ # "use" as used herein includes, but is not limited to, the use,
+ # modification, copying and distribution of the program and the
+ # production of secondary products from the program.
#
- # In the case where the program, whether in its original form or
- # modified, was distributed or delivered to or received by a user from
- # any person, organization or entity other than ICOT, unless it makes or
- # grants independently of ICOT any specific warranty to the user in
- # writing, such person, organization or entity, will also be exempted
- # from and not be held liable to the user for any such damages as noted
- # above as far as the program is concerned.
+ # In the case where the program, whether in its original form or
+ # modified, was distributed or delivered to or received by a user from
+ # any person, organization or entity other than ICOT, unless it makes or
+ # grants independently of ICOT any specific warranty to the user in
+ # writing, such person, organization or entity, will also be exempted
+ # from and not be held liable to the user for any such damages as noted
+ # above as far as the program is concerned.
#
- # ---------------COPYING.ipadic-----END------------------------------------
+ # ---------------COPYING.ipadic-----END----------------------------------
3. Lao Word Break Dictionary Data (laodict.txt)
- # Copyright (c) 2013 International Business Machines Corporation
- # and others. All Rights Reserved.
+ # Copyright (c) 2013 International Business Machines Corporation
+ # and others. All Rights Reserved.
#
- # Project: http://code.google.com/p/lao-dictionary/
+ # Project: http://code.google.com/p/lao-dictionary/
# Dictionary: http://lao-dictionary.googlecode.com/git/Lao-Dictionary.txt
- # License: http://lao-dictionary.googlecode.com/git/Lao-Dictionary-LICENSE.txt
- # (copied below)
+ # License: http://lao-dictionary.googlecode.com/git/Lao-Dictionary-LICENSE.txt
+ # (copied below)
#
- # This file is derived from the above dictionary, with slight modifications.
- # --------------------------------------------------------------------------------
- # Copyright (C) 2013 Brian Eugene Wilson, Robert Martin Campbell.
- # All rights reserved.
+ # This file is derived from the above dictionary, with slight
+ # modifications.
+ # ----------------------------------------------------------------------
+ # Copyright (C) 2013 Brian Eugene Wilson, Robert Martin Campbell.
+ # All rights reserved.
#
- # Redistribution and use in source and binary forms, with or without modification,
- # are permitted provided that the following conditions are met:
+ # 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.
#
- # 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 HOLDER 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.
- # --------------------------------------------------------------------------------
+ # 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.
+ #
+ #
+ # 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 HOLDER 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.
+ # --------------------------------------------------------------------------
4. Burmese Word Break Dictionary Data (burmesedict.txt)
- # Copyright (c) 2014 International Business Machines Corporation
- # and others. All Rights Reserved.
- #
- # This list is part of a project hosted at:
- # github.com/kanyawtech/myanmar-karen-word-lists
+ # Copyright (c) 2014 International Business Machines Corporation
+ # and others. All Rights Reserved.
#
- # --------------------------------------------------------------------------------
- # Copyright (c) 2013, LeRoy Benjamin Sharon
- # All rights reserved.
+ # This list is part of a project hosted at:
+ # github.com/kanyawtech/myanmar-karen-word-lists
#
- # Redistribution and use in source and binary forms, with or without modification,
- # are permitted provided that the following conditions are met:
+ # --------------------------------------------------------------------------
+ # Copyright (c) 2013, LeRoy Benjamin Sharon
+ # All rights reserved.
#
- # Redistributions of source code must retain the above copyright notice, this
- # list of conditions and the following disclaimer.
+ # 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.
#
- # 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 Myanmar Karen Word Lists, nor the names of its
+ # contributors may be used to endorse or promote products derived
+ # from this software without specific prior written permission.
#
- # Neither the name Myanmar Karen Word Lists, 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 HOLDER 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.
- # --------------------------------------------------------------------------------
+ # 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 HOLDER 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.
+ # --------------------------------------------------------------------------
5. Time Zone Database
- ICU uses the public domain data and code derived from
- Time Zone Database for its time zone support. The ownership of the TZ database is explained
- in BCP 175: Procedure for Maintaining the Time Zone
+
+ ICU uses the public domain data and code derived from Time Zone
+ Database for its time zone support. The ownership of the TZ database
+ is explained in BCP 175: Procedure for Maintaining the Time Zone
Database section 7.
- 7. Database Ownership
-
- The TZ database itself is not an IETF Contribution or an IETF
- document. Rather it is a pre-existing and regularly updated work
- that is in the public domain, and is intended to remain in the public
- domain. Therefore, BCPs 78 [RFC5378] and 79 [RFC3979] do not apply
- to the TZ Database or contributions that individuals make to it.
- Should any claims be made and substantiated against the TZ Database,
- the organization that is providing the IANA Considerations defined in
- this RFC, under the memorandum of understanding with the IETF,
- currently ICANN, may act in accordance with all competent court
- orders. No ownership claims will be made by ICANN or the IETF Trust
- on the database or the code. Any person making a contribution to the
- database or code waives all rights to future claims in that
- contribution or in the TZ Database.
+ # 7. Database Ownership
+ #
+ # The TZ database itself is not an IETF Contribution or an IETF
+ # document. Rather it is a pre-existing and regularly updated work
+ # that is in the public domain, and is intended to remain in the
+ # public domain. Therefore, BCPs 78 [RFC5378] and 79 [RFC3979] do
+ # not apply to the TZ Database or contributions that individuals make
+ # to it. Should any claims be made and substantiated against the TZ
+ # Database, the organization that is providing the IANA
+ # Considerations defined in this RFC, under the memorandum of
+ # understanding with the IETF, currently ICANN, may act in accordance
+ # with all competent court orders. No ownership claims will be made
+ # by ICANN or the IETF Trust on the database or the code. Any person
+ # making a contribution to the database or code waives all rights to
+ # future claims in that contribution or in the TZ Database.
"""
- libuv, located at deps/uv, is licensed as follows:
@@ -506,7 +544,7 @@ The externally maintained libraries used by Node.js are:
- OpenSSL, located at deps/openssl, is licensed as follows:
"""
- Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved.
+ Copyright (c) 1998-2016 The OpenSSL Project. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
diff --git a/Makefile b/Makefile
index b4edaee1bf29ba..c01b10f14a8a23 100644
--- a/Makefile
+++ b/Makefile
@@ -8,9 +8,12 @@ PREFIX ?= /usr/local
FLAKY_TESTS ?= run
TEST_CI_ARGS ?=
STAGINGSERVER ?= node-www
-
OSTYPE := $(shell uname -s | tr '[A-Z]' '[a-z]')
+ifdef JOBS
+ PARALLEL_ARGS = -j $(JOBS)
+endif
+
ifdef QUICKCHECK
QUICKCHECK_ARG := --quickcheck
endif
@@ -128,7 +131,7 @@ test/gc/node_modules/weak/build/Release/weakref.node: $(NODE_EXE)
--nodedir="$(shell pwd)"
# Implicitly depends on $(NODE_EXE), see the build-addons rule for rationale.
-test/addons/.docbuildstamp: doc/api/addons.markdown
+test/addons/.docbuildstamp: doc/api/addons.md
$(RM) -r test/addons/??_*/
$(NODE) tools/doc/addon-verify.js
touch $@
@@ -168,7 +171,8 @@ test-all-valgrind: test-build
$(PYTHON) tools/test.py --mode=debug,release --valgrind
test-ci: | build-addons
- $(PYTHON) tools/test.py -p tap --logfile test.tap --mode=release --flaky-tests=$(FLAKY_TESTS) \
+ $(PYTHON) tools/test.py $(PARALLEL_ARGS) -p tap --logfile test.tap \
+ --mode=release --flaky-tests=$(FLAKY_TESTS) \
$(TEST_CI_ARGS) addons message parallel sequential
test-release: test-build
@@ -235,9 +239,9 @@ test-v8-benchmarks:
test-v8-all: test-v8 test-v8-intl test-v8-benchmarks
# runs all v8 tests
-apidoc_sources = $(wildcard doc/api/*.markdown)
-apidocs = $(addprefix out/,$(apidoc_sources:.markdown=.html)) \
- $(addprefix out/,$(apidoc_sources:.markdown=.json))
+apidoc_sources = $(wildcard doc/api/*.md)
+apidocs = $(addprefix out/,$(apidoc_sources:.md=.html)) \
+ $(addprefix out/,$(apidoc_sources:.md=.json))
apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets
@@ -254,10 +258,10 @@ out/doc/api/assets/%: doc/api_assets/% out/doc/api/assets/
out/doc/%: doc/%
cp -r $< $@
-out/doc/api/%.json: doc/api/%.markdown $(NODE_EXE)
+out/doc/api/%.json: doc/api/%.md $(NODE_EXE)
$(NODE) tools/doc/generate.js --format=json $< > $@
-out/doc/api/%.html: doc/api/%.markdown $(NODE_EXE)
+out/doc/api/%.html: doc/api/%.md $(NODE_EXE)
$(NODE) tools/doc/generate.js --format=html --template=doc/template.html $< > $@
docopen: out/doc/api/all.html
@@ -469,7 +473,7 @@ doc-upload: tar
scp -pr out/doc/ $(STAGINGSERVER):nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/docs/
ssh $(STAGINGSERVER) "touch nodejs/$(DISTTYPEDIR)/$(FULLVERSION)/docs.done"
-$(TARBALL)-headers: config.gypi release-only
+$(TARBALL)-headers: release-only
$(PYTHON) ./configure \
--prefix=/ \
--dest-cpu=$(DESTCPU) \
@@ -477,7 +481,7 @@ $(TARBALL)-headers: config.gypi release-only
--release-urlbase=$(RELEASE_URLBASE) \
$(CONFIG_FLAGS) $(BUILD_RELEASE_FLAGS)
HEADERS_ONLY=1 $(PYTHON) tools/install.py install '$(TARNAME)' '/'
- find $(TARNAME)/ -type l | xargs rm # annoying on windows
+ find $(TARNAME)/ -type l | xargs rm -f
tar -cf $(TARNAME)-headers.tar $(TARNAME)
rm -rf $(TARNAME)
gzip -c -f -9 $(TARNAME)-headers.tar > $(TARNAME)-headers.tar.gz
@@ -592,8 +596,13 @@ bench-idle:
$(NODE) benchmark/idle_clients.js &
jslint:
- $(NODE) tools/eslint/bin/eslint.js benchmark lib src test tools/doc \
- tools/eslint-rules --rulesdir tools/eslint-rules
+ $(NODE) tools/jslint.js -J benchmark lib src test tools/doc \
+ tools/eslint-rules tools/jslint.js
+
+jslint-ci:
+ $(NODE) tools/jslint.js $(PARALLEL_ARGS) -f tap -o test-eslint.tap \
+ benchmark lib src test tools/doc \
+ tools/eslint-rules tools/jslint.js
CPPLINT_EXCLUDE ?=
CPPLINT_EXCLUDE += src/node_lttng.cc
@@ -621,8 +630,7 @@ cpplint:
@$(PYTHON) tools/cpplint.py $(CPPLINT_FILES)
lint: jslint cpplint
-
-lint-ci: lint
+lint-ci: jslint-ci cpplint
.PHONY: lint cpplint jslint bench clean docopen docclean doc dist distclean \
check uninstall install install-includes install-bin all staticlib \
@@ -630,4 +638,5 @@ lint-ci: lint
blog blogclean tar binary release-only bench-http-simple bench-idle \
bench-all bench bench-misc bench-array bench-buffer bench-net \
bench-http bench-fs bench-tls cctest run-ci test-v8 test-v8-intl \
- test-v8-benchmarks test-v8-all v8 lint-ci bench-ci
+ test-v8-benchmarks test-v8-all v8 lint-ci bench-ci jslint-ci \
+ $(TARBALL)-headers
diff --git a/README.md b/README.md
index 64264f7c40d983..99113d55e8755c 100644
--- a/README.md
+++ b/README.md
@@ -70,7 +70,15 @@ documentation of the latest stable version.
Stable, LTS and Nightly download directories all contain a *SHASUM256.txt*
file that lists the SHA checksums for each file available for
-download. To check that a downloaded file matches the checksum, run
+download.
+
+The *SHASUM256.txt* can be downloaded using curl.
+
+```
+$ curl -O https://nodejs.org/dist/vx.y.z/SHASUMS256.txt
+```
+
+To check that a downloaded file matches the checksum, run
it through `sha256sum` with a command such as:
```
@@ -159,6 +167,7 @@ information about the governance of the Node.js project, see
### Collaborators
+* [addaleax](https://github.com/addaleax) - **Anna Henningsen** <anna@addaleax.net>
* [AndreasMadsen](https://github.com/AndreasMadsen) - **Andreas Madsen** <amwebdk@gmail.com>
* [benjamingr](https://github.com/benjamingr) - **Benjamin Gruenbaum** <benjamingr@gmail.com>
* [brendanashworth](https://github.com/brendanashworth) - **Brendan Ashworth** <brendan.ashworth@me.com>
@@ -168,6 +177,7 @@ information about the governance of the Node.js project, see
* [geek](https://github.com/geek) - **Wyatt Preul** <wpreul@gmail.com>
* [iarna](https://github.com/iarna) - **Rebecca Turner** <me@re-becca.org>
* [isaacs](https://github.com/isaacs) - **Isaac Z. Schlueter** <i@izs.me>
+* [iWuzHere](https://github.com/iWuzHere) - **Imran Iqbal** <imran@imraniqbal.org>
* [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>
@@ -188,9 +198,11 @@ information about the governance of the Node.js project, see
* [romankl](https://github.com/romankl) - **Roman Klauke** <romaaan.git@gmail.com>
* [saghul](https://github.com/saghul) - **Saúl Ibarra Corretgé** <saghul@gmail.com>
* [sam-github](https://github.com/sam-github) - **Sam Roberts** <vieuxtech@gmail.com>
+* [santigimeno](https://github.com/santigimeno) - **Santiago Gimeno** <santiago.gimeno@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>
+* [stefanmb](https://github.com/stefanmb) - **Stefan Budeanu** <stefan@budeanu.com>
* [targos](https://github.com/targos) - **Michaël Zasso** <mic.besace@gmail.com>
* [tellnes](https://github.com/tellnes) - **Christian Tellnes** <christian@tellnes.no>
* [thealphanerd](https://github.com/thealphanerd) - **Myles Borins** <myles.borins@gmail.com>
diff --git a/benchmark/buffers/buffer-compare-offset.js b/benchmark/buffers/buffer-compare-offset.js
new file mode 100644
index 00000000000000..17b36f82883426
--- /dev/null
+++ b/benchmark/buffers/buffer-compare-offset.js
@@ -0,0 +1,58 @@
+'use strict';
+const common = require('../common.js');
+const v8 = require('v8');
+
+const bench = common.createBenchmark(main, {
+ method: ['offset', 'slice'],
+ size: [16, 512, 1024, 4096, 16386],
+ millions: [1]
+});
+
+function compareUsingSlice(b0, b1, len, iter) {
+
+ // Force optimization before starting the benchmark
+ Buffer.compare(b0.slice(1, len), b1.slice(1, len));
+ v8.setFlagsFromString('--allow_natives_syntax');
+ eval('%OptimizeFunctionOnNextCall(Buffer.compare)');
+ eval('%OptimizeFunctionOnNextCall(b0.slice)');
+ eval('%OptimizeFunctionOnNextCall(b1.slice)');
+ Buffer.compare(b0.slice(1, len), b1.slice(1, len));
+ doCompareUsingSlice(b0, b1, len, iter);
+}
+
+function doCompareUsingSlice(b0, b1, len, iter) {
+ var i;
+ bench.start();
+ for (i = 0; i < iter; i++)
+ Buffer.compare(b0.slice(1, len), b1.slice(1, len));
+ bench.end(iter / 1e6);
+}
+
+function compareUsingOffset(b0, b1, len, iter) {
+ len = len + 1;
+ // Force optimization before starting the benchmark
+ b0.compare(b1, 1, len, 1, len);
+ v8.setFlagsFromString('--allow_natives_syntax');
+ eval('%OptimizeFunctionOnNextCall(b0.compare)');
+ b0.compare(b1, 1, len, 1, len);
+ doCompareUsingOffset(b0, b1, len, iter);
+}
+
+function doCompareUsingOffset(b0, b1, len, iter) {
+ var i;
+ bench.start();
+ for (i = 0; i < iter; i++)
+ b0.compare(b1, 1, len, 1, len);
+ bench.end(iter / 1e6);
+}
+
+function main(conf) {
+ const iter = (conf.millions >>> 0) * 1e6;
+ const size = (conf.size >>> 0);
+ const method = conf.method === 'slice' ?
+ compareUsingSlice : compareUsingOffset;
+ method(Buffer.alloc(size, 'a'),
+ Buffer.alloc(size, 'b'),
+ size >> 1,
+ iter);
+}
diff --git a/benchmark/module/module-loader.js b/benchmark/module/module-loader.js
index 1df7a74cbe77e1..a175533c7bbc6e 100644
--- a/benchmark/module/module-loader.js
+++ b/benchmark/module/module-loader.js
@@ -7,15 +7,17 @@ var tmpDirectory = path.join(__dirname, '..', 'tmp');
var benchmarkDirectory = path.join(tmpDirectory, 'nodejs-benchmark-module');
var bench = common.createBenchmark(main, {
- thousands: [50]
+ thousands: [50],
+ fullPath: ['true', 'false']
});
function main(conf) {
+ var n = +conf.thousands * 1e3;
+
rmrf(tmpDirectory);
try { fs.mkdirSync(tmpDirectory); } catch (e) {}
try { fs.mkdirSync(benchmarkDirectory); } catch (e) {}
- var n = +conf.thousands * 1e3;
for (var i = 0; i <= n; i++) {
fs.mkdirSync(benchmarkDirectory + i);
fs.writeFileSync(
@@ -28,10 +30,21 @@ function main(conf) {
);
}
- measure(n);
+ if (conf.fullPath === 'true')
+ measureFull(n);
+ else
+ measureDir(n);
+}
+
+function measureFull(n) {
+ bench.start();
+ for (var i = 0; i <= n; i++) {
+ require(benchmarkDirectory + i + '/index.js');
+ }
+ bench.end(n / 1e3);
}
-function measure(n) {
+function measureDir(n) {
bench.start();
for (var i = 0; i <= n; i++) {
require(benchmarkDirectory + i);
diff --git a/common.gypi b/common.gypi
index 811a7b3da3d502..ac06e55b181e67 100644
--- a/common.gypi
+++ b/common.gypi
@@ -95,7 +95,7 @@
'variables': {
'v8_enable_handle_zapping': 0,
},
- 'cflags': [ '-O3', '-ffunction-sections', '-fdata-sections' ],
+ 'cflags': [ '-O3' ],
'conditions': [
['target_arch=="x64"', {
'msvs_configuration_platform': 'x64',
diff --git a/deps/http_parser/Makefile b/deps/http_parser/Makefile
index 970bdc42635ae1..5f4eb2252f241b 100644
--- a/deps/http_parser/Makefile
+++ b/deps/http_parser/Makefile
@@ -22,14 +22,14 @@ PLATFORM ?= $(shell sh -c 'uname -s | tr "[A-Z]" "[a-z]"')
HELPER ?=
BINEXT ?=
ifeq (darwin,$(PLATFORM))
-SONAME ?= libhttp_parser.2.6.2.dylib
+SONAME ?= libhttp_parser.2.7.0.dylib
SOEXT ?= dylib
else ifeq (wine,$(PLATFORM))
CC = winegcc
BINEXT = .exe.so
HELPER = wine
else
-SONAME ?= libhttp_parser.so.2.6.2
+SONAME ?= libhttp_parser.so.2.7.0
SOEXT ?= so
endif
diff --git a/deps/http_parser/http_parser.c b/deps/http_parser/http_parser.c
index d51a2e7bcdf30a..719617549d0cb1 100644
--- a/deps/http_parser/http_parser.c
+++ b/deps/http_parser/http_parser.c
@@ -1812,6 +1812,9 @@ size_t http_parser_execute (http_parser *parser,
case 0:
break;
+ case 2:
+ parser->upgrade = 1;
+
case 1:
parser->flags |= F_SKIPBODY;
break;
diff --git a/deps/http_parser/http_parser.h b/deps/http_parser/http_parser.h
index 0cee4cc85b3892..105ae510a8ab57 100644
--- a/deps/http_parser/http_parser.h
+++ b/deps/http_parser/http_parser.h
@@ -26,8 +26,8 @@ extern "C" {
/* Also update SONAME in the Makefile whenever you change these. */
#define HTTP_PARSER_VERSION_MAJOR 2
-#define HTTP_PARSER_VERSION_MINOR 6
-#define HTTP_PARSER_VERSION_PATCH 2
+#define HTTP_PARSER_VERSION_MINOR 7
+#define HTTP_PARSER_VERSION_PATCH 0
#include
#if defined(_WIN32) && !defined(__MINGW32__) && \
@@ -77,6 +77,11 @@ typedef struct http_parser_settings http_parser_settings;
* HEAD request which may contain 'Content-Length' or 'Transfer-Encoding:
* chunked' headers that indicate the presence of a body.
*
+ * Returning `2` from on_headers_complete will tell parser that it should not
+ * expect neither a body nor any futher responses on this connection. This is
+ * useful for handling responses to a CONNECT request which may not contain
+ * `Upgrade` or `Connection: upgrade` headers.
+ *
* http_data_cb does not return data chunks. It will be called arbitrarily
* many times for each string. E.G. you might get 10 callbacks for "on_url"
* each providing just a few characters more data.
diff --git a/deps/http_parser/test.c b/deps/http_parser/test.c
index 7b01dc346b63d9..456a78add05e68 100644
--- a/deps/http_parser/test.c
+++ b/deps/http_parser/test.c
@@ -2173,6 +2173,20 @@ pause_chunk_complete_cb (http_parser *p)
return chunk_complete_cb(p);
}
+int
+connect_headers_complete_cb (http_parser *p)
+{
+ headers_complete_cb(p);
+ return 1;
+}
+
+int
+connect_message_complete_cb (http_parser *p)
+{
+ messages[num_messages].should_keep_alive = http_should_keep_alive(parser);
+ return message_complete_cb(p);
+}
+
static http_parser_settings settings_pause =
{.on_message_begin = pause_message_begin_cb
,.on_header_field = pause_header_field_cb
@@ -2212,6 +2226,19 @@ static http_parser_settings settings_count_body =
,.on_chunk_complete = chunk_complete_cb
};
+static http_parser_settings settings_connect =
+ {.on_message_begin = message_begin_cb
+ ,.on_header_field = header_field_cb
+ ,.on_header_value = header_value_cb
+ ,.on_url = request_url_cb
+ ,.on_status = response_status_cb
+ ,.on_body = dontcall_body_cb
+ ,.on_headers_complete = connect_headers_complete_cb
+ ,.on_message_complete = connect_message_complete_cb
+ ,.on_chunk_header = chunk_header_cb
+ ,.on_chunk_complete = chunk_complete_cb
+ };
+
static http_parser_settings settings_null =
{.on_message_begin = 0
,.on_header_field = 0
@@ -2275,6 +2302,14 @@ size_t parse_pause (const char *buf, size_t len)
return nparsed;
}
+size_t parse_connect (const char *buf, size_t len)
+{
+ size_t nparsed;
+ currently_parsing_eof = (len == 0);
+ nparsed = http_parser_execute(parser, &settings_connect, buf, len);
+ return nparsed;
+}
+
static inline int
check_str_eq (const struct message *m,
const char *prop,
@@ -2331,7 +2366,7 @@ do { \
} while(0)
int
-message_eq (int index, const struct message *expected)
+message_eq (int index, int connect, const struct message *expected)
{
int i;
struct message *m = &messages[index];
@@ -2346,8 +2381,10 @@ message_eq (int index, const struct message *expected)
MESSAGE_CHECK_STR_EQ(expected, m, response_status);
}
- MESSAGE_CHECK_NUM_EQ(expected, m, should_keep_alive);
- MESSAGE_CHECK_NUM_EQ(expected, m, message_complete_on_eof);
+ if (!connect) {
+ MESSAGE_CHECK_NUM_EQ(expected, m, should_keep_alive);
+ MESSAGE_CHECK_NUM_EQ(expected, m, message_complete_on_eof);
+ }
assert(m->message_begin_cb_called);
assert(m->headers_complete_cb_called);
@@ -2385,16 +2422,22 @@ message_eq (int index, const struct message *expected)
MESSAGE_CHECK_NUM_EQ(expected, m, port);
}
- if (expected->body_size) {
+ if (connect) {
+ check_num_eq(m, "body_size", 0, m->body_size);
+ } else if (expected->body_size) {
MESSAGE_CHECK_NUM_EQ(expected, m, body_size);
} else {
MESSAGE_CHECK_STR_EQ(expected, m, body);
}
- assert(m->num_chunks == m->num_chunks_complete);
- MESSAGE_CHECK_NUM_EQ(expected, m, num_chunks_complete);
- for (i = 0; i < m->num_chunks && i < MAX_CHUNKS; i++) {
- MESSAGE_CHECK_NUM_EQ(expected, m, chunk_lengths[i]);
+ if (connect) {
+ check_num_eq(m, "num_chunks_complete", 0, m->num_chunks_complete);
+ } else {
+ assert(m->num_chunks == m->num_chunks_complete);
+ MESSAGE_CHECK_NUM_EQ(expected, m, num_chunks_complete);
+ for (i = 0; i < m->num_chunks && i < MAX_CHUNKS; i++) {
+ MESSAGE_CHECK_NUM_EQ(expected, m, chunk_lengths[i]);
+ }
}
MESSAGE_CHECK_NUM_EQ(expected, m, num_headers);
@@ -3201,7 +3244,7 @@ test_message (const struct message *message)
abort();
}
- if(!message_eq(0, message)) abort();
+ if(!message_eq(0, 0, message)) abort();
parser_free();
}
@@ -3238,7 +3281,7 @@ test_message_count_body (const struct message *message)
abort();
}
- if(!message_eq(0, message)) abort();
+ if(!message_eq(0, 0, message)) abort();
parser_free();
}
@@ -3589,9 +3632,9 @@ test_multiple3 (const struct message *r1, const struct message *r2, const struct
abort();
}
- if (!message_eq(0, r1)) abort();
- if (message_count > 1 && !message_eq(1, r2)) abort();
- if (message_count > 2 && !message_eq(2, r3)) abort();
+ if (!message_eq(0, 0, r1)) abort();
+ if (message_count > 1 && !message_eq(1, 0, r2)) abort();
+ if (message_count > 2 && !message_eq(2, 0, r3)) abort();
parser_free();
}
@@ -3687,17 +3730,17 @@ test_scan (const struct message *r1, const struct message *r2, const struct mess
goto error;
}
- if (!message_eq(0, r1)) {
+ if (!message_eq(0, 0, r1)) {
fprintf(stderr, "\n\nError matching messages[0] in test_scan.\n");
goto error;
}
- if (message_count > 1 && !message_eq(1, r2)) {
+ if (message_count > 1 && !message_eq(1, 0, r2)) {
fprintf(stderr, "\n\nError matching messages[1] in test_scan.\n");
goto error;
}
- if (message_count > 2 && !message_eq(2, r3)) {
+ if (message_count > 2 && !message_eq(2, 0, r3)) {
fprintf(stderr, "\n\nError matching messages[2] in test_scan.\n");
goto error;
}
@@ -3796,7 +3839,29 @@ test_message_pause (const struct message *msg)
abort();
}
- if(!message_eq(0, msg)) abort();
+ if(!message_eq(0, 0, msg)) abort();
+
+ parser_free();
+}
+
+/* Verify that body and next message won't be parsed in responses to CONNECT */
+void
+test_message_connect (const struct message *msg)
+{
+ char *buf = (char*) msg->raw;
+ size_t buflen = strlen(msg->raw);
+ size_t nread;
+
+ parser_init(msg->type);
+
+ nread = parse_connect(buf, buflen);
+
+ if (num_messages != 1) {
+ printf("\n*** num_messages != 1 after testing '%s' ***\n\n", msg->name);
+ abort();
+ }
+
+ if(!message_eq(0, 1, msg)) abort();
parser_free();
}
@@ -3867,6 +3932,10 @@ main (void)
test_message_pause(&responses[i]);
}
+ for (i = 0; i < response_count; i++) {
+ test_message_connect(&responses[i]);
+ }
+
for (i = 0; i < response_count; i++) {
if (!responses[i].should_keep_alive) continue;
for (j = 0; j < response_count; j++) {
diff --git a/deps/npm/AUTHORS b/deps/npm/AUTHORS
index ba4b123ef94d33..9d8bbe956198ca 100644
--- a/deps/npm/AUTHORS
+++ b/deps/npm/AUTHORS
@@ -382,3 +382,10 @@ Zac
GriffinSchneider
Andres Kalle
thefourtheye
+Yael
+Yann Odeyer
+James Monger
+Thomas Hallock
+Paul Irish
+Paul O'Leary McCann
+Francis Gulotta
diff --git a/deps/npm/CHANGELOG.md b/deps/npm/CHANGELOG.md
index bcd44fff6691de..698942905ed5c1 100644
--- a/deps/npm/CHANGELOG.md
+++ b/deps/npm/CHANGELOG.md
@@ -1,8 +1,210 @@
+### v3.8.6 (2016-03-31)
+
+Heeeeeey y'all.
+
+Kat here! Rebecca's been schmoozing with folks at [Microsoft
+Build](https://build.microsoft.com/), so I'm doing the `npm@3` release this
+week.
+
+Speaking of Build, it looks like Microsoft is doing some bash thing. This might
+be really good news for our Windows users once it rolls around. We're keeping an
+eye out and feeling hopeful. 🙆
+
+As far as the release goes: We're really happy to be getting more and more
+community contributions! Keep it up! We really appreciate folks trying to help
+us, and we'll do our best to help point you in the right direction. Even things
+like documentation are a huge help. And remember -- you get socks for it, too!
+
+#### FIXES
+
+* [`f8fb4d8`](https://github.com/npm/npm/commit/f8fb4d83923810eb78d075bd200a9376c64c3e3a)
+ [#12079](https://github.com/npm/npm/pull/12079)
+ Back in `npm@3.2.2` we included [a patch that made it so `npm install pkg` was
+ basically `npm install pkg@latest` instead of
+ `pkg@*`](https://github.com/npm/npm/pull/9170)
+ This is probably what most users expected, but it also ended up [breaking `npm
+ deprecate`](https://github.com/npm/npm/pull/9170) when no version was provided
+ for a package. In that case, we were using `*` to mean "deprecate all
+ versions" and relying on the `pkg` -> `pkg@*` conversion.
+ This patch fixes `npm deprecate pkg` to work as it used to by special casing
+ that particular command's behavior.
+ ([@polm](https://github.com/polm))
+* [`458f773`](https://github.com/npm/npm/commit/458f7734f3376aba0b6ff16d34a25892f7717e40)
+ [#12146](https://github.com/npm/npm/pull/12146)
+ Adds `make doc-clean` to `prepublish` script, to clear out previously built
+ docs before publishing a new npm version
+ ([@watilde](https://github.com/watilde))
+* [`f0d1521`](https://github.com/npm/npm/commit/f0d1521038e956b2197673f36c464684293ce99d)
+ [#12146](https://github.com/npm/npm/pull/12146)
+ Adds `doc-clean` phony target to `make publish`.
+ ([@watilde](https://github.com/watilde))
+
+#### DOC UPDATES
+
+* [`ea92ffc`](https://github.com/npm/npm/commit/ea92ffc9dd2a063896353fc52c104e85ec061360)
+ [#12147](https://github.com/npm/npm/pull/12147)
+ Document that the current behavior of `engines` is just to warn if the node
+ platform is incompatible.
+ ([@reconbot](https://github.com/reconbot))
+* [`cd1ba44`](https://github.com/npm/npm/commit/cd1ba4423b3ca889c741141b95b0d9472b9f71ea)
+ [#12143](https://github.com/npm/npm/pull/12143)
+ Remove `npm faq` command, since the [FAQ was
+ removed](https://github.com/npm/npm/pull/10547).
+ ([@watilde](https://github.com/watilde))
+* [`50a12cb`](https://github.com/npm/npm/commit/50a12cb1f5f158af78d6962ad20ff0a98bc18f18)
+ [#12143](https://github.com/npm/npm/pull/12143)
+ Remove references to the FAQ from the docs, since [it was
+ removed](https://github.com/npm/npm/pull/10547).
+ ([@watilde](https://github.com/watilde))
+* [`60051c2`](https://github.com/npm/npm/commit/60051c25e2ab80c667137dfcd04b242eea25980e)
+ [#12093](https://github.com/npm/npm/pull/12093)
+ Update `bugs` url in `package.json` to use the `https` URL for Github.
+ ([@watilde](https://github.com/watilde))
+* [`af30c37`](https://github.com/npm/npm/commit/af30c374ef22ed1a1c71b14fced7c4b8350e4e82)
+ [#12075](https://github.com/npm/npm/pull/12075)
+ Add the `--ignore-scripts` flag to the `npm install` docs.
+ ([@paulirish](https://github.com/paulirish))
+* [`632b214`](https://github.com/npm/npm/commit/632b214b2f2450e844410792e5947e46844612ff)
+ [#12063](https://github.com/npm/npm/pull/12063)
+ Various minor fixes to the html docs homepage.
+ ([@watilde](https://github.com/watilde))
+
+#### DEP BUMPS
+
+* [`3da0171`](https://github.com/npm/npm/commit/3da01716a0e41d6b5adee2b4fc70fcaf08c0eb24)
+ `lodash.without@4.1.2`
+ ([@jdalton](https://github.com/jdalton))
+* [`69ccf6d`](https://github.com/npm/npm/commit/69ccf6dd4caf95cd0628054307487cae1885acd0)
+ `lodash.uniq@4.2.1`
+ ([@jdalton](https://github.com/jdalton))
+* [`b50c41a`](https://github.com/npm/npm/commit/b50c41a9930dc5353a23c5ae2ff87bb99e11d482)
+ `lodash.union@4.2.1`
+ ([@jdalton](https://github.com/jdalton))
+* [`59c1ad7`](https://github.com/npm/npm/commit/59c1ad7b6f243d07618ed5703bd11d787732fc57)
+ `lodash.clonedeep@4.3.2`
+ ([@jdalton](https://github.com/jdalton))
+* [`2b4f797`](https://github.com/npm/npm/commit/2b4f797dba8e7a1376c8335b7223e82d02cd8243)
+ `lodash._baseuniq@4.5.1`
+ ([@jdalton](https://github.com/jdalton))
+
+### v3.8.5 (2016-03-24)
+
+Like my esteemed colleague [@zkat](https://github.com/zkat) said in this
+week's [LTS release notes](https://github.com/npm/npm/releases/tag/v2.15.2),
+this week is another small release but we are continuing to work on our
+[Windows efforts](https://github.com/npm/npm/pull/11444).
+
+You may also be interested in reading the [LTS process and
+policy](https://github.com/npm/npm/wiki/LTS) that
+[@othiym23](https://github.com/othiym23) put together recently. If you have any
+feedback, we would love to hear.
+
+#### DOCTOR IT HURTS WHEN LINK TO MY LINK
+
+Well then, don't do that.
+
+* [`0d4a0b1`](https://github.com/npm/npm/commit/0d4a0b1)
+ [#11442](https://github.com/npm/npm/pull/11442)
+ Fail if the user asks us to make a link from a module back on to itself.
+ ([@antialias](https://github.com/antialias))
+
+#### ERR MODULE LIST TOO LONG
+
+* [`b271ed2`](https://github.com/npm/npm/commit/b271ed2)
+ [#11983](https://github.com/npm/npm/issues/11983)
+ Exit early if no arguments were provided to search instead of trying to display all the modules,
+ running out of memory, and then crashing.
+ ([@SimenB](https://github.com/SimenB))
+
+#### ELIMINATE UNUSED MODULE
+
+* [`b8c7cd7`](https://github.com/npm/npm/commit/b8c7cd7)
+ [#12000](https://github.com/npm/npm/pull/12000)
+ Stop depending on [`async-some`](https://npmjs.com/package/async-some) as it's no
+ longer used in npm.
+ ([@watilde](https://github.com/watilde))
+
+#### DOCUMENTATION IMPROVEMENTS
+
+* [`fdd6b28`](https://github.com/npm/npm/commit/fdd6b28)
+ [#11884](https://github.com/npm/npm/pull/11884)
+ Include `node_modules` in the list of files and directories that npm won't
+ include in packages ordinarily. (Modules listed in `bundledDependencies` and things
+ that those modules rely on, ARE included of course.)
+ ([@Jameskmonger](https://github.com/Jameskmonger))
+* [`aac15eb`](https://github.com/npm/npm/commit/aac15eb)
+ [#12006](https://github.com/npm/npm/pull/12006)
+ Fix typo in npm-orgs documentation, where teams docs went to access docs and vice versa.
+ ([@yaelz](https://github.com/yaelz))
+
+#### FEWER NETWORK TESTS
+
+* [`3e41360`](https://github.com/npm/npm/commit/3e41360)
+ [#11987](https://github.com/npm/npm/pull/11987)
+ Fix test that was inappropriately hitting the network
+ ([@yodeyer](https://github.com/yodeyer))
+
+### v3.8.4 (2016-03-24)
+
+Was erroneously released with just a changelog typo correction and was
+otherwise the same as 3.8.3.
+
### v3.8.3 (2016-03-17):
+#### SECURITY ADVISORY: BEARER TOKEN DISCLOSURE
+
+This release includes [the fix for a
+vulnerability](https://github.com/npm/npm/commit/f67ecad59e99a03e5aad8e93cd1a086ae087cb29)
+that could cause the unintentional leakage of bearer tokens.
+
+Here are details on this vulnerability and how it affects you.
+
+##### DETAILS
+
+Since 2014, npm’s registry has used HTTP bearer tokens to authenticate requests
+from the npm’s command-line interface. A design flaw meant that the CLI was
+sending these bearer tokens with _every_ request made by logged-in users,
+regardless of the destination of their request. (The bearers only should have
+been included for requests made against a registry or registries used for the
+current install.)
+
+An attacker could exploit this flaw by setting up an HTTP server that could
+collect authentication information, then use this authentication information to
+impersonate the users whose tokens they collected. This impersonation would
+allow them to do anything the compromised users could do, including publishing
+new versions of packages.
+
+With the fixes we’ve released, the CLI will only send bearer tokens with
+requests made against a registry.
+
+##### THINK YOU'RE AT RISK? REGENERATE YOUR TOKENS
+
+If you believe that your bearer token may have been leaked, [invalidate your
+current npm bearer tokens](https://www.npmjs.com/settings/tokens) and rerun
+`npm login` to generate new tokens. Keep in mind that this may cause continuous
+integration builds in services like Travis to break, in which case you’ll need
+to update the tokens in your CI server’s configuration.
+
+##### WILL THIS BREAK MY CURRENT SETUP?
+
+Maybe.
+
+npm’s CLI team believes that the fix won’t break any existing registry setups.
+Due to the large number of registry software suites out in the wild, though,
+it’s possible our change will be breaking in some cases.
+
+If so, please [file an issue](https://github.com/npm/npm/issues/new) describing
+the software you’re using and how it broke. Our team will work with you to
+mitigate the breakage.
+
+##### CREDIT & THANKS
+
+Thanks to Mitar, Will White & the team at Mapbox, Max Motovilov, and James
+Taylor for reporting this vulnerability to npm.
+
#### PERFORMANCE IMPROVEMENTS
-The updated [`are-we-there-yet`](https://npm.com/package/are-we-there-yet)
+The updated [`are-we-there-yet`](https://npmjs.com/package/are-we-there-yet)
changes how it tracks how complete things are to be much more efficient.
The summary is that `are-we-there-yet` was refactored to remove an expensive
tree walk.
diff --git a/deps/npm/Makefile b/deps/npm/Makefile
index bea8138becf4c8..8466cfad77e48a 100644
--- a/deps/npm/Makefile
+++ b/deps/npm/Makefile
@@ -166,7 +166,7 @@ ls-ok:
gitclean:
git clean -fd
-publish: gitclean ls-ok link doc
+publish: gitclean ls-ok link doc-clean doc
@git push origin :v$(shell npm -v) 2>&1 || true
git push origin $(BRANCH) &&\
git push origin --tags &&\
diff --git a/deps/npm/README.md b/deps/npm/README.md
index 5e907a6b4b7658..b2560960a6ce00 100644
--- a/deps/npm/README.md
+++ b/deps/npm/README.md
@@ -141,7 +141,6 @@ you have chosen.
## More Docs
Check out the [docs](https://docs.npmjs.com/),
-especially the [faq](https://docs.npmjs.com/misc/faq).
You can use the `npm help` command to read any of them.
@@ -164,6 +163,5 @@ will no doubt tell you to put the output in a gist or email.
## SEE ALSO
* npm(1)
-* npm-faq(7)
* npm-help(1)
* npm-index(7)
diff --git a/deps/npm/changelogs/CHANGELOG-2.md b/deps/npm/changelogs/CHANGELOG-2.md
index 8509585001529f..48fe503381dcf5 100644
--- a/deps/npm/changelogs/CHANGELOG-2.md
+++ b/deps/npm/changelogs/CHANGELOG-2.md
@@ -1,3 +1,580 @@
+### v2.15.2 (2016-03-24):
+
+It's always nice to see new contributors. 💚
+
+This week sees another small release, but we're still chugging along on our
+[Windows efforts](https://github.com/npm/npm/pull/11444).
+
+There's also some small process changes to our LTS process relatively recently
+that you might wanna know about! 💁
+
+For one, the `2.x` branch was removed in favor of just `lts`. If you're making
+PRs exclusively against npm's LTS, please use that name from now on. `2.x` was
+deleted.
+
+Also, [@othiym23](https://github.com/othiym23) put some time into [writing down
+our LTS process and policy](https://github.com/npm/npm/wiki/LTS). Check it out
+and ping us if you have questions or comments about it!
+
+In general, we're trying to make sure all our policy and such for our
+contributors is written down, and we hope it makes it easier in general for
+y'all. Forrest is also working on a shiny new Contributor's Guide right now, but
+we'll link to that in the (near?) future, when it's ready to roll out.
+
+#### TESTS
+
+* [`1d0e468`](https://github.com/npm/npm/commit/1d0e468c06c7b8e2b95b7fe874a3399a16d9db74)
+ [#11931](https://github.com/npm/npm/pull/11931)
+ Removes a bunch of old, disabled tests that have just been sitting around,
+ doing nothing.
+ ([@othiym23](https://github.com/othiym23))
+* [`7ae8aa1`](https://github.com/npm/npm/commit/7ae8aa1d9dc47761024f6756114205db3fb2c80b)
+ [#11987](https://github.com/npm/npm/pull/11987)
+ There was a failure in the `outdated-symlink` test caused by using the default
+ registry instead of the mock registry tests.
+ ([@yodeyer](https://github.com/yodeyer))
+
+#### DOCS
+
+* [`b2649fb`](https://github.com/npm/npm/commit/b2649fb360f239aadef1ab51a580cbf4fdf29722)
+ [#12006](https://github.com/npm/npm/pull/12006)
+ Access was Team and Team was Access, but someone from the community rolled
+ around and corrected it for us. Thanks a bunch!
+ ([@yaelz](https://github.com/yaelz))
+
+### v2.15.1 (2016-03-17):
+
+#### SECURITY ADVISORY: BEARER TOKEN DISCLOSURE
+
+This release includes [the fix for a
+vulnerability](https://github.com/npm/npm/commit/fea8cc92cee02c720b58f95f14d315507ccad401)
+that could cause the unintentional leakage of bearer tokens.
+
+Here are details on this vulnerability and how it affects you.
+
+##### DETAILS
+
+Since 2014, npm’s registry has used HTTP bearer tokens to authenticate requests
+from the npm’s command-line interface. A design flaw meant that the CLI was
+sending these bearer tokens with _every_ request made by logged-in users,
+regardless of the destination of their request. (The bearers only should have
+been included for requests made against a registry or registries used for the
+current install.)
+
+An attacker could exploit this flaw by setting up an HTTP server that could
+collect authentication information, then use this authentication information to
+impersonate the users whose tokens they collected. This impersonation would
+allow them to do anything the compromised users could do, including publishing
+new versions of packages.
+
+With the fixes we’ve released, the CLI will only send bearer tokens with
+requests made against a registry.
+
+##### THINK YOU'RE AT RISK? REGENERATE YOUR TOKENS
+
+If you believe that your bearer token may have been leaked, [invalidate your
+current npm bearer tokens](https://www.npmjs.com/settings/tokens) and rerun
+`npm login` to generate new tokens. Keep in mind that this may cause continuous
+integration builds in services like Travis to break, in which case you’ll need
+to update the tokens in your CI server’s configuration.
+
+##### WILL THIS BREAK MY CURRENT SETUP?
+
+Maybe.
+
+npm’s CLI team believes that the fix won’t break any existing registry setups.
+Due to the large number of registry software suites out in the wild, though,
+it’s possible our change will be breaking in some cases.
+
+If so, please [file an issue](https://github.com/npm/npm/issues/new) describing
+the software you’re using and how it broke. Our team will work with you to
+mitigate the breakage.
+
+##### CREDIT & THANKS
+
+Thanks to Mitar, Will White & the team at Mapbox, Max Motovilov, and James
+Taylor for reporting this vulnerability to npm.
+
+### BACK TO YOUR REGULARLY SCHEDULED PROGRAMMING
+
+Aside from that, it's another one of those releases again! Docs and tests, it
+turns out, have a pretty easy time getting into LTS releases, and boring is
+exactly how LTS should be. 💁
+
+#### DOCS
+
+* [`981c89c`](https://github.com/npm/npm/commit/981c89c8e398ca22ab6bf466123b25728ef6f543)
+ [#11820](https://github.com/npm/npm/pull/11820)
+ The basic explanation for how `npm link` works was a bit confusing, and
+ somewhat incorrect. It should be clearer now.
+ ([@rhgb](https://github.com/rhgb))
+* [`35b2b45`](https://github.com/npm/npm/commit/35b2b45f181dcbfb297f53b577dc1f26efcf3aba)
+ [#11787](https://github.com/npm/npm/pull/11787)
+ The `verison` alias for `npm version` no longer shows up in the command list
+ when you do `npm -h`.
+ ([@doug-wade](https://github.com/doug-wade))
+* [`1c9d00f`](https://github.com/npm/npm/commit/1c9d00f788298a81a8a7293d7dcf430f01bdd7fd)
+ [#11786](https://github.com/npm/npm/pull/11786)
+ Add a comment to the `npm-scope.md` docs about `npm@>=2` being required in
+ order to use scoped packaged.
+ ([@doug-wade](https://github.com/doug-wade))
+* [`7d64fb1`](https://github.com/npm/npm/commit/7d64fb1452d360aa736f31c85d6776ce570b2365)
+ [#11762](https://github.com/npm/npm/pull/11762)
+ Roll back patch that previously advised people to use `--depth Infinity`
+ instead of `--depth 9999`. Just keep using `--depth 9999`.
+ ([@GriffinSchneider](https://github.com/GriffinSchneider))
+
+#### TESTS
+
+* [`98a9ee4`](https://github.com/npm/npm/commit/98a9ee4773f83994b8eb63c0ff75a9283408ba1a)
+ [#11912](https://github.com/npm/npm/pull/11912)
+ Did you know npm can install itself? `npm install -g npm` is the way to
+ upgrade! Turns out that one of the tests that verified this functionality got
+ rewritten as part of our recent push for better tests, and in the process
+ omitted a detail about *how* the test ran. We're testing that corner case
+ again, now, by moving the install folder to `/tmp`, where the original legacy
+ test ran.
+ ([@iarna](https://github.com/iarna))
+
+### v2.15.0 (2016-03-10):
+
+#### WHY IS THIS SEMVER-MINOR I THOUGHT THIS WAS LTS
+
+A brief note about LTS this week!
+
+npm, as you may know if you're using this `2.x` branch, has an LTS process for
+releases. We also try and play nice with [Node.js' own LTS release
+process](https://github.com/nodejs/LTS#lts-plan). That means we generally try to
+avoid things like minor version bumps on our `2.x` branch (which is also tagged
+`lts` in the `dist-tag`s).
+
+That said, we had a minor-bump update recently for `npm@3.8.0` which added a
+`maxsockets` option to allow users to configure the number of concurrent sockets
+that npm would keep open at a time -- a setting that has the potential to help a
+bunch for people with fussy routers or internet connections that aren't very
+happy with Node.js applications' usual concurrency storm. This change was done
+to `npm-registry-client`, which we don't have a parallel LTS-tracking branch
+for.
+
+After talking it over, we ended up deciding that this was a reasonable enough
+addition to LTS, even though it's *technically* a `semver-minor` bump, taking
+into account both its potential for bugfixing (specially on `2.x`!) and the
+general hassle it would be to maintain another branch for `npm-registry-client`.
+
+
+* [`6dd61e7`](https://github.com/npm/npm/commit/6dd61e781c145480dc255a3e6a748729868443fd)
+ Expose `maxsockets` config setting from new `npm-registry-client`.
+ ([@misterbyrne](https://github.com/misterbyrne))
+* [`8a021c3`](https://github.com/npm/npm/commit/8a021c35184e665bd1f3f70ae2f478af812ab614)
+ `npm-registry-client@7.1.0`:
+ Adds support for configuring the max number of concurrent sockets, defaulting
+ to `50`.
+ ([@iarna](https://github.com/iarna))
+
+#### DOC PATCH IS HERE TOO
+
+* [`0ae9f74`](https://github.com/npm/npm/commit/0ae9f740001a1bdf5920bc464cf9e284d5d139f0)
+ [#11748](https://github.com/npm/npm/pull/11748)
+ Add command aliases as a separate section in documentation for npm
+ subcommands.
+ ([@watilde](https://github.com/watilde))
+
+#### DEP UPDATES
+
+* [`bfc3888`](https://github.com/npm/npm/commit/bfc38887f832f701c16b7ee410c4e0220a90399f)
+ `strip-ansi@3.0.1`
+ ([@jbnicolai](https://github.com/jbnicolai))
+* [`d5f4d51`](https://github.com/npm/npm/commit/d5f4d51a1b7ea78d7431c7ed4fed30200b2622f8)
+ `node-gyp@3.3.1`: Fixes Android generator
+ ([@bnoordhuis](https://github.com/bnoordhuis))
+* [`4119df8`](https://github.com/npm/npm/commit/4119df8aecd2ae57b0492ad8c9a480d900833008)
+ `glob@7.0.3`: Some path-related fixes for Windows.
+ ([@isaacs](https://github.com/isaacs))
+
+### v2.14.22 (2016-03-03):
+
+This week is all documentation improvements. In case you hadn't noticed, we
+*love* doc patches. We love them so much, we give socks away if you submit
+documentation PRs!
+
+These folks are all getting socks if they ask for them. The socks are
+super-sweet. Do you have yours yet? 👣
+
+* [`3f3c7d0`](https://github.com/npm/npm/commit/3f3c7d080f052a5db91ff6091f8b1b13f26b53d6)
+ [#11441](https://github.com/npm/npm/pull/11441)
+ Add a link to the [Contribution
+ Guidelines](https://github.com/npm/npm/wiki/Contributing-Guidelines) to the
+ main npm docs.
+ ([@watilde](https://github.com/watilde))
+* [`9f87bb1`](https://github.com/npm/npm/commit/9f87bb1934acb33b678c17b7827165b17c071a82)
+ [#11441](https://github.com/npm/npm/pull/11441)
+ Remove Google Group email from npm docs about contributing.
+ ([@watilde](https://github.com/watilde))
+* [`93eaab3`](https://github.com/npm/npm/commit/93eaab3ee5ad16c7d90d1a4b38a95403fcf3f0f6)
+ [#11474](https://github.com/npm/npm/pull/11474)
+ Fix an invalid JSON error overlooked in
+ [#11196](https://github.com/npm/npm/pull/11196).
+ ([@robludwig](https://github.com/robludwig))
+* [`a407ca2`](https://github.com/npm/npm/commit/a407ca2bcf6a05117e55cf2ab69376e09094995e)
+ [#11483](https://github.com/npm/npm/pull/11483)
+ Add more details and an example to the documentation for bundledDependencies.
+ ([@gnerkus](https://github.com/gnerkus))
+* [`2c851a2`](https://github.com/npm/npm/commit/2c851a231afd874baa77c42ea5ba539c454ac79c)
+ [#11490](https://github.com/npm/npm/pull/11490)
+ Document the `--registry` flag for `npm search`.
+ ([@plumlee](https://github.com/plumlee))
+
+### v2.14.21 (2016-02-25):
+
+Good news, everyone! There's a new LTS release with a few shinies here and there!
+
+#### USE THIS ONE INSTEAD
+
+We had some cases where the versions of npm and node used in some scripting situations were different than the ideal, or what folks actually expected. These should be particularly helpful to our Windows friends! <3
+
+* [`02813c5`](https://github.com/npm/npm/commit/02813c55782a9def23f7f1e614edc38c6c88aed3) [#9253](https://github.com/npm/npm/issues/9253) Fix a bug where, when running lifecycle scripts, if the Node.js binary you ran `npm` with wasn't in your `PATH`, `npm` wouldn't use it to run your scripts. ([@segrey](https://github.com/segrey) and [@narqo](https://github.com/narqo))
+* [`a985dd5`](https://github.com/npm/npm/commit/a985dd50e06ee51ba5544577f977c7440c227ba2) [#11526](https://github.com/npm/npm/pull/11526) Prefer locally installed npm in Git Bash -- previous behavior was to use the global one. This was done previously for other shells, but not for Git Bash. ([@destroyerofbuilds](https://github.com/destroyerofbuilds))
+
+#### SOCKS FOR THE SOCK GOD
+
+* [`f961092`](https://github.com/npm/npm/commit/f9610920079d8b88ae464b30007a92c594bd85a8)
+ [#11636.](https://github.com/npm/npm/issues/11636.)
+ Document the `--save-bundle` option for `npm install`.
+ ([@datyayu](https://github.com/datyayu))
+* [`7c908b6`](https://github.com/npm/npm/commit/7c908b618f7123f0a3b860c71eb779e33df35964)
+ [#11644](https://github.com/npm/npm/pull/11644)
+ Add documentation for the `test` directory for packages.
+ ([@lewiscowper](https://github.com/lewiscowper))
+
+#### INTERNAL TEST IMPROVEMENTS
+
+The npm CLI team's time recently has been sunk into npm's many years of tech debt. Specifically, we've been working on improving the test suite. This isn't user visible, but in future should mean a more stable, easier to contribute to npm. Ordinarily we don't report these kinds of changes in the change log, but I thought I might share this week as this chunk is bigger than usual.
+
+These patches were previously released for `npm@3`, and then ported back to `npm@2` LTS.
+
+* [`437c537`](https://github.com/npm/npm/commit/437c537e2be5923c6d2c2753154564ba13db8fd9) [#11613](https://github.com/npm/npm/pull/11613) Fix up one of the tests after rebasing the legacy test rewrite to `npm@2`. ([@zkat](https://github.com/zkat))
+* [`55abd0c`](https://github.com/npm/npm/commit/55abd0cc20e87a144d33ce2d459f65e7506da576) [#11613](https://github.com/npm/npm/pull/11613) Test that the `package.json` `files` section and `.npmignore` do what they're supposed to. ([@zkat](https://github.com/zkat))
+* [`a2b99b6`](https://github.com/npm/npm/commit/a2b99b6273ada14b2121ebc0acb7933e630edd9d) [#11613](https://github.com/npm/npm/pull/11613) Test that npm's distribution binary is complete and can be installed and used. ([@iarna](https://github.com/iarna))
+* [`8a8c36c`](https://github.com/npm/npm/commit/8a8c36ce51166006022e5c5d4f8655bbc458d651) [#11613](https://github.com/npm/npm/pull/11613) Test that environment variables are properly passed into scripts.
+ ([@iarna](https://github.com/zkat))
+* [`a95b550`](https://github.com/npm/npm/commit/a95b5507616bd51e83d7eab5f2337b1aff6480b1) [#11613](https://github.com/npm/npm/pull/11613) Test that we don't leak auth info into the environment. ([@iarna](https://github.com/iarna))
+* [`a1c1c52`](https://github.com/npm/npm/commit/a1c1c52efeab24f6dba154d054f85d9efc833486) [#11613](https://github.com/npm/npm/pull/11613) Remove all the relatively cryptic legacy tests and creates new tap tests that check the same functionality. The *legacy* tests were tests that were originally a shell script that was ported to javascript early in `npm`'s history. ([@iarna](https:\\github.com/iarna) and [@zkat](https://github.com/zkat))
+* [`9d89581`](https://github.com/npm/npm/commit/9d895811d3ee70c2e672f3d8fa06574495b5b488) [#11613](https://github.com/npm/npm/pull/11613) `tacks@1.0.9`: Add a package that provides a tool to generate fixtures from folders and, relatedly, a module that an create and tear down filesystem fixtures easily. ([@iarna](https://github.com/iarna))
+
+### v2.14.20 (2016-02-18):
+
+Hope y'all are having a nice week! As usual, it's a fairly limited release. The
+most notable thing is some dependency updates that might help the Node.js CI
+setup for Windows run a little better, even if we have some work to do on that
+path length things, still.
+
+#### WHITTLING AWAY AT PATH LENGTHS
+
+So for all of you who don't know -- Node.js does, in fact, support long Windows
+paths. Unfortunately, depending on the tool and the Windows version, a lot of
+external tooling does not. This means, for example, that some (all?) versions of
+Windows Explorer *can literally never delete npm from their system entirely
+because of deeply-nested npm dependencies*. Which is pretty gnarly.
+
+Incidentally, if you run into that in particularly, you can use
+[rimraf](npm.im/rimraf) to remove such files 💁.
+
+The latest victim of this issue was the Node.js CI setup for testing on Windows,
+which uses some tooling or another that croaks on the usual path length limit
+for that OS: 255 characters.
+
+This issue, of course, is largely not a problem as of `npm@3`, with its flat
+trees, but it still occasionally and viciously bites LTS.
+
+We've taken another baby step towards alleviating this in this release by
+updating a couple of dependencies that were preventing `npmlog` from deduping,
+and then doing a dedupe on that and `gauge`. Hopefully it helps.
+
+* [`4199551`](https://github.com/npm/npm/commit/41995517e617674710748ab6d262670c96124393)
+ [#11528](https://github.com/npm/npm/pull/11528)
+ `npm-install-checks@1.0.7`: Just updates the version of npmlog so we can
+ dedupe it better.
+ ([@zkat](https://github.com/zkat))
+* [`14d72c7`](https://github.com/npm/npm/commit/14d72c756b89e2d167eb52c1849263dbddcb9f35)
+ [#11552](https://github.com/npm/npm/pull/11552)
+ [#11528](https://github.com/npm/npm/pull/11528)
+ `node-gyp@3.3.0`: AIX support, new `gyp`, update `npmlog` (for the dedupe),
+ adds `--cafile` command line option, and allows configuration of Node.js and
+ io.js mirrors.
+ ([@rvagg](https://github.com/rvagg))
+* [`0453cb9`](https://github.com/npm/npm/commit/0453cb94b33520eb723b7072cd2654b1d0142533)
+ [#11528](https://github.com/npm/npm/pull/11528)
+ Do a `dedupe` on `gauge` to flatten our dependencies a bit more.
+ ([@zkat](https://github.com/zkat))
+
+#### OTHER DEP STUFF
+
+* [`686c0b3`](https://github.com/npm/npm/commit/686c0b37ec3a7b65f9b3849e1099805e5221c408)
+ `rimraf@2.5.2`: Just updates to glob@7.
+ ([@isaacs](https://github.com/isaacs))
+
+#### @wyze, DOCUMENTATION HERO OF THE PEOPLE, GETS THEIR OWN HEADER
+
+* [`7232948`](https://github.com/npm/npm/commit/72329484c775376cb40d5b348f453eaaf2f0b821)
+ [#11416](https://github.com/npm/npm/pull/11416)
+ Logout docs were using a section copy-pasted from the adduser docs.
+ ([@wyze](https://github.com/wyze))
+* [`922b33a`](https://github.com/npm/npm/commit/922b33aba4362e1e90f42e9348f061a1cc73eafb)
+ [#11414](https://github.com/npm/npm/pull/11414)
+ Add colon for consistency.
+ ([@wyze](https://github.com/wyze))
+
+### v2.14.19 (2016-02-11):
+
+Really tiny micro-release this week! The main thing to note is a dependency
+update that means we no longer have `graceful-fs@3` in our dependency tree. This
+has some implications for being able to run on future Node.js releases, so
+better to get this out the door. 😁
+
+#### DEPS
+
+* [`a556e0f`](https://github.com/npm/npm/commit/a556e0f9dcb5d7b44224ba9c16c9d0dc6c8d2532)
+ `cmd-shim@2.0.2`: Final straggler using `graceful-fs@<4`.
+ ([@ForbesLindesay](https://github.com/ForbesLindesay))
+
+#### DOCS
+
+* [`69a2d59`](https://github.com/npm/npm/commit/69a2d599bf0cba674ee268483e9bd5c14333b89f)
+ [#11391](https://github.com/npm/npm/pull/11391)
+ Fixed versions of `shrinkwrap.json` in examples in documentation for `npm
+ shrinkwrap`, which did not quite match up.
+ ([@xcatliu](https://github.com/xcatliu))
+
+### v2.14.18 (2016-02-04):
+
+Clearly our docs are perfect after all those wonderful PRs, 'cause this week's
+gonna be all about dependency updates. Note: There is a small security-related
+fix included here!
+
+#### SECURITY-RELATED DEPENDENCY UPDATE
+
+* [`5c095ef`](https://github.com/npm/npm/commit/5c095eff8dc006980d4d083f2007e4dacff23be3)
+ [#11341](https://github.com/npm/npm/pull/11341)
+ `request@2.69.0`: Includes security-related dependency updates involving
+ `hawk` and `is-my-json-valid`
+ ([@remy](https://github.com/remy) and [@simov](https://github.com/simov))
+
+#### OTHER DEPENDENCY UPDATES
+
+* [`f9c2668`](https://github.com/npm/npm/commit/f9c2668ca3e6e2602d91250ce61280e5e12d0a00)
+ `which@1.2.4`
+ ([@isaacs](https://github.com/isaacs))
+* [`2907c43`](https://github.com/npm/npm/commit/2907c43ad4ef87e5f730c2576f680d6837fcbad0)
+ `spdx-license-ids@1.2.0`
+ ([@shinnn](https://github.com/shinnn))
+* [`7734069`](https://github.com/npm/npm/commit/773406960bf7f4a87b2ecb6ebf593c62d0e9f95d)
+ `rimraf@2.5.1`
+ ([@isaacs](https://github.com/isaacs))
+* [`f4b39a7`](https://github.com/npm/npm/commit/f4b39a7dd5e1335d92aa22c46d99abb33f271b8b)
+ `retry@0.9.0`
+ ([@tim-kos](https://github.com/tim-kos))
+* [`ded1e7a`](https://github.com/npm/npm/commit/ded1e7a1c9c7bec29bb7c30a8f85546670e75b56)
+ Nest `retry@0.8.0` inside `npm-registry-client` to prevent invalid
+ dependency issue until the latter gets a dependency update.
+ ([@zkat](https://github.com/zkat))
+* [`ab9f867`](https://github.com/npm/npm/commit/ab9f8679f9687f91ad03adaab6211a897aeebbae)
+ `read-package-json@2.0.3`
+ ([@iarna](https://github.com/iarna))
+* [`b638c41`](https://github.com/npm/npm/commit/b638c41607bb936b9eaaceba2aeeda1d34e3a9b2)
+ `npmlog@2.0.2`
+ ([@iarna](https://github.com/iarna))
+* [`49f34af`](https://github.com/npm/npm/commit/49f34af463a674359269025d8438feb6a7c69960)
+ `init-package-json@1.9.3`
+ ([@iarna](https://github.com/iarna))
+* [`2305dab`](https://github.com/npm/npm/commit/2305dab4e7bff09bb7686cec653cf1e663dbf15d)
+ `graceful-fs@4.1.3`: Fixed `.close()` not being patched.
+ ([@isaacs](https://github.com/isaacs))
+* [`18496d9`](https://github.com/npm/npm/commit/18496d9a0fff94e3652655998e8333056aa52b15)
+ `fs-write-stream-atomic@1.0.8`
+ ([@iarna](https://github.com/iarna))
+* [`6637bc7`](https://github.com/npm/npm/commit/6637bc7a0e194d82554cd7c91e1794018fef5943)
+ `config-chain@1.1.10`
+ ([@dominictarr](https://github.com/dominictarr))
+* [`4222bad`](https://github.com/npm/npm/commit/4222badffed9e9edacea6a8a96a99a164d376158)
+ `columnify@1.5.4`
+ ([@timoxley](https://github.com/timoxley))
+* [`df9016f`](https://github.com/npm/npm/commit/df9016f327a2a9ce492ebc75b882b03069438e13)
+ `ansi@0.3.1`: Added a license file.
+ ([@TooTallNate](https://github.com/TooTallNate))
+
+### v2.14.17 (2016-01-28):
+
+Another week, another small LTS release!
+
+#### BETTER ERROR REPORTING YAY
+
+So as it turns out, when stuff goes wrong, it's actually nice to give people a
+better clue rather than just say "oh well 😏".
+
+* [`5b8ccb9`](https://github.com/npm/npm/commit/5b8ccb91cf11b4edb463609cd4ed1dee84ed4db0)
+ [#11289](https://github.com/npm/npm/pull/11289)
+ There is an obscure feature that lets you monkey-patch npm when it starts up.
+ If the module being required with this feature failed, it would previous just
+ make npm error out– this reduces that to a warning.
+ ([@evanlucas](https://github.com/evanlucas))
+* [`556e42a`](https://github.com/npm/npm/commit/556e42ac6bab078722ddc1dc6cce4428d001133b)
+ [#11300](https://github.com/npm/npm/pull/11300)
+ Report symlinked packages as 'linked' in the output for `npm outdated`.
+ ([@halhenke](https://github.com/halhenke))
+* [`3842317`](https://github.com/npm/npm/commit/3842317583e0ea2eca78e39aa03f5bc06ba21de7)
+ [#11290](https://github.com/npm/npm/pull/11290)
+ Suppress warnings about pre-release node versions. This should get node's CI
+ passing on non-Windows platforms without needing to modify the node version to
+ get rid of the pre-release suffix.
+ ([@iarna](https://github.com/iarna))
+
+#### EVERYONE WANTS THOSE NPM SOCKS, GEEZE
+
+Did you know that you can get npm socks for contributing to our docs? I bet
+these people do, and now so do you!
+
+* [`dcde451`](https://github.com/npm/npm/commit/dcde451cb85a6ca08acc6ef45782c652f1d8fc89)
+ [#11232](https://github.com/npm/npm/pull/11232)
+ Update automatically included/excluded packages in `package.json`.
+ ([@jscissr](https://github.com/jscissr))
+* [`e3f8d5b`](https://github.com/npm/npm/commit/e3f8d5be5ac5ec1d72db42f7abf50cc4a8c5935c)
+ [#11273](https://github.com/npm/npm/pull/11273)
+ Add an example for `npm view versions`.
+ ([@vedatmahir](https://github.com/vedatmahir))
+* [`6a06ef2`](https://github.com/npm/npm/commit/6a06ef2252748089f0013de951f2d06160b90306)
+ [#11272](https://github.com/npm/npm/pull/11272)
+ Fix a typo in `npm-update.md`.
+ ([@jonathanp](https://github.com/jonathanp))
+* [`2515ff1`](https://github.com/npm/npm/commit/2515ff1de28f0b261fb25c79a66bd762a65961c4)
+ [#11215](https://github.com/npm/npm/pull/11215)
+ Correct small thinko in docs for SPDX expressions.
+ ([@kemitchell](https://github.com/kemitchell))
+* [`70f897b`](https://github.com/npm/npm/commit/70f897b03da9a5d5d4fd34614e9ee40e6f9e9653)
+ [#11196](https://github.com/npm/npm/pull/11196)
+ Make JSON snippets valid JSON in `npm update` docs.
+ ([@s100](https://github.com/s100))
+
+### v2.14.16 (2016-01-21):
+
+Good to see you all again! It's been a while since we had an LTS release, and
+the team continues to work hard to both get the issue tracker under control, and
+get our test suite to be awesome and reliable.
+
+This is also the first LTS release of this year.
+
+We're gonna have an interesting time -- most of our focus this year will be
+around stability and maintainability of the CLI, so you might actually end up
+seeing a number of updates even over here, just for the sake of making sure
+we're stable, that bugs get fixed, and tests have proper coverage.
+
+What better way to start this effort, then, than getting Travis tests green, fix
+a few things here and there, and tweak a bunch of documentation? 😁
+
+#### FIX ALL THE BUGS AND TWEAK ALL THE THINGS
+
+* [`24b13fb`](https://github.com/npm/npm/commit/24b13fbc57d34db1d5b0a37bcca122c00deba978)
+ [#11158](https://github.com/npm/npm/pull/11158)
+ Fix custom node-gyp env var quoting on Windows.
+ ([@orangemocha](https://github.com/orangemocha))
+* [`e2503f2`](https://github.com/npm/npm/commit/e2503f2be40157b05a9c500ec3b5d16090ffee50)
+ [#11142](https://github.com/npm/npm/pull/11142)
+ Fix race condition with `correctMkdir` in the cache directory.
+ ([@Jimbly](https://github.com/Jimbly))
+
+* [`5c0e4c4`](https://github.com/npm/npm/commit/5c0e4c45a29d774ab729e86044377d4e5e424252)
+ [#10940](https://github.com/npm/npm/pull/10940)
+ Ignore failures replacing `package.json`. writeFileAtomic is not atomic in
+ Windows, it fails if the file is being accessed concurrently.
+ ([@orangemocha](https://github.com/orangemocha))
+* [`2c44d8d`](https://github.com/npm/npm/commit/2c44d8dc8c267d5e054d0175ce2f4750f0986463)
+ [#10903](https://github.com/npm/npm/pull/10903)
+ Add tests for `npm adduser --scope`.
+ ([@ekmartin](https://github.com/ekmartin))
+* [`4cb25d0`](https://github.com/npm/npm/commit/4cb25d0fed5c7792dfd1aec891380ecc1f8a5761)
+ [#10903](https://github.com/npm/npm/pull/10903)
+ Add a message informing users when they have been successfully logged in.
+ ([@ekmartin](https://github.com/ekmartin))
+* [`fe3ec6d`](https://github.com/npm/npm/commit/fe3ec6d6658262054c0c19c55373c21e84ab9f17)
+ [#10628](https://github.com/npm/npm/pull/10628)
+ Tell users how to open an issue with a package that has errored.
+ ([@trodrigues](https://github.com/trodrigues))
+
+#### DOCS DOCS DOCS
+
+We got a TON of lovely documentation patches, too! Thanks all for submitting!
+
+* [`22482a1`](https://github.com/npm/npm/commit/22482a1f22079d72c3f8ca55c2f0c153bdd024c0)
+ [#11188](https://github.com/npm/npm/pull/11188)
+ Briefly explain what's included when you publish.
+ ([@beaugunderson](https://github.com/beaugunderson))
+* [`fa47724`](https://github.com/npm/npm/commit/fa4772438df0c66a19309dd1c1a3ce43cbee5461)
+ [#11150](https://github.com/npm/npm/pull/11150)
+ Advise use of `--depth Infinity` instead of `--depth 9999` in `npm update`.
+ ([@halhenke](https://github.com/halhenke))
+* [`248ddfe`](https://github.com/npm/npm/commit/248ddfe8f7ddd3318e14bf61de41cab4a638c8a3)
+ [#11130](https://github.com/npm/npm/pull/11130)
+ Nuke "using npm programmatically" section from README. The programmatic npm
+ API is unsupported, and is not guaranteed not to break in non-major versions.
+ Removing this section so newcomers aren't encouraged to discover or use it.
+ ([@ljharb](https://github.com/ljharb))
+* [`ae9c452`](https://github.com/npm/npm/commit/ae9c4521222d60ab4a69c19fee5e361c62f41fae)
+ [#11128](https://github.com/npm/npm/pull/11128)
+ Add link to local paths section indocs for `package.json`.
+ ([@orangejulius](https://github.com/orangejulius))
+* [`663a8c6`](https://github.com/npm/npm/commit/663a8c6b4b1647f9b86c15ef32e30023edc8c060)
+ [#11044](https://github.com/npm/npm/pull/11044)
+ Update default value documentation for the color option in npm's config.
+ ([@scottaddie](https://github.com/scottaddie))
+* [`5c1dda0`](https://github.com/npm/npm/commit/5c1dda0d3a18b2954872dba33fbc696ff0700ffe)
+ [#11037](https://github.com/npm/npm/pull/11037)
+ Correct the name property max length constraint verbiage.
+ ([@scottaddie](https://github.com/scottaddie))
+* [`8288365`](https://github.com/npm/npm/commit/8288365d08e97fa3a5b0d31703c015a8be49e07f)
+ [#10990](https://github.com/npm/npm/pull/10990)
+ Update folder docs to reflect that process.installPrefix was removed as of
+ 0.8.x.
+ ([@jeffmcmahan](https://github.com/jeffmcmahan))
+* [`61d63fa`](https://github.com/npm/npm/commit/61d63fa22c4f09742180c2de460a4ffb6c32738e)
+ [#10790](https://github.com/npm/npm/pull/10790)
+ Clarify that `npm install foo` is the same as `npm install foo@latest` now.
+ ([@cvrebert](https://github.com/cvrebert))
+* [`442c920`](https://github.com/npm/npm/commit/442c9207f375354c91d36df8711ba2d33e1c97f3)
+ [#10789](https://github.com/npm/npm/pull/10789)
+ Link over to `npm-dist-tag(1)` in `npm install` docs when they talk about the
+ `pkg@` syntax.
+ ([@cvrebert](https://github.com/cvrebert))
+* [`dca7a5e`](https://github.com/npm/npm/commit/dca7a5e2be3bfa306a870a123707d35c732406c0)
+ [#10788](https://github.com/npm/npm/pull/10788)
+ Link to tag docs in docs for `npm publish --tag`.
+ ([@cvrebert](https://github.com/cvrebert))
+* [`a72904e`](https://github.com/npm/npm/commit/a72904e8d4ab1d43ae8150fbe3f6468b0cbb1efd)
+ [#10787](https://github.com/npm/npm/pull/10787)
+ Explain why the `latest` tag matters.
+ ([@cvrebert](https://github.com/cvrebert))
+* [`9d0697a`](https://github.com/npm/npm/commit/9d0697a534046df7efda32170014041bbc1f4e7d)
+ [#10785](https://github.com/npm/npm/pull/10785)
+ Replace some quite marks in `npm dist-tag` docs for the sake of consistency.
+ ([@cvrebert](https://github.com/cvrebert))
+
+#### I REALLY LIKE GREEN. CAN YOU TELL?
+
+So Travis is all green now on `npm@2`, thanks to the removal of nock and a few
+other test suite tweaks. This is a fantastic step towards making sure we can all
+have confidence in our test suite! 🎉
+
+* [`64995be`](https://github.com/npm/npm/commit/64995be6d874356b15c136f9867302d805dfe1e9) [`75ab216`](https://github.com/npm/npm/commit/75ab2164cf79e28ac7f7ebe714f3c5aee99c6626) [`a9f6fe9`](https://github.com/npm/npm/commit/a9f6fe9dc558f17c4a7b9eb83329ac080f7df4b7) [`649c193`](https://github.com/npm/npm/commit/649c193adadf714c2819837f9372a29d724a5ec0) [`94cb05e`](https://github.com/npm/npm/commit/94cb05eaa9e5ad6675cf15c4ac0a44fbdde05900) [`6541690`](https://github.com/npm/npm/commit/65416907008061ac5a5f66b1630a57776803b526) [`255be6f`](https://github.com/npm/npm/commit/255be6f5bca9e3d216f3a5cbdf6714c6c9fcf132) [`9e84fa4`](https://github.com/npm/npm/commit/9e84fa43c49d04cf86ca1678e2a61412f5559cb9) [`8a587b0`](https://github.com/npm/npm/commit/8a587b0c1696ae7302891fa6355fc3e8670e00d3) [`bf812a5`](https://github.com/npm/npm/commit/bf812a54e497a573493346399798aa0b9373ac24)
+ [#10903](https://github.com/npm/npm/pull/10903)
+ Get rid of nock from tests, and get Travis green.
+ ([@zkat](https://github.com/zkat) and [@iarna](https://github.com/iarna))
+* [`70a5310`](https://github.com/npm/npm/commit/70a5310712c6666e753ca8f3bfff4a780ec6292d)
+ `npm-registry-couchapp@2.6.12`:
+ Better 0.8 compatibility, and ability to run in travis docker stuff. This
+ means the test suite should run a lot faster, too!
+ ([@iarna](https://github.com/iarna))
+* [`28fae39`](https://github.com/npm/npm/commit/28fae399212eda5554e6c0ffd8c9591144ab7b9d)
+ Get rid of sudo, for Travis!
+ ([@zkat](https://github.com/zkat))
+
### v2.14.15 (2015-12-10):
Did you know that Bob Ross reached the rank of master sergeant in the US Air
diff --git a/deps/npm/doc/cli/npm-completion.md b/deps/npm/doc/cli/npm-completion.md
index 6c7f3935629e7b..cc826a4d7b6d48 100644
--- a/deps/npm/doc/cli/npm-completion.md
+++ b/deps/npm/doc/cli/npm-completion.md
@@ -28,5 +28,4 @@ completions based on the arguments.
## SEE ALSO
* npm-developers(7)
-* npm-faq(7)
* npm(1)
diff --git a/deps/npm/doc/cli/npm-help-search.md b/deps/npm/doc/cli/npm-help-search.md
index f1d883acd9a82d..74e1011ab00679 100644
--- a/deps/npm/doc/cli/npm-help-search.md
+++ b/deps/npm/doc/cli/npm-help-search.md
@@ -31,5 +31,4 @@ If false, then help-search will just list out the help topics found.
## SEE ALSO
* npm(1)
-* npm-faq(7)
* npm-help(1)
diff --git a/deps/npm/doc/cli/npm-help.md b/deps/npm/doc/cli/npm-help.md
index 9fb96c9c2e6512..5230082b923fa9 100644
--- a/deps/npm/doc/cli/npm-help.md
+++ b/deps/npm/doc/cli/npm-help.md
@@ -29,7 +29,6 @@ Set to `"browser"` to view html help content in the default web browser.
* npm(1)
* README
-* npm-faq(7)
* npm-folders(5)
* npm-config(1)
* npm-config(7)
diff --git a/deps/npm/doc/cli/npm-install.md b/deps/npm/doc/cli/npm-install.md
index f9c54c056a6915..177bf41ec2b300 100644
--- a/deps/npm/doc/cli/npm-install.md
+++ b/deps/npm/doc/cli/npm-install.md
@@ -271,6 +271,9 @@ global `node_modules` folder. Only your direct dependencies will show in
`node_modules` and everything they depend on will be flattened in their
`node_modules` folders. This obviously will eliminate some deduping.
+The `--ignore-scripts` argument will cause npm to not execute any
+scripts defined in the package.json. See `npm-scripts(7)`.
+
The `--legacy-bundling` argument will cause npm to install the package such
that versions of npm prior to 1.4, such as the one included with node 0.8,
can install the package. This eliminates all automatic deduping.
diff --git a/deps/npm/doc/cli/npm-link.md b/deps/npm/doc/cli/npm-link.md
index b5749f889c7a42..3970ffdf80b992 100644
--- a/deps/npm/doc/cli/npm-link.md
+++ b/deps/npm/doc/cli/npm-link.md
@@ -65,7 +65,6 @@ include that scope, e.g.
## SEE ALSO
* npm-developers(7)
-* npm-faq(7)
* package.json(5)
* npm-install(1)
* npm-folders(5)
diff --git a/deps/npm/doc/cli/npm.md b/deps/npm/doc/cli/npm.md
index 6c4cdd42bb2fa3..31c9b18af70ec8 100644
--- a/deps/npm/doc/cli/npm.md
+++ b/deps/npm/doc/cli/npm.md
@@ -156,7 +156,6 @@ will no doubt tell you to put the output in a gist or email.
## SEE ALSO
* npm-help(1)
-* npm-faq(7)
* README
* package.json(5)
* npm-install(1)
diff --git a/deps/npm/doc/files/npm-folders.md b/deps/npm/doc/files/npm-folders.md
index 6846b1fce8f713..62ecebc27a3166 100644
--- a/deps/npm/doc/files/npm-folders.md
+++ b/deps/npm/doc/files/npm-folders.md
@@ -204,7 +204,6 @@ cannot be found elsewhere. See `package.json(5)` for more information.
## SEE ALSO
-* npm-faq(7)
* package.json(5)
* npm-install(1)
* npm-pack(1)
diff --git a/deps/npm/doc/files/package.json.md b/deps/npm/doc/files/package.json.md
index 3c61d8b88e593d..9af7d36b7ec232 100644
--- a/deps/npm/doc/files/package.json.md
+++ b/deps/npm/doc/files/package.json.md
@@ -206,6 +206,7 @@ Conversely, some files are always ignored:
* `._*`
* `npm-debug.log`
* `.npmrc`
+* `node_modules`
## main
@@ -654,8 +655,8 @@ 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.
+Unless the user has set the `engine-strict` config flag, this
+field is advisory only will produce warnings when your package is installed as a dependency.
## engineStrict
@@ -756,7 +757,6 @@ npm will default some values based on package contents.
* npm-config(1)
* npm-config(7)
* npm-help(1)
-* npm-faq(7)
* npm-install(1)
* npm-publish(1)
* npm-uninstall(1)
diff --git a/deps/npm/doc/misc/npm-coding-style.md b/deps/npm/doc/misc/npm-coding-style.md
index 81dadf83473d2c..a105b1aa53b39a 100644
--- a/deps/npm/doc/misc/npm-coding-style.md
+++ b/deps/npm/doc/misc/npm-coding-style.md
@@ -189,5 +189,4 @@ Boolean objects are verboten.
## SEE ALSO
* npm-developers(7)
-* npm-faq(7)
* npm(1)
diff --git a/deps/npm/doc/misc/npm-developers.md b/deps/npm/doc/misc/npm-developers.md
index 25957f11ecbf07..e8df1ed7b9c82a 100644
--- a/deps/npm/doc/misc/npm-developers.md
+++ b/deps/npm/doc/misc/npm-developers.md
@@ -211,7 +211,6 @@ Tell the world how easy it is to install your program!
## SEE ALSO
-* npm-faq(7)
* npm(1)
* npm-init(1)
* package.json(5)
diff --git a/deps/npm/doc/misc/npm-orgs.md b/deps/npm/doc/misc/npm-orgs.md
index 1f9977eaddf4be..e28b6c17640fd6 100644
--- a/deps/npm/doc/misc/npm-orgs.md
+++ b/deps/npm/doc/misc/npm-orgs.md
@@ -17,8 +17,8 @@ The developer will be able to access packages based on the teams they are on. Ac
There are two main commands:
-1. `npm team` see npm-access(1) for more details
-2. `npm access` see npm-team(1) for more details
+1. `npm team` see npm-team(1) for more details
+2. `npm access` see npm-access(1) for more details
## Team Admins create teams
diff --git a/deps/npm/html/doc/README.html b/deps/npm/html/doc/README.html
index 0490b345d88b87..d346352b253c3e 100644
--- a/deps/npm/html/doc/README.html
+++ b/deps/npm/html/doc/README.html
@@ -93,8 +93,7 @@ More Severe Uninstalling
this means that future npm installs will not remember the settings that
you have chosen.
More Docs
-Check out the docs ,
-especially the faq .
+Check out the docs ,
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
@@ -111,7 +110,6 @@ BUGS
SEE ALSO
@@ -127,5 +125,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-access.html b/deps/npm/html/doc/cli/npm-access.html
index 1ae9eb53a0cc8d..9344c58dbbc245 100644
--- a/deps/npm/html/doc/cli/npm-access.html
+++ b/deps/npm/html/doc/cli/npm-access.html
@@ -84,5 +84,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-adduser.html b/deps/npm/html/doc/cli/npm-adduser.html
index 9e34cb364081d6..44fbcecee5510c 100644
--- a/deps/npm/html/doc/cli/npm-adduser.html
+++ b/deps/npm/html/doc/cli/npm-adduser.html
@@ -72,5 +72,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-bin.html b/deps/npm/html/doc/cli/npm-bin.html
index dc00f71e0c374b..9796b852fac0ac 100644
--- a/deps/npm/html/doc/cli/npm-bin.html
+++ b/deps/npm/html/doc/cli/npm-bin.html
@@ -35,5 +35,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-bugs.html b/deps/npm/html/doc/cli/npm-bugs.html
index 848142127d7223..bbb7654f9344bf 100644
--- a/deps/npm/html/doc/cli/npm-bugs.html
+++ b/deps/npm/html/doc/cli/npm-bugs.html
@@ -55,5 +55,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-build.html b/deps/npm/html/doc/cli/npm-build.html
index 3b9060437e303c..6196a369c0896a 100644
--- a/deps/npm/html/doc/cli/npm-build.html
+++ b/deps/npm/html/doc/cli/npm-build.html
@@ -40,5 +40,5 @@ DESCRIPTION
-
+
diff --git a/deps/npm/html/doc/cli/npm-bundle.html b/deps/npm/html/doc/cli/npm-bundle.html
index 85e33d26c7eb93..0d24e621a790bc 100644
--- a/deps/npm/html/doc/cli/npm-bundle.html
+++ b/deps/npm/html/doc/cli/npm-bundle.html
@@ -31,5 +31,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-cache.html b/deps/npm/html/doc/cli/npm-cache.html
index d462bc45bbd91c..056613a4175740 100644
--- a/deps/npm/html/doc/cli/npm-cache.html
+++ b/deps/npm/html/doc/cli/npm-cache.html
@@ -81,5 +81,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-completion.html b/deps/npm/html/doc/cli/npm-completion.html
index bef549af161ce1..414ef4ac245c69 100644
--- a/deps/npm/html/doc/cli/npm-completion.html
+++ b/deps/npm/html/doc/cli/npm-completion.html
@@ -29,7 +29,6 @@ SYNOPSIS
SEE ALSO
@@ -44,5 +43,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-config.html b/deps/npm/html/doc/cli/npm-config.html
index f9c124a260b1ee..4e103974ed6ee1 100644
--- a/deps/npm/html/doc/cli/npm-config.html
+++ b/deps/npm/html/doc/cli/npm-config.html
@@ -67,5 +67,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-dedupe.html b/deps/npm/html/doc/cli/npm-dedupe.html
index 38aff1070f72c5..dbf60ea4969650 100644
--- a/deps/npm/html/doc/cli/npm-dedupe.html
+++ b/deps/npm/html/doc/cli/npm-dedupe.html
@@ -61,5 +61,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-deprecate.html b/deps/npm/html/doc/cli/npm-deprecate.html
index 3dbbb697391543..b39d96d196e2e2 100644
--- a/deps/npm/html/doc/cli/npm-deprecate.html
+++ b/deps/npm/html/doc/cli/npm-deprecate.html
@@ -38,5 +38,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-dist-tag.html b/deps/npm/html/doc/cli/npm-dist-tag.html
index 6303fe3bf4aa59..20b9ef6f38b4dd 100644
--- a/deps/npm/html/doc/cli/npm-dist-tag.html
+++ b/deps/npm/html/doc/cli/npm-dist-tag.html
@@ -87,5 +87,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-docs.html b/deps/npm/html/doc/cli/npm-docs.html
index c750230e9ac364..608a88c1bdbca7 100644
--- a/deps/npm/html/doc/cli/npm-docs.html
+++ b/deps/npm/html/doc/cli/npm-docs.html
@@ -56,5 +56,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-edit.html b/deps/npm/html/doc/cli/npm-edit.html
index ff5b3c14360034..489a31fd3dc863 100644
--- a/deps/npm/html/doc/cli/npm-edit.html
+++ b/deps/npm/html/doc/cli/npm-edit.html
@@ -49,5 +49,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-explore.html b/deps/npm/html/doc/cli/npm-explore.html
index 3cfc1e3691b50f..70bfc6d34a7f2d 100644
--- a/deps/npm/html/doc/cli/npm-explore.html
+++ b/deps/npm/html/doc/cli/npm-explore.html
@@ -49,5 +49,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-help-search.html b/deps/npm/html/doc/cli/npm-help-search.html
index 71cb65a8287fd5..2be22217231234 100644
--- a/deps/npm/html/doc/cli/npm-help-search.html
+++ b/deps/npm/html/doc/cli/npm-help-search.html
@@ -31,7 +31,6 @@ long
SEE ALSO
@@ -46,5 +45,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-help.html b/deps/npm/html/doc/cli/npm-help.html
index 870d4b1d76ff28..d34aef1164d7e7 100644
--- a/deps/npm/html/doc/cli/npm-help.html
+++ b/deps/npm/html/doc/cli/npm-help.html
@@ -30,7 +30,6 @@ SEE ALSO
npm(1)
README
-npm-faq(7)
npm-folders(5)
npm-config(1)
npm-config(7)
@@ -51,5 +50,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-init.html b/deps/npm/html/doc/cli/npm-init.html
index 9dbf210986ef64..c92b5d7e25aaaa 100644
--- a/deps/npm/html/doc/cli/npm-init.html
+++ b/deps/npm/html/doc/cli/npm-init.html
@@ -48,5 +48,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-install-test.html b/deps/npm/html/doc/cli/npm-install-test.html
index 848e61c3a433b9..296866d2ad5821 100644
--- a/deps/npm/html/doc/cli/npm-install-test.html
+++ b/deps/npm/html/doc/cli/npm-install-test.html
@@ -42,4 +42,4 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-install.html b/deps/npm/html/doc/cli/npm-install.html
index bc9f2bbb878b38..46a24c5f48a240 100644
--- a/deps/npm/html/doc/cli/npm-install.html
+++ b/deps/npm/html/doc/cli/npm-install.html
@@ -217,6 +217,8 @@ SYNOPSIS
global node_modules
folder. Only your direct dependencies will show in
node_modules
and everything they depend on will be flattened in their
node_modules
folders. This obviously will eliminate some deduping.
+The --ignore-scripts
argument will cause npm to not execute any
+scripts defined in the package.json. See npm-scripts(7)
.
The --legacy-bundling
argument will cause npm to install the package such
that versions of npm prior to 1.4, such as the one included with node 0.8,
can install the package. This eliminates all automatic deduping.
@@ -310,5 +312,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-link.html b/deps/npm/html/doc/cli/npm-link.html
index 959fe81717b1ed..cc7d4b8f7de5ea 100644
--- a/deps/npm/html/doc/cli/npm-link.html
+++ b/deps/npm/html/doc/cli/npm-link.html
@@ -54,7 +54,6 @@ SYNOPSIS
SEE ALSO
npm-developers(7)
-npm-faq(7)
package.json(5)
npm-install(1)
npm-folders(5)
@@ -74,5 +73,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/cli/npm-logout.html b/deps/npm/html/doc/cli/npm-logout.html
index c51bc9dc63ac2f..0430fcf35dba78 100644
--- a/deps/npm/html/doc/cli/npm-logout.html
+++ b/deps/npm/html/doc/cli/npm-logout.html
@@ -51,5 +51,5 @@ scope
-
+
diff --git a/deps/npm/html/doc/cli/npm-ls.html b/deps/npm/html/doc/cli/npm-ls.html
index 2dc599fb55c8a5..feaf5c02720b4a 100644
--- a/deps/npm/html/doc/cli/npm-ls.html
+++ b/deps/npm/html/doc/cli/npm-ls.html
@@ -21,7 +21,7 @@ SYNOPSIS
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@3.8.3 /path/to/npm
+npm@3.8.6 /path/to/npm
└─┬ init-package-json@0.0.4
└── promzard@0.1.5
It will print out extraneous, missing, and invalid packages.
@@ -104,5 +104,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-outdated.html b/deps/npm/html/doc/cli/npm-outdated.html
index 6f2d8d10bdcc8c..02d947c5a68a23 100644
--- a/deps/npm/html/doc/cli/npm-outdated.html
+++ b/deps/npm/html/doc/cli/npm-outdated.html
@@ -116,5 +116,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-owner.html b/deps/npm/html/doc/cli/npm-owner.html
index d7e009837436f2..c862feb12d7521 100644
--- a/deps/npm/html/doc/cli/npm-owner.html
+++ b/deps/npm/html/doc/cli/npm-owner.html
@@ -51,5 +51,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-pack.html b/deps/npm/html/doc/cli/npm-pack.html
index 33af7f5630cade..1e2d1fa63fa34e 100644
--- a/deps/npm/html/doc/cli/npm-pack.html
+++ b/deps/npm/html/doc/cli/npm-pack.html
@@ -41,5 +41,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-ping.html b/deps/npm/html/doc/cli/npm-ping.html
index 5d9b5d13fd9e34..d435090b41572f 100644
--- a/deps/npm/html/doc/cli/npm-ping.html
+++ b/deps/npm/html/doc/cli/npm-ping.html
@@ -32,4 +32,4 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-prefix.html b/deps/npm/html/doc/cli/npm-prefix.html
index 538842f10f117d..c5db17a3abdc61 100644
--- a/deps/npm/html/doc/cli/npm-prefix.html
+++ b/deps/npm/html/doc/cli/npm-prefix.html
@@ -38,5 +38,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-prune.html b/deps/npm/html/doc/cli/npm-prune.html
index 16ae2b4fa5f516..a7fc7c7f734ab4 100644
--- a/deps/npm/html/doc/cli/npm-prune.html
+++ b/deps/npm/html/doc/cli/npm-prune.html
@@ -40,5 +40,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-publish.html b/deps/npm/html/doc/cli/npm-publish.html
index 717636afba192f..f75ed7444018c1 100644
--- a/deps/npm/html/doc/cli/npm-publish.html
+++ b/deps/npm/html/doc/cli/npm-publish.html
@@ -72,5 +72,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-rebuild.html b/deps/npm/html/doc/cli/npm-rebuild.html
index 88f7e2d89ec139..4b2140aac3f754 100644
--- a/deps/npm/html/doc/cli/npm-rebuild.html
+++ b/deps/npm/html/doc/cli/npm-rebuild.html
@@ -35,5 +35,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-repo.html b/deps/npm/html/doc/cli/npm-repo.html
index 159b49fa3b9884..5f9ea1872f0744 100644
--- a/deps/npm/html/doc/cli/npm-repo.html
+++ b/deps/npm/html/doc/cli/npm-repo.html
@@ -41,5 +41,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-restart.html b/deps/npm/html/doc/cli/npm-restart.html
index dae20aae2d8c78..5644b01f07a055 100644
--- a/deps/npm/html/doc/cli/npm-restart.html
+++ b/deps/npm/html/doc/cli/npm-restart.html
@@ -53,5 +53,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-root.html b/deps/npm/html/doc/cli/npm-root.html
index c575315ce99a99..069f5ccba92396 100644
--- a/deps/npm/html/doc/cli/npm-root.html
+++ b/deps/npm/html/doc/cli/npm-root.html
@@ -35,5 +35,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-run-script.html b/deps/npm/html/doc/cli/npm-run-script.html
index 6c58e7c4ec7eba..b090a308ab461e 100644
--- a/deps/npm/html/doc/cli/npm-run-script.html
+++ b/deps/npm/html/doc/cli/npm-run-script.html
@@ -60,5 +60,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-search.html b/deps/npm/html/doc/cli/npm-search.html
index ffb8ad88177f0b..a2dfaf42348c03 100644
--- a/deps/npm/html/doc/cli/npm-search.html
+++ b/deps/npm/html/doc/cli/npm-search.html
@@ -57,5 +57,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-shrinkwrap.html b/deps/npm/html/doc/cli/npm-shrinkwrap.html
index 5262766d19f85a..cd6e038e1ab7a6 100644
--- a/deps/npm/html/doc/cli/npm-shrinkwrap.html
+++ b/deps/npm/html/doc/cli/npm-shrinkwrap.html
@@ -169,5 +169,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-star.html b/deps/npm/html/doc/cli/npm-star.html
index b81c9be673e47e..ca1c5f684ba953 100644
--- a/deps/npm/html/doc/cli/npm-star.html
+++ b/deps/npm/html/doc/cli/npm-star.html
@@ -36,5 +36,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-stars.html b/deps/npm/html/doc/cli/npm-stars.html
index bbf916d660b5ae..2016c0af3bb212 100644
--- a/deps/npm/html/doc/cli/npm-stars.html
+++ b/deps/npm/html/doc/cli/npm-stars.html
@@ -36,5 +36,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-start.html b/deps/npm/html/doc/cli/npm-start.html
index a93e8362cd3e77..3a4dd2d4d28bc1 100644
--- a/deps/npm/html/doc/cli/npm-start.html
+++ b/deps/npm/html/doc/cli/npm-start.html
@@ -39,5 +39,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-stop.html b/deps/npm/html/doc/cli/npm-stop.html
index 36a954c98aa746..95a978ea0a7284 100644
--- a/deps/npm/html/doc/cli/npm-stop.html
+++ b/deps/npm/html/doc/cli/npm-stop.html
@@ -34,5 +34,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-tag.html b/deps/npm/html/doc/cli/npm-tag.html
index c7203668e9cd46..45202c99a3c7e0 100644
--- a/deps/npm/html/doc/cli/npm-tag.html
+++ b/deps/npm/html/doc/cli/npm-tag.html
@@ -63,5 +63,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-team.html b/deps/npm/html/doc/cli/npm-team.html
index c2e5c2a31ea941..fb140ee9fa919d 100644
--- a/deps/npm/html/doc/cli/npm-team.html
+++ b/deps/npm/html/doc/cli/npm-team.html
@@ -67,4 +67,4 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-test.html b/deps/npm/html/doc/cli/npm-test.html
index d77033da728108..31e6a40cfb2b9f 100644
--- a/deps/npm/html/doc/cli/npm-test.html
+++ b/deps/npm/html/doc/cli/npm-test.html
@@ -38,5 +38,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-uninstall.html b/deps/npm/html/doc/cli/npm-uninstall.html
index 9df80989e42f5d..356ce459740273 100644
--- a/deps/npm/html/doc/cli/npm-uninstall.html
+++ b/deps/npm/html/doc/cli/npm-uninstall.html
@@ -60,5 +60,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/cli/npm-unpublish.html b/deps/npm/html/doc/cli/npm-unpublish.html
index 1b9ff69b319e6c..99dd3f3f46b81b 100644
--- a/deps/npm/html/doc/cli/npm-unpublish.html
+++ b/deps/npm/html/doc/cli/npm-unpublish.html
@@ -47,5 +47,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-update.html b/deps/npm/html/doc/cli/npm-update.html
index d3bca7bb3c0969..e65100ae4db7ab 100644
--- a/deps/npm/html/doc/cli/npm-update.html
+++ b/deps/npm/html/doc/cli/npm-update.html
@@ -118,5 +118,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-version.html b/deps/npm/html/doc/cli/npm-version.html
index f4f932f0509ab0..cb507e606e1acd 100644
--- a/deps/npm/html/doc/cli/npm-version.html
+++ b/deps/npm/html/doc/cli/npm-version.html
@@ -100,5 +100,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-view.html b/deps/npm/html/doc/cli/npm-view.html
index 3bbbcbe3808622..971bfceec72d95 100644
--- a/deps/npm/html/doc/cli/npm-view.html
+++ b/deps/npm/html/doc/cli/npm-view.html
@@ -86,5 +86,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-whoami.html b/deps/npm/html/doc/cli/npm-whoami.html
index 18d85939d29afa..93c9802e08ec5e 100644
--- a/deps/npm/html/doc/cli/npm-whoami.html
+++ b/deps/npm/html/doc/cli/npm-whoami.html
@@ -33,5 +33,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm.html b/deps/npm/html/doc/cli/npm.html
index 517d82f53d972b..d8cc90c8371b1e 100644
--- a/deps/npm/html/doc/cli/npm.html
+++ b/deps/npm/html/doc/cli/npm.html
@@ -13,7 +13,7 @@ javascript package manager
SYNOPSIS
npm <command> [args]
VERSION
-3.8.3
+3.8.6
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
@@ -126,11 +126,10 @@
AUTHOR
Isaac Z. Schlueter ::
isaacs ::
@izs ::
-i@izs.me
+i@izs.me
SEE ALSO
npm-help(1)
-npm-faq(7)
README
package.json(5)
npm-install(1)
@@ -151,5 +150,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/files/npm-folders.html b/deps/npm/html/doc/files/npm-folders.html
index 6f65dfb33b547d..6bb853addc7f8d 100644
--- a/deps/npm/html/doc/files/npm-folders.html
+++ b/deps/npm/html/doc/files/npm-folders.html
@@ -161,7 +161,6 @@ Publishing
cannot be found elsewhere. See package.json(5)
for more information.
SEE ALSO
-npm-faq(7)
package.json(5)
npm-install(1)
npm-pack(1)
@@ -183,5 +182,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/files/npm-global.html b/deps/npm/html/doc/files/npm-global.html
index 6f65dfb33b547d..6bb853addc7f8d 100644
--- a/deps/npm/html/doc/files/npm-global.html
+++ b/deps/npm/html/doc/files/npm-global.html
@@ -161,7 +161,6 @@ Publishing
cannot be found elsewhere. See package.json(5)
for more information.
SEE ALSO
-npm-faq(7)
package.json(5)
npm-install(1)
npm-pack(1)
@@ -183,5 +182,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/files/npm-json.html b/deps/npm/html/doc/files/npm-json.html
index 70d9c616bd87bc..d9b6382b8d12c2 100644
--- a/deps/npm/html/doc/files/npm-json.html
+++ b/deps/npm/html/doc/files/npm-json.html
@@ -162,6 +162,7 @@ files
._*
npm-debug.log
.npmrc
+node_modules
main
The main field is a module ID that is the primary entry point to your program.
@@ -494,8 +495,8 @@
engines
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.
+
Unless the user has set the engine-strict
config flag, this
+field is advisory only will produce warnings when your package is installed as a dependency.
engineStrict
This feature was deprecated with npm 3.0.0
Prior to npm 3.0.0, this feature was used to treat this package as if the
@@ -566,7 +567,6 @@
SEE ALSO
npm-config(1)
npm-config(7)
npm-help(1)
-npm-faq(7)
npm-install(1)
npm-publish(1)
npm-uninstall(1)
@@ -583,5 +583,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/files/npmrc.html b/deps/npm/html/doc/files/npmrc.html
index e0fcb5b479fed2..8c4b88bb7ddc87 100644
--- a/deps/npm/html/doc/files/npmrc.html
+++ b/deps/npm/html/doc/files/npmrc.html
@@ -83,5 +83,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/files/package.json.html b/deps/npm/html/doc/files/package.json.html
index 70d9c616bd87bc..d9b6382b8d12c2 100644
--- a/deps/npm/html/doc/files/package.json.html
+++ b/deps/npm/html/doc/files/package.json.html
@@ -162,6 +162,7 @@ files
._*
npm-debug.log
.npmrc
+node_modules
main
The main field is a module ID that is the primary entry point to your program.
@@ -494,8 +495,8 @@
engines
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.
+Unless the user has set the engine-strict
config flag, this
+field is advisory only will produce warnings when your package is installed as a dependency.
engineStrict
This feature was deprecated with npm 3.0.0
Prior to npm 3.0.0, this feature was used to treat this package as if the
@@ -566,7 +567,6 @@
SEE ALSO
npm-config(1)
npm-config(7)
npm-help(1)
-npm-faq(7)
npm-install(1)
npm-publish(1)
npm-uninstall(1)
@@ -583,5 +583,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/index.html b/deps/npm/html/doc/index.html
index 2616991f8f6938..914559250a9278 100644
--- a/deps/npm/html/doc/index.html
+++ b/deps/npm/html/doc/index.html
@@ -162,5 +162,5 @@
-
+
diff --git a/deps/npm/html/doc/misc/npm-coding-style.html b/deps/npm/html/doc/misc/npm-coding-style.html
index 5db93707ea1d47..f449d709ae4493 100644
--- a/deps/npm/html/doc/misc/npm-coding-style.html
+++ b/deps/npm/html/doc/misc/npm-coding-style.html
@@ -139,7 +139,6 @@ null, undefined, false, 0
SEE ALSO
@@ -154,5 +153,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/npm-config.html b/deps/npm/html/doc/misc/npm-config.html
index 0df4531c10d805..d972c27946a1e8 100644
--- a/deps/npm/html/doc/misc/npm-config.html
+++ b/deps/npm/html/doc/misc/npm-config.html
@@ -856,5 +856,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/npm-developers.html b/deps/npm/html/doc/misc/npm-developers.html
index 1d1bf4b387422f..77bf7fc0dacb41 100644
--- a/deps/npm/html/doc/misc/npm-developers.html
+++ b/deps/npm/html/doc/misc/npm-developers.html
@@ -174,7 +174,6 @@ Brag about it
Tell the world how easy it is to install your program!
SEE ALSO
-npm-faq(7)
npm(1)
npm-init(1)
package.json(5)
@@ -195,5 +194,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/npm-disputes.html b/deps/npm/html/doc/misc/npm-disputes.html
index 83e2f39b88e42a..5bc80740136d1e 100644
--- a/deps/npm/html/doc/misc/npm-disputes.html
+++ b/deps/npm/html/doc/misc/npm-disputes.html
@@ -13,7 +13,7 @@ Handling Module
SYNOPSIS
Get the author email with npm owner ls <pkgname>
-Email the author, CC support@npmjs.com
+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.
@@ -51,12 +51,12 @@ DESCRIPTION
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
+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
+support@npmjs.com and we'll sort it out. ("Reasonable" is
usually at least 4 weeks, but extra time is allowed around common
holidays.)
@@ -112,5 +112,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/npm-index.html b/deps/npm/html/doc/misc/npm-index.html
index fe0e65afb9d4a1..92b5121258cdf3 100644
--- a/deps/npm/html/doc/misc/npm-index.html
+++ b/deps/npm/html/doc/misc/npm-index.html
@@ -162,4 +162,4 @@
-
+
diff --git a/deps/npm/html/doc/misc/npm-orgs.html b/deps/npm/html/doc/misc/npm-orgs.html
index 8967cf184197c9..1dd915ad6b0181 100644
--- a/deps/npm/html/doc/misc/npm-orgs.html
+++ b/deps/npm/html/doc/misc/npm-orgs.html
@@ -22,8 +22,8 @@ DESCRIPTION
The developer will be able to access packages based on the teams they are on. Access is either read-write or read-only.
There are two main commands:
-npm team
see npm-access(1) for more details
-npm access
see npm-team(1) for more details
+npm team
see npm-team(1) for more details
+npm access
see npm-access(1) for more details
Team Admins create teams
@@ -86,4 +86,4 @@ Team Admins create teams
-
+
diff --git a/deps/npm/html/doc/misc/npm-registry.html b/deps/npm/html/doc/misc/npm-registry.html
index 90056aa576f2db..087565fec40e9c 100644
--- a/deps/npm/html/doc/misc/npm-registry.html
+++ b/deps/npm/html/doc/misc/npm-registry.html
@@ -70,5 +70,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/npm-scope.html b/deps/npm/html/doc/misc/npm-scope.html
index 63c18a2a5f93c1..43feb0b22c8a73 100644
--- a/deps/npm/html/doc/misc/npm-scope.html
+++ b/deps/npm/html/doc/misc/npm-scope.html
@@ -91,5 +91,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/npm-scripts.html b/deps/npm/html/doc/misc/npm-scripts.html
index dcbc34ca783098..b9cc536cb13c61 100644
--- a/deps/npm/html/doc/misc/npm-scripts.html
+++ b/deps/npm/html/doc/misc/npm-scripts.html
@@ -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 736d47d5a98522..ea8ea286ebac7d 100644
--- a/deps/npm/html/doc/misc/removing-npm.html
+++ b/deps/npm/html/doc/misc/removing-npm.html
@@ -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 92cfb4f0e036a7..767fb9d664c047 100644
--- a/deps/npm/html/doc/misc/semver.html
+++ b/deps/npm/html/doc/misc/semver.html
@@ -302,5 +302,5 @@ Ranges
-
+
diff --git a/deps/npm/html/index.html b/deps/npm/html/index.html
index 0d3c128b794d0e..bb8681c85c9fd6 100644
--- a/deps/npm/html/index.html
+++ b/deps/npm/html/index.html
@@ -61,7 +61,7 @@ npm
Easy Zero Line Install
-Install Node.js
+
Install Node.js
(npm comes with it.)
Because a one-line install is one too many.
@@ -70,24 +70,22 @@ Fancy Install
Get the code.
- Do what the README
+ Do what the README
says to do.
There's a pretty thorough install script at
https://npmjs.org/install.sh
-For maximum security, make sure to thorougly inspect every
+
For maximum security, make sure to thoroughly inspect every
program that you run on your computer!
Other Cool Stuff
diff --git a/deps/npm/lib/config/cmd-list.js b/deps/npm/lib/config/cmd-list.js
index 82725221baf622..9cf975c54a1b8a 100644
--- a/deps/npm/lib/config/cmd-list.js
+++ b/deps/npm/lib/config/cmd-list.js
@@ -85,7 +85,6 @@ var cmdList = [
'docs',
'repo',
'bugs',
- 'faq',
'root',
'prefix',
'bin',
diff --git a/deps/npm/lib/deprecate.js b/deps/npm/lib/deprecate.js
index ffc29c9c8b92e1..dff61973ed65db 100644
--- a/deps/npm/lib/deprecate.js
+++ b/deps/npm/lib/deprecate.js
@@ -37,6 +37,10 @@ function deprecate (args, cb) {
// fetch the data and make sure it exists.
var p = npa(pkg)
+ // npa makes the default spec "latest", but for deprecation
+ // "*" is the appropriate default.
+ if (p.rawSpec === '') p.spec = '*'
+
mapToRegistry(p.name, npm.config, function (er, uri, auth) {
if (er) return cb(er)
diff --git a/deps/npm/lib/faq.js b/deps/npm/lib/faq.js
deleted file mode 100644
index c9d88d3012e564..00000000000000
--- a/deps/npm/lib/faq.js
+++ /dev/null
@@ -1,7 +0,0 @@
-module.exports = faq
-
-faq.usage = 'npm faq'
-
-var npm = require('./npm.js')
-
-function faq (args, cb) { npm.commands.help(['faq'], cb) }
diff --git a/deps/npm/lib/help.js b/deps/npm/lib/help.js
index 388a4e7d5d703c..cecc6e02b086ea 100644
--- a/deps/npm/lib/help.js
+++ b/deps/npm/lib/help.js
@@ -170,7 +170,6 @@ function npmUsage (valid, cb) {
'',
'npm -h quick help on ',
'npm -l display full usage info',
- 'npm faq commonly asked questions',
'npm help search for help on ',
'npm help npm involved overview',
'',
diff --git a/deps/npm/lib/search.js b/deps/npm/lib/search.js
index 4877417f0d79c7..bf1f6499a71d51 100644
--- a/deps/npm/lib/search.js
+++ b/deps/npm/lib/search.js
@@ -49,6 +49,10 @@ function search (args, silent, staleness, cb) {
return s.toLowerCase()
}).filter(function (s) { return s })
+ if (opts.length === 0) {
+ return cb(new Error('search must be called with arguments'))
+ }
+
if (typeof searchexclude === 'string') {
searchexclude = searchexclude.split(/\s+/)
} else {
diff --git a/deps/npm/lib/utils/link.js b/deps/npm/lib/utils/link.js
index 1091f46833c8c8..d0492e076fd6b8 100644
--- a/deps/npm/lib/utils/link.js
+++ b/deps/npm/lib/utils/link.js
@@ -25,6 +25,24 @@ function linkIfExists (from, to, gently, cb) {
})
}
+function resolveIfSymlink (maybeSymlinkPath, cb) {
+ fs.lstat(maybeSymlinkPath, function (err, stat) {
+ if (err) return cb.apply(this, arguments)
+ if (!stat.isSymbolicLink()) return cb(null, maybeSymlinkPath)
+ fs.readlink(maybeSymlinkPath, cb)
+ })
+}
+
+function ensureFromIsNotSource (from, to, cb) {
+ resolveIfSymlink(from, function (err, fromDestination) {
+ if (err) return cb.apply(this, arguments)
+ if (path.resolve(path.dirname(from), fromDestination) === path.resolve(to)) {
+ return cb(new Error('Link target resolves to the same directory as link source: ' + to))
+ }
+ cb.apply(this, arguments)
+ })
+}
+
function link (from, to, gently, abs, cb) {
if (typeof cb !== 'function') {
cb = abs
@@ -48,6 +66,7 @@ function link (from, to, gently, abs, cb) {
chain(
[
+ [ensureFromIsNotSource, from, to],
[fs, 'stat', from],
[rm, to, gently],
[mkdir, path.dirname(to)],
diff --git a/deps/npm/man/man1/npm-README.1 b/deps/npm/man/man1/npm-README.1
index b95f97c843cd5c..644147b483dccd 100644
--- a/deps/npm/man/man1/npm-README.1
+++ b/deps/npm/man/man1/npm-README.1
@@ -1,4 +1,4 @@
-.TH "NPM" "1" "March 2016" "" ""
+.TH "NPM" "1" "April 2016" "" ""
.SH "NAME"
\fBnpm\fR \- a JavaScript package manager
.P
@@ -145,7 +145,6 @@ you have chosen\.
.SH More Docs
.P
Check out the docs \fIhttps://docs\.npmjs\.com/\fR,
-especially the faq \fIhttps://docs\.npmjs\.com/misc/faq\fR\|\.
.P
You can use the \fBnpm help\fP command to read any of them\.
.P
@@ -171,8 +170,6 @@ will no doubt tell you to put the output in a gist or email\.
.IP \(bu 2
npm help npm
.IP \(bu 2
-npm help 7 faq
-.IP \(bu 2
npm help help
.IP \(bu 2
npm help 7 index
diff --git a/deps/npm/man/man1/npm-access.1 b/deps/npm/man/man1/npm-access.1
index 97e3f4063f30f3..1346590429cfea 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" "March 2016" "" ""
+.TH "NPM\-ACCESS" "1" "April 2016" "" ""
.SH "NAME"
\fBnpm-access\fR \- Set access level on published packages
.SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-adduser.1 b/deps/npm/man/man1/npm-adduser.1
index 677f371b3d25b0..cc034a4f0c4026 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" "March 2016" "" ""
+.TH "NPM\-ADDUSER" "1" "April 2016" "" ""
.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 4a52b6309bb1c6..7d1c758fcf156b 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" "March 2016" "" ""
+.TH "NPM\-BIN" "1" "April 2016" "" ""
.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 83c10e46e2a05e..b7a0d8329c0156 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" "March 2016" "" ""
+.TH "NPM\-BUGS" "1" "April 2016" "" ""
.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 c2d2a883ac3747..ede3c890ec717d 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" "March 2016" "" ""
+.TH "NPM\-BUILD" "1" "April 2016" "" ""
.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 4931522248af43..aa1540bdc95279 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" "March 2016" "" ""
+.TH "NPM\-BUNDLE" "1" "April 2016" "" ""
.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 ad1dcd6ede9d29..dd9f6176743341 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" "March 2016" "" ""
+.TH "NPM\-CACHE" "1" "April 2016" "" ""
.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 8487fdff9cad38..7cdb4643c91b39 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" "March 2016" "" ""
+.TH "NPM\-COMPLETION" "1" "April 2016" "" ""
.SH "NAME"
\fBnpm-completion\fR \- Tab Completion for npm
.SH SYNOPSIS
@@ -36,8 +36,6 @@ completions based on the arguments\.
.IP \(bu 2
npm help 7 developers
.IP \(bu 2
-npm help 7 faq
-.IP \(bu 2
npm help npm
.RE
diff --git a/deps/npm/man/man1/npm-config.1 b/deps/npm/man/man1/npm-config.1
index 265164f0a0a23f..7ab468e1844b51 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" "March 2016" "" ""
+.TH "NPM\-CONFIG" "1" "April 2016" "" ""
.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 05877e9a7d0ec3..45f829f98d21d0 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" "March 2016" "" ""
+.TH "NPM\-DEDUPE" "1" "April 2016" "" ""
.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 1cd1337343870f..c7fd28ada8a392 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" "March 2016" "" ""
+.TH "NPM\-DEPRECATE" "1" "April 2016" "" ""
.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 931278fec90d32..a92340fe760066 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" "March 2016" "" ""
+.TH "NPM\-DIST\-TAG" "1" "April 2016" "" ""
.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 5dae817eb83440..245d07ab331ae8 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" "March 2016" "" ""
+.TH "NPM\-DOCS" "1" "April 2016" "" ""
.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 cffd387fa1077b..743425af86d020 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" "March 2016" "" ""
+.TH "NPM\-EDIT" "1" "April 2016" "" ""
.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 e4359837233b5d..e9c937d299a291 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" "March 2016" "" ""
+.TH "NPM\-EXPLORE" "1" "April 2016" "" ""
.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 ab398c447f6308..f2927e071a245d 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" "March 2016" "" ""
+.TH "NPM\-HELP\-SEARCH" "1" "April 2016" "" ""
.SH "NAME"
\fBnpm-help-search\fR \- Search npm help documentation
.SH SYNOPSIS
@@ -37,8 +37,6 @@ If false, then help\-search will just list out the help topics found\.
.IP \(bu 2
npm help npm
.IP \(bu 2
-npm help 7 faq
-.IP \(bu 2
npm help help
.RE
diff --git a/deps/npm/man/man1/npm-help.1 b/deps/npm/man/man1/npm-help.1
index d281a759d4f6a3..bb5230c05d897c 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" "March 2016" "" ""
+.TH "NPM\-HELP" "1" "April 2016" "" ""
.SH "NAME"
\fBnpm-help\fR \- Get help on npm
.SH SYNOPSIS
@@ -36,8 +36,6 @@ npm help npm
.IP \(bu 2
README
.IP \(bu 2
-npm help 7 faq
-.IP \(bu 2
npm help 5 folders
.IP \(bu 2
npm help config
diff --git a/deps/npm/man/man1/npm-init.1 b/deps/npm/man/man1/npm-init.1
index 3b7eb856eae73e..20d3c87fc2dcfc 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" "March 2016" "" ""
+.TH "NPM\-INIT" "1" "April 2016" "" ""
.SH "NAME"
\fBnpm-init\fR \- Interactively create a package\.json file
.SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-install-test.1 b/deps/npm/man/man1/npm-install-test.1
index 5b1fe9f82ba23b..45462e78ea1ab3 100644
--- a/deps/npm/man/man1/npm-install-test.1
+++ b/deps/npm/man/man1/npm-install-test.1
@@ -1,4 +1,4 @@
-.TH "NPM" "" "March 2016" "" ""
+.TH "NPM" "" "April 2016" "" ""
.SH "NAME"
\fBnpm\fR
.SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-install.1 b/deps/npm/man/man1/npm-install.1
index 32c87bf7cee6d3..11de983b7a72ad 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" "March 2016" "" ""
+.TH "NPM\-INSTALL" "1" "April 2016" "" ""
.SH "NAME"
\fBnpm-install\fR \- Install a package
.SH SYNOPSIS
@@ -320,6 +320,9 @@ global \fBnode_modules\fP folder\. Only your direct dependencies will show in
\fBnode_modules\fP and everything they depend on will be flattened in their
\fBnode_modules\fP folders\. This obviously will eliminate some deduping\.
.P
+The \fB\-\-ignore\-scripts\fP argument will cause npm to not execute any
+scripts defined in the package\.json\. See npm help 7 \fBnpm\-scripts\fP\|\.
+.P
The \fB\-\-legacy\-bundling\fP argument will cause npm to install the package such
that versions of npm prior to 1\.4, such as the one included with node 0\.8,
can install the package\. This eliminates all automatic deduping\.
diff --git a/deps/npm/man/man1/npm-link.1 b/deps/npm/man/man1/npm-link.1
index db43123a6875af..d99fcf1d08ddb7 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" "March 2016" "" ""
+.TH "NPM\-LINK" "1" "April 2016" "" ""
.SH "NAME"
\fBnpm-link\fR \- Symlink a package folder
.SH SYNOPSIS
@@ -85,8 +85,6 @@ npm link @myorg/privatepackage
.IP \(bu 2
npm help 7 developers
.IP \(bu 2
-npm help 7 faq
-.IP \(bu 2
npm help 5 package\.json
.IP \(bu 2
npm help install
diff --git a/deps/npm/man/man1/npm-logout.1 b/deps/npm/man/man1/npm-logout.1
index b8c0b81511bbf7..4cb1d2c6329cbc 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" "March 2016" "" ""
+.TH "NPM\-LOGOUT" "1" "April 2016" "" ""
.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 1aaf9e73b7b9d7..8298409c660249 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" "March 2016" "" ""
+.TH "NPM\-LS" "1" "April 2016" "" ""
.SH "NAME"
\fBnpm-ls\fR \- List installed packages
.SH SYNOPSIS
@@ -22,7 +22,7 @@ For example, running \fBnpm ls promzard\fP in npm's source tree will show:
.P
.RS 2
.nf
-npm@3.8.3 /path/to/npm
+npm@3.8.6 /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 9ac425effc3473..6cb81b075b3d18 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" "March 2016" "" ""
+.TH "NPM\-OUTDATED" "1" "April 2016" "" ""
.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 1c680a71e97fd0..30aeb00bbab548 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" "March 2016" "" ""
+.TH "NPM\-OWNER" "1" "April 2016" "" ""
.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 523334225e9dbb..4d242b139c17ea 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" "March 2016" "" ""
+.TH "NPM\-PACK" "1" "April 2016" "" ""
.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 8b776bedcad8bd..a39c37419239af 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" "March 2016" "" ""
+.TH "NPM\-PING" "1" "April 2016" "" ""
.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 88991c72e62ee0..a37596200914bb 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" "March 2016" "" ""
+.TH "NPM\-PREFIX" "1" "April 2016" "" ""
.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 b02d5d41a38d73..6538b5a8015491 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" "March 2016" "" ""
+.TH "NPM\-PRUNE" "1" "April 2016" "" ""
.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 553c3bbd15a825..182d4bbbeef29d 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" "March 2016" "" ""
+.TH "NPM\-PUBLISH" "1" "April 2016" "" ""
.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 15ab16c2c82328..668002e2ba480f 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" "March 2016" "" ""
+.TH "NPM\-REBUILD" "1" "April 2016" "" ""
.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 266d31713cfe68..86dc40727d9251 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" "March 2016" "" ""
+.TH "NPM\-REPO" "1" "April 2016" "" ""
.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 54ab5c92bcba6a..5127fcf9e5e7c0 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" "March 2016" "" ""
+.TH "NPM\-RESTART" "1" "April 2016" "" ""
.SH "NAME"
\fBnpm-restart\fR \- Restart a package
.SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-root.1 b/deps/npm/man/man1/npm-root.1
index c85e1dc54f919e..8fd77cf6bc0eb3 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" "March 2016" "" ""
+.TH "NPM\-ROOT" "1" "April 2016" "" ""
.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 70f2a7a99cca87..618d49d3d1fffb 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" "March 2016" "" ""
+.TH "NPM\-RUN\-SCRIPT" "1" "April 2016" "" ""
.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 7afbbc28f9c31b..c99830fca52797 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" "March 2016" "" ""
+.TH "NPM\-SEARCH" "1" "April 2016" "" ""
.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 0ae94a23ac4267..13d7c2d85be9ad 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" "March 2016" "" ""
+.TH "NPM\-SHRINKWRAP" "1" "April 2016" "" ""
.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 91aa06877ceafd..9f52ce52dd26ae 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" "March 2016" "" ""
+.TH "NPM\-STAR" "1" "April 2016" "" ""
.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 fc579d23975c8d..59d5897e12625a 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" "March 2016" "" ""
+.TH "NPM\-STARS" "1" "April 2016" "" ""
.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 36f26f96224cfc..bd65a9149f8a8c 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" "March 2016" "" ""
+.TH "NPM\-START" "1" "April 2016" "" ""
.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 d4e5dcb993d411..a99c6fe5ab4d03 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" "March 2016" "" ""
+.TH "NPM\-STOP" "1" "April 2016" "" ""
.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 7dab63a89d4a45..4a670febef08f5 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" "March 2016" "" ""
+.TH "NPM\-TAG" "1" "April 2016" "" ""
.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
index 50e1c7e635044e..297e648c741b79 100644
--- a/deps/npm/man/man1/npm-team.1
+++ b/deps/npm/man/man1/npm-team.1
@@ -1,4 +1,4 @@
-.TH "NPM\-TEAM" "1" "March 2016" "" ""
+.TH "NPM\-TEAM" "1" "April 2016" "" ""
.SH "NAME"
\fBnpm-team\fR \- Manage organization teams and team memberships
.SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-test.1 b/deps/npm/man/man1/npm-test.1
index 6e35b5f540d2c7..068e0176723209 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" "March 2016" "" ""
+.TH "NPM\-TEST" "1" "April 2016" "" ""
.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 c7b24aeedd154e..65b28b4bd7fdc3 100644
--- a/deps/npm/man/man1/npm-uninstall.1
+++ b/deps/npm/man/man1/npm-uninstall.1
@@ -1,4 +1,4 @@
-.TH "NPM\-UNINSTALL" "1" "March 2016" "" ""
+.TH "NPM\-UNINSTALL" "1" "April 2016" "" ""
.SH "NAME"
\fBnpm-uninstall\fR \- Remove a package
.SH SYNOPSIS
diff --git a/deps/npm/man/man1/npm-unpublish.1 b/deps/npm/man/man1/npm-unpublish.1
index 45227244daeb07..aded668480f987 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" "March 2016" "" ""
+.TH "NPM\-UNPUBLISH" "1" "April 2016" "" ""
.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 28fa7f4be4b2dd..dc262065b271cb 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" "March 2016" "" ""
+.TH "NPM\-UPDATE" "1" "April 2016" "" ""
.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 90b6c0867c107e..ac74ee8dd6f25b 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" "March 2016" "" ""
+.TH "NPM\-VERSION" "1" "April 2016" "" ""
.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 0fdeeff6dc8f68..62b2042cd17037 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" "March 2016" "" ""
+.TH "NPM\-VIEW" "1" "April 2016" "" ""
.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 7f6b515c3848ea..183016ae025a82 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" "March 2016" "" ""
+.TH "NPM\-WHOAMI" "1" "April 2016" "" ""
.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 457ee5e9884761..165cf1b890622c 100644
--- a/deps/npm/man/man1/npm.1
+++ b/deps/npm/man/man1/npm.1
@@ -1,4 +1,4 @@
-.TH "NPM" "1" "March 2016" "" ""
+.TH "NPM" "1" "April 2016" "" ""
.SH "NAME"
\fBnpm\fR \- javascript package manager
.SH SYNOPSIS
@@ -10,7 +10,7 @@ npm [args]
.RE
.SH VERSION
.P
-3.8.3
+3.8.6
.SH DESCRIPTION
.P
npm is the package manager for the Node JavaScript platform\. It puts
@@ -187,8 +187,6 @@ i@izs\.me
.IP \(bu 2
npm help help
.IP \(bu 2
-npm help 7 faq
-.IP \(bu 2
README
.IP \(bu 2
npm help 5 package\.json
diff --git a/deps/npm/man/man5/npm-folders.5 b/deps/npm/man/man5/npm-folders.5
index 33ad7d4c63d83f..f4f37f0c22b2a7 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" "March 2016" "" ""
+.TH "NPM\-FOLDERS" "5" "April 2016" "" ""
.SH "NAME"
\fBnpm-folders\fR \- Folder Structures Used by npm
.SH DESCRIPTION
@@ -207,8 +207,6 @@ cannot be found elsewhere\. See npm help 5 \fBpackage\.json\fP for more informa
.SH SEE ALSO
.RS 0
.IP \(bu 2
-npm help 7 faq
-.IP \(bu 2
npm help 5 package\.json
.IP \(bu 2
npm help install
diff --git a/deps/npm/man/man5/npm-global.5 b/deps/npm/man/man5/npm-global.5
index 33ad7d4c63d83f..f4f37f0c22b2a7 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" "March 2016" "" ""
+.TH "NPM\-FOLDERS" "5" "April 2016" "" ""
.SH "NAME"
\fBnpm-folders\fR \- Folder Structures Used by npm
.SH DESCRIPTION
@@ -207,8 +207,6 @@ cannot be found elsewhere\. See npm help 5 \fBpackage\.json\fP for more informa
.SH SEE ALSO
.RS 0
.IP \(bu 2
-npm help 7 faq
-.IP \(bu 2
npm help 5 package\.json
.IP \(bu 2
npm help install
diff --git a/deps/npm/man/man5/npm-json.5 b/deps/npm/man/man5/npm-json.5
index b492849675cafa..09689ad85bfd57 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" "March 2016" "" ""
+.TH "PACKAGE\.JSON" "5" "April 2016" "" ""
.SH "NAME"
\fBpackage.json\fR \- Specifics of npm's package\.json handling
.SH DESCRIPTION
@@ -263,6 +263,8 @@ Conversely, some files are always ignored:
\fBnpm\-debug\.log\fP
.IP \(bu 2
\fB\|\.npmrc\fP
+.IP \(bu 2
+\fBnode_modules\fP
.RE
.SH main
@@ -791,8 +793,8 @@ are capable of properly installing your program\. For example:
.fi
.RE
.P
-Note that, unless the user has set the \fBengine\-strict\fP config flag, this
-field is advisory only\.
+Unless the user has set the \fBengine\-strict\fP config flag, this
+field is advisory only will produce warnings when your package is installed as a dependency\.
.SH engineStrict
.P
\fBThis feature was deprecated with npm 3\.0\.0\fR
@@ -908,8 +910,6 @@ npm help 7 config
.IP \(bu 2
npm help help
.IP \(bu 2
-npm help 7 faq
-.IP \(bu 2
npm help install
.IP \(bu 2
npm help publish
diff --git a/deps/npm/man/man5/npmrc.5 b/deps/npm/man/man5/npmrc.5
index e99cb155dadc57..63054cde3c2e2f 100644
--- a/deps/npm/man/man5/npmrc.5
+++ b/deps/npm/man/man5/npmrc.5
@@ -1,4 +1,4 @@
-.TH "NPMRC" "5" "March 2016" "" ""
+.TH "NPMRC" "5" "April 2016" "" ""
.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 b492849675cafa..09689ad85bfd57 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" "March 2016" "" ""
+.TH "PACKAGE\.JSON" "5" "April 2016" "" ""
.SH "NAME"
\fBpackage.json\fR \- Specifics of npm's package\.json handling
.SH DESCRIPTION
@@ -263,6 +263,8 @@ Conversely, some files are always ignored:
\fBnpm\-debug\.log\fP
.IP \(bu 2
\fB\|\.npmrc\fP
+.IP \(bu 2
+\fBnode_modules\fP
.RE
.SH main
@@ -791,8 +793,8 @@ are capable of properly installing your program\. For example:
.fi
.RE
.P
-Note that, unless the user has set the \fBengine\-strict\fP config flag, this
-field is advisory only\.
+Unless the user has set the \fBengine\-strict\fP config flag, this
+field is advisory only will produce warnings when your package is installed as a dependency\.
.SH engineStrict
.P
\fBThis feature was deprecated with npm 3\.0\.0\fR
@@ -908,8 +910,6 @@ npm help 7 config
.IP \(bu 2
npm help help
.IP \(bu 2
-npm help 7 faq
-.IP \(bu 2
npm help install
.IP \(bu 2
npm help publish
diff --git a/deps/npm/man/man7/npm-coding-style.7 b/deps/npm/man/man7/npm-coding-style.7
index 1866cdf8b664d5..745ac94e2d317b 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" "March 2016" "" ""
+.TH "NPM\-CODING\-STYLE" "7" "April 2016" "" ""
.SH "NAME"
\fBnpm-coding-style\fR \- npm's "funny" coding style
.SH DESCRIPTION
@@ -216,8 +216,6 @@ Boolean objects are verboten\.
.IP \(bu 2
npm help 7 developers
.IP \(bu 2
-npm help 7 faq
-.IP \(bu 2
npm help npm
.RE
diff --git a/deps/npm/man/man7/npm-config.7 b/deps/npm/man/man7/npm-config.7
index b3c376ab88ccff..3a4df5e5e02166 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" "March 2016" "" ""
+.TH "NPM\-CONFIG" "7" "April 2016" "" ""
.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 a9162d0ff65cc9..3d9247ac04bc1e 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" "March 2016" "" ""
+.TH "NPM\-DEVELOPERS" "7" "April 2016" "" ""
.SH "NAME"
\fBnpm-developers\fR \- Developer Guide
.SH DESCRIPTION
@@ -262,8 +262,6 @@ Tell the world how easy it is to install your program!
.SH SEE ALSO
.RS 0
.IP \(bu 2
-npm help 7 faq
-.IP \(bu 2
npm help npm
.IP \(bu 2
npm help init
diff --git a/deps/npm/man/man7/npm-disputes.7 b/deps/npm/man/man7/npm-disputes.7
index 3e56cc4a3dca47..385921c79cb06b 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" "March 2016" "" ""
+.TH "NPM\-DISPUTES" "7" "April 2016" "" ""
.SH "NAME"
\fBnpm-disputes\fR \- Handling Module Name Disputes
.SH SYNOPSIS
diff --git a/deps/npm/man/man7/npm-index.7 b/deps/npm/man/man7/npm-index.7
index 8b53025679102d..17b6fa7777978d 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" "March 2016" "" ""
+.TH "NPM\-INDEX" "7" "April 2016" "" ""
.SH "NAME"
\fBnpm-index\fR \- Index of all npm documentation
.SS npm help README
diff --git a/deps/npm/man/man7/npm-orgs.7 b/deps/npm/man/man7/npm-orgs.7
index 031c93376d8a32..71c5197f64faeb 100644
--- a/deps/npm/man/man7/npm-orgs.7
+++ b/deps/npm/man/man7/npm-orgs.7
@@ -1,4 +1,4 @@
-.TH "NPM\-ORGS" "7" "March 2016" "" ""
+.TH "NPM\-ORGS" "7" "April 2016" "" ""
.SH "NAME"
\fBnpm-orgs\fR \- Working with Teams & Orgs
.SH DESCRIPTION
@@ -23,9 +23,9 @@ The developer will be able to access packages based on the teams they are on\. A
There are two main commands:
.RS 0
.IP 1. 3
-\fBnpm team\fP see npm help access for more details
+\fBnpm team\fP see npm help team for more details
.IP 2. 3
-\fBnpm access\fP see npm help team for more details
+\fBnpm access\fP see npm help access for more details
.RE
.SH Team Admins create teams
diff --git a/deps/npm/man/man7/npm-registry.7 b/deps/npm/man/man7/npm-registry.7
index 5ef2ab8df190e0..e50735dc74db70 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" "March 2016" "" ""
+.TH "NPM\-REGISTRY" "7" "April 2016" "" ""
.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 88c3fcf30a7ee3..e26b614bd42601 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" "March 2016" "" ""
+.TH "NPM\-SCOPE" "7" "April 2016" "" ""
.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 28fbe3ac32026e..72c220f0639fa6 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" "March 2016" "" ""
+.TH "NPM\-SCRIPTS" "7" "April 2016" "" ""
.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 338724b26a06dc..d77f66995cf073 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" "March 2016" "" ""
+.TH "NPM\-REMOVAL" "1" "April 2016" "" ""
.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 2cb733f85fe3c6..acec7e039a26e4 100644
--- a/deps/npm/man/man7/semver.7
+++ b/deps/npm/man/man7/semver.7
@@ -1,4 +1,4 @@
-.TH "SEMVER" "7" "March 2016" "" ""
+.TH "SEMVER" "7" "April 2016" "" ""
.SH "NAME"
\fBsemver\fR \- The semantic versioner for npm
.SH Usage
diff --git a/deps/npm/node_modules/async-some/.eslintrc b/deps/npm/node_modules/async-some/.eslintrc
deleted file mode 100644
index 5c39c67eca02a9..00000000000000
--- a/deps/npm/node_modules/async-some/.eslintrc
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "env" : {
- "node" : true
- },
- "rules" : {
- "curly" : 0,
- "no-lonely-if" : 1,
- "no-mixed-requires" : 0,
- "no-underscore-dangle" : 0,
- "no-unused-vars" : [2, {"vars" : "all", "args" : "after-used"}],
- "no-use-before-define" : [2, "nofunc"],
- "quotes" : [1, "double", "avoid-escape"],
- "semi" : [2, "never"],
- "space-after-keywords" : 1,
- "space-infix-ops" : 0,
- "strict" : 0
- }
-}
diff --git a/deps/npm/node_modules/async-some/.npmignore b/deps/npm/node_modules/async-some/.npmignore
deleted file mode 100644
index 3c3629e647f5dd..00000000000000
--- a/deps/npm/node_modules/async-some/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/deps/npm/node_modules/async-some/LICENSE b/deps/npm/node_modules/async-some/LICENSE
deleted file mode 100644
index d21147bf1965eb..00000000000000
--- a/deps/npm/node_modules/async-some/LICENSE
+++ /dev/null
@@ -1,13 +0,0 @@
-Copyright (c) 2014-2015, Forrest L Norvell
-
-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/async-some/README.md b/deps/npm/node_modules/async-some/README.md
deleted file mode 100644
index bb502ee0608720..00000000000000
--- a/deps/npm/node_modules/async-some/README.md
+++ /dev/null
@@ -1,62 +0,0 @@
-# some
-
-Short-circuited async Array.prototype.some implementation.
-
-Serially evaluates a list of values from a JS array or arraylike
-against an asynchronous predicate, terminating on the first truthy
-value. If the predicate encounters an error, pass it to the completion
-callback. Otherwise, pass the truthy value passed by the predicate, or
-`false` if no truthy value was passed.
-
-Is
-[Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony)-proof,
-browser-safe, and pretty efficient.
-
-## Usage
-
-```javascript
-var some = require("async-some");
-var resolve = require("path").resolve;
-var stat = require("fs").stat;
-var readFileSync = require("fs").readFileSync;
-
-some(["apple", "seaweed", "ham", "quince"], porkDetector, function (error, match) {
- if (error) return console.error(error);
-
- if (match) return console.dir(JSON.parse(readFileSync(match)));
-
- console.error("time to buy more Sporkle™!");
-});
-
-var PREFIX = resolve(__dirname, "../pork_store");
-function porkDetector(value, cb) {
- var path = resolve(PREFIX, value + ".json");
- stat(path, function (er, stat) {
- if (er) {
- if (er.code === "ENOENT") return cb(null, false);
-
- return cb(er);
- }
-
- cb(er, path);
- });
-}
-```
-
-### some(list, test, callback)
-
-* `list` {Object} An arraylike (either an Array or the arguments arraylike) to
- be checked.
-* `test` {Function} The predicate against which the elements of `list` will be
- tested. Takes two parameters:
- * `element` {any} The element of the list to be tested.
- * `callback` {Function} The continuation to be called once the test is
- complete. Takes (again) two values:
- * `error` {Error} Any errors that the predicate encountered.
- * `value` {any} A truthy value. A non-falsy result terminates checking the
- entire list.
-* `callback` {Function} The callback to invoke when either a value has been
- found or the entire input list has been processed with no result. Is invoked
- with the traditional two parameters:
- * `error` {Error} Errors that were encountered during the evaluation of some().
- * `match` {any} Value successfully matched by `test`, if any.
diff --git a/deps/npm/node_modules/async-some/package.json b/deps/npm/node_modules/async-some/package.json
deleted file mode 100644
index b7d5521e58dfba..00000000000000
--- a/deps/npm/node_modules/async-some/package.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "name": "async-some",
- "version": "1.0.2",
- "description": "short-circuited, asynchronous version of Array.protototype.some",
- "main": "some.js",
- "scripts": {
- "test": "tap test/*.js"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/othiym23/async-some.git"
- },
- "keywords": [
- "async",
- "some",
- "array",
- "collections",
- "fp"
- ],
- "author": {
- "name": "Forrest L Norvell",
- "email": "ogd@aoaioxxysz.net"
- },
- "license": "ISC",
- "bugs": {
- "url": "https://github.com/othiym23/async-some/issues"
- },
- "homepage": "https://github.com/othiym23/async-some",
- "dependencies": {
- "dezalgo": "^1.0.2"
- },
- "devDependencies": {
- "tap": "^1.1.0"
- },
- "readme": "# some\n\nShort-circuited async Array.prototype.some implementation.\n\nSerially evaluates a list of values from a JS array or arraylike\nagainst an asynchronous predicate, terminating on the first truthy\nvalue. If the predicate encounters an error, pass it to the completion\ncallback. Otherwise, pass the truthy value passed by the predicate, or\n`false` if no truthy value was passed.\n\nIs\n[Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony)-proof,\nbrowser-safe, and pretty efficient.\n\n## Usage\n\n```javascript\nvar some = require(\"async-some\");\nvar resolve = require(\"path\").resolve;\nvar stat = require(\"fs\").stat;\nvar readFileSync = require(\"fs\").readFileSync;\n\nsome([\"apple\", \"seaweed\", \"ham\", \"quince\"], porkDetector, function (error, match) {\n if (error) return console.error(error);\n\n if (match) return console.dir(JSON.parse(readFileSync(match)));\n\n console.error(\"time to buy more Sporkle™!\");\n});\n\nvar PREFIX = resolve(__dirname, \"../pork_store\");\nfunction porkDetector(value, cb) {\n var path = resolve(PREFIX, value + \".json\");\n stat(path, function (er, stat) {\n if (er) {\n if (er.code === \"ENOENT\") return cb(null, false);\n\n return cb(er);\n }\n\n cb(er, path);\n });\n}\n```\n\n### some(list, test, callback)\n\n* `list` {Object} An arraylike (either an Array or the arguments arraylike) to\n be checked.\n* `test` {Function} The predicate against which the elements of `list` will be\n tested. Takes two parameters:\n * `element` {any} The element of the list to be tested.\n * `callback` {Function} The continuation to be called once the test is\n complete. Takes (again) two values:\n * `error` {Error} Any errors that the predicate encountered.\n * `value` {any} A truthy value. A non-falsy result terminates checking the\n entire list.\n* `callback` {Function} The callback to invoke when either a value has been\n found or the entire input list has been processed with no result. Is invoked\n with the traditional two parameters:\n * `error` {Error} Errors that were encountered during the evaluation of some().\n * `match` {any} Value successfully matched by `test`, if any.\n",
- "readmeFilename": "README.md",
- "gitHead": "3a5086ad54739c48b2bbf073f23bcc95658199e3",
- "_id": "async-some@1.0.2",
- "_shasum": "4d8a81620d5958791b5b98f802d3207776e95509",
- "_from": "async-some@>=1.0.2 <1.1.0"
-}
diff --git a/deps/npm/node_modules/async-some/some.js b/deps/npm/node_modules/async-some/some.js
deleted file mode 100644
index 0419709f763daa..00000000000000
--- a/deps/npm/node_modules/async-some/some.js
+++ /dev/null
@@ -1,47 +0,0 @@
-var assert = require("assert")
-var dezalgoify = require("dezalgo")
-
-module.exports = some
-
-/**
- * short-circuited async Array.prototype.some implementation
- *
- * Serially evaluates a list of values from a JS array or arraylike
- * against an asynchronous predicate, terminating on the first truthy
- * value. If the predicate encounters an error, pass it to the completion
- * callback. Otherwise, pass the truthy value passed by the predicate, or
- * `false` if no truthy value was passed.
- */
-function some (list, test, cb) {
- assert("length" in list, "array must be arraylike")
- assert.equal(typeof test, "function", "predicate must be callable")
- assert.equal(typeof cb, "function", "callback must be callable")
-
- var array = slice(list)
- , index = 0
- , length = array.length
- , hecomes = dezalgoify(cb)
-
- map()
-
- function map () {
- if (index >= length) return hecomes(null, false)
-
- test(array[index], reduce)
- }
-
- function reduce (er, result) {
- if (er) return hecomes(er, false)
- if (result) return hecomes(null, result)
-
- index++
- map()
- }
-}
-
-// Array.prototype.slice on arguments arraylike is expensive
-function slice(args) {
- var l = args.length, a = [], i
- for (i = 0; i < l; i++) a[i] = args[i]
- return a
-}
diff --git a/deps/npm/node_modules/async-some/test/base-case.js b/deps/npm/node_modules/async-some/test/base-case.js
deleted file mode 100644
index 356890521d6bd7..00000000000000
--- a/deps/npm/node_modules/async-some/test/base-case.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var test = require("tap").test
-
-var some = require("../some.js")
-
-test("some() array base case", function (t) {
- some([], failer, function (error, match) {
- t.ifError(error, "ran successfully")
-
- t.notOk(match, "nothing to find, so nothing found")
-
- t.end()
- })
-
- function failer(value, cb) {
- cb(new Error("test should never have been called"))
- }
-})
-
-test("some() arguments arraylike base case", function (t) {
- go()
-
- function go() {
- some(arguments, failer, function (error, match) {
- t.ifError(error, "ran successfully")
-
- t.notOk(match, "nothing to find, so nothing found")
-
- t.end()
- })
-
- function failer(value, cb) {
- cb(new Error("test should never have been called"))
- }
- }
-})
diff --git a/deps/npm/node_modules/async-some/test/parameters.js b/deps/npm/node_modules/async-some/test/parameters.js
deleted file mode 100644
index 0706d1da6fc628..00000000000000
--- a/deps/npm/node_modules/async-some/test/parameters.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var test = require("tap").test
-
-var some = require("../some.js")
-
-var NOP = function () {}
-
-test("some() called with bogus parameters", function (t) {
- t.throws(function () {
- some()
- }, "throws when called with no parameters")
-
- t.throws(function () {
- some(null, NOP, NOP)
- }, "throws when called with no list")
-
- t.throws(function () {
- some([], null, NOP)
- }, "throws when called with no predicate")
-
- t.throws(function () {
- some([], NOP, null)
- }, "throws when called with no callback")
-
- t.throws(function () {
- some({}, NOP, NOP)
- }, "throws when called with wrong list type")
-
- t.throws(function () {
- some([], "ham", NOP)
- }, "throws when called with wrong test type")
-
- t.throws(function () {
- some([], NOP, "ham")
- }, "throws when called with wrong test type")
-
- t.end()
-})
diff --git a/deps/npm/node_modules/async-some/test/simple.js b/deps/npm/node_modules/async-some/test/simple.js
deleted file mode 100644
index 3d68e1e5076c0d..00000000000000
--- a/deps/npm/node_modules/async-some/test/simple.js
+++ /dev/null
@@ -1,60 +0,0 @@
-var test = require("tap").test
-
-var some = require("../some.js")
-
-test("some() doesn't find anything asynchronously", function (t) {
- some(["a", "b", "c", "d", "e", "f", "g"], predicate, function (error, match) {
- t.ifError(error, "ran successfully")
-
- t.notOk(match, "nothing to find, so nothing found")
-
- t.end()
- })
-
- function predicate(value, cb) {
- // dezalgo ensures it's safe to not do this, but just in case
- setTimeout(function () { cb(null, value > "j" && value) })
- }
-})
-
-test("some() doesn't find anything synchronously", function (t) {
- some(["a", "b", "c", "d", "e", "f", "g"], predicate, function (error, match) {
- t.ifError(error, "ran successfully")
-
- t.notOk(match, "nothing to find, so nothing found")
-
- t.end()
- })
-
- function predicate(value, cb) {
- cb(null, value > "j" && value)
- }
-})
-
-test("some() doesn't find anything asynchronously", function (t) {
- some(["a", "b", "c", "d", "e", "f", "g"], predicate, function (error, match) {
- t.ifError(error, "ran successfully")
-
- t.equals(match, "d", "found expected element")
-
- t.end()
- })
-
- function predicate(value, cb) {
- setTimeout(function () { cb(null, value > "c" && value) })
- }
-})
-
-test("some() doesn't find anything synchronously", function (t) {
- some(["a", "b", "c", "d", "e", "f", "g"], predicate, function (error, match) {
- t.ifError(error, "ran successfully")
-
- t.equals(match, "d", "found expected")
-
- t.end()
- })
-
- function predicate(value, cb) {
- cb(null, value > "c" && value)
- }
-})
diff --git a/deps/npm/node_modules/lodash._baseuniq/README.md b/deps/npm/node_modules/lodash._baseuniq/README.md
index 5e73270f91cf33..1d02b801f9bb3b 100644
--- a/deps/npm/node_modules/lodash._baseuniq/README.md
+++ b/deps/npm/node_modules/lodash._baseuniq/README.md
@@ -1,4 +1,4 @@
-# lodash._baseuniq v4.5.0
+# lodash._baseuniq v4.5.1
The internal [lodash](https://lodash.com/) function `baseUniq` exported as a [Node.js](https://nodejs.org/) module.
@@ -15,4 +15,4 @@ In Node.js:
var baseUniq = require('lodash._baseuniq');
```
-See the [package source](https://github.com/lodash/lodash/blob/4.5.0-npm-packages/lodash._baseuniq) for more details.
+See the [package source](https://github.com/lodash/lodash/blob/4.5.1-npm-packages/lodash._baseuniq) for more details.
diff --git a/deps/npm/node_modules/lodash._baseuniq/index.js b/deps/npm/node_modules/lodash._baseuniq/index.js
index 894eb34c758383..ffdc06f7b57aff 100644
--- a/deps/npm/node_modules/lodash._baseuniq/index.js
+++ b/deps/npm/node_modules/lodash._baseuniq/index.js
@@ -1,5 +1,5 @@
/**
- * lodash 4.5.0 (Custom Build)
+ * lodash 4.5.1 (Custom Build)
* Build: `lodash modularize exports="npm" -o ./`
* Copyright 2012-2016 The Dojo Foundation
* Based on Underscore.js 1.8.3
@@ -29,8 +29,7 @@ function arrayIncludes(array, value) {
}
/**
- * A specialized version of `_.includesWith` for arrays without support for
- * specifying an index to search from.
+ * This function is like `arrayIncludes` except that it accepts a comparator.
*
* @private
* @param {Array} array The array to search.
diff --git a/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._createset/README.md b/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._createset/README.md
index 117109172bf8a6..fe6cc9b5121339 100644
--- a/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._createset/README.md
+++ b/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._createset/README.md
@@ -1,4 +1,4 @@
-# lodash._createset v4.0.0
+# lodash._createset v4.0.1
The internal [lodash](https://lodash.com/) function `createSet` exported as a [Node.js](https://nodejs.org/) module.
@@ -15,4 +15,4 @@ In Node.js:
var createSet = require('lodash._createset');
```
-See the [package source](https://github.com/lodash/lodash/blob/4.0.0-npm-packages/lodash._createset) for more details.
+See the [package source](https://github.com/lodash/lodash/blob/4.0.1-npm-packages/lodash._createset) for more details.
diff --git a/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._createset/index.js b/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._createset/index.js
index 3fd2f360d6a011..8c85b236d13461 100644
--- a/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._createset/index.js
+++ b/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._createset/index.js
@@ -1,5 +1,5 @@
/**
- * lodash 4.0.0 (Custom Build)
+ * lodash 4.0.1 (Custom Build)
* Build: `lodash modularize exports="npm" -o ./`
* Copyright 2012-2016 The Dojo Foundation
* Based on Underscore.js 1.8.3
@@ -129,7 +129,7 @@ var createSet = !(Set && new Set([1, 2]).size === 2) ? noop : function(values) {
* @returns {*} Returns the function if it's native, else `undefined`.
*/
function getNative(object, key) {
- var value = object == null ? undefined : object[key];
+ var value = object[key];
return isNative(value) ? value : undefined;
}
@@ -151,8 +151,8 @@ function getNative(object, key) {
*/
function isFunction(value) {
// The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 8 which returns 'object' for typed array constructors, and
- // PhantomJS 1.9 which returns 'function' for `NodeList` instances.
+ // in Safari 8 which returns 'object' for typed array and weak map constructors,
+ // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.
var tag = isObject(value) ? objectToString.call(value) : '';
return tag == funcTag || tag == genTag;
}
diff --git a/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._createset/package.json b/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._createset/package.json
index 62cb810c669479..857e620a91b611 100644
--- a/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._createset/package.json
+++ b/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._createset/package.json
@@ -1,19 +1,19 @@
{
"_args": [
[
- "lodash._createset@^4.0.0",
- "/Users/rebecca/code/npm/node_modules/lodash._baseuniq"
+ "lodash._createset@~4.0.0",
+ "/Users/zkat/Documents/code/npm/node_modules/lodash._baseuniq"
]
],
- "_from": "lodash._createset@>=4.0.0 <5.0.0",
- "_id": "lodash._createset@4.0.0",
+ "_from": "lodash._createset@>=4.0.0 <4.1.0",
+ "_id": "lodash._createset@4.0.1",
"_inCache": true,
"_installable": true,
"_location": "/lodash._baseuniq/lodash._createset",
"_nodeVersion": "5.5.0",
"_npmOperationalInternal": {
- "host": "packages-6-west.internal.npmjs.com",
- "tmp": "tmp/lodash._createset-4.0.0.tgz_1456330780129_0.0739455302245915"
+ "host": "packages-13-west.internal.npmjs.com",
+ "tmp": "tmp/lodash._createset-4.0.1.tgz_1456896434807_0.3753381560090929"
},
"_npmUser": {
"email": "john.david.dalton@gmail.com",
@@ -23,20 +23,20 @@
"_phantomChildren": {},
"_requested": {
"name": "lodash._createset",
- "raw": "lodash._createset@^4.0.0",
- "rawSpec": "^4.0.0",
+ "raw": "lodash._createset@~4.0.0",
+ "rawSpec": "~4.0.0",
"scope": null,
- "spec": ">=4.0.0 <5.0.0",
+ "spec": ">=4.0.0 <4.1.0",
"type": "range"
},
"_requiredBy": [
"/lodash._baseuniq"
],
- "_resolved": "https://registry.npmjs.org/lodash._createset/-/lodash._createset-4.0.0.tgz",
- "_shasum": "92b46092919dd7270e9fab70294feadb3a835822",
+ "_resolved": "https://registry.npmjs.org/lodash._createset/-/lodash._createset-4.0.1.tgz",
+ "_shasum": "00e891e3dd386c4512fcb1f49060dfa4d02a9819",
"_shrinkwrap": null,
- "_spec": "lodash._createset@^4.0.0",
- "_where": "/Users/rebecca/code/npm/node_modules/lodash._baseuniq",
+ "_spec": "lodash._createset@~4.0.0",
+ "_where": "/Users/zkat/Documents/code/npm/node_modules/lodash._baseuniq",
"author": {
"email": "john.david.dalton@gmail.com",
"name": "John-David Dalton",
@@ -52,7 +52,7 @@
"url": "http://allyoucanleet.com/"
},
{
- "email": "blaine@iceddev.com",
+ "email": "blaine.bublitz@gmail.com",
"name": "Blaine Bublitz",
"url": "https://github.com/phated"
},
@@ -67,8 +67,8 @@
"devDependencies": {},
"directories": {},
"dist": {
- "shasum": "92b46092919dd7270e9fab70294feadb3a835822",
- "tarball": "http://registry.npmjs.org/lodash._createset/-/lodash._createset-4.0.0.tgz"
+ "shasum": "00e891e3dd386c4512fcb1f49060dfa4d02a9819",
+ "tarball": "https://registry.npmjs.org/lodash._createset/-/lodash._createset-4.0.1.tgz"
},
"homepage": "https://lodash.com/",
"icon": "https://lodash.com/icon.svg",
@@ -77,6 +77,14 @@
{
"email": "john.david.dalton@gmail.com",
"name": "jdalton"
+ },
+ {
+ "email": "mathias@qiwi.be",
+ "name": "mathias"
+ },
+ {
+ "email": "blaine.bublitz@gmail.com",
+ "name": "phated"
}
],
"name": "lodash._createset",
@@ -89,5 +97,5 @@
"scripts": {
"test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
},
- "version": "4.0.0"
+ "version": "4.0.1"
}
diff --git a/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._setcache/README.md b/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._setcache/README.md
index 37f7ddfcad86d5..696e7cd135725c 100644
--- a/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._setcache/README.md
+++ b/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._setcache/README.md
@@ -1,4 +1,4 @@
-# lodash._setcache v4.1.0
+# lodash._setcache v4.1.1
The internal [lodash](https://lodash.com/) function `SetCache` exported as a [Node.js](https://nodejs.org/) module.
@@ -15,4 +15,4 @@ In Node.js:
var SetCache = require('lodash._setcache');
```
-See the [package source](https://github.com/lodash/lodash/blob/4.1.0-npm-packages/lodash._setcache) for more details.
+See the [package source](https://github.com/lodash/lodash/blob/4.1.1-npm-packages/lodash._setcache) for more details.
diff --git a/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._setcache/index.js b/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._setcache/index.js
index 4260d6390e1800..dd96de49f1fa96 100644
--- a/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._setcache/index.js
+++ b/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._setcache/index.js
@@ -1,5 +1,5 @@
/**
- * lodash 4.1.0 (Custom Build)
+ * lodash 4.1.1 (Custom Build)
* Build: `lodash modularize exports="npm" -o ./`
* Copyright 2012-2016 The Dojo Foundation
* Based on Underscore.js 1.8.3
@@ -415,7 +415,7 @@ function assocSet(array, key, value) {
* @returns {*} Returns the function if it's native, else `undefined`.
*/
function getNative(object, key) {
- var value = object == null ? undefined : object[key];
+ var value = object[key];
return isNative(value) ? value : undefined;
}
@@ -484,8 +484,8 @@ function eq(value, other) {
*/
function isFunction(value) {
// The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 8 which returns 'object' for typed array constructors, and
- // PhantomJS 1.9 which returns 'function' for `NodeList` instances.
+ // in Safari 8 which returns 'object' for typed array and weak map constructors,
+ // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.
var tag = isObject(value) ? objectToString.call(value) : '';
return tag == funcTag || tag == genTag;
}
diff --git a/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._setcache/package.json b/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._setcache/package.json
index e8d85999d6d989..2fedb703b4b97b 100644
--- a/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._setcache/package.json
+++ b/deps/npm/node_modules/lodash._baseuniq/node_modules/lodash._setcache/package.json
@@ -1,42 +1,42 @@
{
"_args": [
[
- "lodash._setcache@^4.0.0",
- "/Users/rebecca/code/npm/node_modules/lodash._baseuniq"
+ "lodash._setcache@~4.1.0",
+ "/Users/zkat/Documents/code/npm/node_modules/lodash._baseuniq"
]
],
- "_from": "lodash._setcache@>=4.0.0 <5.0.0",
- "_id": "lodash._setcache@4.1.0",
+ "_from": "lodash._setcache@>=4.1.0 <4.2.0",
+ "_id": "lodash._setcache@4.1.1",
"_inCache": true,
"_installable": true,
"_location": "/lodash._baseuniq/lodash._setcache",
"_nodeVersion": "5.5.0",
"_npmOperationalInternal": {
- "host": "packages-5-east.internal.npmjs.com",
- "tmp": "tmp/lodash._setcache-4.1.0.tgz_1455699934524_0.5983484762255102"
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/lodash._setcache-4.1.1.tgz_1456896443505_0.39592266851104796"
},
"_npmUser": {
"email": "john.david.dalton@gmail.com",
"name": "jdalton"
},
- "_npmVersion": "2.14.18",
+ "_npmVersion": "2.14.17",
"_phantomChildren": {},
"_requested": {
"name": "lodash._setcache",
- "raw": "lodash._setcache@^4.0.0",
- "rawSpec": "^4.0.0",
+ "raw": "lodash._setcache@~4.1.0",
+ "rawSpec": "~4.1.0",
"scope": null,
- "spec": ">=4.0.0 <5.0.0",
+ "spec": ">=4.1.0 <4.2.0",
"type": "range"
},
"_requiredBy": [
"/lodash._baseuniq"
],
- "_resolved": "https://registry.npmjs.org/lodash._setcache/-/lodash._setcache-4.1.0.tgz",
- "_shasum": "ecc48719346faf667343b390b4572a3063f3827c",
+ "_resolved": "https://registry.npmjs.org/lodash._setcache/-/lodash._setcache-4.1.1.tgz",
+ "_shasum": "338f47e49f21ba8bb89e621e7815d781bd4dbd97",
"_shrinkwrap": null,
- "_spec": "lodash._setcache@^4.0.0",
- "_where": "/Users/rebecca/code/npm/node_modules/lodash._baseuniq",
+ "_spec": "lodash._setcache@~4.1.0",
+ "_where": "/Users/zkat/Documents/code/npm/node_modules/lodash._baseuniq",
"author": {
"email": "john.david.dalton@gmail.com",
"name": "John-David Dalton",
@@ -52,7 +52,7 @@
"url": "http://allyoucanleet.com/"
},
{
- "email": "blaine@iceddev.com",
+ "email": "blaine.bublitz@gmail.com",
"name": "Blaine Bublitz",
"url": "https://github.com/phated"
},
@@ -67,8 +67,8 @@
"devDependencies": {},
"directories": {},
"dist": {
- "shasum": "ecc48719346faf667343b390b4572a3063f3827c",
- "tarball": "http://registry.npmjs.org/lodash._setcache/-/lodash._setcache-4.1.0.tgz"
+ "shasum": "338f47e49f21ba8bb89e621e7815d781bd4dbd97",
+ "tarball": "https://registry.npmjs.org/lodash._setcache/-/lodash._setcache-4.1.1.tgz"
},
"homepage": "https://lodash.com/",
"icon": "https://lodash.com/icon.svg",
@@ -97,5 +97,5 @@
"scripts": {
"test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
},
- "version": "4.1.0"
+ "version": "4.1.1"
}
diff --git a/deps/npm/node_modules/lodash._baseuniq/package.json b/deps/npm/node_modules/lodash._baseuniq/package.json
index c39fc30276ac87..f4cffe5507b59f 100644
--- a/deps/npm/node_modules/lodash._baseuniq/package.json
+++ b/deps/npm/node_modules/lodash._baseuniq/package.json
@@ -1,44 +1,44 @@
{
"_args": [
[
- "lodash._baseuniq@latest",
- "/Users/rebecca/code/npm"
+ "lodash._baseuniq@4.5.1",
+ "/Users/zkat/Documents/code/npm"
]
],
- "_from": "lodash._baseuniq@latest",
- "_id": "lodash._baseuniq@4.5.0",
+ "_from": "lodash._baseuniq@4.5.1",
+ "_id": "lodash._baseuniq@4.5.1",
"_inCache": true,
"_installable": true,
"_location": "/lodash._baseuniq",
"_nodeVersion": "5.5.0",
"_npmOperationalInternal": {
- "host": "packages-5-east.internal.npmjs.com",
- "tmp": "tmp/lodash._baseuniq-4.5.0.tgz_1456330775872_0.6085790924262255"
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/lodash._baseuniq-4.5.1.tgz_1459310621859_0.6014031588565558"
},
"_npmUser": {
"email": "john.david.dalton@gmail.com",
"name": "jdalton"
},
- "_npmVersion": "2.14.17",
+ "_npmVersion": "2.15.1",
"_phantomChildren": {},
"_requested": {
"name": "lodash._baseuniq",
- "raw": "lodash._baseuniq@latest",
- "rawSpec": "latest",
+ "raw": "lodash._baseuniq@4.5.1",
+ "rawSpec": "4.5.1",
"scope": null,
- "spec": "latest",
- "type": "tag"
+ "spec": "4.5.1",
+ "type": "version"
},
"_requiredBy": [
"/",
"/lodash.union",
"/lodash.uniq"
],
- "_resolved": "https://registry.npmjs.org/lodash._baseuniq/-/lodash._baseuniq-4.5.0.tgz",
- "_shasum": "50e82673ae56f5fd07160584864648b7e3c528e8",
+ "_resolved": "https://registry.npmjs.org/lodash._baseuniq/-/lodash._baseuniq-4.5.1.tgz",
+ "_shasum": "1980430c2e64ee86df6dd35794e1a301b2ab74de",
"_shrinkwrap": null,
- "_spec": "lodash._baseuniq@latest",
- "_where": "/Users/rebecca/code/npm",
+ "_spec": "lodash._baseuniq@4.5.1",
+ "_where": "/Users/zkat/Documents/code/npm",
"author": {
"email": "john.david.dalton@gmail.com",
"name": "John-David Dalton",
@@ -54,7 +54,7 @@
"url": "http://allyoucanleet.com/"
},
{
- "email": "blaine@iceddev.com",
+ "email": "blaine.bublitz@gmail.com",
"name": "Blaine Bublitz",
"url": "https://github.com/phated"
},
@@ -65,15 +65,15 @@
}
],
"dependencies": {
- "lodash._createset": "^4.0.0",
- "lodash._setcache": "^4.0.0"
+ "lodash._createset": "~4.0.0",
+ "lodash._setcache": "~4.1.0"
},
"description": "The internal lodash function `baseUniq` exported as a module.",
"devDependencies": {},
"directories": {},
"dist": {
- "shasum": "50e82673ae56f5fd07160584864648b7e3c528e8",
- "tarball": "http://registry.npmjs.org/lodash._baseuniq/-/lodash._baseuniq-4.5.0.tgz"
+ "shasum": "1980430c2e64ee86df6dd35794e1a301b2ab74de",
+ "tarball": "https://registry.npmjs.org/lodash._baseuniq/-/lodash._baseuniq-4.5.1.tgz"
},
"homepage": "https://lodash.com/",
"icon": "https://lodash.com/icon.svg",
@@ -102,5 +102,5 @@
"scripts": {
"test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
},
- "version": "4.5.0"
+ "version": "4.5.1"
}
diff --git a/deps/npm/node_modules/lodash.clonedeep/README.md b/deps/npm/node_modules/lodash.clonedeep/README.md
index 4112f245f08689..1287ee1c00732a 100644
--- a/deps/npm/node_modules/lodash.clonedeep/README.md
+++ b/deps/npm/node_modules/lodash.clonedeep/README.md
@@ -1,4 +1,4 @@
-# lodash.clonedeep v4.3.1
+# lodash.clonedeep v4.3.2
The [lodash](https://lodash.com/) method `_.cloneDeep` exported as a [Node.js](https://nodejs.org/) module.
@@ -15,4 +15,4 @@ In Node.js:
var cloneDeep = require('lodash.clonedeep');
```
-See the [documentation](https://lodash.com/docs#cloneDeep) or [package source](https://github.com/lodash/lodash/blob/4.3.1-npm-packages/lodash.clonedeep) for more details.
+See the [documentation](https://lodash.com/docs#cloneDeep) or [package source](https://github.com/lodash/lodash/blob/4.3.2-npm-packages/lodash.clonedeep) for more details.
diff --git a/deps/npm/node_modules/lodash.clonedeep/index.js b/deps/npm/node_modules/lodash.clonedeep/index.js
index cc9d2b08094f98..88794c2c4a3bfe 100644
--- a/deps/npm/node_modules/lodash.clonedeep/index.js
+++ b/deps/npm/node_modules/lodash.clonedeep/index.js
@@ -1,5 +1,5 @@
/**
- * lodash 4.3.1 (Custom Build)
+ * lodash 4.3.2 (Custom Build)
* Build: `lodash modularize exports="npm" -o ./`
* Copyright 2012-2016 The Dojo Foundation
* Based on Underscore.js 1.8.3
diff --git a/deps/npm/node_modules/lodash.clonedeep/package.json b/deps/npm/node_modules/lodash.clonedeep/package.json
index 008d0943e10d5c..9da20a9494d7fc 100644
--- a/deps/npm/node_modules/lodash.clonedeep/package.json
+++ b/deps/npm/node_modules/lodash.clonedeep/package.json
@@ -1,42 +1,42 @@
{
"_args": [
[
- "lodash.clonedeep@~4.3.0",
- "/Users/rebecca/code/npm"
+ "lodash.clonedeep@4.3.2",
+ "/Users/zkat/Documents/code/npm"
]
],
- "_from": "lodash.clonedeep@>=4.3.0 <4.4.0",
- "_id": "lodash.clonedeep@4.3.1",
+ "_from": "lodash.clonedeep@4.3.2",
+ "_id": "lodash.clonedeep@4.3.2",
"_inCache": true,
"_installable": true,
"_location": "/lodash.clonedeep",
"_nodeVersion": "5.5.0",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
- "tmp": "tmp/lodash.clonedeep-4.3.1.tgz_1456902680114_0.3442365804221481"
+ "tmp": "tmp/lodash.clonedeep-4.3.2.tgz_1459310662712_0.4621682942379266"
},
"_npmUser": {
"email": "john.david.dalton@gmail.com",
"name": "jdalton"
},
- "_npmVersion": "2.14.17",
+ "_npmVersion": "2.15.1",
"_phantomChildren": {},
"_requested": {
"name": "lodash.clonedeep",
- "raw": "lodash.clonedeep@~4.3.0",
- "rawSpec": "~4.3.0",
+ "raw": "lodash.clonedeep@4.3.2",
+ "rawSpec": "4.3.2",
"scope": null,
- "spec": ">=4.3.0 <4.4.0",
- "type": "range"
+ "spec": "4.3.2",
+ "type": "version"
},
"_requiredBy": [
"/"
],
- "_resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.3.1.tgz",
- "_shasum": "94bd4e5267be2f72f567aa0b7b650c5044e24e71",
+ "_resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.3.2.tgz",
+ "_shasum": "d0112c02c76b5223833aebc6a4b6e334f0d057de",
"_shrinkwrap": null,
- "_spec": "lodash.clonedeep@~4.3.0",
- "_where": "/Users/rebecca/code/npm",
+ "_spec": "lodash.clonedeep@4.3.2",
+ "_where": "/Users/zkat/Documents/code/npm",
"author": {
"email": "john.david.dalton@gmail.com",
"name": "John-David Dalton",
@@ -63,14 +63,14 @@
}
],
"dependencies": {
- "lodash._baseclone": "^4.0.0"
+ "lodash._baseclone": "~4.5.0"
},
"description": "The lodash method `_.cloneDeep` exported as a module.",
"devDependencies": {},
"directories": {},
"dist": {
- "shasum": "94bd4e5267be2f72f567aa0b7b650c5044e24e71",
- "tarball": "http://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.3.1.tgz"
+ "shasum": "d0112c02c76b5223833aebc6a4b6e334f0d057de",
+ "tarball": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.3.2.tgz"
},
"homepage": "https://lodash.com/",
"icon": "https://lodash.com/icon.svg",
@@ -103,5 +103,5 @@
"scripts": {
"test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
},
- "version": "4.3.1"
+ "version": "4.3.2"
}
diff --git a/deps/npm/node_modules/lodash.union/README.md b/deps/npm/node_modules/lodash.union/README.md
index e23dd0771f85a3..51b5100b9a6352 100644
--- a/deps/npm/node_modules/lodash.union/README.md
+++ b/deps/npm/node_modules/lodash.union/README.md
@@ -1,4 +1,4 @@
-# lodash.union v4.2.0
+# lodash.union v4.2.1
The [lodash](https://lodash.com/) method `_.union` exported as a [Node.js](https://nodejs.org/) module.
@@ -15,4 +15,4 @@ In Node.js:
var union = require('lodash.union');
```
-See the [documentation](https://lodash.com/docs#union) or [package source](https://github.com/lodash/lodash/blob/4.2.0-npm-packages/lodash.union) for more details.
+See the [documentation](https://lodash.com/docs#union) or [package source](https://github.com/lodash/lodash/blob/4.2.1-npm-packages/lodash.union) for more details.
diff --git a/deps/npm/node_modules/lodash.union/index.js b/deps/npm/node_modules/lodash.union/index.js
index 36cc1e6bcde506..158c0d75c04d41 100644
--- a/deps/npm/node_modules/lodash.union/index.js
+++ b/deps/npm/node_modules/lodash.union/index.js
@@ -1,5 +1,5 @@
/**
- * lodash 4.2.0 (Custom Build)
+ * lodash 4.2.1 (Custom Build)
* Build: `lodash modularize exports="npm" -o ./`
* Copyright 2012-2016 The Dojo Foundation
* Based on Underscore.js 1.8.3
diff --git a/deps/npm/node_modules/lodash.union/node_modules/lodash._baseflatten/README.md b/deps/npm/node_modules/lodash.union/node_modules/lodash._baseflatten/README.md
index c9d54a894abad8..4250ad4af77c0e 100644
--- a/deps/npm/node_modules/lodash.union/node_modules/lodash._baseflatten/README.md
+++ b/deps/npm/node_modules/lodash.union/node_modules/lodash._baseflatten/README.md
@@ -1,4 +1,4 @@
-# lodash._baseflatten v4.1.0
+# lodash._baseflatten v4.1.1
The internal [lodash](https://lodash.com/) function `baseFlatten` exported as a [Node.js](https://nodejs.org/) module.
@@ -15,4 +15,4 @@ In Node.js:
var baseFlatten = require('lodash._baseflatten');
```
-See the [package source](https://github.com/lodash/lodash/blob/4.1.0-npm-packages/lodash._baseflatten) for more details.
+See the [package source](https://github.com/lodash/lodash/blob/4.1.1-npm-packages/lodash._baseflatten) for more details.
diff --git a/deps/npm/node_modules/lodash.union/node_modules/lodash._baseflatten/index.js b/deps/npm/node_modules/lodash.union/node_modules/lodash._baseflatten/index.js
index d684b47929272c..cf05fe5f1a59a6 100644
--- a/deps/npm/node_modules/lodash.union/node_modules/lodash._baseflatten/index.js
+++ b/deps/npm/node_modules/lodash.union/node_modules/lodash._baseflatten/index.js
@@ -1,5 +1,5 @@
/**
- * lodash 4.1.0 (Custom Build)
+ * lodash 4.1.1 (Custom Build)
* Build: `lodash modularize exports="npm" -o ./`
* Copyright 2012-2016 The Dojo Foundation
* Based on Underscore.js 1.8.3
@@ -179,8 +179,7 @@ var isArray = Array.isArray;
* // => false
*/
function isArrayLike(value) {
- return value != null &&
- !(typeof value == 'function' && isFunction(value)) && isLength(getLength(value));
+ return value != null && isLength(getLength(value)) && !isFunction(value);
}
/**
@@ -228,8 +227,8 @@ function isArrayLikeObject(value) {
*/
function isFunction(value) {
// The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 8 which returns 'object' for typed array constructors, and
- // PhantomJS 1.9 which returns 'function' for `NodeList` instances.
+ // in Safari 8 which returns 'object' for typed array and weak map constructors,
+ // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.
var tag = isObject(value) ? objectToString.call(value) : '';
return tag == funcTag || tag == genTag;
}
diff --git a/deps/npm/node_modules/lodash.union/node_modules/lodash._baseflatten/package.json b/deps/npm/node_modules/lodash.union/node_modules/lodash._baseflatten/package.json
index c21e5e4ebb163a..8b2e4529bf0a75 100644
--- a/deps/npm/node_modules/lodash.union/node_modules/lodash._baseflatten/package.json
+++ b/deps/npm/node_modules/lodash.union/node_modules/lodash._baseflatten/package.json
@@ -1,42 +1,42 @@
{
"_args": [
[
- "lodash._baseflatten@^4.0.0",
- "/Users/rebecca/code/npm/node_modules/lodash.union"
+ "lodash._baseflatten@~4.1.0",
+ "/Users/zkat/Documents/code/npm/node_modules/lodash.union"
]
],
- "_from": "lodash._baseflatten@>=4.0.0 <5.0.0",
- "_id": "lodash._baseflatten@4.1.0",
+ "_from": "lodash._baseflatten@>=4.1.0 <4.2.0",
+ "_id": "lodash._baseflatten@4.1.1",
"_inCache": true,
"_installable": true,
"_location": "/lodash.union/lodash._baseflatten",
"_nodeVersion": "5.5.0",
"_npmOperationalInternal": {
- "host": "packages-6-west.internal.npmjs.com",
- "tmp": "tmp/lodash._baseflatten-4.1.0.tgz_1455615012034_0.06309569417499006"
+ "host": "packages-13-west.internal.npmjs.com",
+ "tmp": "tmp/lodash._baseflatten-4.1.1.tgz_1456896418067_0.31963246082887053"
},
"_npmUser": {
"email": "john.david.dalton@gmail.com",
"name": "jdalton"
},
- "_npmVersion": "2.14.18",
+ "_npmVersion": "2.14.17",
"_phantomChildren": {},
"_requested": {
"name": "lodash._baseflatten",
- "raw": "lodash._baseflatten@^4.0.0",
- "rawSpec": "^4.0.0",
+ "raw": "lodash._baseflatten@~4.1.0",
+ "rawSpec": "~4.1.0",
"scope": null,
- "spec": ">=4.0.0 <5.0.0",
+ "spec": ">=4.1.0 <4.2.0",
"type": "range"
},
"_requiredBy": [
"/lodash.union"
],
- "_resolved": "https://registry.npmjs.org/lodash._baseflatten/-/lodash._baseflatten-4.1.0.tgz",
- "_shasum": "8548ac47576a8dd5f2702cb1ebeae4a980ac3bae",
+ "_resolved": "https://registry.npmjs.org/lodash._baseflatten/-/lodash._baseflatten-4.1.1.tgz",
+ "_shasum": "5c87403b88f3687a88d26424faadf3aa054aab0d",
"_shrinkwrap": null,
- "_spec": "lodash._baseflatten@^4.0.0",
- "_where": "/Users/rebecca/code/npm/node_modules/lodash.union",
+ "_spec": "lodash._baseflatten@~4.1.0",
+ "_where": "/Users/zkat/Documents/code/npm/node_modules/lodash.union",
"author": {
"email": "john.david.dalton@gmail.com",
"name": "John-David Dalton",
@@ -52,7 +52,7 @@
"url": "http://allyoucanleet.com/"
},
{
- "email": "blaine@iceddev.com",
+ "email": "blaine.bublitz@gmail.com",
"name": "Blaine Bublitz",
"url": "https://github.com/phated"
},
@@ -67,8 +67,8 @@
"devDependencies": {},
"directories": {},
"dist": {
- "shasum": "8548ac47576a8dd5f2702cb1ebeae4a980ac3bae",
- "tarball": "http://registry.npmjs.org/lodash._baseflatten/-/lodash._baseflatten-4.1.0.tgz"
+ "shasum": "5c87403b88f3687a88d26424faadf3aa054aab0d",
+ "tarball": "http://registry.npmjs.org/lodash._baseflatten/-/lodash._baseflatten-4.1.1.tgz"
},
"homepage": "https://lodash.com/",
"icon": "https://lodash.com/icon.svg",
@@ -97,5 +97,5 @@
"scripts": {
"test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
},
- "version": "4.1.0"
+ "version": "4.1.1"
}
diff --git a/deps/npm/node_modules/lodash.union/package.json b/deps/npm/node_modules/lodash.union/package.json
index 2a05b98497740c..d00522437f94d2 100644
--- a/deps/npm/node_modules/lodash.union/package.json
+++ b/deps/npm/node_modules/lodash.union/package.json
@@ -1,42 +1,42 @@
{
"_args": [
[
- "lodash.union@latest",
- "/Users/rebecca/code/npm"
+ "lodash.union@4.2.1",
+ "/Users/zkat/Documents/code/npm"
]
],
- "_from": "lodash.union@latest",
- "_id": "lodash.union@4.2.0",
+ "_from": "lodash.union@4.2.1",
+ "_id": "lodash.union@4.2.1",
"_inCache": true,
"_installable": true,
"_location": "/lodash.union",
"_nodeVersion": "5.5.0",
"_npmOperationalInternal": {
- "host": "packages-9-west.internal.npmjs.com",
- "tmp": "tmp/lodash.union-4.2.0.tgz_1455615727631_0.14597112801857293"
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/lodash.union-4.2.1.tgz_1459310986493_0.07747984793968499"
},
"_npmUser": {
"email": "john.david.dalton@gmail.com",
"name": "jdalton"
},
- "_npmVersion": "2.14.18",
+ "_npmVersion": "2.15.1",
"_phantomChildren": {},
"_requested": {
"name": "lodash.union",
- "raw": "lodash.union@latest",
- "rawSpec": "latest",
+ "raw": "lodash.union@4.2.1",
+ "rawSpec": "4.2.1",
"scope": null,
- "spec": "latest",
- "type": "tag"
+ "spec": "4.2.1",
+ "type": "version"
},
"_requiredBy": [
"/"
],
- "_resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.2.0.tgz",
- "_shasum": "490c86803d2ed7ca01e26fe53e7d6519e2506505",
+ "_resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.2.1.tgz",
+ "_shasum": "6871017b9b1ff71952c1e2bb2e25b1046a7e2842",
"_shrinkwrap": null,
- "_spec": "lodash.union@latest",
- "_where": "/Users/rebecca/code/npm",
+ "_spec": "lodash.union@4.2.1",
+ "_where": "/Users/zkat/Documents/code/npm",
"author": {
"email": "john.david.dalton@gmail.com",
"name": "John-David Dalton",
@@ -52,7 +52,7 @@
"url": "http://allyoucanleet.com/"
},
{
- "email": "blaine@iceddev.com",
+ "email": "blaine.bublitz@gmail.com",
"name": "Blaine Bublitz",
"url": "https://github.com/phated"
},
@@ -63,16 +63,16 @@
}
],
"dependencies": {
- "lodash._baseflatten": "^4.0.0",
- "lodash._baseuniq": "^4.0.0",
+ "lodash._baseflatten": "~4.1.0",
+ "lodash._baseuniq": "~4.5.0",
"lodash.rest": "^4.0.0"
},
"description": "The lodash method `_.union` exported as a module.",
"devDependencies": {},
"directories": {},
"dist": {
- "shasum": "490c86803d2ed7ca01e26fe53e7d6519e2506505",
- "tarball": "http://registry.npmjs.org/lodash.union/-/lodash.union-4.2.0.tgz"
+ "shasum": "6871017b9b1ff71952c1e2bb2e25b1046a7e2842",
+ "tarball": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.2.1.tgz"
},
"homepage": "https://lodash.com/",
"icon": "https://lodash.com/icon.svg",
@@ -105,5 +105,5 @@
"scripts": {
"test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
},
- "version": "4.2.0"
+ "version": "4.2.1"
}
diff --git a/deps/npm/node_modules/lodash.uniq/README.md b/deps/npm/node_modules/lodash.uniq/README.md
index 3204e5847cde13..31e7c591ea3cb9 100644
--- a/deps/npm/node_modules/lodash.uniq/README.md
+++ b/deps/npm/node_modules/lodash.uniq/README.md
@@ -1,4 +1,4 @@
-# lodash.uniq v4.2.0
+# lodash.uniq v4.2.1
The [lodash](https://lodash.com/) method `_.uniq` exported as a [Node.js](https://nodejs.org/) module.
@@ -15,4 +15,4 @@ In Node.js:
var uniq = require('lodash.uniq');
```
-See the [documentation](https://lodash.com/docs#uniq) or [package source](https://github.com/lodash/lodash/blob/4.2.0-npm-packages/lodash.uniq) for more details.
+See the [documentation](https://lodash.com/docs#uniq) or [package source](https://github.com/lodash/lodash/blob/4.2.1-npm-packages/lodash.uniq) for more details.
diff --git a/deps/npm/node_modules/lodash.uniq/index.js b/deps/npm/node_modules/lodash.uniq/index.js
index 6c7bde11096293..567c6ece6a4d25 100644
--- a/deps/npm/node_modules/lodash.uniq/index.js
+++ b/deps/npm/node_modules/lodash.uniq/index.js
@@ -1,5 +1,5 @@
/**
- * lodash 4.2.0 (Custom Build)
+ * lodash 4.2.1 (Custom Build)
* Build: `lodash modularize exports="npm" -o ./`
* Copyright 2012-2016 The Dojo Foundation
* Based on Underscore.js 1.8.3
diff --git a/deps/npm/node_modules/lodash.uniq/package.json b/deps/npm/node_modules/lodash.uniq/package.json
index d14db6ba90bc3d..2823bb8d2c9e17 100644
--- a/deps/npm/node_modules/lodash.uniq/package.json
+++ b/deps/npm/node_modules/lodash.uniq/package.json
@@ -1,42 +1,42 @@
{
"_args": [
[
- "lodash.uniq@~4.2.0",
- "/Users/rebecca/code/npm"
+ "lodash.uniq@4.2.1",
+ "/Users/zkat/Documents/code/npm"
]
],
- "_from": "lodash.uniq@>=4.2.0 <4.3.0",
- "_id": "lodash.uniq@4.2.0",
+ "_from": "lodash.uniq@4.2.1",
+ "_id": "lodash.uniq@4.2.1",
"_inCache": true,
"_installable": true,
"_location": "/lodash.uniq",
"_nodeVersion": "5.5.0",
"_npmOperationalInternal": {
- "host": "packages-5-east.internal.npmjs.com",
- "tmp": "tmp/lodash.uniq-4.2.0.tgz_1455615740326_0.14619768620468676"
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/lodash.uniq-4.2.1.tgz_1459310991318_0.029993396950885653"
},
"_npmUser": {
"email": "john.david.dalton@gmail.com",
"name": "jdalton"
},
- "_npmVersion": "2.14.18",
+ "_npmVersion": "2.15.1",
"_phantomChildren": {},
"_requested": {
"name": "lodash.uniq",
- "raw": "lodash.uniq@~4.2.0",
- "rawSpec": "~4.2.0",
+ "raw": "lodash.uniq@4.2.1",
+ "rawSpec": "4.2.1",
"scope": null,
- "spec": ">=4.2.0 <4.3.0",
- "type": "range"
+ "spec": "4.2.1",
+ "type": "version"
},
"_requiredBy": [
"/"
],
- "_resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.2.0.tgz",
- "_shasum": "e0cb2ac57e11b6a0d0c87674f6ff4a1986f78739",
+ "_resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.2.1.tgz",
+ "_shasum": "4210d4b90647ee24211b469aed0ef84902069743",
"_shrinkwrap": null,
- "_spec": "lodash.uniq@~4.2.0",
- "_where": "/Users/rebecca/code/npm",
+ "_spec": "lodash.uniq@4.2.1",
+ "_where": "/Users/zkat/Documents/code/npm",
"author": {
"email": "john.david.dalton@gmail.com",
"name": "John-David Dalton",
@@ -52,7 +52,7 @@
"url": "http://allyoucanleet.com/"
},
{
- "email": "blaine@iceddev.com",
+ "email": "blaine.bublitz@gmail.com",
"name": "Blaine Bublitz",
"url": "https://github.com/phated"
},
@@ -63,14 +63,14 @@
}
],
"dependencies": {
- "lodash._baseuniq": "^4.0.0"
+ "lodash._baseuniq": "~4.5.0"
},
"description": "The lodash method `_.uniq` exported as a module.",
"devDependencies": {},
"directories": {},
"dist": {
- "shasum": "e0cb2ac57e11b6a0d0c87674f6ff4a1986f78739",
- "tarball": "http://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.2.0.tgz"
+ "shasum": "4210d4b90647ee24211b469aed0ef84902069743",
+ "tarball": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.2.1.tgz"
},
"homepage": "https://lodash.com/",
"icon": "https://lodash.com/icon.svg",
@@ -103,5 +103,5 @@
"scripts": {
"test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
},
- "version": "4.2.0"
+ "version": "4.2.1"
}
diff --git a/deps/npm/node_modules/lodash.without/README.md b/deps/npm/node_modules/lodash.without/README.md
index 3c2e6b98c99a66..3299e4c531993b 100644
--- a/deps/npm/node_modules/lodash.without/README.md
+++ b/deps/npm/node_modules/lodash.without/README.md
@@ -1,4 +1,4 @@
-# lodash.without v4.1.1
+# lodash.without v4.1.2
The [lodash](https://lodash.com/) method `_.without` exported as a [Node.js](https://nodejs.org/) module.
@@ -15,4 +15,4 @@ In Node.js:
var without = require('lodash.without');
```
-See the [documentation](https://lodash.com/docs#without) or [package source](https://github.com/lodash/lodash/blob/4.1.1-npm-packages/lodash.without) for more details.
+See the [documentation](https://lodash.com/docs#without) or [package source](https://github.com/lodash/lodash/blob/4.1.2-npm-packages/lodash.without) for more details.
diff --git a/deps/npm/node_modules/lodash.without/index.js b/deps/npm/node_modules/lodash.without/index.js
index 049466d2aaea9a..f9ed54a01cebf9 100644
--- a/deps/npm/node_modules/lodash.without/index.js
+++ b/deps/npm/node_modules/lodash.without/index.js
@@ -1,5 +1,5 @@
/**
- * lodash 4.1.1 (Custom Build)
+ * lodash 4.1.2 (Custom Build)
* Build: `lodash modularize exports="npm" -o ./`
* Copyright 2012-2016 The Dojo Foundation
* Based on Underscore.js 1.8.3
diff --git a/deps/npm/node_modules/lodash.without/node_modules/lodash._basedifference/README.md b/deps/npm/node_modules/lodash.without/node_modules/lodash._basedifference/README.md
index 0f5e0fad20fd0a..0ff2f166076c3b 100644
--- a/deps/npm/node_modules/lodash.without/node_modules/lodash._basedifference/README.md
+++ b/deps/npm/node_modules/lodash.without/node_modules/lodash._basedifference/README.md
@@ -1,4 +1,4 @@
-# lodash._basedifference v4.4.0
+# lodash._basedifference v4.4.1
The internal [lodash](https://lodash.com/) function `baseDifference` exported as a [Node.js](https://nodejs.org/) module.
@@ -15,4 +15,4 @@ In Node.js:
var baseDifference = require('lodash._basedifference');
```
-See the [package source](https://github.com/lodash/lodash/blob/4.4.0-npm-packages/lodash._basedifference) for more details.
+See the [package source](https://github.com/lodash/lodash/blob/4.4.1-npm-packages/lodash._basedifference) for more details.
diff --git a/deps/npm/node_modules/lodash.without/node_modules/lodash._basedifference/index.js b/deps/npm/node_modules/lodash.without/node_modules/lodash._basedifference/index.js
index 783488521bddd2..5fa779dfdd4391 100644
--- a/deps/npm/node_modules/lodash.without/node_modules/lodash._basedifference/index.js
+++ b/deps/npm/node_modules/lodash.without/node_modules/lodash._basedifference/index.js
@@ -1,5 +1,5 @@
/**
- * lodash 4.4.0 (Custom Build)
+ * lodash 4.4.1 (Custom Build)
* Build: `lodash modularize exports="npm" -o ./`
* Copyright 2012-2016 The Dojo Foundation
* Based on Underscore.js 1.8.3
@@ -28,8 +28,7 @@ function arrayIncludes(array, value) {
}
/**
- * A specialized version of `_.includesWith` for arrays without support for
- * specifying an index to search from.
+ * This function is like `arrayIncludes` except that it accepts a comparator.
*
* @private
* @param {Array} array The array to search.
diff --git a/deps/npm/node_modules/lodash.without/node_modules/lodash._basedifference/package.json b/deps/npm/node_modules/lodash.without/node_modules/lodash._basedifference/package.json
index 5aebde78cd1eda..5442d0abf9a3c4 100644
--- a/deps/npm/node_modules/lodash.without/node_modules/lodash._basedifference/package.json
+++ b/deps/npm/node_modules/lodash.without/node_modules/lodash._basedifference/package.json
@@ -1,42 +1,42 @@
{
"_args": [
[
- "lodash._basedifference@^4.0.0",
- "/Users/rebecca/code/npm/node_modules/lodash.without"
+ "lodash._basedifference@~4.4.0",
+ "/Users/zkat/Documents/code/npm/node_modules/lodash.without"
]
],
- "_from": "lodash._basedifference@>=4.0.0 <5.0.0",
- "_id": "lodash._basedifference@4.4.0",
+ "_from": "lodash._basedifference@>=4.4.0 <4.5.0",
+ "_id": "lodash._basedifference@4.4.1",
"_inCache": true,
"_installable": true,
"_location": "/lodash.without/lodash._basedifference",
"_nodeVersion": "5.5.0",
"_npmOperationalInternal": {
- "host": "packages-9-west.internal.npmjs.com",
- "tmp": "tmp/lodash._basedifference-4.4.0.tgz_1455614999271_0.6685796829406172"
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/lodash._basedifference-4.4.1.tgz_1459310599651_0.6456912821158767"
},
"_npmUser": {
"email": "john.david.dalton@gmail.com",
"name": "jdalton"
},
- "_npmVersion": "2.14.18",
+ "_npmVersion": "2.15.1",
"_phantomChildren": {},
"_requested": {
"name": "lodash._basedifference",
- "raw": "lodash._basedifference@^4.0.0",
- "rawSpec": "^4.0.0",
+ "raw": "lodash._basedifference@~4.4.0",
+ "rawSpec": "~4.4.0",
"scope": null,
- "spec": ">=4.0.0 <5.0.0",
+ "spec": ">=4.4.0 <4.5.0",
"type": "range"
},
"_requiredBy": [
"/lodash.without"
],
- "_resolved": "https://registry.npmjs.org/lodash._basedifference/-/lodash._basedifference-4.4.0.tgz",
- "_shasum": "b0c364ecd319c7669092dc1f84c466f798642be3",
+ "_resolved": "https://registry.npmjs.org/lodash._basedifference/-/lodash._basedifference-4.4.1.tgz",
+ "_shasum": "537bde6fd0f3eeec28e37288dd51459765181b4d",
"_shrinkwrap": null,
- "_spec": "lodash._basedifference@^4.0.0",
- "_where": "/Users/rebecca/code/npm/node_modules/lodash.without",
+ "_spec": "lodash._basedifference@~4.4.0",
+ "_where": "/Users/zkat/Documents/code/npm/node_modules/lodash.without",
"author": {
"email": "john.david.dalton@gmail.com",
"name": "John-David Dalton",
@@ -52,7 +52,7 @@
"url": "http://allyoucanleet.com/"
},
{
- "email": "blaine@iceddev.com",
+ "email": "blaine.bublitz@gmail.com",
"name": "Blaine Bublitz",
"url": "https://github.com/phated"
},
@@ -63,14 +63,14 @@
}
],
"dependencies": {
- "lodash._setcache": "^4.0.0"
+ "lodash._setcache": "~4.1.0"
},
"description": "The internal lodash function `baseDifference` exported as a module.",
"devDependencies": {},
"directories": {},
"dist": {
- "shasum": "b0c364ecd319c7669092dc1f84c466f798642be3",
- "tarball": "http://registry.npmjs.org/lodash._basedifference/-/lodash._basedifference-4.4.0.tgz"
+ "shasum": "537bde6fd0f3eeec28e37288dd51459765181b4d",
+ "tarball": "https://registry.npmjs.org/lodash._basedifference/-/lodash._basedifference-4.4.1.tgz"
},
"homepage": "https://lodash.com/",
"icon": "https://lodash.com/icon.svg",
@@ -99,5 +99,5 @@
"scripts": {
"test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
},
- "version": "4.4.0"
+ "version": "4.4.1"
}
diff --git a/deps/npm/node_modules/lodash.without/package.json b/deps/npm/node_modules/lodash.without/package.json
index 5077fe66a63789..ac1b49c2745fba 100644
--- a/deps/npm/node_modules/lodash.without/package.json
+++ b/deps/npm/node_modules/lodash.without/package.json
@@ -1,42 +1,42 @@
{
"_args": [
[
- "lodash.without@~4.1.0",
- "/Users/rebecca/code/npm"
+ "lodash.without@4.1.2",
+ "/Users/zkat/Documents/code/npm"
]
],
- "_from": "lodash.without@>=4.1.0 <4.2.0",
- "_id": "lodash.without@4.1.1",
+ "_from": "lodash.without@4.1.2",
+ "_id": "lodash.without@4.1.2",
"_inCache": true,
"_installable": true,
"_location": "/lodash.without",
"_nodeVersion": "5.5.0",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
- "tmp": "tmp/lodash.without-4.1.1.tgz_1456896882082_0.03977343044243753"
+ "tmp": "tmp/lodash.without-4.1.2.tgz_1459311008459_0.16177126462571323"
},
"_npmUser": {
"email": "john.david.dalton@gmail.com",
"name": "jdalton"
},
- "_npmVersion": "2.14.17",
+ "_npmVersion": "2.15.1",
"_phantomChildren": {},
"_requested": {
"name": "lodash.without",
- "raw": "lodash.without@~4.1.0",
- "rawSpec": "~4.1.0",
+ "raw": "lodash.without@4.1.2",
+ "rawSpec": "4.1.2",
"scope": null,
- "spec": ">=4.1.0 <4.2.0",
- "type": "range"
+ "spec": "4.1.2",
+ "type": "version"
},
"_requiredBy": [
"/"
],
- "_resolved": "https://registry.npmjs.org/lodash.without/-/lodash.without-4.1.1.tgz",
- "_shasum": "00ba28bb140083195c73a156da9668afe8ce1dbe",
+ "_resolved": "https://registry.npmjs.org/lodash.without/-/lodash.without-4.1.2.tgz",
+ "_shasum": "c68b1981e1b001bd87eef7487dba0af267846229",
"_shrinkwrap": null,
- "_spec": "lodash.without@~4.1.0",
- "_where": "/Users/rebecca/code/npm",
+ "_spec": "lodash.without@4.1.2",
+ "_where": "/Users/zkat/Documents/code/npm",
"author": {
"email": "john.david.dalton@gmail.com",
"name": "John-David Dalton",
@@ -63,15 +63,15 @@
}
],
"dependencies": {
- "lodash._basedifference": "^4.0.0",
+ "lodash._basedifference": "~4.4.0",
"lodash.rest": "^4.0.0"
},
"description": "The lodash method `_.without` exported as a module.",
"devDependencies": {},
"directories": {},
"dist": {
- "shasum": "00ba28bb140083195c73a156da9668afe8ce1dbe",
- "tarball": "http://registry.npmjs.org/lodash.without/-/lodash.without-4.1.1.tgz"
+ "shasum": "c68b1981e1b001bd87eef7487dba0af267846229",
+ "tarball": "https://registry.npmjs.org/lodash.without/-/lodash.without-4.1.2.tgz"
},
"homepage": "https://lodash.com/",
"icon": "https://lodash.com/icon.svg",
@@ -104,5 +104,5 @@
"scripts": {
"test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
},
- "version": "4.1.1"
+ "version": "4.1.2"
}
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
deleted file mode 100644
index 4561db502b18e5..00000000000000
--- a/deps/npm/node_modules/npm-registry-client/test/fixtures/@npm/npm-registry-client/cache.json
+++ /dev/null
@@ -1 +0,0 @@
-{"_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
deleted file mode 100644
index 01da3002763731..00000000000000
--- a/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/cache.json
+++ /dev/null
@@ -1 +0,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"},"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
deleted file mode 100644
index 19da9baa7fb191..00000000000000
Binary files a/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/package.tgz and /dev/null 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
deleted file mode 100644
index d899f11922a405..00000000000000
--- a/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/cache.json
+++ /dev/null
@@ -1 +0,0 @@
-{"_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/request/.eslintrc b/deps/npm/node_modules/request/.eslintrc
deleted file mode 100644
index 6ebc53601d7ba5..00000000000000
--- a/deps/npm/node_modules/request/.eslintrc
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "env": {
- "node": true
- },
- "rules": {
- // 2-space indentation
- "indent": [2, 2, {"SwitchCase": 1}],
- // 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/package.json b/deps/npm/package.json
index e7d5f3d78bf6da..ec38da222ff146 100644
--- a/deps/npm/package.json
+++ b/deps/npm/package.json
@@ -1,5 +1,5 @@
{
- "version": "3.8.3",
+ "version": "3.8.6",
"name": "npm",
"description": "a package manager for JavaScript",
"keywords": [
@@ -19,7 +19,7 @@
"url": "https://github.com/npm/npm"
},
"bugs": {
- "url": "http://github.com/npm/npm/issues"
+ "url": "https://github.com/npm/npm/issues"
},
"directories": {
"bin": "./bin",
@@ -35,7 +35,6 @@
"ansistyles": "~0.1.3",
"aproba": "~1.0.1",
"archy": "~1.0.0",
- "async-some": "~1.0.2",
"chownr": "~1.0.1",
"cmd-shim": "~2.0.2",
"columnify": "~1.5.4",
@@ -56,13 +55,13 @@
"ini": "~1.3.4",
"init-package-json": "~1.9.3",
"lockfile": "~1.0.1",
- "lodash._baseuniq": "~4.5.0",
- "lodash.clonedeep": "~4.3.1",
+ "lodash._baseuniq": "~4.5.1",
+ "lodash.clonedeep": "~4.3.2",
"lodash.isarray": "~4.0.0",
"lodash.keys": "~4.0.5",
- "lodash.union": "~4.2.0",
- "lodash.uniq": "~4.2.0",
- "lodash.without": "~4.1.1",
+ "lodash.union": "~4.2.1",
+ "lodash.uniq": "~4.2.1",
+ "lodash.without": "~4.1.2",
"mkdirp": "~0.5.1",
"node-gyp": "~3.3.1",
"nopt": "~3.0.6",
@@ -111,7 +110,6 @@
"ansistyles",
"aproba",
"archy",
- "async-some",
"chownr",
"cmd-shim",
"columnify",
@@ -204,12 +202,12 @@
},
"scripts": {
"dumpconf": "env | grep npm | sort | uniq",
- "prepublish": "node bin/npm-cli.js prune --prefix=. --no-global && rimraf test/*/*/node_modules && make -j4 doc",
+ "prepublish": "node bin/npm-cli.js prune --prefix=. --no-global && rimraf test/*/*/node_modules && make doc-clean && make -j4 doc",
"preversion": "bash scripts/update-authors.sh && git add AUTHORS && git commit -m \"update AUTHORS\" || true",
"tap": "tap --timeout 240",
"test": "standard && npm run test-tap",
"test-tap": "npm run tap -- \"test/tap/*.js\"",
- "test-node": "\"$NODE\" ./test/run.js && \"$NODE\" \"node_modules/.bin/tap\" --timeout 240 \"test/tap/*.js\""
+ "test-node": "\"$NODE\" \"node_modules/.bin/tap\" --timeout 240 \"test/tap/*.js\""
},
"license": "Artistic-2.0"
}
diff --git a/deps/npm/test/fixtures/config/userconfig-with-gc b/deps/npm/test/fixtures/config/userconfig-with-gc
index 7268fcb3c611f9..62ad80be113e5e 100644
--- a/deps/npm/test/fixtures/config/userconfig-with-gc
+++ b/deps/npm/test/fixtures/config/userconfig-with-gc
@@ -1,4 +1,4 @@
-globalconfig=/Users/ogd/Documents/projects/npm/npm/test/fixtures/config/globalconfig
+globalconfig=/Users/zkat/Documents/code/npm/test/fixtures/config/globalconfig
email=i@izs.me
env-thing=asdf
init.author.name=Isaac Z. Schlueter
diff --git a/deps/npm/test/tap/deprecate.js b/deps/npm/test/tap/deprecate.js
index 1d9a867cd7488f..987acb80afd409 100644
--- a/deps/npm/test/tap/deprecate.js
+++ b/deps/npm/test/tap/deprecate.js
@@ -126,6 +126,30 @@ test('npm deprecate bad semver range', function (t) {
})
})
+test('npm deprecate a package with no semver range', function (t) {
+ var deprecated = JSON.parse(JSON.stringify(cache))
+ deprecated.versions = {
+ '0.0.0': { deprecated: 'make it dead' },
+ '0.0.1': { deprecated: 'make it dead' },
+ '0.0.2': { deprecated: 'make it dead' }
+ }
+ server.get('/cond?write=true').reply(200, cache)
+ server.put('/cond', deprecated).reply(201, { deprecated: true })
+ common.npm([
+ 'deprecate',
+ 'cond',
+ 'make it dead',
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ], {},
+ function (er, code, stdout, stderr) {
+ t.ifError(er, 'npm deprecate')
+ t.equal(stderr, '', 'no error output')
+ t.equal(code, 0, 'exited OK')
+ t.end()
+ })
+})
+
test('cleanup', function (t) {
server.close()
t.ok(true)
diff --git a/deps/npm/test/tap/link.js b/deps/npm/test/tap/link.js
index 869364c29b5e7e..e2f545520024fc 100644
--- a/deps/npm/test/tap/link.js
+++ b/deps/npm/test/tap/link.js
@@ -3,6 +3,7 @@ var osenv = require('osenv')
var path = require('path')
var rimraf = require('rimraf')
var test = require('tap').test
+var lstatSync = require('fs').lstatSync
var writeFileSync = require('fs').writeFileSync
var common = require('../common-tap.js')
@@ -10,6 +11,7 @@ var common = require('../common-tap.js')
var link = path.join(__dirname, 'link')
var linkScoped = path.join(__dirname, 'link-scoped')
var linkInstall = path.join(__dirname, 'link-install')
+var linkInside = path.join(linkInstall, 'node_modules', 'inside')
var linkRoot = path.join(__dirname, 'link-root')
var config = 'prefix = ' + linkRoot
@@ -57,6 +59,18 @@ var installJSON = {
license: 'ISC'
}
+var insideInstallJSON = {
+ name: 'inside',
+ version: '1.0.0',
+ description: '',
+ main: 'index.js',
+ scripts: {
+ test: 'echo \"Error: no test specified\" && exit 1'
+ },
+ author: '',
+ license: 'ISC'
+}
+
test('setup', function (t) {
setup()
common.npm(['ls', '-g', '--depth=0'], OPTS, function (err, c, out) {
@@ -81,6 +95,20 @@ test('create global link', function (t) {
})
})
+test('create global inside link', function (t) {
+ process.chdir(linkInside)
+ common.npm(['link'], OPTS, function (err, c, out) {
+ t.ifError(err, 'link has no error')
+ common.npm(['ls', '-g'], OPTS, function (err, c, out, stderr) {
+ t.ifError(err)
+ t.equal(c, 0)
+ t.equal(stderr, '', 'got expected stderr')
+ t.has(out, /inside@1.0.0/, 'creates global inside link ok')
+ t.end()
+ })
+ })
+})
+
test('create scoped global link', function (t) {
process.chdir(linkScoped)
common.npm(['link'], OPTS, function (err, c, out) {
@@ -108,6 +136,17 @@ test('link-install the package', function (t) {
})
})
+test('link-inside-install fails', function (t) {
+ process.chdir(linkInstall)
+ t.notOk(lstatSync(linkInside).isSymbolicLink(), 'directory for linked package is not a symlink to begin with')
+ common.npm(['link', 'inside'], OPTS, function (err, code) {
+ t.ifError(err, 'npm removed the linked package without error')
+ t.notEqual(code, 0, 'link operation failed')
+ t.notOk(lstatSync(linkInside).isSymbolicLink(), 'directory for linked package has not turned into a symlink')
+ t.end()
+ })
+})
+
test('link-install the scoped package', function (t) {
process.chdir(linkInstall)
common.npm(['link', linkScoped], OPTS, function (err) {
@@ -141,6 +180,7 @@ function cleanup () {
rimraf.sync(link)
rimraf.sync(linkScoped)
rimraf.sync(linkInstall)
+ rimraf.sync(linkInside)
}
function setup () {
@@ -161,5 +201,10 @@ function setup () {
path.join(linkInstall, 'package.json'),
JSON.stringify(installJSON, null, 2)
)
+ mkdirp.sync(linkInside)
+ writeFileSync(
+ path.join(linkInside, 'package.json'),
+ JSON.stringify(insideInstallJSON, null, 2)
+ )
writeFileSync(configPath, config)
}
diff --git a/deps/npm/test/tap/outdated-symlink.js b/deps/npm/test/tap/outdated-symlink.js
index 203df9ba8f4f0f..a5ebea0d2ead5b 100644
--- a/deps/npm/test/tap/outdated-symlink.js
+++ b/deps/npm/test/tap/outdated-symlink.js
@@ -51,19 +51,26 @@ test('setup', function (t) {
test('when outdated is called linked packages should be displayed as such', function (t) {
var regOutLinked = /my-local-package\s*1.0.0\s*linked\s*linked\n/
- var regOutInstallOne = /async\s*0.2.9\s*0.2.9\s*1.5.2\n/
- var regOutInstallTwo = /underscore\s*1.3.1\s*1.3.1\s*1.8.3\n/
+ var regOutInstallOne = /async\s*0.2.9\s*0.2.9\s*0.2.10\n/
+ var regOutInstallTwo = /underscore\s*1.3.1\s*1.3.1\s*1.5.1\n/
console.log = function () {}
mr({ port: common.port }, function (er, s) {
- common.npm(['outdated', '-g'], OPTS, function (err, c, out, stderr) {
- t.ifError(err)
- t.ok(out.match(regOutLinked), 'Global Link format as expected')
- t.ok(out.match(regOutInstallOne), 'Global Install format as expected')
- t.ok(out.match(regOutInstallTwo), 'Global Install format as expected')
- s.close()
- t.end()
- })
+ common.npm(
+ [
+ '--registry', common.registry,
+ 'outdated', '-g'
+ ],
+ OPTS,
+ function (err, c, out, stderr) {
+ t.ifError(err)
+ t.ok(out.match(regOutLinked), 'Global Link format as expected')
+ t.ok(out.match(regOutInstallOne), 'Global Install format as expected')
+ t.ok(out.match(regOutInstallTwo), 'Global Install format as expected')
+ s.close()
+ t.end()
+ }
+ )
})
})
diff --git a/deps/npm/test/tap/search.js b/deps/npm/test/tap/search.js
index 08cc7a6fe67dd5..138517c3bd13c4 100644
--- a/deps/npm/test/tap/search.js
+++ b/deps/npm/test/tap/search.js
@@ -74,6 +74,20 @@ test('No previous cache, init cache triggered by first search', function (t) {
})
})
+test('no arguments provided should error', function (t) {
+ common.npm(['search'], [], function (err, code, stdout, stderr) {
+ if (err) throw err
+ t.equal(code, 1, 'search finished unsuccessfully')
+
+ t.match(
+ stderr,
+ /search must be called with arguments/,
+ 'should have correct error message'
+ )
+ t.end()
+ })
+})
+
test('previous cache, _updated set, should trigger since request', function (t) {
setupCache()
diff --git a/deps/v8/src/debug/debug.js b/deps/v8/src/debug/debug.js
index 33b5e6a5543f04..a863ab9cdef07e 100644
--- a/deps/v8/src/debug/debug.js
+++ b/deps/v8/src/debug/debug.js
@@ -2416,7 +2416,7 @@ DebugCommandProcessor.prototype.restartFrameRequest_ = function(
frame_mirror = this.exec_state_.frame();
}
- var result_description = Debug.LiveEdit.RestartFrame(frame_mirror);
+ var result_description = frame_mirror.restart();
response.body = {result: result_description};
};
diff --git a/deps/v8/tools/tickprocessor.js b/deps/v8/tools/tickprocessor.js
index d8575738553aa9..381e2f9b69ffa7 100644
--- a/deps/v8/tools/tickprocessor.js
+++ b/deps/v8/tools/tickprocessor.js
@@ -750,8 +750,11 @@ inherits(MacCppEntriesProvider, UnixCppEntriesProvider);
MacCppEntriesProvider.prototype.loadSymbols = function(libName) {
this.parsePos = 0;
libName = this.targetRootFS + libName;
+
+ // It seems that in OS X `nm` thinks that `-f` is a format option, not a
+ // "flat" display option flag.
try {
- this.symbols = [os.system(this.nmExec, ['-n', '-f', libName], -1, -1), ''];
+ this.symbols = [os.system(this.nmExec, ['-n', libName], -1, -1), ''];
} catch (e) {
// If the library cannot be found on this system let's not panic.
this.symbols = '';
diff --git a/doc/api/_toc.markdown b/doc/api/_toc.md
similarity index 100%
rename from doc/api/_toc.markdown
rename to doc/api/_toc.md
diff --git a/doc/api/addons.markdown b/doc/api/addons.markdown
deleted file mode 100644
index c330217beffa4d..00000000000000
--- a/doc/api/addons.markdown
+++ /dev/null
@@ -1,1091 +0,0 @@
-# Addons
-
-Node.js Addons are dynamically-linked shared objects, written in C or C++, that
-can be loaded into Node.js using the [`require()`][require] function, and used
-just as if they were an ordinary Node.js module. They are used primarily to
-provide an interface between JavaScript running in Node.js and C/C++ libraries.
-
-At the moment, the method for implementing Addons is rather complicated,
-involving knowledge of several components and APIs :
-
- - V8: the C++ library Node.js currently uses to provide the
- JavaScript implementation. V8 provides the mechanisms for creating objects,
- calling functions, etc. V8's API is documented mostly in the
- `v8.h` header file (`deps/v8/include/v8.h` in the Node.js source
- tree), which is also available [online][v8-docs].
-
- - [libuv][]: The C library that implements the Node.js event loop, its worker
- threads and all of the asynchronous behaviors of the platform. It also
- serves as a cross-platform abstraction library, giving easy, POSIX-like
- access across all major operating systems to many common system tasks, such
- as interacting with the filesystem, sockets, timers and system events. libuv
- also provides a pthreads-like threading abstraction that may be used to
- power more sophisticated asynchronous Addons that need to move beyond the
- standard event loop. Addon authors are encouraged to think about how to
- avoid blocking the event loop with I/O or other time-intensive tasks by
- off-loading work via libuv to non-blocking system operations, worker threads
- or a custom use of libuv's threads.
-
- - Internal Node.js libraries. Node.js itself exports a number of C/C++ APIs
- that Addons can use — the most important of which is the
- `node::ObjectWrap` class.
-
- - Node.js includes a number of other statically linked libraries including
- OpenSSL. These other libraries are located in the `deps/` directory in the
- Node.js source tree. Only the V8 and OpenSSL symbols are purposefully
- re-exported by Node.js and may be used to various extents by Addons.
- See [Linking to Node.js' own dependencies][] for additional information.
-
-All of the following examples are available for [download][] and may
-be used as a starting-point for your own Addon.
-
-## Hello world
-
-This "Hello world" example is a simple Addon, written in C++, that is the
-equivalent of the following JavaScript code:
-
-```js
-module.exports.hello = () => 'world';
-```
-
-First, create the file `hello.cc`:
-
-```cpp
-// hello.cc
-#include
-
-namespace demo {
-
-using v8::FunctionCallbackInfo;
-using v8::Isolate;
-using v8::Local;
-using v8::Object;
-using v8::String;
-using v8::Value;
-
-void Method(const FunctionCallbackInfo& args) {
- Isolate* isolate = args.GetIsolate();
- args.GetReturnValue().Set(String::NewFromUtf8(isolate, "world"));
-}
-
-void init(Local exports) {
- NODE_SET_METHOD(exports, "hello", Method);
-}
-
-NODE_MODULE(addon, init)
-
-} // namespace demo
-```
-
-Note that all Node.js Addons must export an initialization function following
-the pattern:
-
-```cpp
-void Initialize(Local exports);
-NODE_MODULE(module_name, Initialize)
-```
-
-There is no semi-colon after `NODE_MODULE` as it's not a function (see
-`node.h`).
-
-The `module_name` must match the filename of the final binary (excluding
-the .node suffix).
-
-In the `hello.cc` example, then, the initialization function is `init` and the
-Addon module name is `addon`.
-
-### Building
-
-Once the source code has been written, it must be compiled into the binary
-`addon.node` file. To do so, create a file called `binding.gyp` in the
-top-level of the project describing the build configuration of your module
-using a JSON-like format. This file is used by [node-gyp][] -- a tool written
-specifically to compile Node.js Addons.
-
-```
-{
- "targets": [
- {
- "target_name": "addon",
- "sources": [ "hello.cc" ]
- }
- ]
-}
-```
-
-*Note: A version of the `node-gyp` utility is bundled and distributed with
-Node.js as part of `npm`. This version is not made directly available for
-developers to use and is intended only to support the ability to use the
-`npm install` command to compile and install Addons. Developers who wish to
-use `node-gyp` directly can install it using the command
-`npm install -g node-gyp`. See the `node-gyp` [installation instructions][] for
-more information, including platform-specific requirements.*
-
-Once the `binding.gyp` file has been created, use `node-gyp configure` to
-generate the appropriate project build files for the current platform. This
-will generate either a `Makefile` (on Unix platforms) or a `vcxproj` file
-(on Windows) in the `build/` directory.
-
-Next, invoke the `node-gyp build` command to generate the compiled `addon.node`
-file. This will be put into the `build/Release/` directory.
-
-When using `npm install` to install a Node.js Addon, npm uses its own bundled
-version of `node-gyp` to perform this same set of actions, generating a
-compiled version of the Addon for the user's platform on demand.
-
-Once built, the binary Addon can be used from within Node.js by pointing
-[`require()`][require] to the built `addon.node` module:
-
-```js
-// hello.js
-const addon = require('./build/Release/addon');
-
-console.log(addon.hello()); // 'world'
-```
-
-Please see the examples below for further information or
- for an example in production.
-
-Because the exact path to the compiled Addon binary can vary depending on how
-it is compiled (i.e. sometimes it may be in `./build/Debug/`), Addons can use
-the [bindings][] package to load the compiled module.
-
-Note that while the `bindings` package implementation is more sophisticated
-in how it locates Addon modules, it is essentially using a try-catch pattern
-similar to:
-
-```js
-try {
- return require('./build/Release/addon.node');
-} catch (err) {
- return require('./build/Debug/addon.node');
-}
-```
-
-### Linking to Node.js' own dependencies
-
-Node.js uses a number of statically linked libraries such as V8, libuv and
-OpenSSL. All Addons are required to link to V8 and may link to any of the
-other dependencies as well. Typically, this is as simple as including
-the appropriate `#include <...>` statements (e.g. `#include `) and
-`node-gyp` will locate the appropriate headers automatically. However, there
-are a few caveats to be aware of:
-
-* When `node-gyp` runs, it will detect the specific release version of Node.js
-and download either the full source tarball or just the headers. If the full
-source is downloaded, Addons will have complete access to the full set of
-Node.js dependencies. However, if only the Node.js headers are downloaded, then
-only the symbols exported by Node.js will be available.
-
-* `node-gyp` can be run using the `--nodedir` flag pointing at a local Node.js
-source image. Using this option, the Addon will have access to the full set of
-dependencies.
-
-### Loading Addons using require()
-
-The filename extension of the compiled Addon binary is `.node` (as opposed
-to `.dll` or `.so`). The [`require()`][require] function is written to look for
-files with the `.node` file extension and initialize those as dynamically-linked
-libraries.
-
-When calling [`require()`][require], the `.node` extension can usually be
-omitted and Node.js will still find and initialize the Addon. One caveat,
-however, is that Node.js will first attempt to locate and load modules or
-JavaScript files that happen to share the same base name. For instance, if
-there is a file `addon.js` in the same directory as the binary `addon.node`,
-then [`require('addon')`][require] will give precedence to the `addon.js` file
-and load it instead.
-
-## Native Abstractions for Node.js
-
-Each of the examples illustrated in this document make direct use of the
-Node.js and V8 APIs for implementing Addons. It is important to understand
-that the V8 API can, and has, changed dramatically from one V8 release to the
-next (and one major Node.js release to the next). With each change, Addons may
-need to be updated and recompiled in order to continue functioning. The Node.js
-release schedule is designed to minimize the frequency and impact of such
-changes but there is little that Node.js can do currently to ensure stability
-of the V8 APIs.
-
-The [Native Abstractions for Node.js][] (or `nan`) provide a set of tools that
-Addon developers are recommended to use to keep compatibility between past and
-future releases of V8 and Node.js. See the `nan` [examples][] for an
-illustration of how it can be used.
-
-## Addon examples
-
-Following are some example Addons intended to help developers get started. The
-examples make use of the V8 APIs. Refer to the online [V8 reference][v8-docs]
-for help with the various V8 calls, and V8's [Embedder's Guide][] for an
-explanation of several concepts used such as handles, scopes, function
-templates, etc.
-
-Each of these examples using the following `binding.gyp` file:
-
-```
-{
- "targets": [
- {
- "target_name": "addon",
- "sources": [ "addon.cc" ]
- }
- ]
-}
-```
-
-In cases where there is more than one `.cc` file, simply add the additional
-filename to the `sources` array. For example:
-
-```
-"sources": ["addon.cc", "myexample.cc"]
-```
-
-Once the `binding.gyp` file is ready, the example Addons can be configured and
-built using `node-gyp`:
-
-```
-$ node-gyp configure build
-```
-
-
-### Function arguments
-
-Addons will typically expose objects and functions that can be accessed from
-JavaScript running within Node.js. When functions are invoked from JavaScript,
-the input arguments and return value must be mapped to and from the C/C++
-code.
-
-The following example illustrates how to read function arguments passed from
-JavaScript and how to return a result:
-
-```cpp
-// addon.cc
-#include
-
-namespace demo {
-
-using v8::Exception;
-using v8::FunctionCallbackInfo;
-using v8::Isolate;
-using v8::Local;
-using v8::Number;
-using v8::Object;
-using v8::String;
-using v8::Value;
-
-// This is the implementation of the "add" method
-// Input arguments are passed using the
-// const FunctionCallbackInfo& args struct
-void Add(const FunctionCallbackInfo& args) {
- Isolate* isolate = args.GetIsolate();
-
- // Check the number of arguments passed.
- if (args.Length() < 2) {
- // Throw an Error that is passed back to JavaScript
- isolate->ThrowException(Exception::TypeError(
- String::NewFromUtf8(isolate, "Wrong number of arguments")));
- return;
- }
-
- // Check the argument types
- if (!args[0]->IsNumber() || !args[1]->IsNumber()) {
- isolate->ThrowException(Exception::TypeError(
- String::NewFromUtf8(isolate, "Wrong arguments")));
- return;
- }
-
- // Perform the operation
- double value = args[0]->NumberValue() + args[1]->NumberValue();
- Local num = Number::New(isolate, value);
-
- // Set the return value (using the passed in
- // FunctionCallbackInfo&)
- args.GetReturnValue().Set(num);
-}
-
-void Init(Local exports) {
- NODE_SET_METHOD(exports, "add", Add);
-}
-
-NODE_MODULE(addon, Init)
-
-} // namespace demo
-```
-
-Once compiled, the example Addon can be required and used from within Node.js:
-
-```js
-// test.js
-const addon = require('./build/Release/addon');
-
-console.log('This should be eight:', addon.add(3, 5));
-```
-
-
-### Callbacks
-
-It is common practice within Addons to pass JavaScript functions to a C++
-function and execute them from there. The following example illustrates how
-to invoke such callbacks:
-
-```cpp
-// addon.cc
-#include
-
-namespace demo {
-
-using v8::Function;
-using v8::FunctionCallbackInfo;
-using v8::Isolate;
-using v8::Local;
-using v8::Null;
-using v8::Object;
-using v8::String;
-using v8::Value;
-
-void RunCallback(const FunctionCallbackInfo& args) {
- Isolate* isolate = args.GetIsolate();
- Local cb = Local::Cast(args[0]);
- const unsigned argc = 1;
- Local argv[argc] = { String::NewFromUtf8(isolate, "hello world") };
- cb->Call(Null(isolate), argc, argv);
-}
-
-void Init(Local exports, Local module) {
- NODE_SET_METHOD(module, "exports", RunCallback);
-}
-
-NODE_MODULE(addon, Init)
-
-} // namespace demo
-```
-
-Note that this example uses a two-argument form of `Init()` that receives
-the full `module` object as the second argument. This allows the Addon
-to completely overwrite `exports` with a single function instead of
-adding the function as a property of `exports`.
-
-To test it, run the following JavaScript:
-
-```js
-// test.js
-const addon = require('./build/Release/addon');
-
-addon((msg) => {
- console.log(msg); // 'hello world'
-});
-```
-
-Note that, in this example, the callback function is invoked synchronously.
-
-### Object factory
-
-Addons can create and return new objects from within a C++ function as
-illustrated in the following example. An object is created and returned with a
-property `msg` that echoes the string passed to `createObject()`:
-
-```cpp
-// addon.cc
-#include
-
-namespace demo {
-
-using v8::FunctionCallbackInfo;
-using v8::Isolate;
-using v8::Local;
-using v8::Object;
-using v8::String;
-using v8::Value;
-
-void CreateObject(const FunctionCallbackInfo& args) {
- Isolate* isolate = args.GetIsolate();
-
- Local obj = Object::New(isolate);
- obj->Set(String::NewFromUtf8(isolate, "msg"), args[0]->ToString());
-
- args.GetReturnValue().Set(obj);
-}
-
-void Init(Local exports, Local module) {
- NODE_SET_METHOD(module, "exports", CreateObject);
-}
-
-NODE_MODULE(addon, Init)
-
-} // namespace demo
-```
-
-To test it in JavaScript:
-
-```js
-// test.js
-const addon = require('./build/Release/addon');
-
-var obj1 = addon('hello');
-var obj2 = addon('world');
-console.log(obj1.msg + ' ' + obj2.msg); // 'hello world'
-```
-
-
-### Function factory
-
-Another common scenario is creating JavaScript functions that wrap C++
-functions and returning those back to JavaScript:
-
-```cpp
-// addon.cc
-#include
-
-namespace demo {
-
-using v8::Function;
-using v8::FunctionCallbackInfo;
-using v8::FunctionTemplate;
-using v8::Isolate;
-using v8::Local;
-using v8::Object;
-using v8::String;
-using v8::Value;
-
-void MyFunction(const FunctionCallbackInfo& args) {
- Isolate* isolate = args.GetIsolate();
- args.GetReturnValue().Set(String::NewFromUtf8(isolate, "hello world"));
-}
-
-void CreateFunction(const FunctionCallbackInfo& args) {
- Isolate* isolate = args.GetIsolate();
-
- Local tpl = FunctionTemplate::New(isolate, MyFunction);
- Local fn = tpl->GetFunction();
-
- // omit this to make it anonymous
- fn->SetName(String::NewFromUtf8(isolate, "theFunction"));
-
- args.GetReturnValue().Set(fn);
-}
-
-void Init(Local exports, Local module) {
- NODE_SET_METHOD(module, "exports", CreateFunction);
-}
-
-NODE_MODULE(addon, Init)
-
-} // namespace demo
-```
-
-To test:
-
-```js
-// test.js
-const addon = require('./build/Release/addon');
-
-var fn = addon();
-console.log(fn()); // 'hello world'
-```
-
-
-### Wrapping C++ objects
-
-It is also possible to wrap C++ objects/classes in a way that allows new
-instances to be created using the JavaScript `new` operator:
-
-```cpp
-// addon.cc
-#include
-#include "myobject.h"
-
-namespace demo {
-
-using v8::Local;
-using v8::Object;
-
-void InitAll(Local exports) {
- MyObject::Init(exports);
-}
-
-NODE_MODULE(addon, InitAll)
-
-} // namespace demo
-```
-
-Then, in `myobject.h`, the wrapper class inherits from `node::ObjectWrap`:
-
-```cpp
-// myobject.h
-#ifndef MYOBJECT_H
-#define MYOBJECT_H
-
-#include
-#include
-
-namespace demo {
-
-class MyObject : public node::ObjectWrap {
- public:
- static void Init(v8::Local exports);
-
- private:
- explicit MyObject(double value = 0);
- ~MyObject();
-
- static void New(const v8::FunctionCallbackInfo& args);
- static void PlusOne(const v8::FunctionCallbackInfo& args);
- static v8::Persistent constructor;
- double value_;
-};
-
-} // namespace demo
-
-#endif
-```
-
-In `myobject.cc`, implement the various methods that are to be exposed.
-Below, the method `plusOne()` is exposed by adding it to the constructor's
-prototype:
-
-```cpp
-// myobject.cc
-#include "myobject.h"
-
-namespace demo {
-
-using v8::Function;
-using v8::FunctionCallbackInfo;
-using v8::FunctionTemplate;
-using v8::Isolate;
-using v8::Local;
-using v8::Number;
-using v8::Object;
-using v8::Persistent;
-using v8::String;
-using v8::Value;
-
-Persistent MyObject::constructor;
-
-MyObject::MyObject(double value) : value_(value) {
-}
-
-MyObject::~MyObject() {
-}
-
-void MyObject::Init(Local exports) {
- Isolate* isolate = exports->GetIsolate();
-
- // Prepare constructor template
- Local tpl = FunctionTemplate::New(isolate, New);
- tpl->SetClassName(String::NewFromUtf8(isolate, "MyObject"));
- tpl->InstanceTemplate()->SetInternalFieldCount(1);
-
- // Prototype
- NODE_SET_PROTOTYPE_METHOD(tpl, "plusOne", PlusOne);
-
- constructor.Reset(isolate, tpl->GetFunction());
- exports->Set(String::NewFromUtf8(isolate, "MyObject"),
- tpl->GetFunction());
-}
-
-void MyObject::New(const FunctionCallbackInfo& args) {
- Isolate* isolate = args.GetIsolate();
-
- if (args.IsConstructCall()) {
- // Invoked as constructor: `new MyObject(...)`
- double value = args[0]->IsUndefined() ? 0 : args[0]->NumberValue();
- MyObject* obj = new MyObject(value);
- obj->Wrap(args.This());
- args.GetReturnValue().Set(args.This());
- } else {
- // Invoked as plain function `MyObject(...)`, turn into construct call.
- const int argc = 1;
- Local argv[argc] = { args[0] };
- Local cons = Local::New(isolate, constructor);
- args.GetReturnValue().Set(cons->NewInstance(argc, argv));
- }
-}
-
-void MyObject::PlusOne(const FunctionCallbackInfo& args) {
- Isolate* isolate = args.GetIsolate();
-
- MyObject* obj = ObjectWrap::Unwrap(args.Holder());
- obj->value_ += 1;
-
- args.GetReturnValue().Set(Number::New(isolate, obj->value_));
-}
-
-} // namespace demo
-```
-
-To build this example, the `myobject.cc` file must be added to the
-`binding.gyp`:
-
-```
-{
- "targets": [
- {
- "target_name": "addon",
- "sources": [
- "addon.cc",
- "myobject.cc"
- ]
- }
- ]
-}
-```
-
-Test it with:
-
-```js
-// test.js
-const addon = require('./build/Release/addon');
-
-var obj = new addon.MyObject(10);
-console.log(obj.plusOne()); // 11
-console.log(obj.plusOne()); // 12
-console.log(obj.plusOne()); // 13
-```
-
-### Factory of wrapped objects
-
-Alternatively, it is possible to use a factory pattern to avoid explicitly
-creating object instances using the JavaScript `new` operator:
-
-```js
-var obj = addon.createObject();
-// instead of:
-// var obj = new addon.Object();
-```
-
-First, the `createObject()` method is implemented in `addon.cc`:
-
-```cpp
-// addon.cc
-#include
-#include "myobject.h"
-
-namespace demo {
-
-using v8::FunctionCallbackInfo;
-using v8::Isolate;
-using v8::Local;
-using v8::Object;
-using v8::String;
-using v8::Value;
-
-void CreateObject(const FunctionCallbackInfo& args) {
- MyObject::NewInstance(args);
-}
-
-void InitAll(Local exports, Local module) {
- MyObject::Init(exports->GetIsolate());
-
- NODE_SET_METHOD(module, "exports", CreateObject);
-}
-
-NODE_MODULE(addon, InitAll)
-
-} // namespace demo
-```
-
-In `myobject.h`, the static method `NewInstance()` is added to handle
-instantiating the object. This method takes the place of using `new` in
-JavaScript:
-
-```cpp
-// myobject.h
-#ifndef MYOBJECT_H
-#define MYOBJECT_H
-
-#include
-#include
-
-namespace demo {
-
-class MyObject : public node::ObjectWrap {
- public:
- static void Init(v8::Isolate* isolate);
- static void NewInstance(const v8::FunctionCallbackInfo& args);
-
- private:
- explicit MyObject(double value = 0);
- ~MyObject();
-
- static void New(const v8::FunctionCallbackInfo& args);
- static void PlusOne(const v8::FunctionCallbackInfo& args);
- static v8::Persistent constructor;
- double value_;
-};
-
-} // namespace demo
-
-#endif
-```
-
-The implementation in `myobject.cc` is similar to the previous example:
-
-```cpp
-// myobject.cc
-#include
-#include "myobject.h"
-
-namespace demo {
-
-using v8::Function;
-using v8::FunctionCallbackInfo;
-using v8::FunctionTemplate;
-using v8::Isolate;
-using v8::Local;
-using v8::Number;
-using v8::Object;
-using v8::Persistent;
-using v8::String;
-using v8::Value;
-
-Persistent MyObject::constructor;
-
-MyObject::MyObject(double value) : value_(value) {
-}
-
-MyObject::~MyObject() {
-}
-
-void MyObject::Init(Isolate* isolate) {
- // Prepare constructor template
- Local tpl = FunctionTemplate::New(isolate, New);
- tpl->SetClassName(String::NewFromUtf8(isolate, "MyObject"));
- tpl->InstanceTemplate()->SetInternalFieldCount(1);
-
- // Prototype
- NODE_SET_PROTOTYPE_METHOD(tpl, "plusOne", PlusOne);
-
- constructor.Reset(isolate, tpl->GetFunction());
-}
-
-void MyObject::New(const FunctionCallbackInfo& args) {
- Isolate* isolate = args.GetIsolate();
-
- if (args.IsConstructCall()) {
- // Invoked as constructor: `new MyObject(...)`
- double value = args[0]->IsUndefined() ? 0 : args[0]->NumberValue();
- MyObject* obj = new MyObject(value);
- obj->Wrap(args.This());
- args.GetReturnValue().Set(args.This());
- } else {
- // Invoked as plain function `MyObject(...)`, turn into construct call.
- const int argc = 1;
- Local argv[argc] = { args[0] };
- Local cons = Local::New(isolate, constructor);
- args.GetReturnValue().Set(cons->NewInstance(argc, argv));
- }
-}
-
-void MyObject::NewInstance(const FunctionCallbackInfo& args) {
- Isolate* isolate = args.GetIsolate();
-
- const unsigned argc = 1;
- Local argv[argc] = { args[0] };
- Local cons = Local::New(isolate, constructor);
- Local instance = cons->NewInstance(argc, argv);
-
- args.GetReturnValue().Set(instance);
-}
-
-void MyObject::PlusOne(const FunctionCallbackInfo& args) {
- Isolate* isolate = args.GetIsolate();
-
- MyObject* obj = ObjectWrap::Unwrap(args.Holder());
- obj->value_ += 1;
-
- args.GetReturnValue().Set(Number::New(isolate, obj->value_));
-}
-
-} // namespace demo
-```
-
-Once again, to build this example, the `myobject.cc` file must be added to the
-`binding.gyp`:
-
-```
-{
- "targets": [
- {
- "target_name": "addon",
- "sources": [
- "addon.cc",
- "myobject.cc"
- ]
- }
- ]
-}
-```
-
-Test it with:
-
-```js
-// test.js
-const createObject = require('./build/Release/addon');
-
-var obj = createObject(10);
-console.log(obj.plusOne()); // 11
-console.log(obj.plusOne()); // 12
-console.log(obj.plusOne()); // 13
-
-var obj2 = createObject(20);
-console.log(obj2.plusOne()); // 21
-console.log(obj2.plusOne()); // 22
-console.log(obj2.plusOne()); // 23
-```
-
-
-### Passing wrapped objects around
-
-In addition to wrapping and returning C++ objects, it is possible to pass
-wrapped objects around by unwrapping them with the Node.js helper function
-`node::ObjectWrap::Unwrap`. The following examples shows a function `add()`
-that can take two `MyObject` objects as input arguments:
-
-```cpp
-// addon.cc
-#include
-#include
-#include "myobject.h"
-
-namespace demo {
-
-using v8::FunctionCallbackInfo;
-using v8::Isolate;
-using v8::Local;
-using v8::Number;
-using v8::Object;
-using v8::String;
-using v8::Value;
-
-void CreateObject(const FunctionCallbackInfo& args) {
- MyObject::NewInstance(args);
-}
-
-void Add(const FunctionCallbackInfo& args) {
- Isolate* isolate = args.GetIsolate();
-
- MyObject* obj1 = node::ObjectWrap::Unwrap(
- args[0]->ToObject());
- MyObject* obj2 = node::ObjectWrap::Unwrap(
- args[1]->ToObject());
-
- double sum = obj1->value() + obj2->value();
- args.GetReturnValue().Set(Number::New(isolate, sum));
-}
-
-void InitAll(Local exports) {
- MyObject::Init(exports->GetIsolate());
-
- NODE_SET_METHOD(exports, "createObject", CreateObject);
- NODE_SET_METHOD(exports, "add", Add);
-}
-
-NODE_MODULE(addon, InitAll)
-
-} // namespace demo
-```
-
-In `myobject.h`, a new public method is added to allow access to private values
-after unwrapping the object.
-
-```cpp
-// myobject.h
-#ifndef MYOBJECT_H
-#define MYOBJECT_H
-
-#include
-#include
-
-namespace demo {
-
-class MyObject : public node::ObjectWrap {
- public:
- static void Init(v8::Isolate* isolate);
- static void NewInstance(const v8::FunctionCallbackInfo& args);
- inline double value() const { return value_; }
-
- private:
- explicit MyObject(double value = 0);
- ~MyObject();
-
- static void New(const v8::FunctionCallbackInfo& args);
- static v8::Persistent constructor;
- double value_;
-};
-
-} // namespace demo
-
-#endif
-```
-
-The implementation of `myobject.cc` is similar to before:
-
-```cpp
-// myobject.cc
-#include
-#include "myobject.h"
-
-namespace demo {
-
-using v8::Function;
-using v8::FunctionCallbackInfo;
-using v8::FunctionTemplate;
-using v8::Isolate;
-using v8::Local;
-using v8::Object;
-using v8::Persistent;
-using v8::String;
-using v8::Value;
-
-Persistent MyObject::constructor;
-
-MyObject::MyObject(double value) : value_(value) {
-}
-
-MyObject::~MyObject() {
-}
-
-void MyObject::Init(Isolate* isolate) {
- // Prepare constructor template
- Local tpl = FunctionTemplate::New(isolate, New);
- tpl->SetClassName(String::NewFromUtf8(isolate, "MyObject"));
- tpl->InstanceTemplate()->SetInternalFieldCount(1);
-
- constructor.Reset(isolate, tpl->GetFunction());
-}
-
-void MyObject::New(const FunctionCallbackInfo& args) {
- Isolate* isolate = args.GetIsolate();
-
- if (args.IsConstructCall()) {
- // Invoked as constructor: `new MyObject(...)`
- double value = args[0]->IsUndefined() ? 0 : args[0]->NumberValue();
- MyObject* obj = new MyObject(value);
- obj->Wrap(args.This());
- args.GetReturnValue().Set(args.This());
- } else {
- // Invoked as plain function `MyObject(...)`, turn into construct call.
- const int argc = 1;
- Local argv[argc] = { args[0] };
- Local cons = Local::New(isolate, constructor);
- args.GetReturnValue().Set(cons->NewInstance(argc, argv));
- }
-}
-
-void MyObject::NewInstance(const FunctionCallbackInfo& args) {
- Isolate* isolate = args.GetIsolate();
-
- const unsigned argc = 1;
- Local argv[argc] = { args[0] };
- Local cons = Local::New(isolate, constructor);
- Local instance = cons->NewInstance(argc, argv);
-
- args.GetReturnValue().Set(instance);
-}
-
-} // namespace demo
-```
-
-Test it with:
-
-```js
-// test.js
-const addon = require('./build/Release/addon');
-
-var obj1 = addon.createObject(10);
-var obj2 = addon.createObject(20);
-var result = addon.add(obj1, obj2);
-
-console.log(result); // 30
-```
-
-### AtExit hooks
-
-An "AtExit" hook is a function that is invoked after the Node.js event loop
-has ended by before the JavaScript VM is terminated and Node.js shuts down.
-"AtExit" hooks are registered using the `node::AtExit` API.
-
-#### void AtExit(callback, args)
-
-* `callback`: `void (*)(void*)` - A pointer to the function to call at exit.
-* `args`: `void*` - A pointer to pass to the callback at exit.
-
-Registers exit hooks that run after the event loop has ended but before the VM
-is killed.
-
-AtExit takes two parameters: a pointer to a callback function to run at exit,
-and a pointer to untyped context data to be passed to that callback.
-
-Callbacks are run in last-in first-out order.
-
-The following `addon.cc` implements AtExit:
-
-```cpp
-// addon.cc
-#undef NDEBUG
-#include
-#include
-#include
-
-namespace demo {
-
-using node::AtExit;
-using v8::HandleScope;
-using v8::Isolate;
-using v8::Local;
-using v8::Object;
-
-static char cookie[] = "yum yum";
-static int at_exit_cb1_called = 0;
-static int at_exit_cb2_called = 0;
-
-static void at_exit_cb1(void* arg) {
- Isolate* isolate = static_cast(arg);
- HandleScope scope(isolate);
- Local obj = Object::New(isolate);
- assert(!obj.IsEmpty()); // assert VM is still alive
- assert(obj->IsObject());
- at_exit_cb1_called++;
-}
-
-static void at_exit_cb2(void* arg) {
- assert(arg == static_cast(cookie));
- at_exit_cb2_called++;
-}
-
-static void sanity_check(void*) {
- assert(at_exit_cb1_called == 1);
- assert(at_exit_cb2_called == 2);
-}
-
-void init(Local exports) {
- AtExit(sanity_check);
- AtExit(at_exit_cb2, cookie);
- AtExit(at_exit_cb2, cookie);
- AtExit(at_exit_cb1, exports->GetIsolate());
-}
-
-NODE_MODULE(addon, init);
-
-} // namespace demo
-```
-
-Test in JavaScript by running:
-
-```js
-// test.js
-const addon = require('./build/Release/addon');
-```
-
-[bindings]: https://github.com/TooTallNate/node-bindings
-[download]: https://github.com/nodejs/node-addon-examples
-[Embedder's Guide]: https://developers.google.com/v8/embed
-[examples]: https://github.com/nodejs/nan/tree/master/examples/
-[installation instructions]: https://github.com/nodejs/node-gyp#installation
-[libuv]: https://github.com/libuv/libuv
-[Linking to Node.js' own dependencies]: #linking-to-nodejs-own-dependencies
-[Native Abstractions for Node.js]: https://github.com/nodejs/nan
-[node-gyp]: https://github.com/nodejs/node-gyp
-[require]: globals.html#globals_require
-[v8-docs]: https://v8docs.nodesource.com/
diff --git a/doc/api/addons.md b/doc/api/addons.md
new file mode 100644
index 00000000000000..4668bc546f26d7
--- /dev/null
+++ b/doc/api/addons.md
@@ -0,0 +1,1091 @@
+# Addons
+
+Node.js Addons are dynamically-linked shared objects, written in C or C++, that
+can be loaded into Node.js using the [`require()`][require] function, and used
+just as if they were an ordinary Node.js module. They are used primarily to
+provide an interface between JavaScript running in Node.js and C/C++ libraries.
+
+At the moment, the method for implementing Addons is rather complicated,
+involving knowledge of several components and APIs :
+
+ - V8: the C++ library Node.js currently uses to provide the
+ JavaScript implementation. V8 provides the mechanisms for creating objects,
+ calling functions, etc. V8's API is documented mostly in the
+ `v8.h` header file (`deps/v8/include/v8.h` in the Node.js source
+ tree), which is also available [online][v8-docs].
+
+ - [libuv][]: The C library that implements the Node.js event loop, its worker
+ threads and all of the asynchronous behaviors of the platform. It also
+ serves as a cross-platform abstraction library, giving easy, POSIX-like
+ access across all major operating systems to many common system tasks, such
+ as interacting with the filesystem, sockets, timers and system events. libuv
+ also provides a pthreads-like threading abstraction that may be used to
+ power more sophisticated asynchronous Addons that need to move beyond the
+ standard event loop. Addon authors are encouraged to think about how to
+ avoid blocking the event loop with I/O or other time-intensive tasks by
+ off-loading work via libuv to non-blocking system operations, worker threads
+ or a custom use of libuv's threads.
+
+ - Internal Node.js libraries. Node.js itself exports a number of C/C++ APIs
+ that Addons can use — the most important of which is the
+ `node::ObjectWrap` class.
+
+ - Node.js includes a number of other statically linked libraries including
+ OpenSSL. These other libraries are located in the `deps/` directory in the
+ Node.js source tree. Only the V8 and OpenSSL symbols are purposefully
+ re-exported by Node.js and may be used to various extents by Addons.
+ See [Linking to Node.js' own dependencies][] for additional information.
+
+All of the following examples are available for [download][] and may
+be used as a starting-point for your own Addon.
+
+## Hello world
+
+This "Hello world" example is a simple Addon, written in C++, that is the
+equivalent of the following JavaScript code:
+
+```js
+module.exports.hello = () => 'world';
+```
+
+First, create the file `hello.cc`:
+
+```cpp
+// hello.cc
+#include
+
+namespace demo {
+
+using v8::FunctionCallbackInfo;
+using v8::Isolate;
+using v8::Local;
+using v8::Object;
+using v8::String;
+using v8::Value;
+
+void Method(const FunctionCallbackInfo& args) {
+ Isolate* isolate = args.GetIsolate();
+ args.GetReturnValue().Set(String::NewFromUtf8(isolate, "world"));
+}
+
+void init(Local exports) {
+ NODE_SET_METHOD(exports, "hello", Method);
+}
+
+NODE_MODULE(addon, init)
+
+} // namespace demo
+```
+
+Note that all Node.js Addons must export an initialization function following
+the pattern:
+
+```cpp
+void Initialize(Local exports);
+NODE_MODULE(module_name, Initialize)
+```
+
+There is no semi-colon after `NODE_MODULE` as it's not a function (see
+`node.h`).
+
+The `module_name` must match the filename of the final binary (excluding
+the .node suffix).
+
+In the `hello.cc` example, then, the initialization function is `init` and the
+Addon module name is `addon`.
+
+### Building
+
+Once the source code has been written, it must be compiled into the binary
+`addon.node` file. To do so, create a file called `binding.gyp` in the
+top-level of the project describing the build configuration of your module
+using a JSON-like format. This file is used by [node-gyp][] -- a tool written
+specifically to compile Node.js Addons.
+
+```
+{
+ "targets": [
+ {
+ "target_name": "addon",
+ "sources": [ "hello.cc" ]
+ }
+ ]
+}
+```
+
+*Note: A version of the `node-gyp` utility is bundled and distributed with
+Node.js as part of `npm`. This version is not made directly available for
+developers to use and is intended only to support the ability to use the
+`npm install` command to compile and install Addons. Developers who wish to
+use `node-gyp` directly can install it using the command
+`npm install -g node-gyp`. See the `node-gyp` [installation instructions][] for
+more information, including platform-specific requirements.*
+
+Once the `binding.gyp` file has been created, use `node-gyp configure` to
+generate the appropriate project build files for the current platform. This
+will generate either a `Makefile` (on Unix platforms) or a `vcxproj` file
+(on Windows) in the `build/` directory.
+
+Next, invoke the `node-gyp build` command to generate the compiled `addon.node`
+file. This will be put into the `build/Release/` directory.
+
+When using `npm install` to install a Node.js Addon, npm uses its own bundled
+version of `node-gyp` to perform this same set of actions, generating a
+compiled version of the Addon for the user's platform on demand.
+
+Once built, the binary Addon can be used from within Node.js by pointing
+[`require()`][require] to the built `addon.node` module:
+
+```js
+// hello.js
+const addon = require('./build/Release/addon');
+
+console.log(addon.hello()); // 'world'
+```
+
+Please see the examples below for further information or
+ for an example in production.
+
+Because the exact path to the compiled Addon binary can vary depending on how
+it is compiled (i.e. sometimes it may be in `./build/Debug/`), Addons can use
+the [bindings][] package to load the compiled module.
+
+Note that while the `bindings` package implementation is more sophisticated
+in how it locates Addon modules, it is essentially using a try-catch pattern
+similar to:
+
+```js
+try {
+ return require('./build/Release/addon.node');
+} catch (err) {
+ return require('./build/Debug/addon.node');
+}
+```
+
+### Linking to Node.js' own dependencies
+
+Node.js uses a number of statically linked libraries such as V8, libuv and
+OpenSSL. All Addons are required to link to V8 and may link to any of the
+other dependencies as well. Typically, this is as simple as including
+the appropriate `#include <...>` statements (e.g. `#include `) and
+`node-gyp` will locate the appropriate headers automatically. However, there
+are a few caveats to be aware of:
+
+* When `node-gyp` runs, it will detect the specific release version of Node.js
+and download either the full source tarball or just the headers. If the full
+source is downloaded, Addons will have complete access to the full set of
+Node.js dependencies. However, if only the Node.js headers are downloaded, then
+only the symbols exported by Node.js will be available.
+
+* `node-gyp` can be run using the `--nodedir` flag pointing at a local Node.js
+source image. Using this option, the Addon will have access to the full set of
+dependencies.
+
+### Loading Addons using require()
+
+The filename extension of the compiled Addon binary is `.node` (as opposed
+to `.dll` or `.so`). The [`require()`][require] function is written to look for
+files with the `.node` file extension and initialize those as dynamically-linked
+libraries.
+
+When calling [`require()`][require], the `.node` extension can usually be
+omitted and Node.js will still find and initialize the Addon. One caveat,
+however, is that Node.js will first attempt to locate and load modules or
+JavaScript files that happen to share the same base name. For instance, if
+there is a file `addon.js` in the same directory as the binary `addon.node`,
+then [`require('addon')`][require] will give precedence to the `addon.js` file
+and load it instead.
+
+## Native Abstractions for Node.js
+
+Each of the examples illustrated in this document make direct use of the
+Node.js and V8 APIs for implementing Addons. It is important to understand
+that the V8 API can, and has, changed dramatically from one V8 release to the
+next (and one major Node.js release to the next). With each change, Addons may
+need to be updated and recompiled in order to continue functioning. The Node.js
+release schedule is designed to minimize the frequency and impact of such
+changes but there is little that Node.js can do currently to ensure stability
+of the V8 APIs.
+
+The [Native Abstractions for Node.js][] (or `nan`) provide a set of tools that
+Addon developers are recommended to use to keep compatibility between past and
+future releases of V8 and Node.js. See the `nan` [examples][] for an
+illustration of how it can be used.
+
+## Addon examples
+
+Following are some example Addons intended to help developers get started. The
+examples make use of the V8 APIs. Refer to the online [V8 reference][v8-docs]
+for help with the various V8 calls, and V8's [Embedder's Guide][] for an
+explanation of several concepts used such as handles, scopes, function
+templates, etc.
+
+Each of these examples using the following `binding.gyp` file:
+
+```
+{
+ "targets": [
+ {
+ "target_name": "addon",
+ "sources": [ "addon.cc" ]
+ }
+ ]
+}
+```
+
+In cases where there is more than one `.cc` file, simply add the additional
+filename to the `sources` array. For example:
+
+```
+"sources": ["addon.cc", "myexample.cc"]
+```
+
+Once the `binding.gyp` file is ready, the example Addons can be configured and
+built using `node-gyp`:
+
+```
+$ node-gyp configure build
+```
+
+
+### Function arguments
+
+Addons will typically expose objects and functions that can be accessed from
+JavaScript running within Node.js. When functions are invoked from JavaScript,
+the input arguments and return value must be mapped to and from the C/C++
+code.
+
+The following example illustrates how to read function arguments passed from
+JavaScript and how to return a result:
+
+```cpp
+// addon.cc
+#include
+
+namespace demo {
+
+using v8::Exception;
+using v8::FunctionCallbackInfo;
+using v8::Isolate;
+using v8::Local;
+using v8::Number;
+using v8::Object;
+using v8::String;
+using v8::Value;
+
+// This is the implementation of the "add" method
+// Input arguments are passed using the
+// const FunctionCallbackInfo& args struct
+void Add(const FunctionCallbackInfo& args) {
+ Isolate* isolate = args.GetIsolate();
+
+ // Check the number of arguments passed.
+ if (args.Length() < 2) {
+ // Throw an Error that is passed back to JavaScript
+ isolate->ThrowException(Exception::TypeError(
+ String::NewFromUtf8(isolate, "Wrong number of arguments")));
+ return;
+ }
+
+ // Check the argument types
+ if (!args[0]->IsNumber() || !args[1]->IsNumber()) {
+ isolate->ThrowException(Exception::TypeError(
+ String::NewFromUtf8(isolate, "Wrong arguments")));
+ return;
+ }
+
+ // Perform the operation
+ double value = args[0]->NumberValue() + args[1]->NumberValue();
+ Local num = Number::New(isolate, value);
+
+ // Set the return value (using the passed in
+ // FunctionCallbackInfo&)
+ args.GetReturnValue().Set(num);
+}
+
+void Init(Local exports) {
+ NODE_SET_METHOD(exports, "add", Add);
+}
+
+NODE_MODULE(addon, Init)
+
+} // namespace demo
+```
+
+Once compiled, the example Addon can be required and used from within Node.js:
+
+```js
+// test.js
+const addon = require('./build/Release/addon');
+
+console.log('This should be eight:', addon.add(3, 5));
+```
+
+
+### Callbacks
+
+It is common practice within Addons to pass JavaScript functions to a C++
+function and execute them from there. The following example illustrates how
+to invoke such callbacks:
+
+```cpp
+// addon.cc
+#include
+
+namespace demo {
+
+using v8::Function;
+using v8::FunctionCallbackInfo;
+using v8::Isolate;
+using v8::Local;
+using v8::Null;
+using v8::Object;
+using v8::String;
+using v8::Value;
+
+void RunCallback(const FunctionCallbackInfo& args) {
+ Isolate* isolate = args.GetIsolate();
+ Local cb = Local::Cast(args[0]);
+ const unsigned argc = 1;
+ Local argv[argc] = { String::NewFromUtf8(isolate, "hello world") };
+ cb->Call(Null(isolate), argc, argv);
+}
+
+void Init(Local exports, Local module) {
+ NODE_SET_METHOD(module, "exports", RunCallback);
+}
+
+NODE_MODULE(addon, Init)
+
+} // namespace demo
+```
+
+Note that this example uses a two-argument form of `Init()` that receives
+the full `module` object as the second argument. This allows the Addon
+to completely overwrite `exports` with a single function instead of
+adding the function as a property of `exports`.
+
+To test it, run the following JavaScript:
+
+```js
+// test.js
+const addon = require('./build/Release/addon');
+
+addon((msg) => {
+ console.log(msg); // 'hello world'
+});
+```
+
+Note that, in this example, the callback function is invoked synchronously.
+
+### Object factory
+
+Addons can create and return new objects from within a C++ function as
+illustrated in the following example. An object is created and returned with a
+property `msg` that echoes the string passed to `createObject()`:
+
+```cpp
+// addon.cc
+#include
+
+namespace demo {
+
+using v8::FunctionCallbackInfo;
+using v8::Isolate;
+using v8::Local;
+using v8::Object;
+using v8::String;
+using v8::Value;
+
+void CreateObject(const FunctionCallbackInfo& args) {
+ Isolate* isolate = args.GetIsolate();
+
+ Local obj = Object::New(isolate);
+ obj->Set(String::NewFromUtf8(isolate, "msg"), args[0]->ToString());
+
+ args.GetReturnValue().Set(obj);
+}
+
+void Init(Local exports, Local module) {
+ NODE_SET_METHOD(module, "exports", CreateObject);
+}
+
+NODE_MODULE(addon, Init)
+
+} // namespace demo
+```
+
+To test it in JavaScript:
+
+```js
+// test.js
+const addon = require('./build/Release/addon');
+
+var obj1 = addon('hello');
+var obj2 = addon('world');
+console.log(obj1.msg + ' ' + obj2.msg); // 'hello world'
+```
+
+
+### Function factory
+
+Another common scenario is creating JavaScript functions that wrap C++
+functions and returning those back to JavaScript:
+
+```cpp
+// addon.cc
+#include
+
+namespace demo {
+
+using v8::Function;
+using v8::FunctionCallbackInfo;
+using v8::FunctionTemplate;
+using v8::Isolate;
+using v8::Local;
+using v8::Object;
+using v8::String;
+using v8::Value;
+
+void MyFunction(const FunctionCallbackInfo& args) {
+ Isolate* isolate = args.GetIsolate();
+ args.GetReturnValue().Set(String::NewFromUtf8(isolate, "hello world"));
+}
+
+void CreateFunction(const FunctionCallbackInfo& args) {
+ Isolate* isolate = args.GetIsolate();
+
+ Local tpl = FunctionTemplate::New(isolate, MyFunction);
+ Local fn = tpl->GetFunction();
+
+ // omit this to make it anonymous
+ fn->SetName(String::NewFromUtf8(isolate, "theFunction"));
+
+ args.GetReturnValue().Set(fn);
+}
+
+void Init(Local exports, Local module) {
+ NODE_SET_METHOD(module, "exports", CreateFunction);
+}
+
+NODE_MODULE(addon, Init)
+
+} // namespace demo
+```
+
+To test:
+
+```js
+// test.js
+const addon = require('./build/Release/addon');
+
+var fn = addon();
+console.log(fn()); // 'hello world'
+```
+
+
+### Wrapping C++ objects
+
+It is also possible to wrap C++ objects/classes in a way that allows new
+instances to be created using the JavaScript `new` operator:
+
+```cpp
+// addon.cc
+#include
+#include "myobject.h"
+
+namespace demo {
+
+using v8::Local;
+using v8::Object;
+
+void InitAll(Local exports) {
+ MyObject::Init(exports);
+}
+
+NODE_MODULE(addon, InitAll)
+
+} // namespace demo
+```
+
+Then, in `myobject.h`, the wrapper class inherits from `node::ObjectWrap`:
+
+```cpp
+// myobject.h
+#ifndef MYOBJECT_H
+#define MYOBJECT_H
+
+#include
+#include
+
+namespace demo {
+
+class MyObject : public node::ObjectWrap {
+ public:
+ static void Init(v8::Local exports);
+
+ private:
+ explicit MyObject(double value = 0);
+ ~MyObject();
+
+ static void New(const v8::FunctionCallbackInfo& args);
+ static void PlusOne(const v8::FunctionCallbackInfo& args);
+ static v8::Persistent constructor;
+ double value_;
+};
+
+} // namespace demo
+
+#endif
+```
+
+In `myobject.cc`, implement the various methods that are to be exposed.
+Below, the method `plusOne()` is exposed by adding it to the constructor's
+prototype:
+
+```cpp
+// myobject.cc
+#include "myobject.h"
+
+namespace demo {
+
+using v8::Function;
+using v8::FunctionCallbackInfo;
+using v8::FunctionTemplate;
+using v8::Isolate;
+using v8::Local;
+using v8::Number;
+using v8::Object;
+using v8::Persistent;
+using v8::String;
+using v8::Value;
+
+Persistent MyObject::constructor;
+
+MyObject::MyObject(double value) : value_(value) {
+}
+
+MyObject::~MyObject() {
+}
+
+void MyObject::Init(Local exports) {
+ Isolate* isolate = exports->GetIsolate();
+
+ // Prepare constructor template
+ Local tpl = FunctionTemplate::New(isolate, New);
+ tpl->SetClassName(String::NewFromUtf8(isolate, "MyObject"));
+ tpl->InstanceTemplate()->SetInternalFieldCount(1);
+
+ // Prototype
+ NODE_SET_PROTOTYPE_METHOD(tpl, "plusOne", PlusOne);
+
+ constructor.Reset(isolate, tpl->GetFunction());
+ exports->Set(String::NewFromUtf8(isolate, "MyObject"),
+ tpl->GetFunction());
+}
+
+void MyObject::New(const FunctionCallbackInfo& args) {
+ Isolate* isolate = args.GetIsolate();
+
+ if (args.IsConstructCall()) {
+ // Invoked as constructor: `new MyObject(...)`
+ double value = args[0]->IsUndefined() ? 0 : args[0]->NumberValue();
+ MyObject* obj = new MyObject(value);
+ obj->Wrap(args.This());
+ args.GetReturnValue().Set(args.This());
+ } else {
+ // Invoked as plain function `MyObject(...)`, turn into construct call.
+ const int argc = 1;
+ Local argv[argc] = { args[0] };
+ Local cons = Local::New(isolate, constructor);
+ args.GetReturnValue().Set(cons->NewInstance(argc, argv));
+ }
+}
+
+void MyObject::PlusOne(const FunctionCallbackInfo& args) {
+ Isolate* isolate = args.GetIsolate();
+
+ MyObject* obj = ObjectWrap::Unwrap(args.Holder());
+ obj->value_ += 1;
+
+ args.GetReturnValue().Set(Number::New(isolate, obj->value_));
+}
+
+} // namespace demo
+```
+
+To build this example, the `myobject.cc` file must be added to the
+`binding.gyp`:
+
+```
+{
+ "targets": [
+ {
+ "target_name": "addon",
+ "sources": [
+ "addon.cc",
+ "myobject.cc"
+ ]
+ }
+ ]
+}
+```
+
+Test it with:
+
+```js
+// test.js
+const addon = require('./build/Release/addon');
+
+var obj = new addon.MyObject(10);
+console.log(obj.plusOne()); // 11
+console.log(obj.plusOne()); // 12
+console.log(obj.plusOne()); // 13
+```
+
+### Factory of wrapped objects
+
+Alternatively, it is possible to use a factory pattern to avoid explicitly
+creating object instances using the JavaScript `new` operator:
+
+```js
+var obj = addon.createObject();
+// instead of:
+// var obj = new addon.Object();
+```
+
+First, the `createObject()` method is implemented in `addon.cc`:
+
+```cpp
+// addon.cc
+#include
+#include "myobject.h"
+
+namespace demo {
+
+using v8::FunctionCallbackInfo;
+using v8::Isolate;
+using v8::Local;
+using v8::Object;
+using v8::String;
+using v8::Value;
+
+void CreateObject(const FunctionCallbackInfo& args) {
+ MyObject::NewInstance(args);
+}
+
+void InitAll(Local exports, Local module) {
+ MyObject::Init(exports->GetIsolate());
+
+ NODE_SET_METHOD(module, "exports", CreateObject);
+}
+
+NODE_MODULE(addon, InitAll)
+
+} // namespace demo
+```
+
+In `myobject.h`, the static method `NewInstance()` is added to handle
+instantiating the object. This method takes the place of using `new` in
+JavaScript:
+
+```cpp
+// myobject.h
+#ifndef MYOBJECT_H
+#define MYOBJECT_H
+
+#include
+#include
+
+namespace demo {
+
+class MyObject : public node::ObjectWrap {
+ public:
+ static void Init(v8::Isolate* isolate);
+ static void NewInstance(const v8::FunctionCallbackInfo& args);
+
+ private:
+ explicit MyObject(double value = 0);
+ ~MyObject();
+
+ static void New(const v8::FunctionCallbackInfo& args);
+ static void PlusOne(const v8::FunctionCallbackInfo& args);
+ static v8::Persistent constructor;
+ double value_;
+};
+
+} // namespace demo
+
+#endif
+```
+
+The implementation in `myobject.cc` is similar to the previous example:
+
+```cpp
+// myobject.cc
+#include
+#include "myobject.h"
+
+namespace demo {
+
+using v8::Function;
+using v8::FunctionCallbackInfo;
+using v8::FunctionTemplate;
+using v8::Isolate;
+using v8::Local;
+using v8::Number;
+using v8::Object;
+using v8::Persistent;
+using v8::String;
+using v8::Value;
+
+Persistent MyObject::constructor;
+
+MyObject::MyObject(double value) : value_(value) {
+}
+
+MyObject::~MyObject() {
+}
+
+void MyObject::Init(Isolate* isolate) {
+ // Prepare constructor template
+ Local tpl = FunctionTemplate::New(isolate, New);
+ tpl->SetClassName(String::NewFromUtf8(isolate, "MyObject"));
+ tpl->InstanceTemplate()->SetInternalFieldCount(1);
+
+ // Prototype
+ NODE_SET_PROTOTYPE_METHOD(tpl, "plusOne", PlusOne);
+
+ constructor.Reset(isolate, tpl->GetFunction());
+}
+
+void MyObject::New(const FunctionCallbackInfo& args) {
+ Isolate* isolate = args.GetIsolate();
+
+ if (args.IsConstructCall()) {
+ // Invoked as constructor: `new MyObject(...)`
+ double value = args[0]->IsUndefined() ? 0 : args[0]->NumberValue();
+ MyObject* obj = new MyObject(value);
+ obj->Wrap(args.This());
+ args.GetReturnValue().Set(args.This());
+ } else {
+ // Invoked as plain function `MyObject(...)`, turn into construct call.
+ const int argc = 1;
+ Local argv[argc] = { args[0] };
+ Local cons = Local::New(isolate, constructor);
+ args.GetReturnValue().Set(cons->NewInstance(argc, argv));
+ }
+}
+
+void MyObject::NewInstance(const FunctionCallbackInfo& args) {
+ Isolate* isolate = args.GetIsolate();
+
+ const unsigned argc = 1;
+ Local argv[argc] = { args[0] };
+ Local cons = Local::New(isolate, constructor);
+ Local instance = cons->NewInstance(argc, argv);
+
+ args.GetReturnValue().Set(instance);
+}
+
+void MyObject::PlusOne(const FunctionCallbackInfo& args) {
+ Isolate* isolate = args.GetIsolate();
+
+ MyObject* obj = ObjectWrap::Unwrap(args.Holder());
+ obj->value_ += 1;
+
+ args.GetReturnValue().Set(Number::New(isolate, obj->value_));
+}
+
+} // namespace demo
+```
+
+Once again, to build this example, the `myobject.cc` file must be added to the
+`binding.gyp`:
+
+```
+{
+ "targets": [
+ {
+ "target_name": "addon",
+ "sources": [
+ "addon.cc",
+ "myobject.cc"
+ ]
+ }
+ ]
+}
+```
+
+Test it with:
+
+```js
+// test.js
+const createObject = require('./build/Release/addon');
+
+var obj = createObject(10);
+console.log(obj.plusOne()); // 11
+console.log(obj.plusOne()); // 12
+console.log(obj.plusOne()); // 13
+
+var obj2 = createObject(20);
+console.log(obj2.plusOne()); // 21
+console.log(obj2.plusOne()); // 22
+console.log(obj2.plusOne()); // 23
+```
+
+
+### Passing wrapped objects around
+
+In addition to wrapping and returning C++ objects, it is possible to pass
+wrapped objects around by unwrapping them with the Node.js helper function
+`node::ObjectWrap::Unwrap`. The following examples shows a function `add()`
+that can take two `MyObject` objects as input arguments:
+
+```cpp
+// addon.cc
+#include
+#include
+#include "myobject.h"
+
+namespace demo {
+
+using v8::FunctionCallbackInfo;
+using v8::Isolate;
+using v8::Local;
+using v8::Number;
+using v8::Object;
+using v8::String;
+using v8::Value;
+
+void CreateObject(const FunctionCallbackInfo& args) {
+ MyObject::NewInstance(args);
+}
+
+void Add(const FunctionCallbackInfo& args) {
+ Isolate* isolate = args.GetIsolate();
+
+ MyObject* obj1 = node::ObjectWrap::Unwrap(
+ args[0]->ToObject());
+ MyObject* obj2 = node::ObjectWrap::Unwrap(
+ args[1]->ToObject());
+
+ double sum = obj1->value() + obj2->value();
+ args.GetReturnValue().Set(Number::New(isolate, sum));
+}
+
+void InitAll(Local exports) {
+ MyObject::Init(exports->GetIsolate());
+
+ NODE_SET_METHOD(exports, "createObject", CreateObject);
+ NODE_SET_METHOD(exports, "add", Add);
+}
+
+NODE_MODULE(addon, InitAll)
+
+} // namespace demo
+```
+
+In `myobject.h`, a new public method is added to allow access to private values
+after unwrapping the object.
+
+```cpp
+// myobject.h
+#ifndef MYOBJECT_H
+#define MYOBJECT_H
+
+#include
+#include
+
+namespace demo {
+
+class MyObject : public node::ObjectWrap {
+ public:
+ static void Init(v8::Isolate* isolate);
+ static void NewInstance(const v8::FunctionCallbackInfo& args);
+ inline double value() const { return value_; }
+
+ private:
+ explicit MyObject(double value = 0);
+ ~MyObject();
+
+ static void New(const v8::FunctionCallbackInfo& args);
+ static v8::Persistent constructor;
+ double value_;
+};
+
+} // namespace demo
+
+#endif
+```
+
+The implementation of `myobject.cc` is similar to before:
+
+```cpp
+// myobject.cc
+#include
+#include "myobject.h"
+
+namespace demo {
+
+using v8::Function;
+using v8::FunctionCallbackInfo;
+using v8::FunctionTemplate;
+using v8::Isolate;
+using v8::Local;
+using v8::Object;
+using v8::Persistent;
+using v8::String;
+using v8::Value;
+
+Persistent MyObject::constructor;
+
+MyObject::MyObject(double value) : value_(value) {
+}
+
+MyObject::~MyObject() {
+}
+
+void MyObject::Init(Isolate* isolate) {
+ // Prepare constructor template
+ Local tpl = FunctionTemplate::New(isolate, New);
+ tpl->SetClassName(String::NewFromUtf8(isolate, "MyObject"));
+ tpl->InstanceTemplate()->SetInternalFieldCount(1);
+
+ constructor.Reset(isolate, tpl->GetFunction());
+}
+
+void MyObject::New(const FunctionCallbackInfo& args) {
+ Isolate* isolate = args.GetIsolate();
+
+ if (args.IsConstructCall()) {
+ // Invoked as constructor: `new MyObject(...)`
+ double value = args[0]->IsUndefined() ? 0 : args[0]->NumberValue();
+ MyObject* obj = new MyObject(value);
+ obj->Wrap(args.This());
+ args.GetReturnValue().Set(args.This());
+ } else {
+ // Invoked as plain function `MyObject(...)`, turn into construct call.
+ const int argc = 1;
+ Local argv[argc] = { args[0] };
+ Local cons = Local::New(isolate, constructor);
+ args.GetReturnValue().Set(cons->NewInstance(argc, argv));
+ }
+}
+
+void MyObject::NewInstance(const FunctionCallbackInfo& args) {
+ Isolate* isolate = args.GetIsolate();
+
+ const unsigned argc = 1;
+ Local argv[argc] = { args[0] };
+ Local cons = Local::New(isolate, constructor);
+ Local instance = cons->NewInstance(argc, argv);
+
+ args.GetReturnValue().Set(instance);
+}
+
+} // namespace demo
+```
+
+Test it with:
+
+```js
+// test.js
+const addon = require('./build/Release/addon');
+
+var obj1 = addon.createObject(10);
+var obj2 = addon.createObject(20);
+var result = addon.add(obj1, obj2);
+
+console.log(result); // 30
+```
+
+### AtExit hooks
+
+An "AtExit" hook is a function that is invoked after the Node.js event loop
+has ended by before the JavaScript VM is terminated and Node.js shuts down.
+"AtExit" hooks are registered using the `node::AtExit` API.
+
+#### void AtExit(callback, args)
+
+* `callback`: `void (*)(void*)` - A pointer to the function to call at exit.
+* `args`: `void*` - A pointer to pass to the callback at exit.
+
+Registers exit hooks that run after the event loop has ended but before the VM
+is killed.
+
+AtExit takes two parameters: a pointer to a callback function to run at exit,
+and a pointer to untyped context data to be passed to that callback.
+
+Callbacks are run in last-in first-out order.
+
+The following `addon.cc` implements AtExit:
+
+```cpp
+// addon.cc
+#undef NDEBUG
+#include
+#include
+#include
+
+namespace demo {
+
+using node::AtExit;
+using v8::HandleScope;
+using v8::Isolate;
+using v8::Local;
+using v8::Object;
+
+static char cookie[] = "yum yum";
+static int at_exit_cb1_called = 0;
+static int at_exit_cb2_called = 0;
+
+static void at_exit_cb1(void* arg) {
+ Isolate* isolate = static_cast(arg);
+ HandleScope scope(isolate);
+ Local obj = Object::New(isolate);
+ assert(!obj.IsEmpty()); // assert VM is still alive
+ assert(obj->IsObject());
+ at_exit_cb1_called++;
+}
+
+static void at_exit_cb2(void* arg) {
+ assert(arg == static_cast(cookie));
+ at_exit_cb2_called++;
+}
+
+static void sanity_check(void*) {
+ assert(at_exit_cb1_called == 1);
+ assert(at_exit_cb2_called == 2);
+}
+
+void init(Local exports) {
+ AtExit(sanity_check);
+ AtExit(at_exit_cb2, cookie);
+ AtExit(at_exit_cb2, cookie);
+ AtExit(at_exit_cb1, exports->GetIsolate());
+}
+
+NODE_MODULE(addon, init);
+
+} // namespace demo
+```
+
+Test in JavaScript by running:
+
+```js
+// test.js
+const addon = require('./build/Release/addon');
+```
+
+[bindings]: https://github.com/TooTallNate/node-bindings
+[download]: https://github.com/nodejs/node-addon-examples
+[Embedder's Guide]: https://developers.google.com/v8/embed
+[examples]: https://github.com/nodejs/nan/tree/master/examples/
+[installation instructions]: https://github.com/nodejs/node-gyp#installation
+[libuv]: https://github.com/libuv/libuv
+[Linking to Node.js' own dependencies]: #addons_linking_to_node_js_own_dependencies
+[Native Abstractions for Node.js]: https://github.com/nodejs/nan
+[node-gyp]: https://github.com/nodejs/node-gyp
+[require]: globals.html#globals_require
+[v8-docs]: https://v8docs.nodesource.com/
diff --git a/doc/api/all.markdown b/doc/api/all.md
similarity index 100%
rename from doc/api/all.markdown
rename to doc/api/all.md
diff --git a/doc/api/assert.markdown b/doc/api/assert.md
similarity index 100%
rename from doc/api/assert.markdown
rename to doc/api/assert.md
diff --git a/doc/api/buffer.markdown b/doc/api/buffer.markdown
deleted file mode 100644
index a5251fe7ee3be8..00000000000000
--- a/doc/api/buffer.markdown
+++ /dev/null
@@ -1,1767 +0,0 @@
-# Buffer
-
- Stability: 2 - Stable
-
-Prior to the introduction of `TypedArray` in ECMAScript 2015 (ES6), the
-JavaScript language had no mechanism for reading or manipulating streams
-of binary data. The `Buffer` class was introduced as part of the Node.js
-API to make it possible to interact with octet streams in the context of things
-like TCP streams and file system operations.
-
-Now that `TypedArray` has been added in ES6, the `Buffer` class implements the
-`Uint8Array` API in a manner that is more optimized and suitable for Node.js'
-use cases.
-
-Instances of the `Buffer` class are similar to arrays of integers but
-correspond to fixed-sized, raw memory allocations outside the V8 heap.
-The size of the `Buffer` is established when it is created and cannot be
-resized.
-
-The `Buffer` class is a global within Node.js, making it unlikely that one
-would need to ever use `require('buffer')`.
-
-
-```js
-const buf1 = Buffer.alloc(10);
- // Creates a zero-filled Buffer of length 10.
-
-const buf2 = Buffer.alloc(10, 1);
- // Creates a Buffer of length 10, filled with 0x01.
-
-const buf3 = Buffer.allocUnsafe(10);
- // Creates an uninitialized buffer of length 10.
- // This is faster than calling Buffer.alloc() but the returned
- // Buffer instance might contain old data that needs to be
- // overwritten using either fill() or write().
-
-const buf4 = Buffer.from([1,2,3]);
- // Creates a Buffer containing [01, 02, 03].
-
-const buf5 = Buffer.from('test');
- // Creates a Buffer containing ASCII bytes [74, 65, 73, 74].
-
-const buf6 = Buffer.from('tést', 'utf8');
- // Creates a Buffer containing UTF8 bytes [74, c3, a9, 73, 74].
-```
-
-## `Buffer.from()`, `Buffer.alloc()`, and `Buffer.allocUnsafe()`
-
-Historically, `Buffer` instances have been created using the `Buffer`
-constructor function, which allocates the returned `Buffer`
-differently based on what arguments are provided:
-
-* Passing a number as the first argument to `Buffer()` (e.g. `new Buffer(10)`),
- allocates a new `Buffer` object of the specified size. The memory allocated
- for such `Buffer` instances is *not* initialized and *can contain sensitive
- data*. Such `Buffer` objects *must* be initialized *manually* by using either
- [`buf.fill(0)`][] or by writing to the `Buffer` completely. While this
- behavior is *intentional* to improve performance, development experience has
- demonstrated that a more explicit distinction is required between creating a
- fast-but-uninitialized `Buffer` versus creating a slower-but-safer `Buffer`.
-* Passing a string, array, or `Buffer` as the first argument copies the
- passed object's data into the `Buffer`.
-* Passing an `ArrayBuffer` returns a `Buffer` that shares allocated memory with
- the given `ArrayBuffer`.
-
-Because the behavior of `new Buffer()` changes significantly based on the type
-of value passed as the first argument, applications that do not properly
-validate the input arguments passed to `new Buffer()`, or that fail to
-appropriately initialize newly allocated `Buffer` content, can inadvertently
-introduce security and reliability issues into their code.
-
-To make the creation of `Buffer` objects more reliable and less error prone,
-new `Buffer.from()`, `Buffer.alloc()`, and `Buffer.allocUnsafe()` methods have
-been introduced as an alternative means of creating `Buffer` instances.
-
-*Developers should migrate all existing uses of the `new Buffer()` constructors
-to one of these new APIs.*
-
-* [`Buffer.from(array)`][buffer_from_array] returns a new `Buffer` containing
- a *copy* of the provided octets.
-* [`Buffer.from(arrayBuffer[, byteOffset [, length]])`][buffer_from_arraybuf]
- returns a new `Buffer` that *shares* the same allocated memory as the given
- `ArrayBuffer`.
-* [`Buffer.from(buffer)`][buffer_from_buffer] returns a new `Buffer`
- containing a *copy* of the contents of the given `Buffer`.
-* [`Buffer.from(str[, encoding])`][buffer_from_string] returns a new `Buffer`
- containing a *copy* of the provided string.
-* [`Buffer.alloc(size[, fill[, encoding]])`][buffer_alloc] returns a "filled"
- `Buffer` instance of the specified size. This method can be significantly
- slower than [`Buffer.allocUnsafe(size)`][buffer_allocunsafe] but ensures that
- newly created `Buffer` instances never contain old and potentially sensitive
- data.
-* [`Buffer.allocUnsafe(size)`][buffer_allocunsafe] returns a new `Buffer` of
- the specified `size` whose content *must* be initialized using either
- [`buf.fill(0)`][] or written to completely.
-
-`Buffer` instances returned by `Buffer.allocUnsafe(size)` *may* be allocated
-off a shared internal memory pool if the `size` is less than or equal to half
-`Buffer.poolSize`.
-
-### What makes `Buffer.allocUnsafe(size)` "unsafe"?
-
-When calling `Buffer.allocUnsafe()`, the segment of allocated memory is
-*uninitialized* (it is not zeroed-out). While this design makes the allocation
-of memory quite fast, the allocated segment of memory might contain old data
-that is potentially sensitive. Using a `Buffer` created by
-`Buffer.allocUnsafe(size)` without *completely* overwriting the memory can
-allow this old data to be leaked when the `Buffer` memory is read.
-
-While there are clear performance advantages to using `Buffer.allocUnsafe()`,
-extra care *must* be taken in order to avoid introducing security
-vulnerabilities into an application.
-
-## Buffers and Character Encodings
-
-Buffers are commonly used to represent sequences of encoded characters
-such as UTF8, UCS2, Base64 or even Hex-encoded data. It is possible to
-convert back and forth between Buffers and ordinary JavaScript string objects
-by using an explicit encoding method.
-
-```js
-const buf = Buffer.from('hello world', 'ascii');
-console.log(buf.toString('hex'));
- // prints: 68656c6c6f20776f726c64
-console.log(buf.toString('base64'));
- // prints: aGVsbG8gd29ybGQ=
-```
-
-The character encodings currently supported by Node.js include:
-
-* `'ascii'` - for 7-bit ASCII data only. This encoding method is very fast and
- will strip the high bit if set.
-
-* `'utf8'` - Multibyte encoded Unicode characters. Many web pages and other
- document formats use UTF-8.
-
-* `'utf16le'` - 2 or 4 bytes, little-endian encoded Unicode characters.
- Surrogate pairs (U+10000 to U+10FFFF) are supported.
-
-* `'ucs2'` - Alias of `'utf16le'`.
-
-* `'base64'` - Base64 string encoding. When creating a buffer from a string,
- this encoding will also correctly accept "URL and Filename Safe Alphabet" as
- specified in [RFC 4648, Section 5].
-
-* `'binary'` - A way of encoding the buffer into a one-byte (`latin-1`)
- encoded string. The string `'latin-1'` is not supported. Instead, pass
- `'binary'` to use `'latin-1'` encoding.
-
-* `'hex'` - Encode each byte as two hexadecimal characters.
-
-## Buffers and TypedArray
-
-Buffers are also `Uint8Array` TypedArray instances. However, there are subtle
-incompatibilities with the TypedArray specification in ECMAScript 2015. For
-instance, while `ArrayBuffer#slice()` creates a copy of the slice,
-the implementation of [`Buffer#slice()`][`buf.slice()`] creates a view over the
-existing Buffer without copying, making `Buffer#slice()` far more efficient.
-
-It is also possible to create new TypedArray instances from a `Buffer` with the
-following caveats:
-
-1. The `Buffer` object's memory is copied to the TypedArray, not shared.
-
-2. The `Buffer` object's memory is interpreted as an array of distinct
- elements, and not as a byte array of the target type. That is,
- `new Uint32Array(Buffer.from([1,2,3,4]))` creates a 4-element `Uint32Array`
- with elements `[1,2,3,4]`, not a `Uint32Array` with a single element
- `[0x1020304]` or `[0x4030201]`.
-
-It is possible to create a new `Buffer` that shares the same allocated memory as
-a TypedArray instance by using the TypeArray object's `.buffer` property:
-
-```js
-const arr = new Uint16Array(2);
-arr[0] = 5000;
-arr[1] = 4000;
-
-const buf1 = Buffer.from(arr); // copies the buffer
-const buf2 = Buffer.from(arr.buffer); // shares the memory with arr;
-
-console.log(buf1);
- // Prints: , copied buffer has only two elements
-console.log(buf2);
- // Prints:
-
-arr[1] = 6000;
-console.log(buf1);
- // Prints:
-console.log(buf2);
- // Prints:
-```
-
-Note that when creating a `Buffer` using the TypedArray's `.buffer`, it is
-possible to use only a portion of the underlying `ArrayBuffer` by passing in
-`byteOffset` and `length` parameters:
-
-```js
-const arr = new Uint16Array(20);
-const buf = Buffer.from(arr.buffer, 0, 16);
-console.log(buf.length);
- // Prints: 16
-```
-
-The `Buffer.from()` and [`TypedArray.from()`][] (e.g.`Uint8Array.from()`) have
-different signatures and implementations. Specifically, the TypedArray variants
-accept a second argument that is a mapping function that is invoked on every
-element of the typed array:
-
-* `TypedArray.from(source[, mapFn[, thisArg]])`
-
-The `Buffer.from()` method, however, does not support the use of a mapping
-function:
-
-* [`Buffer.from(array)`][buffer_from_array]
-* [`Buffer.from(buffer)`][buffer_from_buffer]
-* [`Buffer.from(arrayBuffer[, byteOffset [, length]])`][buffer_from_arraybuf]
-* [`Buffer.from(str[, encoding])`][buffer_from_string]
-
-## Buffers and ES6 iteration
-
-Buffers can be iterated over using the ECMAScript 2015 (ES6) `for..of` syntax:
-
-```js
-const buf = Buffer(.from[1, 2, 3]);
-
-for (var b of buf)
- console.log(b)
-
-// Prints:
-// 1
-// 2
-// 3
-```
-
-Additionally, the [`buf.values()`][], [`buf.keys()`][], and
-[`buf.entries()`][] methods can be used to create iterators.
-
-## The `--zero-fill-buffers` command line option
-
-Node.js can be started using the `--zero-fill-buffers` command line option to
-force all newly allocated `Buffer` and `SlowBuffer` instances created using
-either `new Buffer(size)` and `new SlowBuffer(size)` to be *automatically
-zero-filled* upon creation. Use of this flag *changes the default behavior* of
-these methods and *can have a significant impact* on performance. Use of the
-`--zero-fill-buffers` option is recommended only when absolutely necessary to
-enforce that newly allocated `Buffer` instances cannot contain potentially
-sensitive data.
-
-```
-$ node --zero-fill-buffers
-> Buffer(5);
-
-```
-
-## Class: Buffer
-
-The Buffer class is a global type for dealing with binary data directly.
-It can be constructed in a variety of ways.
-
-### new Buffer(array)
-
-* `array` {Array}
-
-Allocates a new Buffer using an `array` of octets.
-
-```js
-const buf = new Buffer([0x62,0x75,0x66,0x66,0x65,0x72]);
- // creates a new Buffer containing ASCII bytes
- // ['b','u','f','f','e','r']
-```
-
-### new Buffer(buffer)
-
-* `buffer` {Buffer}
-
-Copies the passed `buffer` data onto a new `Buffer` instance.
-
-```js
-const buf1 = new Buffer('buffer');
-const buf2 = new Buffer(buf1);
-
-buf1[0] = 0x61;
-console.log(buf1.toString());
- // 'auffer'
-console.log(buf2.toString());
- // 'buffer' (copy is not changed)
-```
-
-### new Buffer(arrayBuffer[, byteOffset[, length]])
-
-* `arrayBuffer` - The `.buffer` property of a `TypedArray` or a `new
- ArrayBuffer()`
-* `byteOffset` {Number} Default: `0`
-* `length` {Number} Default: `arrayBuffer.length - byteOffset`
-
-When passed a reference to the `.buffer` property of a `TypedArray` instance,
-the newly created Buffer will share the same allocated memory as the
-TypedArray.
-
-The optional `byteOffset` and `length` arguments specify a memory range within
-the `arrayBuffer` that will be shared by the `Buffer`.
-
-```js
-const arr = new Uint16Array(2);
-arr[0] = 5000;
-arr[1] = 4000;
-
-const buf = new Buffer(arr.buffer); // shares the memory with arr;
-
-console.log(buf);
- // Prints:
-
-// changing the TypdArray changes the Buffer also
-arr[1] = 6000;
-
-console.log(buf);
- // Prints:
-```
-
-### new Buffer(size)
-
-* `size` {Number}
-
-Allocates a new `Buffer` of `size` bytes. The `size` must be less than
-or equal to the value of `require('buffer').kMaxLength` (on 64-bit
-architectures, `kMaxLength` is `(2^31)-1`). Otherwise, a [`RangeError`][] is
-thrown. If a `size` less than 0 is specified, a zero-length Buffer will be
-created.
-
-Unlike `ArrayBuffers`, the underlying memory for `Buffer` instances created in
-this way is *not initialized*. The contents of a newly created `Buffer` are
-unknown and *could contain sensitive data*. Use [`buf.fill(0)`][] to initialize
-a Buffer to zeroes.
-
-```js
-const buf = new Buffer(5);
-console.log(buf);
- //
- // (octets will be different, every time)
-buf.fill(0);
-console.log(buf);
- //
-```
-
-### new Buffer(str[, encoding])
-
-* `str` {String} String to encode.
-* `encoding` {String} Default: `'utf8'`
-
-Creates a new Buffer containing the given JavaScript string `str`. If
-provided, the `encoding` parameter identifies the strings character encoding.
-
-```js
-const buf1 = new Buffer('this is a tést');
-console.log(buf1.toString());
- // prints: this is a tést
-console.log(buf1.toString('ascii'));
- // prints: this is a tC)st
-
-const buf2 = new Buffer('7468697320697320612074c3a97374', 'hex');
-console.log(buf2.toString());
- // prints: this is a tést
-```
-
-### Class Method: Buffer.alloc(size[, fill[, encoding]])
-
-* `size` {Number}
-* `fill` {Value} Default: `undefined`
-* `encoding` {String} Default: `utf8`
-
-Allocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the
-`Buffer` will be *zero-filled*.
-
-```js
-const buf = Buffer.alloc(5);
-console.log(buf);
- //
-```
-
-The `size` must be less than or equal to the value of
-`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is
-`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. If a `size` less than 0
-is specified, a zero-length `Buffer` will be created.
-
-If `fill` is specified, the allocated `Buffer` will be initialized by calling
-`buf.fill(fill)`. See [`buf.fill()`][] for more information.
-
-```js
-const buf = Buffer.alloc(5, 'a');
-console.log(buf);
- //
-```
-
-If both `fill` and `encoding` are specified, the allocated `Buffer` will be
-initialized by calling `buf.fill(fill, encoding)`. For example:
-
-```js
-const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64');
-console.log(buf);
- //
-```
-
-Calling `Buffer.alloc(size)` can be significantly slower than the alternative
-`Buffer.allocUnsafe(size)` but ensures that the newly created `Buffer` instance
-contents will *never contain sensitive data*.
-
-A `TypeError` will be thrown if `size` is not a number.
-
-### Class Method: Buffer.allocUnsafe(size)
-
-* `size` {Number}
-
-Allocates a new *non-zero-filled* `Buffer` of `size` bytes. The `size` must
-be less than or equal to the value of `require('buffer').kMaxLength` (on 64-bit
-architectures, `kMaxLength` is `(2^31)-1`). Otherwise, a [`RangeError`][] is
-thrown. If a `size` less than 0 is specified, a zero-length `Buffer` will be
-created.
-
-The underlying memory for `Buffer` instances created in this way is *not
-initialized*. The contents of the newly created `Buffer` are unknown and
-*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such
-`Buffer` instances to zeroes.
-
-```js
-const buf = Buffer.allocUnsafe(5);
-console.log(buf);
- //
- // (octets will be different, every time)
-buf.fill(0);
-console.log(buf);
- //
-```
-
-A `TypeError` will be thrown if `size` is not a number.
-
-Note that the `Buffer` module pre-allocates an internal `Buffer` instance of
-size `Buffer.poolSize` that is used as a pool for the fast allocation of new
-`Buffer` instances created using `Buffer.allocUnsafe(size)` (and the
-`new Buffer(size)` constructor) only when `size` is less than or equal to
-`Buffer.poolSize >> 1` (floor of `Buffer.poolSize` divided by two). The default
-value of `Buffer.poolSize` is `8192` but can be modified.
-
-Use of this pre-allocated internal memory pool is a key difference between
-calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`.
-Specifically, `Buffer.alloc(size, fill)` will *never* use the internal Buffer
-pool, while `Buffer.allocUnsafe(size).fill(fill)` *will* use the internal
-Buffer pool if `size` is less than or equal to half `Buffer.poolSize`. The
-difference is subtle but can be important when an application requires the
-additional performance that `Buffer.allocUnsafe(size)` provides.
-
-### Class Method: Buffer.byteLength(string[, encoding])
-
-* `string` {String | Buffer | TypedArray | DataView | ArrayBuffer}
-* `encoding` {String} Default: `'utf8'`
-* Return: {Number}
-
-Returns the actual byte length of a string. This is not the same as
-[`String.prototype.length`][] since that returns the number of *characters* in
-a string.
-
-Example:
-
-```js
-const str = '\u00bd + \u00bc = \u00be';
-
-console.log(`${str}: ${str.length} characters, ` +
- `${Buffer.byteLength(str, 'utf8')} bytes`);
-
-// ½ + ¼ = ¾: 9 characters, 12 bytes
-```
-
-When `string` is a `Buffer`/[`DataView`][]/[`TypedArray`][]/`ArrayBuffer`,
-returns the actual byte length.
-
-Otherwise, converts to `String` and returns the byte length of string.
-
-### Class Method: Buffer.compare(buf1, buf2)
-
-* `buf1` {Buffer}
-* `buf2` {Buffer}
-* Return: {Number}
-
-Compares `buf1` to `buf2` typically for the purpose of sorting arrays of
-Buffers. This is equivalent is calling [`buf1.compare(buf2)`][].
-
-```js
-const arr = [Buffer.from('1234'), Buffer.from('0123')];
-arr.sort(Buffer.compare);
-```
-
-### Class Method: Buffer.concat(list[, totalLength])
-
-* `list` {Array} List of Buffer objects to concat
-* `totalLength` {Number} Total length of the Buffers in the list when concatenated
-* Return: {Buffer}
-
-Returns a new Buffer which is the result of concatenating all the Buffers in
-the `list` together.
-
-If the list has no items, or if the `totalLength` is 0, then a new zero-length
-Buffer is returned.
-
-If `totalLength` is not provided, it is calculated from the Buffers in the
-`list`. This, however, adds an additional loop to the function, so it is faster
-to provide the length explicitly.
-
-Example: build a single Buffer from a list of three Buffers:
-
-```js
-const buf1 = Buffer.alloc(10, 0);
-const buf2 = Buffer.alloc(14, 0);
-const buf3 = Buffer.alloc(18, 0);
-const totalLength = buf1.length + buf2.length + buf3.length;
-
-console.log(totalLength);
-const bufA = Buffer.concat([buf1, buf2, buf3], totalLength);
-console.log(bufA);
-console.log(bufA.length);
-
-// 42
-//
-// 42
-```
-
-### Class Method: Buffer.from(array)
-
-* `array` {Array}
-
-Allocates a new `Buffer` using an `array` of octets.
-
-```js
-const buf = Buffer.from([0x62,0x75,0x66,0x66,0x65,0x72]);
- // creates a new Buffer containing ASCII bytes
- // ['b','u','f','f','e','r']
-```
-
-A `TypeError` will be thrown if `array` is not an `Array`.
-
-### Class Method: Buffer.from(arrayBuffer[, byteOffset[, length]])
-
-* `arrayBuffer` {ArrayBuffer} The `.buffer` property of a `TypedArray` or
- a `new ArrayBuffer()`
-* `byteOffset` {Number} Default: `0`
-* `length` {Number} Default: `arrayBuffer.length - byteOffset`
-
-When passed a reference to the `.buffer` property of a `TypedArray` instance,
-the newly created `Buffer` will share the same allocated memory as the
-TypedArray.
-
-```js
-const arr = new Uint16Array(2);
-arr[0] = 5000;
-arr[1] = 4000;
-
-const buf = Buffer.from(arr.buffer); // shares the memory with arr;
-
-console.log(buf);
- // Prints:
-
-// changing the TypedArray changes the Buffer also
-arr[1] = 6000;
-
-console.log(buf);
- // Prints:
-```
-
-The optional `byteOffset` and `length` arguments specify a memory range within
-the `arrayBuffer` that will be shared by the `Buffer`.
-
-```js
-const ab = new ArrayBuffer(10);
-const buf = Buffer.from(ab, 0, 2);
-console.log(buf.length);
- // Prints: 2
-```
-
-A `TypeError` will be thrown if `arrayBuffer` is not an `ArrayBuffer`.
-
-### Class Method: Buffer.from(buffer)
-
-* `buffer` {Buffer}
-
-Copies the passed `buffer` data onto a new `Buffer` instance.
-
-```js
-const buf1 = Buffer.from('buffer');
-const buf2 = Buffer.from(buf1);
-
-buf1[0] = 0x61;
-console.log(buf1.toString());
- // 'auffer'
-console.log(buf2.toString());
- // 'buffer' (copy is not changed)
-```
-
-A `TypeError` will be thrown if `buffer` is not a `Buffer`.
-
-### Class Method: Buffer.from(str[, encoding])
-
-* `str` {String} String to encode.
-* `encoding` {String} Encoding to use, Default: `'utf8'`
-
-Creates a new `Buffer` containing the given JavaScript string `str`. If
-provided, the `encoding` parameter identifies the character encoding.
-If not provided, `encoding` defaults to `'utf8'`.
-
-```js
-const buf1 = Buffer.from('this is a tést');
-console.log(buf1.toString());
- // prints: this is a tést
-console.log(buf1.toString('ascii'));
- // prints: this is a tC)st
-
-const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex');
-console.log(buf2.toString());
- // prints: this is a tést
-```
-
-A `TypeError` will be thrown if `str` is not a string.
-
-### Class Method: Buffer.isBuffer(obj)
-
-* `obj` {Object}
-* Return: {Boolean}
-
-Returns 'true' if `obj` is a Buffer.
-
-### Class Method: Buffer.isEncoding(encoding)
-
-* `encoding` {String} The encoding string to test
-* Return: {Boolean}
-
-Returns true if the `encoding` is a valid encoding argument, or false
-otherwise.
-
-### buf[index]
-
-
-
-
-The index operator `[index]` can be used to get and set the octet at position
-`index` in the Buffer. The values refer to individual bytes, so the legal value
-range is between `0x00` and `0xFF` (hex) or `0` and `255` (decimal).
-
-Example: copy an ASCII string into a Buffer, one byte at a time:
-
-```js
-const str = "Node.js";
-const buf = Buffer.allocUnsafe(str.length);
-
-for (var i = 0; i < str.length ; i++) {
- buf[i] = str.charCodeAt(i);
-}
-
-console.log(buf.toString('ascii'));
- // Prints: Node.js
-```
-
-### buf.compare(otherBuffer)
-
-* `otherBuffer` {Buffer}
-* Return: {Number}
-
-Compares two Buffer instances and returns a number indicating whether `buf`
-comes before, after, or is the same as the `otherBuffer` in sort order.
-Comparison is based on the actual sequence of bytes in each Buffer.
-
-* `0` is returned if `otherBuffer` is the same as `buf`
-* `1` is returned if `otherBuffer` should come *before* `buf` when sorted.
-* `-1` is returned if `otherBuffer` should come *after* `buf` when sorted.
-
-```js
-const buf1 = Buffer.from('ABC');
-const buf2 = Buffer.from('BCD');
-const buf3 = Buffer.from('ABCD');
-
-console.log(buf1.compare(buf1));
- // Prints: 0
-console.log(buf1.compare(buf2));
- // Prints: -1
-console.log(buf1.compare(buf3));
- // Prints: 1
-console.log(buf2.compare(buf1));
- // Prints: 1
-console.log(buf2.compare(buf3));
- // Prints: 1
-
-[buf1, buf2, buf3].sort(Buffer.compare);
- // produces sort order [buf1, buf3, buf2]
-```
-
-### buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])
-
-* `targetBuffer` {Buffer} Buffer to copy into
-* `targetStart` {Number} Default: 0
-* `sourceStart` {Number} Default: 0
-* `sourceEnd` {Number} Default: `buffer.length`
-* Return: {Number} The number of bytes copied.
-
-Copies data from a region of this Buffer to a region in the target Buffer even
-if the target memory region overlaps with the source.
-
-Example: build two Buffers, then copy `buf1` from byte 16 through byte 19
-into `buf2`, starting at the 8th byte in `buf2`.
-
-```js
-const buf1 = Buffer.allocUnsafe(26);
-const buf2 = Buffer.allocUnsafe(26).fill('!');
-
-for (var i = 0 ; i < 26 ; i++) {
- buf1[i] = i + 97; // 97 is ASCII a
-}
-
-buf1.copy(buf2, 8, 16, 20);
-console.log(buf2.toString('ascii', 0, 25));
- // Prints: !!!!!!!!qrst!!!!!!!!!!!!!
-```
-
-Example: Build a single Buffer, then copy data from one region to an overlapping
-region in the same Buffer
-
-```js
-const buf = Buffer.allocUnsafe(26);
-
-for (var i = 0 ; i < 26 ; i++) {
- buf[i] = i + 97; // 97 is ASCII a
-}
-
-buf.copy(buf, 0, 4, 10);
-console.log(buf.toString());
-
-// efghijghijklmnopqrstuvwxyz
-```
-
-### buf.entries()
-
-* Return: {Iterator}
-
-Creates and returns an [iterator][] of `[index, byte]` pairs from the Buffer
-contents.
-
-```js
-const buf = Buffer.from('buffer');
-for (var pair of buf.entries()) {
- console.log(pair);
-}
-// prints:
-// [0, 98]
-// [1, 117]
-// [2, 102]
-// [3, 102]
-// [4, 101]
-// [5, 114]
-```
-
-### buf.equals(otherBuffer)
-
-* `otherBuffer` {Buffer}
-* Return: {Boolean}
-
-Returns a boolean indicating whether `this` and `otherBuffer` have exactly the
-same bytes.
-
-```js
-const buf1 = Buffer.from('ABC');
-const buf2 = Buffer.from('414243', 'hex');
-const buf3 = Buffer.from('ABCD');
-
-console.log(buf1.equals(buf2));
- // Prints: true
-console.log(buf1.equals(buf3));
- // Prints: false
-```
-
-### buf.fill(value[, offset[, end]][, encoding])
-
-* `value` {String|Buffer|Number}
-* `offset` {Number} Default: 0
-* `end` {Number} Default: `buf.length`
-* `encoding` {String} Default: `'utf8'`
-* Return: {Buffer}
-
-Fills the Buffer with the specified value. If the `offset` (defaults to `0`)
-and `end` (defaults to `buf.length`) are not given the entire buffer will be
-filled. The method returns a reference to the Buffer, so calls can be chained.
-This is meant as a small simplification to creating a Buffer. Allowing the
-creation and fill of the Buffer to be done on a single line:
-
-```js
-const b = Buffer.alloc(50, 'h');
-console.log(b.toString());
- // Prints: hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
-```
-
-`encoding` is only relevant if `value` is a string. Otherwise it is ignored.
-`value` is coerced to a `uint32` value if it is not a String or Number.
-
-The `fill()` operation writes bytes into the Buffer dumbly. If the final write
-falls in between a multi-byte character then whatever bytes fit into the buffer
-are written.
-
-```js
-Buffer.alloc(3, '\u0222');
- // Prints:
-```
-
-### buf.indexOf(value[, byteOffset][, encoding])
-
-* `value` {String|Buffer|Number}
-* `byteOffset` {Number} Default: 0
-* `encoding` {String} Default: `'utf8'`
-* Return: {Number}
-
-Operates similar to [`Array#indexOf()`][] in that it returns either the
-starting index position of `value` in Buffer or `-1` if the Buffer does not
-contain `value`. The `value` can be a String, Buffer or Number. Strings are by
-default interpreted as UTF8. Buffers will use the entire Buffer (to compare a
-partial Buffer use [`buf.slice()`][]). Numbers can range from 0 to 255.
-
-```js
-const buf = Buffer.from('this is a buffer');
-
-buf.indexOf('this');
- // returns 0
-buf.indexOf('is');
- // returns 2
-buf.indexOf(Buffer.from('a buffer'));
- // returns 8
-buf.indexOf(97); // ascii for 'a'
- // returns 8
-buf.indexOf(Buffer.from('a buffer example'));
- // returns -1
-buf.indexOf(Buffer.from('a buffer example').slice(0,8));
- // returns 8
-
-const utf16Buffer = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'ucs2');
-
-utf16Buffer.indexOf('\u03a3', 0, 'ucs2');
- // returns 4
-utf16Buffer.indexOf('\u03a3', -4, 'ucs2');
- // returns 6
-```
-
-### buf.includes(value[, byteOffset][, encoding])
-
-* `value` {String|Buffer|Number}
-* `byteOffset` {Number} Default: 0
-* `encoding` {String} Default: `'utf8'`
-* Return: {Boolean}
-
-Operates similar to [`Array#includes()`][]. The `value` can be a String, Buffer
-or Number. Strings are interpreted as UTF8 unless overridden with the
-`encoding` argument. Buffers will use the entire Buffer (to compare a partial
-Buffer use [`buf.slice()`][]). Numbers can range from 0 to 255.
-
-The `byteOffset` indicates the index in `buf` where searching begins.
-
-```js
-const buf = Buffer.from('this is a buffer');
-
-buf.includes('this');
- // returns true
-buf.includes('is');
- // returns true
-buf.includes(Buffer.from('a buffer'));
- // returns true
-buf.includes(97); // ascii for 'a'
- // returns true
-buf.includes(Buffer.from('a buffer example'));
- // returns false
-buf.includes(Buffer.from('a buffer example').slice(0,8));
- // returns true
-buf.includes('this', 4);
- // returns false
-```
-
-### buf.keys()
-
-* Return: {Iterator}
-
-Creates and returns an [iterator][] of Buffer keys (indices).
-
-```js
-const buf = Buffer.from('buffer');
-for (var key of buf.keys()) {
- console.log(key);
-}
-// prints:
-// 0
-// 1
-// 2
-// 3
-// 4
-// 5
-```
-
-### buf.length
-
-* {Number}
-
-Returns the amount of memory allocated for the Buffer in number of bytes. Note
-that this does not necessarily reflect the amount of usable data within the
-Buffer. For instance, in the example below, a Buffer with 1234 bytes is
-allocated, but only 11 ASCII bytes are written.
-
-```js
-const buf = Buffer.allocUnsafe(1234);
-
-console.log(buf.length);
- // Prints: 1234
-
-buf.write('some string', 0, 'ascii');
-console.log(buf.length);
- // Prints: 1234
-```
-
-While the `length` property is not immutable, changing the value of `length`
-can result in undefined and inconsistent behavior. Applications that wish to
-modify the length of a Buffer should therefore treat `length` as read-only and
-use [`buf.slice()`][] to create a new Buffer.
-
-```js
-var buf = Buffer.allocUnsafe(10);
-buf.write('abcdefghj', 0, 'ascii');
-console.log(buf.length);
- // Prints: 10
-buf = buf.slice(0,5);
-console.log(buf.length);
- // Prints: 5
-```
-
-### buf.readDoubleBE(offset[, noAssert])
-### buf.readDoubleLE(offset[, noAssert])
-
-* `offset` {Number} `0 <= offset <= buf.length - 8`
-* `noAssert` {Boolean} Default: false
-* Return: {Number}
-
-Reads a 64-bit double from the Buffer at the specified `offset` with specified
-endian format (`readDoubleBE()` returns big endian, `readDoubleLE()` returns
-little endian).
-
-Setting `noAssert` to `true` skips validation of the `offset`. This allows the
-`offset` to be beyond the end of the Buffer.
-
-```js
-const buf = Buffer.from([1,2,3,4,5,6,7,8]);
-
-buf.readDoubleBE();
- // Returns: 8.20788039913184e-304
-buf.readDoubleLE();
- // Returns: 5.447603722011605e-270
-buf.readDoubleLE(1);
- // throws RangeError: Index out of range
-
-buf.readDoubleLE(1, true); // Warning: reads passed end of buffer!
- // Segmentation fault! don't do this!
-```
-
-### buf.readFloatBE(offset[, noAssert])
-### buf.readFloatLE(offset[, noAssert])
-
-* `offset` {Number} `0 <= offset <= buf.length - 4`
-* `noAssert` {Boolean} Default: false
-* Return: {Number}
-
-Reads a 32-bit float from the Buffer at the specified `offset` with specified
-endian format (`readFloatBE()` returns big endian, `readFloatLE()` returns
-little endian).
-
-Setting `noAssert` to `true` skips validation of the `offset`. This allows the
-`offset` to be beyond the end of the Buffer.
-
-```js
-const buf = Buffer.from([1,2,3,4]);
-
-buf.readFloatBE();
- // Returns: 2.387939260590663e-38
-buf.readFloatLE();
- // Returns: 1.539989614439558e-36
-buf.readFloatLE(1);
- // throws RangeError: Index out of range
-
-buf.readFloatLE(1, true); // Warning: reads passed end of buffer!
- // Segmentation fault! don't do this!
-```
-
-### buf.readInt8(offset[, noAssert])
-
-* `offset` {Number} `0 <= offset <= buf.length - 1`
-* `noAssert` {Boolean} Default: false
-* Return: {Number}
-
-Reads a signed 8-bit integer from the Buffer at the specified `offset`.
-
-Setting `noAssert` to `true` skips validation of the `offset`. This allows the
-`offset` to be beyond the end of the Buffer.
-
-Integers read from the Buffer are interpreted as two's complement signed values.
-
-```js
-const buf = Buffer.from([1,-2,3,4]);
-
-buf.readInt8(0);
- // returns 1
-buf.readInt8(1);
- // returns -2
-```
-
-### buf.readInt16BE(offset[, noAssert])
-### buf.readInt16LE(offset[, noAssert])
-
-* `offset` {Number} `0 <= offset <= buf.length - 2`
-* `noAssert` {Boolean} Default: false
-* Return: {Number}
-
-Reads a signed 16-bit integer from the Buffer at the specified `offset` with
-the specified endian format (`readInt16BE()` returns big endian,
-`readInt16LE()` returns little endian).
-
-Setting `noAssert` to `true` skips validation of the `offset`. This allows the
-`offset` to be beyond the end of the Buffer.
-
-Integers read from the Buffer are interpreted as two's complement signed values.
-
-```js
-const buf = Buffer.from([1,-2,3,4]);
-
-buf.readInt16BE();
- // returns 510
-buf.readInt16LE(1);
- // returns 1022
-```
-
-### buf.readInt32BE(offset[, noAssert])
-### buf.readInt32LE(offset[, noAssert])
-
-* `offset` {Number} `0 <= offset <= buf.length - 4`
-* `noAssert` {Boolean} Default: false
-* Return: {Number}
-
-Reads a signed 32-bit integer from the Buffer at the specified `offset` with
-the specified endian format (`readInt32BE()` returns big endian,
-`readInt32LE()` returns little endian).
-
-Setting `noAssert` to `true` skips validation of the `offset`. This allows the
-`offset` to be beyond the end of the Buffer.
-
-Integers read from the Buffer are interpreted as two's complement signed values.
-
-```js
-const buf = Buffer.from([1,-2,3,4]);
-
-buf.readInt32BE();
- // returns 33424132
-buf.readInt32LE();
- // returns 67370497
-buf.readInt32LE(1);
- // throws RangeError: Index out of range
-```
-
-### buf.readIntBE(offset, byteLength[, noAssert])
-### buf.readIntLE(offset, byteLength[, noAssert])
-
-* `offset` {Number} `0 <= offset <= buf.length - byteLength`
-* `byteLength` {Number} `0 < byteLength <= 6`
-* `noAssert` {Boolean} Default: false
-* Return: {Number}
-
-Reads `byteLength` number of bytes from the Buffer at the specified `offset`
-and interprets the result as a two's complement signed value. Supports up to 48
-bits of accuracy. For example:
-
-```js
-const buf = Buffer.allocUnsafe(6);
-buf.writeUInt16LE(0x90ab, 0);
-buf.writeUInt32LE(0x12345678, 2);
-buf.readIntLE(0, 6).toString(16); // Specify 6 bytes (48 bits)
-// Returns: '1234567890ab'
-
-buf.readIntBE(0, 6).toString(16);
-// Returns: -546f87a9cbee
-```
-
-Setting `noAssert` to `true` skips validation of the `offset`. This allows the
-`offset` to be beyond the end of the Buffer.
-
-### buf.readUInt8(offset[, noAssert])
-
-* `offset` {Number} `0 <= offset <= buf.length - 1`
-* `noAssert` {Boolean} Default: false
-* Return: {Number}
-
-Reads an unsigned 8-bit integer from the Buffer at the specified `offset`.
-
-Setting `noAssert` to `true` skips validation of the `offset`. This allows the
-`offset` to be beyond the end of the Buffer.
-
-```js
-const buf = Buffer.from([1,-2,3,4]);
-
-buf.readUInt8(0);
- // returns 1
-buf.readUInt8(1);
- // returns 254
-```
-
-### buf.readUInt16BE(offset[, noAssert])
-### buf.readUInt16LE(offset[, noAssert])
-
-* `offset` {Number} `0 <= offset <= buf.length - 2`
-* `noAssert` {Boolean} Default: false
-* Return: {Number}
-
-Reads an unsigned 16-bit integer from the Buffer at the specified `offset` with
-specified endian format (`readInt32BE()` returns big endian,
-`readInt32LE()` returns little endian).
-
-Setting `noAssert` to `true` skips validation of the `offset`. This allows the
-`offset` to be beyond the end of the Buffer.
-
-Example:
-
-```js
-const buf = Buffer.from([0x3, 0x4, 0x23, 0x42]);
-
-buf.readUInt16BE(0);
- // Returns: 0x0304
-buf.readUInt16LE(0);
- // Returns: 0x0403
-buf.readUInt16BE(1);
- // Returns: 0x0423
-buf.readUInt16LE(1);
- // Returns: 0x2304
-buf.readUInt16BE(2);
- // Returns: 0x2342
-buf.readUInt16LE(2);
- // Returns: 0x4223
-```
-
-### buf.readUInt32BE(offset[, noAssert])
-### buf.readUInt32LE(offset[, noAssert])
-
-* `offset` {Number} `0 <= offset <= buf.length - 4`
-* `noAssert` {Boolean} Default: false
-* Return: {Number}
-
-Reads an unsigned 32-bit integer from the Buffer at the specified `offset` with
-specified endian format (`readInt32BE()` returns big endian,
-`readInt32LE()` returns little endian).
-
-Setting `noAssert` to `true` skips validation of the `offset`. This allows the
-`offset` to be beyond the end of the Buffer.
-
-Example:
-
-```js
-const buf = Buffer.from([0x3, 0x4, 0x23, 0x42]);
-
-buf.readUInt32BE(0);
- // Returns: 0x03042342
-console.log(buf.readUInt32LE(0));
- // Returns: 0x42230403
-```
-
-### buf.readUIntBE(offset, byteLength[, noAssert])
-### buf.readUIntLE(offset, byteLength[, noAssert])
-
-* `offset` {Number} `0 <= offset <= buf.length - byteLength`
-* `byteLength` {Number} `0 < byteLength <= 6`
-* `noAssert` {Boolean} Default: false
-* Return: {Number}
-
-Reads `byteLength` number of bytes from the Buffer at the specified `offset`
-and interprets the result as an unsigned integer. Supports up to 48
-bits of accuracy. For example:
-
-```js
-const buf = Buffer.allocUnsafe(6);
-buf.writeUInt16LE(0x90ab, 0);
-buf.writeUInt32LE(0x12345678, 2);
-buf.readUIntLE(0, 6).toString(16); // Specify 6 bytes (48 bits)
-// Returns: '1234567890ab'
-
-buf.readUIntBE(0, 6).toString(16);
-// Returns: ab9078563412
-```
-
-Setting `noAssert` to `true` skips validation of the `offset`. This allows the
-`offset` to be beyond the end of the Buffer.
-
-### buf.slice([start[, end]])
-
-* `start` {Number} Default: 0
-* `end` {Number} Default: `buffer.length`
-* Return: {Buffer}
-
-Returns a new Buffer that references the same memory as the original, but
-offset and cropped by the `start` and `end` indices.
-
-**Note that modifying the new Buffer slice will modify the memory in the
-original Buffer because the allocated memory of the two objects overlap.**
-
-Example: build a Buffer with the ASCII alphabet, take a slice, then modify one
-byte from the original Buffer.
-
-```js
-const buf1 = Buffer.allocUnsafe(26);
-
-for (var i = 0 ; i < 26 ; i++) {
- buf1[i] = i + 97; // 97 is ASCII a
-}
-
-const buf2 = buf1.slice(0, 3);
-buf2.toString('ascii', 0, buf2.length);
- // Returns: 'abc'
-buf1[0] = 33;
-buf2.toString('ascii', 0, buf2.length);
- // Returns : '!bc'
-```
-
-Specifying negative indexes causes the slice to be generated relative to the
-end of the Buffer rather than the beginning.
-
-```js
-const buf = Buffer.from('buffer');
-
-buf.slice(-6, -1).toString();
- // Returns 'buffe', equivalent to buf.slice(0, 5)
-buf.slice(-6, -2).toString();
- // Returns 'buff', equivalent to buf.slice(0, 4)
-buf.slice(-5, -2).toString();
- // Returns 'uff', equivalent to buf.slice(1, 4)
-```
-
-### buf.swap16()
-
-* Return: {Buffer}
-
-Interprets the `Buffer` as an array of unsigned 16-bit integers and swaps
-the byte-order *in-place*. Throws a `RangeError` if the `Buffer` length is
-not a multiple of 16 bits. The method returns a reference to the Buffer, so
-calls can be chained.
-
-```js
-const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]);
-console.log(buf);
- // Prints Buffer(0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8)
-buf.swap16();
-console.log(buf);
- // Prints Buffer(0x2, 0x1, 0x4, 0x3, 0x6, 0x5, 0x8, 0x7)
-```
-
-### buf.swap32()
-
-* Return: {Buffer}
-
-Interprets the `Buffer` as an array of unsigned 32-bit integers and swaps
-the byte-order *in-place*. Throws a `RangeError` if the `Buffer` length is
-not a multiple of 32 bits. The method returns a reference to the Buffer, so
-calls can be chained.
-
-```js
-const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]);
-console.log(buf);
- // Prints Buffer(0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8)
-buf.swap32();
-console.log(buf);
- // Prints Buffer(0x4, 0x3, 0x2, 0x1, 0x8, 0x7, 0x6, 0x5)
-```
-
-### buf.toString([encoding[, start[, end]]])
-
-* `encoding` {String} Default: `'utf8'`
-* `start` {Number} Default: 0
-* `end` {Number} Default: `buffer.length`
-* Return: {String}
-
-Decodes and returns a string from the Buffer data using the specified
-character set `encoding`.
-
-```js
-const buf = Buffer.allocUnsafe(26);
-for (var i = 0 ; i < 26 ; i++) {
- buf[i] = i + 97; // 97 is ASCII a
-}
-buf.toString('ascii');
- // Returns: 'abcdefghijklmnopqrstuvwxyz'
-buf.toString('ascii',0,5);
- // Returns: 'abcde'
-buf.toString('utf8',0,5);
- // Returns: 'abcde'
-buf.toString(undefined,0,5);
- // Returns: 'abcde', encoding defaults to 'utf8'
-```
-
-### buf.toJSON()
-
-* Return: {Object}
-
-Returns a JSON representation of the Buffer instance. [`JSON.stringify()`][]
-implicitly calls this function when stringifying a Buffer instance.
-
-Example:
-
-```js
-const buf = Buffer.from('test');
-const json = JSON.stringify(buf);
-
-console.log(json);
-// Prints: '{"type":"Buffer","data":[116,101,115,116]}'
-
-const copy = JSON.parse(json, (key, value) => {
- return value && value.type === 'Buffer'
- ? Buffer.from(value.data)
- : value;
- });
-
-console.log(copy.toString());
-// Prints: 'test'
-```
-
-### buf.values()
-
-* Return: {Iterator}
-
-Creates and returns an [iterator][] for Buffer values (bytes). This function is
-called automatically when the Buffer is used in a `for..of` statement.
-
-```js
-const buf = Buffer.from('buffer');
-for (var value of buf.values()) {
- console.log(value);
-}
-// prints:
-// 98
-// 117
-// 102
-// 102
-// 101
-// 114
-
-for (var value of buf) {
- console.log(value);
-}
-// prints:
-// 98
-// 117
-// 102
-// 102
-// 101
-// 114
-```
-
-### buf.write(string[, offset[, length]][, encoding])
-
-* `string` {String} Bytes to be written to buffer
-* `offset` {Number} Default: 0
-* `length` {Number} Default: `buffer.length - offset`
-* `encoding` {String} Default: `'utf8'`
-* Return: {Number} Numbers of bytes written
-
-Writes `string` to the Buffer at `offset` using the given `encoding`.
-The `length` parameter is the number of bytes to write. If the Buffer did not
-contain enough space to fit the entire string, only a partial amount of the
-string will be written however, it will not write only partially encoded
-characters.
-
-```js
-const buf = Buffer.allocUnsafe(256);
-const len = buf.write('\u00bd + \u00bc = \u00be', 0);
-console.log(`${len} bytes: ${buf.toString('utf8', 0, len)}`);
- // Prints: 12 bytes: ½ + ¼ = ¾
-```
-
-### buf.writeDoubleBE(value, offset[, noAssert])
-### buf.writeDoubleLE(value, offset[, noAssert])
-
-* `value` {Number} Bytes to be written to Buffer
-* `offset` {Number} `0 <= offset <= buf.length - 8`
-* `noAssert` {Boolean} Default: false
-* Return: {Number} The offset plus the number of written bytes
-
-Writes `value` to the Buffer at the specified `offset` with specified endian
-format (`writeDoubleBE()` writes big endian, `writeDoubleLE()` writes little
-endian). The `value` argument *should* be a valid 64-bit double. Behavior is
-not defined when `value` is anything other than a 64-bit double.
-
-Set `noAssert` to true to skip validation of `value` and `offset`. This means
-that `value` may be too large for the specific function and `offset` may be
-beyond the end of the Buffer leading to the values being silently dropped. This
-should not be used unless you are certain of correctness.
-
-Example:
-
-```js
-const buf = Buffer.allocUnsafe(8);
-buf.writeDoubleBE(0xdeadbeefcafebabe, 0);
-
-console.log(buf);
- // Prints:
-
-buf.writeDoubleLE(0xdeadbeefcafebabe, 0);
-
-console.log(buf);
- // Prints:
-```
-
-### buf.writeFloatBE(value, offset[, noAssert])
-### buf.writeFloatLE(value, offset[, noAssert])
-
-* `value` {Number} Bytes to be written to Buffer
-* `offset` {Number} `0 <= offset <= buf.length - 4`
-* `noAssert` {Boolean} Default: false
-* Return: {Number} The offset plus the number of written bytes
-
-Writes `value` to the Buffer at the specified `offset` with specified endian
-format (`writeFloatBE()` writes big endian, `writeFloatLE()` writes little
-endian). Behavior is not defined when `value` is anything other than a 32-bit
-float.
-
-Set `noAssert` to true to skip validation of `value` and `offset`. This means
-that `value` may be too large for the specific function and `offset` may be
-beyond the end of the Buffer leading to the values being silently dropped. This
-should not be used unless you are certain of correctness.
-
-Example:
-
-```js
-const buf = Buffer.allocUnsafe(4);
-buf.writeFloatBE(0xcafebabe, 0);
-
-console.log(buf);
- // Prints:
-
-buf.writeFloatLE(0xcafebabe, 0);
-
-console.log(buf);
- // Prints:
-```
-
-### buf.writeInt8(value, offset[, noAssert])
-
-* `value` {Number} Bytes to be written to Buffer
-* `offset` {Number} `0 <= offset <= buf.length - 1`
-* `noAssert` {Boolean} Default: false
-* Return: {Number} The offset plus the number of written bytes
-
-Writes `value` to the Buffer at the specified `offset`. The `value` should be a
-valid signed 8-bit integer. Behavior is not defined when `value` is anything
-other than a signed 8-bit integer.
-
-Set `noAssert` to true to skip validation of `value` and `offset`. This means
-that `value` may be too large for the specific function and `offset` may be
-beyond the end of the Buffer leading to the values being silently dropped. This
-should not be used unless you are certain of correctness.
-
-The `value` is interpreted and written as a two's complement signed integer.
-
-```js
-const buf = Buffer.allocUnsafe(2);
-buf.writeInt8(2, 0);
-buf.writeInt8(-2, 1);
-console.log(buf);
- // Prints:
-```
-
-### buf.writeInt16BE(value, offset[, noAssert])
-### buf.writeInt16LE(value, offset[, noAssert])
-
-* `value` {Number} Bytes to be written to Buffer
-* `offset` {Number} `0 <= offset <= buf.length - 2`
-* `noAssert` {Boolean} Default: false
-* Return: {Number} The offset plus the number of written bytes
-
-Writes `value` to the Buffer at the specified `offset` with specified endian
-format (`writeInt16BE()` writes big endian, `writeInt16LE()` writes little
-endian). The `value` should be a valid signed 16-bit integer. Behavior is
-not defined when `value` is anything other than a signed 16-bit integer.
-
-Set `noAssert` to true to skip validation of `value` and `offset`. This means
-that `value` may be too large for the specific function and `offset` may be
-beyond the end of the Buffer leading to the values being silently dropped. This
-should not be used unless you are certain of correctness.
-
-The `value` is interpreted and written as a two's complement signed integer.
-
-```js
-const buf = Buffer.allocUnsafe(4);
-buf.writeInt16BE(0x0102,0);
-buf.writeInt16LE(0x0304,2);
-console.log(buf);
- // Prints:
-```
-
-### buf.writeInt32BE(value, offset[, noAssert])
-### buf.writeInt32LE(value, offset[, noAssert])
-
-* `value` {Number} Bytes to be written to Buffer
-* `offset` {Number} `0 <= offset <= buf.length - 4`
-* `noAssert` {Boolean} Default: false
-* Return: {Number} The offset plus the number of written bytes
-
-Writes `value` to the Buffer at the specified `offset` with specified endian
-format (`writeInt32BE()` writes big endian, `writeInt32LE()` writes little
-endian). The `value` should be a valid signed 32-bit integer. Behavior is
-not defined when `value` is anything other than a signed 32-bit integer.
-
-Set `noAssert` to true to skip validation of `value` and `offset`. This means
-that `value` may be too large for the specific function and `offset` may be
-beyond the end of the Buffer leading to the values being silently dropped. This
-should not be used unless you are certain of correctness.
-
-The `value` is interpreted and written as a two's complement signed integer.
-
-```js
-const buf = Buffer.allocUnsafe(8);
-buf.writeInt32BE(0x01020304,0);
-buf.writeInt32LE(0x05060708,4);
-console.log(buf);
- // Prints:
-```
-
-### buf.writeIntBE(value, offset, byteLength[, noAssert])
-### buf.writeIntLE(value, offset, byteLength[, noAssert])
-
-* `value` {Number} Bytes to be written to Buffer
-* `offset` {Number} `0 <= offset <= buf.length - byteLength`
-* `byteLength` {Number} `0 < byteLength <= 6`
-* `noAssert` {Boolean} Default: false
-* Return: {Number} The offset plus the number of written bytes
-
-Writes `value` to the Buffer at the specified `offset` and `byteLength`.
-Supports up to 48 bits of accuracy. For example:
-
-```js
-const buf1 = Buffer.allocUnsafe(6);
-buf1.writeUIntBE(0x1234567890ab, 0, 6);
-console.log(buf1);
- // Prints:
-
-const buf2 = Buffer.allocUnsafe(6);
-buf2.writeUIntLE(0x1234567890ab, 0, 6);
-console.log(buf2);
- // Prints:
-```
-
-Set `noAssert` to true to skip validation of `value` and `offset`. This means
-that `value` may be too large for the specific function and `offset` may be
-beyond the end of the Buffer leading to the values being silently dropped. This
-should not be used unless you are certain of correctness.
-
-Behavior is not defined when `value` is anything other than an integer.
-
-### buf.writeUInt8(value, offset[, noAssert])
-
-* `value` {Number} Bytes to be written to Buffer
-* `offset` {Number} `0 <= offset <= buf.length - 1`
-* `noAssert` {Boolean} Default: false
-* Return: {Number} The offset plus the number of written bytes
-
-Writes `value` to the Buffer at the specified `offset`. The `value` should be a
-valid unsigned 8-bit integer. Behavior is not defined when `value` is anything
-other than an unsigned 8-bit integer.
-
-Set `noAssert` to true to skip validation of `value` and `offset`. This means
-that `value` may be too large for the specific function and `offset` may be
-beyond the end of the Buffer leading to the values being silently dropped. This
-should not be used unless you are certain of correctness.
-
-Example:
-
-```js
-const buf = Buffer.allocUnsafe(4);
-buf.writeUInt8(0x3, 0);
-buf.writeUInt8(0x4, 1);
-buf.writeUInt8(0x23, 2);
-buf.writeUInt8(0x42, 3);
-
-console.log(buf);
- // Prints:
-```
-
-### buf.writeUInt16BE(value, offset[, noAssert])
-### buf.writeUInt16LE(value, offset[, noAssert])
-
-* `value` {Number} Bytes to be written to Buffer
-* `offset` {Number} `0 <= offset <= buf.length - 2`
-* `noAssert` {Boolean} Default: false
-* Return: {Number} The offset plus the number of written bytes
-
-Writes `value` to the Buffer at the specified `offset` with specified endian
-format (`writeUInt16BE()` writes big endian, `writeUInt16LE()` writes little
-endian). The `value` should be a valid unsigned 16-bit integer. Behavior is
-not defined when `value` is anything other than an unsigned 16-bit integer.
-
-Set `noAssert` to true to skip validation of `value` and `offset`. This means
-that `value` may be too large for the specific function and `offset` may be
-beyond the end of the Buffer leading to the values being silently dropped. This
-should not be used unless you are certain of correctness.
-
-Example:
-
-```js
-const buf = Buffer.allocUnsafe(4);
-buf.writeUInt16BE(0xdead, 0);
-buf.writeUInt16BE(0xbeef, 2);
-
-console.log(buf);
- // Prints:
-
-buf.writeUInt16LE(0xdead, 0);
-buf.writeUInt16LE(0xbeef, 2);
-
-console.log(buf);
- // Prints:
-```
-
-### buf.writeUInt32BE(value, offset[, noAssert])
-### buf.writeUInt32LE(value, offset[, noAssert])
-
-* `value` {Number} Bytes to be written to Buffer
-* `offset` {Number} `0 <= offset <= buf.length - 4`
-* `noAssert` {Boolean} Default: false
-* Return: {Number} The offset plus the number of written bytes
-
-Writes `value` to the Buffer at the specified `offset` with specified endian
-format (`writeUInt32BE()` writes big endian, `writeUInt32LE()` writes little
-endian). The `value` should be a valid unsigned 32-bit integer. Behavior is
-not defined when `value` is anything other than an unsigned 32-bit integer.
-
-Set `noAssert` to true to skip validation of `value` and `offset`. This means
-that `value` may be too large for the specific function and `offset` may be
-beyond the end of the Buffer leading to the values being silently dropped. This
-should not be used unless you are certain of correctness.
-
-Example:
-
-```js
-const buf = Buffer.allocUnsafe(4);
-buf.writeUInt32BE(0xfeedface, 0);
-
-console.log(buf);
- // Prints:
-
-buf.writeUInt32LE(0xfeedface, 0);
-
-console.log(buf);
- // Prints: