diff --git a/.eslintrc b/.eslintrc index 337ff4f35de17c..8d3689443bd1de 100644 --- a/.eslintrc +++ b/.eslintrc @@ -121,7 +121,9 @@ rules: align-function-arguments: 2 align-multiline-assignment: 2 assert-fail-single-argument: 2 + assert-throws-arguments: [2, { requireTwo: false }] new-with-error: [2, Error, RangeError, TypeError, SyntaxError, ReferenceError] + no-useless-regex-char-class-escape: [2, { override: ['[', ']'] }] # Global scoped method and vars globals: diff --git a/.gitignore b/.gitignore index b6790e116cd6b5..4f129c4581ba8f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,19 @@ +# Whitelist dotfiles +.* +!deps/**/.* +!test/fixtures/**/.* +!tools/eslint/**/.* +!tools/doc/node_modules/**/.* +!.editorconfig +!.eslintignore +!.eslintrc +!.gitattributes +!.github +!.gitignore +!.gitkeep +!.mailmap +!.remarkrc + core vgcore.* v8*.log @@ -16,8 +32,6 @@ node node_g *.swp .benchmark_reports -/.project -/.cproject icu_config.gypi .eslintcache diff --git a/CHANGELOG.md b/CHANGELOG.md index 6fb528654cd40c..f5263390e5c07c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,7 +28,8 @@ release. - 7.2.0
+ 7.2.1
+ 7.2.0
7.1.0
7.0.0
diff --git a/COLLABORATOR_GUIDE.md b/COLLABORATOR_GUIDE.md index 214f262fdc61d5..702d539d460301 100644 --- a/COLLABORATOR_GUIDE.md +++ b/COLLABORATOR_GUIDE.md @@ -36,6 +36,8 @@ Collaborators or additional evidence that the issue has relevance, the issue may be closed. Remember that issues can always be re-opened if necessary. +[**See "Who to CC in issues"**](./onboarding-extras.md#who-to-cc-in-issues) + ## Accepting Modifications All modifications to the Node.js code and documentation should be @@ -60,19 +62,20 @@ and work schedules. Trivial changes (e.g. those which fix minor bugs or improve performance without affecting API or causing other wide-reaching impact) may be landed after a shorter delay. -For non-breaking changes, if there is no disagreement amongst Collaborators, a -pull request may be landed given appropriate review. Where there is discussion -amongst Collaborators, consensus should be sought if possible. The -lack of consensus may indicate the need to elevate discussion to the -CTC for resolution (see below). - -Breaking changes (that is, pull requests that require an increase in the -major version number, known as `semver-major` changes) must be elevated for -review by the CTC. This does not necessarily mean that the PR must be put onto -the CTC meeting agenda. If multiple CTC members approve (`LGTM`) the PR and no -Collaborators oppose the PR, it can be landed. Where there is disagreement among -CTC members or objections from one or more Collaborators, `semver-major` pull -requests should be put on the CTC meeting agenda. +For non-breaking changes, if there is no disagreement amongst +Collaborators, a pull request may be landed given appropriate review. +Where there is discussion amongst Collaborators, consensus should be +sought if possible. The lack of consensus may indicate the need to +elevate discussion to the CTC for resolution (see below). + +Breaking changes (that is, pull requests that require an increase in +the major version number, known as `semver-major` changes) must be +elevated for review by the CTC. This does not necessarily mean that the +PR must be put onto the CTC meeting agenda. If multiple CTC members +approve (`LGTM`) the PR and no Collaborators oppose the PR, it can be +landed. Where there is disagreement among CTC members or objections +from one or more Collaborators, `semver-major` pull requests should be +put on the CTC meeting agenda. All bugfixes require a test case which demonstrates the defect. The test should *fail* before the change, and *pass* after the change. @@ -96,13 +99,20 @@ The CTC should serve as the final arbiter where required. ## Landing Pull Requests +* Please never use GitHub's green ["Merge Pull Request"](https://help.github.com/articles/merging-a-pull-request/#merging-a-pull-request-using-the-github-web-interface) button. + * If you do, please force-push removing the merge. + * Reasons for not using the web interface button: + * The merge method will add an unnecessary merge commit. + * The rebase & merge method adds metadata to the commit title. + * The rebase method changes the author. + * The squash & merge method has been known to add metadata to the + commit title. + * If more than one author has contributed to the PR, only the + latest author will be considered during the squashing. + Always modify the original commit message to include additional meta information regarding the change process: -- A `Reviewed-By: Name ` line for yourself and any - other Collaborators who have reviewed the change. - - Useful for @mentions / contact list if something goes wrong in the PR. - - Protects against the assumption that GitHub will be around forever. - A `PR-URL:` line that references the *full* GitHub URL of the original pull request being merged so it's easy to trace a commit back to the conversation that led up to that change. @@ -110,6 +120,10 @@ information regarding the change process: for an issue, and/or the hash and commit message if the commit fixes a bug in a previous commit. Multiple `Fixes:` lines may be added if appropriate. +- A `Reviewed-By: Name ` line for yourself and any + other Collaborators who have reviewed the change. + - Useful for @mentions / contact list if something goes wrong in the PR. + - Protects against the assumption that GitHub will be around forever. Review the commit message to ensure that it adheres to the guidelines outlined in the [contributing](https://github.com/nodejs/node/blob/master/CONTRIBUTING.md#step-3-commit) guide. @@ -119,7 +133,6 @@ See the commit log for examples such as exactly how to format your commit messages. Additionally: - - Double check PRs to make sure the person's _full name_ and email address are correct before merging. - Except when updating dependencies, all commits should be self @@ -224,16 +237,36 @@ Save the file and close the editor. You'll be asked to enter a new commit message for that commit. This is a good moment to fix incorrect commit logs, ensure that they are properly formatted, and add `Reviewed-By` lines. +* The commit message text must conform to the [commit message guidelines](../CONTRIBUTING.md#step-3-commit). Time to push it: ```text $ git push origin master ``` +* Optional: Force push the amended commit to the branch you used to +open the pull request. If your branch is called `bugfix`, then the +command would be `git push --force-with-lease origin master:bugfix`. +When the pull request is closed, this will cause the pull request to +show the purple merged status rather than the red closed status that is +usually used for pull requests that weren't merged. Only do this when +landing your own contributions. + +* Close the pull request with a "Landed in ``" comment. If +your pull request shows the purple merged status then you should still +add the "Landed in .." comment if you added +multiple commits. + +* `./configure && make -j8 test` + * `-j8` builds node in parallel with 8 threads. Adjust to the number + of cores or processor-level threads your processor has (or slightly + more) for best results. ### I Just Made a Mistake -With `git`, there's a way to override remote trees by force pushing +* Ping a CTC member. +* `#node-dev` on freenode +* With `git`, there's a way to override remote trees by force pushing (`git push -f`). This should generally be seen as forbidden (since you're rewriting history on a repository other people are working against) but is allowed for simpler slip-ups such as typos in commit @@ -241,6 +274,9 @@ messages. However, you are only allowed to force push to any Node.js branch within 10 minutes from your original push. If someone else pushes to the branch or the 10 minute period passes, consider the commit final. + * Use `--force-with-lease` to minimize the chance of overwriting + someone else's change. + * Post to `#node-dev` (IRC) if you force push. ### Long Term Support diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 17aa305f8c7fe4..6f44949a31e0ca 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -150,7 +150,7 @@ $ git rebase upstream/master Bug fixes and features **should come with tests**. Add your tests in the `test/parallel/` directory. For guidance on how to write a test for the Node.js -project, see this [guide](./doc/guides/writing_tests.md). Looking at other tests +project, see this [guide](./doc/guides/writing-tests.md). Looking at other tests to see how they should be structured can also help. To run the tests on Unix / OS X: diff --git a/Makefile b/Makefile index 24aa53b64d4fe7..975efc96866009 100644 --- a/Makefile +++ b/Makefile @@ -715,6 +715,8 @@ CPPLINT_FILES = $(filter-out $(CPPLINT_EXCLUDE), $(wildcard \ src/*.h \ test/addons/*/*.cc \ test/addons/*/*.h \ + test/cctest/*.cc \ + test/cctest/*.h \ tools/icu/*.cc \ tools/icu/*.h \ )) diff --git a/README.md b/README.md index f8cc58c8310136..68ffbb90598d0f 100644 --- a/README.md +++ b/README.md @@ -217,8 +217,6 @@ more information about the governance of the Node.js project, see **Claudio Rodriguez** <cjrodr@yahoo.com> * [danbev](https://github.com/danbev) - **Daniel Bevenius** <daniel.bevenius@gmail.com> -* [domenic](https://github.com/domenic) - -**Domenic Denicola** <d@domenic.me> * [eljefedelrodeodeljefe](https://github.com/eljefedelrodeodeljefe) - **Robert Jefe Lindstaedt** <robert.lindstaedt@gmail.com> * [estliberitas](https://github.com/estliberitas) - @@ -337,8 +335,6 @@ more information about the governance of the Node.js project, see **Yorkie Liu** <yorkiefixer@gmail.com> * [yosuke-furukawa](https://github.com/yosuke-furukawa) - **Yosuke Furukawa** <yosuke.furukawa@gmail.com> -* [zkat](https://github.com/zkat) - -**Kat Marchán** <kzm@sykosomatic.org> Collaborators (which includes CTC members) follow the [COLLABORATOR_GUIDE.md](./COLLABORATOR_GUIDE.md) in maintaining the Node.js @@ -362,15 +358,12 @@ Releases of Node.js and io.js will be signed with one of the following GPG keys: `C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8` * **Rod Vagg** <rod@vagg.org> `DD8F2338BAE7501E3DD5AC78C273792F7D83545D` -* **Sam Roberts** <octetcloud@keybase.io> -`0034A06D9D9B0064CE8ADF6BF1747F4AD2306D93` The full set of trusted release keys can be imported by running: ```shell gpg --keyserver pool.sks-keyservers.net --recv-keys 9554F04D7259F04124DE6B476D5A82AC7E37093B gpg --keyserver pool.sks-keyservers.net --recv-keys 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 -gpg --keyserver pool.sks-keyservers.net --recv-keys 0034A06D9D9B0064CE8ADF6BF1747F4AD2306D93 gpg --keyserver pool.sks-keyservers.net --recv-keys FD3A5288F042B6850C66B31F09FE44734EB7990E gpg --keyserver pool.sks-keyservers.net --recv-keys 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 gpg --keyserver pool.sks-keyservers.net --recv-keys DD8F2338BAE7501E3DD5AC78C273792F7D83545D diff --git a/benchmark/_http-benchmarkers.js b/benchmark/_http-benchmarkers.js index 581bed6b2dc9e6..5429bf386d85ac 100644 --- a/benchmark/_http-benchmarkers.js +++ b/benchmark/_http-benchmarkers.js @@ -15,8 +15,13 @@ function AutocannonBenchmarker() { } AutocannonBenchmarker.prototype.create = function(options) { - const args = ['-d', options.duration, '-c', options.connections, '-j', '-n', - `http://127.0.0.1:${options.port}${options.path}` ]; + const args = [ + '-d', options.duration, + '-c', options.connections, + '-j', + '-n', + `http://127.0.0.1:${options.port}${options.path}` + ]; const child = child_process.spawn(this.autocannon_exe, args); return child; }; @@ -43,8 +48,12 @@ function WrkBenchmarker() { } WrkBenchmarker.prototype.create = function(options) { - const args = ['-d', options.duration, '-c', options.connections, '-t', 8, - `http://127.0.0.1:${options.port}${options.path}` ]; + const args = [ + '-d', options.duration, + '-c', options.connections, + '-t', 8, + `http://127.0.0.1:${options.port}${options.path}` + ]; const child = child_process.spawn('wrk', args); return child; }; @@ -59,8 +68,7 @@ WrkBenchmarker.prototype.processResults = function(output) { } }; -const http_benchmarkers = [ new WrkBenchmarker(), - new AutocannonBenchmarker() ]; +const http_benchmarkers = [new WrkBenchmarker(), new AutocannonBenchmarker()]; const benchmarkers = {}; diff --git a/benchmark/arrays/var-int.js b/benchmark/arrays/var-int.js index 74a73c9515fffa..36b0a908a59a4f 100644 --- a/benchmark/arrays/var-int.js +++ b/benchmark/arrays/var-int.js @@ -1,9 +1,21 @@ 'use strict'; var common = require('../common.js'); + +var types = [ + 'Array', + 'Buffer', + 'Int8Array', + 'Uint8Array', + 'Int16Array', + 'Uint16Array', + 'Int32Array', + 'Uint32Array', + 'Float32Array', + 'Float64Array' +]; + var bench = common.createBenchmark(main, { - type: ['Array', 'Buffer', 'Int8Array', 'Uint8Array', 'Int16Array', - 'Uint16Array', 'Int32Array', 'Uint32Array', 'Float32Array', - 'Float64Array'], + type: types, n: [25] }); diff --git a/benchmark/arrays/zero-float.js b/benchmark/arrays/zero-float.js index e2569eed5c4e75..047e179234f33a 100644 --- a/benchmark/arrays/zero-float.js +++ b/benchmark/arrays/zero-float.js @@ -1,9 +1,21 @@ 'use strict'; var common = require('../common.js'); + +var types = [ + 'Array', + 'Buffer', + 'Int8Array', + 'Uint8Array', + 'Int16Array', + 'Uint16Array', + 'Int32Array', + 'Uint32Array', + 'Float32Array', + 'Float64Array' +]; + var bench = common.createBenchmark(main, { - type: ['Array', 'Buffer', 'Int8Array', 'Uint8Array', 'Int16Array', - 'Uint16Array', 'Int32Array', 'Uint32Array', 'Float32Array', - 'Float64Array'], + type: types, n: [25] }); diff --git a/benchmark/arrays/zero-int.js b/benchmark/arrays/zero-int.js index 8be70c1e87113a..4e5c97e8af0b9c 100644 --- a/benchmark/arrays/zero-int.js +++ b/benchmark/arrays/zero-int.js @@ -1,9 +1,21 @@ 'use strict'; var common = require('../common.js'); + +var types = [ + 'Array', + 'Buffer', + 'Int8Array', + 'Uint8Array', + 'Int16Array', + 'Uint16Array', + 'Int32Array', + 'Uint32Array', + 'Float32Array', + 'Float64Array' +]; + var bench = common.createBenchmark(main, { - type: ['Array', 'Buffer', 'Int8Array', 'Uint8Array', 'Int16Array', - 'Uint16Array', 'Int32Array', 'Uint32Array', 'Float32Array', - 'Float64Array'], + type: types, n: [25] }); diff --git a/benchmark/buffers/buffer-base64-decode.js b/benchmark/buffers/buffer-base64-decode.js index 3497bfd05fd2a2..01f7f1bc91bc4a 100644 --- a/benchmark/buffers/buffer-base64-decode.js +++ b/benchmark/buffers/buffer-base64-decode.js @@ -7,7 +7,7 @@ const bench = common.createBenchmark(main, {}); function main(conf) { const s = 'abcd'.repeat(8 << 20); s.match(/./); // Flatten string. - assert.equal(s.length % 4, 0); + assert.strictEqual(s.length % 4, 0); const b = Buffer.allocUnsafe(s.length / 4 * 3); b.write(s, 0, s.length, 'base64'); bench.start(); diff --git a/benchmark/buffers/buffer-indexof.js b/benchmark/buffers/buffer-indexof.js index 380f40b23d8ab6..cae8b964aebbcf 100644 --- a/benchmark/buffers/buffer-indexof.js +++ b/benchmark/buffers/buffer-indexof.js @@ -3,12 +3,26 @@ var common = require('../common.js'); var fs = require('fs'); const path = require('path'); +const searchStrings = [ + '@', + 'SQ', + '10x', + '--l', + 'Alice', + 'Gryphon', + 'Panther', + 'Ou est ma chatte?', + 'found it very', + 'among mad people', + 'neighbouring pool', + 'Soo--oop', + 'aaaaaaaaaaaaaaaaa', + 'venture to go near the house till she had brought herself down to', + ' to the Caterpillar' +]; + var bench = common.createBenchmark(main, { - search: ['@', 'SQ', '10x', '--l', 'Alice', 'Gryphon', 'Panther', - 'Ou est ma chatte?', 'found it very', 'among mad people', - 'neighbouring pool', 'Soo--oop', 'aaaaaaaaaaaaaaaaa', - 'venture to go near the house till she had brought herself down to', - ' to the Caterpillar'], + search: searchStrings, encoding: ['undefined', 'utf8', 'ucs2', 'binary'], type: ['buffer', 'string'], iter: [1] diff --git a/benchmark/buffers/buffer-read.js b/benchmark/buffers/buffer-read.js index 1cdc4bc4697067..d23bd029f8bd44 100644 --- a/benchmark/buffers/buffer-read.js +++ b/benchmark/buffers/buffer-read.js @@ -1,15 +1,27 @@ 'use strict'; var common = require('../common.js'); +var types = [ + 'UInt8', + 'UInt16LE', + 'UInt16BE', + 'UInt32LE', + 'UInt32BE', + 'Int8', + 'Int16LE', + 'Int16BE', + 'Int32LE', + 'Int32BE', + 'FloatLE', + 'FloatBE', + 'DoubleLE', + 'DoubleBE' +]; + var bench = common.createBenchmark(main, { noAssert: ['false', 'true'], buffer: ['fast', 'slow'], - type: ['UInt8', 'UInt16LE', 'UInt16BE', - 'UInt32LE', 'UInt32BE', - 'Int8', 'Int16LE', 'Int16BE', - 'Int32LE', 'Int32BE', - 'FloatLE', 'FloatBE', - 'DoubleLE', 'DoubleBE'], + type: types, millions: [1] }); diff --git a/benchmark/buffers/buffer-write.js b/benchmark/buffers/buffer-write.js index ae78eaf91d0147..32c733045335cd 100644 --- a/benchmark/buffers/buffer-write.js +++ b/benchmark/buffers/buffer-write.js @@ -1,14 +1,27 @@ 'use strict'; var common = require('../common.js'); + +var types = [ + 'UInt8', + 'UInt16LE', + 'UInt16BE', + 'UInt32LE', + 'UInt32BE', + 'Int8', + 'Int16LE', + 'Int16BE', + 'Int32LE', + 'Int32BE', + 'FloatLE', + 'FloatBE', + 'DoubleLE', + 'DoubleBE' +]; + var bench = common.createBenchmark(main, { noAssert: ['false', 'true'], buffer: ['fast', 'slow'], - type: ['UInt8', 'UInt16LE', 'UInt16BE', - 'UInt32LE', 'UInt32BE', - 'Int8', 'Int16LE', 'Int16BE', - 'Int32LE', 'Int32BE', - 'FloatLE', 'FloatBE', - 'DoubleLE', 'DoubleBE'], + type: types, millions: [1] }); diff --git a/benchmark/buffers/dataview-set.js b/benchmark/buffers/dataview-set.js index a208effd82bf19..717a77de71d641 100644 --- a/benchmark/buffers/dataview-set.js +++ b/benchmark/buffers/dataview-set.js @@ -1,12 +1,25 @@ 'use strict'; var common = require('../common.js'); + +var types = [ + 'Uint8', + 'Uint16LE', + 'Uint16BE', + 'Uint32LE', + 'Uint32BE', + 'Int8', + 'Int16LE', + 'Int16BE', + 'Int32LE', + 'Int32BE', + 'Float32LE', + 'Float32BE', + 'Float64LE', + 'Float64BE' +]; + var bench = common.createBenchmark(main, { - type: ['Uint8', 'Uint16LE', 'Uint16BE', - 'Uint32LE', 'Uint32BE', - 'Int8', 'Int16LE', 'Int16BE', - 'Int32LE', 'Int32BE', - 'Float32LE', 'Float32BE', - 'Float64LE', 'Float64BE'], + type: types, millions: [1] }); diff --git a/benchmark/es/map-bench.js b/benchmark/es/map-bench.js index 574da25d53f2f2..047fc05abdc92f 100644 --- a/benchmark/es/map-bench.js +++ b/benchmark/es/map-bench.js @@ -15,7 +15,7 @@ function runObject(n) { for (; i < n; i++) { m['i' + i] = i; m['s' + i] = String(i); - assert.equal(m['i' + i], m['s' + i]); + assert.strictEqual(String(m['i' + i]), m['s' + i]); m['i' + i] = undefined; m['s' + i] = undefined; } @@ -29,7 +29,7 @@ function runNullProtoObject(n) { for (; i < n; i++) { m['i' + i] = i; m['s' + i] = String(i); - assert.equal(m['i' + i], m['s' + i]); + assert.strictEqual(String(m['i' + i]), m['s' + i]); m['i' + i] = undefined; m['s' + i] = undefined; } @@ -53,7 +53,7 @@ function runFakeMap(n) { for (; i < n; i++) { m.set('i' + i, i); m.set('s' + i, String(i)); - assert.equal(m.get('i' + i), m.get('s' + i)); + assert.strictEqual(String(m.get('i' + i)), m.get('s' + i)); m.set('i' + i, undefined); m.set('s' + i, undefined); } @@ -67,7 +67,7 @@ function runMap(n) { for (; i < n; i++) { m.set('i' + i, i); m.set('s' + i, String(i)); - assert.equal(m.get('i' + i), m.get('s' + i)); + assert.strictEqual(String(m.get('i' + i)), m.get('s' + i)); m.set('i' + i, undefined); m.set('s' + i, undefined); } diff --git a/benchmark/http/_http_simple.js b/benchmark/http/_http_simple.js index 1c965b21c15ca0..644601864dd857 100644 --- a/benchmark/http/_http_simple.js +++ b/benchmark/http/_http_simple.js @@ -75,8 +75,11 @@ var server = module.exports = http.createServer(function(req, res) { body = fixed; } else if (command === 'echo') { - res.writeHead(200, { 'Content-Type': 'text/plain', - 'Transfer-Encoding': 'chunked' }); + const headers = { + 'Content-Type': 'text/plain', + 'Transfer-Encoding': 'chunked' + }; + res.writeHead(200, headers); req.pipe(res); return; @@ -88,8 +91,11 @@ var server = module.exports = http.createServer(function(req, res) { // example: http://localhost:port/bytes/512/4 // sends a 512 byte body in 4 chunks of 128 bytes if (n_chunks > 0) { - res.writeHead(status, { 'Content-Type': 'text/plain', - 'Transfer-Encoding': 'chunked' }); + const headers = { + 'Content-Type': 'text/plain', + 'Transfer-Encoding': 'chunked' + }; + res.writeHead(status, headers); // send body in chunks var len = body.length; var step = Math.floor(len / n_chunks) || 1; @@ -99,10 +105,12 @@ var server = module.exports = http.createServer(function(req, res) { } res.end(body.slice((n_chunks - 1) * step)); } else { - var content_length = body.length.toString(); + const headers = { + 'Content-Type': 'text/plain', + 'Content-Length': body.length.toString() + }; - res.writeHead(status, { 'Content-Type': 'text/plain', - 'Content-Length': content_length }); + res.writeHead(status, headers); res.end(body); } }); diff --git a/benchmark/http/http_server_for_chunky_client.js b/benchmark/http/http_server_for_chunky_client.js index fade895aa07fdd..e58ba5f5a15cc7 100644 --- a/benchmark/http/http_server_for_chunky_client.js +++ b/benchmark/http/http_server_for_chunky_client.js @@ -21,8 +21,11 @@ try { } catch (e) { /* ignore */ } server = http.createServer(function(req, res) { - res.writeHead(200, { 'content-type': 'text/plain', - 'content-length': '2' }); + var headers = { + 'content-type': 'text/plain', + 'content-length': '2' + }; + res.writeHead(200, headers); res.end('ok'); }); diff --git a/benchmark/misc/console.js b/benchmark/misc/console.js index 17f7ed0f4d96b0..9a08a411c51f82 100644 --- a/benchmark/misc/console.js +++ b/benchmark/misc/console.js @@ -8,11 +8,15 @@ const v8 = require('v8'); v8.setFlagsFromString('--allow_natives_syntax'); +const methods = [ + 'restAndSpread', + 'argumentsAndApply', + 'restAndApply', + 'restAndConcat' +]; + var bench = common.createBenchmark(main, { - method: ['restAndSpread', - 'argumentsAndApply', - 'restAndApply', - 'restAndConcat'], + method: methods, concat: [1, 0], n: [1000000] }); diff --git a/benchmark/querystring/querystring-parse.js b/benchmark/querystring/querystring-parse.js index 590b89f307c697..d78ef99f84f3d4 100644 --- a/benchmark/querystring/querystring-parse.js +++ b/benchmark/querystring/querystring-parse.js @@ -3,14 +3,18 @@ var common = require('../common.js'); var querystring = require('querystring'); var v8 = require('v8'); +var types = [ + 'noencode', + 'multicharsep', + 'encodemany', + 'encodelast', + 'multivalue', + 'multivaluemany', + 'manypairs' +]; + var bench = common.createBenchmark(main, { - type: ['noencode', - 'multicharsep', - 'encodemany', - 'encodelast', - 'multivalue', - 'multivaluemany', - 'manypairs'], + type: types, n: [1e6], }); diff --git a/benchmark/tls/throughput.js b/benchmark/tls/throughput.js index d0de99e7b54b85..d3b7d0c02237a2 100644 --- a/benchmark/tls/throughput.js +++ b/benchmark/tls/throughput.js @@ -37,10 +37,12 @@ function main(conf) { throw new Error('invalid type'); } - options = { key: fs.readFileSync(cert_dir + '/test_key.pem'), - cert: fs.readFileSync(cert_dir + '/test_cert.pem'), - ca: [ fs.readFileSync(cert_dir + '/test_ca.pem') ], - ciphers: 'AES256-GCM-SHA384' }; + options = { + key: fs.readFileSync(cert_dir + '/test_key.pem'), + cert: fs.readFileSync(cert_dir + '/test_cert.pem'), + ca: [ fs.readFileSync(cert_dir + '/test_ca.pem') ], + ciphers: 'AES256-GCM-SHA384' + }; server = tls.createServer(options, onConnection); setTimeout(done, dur * 1000); diff --git a/benchmark/tls/tls-connect.js b/benchmark/tls/tls-connect.js index 6ed4253f97fca8..5ca67f3230d3c8 100644 --- a/benchmark/tls/tls-connect.js +++ b/benchmark/tls/tls-connect.js @@ -20,11 +20,13 @@ function main(conf) { dur = +conf.dur; concurrency = +conf.concurrency; - var cert_dir = path.resolve(__dirname, '../../test/fixtures'), - options = { key: fs.readFileSync(cert_dir + '/test_key.pem'), - cert: fs.readFileSync(cert_dir + '/test_cert.pem'), - ca: [ fs.readFileSync(cert_dir + '/test_ca.pem') ], - ciphers: 'AES256-GCM-SHA384' }; + var cert_dir = path.resolve(__dirname, '../../test/fixtures'); + var options = { + key: fs.readFileSync(cert_dir + '/test_key.pem'), + cert: fs.readFileSync(cert_dir + '/test_cert.pem'), + ca: [ fs.readFileSync(cert_dir + '/test_ca.pem') ], + ciphers: 'AES256-GCM-SHA384' + }; server = tls.createServer(options, onConnection); server.listen(common.PORT, onListening); @@ -42,8 +44,11 @@ function onConnection(conn) { } function makeConnection() { - var conn = tls.connect({ port: common.PORT, - rejectUnauthorized: false }, function() { + var options = { + port: common.PORT, + rejectUnauthorized: false + }; + var conn = tls.connect(options, function() { clientConn++; conn.on('error', function(er) { console.error('client error', er); diff --git a/benchmark/util/format.js b/benchmark/util/format.js index 05176aa24fb01f..8040554ba0861a 100644 --- a/benchmark/util/format.js +++ b/benchmark/util/format.js @@ -3,13 +3,16 @@ const util = require('util'); const common = require('../common'); const v8 = require('v8'); +const types = [ + 'string', + 'number', + 'object', + 'unknown', + 'no-replace' +]; const bench = common.createBenchmark(main, { n: [1e6], - type: ['string', - 'number', - 'object', - 'unknown', - 'no-replace'] + type: types }); const inputs = { diff --git a/configure b/configure index 88be15abdb0c18..bf937ca702a550 100755 --- a/configure +++ b/configure @@ -1,5 +1,10 @@ #!/usr/bin/env python +import sys +if sys.version_info[0] != 2 or sys.version_info[1] not in (6, 7): + sys.stdout.write("Please use either Python 2.6 or 2.7\n") + sys.exit(1) + import errno import optparse import os @@ -7,7 +12,6 @@ import pprint import re import shlex import subprocess -import sys import shutil import string @@ -488,7 +492,7 @@ def pkg_config(pkg): shlex.split(pkg_config) + ['--silence-errors', flag, pkg], stdout=subprocess.PIPE) val = proc.communicate()[0].strip() - except OSError, e: + except OSError as e: if e.errno != errno.ENOENT: raise e # Unexpected error. return (None, None, None) # No pkg-config/pkgconf installed. retval += (val,) @@ -524,12 +528,12 @@ def get_version_helper(cc, regexp): proc = subprocess.Popen(shlex.split(cc) + ['-v'], stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE) except OSError: - print '''Node.js configure error: No acceptable C compiler found! + print('''Node.js configure error: No acceptable C compiler found! Please make sure you have a C compiler installed on your system and/or consider adjusting the CC environment variable if you installed it in a non-standard prefix. - ''' + ''') sys.exit() match = re.search(regexp, proc.communicate()[1]) @@ -555,12 +559,12 @@ def get_gas_version(cc): stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE) except OSError: - print '''Node.js configure error: No acceptable C compiler found! + print('''Node.js configure error: No acceptable C compiler found! Please make sure you have a C compiler installed on your system and/or consider adjusting the CC environment variable if you installed it in a non-standard prefix. - ''' + ''') sys.exit() match = re.match(r"GNU assembler version ([2-9]\.[0-9]+)", @@ -615,12 +619,12 @@ def cc_macros(cc=None): stdout=subprocess.PIPE, stderr=subprocess.PIPE) except OSError: - print '''Node.js configure error: No acceptable C compiler found! + print('''Node.js configure error: No acceptable C compiler found! Please make sure you have a C compiler installed on your system and/or consider adjusting the CC environment variable if you installed it in a non-standard prefix. - ''' + ''') sys.exit() p.stdin.write('\n') @@ -848,7 +852,14 @@ def configure_node(o): o['variables']['node_no_browser_globals'] = b(options.no_browser_globals) o['variables']['node_shared'] = b(options.shared) node_module_version = getmoduleversion.get_version() - shlib_suffix = '%s.dylib' if sys.platform == 'darwin' else 'so.%s' + + if sys.platform == 'darwin': + shlib_suffix = '%s.dylib' + elif sys.platform.startswith('aix'): + shlib_suffix = '%s.a' + else: + shlib_suffix = 'so.%s' + shlib_suffix %= node_module_version o['variables']['node_module_version'] = int(node_module_version) o['variables']['shlib_suffix'] = shlib_suffix @@ -949,7 +960,7 @@ def configure_static(o): def write(filename, data): filename = os.path.join(root_dir, filename) - print 'creating ', filename + print('creating %s' % filename) f = open(filename, 'w+') f.write(data) @@ -969,7 +980,7 @@ def glob_to_var(dir_base, dir_sub, patch_dir): patchfile = '%s/%s/%s' % (dir_base, patch_dir, file) if os.path.isfile(patchfile): srcfile = '%s/%s' % (patch_dir, file) - print 'Using version-specific floating patch %s' % patchfile + print('Using version-specific floating patch %s' % patchfile) list.append(srcfile) break return list @@ -984,8 +995,8 @@ def configure_intl(o): def icu_download(path): # download ICU, if needed if not os.access(options.download_path, os.W_OK): - print 'Error: cannot write to desired download path. ' \ - 'Either create it or verify permissions.' + print('Error: cannot write to desired download path. ' \ + 'Either create it or verify permissions.') sys.exit(1) for icu in icus: url = icu['url'] @@ -996,16 +1007,16 @@ def configure_intl(o): if nodedownload.candownload(auto_downloads, "icu"): nodedownload.retrievefile(url, targetfile) else: - print ' Re-using existing %s' % targetfile + print(' Re-using existing %s' % targetfile) if os.path.isfile(targetfile): sys.stdout.write(' Checking file integrity with MD5:\r') gotmd5 = nodedownload.md5sum(targetfile) - print ' MD5: %s %s' % (gotmd5, targetfile) + print(' MD5: %s %s' % (gotmd5, targetfile)) if (md5 == gotmd5): return targetfile else: - print ' Expected: %s *MISMATCH*' % md5 - print '\n ** Corrupted ZIP? Delete %s to retry download.\n' % targetfile + print(' Expected: %s *MISMATCH*' % md5) + print('\n ** Corrupted ZIP? Delete %s to retry download.\n' % targetfile) return None icu_config = { 'variables': {} @@ -1025,7 +1036,7 @@ def configure_intl(o): with_icu_source = options.with_icu_source have_icu_path = bool(options.with_icu_path) if have_icu_path and with_intl != 'none': - print 'Error: Cannot specify both --with-icu-path and --with-intl' + print('Error: Cannot specify both --with-icu-path and --with-intl') sys.exit(1) elif have_icu_path: # Chromium .gyp mode: --with-icu-path @@ -1054,8 +1065,8 @@ def configure_intl(o): o['variables']['v8_enable_i18n_support'] = 1 pkgicu = pkg_config('icu-i18n') if pkgicu[0] is None: - print 'Error: could not load pkg-config data for "icu-i18n".' - print 'See above errors or the README.md.' + print('Error: could not load pkg-config data for "icu-i18n".') + print('See above errors or the README.md.') sys.exit(1) (libs, cflags, libpath) = pkgicu # libpath provides linker path which may contain spaces @@ -1108,17 +1119,17 @@ def configure_intl(o): # --with-icu-source processing # now, check that they didn't pass --with-icu-source=deps/icu elif with_icu_source and os.path.abspath(icu_full_path) == os.path.abspath(with_icu_source): - print 'Ignoring redundant --with-icu-source=%s' % (with_icu_source) + print('Ignoring redundant --with-icu-source=%s' % with_icu_source) with_icu_source = None # if with_icu_source is still set, try to use it. if with_icu_source: if os.path.isdir(icu_full_path): - print 'Deleting old ICU source: %s' % (icu_full_path) + print('Deleting old ICU source: %s' % icu_full_path) shutil.rmtree(icu_full_path) # now, what path was given? if os.path.isdir(with_icu_source): # it's a path. Copy it. - print '%s -> %s' % (with_icu_source, icu_full_path) + print('%s -> %s' % (with_icu_source, icu_full_path)) shutil.copytree(with_icu_source, icu_full_path) else: # could be file or URL. @@ -1142,7 +1153,8 @@ def configure_intl(o): os.rename(tmp_icu, icu_full_path) shutil.rmtree(icu_tmp_path) else: - print ' Error: --with-icu-source=%s did not result in an "icu" dir.' % with_icu_source + print(' Error: --with-icu-source=%s did not result in an "icu" dir.' % \ + with_icu_source) shutil.rmtree(icu_tmp_path) sys.exit(1) @@ -1151,22 +1163,22 @@ def configure_intl(o): # ICU source dir relative to tools/icu (for .gyp file) o['variables']['icu_path'] = icu_full_path if not os.path.isdir(icu_full_path): - print '* ECMA-402 (Intl) support didn\'t find ICU in %s..' % (icu_full_path) + print('* ECMA-402 (Intl) support didn\'t find ICU in %s..' % icu_full_path) # can we download (or find) a zipfile? localzip = icu_download(icu_full_path) if localzip: nodedownload.unpack(localzip, icu_parent_path) if not os.path.isdir(icu_full_path): - print ' Cannot build Intl without ICU in %s.' % (icu_full_path) - print ' (Fix, or disable with "--with-intl=none" )' + print(' Cannot build Intl without ICU in %s.' % icu_full_path) + print(' (Fix, or disable with "--with-intl=none" )') sys.exit(1) else: - print '* Using ICU in %s' % (icu_full_path) + print('* Using ICU in %s' % icu_full_path) # Now, what version of ICU is it? We just need the "major", such as 54. # uvernum.h contains it as a #define. uvernum_h = os.path.join(icu_full_path, 'source/common/unicode/uvernum.h') if not os.path.isfile(uvernum_h): - print ' Error: could not load %s - is ICU installed?' % uvernum_h + print(' Error: could not load %s - is ICU installed?' % uvernum_h) sys.exit(1) icu_ver_major = None matchVerExp = r'^\s*#define\s+U_ICU_VERSION_SHORT\s+"([^"]*)".*' @@ -1176,7 +1188,7 @@ def configure_intl(o): if m: icu_ver_major = m.group(1) if not icu_ver_major: - print ' Could not read U_ICU_VERSION_SHORT version from %s' % uvernum_h + print(' Could not read U_ICU_VERSION_SHORT version from %s' % uvernum_h) sys.exit(1) icu_endianness = sys.byteorder[0]; o['variables']['icu_ver_major'] = icu_ver_major @@ -1203,8 +1215,8 @@ def configure_intl(o): # this is the icudt*.dat file which node will be using (platform endianness) o['variables']['icu_data_file'] = icu_data_file if not os.path.isfile(icu_data_path): - print ' Error: ICU prebuilt data file %s does not exist.' % icu_data_path - print ' See the README.md.' + print(' Error: ICU prebuilt data file %s does not exist.' % icu_data_path) + print(' See the README.md.') # .. and we're not about to build it from .gyp! sys.exit(1) # map from variable name to subdirs diff --git a/deps/npm/.npmignore b/deps/npm/.npmignore index 93398c04aa252f..8aa0c3e0aff3a5 100644 --- a/deps/npm/.npmignore +++ b/deps/npm/.npmignore @@ -30,3 +30,5 @@ html/*.png /test/tap/builtin-config .nyc_output + +npm-shrinkwrap.json \ No newline at end of file diff --git a/deps/npm/.travis.yml b/deps/npm/.travis.yml index 988ee7e30a770f..12b8a8add810df 100644 --- a/deps/npm/.travis.yml +++ b/deps/npm/.travis.yml @@ -7,25 +7,42 @@ language: node_js matrix: include: # LTS is our most important target - - node_js: "4" + - node_js: "6" # DEPLOY_VERSION is used to set the couchapp setup mode for test/tap/registry.js # only gather coverage info for LTS env: DEPLOY_VERSION=testing COVERALLS_REPO_TOKEN="$COVERALLS_OPTIONAL_TOKEN" - # next LTS and master is next most important - - node_js: "6" - env: DEPLOY_VERSION=testing - # still in LTS maintenance until fall 2016 (also still in wide use) - - node_js: "0.10" - env: DEPLOY_VERSION=testing - # will be unsupported as soon as 6 becomes LTS and 7 released - - node_js: "5" + script: + - "node . run tap-cover -- \"test/tap/*.js\"" + - "unset COVERALLS_REPO_TOKEN ; node . run tap -- \"test/slow/*.js\" \"test/broken-under-*/*.js\"" + # previous LTS is next most important + - node_js: "4" env: DEPLOY_VERSION=testing - # technically in LTS / distros, unbeloved - - node_js: "0.12" + # then master + - node_js: "7" env: DEPLOY_VERSION=testing before_install: - - "node . install -g ." # required by test/tap/registry.js - "mkdir -p /var/run/couchdb" notifications: slack: npm-inc:kRqQjto7YbINqHPb1X6nS3g8 +cache: + directories: + - $HOME/.npm + - node_modules/.bin + - node_modules/deep-equal + - node_modules/marked + - node_modules/marked-man + - node_modules/npm-registry-couchapp + - node_modules/npm-registry-mock + - node_modules/require-inject + - node_modules/sprintf-js + - node_modules/standard + - node_modules/tacks + - node_modules/tap +install: + - "node . prune" + - "node . rebuild --depth=0" + - "node . install --ignore-scripts" + - "make -j4 doc" +script: + - "node . run tap -- \"test/tap/*.js\" \"test/slow/*.js\" \"test/broken-under-nyc/*.js\"" diff --git a/deps/npm/CHANGELOG.md b/deps/npm/CHANGELOG.md index e4f0ab3cdc705f..bbef5af2e2ab90 100644 --- a/deps/npm/CHANGELOG.md +++ b/deps/npm/CHANGELOG.md @@ -1,3 +1,34 @@ +### v3.10.10 (2016-11-04) + +See the discussion on [#14042](https://github.com/npm/npm/issues/14042) for +more context on this release, which is intended to address a serious regression +in shrinkwrap behavior in the version of the CLI currently bundled with Node.js +6 LTS "Boron". You should never install this version directly; instead update +to `npm@4`, which has everything in this release and more. + +#### REGRESSION FIX + +* [`9aebe98`](https://github.com/npm/npm/commit/9aebe982114ea2107f46baa1dcb11713b4aaad04) + [#14117](https://github.com/npm/npm/pull/14117) + Fixes a bug where installing a shrinkwrapped package would fail if the + platform failed to install an optional dependency included in the shrinkwrap. + ([@watilde](https://github.com/watilde)) + +#### UPDATE SUPPORT MATRIX + +With the advent of the second official Node.js LTS release, Node 6.x +'Boron', the Node.js project has now officially dropped versions 0.10 +and 0.12 out of the maintenance phase of LTS. (Also, Node 5 was never +part of LTS, and will see no further support now that Node 7 has been +released.) As a small team with limited resources, the npm CLI team is +following suit and dropping those versions of Node from its CI test +matrix. + +* [`c82ecfd`](https://github.com/npm/npm/commit/c82ecfdbe0b5f318a175714a8753efe4dfd3e4b3) + [#14503](https://github.com/npm/npm/pull/14503) + Node 6 is LTS; 5.x, 0.10, and 0.12 are unsupported. + ([@othiym23](https://github.com/othiym23)) + ### v3.10.9 (2016-10-06) Hi everyone! This is the last of our monthly releases. We're going to give diff --git a/deps/npm/appveyor.yml b/deps/npm/appveyor.yml index 6bec7c49389b91..1dd58c7b78ad59 100644 --- a/deps/npm/appveyor.yml +++ b/deps/npm/appveyor.yml @@ -1,16 +1,11 @@ environment: matrix: # LTS is our most important target - - nodejs_version: "4" - # next LTS and master is next most important - nodejs_version: "6" - # still in LTS maintenance until fall 2016 - # (also still in wide use) - - nodejs_version: "0.10" - # will be unsupported as soon as 6 becomes LTS and 7 released + # previous LTS is next most important + - nodejs_version: "4" + # then master - nodejs_version: "5" - # technically in LTS / distros, unbeloved - - nodejs_version: "0.12" COVERALLS_REPO_TOKEN: secure: XdC0aySefK0HLh1GNk6aKrzZPbCfPQLyA4mYtFGEp4DrTuZA/iuCUS0LDqFYO8JQ platform: @@ -26,7 +21,7 @@ install: test_script: - node --version - npm --version - - npm test + - npm run test -- --reporter=classic notifications: - provider: Slack incoming_webhook: diff --git a/deps/npm/html/doc/README.html b/deps/npm/html/doc/README.html index cb3d79f7848ba9..4aa3cc5e4798ca 100644 --- a/deps/npm/html/doc/README.html +++ b/deps/npm/html/doc/README.html @@ -126,5 +126,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-access.html b/deps/npm/html/doc/cli/npm-access.html index bc2f2bab0666c7..fdc0cb756e4014 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 09625e36dc34b2..9ade2746aa3435 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 234be15e8bcd2b..8d408216a905d6 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 e32a74a474f793..d5b9edea5655d2 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 4538085259ec11..73c796c233d885 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 466f587d3a7bc4..1f256d222da801 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 b9e4911910e95d..883f07ffb52018 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 9486761c4250fe..1be550a7dd7f3e 100644 --- a/deps/npm/html/doc/cli/npm-completion.html +++ b/deps/npm/html/doc/cli/npm-completion.html @@ -43,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 1a8b8de3841cce..8940698b4a0e2c 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 782b555da18223..40cbd9f23a410b 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 a3e2502a899bab..a8476c51b1d1df 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 0a083b5ef17a73..3b66f87f789bd4 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 0aa7cc48bf73c4..265c35be15eecc 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 6c4c65e3508bec..60e0a3b5168119 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 1a88b7862862e4..29d5829b5dbfc3 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 fda38c968381d2..107687584db571 100644 --- a/deps/npm/html/doc/cli/npm-help-search.html +++ b/deps/npm/html/doc/cli/npm-help-search.html @@ -45,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 c09967a4bd1893..feb154a521c0e5 100644 --- a/deps/npm/html/doc/cli/npm-help.html +++ b/deps/npm/html/doc/cli/npm-help.html @@ -50,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 6440631492c545..5474d8392aee18 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 3ab56462b574d0..428e0c77391070 100644 --- a/deps/npm/html/doc/cli/npm-install-test.html +++ b/deps/npm/html/doc/cli/npm-install-test.html @@ -42,5 +42,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-install.html b/deps/npm/html/doc/cli/npm-install.html index 5760520c468729..8c4575f94998c8 100644 --- a/deps/npm/html/doc/cli/npm-install.html +++ b/deps/npm/html/doc/cli/npm-install.html @@ -313,5 +313,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-link.html b/deps/npm/html/doc/cli/npm-link.html index c257e9af2ba32d..d7aed7df348e04 100644 --- a/deps/npm/html/doc/cli/npm-link.html +++ b/deps/npm/html/doc/cli/npm-link.html @@ -74,5 +74,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/cli/npm-logout.html b/deps/npm/html/doc/cli/npm-logout.html index 03b2c3fb15ab40..a6d86e64b50fa0 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 5ce106d2603f7e..e3e3e6034300a0 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.10.9 /path/to/npm
+
npm@3.10.10 /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 d2813ade8806b7..5c06e18fb3225e 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 2b0cefc3342ea0..9ec584f4ecd660 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 29a87a8ac8aa2f..74682f52819902 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 67897216a0f3ca..b48db8ab63a1e6 100644 --- a/deps/npm/html/doc/cli/npm-ping.html +++ b/deps/npm/html/doc/cli/npm-ping.html @@ -32,5 +32,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-prefix.html b/deps/npm/html/doc/cli/npm-prefix.html index 06782f3fb1ca72..171c7ca26307e9 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 d16f7cdb28bffd..5000f2c75cff71 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 f015d4fada80b9..c3272d3cdb4a08 100644 --- a/deps/npm/html/doc/cli/npm-publish.html +++ b/deps/npm/html/doc/cli/npm-publish.html @@ -76,5 +76,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-rebuild.html b/deps/npm/html/doc/cli/npm-rebuild.html index 9ca7c3e9fb85ed..c975efca6bb24a 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 bcdc9a591fad55..30b18957ca29a4 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 b40dd99239f8f4..ceb270c6d8669e 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 c4825f48c25cea..44c63f0c18fe71 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 b90969278284da..27fcfc9345b19b 100644 --- a/deps/npm/html/doc/cli/npm-run-script.html +++ b/deps/npm/html/doc/cli/npm-run-script.html @@ -63,5 +63,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-search.html b/deps/npm/html/doc/cli/npm-search.html index b9885bd5200dce..ed10e4c42209f1 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 8ea1c123bbd242..bfe3410125a3e5 100644 --- a/deps/npm/html/doc/cli/npm-shrinkwrap.html +++ b/deps/npm/html/doc/cli/npm-shrinkwrap.html @@ -176,5 +176,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-star.html b/deps/npm/html/doc/cli/npm-star.html index edc9ddd1dba562..01c593c4610078 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 24ce2e083109af..4d470fd4ba3ebe 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 93215640708daf..f1936080146de8 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 45e47b5e9ec8eb..082b2560c7556b 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 08e8fee98ff929..2270e1e3f168c6 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 7bcfe6756173cc..02dffaae031aec 100644 --- a/deps/npm/html/doc/cli/npm-team.html +++ b/deps/npm/html/doc/cli/npm-team.html @@ -67,5 +67,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-test.html b/deps/npm/html/doc/cli/npm-test.html index e1311164bb25f7..c15a2fe2331acd 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 640a3a9936fc04..1ed389ac2632d3 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 a092e3984dccc3..4e085352ade1fc 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 24eb0d3e943456..809475745e2273 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 882b60f0c5a489..bc58045dc7a1f9 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 3b9154160687bb..9b7651fcce7a8b 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 781ae548c8dc75..cc30465997c073 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 b32be9f21d10ce..08b24220f3b8fc 100644 --- a/deps/npm/html/doc/cli/npm.html +++ b/deps/npm/html/doc/cli/npm.html @@ -13,7 +13,7 @@

npm

javascript package manager

SYNOPSIS

npm <command> [args]
 

VERSION

-

3.10.9

+

3.10.10

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,7 +126,7 @@

AUTHOR

Isaac Z. Schlueter :: isaacs :: @izs :: -i@izs.me

+i@izs.me

SEE ALSO