Browse Source

deps: upgrade npm to 4.5.0

PR-URL: https://github.com/nodejs/node/pull/12480
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
v6
Rebecca Turner 8 years ago
committed by Jeremiah Senkpiel
parent
commit
0084260448
  1. 4
      deps/npm/.github/issue_template.md
  2. 1
      deps/npm/.mailmap
  3. 2
      deps/npm/.travis.yml
  4. 9
      deps/npm/AUTHORS
  5. 419
      deps/npm/CHANGELOG.md
  6. 94
      deps/npm/CONTRIBUTING.md
  7. 4
      deps/npm/README.md
  8. 192
      deps/npm/TROUBLESHOOTING.md
  9. 15
      deps/npm/bin/npm-cli.js
  10. 11
      deps/npm/doc/cli/npm-adduser.md
  11. 5
      deps/npm/doc/cli/npm-unpublish.md
  12. 24
      deps/npm/doc/misc/npm-config.md
  13. 4
      deps/npm/html/doc/README.html
  14. 2
      deps/npm/html/doc/cli/npm-access.html
  15. 12
      deps/npm/html/doc/cli/npm-adduser.html
  16. 2
      deps/npm/html/doc/cli/npm-bin.html
  17. 2
      deps/npm/html/doc/cli/npm-bugs.html
  18. 2
      deps/npm/html/doc/cli/npm-build.html
  19. 2
      deps/npm/html/doc/cli/npm-bundle.html
  20. 2
      deps/npm/html/doc/cli/npm-cache.html
  21. 2
      deps/npm/html/doc/cli/npm-completion.html
  22. 2
      deps/npm/html/doc/cli/npm-config.html
  23. 2
      deps/npm/html/doc/cli/npm-dedupe.html
  24. 2
      deps/npm/html/doc/cli/npm-deprecate.html
  25. 2
      deps/npm/html/doc/cli/npm-dist-tag.html
  26. 2
      deps/npm/html/doc/cli/npm-docs.html
  27. 2
      deps/npm/html/doc/cli/npm-doctor.html
  28. 2
      deps/npm/html/doc/cli/npm-edit.html
  29. 2
      deps/npm/html/doc/cli/npm-explore.html
  30. 2
      deps/npm/html/doc/cli/npm-help-search.html
  31. 2
      deps/npm/html/doc/cli/npm-help.html
  32. 2
      deps/npm/html/doc/cli/npm-init.html
  33. 2
      deps/npm/html/doc/cli/npm-install-test.html
  34. 2
      deps/npm/html/doc/cli/npm-install.html
  35. 2
      deps/npm/html/doc/cli/npm-link.html
  36. 2
      deps/npm/html/doc/cli/npm-logout.html
  37. 4
      deps/npm/html/doc/cli/npm-ls.html
  38. 2
      deps/npm/html/doc/cli/npm-outdated.html
  39. 2
      deps/npm/html/doc/cli/npm-owner.html
  40. 2
      deps/npm/html/doc/cli/npm-pack.html
  41. 2
      deps/npm/html/doc/cli/npm-ping.html
  42. 2
      deps/npm/html/doc/cli/npm-prefix.html
  43. 2
      deps/npm/html/doc/cli/npm-prune.html
  44. 2
      deps/npm/html/doc/cli/npm-publish.html
  45. 2
      deps/npm/html/doc/cli/npm-rebuild.html
  46. 2
      deps/npm/html/doc/cli/npm-repo.html
  47. 2
      deps/npm/html/doc/cli/npm-restart.html
  48. 2
      deps/npm/html/doc/cli/npm-root.html
  49. 2
      deps/npm/html/doc/cli/npm-run-script.html
  50. 2
      deps/npm/html/doc/cli/npm-search.html
  51. 2
      deps/npm/html/doc/cli/npm-shrinkwrap.html
  52. 2
      deps/npm/html/doc/cli/npm-star.html
  53. 2
      deps/npm/html/doc/cli/npm-stars.html
  54. 2
      deps/npm/html/doc/cli/npm-start.html
  55. 2
      deps/npm/html/doc/cli/npm-stop.html
  56. 2
      deps/npm/html/doc/cli/npm-team.html
  57. 2
      deps/npm/html/doc/cli/npm-test.html
  58. 2
      deps/npm/html/doc/cli/npm-uninstall.html
  59. 6
      deps/npm/html/doc/cli/npm-unpublish.html
  60. 2
      deps/npm/html/doc/cli/npm-update.html
  61. 2
      deps/npm/html/doc/cli/npm-version.html
  62. 2
      deps/npm/html/doc/cli/npm-view.html
  63. 2
      deps/npm/html/doc/cli/npm-whoami.html
  64. 6
      deps/npm/html/doc/cli/npm.html
  65. 2
      deps/npm/html/doc/files/npm-folders.html
  66. 2
      deps/npm/html/doc/files/npm-global.html
  67. 2
      deps/npm/html/doc/files/npm-json.html
  68. 2
      deps/npm/html/doc/files/npmrc.html
  69. 2
      deps/npm/html/doc/files/package.json.html
  70. 2
      deps/npm/html/doc/index.html
  71. 2
      deps/npm/html/doc/misc/npm-coding-style.html
  72. 23
      deps/npm/html/doc/misc/npm-config.html
  73. 2
      deps/npm/html/doc/misc/npm-developers.html
  74. 12
      deps/npm/html/doc/misc/npm-disputes.html
  75. 2
      deps/npm/html/doc/misc/npm-index.html
  76. 2
      deps/npm/html/doc/misc/npm-orgs.html
  77. 2
      deps/npm/html/doc/misc/npm-registry.html
  78. 2
      deps/npm/html/doc/misc/npm-scope.html
  79. 2
      deps/npm/html/doc/misc/npm-scripts.html
  80. 2
      deps/npm/html/doc/misc/removing-npm.html
  81. 2
      deps/npm/html/doc/misc/semver.html
  82. 159
      deps/npm/lib/adduser.js
  83. 142
      deps/npm/lib/auth/legacy.js
  84. 7
      deps/npm/lib/auth/oauth.js
  85. 7
      deps/npm/lib/auth/saml.js
  86. 59
      deps/npm/lib/auth/sso.js
  87. 2
      deps/npm/lib/bugs.js
  88. 2
      deps/npm/lib/config/core.js
  89. 12
      deps/npm/lib/config/defaults.js
  90. 2
      deps/npm/lib/docs.js
  91. 2
      deps/npm/lib/doctor/check-files-permission.js
  92. 2
      deps/npm/lib/doctor/get-latest-npm-version.js
  93. 28
      deps/npm/lib/fetch-package-metadata.js
  94. 2
      deps/npm/lib/install.js
  95. 75
      deps/npm/lib/install/action/extract.js
  96. 24
      deps/npm/lib/install/action/finalize.js
  97. 12
      deps/npm/lib/install/action/move.js
  98. 10
      deps/npm/lib/install/action/remove.js
  99. 8
      deps/npm/lib/install/action/test.js
  100. 7
      deps/npm/lib/install/actions.js

4
deps/npm/.github/issue_template.md

@ -40,10 +40,10 @@
before submitting your issue.
- Please check if there's a solution in the troubleshooting wiki:
https://github.com/npm/npm/wiki/Troubleshooting
https://github.com/npm/npm/blob/latest/TROUBLESHOOTING.md
- Also ensure that your new issue conforms to npm's contribution guidelines:
https://github.com/npm/npm/wiki/Contributing-Guidelines
https://github.com/npm/npm/blob/latest/CONTRIBUTING.md
- Participation in this open source project is subject to the npm Code of Conduct:
https://www.npmjs.com/policies/conduct

1
deps/npm/.mailmap

@ -53,6 +53,7 @@ Ryan Emery <seebees@gmail.com>
Sam Mikes <smikes@cubane.com>
Stephanie Snopek <stephaniesnopek@gmail.com>
Takaya Kobayashi <jigsaw@live.jp>
Ted Yavuzkurt <hello@TedY.io> <davidteoman@gmail.com>
Thomas Reggi <thomas@reggi.com>
Timo Weiß <timoweiss@Timo-MBP.local>
Tony <zearin@gonk.net>

2
deps/npm/.travis.yml

@ -28,6 +28,8 @@ notifications:
cache:
directories:
- $HOME/.npm
- html/doc
- man
- node_modules/.bin
- node_modules/.cache
- node_modules/deep-equal

9
deps/npm/AUTHORS

@ -450,3 +450,12 @@ Daijirō Wachi <daijiro.wachi@gmail.com>
Dmitry Litvinchenko <karaliti@gmail.com>
chocolateboy <chocolate@cpan.org>
Henry Zhu <hi@henryzoo.com>
Nate Goldman <ungoldman@gmail.com>
Ted Yavuzkurt <hello@TedY.io>
Arseniy Maximov <localhost@kern0.ru>
Joshua Bennett <legodude17@users.noreply.github.com>
Evgeny Kulikov <beyondcompute@users.noreply.github.com>
Сковорода Никита Андреевич <chalkerx@gmail.com>
Carol (Nichols || Goulding) <carol.nichols@gmail.com>
Jarid Margolin <jaridmargolin@gmail.com>
David Cook <divergentdave@gmail.com>

419
deps/npm/CHANGELOG.md

@ -1,3 +1,422 @@
### v4.5.0 (2017-03-24)
Welcome a wrinkle on npm's registry API!
Codename: Corgi
![corgi-meme](https://cloud.githubusercontent.com/assets/757502/24126107/64c14268-0d89-11e7-871b-d457e6d0082b.jpg)
This release has some bug fixes, but it's mostly about bringing support for
MUCH smaller package metadata. How much smaller? Well, for npm itself it
reduces 416K of gzip compressed JSON to 24K.
As a user, all you have to do is update to get to use the new API. If
you're interested in the details we've [documented the
changes](https://github.com/npm/registry/blob/master/docs/responses/package-metadata.md)
in detail.
#### CORGUMENTS
Package metadata: now smaller. This means a smaller cache and less to download.
* [`86dad0d74`](https://github.com/npm/npm/commit/86dad0d747f288eab467d49c9635644d3d44d6f0)
Add support for filtered package metadata.
([@iarna](https://github.com/iarna))
* [`41789cffa`](https://github.com/npm/npm/commit/41789cffac9845603f4bdf3f5b03f412144a0e9f)
`npm-registry-client@8.1.0`
([@iarna](https://github.com/iarna))
#### NO SHRINKWRAP, NO PROBLEM
Previously we needed to extract every package's tarball to look for an
`npm-shrinkwrap.json` before we could begin working through what its
dependencies were. This was one of the things stopping npm's network
accesses from happening more concurrently. The new filtered package
metadata provides a new key, `_hasShrinkwrap`. When that's set to `false`
then we know we don't have to look for one.
* [`4f5060eb3`](https://github.com/npm/npm/commit/4f5060eb31b9091013e1d6a34050973613a294a3)
[#15969](https://github.com/npm/npm/pull/15969)
Add support for skipping `npm-shrinkwrap.json` extraction when the
registry can affirm that one doesn't exist.
([@iarna](https://github.com/iarna))
#### INTERRUPTING SCRIPTS
* [`878aceb25`](https://github.com/npm/npm/commit/878aceb25e6d6052dac15da74639ce274c8e62c5)
[#16129](https://github.com/npm/npm/pull/16129)
Better handle Ctrl-C while running scripts. `npm` will now no longer exit
until the script it is running has exited. If you press Ctrl-C a second
time it kill the script rather than just forwarding the Ctrl-C.
([@jaridmargolin](https://github.com/jaridmargolin))
#### DEPENDENCY UPDATES:
* [`def75eebf`](https://github.com/npm/npm/commit/def75eebf1ad437bf4fd3f5e103cc2d963bd2a73)
`hosted-git-info@2.4.1`:
Preserve case of the user name part of shortcut specifiers, previously they were lowercased.
([@iarna](https://github.com/iarna))
* [`eb3789fd1`](https://github.com/npm/npm/commit/eb3789fd18cfb063de9e6f80c3049e314993d235)
`node-gyp@3.6.0`: Add support for VS2017 and Chakracore improvements.
([@refack](https://github.com/refack))
([@kunalspathak](https://github.com/kunalspathak))
* [`245e25315`](https://github.com/npm/npm/commit/245e25315524b95c0a71c980223a27719392ba75)
`readable-stream@2.2.6` ([@mcollina](https://github.com/mcollina))
* [`30357ebc5`](https://github.com/npm/npm/commit/30357ebc5691d7c9e9cdc6e0fe7dc6253220c9c2)
`which@1.2.14` ([@isaacs](https://github.com/isaacs))
### v4.4.4 (2017-03-16)
😩😤😅 Okay! We have another `next`
release for ya today. So, yes! With v4.4.3 we fixed the bug that made
bundled scoped modules uninstallable. But somehow I overlooked the fact
that we: A) were using these and B) that made upgrading to v4.4.3 impossible. 😭
So I've renamed those two scoped modules to no longer use scopes and we now
have a shiny new test to ensure that scoped modules don't creep into our
transitive deps and make it impossible to upgrade to `npm`.
(None of our woes applies to most of you all because most of you all don't
use bundled dependencies. `npm` does because we want the published artifact to be
installable without having to already have `npm`.)
* [`2a7409fcb`](https://github.com/npm/npm/commit/2a7409fcba6a8fab716c80f56987b255983e048e)
[#16066](https://github.com/npm/npm/pull/16066)
Ensure we aren't using any scoped modules
Because `npm`s prior 4.4.3 can't install dependencies that have bundled scoped
modules. This didn't show up sooner because they ALSO had a bug that caused
bundled scoped modules to not be included in the bundle.
([@iarna](https://github.com/iarna))
* [`eb4c70796`](https://github.com/npm/npm/commit/eb4c70796c38f24ee9357f5d4a0116db582cc7a9)
[#16066](https://github.com/npm/npm/pull/16066)
Switch to move-concurrently to remove scoped dependency
([@iarna](https://github.com/iarna))
### v4.4.3 (2017-03-15)
This is a small patch release, mostly because the published tarball for
v4.4.2 was missing a couple of modules, due to a bug involving scoped
modules, bundled dependencies and legacy tree layouts.
There are a couple of other things here that happened to be ready to go. So
without further ado…
#### BUG FIXES
* [`3d80f8f70`](https://github.com/npm/npm/commit/3d80f8f70679ad2b8ce7227d20e8dbce257a47b9)
[npm/fs-vacuum#6](https://github.com/npm/fs-vacuum/pull/6)
`fs-vacuum@1.2.1`: Make sure we never, ever remove home directories. Previously if your
home directory was entirely empty then we might `rmdir` it.
([@helio-frota](https://github.com/helio-frota))
* [`1af85ca9f`](https://github.com/npm/npm/commit/1af85ca9f4d625f948e85961372de7df3f3774e2)
[#16040](https://github.com/npm/npm/pull/16040)
Fix bug where bundled transitive dependencies that happened to be
installed under bundled scoped dependencies wouldn't be included in the
tarball when building a package.
([@iarna](https://github.com/iarna))
* [`13c7fdc2e`](https://github.com/npm/npm/commit/13c7fdc2e87456a87b1c9385a3daeae228ed7c95)
[#16040](https://github.com/npm/npm/pull/16040)
Fix a bug where bundled scoped dependencies couldn't be extracted.
([@iarna](https://github.com/iarna))
* [`d6cde98c2`](https://github.com/npm/npm/commit/d6cde98c2513fe160eab41e31c3198dfde993207)
[#16040](https://github.com/npm/npm/pull/16040)
Stop printing `ENOENT` errors more than once.
([@iarna](https://github.com/iarna))
* [`722fbf0f6`](https://github.com/npm/npm/commit/722fbf0f6cf4413cdc24b610bbd60a7dbaf2adfe)
[#16040](https://github.com/npm/npm/pull/16040)
Rewrite the `extract` action for greater clarity.
Specifically, this involves moving things around structurally to do the same
thing [`d0c6d194`](https://github.com/npm/npm/commit/d0c6d194) did, but in a more comprehensive manner.
This also fixes a long standing bug where errors from the move step would be
eaten during this phase and as a result we would get mysterious crashes in
the finalize phase when finalize tried to act on them.
([@iarna](https://github.com/iarna))
* [`6754dabb6`](https://github.com/npm/npm/commit/6754dabb6bd3301504efb3b62f36d3fe70958c19)
[#16040](https://github.com/npm/npm/pull/16040)
Flatten out `@npmcorp/move`'s deps for backwards compatibility reasons. Versions prior to this
one will fail to install any package that bundles a scoped dependency. This was responsible
for `ENOENT` errors during the `finalize` phase.
([@iarna](https://github.com/iarna))
#### DOC UPDATES
* [`fba51c582`](https://github.com/npm/npm/commit/fba51c582d1d08dd4aa6eb27f9044dddba91bb18)
[#15960](https://github.com/npm/npm/pull/15960)
Update troubleshooting and contribution guide links.
([@watilde](https://github.com/watilde))
### v4.4.2 (2017-03-09):
This week, the focus on the release was mainly going through [all of npm's deps
that we manage
ourselves](https://github.com/npm/npm/wiki/npm-maintained-dependencies), and
making sure all their PRs and versions were up to date. That means there's a few
fixes here and there. Nothing too big codewise, though.
The most exciting part of this release is probably our [shiny new
Contributing](https://github.com/npm/npm/blob/latest/CONTRIBUTING.md) and
[Troubleshooting](https://github.com/npm/npm/blob/latest/TROUBLESHOOTING.md)
docs! [@snopeks](https://github.com/snopeks) did some ✨fantastic✨ work hashing it
out, and we're really hoping this is a nice big step towards making contributing
to npm easier. The troubleshooting doc will also hopefully solve common issues
for people! Do you think something is missing from it? File a PR and we'll add
it! The current document is just a baseline for further editing and additions.
Also there's maybe a bit of an easter egg in this release. 'Cause those are fun and I'm a huge nerd. 😉
#### DOCUMENTATION AHOY
* [`07e997a`](https://github.com/npm/npm/commit/07e997a7ecedba7b29ad76ffb2ce990d5c0200fc)
[#15756](https://github.com/npm/npm/pull/15756)
Overhaul `CONTRIBUTING.md` and add new `TROUBLESHOOTING.md` files. 🙌🏼
([@snopeks](https://github.com/snopeks))
* [`2f3e4b6`](https://github.com/npm/npm/commit/2f3e4b645cdc268889cf95ba24b2aae572d722ad)
[#15833](https://github.com/npm/npm/pull/15833)
Mention the [24-hour unpublish
policy](http://blog.npmjs.org/post/141905368000/changes-to-npms-unpublish-policy)
on the main registry.
([@carols10cents](https://github.com/carols10cents))
#### NOT REALLY FEATURES, NOT REALLY BUGFIXES. MORE LIKE TWEAKS? 🤔
* [`84be534`](https://github.com/npm/npm/commit/84be534aedb78c65cd8012427fc04871ceeccf90)
[#15888](https://github.com/npm/npm/pull/15888)
Stop flattening `ls`-tree output. From now on, deduped deps will be marked as
such in the place where they would've been before getting hoisted by the
installer.
([@iarna](https://github.com/iarna))
* [`e9a5dca`](https://github.com/npm/npm/commit/e9a5dca369ead646ab5922326cede1406c62bd3b)
[#15967](https://github.com/npm/npm/pull/15967)
Limit metadata fetches to 10 concurrent requests.
([@iarna](https://github.com/iarna))
* [`46aa9bc`](https://github.com/npm/npm/commit/46aa9bcae088740df86234fc199f7aef53b116df)
[#15967](https://github.com/npm/npm/pull/15967)
Limit concurrent installer actions to 10.
([@iarna](https://github.com/iarna))
#### BUGFIXES
* [`c3b994b`](https://github.com/npm/npm/commit/c3b994b71565eb4f943cce890bb887d810e6e2d4)
[#15901](https://github.com/npm/npm/pull/15901)
Use EXDEV aware move instead of rename. This will allow moving across devices
and moving when filesystems don't support renaming directories full of files. It might make folks using Docker a bit happier.
([@iarna](https://github.com/iarna))
* [`0de1a9c`](https://github.com/npm/npm/commit/0de1a9c1db90e6705c65c068df1fe82899e60d68)
[#15735](https://github.com/npm/npm/pull/15735)
Autocomplete support for npm scripts with `:` colons in the name.
([@beyondcompute](https://github.com/beyondcompute))
* [`84b0b92`](https://github.com/npm/npm/commit/84b0b92e7f78ec4add42e8161c555325c99b7f98)
[#15874](https://github.com/npm/npm/pull/15874)
Stop using [undocumented](https://github.com/nodejs/node/pull/11355)
`res.writeHeader` alias for `res.writeHead`.
([@ChALkeR](https://github.com/ChALkeR))
* [`895ffe4`](https://github.com/npm/npm/commit/895ffe4f3eecd674796395f91c30eda88aca6b36)
[#15824](https://github.com/npm/npm/pull/15824)
Fix empty versions column in `npm search` output.
([@bcoe](https://github.com/bcoe))
* [`38c8d7a`](https://github.com/npm/npm/commit/38c8d7adc1f43ab357d1e729ae7cd5d801a26e68)
`init-package-json@1.9.5`: [npm/init-package-json#61](https://github.com/npm/init-package-json/pull/61) Exclude existing `devDependencies` from being added to `dependencies`. Fixes [#12260](https://github.com/npm/npm/issues/12260).
([@addaleax](https://github.com/addaleax))
### v4.4.1 (2017-03-06):
This is a quick little patch release to forgo the update notification
checker if you're on an unsuported (but not otherwise broken) version of
Node.js. Right now that means 0.10 or 0.12.
* [`56ac249`](https://github.com/npm/npm/commit/56ac249ef8ede1021f1bc62a0e4fe1e9ba556af2)
[#15864](https://github.com/npm/npm/pull/15864)
Only use `update-notifier` on supported versions.
([@legodude17](https://github.com/legodude17))
### v4.4.0 (2017-02-23):
Aaaah, [@iarna](https://github.com/iarna) here, it's been a little while
since I did one of these! This is a nice little release, we've got an
update notifier, vastly less verbose error messages, new warnings on package
metadata that will probably give you a bad day, and a sprinkling of bug
fixes.
#### UPDATE NOTIFICATIONS
We now have a little nudge to update your `npm`, courtesy of
[update-notifier](https://www.npmjs.com/package/update-notifier).
* [`148ee66`](https://github.com/npm/npm/commit/148ee663740aa05877c64f16cdf18eba33fbc371)
[#15774](https://github.com/npm/npm/pull/15774)
`npm` will now check at start up to see if a newer version is available.
It will check once a day. If you want to disable this, set `optOut` to `true` in
`~/.config/configstore/update-notifier-npm.json`.
([@ceejbot](https://github.com/ceejbot))
#### LESS VERBOSE ERROR MESSAGES
`npm` has, for a long time, had very verbose error messages. There was a
lot of info in there, including the cause of the error you were seeing but
without a lot of experience reading them pulling that out was time consuming
and difficult.
With this change the output is cut down substantially, centering the error
message. So, for example if you try to `npm run sdlkfj` then the entire
error you'll get will be:
```
npm ERR! missing script: sldkfj
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/rebecca/.npm/_logs/2017-02-24T00_41_36_988Z-debug.log
```
The CLI team has discussed cutting this down even further and stripping the
`npm ERR!` prefix off those lines too. We'd appreciate your feedback on
this!
* [`e544124`](https://github.com/npm/npm/commit/e544124592583654f2970ec332003cfd00d04f2b)
[#15716](https://github.com/npm/npm/pull/15716)
Make error output less verbose.
([@iarna](https://github.com/iarna))
* [`166bda9`](https://github.com/npm/npm/commit/166bda97410d0518b42ed361020ade1887e684af)
[#15716](https://github.com/npm/npm/pull/15716)
Stop encouraging users to visit the issue tracker unless we know for
certain that it's an npm bug.
([@iarna](https://github.com/iarna))
#### OTHER NEW FEATURES
* [`53412eb`](https://github.com/npm/npm/commit/53412eb22c1c75d768e30f96d69ed620dfedabde)
[#15772](https://github.com/npm/npm/pull/15772)
We now warn if you have a module listed in both dependencies and
devDependencies.
([@TedYav](https://github.com/TedYav))
* [`426b180`](https://github.com/npm/npm/commit/426b1805904a13bdc5c0dd504105ba037270cbee)
[#15757](https://github.com/npm/npm/pull/15757)
Default reporting metrics to default registry. Previously it defaulted to using
`https://registry.npmjs.org`, now it will default to the result of
`npm config get registry`. For most folks this won't actually change anything, but it
means that folks who use a private registry will have metrics routed there by default.
This has the potential to be interesting because it means that in the
future private registry products ([npme](https://npme.npmjs.com/docs/)!)
will be able to report on these metrics.
([@iarna](https://github.com/iarna))
#### BUG FIXES
* [`8ea0de9`](https://github.com/npm/npm/commit/8ea0de98563648ba0db032acd4d23d27c4a50a66)
[#15716](https://github.com/npm/npm/pull/15716)
Write logs for `cb() never called` errors.
* [`c4e83dc`](https://github.com/npm/npm/commit/c4e83dca830b24305e3cb3201a42452d56d2d864)
Make it so that errors while reading the existing node_modules tree can't
result in installer crashes.
([@iarna](https://github.com/iarna))
* [`2690dc2`](https://github.com/npm/npm/commit/2690dc2684a975109ef44953c2cf0746dbe343bb)
Update `npm doctor` to not treat broken symlinks in your global modules as
a permission failure. This is particularly important if you link modules and your text
editor uses the convention of creating symlinks from `.#filename.js` to a
machine name and pid to lock files (eg emacs and compatible things).
([@iarna](https://github.com/iarna))
* [`f4c3f48`](https://github.com/npm/npm/commit/f4c3f489aa5787cf0d60e8436be2190e4b0d0ff7)
[#15777](https://github.com/npm/npm/pull/15777)
Not exactly a bug, but change a parameterless `.apply` to `.call`.
([@notarseniy](https://github.com/notarseniy))
#### DEPENDENCY UPDATES
* [`549dcff`](https://github.com/npm/npm/commit/549dcff58c7aaa1e7ba71abaa14008fdf2697297)
`rimraf@2.6.0`:
Retry EBUSY, ENOTEMPTY and EPERM on non-Windows platforms too.
More reliable `rimraf.sync` on Windows.
([@isaacs](https://github.com/isaacs))
* [`052dfb6`](https://github.com/npm/npm/commit/052dfb623da508f2b5f681da0258125552a18a4a)
`validate-npm-package-name@3.0.0`:
Remove ableist language in README.
Stop allowing ~'!()* in package names.
([@tomdale](https://github.com/tomdale))
([@chrisdickinson](https://github.com/chrisdickinson))
* [`6663ea6`](https://github.com/npm/npm/commit/6663ea6ac0f0ecec5a3f04a3c01a71499632f4dc)
`abbrev@1.1.0` ([@isaacs](https://github.com/isaacs))
* [`be6de9a`](https://github.com/npm/npm/commit/be6de9aab9e20b6eac70884e8626161eebf8721a)
`opener@1.4.3` ([@dominic](https://github.com/dominic))
* [`900a5e3`](https://github.com/npm/npm/commit/900a5e3e3411ec221306455f99b24b9ce35757c0)
`readable-stream@2.2.3` ([@RangerMauve](https://github.com/RangerMauve)) ([@mcollina](https://github.com/mcollina))
* [`c972a8b`](https://github.com/npm/npm/commit/c972a8b0f20a61a79c45b6642f870bea8c55c7e4)
`tacks@1.2.6`
([@iarna](https://github.com/iarna))
* [`85a36ef`](https://github.com/npm/npm/commit/85a36efdac0c24501876875cb9ad40292024e0b0)
[`7ac9265`](https://github.com/npm/npm/commit/7ac9265c56b4d9eeaca6fcfb29513f301713e7bb)
`tap@10.2.0`
([@isaacs](https://github.com/saacs))
### v4.3.0 (2017-02-09):
Yay! Release time! It's a rainy day, and we have another smallish release for
y'all. These things are not necessarily related. Or are they 🌧🤔
As far as news go, you may have noticed that the CLI team dropped support for
`node@0.12` when that version went out of maintenance. Still, we've avoided
explicitly breaking it and `node@0.10` so far -- but not much longer.
Sometime soon, the CLI team plans on switching over to language features only
available as of `node@4 LTS`, and will likely start dropping old versions of node
as they go out of maintenance. The new features are exciting! We're really
looking forward to using them in the core CLI (and its dependencies) as we keep up
with our current feature work.
And speaking of features, this release is a minor bump due to a small change in
how `npm login` works for the sake of supporting OAuth-based login for npm
Enterprise users. But we won't leave the rest of y'all out -- we're working on a
larger version of this feature. Soon enough, you'll be able to log in to npm
with, say, GitHub -- and use some shiny features that come from the integration.
Or turn on 2FA and other such security features. Keep your eyes peeled for new
on this in the next few releases and our weekly newsletter!
#### NEW AUTH TYPES
There's a new command line option: `--auth-type`, which can be used to log in to
a supporting registry with OAuth2 or SAML. The current implementation is mainly
meant to support npmE customers, so if you're one of those: ask us about using
it! If not, just hold off cause we'll have a much more complete version of this
feature out soon.
* [`ac8595e`](https://github.com/npm/npm/commit/ac8595e3c9b615ff95abc3301fac1262c434792c) [`bcf2dd8`](https://github.com/npm/npm/commit/bcf2dd8a165843255c06515fa044c6e4d3b71ca4) [`9298d20`](https://github.com/npm/npm/commit/9298d20af58b92572515bfa9cf7377bd4221dc7d) [`66b61bc`](https://github.com/npm/npm/commit/66b61bc42e81ee8a1ee00fc63517f62284140688) [`dc85de7`](https://github.com/npm/npm/commit/dc85de7df6bb61f7788611813ee82ae695a18f1f)
[#13389](https://github.com/npm/npm/pull/13389)
Implement single-sign-on support with `--auth-type` option.
([@zkat](https://github.com/zkat))
#### FASTER STARTUP. SOMETIMES!
`request` is pretty heavy. And it loads a bunch of things. It's actually a
pretty big chunk of npm's load time. This small patch by Rebecca will make it so
npm only loads that module when we're actually intending to make network
requests. Those of you who use npm commands that run offline might see a small
speedup in startup time.
* [`ac73568`](https://github.com/npm/npm/commit/ac735682e666e8724549d56146821f3b8b018e25)
[#15631](https://github.com/npm/npm/pull/15631)
Lazy load `caching-registry-client`.
([@iarna](https://github.com/iarna))
#### DOCUMENTATION
* [`4ad9247`](https://github.com/npm/npm/commit/4ad9247aa82f7553c9667ee93c74ec7399d6ceec)
[#15630](https://github.com/npm/npm/pull/15630)
Fix formatting/rendering for root npm README.
([@ungoldman](https://github.com/ungoldman))
#### DEPENDENCY UPDATES
* [`8cc1112`](https://github.com/npm/npm/commit/8cc1112958638ff88ac2c24c4a065acacb93d64b)
[npm/hosted-git-info#21](https://github.com/npm/hosted-git-info/pull/21)
`hosted-git-info@2.2.0`:
Add support for `.tarball()` URLs.
([@zkat](https://github.com/zkat))
* [`6eacc1b`](https://github.com/npm/npm/commit/6eacc1bc1925fe3cc79fc97bdc3194d944fce55e)
`npm-registry-mock@1.1.0`
([@addaleax](https://github.com/addaleax))
* [`a9b6d77`](https://github.com/npm/npm/commit/a9b6d775e61cf090df0e13514c624f99bf31d1e7)
`aproba@1.1.1`
([@iarna](https://github.com/iarna))
### v4.2.0 (2017-01-26):
Hi all! I'm Kat, and I'm currently sitting in a train traveling at ~300km/h

94
deps/npm/CONTRIBUTING.md

@ -1,12 +1,82 @@
## Before you submit a new issue
* Check if there's a simple solution in the
[Troubleshooting](https://github.com/npm/npm/wiki/Troubleshooting)
wiki.
* [Search for similar
issues](https://github.com/npm/npm/search?q=Similar%20issues&type=Issues).
* Ensure your new issue conforms to the [Contributing
Guidelines](https://github.com/npm/npm/wiki/Contributing-Guidelines).
Participation in this open source project is subject to the [npm Code
of Conduct](http://www.npmjs.com/policies/conduct).
# npm CLI Contributor Roles and Responsibilities
## Table of Contents
* [Introduction](#introduction)
* [Roles](#roles)
* [Community Members](#community-members)
* [Collaborators](#collaborators)
* [npm, Inc Employeees](#npm-inc-employees)
## Introduction
Welcome to the npm CLI Contributor Guide! This document outlines the npm CLI repository's process for community interaction and contribution. This includes the issue tracker, pull requests, wiki pages, and, to a certain extent, outside communication in the context of the npm CLI. It defines roles, responsibilities, and procedures, and is an entry point for anyone wishing to contribute their time and effort to making npm a better tool for the JavaScript community!
All interactions in the npm repository are covered by the [npm Code of Conduct](https://www.npmjs.com/policies/conduct)
## Roles
There are three main roles for people participating in the npm issue tracker. Each has a specific set of abilities and responsibilities: [Community members](#community-members), [Collaborators](#collaborators), and [npm, Inc employees](#npm-inc-employees).
Failure to comply with the expected responsibilities of each role, or violating the Code of Conduct will result in punitive action relative to the transgression, ranging from a warning to full removal from the project, at the discretion of npm employees.
### Community Members
This includes anyone who may show up to the npm/npm repo with issues, PRs, comments etc. They may not have any other involvement with npm.
#### Abilities
* Open issues and PRs
* Comment on issues and PRs
#### Responsibilities
* Comment on issues when they have a reference to the answer.
* If community members aren't sure they are correct and don't have a reference to the answer, please leave the issue and try another one.
* Defer to collaborators and npm employees for answers.
* Make sure to search for [the troubleshooting doc](./TROUBLESHOOTING.md) and search on the issue tracker for similar issues before opening a new one.
* Any users with urgent support needs are welcome to email support@npmjs.com, and our dedicated support team will be happy to help.
PLEASE don't @ collaborators or npm employees on issues. The CLI team is small, and has many outstanding commitments to fulfill.
### Collaborators
These are folks who have the ability to label and close issues. The role of collaborators may expand over time, but for now it is a limited (& important) role. This is an excellent way to contribute to npm without writing code.
Community members may become collaborators by showing consistent, proven track record of quality contributions to the project, a reasonable level of proficiency with the CLI, and regular participation through the tracker and other related mediums, including regular contact with the CLI team itself. This role entails a higher level of responsibility than community member, so we ask for a higher level of understanding and commitment.
Collaborators who become inactive for 3 months or longer may have their collaborator privileges removed until they are ready to return.
#### Abilities
* Label/triage new issues
* Respond to ongoing issues
* Close resolved issues.
#### Responsibilities
* Only answer questions when they know the answer, and provide a reference to the answer.
* If collaborators aren't totally confident about their answer, please leave the issue and try another one.
* If they've responded to an issue, it becomes their responsibility to see it to resolution.
* Close issues if there's no response within a month.
* Defer to fellow Collaborators & npm employees for answers (Again, please don't @ collaborators or npm employees, thank you!)
* Make sure to search for [the troubleshooting doc](./TROUBLESHOOTING.md) and search on the issue tracker for similar issues before opening a new one.
### npm, Inc Employees
Folks who work at npm, Inc, who have a responsibility to ensure the stability and functionality of the tools npm offers.
#### Abilities
* Label/triage new issues
* Respond to ongoing issues
* Close resolved issues
* Land PRs
Please note that this is a living document, and the CLI team will put up PRs to it as needed.
#### Responsibilities
* Preserve and promote the health of the CLI, the registry, the website, etc.
In special cases, [Collaborators](#collaborators) may request time to speak with an npm employee directly, by contacting them and coordinating a time/place.

4
deps/npm/README.md

@ -1,6 +1,8 @@
npm(1) -- a JavaScript package manager
==============================
[![Build Status](https://img.shields.io/travis/npm/npm/latest.svg)](https://travis-ci.org/npm/npm)
## SYNOPSIS
This is just enough info to get you up and running.
@ -86,7 +88,7 @@ experience if you run a recent version of npm. To upgrade, either use [Microsoft
upgrade tool](https://github.com/felixrieseberg/npm-windows-upgrade),
[download a new version of Node](https://nodejs.org/en/download/),
or follow the Windows upgrade instructions in the
[npm Troubleshooting Guide](https://github.com/npm/npm/wiki/Troubleshooting#upgrading-on-windows).
[npm Troubleshooting Guide](./TROUBLESHOOTING.md).
If that's not fancy enough for you, then you can fetch the code with
git, and mess with it directly.

192
deps/npm/TROUBLESHOOTING.md

@ -0,0 +1,192 @@
# Troubleshooting Common Issues
## Using this Document
Search for the error message you're getting and see if there's a match, or skim the [table of contents](#table-of-contents) below for topics that seem relevant to the issue you're having. Each issue section has steps to work around or fix the particular issue, and have examples of common error messages.
If you do not find the issue below, try searching the issue tracker itself for potential duplicates before opening a new issue.
If you're reading this document because you noticed an issue with npm's web site, please let the [web team](https://github.com/npm/www/issues) know.
### Updating this Document
If you think something should be added here, make a PR that includes the following:
0. a summary
0. one or more example errors
0. steps to debug and fix
0. links to at least one related issue from the tracker
For more details of the content and formatting of these entries, refer to examples below.
## Table of Contents
* [Upgrading npm](#upgrading-npm)
* [Proxies and Networking](#proxy-and-networking-issues)
* [Cannot find module](#cannot-find-module)
* [Shasum Check Fails](#shasum-check-fails)
* [No Git](#no-git)
## Upgrading npm
Whenever you get npm errors, it's a good idea to first check your npm version and upgrade to latest whenever possible. We still see people running npm@1 (!) and in those cases, installing the latest version of npm usually solves the problem.
You can check your npm version by running `npm -v`.
### Steps to Fix
* Upgrading on \*nix (OSX, Linux, etc.)
(You may need to prefix these commands with sudo, especially on Linux, or OS X if you installed Node using its default installer.)
You can upgrade to the latest version of npm using:
`npm install -g npm@latest`
Or upgrade to the most recent LTS release:
`npm install -g npm@lts`
* Upgrading on Windows
We have a [detailed guide](https://github.com/npm/npm/wiki/Troubleshooting#upgrading-on-windows) for upgrading on windows on our wiki.
## Proxy and Networking Issues
npm might not be able to connect to the registry for various reasons. Perhaps your machine is behind a firewall that needs to be opened, or you require a corporate proxy to access the npm registry. This issue can manifest in a wide number of different ways. Usually, strange network errors are an instance of this specific problem.
Sometimes, users may have install failures due to Git/Github access issues. Git/GitHub access is separate from npm registry access. For users in some locations (India in particular), problems installing packages may be due to connectivity problems reaching GitHub and not the npm registry.
If you believe your network is configured and working correctly, and you're still having problems installing, please let the [registry team](https://github.com/npm/registry/issues) know you're having trouble.
### Steps to Fix
0. Make sure you have a working internet connection. Can you reach https://registry.npmjs.org? Can you reach other sites? If other sites are unreachable, this is not a problem with npm.
0. Check http://status.npmjs.org/ for any potential current service outages.
0. If your company has a process for domain whitelisting for developers, make sure https://registry.npmjs.org is a whitelisted domain.
0. If you're in China, consider using https://npm.taobao.org/ as a registry, which sits behind the Firewall.
0. On Windows, npm does not access proxies configured at the system level, so you need to configure them manually in order for npm to access them. Make sure [you have added the appropriate proxy configuration to `.npmrc`](https://docs.npmjs.com/misc/config#https-proxy).
0. If you already have a proxy configured, it might be configured incorrectly or use the wrong credentials. Verify your credentials, test the specific credentials with a separate application.
0. The proxy itself, on the server, might also have a configuration error. In this case, you'll need to work with your system administrator to verify that the proxy, and HTTPS, are configured correctly. You may test it by running regular HTTPS requests.
### Example Errors
This error can manifest in a wide range of different ways:
```
npm ERR! code UNABLE_TO_VERIFY_LEAF_SIGNATURE
npm ERR! unable to verify the first certificate
```
```
npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY
npm ERR! unable to get local issuer certificate
```
```
npm ERR! code DEPTH_ZERO_SELF_SIGNED_CERT
npm ERR! self signed certificate
```
```
124 error code ECONNREFUSED
125 error errno ECONNREFUSED
126 error syscall connect
```
```
136 error Unexpected token <
136 error <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
136 error <HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
136 error <TITLE>ERROR: Cache Access Denied</TITLE>
```
```
31 verbose stack Error: connect ETIMEDOUT 123.123.123.123:443
```
```
108 error code EAI_AGAIN
109 error errno EAI_AGAIN
110 error syscall getaddrinfo
111 error getaddrinfo EAI_AGAIN proxy.yourcorp.com:811
```
```
npm ERR! Error: getaddrinfo ESRCH
npm ERR! at errnoException (dns.js:37:11)
npm ERR! at Object.onanswer as oncomplete
```
```
35 error Unexpected token u
35 error function FindProxyForURL(url, host) {
```
### Related issues
* [#14318](https://github.com/npm/npm/issues/14318)
* [#15059](https://github.com/npm/npm/issues/15059)
* [#14336](https://github.com/npm/npm/issues/14336)
## Cannot find module
If *when running npm* (not your application), you get an error about a module not being found, this almost certainly means that there's something wrong with your npm installation.
If this happens when trying to start your application, you might not have installed your package's dependencies yet.
### Steps to Fix
0. If this happens when you try to start your application, try running `npm install` to install the app's dependencies. Make sure all its actual dependencies are listed in `package.json`
0. If this happens on any npm command, please reinstall.
### Examples
```
module.js:338
throw err;
^
Error: Cannot find module
```
### Related Issues
* [#14699](https://github.com/npm/npm/issues/14699)
## Shasum Check Fails
This is a common issue which used to be caused by caching issues. Nowadays, the cache has been improved, so it's likely to be an install issue, which can be caused by network problems (sometimes even [proxy issues](#proxy-and-networking-issues)), a node bug, or possibly some sort of npm bug.
### Steps to Fix
0. Try running `npm install` again. It may have been a momentary hiccup or corruption during package download.
0. Check http://status.npmjs.org/ for any potential current service outages.
0. If the shasum error specifically has `Actual: da39a3ee5e6b4b0d3255bfef95601890afd80709`, with this exact shasum, it means the package download was empty, which is certainly a networking issue.
0. Make sure your [network connection and proxy settings](#proxy-and-networking-issues) are ok.
0. Update your node version to the latest stable version.
### Examples
```
npm ERR! shasum check failed for C:\Users\some-user\AppData\Local\Temp\npm-9356-7
d74e411\registry.npmjs.org\some-package\-\some-package-1.0.0.tgz
npm ERR! Expected: 652294c14651db29fa93bd2d5ff2983a4f08c636
npm ERR! Actual: c45474b40e6a7474633ec6f2b0315feaf15c61f2
npm ERR! From: https://registry.npmjs.org/some-package/-/some-package-1.0.0.tgz
```
### Related Issues
* [#14720](https://github.com/npm/npm/issues/14720)
* [#13405](https://github.com/npm/npm/issues/13405)
## No Git
If your install fails and you see a message saying you don't have git installed, it should be resolved by installing git.
### Steps to Fix
0. [Install git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) following the instructions for your machine.
### Examples
npm ERR! not found: git
ENOGIT
### Related Issues
* [#11095](https://github.com/npm/npm/issues/11095)

15
deps/npm/bin/npm-cli.js

@ -25,10 +25,17 @@
unsupported.checkForUnsupportedNode()
if (!unsupported.checkVersion(process.version).unsupported) {
var updater = require('update-notifier')
var pkg = require('../package.json')
updater({pkg: pkg}).notify({defer: true})
}
var path = require('path')
var npm = require('../lib/npm.js')
var npmconf = require('../lib/config/core.js')
var errorHandler = require('../lib/utils/error-handler.js')
var output = require('../lib/utils/output.js')
var configDefs = npmconf.defs
var shorthands = configDefs.shorthands
@ -74,6 +81,12 @@
conf._exit = true
npm.load(conf, function (er) {
if (er) return errorHandler(er)
npm.commands[npm.command](npm.argv, errorHandler)
npm.commands[npm.command](npm.argv, function (err) {
// https://www.youtube.com/watch?v=7nfPu8qTiQU
if (!err && npm.config.get('ham-it-up')) {
output('\n 🎵 I Have the Honour to Be Your Obedient Servant,🎵 ~ npm 📜🖋\n')
}
errorHandler.apply(this, arguments)
})
})
})()

11
deps/npm/doc/cli/npm-adduser.md

@ -3,7 +3,7 @@ npm-adduser(1) -- Add a registry user account
## SYNOPSIS
npm adduser [--registry=url] [--scope=@orgname] [--always-auth]
npm adduser [--registry=url] [--scope=@orgname] [--always-auth] [--auth-type=legacy]
aliases: login, add-user
@ -66,6 +66,15 @@ different hostnames. See `always-auth` in `npm-config(7)` for more details on
always-auth. Registry-specific configuration of `always-auth` takes precedence
over any global configuration.
### auth-type
* Default: `'legacy'`
* Type: `'legacy'`, `'sso'`, `'saml'`, `'oauth'`
What authentication strategy to use with `adduser`/`login`. Some npm registries
(for example, npmE) might support alternative auth strategies besides classic
username/password entry in legacy npm.
## SEE ALSO
* npm-registry(7)

5
deps/npm/doc/cli/npm-unpublish.md

@ -27,6 +27,11 @@ Even if a package version is unpublished, that specific name and
version combination can never be reused. In order to publish the
package again, a new version number must be used.
With the default registry (`registry.npmjs.org`), unpublish is
only allowed with versions published in the last 24 hours. If you
are trying to unpublish a version published longer ago than that,
contact support@npmjs.com.
The scope is optional and follows the usual rules for `npm-scope(7)`.
## SEE ALSO

24
deps/npm/doc/misc/npm-config.md

@ -137,6 +137,13 @@ even for `GET` requests.
When "dev" or "development" and running local `npm shrinkwrap`,
`npm outdated`, or `npm update`, is an alias for `--dev`.
### auth-type
* Default: `'legacy'`
* Type: `'legacy'`, `'sso'`, `'saml'`, `'oauth'`
What authentication strategy to use with `adduser`/`login`.
### bin-links
* Default: `true`
@ -609,7 +616,7 @@ Any "%s" in the message will be replaced with the version number.
### metrics-registry
* Default: "https://registry.npmjs.org/"
* Default: The value of `registry` (which defaults to "https://registry.npmjs.org/")
* Type: String
The registry you want to send cli metrics to if `send-metrics` is true.
@ -904,6 +911,21 @@ using `-s` to add a signature.
Note that git requires you to have set up GPG keys in your git configs
for this to work properly.
### sso-poll-frequency
* Default: 500
* Type: Number
When used with SSO-enabled `auth-type`s, configures how regularly the registry
should be polled while the user is completing authentication.
### sso-type
* Default: 'oauth'
* Type: 'oauth', 'saml', or null
If `--auth-type=sso`, the type of SSO type to use.
### strict-ssl
* Default: true

4
deps/npm/html/doc/README.html

@ -62,7 +62,7 @@ experience if you run a recent version of npm. To upgrade, either use <a href="h
upgrade tool</a>,
<a href="https://nodejs.org/en/download/">download a new version of Node</a>,
or follow the Windows upgrade instructions in the
<a href="https://github.com/npm/npm/wiki/Troubleshooting#upgrading-on-windows">npm Troubleshooting Guide</a>.</p>
<a href="./TROUBLESHOOTING.md">npm Troubleshooting Guide</a>.</p>
<p>If that&#39;s not fancy enough for you, then you can fetch the code with
git, and mess with it directly.</p>
<h2 id="installing-on-cygwin">Installing on Cygwin</h2>
@ -126,5 +126,5 @@ will no doubt tell you to put the output in a gist or email.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer"><a href="../doc/README.html">README</a> &mdash; npm@4.2.0</p>
<p id="footer"><a href="../doc/README.html">README</a> &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-access.html

@ -84,5 +84,5 @@ with an HTTP 402 status code (logically enough), unless you use
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-access &mdash; npm@4.2.0</p>
<p id="footer">npm-access &mdash; npm@4.5.0</p>

12
deps/npm/html/doc/cli/npm-adduser.html

@ -11,7 +11,7 @@
<h1><a href="../cli/npm-adduser.html">npm-adduser</a></h1> <p>Add a registry user account</p>
<h2 id="synopsis">SYNOPSIS</h2>
<pre><code>npm adduser [--registry=url] [--scope=@orgname] [--always-auth]
<pre><code>npm adduser [--registry=url] [--scope=@orgname] [--always-auth] [--auth-type=legacy]
aliases: login, add-user
</code></pre><h2 id="description">DESCRIPTION</h2>
@ -52,6 +52,14 @@ private registries where metadata and package tarballs are stored on hosts with
different hostnames. See <code>always-auth</code> in <code><a href="../misc/npm-config.html">npm-config(7)</a></code> for more details on
always-auth. Registry-specific configuration of <code>always-auth</code> takes precedence
over any global configuration.</p>
<h3 id="auth-type">auth-type</h3>
<ul>
<li>Default: <code>&#39;legacy&#39;</code></li>
<li>Type: <code>&#39;legacy&#39;</code>, <code>&#39;sso&#39;</code>, <code>&#39;saml&#39;</code>, <code>&#39;oauth&#39;</code></li>
</ul>
<p>What authentication strategy to use with <code>adduser</code>/<code>login</code>. Some npm registries
(for example, npmE) might support alternative auth strategies besides classic
username/password entry in legacy npm.</p>
<h2 id="see-also">SEE ALSO</h2>
<ul>
<li><a href="../misc/npm-registry.html">npm-registry(7)</a></li>
@ -73,5 +81,5 @@ over any global configuration.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-adduser &mdash; npm@4.2.0</p>
<p id="footer">npm-adduser &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-bin.html

@ -35,5 +35,5 @@
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-bin &mdash; npm@4.2.0</p>
<p id="footer">npm-bin &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-bugs.html

@ -55,5 +55,5 @@ a <code>package.json</code> in the current folder and use the <code>name</code>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-bugs &mdash; npm@4.2.0</p>
<p id="footer">npm-bugs &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-build.html

@ -40,5 +40,5 @@ directly, run:</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-build &mdash; npm@4.2.0</p>
<p id="footer">npm-build &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-bundle.html

@ -31,5 +31,5 @@ install packages into the local space.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-bundle &mdash; npm@4.2.0</p>
<p id="footer">npm-bundle &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-cache.html

@ -82,5 +82,5 @@ they do not make an HTTP request to the registry.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-cache &mdash; npm@4.2.0</p>
<p id="footer">npm-cache &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-completion.html

@ -43,5 +43,5 @@ completions based on the arguments.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-completion &mdash; npm@4.2.0</p>
<p id="footer">npm-completion &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-config.html

@ -67,5 +67,5 @@ global config.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-config &mdash; npm@4.2.0</p>
<p id="footer">npm-config &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-dedupe.html

@ -61,5 +61,5 @@ result in new modules being installed.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-dedupe &mdash; npm@4.2.0</p>
<p id="footer">npm-dedupe &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-deprecate.html

@ -38,5 +38,5 @@ something like this:</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-deprecate &mdash; npm@4.2.0</p>
<p id="footer">npm-deprecate &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-dist-tag.html

@ -86,5 +86,5 @@ begin with a number or the letter <code>v</code>.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-dist-tag &mdash; npm@4.2.0</p>
<p id="footer">npm-dist-tag &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-docs.html

@ -56,5 +56,5 @@ the current folder and use the <code>name</code> property.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-docs &mdash; npm@4.2.0</p>
<p id="footer">npm-docs &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-doctor.html

@ -103,4 +103,4 @@ cache, you should probably run <code>npm cache clean</code> and reset the cache.
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-doctor &mdash; npm@4.2.0</p>
<p id="footer">npm-doctor &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-edit.html

@ -49,5 +49,5 @@ or <code>&quot;notepad&quot;</code> on Windows.</li>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-edit &mdash; npm@4.2.0</p>
<p id="footer">npm-edit &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-explore.html

@ -49,5 +49,5 @@ Windows</li>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-explore &mdash; npm@4.2.0</p>
<p id="footer">npm-explore &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-help-search.html

@ -45,5 +45,5 @@ where the terms were found in the documentation.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-help-search &mdash; npm@4.2.0</p>
<p id="footer">npm-help-search &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-help.html

@ -50,5 +50,5 @@ matches are equivalent to specifying a topic name.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-help &mdash; npm@4.2.0</p>
<p id="footer">npm-help &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-init.html

@ -48,5 +48,5 @@ defaults and not prompt you for any options.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-init &mdash; npm@4.2.0</p>
<p id="footer">npm-init &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-install-test.html

@ -42,5 +42,5 @@ takes exactly the same arguments as <code>npm install</code>.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-install-test &mdash; npm@4.2.0</p>
<p id="footer">npm-install-test &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-install.html

@ -316,5 +316,5 @@ affects a real use-case, it will be investigated.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-install &mdash; npm@4.2.0</p>
<p id="footer">npm-install &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-link.html

@ -74,5 +74,5 @@ include that scope, e.g.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-link &mdash; npm@4.2.0</p>
<p id="footer">npm-link &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-logout.html

@ -51,5 +51,5 @@ it takes precedence.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-logout &mdash; npm@4.2.0</p>
<p id="footer">npm-logout &mdash; npm@4.5.0</p>

4
deps/npm/html/doc/cli/npm-ls.html

@ -21,7 +21,7 @@ installed, as well as their dependencies, in a tree-structure.</p>
limit the results to only the paths to the packages named. Note that
nested packages will <em>also</em> show the paths to the specified packages.
For example, running <code>npm ls promzard</code> in npm&#39;s source tree will show:</p>
<pre><code>npm@4.2.0 /path/to/npm
<pre><code>npm@4.5.0 /path/to/npm
└─┬ init-package-json@0.0.4
└── promzard@0.1.5
</code></pre><p>It will print out extraneous, missing, and invalid packages.</p>
@ -104,5 +104,5 @@ project.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-ls &mdash; npm@4.2.0</p>
<p id="footer">npm-ls &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-outdated.html

@ -116,5 +116,5 @@ project.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-outdated &mdash; npm@4.2.0</p>
<p id="footer">npm-outdated &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-owner.html

@ -51,5 +51,5 @@ that is not implemented at this time.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-owner &mdash; npm@4.2.0</p>
<p id="footer">npm-owner &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-pack.html

@ -41,5 +41,5 @@ overwritten the second time.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-pack &mdash; npm@4.2.0</p>
<p id="footer">npm-pack &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-ping.html

@ -32,5 +32,5 @@
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-ping &mdash; npm@4.2.0</p>
<p id="footer">npm-ping &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-prefix.html

@ -38,5 +38,5 @@ to contain a package.json file unless <code>-g</code> is also specified.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-prefix &mdash; npm@4.2.0</p>
<p id="footer">npm-prefix &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-prune.html

@ -40,5 +40,5 @@ negate <code>NODE_ENV</code> being set to <code>production</code>.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-prune &mdash; npm@4.2.0</p>
<p id="footer">npm-prune &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-publish.html

@ -76,5 +76,5 @@ packs them into a tarball to be uploaded to the registry.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-publish &mdash; npm@4.2.0</p>
<p id="footer">npm-publish &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-rebuild.html

@ -35,5 +35,5 @@ the new binary.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-rebuild &mdash; npm@4.2.0</p>
<p id="footer">npm-rebuild &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-repo.html

@ -41,5 +41,5 @@ a <code>package.json</code> in the current folder and use the <code>name</code>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-repo &mdash; npm@4.2.0</p>
<p id="footer">npm-repo &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-restart.html

@ -53,5 +53,5 @@ behavior will be accompanied by an increase in major version number</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-restart &mdash; npm@4.2.0</p>
<p id="footer">npm-restart &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-root.html

@ -35,5 +35,5 @@
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-root &mdash; npm@4.2.0</p>
<p id="footer">npm-root &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-run-script.html

@ -66,5 +66,5 @@ you will be given a warning to run <code>npm install</code>, just in case you&#3
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-run-script &mdash; npm@4.2.0</p>
<p id="footer">npm-run-script &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-search.html

@ -109,5 +109,5 @@ setting.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-search &mdash; npm@4.2.0</p>
<p id="footer">npm-search &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-shrinkwrap.html

@ -180,5 +180,5 @@ contents rather than versions.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-shrinkwrap &mdash; npm@4.2.0</p>
<p id="footer">npm-shrinkwrap &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-star.html

@ -36,5 +36,5 @@ a vaguely positive way to show that you care.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-star &mdash; npm@4.2.0</p>
<p id="footer">npm-star &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-stars.html

@ -36,5 +36,5 @@ you will most certainly enjoy this command.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-stars &mdash; npm@4.2.0</p>
<p id="footer">npm-stars &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-start.html

@ -39,5 +39,5 @@ more details.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-start &mdash; npm@4.2.0</p>
<p id="footer">npm-start &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-stop.html

@ -34,5 +34,5 @@
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-stop &mdash; npm@4.2.0</p>
<p id="footer">npm-stop &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-team.html

@ -67,5 +67,5 @@ use the <code>npm access</code> command to grant or revoke the appropriate permi
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-team &mdash; npm@4.2.0</p>
<p id="footer">npm-team &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-test.html

@ -36,5 +36,5 @@
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-test &mdash; npm@4.2.0</p>
<p id="footer">npm-test &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-uninstall.html

@ -60,5 +60,5 @@ npm uninstall dtrace-provider --save-optional
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-uninstall &mdash; npm@4.2.0</p>
<p id="footer">npm-uninstall &mdash; npm@4.5.0</p>

6
deps/npm/html/doc/cli/npm-unpublish.html

@ -26,6 +26,10 @@ the root package entry is removed from the registry entirely.</p>
<p>Even if a package version is unpublished, that specific name and
version combination can never be reused. In order to publish the
package again, a new version number must be used.</p>
<p>With the default registry (<code>registry.npmjs.org</code>), unpublish is
only allowed with versions published in the last 24 hours. If you
are trying to unpublish a version published longer ago than that,
contact support@npmjs.com.</p>
<p>The scope is optional and follows the usual rules for <code><a href="../misc/npm-scope.html">npm-scope(7)</a></code>.</p>
<h2 id="see-also">SEE ALSO</h2>
<ul>
@ -47,5 +51,5 @@ package again, a new version number must be used.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-unpublish &mdash; npm@4.2.0</p>
<p id="footer">npm-unpublish &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-update.html

@ -118,5 +118,5 @@ be <em>downgraded</em>.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-update &mdash; npm@4.2.0</p>
<p id="footer">npm-update &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-version.html

@ -107,5 +107,5 @@ and tag up to the server, and deletes the <code>build/temp</code> directory.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-version &mdash; npm@4.2.0</p>
<p id="footer">npm-version &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-view.html

@ -86,5 +86,5 @@ the field name.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-view &mdash; npm@4.2.0</p>
<p id="footer">npm-view &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/cli/npm-whoami.html

@ -33,5 +33,5 @@
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-whoami &mdash; npm@4.2.0</p>
<p id="footer">npm-whoami &mdash; npm@4.5.0</p>

6
deps/npm/html/doc/cli/npm.html

@ -13,7 +13,7 @@
<h2 id="synopsis">SYNOPSIS</h2>
<pre><code>npm &lt;command&gt; [args]
</code></pre><h2 id="version">VERSION</h2>
<p>4.2.0</p>
<p>4.5.0</p>
<h2 id="description">DESCRIPTION</h2>
<p>npm is the package manager for the Node JavaScript platform. It puts
modules in place so that node can find them, and manages dependency
@ -126,7 +126,7 @@ will no doubt tell you to put the output in a gist or email.</p>
<p><a href="http://blog.izs.me/">Isaac Z. Schlueter</a> ::
<a href="https://github.com/isaacs/">isaacs</a> ::
<a href="http://twitter.com/izs">@izs</a> ::
<a href="&#x6d;&#x61;&#105;&#x6c;&#116;&#111;&#58;&#105;&#64;&#x69;&#x7a;&#115;&#x2e;&#x6d;&#x65;">&#105;&#64;&#x69;&#x7a;&#115;&#x2e;&#x6d;&#x65;</a></p>
<a href="&#109;&#x61;&#105;&#x6c;&#x74;&#x6f;&#58;&#105;&#x40;&#105;&#x7a;&#x73;&#x2e;&#x6d;&#x65;">&#105;&#x40;&#105;&#x7a;&#x73;&#x2e;&#x6d;&#x65;</a></p>
<h2 id="see-also">SEE ALSO</h2>
<ul>
<li><a href="../cli/npm-help.html">npm-help(1)</a></li>
@ -150,5 +150,5 @@ will no doubt tell you to put the output in a gist or email.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm &mdash; npm@4.2.0</p>
<p id="footer">npm &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/files/npm-folders.html

@ -182,5 +182,5 @@ cannot be found elsewhere. See <code><a href="../files/package.json.html">packa
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-folders &mdash; npm@4.2.0</p>
<p id="footer">npm-folders &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/files/npm-global.html

@ -182,5 +182,5 @@ cannot be found elsewhere. See <code><a href="../files/package.json.html">packa
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-folders &mdash; npm@4.2.0</p>
<p id="footer">npm-folders &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/files/npm-json.html

@ -586,5 +586,5 @@ ignored.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">package.json &mdash; npm@4.2.0</p>
<p id="footer">package.json &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/files/npmrc.html

@ -85,5 +85,5 @@ manner.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npmrc &mdash; npm@4.2.0</p>
<p id="footer">npmrc &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/files/package.json.html

@ -586,5 +586,5 @@ ignored.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">package.json &mdash; npm@4.2.0</p>
<p id="footer">package.json &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/index.html

@ -162,5 +162,5 @@
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-index &mdash; npm@4.2.0</p>
<p id="footer">npm-index &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/misc/npm-coding-style.html

@ -153,5 +153,5 @@ set to anything.&quot;</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-coding-style &mdash; npm@4.2.0</p>
<p id="footer">npm-coding-style &mdash; npm@4.5.0</p>

23
deps/npm/html/doc/misc/npm-config.html

@ -119,6 +119,12 @@ even for <code>GET</code> requests.</p>
</ul>
<p>When &quot;dev&quot; or &quot;development&quot; and running local <code>npm shrinkwrap</code>,
<code>npm outdated</code>, or <code>npm update</code>, is an alias for <code>--dev</code>.</p>
<h3 id="auth-type">auth-type</h3>
<ul>
<li>Default: <code>&#39;legacy&#39;</code></li>
<li>Type: <code>&#39;legacy&#39;</code>, <code>&#39;sso&#39;</code>, <code>&#39;saml&#39;</code>, <code>&#39;oauth&#39;</code></li>
</ul>
<p>What authentication strategy to use with <code>adduser</code>/<code>login</code>.</p>
<h3 id="bin-links">bin-links</h3>
<ul>
<li>Default: <code>true</code></li>
@ -525,7 +531,7 @@ combination). Passed to the <code>http</code> <code>Agent</code> used to make th
<p>Any &quot;%s&quot; in the message will be replaced with the version number.</p>
<h3 id="metrics-registry">metrics-registry</h3>
<ul>
<li>Default: &quot;<a href="https://registry.npmjs.org/">https://registry.npmjs.org/</a>&quot;</li>
<li>Default: The value of <code>registry</code> (which defaults to &quot;<a href="https://registry.npmjs.org/">https://registry.npmjs.org/</a>&quot;)</li>
<li>Type: String</li>
</ul>
<p>The registry you want to send cli metrics to if <code>send-metrics</code> is true.</p>
@ -774,6 +780,19 @@ installing.</p>
using <code>-s</code> to add a signature.</p>
<p>Note that git requires you to have set up GPG keys in your git configs
for this to work properly.</p>
<h3 id="sso-poll-frequency">sso-poll-frequency</h3>
<ul>
<li>Default: 500</li>
<li>Type: Number</li>
</ul>
<p>When used with SSO-enabled <code>auth-type</code>s, configures how regularly the registry
should be polled while the user is completing authentication.</p>
<h3 id="sso-type">sso-type</h3>
<ul>
<li>Default: &#39;oauth&#39;</li>
<li>Type: &#39;oauth&#39;, &#39;saml&#39;, or null</li>
</ul>
<p>If <code>--auth-type=sso</code>, the type of SSO type to use.</p>
<h3 id="strict-ssl">strict-ssl</h3>
<ul>
<li>Default: true</li>
@ -901,5 +920,5 @@ exit successfully.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-config &mdash; npm@4.2.0</p>
<p id="footer">npm-config &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/misc/npm-developers.html

@ -194,5 +194,5 @@ from a fresh checkout.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-developers &mdash; npm@4.2.0</p>
<p id="footer">npm-developers &mdash; npm@4.5.0</p>

12
deps/npm/html/doc/misc/npm-disputes.html

@ -20,7 +20,7 @@ Conduct.</p>
<h2 id="tl-dr">TL;DR</h2>
<ol>
<li>Get the author email with <code>npm owner ls &lt;pkgname&gt;</code></li>
<li>Email the author, CC <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#x3a;&#x73;&#117;&#x70;&#112;&#111;&#x72;&#x74;&#64;&#x6e;&#112;&#109;&#106;&#115;&#46;&#99;&#111;&#x6d;">&#x73;&#117;&#x70;&#112;&#111;&#x72;&#x74;&#64;&#x6e;&#112;&#109;&#106;&#115;&#46;&#99;&#111;&#x6d;</a></li>
<li>Email the author, CC <a href="&#109;&#97;&#105;&#108;&#x74;&#x6f;&#x3a;&#115;&#x75;&#x70;&#112;&#111;&#x72;&#x74;&#64;&#110;&#112;&#109;&#x6a;&#x73;&#x2e;&#99;&#x6f;&#x6d;">&#115;&#x75;&#x70;&#112;&#111;&#x72;&#x74;&#64;&#110;&#112;&#109;&#x6a;&#x73;&#x2e;&#99;&#x6f;&#x6d;</a></li>
<li>After a few weeks, if there&#39;s no resolution, we&#39;ll sort it out.</li>
</ol>
<p>Don&#39;t squat on package names. Publish code or move out of the way.</p>
@ -55,12 +55,12 @@ because Yusuf&#39;s <code>foo</code> is in the way.</p>
</li>
<li>Alice emails Yusuf, explaining the situation <strong>as respectfully as possible</strong>,
and what she would like to do with the module name. She adds the npm support
staff <a href="&#109;&#97;&#x69;&#108;&#x74;&#111;&#x3a;&#x73;&#117;&#x70;&#x70;&#x6f;&#x72;&#116;&#x40;&#110;&#112;&#109;&#x6a;&#x73;&#x2e;&#x63;&#111;&#109;">&#x73;&#117;&#x70;&#x70;&#x6f;&#x72;&#116;&#x40;&#110;&#112;&#109;&#x6a;&#x73;&#x2e;&#x63;&#111;&#109;</a> to the CC list of the email. Mention in the email
staff <a href="&#109;&#x61;&#x69;&#x6c;&#116;&#111;&#x3a;&#x73;&#x75;&#112;&#112;&#x6f;&#114;&#116;&#64;&#110;&#112;&#109;&#x6a;&#115;&#x2e;&#x63;&#x6f;&#109;">&#x73;&#x75;&#112;&#112;&#x6f;&#114;&#116;&#64;&#110;&#112;&#109;&#x6a;&#115;&#x2e;&#x63;&#x6f;&#109;</a> to the CC list of the email. Mention in the email
that Yusuf can run npm owner <code>add alice foo</code> to add Alice as an owner of the
foo package.</li>
<li>After a reasonable amount of time, if Yusuf has not responded, or if Yusuf
and Alice can&#39;t come to any sort of resolution, email support
<a href="&#x6d;&#x61;&#105;&#x6c;&#116;&#111;&#x3a;&#x73;&#117;&#x70;&#x70;&#x6f;&#114;&#x74;&#64;&#110;&#112;&#109;&#x6a;&#x73;&#x2e;&#x63;&#111;&#x6d;">&#x73;&#117;&#x70;&#x70;&#x6f;&#114;&#x74;&#64;&#110;&#112;&#109;&#x6a;&#x73;&#x2e;&#x63;&#111;&#x6d;</a> and we&#39;ll sort it out. (&quot;Reasonable&quot; is usually at least
<a href="&#109;&#97;&#105;&#x6c;&#x74;&#111;&#58;&#115;&#x75;&#112;&#x70;&#111;&#x72;&#x74;&#x40;&#110;&#x70;&#109;&#x6a;&#115;&#46;&#99;&#x6f;&#109;">&#115;&#x75;&#112;&#x70;&#111;&#x72;&#x74;&#x40;&#110;&#x70;&#109;&#x6a;&#115;&#46;&#99;&#x6f;&#109;</a> and we&#39;ll sort it out. (&quot;Reasonable&quot; is usually at least
4 weeks.)</li>
</ol>
<h2 id="reasoning">REASONING</h2>
@ -96,12 +96,12 @@ application database or otherwise putting non-packagey things into it.</li>
<a href="https://www.npmjs.com/policies/conduct">Code of Conduct</a> such as hateful
language, pornographic content, or harassment.</li>
</ol>
<p>If you see bad behavior like this, please report it to <a href="&#109;&#97;&#105;&#x6c;&#x74;&#x6f;&#x3a;&#97;&#98;&#117;&#x73;&#101;&#64;&#x6e;&#x70;&#x6d;&#106;&#115;&#x2e;&#x63;&#111;&#x6d;">&#97;&#98;&#117;&#x73;&#101;&#64;&#x6e;&#x70;&#x6d;&#106;&#115;&#x2e;&#x63;&#111;&#x6d;</a> right
<p>If you see bad behavior like this, please report it to <a href="&#x6d;&#x61;&#105;&#x6c;&#x74;&#111;&#x3a;&#x61;&#98;&#117;&#115;&#x65;&#64;&#x6e;&#112;&#x6d;&#106;&#115;&#46;&#99;&#111;&#x6d;">&#x61;&#98;&#117;&#115;&#x65;&#64;&#x6e;&#112;&#x6d;&#106;&#115;&#46;&#99;&#111;&#x6d;</a> right
away. <strong>You are never expected to resolve abusive behavior on your own. We are
here to help.</strong></p>
<h2 id="trademarks">TRADEMARKS</h2>
<p>If you think another npm publisher is infringing your trademark, such as by
using a confusingly similar package name, email <a href="&#109;&#x61;&#x69;&#x6c;&#x74;&#111;&#x3a;&#x61;&#98;&#x75;&#115;&#101;&#x40;&#x6e;&#x70;&#109;&#106;&#x73;&#46;&#x63;&#x6f;&#x6d;">&#x61;&#98;&#x75;&#115;&#101;&#x40;&#x6e;&#x70;&#109;&#106;&#x73;&#46;&#x63;&#x6f;&#x6d;</a> with a link to
using a confusingly similar package name, email <a href="&#109;&#97;&#105;&#108;&#x74;&#111;&#58;&#97;&#98;&#117;&#115;&#101;&#64;&#110;&#x70;&#x6d;&#x6a;&#x73;&#46;&#x63;&#x6f;&#x6d;">&#97;&#98;&#117;&#115;&#101;&#64;&#110;&#x70;&#x6d;&#x6a;&#x73;&#46;&#x63;&#x6f;&#x6d;</a> with a link to
the package or user account on <a href="https://npmjs.com">https://npmjs.com</a>. Attach a
copy of your trademark registration certificate.</p>
<p>If we see that the package&#39;s publisher is intentionally misleading others by
@ -134,5 +134,5 @@ License.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-disputes &mdash; npm@4.2.0</p>
<p id="footer">npm-disputes &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/misc/npm-index.html

@ -162,5 +162,5 @@
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-index &mdash; npm@4.2.0</p>
<p id="footer">npm-index &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/misc/npm-orgs.html

@ -86,5 +86,5 @@
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-orgs &mdash; npm@4.2.0</p>
<p id="footer">npm-orgs &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/misc/npm-registry.html

@ -90,5 +90,5 @@ effectively implement the entire CouchDB API anyway.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-registry &mdash; npm@4.2.0</p>
<p id="footer">npm-registry &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/misc/npm-scope.html

@ -99,5 +99,5 @@ that registry instead.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-scope &mdash; npm@4.2.0</p>
<p id="footer">npm-scope &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/misc/npm-scripts.html

@ -237,5 +237,5 @@ scripts is for compilation which must be done on the target architecture.</li>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">npm-scripts &mdash; npm@4.2.0</p>
<p id="footer">npm-scripts &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/misc/removing-npm.html

@ -57,5 +57,5 @@ modules. To track those down, you can do the following:</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">removing-npm &mdash; npm@4.2.0</p>
<p id="footer">removing-npm &mdash; npm@4.5.0</p>

2
deps/npm/html/doc/misc/semver.html

@ -325,5 +325,5 @@ range, use the <code>satisfies(version, range)</code> function.</p>
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6>&nbsp;</td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)">&nbsp;</td></tr>
<tr><td colspan=5 style="width:50px;height:10px;background:#fff">&nbsp;</td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4>&nbsp;</td><td style="width:90px;height:10px;background:#fff" colspan=9>&nbsp;</td></tr>
</table>
<p id="footer">semver &mdash; npm@4.2.0</p>
<p id="footer">semver &mdash; npm@4.5.0</p>

159
deps/npm/lib/adduser.js

@ -2,11 +2,7 @@ module.exports = adduser
var log = require('npmlog')
var npm = require('./npm.js')
var read = require('read')
var userValidate = require('npm-user-validate')
var output = require('./utils/output')
var usage = require('./utils/usage')
var chain = require('slide').chain
var crypto
try {
@ -15,7 +11,7 @@ try {
adduser.usage = usage(
'adduser',
'npm adduser [--registry=url] [--scope=@orgname] [--always-auth]'
'npm adduser [--registry=url] [--scope=@orgname] [--auth-type=legacy] [--always-auth]'
)
function adduser (args, cb) {
@ -25,154 +21,29 @@ function adduser (args, cb) {
))
}
var creds = npm.config.getCredentialsByURI(npm.config.get('registry'))
var c = {
u: creds.username || '',
p: creds.password || '',
e: creds.email || ''
}
var u = {}
log.disableProgress()
chain([
[readUsername, c, u],
[readPassword, c, u],
[readEmail, c, u],
[save, c, u]
], cb)
}
function readUsername (c, u, cb) {
var v = userValidate.username
read({prompt: 'Username: ', default: c.u || ''}, function (er, un) {
if (er) {
return cb(er.message === 'cancelled' ? er.message : er)
}
// make sure it's valid. we have to do this here, because
// couchdb will only ever say "bad password" with a 401 when
// you try to PUT a _users record that the validate_doc_update
// rejects for *any* reason.
if (!un) {
return readUsername(c, u, cb)
}
var error = v(un)
if (error) {
log.warn(error.message)
return readUsername(c, u, cb)
}
c.changed = c.u !== un
u.u = un
cb(er)
})
}
function readPassword (c, u, cb) {
var v = userValidate.pw
var prompt
if (c.p && !c.changed) {
prompt = 'Password: (or leave unchanged) '
} else {
prompt = 'Password: '
}
read({prompt: prompt, silent: true}, function (er, pw) {
if (er) {
return cb(er.message === 'cancelled' ? er.message : er)
}
if (!c.changed && pw === '') {
// when the username was not changed,
// empty response means "use the old value"
pw = c.p
}
if (!pw) {
return readPassword(c, u, cb)
}
var error = v(pw)
if (error) {
log.warn(error.message)
return readPassword(c, u, cb)
}
c.changed = c.changed || c.p !== pw
u.p = pw
cb(er)
})
}
function readEmail (c, u, cb) {
var v = userValidate.email
var r = { prompt: 'Email: (this IS public) ', default: c.e || '' }
read(r, function (er, em) {
if (er) {
return cb(er.message === 'cancelled' ? er.message : er)
}
if (!em) {
return readEmail(c, u, cb)
}
var error = v(em)
if (error) {
log.warn(error.message)
return readEmail(c, u, cb)
}
u.e = em
cb(er)
})
}
function save (c, u, cb) {
// save existing configs, but yank off for this PUT
var uri = npm.config.get('registry')
var registry = npm.config.get('registry')
var scope = npm.config.get('scope')
var creds = npm.config.getCredentialsByURI(npm.config.get('registry'))
// there may be a saved scope and no --registry (for login)
if (scope) {
var scopedRegistry = npm.config.get(scope + ':registry')
var cliRegistry = npm.config.get('registry', 'cli')
if (scopedRegistry && !cliRegistry) uri = scopedRegistry
}
var params = {
auth: {
username: u.u,
password: u.p,
email: u.e
}
if (scopedRegistry && !cliRegistry) registry = scopedRegistry
}
npm.registry.adduser(uri, params, function (er, doc) {
if (er) return cb(er)
// don't want this polluting the configuration
npm.config.del('_token', 'user')
if (scope) npm.config.set(scope + ':registry', uri, 'user')
log.disableProgress()
if (doc && doc.token) {
npm.config.setCredentialsByURI(uri, {
token: doc.token
})
} else {
npm.config.setCredentialsByURI(uri, {
username: u.u,
password: u.p,
email: u.e,
alwaysAuth: npm.config.get('always-auth')
})
}
try {
var auth = require('./auth/' + npm.config.get('auth-type'))
} catch (e) {
return cb(new Error('no such auth module'))
}
auth.login(creds, registry, scope, function (err, newCreds) {
if (err) return cb(err)
log.info('adduser', 'Authorized user %s', u.u)
var scopeMessage = scope ? ' to scope ' + scope : ''
output('Logged in as %s%s on %s.', u.u, scopeMessage, uri)
npm.config.del('_token', 'user') // prevent legacy pollution
if (scope) npm.config.set(scope + ':registry', registry, 'user')
npm.config.setCredentialsByURI(registry, newCreds)
npm.config.save('user', cb)
})
}

142
deps/npm/lib/auth/legacy.js

@ -0,0 +1,142 @@
var log = require('npmlog')
var npm = require('../npm.js')
var read = require('read')
var userValidate = require('npm-user-validate')
var output = require('../utils/output')
var chain = require('slide').chain
module.exports.login = function login (creds, registry, scope, cb) {
var c = {
u: creds.username || '',
p: creds.password || '',
e: creds.email || ''
}
var u = {}
chain([
[readUsername, c, u],
[readPassword, c, u],
[readEmail, c, u],
[save, c, u, registry, scope]
], function (err, res) {
cb(err, res && res[res.length - 1])
})
}
function readUsername (c, u, cb) {
var v = userValidate.username
read({prompt: 'Username: ', default: c.u || ''}, function (er, un) {
if (er) {
return cb(er.message === 'cancelled' ? er.message : er)
}
// make sure it's valid. we have to do this here, because
// couchdb will only ever say "bad password" with a 401 when
// you try to PUT a _users record that the validate_doc_update
// rejects for *any* reason.
if (!un) {
return readUsername(c, u, cb)
}
var error = v(un)
if (error) {
log.warn(error.message)
return readUsername(c, u, cb)
}
c.changed = c.u !== un
u.u = un
cb(er)
})
}
function readPassword (c, u, cb) {
var v = userValidate.pw
var prompt
if (c.p && !c.changed) {
prompt = 'Password: (or leave unchanged) '
} else {
prompt = 'Password: '
}
read({prompt: prompt, silent: true}, function (er, pw) {
if (er) {
return cb(er.message === 'cancelled' ? er.message : er)
}
if (!c.changed && pw === '') {
// when the username was not changed,
// empty response means "use the old value"
pw = c.p
}
if (!pw) {
return readPassword(c, u, cb)
}
var error = v(pw)
if (error) {
log.warn(error.message)
return readPassword(c, u, cb)
}
c.changed = c.changed || c.p !== pw
u.p = pw
cb(er)
})
}
function readEmail (c, u, cb) {
var v = userValidate.email
var r = { prompt: 'Email: (this IS public) ', default: c.e || '' }
read(r, function (er, em) {
if (er) {
return cb(er.message === 'cancelled' ? er.message : er)
}
if (!em) {
return readEmail(c, u, cb)
}
var error = v(em)
if (error) {
log.warn(error.message)
return readEmail(c, u, cb)
}
u.e = em
cb(er)
})
}
function save (c, u, registry, scope, cb) {
var params = {
auth: {
username: u.u,
password: u.p,
email: u.e
}
}
npm.registry.adduser(registry, params, function (er, doc) {
if (er) return cb(er)
var newCreds = (doc && doc.token)
? {
token: doc.token
}
: {
username: u.u,
password: u.p,
email: u.e,
alwaysAuth: npm.config.get('always-auth')
}
log.info('adduser', 'Authorized user %s', u.u)
var scopeMessage = scope ? ' to scope ' + scope : ''
output('Logged in as %s%s on %s.', u.u, scopeMessage, registry)
cb(null, newCreds)
})
}

7
deps/npm/lib/auth/oauth.js

@ -0,0 +1,7 @@
var ssoAuth = require('./sso')
var npm = require('../npm')
module.exports.login = function login () {
npm.config.set('sso-type', 'oauth')
ssoAuth.login.apply(this, arguments)
}

7
deps/npm/lib/auth/saml.js

@ -0,0 +1,7 @@
var ssoAuth = require('./sso')
var npm = require('../npm')
module.exports.login = function login () {
npm.config.set('sso-type', 'saml')
ssoAuth.login.apply(this, arguments)
}

59
deps/npm/lib/auth/sso.js

@ -0,0 +1,59 @@
var log = require('npmlog')
var npm = require('../npm.js')
var output = require('../utils/output')
var opener = require('opener')
module.exports.login = function login (creds, registry, scope, cb) {
var ssoType = npm.config.get('sso-type')
if (!ssoType) { return cb(new Error('Missing option: sso-type')) }
var params = {
// We're reusing the legacy login endpoint, so we need some dummy
// stuff here to pass validation. They're never used.
auth: {
username: 'npm_' + ssoType + '_auth_dummy_user',
password: 'placeholder',
email: 'support@npmjs.com',
authType: ssoType
}
}
npm.registry.adduser(registry, params, function (er, doc) {
if (er) return cb(er)
if (!doc || !doc.token) return cb(new Error('no SSO token returned'))
if (!doc.sso) return cb(new Error('no SSO URL returned by services'))
output('If your browser doesn\'t open, visit ' +
doc.sso +
' to complete authentication')
opener(doc.sso, { command: npm.config.get('browser') }, function () {
pollForSession(registry, doc.token, function (err, username) {
if (err) return cb(err)
log.info('adduser', 'Authorized user %s', username)
var scopeMessage = scope ? ' to scope ' + scope : ''
output('Logged in as %s%s on %s.', username, scopeMessage, registry)
cb(null, { token: doc.token })
})
})
})
}
function pollForSession (registry, token, cb) {
log.info('adduser', 'Polling for validated SSO session')
npm.registry.whoami(registry, {
auth: {
token: token
}
}, function (er, username) {
if (er && er.statusCode !== 401) {
cb(er)
} else if (!username) {
setTimeout(function () {
pollForSession(registry, token, cb)
}, npm.config.get('sso-poll-frequency'))
} else {
cb(null, username)
}
})
}

2
deps/npm/lib/bugs.js

@ -19,7 +19,7 @@ bugs.completion = function (opts, cb) {
function bugs (args, cb) {
var n = args.length ? args[0] : '.'
fetchPackageMetadata(n, '.', function (er, d) {
fetchPackageMetadata(n, '.', {fullMetadata: true}, function (er, d) {
if (er) return cb(er)
var url = d.bugs && ((typeof d.bugs === 'string') ? d.bugs : d.bugs.url)

2
deps/npm/lib/config/core.js

@ -208,7 +208,7 @@ inherits(Conf, CC)
function Conf (base) {
if (!(this instanceof Conf)) return new Conf(base)
CC.apply(this)
CC.call(this)
if (base) {
if (base instanceof Conf) {

12
deps/npm/lib/config/defaults.js

@ -108,6 +108,7 @@ Object.defineProperty(exports, 'defaults', {get: function () {
access: null,
'always-auth': false,
also: null,
'auth-type': 'legacy',
'bin-links': true,
browser: null,
@ -148,6 +149,7 @@ Object.defineProperty(exports, 'defaults', {get: function () {
'global-style': false,
group: process.platform === 'win32' ? 0
: process.env.SUDO_GID || (process.getgid && process.getgid()),
'ham-it-up': false,
heading: 'npm',
'if-present': false,
'ignore-scripts': false,
@ -168,7 +170,7 @@ Object.defineProperty(exports, 'defaults', {get: function () {
long: false,
maxsockets: 50,
message: '%s',
'metrics-registry': 'https://registry.npmjs.org/',
'metrics-registry': null,
'node-version': process.version,
'onload-script': false,
only: null,
@ -203,6 +205,8 @@ Object.defineProperty(exports, 'defaults', {get: function () {
shell: osenv.shell(),
shrinkwrap: true,
'sign-git-tag': false,
'sso-poll-frequency': 500,
'sso-type': 'oauth',
'strict-ssl': true,
tag: 'latest',
'tag-version-prefix': 'v',
@ -231,6 +235,7 @@ exports.types = {
access: [null, 'restricted', 'public'],
'always-auth': Boolean,
also: [null, 'dev', 'development'],
'auth-type': ['legacy', 'sso', 'saml', 'oauth'],
'bin-links': Boolean,
browser: [null, String],
ca: [null, String, Array],
@ -262,6 +267,7 @@ exports.types = {
group: [Number, String],
'https-proxy': [null, url],
'user-agent': String,
'ham-it-up': Boolean,
'heading': String,
'if-present': Boolean,
'ignore-scripts': Boolean,
@ -284,7 +290,7 @@ exports.types = {
long: Boolean,
maxsockets: Number,
message: String,
'metrics-registry': String,
'metrics-registry': [null, String],
'node-version': [null, semver],
'onload-script': [null, String],
only: [null, 'dev', 'development', 'prod', 'production'],
@ -314,6 +320,8 @@ exports.types = {
shell: String,
shrinkwrap: Boolean,
'sign-git-tag': Boolean,
'sso-poll-frequency': Number,
'sso-type': [null, 'oauth', 'saml'],
'strict-ssl': Boolean,
tag: String,
tmp: path,

2
deps/npm/lib/docs.js

@ -33,7 +33,7 @@ function docs (args, cb) {
function getDoc (project, cb) {
log.silly('getDoc', project)
fetchPackageMetadata(project, '.', function (er, d) {
fetchPackageMetadata(project, '.', {fullMetadata: true}, function (er, d) {
if (er) return cb(er)
var url = d.homepage
if (!url) url = 'https://www.npmjs.org/package/' + d.name

2
deps/npm/lib/doctor/check-files-permission.js

@ -34,7 +34,7 @@ function checkFilesPermission (root, mask, cb) {
function checkFile (f, next) {
var file = path.join(root, f)
tracker.silly('checkFilePermissions', f)
fs.stat(file, function (e, stat) {
fs.lstat(file, function (e, stat) {
tracker.completeWork(1)
if (e) return next(e)
if (!stat.isFile()) return next()

2
deps/npm/lib/doctor/get-latest-npm-version.js

@ -4,7 +4,7 @@ var fetchPackageMetadata = require('../fetch-package-metadata')
function getLatestNpmVersion (cb) {
var tracker = log.newItem('getLatestNpmVersion', 1)
tracker.info('getLatestNpmVersion', 'Getting npm package information')
fetchPackageMetadata('npm@latest', '.', function (e, d) {
fetchPackageMetadata('npm@latest', '.', {fullMetadata: true}, function (e, d) {
tracker.finish()
cb(e, d.version)
})

28
deps/npm/lib/fetch-package-metadata.js

@ -16,6 +16,7 @@ var clone = require('lodash.clonedeep')
var validate = require('aproba')
var unpipe = require('unpipe')
var normalizePackageData = require('normalize-package-data')
var limit = require('call-limit')
var npm = require('./npm.js')
var mapToRegistry = require('./utils/map-to-registry.js')
@ -39,12 +40,16 @@ function andLogAndFinish (spec, tracker, done) {
}
}
module.exports = function fetchPackageMetadata (spec, where, tracker, done) {
module.exports = limit(fetchPackageMetadata, npm.limit.fetch)
function fetchPackageMetadata (spec, where, opts, done) {
validate('SSOF|SSFZ|OSOF|OSFZ', [spec, where, opts, done])
if (!done) {
done = tracker || where
tracker = null
if (done === where) where = null
done = opts
opts = {}
}
var tracker = opts.tracker
if (typeof spec === 'object') {
var dep = spec
spec = dep.raw
@ -53,11 +58,11 @@ module.exports = function fetchPackageMetadata (spec, where, tracker, done) {
if (!dep) {
log.silly('fetchPackageMetaData', spec)
return realizePackageSpecifier(spec, where, iferr(logAndFinish, function (dep) {
fetchPackageMetadata(dep, where, tracker, done)
fetchPackageMetadata(dep, where, {tracker: tracker}, done)
}))
}
if (dep.type === 'version' || dep.type === 'range' || dep.type === 'tag') {
fetchNamedPackageData(dep, addRequestedAndFinish)
fetchNamedPackageData(dep, opts, addRequestedAndFinish)
} else if (dep.type === 'directory') {
fetchDirectoryPackageData(dep, where, addRequestedAndFinish)
} else {
@ -105,14 +110,15 @@ function fetchDirectoryPackageData (dep, where, next) {
var regCache = {}
function fetchNamedPackageData (dep, next) {
validate('OF', arguments)
function fetchNamedPackageData (dep, opts, next) {
validate('OOF', arguments)
log.silly('fetchNamedPackageData', dep.name || dep.rawSpec)
mapToRegistry(dep.name || dep.rawSpec, npm.config, iferr(next, function (url, auth) {
if (regCache[url]) {
pickVersionFromRegistryDocument(clone(regCache[url]))
} else {
npm.registry.get(url, {auth: auth}, pulseTillDone('fetchMetadata', iferr(next, pickVersionFromRegistryDocument)))
var fullMetadata = opts.fullMetadata == null ? true : opts.fullMetadata
npm.registry.get(url, {auth: auth, fullMetadata: fullMetadata}, pulseTillDone('fetchMetadata', iferr(next, pickVersionFromRegistryDocument)))
}
function thenAddMetadata (pkg) {
pkg._from = dep.raw
@ -180,6 +186,10 @@ function retryWithCached (pkg, asserter, next) {
module.exports.addShrinkwrap = function addShrinkwrap (pkg, next) {
validate('OF', arguments)
if (pkg._shrinkwrap !== undefined) return next(null, pkg)
if (pkg._hasShrinkwrap === false) {
pkg._shrinkwrap = null
return next(null, pkg)
}
if (retryWithCached(pkg, addShrinkwrap, next)) return
pkg._shrinkwrap = null
// FIXME: cache the shrinkwrap directly

2
deps/npm/lib/install.js

@ -508,7 +508,7 @@ Installer.prototype.rollbackFailedOptional = function (staging, actionsToRun, cb
}).filter(function (pkg) {
return pkg.failed && pkg.rollback
})
var top = this.currentTree.path
var top = this.currentTree && this.currentTree.path
asyncMap(failed, function (pkg, next) {
asyncMap(pkg.rollback, function (rollback, done) {
rollback(top, staging, pkg, done)

75
deps/npm/lib/install/action/extract.js

@ -3,7 +3,8 @@ var path = require('path')
var iferr = require('iferr')
var asyncMap = require('slide').asyncMap
var fs = require('graceful-fs')
var rename = require('../../utils/rename.js')
var mkdirp = require('mkdirp')
var move = require('../../utils/move.js')
var gentlyRm = require('../../utils/gently-rm.js')
var updatePackageJson = require('../update-package-json')
var npm = require('../../npm.js')
@ -11,6 +12,7 @@ var moduleName = require('../../utils/module-name.js')
var packageId = require('../../utils/package-id.js')
var cache = require('../../cache.js')
var moduleStagingPath = require('../module-staging-path.js')
var readPackageJson = require('read-package-json')
module.exports = function (staging, pkg, log, next) {
log.silly('extract', packageId(pkg))
@ -19,31 +21,45 @@ module.exports = function (staging, pkg, log, next) {
var group = up ? null : npm.config.get('group')
var extractTo = moduleStagingPath(staging, pkg)
cache.unpack(pkg.package.name, pkg.package.version, extractTo, null, null, user, group,
andUpdatePackageJson(pkg, staging, extractTo, andStageBundledChildren(pkg, staging, extractTo, log, next)))
andUpdatePackageJson(pkg, staging, extractTo,
andStageBundledChildren(pkg, staging, extractTo, log,
andRemoveExtraneousBundles(extractTo, next))))
}
function andUpdatePackageJson (pkg, staging, extractTo, next) {
return iferr(next, function () {
updatePackageJson(pkg, extractTo, next)
readPackageJson(path.join(extractTo, 'package.json'), false, function (err, metadata) {
if (!err) {
// Copy _ keys (internal to npm) and any missing keys from the possibly incomplete
// registry metadata over to the full package metadata read off of disk.
Object.keys(pkg.package).forEach(function (key) {
if (key[0] === '_' || !(key in metadata)) metadata[key] = pkg.package[key]
})
metadata.name = pkg.package.name // things go wrong if these don't match
pkg.package = metadata
}
updatePackageJson(pkg, extractTo, next)
})
})
}
function andStageBundledChildren (pkg, staging, extractTo, log, next) {
return iferr(next, function () {
for (var i = 0; i < pkg.children.length; ++i) {
var c = pkg.children[i]
if (!c.package.name) return next(c.error)
}
if (!pkg.package.bundleDependencies) return next()
asyncMap(pkg.children, andStageBundledModule(pkg, staging, extractTo), cleanupBundled)
asyncMap(pkg.children, andStageBundledModule(pkg, staging, extractTo), next)
})
function cleanupBundled () {
}
function andRemoveExtraneousBundles (extractTo, next) {
return iferr(next, function () {
gentlyRm(path.join(extractTo, 'node_modules'), next)
}
})
}
function andStageBundledModule (bundler, staging, parentPath) {
return function (child, next) {
if (child.error) return next(child.error)
stageBundledModule(bundler, child, staging, parentPath, next)
}
}
@ -64,25 +80,36 @@ function stageBundledModule (bundler, child, staging, parentPath, next) {
var stageFrom = path.join(parentPath, 'node_modules', child.package.name)
var stageTo = moduleStagingPath(staging, child)
asyncMap(child.children, andStageBundledModule(bundler, staging, stageFrom), iferr(next, moveModule))
return asyncMap(child.children, andStageBundledModule(bundler, staging, stageFrom), iferr(next, finishModule))
function moveModule () {
if (child.fromBundle) {
return rename(stageFrom, stageTo, iferr(next, updateMovedPackageJson))
function finishModule () {
// If we were the one's who bundled this module…
if (child.fromBundle === bundler) {
return moveModule()
} else {
return fs.stat(stageFrom, function (notExists, exists) {
if (exists) {
warn(bundler, 'EBUNDLEOVERRIDE', 'In ' + packageId(bundler) +
' replacing bundled version of ' + moduleName(child) +
' with ' + packageId(child))
return gentlyRm(stageFrom, next)
} else {
return next()
}
})
return checkForReplacement()
}
}
function moveModule () {
return mkdirp(path.dirname(stageTo), iferr(next, function () {
return move(stageFrom, stageTo, iferr(next, updateMovedPackageJson))
}))
}
function checkForReplacement () {
return fs.stat(stageFrom, function (notExists, exists) {
if (exists) {
warn(bundler, 'EBUNDLEOVERRIDE', 'In ' + packageId(bundler) +
' replacing bundled version of ' + moduleName(child) +
' with ' + packageId(child))
return gentlyRm(stageFrom, next)
} else {
return next()
}
})
}
function updateMovedPackageJson () {
updatePackageJson(child, stageTo, next)
}

24
deps/npm/lib/install/action/finalize.js

@ -4,7 +4,7 @@ var rimraf = require('rimraf')
var fs = require('graceful-fs')
var mkdirp = require('mkdirp')
var asyncMap = require('slide').asyncMap
var rename = require('../../utils/rename.js')
var move = require('../../utils/move.js')
var gentlyRm = require('../../utils/gently-rm')
var moduleStagingPath = require('../module-staging-path.js')
@ -26,31 +26,31 @@ module.exports = function (staging, pkg, log, next) {
function destStatted (doesNotExist) {
if (doesNotExist) {
rename(extractedTo, pkg.path, whenMoved)
move(extractedTo, pkg.path, whenMoved)
} else {
moveAway()
}
}
function whenMoved (renameEr) {
if (!renameEr) return next()
if (renameEr.code !== 'ENOTEMPTY') return next(renameEr)
function whenMoved (moveEr) {
if (!moveEr) return next()
if (moveEr.code !== 'ENOTEMPTY' && moveEr.code !== 'EEXIST') return next(moveEr)
moveAway()
}
function moveAway () {
rename(pkg.path, delpath, whenOldMovedAway)
move(pkg.path, delpath, whenOldMovedAway)
}
function whenOldMovedAway (renameEr) {
if (renameEr) return next(renameEr)
rename(extractedTo, pkg.path, whenConflictMoved)
function whenOldMovedAway (moveEr) {
if (moveEr) return next(moveEr)
move(extractedTo, pkg.path, whenConflictMoved)
}
function whenConflictMoved (renameEr) {
function whenConflictMoved (moveEr) {
// if we got an error we'll try to put back the original module back,
// succeed or fail though we want the original error that caused this
if (renameEr) return rename(delpath, pkg.path, function () { next(renameEr) })
if (moveEr) return move(delpath, pkg.path, function () { next(moveEr) })
fs.readdir(path.join(delpath, 'node_modules'), makeTarget)
}
@ -65,7 +65,7 @@ module.exports = function (staging, pkg, log, next) {
asyncMap(files, function (file, done) {
var from = path.join(delpath, 'node_modules', file)
var to = path.join(pkg.path, 'node_modules', file)
rename(from, to, done)
move(from, to, done)
}, cleanup)
}

12
deps/npm/lib/install/action/move.js

@ -8,7 +8,7 @@ var mkdirp = require('mkdirp')
var rmStuff = require('../../unbuild.js').rmStuff
var lifecycle = require('../../utils/lifecycle.js')
var updatePackageJson = require('../update-package-json.js')
var rename = require('../../utils/rename.js')
var move = require('../../utils/move.js')
/*
Move a module from one point in the node_modules tree to another.
@ -46,7 +46,7 @@ function moveModuleOnly (from, to, log, done) {
log.silly('move', 'move existing destination node_modules away', toModules)
rename(toModules, tempToModules, removeDestination(done))
move(toModules, tempToModules, removeDestination(done))
function removeDestination (next) {
return function (er) {
@ -62,7 +62,7 @@ function moveModuleOnly (from, to, log, done) {
function moveToModulesBack (next) {
return function () {
log.silly('move', 'move existing destination node_modules back', toModules)
rename(tempToModules, toModules, iferr(done, next))
move(tempToModules, toModules, iferr(done, next))
}
}
@ -76,14 +76,14 @@ function moveModuleOnly (from, to, log, done) {
function moveNodeModules (next) {
return function () {
log.silly('move', 'move source node_modules away', fromModules)
rename(fromModules, tempFromModules, iferr(doMove(next), doMove(moveNodeModulesBack(next))))
move(fromModules, tempFromModules, iferr(doMove(next), doMove(moveNodeModulesBack(next))))
}
}
function doMove (next) {
return function () {
log.silly('move', 'move module dir to final dest', from, to)
rename(from, to, iferr(done, next))
move(from, to, iferr(done, next))
}
}
@ -91,7 +91,7 @@ function moveModuleOnly (from, to, log, done) {
return function () {
mkdirp(from, iferr(done, function () {
log.silly('move', 'put source node_modules back', fromModules)
rename(tempFromModules, fromModules, iferr(done, next))
move(tempFromModules, fromModules, iferr(done, next))
}))
}
}

10
deps/npm/lib/install/action/remove.js

@ -6,7 +6,7 @@ var asyncMap = require('slide').asyncMap
var mkdirp = require('mkdirp')
var npm = require('../../npm.js')
var andIgnoreErrors = require('../and-ignore-errors.js')
var rename = require('../../utils/rename.js')
var move = require('../../utils/move.js')
// This is weird because we want to remove the module but not it's node_modules folder
// allowing for this allows us to not worry about the order of operations
@ -26,11 +26,11 @@ function removeLink (pkg, next) {
function removeDir (pkg, log, next) {
var modpath = path.join(path.dirname(pkg.path), '.' + path.basename(pkg.path) + '.MODULES')
rename(path.join(pkg.path, 'node_modules'), modpath, unbuildPackage)
move(path.join(pkg.path, 'node_modules'), modpath, unbuildPackage)
function unbuildPackage (renameEr) {
function unbuildPackage (moveEr) {
npm.commands.unbuild(pkg.path, true, function () {
rimraf(pkg.path, renameEr ? andRemoveEmptyParents(pkg.path) : moveModulesBack)
rimraf(pkg.path, moveEr ? andRemoveEmptyParents(pkg.path) : moveModulesBack)
})
}
@ -58,7 +58,7 @@ function removeDir (pkg, log, next) {
var to = path.join(pkg.path, 'node_modules', file)
// we ignore errors here, because they can legitimately happen, for instance,
// bundled modules will be in both node_modules folders
rename(from, to, andIgnoreErrors(done))
move(from, to, andIgnoreErrors(done))
}, cleanup)
}

8
deps/npm/lib/install/action/test.js

@ -1,8 +0,0 @@
'use strict'
var lifecycle = require('../../utils/lifecycle.js')
var packageId = require('../../utils/package-id.js')
module.exports = function (staging, pkg, log, next) {
log.silly('test', packageId(pkg))
lifecycle(pkg.package, 'test', pkg.path, false, false, next)
}

7
deps/npm/lib/install/actions.js

@ -2,7 +2,9 @@
var validate = require('aproba')
var chain = require('slide').chain
var asyncMap = require('slide').asyncMap
var limit = require('call-limit')
var iferr = require('iferr')
var npm = require('../npm.js')
var andFinishTracker = require('./and-finish-tracker.js')
var andAddParentToErrors = require('./and-add-parent-to-errors.js')
var failedDependency = require('./deps.js').failedDependency
@ -15,7 +17,6 @@ var actions = {}
actions.fetch = require('./action/fetch.js')
actions.extract = require('./action/extract.js')
actions.build = require('./action/build.js')
actions.test = require('./action/test.js')
actions.preinstall = require('./action/preinstall.js')
actions.install = require('./action/install.js')
actions.postinstall = require('./action/postinstall.js')
@ -32,7 +33,7 @@ actions['global-link'] = require('./action/global-link.js')
Object.keys(actions).forEach(function (actionName) {
var action = actions[actionName]
actions[actionName] = function (staging, pkg, log, next) {
actions[actionName] = limit(function (staging, pkg, log, next) {
// top, buildpath, pkg, log
validate('SOOF', arguments)
// refuse to run actions for failed packages
@ -62,7 +63,7 @@ Object.keys(actions).forEach(function (actionName) {
function andDone (cb) {
return andFinishTracker(log, andAddParentToErrors(pkg.parent, andHandleOptionalDepErrors(pkg, cb)))
}
}
}, npm.limit.action)
})
function markAsFailed (pkg) {

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save