From 03cfbd65fb650e2fc8139bd96dc05dbd01f1a2d6 Mon Sep 17 00:00:00 2001 From: Forrest L Norvell Date: Tue, 12 May 2015 15:38:06 -0700 Subject: [PATCH] deps: upgrade npm to 2.9.1 Reviewed-By: Julien Gilli PR-URL: https://github.com/joyent/node/pull/25289 --- deps/npm/AUTHORS | 3 + deps/npm/CHANGELOG.md | 146 +++++++ deps/npm/Makefile | 2 +- deps/npm/doc/cli/npm-build.md | 5 +- deps/npm/doc/cli/npm-shrinkwrap.md | 30 +- deps/npm/doc/files/npmrc.md | 2 +- deps/npm/doc/files/package.json.md | 17 +- deps/npm/doc/misc/npm-config.md | 13 + deps/npm/doc/misc/npm-scope.md | 36 +- deps/npm/html/doc/README.html | 4 +- deps/npm/html/doc/api/npm-bin.html | 2 +- deps/npm/html/doc/api/npm-bugs.html | 2 +- deps/npm/html/doc/api/npm-cache.html | 2 +- deps/npm/html/doc/api/npm-commands.html | 2 +- deps/npm/html/doc/api/npm-config.html | 2 +- deps/npm/html/doc/api/npm-deprecate.html | 2 +- deps/npm/html/doc/api/npm-docs.html | 2 +- deps/npm/html/doc/api/npm-edit.html | 2 +- deps/npm/html/doc/api/npm-explore.html | 2 +- deps/npm/html/doc/api/npm-help-search.html | 2 +- deps/npm/html/doc/api/npm-init.html | 2 +- deps/npm/html/doc/api/npm-install.html | 2 +- deps/npm/html/doc/api/npm-link.html | 2 +- deps/npm/html/doc/api/npm-load.html | 2 +- deps/npm/html/doc/api/npm-ls.html | 2 +- deps/npm/html/doc/api/npm-outdated.html | 2 +- deps/npm/html/doc/api/npm-owner.html | 2 +- deps/npm/html/doc/api/npm-pack.html | 2 +- deps/npm/html/doc/api/npm-prefix.html | 2 +- deps/npm/html/doc/api/npm-prune.html | 2 +- deps/npm/html/doc/api/npm-publish.html | 2 +- deps/npm/html/doc/api/npm-rebuild.html | 2 +- deps/npm/html/doc/api/npm-repo.html | 2 +- deps/npm/html/doc/api/npm-restart.html | 2 +- deps/npm/html/doc/api/npm-root.html | 2 +- deps/npm/html/doc/api/npm-run-script.html | 2 +- deps/npm/html/doc/api/npm-search.html | 2 +- deps/npm/html/doc/api/npm-shrinkwrap.html | 2 +- deps/npm/html/doc/api/npm-start.html | 2 +- deps/npm/html/doc/api/npm-stop.html | 2 +- deps/npm/html/doc/api/npm-tag.html | 2 +- deps/npm/html/doc/api/npm-test.html | 2 +- deps/npm/html/doc/api/npm-uninstall.html | 2 +- deps/npm/html/doc/api/npm-unpublish.html | 2 +- deps/npm/html/doc/api/npm-update.html | 2 +- deps/npm/html/doc/api/npm-version.html | 2 +- deps/npm/html/doc/api/npm-view.html | 2 +- deps/npm/html/doc/api/npm-whoami.html | 2 +- deps/npm/html/doc/api/npm.html | 4 +- deps/npm/html/doc/cli/npm-access.html | 2 +- deps/npm/html/doc/cli/npm-adduser.html | 2 +- deps/npm/html/doc/cli/npm-bin.html | 2 +- deps/npm/html/doc/cli/npm-bugs.html | 2 +- deps/npm/html/doc/cli/npm-build.html | 8 +- deps/npm/html/doc/cli/npm-bundle.html | 2 +- deps/npm/html/doc/cli/npm-cache.html | 2 +- deps/npm/html/doc/cli/npm-completion.html | 2 +- deps/npm/html/doc/cli/npm-config.html | 2 +- deps/npm/html/doc/cli/npm-dedupe.html | 2 +- deps/npm/html/doc/cli/npm-deprecate.html | 2 +- deps/npm/html/doc/cli/npm-dist-tag.html | 2 +- deps/npm/html/doc/cli/npm-docs.html | 2 +- deps/npm/html/doc/cli/npm-edit.html | 2 +- deps/npm/html/doc/cli/npm-explore.html | 2 +- deps/npm/html/doc/cli/npm-help-search.html | 2 +- deps/npm/html/doc/cli/npm-help.html | 2 +- deps/npm/html/doc/cli/npm-init.html | 2 +- deps/npm/html/doc/cli/npm-install.html | 2 +- deps/npm/html/doc/cli/npm-link.html | 2 +- deps/npm/html/doc/cli/npm-logout.html | 2 +- deps/npm/html/doc/cli/npm-ls.html | 4 +- deps/npm/html/doc/cli/npm-outdated.html | 2 +- deps/npm/html/doc/cli/npm-owner.html | 2 +- deps/npm/html/doc/cli/npm-pack.html | 2 +- deps/npm/html/doc/cli/npm-prefix.html | 2 +- deps/npm/html/doc/cli/npm-prune.html | 2 +- deps/npm/html/doc/cli/npm-publish.html | 2 +- deps/npm/html/doc/cli/npm-rebuild.html | 2 +- deps/npm/html/doc/cli/npm-repo.html | 2 +- deps/npm/html/doc/cli/npm-restart.html | 2 +- deps/npm/html/doc/cli/npm-rm.html | 2 +- deps/npm/html/doc/cli/npm-root.html | 2 +- deps/npm/html/doc/cli/npm-run-script.html | 2 +- deps/npm/html/doc/cli/npm-search.html | 2 +- deps/npm/html/doc/cli/npm-shrinkwrap.html | 32 +- deps/npm/html/doc/cli/npm-star.html | 2 +- deps/npm/html/doc/cli/npm-stars.html | 2 +- deps/npm/html/doc/cli/npm-start.html | 2 +- deps/npm/html/doc/cli/npm-stop.html | 2 +- deps/npm/html/doc/cli/npm-tag.html | 2 +- deps/npm/html/doc/cli/npm-test.html | 2 +- deps/npm/html/doc/cli/npm-uninstall.html | 2 +- deps/npm/html/doc/cli/npm-unpublish.html | 2 +- deps/npm/html/doc/cli/npm-update.html | 2 +- deps/npm/html/doc/cli/npm-version.html | 2 +- deps/npm/html/doc/cli/npm-view.html | 2 +- deps/npm/html/doc/cli/npm-whoami.html | 2 +- deps/npm/html/doc/cli/npm.html | 10 +- deps/npm/html/doc/files/npm-folders.html | 2 +- deps/npm/html/doc/files/npm-global.html | 2 +- deps/npm/html/doc/files/npm-json.html | 18 +- deps/npm/html/doc/files/npmrc.html | 4 +- deps/npm/html/doc/files/package.json.html | 18 +- deps/npm/html/doc/index.html | 2 +- deps/npm/html/doc/misc/npm-coding-style.html | 2 +- deps/npm/html/doc/misc/npm-config.html | 13 +- deps/npm/html/doc/misc/npm-developers.html | 2 +- deps/npm/html/doc/misc/npm-disputes.html | 8 +- deps/npm/html/doc/misc/npm-faq.html | 4 +- deps/npm/html/doc/misc/npm-index.html | 2 +- deps/npm/html/doc/misc/npm-registry.html | 2 +- deps/npm/html/doc/misc/npm-scope.html | 29 +- deps/npm/html/doc/misc/npm-scripts.html | 2 +- deps/npm/html/doc/misc/removing-npm.html | 2 +- deps/npm/html/doc/misc/semver.html | 2 +- deps/npm/html/partial/doc/README.html | 2 +- deps/npm/html/partial/doc/api/npm.html | 2 +- deps/npm/html/partial/doc/cli/npm-build.html | 6 +- deps/npm/html/partial/doc/cli/npm-ls.html | 2 +- .../html/partial/doc/cli/npm-shrinkwrap.html | 30 +- deps/npm/html/partial/doc/cli/npm.html | 8 +- deps/npm/html/partial/doc/files/npm-json.html | 16 +- deps/npm/html/partial/doc/files/npmrc.html | 2 +- .../html/partial/doc/files/package.json.html | 16 +- .../npm/html/partial/doc/misc/npm-config.html | 11 + .../html/partial/doc/misc/npm-disputes.html | 6 +- deps/npm/html/partial/doc/misc/npm-faq.html | 2 +- deps/npm/html/partial/doc/misc/npm-scope.html | 27 +- deps/npm/lib/bin.js | 3 +- deps/npm/lib/cache/add-remote-git.js | 2 +- deps/npm/lib/config/defaults.js | 20 +- deps/npm/lib/install.js | 16 +- deps/npm/lib/outdated.js | 33 +- deps/npm/lib/publish.js | 26 +- deps/npm/lib/run-script.js | 27 +- deps/npm/lib/unpublish.js | 33 +- deps/npm/lib/utils/get-publish-config.js | 25 ++ deps/npm/lib/version.js | 2 +- deps/npm/man/man1/npm-README.1 | 2 +- deps/npm/man/man1/npm-access.1 | 2 +- deps/npm/man/man1/npm-adduser.1 | 2 +- deps/npm/man/man1/npm-bin.1 | 2 +- deps/npm/man/man1/npm-bugs.1 | 2 +- deps/npm/man/man1/npm-build.1 | 11 +- deps/npm/man/man1/npm-bundle.1 | 2 +- deps/npm/man/man1/npm-cache.1 | 2 +- deps/npm/man/man1/npm-completion.1 | 2 +- deps/npm/man/man1/npm-config.1 | 2 +- deps/npm/man/man1/npm-dedupe.1 | 2 +- deps/npm/man/man1/npm-deprecate.1 | 2 +- deps/npm/man/man1/npm-dist-tag.1 | 2 +- deps/npm/man/man1/npm-docs.1 | 2 +- deps/npm/man/man1/npm-edit.1 | 2 +- deps/npm/man/man1/npm-explore.1 | 2 +- deps/npm/man/man1/npm-help-search.1 | 2 +- deps/npm/man/man1/npm-help.1 | 2 +- deps/npm/man/man1/npm-init.1 | 2 +- deps/npm/man/man1/npm-install.1 | 2 +- deps/npm/man/man1/npm-link.1 | 2 +- deps/npm/man/man1/npm-logout.1 | 2 +- deps/npm/man/man1/npm-ls.1 | 4 +- deps/npm/man/man1/npm-outdated.1 | 2 +- deps/npm/man/man1/npm-owner.1 | 2 +- deps/npm/man/man1/npm-pack.1 | 2 +- deps/npm/man/man1/npm-prefix.1 | 2 +- deps/npm/man/man1/npm-prune.1 | 2 +- deps/npm/man/man1/npm-publish.1 | 2 +- deps/npm/man/man1/npm-rebuild.1 | 2 +- deps/npm/man/man1/npm-repo.1 | 2 +- deps/npm/man/man1/npm-restart.1 | 2 +- deps/npm/man/man1/npm-rm.1 | 2 +- deps/npm/man/man1/npm-root.1 | 2 +- deps/npm/man/man1/npm-run-script.1 | 2 +- deps/npm/man/man1/npm-search.1 | 2 +- deps/npm/man/man1/npm-shrinkwrap.1 | 32 +- deps/npm/man/man1/npm-star.1 | 2 +- deps/npm/man/man1/npm-stars.1 | 2 +- deps/npm/man/man1/npm-start.1 | 2 +- deps/npm/man/man1/npm-stop.1 | 2 +- deps/npm/man/man1/npm-tag.1 | 2 +- deps/npm/man/man1/npm-test.1 | 2 +- deps/npm/man/man1/npm-uninstall.1 | 2 +- deps/npm/man/man1/npm-unpublish.1 | 2 +- deps/npm/man/man1/npm-update.1 | 2 +- deps/npm/man/man1/npm-version.1 | 2 +- deps/npm/man/man1/npm-view.1 | 2 +- deps/npm/man/man1/npm-whoami.1 | 2 +- deps/npm/man/man1/npm.1 | 4 +- deps/npm/man/man3/npm-bin.3 | 2 +- deps/npm/man/man3/npm-bugs.3 | 2 +- deps/npm/man/man3/npm-cache.3 | 2 +- deps/npm/man/man3/npm-commands.3 | 2 +- deps/npm/man/man3/npm-config.3 | 2 +- deps/npm/man/man3/npm-deprecate.3 | 2 +- deps/npm/man/man3/npm-docs.3 | 2 +- deps/npm/man/man3/npm-edit.3 | 2 +- deps/npm/man/man3/npm-explore.3 | 2 +- deps/npm/man/man3/npm-help-search.3 | 2 +- deps/npm/man/man3/npm-init.3 | 2 +- deps/npm/man/man3/npm-install.3 | 2 +- deps/npm/man/man3/npm-link.3 | 2 +- deps/npm/man/man3/npm-load.3 | 2 +- deps/npm/man/man3/npm-ls.3 | 2 +- deps/npm/man/man3/npm-outdated.3 | 2 +- deps/npm/man/man3/npm-owner.3 | 2 +- deps/npm/man/man3/npm-pack.3 | 2 +- deps/npm/man/man3/npm-prefix.3 | 2 +- deps/npm/man/man3/npm-prune.3 | 2 +- deps/npm/man/man3/npm-publish.3 | 2 +- deps/npm/man/man3/npm-rebuild.3 | 2 +- deps/npm/man/man3/npm-repo.3 | 2 +- deps/npm/man/man3/npm-restart.3 | 2 +- deps/npm/man/man3/npm-root.3 | 2 +- deps/npm/man/man3/npm-run-script.3 | 2 +- deps/npm/man/man3/npm-search.3 | 2 +- deps/npm/man/man3/npm-shrinkwrap.3 | 2 +- deps/npm/man/man3/npm-start.3 | 2 +- deps/npm/man/man3/npm-stop.3 | 2 +- deps/npm/man/man3/npm-tag.3 | 2 +- deps/npm/man/man3/npm-test.3 | 2 +- deps/npm/man/man3/npm-uninstall.3 | 2 +- deps/npm/man/man3/npm-unpublish.3 | 2 +- deps/npm/man/man3/npm-update.3 | 4 +- deps/npm/man/man3/npm-version.3 | 2 +- deps/npm/man/man3/npm-view.3 | 2 +- deps/npm/man/man3/npm-whoami.3 | 2 +- deps/npm/man/man3/npm.3 | 4 +- deps/npm/man/man5/npm-folders.5 | 2 +- deps/npm/man/man5/npm-global.5 | 2 +- deps/npm/man/man5/npm-json.5 | 27 +- deps/npm/man/man5/npmrc.5 | 4 +- deps/npm/man/man5/package.json.5 | 27 +- deps/npm/man/man7/npm-coding-style.7 | 2 +- deps/npm/man/man7/npm-config.7 | 18 +- deps/npm/man/man7/npm-developers.7 | 2 +- deps/npm/man/man7/npm-disputes.7 | 2 +- deps/npm/man/man7/npm-faq.7 | 2 +- deps/npm/man/man7/npm-index.7 | 2 +- deps/npm/man/man7/npm-registry.7 | 2 +- deps/npm/man/man7/npm-scope.7 | 35 +- deps/npm/man/man7/npm-scripts.7 | 2 +- deps/npm/man/man7/removing-npm.7 | 2 +- deps/npm/man/man7/semver.7 | 2 +- deps/npm/node_modules/editor/package.json | 24 +- .../init-package-json/default-input.js | 3 +- .../example/example-basic.js | 1 - .../example/example-default.js | 1 - .../init-package-json/example/example-npm.js | 2 - .../node_modules/promzard/package.json | 5 +- .../node_modules/builtins/package.json | 5 +- .../validate-npm-package-name/package.json | 5 +- .../init-package-json/package.json | 10 +- .../init-package-json/test/basic.js | 59 +-- .../init-package-json/test/lib/common.js | 24 ++ .../init-package-json/test/name-spaces.js | 38 ++ .../init-package-json/test/name-uppercase.js | 38 ++ .../init-package-json/test/npm-defaults.js | 100 ++--- .../init-package-json/test/scope.js | 38 +- .../init-package-json/test/yes-defaults.js | 30 +- deps/npm/node_modules/lru-cache/bar.js | 1 + deps/npm/node_modules/lru-cache/foo.js | 1 + .../node_modules/lru-cache/lib/lru-cache.js | 1 - deps/npm/node_modules/lru-cache/package.json | 19 +- .../node_modules/lru-cache/test/timeout.js | 21 - deps/npm/node_modules/minimatch/browser.js | 403 +++++++++--------- deps/npm/node_modules/minimatch/minimatch.js | 401 +++++++++-------- deps/npm/node_modules/minimatch/package.json | 29 +- .../npm-registry-client/README.md | 2 +- .../npm-registry-client/lib/request.js | 4 +- .../node_modules/core-util-is/package.json | 22 +- .../node_modules/isarray/package.json | 27 +- .../node_modules/string_decoder/package.json | 26 +- .../npm-registry-client/package.json | 12 +- .../npm-registry-client/test/request.js | 13 +- deps/npm/node_modules/rimraf/package.json | 27 +- deps/npm/node_modules/rimraf/rimraf.js | 16 +- deps/npm/package.json | 18 +- ...-com-BryanDonovan-dummy-npm-bar.git.tar.gz | Bin 0 -> 12585 bytes ...com-BryanDonovan-dummy-npm-buzz.git.tar.gz | Bin 0 -> 10860 bytes ...-com-BryanDonovan-dummy-npm-foo.git.tar.gz | Bin 0 -> 12712 bytes ...b-com-BryanDonovan-npm-git-test.git.tar.gz | Bin 0 -> 9521 bytes deps/npm/test/tap/bin.js | 17 + deps/npm/test/tap/git-races.js | 212 +++++++++ deps/npm/test/tap/install-noargs-dev.js | 109 +++++ deps/npm/test/tap/outdated-local.js | 193 +++++++++ deps/npm/test/tap/outdated-private.js | 15 +- deps/npm/test/tap/tag-version-prefix.js | 88 ++++ deps/npm/test/tap/unpublish-config.js | 82 ++++ 288 files changed, 2276 insertions(+), 1137 deletions(-) create mode 100644 deps/npm/lib/utils/get-publish-config.js create mode 100644 deps/npm/node_modules/init-package-json/test/lib/common.js create mode 100644 deps/npm/node_modules/init-package-json/test/name-spaces.js create mode 100644 deps/npm/node_modules/init-package-json/test/name-uppercase.js create mode 100644 deps/npm/node_modules/lru-cache/bar.js create mode 100644 deps/npm/node_modules/lru-cache/foo.js delete mode 100644 deps/npm/node_modules/lru-cache/test/timeout.js create mode 100644 deps/npm/test/fixtures/jackfan.us.kg-BryanDonovan-dummy-npm-bar.git.tar.gz create mode 100644 deps/npm/test/fixtures/jackfan.us.kg-BryanDonovan-dummy-npm-buzz.git.tar.gz create mode 100644 deps/npm/test/fixtures/jackfan.us.kg-BryanDonovan-dummy-npm-foo.git.tar.gz create mode 100644 deps/npm/test/fixtures/jackfan.us.kg-BryanDonovan-npm-git-test.git.tar.gz create mode 100644 deps/npm/test/tap/bin.js create mode 100644 deps/npm/test/tap/git-races.js create mode 100644 deps/npm/test/tap/install-noargs-dev.js create mode 100644 deps/npm/test/tap/outdated-local.js create mode 100644 deps/npm/test/tap/tag-version-prefix.js create mode 100644 deps/npm/test/tap/unpublish-config.js diff --git a/deps/npm/AUTHORS b/deps/npm/AUTHORS index 94afe5752b6..7ba0c9e8f99 100644 --- a/deps/npm/AUTHORS +++ b/deps/npm/AUTHORS @@ -271,3 +271,6 @@ Michiel Sikma Jakob Krigovsky Charmander <~@charmander.me> erik wienhold +James Butler +Kevin Kragenbrink +Arnaud Rinquin diff --git a/deps/npm/CHANGELOG.md b/deps/npm/CHANGELOG.md index e34f36772c7..1c9cc5f4663 100644 --- a/deps/npm/CHANGELOG.md +++ b/deps/npm/CHANGELOG.md @@ -1,3 +1,149 @@ +### v2.9.1 (2015-04-30): + +#### WOW! MORE GIT FIXES! YOU LOVE THOSE! + +The first item below is actually a pretty big deal, as it fixes (with a +one-word change and a much, much longer test case (thanks again, +[@iarna](https://github.com/iarna))) a regression that's been around for months +now. If you're depending on multiple branches of a single git dependency in a +single project, you probably want to check out `npm@2.9.1` and verify that +things (again?) work correctly in your project. + +* [`178a6ad`](https://github.com/npm/npm/commit/178a6ad540215820d16217465a5f220d8c95a313) + [#7202](https://github.com/npm/npm/issues/7202) When caching git + dependencies, do so by the whole URL, including the branch name, so that if a + single application depends on multiple branches from the same repository (in + practice, multiple version tags), every install is of the correct version, + instead of reusing whichever branch the caching process happened to check out + first. ([@iarna](https://github.com/iarna)) +* [`63b79cc`](https://github.com/npm/npm/commit/63b79ccde092a9cb3b1f34abe43e1d2ba69c0dbf) + [#8084](https://github.com/npm/npm/issues/8084) Ensure that Bitbucket, + GitHub, and Gitlab dependencies are installed the same way as non-hosted git + dependencies, fixing `npm install --link`. + ([@laiso](https://github.com/laiso)) + +#### DOCUMENTATION FIXES AND TWEAKS + +These changes may seem simple and small (except Lin's fix to the package name +restrictions, which was more an egregious oversight on our part), but cleaner +documentation makes npm significantly more pleasant to use. I really appreciate +all the typo fixes, clarifications, and formatting tweaks people send us, and +am delighted that we get so many of these pull requests. Thanks, everybody! + +* [`ca478dc`](https://github.com/npm/npm/commit/ca478dcaa29b8f07cd6fe515a3c4518166819291) + [#8137](https://github.com/npm/npm/issues/8137) Somehow, we had failed to + clearly document the full restrictions on package names. + [@linclark](https://github.com/linclark) has now fixed that, although we will + take with us to our graves the reasons why the maximum package name length is 214 + characters (well, OK, it was that that was the longest name in the registry + when we decided to put a cap on the name length). + ([@linclark](https://github.com/linclark)) +* [`b574076`](https://github.com/npm/npm/commit/b5740767c320c1eff3576a8d63952534a0fbb936) + [#8079](https://github.com/npm/npm/issues/8079) Make the `npm shrinkwrap` + documentation use code formatting for examples consistently. It would be + great to do this for more commands HINT HINT. + ([@RichardLitt](https://github.com/RichardLitt)) +* [`1ff636e`](https://github.com/npm/npm/commit/1ff636e2db3852a53e38c866fed7eafdacd307fc) + [#8105](https://github.com/npm/npm/issues/8105) Document that the global + `npmrc` goes in `$PREFIX/etc/npmrc`, instead of `$PREFIX/npmrc`. + ([@anttti](https://github.com/anttti)) +* [`c3f2f7c`](https://github.com/npm/npm/commit/c3f2f7c299342e1c1eccc55a976a63c607f51621) + [#8127](https://github.com/npm/npm/issues/8127) Document how to use `npm run + build` directly (hint: it's different from `npm build`!). + ([@mikemaccana](https://github.com/mikemaccana)) +* [`873e467`](https://github.com/npm/npm/commit/873e46757e1986761b15353f94580a071adcb383) + [#8069](https://github.com/npm/npm/issues/8069) Take the old, dead npm + mailing list address out of `package.json`. It seems that people don't have + much trouble figuring out how to report errors to npm. + ([@robertkowalski](https://github.com/robertkowalski)) + +#### ENROBUSTIFICATIONMENT + +* [`5abfc9c`](https://github.com/npm/npm/commit/5abfc9c9017da714e47a3aece750836b4f9af6a9) + [#7973](https://github.com/npm/npm/issues/7973) `npm run-script` completion + will only suggest run scripts, instead of including dependencies. If for some + reason you still wanted it to suggest dependencies, let us know. + ([@mantoni](https://github.com/mantoni)) +* [`4b564f0`](https://github.com/npm/npm/commit/4b564f0ce979dc74c09604f4d46fd25a2ee63804) + [#8081](https://github.com/npm/npm/issues/8081) Use `osenv` to parse the + environment's `PATH` in a platform-neutral way. + ([@watilde](https://github.com/watilde)) +* [`a4b6238`](https://github.com/npm/npm/commit/a4b62387b41848818973eeed056fd5c6570274f3) + [#8094](https://github.com/npm/npm/issues/8094) When we refactored the + configuration code to split out checking for IPv4 local addresses, we + inadvertently completely broke it by failing to return the values. In + addition, just the call to `os.getInterfaces()` could throw on systems where + querying the network configuration requires elevated privileges (e.g. Amazon + Lambda). Add the return, and trap errors so they don't cause npm to explode. + Thanks to [@mhart](https://github.com/mhart) for bringing this to our + attention! ([@othiym23](https://github.com/othiym23)) + +#### DEPENDENCY UPDATES WAIT FOR NO SOPHONT + +* [`000cd8b`](https://github.com/npm/npm/commit/000cd8b52104942ac3404f0ad0651d82f573da37) + `rimraf@2.3.3`: More informative assertions on argument validation failure. + ([@isaacs](https://github.com/isaacs)) +* [`530a2e3`](https://github.com/npm/npm/commit/530a2e369128270f3e098f0e9be061533003b0eb) + `lru-cache@2.6.2`: Revert to old key access-time behavior, as it was correct + all along. ([@isaacs](https://github.com/isaacs)) +* [`d88958c`](https://github.com/npm/npm/commit/d88958ca02ce81b027b9919aec539d0145875a59) + `minimatch@2.0.7`: Feature detection and test improvements. + ([@isaacs](https://github.com/isaacs)) +* [`3fa39e4`](https://github.com/npm/npm/commit/3fa39e4d492609d5d045033896dcd99f7b875329) + `nock@1.7.1` ([@pgte](https://github.com/pgte)) + +### v2.9.0 (2015-04-23): + +This week was kind of a breather to concentrate on fixing up the tests on the +`multi-stage` branch, and not mess with git issues for a little while. +Unfortunately, There are now enough severe git issues that we'll probably have +to spend another couple weeks tackling them. In the meantime, enjoy these two +small features. They're just enough to qualify for a semver-minor bump: + +#### NANOFEATURES + +* [`2799322`](https://github.com/npm/npm/commit/279932298ce5b589c5eea9439ac40b88b99c6a4a) + [#7426](https://github.com/npm/npm/issues/7426) Include local modules in `npm + outdated` and `npm update`. ([@ArnaudRinquin](https://github.com/ArnaudRinquin)) +* [`2114862`](https://github.com/npm/npm/commit/21148620fa03a582f4ec436bb16bd472664f2737) + [#8014](https://github.com/npm/npm/issues/8014) The prefix used before the + version on version tags is now configurable via `tag-version-prefix`. Be + careful with this one and read the docs before using it. + ([@kkragenbrink](https://github.com/kkragenbrink)) + +#### OTHER MINOR TWEAKS + +* [`18ce0ec`](https://github.com/npm/npm/commit/18ce0ecd2d94ad3af01e997f1396515892dd363c) + [#3032](https://github.com/npm/npm/issues/3032) `npm unpublish` will now use + the registry set in `package.json`, just like `npm publish`. This only + applies, for now, when unpublishing the entire package, as unpublishing a + single version requires the name be included on the command line and + therefore doesn't read from `package.json`. ([@watilde](https://github.com/watilde)) +* [`9ad2100`](https://github.com/npm/npm/commit/9ad210042242e51d52b2a8b633d8e59248f5faa4) + [#8008](https://github.com/npm/npm/issues/8008) Once again, when considering + what to install on `npm install`, include `devDependencies`. + ([@smikes](https://github.com/smikes)) +* [`5466260`](https://github.com/npm/npm/commit/546626059909dca1906454e820ca4e315c1795bd) + [#8003](https://github.com/npm/npm/issues/8003) Clarify the documentation + around scopes to make it easier to understand how they support private + packages. ([@smikes](https://github.com/smikes)) + +#### DEPENDENCIES WILL NOT STOP UNTIL YOU ARE VERY SLEEPY + +* [`faf65a7`](https://github.com/npm/npm/commit/faf65a7bbb2fad13216f64ed8f1243bafe743f97) + `init-package-json@1.4.2`: If there are multiple validation errors and + warnings, ensure they all get displayed (includes a rad new way of testing + `init-package-json` contributed by + [@michaelnisi](https://github.com/michaelnisi)). + ([@MisumiRize](https://github.com/MisumiRize)) +* [`7f10f38`](https://github.com/npm/npm/commit/7f10f38d29a8423d7cde8103fa7b64ac728da1e0) + `editor@1.0.0`: `1.0.0` is literally more than `0.1.0` (no change aside from + version number). ([@substack](https://github.com/substack)) +* [`4979af3`](https://github.com/npm/npm/commit/4979af3fcae5a3962383b7fdad3162381e62eefe) + [#6805](https://github.com/npm/npm/issues/6805) `npm-registry-client@6.3.3`: + Decode scoped package names sent by the registry so they look nicer. + ([@mmalecki](https://github.com/mmalecki)) + ### v2.8.4 (2015-04-16): This is the fourth release of npm this week, so it's mostly just landing a few diff --git a/deps/npm/Makefile b/deps/npm/Makefile index 15655f3e5cf..365d80da081 100644 --- a/deps/npm/Makefile +++ b/deps/npm/Makefile @@ -235,7 +235,7 @@ authors: git add AUTHORS &&\ git commit -m "update AUTHORS" || true -publish: link doc authors +publish: authors link doc @git push origin :v$(shell npm -v) 2>&1 || true git clean -fd &&\ git push origin $(BRANCH) &&\ diff --git a/deps/npm/doc/cli/npm-build.md b/deps/npm/doc/cli/npm-build.md index 53813c1fd98..4d3467a160d 100644 --- a/deps/npm/doc/cli/npm-build.md +++ b/deps/npm/doc/cli/npm-build.md @@ -12,7 +12,10 @@ npm-build(1) -- Build a package This is the plumbing command called by `npm link` and `npm install`. -It should generally not be called directly. +It should generally be called during installation, but if you need to run it +directly, run: + + npm run-script build ## SEE ALSO diff --git a/deps/npm/doc/cli/npm-shrinkwrap.md b/deps/npm/doc/cli/npm-shrinkwrap.md index e17afcd259d..d781a683e76 100644 --- a/deps/npm/doc/cli/npm-shrinkwrap.md +++ b/deps/npm/doc/cli/npm-shrinkwrap.md @@ -9,10 +9,10 @@ npm-shrinkwrap(1) -- Lock down dependency versions This command locks down the versions of a package's dependencies so that you can control exactly which versions of each dependency will be -used when your package is installed. The "package.json" file is still -required if you want to use "npm install". +used when your package is installed. The `package.json` file is still +required if you want to use `npm install`. -By default, "npm install" recursively installs the target's +By default, `npm install` recursively installs the target's dependencies (as specified in package.json), choosing the latest available version that satisfies the dependency's semver pattern. In some situations, particularly when shipping software where each change @@ -53,13 +53,13 @@ and package C: } If these are the only versions of A, B, and C available in the -registry, then a normal "npm install A" will install: +registry, then a normal `npm install A` will install: A@0.1.0 `-- B@0.0.1 `-- C@0.0.1 -However, if B@0.0.2 is published, then a fresh "npm install A" will +However, if B@0.0.2 is published, then a fresh `npm install A` will install: A@0.1.0 @@ -96,7 +96,7 @@ This generates npm-shrinkwrap.json, which will look something like this: } The shrinkwrap command has locked down the dependencies based on -what's currently installed in node_modules. When "npm install" +what's currently installed in node_modules. When `npm install` installs a package with a npm-shrinkwrap.json file in the package root, the shrinkwrap file (rather than package.json files) completely drives the installation of that package and all of its dependencies @@ -109,31 +109,31 @@ files. ### Using shrinkwrapped packages Using a shrinkwrapped package is no different than using any other -package: you can "npm install" it by hand, or add a dependency to your -package.json file and "npm install" it. +package: you can `npm install` it by hand, or add a dependency to your +package.json file and `npm install` it. ### Building shrinkwrapped packages To shrinkwrap an existing package: -1. Run "npm install" in the package root to install the current +1. Run `npm install` in the package root to install the current versions of all dependencies. 2. Validate that the package works as expected with these versions. -3. Run "npm shrinkwrap", add npm-shrinkwrap.json to git, and publish +3. Run `npm shrinkwrap`, add npm-shrinkwrap.json to git, and publish your package. To add or update a dependency in a shrinkwrapped package: -1. Run "npm install" in the package root to install the current +1. Run `npm install` in the package root to install the current versions of all dependencies. -2. Add or update dependencies. "npm install" each new or updated +2. Add or update dependencies. `npm install` each new or updated package individually and then update package.json. Note that they must be explicitly named in order to be installed: running `npm install` with no arguments will merely reproduce the existing shrinkwrap. 3. Validate that the package works as expected with the new dependencies. -4. Run "npm shrinkwrap", commit the new npm-shrinkwrap.json, and +4. Run `npm shrinkwrap`, commit the new npm-shrinkwrap.json, and publish your package. You can use npm-outdated(1) to view dependencies with newer versions @@ -142,13 +142,13 @@ available. ### Other Notes A shrinkwrap file must be consistent with the package's package.json -file. "npm shrinkwrap" will fail if required dependencies are not +file. `npm shrinkwrap` will fail if required dependencies are not already installed, since that would result in a shrinkwrap that wouldn't actually work. Similarly, the command will fail if there are extraneous packages (not referenced by package.json), since that would indicate that package.json is not correct. -Since "npm shrinkwrap" is intended to lock down your dependencies for +Since `npm shrinkwrap` is intended to lock down your dependencies for production use, `devDependencies` will not be included unless you explicitly set the `--dev` flag when you run `npm shrinkwrap`. If installed `devDependencies` are excluded, then npm will print a diff --git a/deps/npm/doc/files/npmrc.md b/deps/npm/doc/files/npmrc.md index a3eb4389f4e..345052bad11 100644 --- a/deps/npm/doc/files/npmrc.md +++ b/deps/npm/doc/files/npmrc.md @@ -17,7 +17,7 @@ The four relevant files are: * per-project config file (/path/to/my/project/.npmrc) * per-user config file (~/.npmrc) -* global config file ($PREFIX/npmrc) +* global config file ($PREFIX/etc/npmrc) * npm builtin config file (/path/to/npm/npmrc) All npm config files are an ini-formatted list of `key = value` diff --git a/deps/npm/doc/files/package.json.md b/deps/npm/doc/files/package.json.md index b1c8f210f49..b02773814c0 100644 --- a/deps/npm/doc/files/package.json.md +++ b/deps/npm/doc/files/package.json.md @@ -17,14 +17,23 @@ them. The name and version together form an identifier that is assumed to be completely unique. Changes to the package should come along with changes to the version. -The name is what your thing is called. Some tips: +The name is what your thing is called. +Some rules: + +* The name must be shorter than 214 characters. This includes the scope for + scoped packages. +* The name can't start with a dot or an underscore. +* New packages must not have uppercase letters in the name. +* The name ends up being part of a URL, an argument on the command line, and a + folder name. Therefore, the name can't contain any non-URL-safe characters. + +Some tips: + +* Don't use the same name as a core Node module. * Don't put "js" or "node" in the name. It's assumed that it's js, since you're writing a package.json file, and you can specify the engine using the "engines" field. (See below.) -* The name ends up being part of a URL, an argument on the command line, and a - folder name. Any name with non-url-safe characters will be rejected. - Also, it can't start with a dot or an underscore. * The name will probably be passed as an argument to require(), so it should be something short, but also reasonably descriptive. * You may want to check the npm registry to see if there's something by that name diff --git a/deps/npm/doc/misc/npm-config.md b/deps/npm/doc/misc/npm-config.md index d96b07fb6b6..4b9d32ba333 100644 --- a/deps/npm/doc/misc/npm-config.md +++ b/deps/npm/doc/misc/npm-config.md @@ -804,6 +804,19 @@ it will install the specified tag. Also the tag that is added to the package@version specified by the `npm tag` command, if no explicit tag is given. +### tag-version-prefix + +* Default: `"v"` +* Type: String + +If set, alters the prefix used when tagging a new version when performing a +version increment using `npm-version`. To remove the prefix altogether, set it +to the empty string: `""`. + +Because other tools may rely on the convention that npm version tags look like +`v1.0.0`, _only use this property if it is absolutely necessary_. In +particular, use care when overriding this setting for public packages. + ### tmp * Default: TMPDIR environment variable, or "/tmp" diff --git a/deps/npm/doc/misc/npm-scope.md b/deps/npm/doc/misc/npm-scope.md index 66a9255d66d..f1e4da1f1fa 100644 --- a/deps/npm/doc/misc/npm-scope.md +++ b/deps/npm/doc/misc/npm-scope.md @@ -13,9 +13,9 @@ followed by a slash, e.g. Scopes are a way of grouping related packages together, and also affect a few things about the way npm treats the package. -**As of 2014-09-03, scoped packages are not supported by the public npm registry**. -However, the npm client is backwards-compatible with un-scoped registries, so -it can be used to work with scoped and un-scoped registries at the same time. +Scoped packages are supported by the public npm registry. The npm +client is backwards-compatible with un-scoped registries, so it can be +used to work with scoped and un-scoped registries at the same time. ## Installing scoped packages @@ -51,10 +51,29 @@ just specifying to require the module `mypackage` in the folder called `@myorg`. ## Publishing scoped packages -Scoped packages can be published to any registry that supports them. -*As of 2014-09-03, the public npm registry does not support scoped packages*, -so attempting to publish a scoped package to the registry will fail unless -you have associated that scope with a different registry, see below. +Scoped packages can be published to any registry that supports them, including +the public npm registry. + +(As of 2015-04-19, the public npm registry **does** support scoped packages) + +If you wish, you may associate a scope with a registry; see below. + +### Publishing public scoped packages to the public npm registry + +To publish a public scoped package, you must specify `--access public` with +the initial publication. This will publish the package and set access +to `public` as if you had run `npm access public` after publishing. + +### Publishing private scoped packages to the npm registry + +To publish a private scoped package to the npm registry, you must have +an [npm Private Modules](https://www.npmjs.com/private-modules) +account. + +You can then publish the module with `npm publish` or `npm publish +--access restricted`, and it will be present in the npm registry, with +restricted access. You can then change the access permissions, if +desired, with `npm access` or on the npmjs.com website. ## Associating a scope with a registry @@ -81,4 +100,5 @@ that registry instead. ## SEE ALSO * npm-install(1) -* npm-publish(1) \ No newline at end of file +* npm-publish(1) +* npm-access(1) diff --git a/deps/npm/html/doc/README.html b/deps/npm/html/doc/README.html index af9e7171871..707f59fe802 100644 --- a/deps/npm/html/doc/README.html +++ b/deps/npm/html/doc/README.html @@ -126,7 +126,7 @@

If you have a complaint about a package in the public npm registry, and cannot resolve it with the package owner, please email -support@npmjs.com and explain the situation.

+support@npmjs.com and explain the situation.

Any data published to The npm Registry (including user account information) may be removed or modified at the sole discretion of the npm server administrators.

@@ -169,5 +169,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/api/npm-bin.html b/deps/npm/html/doc/api/npm-bin.html index df663bbc3f2..d3a5e4a264a 100644 --- a/deps/npm/html/doc/api/npm-bin.html +++ b/deps/npm/html/doc/api/npm-bin.html @@ -28,5 +28,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-bugs.html b/deps/npm/html/doc/api/npm-bugs.html index 38ff025dc93..f74d600dfe4 100644 --- a/deps/npm/html/doc/api/npm-bugs.html +++ b/deps/npm/html/doc/api/npm-bugs.html @@ -33,5 +33,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-cache.html b/deps/npm/html/doc/api/npm-cache.html index 369af852732..04c603109d2 100644 --- a/deps/npm/html/doc/api/npm-cache.html +++ b/deps/npm/html/doc/api/npm-cache.html @@ -42,5 +42,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-commands.html b/deps/npm/html/doc/api/npm-commands.html index 19b12418ee0..dc07ab595a7 100644 --- a/deps/npm/html/doc/api/npm-commands.html +++ b/deps/npm/html/doc/api/npm-commands.html @@ -36,5 +36,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/api/npm-config.html b/deps/npm/html/doc/api/npm-config.html index cdca1f39c5f..db1157da6c9 100644 --- a/deps/npm/html/doc/api/npm-config.html +++ b/deps/npm/html/doc/api/npm-config.html @@ -57,5 +57,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/api/npm-deprecate.html b/deps/npm/html/doc/api/npm-deprecate.html index fa4b88a995b..3991f1f4ae6 100644 --- a/deps/npm/html/doc/api/npm-deprecate.html +++ b/deps/npm/html/doc/api/npm-deprecate.html @@ -47,5 +47,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/api/npm-docs.html b/deps/npm/html/doc/api/npm-docs.html index ecbc4f53e86..740014ac8db 100644 --- a/deps/npm/html/doc/api/npm-docs.html +++ b/deps/npm/html/doc/api/npm-docs.html @@ -33,5 +33,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-edit.html b/deps/npm/html/doc/api/npm-edit.html index 3845ed62a3b..51da57a6dbc 100644 --- a/deps/npm/html/doc/api/npm-edit.html +++ b/deps/npm/html/doc/api/npm-edit.html @@ -36,5 +36,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-explore.html b/deps/npm/html/doc/api/npm-explore.html index 561b58a4dcd..53918c64eb3 100644 --- a/deps/npm/html/doc/api/npm-explore.html +++ b/deps/npm/html/doc/api/npm-explore.html @@ -31,5 +31,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-help-search.html b/deps/npm/html/doc/api/npm-help-search.html index 3f712ef90d3..bbb927793c9 100644 --- a/deps/npm/html/doc/api/npm-help-search.html +++ b/deps/npm/html/doc/api/npm-help-search.html @@ -44,5 +44,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-init.html b/deps/npm/html/doc/api/npm-init.html index c070ca28598..8650467ffdd 100644 --- a/deps/npm/html/doc/api/npm-init.html +++ b/deps/npm/html/doc/api/npm-init.html @@ -39,5 +39,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/api/npm-install.html b/deps/npm/html/doc/api/npm-install.html index fdf46b2b4ee..431593b1c30 100644 --- a/deps/npm/html/doc/api/npm-install.html +++ b/deps/npm/html/doc/api/npm-install.html @@ -32,5 +32,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-link.html b/deps/npm/html/doc/api/npm-link.html index 08e7d665c2d..95cb3b822c1 100644 --- a/deps/npm/html/doc/api/npm-link.html +++ b/deps/npm/html/doc/api/npm-link.html @@ -42,5 +42,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-load.html b/deps/npm/html/doc/api/npm-load.html index 7ff77ad9fc5..ba0529479a7 100644 --- a/deps/npm/html/doc/api/npm-load.html +++ b/deps/npm/html/doc/api/npm-load.html @@ -37,5 +37,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-ls.html b/deps/npm/html/doc/api/npm-ls.html index ebc3224c0b1..abe1cb0ef85 100644 --- a/deps/npm/html/doc/api/npm-ls.html +++ b/deps/npm/html/doc/api/npm-ls.html @@ -63,5 +63,5 @@

global

       - + diff --git a/deps/npm/html/doc/api/npm-outdated.html b/deps/npm/html/doc/api/npm-outdated.html index 19447924434..1e1c498a90a 100644 --- a/deps/npm/html/doc/api/npm-outdated.html +++ b/deps/npm/html/doc/api/npm-outdated.html @@ -28,5 +28,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-owner.html b/deps/npm/html/doc/api/npm-owner.html index 2248eeb0c12..1f7e097f282 100644 --- a/deps/npm/html/doc/api/npm-owner.html +++ b/deps/npm/html/doc/api/npm-owner.html @@ -47,5 +47,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/api/npm-pack.html b/deps/npm/html/doc/api/npm-pack.html index dc5362dd1dd..9e9009d2ea3 100644 --- a/deps/npm/html/doc/api/npm-pack.html +++ b/deps/npm/html/doc/api/npm-pack.html @@ -33,5 +33,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-prefix.html b/deps/npm/html/doc/api/npm-prefix.html index 5b905676f0b..8d5b6f2837e 100644 --- a/deps/npm/html/doc/api/npm-prefix.html +++ b/deps/npm/html/doc/api/npm-prefix.html @@ -29,5 +29,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-prune.html b/deps/npm/html/doc/api/npm-prune.html index 5b33b8cce21..69f442c782e 100644 --- a/deps/npm/html/doc/api/npm-prune.html +++ b/deps/npm/html/doc/api/npm-prune.html @@ -30,5 +30,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-publish.html b/deps/npm/html/doc/api/npm-publish.html index 8cc53f74594..644d74faa1a 100644 --- a/deps/npm/html/doc/api/npm-publish.html +++ b/deps/npm/html/doc/api/npm-publish.html @@ -46,5 +46,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/api/npm-rebuild.html b/deps/npm/html/doc/api/npm-rebuild.html index 331ae4b2a88..85bda647490 100644 --- a/deps/npm/html/doc/api/npm-rebuild.html +++ b/deps/npm/html/doc/api/npm-rebuild.html @@ -30,5 +30,5 @@

CONFIGURATION

       - + diff --git a/deps/npm/html/doc/api/npm-repo.html b/deps/npm/html/doc/api/npm-repo.html index bc76cda29b5..974f4586434 100644 --- a/deps/npm/html/doc/api/npm-repo.html +++ b/deps/npm/html/doc/api/npm-repo.html @@ -33,5 +33,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-restart.html b/deps/npm/html/doc/api/npm-restart.html index 5708d3dd3c1..6bd94fb8c51 100644 --- a/deps/npm/html/doc/api/npm-restart.html +++ b/deps/npm/html/doc/api/npm-restart.html @@ -52,5 +52,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/api/npm-root.html b/deps/npm/html/doc/api/npm-root.html index 9a78ea6f261..ece4e0bf772 100644 --- a/deps/npm/html/doc/api/npm-root.html +++ b/deps/npm/html/doc/api/npm-root.html @@ -29,5 +29,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-run-script.html b/deps/npm/html/doc/api/npm-run-script.html index e61d568f7af..618fe180dfe 100644 --- a/deps/npm/html/doc/api/npm-run-script.html +++ b/deps/npm/html/doc/api/npm-run-script.html @@ -41,5 +41,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/api/npm-search.html b/deps/npm/html/doc/api/npm-search.html index 816cc2977d4..07762aeb89a 100644 --- a/deps/npm/html/doc/api/npm-search.html +++ b/deps/npm/html/doc/api/npm-search.html @@ -53,5 +53,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-shrinkwrap.html b/deps/npm/html/doc/api/npm-shrinkwrap.html index 2758f319a0f..4d4773e7ffe 100644 --- a/deps/npm/html/doc/api/npm-shrinkwrap.html +++ b/deps/npm/html/doc/api/npm-shrinkwrap.html @@ -33,5 +33,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-start.html b/deps/npm/html/doc/api/npm-start.html index d0b5b5283b3..35eae828639 100644 --- a/deps/npm/html/doc/api/npm-start.html +++ b/deps/npm/html/doc/api/npm-start.html @@ -28,5 +28,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-stop.html b/deps/npm/html/doc/api/npm-stop.html index 101418f7c1b..abdea07bf60 100644 --- a/deps/npm/html/doc/api/npm-stop.html +++ b/deps/npm/html/doc/api/npm-stop.html @@ -28,5 +28,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-tag.html b/deps/npm/html/doc/api/npm-tag.html index 94970b9f09f..87e7480ccaa 100644 --- a/deps/npm/html/doc/api/npm-tag.html +++ b/deps/npm/html/doc/api/npm-tag.html @@ -36,5 +36,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-test.html b/deps/npm/html/doc/api/npm-test.html index 004b7a165c8..1a6892f2948 100644 --- a/deps/npm/html/doc/api/npm-test.html +++ b/deps/npm/html/doc/api/npm-test.html @@ -30,5 +30,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-uninstall.html b/deps/npm/html/doc/api/npm-uninstall.html index 76b22b19b39..ed865457028 100644 --- a/deps/npm/html/doc/api/npm-uninstall.html +++ b/deps/npm/html/doc/api/npm-uninstall.html @@ -30,5 +30,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-unpublish.html b/deps/npm/html/doc/api/npm-unpublish.html index 8b5f0c46a16..5c80b96b579 100644 --- a/deps/npm/html/doc/api/npm-unpublish.html +++ b/deps/npm/html/doc/api/npm-unpublish.html @@ -33,5 +33,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-update.html b/deps/npm/html/doc/api/npm-update.html index c60b25f204d..81e0ce7b647 100644 --- a/deps/npm/html/doc/api/npm-update.html +++ b/deps/npm/html/doc/api/npm-update.html @@ -33,5 +33,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/api/npm-version.html b/deps/npm/html/doc/api/npm-version.html index 3b9a8d6dd13..0aa4c7f2023 100644 --- a/deps/npm/html/doc/api/npm-version.html +++ b/deps/npm/html/doc/api/npm-version.html @@ -32,5 +32,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-view.html b/deps/npm/html/doc/api/npm-view.html index 61ff364c262..6d1e58eaa76 100644 --- a/deps/npm/html/doc/api/npm-view.html +++ b/deps/npm/html/doc/api/npm-view.html @@ -81,5 +81,5 @@

RETURN VALUE

       - + diff --git a/deps/npm/html/doc/api/npm-whoami.html b/deps/npm/html/doc/api/npm-whoami.html index 0a9f75d8e3b..3c942db165d 100644 --- a/deps/npm/html/doc/api/npm-whoami.html +++ b/deps/npm/html/doc/api/npm-whoami.html @@ -29,5 +29,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm.html b/deps/npm/html/doc/api/npm.html index 3f1dee14bf4..0992c27ac98 100644 --- a/deps/npm/html/doc/api/npm.html +++ b/deps/npm/html/doc/api/npm.html @@ -23,7 +23,7 @@

SYNOPSIS

npm.commands.install(["package"], cb) })

VERSION

-

2.8.4

+

2.9.1

DESCRIPTION

This is the API documentation for npm. To find documentation of the command line @@ -109,5 +109,5 @@

ABBREVS

       - + diff --git a/deps/npm/html/doc/cli/npm-access.html b/deps/npm/html/doc/cli/npm-access.html index 415ea5df4a7..2715b7e26a8 100644 --- a/deps/npm/html/doc/cli/npm-access.html +++ b/deps/npm/html/doc/cli/npm-access.html @@ -75,5 +75,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-adduser.html b/deps/npm/html/doc/cli/npm-adduser.html index 97599f19eaa..611046f7132 100644 --- a/deps/npm/html/doc/cli/npm-adduser.html +++ b/deps/npm/html/doc/cli/npm-adduser.html @@ -68,5 +68,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-bin.html b/deps/npm/html/doc/cli/npm-bin.html index 850a5b5368f..57610bec6a4 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 e715ce38563..6316feebffc 100644 --- a/deps/npm/html/doc/cli/npm-bugs.html +++ b/deps/npm/html/doc/cli/npm-bugs.html @@ -54,5 +54,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/cli/npm-build.html b/deps/npm/html/doc/cli/npm-build.html index 82bbfcddb5a..84842fd3445 100644 --- a/deps/npm/html/doc/cli/npm-build.html +++ b/deps/npm/html/doc/cli/npm-build.html @@ -18,8 +18,10 @@

SYNOPSIS

DESCRIPTION

This is the plumbing command called by npm link and npm install.

-

It should generally not be called directly.

-

SEE ALSO

+

It should generally be called during installation, but if you need to run it +directly, run:

+
npm run-script build
+

SEE ALSO

  • npm-install(1)
  • npm-link(1)
  • @@ -38,5 +40,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-bundle.html b/deps/npm/html/doc/cli/npm-bundle.html index c073c70faa1..434fa55e74d 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 1e502d8dae6..1ee216ea51d 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 fc2fa12e01e..b873975725b 100644 --- a/deps/npm/html/doc/cli/npm-completion.html +++ b/deps/npm/html/doc/cli/npm-completion.html @@ -42,5 +42,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-config.html b/deps/npm/html/doc/cli/npm-config.html index b1319a489c8..0fdce7cf919 100644 --- a/deps/npm/html/doc/cli/npm-config.html +++ b/deps/npm/html/doc/cli/npm-config.html @@ -66,5 +66,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-dedupe.html b/deps/npm/html/doc/cli/npm-dedupe.html index 8442e64f1bc..060ab2a8907 100644 --- a/deps/npm/html/doc/cli/npm-dedupe.html +++ b/deps/npm/html/doc/cli/npm-dedupe.html @@ -63,5 +63,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-deprecate.html b/deps/npm/html/doc/cli/npm-deprecate.html index fe1a2d49fda..05c380224b9 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 2bc242a8318..ff080d66c4a 100644 --- a/deps/npm/html/doc/cli/npm-dist-tag.html +++ b/deps/npm/html/doc/cli/npm-dist-tag.html @@ -77,5 +77,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-docs.html b/deps/npm/html/doc/cli/npm-docs.html index 744b929dead..e94aa6af0e6 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 e97b201dcd9..a49d795c6c9 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 32de30041af..2b94434260a 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 d19f7a4ed52..f1beb0a798a 100644 --- a/deps/npm/html/doc/cli/npm-help-search.html +++ b/deps/npm/html/doc/cli/npm-help-search.html @@ -46,5 +46,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-help.html b/deps/npm/html/doc/cli/npm-help.html index 8c88874c904..7d3d6cf8e97 100644 --- a/deps/npm/html/doc/cli/npm-help.html +++ b/deps/npm/html/doc/cli/npm-help.html @@ -52,5 +52,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-init.html b/deps/npm/html/doc/cli/npm-init.html index eff69630e91..9fc6f9fc3fc 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.html b/deps/npm/html/doc/cli/npm-install.html index 6134f1c0113..caf36b9f141 100644 --- a/deps/npm/html/doc/cli/npm-install.html +++ b/deps/npm/html/doc/cli/npm-install.html @@ -264,5 +264,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-link.html b/deps/npm/html/doc/cli/npm-link.html index 3e8e1539b2e..8f5c62dad52 100644 --- a/deps/npm/html/doc/cli/npm-link.html +++ b/deps/npm/html/doc/cli/npm-link.html @@ -72,5 +72,5 @@

    SYNOPSIS

           - + diff --git a/deps/npm/html/doc/cli/npm-logout.html b/deps/npm/html/doc/cli/npm-logout.html index 2a84981fd1b..69906c60378 100644 --- a/deps/npm/html/doc/cli/npm-logout.html +++ b/deps/npm/html/doc/cli/npm-logout.html @@ -55,5 +55,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-ls.html b/deps/npm/html/doc/cli/npm-ls.html index d14e56135e3..73893326a4c 100644 --- a/deps/npm/html/doc/cli/npm-ls.html +++ b/deps/npm/html/doc/cli/npm-ls.html @@ -22,7 +22,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@2.8.4 /path/to/npm
    +
    npm@2.9.1 /path/to/npm
     └─┬ init-package-json@0.0.4
       └── promzard@0.1.5
     

    It will print out extraneous, missing, and invalid packages.

    @@ -97,5 +97,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-outdated.html b/deps/npm/html/doc/cli/npm-outdated.html index 484f3dd553e..167193d0059 100644 --- a/deps/npm/html/doc/cli/npm-outdated.html +++ b/deps/npm/html/doc/cli/npm-outdated.html @@ -67,5 +67,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-owner.html b/deps/npm/html/doc/cli/npm-owner.html index 5294b23392e..5537ea2b0c7 100644 --- a/deps/npm/html/doc/cli/npm-owner.html +++ b/deps/npm/html/doc/cli/npm-owner.html @@ -49,5 +49,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-pack.html b/deps/npm/html/doc/cli/npm-pack.html index 967c9f9493c..b160d74c835 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-prefix.html b/deps/npm/html/doc/cli/npm-prefix.html index 1b7a4cd2e1e..06bb8c41cb2 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 ccdf64acf95..514ac9ee731 100644 --- a/deps/npm/html/doc/cli/npm-prune.html +++ b/deps/npm/html/doc/cli/npm-prune.html @@ -39,5 +39,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-publish.html b/deps/npm/html/doc/cli/npm-publish.html index fb808802ed8..4cd0137eefb 100644 --- a/deps/npm/html/doc/cli/npm-publish.html +++ b/deps/npm/html/doc/cli/npm-publish.html @@ -66,5 +66,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-rebuild.html b/deps/npm/html/doc/cli/npm-rebuild.html index de6b36bea40..f975cc00036 100644 --- a/deps/npm/html/doc/cli/npm-rebuild.html +++ b/deps/npm/html/doc/cli/npm-rebuild.html @@ -38,5 +38,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-repo.html b/deps/npm/html/doc/cli/npm-repo.html index 329a1a1c55f..9032fe301c6 100644 --- a/deps/npm/html/doc/cli/npm-repo.html +++ b/deps/npm/html/doc/cli/npm-repo.html @@ -42,5 +42,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-restart.html b/deps/npm/html/doc/cli/npm-restart.html index 479fa955f7c..42952359c60 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-rm.html b/deps/npm/html/doc/cli/npm-rm.html index a447d9ebe77..a291ae07316 100644 --- a/deps/npm/html/doc/cli/npm-rm.html +++ b/deps/npm/html/doc/cli/npm-rm.html @@ -39,5 +39,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-root.html b/deps/npm/html/doc/cli/npm-root.html index 68b20f17779..c49519cbbc4 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 a408df39f08..ac4433d6c5d 100644 --- a/deps/npm/html/doc/cli/npm-run-script.html +++ b/deps/npm/html/doc/cli/npm-run-script.html @@ -56,5 +56,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-search.html b/deps/npm/html/doc/cli/npm-search.html index 69cc90db968..362c2b28a25 100644 --- a/deps/npm/html/doc/cli/npm-search.html +++ b/deps/npm/html/doc/cli/npm-search.html @@ -49,5 +49,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-shrinkwrap.html b/deps/npm/html/doc/cli/npm-shrinkwrap.html index e997a2cbe7d..9e2783e5452 100644 --- a/deps/npm/html/doc/cli/npm-shrinkwrap.html +++ b/deps/npm/html/doc/cli/npm-shrinkwrap.html @@ -15,9 +15,9 @@

    SYNOPSIS

    DESCRIPTION

    This command locks down the versions of a package's dependencies so that you can control exactly which versions of each dependency will be -used when your package is installed. The "package.json" file is still -required if you want to use "npm install".

    -

    By default, "npm install" recursively installs the target's +used when your package is installed. The package.json file is still +required if you want to use npm install.

    +

    By default, npm install recursively installs the target's dependencies (as specified in package.json), choosing the latest available version that satisfies the dependency's semver pattern. In some situations, particularly when shipping software where each change @@ -51,11 +51,11 @@

    SYNOPSIS

    "version": "0.0.1" }

    If these are the only versions of A, B, and C available in the -registry, then a normal "npm install A" will install:

    +registry, then a normal npm install A will install:

    A@0.1.0
     `-- B@0.0.1
         `-- C@0.0.1
    -

    However, if B@0.0.2 is published, then a fresh "npm install A" will +

    However, if B@0.0.2 is published, then a fresh npm install A will install:

    A@0.1.0
     `-- B@0.0.2
    @@ -85,7 +85,7 @@ 

    SYNOPSIS

    } }

    The shrinkwrap command has locked down the dependencies based on -what's currently installed in node_modules. When "npm install" +what's currently installed in node_modules. When npm install installs a package with a npm-shrinkwrap.json file in the package root, the shrinkwrap file (rather than package.json files) completely drives the installation of that package and all of its dependencies @@ -95,41 +95,41 @@

    SYNOPSIS

    files.

    Using shrinkwrapped packages

    Using a shrinkwrapped package is no different than using any other -package: you can "npm install" it by hand, or add a dependency to your -package.json file and "npm install" it.

    +package: you can npm install it by hand, or add a dependency to your +package.json file and npm install it.

    Building shrinkwrapped packages

    To shrinkwrap an existing package:

      -
    1. Run "npm install" in the package root to install the current +
    2. Run npm install in the package root to install the current versions of all dependencies.
    3. Validate that the package works as expected with these versions.
    4. -
    5. Run "npm shrinkwrap", add npm-shrinkwrap.json to git, and publish +
    6. Run npm shrinkwrap, add npm-shrinkwrap.json to git, and publish your package.

    To add or update a dependency in a shrinkwrapped package:

      -
    1. Run "npm install" in the package root to install the current +
    2. Run npm install in the package root to install the current versions of all dependencies.
    3. -
    4. Add or update dependencies. "npm install" each new or updated +
    5. Add or update dependencies. npm install each new or updated package individually and then update package.json. Note that they must be explicitly named in order to be installed: running npm install with no arguments will merely reproduce the existing shrinkwrap.
    6. Validate that the package works as expected with the new dependencies.
    7. -
    8. Run "npm shrinkwrap", commit the new npm-shrinkwrap.json, and +
    9. Run npm shrinkwrap, commit the new npm-shrinkwrap.json, and publish your package.

    You can use npm-outdated(1) to view dependencies with newer versions available.

    Other Notes

    A shrinkwrap file must be consistent with the package's package.json -file. "npm shrinkwrap" will fail if required dependencies are not +file. npm shrinkwrap will fail if required dependencies are not already installed, since that would result in a shrinkwrap that wouldn't actually work. Similarly, the command will fail if there are extraneous packages (not referenced by package.json), since that would indicate that package.json is not correct.

    -

    Since "npm shrinkwrap" is intended to lock down your dependencies for +

    Since npm shrinkwrap is intended to lock down your dependencies for production use, devDependencies will not be included unless you explicitly set the --dev flag when you run npm shrinkwrap. If installed devDependencies are excluded, then npm will print a @@ -164,5 +164,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-star.html b/deps/npm/html/doc/cli/npm-star.html index e5b060e0608..2d5d0bbe208 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 43c974d8144..dd57f622493 100644 --- a/deps/npm/html/doc/cli/npm-stars.html +++ b/deps/npm/html/doc/cli/npm-stars.html @@ -37,5 +37,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-start.html b/deps/npm/html/doc/cli/npm-start.html index 9cff46e7ad3..777b8a69670 100644 --- a/deps/npm/html/doc/cli/npm-start.html +++ b/deps/npm/html/doc/cli/npm-start.html @@ -34,5 +34,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-stop.html b/deps/npm/html/doc/cli/npm-stop.html index 167cec8381a..6b8d9e84be4 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 4361b3df8db..cb73a330078 100644 --- a/deps/npm/html/doc/cli/npm-tag.html +++ b/deps/npm/html/doc/cli/npm-tag.html @@ -62,5 +62,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-test.html b/deps/npm/html/doc/cli/npm-test.html index e6a80f5db27..9d50339debf 100644 --- a/deps/npm/html/doc/cli/npm-test.html +++ b/deps/npm/html/doc/cli/npm-test.html @@ -37,5 +37,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-uninstall.html b/deps/npm/html/doc/cli/npm-uninstall.html index 491a9ef65d6..d53e1540211 100644 --- a/deps/npm/html/doc/cli/npm-uninstall.html +++ b/deps/npm/html/doc/cli/npm-uninstall.html @@ -57,5 +57,5 @@

    SYNOPSIS

           - + diff --git a/deps/npm/html/doc/cli/npm-unpublish.html b/deps/npm/html/doc/cli/npm-unpublish.html index edefefd113f..a9b8a856dcb 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 e977a34b78c..c10a98e4ba8 100644 --- a/deps/npm/html/doc/cli/npm-update.html +++ b/deps/npm/html/doc/cli/npm-update.html @@ -119,5 +119,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-version.html b/deps/npm/html/doc/cli/npm-version.html index c379b5204c6..40f0cbdf3f4 100644 --- a/deps/npm/html/doc/cli/npm-version.html +++ b/deps/npm/html/doc/cli/npm-version.html @@ -65,5 +65,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-view.html b/deps/npm/html/doc/cli/npm-view.html index 3e58a94e5f6..825df1c29a6 100644 --- a/deps/npm/html/doc/cli/npm-view.html +++ b/deps/npm/html/doc/cli/npm-view.html @@ -82,5 +82,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-whoami.html b/deps/npm/html/doc/cli/npm-whoami.html index 064de90df64..24fd65480b2 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 9d2bc2cf15b..0f74f132fe7 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

    -

    2.8.4

    +

    2.9.1

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

    CONTRIBUTIONS

    the issues list or ask on the mailing list.

    BUGS

    When you find issues, please report them:

    @@ -118,7 +118,7 @@

    BUGS

  • web: http://github.com/npm/npm/issues
  • email: -npm-@googlegroups.com
  • +npm-@googlegroups.com

Be sure to include all of the output from the npm command that didn't work as expected. The npm-debug.log file is also helpful to provide.

@@ -128,7 +128,7 @@

AUTHOR

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

+i@izs.me

SEE ALSO

  • npm-help(1)
  • @@ -154,5 +154,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/files/npm-folders.html b/deps/npm/html/doc/files/npm-folders.html index 62ee094c578..b967b55fd83 100644 --- a/deps/npm/html/doc/files/npm-folders.html +++ b/deps/npm/html/doc/files/npm-folders.html @@ -184,5 +184,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/files/npm-global.html b/deps/npm/html/doc/files/npm-global.html index 9e25e379271..a0d65c02b81 100644 --- a/deps/npm/html/doc/files/npm-global.html +++ b/deps/npm/html/doc/files/npm-global.html @@ -184,5 +184,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/files/npm-json.html b/deps/npm/html/doc/files/npm-json.html index 46c8292638d..b48cfd7cb95 100644 --- a/deps/npm/html/doc/files/npm-json.html +++ b/deps/npm/html/doc/files/npm-json.html @@ -21,14 +21,22 @@

    name

    them. The name and version together form an identifier that is assumed to be completely unique. Changes to the package should come along with changes to the version.

    -

    The name is what your thing is called. Some tips:

    +

    The name is what your thing is called.

    +

    Some rules:

      +
    • The name must be shorter than 214 characters. This includes the scope for +scoped packages.
    • +
    • The name can't start with a dot or an underscore.
    • +
    • New packages must not have uppercase letters in the name.
    • +
    • The name ends up being part of a URL, an argument on the command line, and a +folder name. Therefore, the name can't contain any non-URL-safe characters.
    • +
    +

    Some tips:

    +
      +
    • Don't use the same name as a core Node module.
    • Don't put "js" or "node" in the name. It's assumed that it's js, since you're writing a package.json file, and you can specify the engine using the "engines" field. (See below.)
    • -
    • The name ends up being part of a URL, an argument on the command line, and a -folder name. Any name with non-url-safe characters will be rejected. -Also, it can't start with a dot or an underscore.
    • The name will probably be passed as an argument to require(), so it should be something short, but also reasonably descriptive.
    • You may want to check the npm registry to see if there's something by that name @@ -502,5 +510,5 @@

      SEE ALSO

             - + diff --git a/deps/npm/html/doc/files/npmrc.html b/deps/npm/html/doc/files/npmrc.html index 4ab15598553..a745e6536b6 100644 --- a/deps/npm/html/doc/files/npmrc.html +++ b/deps/npm/html/doc/files/npmrc.html @@ -21,7 +21,7 @@

      FILES

      • per-project config file (/path/to/my/project/.npmrc)
      • per-user config file (~/.npmrc)
      • -
      • global config file ($PREFIX/npmrc)
      • +
      • global config file ($PREFIX/etc/npmrc)
      • npm builtin config file (/path/to/npm/npmrc)

      All npm config files are an ini-formatted list of key = value @@ -77,5 +77,5 @@

      SEE ALSO

             - + diff --git a/deps/npm/html/doc/files/package.json.html b/deps/npm/html/doc/files/package.json.html index dd971145e4a..f435bb7176c 100644 --- a/deps/npm/html/doc/files/package.json.html +++ b/deps/npm/html/doc/files/package.json.html @@ -21,14 +21,22 @@

      name

      them. The name and version together form an identifier that is assumed to be completely unique. Changes to the package should come along with changes to the version.

      -

      The name is what your thing is called. Some tips:

      +

      The name is what your thing is called.

      +

      Some rules:

        +
      • The name must be shorter than 214 characters. This includes the scope for +scoped packages.
      • +
      • The name can't start with a dot or an underscore.
      • +
      • New packages must not have uppercase letters in the name.
      • +
      • The name ends up being part of a URL, an argument on the command line, and a +folder name. Therefore, the name can't contain any non-URL-safe characters.
      • +
      +

      Some tips:

      +
        +
      • Don't use the same name as a core Node module.
      • Don't put "js" or "node" in the name. It's assumed that it's js, since you're writing a package.json file, and you can specify the engine using the "engines" field. (See below.)
      • -
      • The name ends up being part of a URL, an argument on the command line, and a -folder name. Any name with non-url-safe characters will be rejected. -Also, it can't start with a dot or an underscore.
      • The name will probably be passed as an argument to require(), so it should be something short, but also reasonably descriptive.
      • You may want to check the npm registry to see if there's something by that name @@ -502,5 +510,5 @@

        SEE ALSO

               - + diff --git a/deps/npm/html/doc/index.html b/deps/npm/html/doc/index.html index 5e1c31ddfbf..3e53e26e84e 100644 --- a/deps/npm/html/doc/index.html +++ b/deps/npm/html/doc/index.html @@ -236,5 +236,5 @@

        semver(        - + diff --git a/deps/npm/html/doc/misc/npm-coding-style.html b/deps/npm/html/doc/misc/npm-coding-style.html index 3fd3cff5afb..49eb7425363 100644 --- a/deps/npm/html/doc/misc/npm-coding-style.html +++ b/deps/npm/html/doc/misc/npm-coding-style.html @@ -147,5 +147,5 @@

        SEE ALSO

               - + diff --git a/deps/npm/html/doc/misc/npm-config.html b/deps/npm/html/doc/misc/npm-config.html index 8c897bbae21..4410dc5f720 100644 --- a/deps/npm/html/doc/misc/npm-config.html +++ b/deps/npm/html/doc/misc/npm-config.html @@ -689,6 +689,17 @@

        tag

        it will install the specified tag.

        Also the tag that is added to the package@version specified by the npm tag command, if no explicit tag is given.

        +

        tag-version-prefix

        +
          +
        • Default: "v"
        • +
        • Type: String
        • +
        +

        If set, alters the prefix used when tagging a new version when performing a +version increment using npm-version. To remove the prefix altogether, set it +to the empty string: "".

        +

        Because other tools may rely on the convention that npm version tags look like +v1.0.0, only use this property if it is absolutely necessary. In +particular, use care when overriding this setting for public packages.

        tmp

        DESCRIPTION

        This is the plumbing command called by npm link and npm install.

        -

        It should generally not be called directly.

        -

        SEE ALSO

        +

        It should generally be called during installation, but if you need to run it +directly, run:

        +
        npm run-script build
        +

        SEE ALSO

        • npm-install(1)
        • npm-link(1)
        • diff --git a/deps/npm/html/partial/doc/cli/npm-ls.html b/deps/npm/html/partial/doc/cli/npm-ls.html index aacb182d7ee..45be4bb595e 100644 --- a/deps/npm/html/partial/doc/cli/npm-ls.html +++ b/deps/npm/html/partial/doc/cli/npm-ls.html @@ -11,7 +11,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@2.8.4 /path/to/npm
          +
          npm@2.9.1 /path/to/npm
           └─┬ init-package-json@0.0.4
             └── promzard@0.1.5
           

          It will print out extraneous, missing, and invalid packages.

          diff --git a/deps/npm/html/partial/doc/cli/npm-shrinkwrap.html b/deps/npm/html/partial/doc/cli/npm-shrinkwrap.html index 82bb81f168b..7857cf85ee8 100644 --- a/deps/npm/html/partial/doc/cli/npm-shrinkwrap.html +++ b/deps/npm/html/partial/doc/cli/npm-shrinkwrap.html @@ -4,9 +4,9 @@

          SYNOPSIS

          DESCRIPTION

          This command locks down the versions of a package's dependencies so that you can control exactly which versions of each dependency will be -used when your package is installed. The "package.json" file is still -required if you want to use "npm install".

          -

          By default, "npm install" recursively installs the target's +used when your package is installed. The package.json file is still +required if you want to use npm install.

          +

          By default, npm install recursively installs the target's dependencies (as specified in package.json), choosing the latest available version that satisfies the dependency's semver pattern. In some situations, particularly when shipping software where each change @@ -40,11 +40,11 @@

          SYNOPSIS

          "version": "0.0.1" }

          If these are the only versions of A, B, and C available in the -registry, then a normal "npm install A" will install:

          +registry, then a normal npm install A will install:

          A@0.1.0
           `-- B@0.0.1
               `-- C@0.0.1
          -

          However, if B@0.0.2 is published, then a fresh "npm install A" will +

          However, if B@0.0.2 is published, then a fresh npm install A will install:

          A@0.1.0
           `-- B@0.0.2
          @@ -74,7 +74,7 @@ 

          SYNOPSIS

          } }

          The shrinkwrap command has locked down the dependencies based on -what's currently installed in node_modules. When "npm install" +what's currently installed in node_modules. When npm install installs a package with a npm-shrinkwrap.json file in the package root, the shrinkwrap file (rather than package.json files) completely drives the installation of that package and all of its dependencies @@ -84,41 +84,41 @@

          SYNOPSIS

          files.

          Using shrinkwrapped packages

          Using a shrinkwrapped package is no different than using any other -package: you can "npm install" it by hand, or add a dependency to your -package.json file and "npm install" it.

          +package: you can npm install it by hand, or add a dependency to your +package.json file and npm install it.

          Building shrinkwrapped packages

          To shrinkwrap an existing package:

            -
          1. Run "npm install" in the package root to install the current +
          2. Run npm install in the package root to install the current versions of all dependencies.
          3. Validate that the package works as expected with these versions.
          4. -
          5. Run "npm shrinkwrap", add npm-shrinkwrap.json to git, and publish +
          6. Run npm shrinkwrap, add npm-shrinkwrap.json to git, and publish your package.

          To add or update a dependency in a shrinkwrapped package:

            -
          1. Run "npm install" in the package root to install the current +
          2. Run npm install in the package root to install the current versions of all dependencies.
          3. -
          4. Add or update dependencies. "npm install" each new or updated +
          5. Add or update dependencies. npm install each new or updated package individually and then update package.json. Note that they must be explicitly named in order to be installed: running npm install with no arguments will merely reproduce the existing shrinkwrap.
          6. Validate that the package works as expected with the new dependencies.
          7. -
          8. Run "npm shrinkwrap", commit the new npm-shrinkwrap.json, and +
          9. Run npm shrinkwrap, commit the new npm-shrinkwrap.json, and publish your package.

          You can use npm-outdated(1) to view dependencies with newer versions available.

          Other Notes

          A shrinkwrap file must be consistent with the package's package.json -file. "npm shrinkwrap" will fail if required dependencies are not +file. npm shrinkwrap will fail if required dependencies are not already installed, since that would result in a shrinkwrap that wouldn't actually work. Similarly, the command will fail if there are extraneous packages (not referenced by package.json), since that would indicate that package.json is not correct.

          -

          Since "npm shrinkwrap" is intended to lock down your dependencies for +

          Since npm shrinkwrap is intended to lock down your dependencies for production use, devDependencies will not be included unless you explicitly set the --dev flag when you run npm shrinkwrap. If installed devDependencies are excluded, then npm will print a diff --git a/deps/npm/html/partial/doc/cli/npm.html b/deps/npm/html/partial/doc/cli/npm.html index 54ca77a574d..61fb642e0dd 100644 --- a/deps/npm/html/partial/doc/cli/npm.html +++ b/deps/npm/html/partial/doc/cli/npm.html @@ -2,7 +2,7 @@

          npm

          javascript package manager

          SYNOPSIS

          npm <command> [args]
           

          VERSION

          -

          2.8.4

          +

          2.9.1

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

          CONTRIBUTIONS

          the issues list or ask on the mailing list.

          BUGS

          When you find issues, please report them:

          @@ -107,7 +107,7 @@

          BUGS

        • web: http://github.com/npm/npm/issues
        • email: -npm-@googlegroups.com
        • +npm-@googlegroups.com

        Be sure to include all of the output from the npm command that didn't work as expected. The npm-debug.log file is also helpful to provide.

        @@ -117,7 +117,7 @@

        AUTHOR

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

        +i@izs.me

        SEE ALSO

        • npm-help(1)
        • diff --git a/deps/npm/html/partial/doc/files/npm-json.html b/deps/npm/html/partial/doc/files/npm-json.html index ac4bfbc9803..f5fadd1b647 100644 --- a/deps/npm/html/partial/doc/files/npm-json.html +++ b/deps/npm/html/partial/doc/files/npm-json.html @@ -10,14 +10,22 @@

          name

          them. The name and version together form an identifier that is assumed to be completely unique. Changes to the package should come along with changes to the version.

          -

          The name is what your thing is called. Some tips:

          +

          The name is what your thing is called.

          +

          Some rules:

            +
          • The name must be shorter than 214 characters. This includes the scope for +scoped packages.
          • +
          • The name can't start with a dot or an underscore.
          • +
          • New packages must not have uppercase letters in the name.
          • +
          • The name ends up being part of a URL, an argument on the command line, and a +folder name. Therefore, the name can't contain any non-URL-safe characters.
          • +
          +

          Some tips:

          +
            +
          • Don't use the same name as a core Node module.
          • Don't put "js" or "node" in the name. It's assumed that it's js, since you're writing a package.json file, and you can specify the engine using the "engines" field. (See below.)
          • -
          • The name ends up being part of a URL, an argument on the command line, and a -folder name. Any name with non-url-safe characters will be rejected. -Also, it can't start with a dot or an underscore.
          • The name will probably be passed as an argument to require(), so it should be something short, but also reasonably descriptive.
          • You may want to check the npm registry to see if there's something by that name diff --git a/deps/npm/html/partial/doc/files/npmrc.html b/deps/npm/html/partial/doc/files/npmrc.html index 988920a4896..1dd7919df17 100644 --- a/deps/npm/html/partial/doc/files/npmrc.html +++ b/deps/npm/html/partial/doc/files/npmrc.html @@ -10,7 +10,7 @@

            FILES

            • per-project config file (/path/to/my/project/.npmrc)
            • per-user config file (~/.npmrc)
            • -
            • global config file ($PREFIX/npmrc)
            • +
            • global config file ($PREFIX/etc/npmrc)
            • npm builtin config file (/path/to/npm/npmrc)

            All npm config files are an ini-formatted list of key = value diff --git a/deps/npm/html/partial/doc/files/package.json.html b/deps/npm/html/partial/doc/files/package.json.html index ac4bfbc9803..f5fadd1b647 100644 --- a/deps/npm/html/partial/doc/files/package.json.html +++ b/deps/npm/html/partial/doc/files/package.json.html @@ -10,14 +10,22 @@

            name

            them. The name and version together form an identifier that is assumed to be completely unique. Changes to the package should come along with changes to the version.

            -

            The name is what your thing is called. Some tips:

            +

            The name is what your thing is called.

            +

            Some rules:

              +
            • The name must be shorter than 214 characters. This includes the scope for +scoped packages.
            • +
            • The name can't start with a dot or an underscore.
            • +
            • New packages must not have uppercase letters in the name.
            • +
            • The name ends up being part of a URL, an argument on the command line, and a +folder name. Therefore, the name can't contain any non-URL-safe characters.
            • +
            +

            Some tips:

            +
              +
            • Don't use the same name as a core Node module.
            • Don't put "js" or "node" in the name. It's assumed that it's js, since you're writing a package.json file, and you can specify the engine using the "engines" field. (See below.)
            • -
            • The name ends up being part of a URL, an argument on the command line, and a -folder name. Any name with non-url-safe characters will be rejected. -Also, it can't start with a dot or an underscore.
            • The name will probably be passed as an argument to require(), so it should be something short, but also reasonably descriptive.
            • You may want to check the npm registry to see if there's something by that name diff --git a/deps/npm/html/partial/doc/misc/npm-config.html b/deps/npm/html/partial/doc/misc/npm-config.html index 6feb0d4fbd1..2694cb8b2d6 100644 --- a/deps/npm/html/partial/doc/misc/npm-config.html +++ b/deps/npm/html/partial/doc/misc/npm-config.html @@ -678,6 +678,17 @@

              tag

              it will install the specified tag.

              Also the tag that is added to the package@version specified by the npm tag command, if no explicit tag is given.

              +

              tag-version-prefix

              +
                +
              • Default: "v"
              • +
              • Type: String
              • +
              +

              If set, alters the prefix used when tagging a new version when performing a +version increment using npm-version. To remove the prefix altogether, set it +to the empty string: "".

              +

              Because other tools may rely on the convention that npm version tags look like +v1.0.0, only use this property if it is absolutely necessary. In +particular, use care when overriding this setting for public packages.

              tmp

              • Default: TMPDIR environment variable, or "/tmp"
              • diff --git a/deps/npm/html/partial/doc/misc/npm-disputes.html b/deps/npm/html/partial/doc/misc/npm-disputes.html index f94687f8bf3..07374e1f1b0 100644 --- a/deps/npm/html/partial/doc/misc/npm-disputes.html +++ b/deps/npm/html/partial/doc/misc/npm-disputes.html @@ -2,7 +2,7 @@

                npm-disputes

                Handling Module

                SYNOPSIS

                1. Get the author email with npm owner ls <pkgname>
                2. -
                3. Email the author, CC support@npmjs.com
                4. +
                5. Email the author, CC support@npmjs.com
                6. 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.

                @@ -40,12 +40,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.)
              • diff --git a/deps/npm/html/partial/doc/misc/npm-faq.html b/deps/npm/html/partial/doc/misc/npm-faq.html index 1615a54f041..86825eeaef0 100644 --- a/deps/npm/html/partial/doc/misc/npm-faq.html +++ b/deps/npm/html/partial/doc/misc/npm-faq.html @@ -225,7 +225,7 @@

                I get ECONNREFUSED a lot. What'

                To check if the registry is down, open up https://registry.npmjs.org/ in a web browser. This will also tell you if you are just unable to access the internet for some reason.

                -

                If the registry IS down, let us know by emailing support@npmjs.com +

                If the registry IS down, let us know by emailing support@npmjs.com or posting an issue at https://github.com/npm/npm/issues. If it's down for the world (and not just on your local network) then we're probably already being pinged about it.

                diff --git a/deps/npm/html/partial/doc/misc/npm-scope.html b/deps/npm/html/partial/doc/misc/npm-scope.html index 5616efdcb8c..f65c4403676 100644 --- a/deps/npm/html/partial/doc/misc/npm-scope.html +++ b/deps/npm/html/partial/doc/misc/npm-scope.html @@ -7,9 +7,9 @@

                DESCRIPTION

                @somescope/somepackagename
                 

                Scopes are a way of grouping related packages together, and also affect a few things about the way npm treats the package.

                -

                As of 2014-09-03, scoped packages are not supported by the public npm registry. -However, the npm client is backwards-compatible with un-scoped registries, so -it can be used to work with scoped and un-scoped registries at the same time.

                +

                Scoped packages are supported by the public npm registry. The npm +client is backwards-compatible with un-scoped registries, so it can be +used to work with scoped and un-scoped registries at the same time.

                Installing scoped packages

                Scoped packages are installed to a sub-folder of the regular installation folder, e.g. if your other packages are installed in node_modules/packagename, @@ -32,10 +32,22 @@

                Requiring scoped packages

                There is nothing special about the way Node treats scope folders, this is just specifying to require the module mypackage in the folder called @myorg.

                Publishing scoped packages

                -

                Scoped packages can be published to any registry that supports them. -As of 2014-09-03, the public npm registry does not support scoped packages, -so attempting to publish a scoped package to the registry will fail unless -you have associated that scope with a different registry, see below.

                +

                Scoped packages can be published to any registry that supports them, including +the public npm registry.

                +

                (As of 2015-04-19, the public npm registry does support scoped packages)

                +

                If you wish, you may associate a scope with a registry; see below.

                +

                Publishing public scoped packages to the public npm registry

                +

                To publish a public scoped package, you must specify --access public with +the initial publication. This will publish the package and set access +to public as if you had run npm access public after publishing.

                +

                Publishing private scoped packages to the npm registry

                +

                To publish a private scoped package to the npm registry, you must have +an npm Private Modules +account.

                +

                You can then publish the module with npm publish or npm publish +--access restricted, and it will be present in the npm registry, with +restricted access. You can then change the access permissions, if +desired, with npm access or on the npmjs.com website.

                Associating a scope with a registry

                Scopes can be associated with a separate registry. This allows you to seamlessly use a mix of packages from the public npm registry and one or more @@ -54,5 +66,6 @@

                SEE ALSO

                diff --git a/deps/npm/lib/bin.js b/deps/npm/lib/bin.js index 719e8870dda..5465112d889 100644 --- a/deps/npm/lib/bin.js +++ b/deps/npm/lib/bin.js @@ -1,13 +1,14 @@ module.exports = bin var npm = require("./npm.js") +var osenv = require("osenv") bin.usage = "npm bin\nnpm bin -g\n(just prints the bin folder)" function bin (args, silent, cb) { if (typeof cb !== "function") cb = silent, silent = false var b = npm.bin - , PATH = (process.env.PATH || "").split(":") + , PATH = osenv.path() if (!silent) console.log(b) process.nextTick(cb.bind(this, null, b)) diff --git a/deps/npm/lib/cache/add-remote-git.js b/deps/npm/lib/cache/add-remote-git.js index 3ec9c46d1e7..6cfccf8f898 100644 --- a/deps/npm/lib/cache/add-remote-git.js +++ b/deps/npm/lib/cache/add-remote-git.js @@ -115,7 +115,7 @@ function tryClone (from, combinedURL, silent, cb) { // ensure that similarly-named remotes don't collide var repoID = cloneURL.replace(/[^a-zA-Z0-9]+/g, '-') + '-' + - crypto.createHash('sha1').update(cloneURL).digest('hex').slice(0, 8) + crypto.createHash('sha1').update(combinedURL).digest('hex').slice(0, 8) var cachedRemote = path.join(remotes, repoID) cb = inflight(repoID, cb) diff --git a/deps/npm/lib/config/defaults.js b/deps/npm/lib/config/defaults.js index e5744772ed5..a90d4c22b0a 100644 --- a/deps/npm/lib/config/defaults.js +++ b/deps/npm/lib/config/defaults.js @@ -196,6 +196,7 @@ Object.defineProperty(exports, "defaults", {get: function () { , spin: true , "strict-ssl": true , tag : "latest" + , "tag-version-prefix" : "v" , tmp : temp , unicode : true , "unsafe-perm" : process.platform === "win32" @@ -308,15 +309,26 @@ exports.types = , userconfig : path , umask: Umask , version : Boolean + , "tag-version-prefix" : String , versions : Boolean , viewer: String , _exit : Boolean } -function getLocalAddresses() { - Object.keys(os.networkInterfaces()).map(function (nic) { - return os.networkInterfaces()[nic].filter(function (addr) { - return addr.family === "IPv4" +function getLocalAddresses () { + var interfaces + // #8094: some environments require elevated permissions to enumerate + // interfaces, and synchronously throw EPERM when run without + // elevated privileges + try { + interfaces = os.networkInterfaces() + } catch (e) { + interfaces = {} + } + + return Object.keys(interfaces).map(function (nic) { + return interfaces[nic].filter(function (addr) { + return addr.family === 'IPv4' }) .map(function (addr) { return addr.address diff --git a/deps/npm/lib/install.js b/deps/npm/lib/install.js index 799f0de943a..1777148095c 100644 --- a/deps/npm/lib/install.js +++ b/deps/npm/lib/install.js @@ -687,8 +687,6 @@ function installMany (what, where, context, cb) { var parent = data - var d = data.dependencies || {} - // if we're explicitly installing "what" into "where", then the shrinkwrap // for "where" doesn't apply. This would be the case if someone were adding // a new package to a shrinkwrapped package. (data.dependencies will not be @@ -696,10 +694,13 @@ function installMany (what, where, context, cb) { // there's no harm in using that.) if (context.explicit) wrap = null + var deps = data.dependencies || {} + var devDeps = data.devDependencies || {} + // what is a list of things. // resolve each one. asyncMap( what - , targetResolver(where, context, d) + , targetResolver(where, context, deps, devDeps) , function (er, targets) { if (er) return cb(er) @@ -774,7 +775,7 @@ function installMany (what, where, context, cb) { }) } -function targetResolver (where, context, deps) { +function targetResolver (where, context, deps, devDeps) { var alreadyInstalledManually = [] , resolveLeft = 0 , nm = path.resolve(where, "node_modules") @@ -807,7 +808,8 @@ function targetResolver (where, context, deps) { // otherwise, make sure that it's a semver match with what we want. var bd = parent.bundleDependencies var isBundled = bd && bd.indexOf(d.name) !== -1 - var currentIsSatisfactory = semver.satisfies(d.version, deps[d.name] || "*", true) + var expectedVersion = deps[d.name] || (devDeps && devDeps[d.name]) || "*" + var currentIsSatisfactory = semver.satisfies(d.version, expectedVersion, true) if (isBundled || currentIsSatisfactory || deps[d.name] === d._resolved) { return cb(null, d.name) } @@ -890,7 +892,7 @@ function targetResolver (where, context, deps) { return cb(null, []) } - var isGit = npa(what).type === "git" + var isGit = (npa(what).type === "git" || npa(what).type === "hosted") if (!er && data && @@ -916,7 +918,7 @@ function installOne (target, where, context, cb) { // the --link flag makes this a "link" command if it's at the // the top level. var isGit = false - if (target && target._from) isGit = npa(target._from).type === 'git' + if (target && target._from) isGit = (npa(target._from).type === 'git' || npa(target._from).type === 'hosted') if (where === npm.prefix && npm.config.get("link") && !npm.config.get("global") && !isGit) { diff --git a/deps/npm/lib/outdated.js b/deps/npm/lib/outdated.js index 192f474da6e..12db7cb7c79 100644 --- a/deps/npm/lib/outdated.js +++ b/deps/npm/lib/outdated.js @@ -301,7 +301,7 @@ function shouldUpdate (args, dir, dep, has, req, depth, cb, type) { } if (args.length && args.indexOf(dep) === -1) return skip() - var parsed = npa(req) + var parsed = npa(dep + '@' + req) if (parsed.type === "git" || (parsed.hosted && parsed.hosted.type === "github")) { return doIt("git", "git") } @@ -313,8 +313,35 @@ function shouldUpdate (args, dir, dep, has, req, depth, cb, type) { npm.registry.get(uri, { auth : auth }, updateDeps) }) + function updateLocalDeps (latestRegistryVersion) { + readJson(path.resolve(parsed.spec, 'package.json'), function (er, localDependency) { + if (er) return cb() + + var wanted = localDependency.version + var latest = localDependency.version + + if (latestRegistryVersion) { + latest = latestRegistryVersion + if (semver.lt(wanted, latestRegistryVersion)) { + wanted = latestRegistryVersion + req = dep + '@' + latest + } + } + + if (curr.version !== wanted) { + doIt(wanted, latest) + } else { + skip() + } + }) + } + function updateDeps (er, d) { - if (er) return cb() + if (er) { + if (parsed.type !== 'local') return cb() + return updateLocalDeps() + } + if (!d || !d["dist-tags"] || !d.versions) return cb() var l = d.versions[d["dist-tags"].latest] if (!l) return cb() @@ -355,6 +382,8 @@ function shouldUpdate (args, dir, dep, has, req, depth, cb, type) { if (!curr || dFromUrl && cFromUrl && d._from !== curr.from || d.version !== curr.version || d.version !== l.version) { + if (parsed.type === 'local') return updateLocalDeps(l.version) + doIt(d.version, l.version) } else { diff --git a/deps/npm/lib/publish.js b/deps/npm/lib/publish.js index 92a9a9b6715..8f1c73c3c98 100644 --- a/deps/npm/lib/publish.js +++ b/deps/npm/lib/publish.js @@ -7,13 +7,12 @@ var npm = require("./npm.js") , readJson = require("read-package-json") , lifecycle = require("./utils/lifecycle.js") , chain = require("slide").chain - , Conf = require("./config/core.js").Conf - , CachingRegClient = require("./cache/caching-client.js") , mapToRegistry = require("./utils/map-to-registry.js") , cachedPackageRoot = require("./cache/cached-package-root.js") , createReadStream = require("graceful-fs").createReadStream , npa = require("npm-package-arg") , semver = require('semver') + , getPublishConfig = require("./utils/get-publish-config.js") publish.usage = "npm publish [--tag ]" + "\nnpm publish [--tag ]" @@ -83,22 +82,13 @@ function cacheAddPublish (dir, didPre, isRetry, cb) { function publish_ (arg, data, isRetry, cachedir, cb) { if (!data) return cb(new Error("no package.json file found")) - var registry = npm.registry - var config = npm.config - - // check for publishConfig hash - if (data.publishConfig) { - config = new Conf(npm.config) - config.save = npm.config.save.bind(npm.config) - - // don't modify the actual publishConfig object, in case we have - // to set a login token or some other data. - config.unshift(Object.keys(data.publishConfig).reduce(function (s, k) { - s[k] = data.publishConfig[k] - return s - }, {})) - registry = new CachingRegClient(config) - } + var mappedConfig = getPublishConfig( + data.publishConfig, + npm.config, + npm.registry + ) + var config = mappedConfig.config + var registry = mappedConfig.client data._npmVersion = npm.version data._nodeVersion = process.versions.node diff --git a/deps/npm/lib/run-script.js b/deps/npm/lib/run-script.js index bf72bf814d1..057af2bc69c 100644 --- a/deps/npm/lib/run-script.js +++ b/deps/npm/lib/run-script.js @@ -13,7 +13,6 @@ runScript.completion = function (opts, cb) { // see if there's already a package specified. var argv = opts.conf.argv.remain - , installedShallow = require("./utils/completion/installed-shallow.js") if (argv.length >= 4) return cb() @@ -41,33 +40,11 @@ runScript.completion = function (opts, cb) { }) } - // complete against the installed-shallow, and the pwd's scripts. - // but only packages that have scripts - var installed - , scripts - installedShallow(opts, function (d) { - return d.scripts - }, function (er, inst) { - installed = inst - next() - }) - - if (npm.config.get("global")) { - scripts = [] - next() - } - else readJson(path.join(npm.localPrefix, "package.json"), function (er, d) { + readJson(path.join(npm.localPrefix, "package.json"), function (er, d) { if (er && er.code !== "ENOENT" && er.code !== "ENOTDIR") return cb(er) d = d || {} - scripts = Object.keys(d.scripts || {}) - next() + cb(null, Object.keys(d.scripts || {})) }) - - function next () { - if (!installed || !scripts) return - - cb(null, scripts.concat(installed)) - } } function runScript (args, cb) { diff --git a/deps/npm/lib/unpublish.js b/deps/npm/lib/unpublish.js index da03b0dcc86..111f27aa2d2 100644 --- a/deps/npm/lib/unpublish.js +++ b/deps/npm/lib/unpublish.js @@ -2,11 +2,12 @@ module.exports = unpublish var log = require("npmlog") - , npm = require("./npm.js") - , readJson = require("read-package-json") - , path = require("path") - , mapToRegistry = require("./utils/map-to-registry.js") - , npa = require("npm-package-arg") +var npm = require("./npm.js") +var readJson = require("read-package-json") +var path = require("path") +var mapToRegistry = require("./utils/map-to-registry.js") +var npa = require("npm-package-arg") +var getPublishConfig = require("./utils/get-publish-config.js") unpublish.usage = "npm unpublish [@]" @@ -71,19 +72,29 @@ function unpublish (args, cb) { return readJson(cwdJson, function (er, data) { if (er && er.code !== "ENOENT" && er.code !== "ENOTDIR") return cb(er) if (er) return cb("Usage:\n" + unpublish.usage) - gotProject(data.name, data.version, cb) + log.verbose('unpublish', data) + gotProject(data.name, data.version, data.publishConfig, cb) }) } return gotProject(project, version, cb) } -function gotProject (project, version, cb_) { +function gotProject (project, version, publishConfig, cb_) { + if (typeof cb_ !== 'function') { + cb_ = publishConfig + publishConfig = null + } + function cb (er) { if (er) return cb_(er) console.log("- " + project + (version ? "@" + version : "")) cb_() } + var mappedConfig = getPublishConfig(publishConfig, npm.config, npm.registry) + var config = mappedConfig.config + var registry = mappedConfig.client + // remove from the cache first npm.commands.cache(["clean", project, version], function (er) { if (er) { @@ -91,14 +102,14 @@ function gotProject (project, version, cb_) { return cb(er) } - mapToRegistry(project, npm.config, function (er, uri, auth) { + mapToRegistry(project, config, function (er, uri, auth) { if (er) return cb(er) var params = { - version : version, - auth : auth + version: version, + auth: auth } - npm.registry.unpublish(uri, params, cb) + registry.unpublish(uri, params, cb) }) }) } diff --git a/deps/npm/lib/utils/get-publish-config.js b/deps/npm/lib/utils/get-publish-config.js new file mode 100644 index 00000000000..dcbb7b9c0c7 --- /dev/null +++ b/deps/npm/lib/utils/get-publish-config.js @@ -0,0 +1,25 @@ +var Conf = require('../config/core.js').Conf +var CachingRegClient = require('../cache/caching-client.js') +var log = require('npmlog') + +module.exports = getPublishConfig + +function getPublishConfig (publishConfig, defaultConfig, defaultClient) { + var config = defaultConfig + var client = defaultClient + log.verbose('getPublishConfig', publishConfig) + if (publishConfig) { + config = new Conf(defaultConfig) + config.save = defaultConfig.save.bind(defaultConfig) + + // don't modify the actual publishConfig object, in case we have + // to set a login token or some other data. + config.unshift(Object.keys(publishConfig).reduce(function (s, k) { + s[k] = publishConfig[k] + return s + }, {})) + client = new CachingRegClient(config) + } + + return { config: config, client: client } +} diff --git a/deps/npm/lib/version.js b/deps/npm/lib/version.js index d4af41be572..294cfd620be 100644 --- a/deps/npm/lib/version.js +++ b/deps/npm/lib/version.js @@ -155,7 +155,7 @@ function commit (version, hasShrinkwrap, cb) { git.chainableExec([ "add", "package.json" ], options), hasShrinkwrap && git.chainableExec([ "add", "npm-shrinkwrap.json" ] , options), git.chainableExec([ "commit", "-m", message ], options), - git.chainableExec([ "tag", "v" + version, flag, message ], options) + git.chainableExec([ "tag", npm.config.get("tag-version-prefix") + version, flag, message ], options) ], cb ) diff --git a/deps/npm/man/man1/npm-README.1 b/deps/npm/man/man1/npm-README.1 index 3e34011cf13..09ffc12b2fa 100644 --- a/deps/npm/man/man1/npm-README.1 +++ b/deps/npm/man/man1/npm-README.1 @@ -1,4 +1,4 @@ -.TH "NPM" "1" "April 2015" "" "" +.TH "NPM" "1" "May 2015" "" "" .SH "NAME" \fBnpm\fR \- a JavaScript package manager .P diff --git a/deps/npm/man/man1/npm-access.1 b/deps/npm/man/man1/npm-access.1 index 68c3233b31b..9c4f414cfd6 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" "April 2015" "" "" +.TH "NPM\-ACCESS" "1" "May 2015" "" "" .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 ba2248a2b13..74861e5b596 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" "April 2015" "" "" +.TH "NPM\-ADDUSER" "1" "May 2015" "" "" .SH "NAME" \fBnpm-adduser\fR \- Add a registry user account .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-bin.1 b/deps/npm/man/man1/npm-bin.1 index 830eae6e314..d14219f1b16 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" "April 2015" "" "" +.TH "NPM\-BIN" "1" "May 2015" "" "" .SH "NAME" \fBnpm-bin\fR \- Display npm bin folder .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-bugs.1 b/deps/npm/man/man1/npm-bugs.1 index 05fdcb1cf18..8623d5630e6 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" "April 2015" "" "" +.TH "NPM\-BUGS" "1" "May 2015" "" "" .SH "NAME" \fBnpm-bugs\fR \- Bugs for a package in a web browser maybe .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-build.1 b/deps/npm/man/man1/npm-build.1 index f40c185af0e..23c8b1d4076 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" "April 2015" "" "" +.TH "NPM\-BUILD" "1" "May 2015" "" "" .SH "NAME" \fBnpm-build\fR \- Build a package .SH SYNOPSIS @@ -18,7 +18,14 @@ A folder containing a \fBpackage\.json\fR file in its root\. .P This is the plumbing command called by \fBnpm link\fR and \fBnpm install\fR\|\. .P -It should generally not be called directly\. +It should generally be called during installation, but if you need to run it +directly, run: +.P +.RS 2 +.nf +npm run\-script build +.fi +.RE .SH SEE ALSO .RS 0 .IP \(bu 2 diff --git a/deps/npm/man/man1/npm-bundle.1 b/deps/npm/man/man1/npm-bundle.1 index b5dad2f4e6f..df5d456faab 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" "April 2015" "" "" +.TH "NPM\-BUNDLE" "1" "May 2015" "" "" .SH "NAME" \fBnpm-bundle\fR \- REMOVED .SH DESCRIPTION diff --git a/deps/npm/man/man1/npm-cache.1 b/deps/npm/man/man1/npm-cache.1 index 84d952c1939..f6857ee04c0 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" "April 2015" "" "" +.TH "NPM\-CACHE" "1" "May 2015" "" "" .SH "NAME" \fBnpm-cache\fR \- Manipulates packages cache .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-completion.1 b/deps/npm/man/man1/npm-completion.1 index 3dfa1bd8e20..f06e86231d9 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" "April 2015" "" "" +.TH "NPM\-COMPLETION" "1" "May 2015" "" "" .SH "NAME" \fBnpm-completion\fR \- Tab Completion for npm .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-config.1 b/deps/npm/man/man1/npm-config.1 index 8f6ff03fb57..e940055b084 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" "April 2015" "" "" +.TH "NPM\-CONFIG" "1" "May 2015" "" "" .SH "NAME" \fBnpm-config\fR \- Manage the npm configuration files .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-dedupe.1 b/deps/npm/man/man1/npm-dedupe.1 index ab4ad694756..810241f2dcd 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" "April 2015" "" "" +.TH "NPM\-DEDUPE" "1" "May 2015" "" "" .SH "NAME" \fBnpm-dedupe\fR \- Reduce duplication .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-deprecate.1 b/deps/npm/man/man1/npm-deprecate.1 index d9b8c40831c..150c1fa3dec 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" "April 2015" "" "" +.TH "NPM\-DEPRECATE" "1" "May 2015" "" "" .SH "NAME" \fBnpm-deprecate\fR \- Deprecate a version of a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-dist-tag.1 b/deps/npm/man/man1/npm-dist-tag.1 index 568b6aeccdd..6195797a2aa 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" "April 2015" "" "" +.TH "NPM\-DIST\-TAG" "1" "May 2015" "" "" .SH "NAME" \fBnpm-dist-tag\fR \- Modify package distribution tags .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-docs.1 b/deps/npm/man/man1/npm-docs.1 index fc3c6dff56c..9a7cd896f39 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" "April 2015" "" "" +.TH "NPM\-DOCS" "1" "May 2015" "" "" .SH "NAME" \fBnpm-docs\fR \- Docs for a package in a web browser maybe .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-edit.1 b/deps/npm/man/man1/npm-edit.1 index c8aad7e4108..f00673c0be8 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" "April 2015" "" "" +.TH "NPM\-EDIT" "1" "May 2015" "" "" .SH "NAME" \fBnpm-edit\fR \- Edit an installed package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-explore.1 b/deps/npm/man/man1/npm-explore.1 index 318075d38f2..7d80c0542f6 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" "April 2015" "" "" +.TH "NPM\-EXPLORE" "1" "May 2015" "" "" .SH "NAME" \fBnpm-explore\fR \- Browse an installed package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-help-search.1 b/deps/npm/man/man1/npm-help-search.1 index 80bb25f4721..5ed69ca812f 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" "April 2015" "" "" +.TH "NPM\-HELP\-SEARCH" "1" "May 2015" "" "" .SH "NAME" \fBnpm-help-search\fR \- Search npm help documentation .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-help.1 b/deps/npm/man/man1/npm-help.1 index 45533fb6d13..dcfca8009e2 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" "April 2015" "" "" +.TH "NPM\-HELP" "1" "May 2015" "" "" .SH "NAME" \fBnpm-help\fR \- Get help on npm .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-init.1 b/deps/npm/man/man1/npm-init.1 index 112e727695a..7adb6e5e166 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" "April 2015" "" "" +.TH "NPM\-INIT" "1" "May 2015" "" "" .SH "NAME" \fBnpm-init\fR \- Interactively create a package\.json file .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-install.1 b/deps/npm/man/man1/npm-install.1 index c27de4cadc2..12abe8fb870 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" "April 2015" "" "" +.TH "NPM\-INSTALL" "1" "May 2015" "" "" .SH "NAME" \fBnpm-install\fR \- Install a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-link.1 b/deps/npm/man/man1/npm-link.1 index 007de6992d2..6663bcc0a82 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" "April 2015" "" "" +.TH "NPM\-LINK" "1" "May 2015" "" "" .SH "NAME" \fBnpm-link\fR \- Symlink a package folder .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-logout.1 b/deps/npm/man/man1/npm-logout.1 index 2f3f8246523..1e02887dc5b 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" "April 2015" "" "" +.TH "NPM\-LOGOUT" "1" "May 2015" "" "" .SH "NAME" \fBnpm-logout\fR \- Log out of the registry .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1 index d65fa2aca31..12b2564d9d7 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" "April 2015" "" "" +.TH "NPM\-LS" "1" "May 2015" "" "" .SH "NAME" \fBnpm-ls\fR \- List installed packages .SH SYNOPSIS @@ -23,7 +23,7 @@ For example, running \fBnpm ls promzard\fR in npm's source tree will show: .P .RS 2 .nf -npm@2.8.4 /path/to/npm +npm@2.9.1 /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 87514f4ef5c..59f530e8688 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" "April 2015" "" "" +.TH "NPM\-OUTDATED" "1" "May 2015" "" "" .SH "NAME" \fBnpm-outdated\fR \- Check for outdated packages .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-owner.1 b/deps/npm/man/man1/npm-owner.1 index f60a8e53984..a7ef4537bc2 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" "April 2015" "" "" +.TH "NPM\-OWNER" "1" "May 2015" "" "" .SH "NAME" \fBnpm-owner\fR \- Manage package owners .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-pack.1 b/deps/npm/man/man1/npm-pack.1 index 444e2b5d015..95136e484c8 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" "April 2015" "" "" +.TH "NPM\-PACK" "1" "May 2015" "" "" .SH "NAME" \fBnpm-pack\fR \- Create a tarball from a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-prefix.1 b/deps/npm/man/man1/npm-prefix.1 index e8fd211416e..ceffef86c42 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" "April 2015" "" "" +.TH "NPM\-PREFIX" "1" "May 2015" "" "" .SH "NAME" \fBnpm-prefix\fR \- Display prefix .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-prune.1 b/deps/npm/man/man1/npm-prune.1 index db458cc5235..9a3b7282459 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" "April 2015" "" "" +.TH "NPM\-PRUNE" "1" "May 2015" "" "" .SH "NAME" \fBnpm-prune\fR \- Remove extraneous packages .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-publish.1 b/deps/npm/man/man1/npm-publish.1 index 496e287a4ae..b83ecbb40ae 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" "April 2015" "" "" +.TH "NPM\-PUBLISH" "1" "May 2015" "" "" .SH "NAME" \fBnpm-publish\fR \- Publish a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-rebuild.1 b/deps/npm/man/man1/npm-rebuild.1 index 0aa05dbecb6..38a735eace0 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" "April 2015" "" "" +.TH "NPM\-REBUILD" "1" "May 2015" "" "" .SH "NAME" \fBnpm-rebuild\fR \- Rebuild a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-repo.1 b/deps/npm/man/man1/npm-repo.1 index 06e4cff9cd5..8c438d174f3 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" "April 2015" "" "" +.TH "NPM\-REPO" "1" "May 2015" "" "" .SH "NAME" \fBnpm-repo\fR \- Open package repository page in the browser .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-restart.1 b/deps/npm/man/man1/npm-restart.1 index 0213b47f4fe..8b06be14be3 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" "April 2015" "" "" +.TH "NPM\-RESTART" "1" "May 2015" "" "" .SH "NAME" \fBnpm-restart\fR \- Restart a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-rm.1 b/deps/npm/man/man1/npm-rm.1 index 4fa2d9e32b1..0268cabd051 100644 --- a/deps/npm/man/man1/npm-rm.1 +++ b/deps/npm/man/man1/npm-rm.1 @@ -1,4 +1,4 @@ -.TH "NPM\-RM" "1" "April 2015" "" "" +.TH "NPM\-RM" "1" "May 2015" "" "" .SH "NAME" \fBnpm-rm\fR \- Remove a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-root.1 b/deps/npm/man/man1/npm-root.1 index 2828c50eb9c..5ff7d8e80b3 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" "April 2015" "" "" +.TH "NPM\-ROOT" "1" "May 2015" "" "" .SH "NAME" \fBnpm-root\fR \- Display npm root .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-run-script.1 b/deps/npm/man/man1/npm-run-script.1 index aa1ba4e56fe..6a27a41a5fe 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" "April 2015" "" "" +.TH "NPM\-RUN\-SCRIPT" "1" "May 2015" "" "" .SH "NAME" \fBnpm-run-script\fR \- Run arbitrary package scripts .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-search.1 b/deps/npm/man/man1/npm-search.1 index f815c5116f9..5ae42be3151 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" "April 2015" "" "" +.TH "NPM\-SEARCH" "1" "May 2015" "" "" .SH "NAME" \fBnpm-search\fR \- Search for packages .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-shrinkwrap.1 b/deps/npm/man/man1/npm-shrinkwrap.1 index 40eb480fc79..98440e02472 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" "April 2015" "" "" +.TH "NPM\-SHRINKWRAP" "1" "May 2015" "" "" .SH "NAME" \fBnpm-shrinkwrap\fR \- Lock down dependency versions .SH SYNOPSIS @@ -12,10 +12,10 @@ npm shrinkwrap .P This command locks down the versions of a package's dependencies so that you can control exactly which versions of each dependency will be -used when your package is installed\. The "package\.json" file is still -required if you want to use "npm install"\. +used when your package is installed\. The \fBpackage\.json\fR file is still +required if you want to use \fBnpm install\fR\|\. .P -By default, "npm install" recursively installs the target's +By default, \fBnpm install\fR recursively installs the target's dependencies (as specified in package\.json), choosing the latest available version that satisfies the dependency's semver pattern\. In some situations, particularly when shipping software where each change @@ -68,7 +68,7 @@ and package C: .RE .P If these are the only versions of A, B, and C available in the -registry, then a normal "npm install A" will install: +registry, then a normal \fBnpm install A\fR will install: .P .RS 2 .nf @@ -78,7 +78,7 @@ A@0\.1\.0 .fi .RE .P -However, if B@0\.0\.2 is published, then a fresh "npm install A" will +However, if B@0\.0\.2 is published, then a fresh \fBnpm install A\fR will install: .P .RS 2 @@ -127,7 +127,7 @@ This generates npm\-shrinkwrap\.json, which will look something like this: .RE .P The shrinkwrap command has locked down the dependencies based on -what's currently installed in node_modules\. When "npm install" +what's currently installed in node_modules\. When \fBnpm install\fR installs a package with a npm\-shrinkwrap\.json file in the package root, the shrinkwrap file (rather than package\.json files) completely drives the installation of that package and all of its dependencies @@ -138,19 +138,19 @@ files\. .SS Using shrinkwrapped packages .P Using a shrinkwrapped package is no different than using any other -package: you can "npm install" it by hand, or add a dependency to your -package\.json file and "npm install" it\. +package: you can \fBnpm install\fR it by hand, or add a dependency to your +package\.json file and \fBnpm install\fR it\. .SS Building shrinkwrapped packages .P To shrinkwrap an existing package: .RS 0 .IP 1. 3 -Run "npm install" in the package root to install the current +Run \fBnpm install\fR in the package root to install the current versions of all dependencies\. .IP 2. 3 Validate that the package works as expected with these versions\. .IP 3. 3 -Run "npm shrinkwrap", add npm\-shrinkwrap\.json to git, and publish +Run \fBnpm shrinkwrap\fR, add npm\-shrinkwrap\.json to git, and publish your package\. .RE @@ -158,10 +158,10 @@ your package\. To add or update a dependency in a shrinkwrapped package: .RS 0 .IP 1. 3 -Run "npm install" in the package root to install the current +Run \fBnpm install\fR in the package root to install the current versions of all dependencies\. .IP 2. 3 -Add or update dependencies\. "npm install" each new or updated +Add or update dependencies\. \fBnpm install\fR each new or updated package individually and then update package\.json\. Note that they must be explicitly named in order to be installed: running \fBnpm install\fR with no arguments will merely reproduce the existing @@ -170,7 +170,7 @@ shrinkwrap\. Validate that the package works as expected with the new dependencies\. .IP 4. 3 -Run "npm shrinkwrap", commit the new npm\-shrinkwrap\.json, and +Run \fBnpm shrinkwrap\fR, commit the new npm\-shrinkwrap\.json, and publish your package\. .RE @@ -180,13 +180,13 @@ available\. .SS Other Notes .P A shrinkwrap file must be consistent with the package's package\.json -file\. "npm shrinkwrap" will fail if required dependencies are not +file\. \fBnpm shrinkwrap\fR will fail if required dependencies are not already installed, since that would result in a shrinkwrap that wouldn't actually work\. Similarly, the command will fail if there are extraneous packages (not referenced by package\.json), since that would indicate that package\.json is not correct\. .P -Since "npm shrinkwrap" is intended to lock down your dependencies for +Since \fBnpm shrinkwrap\fR is intended to lock down your dependencies for production use, \fBdevDependencies\fR will not be included unless you explicitly set the \fB\-\-dev\fR flag when you run \fBnpm shrinkwrap\fR\|\. If installed \fBdevDependencies\fR are excluded, then npm will print a diff --git a/deps/npm/man/man1/npm-star.1 b/deps/npm/man/man1/npm-star.1 index a942d6da1bc..2a31a261448 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" "April 2015" "" "" +.TH "NPM\-STAR" "1" "May 2015" "" "" .SH "NAME" \fBnpm-star\fR \- Mark your favorite packages .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-stars.1 b/deps/npm/man/man1/npm-stars.1 index 24ead178b80..a861db225c1 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" "April 2015" "" "" +.TH "NPM\-STARS" "1" "May 2015" "" "" .SH "NAME" \fBnpm-stars\fR \- View packages marked as favorites .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-start.1 b/deps/npm/man/man1/npm-start.1 index d14bfa1485f..0875d0462df 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" "April 2015" "" "" +.TH "NPM\-START" "1" "May 2015" "" "" .SH "NAME" \fBnpm-start\fR \- Start a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-stop.1 b/deps/npm/man/man1/npm-stop.1 index 4de2ed3a58a..538aaad9f47 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" "April 2015" "" "" +.TH "NPM\-STOP" "1" "May 2015" "" "" .SH "NAME" \fBnpm-stop\fR \- Stop a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-tag.1 b/deps/npm/man/man1/npm-tag.1 index 6c31801c490..ecd37774286 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" "April 2015" "" "" +.TH "NPM\-TAG" "1" "May 2015" "" "" .SH "NAME" \fBnpm-tag\fR \- Tag a published version .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-test.1 b/deps/npm/man/man1/npm-test.1 index c447088e0ac..716365dfeaf 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" "April 2015" "" "" +.TH "NPM\-TEST" "1" "May 2015" "" "" .SH "NAME" \fBnpm-test\fR \- Test a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-uninstall.1 b/deps/npm/man/man1/npm-uninstall.1 index c81f251ef2a..0544bef5f9f 100644 --- a/deps/npm/man/man1/npm-uninstall.1 +++ b/deps/npm/man/man1/npm-uninstall.1 @@ -1,4 +1,4 @@ -.TH "NPM\-RM" "1" "April 2015" "" "" +.TH "NPM\-RM" "1" "May 2015" "" "" .SH "NAME" \fBnpm-rm\fR \- Remove a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-unpublish.1 b/deps/npm/man/man1/npm-unpublish.1 index 914d02aa5c4..cd2782c62ab 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" "April 2015" "" "" +.TH "NPM\-UNPUBLISH" "1" "May 2015" "" "" .SH "NAME" \fBnpm-unpublish\fR \- Remove a package from the registry .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-update.1 b/deps/npm/man/man1/npm-update.1 index dd5a4efd53d..2dead0b342e 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" "April 2015" "" "" +.TH "NPM\-UPDATE" "1" "May 2015" "" "" .SH "NAME" \fBnpm-update\fR \- Update a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-version.1 b/deps/npm/man/man1/npm-version.1 index 9e8d74c62fe..8fbfd4d0718 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" "April 2015" "" "" +.TH "NPM\-VERSION" "1" "May 2015" "" "" .SH "NAME" \fBnpm-version\fR \- Bump a package version .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-view.1 b/deps/npm/man/man1/npm-view.1 index 2d659ebc398..db440ee6a2a 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" "April 2015" "" "" +.TH "NPM\-VIEW" "1" "May 2015" "" "" .SH "NAME" \fBnpm-view\fR \- View registry info .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-whoami.1 b/deps/npm/man/man1/npm-whoami.1 index b97bc0c449b..02bb07be8ec 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" "April 2015" "" "" +.TH "NPM\-WHOAMI" "1" "May 2015" "" "" .SH "NAME" \fBnpm-whoami\fR \- Display npm username .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1 index 397d84b1747..28c6ceb58bc 100644 --- a/deps/npm/man/man1/npm.1 +++ b/deps/npm/man/man1/npm.1 @@ -1,4 +1,4 @@ -.TH "NPM" "1" "April 2015" "" "" +.TH "NPM" "1" "May 2015" "" "" .SH "NAME" \fBnpm\fR \- javascript package manager .SH SYNOPSIS @@ -10,7 +10,7 @@ npm [args] .RE .SH VERSION .P -2.8.4 +2.9.1 .SH DESCRIPTION .P npm is the package manager for the Node JavaScript platform\. It puts diff --git a/deps/npm/man/man3/npm-bin.3 b/deps/npm/man/man3/npm-bin.3 index 9b6f869c85f..11de68684e1 100644 --- a/deps/npm/man/man3/npm-bin.3 +++ b/deps/npm/man/man3/npm-bin.3 @@ -1,4 +1,4 @@ -.TH "NPM\-BIN" "3" "April 2015" "" "" +.TH "NPM\-BIN" "3" "May 2015" "" "" .SH "NAME" \fBnpm-bin\fR \- Display npm bin folder .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-bugs.3 b/deps/npm/man/man3/npm-bugs.3 index ab93f58e6ca..8bb18b19ba2 100644 --- a/deps/npm/man/man3/npm-bugs.3 +++ b/deps/npm/man/man3/npm-bugs.3 @@ -1,4 +1,4 @@ -.TH "NPM\-BUGS" "3" "April 2015" "" "" +.TH "NPM\-BUGS" "3" "May 2015" "" "" .SH "NAME" \fBnpm-bugs\fR \- Bugs for a package in a web browser maybe .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-cache.3 b/deps/npm/man/man3/npm-cache.3 index 127555dcb07..cefdc1df17d 100644 --- a/deps/npm/man/man3/npm-cache.3 +++ b/deps/npm/man/man3/npm-cache.3 @@ -1,4 +1,4 @@ -.TH "NPM\-CACHE" "3" "April 2015" "" "" +.TH "NPM\-CACHE" "3" "May 2015" "" "" .SH "NAME" \fBnpm-cache\fR \- manage the npm cache programmatically .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-commands.3 b/deps/npm/man/man3/npm-commands.3 index cde69b4c4d3..14d0a3a791f 100644 --- a/deps/npm/man/man3/npm-commands.3 +++ b/deps/npm/man/man3/npm-commands.3 @@ -1,4 +1,4 @@ -.TH "NPM\-COMMANDS" "3" "April 2015" "" "" +.TH "NPM\-COMMANDS" "3" "May 2015" "" "" .SH "NAME" \fBnpm-commands\fR \- npm commands .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-config.3 b/deps/npm/man/man3/npm-config.3 index c6a152d9d99..38640e98784 100644 --- a/deps/npm/man/man3/npm-config.3 +++ b/deps/npm/man/man3/npm-config.3 @@ -1,4 +1,4 @@ -.TH "NPM\-CONFIG" "3" "April 2015" "" "" +.TH "NPM\-CONFIG" "3" "May 2015" "" "" .SH "NAME" \fBnpm-config\fR \- Manage the npm configuration files .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-deprecate.3 b/deps/npm/man/man3/npm-deprecate.3 index 2c4d22f55ee..17d131a6c83 100644 --- a/deps/npm/man/man3/npm-deprecate.3 +++ b/deps/npm/man/man3/npm-deprecate.3 @@ -1,4 +1,4 @@ -.TH "NPM\-DEPRECATE" "3" "April 2015" "" "" +.TH "NPM\-DEPRECATE" "3" "May 2015" "" "" .SH "NAME" \fBnpm-deprecate\fR \- Deprecate a version of a package .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-docs.3 b/deps/npm/man/man3/npm-docs.3 index bcdfe3f705e..2c94c5d5914 100644 --- a/deps/npm/man/man3/npm-docs.3 +++ b/deps/npm/man/man3/npm-docs.3 @@ -1,4 +1,4 @@ -.TH "NPM\-DOCS" "3" "April 2015" "" "" +.TH "NPM\-DOCS" "3" "May 2015" "" "" .SH "NAME" \fBnpm-docs\fR \- Docs for a package in a web browser maybe .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-edit.3 b/deps/npm/man/man3/npm-edit.3 index 5db96fd12c4..0fa59c83000 100644 --- a/deps/npm/man/man3/npm-edit.3 +++ b/deps/npm/man/man3/npm-edit.3 @@ -1,4 +1,4 @@ -.TH "NPM\-EDIT" "3" "April 2015" "" "" +.TH "NPM\-EDIT" "3" "May 2015" "" "" .SH "NAME" \fBnpm-edit\fR \- Edit an installed package .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-explore.3 b/deps/npm/man/man3/npm-explore.3 index c9e1e69b32e..1e2691946dd 100644 --- a/deps/npm/man/man3/npm-explore.3 +++ b/deps/npm/man/man3/npm-explore.3 @@ -1,4 +1,4 @@ -.TH "NPM\-EXPLORE" "3" "April 2015" "" "" +.TH "NPM\-EXPLORE" "3" "May 2015" "" "" .SH "NAME" \fBnpm-explore\fR \- Browse an installed package .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-help-search.3 b/deps/npm/man/man3/npm-help-search.3 index 42b58d3f47f..d453c6b6944 100644 --- a/deps/npm/man/man3/npm-help-search.3 +++ b/deps/npm/man/man3/npm-help-search.3 @@ -1,4 +1,4 @@ -.TH "NPM\-HELP\-SEARCH" "3" "April 2015" "" "" +.TH "NPM\-HELP\-SEARCH" "3" "May 2015" "" "" .SH "NAME" \fBnpm-help-search\fR \- Search the help pages .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-init.3 b/deps/npm/man/man3/npm-init.3 index 1fe406f2589..4dc3c12e517 100644 --- a/deps/npm/man/man3/npm-init.3 +++ b/deps/npm/man/man3/npm-init.3 @@ -1,4 +1,4 @@ -.TH "NPM" "" "April 2015" "" "" +.TH "NPM" "" "May 2015" "" "" .SH "NAME" \fBnpm\fR .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-install.3 b/deps/npm/man/man3/npm-install.3 index 7eaa388536a..bc91fd6388f 100644 --- a/deps/npm/man/man3/npm-install.3 +++ b/deps/npm/man/man3/npm-install.3 @@ -1,4 +1,4 @@ -.TH "NPM\-INSTALL" "3" "April 2015" "" "" +.TH "NPM\-INSTALL" "3" "May 2015" "" "" .SH "NAME" \fBnpm-install\fR \- install a package programmatically .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-link.3 b/deps/npm/man/man3/npm-link.3 index 050a42b13f3..de51faa5579 100644 --- a/deps/npm/man/man3/npm-link.3 +++ b/deps/npm/man/man3/npm-link.3 @@ -1,4 +1,4 @@ -.TH "NPM\-LINK" "3" "April 2015" "" "" +.TH "NPM\-LINK" "3" "May 2015" "" "" .SH "NAME" \fBnpm-link\fR \- Symlink a package folder .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-load.3 b/deps/npm/man/man3/npm-load.3 index aa344d025ea..f1bc1a867d2 100644 --- a/deps/npm/man/man3/npm-load.3 +++ b/deps/npm/man/man3/npm-load.3 @@ -1,4 +1,4 @@ -.TH "NPM\-LOAD" "3" "April 2015" "" "" +.TH "NPM\-LOAD" "3" "May 2015" "" "" .SH "NAME" \fBnpm-load\fR \- Load config settings .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-ls.3 b/deps/npm/man/man3/npm-ls.3 index df7c3c77ca2..31f863d8234 100644 --- a/deps/npm/man/man3/npm-ls.3 +++ b/deps/npm/man/man3/npm-ls.3 @@ -1,4 +1,4 @@ -.TH "NPM\-LS" "3" "April 2015" "" "" +.TH "NPM\-LS" "3" "May 2015" "" "" .SH "NAME" \fBnpm-ls\fR \- List installed packages .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-outdated.3 b/deps/npm/man/man3/npm-outdated.3 index 83409223f1f..797d47209cc 100644 --- a/deps/npm/man/man3/npm-outdated.3 +++ b/deps/npm/man/man3/npm-outdated.3 @@ -1,4 +1,4 @@ -.TH "NPM\-OUTDATED" "3" "April 2015" "" "" +.TH "NPM\-OUTDATED" "3" "May 2015" "" "" .SH "NAME" \fBnpm-outdated\fR \- Check for outdated packages .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-owner.3 b/deps/npm/man/man3/npm-owner.3 index 2508a312f4e..1c3e979074d 100644 --- a/deps/npm/man/man3/npm-owner.3 +++ b/deps/npm/man/man3/npm-owner.3 @@ -1,4 +1,4 @@ -.TH "NPM\-OWNER" "3" "April 2015" "" "" +.TH "NPM\-OWNER" "3" "May 2015" "" "" .SH "NAME" \fBnpm-owner\fR \- Manage package owners .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-pack.3 b/deps/npm/man/man3/npm-pack.3 index 4a2401136fe..ac959e98b7c 100644 --- a/deps/npm/man/man3/npm-pack.3 +++ b/deps/npm/man/man3/npm-pack.3 @@ -1,4 +1,4 @@ -.TH "NPM\-PACK" "3" "April 2015" "" "" +.TH "NPM\-PACK" "3" "May 2015" "" "" .SH "NAME" \fBnpm-pack\fR \- Create a tarball from a package .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-prefix.3 b/deps/npm/man/man3/npm-prefix.3 index e0ceb93b3f3..c2fca3049fc 100644 --- a/deps/npm/man/man3/npm-prefix.3 +++ b/deps/npm/man/man3/npm-prefix.3 @@ -1,4 +1,4 @@ -.TH "NPM\-PREFIX" "3" "April 2015" "" "" +.TH "NPM\-PREFIX" "3" "May 2015" "" "" .SH "NAME" \fBnpm-prefix\fR \- Display prefix .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-prune.3 b/deps/npm/man/man3/npm-prune.3 index 024e933b6f5..adbef5ad082 100644 --- a/deps/npm/man/man3/npm-prune.3 +++ b/deps/npm/man/man3/npm-prune.3 @@ -1,4 +1,4 @@ -.TH "NPM\-PRUNE" "3" "April 2015" "" "" +.TH "NPM\-PRUNE" "3" "May 2015" "" "" .SH "NAME" \fBnpm-prune\fR \- Remove extraneous packages .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-publish.3 b/deps/npm/man/man3/npm-publish.3 index 2d0d0e0daec..2b723701435 100644 --- a/deps/npm/man/man3/npm-publish.3 +++ b/deps/npm/man/man3/npm-publish.3 @@ -1,4 +1,4 @@ -.TH "NPM\-PUBLISH" "3" "April 2015" "" "" +.TH "NPM\-PUBLISH" "3" "May 2015" "" "" .SH "NAME" \fBnpm-publish\fR \- Publish a package .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-rebuild.3 b/deps/npm/man/man3/npm-rebuild.3 index c94e1d8eaab..707b5d567d7 100644 --- a/deps/npm/man/man3/npm-rebuild.3 +++ b/deps/npm/man/man3/npm-rebuild.3 @@ -1,4 +1,4 @@ -.TH "NPM\-REBUILD" "3" "April 2015" "" "" +.TH "NPM\-REBUILD" "3" "May 2015" "" "" .SH "NAME" \fBnpm-rebuild\fR \- Rebuild a package .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-repo.3 b/deps/npm/man/man3/npm-repo.3 index 4db47172f9d..ff62f017f50 100644 --- a/deps/npm/man/man3/npm-repo.3 +++ b/deps/npm/man/man3/npm-repo.3 @@ -1,4 +1,4 @@ -.TH "NPM\-REPO" "3" "April 2015" "" "" +.TH "NPM\-REPO" "3" "May 2015" "" "" .SH "NAME" \fBnpm-repo\fR \- Open package repository page in the browser .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-restart.3 b/deps/npm/man/man3/npm-restart.3 index 876b8b9a548..315900e79ca 100644 --- a/deps/npm/man/man3/npm-restart.3 +++ b/deps/npm/man/man3/npm-restart.3 @@ -1,4 +1,4 @@ -.TH "NPM\-RESTART" "3" "April 2015" "" "" +.TH "NPM\-RESTART" "3" "May 2015" "" "" .SH "NAME" \fBnpm-restart\fR \- Restart a package .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-root.3 b/deps/npm/man/man3/npm-root.3 index f3a3e0fbd12..04eab190ab5 100644 --- a/deps/npm/man/man3/npm-root.3 +++ b/deps/npm/man/man3/npm-root.3 @@ -1,4 +1,4 @@ -.TH "NPM\-ROOT" "3" "April 2015" "" "" +.TH "NPM\-ROOT" "3" "May 2015" "" "" .SH "NAME" \fBnpm-root\fR \- Display npm root .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-run-script.3 b/deps/npm/man/man3/npm-run-script.3 index 8b16b3ce77a..7c07de1f83a 100644 --- a/deps/npm/man/man3/npm-run-script.3 +++ b/deps/npm/man/man3/npm-run-script.3 @@ -1,4 +1,4 @@ -.TH "NPM\-RUN\-SCRIPT" "3" "April 2015" "" "" +.TH "NPM\-RUN\-SCRIPT" "3" "May 2015" "" "" .SH "NAME" \fBnpm-run-script\fR \- Run arbitrary package scripts .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-search.3 b/deps/npm/man/man3/npm-search.3 index 7698f74deb7..bf518ff14b6 100644 --- a/deps/npm/man/man3/npm-search.3 +++ b/deps/npm/man/man3/npm-search.3 @@ -1,4 +1,4 @@ -.TH "NPM\-SEARCH" "3" "April 2015" "" "" +.TH "NPM\-SEARCH" "3" "May 2015" "" "" .SH "NAME" \fBnpm-search\fR \- Search for packages .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-shrinkwrap.3 b/deps/npm/man/man3/npm-shrinkwrap.3 index 294f3075113..b95a07352bc 100644 --- a/deps/npm/man/man3/npm-shrinkwrap.3 +++ b/deps/npm/man/man3/npm-shrinkwrap.3 @@ -1,4 +1,4 @@ -.TH "NPM\-SHRINKWRAP" "3" "April 2015" "" "" +.TH "NPM\-SHRINKWRAP" "3" "May 2015" "" "" .SH "NAME" \fBnpm-shrinkwrap\fR \- programmatically generate package shrinkwrap file .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-start.3 b/deps/npm/man/man3/npm-start.3 index f3ac79acb98..69b68d9fbed 100644 --- a/deps/npm/man/man3/npm-start.3 +++ b/deps/npm/man/man3/npm-start.3 @@ -1,4 +1,4 @@ -.TH "NPM\-START" "3" "April 2015" "" "" +.TH "NPM\-START" "3" "May 2015" "" "" .SH "NAME" \fBnpm-start\fR \- Start a package .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-stop.3 b/deps/npm/man/man3/npm-stop.3 index 7ea9ee95e1b..5d1b781d998 100644 --- a/deps/npm/man/man3/npm-stop.3 +++ b/deps/npm/man/man3/npm-stop.3 @@ -1,4 +1,4 @@ -.TH "NPM\-STOP" "3" "April 2015" "" "" +.TH "NPM\-STOP" "3" "May 2015" "" "" .SH "NAME" \fBnpm-stop\fR \- Stop a package .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-tag.3 b/deps/npm/man/man3/npm-tag.3 index ace3a0a8a1a..a51c6a6596d 100644 --- a/deps/npm/man/man3/npm-tag.3 +++ b/deps/npm/man/man3/npm-tag.3 @@ -1,4 +1,4 @@ -.TH "NPM\-TAG" "3" "April 2015" "" "" +.TH "NPM\-TAG" "3" "May 2015" "" "" .SH "NAME" \fBnpm-tag\fR \- Tag a published version .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-test.3 b/deps/npm/man/man3/npm-test.3 index d6aad659c43..e14d7da4331 100644 --- a/deps/npm/man/man3/npm-test.3 +++ b/deps/npm/man/man3/npm-test.3 @@ -1,4 +1,4 @@ -.TH "NPM\-TEST" "3" "April 2015" "" "" +.TH "NPM\-TEST" "3" "May 2015" "" "" .SH "NAME" \fBnpm-test\fR \- Test a package .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-uninstall.3 b/deps/npm/man/man3/npm-uninstall.3 index 7b17c8faf04..3a3f8ee51c7 100644 --- a/deps/npm/man/man3/npm-uninstall.3 +++ b/deps/npm/man/man3/npm-uninstall.3 @@ -1,4 +1,4 @@ -.TH "NPM\-UNINSTALL" "3" "April 2015" "" "" +.TH "NPM\-UNINSTALL" "3" "May 2015" "" "" .SH "NAME" \fBnpm-uninstall\fR \- uninstall a package programmatically .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-unpublish.3 b/deps/npm/man/man3/npm-unpublish.3 index cab0bd3d98d..7fadd177776 100644 --- a/deps/npm/man/man3/npm-unpublish.3 +++ b/deps/npm/man/man3/npm-unpublish.3 @@ -1,4 +1,4 @@ -.TH "NPM\-UNPUBLISH" "3" "April 2015" "" "" +.TH "NPM\-UNPUBLISH" "3" "May 2015" "" "" .SH "NAME" \fBnpm-unpublish\fR \- Remove a package from the registry .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-update.3 b/deps/npm/man/man3/npm-update.3 index e299ee28424..d428782f590 100644 --- a/deps/npm/man/man3/npm-update.3 +++ b/deps/npm/man/man3/npm-update.3 @@ -1,4 +1,4 @@ -.TH "NPM\-UPDATE" "3" "April 2015" "" "" +.TH "NPM\-UPDATE" "3" "May 2015" "" "" .SH "NAME" \fBnpm-update\fR \- Update a package .SH SYNOPSIS @@ -8,7 +8,7 @@ npm\.commands\.update(packages, callback) .fi .RE -.TH "DESCRIPTION" "" "April 2015" "" "" +.TH "DESCRIPTION" "" "May 2015" "" "" .SH "NAME" \fBDESCRIPTION\fR .P diff --git a/deps/npm/man/man3/npm-version.3 b/deps/npm/man/man3/npm-version.3 index 43a68059266..934d93607ad 100644 --- a/deps/npm/man/man3/npm-version.3 +++ b/deps/npm/man/man3/npm-version.3 @@ -1,4 +1,4 @@ -.TH "NPM\-VERSION" "3" "April 2015" "" "" +.TH "NPM\-VERSION" "3" "May 2015" "" "" .SH "NAME" \fBnpm-version\fR \- Bump a package version .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-view.3 b/deps/npm/man/man3/npm-view.3 index eb6d8d6f1b9..bed7694a83a 100644 --- a/deps/npm/man/man3/npm-view.3 +++ b/deps/npm/man/man3/npm-view.3 @@ -1,4 +1,4 @@ -.TH "NPM\-VIEW" "3" "April 2015" "" "" +.TH "NPM\-VIEW" "3" "May 2015" "" "" .SH "NAME" \fBnpm-view\fR \- View registry info .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-whoami.3 b/deps/npm/man/man3/npm-whoami.3 index a7b968fe990..311803c313a 100644 --- a/deps/npm/man/man3/npm-whoami.3 +++ b/deps/npm/man/man3/npm-whoami.3 @@ -1,4 +1,4 @@ -.TH "NPM\-WHOAMI" "3" "April 2015" "" "" +.TH "NPM\-WHOAMI" "3" "May 2015" "" "" .SH "NAME" \fBnpm-whoami\fR \- Display npm username .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm.3 b/deps/npm/man/man3/npm.3 index 6f9bb033f78..4a2fdb6c381 100644 --- a/deps/npm/man/man3/npm.3 +++ b/deps/npm/man/man3/npm.3 @@ -1,4 +1,4 @@ -.TH "NPM" "3" "April 2015" "" "" +.TH "NPM" "3" "May 2015" "" "" .SH "NAME" \fBnpm\fR \- javascript package manager .SH SYNOPSIS @@ -20,7 +20,7 @@ npm\.load([configObject, ]function (er, npm) { .RE .SH VERSION .P -2.8.4 +2.9.1 .SH DESCRIPTION .P This is the API documentation for npm\. diff --git a/deps/npm/man/man5/npm-folders.5 b/deps/npm/man/man5/npm-folders.5 index 454a6950ad4..7346af98f1f 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" "April 2015" "" "" +.TH "NPM\-FOLDERS" "5" "May 2015" "" "" .SH "NAME" \fBnpm-folders\fR \- Folder Structures Used by npm .SH DESCRIPTION diff --git a/deps/npm/man/man5/npm-global.5 b/deps/npm/man/man5/npm-global.5 index 454a6950ad4..7346af98f1f 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" "April 2015" "" "" +.TH "NPM\-FOLDERS" "5" "May 2015" "" "" .SH "NAME" \fBnpm-folders\fR \- Folder Structures Used by npm .SH DESCRIPTION diff --git a/deps/npm/man/man5/npm-json.5 b/deps/npm/man/man5/npm-json.5 index 088e62bdc30..898490e4785 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" "April 2015" "" "" +.TH "PACKAGE\.JSON" "5" "May 2015" "" "" .SH "NAME" \fBpackage.json\fR \- Specifics of npm's package\.json handling .SH DESCRIPTION @@ -16,17 +16,32 @@ them\. The name and version together form an identifier that is assumed to be completely unique\. Changes to the package should come along with changes to the version\. .P -The name is what your thing is called\. Some tips: +The name is what your thing is called\. +.P +Some rules: .RS 0 .IP \(bu 2 +The name must be shorter than 214 characters\. This includes the scope for +scoped packages\. +.IP \(bu 2 +The name can't start with a dot or an underscore\. +.IP \(bu 2 +New packages must not have uppercase letters in the name\. +.IP \(bu 2 +The name ends up being part of a URL, an argument on the command line, and a +folder name\. Therefore, the name can't contain any non\-URL\-safe characters\. + +.RE +.P +Some tips: +.RS 0 +.IP \(bu 2 +Don't use the same name as a core Node module\. +.IP \(bu 2 Don't put "js" or "node" in the name\. It's assumed that it's js, since you're writing a package\.json file, and you can specify the engine using the "engines" field\. (See below\.) .IP \(bu 2 -The name ends up being part of a URL, an argument on the command line, and a -folder name\. Any name with non\-url\-safe characters will be rejected\. -Also, it can't start with a dot or an underscore\. -.IP \(bu 2 The name will probably be passed as an argument to require(), so it should be something short, but also reasonably descriptive\. .IP \(bu 2 diff --git a/deps/npm/man/man5/npmrc.5 b/deps/npm/man/man5/npmrc.5 index 703176aaa53..eba9ab61ede 100644 --- a/deps/npm/man/man5/npmrc.5 +++ b/deps/npm/man/man5/npmrc.5 @@ -1,4 +1,4 @@ -.TH "NPMRC" "5" "April 2015" "" "" +.TH "NPMRC" "5" "May 2015" "" "" .SH "NAME" \fBnpmrc\fR \- The npm config files .SH DESCRIPTION @@ -19,7 +19,7 @@ per\-project config file (/path/to/my/project/\.npmrc) .IP \(bu 2 per\-user config file (~/\.npmrc) .IP \(bu 2 -global config file ($PREFIX/npmrc) +global config file ($PREFIX/etc/npmrc) .IP \(bu 2 npm builtin config file (/path/to/npm/npmrc) diff --git a/deps/npm/man/man5/package.json.5 b/deps/npm/man/man5/package.json.5 index 088e62bdc30..898490e4785 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" "April 2015" "" "" +.TH "PACKAGE\.JSON" "5" "May 2015" "" "" .SH "NAME" \fBpackage.json\fR \- Specifics of npm's package\.json handling .SH DESCRIPTION @@ -16,17 +16,32 @@ them\. The name and version together form an identifier that is assumed to be completely unique\. Changes to the package should come along with changes to the version\. .P -The name is what your thing is called\. Some tips: +The name is what your thing is called\. +.P +Some rules: .RS 0 .IP \(bu 2 +The name must be shorter than 214 characters\. This includes the scope for +scoped packages\. +.IP \(bu 2 +The name can't start with a dot or an underscore\. +.IP \(bu 2 +New packages must not have uppercase letters in the name\. +.IP \(bu 2 +The name ends up being part of a URL, an argument on the command line, and a +folder name\. Therefore, the name can't contain any non\-URL\-safe characters\. + +.RE +.P +Some tips: +.RS 0 +.IP \(bu 2 +Don't use the same name as a core Node module\. +.IP \(bu 2 Don't put "js" or "node" in the name\. It's assumed that it's js, since you're writing a package\.json file, and you can specify the engine using the "engines" field\. (See below\.) .IP \(bu 2 -The name ends up being part of a URL, an argument on the command line, and a -folder name\. Any name with non\-url\-safe characters will be rejected\. -Also, it can't start with a dot or an underscore\. -.IP \(bu 2 The name will probably be passed as an argument to require(), so it should be something short, but also reasonably descriptive\. .IP \(bu 2 diff --git a/deps/npm/man/man7/npm-coding-style.7 b/deps/npm/man/man7/npm-coding-style.7 index b018adbac16..68367cd6e72 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" "April 2015" "" "" +.TH "NPM\-CODING\-STYLE" "7" "May 2015" "" "" .SH "NAME" \fBnpm-coding-style\fR \- npm's "funny" coding style .SH DESCRIPTION diff --git a/deps/npm/man/man7/npm-config.7 b/deps/npm/man/man7/npm-config.7 index 6301d1e65ec..d7620a176eb 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" "April 2015" "" "" +.TH "NPM\-CONFIG" "7" "May 2015" "" "" .SH "NAME" \fBnpm-config\fR \- More than you probably want to know about npm configuration .SH DESCRIPTION @@ -1101,6 +1101,22 @@ it will install the specified tag\. .P Also the tag that is added to the package@version specified by the \fBnpm tag\fR command, if no explicit tag is given\. +.SS tag\-version\-prefix +.RS 0 +.IP \(bu 2 +Default: \fB"v"\fR +.IP \(bu 2 +Type: String + +.RE +.P +If set, alters the prefix used when tagging a new version when performing a +version increment using \fBnpm\-version\fR\|\. To remove the prefix altogether, set it +to the empty string: \fB""\fR\|\. +.P +Because other tools may rely on the convention that npm version tags look like +\fBv1\.0\.0\fR, \fIonly use this property if it is absolutely necessary\fR\|\. In +particular, use care when overriding this setting for public packages\. .SS tmp .RS 0 .IP \(bu 2 diff --git a/deps/npm/man/man7/npm-developers.7 b/deps/npm/man/man7/npm-developers.7 index f3c85e453bd..d41c8f40149 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" "April 2015" "" "" +.TH "NPM\-DEVELOPERS" "7" "May 2015" "" "" .SH "NAME" \fBnpm-developers\fR \- Developer Guide .SH DESCRIPTION diff --git a/deps/npm/man/man7/npm-disputes.7 b/deps/npm/man/man7/npm-disputes.7 index 0db6f8a4dbd..1fb6b9ce94d 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" "April 2015" "" "" +.TH "NPM\-DISPUTES" "7" "May 2015" "" "" .SH "NAME" \fBnpm-disputes\fR \- Handling Module Name Disputes .SH SYNOPSIS diff --git a/deps/npm/man/man7/npm-faq.7 b/deps/npm/man/man7/npm-faq.7 index db84fbe8d72..30391e7f2db 100644 --- a/deps/npm/man/man7/npm-faq.7 +++ b/deps/npm/man/man7/npm-faq.7 @@ -1,4 +1,4 @@ -.TH "NPM\-FAQ" "7" "April 2015" "" "" +.TH "NPM\-FAQ" "7" "May 2015" "" "" .SH "NAME" \fBnpm-faq\fR \- Frequently Asked Questions .SH Where can I find these docs in HTML? diff --git a/deps/npm/man/man7/npm-index.7 b/deps/npm/man/man7/npm-index.7 index 787668e656e..a0dde122bed 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" "April 2015" "" "" +.TH "NPM\-INDEX" "7" "May 2015" "" "" .SH "NAME" \fBnpm-index\fR \- Index of all npm documentation .SS npm help README diff --git a/deps/npm/man/man7/npm-registry.7 b/deps/npm/man/man7/npm-registry.7 index dd493a8b128..c5c84485ea3 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" "April 2015" "" "" +.TH "NPM\-REGISTRY" "7" "May 2015" "" "" .SH "NAME" \fBnpm-registry\fR \- The JavaScript Package Registry .SH DESCRIPTION diff --git a/deps/npm/man/man7/npm-scope.7 b/deps/npm/man/man7/npm-scope.7 index dca1c503223..cc6542828cc 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" "April 2015" "" "" +.TH "NPM\-SCOPE" "7" "May 2015" "" "" .SH "NAME" \fBnpm-scope\fR \- Scoped packages .SH DESCRIPTION @@ -17,9 +17,9 @@ followed by a slash, e\.g\. Scopes are a way of grouping related packages together, and also affect a few things about the way npm treats the package\. .P -\fBAs of 2014\-09\-03, scoped packages are not supported by the public npm registry\fR\|\. -However, the npm client is backwards\-compatible with un\-scoped registries, so -it can be used to work with scoped and un\-scoped registries at the same time\. +Scoped packages are supported by the public npm registry\. The npm +client is backwards\-compatible with un\-scoped registries, so it can be +used to work with scoped and un\-scoped registries at the same time\. .SH Installing scoped packages .P Scoped packages are installed to a sub\-folder of the regular installation @@ -64,10 +64,27 @@ There is nothing special about the way Node treats scope folders, this is just specifying to require the module \fBmypackage\fR in the folder called \fB@myorg\fR\|\. .SH Publishing scoped packages .P -Scoped packages can be published to any registry that supports them\. -\fIAs of 2014\-09\-03, the public npm registry does not support scoped packages\fR, -so attempting to publish a scoped package to the registry will fail unless -you have associated that scope with a different registry, see below\. +Scoped packages can be published to any registry that supports them, including +the public npm registry\. +.P +(As of 2015\-04\-19, the public npm registry \fBdoes\fR support scoped packages) +.P +If you wish, you may associate a scope with a registry; see below\. +.SS Publishing public scoped packages to the public npm registry +.P +To publish a public scoped package, you must specify \fB\-\-access public\fR with +the initial publication\. This will publish the package and set access +to \fBpublic\fR as if you had run \fBnpm access public\fR after publishing\. +.SS Publishing private scoped packages to the npm registry +.P +To publish a private scoped package to the npm registry, you must have +an npm Private Modules \fIhttps://www\.npmjs\.com/private\-modules\fR +account\. +.P +You can then publish the module with \fBnpm publish\fR or \fBnpm publish +\-\-access restricted\fR, and it will be present in the npm registry, with +restricted access\. You can then change the access permissions, if +desired, with \fBnpm access\fR or on the npmjs\.com website\. .SH Associating a scope with a registry .P Scopes can be associated with a separate registry\. This allows you to @@ -103,6 +120,8 @@ that registry instead\. npm help install .IP \(bu 2 npm help publish +.IP \(bu 2 +npm help access .RE diff --git a/deps/npm/man/man7/npm-scripts.7 b/deps/npm/man/man7/npm-scripts.7 index 2ca079346a6..46ab09ed4c1 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" "April 2015" "" "" +.TH "NPM\-SCRIPTS" "7" "May 2015" "" "" .SH "NAME" \fBnpm-scripts\fR \- How npm handles the "scripts" field .SH DESCRIPTION diff --git a/deps/npm/man/man7/removing-npm.7 b/deps/npm/man/man7/removing-npm.7 index f3e47cfefcc..653e47d6d73 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" "April 2015" "" "" +.TH "NPM\-REMOVAL" "1" "May 2015" "" "" .SH "NAME" \fBnpm-removal\fR \- Cleaning the Slate .SH SYNOPSIS diff --git a/deps/npm/man/man7/semver.7 b/deps/npm/man/man7/semver.7 index f77a51ee5d2..69d890f9f7b 100644 --- a/deps/npm/man/man7/semver.7 +++ b/deps/npm/man/man7/semver.7 @@ -1,4 +1,4 @@ -.TH "SEMVER" "7" "April 2015" "" "" +.TH "SEMVER" "7" "May 2015" "" "" .SH "NAME" \fBsemver\fR \- The semantic versioner for npm .SH Usage diff --git a/deps/npm/node_modules/editor/package.json b/deps/npm/node_modules/editor/package.json index 963b5d29bc3..0e5abd3bfb2 100644 --- a/deps/npm/node_modules/editor/package.json +++ b/deps/npm/node_modules/editor/package.json @@ -1,6 +1,6 @@ { "name": "editor", - "version": "0.1.0", + "version": "1.0.0", "description": "launch $EDITOR in your program", "main": "index.js", "directories": { @@ -33,19 +33,22 @@ "engine": { "node": ">=0.6" }, + "gitHead": "15200af2c417c65a4df153f39f32143dcd476375", "bugs": { "url": "https://github.com/substack/node-editor/issues" }, - "_id": "editor@0.1.0", - "dist": { - "shasum": "542f4662c6a8c88e862fc11945e204e51981b9a1", - "tarball": "http://registry.npmjs.org/editor/-/editor-0.1.0.tgz" - }, - "_from": "editor@latest", - "_npmVersion": "1.3.21", + "_id": "editor@1.0.0", + "_shasum": "60c7f87bd62bcc6a894fa8ccd6afb7823a24f742", + "_from": "editor@>=1.0.0 <1.1.0", + "_npmVersion": "2.7.5", + "_nodeVersion": "1.6.3", "_npmUser": { "name": "substack", - "email": "mail@substack.net" + "email": "substack@gmail.com" + }, + "dist": { + "shasum": "60c7f87bd62bcc6a894fa8ccd6afb7823a24f742", + "tarball": "http://registry.npmjs.org/editor/-/editor-1.0.0.tgz" }, "maintainers": [ { @@ -53,6 +56,5 @@ "email": "mail@substack.net" } ], - "_shasum": "542f4662c6a8c88e862fc11945e204e51981b9a1", - "_resolved": "https://registry.npmjs.org/editor/-/editor-0.1.0.tgz" + "_resolved": "https://registry.npmjs.org/editor/-/editor-1.0.0.tgz" } diff --git a/deps/npm/node_modules/init-package-json/default-input.js b/deps/npm/node_modules/init-package-json/default-input.js index 3af2f62af12..6d8d9e7bd35 100644 --- a/deps/npm/node_modules/init-package-json/default-input.js +++ b/deps/npm/node_modules/init-package-json/default-input.js @@ -54,7 +54,8 @@ if (scope) { exports.name = yes ? name : prompt('name', name, function (data) { var its = validateName(data) if (its.validForNewPackages) return data - var er = new Error('Sorry, ' + its.errors.join(' and ') + '.') + var errors = (its.errors || []).concat(its.warnings || []) + var er = new Error('Sorry, ' + errors.join(' and ') + '.') er.notValid = true return er }) diff --git a/deps/npm/node_modules/init-package-json/example/example-basic.js b/deps/npm/node_modules/init-package-json/example/example-basic.js index 29b0c818d1d..0d13bda064e 100644 --- a/deps/npm/node_modules/init-package-json/example/example-basic.js +++ b/deps/npm/node_modules/init-package-json/example/example-basic.js @@ -1,5 +1,4 @@ var init = require('../init-package-json.js') -var path = require('path') var dir = process.cwd() var initFile = require.resolve('./init/basic-init.js') diff --git a/deps/npm/node_modules/init-package-json/example/example-default.js b/deps/npm/node_modules/init-package-json/example/example-default.js index f3aea518c5b..29a81990688 100644 --- a/deps/npm/node_modules/init-package-json/example/example-default.js +++ b/deps/npm/node_modules/init-package-json/example/example-default.js @@ -1,5 +1,4 @@ var init = require('../init-package-json.js') -var path = require('path') var dir = process.cwd() init(dir, 'file that does not exist', function (err, data) { diff --git a/deps/npm/node_modules/init-package-json/example/example-npm.js b/deps/npm/node_modules/init-package-json/example/example-npm.js index b394eeabc04..292da6a7a7a 100644 --- a/deps/npm/node_modules/init-package-json/example/example-npm.js +++ b/deps/npm/node_modules/init-package-json/example/example-npm.js @@ -1,5 +1,4 @@ var init = require('../init-package-json.js') -var path = require('path') var dir = process.cwd() var npm = require('npm') @@ -10,4 +9,3 @@ npm.load(function (er, npm) { console.log('written successfully') }) }) - diff --git a/deps/npm/node_modules/init-package-json/node_modules/promzard/package.json b/deps/npm/node_modules/init-package-json/node_modules/promzard/package.json index 42900314b94..1407e97be58 100644 --- a/deps/npm/node_modules/init-package-json/node_modules/promzard/package.json +++ b/deps/npm/node_modules/init-package-json/node_modules/promzard/package.json @@ -8,7 +8,7 @@ "description": "prompting wizardly", "version": "0.3.0", "repository": { - "url": "git://github.com/isaacs/promzard" + "url": "git://github.com/isaacs/promzard.git" }, "dependencies": { "read": "1" @@ -46,5 +46,6 @@ "tarball": "http://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz" + "_resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/deps/npm/node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/package.json b/deps/npm/node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/package.json index e650240c70b..c5ec77f136b 100644 --- a/deps/npm/node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/package.json +++ b/deps/npm/node_modules/init-package-json/node_modules/validate-npm-package-name/node_modules/builtins/package.json @@ -4,7 +4,7 @@ "description": "List of node.js builtin modules", "repository": { "type": "git", - "url": "git://github.com/juliangruber/builtins" + "url": "git://github.com/juliangruber/builtins.git" }, "license": "MIT", "main": "builtins.json", @@ -41,5 +41,6 @@ ], "directories": {}, "_shasum": "355219cd6cf18dbe7c01cc7fd2dce765cfdc549a", - "_resolved": "https://registry.npmjs.org/builtins/-/builtins-0.0.7.tgz" + "_resolved": "https://registry.npmjs.org/builtins/-/builtins-0.0.7.tgz", + "readme": "ERROR: No README data found!" } diff --git a/deps/npm/node_modules/init-package-json/node_modules/validate-npm-package-name/package.json b/deps/npm/node_modules/init-package-json/node_modules/validate-npm-package-name/package.json index d421ae9fa57..dd17dd820dd 100644 --- a/deps/npm/node_modules/init-package-json/node_modules/validate-npm-package-name/package.json +++ b/deps/npm/node_modules/init-package-json/node_modules/validate-npm-package-name/package.json @@ -17,7 +17,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/npm/validate-npm-package-name" + "url": "git+https://github.com/npm/validate-npm-package-name.git" }, "keywords": [ "npm", @@ -53,5 +53,6 @@ "shasum": "ca006761b2b325f107fab172fb0cfcfc5e412c58", "tarball": "http://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-2.0.1.tgz" }, - "_resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-2.0.1.tgz" + "_resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-2.0.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/deps/npm/node_modules/init-package-json/package.json b/deps/npm/node_modules/init-package-json/package.json index a7deb882317..a0acb61d1dc 100644 --- a/deps/npm/node_modules/init-package-json/package.json +++ b/deps/npm/node_modules/init-package-json/package.json @@ -1,6 +1,6 @@ { "name": "init-package-json", - "version": "1.4.1", + "version": "1.4.2", "main": "init-package-json.js", "scripts": { "test": "tap test/*.js" @@ -42,12 +42,12 @@ ], "readme": "# init-package-json\n\nA node module to get your node module started.\n\n[![Build Status](https://secure.travis-ci.org/npm/init-package-json.svg)](http://travis-ci.org/npm/init-package-json)\n\n## Usage\n\n```javascript\nvar init = require('init-package-json')\nvar path = require('path')\n\n// a path to a promzard module. In the event that this file is\n// not found, one will be provided for you.\nvar initFile = path.resolve(process.env.HOME, '.npm-init')\n\n// the dir where we're doin stuff.\nvar dir = process.cwd()\n\n// extra stuff that gets put into the PromZard module's context.\n// In npm, this is the resolved config object. Exposed as 'config'\n// Optional.\nvar configData = { some: 'extra stuff' }\n\n// Any existing stuff from the package.json file is also exposed in the\n// PromZard module as the `package` object. There will also be free\n// vars for:\n// * `filename` path to the package.json file\n// * `basename` the tip of the package dir\n// * `dirname` the parent of the package dir\n\ninit(dir, initFile, configData, function (er, data) {\n // the data's already been written to {dir}/package.json\n // now you can do stuff with it\n})\n```\n\nOr from the command line:\n\n```\n$ npm-init\n```\n\nSee [PromZard](https://github.com/isaacs/promzard) for details about\nwhat can go in the config file.\n", "readmeFilename": "README.md", - "gitHead": "037635311227464c4e512e79792616288683c3b9", + "gitHead": "99bddf908a582daeacf27cf05bd46ec5b0ec5e42", "bugs": { "url": "https://github.com/isaacs/init-package-json/issues" }, "homepage": "https://github.com/isaacs/init-package-json#readme", - "_id": "init-package-json@1.4.1", - "_shasum": "6f68a14e181941849d84f6861f946e0028716cee", - "_from": "init-package-json@>=1.4.1 <1.5.0" + "_id": "init-package-json@1.4.2", + "_shasum": "66e606c5ab458340fb229fa4c25f9062879ffa88", + "_from": "init-package-json@>=1.4.2 <1.5.0" } diff --git a/deps/npm/node_modules/init-package-json/test/basic.js b/deps/npm/node_modules/init-package-json/test/basic.js index 7e3134ee6cd..f07f435bcd2 100644 --- a/deps/npm/node_modules/init-package-json/test/basic.js +++ b/deps/npm/node_modules/init-package-json/test/basic.js @@ -1,48 +1,33 @@ -var tap = require('tap') +var common = require('./lib/common') var init = require('../') +var path = require('path') var rimraf = require('rimraf') -var semver = require('semver') +var test = require('tap').test -tap.test('the basics', function (t) { - var i = __dirname + '/basic.input' - var dir = __dirname - init(dir, i, {foo:'bar'}, function (er, data) { +test('the basics', function (t) { + var i = path.join(__dirname, 'basic.input') + init(__dirname, i, { foo: 'bar' }, function (er, data) { if (er) throw er - var expect = - { name: 'the-name', - version: '1.2.5', - description: 'description', - author: 'npmbot (http://npm.im)', - scripts: { test: 'make test' }, - main: 'main.js', - config: { foo: 'bar' }, - package: {} } + var expect = { + name: 'the-name', + version: '1.2.5', + description: 'description', + author: 'npmbot (http://npm.im)', + scripts: { test: 'make test' }, + main: 'main.js', + config: { foo: 'bar' }, + package: {} + } t.same(data, expect) t.end() }) - var stdin = process.stdin - var name = 'the-name\n' - var desc = 'description\n' - var yes = 'yes\n' - if (semver.gte(process.versions.node, '0.11.0')) { - ;[name, desc, yes].forEach(function (chunk) { - stdin.push(chunk) - }) - } else { - function input (chunk, ms) { - setTimeout(function () { - stdin.emit('data', chunk) - }, ms) - } - stdin.once('readable', function () { - var ms = 0 - ;[name, desc, yes].forEach(function (chunk) { - input(chunk, ms += 50) - }) - }) - } + common.drive([ + 'the-name\n', + 'description\n', + 'yes\n' + ]) }) -tap.test('teardown', function (t) { +test('teardown', function (t) { rimraf(__dirname + '/package.json', t.end.bind(t)) }) diff --git a/deps/npm/node_modules/init-package-json/test/lib/common.js b/deps/npm/node_modules/init-package-json/test/lib/common.js new file mode 100644 index 00000000000..de45089f9b2 --- /dev/null +++ b/deps/npm/node_modules/init-package-json/test/lib/common.js @@ -0,0 +1,24 @@ +module.exports.drive = drive + +var semver = require('semver') + +function drive (input) { + var stdin = process.stdin + function emit (chunk, ms) { + setTimeout(function () { + stdin.emit('data', chunk) + }, ms) + } + if (semver.gte(process.versions.node, '0.11.0')) { + input.forEach(function (chunk) { + stdin.push(chunk) + }) + } else { + stdin.once('readable', function () { + var ms = 0 + input.forEach(function (chunk) { + emit(chunk, ms += 50) + }) + }) + } +} diff --git a/deps/npm/node_modules/init-package-json/test/name-spaces.js b/deps/npm/node_modules/init-package-json/test/name-spaces.js new file mode 100644 index 00000000000..dee974fc8aa --- /dev/null +++ b/deps/npm/node_modules/init-package-json/test/name-spaces.js @@ -0,0 +1,38 @@ +var test = require('tap').test +var init = require('../') +var rimraf = require('rimraf') +var common = require('./lib/common') + +test('spaces', function (t) { + init(__dirname, '', {}, function (er, data) { + t.ok(!er, 'should not error') + var wanted = { + name: 'the-name', + version: '1.0.0', + description: '', + scripts: { test: 'echo "Error: no test specified" && exit 1' }, + license: 'ISC', + author: '', + main: 'basic.js' + } + t.same(data, wanted) + t.end() + }) + common.drive([ + 'the name\n', + 'the-name\n', + '\n', + '\n', + '\n', + '\n', + '\n', + '\n', + '\n', + '\n', + 'yes\n' + ]) +}) + +test('teardown', function (t) { + rimraf(__dirname + '/package.json', t.end.bind(t)) +}) diff --git a/deps/npm/node_modules/init-package-json/test/name-uppercase.js b/deps/npm/node_modules/init-package-json/test/name-uppercase.js new file mode 100644 index 00000000000..ddedc30e524 --- /dev/null +++ b/deps/npm/node_modules/init-package-json/test/name-uppercase.js @@ -0,0 +1,38 @@ +var test = require('tap').test +var init = require('../') +var rimraf = require('rimraf') +var common = require('./lib/common') + +test('uppercase', function (t) { + init(__dirname, '', {}, function (er, data) { + t.ok(!er, 'should not error') + var wanted = { + name: 'the-name', + version: '1.0.0', + description: '', + scripts: { test: 'echo "Error: no test specified" && exit 1' }, + license: 'ISC', + author: '', + main: 'basic.js' + } + t.same(data, wanted) + t.end() + }) + common.drive([ + 'THE-NAME\n', + 'the-name\n', + '\n', + '\n', + '\n', + '\n', + '\n', + '\n', + '\n', + '\n', + 'yes\n' + ]) +}) + +test('teardown', function (t) { + rimraf(__dirname + '/package.json', t.end.bind(t)) +}) diff --git a/deps/npm/node_modules/init-package-json/test/npm-defaults.js b/deps/npm/node_modules/init-package-json/test/npm-defaults.js index 666e9a1c496..292b9623ae9 100644 --- a/deps/npm/node_modules/init-package-json/test/npm-defaults.js +++ b/deps/npm/node_modules/init-package-json/test/npm-defaults.js @@ -1,109 +1,109 @@ -var test = require("tap").test -var rimraf = require("rimraf") -var resolve = require("path").resolve +var test = require('tap').test +var rimraf = require('rimraf') +var resolve = require('path').resolve -var npm = require("npm") -var init = require("../") +var npm = require('npm') +var init = require('../') var EXPECTED = { - name : "test", - version : "3.1.4", - description : "", - main : "basic.js", - scripts : { - test : 'echo "Error: no test specified" && exit 1' + name: 'test', + version: '3.1.4', + description: '', + main: 'basic.js', + scripts: { + test: 'echo "Error: no test specified" && exit 1' }, - keywords : [], - author : "npmbot (http://npm.im/)", - license : "WTFPL" + keywords: [], + author: 'npmbot (http://npm.im/)', + license: 'WTFPL' } -test("npm configuration values pulled from environment", function (t) { +test('npm configuration values pulled from environment', function (t) { /*eslint camelcase:0 */ - process.env.npm_config_yes = "yes" + process.env.npm_config_yes = 'yes' - process.env.npm_config_init_author_name = "npmbot" - process.env.npm_config_init_author_email = "n@p.m" - process.env.npm_config_init_author_url = "http://npm.im" + process.env.npm_config_init_author_name = 'npmbot' + process.env.npm_config_init_author_email = 'n@p.m' + process.env.npm_config_init_author_url = 'http://npm.im' process.env.npm_config_init_license = EXPECTED.license process.env.npm_config_init_version = EXPECTED.version npm.load({}, function (err) { - t.ifError(err, "npm loaded successfully") + t.ifError(err, 'npm loaded successfully') // clear out dotted names from test environment - npm.config.del("init.author.name") - npm.config.del("init.author.email") - npm.config.del("init.author.url") + npm.config.del('init.author.name') + npm.config.del('init.author.email') + npm.config.del('init.author.url') // the following have npm defaults, and need to be explicitly overridden - npm.config.set("init.license", "") - npm.config.set("init.version", "") + npm.config.set('init.license', '') + npm.config.set('init.version', '') process.chdir(resolve(__dirname)) init(__dirname, __dirname, npm.config, function (er, data) { - t.ifError(err, "init ran successfully") + t.ifError(err, 'init ran successfully') - t.same(data, EXPECTED, "got the package data from the environment") + t.same(data, EXPECTED, 'got the package data from the environment') t.end() }) }) }) -test("npm configuration values pulled from dotted config", function (t) { +test('npm configuration values pulled from dotted config', function (t) { /*eslint camelcase:0 */ var config = { - yes : "yes", + yes: 'yes', - "init.author.name" : "npmbot", - "init.author.email" : "n@p.m", - "init.author.url" : "http://npm.im", + 'init.author.name': 'npmbot', + 'init.author.email': 'n@p.m', + 'init.author.url': 'http://npm.im', - "init.license" : EXPECTED.license, - "init.version" : EXPECTED.version + 'init.license': EXPECTED.license, + 'init.version': EXPECTED.version } npm.load(config, function (err) { - t.ifError(err, "npm loaded successfully") + t.ifError(err, 'npm loaded successfully') process.chdir(resolve(__dirname)) init(__dirname, __dirname, npm.config, function (er, data) { - t.ifError(err, "init ran successfully") + t.ifError(err, 'init ran successfully') - t.same(data, EXPECTED, "got the package data from the config") + t.same(data, EXPECTED, 'got the package data from the config') t.end() }) }) }) -test("npm configuration values pulled from dashed config", function (t) { +test('npm configuration values pulled from dashed config', function (t) { /*eslint camelcase:0 */ var config = { - yes : "yes", + yes: 'yes', - "init-author-name" : "npmbot", - "init-author-email" : "n@p.m", - "init-author-url" : "http://npm.im", + 'init-author-name': 'npmbot', + 'init-author-email': 'n@p.m', + 'init-author-url': 'http://npm.im', - "init-license" : EXPECTED.license, - "init-version" : EXPECTED.version + 'init-license': EXPECTED.license, + 'init-version': EXPECTED.version } npm.load(config, function (err) { - t.ifError(err, "npm loaded successfully") + t.ifError(err, 'npm loaded successfully') process.chdir(resolve(__dirname)) init(__dirname, __dirname, npm.config, function (er, data) { - t.ifError(err, "init ran successfully") + t.ifError(err, 'init ran successfully') - t.same(data, EXPECTED, "got the package data from the config") + t.same(data, EXPECTED, 'got the package data from the config') t.end() }) }) }) -test("cleanup", function (t) { - rimraf.sync(resolve(__dirname, "package.json")) - t.pass("cleaned up") +test('cleanup', function (t) { + rimraf.sync(resolve(__dirname, 'package.json')) + t.pass('cleaned up') t.end() }) diff --git a/deps/npm/node_modules/init-package-json/test/scope.js b/deps/npm/node_modules/init-package-json/test/scope.js index 05968fcc052..971916f2d86 100644 --- a/deps/npm/node_modules/init-package-json/test/scope.js +++ b/deps/npm/node_modules/init-package-json/test/scope.js @@ -1,38 +1,38 @@ -var tap = require("tap") -var init = require("../") -var rimraf = require("rimraf") +var tap = require('tap') +var init = require('../') +var rimraf = require('rimraf') var EXPECT = { - name: "@foo/test" - , version: "1.2.5" - , description: "description" - , author: "npmbot (http://npm.im)" - , scripts: { test: "make test" } - , main: "main.js" - , config: { scope: "@foo" } - , package: {} + name: '@foo/test', + version: '1.2.5', + description: 'description', + author: 'npmbot (http://npm.im)', + scripts: { test: 'make test' }, + main: 'main.js', + config: { scope: '@foo' }, + package: {} } -tap.test("the scope", function (t) { - var i = __dirname + "/basic.input" +tap.test('the scope', function (t) { + var i = __dirname + '/basic.input' var dir = __dirname - init(dir, i, {scope: "@foo"}, function (er, data) { + init(dir, i, {scope: '@foo'}, function (er, data) { if (er) throw er t.same(EXPECT, data) t.end() }) setTimeout(function () { - process.stdin.emit("data", "@foo/test\n") + process.stdin.emit('data', '@foo/test\n') }, 50) setTimeout(function () { - process.stdin.emit("data", "description\n") + process.stdin.emit('data', 'description\n') }, 100) setTimeout(function () { - process.stdin.emit("data", "yes\n") + process.stdin.emit('data', 'yes\n') }, 150) }) -tap.test("teardown", function (t) { - rimraf(__dirname + "/package.json", t.end.bind(t)) +tap.test('teardown', function (t) { + rimraf(__dirname + '/package.json', t.end.bind(t)) }) diff --git a/deps/npm/node_modules/init-package-json/test/yes-defaults.js b/deps/npm/node_modules/init-package-json/test/yes-defaults.js index f1d50c025c5..747ab38fdd2 100644 --- a/deps/npm/node_modules/init-package-json/test/yes-defaults.js +++ b/deps/npm/node_modules/init-package-json/test/yes-defaults.js @@ -1,20 +1,20 @@ -var tap = require("tap") -var init = require("../") -var rimraf = require("rimraf") +var tap = require('tap') +var init = require('../') +var rimraf = require('rimraf') var EXPECT = { - name: "test" - , version: "1.0.0" - , description: "" - , author: "" - , scripts: { test: "echo \"Error: no test specified\" && exit 1" } - , main: "basic.js" - , keywords: [] - , license: "ISC" + name: 'test', + version: '1.0.0', + description: '', + author: '', + scripts: { test: 'echo "Error: no test specified" && exit 1' }, + main: 'basic.js', + keywords: [], + license: 'ISC' } -tap.test("--yes defaults", function (t) { - init(__dirname, __dirname, {yes: "yes"}, function (er, data) { +tap.test('--yes defaults', function (t) { + init(__dirname, __dirname, {yes: 'yes'}, function (er, data) { if (er) throw er t.same(EXPECT, data, 'used the default data') @@ -22,6 +22,6 @@ tap.test("--yes defaults", function (t) { }) }) -tap.test("teardown", function (t) { - rimraf(__dirname + "/package.json", t.end.bind(t)) +tap.test('teardown', function (t) { + rimraf(__dirname + '/package.json', t.end.bind(t)) }) diff --git a/deps/npm/node_modules/lru-cache/bar.js b/deps/npm/node_modules/lru-cache/bar.js new file mode 100644 index 00000000000..bccb258364f --- /dev/null +++ b/deps/npm/node_modules/lru-cache/bar.js @@ -0,0 +1 @@ +console.log("bar");module.exports = "bar"; require("./foo.js") diff --git a/deps/npm/node_modules/lru-cache/foo.js b/deps/npm/node_modules/lru-cache/foo.js new file mode 100644 index 00000000000..c8a77e36ea0 --- /dev/null +++ b/deps/npm/node_modules/lru-cache/foo.js @@ -0,0 +1 @@ +console.log(require(".")) diff --git a/deps/npm/node_modules/lru-cache/lib/lru-cache.js b/deps/npm/node_modules/lru-cache/lib/lru-cache.js index 575b4476c15..d66e7a2382f 100644 --- a/deps/npm/node_modules/lru-cache/lib/lru-cache.js +++ b/deps/npm/node_modules/lru-cache/lib/lru-cache.js @@ -238,7 +238,6 @@ function isStale(self, hit) { function use (self, hit) { shiftLU(self, hit) hit.lu = self._mru ++ - if (self._maxAge) hit.now = Date.now() self._lruList[hit.lu] = hit } diff --git a/deps/npm/node_modules/lru-cache/package.json b/deps/npm/node_modules/lru-cache/package.json index f6c859c1eb5..c3b70c76519 100644 --- a/deps/npm/node_modules/lru-cache/package.json +++ b/deps/npm/node_modules/lru-cache/package.json @@ -1,7 +1,7 @@ { "name": "lru-cache", "description": "A cache object that deletes the least-recently-used items.", - "version": "2.6.1", + "version": "2.6.2", "author": { "name": "Isaac Z. Schlueter", "email": "i@izs.me" @@ -27,23 +27,23 @@ "type": "MIT", "url": "http://github.com/isaacs/node-lru-cache/raw/master/LICENSE" }, - "gitHead": "ff3dfd40e437fa619f09610f45d1ac523bbf27c9", + "gitHead": "278d05fcc714636eeedb3959bca80c20c19a61df", "bugs": { "url": "https://github.com/isaacs/node-lru-cache/issues" }, "homepage": "https://github.com/isaacs/node-lru-cache#readme", - "_id": "lru-cache@2.6.1", - "_shasum": "9933eff15453fae1d27096365143c724e85c6cbd", - "_from": "lru-cache@>=2.6.1 <2.7.0", - "_npmVersion": "2.8.1", + "_id": "lru-cache@2.6.2", + "_shasum": "77741638c6dc972e503dbe41dcb6bfdfba499a38", + "_from": "lru-cache@>=2.6.2 <2.7.0", + "_npmVersion": "2.8.4", "_nodeVersion": "1.4.2", "_npmUser": { "name": "isaacs", "email": "isaacs@npmjs.com" }, "dist": { - "shasum": "9933eff15453fae1d27096365143c724e85c6cbd", - "tarball": "http://registry.npmjs.org/lru-cache/-/lru-cache-2.6.1.tgz" + "shasum": "77741638c6dc972e503dbe41dcb6bfdfba499a38", + "tarball": "http://registry.npmjs.org/lru-cache/-/lru-cache-2.6.2.tgz" }, "maintainers": [ { @@ -52,5 +52,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.1.tgz" + "_resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.2.tgz", + "readme": "ERROR: No README data found!" } diff --git a/deps/npm/node_modules/lru-cache/test/timeout.js b/deps/npm/node_modules/lru-cache/test/timeout.js deleted file mode 100644 index 5dce62a9e3c..00000000000 --- a/deps/npm/node_modules/lru-cache/test/timeout.js +++ /dev/null @@ -1,21 +0,0 @@ -var test = require("tap").test -var LRU = require("../") - -var cache = LRU( { - max: 1, - maxAge: 500 -} ); - -test('set the key', function (t) { - cache.set( "1234", 1 ); - t.end() -}) - -for (var i = 0; i < 10; i ++) { - test('get after ' + i + '00ms', function (t) { - setTimeout(function () { - t.equal(cache.get('1234'), 1) - t.end() - }, 100) - }) -} diff --git a/deps/npm/node_modules/minimatch/browser.js b/deps/npm/node_modules/minimatch/browser.js index cf58a3f60cd..967b45c0d67 100644 --- a/deps/npm/node_modules/minimatch/browser.js +++ b/deps/npm/node_modules/minimatch/browser.js @@ -2,35 +2,36 @@ module.exports = minimatch minimatch.Minimatch = Minimatch -var isWindows = false -if (typeof process !== 'undefined' && process.platform === 'win32') - isWindows = true +var path = { sep: '/' } +try { + path = require('path') +} catch (er) {} var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} - , expand = require("brace-expansion") +var expand = require('brace-expansion') - // any single thing other than / - // don't need to escape / when using new RegExp() - , qmark = "[^/]" +// any single thing other than / +// don't need to escape / when using new RegExp() +var qmark = '[^/]' - // * => any number of characters - , star = qmark + "*?" +// * => any number of characters +var star = qmark + '*?' - // ** when dots are allowed. Anything goes, except .. and . - // not (^ or / followed by one or two dots followed by $ or /), - // followed by anything, any number of times. - , twoStarDot = "(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?" +// ** when dots are allowed. Anything goes, except .. and . +// not (^ or / followed by one or two dots followed by $ or /), +// followed by anything, any number of times. +var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' - // not a ^ or / followed by a dot, - // followed by anything, any number of times. - , twoStarNoDot = "(?:(?!(?:\\\/|^)\\.).)*?" +// not a ^ or / followed by a dot, +// followed by anything, any number of times. +var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' - // characters that need to be escaped in RegExp. - , reSpecials = charSet("().*{}+?[]^$\\!") +// characters that need to be escaped in RegExp. +var reSpecials = charSet('().*{}+?[]^$\\!') // "abc" -> { a:true, b:true, c:true } function charSet (s) { - return s.split("").reduce(function (set, c) { + return s.split('').reduce(function (set, c) { set[c] = true return set }, {}) @@ -81,21 +82,20 @@ Minimatch.defaults = function (def) { return minimatch.defaults(def).Minimatch } - function minimatch (p, pattern, options) { - if (typeof pattern !== "string") { - throw new TypeError("glob pattern string required") + if (typeof pattern !== 'string') { + throw new TypeError('glob pattern string required') } if (!options) options = {} // shortcut: comments match nothing. - if (!options.nocomment && pattern.charAt(0) === "#") { + if (!options.nocomment && pattern.charAt(0) === '#') { return false } // "" only matches "" - if (pattern.trim() === "") return p === "" + if (pattern.trim() === '') return p === '' return new Minimatch(pattern, options).match(p) } @@ -105,16 +105,17 @@ function Minimatch (pattern, options) { return new Minimatch(pattern, options) } - if (typeof pattern !== "string") { - throw new TypeError("glob pattern string required") + if (typeof pattern !== 'string') { + throw new TypeError('glob pattern string required') } if (!options) options = {} pattern = pattern.trim() // windows support: need to use /, not \ - if (isWindows) - pattern = pattern.split("\\").join("/") + if (path.sep !== '/') { + pattern = pattern.split(path.sep).join('/') + } this.options = options this.set = [] @@ -128,7 +129,7 @@ function Minimatch (pattern, options) { this.make() } -Minimatch.prototype.debug = function() {} +Minimatch.prototype.debug = function () {} Minimatch.prototype.make = make function make () { @@ -139,7 +140,7 @@ function make () { var options = this.options // empty patterns and comments match nothing. - if (!options.nocomment && pattern.charAt(0) === "#") { + if (!options.nocomment && pattern.charAt(0) === '#') { this.comment = true return } @@ -178,7 +179,7 @@ function make () { // filter out everything that didn't compile properly. set = set.filter(function (s) { - return -1 === s.indexOf(false) + return s.indexOf(false) === -1 }) this.debug(this.pattern, set) @@ -189,17 +190,17 @@ function make () { Minimatch.prototype.parseNegate = parseNegate function parseNegate () { var pattern = this.pattern - , negate = false - , options = this.options - , negateOffset = 0 + var negate = false + var options = this.options + var negateOffset = 0 if (options.nonegate) return - for ( var i = 0, l = pattern.length - ; i < l && pattern.charAt(i) === "!" - ; i ++) { + for (var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === '!' + ; i++) { negate = !negate - negateOffset ++ + negateOffset++ } if (negateOffset) this.pattern = pattern.substr(negateOffset) @@ -224,21 +225,22 @@ Minimatch.prototype.braceExpand = braceExpand function braceExpand (pattern, options) { if (!options) { - if (this instanceof Minimatch) + if (this instanceof Minimatch) { options = this.options - else + } else { options = {} + } } - pattern = typeof pattern === "undefined" + pattern = typeof pattern === 'undefined' ? this.pattern : pattern - if (typeof pattern === "undefined") { - throw new Error("undefined pattern") + if (typeof pattern === 'undefined') { + throw new Error('undefined pattern') } if (options.nobrace || - !pattern.match(/\{.*\}/)) { + !pattern.match(/\{.*\}/)) { // shortcut. no need to expand. return [pattern] } @@ -263,87 +265,86 @@ function parse (pattern, isSub) { var options = this.options // shortcuts - if (!options.noglobstar && pattern === "**") return GLOBSTAR - if (pattern === "") return "" - - var re = "" - , hasMagic = !!options.nocase - , escaping = false - // ? => one single character - , patternListStack = [] - , plType - , stateChar - , inClass = false - , reClassStart = -1 - , classStart = -1 - // . and .. never match anything that doesn't start with ., - // even when options.dot is set. - , patternStart = pattern.charAt(0) === "." ? "" // anything - // not (start or / followed by . or .. followed by / or end) - : options.dot ? "(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))" - : "(?!\\.)" - , self = this + if (!options.noglobstar && pattern === '**') return GLOBSTAR + if (pattern === '') return '' + + var re = '' + var hasMagic = !!options.nocase + var escaping = false + // ? => one single character + var patternListStack = [] + var plType + var stateChar + var inClass = false + var reClassStart = -1 + var classStart = -1 + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + var patternStart = pattern.charAt(0) === '.' ? '' // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' + : '(?!\\.)' + var self = this function clearStateChar () { if (stateChar) { // we had some state-tracking character // that wasn't consumed by this pass. switch (stateChar) { - case "*": + case '*': re += star hasMagic = true - break - case "?": + break + case '?': re += qmark hasMagic = true - break + break default: - re += "\\"+stateChar - break + re += '\\' + stateChar + break } self.debug('clearStateChar %j %j', stateChar, re) stateChar = false } } - for ( var i = 0, len = pattern.length, c - ; (i < len) && (c = pattern.charAt(i)) - ; i ++ ) { - - this.debug("%s\t%s %s %j", pattern, i, re, c) + for (var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i++) { + this.debug('%s\t%s %s %j', pattern, i, re, c) // skip over any that are escaped. if (escaping && reSpecials[c]) { - re += "\\" + c + re += '\\' + c escaping = false continue } - SWITCH: switch (c) { - case "/": + switch (c) { + case '/': // completely not allowed, even escaped. // Should already be path-split by now. return false - case "\\": + case '\\': clearStateChar() escaping = true - continue + continue // the various stateChar values // for the "extglob" stuff. - case "?": - case "*": - case "+": - case "@": - case "!": - this.debug("%s\t%s %s %j <-- stateChar", pattern, i, re, c) + case '?': + case '*': + case '+': + case '@': + case '!': + this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) // all of those are literals inside a class, except that // the glob [!a] means [^a] in regexp if (inClass) { this.debug(' in class') - if (c === "!" && i === classStart + 1) c = "^" + if (c === '!' && i === classStart + 1) c = '^' re += c continue } @@ -358,70 +359,70 @@ function parse (pattern, isSub) { // just clear the statechar *now*, rather than even diving into // the patternList stuff. if (options.noext) clearStateChar() - continue + continue - case "(": + case '(': if (inClass) { - re += "(" + re += '(' continue } if (!stateChar) { - re += "\\(" + re += '\\(' continue } plType = stateChar - patternListStack.push({ type: plType - , start: i - 1 - , reStart: re.length }) + patternListStack.push({ type: plType, start: i - 1, reStart: re.length }) // negation is (?:(?!js)[^/]*) - re += stateChar === "!" ? "(?:(?!" : "(?:" + re += stateChar === '!' ? '(?:(?!' : '(?:' this.debug('plType %j %j', stateChar, re) stateChar = false - continue + continue - case ")": + case ')': if (inClass || !patternListStack.length) { - re += "\\)" + re += '\\)' continue } clearStateChar() hasMagic = true - re += ")" + re += ')' plType = patternListStack.pop().type // negation is (?:(?!js)[^/]*) // The others are (?:) switch (plType) { - case "!": - re += "[^/]*?)" + case '!': + re += '[^/]*?)' break - case "?": - case "+": - case "*": re += plType - case "@": break // the default anyway + case '?': + case '+': + case '*': + re += plType + break + case '@': break // the default anyway } - continue + continue - case "|": + case '|': if (inClass || !patternListStack.length || escaping) { - re += "\\|" + re += '\\|' escaping = false continue } clearStateChar() - re += "|" - continue + re += '|' + continue // these are mostly the same in regexp and glob - case "[": + case '[': // swallow any state-tracking char before the [ clearStateChar() if (inClass) { - re += "\\" + c + re += '\\' + c continue } @@ -429,15 +430,15 @@ function parse (pattern, isSub) { classStart = i reClassStart = re.length re += c - continue + continue - case "]": + case ']': // a right bracket shall lose its special // meaning and represent itself in // a bracket expression if it occurs // first in the list. -- POSIX.2 2.8.3.2 if (i === classStart + 1 || !inClass) { - re += "\\" + c + re += '\\' + c escaping = false continue } @@ -454,11 +455,11 @@ function parse (pattern, isSub) { // to do safely. For now, this is safe and works. var cs = pattern.substring(classStart + 1, i) try { - new RegExp('[' + cs + ']') + RegExp('[' + cs + ']') } catch (er) { // not a valid class! var sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + "\\[" + sp[0] + '\\]' + re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' hasMagic = hasMagic || sp[1] inClass = false continue @@ -469,7 +470,7 @@ function parse (pattern, isSub) { hasMagic = true inClass = false re += c - continue + continue default: // swallow any state char that wasn't consumed @@ -479,8 +480,8 @@ function parse (pattern, isSub) { // no need escaping = false } else if (reSpecials[c] - && !(c === "^" && inClass)) { - re += "\\" + && !(c === '^' && inClass)) { + re += '\\' } re += c @@ -488,7 +489,6 @@ function parse (pattern, isSub) { } // switch } // for - // handle the case where we left a class open. // "[abc" is valid, equivalent to "\[abc" if (inClass) { @@ -496,9 +496,9 @@ function parse (pattern, isSub) { // this is a huge pita. We now have to re-walk // the contents of the would-be class to re-translate // any characters that were passed through as-is - var cs = pattern.substr(classStart + 1) - , sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + "\\[" + sp[0] + cs = pattern.substr(classStart + 1) + sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] hasMagic = hasMagic || sp[1] } @@ -508,14 +508,13 @@ function parse (pattern, isSub) { // and escape any | chars that were passed through as-is for the regexp. // Go through and escape them, taking care not to double-escape any // | chars that were already escaped. - var pl - while (pl = patternListStack.pop()) { + for (var pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { var tail = re.slice(pl.reStart + 3) // maybe some even number of \, then maybe 1 \, followed by a | tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { if (!$2) { // the | isn't already escaped, so escape it. - $2 = "\\" + $2 = '\\' } // need to escape all those slashes *again*, without escaping the @@ -524,46 +523,44 @@ function parse (pattern, isSub) { // it exactly after itself. That's why this trick works. // // I am sorry that you have to see this. - return $1 + $1 + $2 + "|" + return $1 + $1 + $2 + '|' }) - this.debug("tail=%j\n %s", tail, tail) - var t = pl.type === "*" ? star - : pl.type === "?" ? qmark - : "\\" + pl.type + this.debug('tail=%j\n %s', tail, tail) + var t = pl.type === '*' ? star + : pl.type === '?' ? qmark + : '\\' + pl.type hasMagic = true - re = re.slice(0, pl.reStart) - + t + "\\(" - + tail + re = re.slice(0, pl.reStart) + t + '\\(' + tail } // handle trailing things that only matter at the very end. clearStateChar() if (escaping) { // trailing \\ - re += "\\\\" + re += '\\\\' } // only need to apply the nodot start if the re starts with // something that could conceivably capture a dot var addPatternStart = false switch (re.charAt(0)) { - case ".": - case "[": - case "(": addPatternStart = true + case '.': + case '[': + case '(': addPatternStart = true } // if the re is not "" at this point, then we need to make sure // it doesn't match against an empty path part. // Otherwise a/* will match a/, which it should not. - if (re !== "" && hasMagic) re = "(?=.)" + re + if (re !== '' && hasMagic) re = '(?=.)' + re if (addPatternStart) re = patternStart + re // parsing just a piece of a larger pattern. if (isSub === SUBPARSE) { - return [ re, hasMagic ] + return [re, hasMagic] } // skip the regexp for non-magical patterns @@ -573,8 +570,8 @@ function parse (pattern, isSub) { return globUnescape(pattern) } - var flags = options.nocase ? "i" : "" - , regExp = new RegExp("^" + re + "$", flags) + var flags = options.nocase ? 'i' : '' + var regExp = new RegExp('^' + re + '$', flags) regExp._glob = pattern regExp._src = re @@ -598,34 +595,38 @@ function makeRe () { // when you just want to work with a regex. var set = this.set - if (!set.length) return this.regexp = false + if (!set.length) { + this.regexp = false + return this.regexp + } var options = this.options var twoStar = options.noglobstar ? star - : options.dot ? twoStarDot - : twoStarNoDot - , flags = options.nocase ? "i" : "" + : options.dot ? twoStarDot + : twoStarNoDot + var flags = options.nocase ? 'i' : '' var re = set.map(function (pattern) { return pattern.map(function (p) { return (p === GLOBSTAR) ? twoStar - : (typeof p === "string") ? regExpEscape(p) - : p._src - }).join("\\\/") - }).join("|") + : (typeof p === 'string') ? regExpEscape(p) + : p._src + }).join('\\\/') + }).join('|') // must match entire pattern // ending in a * or ** will make it less strict. - re = "^(?:" + re + ")$" + re = '^(?:' + re + ')$' // can match anything, as long as it's not this. - if (this.negate) re = "^(?!" + re + ").*$" + if (this.negate) re = '^(?!' + re + ').*$' try { - return this.regexp = new RegExp(re, flags) + this.regexp = new RegExp(re, flags) } catch (ex) { - return this.regexp = false + this.regexp = false } + return this.regexp } minimatch.match = function (list, pattern, options) { @@ -642,23 +643,24 @@ minimatch.match = function (list, pattern, options) { Minimatch.prototype.match = match function match (f, partial) { - this.debug("match", f, this.pattern) + this.debug('match', f, this.pattern) // short-circuit in the case of busted things. // comments, etc. if (this.comment) return false - if (this.empty) return f === "" + if (this.empty) return f === '' - if (f === "/" && partial) return true + if (f === '/' && partial) return true var options = this.options // windows: need to use /, not \ - if (isWindows) - f = f.split("\\").join("/") + if (path.sep !== '/') { + f = f.split(path.sep).join('/') + } // treat the test path as a set of pathparts. f = f.split(slashSplit) - this.debug(this.pattern, "split", f) + this.debug(this.pattern, 'split', f) // just ONE of the pattern sets in this.set needs to match // in order for it to be valid. If negating, then just one @@ -666,17 +668,19 @@ function match (f, partial) { // Either way, return on the first hit. var set = this.set - this.debug(this.pattern, "set", set) + this.debug(this.pattern, 'set', set) // Find the basename of the path by looking for the last non-empty segment - var filename; - for (var i = f.length - 1; i >= 0; i--) { + var filename + var i + for (i = f.length - 1; i >= 0; i--) { filename = f[i] if (filename) break } - for (var i = 0, l = set.length; i < l; i ++) { - var pattern = set[i], file = f + for (i = 0; i < set.length; i++) { + var pattern = set[i] + var file = f if (options.matchBase && pattern.length === 1) { file = [filename] } @@ -701,23 +705,20 @@ function match (f, partial) { Minimatch.prototype.matchOne = function (file, pattern, partial) { var options = this.options - this.debug("matchOne", - { "this": this - , file: file - , pattern: pattern }) + this.debug('matchOne', + { 'this': this, file: file, pattern: pattern }) - this.debug("matchOne", file.length, pattern.length) + this.debug('matchOne', file.length, pattern.length) - for ( var fi = 0 - , pi = 0 - , fl = file.length - , pl = pattern.length + for (var fi = 0, + pi = 0, + fl = file.length, + pl = pattern.length ; (fi < fl) && (pi < pl) - ; fi ++, pi ++ ) { - - this.debug("matchOne loop") + ; fi++, pi++) { + this.debug('matchOne loop') var p = pattern[pi] - , f = file[fi] + var f = file[fi] this.debug(pattern, p, f) @@ -751,7 +752,7 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) { // - matchOne(z/c, c) -> no // - matchOne(c, c) yes, hit var fr = fi - , pr = pi + 1 + var pr = pi + 1 if (pr === pl) { this.debug('** at the end') // a ** at the end will just swallow the rest. @@ -760,19 +761,18 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) { // options.dot is set. // . and .. are *never* matched by **, for explosively // exponential reasons. - for ( ; fi < fl; fi ++) { - if (file[fi] === "." || file[fi] === ".." || - (!options.dot && file[fi].charAt(0) === ".")) return false + for (; fi < fl; fi++) { + if (file[fi] === '.' || file[fi] === '..' || + (!options.dot && file[fi].charAt(0) === '.')) return false } return true } // ok, let's see if we can swallow whatever we can. - WHILE: while (fr < fl) { + while (fr < fl) { var swallowee = file[fr] - this.debug('\nglobstar while', - file, fr, pattern, pr, swallowee) + this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) // XXX remove this slice. Just pass the start index. if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { @@ -782,23 +782,24 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) { } else { // can't swallow "." or ".." ever. // can only swallow ".foo" when explicitly asked. - if (swallowee === "." || swallowee === ".." || - (!options.dot && swallowee.charAt(0) === ".")) { - this.debug("dot detected!", file, fr, pattern, pr) - break WHILE + if (swallowee === '.' || swallowee === '..' || + (!options.dot && swallowee.charAt(0) === '.')) { + this.debug('dot detected!', file, fr, pattern, pr) + break } // ** swallows a segment, and continue. this.debug('globstar swallow a segment, and continue') - fr ++ + fr++ } } + // no match was found. // However, in partial mode, we can't say this is necessarily over. // If there's more *pattern* left, then if (partial) { // ran out of file - this.debug("\n>>> no match, partial?", file, fr, pattern, pr) + this.debug('\n>>> no match, partial?', file, fr, pattern, pr) if (fr === fl) return true } return false @@ -808,16 +809,16 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) { // non-magic patterns just have to match exactly // patterns with magic have been turned into regexps. var hit - if (typeof p === "string") { + if (typeof p === 'string') { if (options.nocase) { hit = f.toLowerCase() === p.toLowerCase() } else { hit = f === p } - this.debug("string match", p, f, hit) + this.debug('string match', p, f, hit) } else { hit = f.match(p) - this.debug("pattern match", p, f, hit) + this.debug('pattern match', p, f, hit) } if (!hit) return false @@ -849,26 +850,24 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) { // this is only acceptable if we're on the very last // empty segment of a file with a trailing slash. // a/* should match a/b/ - var emptyFileEnd = (fi === fl - 1) && (file[fi] === "") + var emptyFileEnd = (fi === fl - 1) && (file[fi] === '') return emptyFileEnd } // should be unreachable. - throw new Error("wtf?") + throw new Error('wtf?') } - // replace stuff like \* with * function globUnescape (s) { - return s.replace(/\\(.)/g, "$1") + return s.replace(/\\(.)/g, '$1') } - function regExpEscape (s) { - return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') } -},{"brace-expansion":2}],2:[function(require,module,exports){ +},{"brace-expansion":2,"path":undefined}],2:[function(require,module,exports){ var concatMap = require('concat-map'); var balanced = require('balanced-match'); diff --git a/deps/npm/node_modules/minimatch/minimatch.js b/deps/npm/node_modules/minimatch/minimatch.js index 2bfdf62b743..5e13d6d5b2e 100644 --- a/deps/npm/node_modules/minimatch/minimatch.js +++ b/deps/npm/node_modules/minimatch/minimatch.js @@ -1,35 +1,36 @@ module.exports = minimatch minimatch.Minimatch = Minimatch -var isWindows = false -if (typeof process !== 'undefined' && process.platform === 'win32') - isWindows = true +var path = { sep: '/' } +try { + path = require('path') +} catch (er) {} var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} - , expand = require("brace-expansion") +var expand = require('brace-expansion') - // any single thing other than / - // don't need to escape / when using new RegExp() - , qmark = "[^/]" +// any single thing other than / +// don't need to escape / when using new RegExp() +var qmark = '[^/]' - // * => any number of characters - , star = qmark + "*?" +// * => any number of characters +var star = qmark + '*?' - // ** when dots are allowed. Anything goes, except .. and . - // not (^ or / followed by one or two dots followed by $ or /), - // followed by anything, any number of times. - , twoStarDot = "(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?" +// ** when dots are allowed. Anything goes, except .. and . +// not (^ or / followed by one or two dots followed by $ or /), +// followed by anything, any number of times. +var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' - // not a ^ or / followed by a dot, - // followed by anything, any number of times. - , twoStarNoDot = "(?:(?!(?:\\\/|^)\\.).)*?" +// not a ^ or / followed by a dot, +// followed by anything, any number of times. +var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' - // characters that need to be escaped in RegExp. - , reSpecials = charSet("().*{}+?[]^$\\!") +// characters that need to be escaped in RegExp. +var reSpecials = charSet('().*{}+?[]^$\\!') // "abc" -> { a:true, b:true, c:true } function charSet (s) { - return s.split("").reduce(function (set, c) { + return s.split('').reduce(function (set, c) { set[c] = true return set }, {}) @@ -80,21 +81,20 @@ Minimatch.defaults = function (def) { return minimatch.defaults(def).Minimatch } - function minimatch (p, pattern, options) { - if (typeof pattern !== "string") { - throw new TypeError("glob pattern string required") + if (typeof pattern !== 'string') { + throw new TypeError('glob pattern string required') } if (!options) options = {} // shortcut: comments match nothing. - if (!options.nocomment && pattern.charAt(0) === "#") { + if (!options.nocomment && pattern.charAt(0) === '#') { return false } // "" only matches "" - if (pattern.trim() === "") return p === "" + if (pattern.trim() === '') return p === '' return new Minimatch(pattern, options).match(p) } @@ -104,16 +104,17 @@ function Minimatch (pattern, options) { return new Minimatch(pattern, options) } - if (typeof pattern !== "string") { - throw new TypeError("glob pattern string required") + if (typeof pattern !== 'string') { + throw new TypeError('glob pattern string required') } if (!options) options = {} pattern = pattern.trim() // windows support: need to use /, not \ - if (isWindows) - pattern = pattern.split("\\").join("/") + if (path.sep !== '/') { + pattern = pattern.split(path.sep).join('/') + } this.options = options this.set = [] @@ -127,7 +128,7 @@ function Minimatch (pattern, options) { this.make() } -Minimatch.prototype.debug = function() {} +Minimatch.prototype.debug = function () {} Minimatch.prototype.make = make function make () { @@ -138,7 +139,7 @@ function make () { var options = this.options // empty patterns and comments match nothing. - if (!options.nocomment && pattern.charAt(0) === "#") { + if (!options.nocomment && pattern.charAt(0) === '#') { this.comment = true return } @@ -177,7 +178,7 @@ function make () { // filter out everything that didn't compile properly. set = set.filter(function (s) { - return -1 === s.indexOf(false) + return s.indexOf(false) === -1 }) this.debug(this.pattern, set) @@ -188,17 +189,17 @@ function make () { Minimatch.prototype.parseNegate = parseNegate function parseNegate () { var pattern = this.pattern - , negate = false - , options = this.options - , negateOffset = 0 + var negate = false + var options = this.options + var negateOffset = 0 if (options.nonegate) return - for ( var i = 0, l = pattern.length - ; i < l && pattern.charAt(i) === "!" - ; i ++) { + for (var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === '!' + ; i++) { negate = !negate - negateOffset ++ + negateOffset++ } if (negateOffset) this.pattern = pattern.substr(negateOffset) @@ -223,21 +224,22 @@ Minimatch.prototype.braceExpand = braceExpand function braceExpand (pattern, options) { if (!options) { - if (this instanceof Minimatch) + if (this instanceof Minimatch) { options = this.options - else + } else { options = {} + } } - pattern = typeof pattern === "undefined" + pattern = typeof pattern === 'undefined' ? this.pattern : pattern - if (typeof pattern === "undefined") { - throw new Error("undefined pattern") + if (typeof pattern === 'undefined') { + throw new Error('undefined pattern') } if (options.nobrace || - !pattern.match(/\{.*\}/)) { + !pattern.match(/\{.*\}/)) { // shortcut. no need to expand. return [pattern] } @@ -262,87 +264,86 @@ function parse (pattern, isSub) { var options = this.options // shortcuts - if (!options.noglobstar && pattern === "**") return GLOBSTAR - if (pattern === "") return "" - - var re = "" - , hasMagic = !!options.nocase - , escaping = false - // ? => one single character - , patternListStack = [] - , plType - , stateChar - , inClass = false - , reClassStart = -1 - , classStart = -1 - // . and .. never match anything that doesn't start with ., - // even when options.dot is set. - , patternStart = pattern.charAt(0) === "." ? "" // anything - // not (start or / followed by . or .. followed by / or end) - : options.dot ? "(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))" - : "(?!\\.)" - , self = this + if (!options.noglobstar && pattern === '**') return GLOBSTAR + if (pattern === '') return '' + + var re = '' + var hasMagic = !!options.nocase + var escaping = false + // ? => one single character + var patternListStack = [] + var plType + var stateChar + var inClass = false + var reClassStart = -1 + var classStart = -1 + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + var patternStart = pattern.charAt(0) === '.' ? '' // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' + : '(?!\\.)' + var self = this function clearStateChar () { if (stateChar) { // we had some state-tracking character // that wasn't consumed by this pass. switch (stateChar) { - case "*": + case '*': re += star hasMagic = true - break - case "?": + break + case '?': re += qmark hasMagic = true - break + break default: - re += "\\"+stateChar - break + re += '\\' + stateChar + break } self.debug('clearStateChar %j %j', stateChar, re) stateChar = false } } - for ( var i = 0, len = pattern.length, c - ; (i < len) && (c = pattern.charAt(i)) - ; i ++ ) { - - this.debug("%s\t%s %s %j", pattern, i, re, c) + for (var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i++) { + this.debug('%s\t%s %s %j', pattern, i, re, c) // skip over any that are escaped. if (escaping && reSpecials[c]) { - re += "\\" + c + re += '\\' + c escaping = false continue } - SWITCH: switch (c) { - case "/": + switch (c) { + case '/': // completely not allowed, even escaped. // Should already be path-split by now. return false - case "\\": + case '\\': clearStateChar() escaping = true - continue + continue // the various stateChar values // for the "extglob" stuff. - case "?": - case "*": - case "+": - case "@": - case "!": - this.debug("%s\t%s %s %j <-- stateChar", pattern, i, re, c) + case '?': + case '*': + case '+': + case '@': + case '!': + this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) // all of those are literals inside a class, except that // the glob [!a] means [^a] in regexp if (inClass) { this.debug(' in class') - if (c === "!" && i === classStart + 1) c = "^" + if (c === '!' && i === classStart + 1) c = '^' re += c continue } @@ -357,70 +358,70 @@ function parse (pattern, isSub) { // just clear the statechar *now*, rather than even diving into // the patternList stuff. if (options.noext) clearStateChar() - continue + continue - case "(": + case '(': if (inClass) { - re += "(" + re += '(' continue } if (!stateChar) { - re += "\\(" + re += '\\(' continue } plType = stateChar - patternListStack.push({ type: plType - , start: i - 1 - , reStart: re.length }) + patternListStack.push({ type: plType, start: i - 1, reStart: re.length }) // negation is (?:(?!js)[^/]*) - re += stateChar === "!" ? "(?:(?!" : "(?:" + re += stateChar === '!' ? '(?:(?!' : '(?:' this.debug('plType %j %j', stateChar, re) stateChar = false - continue + continue - case ")": + case ')': if (inClass || !patternListStack.length) { - re += "\\)" + re += '\\)' continue } clearStateChar() hasMagic = true - re += ")" + re += ')' plType = patternListStack.pop().type // negation is (?:(?!js)[^/]*) // The others are (?:) switch (plType) { - case "!": - re += "[^/]*?)" + case '!': + re += '[^/]*?)' break - case "?": - case "+": - case "*": re += plType - case "@": break // the default anyway + case '?': + case '+': + case '*': + re += plType + break + case '@': break // the default anyway } - continue + continue - case "|": + case '|': if (inClass || !patternListStack.length || escaping) { - re += "\\|" + re += '\\|' escaping = false continue } clearStateChar() - re += "|" - continue + re += '|' + continue // these are mostly the same in regexp and glob - case "[": + case '[': // swallow any state-tracking char before the [ clearStateChar() if (inClass) { - re += "\\" + c + re += '\\' + c continue } @@ -428,15 +429,15 @@ function parse (pattern, isSub) { classStart = i reClassStart = re.length re += c - continue + continue - case "]": + case ']': // a right bracket shall lose its special // meaning and represent itself in // a bracket expression if it occurs // first in the list. -- POSIX.2 2.8.3.2 if (i === classStart + 1 || !inClass) { - re += "\\" + c + re += '\\' + c escaping = false continue } @@ -453,11 +454,11 @@ function parse (pattern, isSub) { // to do safely. For now, this is safe and works. var cs = pattern.substring(classStart + 1, i) try { - new RegExp('[' + cs + ']') + RegExp('[' + cs + ']') } catch (er) { // not a valid class! var sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + "\\[" + sp[0] + '\\]' + re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' hasMagic = hasMagic || sp[1] inClass = false continue @@ -468,7 +469,7 @@ function parse (pattern, isSub) { hasMagic = true inClass = false re += c - continue + continue default: // swallow any state char that wasn't consumed @@ -478,8 +479,8 @@ function parse (pattern, isSub) { // no need escaping = false } else if (reSpecials[c] - && !(c === "^" && inClass)) { - re += "\\" + && !(c === '^' && inClass)) { + re += '\\' } re += c @@ -487,7 +488,6 @@ function parse (pattern, isSub) { } // switch } // for - // handle the case where we left a class open. // "[abc" is valid, equivalent to "\[abc" if (inClass) { @@ -495,9 +495,9 @@ function parse (pattern, isSub) { // this is a huge pita. We now have to re-walk // the contents of the would-be class to re-translate // any characters that were passed through as-is - var cs = pattern.substr(classStart + 1) - , sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + "\\[" + sp[0] + cs = pattern.substr(classStart + 1) + sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] hasMagic = hasMagic || sp[1] } @@ -507,14 +507,13 @@ function parse (pattern, isSub) { // and escape any | chars that were passed through as-is for the regexp. // Go through and escape them, taking care not to double-escape any // | chars that were already escaped. - var pl - while (pl = patternListStack.pop()) { + for (var pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { var tail = re.slice(pl.reStart + 3) // maybe some even number of \, then maybe 1 \, followed by a | tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { if (!$2) { // the | isn't already escaped, so escape it. - $2 = "\\" + $2 = '\\' } // need to escape all those slashes *again*, without escaping the @@ -523,46 +522,44 @@ function parse (pattern, isSub) { // it exactly after itself. That's why this trick works. // // I am sorry that you have to see this. - return $1 + $1 + $2 + "|" + return $1 + $1 + $2 + '|' }) - this.debug("tail=%j\n %s", tail, tail) - var t = pl.type === "*" ? star - : pl.type === "?" ? qmark - : "\\" + pl.type + this.debug('tail=%j\n %s', tail, tail) + var t = pl.type === '*' ? star + : pl.type === '?' ? qmark + : '\\' + pl.type hasMagic = true - re = re.slice(0, pl.reStart) - + t + "\\(" - + tail + re = re.slice(0, pl.reStart) + t + '\\(' + tail } // handle trailing things that only matter at the very end. clearStateChar() if (escaping) { // trailing \\ - re += "\\\\" + re += '\\\\' } // only need to apply the nodot start if the re starts with // something that could conceivably capture a dot var addPatternStart = false switch (re.charAt(0)) { - case ".": - case "[": - case "(": addPatternStart = true + case '.': + case '[': + case '(': addPatternStart = true } // if the re is not "" at this point, then we need to make sure // it doesn't match against an empty path part. // Otherwise a/* will match a/, which it should not. - if (re !== "" && hasMagic) re = "(?=.)" + re + if (re !== '' && hasMagic) re = '(?=.)' + re if (addPatternStart) re = patternStart + re // parsing just a piece of a larger pattern. if (isSub === SUBPARSE) { - return [ re, hasMagic ] + return [re, hasMagic] } // skip the regexp for non-magical patterns @@ -572,8 +569,8 @@ function parse (pattern, isSub) { return globUnescape(pattern) } - var flags = options.nocase ? "i" : "" - , regExp = new RegExp("^" + re + "$", flags) + var flags = options.nocase ? 'i' : '' + var regExp = new RegExp('^' + re + '$', flags) regExp._glob = pattern regExp._src = re @@ -597,34 +594,38 @@ function makeRe () { // when you just want to work with a regex. var set = this.set - if (!set.length) return this.regexp = false + if (!set.length) { + this.regexp = false + return this.regexp + } var options = this.options var twoStar = options.noglobstar ? star - : options.dot ? twoStarDot - : twoStarNoDot - , flags = options.nocase ? "i" : "" + : options.dot ? twoStarDot + : twoStarNoDot + var flags = options.nocase ? 'i' : '' var re = set.map(function (pattern) { return pattern.map(function (p) { return (p === GLOBSTAR) ? twoStar - : (typeof p === "string") ? regExpEscape(p) - : p._src - }).join("\\\/") - }).join("|") + : (typeof p === 'string') ? regExpEscape(p) + : p._src + }).join('\\\/') + }).join('|') // must match entire pattern // ending in a * or ** will make it less strict. - re = "^(?:" + re + ")$" + re = '^(?:' + re + ')$' // can match anything, as long as it's not this. - if (this.negate) re = "^(?!" + re + ").*$" + if (this.negate) re = '^(?!' + re + ').*$' try { - return this.regexp = new RegExp(re, flags) + this.regexp = new RegExp(re, flags) } catch (ex) { - return this.regexp = false + this.regexp = false } + return this.regexp } minimatch.match = function (list, pattern, options) { @@ -641,23 +642,24 @@ minimatch.match = function (list, pattern, options) { Minimatch.prototype.match = match function match (f, partial) { - this.debug("match", f, this.pattern) + this.debug('match', f, this.pattern) // short-circuit in the case of busted things. // comments, etc. if (this.comment) return false - if (this.empty) return f === "" + if (this.empty) return f === '' - if (f === "/" && partial) return true + if (f === '/' && partial) return true var options = this.options // windows: need to use /, not \ - if (isWindows) - f = f.split("\\").join("/") + if (path.sep !== '/') { + f = f.split(path.sep).join('/') + } // treat the test path as a set of pathparts. f = f.split(slashSplit) - this.debug(this.pattern, "split", f) + this.debug(this.pattern, 'split', f) // just ONE of the pattern sets in this.set needs to match // in order for it to be valid. If negating, then just one @@ -665,17 +667,19 @@ function match (f, partial) { // Either way, return on the first hit. var set = this.set - this.debug(this.pattern, "set", set) + this.debug(this.pattern, 'set', set) // Find the basename of the path by looking for the last non-empty segment - var filename; - for (var i = f.length - 1; i >= 0; i--) { + var filename + var i + for (i = f.length - 1; i >= 0; i--) { filename = f[i] if (filename) break } - for (var i = 0, l = set.length; i < l; i ++) { - var pattern = set[i], file = f + for (i = 0; i < set.length; i++) { + var pattern = set[i] + var file = f if (options.matchBase && pattern.length === 1) { file = [filename] } @@ -700,23 +704,20 @@ function match (f, partial) { Minimatch.prototype.matchOne = function (file, pattern, partial) { var options = this.options - this.debug("matchOne", - { "this": this - , file: file - , pattern: pattern }) + this.debug('matchOne', + { 'this': this, file: file, pattern: pattern }) - this.debug("matchOne", file.length, pattern.length) + this.debug('matchOne', file.length, pattern.length) - for ( var fi = 0 - , pi = 0 - , fl = file.length - , pl = pattern.length + for (var fi = 0, + pi = 0, + fl = file.length, + pl = pattern.length ; (fi < fl) && (pi < pl) - ; fi ++, pi ++ ) { - - this.debug("matchOne loop") + ; fi++, pi++) { + this.debug('matchOne loop') var p = pattern[pi] - , f = file[fi] + var f = file[fi] this.debug(pattern, p, f) @@ -750,7 +751,7 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) { // - matchOne(z/c, c) -> no // - matchOne(c, c) yes, hit var fr = fi - , pr = pi + 1 + var pr = pi + 1 if (pr === pl) { this.debug('** at the end') // a ** at the end will just swallow the rest. @@ -759,19 +760,18 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) { // options.dot is set. // . and .. are *never* matched by **, for explosively // exponential reasons. - for ( ; fi < fl; fi ++) { - if (file[fi] === "." || file[fi] === ".." || - (!options.dot && file[fi].charAt(0) === ".")) return false + for (; fi < fl; fi++) { + if (file[fi] === '.' || file[fi] === '..' || + (!options.dot && file[fi].charAt(0) === '.')) return false } return true } // ok, let's see if we can swallow whatever we can. - WHILE: while (fr < fl) { + while (fr < fl) { var swallowee = file[fr] - this.debug('\nglobstar while', - file, fr, pattern, pr, swallowee) + this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) // XXX remove this slice. Just pass the start index. if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { @@ -781,23 +781,24 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) { } else { // can't swallow "." or ".." ever. // can only swallow ".foo" when explicitly asked. - if (swallowee === "." || swallowee === ".." || - (!options.dot && swallowee.charAt(0) === ".")) { - this.debug("dot detected!", file, fr, pattern, pr) - break WHILE + if (swallowee === '.' || swallowee === '..' || + (!options.dot && swallowee.charAt(0) === '.')) { + this.debug('dot detected!', file, fr, pattern, pr) + break } // ** swallows a segment, and continue. this.debug('globstar swallow a segment, and continue') - fr ++ + fr++ } } + // no match was found. // However, in partial mode, we can't say this is necessarily over. // If there's more *pattern* left, then if (partial) { // ran out of file - this.debug("\n>>> no match, partial?", file, fr, pattern, pr) + this.debug('\n>>> no match, partial?', file, fr, pattern, pr) if (fr === fl) return true } return false @@ -807,16 +808,16 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) { // non-magic patterns just have to match exactly // patterns with magic have been turned into regexps. var hit - if (typeof p === "string") { + if (typeof p === 'string') { if (options.nocase) { hit = f.toLowerCase() === p.toLowerCase() } else { hit = f === p } - this.debug("string match", p, f, hit) + this.debug('string match', p, f, hit) } else { hit = f.match(p) - this.debug("pattern match", p, f, hit) + this.debug('pattern match', p, f, hit) } if (!hit) return false @@ -848,21 +849,19 @@ Minimatch.prototype.matchOne = function (file, pattern, partial) { // this is only acceptable if we're on the very last // empty segment of a file with a trailing slash. // a/* should match a/b/ - var emptyFileEnd = (fi === fl - 1) && (file[fi] === "") + var emptyFileEnd = (fi === fl - 1) && (file[fi] === '') return emptyFileEnd } // should be unreachable. - throw new Error("wtf?") + throw new Error('wtf?') } - // replace stuff like \* with * function globUnescape (s) { - return s.replace(/\\(.)/g, "$1") + return s.replace(/\\(.)/g, '$1') } - function regExpEscape (s) { - return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') } diff --git a/deps/npm/node_modules/minimatch/package.json b/deps/npm/node_modules/minimatch/package.json index 4d37a83ebfc..0b23c287d51 100644 --- a/deps/npm/node_modules/minimatch/package.json +++ b/deps/npm/node_modules/minimatch/package.json @@ -6,13 +6,14 @@ }, "name": "minimatch", "description": "a glob matcher in javascript", - "version": "2.0.4", + "version": "2.0.7", "repository": { "type": "git", "url": "git://github.com/isaacs/minimatch.git" }, "main": "minimatch.js", "scripts": { + "pretest": "standard minimatch.js test/*.js", "test": "tap test/*.js", "prepublish": "browserify -o browser.js -e minimatch.js --bare" }, @@ -24,6 +25,7 @@ }, "devDependencies": { "browserify": "^9.0.3", + "standard": "^3.7.2", "tap": "" }, "license": { @@ -34,19 +36,23 @@ "minimatch.js", "browser.js" ], - "gitHead": "c75d17c23df3b6050338ee654a58490255b36ebc", + "gitHead": "4bd6dc22c248c7ea07cc49d63181fe6f6aafae9c", "bugs": { "url": "https://github.com/isaacs/minimatch/issues" }, "homepage": "https://github.com/isaacs/minimatch", - "_id": "minimatch@2.0.4", - "_shasum": "83bea115803e7a097a78022427287edb762fafed", - "_from": "minimatch@>=2.0.4 <2.1.0", - "_npmVersion": "2.7.1", - "_nodeVersion": "1.4.2", + "_id": "minimatch@2.0.7", + "_shasum": "d23652ab10e663e7d914602e920e21f9f66492be", + "_from": "minimatch@>=2.0.7 <2.1.0", + "_npmVersion": "2.7.6", + "_nodeVersion": "1.7.1", "_npmUser": { "name": "isaacs", - "email": "i@izs.me" + "email": "isaacs@npmjs.com" + }, + "dist": { + "shasum": "d23652ab10e663e7d914602e920e21f9f66492be", + "tarball": "http://registry.npmjs.org/minimatch/-/minimatch-2.0.7.tgz" }, "maintainers": [ { @@ -54,10 +60,7 @@ "email": "i@izs.me" } ], - "dist": { - "shasum": "83bea115803e7a097a78022427287edb762fafed", - "tarball": "http://registry.npmjs.org/minimatch/-/minimatch-2.0.4.tgz" - }, - "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.4.tgz", + "directories": {}, + "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.7.tgz", "readme": "ERROR: No README data found!" } diff --git a/deps/npm/node_modules/npm-registry-client/README.md b/deps/npm/node_modules/npm-registry-client/README.md index 702ae2ea1d3..fb3226cf401 100644 --- a/deps/npm/node_modules/npm-registry-client/README.md +++ b/deps/npm/node_modules/npm-registry-client/README.md @@ -9,7 +9,7 @@ It handles all the caching and HTTP calls. ```javascript var RegClient = require('npm-registry-client') var client = new RegClient(config) -var uri = "npm://registry.npmjs.org/npm" +var uri = "https://registry.npmjs.org/npm" var params = {timeout: 1000} client.get(uri, params, function (error, data, raw, res) { diff --git a/deps/npm/node_modules/npm-registry-client/lib/request.js b/deps/npm/node_modules/npm-registry-client/lib/request.js index 963eabaec05..168a9d160af 100644 --- a/deps/npm/node_modules/npm-registry-client/lib/request.js +++ b/deps/npm/node_modules/npm-registry-client/lib/request.js @@ -232,7 +232,7 @@ function requestDone (method, where, cb) { var name if (!w.match(/^-/)) { w = w.split('/') - name = w[w.indexOf('_rewrite') + 1] + name = decodeURIComponent(w[w.indexOf('_rewrite') + 1]) } if (!parsed.error) { @@ -245,7 +245,7 @@ function requestDone (method, where, cb) { er = new Error('404 Not Found: ' + name) } else { er = new Error( - parsed.error + ' ' + (parsed.reason || '') + ': ' + w + parsed.error + ' ' + (parsed.reason || '') + ': ' + (name || w) ) } if (name) er.pkgid = name diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json index 466dfdfe013..b67333380c2 100644 --- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json +++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json @@ -29,25 +29,9 @@ }, "readme": "# core-util-is\n\nThe `util.is*` functions introduced in Node v0.12.\n", "readmeFilename": "README.md", - "homepage": "https://github.com/isaacs/core-util-is", + "homepage": "https://github.com/isaacs/core-util-is#readme", "_id": "core-util-is@1.0.1", - "dist": { - "shasum": "6b07085aef9a3ccac6ee53bf9d3df0c1521a5538", - "tarball": "http://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" - }, - "_from": "core-util-is@>=1.0.0 <1.1.0", - "_npmVersion": "1.3.23", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, "_shasum": "6b07085aef9a3ccac6ee53bf9d3df0c1521a5538", - "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", + "_from": "core-util-is@>=1.0.0 <1.1.0" } diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/package.json index 19228ab6fdc..fb1eb3786d8 100644 --- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/package.json +++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/package.json @@ -26,28 +26,13 @@ "url": "http://juliangruber.com" }, "license": "MIT", - "_id": "isarray@0.0.1", - "dist": { - "shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "tarball": "http://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "_from": "isarray@0.0.1", - "_npmVersion": "1.2.18", - "_npmUser": { - "name": "juliangruber", - "email": "julian@juliangruber.com" - }, - "maintainers": [ - { - "name": "juliangruber", - "email": "julian@juliangruber.com" - } - ], - "directories": {}, - "_shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "readme": "\n# isarray\n\n`Array#isArray` for older browsers.\n\n## Usage\n\n```js\nvar isArray = require('isarray');\n\nconsole.log(isArray([])); // => true\nconsole.log(isArray({})); // => false\n```\n\n## Installation\n\nWith [npm](http://npmjs.org) do\n\n```bash\n$ npm install isarray\n```\n\nThen bundle for the browser with\n[browserify](https://github.com/substack/browserify).\n\nWith [component](http://component.io) do\n\n```bash\n$ component install juliangruber/isarray\n```\n\n## License\n\n(MIT)\n\nCopyright (c) 2013 Julian Gruber <julian@juliangruber.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", + "readmeFilename": "README.md", "bugs": { "url": "https://github.com/juliangruber/isarray/issues" }, - "readme": "ERROR: No README data found!" + "_id": "isarray@0.0.1", + "_shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", + "_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "_from": "isarray@0.0.1" } diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json index 0364d54ba46..ee707023591 100644 --- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json +++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json @@ -22,33 +22,13 @@ "browserify" ], "license": "MIT", - "gitHead": "d46d4fd87cf1d06e031c23f1ba170ca7d4ade9a0", + "readme": "**string_decoder.js** (`require('string_decoder')`) from Node.js core\n\nCopyright Joyent, Inc. and other Node contributors. See LICENCE file for details.\n\nVersion numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.**\n\nThe *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version.", + "readmeFilename": "README.md", "bugs": { "url": "https://github.com/rvagg/string_decoder/issues" }, "_id": "string_decoder@0.10.31", "_shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94", - "_from": "string_decoder@>=0.10.0 <0.11.0", - "_npmVersion": "1.4.23", - "_npmUser": { - "name": "rvagg", - "email": "rod@vagg.org" - }, - "maintainers": [ - { - "name": "substack", - "email": "mail@substack.net" - }, - { - "name": "rvagg", - "email": "rod@vagg.org" - } - ], - "dist": { - "shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94", - "tarball": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "directories": {}, "_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "readme": "ERROR: No README data found!" + "_from": "string_decoder@>=0.10.0 <0.11.0" } diff --git a/deps/npm/node_modules/npm-registry-client/package.json b/deps/npm/node_modules/npm-registry-client/package.json index c46ed80ed29..31a644ccb5e 100644 --- a/deps/npm/node_modules/npm-registry-client/package.json +++ b/deps/npm/node_modules/npm-registry-client/package.json @@ -6,7 +6,7 @@ }, "name": "npm-registry-client", "description": "Client for the npm registry", - "version": "6.3.2", + "version": "6.3.3", "repository": { "url": "git://github.com/isaacs/npm-registry-client.git" }, @@ -39,14 +39,14 @@ "npmlog": "" }, "license": "ISC", - "readme": "# npm-registry-client\n\nThe code that npm uses to talk to the registry.\n\nIt handles all the caching and HTTP calls.\n\n## Usage\n\n```javascript\nvar RegClient = require('npm-registry-client')\nvar client = new RegClient(config)\nvar uri = \"npm://registry.npmjs.org/npm\"\nvar params = {timeout: 1000}\n\nclient.get(uri, params, function (error, data, raw, res) {\n // error is an error if there was a problem.\n // data is the parsed data object\n // raw is the json string\n // res is the response from couch\n})\n```\n\n# Registry URLs\n\nThe registry calls take either a full URL pointing to a resource in the\nregistry, or a base URL for the registry as a whole (including the registry\npath – but be sure to terminate the path with `/`). `http` and `https` URLs are\nthe only ones supported.\n\n## Using the client\n\nEvery call to the client follows the same pattern:\n\n* `uri` {String} The *fully-qualified* URI of the registry API method being\n invoked.\n* `params` {Object} Per-request parameters.\n* `callback` {Function} Callback to be invoked when the call is complete.\n\n### Credentials\n\nMany requests to the registry can by authenticated, and require credentials\nfor authorization. These credentials always look the same:\n\n* `username` {String}\n* `password` {String}\n* `email` {String}\n* `alwaysAuth` {Boolean} Whether calls to the target registry are always\n authed.\n\n**or**\n\n* `token` {String}\n* `alwaysAuth` {Boolean} Whether calls to the target registry are always\n authed.\n\n## API\n\n### client.access(uri, params, cb)\n\n* `uri` {String} Registry URL for the package's access API endpoint.\n Looks like `/-/package//access`.\n* `params` {Object} Object containing per-request properties.\n * `access` {String} New access level for the package. Can be either\n `public` or `restricted`. Registry will raise an error if trying\n to change the access level of an unscoped package.\n * `auth` {Credentials}\n\nSet the access level for scoped packages. For now, there are only two\naccess levels: \"public\" and \"restricted\".\n\n### client.adduser(uri, params, cb)\n\n* `uri` {String} Base registry URL.\n* `params` {Object} Object containing per-request properties.\n * `auth` {Credentials}\n* `cb` {Function}\n * `error` {Error | null}\n * `data` {Object} the parsed data object\n * `raw` {String} the json\n * `res` {Response Object} response from couch\n\nAdd a user account to the registry, or verify the credentials.\n\n### client.deprecate(uri, params, cb)\n\n* `uri` {String} Full registry URI for the deprecated package.\n* `params` {Object} Object containing per-request properties.\n * `version` {String} Semver version range.\n * `message` {String} The message to use as a deprecation warning.\n * `auth` {Credentials}\n* `cb` {Function}\n\nDeprecate a version of a package in the registry.\n\n### client.distTags.fetch(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `auth` {Credentials}\n* `cb` {Function}\n\nFetch all of the `dist-tags` for the named package.\n\n### client.distTags.add(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTag` {String} Name of the new `dist-tag`.\n * `version` {String} Exact version to be mapped to the `dist-tag`.\n * `auth` {Credentials}\n* `cb` {Function}\n\nAdd (or replace) a single dist-tag onto the named package.\n\n### client.distTags.set(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTags` {Object} Object containing a map from tag names to package\n versions.\n * `auth` {Credentials}\n* `cb` {Function}\n\nSet all of the `dist-tags` for the named package at once, creating any\n`dist-tags` that do not already exit. Any `dist-tags` not included in the\n`distTags` map will be removed.\n\n### client.distTags.update(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTags` {Object} Object containing a map from tag names to package\n versions.\n * `auth` {Credentials}\n* `cb` {Function}\n\nUpdate the values of multiple `dist-tags`, creating any `dist-tags` that do\nnot already exist. Any pre-existing `dist-tags` not included in the `distTags`\nmap will be left alone.\n\n### client.distTags.rm(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTag` {String} Name of the new `dist-tag`.\n * `auth` {Credentials}\n* `cb` {Function}\n\nRemove a single `dist-tag` from the named package.\n\n### client.get(uri, params, cb)\n\n* `uri` {String} The complete registry URI to fetch\n* `params` {Object} Object containing per-request properties.\n * `timeout` {Number} Duration before the request times out. Optional\n (default: never).\n * `follow` {Boolean} Follow 302/301 responses. Optional (default: true).\n * `staleOk` {Boolean} If there's cached data available, then return that to\n the callback quickly, and update the cache the background. Optional\n (default: false).\n * `auth` {Credentials} Optional.\n* `cb` {Function}\n\nFetches data from the registry via a GET request, saving it in the cache folder\nwith the ETag or the \"Last Modified\" timestamp.\n\n### client.publish(uri, params, cb)\n\n* `uri` {String} The registry URI for the package to publish.\n* `params` {Object} Object containing per-request properties.\n * `metadata` {Object} Package metadata.\n * `access` {String} Access for the package. Can be `public` or `restricted` (no default).\n * `body` {Stream} Stream of the package body / tarball.\n * `auth` {Credentials}\n* `cb` {Function}\n\nPublish a package to the registry.\n\nNote that this does not create the tarball from a folder.\n\n### client.star(uri, params, cb)\n\n* `uri` {String} The complete registry URI for the package to star.\n* `params` {Object} Object containing per-request properties.\n * `starred` {Boolean} True to star the package, false to unstar it. Optional\n (default: false).\n * `auth` {Credentials}\n* `cb` {Function}\n\nStar or unstar a package.\n\nNote that the user does not have to be the package owner to star or unstar a\npackage, though other writes do require that the user be the package owner.\n\n### client.stars(uri, params, cb)\n\n* `uri` {String} The base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `username` {String} Name of user to fetch starred packages for. Optional\n (default: user in `auth`).\n * `auth` {Credentials} Optional (required if `username` is omitted).\n* `cb` {Function}\n\nView your own or another user's starred packages.\n\n### client.tag(uri, params, cb)\n\n* `uri` {String} The complete registry URI to tag\n* `params` {Object} Object containing per-request properties.\n * `version` {String} Version to tag.\n * `tag` {String} Tag name to apply.\n * `auth` {Credentials}\n* `cb` {Function}\n\nMark a version in the `dist-tags` hash, so that `pkg@tag` will fetch the\nspecified version.\n\n### client.unpublish(uri, params, cb)\n\n* `uri` {String} The complete registry URI of the package to unpublish.\n* `params` {Object} Object containing per-request properties.\n * `version` {String} version to unpublish. Optional – omit to unpublish all\n versions.\n * `auth` {Credentials}\n* `cb` {Function}\n\nRemove a version of a package (or all versions) from the registry. When the\nlast version us unpublished, the entire document is removed from the database.\n\n### client.whoami(uri, params, cb)\n\n* `uri` {String} The base registry for the URI.\n* `params` {Object} Object containing per-request properties.\n * `auth` {Credentials}\n* `cb` {Function}\n\nSimple call to see who the registry thinks you are. Especially useful with\ntoken-based auth.\n\n\n## PLUMBING\n\nThe below are primarily intended for use by the rest of the API, or by the npm\ncaching logic directly.\n\n### client.request(uri, params, cb)\n\n* `uri` {String} URI pointing to the resource to request.\n* `params` {Object} Object containing per-request properties.\n * `method` {String} HTTP method. Optional (default: \"GET\").\n * `body` {Stream | Buffer | String | Object} The request body. Objects\n that are not Buffers or Streams are encoded as JSON. Optional – body\n only used for write operations.\n * `etag` {String} The cached ETag. Optional.\n * `lastModified` {String} The cached Last-Modified timestamp. Optional.\n * `follow` {Boolean} Follow 302/301 responses. Optional (default: true).\n * `auth` {Credentials} Optional.\n* `cb` {Function}\n * `error` {Error | null}\n * `data` {Object} the parsed data object\n * `raw` {String} the json\n * `res` {Response Object} response from couch\n\nMake a generic request to the registry. All the other methods are wrappers\naround `client.request`.\n\n### client.fetch(uri, params, cb)\n\n* `uri` {String} The complete registry URI to upload to\n* `params` {Object} Object containing per-request properties.\n * `headers` {Stream} HTTP headers to be included with the request. Optional.\n * `auth` {Credentials} Optional.\n* `cb` {Function}\n\nFetch a package from a URL, with auth set appropriately if included. Used to\ncache remote tarballs as well as request package tarballs from the registry.\n\n# Configuration\n\nThe client uses its own configuration, which is just passed in as a simple\nnested object. The following are the supported values (with their defaults, if\nany):\n\n* `proxy.http` {URL} The URL to proxy HTTP requests through.\n* `proxy.https` {URL} The URL to proxy HTTPS requests through. Defaults to be\n the same as `proxy.http` if unset.\n* `proxy.localAddress` {IP} The local address to use on multi-homed systems.\n* `ssl.ca` {String} Certificate signing authority certificates to trust.\n* `ssl.certificate` {String} Client certificate (PEM encoded). Enable access\n to servers that require client certificates.\n* `ssl.key` {String} Private key (PEM encoded) for client certificate.\n* `ssl.strict` {Boolean} Whether or not to be strict with SSL certificates.\n Default = `true`\n* `retry.count` {Number} Number of times to retry on GET failures. Default = 2.\n* `retry.factor` {Number} `factor` setting for `node-retry`. Default = 10.\n* `retry.minTimeout` {Number} `minTimeout` setting for `node-retry`.\n Default = 10000 (10 seconds)\n* `retry.maxTimeout` {Number} `maxTimeout` setting for `node-retry`.\n Default = 60000 (60 seconds)\n* `userAgent` {String} User agent header to send. Default =\n `\"node/{process.version}\"`\n* `log` {Object} The logger to use. Defaults to `require(\"npmlog\")` if\n that works, otherwise logs are disabled.\n* `defaultTag` {String} The default tag to use when publishing new packages.\n Default = `\"latest\"`\n* `couchToken` {Object} A token for use with\n [couch-login](https://npmjs.org/package/couch-login).\n* `sessionToken` {string} A random identifier for this set of client requests.\n Default = 8 random hexadecimal bytes.\n", + "readme": "# npm-registry-client\n\nThe code that npm uses to talk to the registry.\n\nIt handles all the caching and HTTP calls.\n\n## Usage\n\n```javascript\nvar RegClient = require('npm-registry-client')\nvar client = new RegClient(config)\nvar uri = \"https://registry.npmjs.org/npm\"\nvar params = {timeout: 1000}\n\nclient.get(uri, params, function (error, data, raw, res) {\n // error is an error if there was a problem.\n // data is the parsed data object\n // raw is the json string\n // res is the response from couch\n})\n```\n\n# Registry URLs\n\nThe registry calls take either a full URL pointing to a resource in the\nregistry, or a base URL for the registry as a whole (including the registry\npath – but be sure to terminate the path with `/`). `http` and `https` URLs are\nthe only ones supported.\n\n## Using the client\n\nEvery call to the client follows the same pattern:\n\n* `uri` {String} The *fully-qualified* URI of the registry API method being\n invoked.\n* `params` {Object} Per-request parameters.\n* `callback` {Function} Callback to be invoked when the call is complete.\n\n### Credentials\n\nMany requests to the registry can by authenticated, and require credentials\nfor authorization. These credentials always look the same:\n\n* `username` {String}\n* `password` {String}\n* `email` {String}\n* `alwaysAuth` {Boolean} Whether calls to the target registry are always\n authed.\n\n**or**\n\n* `token` {String}\n* `alwaysAuth` {Boolean} Whether calls to the target registry are always\n authed.\n\n## API\n\n### client.access(uri, params, cb)\n\n* `uri` {String} Registry URL for the package's access API endpoint.\n Looks like `/-/package//access`.\n* `params` {Object} Object containing per-request properties.\n * `access` {String} New access level for the package. Can be either\n `public` or `restricted`. Registry will raise an error if trying\n to change the access level of an unscoped package.\n * `auth` {Credentials}\n\nSet the access level for scoped packages. For now, there are only two\naccess levels: \"public\" and \"restricted\".\n\n### client.adduser(uri, params, cb)\n\n* `uri` {String} Base registry URL.\n* `params` {Object} Object containing per-request properties.\n * `auth` {Credentials}\n* `cb` {Function}\n * `error` {Error | null}\n * `data` {Object} the parsed data object\n * `raw` {String} the json\n * `res` {Response Object} response from couch\n\nAdd a user account to the registry, or verify the credentials.\n\n### client.deprecate(uri, params, cb)\n\n* `uri` {String} Full registry URI for the deprecated package.\n* `params` {Object} Object containing per-request properties.\n * `version` {String} Semver version range.\n * `message` {String} The message to use as a deprecation warning.\n * `auth` {Credentials}\n* `cb` {Function}\n\nDeprecate a version of a package in the registry.\n\n### client.distTags.fetch(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `auth` {Credentials}\n* `cb` {Function}\n\nFetch all of the `dist-tags` for the named package.\n\n### client.distTags.add(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTag` {String} Name of the new `dist-tag`.\n * `version` {String} Exact version to be mapped to the `dist-tag`.\n * `auth` {Credentials}\n* `cb` {Function}\n\nAdd (or replace) a single dist-tag onto the named package.\n\n### client.distTags.set(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTags` {Object} Object containing a map from tag names to package\n versions.\n * `auth` {Credentials}\n* `cb` {Function}\n\nSet all of the `dist-tags` for the named package at once, creating any\n`dist-tags` that do not already exit. Any `dist-tags` not included in the\n`distTags` map will be removed.\n\n### client.distTags.update(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTags` {Object} Object containing a map from tag names to package\n versions.\n * `auth` {Credentials}\n* `cb` {Function}\n\nUpdate the values of multiple `dist-tags`, creating any `dist-tags` that do\nnot already exist. Any pre-existing `dist-tags` not included in the `distTags`\nmap will be left alone.\n\n### client.distTags.rm(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTag` {String} Name of the new `dist-tag`.\n * `auth` {Credentials}\n* `cb` {Function}\n\nRemove a single `dist-tag` from the named package.\n\n### client.get(uri, params, cb)\n\n* `uri` {String} The complete registry URI to fetch\n* `params` {Object} Object containing per-request properties.\n * `timeout` {Number} Duration before the request times out. Optional\n (default: never).\n * `follow` {Boolean} Follow 302/301 responses. Optional (default: true).\n * `staleOk` {Boolean} If there's cached data available, then return that to\n the callback quickly, and update the cache the background. Optional\n (default: false).\n * `auth` {Credentials} Optional.\n* `cb` {Function}\n\nFetches data from the registry via a GET request, saving it in the cache folder\nwith the ETag or the \"Last Modified\" timestamp.\n\n### client.publish(uri, params, cb)\n\n* `uri` {String} The registry URI for the package to publish.\n* `params` {Object} Object containing per-request properties.\n * `metadata` {Object} Package metadata.\n * `access` {String} Access for the package. Can be `public` or `restricted` (no default).\n * `body` {Stream} Stream of the package body / tarball.\n * `auth` {Credentials}\n* `cb` {Function}\n\nPublish a package to the registry.\n\nNote that this does not create the tarball from a folder.\n\n### client.star(uri, params, cb)\n\n* `uri` {String} The complete registry URI for the package to star.\n* `params` {Object} Object containing per-request properties.\n * `starred` {Boolean} True to star the package, false to unstar it. Optional\n (default: false).\n * `auth` {Credentials}\n* `cb` {Function}\n\nStar or unstar a package.\n\nNote that the user does not have to be the package owner to star or unstar a\npackage, though other writes do require that the user be the package owner.\n\n### client.stars(uri, params, cb)\n\n* `uri` {String} The base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `username` {String} Name of user to fetch starred packages for. Optional\n (default: user in `auth`).\n * `auth` {Credentials} Optional (required if `username` is omitted).\n* `cb` {Function}\n\nView your own or another user's starred packages.\n\n### client.tag(uri, params, cb)\n\n* `uri` {String} The complete registry URI to tag\n* `params` {Object} Object containing per-request properties.\n * `version` {String} Version to tag.\n * `tag` {String} Tag name to apply.\n * `auth` {Credentials}\n* `cb` {Function}\n\nMark a version in the `dist-tags` hash, so that `pkg@tag` will fetch the\nspecified version.\n\n### client.unpublish(uri, params, cb)\n\n* `uri` {String} The complete registry URI of the package to unpublish.\n* `params` {Object} Object containing per-request properties.\n * `version` {String} version to unpublish. Optional – omit to unpublish all\n versions.\n * `auth` {Credentials}\n* `cb` {Function}\n\nRemove a version of a package (or all versions) from the registry. When the\nlast version us unpublished, the entire document is removed from the database.\n\n### client.whoami(uri, params, cb)\n\n* `uri` {String} The base registry for the URI.\n* `params` {Object} Object containing per-request properties.\n * `auth` {Credentials}\n* `cb` {Function}\n\nSimple call to see who the registry thinks you are. Especially useful with\ntoken-based auth.\n\n\n## PLUMBING\n\nThe below are primarily intended for use by the rest of the API, or by the npm\ncaching logic directly.\n\n### client.request(uri, params, cb)\n\n* `uri` {String} URI pointing to the resource to request.\n* `params` {Object} Object containing per-request properties.\n * `method` {String} HTTP method. Optional (default: \"GET\").\n * `body` {Stream | Buffer | String | Object} The request body. Objects\n that are not Buffers or Streams are encoded as JSON. Optional – body\n only used for write operations.\n * `etag` {String} The cached ETag. Optional.\n * `lastModified` {String} The cached Last-Modified timestamp. Optional.\n * `follow` {Boolean} Follow 302/301 responses. Optional (default: true).\n * `auth` {Credentials} Optional.\n* `cb` {Function}\n * `error` {Error | null}\n * `data` {Object} the parsed data object\n * `raw` {String} the json\n * `res` {Response Object} response from couch\n\nMake a generic request to the registry. All the other methods are wrappers\naround `client.request`.\n\n### client.fetch(uri, params, cb)\n\n* `uri` {String} The complete registry URI to upload to\n* `params` {Object} Object containing per-request properties.\n * `headers` {Stream} HTTP headers to be included with the request. Optional.\n * `auth` {Credentials} Optional.\n* `cb` {Function}\n\nFetch a package from a URL, with auth set appropriately if included. Used to\ncache remote tarballs as well as request package tarballs from the registry.\n\n# Configuration\n\nThe client uses its own configuration, which is just passed in as a simple\nnested object. The following are the supported values (with their defaults, if\nany):\n\n* `proxy.http` {URL} The URL to proxy HTTP requests through.\n* `proxy.https` {URL} The URL to proxy HTTPS requests through. Defaults to be\n the same as `proxy.http` if unset.\n* `proxy.localAddress` {IP} The local address to use on multi-homed systems.\n* `ssl.ca` {String} Certificate signing authority certificates to trust.\n* `ssl.certificate` {String} Client certificate (PEM encoded). Enable access\n to servers that require client certificates.\n* `ssl.key` {String} Private key (PEM encoded) for client certificate.\n* `ssl.strict` {Boolean} Whether or not to be strict with SSL certificates.\n Default = `true`\n* `retry.count` {Number} Number of times to retry on GET failures. Default = 2.\n* `retry.factor` {Number} `factor` setting for `node-retry`. Default = 10.\n* `retry.minTimeout` {Number} `minTimeout` setting for `node-retry`.\n Default = 10000 (10 seconds)\n* `retry.maxTimeout` {Number} `maxTimeout` setting for `node-retry`.\n Default = 60000 (60 seconds)\n* `userAgent` {String} User agent header to send. Default =\n `\"node/{process.version}\"`\n* `log` {Object} The logger to use. Defaults to `require(\"npmlog\")` if\n that works, otherwise logs are disabled.\n* `defaultTag` {String} The default tag to use when publishing new packages.\n Default = `\"latest\"`\n* `couchToken` {Object} A token for use with\n [couch-login](https://npmjs.org/package/couch-login).\n* `sessionToken` {string} A random identifier for this set of client requests.\n Default = 8 random hexadecimal bytes.\n", "readmeFilename": "README.md", - "gitHead": "dd4029904febd6e0c30371b2addad5715526cd68", + "gitHead": "bd0ab6fb27f614fca299bc9426dcfbea2fc83adc", "bugs": { "url": "https://github.com/isaacs/npm-registry-client/issues" }, "homepage": "https://github.com/isaacs/npm-registry-client#readme", - "_id": "npm-registry-client@6.3.2", - "_shasum": "a662a36c6eda56c184099631cf429ba69b73d65b", - "_from": "npm-registry-client@>=6.3.2 <6.4.0" + "_id": "npm-registry-client@6.3.3", + "_shasum": "fe9cc45b3b8404dfa888b99d7aff3964f3470fb0", + "_from": "npm-registry-client@6.3.3" } diff --git a/deps/npm/node_modules/npm-registry-client/test/request.js b/deps/npm/node_modules/npm-registry-client/test/request.js index 0024c9b215c..b3086b4729f 100644 --- a/deps/npm/node_modules/npm-registry-client/test/request.js +++ b/deps/npm/node_modules/npm-registry-client/test/request.js @@ -81,7 +81,7 @@ test('request call contract', function (t) { }) test('run request through its paces', function (t) { - t.plan(27) + t.plan(28) server.expect('/request-defaults', function (req, res) { t.equal(req.method, 'GET', 'uses GET by default') @@ -166,6 +166,13 @@ test('run request through its paces', function (t) { })) }) + server.expect('GET', '/@scoped%2Fpackage-failing', function (req, res) { + req.pipe(concat(function () { + res.statusCode = 402 + res.json({ error: 'payment required' }) + })) + }) + var defaults = {} client.request( common.registry + '/request-defaults', @@ -249,4 +256,8 @@ test('run request through its paces', function (t) { client.request(common.registry + '/body-error-object', defaults, function (er) { t.ifError(er, 'call worked') }) + + client.request(common.registry + '/@scoped%2Fpackage-failing', defaults, function (er) { + t.equals(er.message, 'payment required : @scoped/package-failing') + }) }) diff --git a/deps/npm/node_modules/rimraf/package.json b/deps/npm/node_modules/rimraf/package.json index 9f836e93040..7b28e7302ac 100644 --- a/deps/npm/node_modules/rimraf/package.json +++ b/deps/npm/node_modules/rimraf/package.json @@ -1,6 +1,6 @@ { "name": "rimraf", - "version": "2.3.2", + "version": "2.3.3", "main": "rimraf.js", "description": "A deep deletion module for node (like `rm -rf`)", "author": { @@ -31,19 +31,23 @@ "LICENSE", "README.md" ], - "gitHead": "9d5ab4a8b6986ec909af04f6d91315e98f5893e8", + "gitHead": "ad4efe8102a72c77bf2b13165ecc2229a9a68955", "bugs": { "url": "https://github.com/isaacs/rimraf/issues" }, "homepage": "https://github.com/isaacs/rimraf", - "_id": "rimraf@2.3.2", - "_shasum": "7304bd9275c401b89103b106b3531c1ef0c02fe9", - "_from": "rimraf@>=2.3.2 <2.4.0", - "_npmVersion": "2.7.0", - "_nodeVersion": "1.4.2", + "_id": "rimraf@2.3.3", + "_shasum": "d0073d8b3010611e8f3ad377b08e9a3c18b98f06", + "_from": "rimraf@>=2.3.3 <2.4.0", + "_npmVersion": "2.7.6", + "_nodeVersion": "1.7.1", "_npmUser": { "name": "isaacs", - "email": "i@izs.me" + "email": "isaacs@npmjs.com" + }, + "dist": { + "shasum": "d0073d8b3010611e8f3ad377b08e9a3c18b98f06", + "tarball": "http://registry.npmjs.org/rimraf/-/rimraf-2.3.3.tgz" }, "maintainers": [ { @@ -51,11 +55,6 @@ "email": "i@izs.me" } ], - "dist": { - "shasum": "7304bd9275c401b89103b106b3531c1ef0c02fe9", - "tarball": "http://registry.npmjs.org/rimraf/-/rimraf-2.3.2.tgz" - }, "directories": {}, - "_resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.3.2.tgz", - "readme": "ERROR: No README data found!" + "_resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.3.3.tgz" } diff --git a/deps/npm/node_modules/rimraf/rimraf.js b/deps/npm/node_modules/rimraf/rimraf.js index c189d5444dc..8d420d25165 100644 --- a/deps/npm/node_modules/rimraf/rimraf.js +++ b/deps/npm/node_modules/rimraf/rimraf.js @@ -42,13 +42,14 @@ function rimraf (p, options, cb) { cb = options options = {} } - assert(p) - assert(options) - assert(typeof cb === 'function') - defaults(options) + assert(p, 'rimraf: missing path') + assert.equal(typeof p, 'string', 'rimraf: path should be a string') + assert(options, 'rimraf: missing options') + assert.equal(typeof options, 'object', 'rimraf: options should be object') + assert.equal(typeof cb, 'function', 'rimraf: callback function required') - if (!cb) throw new Error("No callback passed to rimraf()") + defaults(options) var busyTries = 0 var errState = null @@ -254,8 +255,9 @@ function rimrafSync (p, options) { options = options || {} defaults(options) - assert(p) - assert(options) + assert(p, 'rimraf: missing path') + assert.equal(typeof p, 'string', 'rimraf: path should be a string') + assert(options, 'rimraf: missing options') var results diff --git a/deps/npm/package.json b/deps/npm/package.json index 5c70f6f8afd..304dbc0ff6e 100644 --- a/deps/npm/package.json +++ b/deps/npm/package.json @@ -1,5 +1,5 @@ { - "version": "2.8.4", + "version": "2.9.1", "name": "npm", "description": "a package manager for JavaScript", "keywords": [ @@ -19,7 +19,6 @@ "url": "https://github.com/npm/npm" }, "bugs": { - "email": "npm-@googlegroups.com", "url": "http://github.com/npm/npm/issues" }, "directories": { @@ -46,7 +45,7 @@ "columnify": "~1.5.1", "config-chain": "~1.1.8", "dezalgo": "~1.0.1", - "editor": "~0.1.0", + "editor": "~1.0.0", "fs-vacuum": "~1.2.5", "fs-write-stream-atomic": "~1.0.2", "fstream": "~1.0.4", @@ -59,10 +58,10 @@ "inflight": "~1.0.4", "inherits": "~2.0.1", "ini": "~1.3.3", - "init-package-json": "~1.4.1", + "init-package-json": "~1.4.2", "lockfile": "~1.0.0", - "lru-cache": "~2.6.1", - "minimatch": "~2.0.4", + "lru-cache": "~2.6.2", + "minimatch": "~2.0.7", "mkdirp": "~0.5.0", "node-gyp": "~1.0.3", "nopt": "~3.0.1", @@ -71,7 +70,7 @@ "npm-cache-filename": "~1.0.1", "npm-install-checks": "~1.0.5", "npm-package-arg": "~4.0.0", - "npm-registry-client": "~6.3.2", + "npm-registry-client": "~6.3.3", "npm-user-validate": "~0.1.1", "npmlog": "~1.2.0", "once": "~1.3.1", @@ -85,7 +84,7 @@ "realize-package-specifier": "~3.0.0", "request": "~2.55.0", "retry": "~0.6.1", - "rimraf": "~2.3.2", + "rimraf": "~2.3.3", "semver": "~4.3.3", "sha": "~1.3.0", "slide": "~1.1.6", @@ -169,9 +168,10 @@ "write-file-atomic" ], "devDependencies": { + "deep-equal": "~1.0.0", "marked": "~0.3.3", "marked-man": "~0.1.4", - "nock": "~1.6.0", + "nock": "~1.7.1", "npm-registry-couchapp": "~2.6.7", "npm-registry-mock": "~1.0.0", "require-inject": "~1.2.0", diff --git a/deps/npm/test/fixtures/jackfan.us.kg-BryanDonovan-dummy-npm-bar.git.tar.gz b/deps/npm/test/fixtures/jackfan.us.kg-BryanDonovan-dummy-npm-bar.git.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..fb27e17f4812fa2bc5bb5630e195df0fcc1c9d58 GIT binary patch literal 12585 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 CYO7cP literal 0 HcmV?d00001 diff --git a/deps/npm/test/fixtures/jackfan.us.kg-BryanDonovan-dummy-npm-foo.git.tar.gz b/deps/npm/test/fixtures/jackfan.us.kg-BryanDonovan-dummy-npm-foo.git.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..8e1abc6d05e704f29f8699e6e44e63e4e6a6f2dd GIT binary patch literal 12712 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 literal 0 HcmV?d00001 diff --git a/deps/npm/test/fixtures/jackfan.us.kg-BryanDonovan-npm-git-test.git.tar.gz b/deps/npm/test/fixtures/jackfan.us.kg-BryanDonovan-npm-git-test.git.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..7a4b9e813173126fa20aa514672041140f7b3174 GIT binary patch literal 9521 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

                ;tbQR)bhg@U;EyPKI&A*KoZIwA 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

                &*by1Sy#~t{0NHmJ6yhSSQor<&R9IENcq1f1uv#B6_GbeLP2E*7I zS;MoeDH%`FF?@TRwamiJpR4)(X9TzxS*Dy8wEuDBAY(3s zFt9IyROKt4j}*ArV|}k0%?e#v;4RHbX$65?_EzFdl|gwNjfL_`-CE5`h=kdMwj^uD z$04X`*HR8rZ8bFm9B6aXNk2kL=np1yS-Z4RR49-qH8fvH6|aeh6qLjeip=o{IWTQ_ z;tdQ13nesD@moYNCr(hQd{C{$pK>{>eum{$=fyD~nT=5Kqj(H!6Ust2C0K+Q^zQ{j zEIs#oD>{*ev8(Wjp@OVaWZ}7{ZTPycXDS9@ffm+d3xvkzmsZy z+Oj8&0jPnW>X+9}K-!14I1n;keQq$Pw zG7eT6qjDI`&DDf*P9b({HYm5ukghT_vNyFJn4Kz|O!lSCD|}M5k2@J?*G(#98*pgd zQ$7+`^Z3+)@T(0^9y`QI;FnhNqE(~McTwZMB!n@hB|LJ8{Y-T9b-_A$xA-HWtN%P^ zGacTZB4#)dZc`Ivqr_#kWX-x`5!hg*B_b?Bxkz=>xWd-kP-NCarm!ZO=?RV#;xc1j zGMojO&7AU=JUQqa{Ix}9QTmJvZl9f@63LPa!TxIiHVGI|VWD>Y1{8{G96tf@4TO`U z=`ZONCQtrfmZGSeKTIeH%us4NxDd=!4zIISwTK1hFZ7?H-&0sDlD^pJt<$I8QJ*^# z`85xU?xQvIT2uB^6RCr-|)$#Ug~cO;rdEvn@oY^3YAQ?q*@;g8uDt0 z%{$=pUg`ad#;$j2*B!lo)PyK?!=#^D61cwKFj)^h>0mk^b!euJZ>~(K`?NFAWF3zl zlKfvDMi@g>-w1*IA??ka1v?x$T9B7}Du?Abuv6y1OpA3^d%w%fu{4%%LbCS9M`W+y zUSUWng7f0jwftUEIh(5exV7a)Whw2j(}Yq};=yVZiAH~{8~np|Bb&%${PVV%B%5s7 zBOk9-O?InlOgj)01|z?-v4zqrBt`uD+3>G7jW`>LM$oRO|4L=Af|XgIK)T;uqRc;j zM2$}J0@(1J=K%kn%@=_iQ>9gp6m1cd0oyc9cTVdkTs2|Rq%`UQ1T}nyPNVDXT4{dL zQ5v19k&@tNS#j8o4((V0H=(U^G_?TOD9O>>LIT6shc$yFbLytC4Mk&3ky9+sd;~Lr zt8qt8VCtgn(}`)SC&{{-p9kd&hC5#wK~XAUWOn(bFEfM2;fN18({C3uR=l_kET$H! z4WV>h*2D-AS$*-M4RW1nQj#E*UGB=IZDy;mK*XbT8=fJ zZb+gcX5uM)KPzfkyl0y^_I4;v$Rj;v*bnpIqlDOh)gt=o4)%FYtVJ_!_!U>xs!x1x zf;qv%y2WIiDq-4-b@BV%Mq1|JXx%rQX0QB(ZRA#lUlGOaDm-mvt#wXwn+DGQYx-Xr zgU$=RUFW&nL$B{0&24PFCJiDs#r7%Y3_vn)f&8M???UOm^=LHxQA=M~-;jJ+t5aNE z?Y6ItT3t#;T{_Q<@kCmhHeib{{+@HeFzHsn8P<4z7j0i!0TmwwGDW#P1HFj+dU< zslRFXwK%7pE&6Nim-K*aFVXd%@U;Faee1re8jiTeA{V<>-7j5+$xXz1W)>`Ep1+#? zlyuVdB$g5kN&ZO17WnF!y|yKa6I5u#hsn^OEkz*PULRY26HK)@_Bta8y*#E}4heQK z<9I>T{87l|VR35a!T&2nb5cE~2Y&Yb=mJlrsz1t{*W^rhKehK!!2o)u zq*6A@qUFKgbSTbc!O2m)daRZEXUPl=JwU?6flt2p4f*Xjo7Z!7bzHWzbRJULAgc|1 zR7`i(%Jm$o|6h~uL=rA-REPB=GFUIv47EOZ8$GJ5*KO^WR>_}ud$D``b with message config', function (t) { + setup() + + npm.load({ prefix: pkg, userconfig: npmrc }, function () { + var git = require('../../lib/utils/git.js') + + common.makeGitRepo({ path: pkg }, function (er) { + t.ifErr(er, 'git bootstrap ran without error') + + common.npm([ + 'config', + 'set', + 'tag-version-prefix', + 'q' + ], { cwd: pkg, env: { PATH: process.env.PATH } }, + function (err, code, stdout, stderr) { + t.ifError(err, 'npm config ran without issue') + t.notOk(code, 'exited with a non-error code') + t.notOk(stderr, 'no error output') + + common.npm( + [ + 'version', + 'patch', + '--loglevel', 'silent' + // package config is picked up from env + ], + { cwd: pkg, env: { PATH: process.env.PATH } }, + function (err, code, stdout, stderr) { + t.ifError(err, 'npm version ran without issue') + t.notOk(code, 'exited with a non-error code') + t.notOk(stderr, 'no error output') + + git.whichAndExec( + ['tag'], + { cwd: pkg, env: process.env }, + function (er, tags, stderr) { + t.ok(tags.match(/q0\.1\.3/g), 'tag was created by version' + tags) + t.end() + } + ) + } + ) + }) + }) + }) +}) + +test('cleanup', function (t) { + cleanup() + t.end() +}) + +function cleanup () { + // windows fix for locked files + process.chdir(osenv.tmpdir()) + + rimraf.sync(pkg) +} + +function setup () { + cleanup() + mkdirp.sync(cache) + process.chdir(pkg) + + fs.writeFileSync(packagePath, JSON.stringify(json), 'utf8') + fs.writeFileSync(npmrc, configContents, 'ascii') +} diff --git a/deps/npm/test/tap/unpublish-config.js b/deps/npm/test/tap/unpublish-config.js new file mode 100644 index 00000000000..e4d41800ae7 --- /dev/null +++ b/deps/npm/test/tap/unpublish-config.js @@ -0,0 +1,82 @@ +var fs = require('graceful-fs') +var http = require('http') +var path = require('path') + +var mkdirp = require('mkdirp') +var osenv = require('osenv') +var rimraf = require('rimraf') +var test = require('tap').test + +var pkg = path.join(__dirname, 'npm-test-unpublish-config') +var fixturePath = path.join(pkg, 'fixture_npmrc') + +var common = require('../common-tap.js') + +var json = { + name: 'npm-test-unpublish-config', + version: '1.2.3', + publishConfig: { registry: common.registry } +} + +test('setup', function (t) { + mkdirp.sync(pkg) + + fs.writeFileSync( + path.join(pkg, 'package.json'), + JSON.stringify(json), 'utf8' + ) + fs.writeFileSync( + fixturePath, + '//localhost:1337/:_authToken = beeeeeeeeeeeeef\n' + + 'registry = http://lvh.me:4321/registry/path\n' + ) + + t.end() +}) + +test('cursory test of unpublishing with config', function (t) { + var child + http.createServer(function (req, res) { + t.pass('got request on the fakey fake registry') + this.close() + res.statusCode = 500 + res.end(JSON.stringify({ + error: 'shh no tears, only dreams now' + })) + child.kill() + t.end() + }).listen(common.port, function () { + t.pass('server is listening') + + child = common.npm( + [ + '--userconfig', fixturePath, + '--loglevel', 'silent', + '--force', + 'unpublish' + ], + { + cwd: pkg, + stdio: 'inherit', + env: { + 'npm_config_cache_lock_stale': 1000, + 'npm_config_cache_lock_wait': 1000, + HOME: process.env.HOME, + Path: process.env.PATH, + PATH: process.env.PATH, + USERPROFILE: osenv.home() + } + }, + function (err, code) { + t.ifError(err, 'publish command finished successfully') + t.notOk(code, 'npm install exited with code 0') + } + ) + }) +}) + +test('cleanup', function (t) { + process.chdir(osenv.tmpdir()) + rimraf.sync(pkg) + t.end() +})