diff --git a/deps/npm/.npmignore b/deps/npm/.npmignore
index a128c9b604b34d..6f97b5dc0dcb48 100644
--- a/deps/npm/.npmignore
+++ b/deps/npm/.npmignore
@@ -7,6 +7,7 @@ npm-debug.log
/test/packages/npm-test-depends-on-spark/which-spark.log
/test/packages/test-package/random-data.txt
/test/root
+/test/npm_cache
node_modules/marked
node_modules/ronn
node_modules/tap
diff --git a/deps/npm/.travis.yml b/deps/npm/.travis.yml
index eff4750f3efb95..bea2fec243ef18 100644
--- a/deps/npm/.travis.yml
+++ b/deps/npm/.travis.yml
@@ -13,6 +13,6 @@ before_install:
- "npm config set spin false"
- "npm install -g npm/npm#2.x"
- "mkdir -p /var/run/couchdb"
-script: "npm run-script test-all"
+script: "npm test"
notifications:
slack: npm-inc:kRqQjto7YbINqHPb1X6nS3g8
diff --git a/deps/npm/AUTHORS b/deps/npm/AUTHORS
index fcfe1b696a4420..e4fd0f37c9db50 100644
--- a/deps/npm/AUTHORS
+++ b/deps/npm/AUTHORS
@@ -344,3 +344,11 @@ Vedat Mahir YILMAZ 2.14.20 2.15.0 This is the API documentation for npm.
To find documentation of the command line
@@ -109,5 +109,5 @@ Add a registry user account Create or verify a user named SEE ALSO
-
+
diff --git a/deps/npm/html/doc/api/npm-bin.html b/deps/npm/html/doc/api/npm-bin.html
index 94b82c9188a680..c79fe10422d594 100644
--- a/deps/npm/html/doc/api/npm-bin.html
+++ b/deps/npm/html/doc/api/npm-bin.html
@@ -28,5 +28,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-bugs.html b/deps/npm/html/doc/api/npm-bugs.html
index 62242b26af58f6..09e2bc09450faf 100644
--- a/deps/npm/html/doc/api/npm-bugs.html
+++ b/deps/npm/html/doc/api/npm-bugs.html
@@ -33,5 +33,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-cache.html b/deps/npm/html/doc/api/npm-cache.html
index 785a1aa043c540..0fd8c4d68212b7 100644
--- a/deps/npm/html/doc/api/npm-cache.html
+++ b/deps/npm/html/doc/api/npm-cache.html
@@ -42,5 +42,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-commands.html b/deps/npm/html/doc/api/npm-commands.html
index 9979e3df71d406..3b5eccdd427ef1 100644
--- a/deps/npm/html/doc/api/npm-commands.html
+++ b/deps/npm/html/doc/api/npm-commands.html
@@ -36,5 +36,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/api/npm-config.html b/deps/npm/html/doc/api/npm-config.html
index b4a6763674ec18..34caf47bac8b8b 100644
--- a/deps/npm/html/doc/api/npm-config.html
+++ b/deps/npm/html/doc/api/npm-config.html
@@ -57,5 +57,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/api/npm-deprecate.html b/deps/npm/html/doc/api/npm-deprecate.html
index 54aadac5f1cce4..134e3a0940a141 100644
--- a/deps/npm/html/doc/api/npm-deprecate.html
+++ b/deps/npm/html/doc/api/npm-deprecate.html
@@ -47,5 +47,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/api/npm-docs.html b/deps/npm/html/doc/api/npm-docs.html
index 1142796c3104d9..606abc68590250 100644
--- a/deps/npm/html/doc/api/npm-docs.html
+++ b/deps/npm/html/doc/api/npm-docs.html
@@ -33,5 +33,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-edit.html b/deps/npm/html/doc/api/npm-edit.html
index 679de772dfdede..0d06ec8b5c3dec 100644
--- a/deps/npm/html/doc/api/npm-edit.html
+++ b/deps/npm/html/doc/api/npm-edit.html
@@ -36,5 +36,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-explore.html b/deps/npm/html/doc/api/npm-explore.html
index bd655478058b9c..c2b00dee7f317b 100644
--- a/deps/npm/html/doc/api/npm-explore.html
+++ b/deps/npm/html/doc/api/npm-explore.html
@@ -31,5 +31,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-help-search.html b/deps/npm/html/doc/api/npm-help-search.html
index bc0075f8f4db32..5aaa0d749d934f 100644
--- a/deps/npm/html/doc/api/npm-help-search.html
+++ b/deps/npm/html/doc/api/npm-help-search.html
@@ -44,5 +44,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-init.html b/deps/npm/html/doc/api/npm-init.html
index 35ad354f0c35db..16656cfa83ac33 100644
--- a/deps/npm/html/doc/api/npm-init.html
+++ b/deps/npm/html/doc/api/npm-init.html
@@ -39,5 +39,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/api/npm-install.html b/deps/npm/html/doc/api/npm-install.html
index eca8b80cf2a65c..ff44ed9b80b69c 100644
--- a/deps/npm/html/doc/api/npm-install.html
+++ b/deps/npm/html/doc/api/npm-install.html
@@ -32,5 +32,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-link.html b/deps/npm/html/doc/api/npm-link.html
index dc764f89244c94..4370dfa82016a4 100644
--- a/deps/npm/html/doc/api/npm-link.html
+++ b/deps/npm/html/doc/api/npm-link.html
@@ -42,5 +42,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-load.html b/deps/npm/html/doc/api/npm-load.html
index 30a2036bd7ca15..4ff8e4dd1fa708 100644
--- a/deps/npm/html/doc/api/npm-load.html
+++ b/deps/npm/html/doc/api/npm-load.html
@@ -37,5 +37,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-ls.html b/deps/npm/html/doc/api/npm-ls.html
index fd75ccac3d6403..395cd8c0d7cda1 100644
--- a/deps/npm/html/doc/api/npm-ls.html
+++ b/deps/npm/html/doc/api/npm-ls.html
@@ -63,5 +63,5 @@ global
-
+
diff --git a/deps/npm/html/doc/api/npm-outdated.html b/deps/npm/html/doc/api/npm-outdated.html
index aaa194ed35deed..f88bf6ded1acbd 100644
--- a/deps/npm/html/doc/api/npm-outdated.html
+++ b/deps/npm/html/doc/api/npm-outdated.html
@@ -28,5 +28,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-owner.html b/deps/npm/html/doc/api/npm-owner.html
index 5d925969733a57..9352adce3c0eae 100644
--- a/deps/npm/html/doc/api/npm-owner.html
+++ b/deps/npm/html/doc/api/npm-owner.html
@@ -47,5 +47,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/api/npm-pack.html b/deps/npm/html/doc/api/npm-pack.html
index 14c367a89e4e8d..f85a094d53dde5 100644
--- a/deps/npm/html/doc/api/npm-pack.html
+++ b/deps/npm/html/doc/api/npm-pack.html
@@ -33,5 +33,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-ping.html b/deps/npm/html/doc/api/npm-ping.html
index 4dabc345acafde..9a0461ee11d735 100644
--- a/deps/npm/html/doc/api/npm-ping.html
+++ b/deps/npm/html/doc/api/npm-ping.html
@@ -29,4 +29,4 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-prefix.html b/deps/npm/html/doc/api/npm-prefix.html
index 0921bed4b1f691..7003be312db0b7 100644
--- a/deps/npm/html/doc/api/npm-prefix.html
+++ b/deps/npm/html/doc/api/npm-prefix.html
@@ -29,5 +29,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-prune.html b/deps/npm/html/doc/api/npm-prune.html
index 6ff302c3c87645..d49bfc87b99386 100644
--- a/deps/npm/html/doc/api/npm-prune.html
+++ b/deps/npm/html/doc/api/npm-prune.html
@@ -30,5 +30,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-publish.html b/deps/npm/html/doc/api/npm-publish.html
index 9d0b68b5759f13..c19aadd53fc9ee 100644
--- a/deps/npm/html/doc/api/npm-publish.html
+++ b/deps/npm/html/doc/api/npm-publish.html
@@ -46,5 +46,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/api/npm-rebuild.html b/deps/npm/html/doc/api/npm-rebuild.html
index bc3e98e646f066..da78b38906037d 100644
--- a/deps/npm/html/doc/api/npm-rebuild.html
+++ b/deps/npm/html/doc/api/npm-rebuild.html
@@ -30,5 +30,5 @@ CONFIGURATION
-
+
diff --git a/deps/npm/html/doc/api/npm-repo.html b/deps/npm/html/doc/api/npm-repo.html
index e9146d84af2c37..7469d73e07364f 100644
--- a/deps/npm/html/doc/api/npm-repo.html
+++ b/deps/npm/html/doc/api/npm-repo.html
@@ -33,5 +33,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-restart.html b/deps/npm/html/doc/api/npm-restart.html
index bf019a5011d4b4..bd4d54b13ddb64 100644
--- a/deps/npm/html/doc/api/npm-restart.html
+++ b/deps/npm/html/doc/api/npm-restart.html
@@ -52,5 +52,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/api/npm-root.html b/deps/npm/html/doc/api/npm-root.html
index c835d4e6b6af9e..830b5c723698b2 100644
--- a/deps/npm/html/doc/api/npm-root.html
+++ b/deps/npm/html/doc/api/npm-root.html
@@ -29,5 +29,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-run-script.html b/deps/npm/html/doc/api/npm-run-script.html
index f694dcc645d21d..568a49f5686c73 100644
--- a/deps/npm/html/doc/api/npm-run-script.html
+++ b/deps/npm/html/doc/api/npm-run-script.html
@@ -41,5 +41,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/api/npm-search.html b/deps/npm/html/doc/api/npm-search.html
index 3292d838a4c458..e6f4d166e92d7e 100644
--- a/deps/npm/html/doc/api/npm-search.html
+++ b/deps/npm/html/doc/api/npm-search.html
@@ -53,5 +53,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-shrinkwrap.html b/deps/npm/html/doc/api/npm-shrinkwrap.html
index 75d51dd630943a..453cc82fc27ae4 100644
--- a/deps/npm/html/doc/api/npm-shrinkwrap.html
+++ b/deps/npm/html/doc/api/npm-shrinkwrap.html
@@ -33,5 +33,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-start.html b/deps/npm/html/doc/api/npm-start.html
index 715a7bba82f85c..5477a143121612 100644
--- a/deps/npm/html/doc/api/npm-start.html
+++ b/deps/npm/html/doc/api/npm-start.html
@@ -28,5 +28,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-stop.html b/deps/npm/html/doc/api/npm-stop.html
index eca26362b4d90a..3bf0851434a666 100644
--- a/deps/npm/html/doc/api/npm-stop.html
+++ b/deps/npm/html/doc/api/npm-stop.html
@@ -28,5 +28,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-tag.html b/deps/npm/html/doc/api/npm-tag.html
index ddb92596c9170f..a97fee612b18fc 100644
--- a/deps/npm/html/doc/api/npm-tag.html
+++ b/deps/npm/html/doc/api/npm-tag.html
@@ -36,5 +36,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-test.html b/deps/npm/html/doc/api/npm-test.html
index 830585438a452b..9a32f5fb3c8441 100644
--- a/deps/npm/html/doc/api/npm-test.html
+++ b/deps/npm/html/doc/api/npm-test.html
@@ -30,5 +30,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-uninstall.html b/deps/npm/html/doc/api/npm-uninstall.html
index 7458d7e735c8a4..ab13f65071acf3 100644
--- a/deps/npm/html/doc/api/npm-uninstall.html
+++ b/deps/npm/html/doc/api/npm-uninstall.html
@@ -30,5 +30,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-unpublish.html b/deps/npm/html/doc/api/npm-unpublish.html
index 3f7f76c883c491..517ef69d7a958d 100644
--- a/deps/npm/html/doc/api/npm-unpublish.html
+++ b/deps/npm/html/doc/api/npm-unpublish.html
@@ -33,5 +33,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-update.html b/deps/npm/html/doc/api/npm-update.html
index 87455a9ae0aadd..9bdda1f22beb6d 100644
--- a/deps/npm/html/doc/api/npm-update.html
+++ b/deps/npm/html/doc/api/npm-update.html
@@ -33,5 +33,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/api/npm-version.html b/deps/npm/html/doc/api/npm-version.html
index e0e8b2761def3d..43ecf02668d774 100644
--- a/deps/npm/html/doc/api/npm-version.html
+++ b/deps/npm/html/doc/api/npm-version.html
@@ -32,5 +32,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm-view.html b/deps/npm/html/doc/api/npm-view.html
index 3dd80d9c32730d..cf9a61b59a7b97 100644
--- a/deps/npm/html/doc/api/npm-view.html
+++ b/deps/npm/html/doc/api/npm-view.html
@@ -81,5 +81,5 @@ RETURN VALUE
-
+
diff --git a/deps/npm/html/doc/api/npm-whoami.html b/deps/npm/html/doc/api/npm-whoami.html
index 55233284d1a39c..095e750349e8ed 100644
--- a/deps/npm/html/doc/api/npm-whoami.html
+++ b/deps/npm/html/doc/api/npm-whoami.html
@@ -29,5 +29,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/api/npm.html b/deps/npm/html/doc/api/npm.html
index df4ce202bb43cc..51a0eb3b641278 100644
--- a/deps/npm/html/doc/api/npm.html
+++ b/deps/npm/html/doc/api/npm.html
@@ -23,7 +23,7 @@ SYNOPSIS
npm.commands.install(["package"], cb)
})
VERSION
-DESCRIPTION
ABBREVS
-
+
diff --git a/deps/npm/html/doc/cli/npm-access.html b/deps/npm/html/doc/cli/npm-access.html
index 20f2717c42118d..03e8250cbedb9e 100644
--- a/deps/npm/html/doc/cli/npm-access.html
+++ b/deps/npm/html/doc/cli/npm-access.html
@@ -84,5 +84,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-adduser.html b/deps/npm/html/doc/cli/npm-adduser.html
index 2152a6a8cec187..54ae6e4118f3d2 100644
--- a/deps/npm/html/doc/cli/npm-adduser.html
+++ b/deps/npm/html/doc/cli/npm-adduser.html
@@ -12,6 +12,8 @@
npm-adduser
SYNOPSIS
npm adduser [--registry=url] [--scope=@orgname] [--always-auth]
+
+aliases: login, add-user
DESCRIPTION
<username>
in the specified registry, and
save the credentials to the .npmrc
file. If no registry is specified,
@@ -44,9 +46,11 @@ always-auth
registries. Can be used with --registry
and / or --scope
, e.g.
npm adduser --registry=http://private-registry.example.com --always-auth
This will ensure that all requests to that registry (including for tarballs)
-include an authorization header. See always-auth
in npm-config(7)
for more
-details on always-auth. Registry-specific configuration of always-auth
takes
-precedence over any global configuration.
always-auth
in npm-config(7)
for more details on
+always-auth. Registry-specific configuration of always-auth
takes precedence
+over any global configuration.
Bugs for a package in a
npm bugs <pkgname>
npm bugs (with no args in a package dir)
+
+aliases: issues
This command tries to guess at the likely location of a package's
bug tracker URL, and then tries to open it using the --browser
@@ -54,5 +56,5 @@
npm gets its config settings from the command line, environment
variables, npmrc
files, and in some cases, the package.json
file.
Reduce duplication
npm dedupe [package names...]
npm ddp [package names...]
+
+aliases: find-dupes, ddp
Searches the local package tree and attempts to simplify the overall structure by moving dependencies further up the tree, where they can @@ -63,5 +65,5 @@
npm dist-tag add <pkg>@<version> [<tag>]
npm dist-tag rm <pkg> <tag>
npm dist-tag ls [<pkg>]
+
+aliases: dist-tags
Add, remove, and enumerate distribution tags on a package:
Install package(s) and run tests
-npm install-test (with no args, in package dir)
-npm install-test [<@scope>/]<name>
-npm install-test [<@scope>/]<name>@<tag>
-npm install-test [<@scope>/]<name>@<version>
-npm install-test [<@scope>/]<name>@<version range>
-npm install-test <tarball file>
-npm install-test <tarball url>
-npm install-test <folder>
-
-alias: npm it
-common options: [--save|--save-dev|--save-optional] [--save-exact] [--dry-run]
-
This command runs an npm install
followed immediately by an npm test
. It
-takes exactly the same arguments as npm install
.
--save-optional
: Package will appear in your optionalDependencies
.
When using any of the above options to save dependencies to your -package.json, there is an additional, optional flag:
+package.json, there are two additional, optional flags:--save-exact
: Saved dependencies will be configured with an
exact version rather than using npm's default semver range
operator.
<scope>
is optional. The package will be downloaded from the registry
-associated with the specified scope. If no registry is associated with
-the given scope the default registry is assumed. See npm-scope(7)
.
-B, --save-bundle
: Saved dependencies will also be added to your bundleDependencies
list.
Note: if you do not include the @-symbol on your scope name, npm will interpret this as a GitHub repository instead, see below. Scopes names must also be followed by a slash.
@@ -100,6 +99,7 @@Package linking is a two-step process.
-First, npm link
in a package folder will create a globally-installed
-symbolic link from prefix/package-name
to the current folder (see
-npm-config(7)
for the value of prefix
).
First, npm link
in a package folder will create a symlink in the global folder
+{prefix}/lib/node_modules/<package>
that links to the package where the npm
+link
command was executed. (see npm-config(7)
for the value of prefix
).
Next, in some other location, npm link package-name
will create a
-symlink from the local node_modules
folder to the global symlink.
package-name
to node_modules/
+of the current folder.
Note that package-name
is taken from package.json
,
not from directory name.
The package name can be optionally prefixed with a scope. See npm-scope(7)
.
@@ -36,7 +37,7 @@
Now, any changes to ~/projects/node-redis will be reflected in ~/projects/node-bloggy/node_modules/node-redis/. Note that the link should -be to the package name, not the directory name for that package.
+be to the package name, not the directory name for that package.You may also shortcut the two steps in one. For example, to do the above use-case in a shorter way:
cd ~/projects/node-bloggy # go into the dir of your main project
@@ -72,5 +73,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/cli/npm-logout.html b/deps/npm/html/doc/cli/npm-logout.html
index ea01bb43aab6e7..c82727f5c4595c 100644
--- a/deps/npm/html/doc/cli/npm-logout.html
+++ b/deps/npm/html/doc/cli/npm-logout.html
@@ -51,5 +51,5 @@ scope
-
+
diff --git a/deps/npm/html/doc/cli/npm-ls.html b/deps/npm/html/doc/cli/npm-ls.html
index 4aafcb8373db3c..5af7135a678efa 100644
--- a/deps/npm/html/doc/cli/npm-ls.html
+++ b/deps/npm/html/doc/cli/npm-ls.html
@@ -22,7 +22,7 @@ SYNOPSIS
limit the results to only the paths to the packages named. Note that
nested packages will also show the paths to the specified packages.
For example, running npm ls promzard
in npm's source tree will show:
-npm@2.14.20 /path/to/npm
+npm@2.15.0 /path/to/npm
└─┬ init-package-json@0.0.4
└── promzard@0.1.5
It will print out extraneous, missing, and invalid packages.
@@ -97,5 +97,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-outdated.html b/deps/npm/html/doc/cli/npm-outdated.html
index adb2d79e2522de..5bb081e90cb29c 100644
--- a/deps/npm/html/doc/cli/npm-outdated.html
+++ b/deps/npm/html/doc/cli/npm-outdated.html
@@ -116,5 +116,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-owner.html b/deps/npm/html/doc/cli/npm-owner.html
index e513e85f33f00d..85ab5703df6abb 100644
--- a/deps/npm/html/doc/cli/npm-owner.html
+++ b/deps/npm/html/doc/cli/npm-owner.html
@@ -14,6 +14,8 @@ SYNOPSIS
npm owner ls <package name>
npm owner add <user> <package name>
npm owner rm <user> <package name>
+
+aliases: author
DESCRIPTION
Manage ownership of published packages.
@@ -49,5 +51,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-pack.html b/deps/npm/html/doc/cli/npm-pack.html
index 61d7df6189398a..c247a4d4b95741 100644
--- a/deps/npm/html/doc/cli/npm-pack.html
+++ b/deps/npm/html/doc/cli/npm-pack.html
@@ -41,5 +41,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-ping.html b/deps/npm/html/doc/cli/npm-ping.html
index 72888e9cc31e0f..20524fd5dd703b 100644
--- a/deps/npm/html/doc/cli/npm-ping.html
+++ b/deps/npm/html/doc/cli/npm-ping.html
@@ -32,4 +32,4 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-prefix.html b/deps/npm/html/doc/cli/npm-prefix.html
index 7139defece1220..2f217bcfab403f 100644
--- a/deps/npm/html/doc/cli/npm-prefix.html
+++ b/deps/npm/html/doc/cli/npm-prefix.html
@@ -38,5 +38,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-prune.html b/deps/npm/html/doc/cli/npm-prune.html
index c1843ab2d9574a..e1fb7cd73ee8a5 100644
--- a/deps/npm/html/doc/cli/npm-prune.html
+++ b/deps/npm/html/doc/cli/npm-prune.html
@@ -41,5 +41,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-publish.html b/deps/npm/html/doc/cli/npm-publish.html
index 61b3076d84ace2..8ca91d7aaccbb0 100644
--- a/deps/npm/html/doc/cli/npm-publish.html
+++ b/deps/npm/html/doc/cli/npm-publish.html
@@ -69,5 +69,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-rebuild.html b/deps/npm/html/doc/cli/npm-rebuild.html
index ca28dc0db333f3..46e3975d7fbb4d 100644
--- a/deps/npm/html/doc/cli/npm-rebuild.html
+++ b/deps/npm/html/doc/cli/npm-rebuild.html
@@ -38,5 +38,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-repo.html b/deps/npm/html/doc/cli/npm-repo.html
index 79b35adcfc5754..bfdcbff1f707a7 100644
--- a/deps/npm/html/doc/cli/npm-repo.html
+++ b/deps/npm/html/doc/cli/npm-repo.html
@@ -42,5 +42,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-restart.html b/deps/npm/html/doc/cli/npm-restart.html
index 0fc1103cd4e47f..5d38582f641c7c 100644
--- a/deps/npm/html/doc/cli/npm-restart.html
+++ b/deps/npm/html/doc/cli/npm-restart.html
@@ -53,5 +53,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-rm.html b/deps/npm/html/doc/cli/npm-rm.html
index 268fba49b623b9..2a36d6104987ce 100644
--- a/deps/npm/html/doc/cli/npm-rm.html
+++ b/deps/npm/html/doc/cli/npm-rm.html
@@ -39,5 +39,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-root.html b/deps/npm/html/doc/cli/npm-root.html
index 67e26743c65254..b4c3969b597714 100644
--- a/deps/npm/html/doc/cli/npm-root.html
+++ b/deps/npm/html/doc/cli/npm-root.html
@@ -35,5 +35,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-run-script.html b/deps/npm/html/doc/cli/npm-run-script.html
index bfc11f785013cb..7b97792a2126bc 100644
--- a/deps/npm/html/doc/cli/npm-run-script.html
+++ b/deps/npm/html/doc/cli/npm-run-script.html
@@ -57,5 +57,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-search.html b/deps/npm/html/doc/cli/npm-search.html
index 653c605248cef2..6f4cbe3cfb5c79 100644
--- a/deps/npm/html/doc/cli/npm-search.html
+++ b/deps/npm/html/doc/cli/npm-search.html
@@ -11,9 +11,9 @@
npm-search
Search for packages
SYNOPSIS
-
npm search [--long] [search terms ...]
-npm s [search terms ...]
-npm se [search terms ...]
+npm search [-l|--long] [search terms ...]
+
+aliases: s, se, find
DESCRIPTION
Search the registry for packages matching the search terms.
If a term starts with /
, then it's interpreted as a regular expression.
@@ -29,6 +29,14 @@
long
lines. When disabled (default) search results are truncated to fit
neatly on a single line. Modules with extremely long names will
fall on multiple lines.
+registry
+
+- Default: https://registry.npmjs.org/
+- Type : url
+
+Search the specified registry for modules. If you have configured npm to point to a different default registry,
+such as your internal private module repository, npm search
will default to that registry when searching.
+Pass a different registry url such as the default above in order to override this setting.
SEE ALSO
- npm-registry(7)
@@ -49,5 +57,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-shrinkwrap.html b/deps/npm/html/doc/cli/npm-shrinkwrap.html
index 06c944a2eeaf26..bb36cfd775f438 100644
--- a/deps/npm/html/doc/cli/npm-shrinkwrap.html
+++ b/deps/npm/html/doc/cli/npm-shrinkwrap.html
@@ -168,5 +168,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-star.html b/deps/npm/html/doc/cli/npm-star.html
index ee50f7d7ad358e..4375e29e4fa637 100644
--- a/deps/npm/html/doc/cli/npm-star.html
+++ b/deps/npm/html/doc/cli/npm-star.html
@@ -36,5 +36,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-stars.html b/deps/npm/html/doc/cli/npm-stars.html
index 8cf87457a4137c..f679ba62b95c7b 100644
--- a/deps/npm/html/doc/cli/npm-stars.html
+++ b/deps/npm/html/doc/cli/npm-stars.html
@@ -37,5 +37,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-start.html b/deps/npm/html/doc/cli/npm-start.html
index 433b721cef5caa..300500eba4796e 100644
--- a/deps/npm/html/doc/cli/npm-start.html
+++ b/deps/npm/html/doc/cli/npm-start.html
@@ -39,5 +39,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-stop.html b/deps/npm/html/doc/cli/npm-stop.html
index b1b3ec665adb1f..353fb43592ce71 100644
--- a/deps/npm/html/doc/cli/npm-stop.html
+++ b/deps/npm/html/doc/cli/npm-stop.html
@@ -34,5 +34,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-tag.html b/deps/npm/html/doc/cli/npm-tag.html
index e8a6594d4a85a9..3d00cda5121575 100644
--- a/deps/npm/html/doc/cli/npm-tag.html
+++ b/deps/npm/html/doc/cli/npm-tag.html
@@ -62,5 +62,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-team.html b/deps/npm/html/doc/cli/npm-team.html
index 64fbcf0b3a44ff..d2bd12d6c8f5c5 100644
--- a/deps/npm/html/doc/cli/npm-team.html
+++ b/deps/npm/html/doc/cli/npm-team.html
@@ -67,4 +67,4 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-test.html b/deps/npm/html/doc/cli/npm-test.html
index 42154335910b22..e961d231b2512f 100644
--- a/deps/npm/html/doc/cli/npm-test.html
+++ b/deps/npm/html/doc/cli/npm-test.html
@@ -12,7 +12,8 @@
npm-test
Test a package
SYNOPSIS
npm test [-- <args>]
- npm tst [-- <args>]
+
+ aliases: t, tst
DESCRIPTION
This runs a package's "test" script, if one was provided.
To run tests as a condition of installation, set the npat
config to
@@ -37,5 +38,5 @@
SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-uninstall.html b/deps/npm/html/doc/cli/npm-uninstall.html
index f70c5546b0e604..871e514398605f 100644
--- a/deps/npm/html/doc/cli/npm-uninstall.html
+++ b/deps/npm/html/doc/cli/npm-uninstall.html
@@ -57,5 +57,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/cli/npm-unpublish.html b/deps/npm/html/doc/cli/npm-unpublish.html
index a3770b6fd06011..65fc3f13e835ed 100644
--- a/deps/npm/html/doc/cli/npm-unpublish.html
+++ b/deps/npm/html/doc/cli/npm-unpublish.html
@@ -47,5 +47,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-update.html b/deps/npm/html/doc/cli/npm-update.html
index 61e356377df4a3..a131392a352b4d 100644
--- a/deps/npm/html/doc/cli/npm-update.html
+++ b/deps/npm/html/doc/cli/npm-update.html
@@ -12,6 +12,8 @@
npm-update
Update a package
SYNOPSIS
npm update [-g] [<name> [<name> ...]]
+
+aliases: up, upgrade
DESCRIPTION
This command will update all the packages listed to the latest version
(specified by the tag
config), respecting semver.
@@ -24,13 +26,8 @@ SYNOPSIS
or local) will be updated.
As of npm@2.6.1
, the npm update
will only inspect top-level packages.
Prior versions of npm
would also recursively inspect all dependencies.
-To get the old behavior, use npm --depth Infinity update
, but be warned that
-simultaneous asynchronous update of all packages, including npm
itself
-and packages that npm
depends on, often causes problems up to and including
-the uninstallation of npm
itself.
-To restore a missing npm
, use the command:
-curl -L https://npmjs.com/install.sh | sh
-
EXAMPLES
+To get the old behavior, use npm --depth 9999 update
.
+EXAMPLES
IMPORTANT VERSION NOTE: these examples assume npm@2.6.1
or later. For
older versions of npm
, you must specify --depth 0
to get the behavior
described below.
@@ -38,7 +35,7 @@ SYNOPSIS
on dependencies, dep1
(dep2
, .. etc.). The published versions of dep1
are:
{
"dist-tags": { "latest": "1.2.2" },
- "versions": {
+ "versions": [
"1.2.2",
"1.2.1",
"1.2.0",
@@ -48,7 +45,7 @@ SYNOPSIS
"0.4.1",
"0.4.0",
"0.2.0"
- }
+ ]
}
Caret Dependencies
If app
's package.json
contains:
@@ -120,5 +117,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-version.html b/deps/npm/html/doc/cli/npm-version.html
index f679effa7c9559..2cb44bb4ab2b31 100644
--- a/deps/npm/html/doc/cli/npm-version.html
+++ b/deps/npm/html/doc/cli/npm-version.html
@@ -95,5 +95,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-view.html b/deps/npm/html/doc/cli/npm-view.html
index 2fa22d98cb41c6..7d15486d88772b 100644
--- a/deps/npm/html/doc/cli/npm-view.html
+++ b/deps/npm/html/doc/cli/npm-view.html
@@ -85,5 +85,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-whoami.html b/deps/npm/html/doc/cli/npm-whoami.html
index 56dc846bd55d83..e133032a40dcaf 100644
--- a/deps/npm/html/doc/cli/npm-whoami.html
+++ b/deps/npm/html/doc/cli/npm-whoami.html
@@ -33,5 +33,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm.html b/deps/npm/html/doc/cli/npm.html
index f55051f479b24b..64071e9abf5bc4 100644
--- a/deps/npm/html/doc/cli/npm.html
+++ b/deps/npm/html/doc/cli/npm.html
@@ -13,7 +13,7 @@ npm
javascript package manager
SYNOPSIS
npm <command> [args]
VERSION
-2.14.20
+2.15.0
DESCRIPTION
npm is the package manager for the Node JavaScript platform. It puts
modules in place so that node can find them, and manages dependency
@@ -106,19 +106,17 @@
CONTRIBUTIONS
Contributors are listed in npm's package.json
file. You can view them
easily by doing npm view npm contributors
.
-If you would like to contribute, but don't know what to work on, check
-the issues list or ask on the mailing list.
+If you would like to contribute, but don't know what to work on, read
+the contributing guidelines and check the issues list.
+- https://github.com/npm/npm/wiki/Contributing-Guidelines
- https://github.com/npm/npm/issues
-- npm-@googlegroups.com
BUGS
When you find issues, please report them:
- web:
https://github.com/npm/npm/issues
-- email:
-npm-@googlegroups.com
Be sure to include all of the output from the npm command that didn't work
as expected. The npm-debug.log
file is also helpful to provide.
@@ -128,7 +126,7 @@ AUTHOR
Isaac Z. Schlueter ::
isaacs ::
@izs ::
-i@izs.me
+i@izs.me
SEE ALSO
- npm-help(1)
@@ -154,5 +152,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/files/npm-folders.html b/deps/npm/html/doc/files/npm-folders.html
index cc6c4849d3377c..8421d2147ad14e 100644
--- a/deps/npm/html/doc/files/npm-folders.html
+++ b/deps/npm/html/doc/files/npm-folders.html
@@ -183,5 +183,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/files/npm-global.html b/deps/npm/html/doc/files/npm-global.html
index cc6c4849d3377c..8421d2147ad14e 100644
--- a/deps/npm/html/doc/files/npm-global.html
+++ b/deps/npm/html/doc/files/npm-global.html
@@ -183,5 +183,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/files/npm-json.html b/deps/npm/html/doc/files/npm-json.html
index 18be731280ead6..aa6d69fc28204e 100644
--- a/deps/npm/html/doc/files/npm-json.html
+++ b/deps/npm/html/doc/files/npm-json.html
@@ -244,6 +244,9 @@ directories.doc
maybe, someday.
directories.example
Put example scripts in here. Someday, it might be exposed in some clever way.
+directories.test
+Put your tests in here. It is currently not exposed, but it might be in the
+future.
repository
Specify the place where your code lives. This is helpful for people who
want to contribute. If the git repo is on GitHub, then the npm docs
@@ -434,7 +437,18 @@
peerDependencies
with every 1.x version of the host package, use "^1.0"
or "1.x"
to express
this. If you depend on features introduced in 1.5.2, use ">= 1.5.2 < 2"
.
bundledDependencies
-Array of package names that will be bundled when publishing the package.
+This defines an array of package names that will be bundled when publishing the package.
+In cases where you need to preserve npm packages locally or have them available through a single file download, you can bundle the packages in a tarball file by specifying the package names in the bundledDependencies
array and executing npm pack
.
+For example:
+If we define a package.json like this:
+
{
+ "name": "awesome-web-framework",
+ "version": "1.0.0",
+ "bundledDependencies": [
+ 'renderized', 'super-streams'
+ ]
+}
+
we can obtain awesome-web-framework-1.0.0.tgz
file by running npm pack
. This file contains the dependencies renderized
and super-streams
which can be installed in a new project by executing npm install awesome-web-framework-1.0.0.tgz
.
If this is spelled "bundleDependencies"
, then that is also honored.
optionalDependencies
If a dependency can be used, but you would like npm to proceed if it cannot be
@@ -567,5 +581,5 @@
SEE ALSO
-
+
diff --git a/deps/npm/html/doc/files/npmrc.html b/deps/npm/html/doc/files/npmrc.html
index 805be3ca4c9140..a76191cae9a40d 100644
--- a/deps/npm/html/doc/files/npmrc.html
+++ b/deps/npm/html/doc/files/npmrc.html
@@ -83,5 +83,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/files/package.json.html b/deps/npm/html/doc/files/package.json.html
index 18be731280ead6..aa6d69fc28204e 100644
--- a/deps/npm/html/doc/files/package.json.html
+++ b/deps/npm/html/doc/files/package.json.html
@@ -244,6 +244,9 @@ directories.doc
maybe, someday.
directories.example
Put example scripts in here. Someday, it might be exposed in some clever way.
+directories.test
+Put your tests in here. It is currently not exposed, but it might be in the
+future.
repository
Specify the place where your code lives. This is helpful for people who
want to contribute. If the git repo is on GitHub, then the npm docs
@@ -434,7 +437,18 @@
peerDependencies
with every 1.x version of the host package, use "^1.0"
or "1.x"
to express
this. If you depend on features introduced in 1.5.2, use ">= 1.5.2 < 2"
.
bundledDependencies
-Array of package names that will be bundled when publishing the package.
+This defines an array of package names that will be bundled when publishing the package.
+In cases where you need to preserve npm packages locally or have them available through a single file download, you can bundle the packages in a tarball file by specifying the package names in the bundledDependencies
array and executing npm pack
.
+For example:
+If we define a package.json like this:
+{
+ "name": "awesome-web-framework",
+ "version": "1.0.0",
+ "bundledDependencies": [
+ 'renderized', 'super-streams'
+ ]
+}
+
we can obtain awesome-web-framework-1.0.0.tgz
file by running npm pack
. This file contains the dependencies renderized
and super-streams
which can be installed in a new project by executing npm install awesome-web-framework-1.0.0.tgz
.
If this is spelled "bundleDependencies"
, then that is also honored.
optionalDependencies
If a dependency can be used, but you would like npm to proceed if it cannot be
@@ -567,5 +581,5 @@
SEE ALSO
-
+
diff --git a/deps/npm/html/doc/index.html b/deps/npm/html/doc/index.html
index 72caf441a7d004..4d3f849ad1fab4 100644
--- a/deps/npm/html/doc/index.html
+++ b/deps/npm/html/doc/index.html
@@ -242,5 +242,5 @@ semver(7)
-
+
diff --git a/deps/npm/html/doc/misc/npm-coding-style.html b/deps/npm/html/doc/misc/npm-coding-style.html
index d2768eed7ef2c3..4e934a2d1006f7 100644
--- a/deps/npm/html/doc/misc/npm-coding-style.html
+++ b/deps/npm/html/doc/misc/npm-coding-style.html
@@ -147,5 +147,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/npm-config.html b/deps/npm/html/doc/misc/npm-config.html
index 417a8db9bfd642..e5703ab77773d0 100644
--- a/deps/npm/html/doc/misc/npm-config.html
+++ b/deps/npm/html/doc/misc/npm-config.html
@@ -457,6 +457,13 @@ long
Type: Boolean
Show extended information in npm ls
and npm search
.
+maxsockets
+
+- Default: 50
+- Type: Number
+
+The maximum number of connections to use per origin (protocol/host/port
+combination). Passed to the http
Agent
used to make the request.
message
- Default: "%s"
@@ -799,5 +806,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/npm-developers.html b/deps/npm/html/doc/misc/npm-developers.html
index 01906ac153a8ba..b5095f6e4762a6 100644
--- a/deps/npm/html/doc/misc/npm-developers.html
+++ b/deps/npm/html/doc/misc/npm-developers.html
@@ -195,5 +195,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/npm-disputes.html b/deps/npm/html/doc/misc/npm-disputes.html
index 7a8aca3414ecbf..31f8e439234546 100644
--- a/deps/npm/html/doc/misc/npm-disputes.html
+++ b/deps/npm/html/doc/misc/npm-disputes.html
@@ -13,7 +13,7 @@ npm-disputes
Handling Module
SYNOPSIS
- Get the author email with
npm owner ls <pkgname>
-- Email the author, CC support@npmjs.com
+- Email the author, CC support@npmjs.com
- After a few weeks, if there's no resolution, we'll sort it out.
Don't squat on package names. Publish code or move out of the way.
@@ -51,12 +51,12 @@ DESCRIPTION
owner (Bob).
- Joe emails Bob, explaining the situation as respectfully as
possible, and what he would like to do with the module name. He
-adds the npm support staff support@npmjs.com to the CC list of
+adds the npm support staff support@npmjs.com to the CC list of
the email. Mention in the email that Bob can run
npm owner add
joe foo
to add Joe as an owner of the foo
package.
- After a reasonable amount of time, if Bob has not responded, or if
Bob and Joe can't come to any sort of resolution, email support
-support@npmjs.com and we'll sort it out. ("Reasonable" is
+support@npmjs.com and we'll sort it out. ("Reasonable" is
usually at least 4 weeks, but extra time is allowed around common
holidays.)
@@ -112,5 +112,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/npm-index.html b/deps/npm/html/doc/misc/npm-index.html
index 3f491423912d99..841d2f882414b1 100644
--- a/deps/npm/html/doc/misc/npm-index.html
+++ b/deps/npm/html/doc/misc/npm-index.html
@@ -242,5 +242,5 @@ semver(7)
-
+
diff --git a/deps/npm/html/doc/misc/npm-orgs.html b/deps/npm/html/doc/misc/npm-orgs.html
index 25b626e7dbfcda..63bf8dd20e0773 100644
--- a/deps/npm/html/doc/misc/npm-orgs.html
+++ b/deps/npm/html/doc/misc/npm-orgs.html
@@ -86,4 +86,4 @@ Team Admins create teams
-
+
diff --git a/deps/npm/html/doc/misc/npm-registry.html b/deps/npm/html/doc/misc/npm-registry.html
index 965cc0878e756f..bc90aa9e60d710 100644
--- a/deps/npm/html/doc/misc/npm-registry.html
+++ b/deps/npm/html/doc/misc/npm-registry.html
@@ -70,5 +70,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/npm-scope.html b/deps/npm/html/doc/misc/npm-scope.html
index 7511fcfdb7a851..8e787b24915adf 100644
--- a/deps/npm/html/doc/misc/npm-scope.html
+++ b/deps/npm/html/doc/misc/npm-scope.html
@@ -45,7 +45,8 @@ Requiring scoped packages
Publishing scoped packages
Scoped packages can be published to any registry that supports them, including
the public npm registry.
-(As of 2015-04-19, the public npm registry does support scoped packages)
+(As of 2015-04-19, and with npm 2.0 or newer, the public npm registry does
+support scoped packages)
If you wish, you may associate a scope with a registry; see below.
Publishing public scoped packages to the public npm registry
To publish a public scoped package, you must specify --access public
with
@@ -91,5 +92,5 @@
SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/npm-scripts.html b/deps/npm/html/doc/misc/npm-scripts.html
index 72f8a86bacf63e..e11f7bcfa6cc77 100644
--- a/deps/npm/html/doc/misc/npm-scripts.html
+++ b/deps/npm/html/doc/misc/npm-scripts.html
@@ -207,5 +207,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/removing-npm.html b/deps/npm/html/doc/misc/removing-npm.html
index ea35c20539d81d..ebdd3610fbbd9c 100644
--- a/deps/npm/html/doc/misc/removing-npm.html
+++ b/deps/npm/html/doc/misc/removing-npm.html
@@ -57,5 +57,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/semver.html b/deps/npm/html/doc/misc/semver.html
index 72aaa36aa6ee3f..ad6dd783786753 100644
--- a/deps/npm/html/doc/misc/semver.html
+++ b/deps/npm/html/doc/misc/semver.html
@@ -302,5 +302,5 @@ Ranges
-
+
diff --git a/deps/npm/lib/cache.js b/deps/npm/lib/cache.js
index 851636c3c17ae9..3a1249b073d0b2 100644
--- a/deps/npm/lib/cache.js
+++ b/deps/npm/lib/cache.js
@@ -288,7 +288,7 @@ function add (args, where, cb) {
break
case "remote":
// get auth, if possible
- mapToRegistry(spec, npm.config, function (err, uri, auth) {
+ mapToRegistry(p.raw, npm.config, function (err, uri, auth) {
if (err) return cb(err)
addRemoteTarball(p.spec, {name : p.name}, null, auth, cb)
diff --git a/deps/npm/lib/cache/caching-client.js b/deps/npm/lib/cache/caching-client.js
index ec8eb8e16ce083..a2c7c5f6fa4fc6 100644
--- a/deps/npm/lib/cache/caching-client.js
+++ b/deps/npm/lib/cache/caching-client.js
@@ -212,6 +212,7 @@ function adaptConfig (config) {
userAgent : config.get("user-agent"),
log : log,
defaultTag : config.get("tag"),
- couchToken : config.get("_token")
+ couchToken : config.get("_token"),
+ maxSockets : config.get('maxsockets')
}
}
diff --git a/deps/npm/lib/config/defaults.js b/deps/npm/lib/config/defaults.js
index a90d4c22b0a87e..3abc81ed5f6354 100644
--- a/deps/npm/lib/config/defaults.js
+++ b/deps/npm/lib/config/defaults.js
@@ -162,6 +162,7 @@ Object.defineProperty(exports, "defaults", {get: function () {
, loglevel : "warn"
, logstream : process.stderr
, long : false
+ , maxsockets : 50
, message : "%s"
, "node-version" : process.version
, npat : false
@@ -268,6 +269,7 @@ exports.types =
, loglevel : ["silent", "error", "warn", "http", "info", "verbose", "silly"]
, logstream : Stream
, long : Boolean
+ , maxsockets : Number
, message: String
, "node-version" : [null, semver]
, npat : Boolean
diff --git a/deps/npm/lib/config/get-credentials-by-uri.js b/deps/npm/lib/config/get-credentials-by-uri.js
index 26a7f4317c6a3a..4122f4ce49fdf8 100644
--- a/deps/npm/lib/config/get-credentials-by-uri.js
+++ b/deps/npm/lib/config/get-credentials-by-uri.js
@@ -20,8 +20,16 @@ function getCredentialsByURI (uri) {
alwaysAuth : undefined
}
- if (this.get(nerfed + ":_authToken")) {
- c.token = this.get(nerfed + ":_authToken")
+ // used to override scope matching for tokens as well as legacy auth
+ if (this.get(nerfed + ':always-auth') !== undefined) {
+ var val = this.get(nerfed + ':always-auth')
+ c.alwaysAuth = val === 'false' ? false : !!val
+ } else if (this.get('always-auth') !== undefined) {
+ c.alwaysAuth = this.get('always-auth')
+ }
+
+ if (this.get(nerfed + ':_authToken')) {
+ c.token = this.get(nerfed + ':_authToken')
// the bearer token is enough, don't confuse things
return c
}
@@ -58,13 +66,6 @@ function getCredentialsByURI (uri) {
c.email = this.get("email")
}
- if (this.get(nerfed + ":always-auth") !== undefined) {
- var val = this.get(nerfed + ":always-auth")
- c.alwaysAuth = val === "false" ? false : !!val
- } else if (this.get("always-auth") !== undefined) {
- c.alwaysAuth = this.get("always-auth")
- }
-
if (c.username && c.password) {
c.auth = new Buffer(c.username + ":" + c.password).toString("base64")
}
diff --git a/deps/npm/lib/npm.js b/deps/npm/lib/npm.js
index cbd6893470ba2d..d349303a15d850 100644
--- a/deps/npm/lib/npm.js
+++ b/deps/npm/lib/npm.js
@@ -150,7 +150,7 @@ var commandCache = {}
, "substack"
, "visnup"
]
- , littleGuys = [ "isntall" ]
+ , littleGuys = [ "isntall", "verison" ]
, fullList = cmdList.concat(aliasNames).filter(function (c) {
return plumbing.indexOf(c) === -1
})
diff --git a/deps/npm/lib/utils/lifecycle.js b/deps/npm/lib/utils/lifecycle.js
index 9805a1c0c1dc45..a1b8ebcb81f13d 100644
--- a/deps/npm/lib/utils/lifecycle.js
+++ b/deps/npm/lib/utils/lifecycle.js
@@ -83,6 +83,9 @@ function lifecycle_ (pkg, stage, wd, env, unsafe, failOk, cb) {
// the bundled one will be used for installing things.
pathArr.unshift(path.join(__dirname, "..", "..", "bin", "node-gyp-bin"))
+ // prefer current node interpreter in child scripts
+ pathArr.push(path.dirname(process.execPath))
+
if (env[PATH]) pathArr.push(env[PATH])
env[PATH] = pathArr.join(process.platform === "win32" ? ";" : ":")
diff --git a/deps/npm/lib/utils/map-to-registry.js b/deps/npm/lib/utils/map-to-registry.js
index bd68a26d42ef8e..3f4d5ed3f02fae 100644
--- a/deps/npm/lib/utils/map-to-registry.js
+++ b/deps/npm/lib/utils/map-to-registry.js
@@ -48,9 +48,53 @@ function mapToRegistry(name, config, cb) {
var auth = config.getCredentialsByURI(registry)
// normalize registry URL so resolution doesn't drop a piece of registry URL
- var normalized = registry.slice(-1) !== "/" ? registry+"/" : registry
- var uri = url.resolve(normalized, name)
- log.silly("mapToRegistry", "uri", uri)
+ var normalized = registry.slice(-1) !== '/' ? registry + '/' : registry
+ var uri
+ log.silly('mapToRegistry', 'data', data)
+ if (data.type === 'remote') {
+ uri = data.spec
+ } else {
+ uri = url.resolve(normalized, name)
+ }
+
+ log.silly('mapToRegistry', 'uri', uri)
+
+ cb(null, uri, scopeAuth(uri, registry, auth), normalized)
+}
+
+function scopeAuth (uri, registry, auth) {
+ var cleaned = {
+ scope: auth.scope,
+ email: auth.email,
+ alwaysAuth: auth.alwaysAuth,
+ token: undefined,
+ username: undefined,
+ password: undefined,
+ auth: undefined
+ }
+
+ var requestHost
+ var registryHost
+
+ if (auth.token || auth.auth || (auth.username && auth.password)) {
+ requestHost = url.parse(uri).hostname
+ registryHost = url.parse(registry).hostname
+
+ if (requestHost === registryHost) {
+ cleaned.token = auth.token
+ cleaned.auth = auth.auth
+ cleaned.username = auth.username
+ cleaned.password = auth.password
+ } else if (auth.alwaysAuth) {
+ log.verbose('scopeAuth', 'alwaysAuth set for', registry)
+ cleaned.token = auth.token
+ cleaned.auth = auth.auth
+ cleaned.username = auth.username
+ cleaned.password = auth.password
+ } else {
+ log.silly('scopeAuth', uri, "doesn't share host with registry", registry)
+ }
+ }
- cb(null, uri, auth, normalized)
+ return cleaned
}
diff --git a/deps/npm/man/man1/npm-adduser.1 b/deps/npm/man/man1/npm-adduser.1
index 9b7b02fe0ee0d4..677f371b3d25b0 100644
--- a/deps/npm/man/man1/npm-adduser.1
+++ b/deps/npm/man/man1/npm-adduser.1
@@ -6,6 +6,8 @@
.RS 2
.nf
npm adduser [\-\-registry=url] [\-\-scope=@orgname] [\-\-always\-auth]
+
+aliases: login, add\-user
.fi
.RE
.SH DESCRIPTION
@@ -64,9 +66,11 @@ npm adduser \-\-registry=http://private\-registry\.example\.com \-\-always\-auth
.RE
.P
This will ensure that all requests to that registry (including for tarballs)
-include an authorization header\. See \fBalways\-auth\fP in npm help 7 \fBnpm\-config\fP for more
-details on always\-auth\. Registry\-specific configuration of \fBalways\-auth\fP takes
-precedence over any global configuration\.
+include an authorization header\. This setting may be necessary for use with
+private registries where metadata and package tarballs are stored on hosts with
+different hostnames\. See \fBalways\-auth\fP in npm help 7 \fBnpm\-config\fP for more details on
+always\-auth\. Registry\-specific configuration of \fBalways\-auth\fP takes precedence
+over any global configuration\.
.SH SEE ALSO
.RS 0
.IP \(bu 2
diff --git a/deps/npm/man/man1/npm-bugs.1 b/deps/npm/man/man1/npm-bugs.1
index 6326dcaffcf33b..0d57757211c012 100644
--- a/deps/npm/man/man1/npm-bugs.1
+++ b/deps/npm/man/man1/npm-bugs.1
@@ -7,6 +7,8 @@
.nf
npm bugs
npm bugs (with no args in a package dir)
+
+aliases: issues
.fi
.RE
.SH DESCRIPTION
diff --git a/deps/npm/man/man1/npm-config.1 b/deps/npm/man/man1/npm-config.1
index 0f39f09eb473c9..3a2d485c88ccf0 100644
--- a/deps/npm/man/man1/npm-config.1
+++ b/deps/npm/man/man1/npm-config.1
@@ -13,6 +13,8 @@ npm config edit
npm c [set|get|delete|list]
npm get
npm set [\-\-global]
+
+aliases: c
.fi
.RE
.SH DESCRIPTION
diff --git a/deps/npm/man/man1/npm-dedupe.1 b/deps/npm/man/man1/npm-dedupe.1
index af6344135010d1..a00d1beedec927 100644
--- a/deps/npm/man/man1/npm-dedupe.1
+++ b/deps/npm/man/man1/npm-dedupe.1
@@ -7,6 +7,8 @@
.nf
npm dedupe [package names\.\.\.]
npm ddp [package names\.\.\.]
+
+aliases: find\-dupes, ddp
.fi
.RE
.SH DESCRIPTION
diff --git a/deps/npm/man/man1/npm-dist-tag.1 b/deps/npm/man/man1/npm-dist-tag.1
index 056a5cd77d08aa..931278fec90d32 100644
--- a/deps/npm/man/man1/npm-dist-tag.1
+++ b/deps/npm/man/man1/npm-dist-tag.1
@@ -8,6 +8,8 @@
npm dist\-tag add @ []
npm dist\-tag rm
npm dist\-tag ls []
+
+aliases: dist\-tags
.fi
.RE
.SH DESCRIPTION
diff --git a/deps/npm/man/man1/npm-install-test.1 b/deps/npm/man/man1/npm-install-test.1
deleted file mode 100644
index 8b99c9af98ac92..00000000000000
--- a/deps/npm/man/man1/npm-install-test.1
+++ /dev/null
@@ -1,32 +0,0 @@
-.TH "NPM" "" "February 2016" "" ""
-.SH "NAME"
-\fBnpm\fR
-.SH SYNOPSIS
-.P
-.RS 2
-.nf
-npm install\-test (with no args, in package dir)
-npm install\-test [<@scope>/]
-npm install\-test [<@scope>/]@
-npm install\-test [<@scope>/]@
-npm install\-test [<@scope>/]@
-npm install\-test
-npm install\-test
-npm install\-test
-
-alias: npm it
-common options: [\-\-save|\-\-save\-dev|\-\-save\-optional] [\-\-save\-exact] [\-\-dry\-run]
-.fi
-.RE
-.SH DESCRIPTION
-.P
-This command runs an \fBnpm install\fP followed immediately by an \fBnpm test\fP\|\. It
-takes exactly the same arguments as \fBnpm install\fP\|\.
-.SH SEE ALSO
-.RS 0
-.IP \(bu 2
-npm help install
-.IP \(bu 2
-npm help test
-
-.RE
diff --git a/deps/npm/man/man1/npm-install.1 b/deps/npm/man/man1/npm-install.1
index 8555ffea5a2cd4..f2b12d2c089be3 100644
--- a/deps/npm/man/man1/npm-install.1
+++ b/deps/npm/man/man1/npm-install.1
@@ -9,7 +9,7 @@ npm install (with no args in a package dir)
npm install
npm install
npm install
-npm install [@/] [\-\-save|\-\-save\-dev|\-\-save\-optional] [\-\-save\-exact]
+npm install [@/] [\-\-save|\-\-save\-dev|\-\-save\-optional] [\-\-save\-exact] [\-\-save\-bundle]
npm install [@/]@
npm install [@/]@
npm install [@/]@
@@ -106,14 +106,13 @@ after packing it up into a tarball (b)\.
.IP \(bu 2
\fB\-\-save\-optional\fP: Package will appear in your \fBoptionalDependencies\fP\|\.
When using any of the above options to save dependencies to your
-package\.json, there is an additional, optional flag:
+package\.json, there are two additional, optional flags:
.IP \(bu 2
\fB\-\-save\-exact\fP: Saved dependencies will be configured with an
exact version rather than using npm's default semver range
operator\.
-\fB\fP is optional\. The package will be downloaded from the registry
-associated with the specified scope\. If no registry is associated with
-the given scope the default registry is assumed\. See npm help 7 \fBnpm\-scope\fP\|\.
+.IP \(bu 2
+\fB\-B, \-\-save\-bundle\fP: Saved dependencies will also be added to your \fBbundleDependencies\fP list\.
Note: if you do not include the @\-symbol on your scope name, npm will
interpret this as a GitHub repository instead, see below\. Scopes names
must also be followed by a slash\.
@@ -127,6 +126,7 @@ npm install @myorg/privatepackage
npm install node\-tap \-\-save\-dev
npm install dtrace\-provider \-\-save\-optional
npm install readable\-stream \-\-save \-\-save\-exact
+npm install ansi\-regex \-\-save \-\-save\-bundle
.fi
.RE
diff --git a/deps/npm/man/man1/npm-link.1 b/deps/npm/man/man1/npm-link.1
index f5c2e3f949144e..73e2a52859f0ad 100644
--- a/deps/npm/man/man1/npm-link.1
+++ b/deps/npm/man/man1/npm-link.1
@@ -14,12 +14,13 @@ npm ln (with any of the previous argument usage)
.P
Package linking is a two\-step process\.
.P
-First, \fBnpm link\fP in a package folder will create a globally\-installed
-symbolic link from \fBprefix/package\-name\fP to the current folder (see
-npm help 7 \fBnpm\-config\fP for the value of \fBprefix\fP)\.
+First, \fBnpm link\fP in a package folder will create a symlink in the global folder
+\fB{prefix}/lib/node_modules/\fP that links to the package where the \fBnpm
+link\fP command was executed\. (see npm help 7 \fBnpm\-config\fP for the value of \fBprefix\fP)\.
.P
Next, in some other location, \fBnpm link package\-name\fP will create a
-symlink from the local \fBnode_modules\fP folder to the global symlink\.
+symbolic link from globally\-installed \fBpackage\-name\fP to \fBnode_modules/\fP
+of the current folder\.
.P
Note that \fBpackage\-name\fP is taken from \fBpackage\.json\fP,
not from directory name\.
@@ -46,7 +47,7 @@ npm link redis # link\-install the package
.P
Now, any changes to ~/projects/node\-redis will be reflected in
~/projects/node\-bloggy/node_modules/node\-redis/\. Note that the link should
-be to the package name, not the directory name for that package\.
+be to the package name, not the directory name for that package\.
.P
You may also shortcut the two steps in one\. For example, to do the
above use\-case in a shorter way:
diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1
index 583be070b1864f..ca07364796dc41 100644
--- a/deps/npm/man/man1/npm-ls.1
+++ b/deps/npm/man/man1/npm-ls.1
@@ -23,7 +23,7 @@ For example, running \fBnpm ls promzard\fP in npm's source tree will show:
.P
.RS 2
.nf
-npm@2.14.20 /path/to/npm
+npm@2.15.0 /path/to/npm
└─┬ init\-package\-json@0\.0\.4
└── promzard@0\.1\.5
.fi
diff --git a/deps/npm/man/man1/npm-owner.1 b/deps/npm/man/man1/npm-owner.1
index fa70604268ae51..85d924f68af499 100644
--- a/deps/npm/man/man1/npm-owner.1
+++ b/deps/npm/man/man1/npm-owner.1
@@ -8,6 +8,8 @@
npm owner ls
npm owner add
npm owner rm
+
+aliases: author
.fi
.RE
.SH DESCRIPTION
diff --git a/deps/npm/man/man1/npm-search.1 b/deps/npm/man/man1/npm-search.1
index f7c1b2af112d71..7afbbc28f9c31b 100644
--- a/deps/npm/man/man1/npm-search.1
+++ b/deps/npm/man/man1/npm-search.1
@@ -5,9 +5,9 @@
.P
.RS 2
.nf
-npm search [\-\-long] [search terms \.\.\.]
-npm s [search terms \.\.\.]
-npm se [search terms \.\.\.]
+npm search [\-l|\-\-long] [search terms \.\.\.]
+
+aliases: s, se, find
.fi
.RE
.SH DESCRIPTION
@@ -31,6 +31,18 @@ Display full package descriptions and other long text across multiple
lines\. When disabled (default) search results are truncated to fit
neatly on a single line\. Modules with extremely long names will
fall on multiple lines\.
+.SS registry
+.RS 0
+.IP \(bu 2
+Default: https://registry\.npmjs\.org/
+.IP \(bu 2
+Type : url
+
+.RE
+.P
+Search the specified registry for modules\. If you have configured npm to point to a different default registry,
+such as your internal private module repository, \fBnpm search\fP will default to that registry when searching\.
+Pass a different registry url such as the default above in order to override this setting\.
.SH SEE ALSO
.RS 0
.IP \(bu 2
diff --git a/deps/npm/man/man1/npm-test.1 b/deps/npm/man/man1/npm-test.1
index b72ed3a1e5518e..6e35b5f540d2c7 100644
--- a/deps/npm/man/man1/npm-test.1
+++ b/deps/npm/man/man1/npm-test.1
@@ -6,7 +6,8 @@
.RS 2
.nf
npm test [\-\- ]
- npm tst [\-\- ]
+
+ aliases: t, tst
.fi
.RE
.SH DESCRIPTION
diff --git a/deps/npm/man/man1/npm-update.1 b/deps/npm/man/man1/npm-update.1
index 70887dda7fa4d0..966488dfb99eab 100644
--- a/deps/npm/man/man1/npm-update.1
+++ b/deps/npm/man/man1/npm-update.1
@@ -6,6 +6,8 @@
.RS 2
.nf
npm update [\-g] [ [ \.\.\.]]
+
+aliases: up, upgrade
.fi
.RE
.SH DESCRIPTION
@@ -25,18 +27,7 @@ or local) will be updated\.
.P
As of \fBnpm@2\.6\.1\fP, the \fBnpm update\fP will only inspect top\-level packages\.
Prior versions of \fBnpm\fP would also recursively inspect all dependencies\.
-To get the old behavior, use \fBnpm \-\-depth Infinity update\fP, but be warned that
-simultaneous asynchronous update of all packages, including \fBnpm\fP itself
-and packages that \fBnpm\fP depends on, often causes problems up to and including
-the uninstallation of \fBnpm\fP itself\.
-.P
-To restore a missing \fBnpm\fP, use the command:
-.P
-.RS 2
-.nf
-curl \-L https://npmjs\.com/install\.sh | sh
-.fi
-.RE
+To get the old behavior, use \fBnpm \-\-depth 9999 update\fP\|\.
.SH EXAMPLES
.P
IMPORTANT VERSION NOTE: these examples assume \fBnpm@2\.6\.1\fP or later\. For
@@ -50,7 +41,7 @@ on dependencies, \fBdep1\fP (\fBdep2\fP, \.\. etc\.)\. The published versions o
.nf
{
"dist\-tags": { "latest": "1\.2\.2" },
- "versions": {
+ "versions": [
"1\.2\.2",
"1\.2\.1",
"1\.2\.0",
@@ -60,7 +51,7 @@ on dependencies, \fBdep1\fP (\fBdep2\fP, \.\. etc\.)\. The published versions o
"0\.4\.1",
"0\.4\.0",
"0\.2\.0"
- }
+ ]
}
.fi
.RE
diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1
index faa648a1c178d1..887dbe2f43220e 100644
--- a/deps/npm/man/man1/npm.1
+++ b/deps/npm/man/man1/npm.1
@@ -10,7 +10,7 @@ npm [args]
.RE
.SH VERSION
.P
-2.14.20
+2.15.0
.SH DESCRIPTION
.P
npm is the package manager for the Node JavaScript platform\. It puts
@@ -152,13 +152,13 @@ file in the "doc" folder\. (Don't worry about generating the man page\.)
Contributors are listed in npm's \fBpackage\.json\fP file\. You can view them
easily by doing \fBnpm view npm contributors\fP\|\.
.P
-If you would like to contribute, but don't know what to work on, check
-the issues list or ask on the mailing list\.
+If you would like to contribute, but don't know what to work on, read
+the contributing guidelines and check the issues list\.
.RS 0
.IP \(bu 2
-https://github\.com/npm/npm/issues
+https://github\.com/npm/npm/wiki/Contributing\-Guidelines
.IP \(bu 2
-npm\-@googlegroups\.com
+https://github\.com/npm/npm/issues
.RE
.SH BUGS
@@ -168,9 +168,6 @@ When you find issues, please report them:
.IP \(bu 2
web:
https://github\.com/npm/npm/issues
-.IP \(bu 2
-email:
-npm\-@googlegroups\.com
.RE
.P
diff --git a/deps/npm/man/man3/npm.3 b/deps/npm/man/man3/npm.3
index 7fa67dbcb2ad67..9142d46a32d9ca 100644
--- a/deps/npm/man/man3/npm.3
+++ b/deps/npm/man/man3/npm.3
@@ -20,7 +20,7 @@ npm\.load([configObject, ]function (er, npm) {
.RE
.SH VERSION
.P
-2.14.20
+2.15.0
.SH DESCRIPTION
.P
This is the API documentation for npm\.
diff --git a/deps/npm/man/man5/npm-json.5 b/deps/npm/man/man5/npm-json.5
index 2cfab7b03e119f..5d00c21b561145 100644
--- a/deps/npm/man/man5/npm-json.5
+++ b/deps/npm/man/man5/npm-json.5
@@ -399,6 +399,10 @@ maybe, someday\.
.SS directories\.example
.P
Put example scripts in here\. Someday, it might be exposed in some clever way\.
+.SS directories\.test
+.P
+Put your tests in here\. It is currently not exposed, but it might be in the
+future\.
.SH repository
.P
Specify the place where your code lives\. This is helpful for people who
@@ -696,7 +700,26 @@ with every 1\.x version of the host package, use \fB"^1\.0"\fP or \fB"1\.x"\fP t
this\. If you depend on features introduced in 1\.5\.2, use \fB">= 1\.5\.2 < 2"\fP\|\.
.SH bundledDependencies
.P
-Array of package names that will be bundled when publishing the package\.
+This defines an array of package names that will be bundled when publishing the package\.
+.P
+In cases where you need to preserve npm packages locally or have them available through a single file download, you can bundle the packages in a tarball file by specifying the package names in the \fBbundledDependencies\fP array and executing \fBnpm pack\fP\|\.
+.P
+For example:
+If we define a package\.json like this:
+.P
+.RS 2
+.nf
+{
+ "name": "awesome\-web\-framework",
+ "version": "1\.0\.0",
+ "bundledDependencies": [
+ 'renderized', 'super\-streams'
+ ]
+}
+.fi
+.RE
+.P
+we can obtain \fBawesome\-web\-framework\-1\.0\.0\.tgz\fP file by running \fBnpm pack\fP\|\. This file contains the dependencies \fBrenderized\fP and \fBsuper\-streams\fP which can be installed in a new project by executing \fBnpm install awesome\-web\-framework\-1\.0\.0\.tgz\fP\|\.
.P
If this is spelled \fB"bundleDependencies"\fP, then that is also honored\.
.SH optionalDependencies
diff --git a/deps/npm/man/man5/package.json.5 b/deps/npm/man/man5/package.json.5
index 2cfab7b03e119f..5d00c21b561145 100644
--- a/deps/npm/man/man5/package.json.5
+++ b/deps/npm/man/man5/package.json.5
@@ -399,6 +399,10 @@ maybe, someday\.
.SS directories\.example
.P
Put example scripts in here\. Someday, it might be exposed in some clever way\.
+.SS directories\.test
+.P
+Put your tests in here\. It is currently not exposed, but it might be in the
+future\.
.SH repository
.P
Specify the place where your code lives\. This is helpful for people who
@@ -696,7 +700,26 @@ with every 1\.x version of the host package, use \fB"^1\.0"\fP or \fB"1\.x"\fP t
this\. If you depend on features introduced in 1\.5\.2, use \fB">= 1\.5\.2 < 2"\fP\|\.
.SH bundledDependencies
.P
-Array of package names that will be bundled when publishing the package\.
+This defines an array of package names that will be bundled when publishing the package\.
+.P
+In cases where you need to preserve npm packages locally or have them available through a single file download, you can bundle the packages in a tarball file by specifying the package names in the \fBbundledDependencies\fP array and executing \fBnpm pack\fP\|\.
+.P
+For example:
+If we define a package\.json like this:
+.P
+.RS 2
+.nf
+{
+ "name": "awesome\-web\-framework",
+ "version": "1\.0\.0",
+ "bundledDependencies": [
+ 'renderized', 'super\-streams'
+ ]
+}
+.fi
+.RE
+.P
+we can obtain \fBawesome\-web\-framework\-1\.0\.0\.tgz\fP file by running \fBnpm pack\fP\|\. This file contains the dependencies \fBrenderized\fP and \fBsuper\-streams\fP which can be installed in a new project by executing \fBnpm install awesome\-web\-framework\-1\.0\.0\.tgz\fP\|\.
.P
If this is spelled \fB"bundleDependencies"\fP, then that is also honored\.
.SH optionalDependencies
diff --git a/deps/npm/man/man7/npm-config.7 b/deps/npm/man/man7/npm-config.7
index c60d8d94415638..77ca38136c4f6b 100644
--- a/deps/npm/man/man7/npm-config.7
+++ b/deps/npm/man/man7/npm-config.7
@@ -735,6 +735,17 @@ Type: Boolean
.RE
.P
Show extended information in \fBnpm ls\fP and \fBnpm search\fP\|\.
+.SS maxsockets
+.RS 0
+.IP \(bu 2
+Default: 50
+.IP \(bu 2
+Type: Number
+
+.RE
+.P
+The maximum number of connections to use per origin (protocol/host/port
+combination)\. Passed to the \fBhttp\fP \fBAgent\fP used to make the request\.
.SS message
.RS 0
.IP \(bu 2
diff --git a/deps/npm/man/man7/npm-scope.7 b/deps/npm/man/man7/npm-scope.7
index 4a97a8536ba64d..1255f57d65b49c 100644
--- a/deps/npm/man/man7/npm-scope.7
+++ b/deps/npm/man/man7/npm-scope.7
@@ -67,7 +67,8 @@ just specifying to require the module \fBmypackage\fP in the folder called \fB@m
Scoped packages can be published to any registry that supports them, including
the public npm registry\.
.P
-(As of 2015\-04\-19, the public npm registry \fBdoes\fR support scoped packages)
+(As of 2015\-04\-19, and with npm 2\.0 or newer, the public npm registry \fBdoes\fR
+support scoped packages)
.P
If you wish, you may associate a scope with a registry; see below\.
.SS Publishing public scoped packages to the public npm registry
diff --git a/deps/npm/node_modules/glob/README.md b/deps/npm/node_modules/glob/README.md
index 063cf950ac0c29..9dd9384fa143c3 100644
--- a/deps/npm/node_modules/glob/README.md
+++ b/deps/npm/node_modules/glob/README.md
@@ -1,9 +1,9 @@
-[![Build Status](https://travis-ci.org/isaacs/node-glob.svg?branch=master)](https://travis-ci.org/isaacs/node-glob/) [![Dependency Status](https://david-dm.org/isaacs/node-glob.svg)](https://david-dm.org/isaacs/node-glob) [![devDependency Status](https://david-dm.org/isaacs/node-glob/dev-status.svg)](https://david-dm.org/isaacs/node-glob#info=devDependencies) [![optionalDependency Status](https://david-dm.org/isaacs/node-glob/optional-status.svg)](https://david-dm.org/isaacs/node-glob#info=optionalDependencies)
-
# Glob
Match files using the patterns the shell uses, like stars and stuff.
+[![Build Status](https://travis-ci.org/isaacs/node-glob.svg?branch=master)](https://travis-ci.org/isaacs/node-glob/) [![Build Status](https://ci.appveyor.com/api/projects/status/kd7f3yftf7unxlsx?svg=true)](https://ci.appveyor.com/project/isaacs/node-glob) [![Coverage Status](https://coveralls.io/repos/isaacs/node-glob/badge.svg?branch=master&service=github)](https://coveralls.io/github/isaacs/node-glob?branch=master)
+
This is a glob implementation in JavaScript. It uses the `minimatch`
library to do its matching.
@@ -11,6 +11,12 @@ library to do its matching.
## Usage
+Install with npm
+
+```
+npm i glob
+```
+
```javascript
var glob = require("glob")
@@ -74,14 +80,6 @@ slashes in it, then it will seek for any file anywhere in the tree
with a matching basename. For example, `*.js` would match
`test/simple/basic.js`.
-### Negation
-
-The intent for negation would be for a pattern starting with `!` to
-match everything that *doesn't* match the supplied pattern. However,
-the implementation is weird, and for the time being, this should be
-avoided. The behavior is deprecated in version 5, and will be removed
-entirely in version 6.
-
### Empty Sets
If no matching files are found, then an empty array is returned. This
@@ -114,19 +112,19 @@ options.
## glob(pattern, [options], cb)
-* `pattern` {String} Pattern to be matched
-* `options` {Object}
-* `cb` {Function}
- * `err` {Error | null}
- * `matches` {Array} filenames found matching the pattern
+* `pattern` `{String}` Pattern to be matched
+* `options` `{Object}`
+* `cb` `{Function}`
+ * `err` `{Error | null}`
+ * `matches` `{Array}` filenames found matching the pattern
Perform an asynchronous glob search.
## glob.sync(pattern, [options])
-* `pattern` {String} Pattern to be matched
-* `options` {Object}
-* return: {Array} filenames found matching the pattern
+* `pattern` `{String}` Pattern to be matched
+* `options` `{Object}`
+* return: `{Array}` filenames found matching the pattern
Perform a synchronous glob search.
@@ -144,11 +142,11 @@ immediately.
### new glob.Glob(pattern, [options], [cb])
-* `pattern` {String} pattern to search for
-* `options` {Object}
-* `cb` {Function} Called when an error occurs, or matches are found
- * `err` {Error | null}
- * `matches` {Array} filenames found matching the pattern
+* `pattern` `{String}` pattern to search for
+* `options` `{Object}`
+* `cb` `{Function}` Called when an error occurs, or matches are found
+ * `err` `{Error | null}`
+ * `matches` `{Array}` filenames found matching the pattern
Note that if the `sync` flag is set in the options, then matches will
be immediately available on the `g.found` member.
@@ -164,8 +162,8 @@ be immediately available on the `g.found` member.
values:
* `false` - Path does not exist
* `true` - Path exists
- * `'DIR'` - Path exists, and is not a directory
- * `'FILE'` - Path exists, and is a directory
+ * `'FILE'` - Path exists, and is not a directory
+ * `'DIR'` - Path exists, and is a directory
* `[file, entries, ...]` - Path exists, is a directory, and the
array value is the results of `fs.readdir`
* `statCache` Cache of `fs.stat` results, to prevent statting the same
@@ -182,7 +180,8 @@ be immediately available on the `g.found` member.
matches found. If the `nonull` option is set, and no match was found,
then the `matches` list contains the original pattern. The matches
are sorted, unless the `nosort` flag is set.
-* `match` Every time a match is found, this is emitted with the matched.
+* `match` Every time a match is found, this is emitted with the specific
+ thing that matched. It is not deduplicated or resolved to a realpath.
* `error` Emitted when an unexpected error is encountered, or whenever
any fs error occurs if `options.strict` is set.
* `abort` When `abort()` is called, this event is raised.
@@ -264,7 +263,9 @@ the filesystem.
equivalent to `**/*.js`, matching all js files in all directories.
* `nodir` Do not match directories, only files. (Note: to match
*only* directories, simply put a `/` at the end of the pattern.)
-* `ignore` Add a pattern or an array of patterns to exclude matches.
+* `ignore` Add a pattern or an array of glob patterns to exclude matches.
+ Note: `ignore` patterns are *always* in `dot:true` mode, regardless
+ of any other settings.
* `follow` Follow symlinked directories when expanding `**` patterns.
Note that this can result in a lot of duplicate references in the
presence of cyclic links.
@@ -272,10 +273,6 @@ the filesystem.
In the case of a symlink that cannot be resolved, the full absolute
path to the matched entry is returned (though it will usually be a
broken symlink)
-* `nonegate` Suppress deprecated `negate` behavior. (See below.)
- Default=true
-* `nocomment` Suppress deprecated `comment` behavior. (See below.)
- Default=true
## Comparisons to other fnmatch/glob implementations
@@ -308,22 +305,13 @@ checked for validity. Since those two are valid, matching proceeds.
### Comments and Negation
-**Note**: In version 5 of this module, negation and comments are
-**disabled** by default. You can explicitly set `nonegate:false` or
-`nocomment:false` to re-enable them. They are going away entirely in
-version 6.
-
-The intent for negation would be for a pattern starting with `!` to
-match everything that *doesn't* match the supplied pattern. However,
-the implementation is weird. It is better to use the `ignore` option
-to set a pattern or set of patterns to exclude from matches. If you
-want the "everything except *x*" type of behavior, you can use `**` as
-the main pattern, and set an `ignore` for the things to exclude.
-
-The comments feature is added in minimatch, primarily to more easily
-support use cases like ignore files, where a `#` at the start of a
-line makes the pattern "empty". However, in the context of a
-straightforward filesystem globber, "comments" don't make much sense.
+Previously, this module let you mark a pattern as a "comment" if it
+started with a `#` character, or a "negated" pattern if it started
+with a `!` character.
+
+These options were deprecated in version 5, and removed in version 6.
+
+To specify things that should not match, use the `ignore` option.
## Windows
diff --git a/deps/npm/node_modules/glob/changelog.md b/deps/npm/node_modules/glob/changelog.md
new file mode 100644
index 00000000000000..41636771e3a7cd
--- /dev/null
+++ b/deps/npm/node_modules/glob/changelog.md
@@ -0,0 +1,67 @@
+## 7.0
+
+- Raise error if `options.cwd` is specified, and not a directory
+
+## 6.0
+
+- Remove comment and negation pattern support
+- Ignore patterns are always in `dot:true` mode
+
+## 5.0
+
+- Deprecate comment and negation patterns
+- Fix regression in `mark` and `nodir` options from making all cache
+ keys absolute path.
+- Abort if `fs.readdir` returns an error that's unexpected
+- Don't emit `match` events for ignored items
+- Treat ENOTSUP like ENOTDIR in readdir
+
+## 4.5
+
+- Add `options.follow` to always follow directory symlinks in globstar
+- Add `options.realpath` to call `fs.realpath` on all results
+- Always cache based on absolute path
+
+## 4.4
+
+- Add `options.ignore`
+- Fix handling of broken symlinks
+
+## 4.3
+
+- Bump minimatch to 2.x
+- Pass all tests on Windows
+
+## 4.2
+
+- Add `glob.hasMagic` function
+- Add `options.nodir` flag
+
+## 4.1
+
+- Refactor sync and async implementations for performance
+- Throw if callback provided to sync glob function
+- Treat symbolic links in globstar results the same as Bash 4.3
+
+## 4.0
+
+- Use `^` for dependency versions (bumped major because this breaks
+ older npm versions)
+- Ensure callbacks are only ever called once
+- switch to ISC license
+
+## 3.x
+
+- Rewrite in JavaScript
+- Add support for setting root, cwd, and windows support
+- Cache many fs calls
+- Add globstar support
+- emit match events
+
+## 2.x
+
+- Use `glob.h` and `fnmatch.h` from NetBSD
+
+## 1.x
+
+- `glob.h` static binding.
diff --git a/deps/npm/node_modules/glob/common.js b/deps/npm/node_modules/glob/common.js
index e36a631cab20c4..58dc41e6632160 100644
--- a/deps/npm/node_modules/glob/common.js
+++ b/deps/npm/node_modules/glob/common.js
@@ -36,15 +36,16 @@ function setupIgnores (self, options) {
}
}
+// ignore patterns are always in dot:true mode.
function ignoreMap (pattern) {
var gmatcher = null
if (pattern.slice(-3) === '/**') {
var gpattern = pattern.replace(/(\/\*\*)+$/, '')
- gmatcher = new Minimatch(gpattern)
+ gmatcher = new Minimatch(gpattern, { dot: true })
}
return {
- matcher: new Minimatch(pattern),
+ matcher: new Minimatch(pattern, { dot: true }),
gmatcher: gmatcher
}
}
@@ -92,8 +93,8 @@ function setopts (self, pattern, options) {
if (!ownProp(options, "cwd"))
self.cwd = cwd
else {
- self.cwd = options.cwd
- self.changedCwd = path.resolve(options.cwd) !== cwd
+ self.cwd = path.resolve(options.cwd)
+ self.changedCwd = self.cwd !== cwd
}
self.root = options.root || path.resolve(self.cwd, "/")
@@ -101,37 +102,18 @@ function setopts (self, pattern, options) {
if (process.platform === "win32")
self.root = self.root.replace(/\\/g, "/")
+ self.cwdAbs = makeAbs(self, self.cwd)
self.nomount = !!options.nomount
- // disable comments and negation unless the user explicitly
- // passes in false as the option.
- options.nonegate = options.nonegate === false ? false : true
- options.nocomment = options.nocomment === false ? false : true
- deprecationWarning(options)
+ // disable comments and negation in Minimatch.
+ // Note that they are not supported in Glob itself anyway.
+ options.nonegate = true
+ options.nocomment = true
self.minimatch = new Minimatch(pattern, options)
self.options = self.minimatch.options
}
-// TODO(isaacs): remove entirely in v6
-// exported to reset in tests
-exports.deprecationWarned
-function deprecationWarning(options) {
- if (!options.nonegate || !options.nocomment) {
- if (process.noDeprecation !== true && !exports.deprecationWarned) {
- var msg = 'glob WARNING: comments and negation will be disabled in v6'
- if (process.throwDeprecation)
- throw new Error(msg)
- else if (process.traceDeprecation)
- console.trace(msg)
- else
- console.error(msg)
-
- exports.deprecationWarned = true
- }
- }
-}
-
function finish (self) {
var nou = self.nounique
var all = nou ? [] : Object.create(null)
@@ -172,7 +154,11 @@ function finish (self) {
}
if (self.nodir) {
all = all.filter(function (e) {
- return !(/\/$/.test(e))
+ var notDir = !(/\/$/.test(e))
+ var c = self.cache[e] || self.cache[makeAbs(self, e)]
+ if (notDir && c)
+ notDir = c !== 'DIR' && !Array.isArray(c)
+ return notDir
})
}
}
@@ -220,6 +206,10 @@ function makeAbs (self, f) {
} else {
abs = path.resolve(f)
}
+
+ if (process.platform === 'win32')
+ abs = abs.replace(/\\/g, '/')
+
return abs
}
diff --git a/deps/npm/node_modules/glob/glob.js b/deps/npm/node_modules/glob/glob.js
index 022d2ac8c6e58b..4dba04adec43c4 100644
--- a/deps/npm/node_modules/glob/glob.js
+++ b/deps/npm/node_modules/glob/glob.js
@@ -80,8 +80,21 @@ var GlobSync = glob.GlobSync = globSync.GlobSync
// old api surface
glob.glob = glob
+function extend (origin, add) {
+ if (add === null || typeof add !== 'object') {
+ return origin
+ }
+
+ var keys = Object.keys(add)
+ var i = keys.length
+ while (i--) {
+ origin[keys[i]] = add[keys[i]]
+ }
+ return origin
+}
+
glob.hasMagic = function (pattern, options_) {
- var options = util._extend({}, options_)
+ var options = extend({}, options_)
options.noprocess = true
var g = new Glob(pattern, options)
@@ -149,14 +162,23 @@ function Glob (pattern, options, cb) {
if (n === 0)
return done()
+ var sync = true
for (var i = 0; i < n; i ++) {
this._process(this.minimatch.set[i], i, false, done)
}
+ sync = false
function done () {
--self._processing
- if (self._processing <= 0)
- self._finish()
+ if (self._processing <= 0) {
+ if (sync) {
+ process.nextTick(function () {
+ self._finish()
+ })
+ } else {
+ self._finish()
+ }
+ }
}
}
@@ -558,7 +580,15 @@ Glob.prototype._readdirError = function (f, er, cb) {
switch (er.code) {
case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205
case 'ENOTDIR': // totally normal. means it *does* exist.
- this.cache[this._makeAbs(f)] = 'FILE'
+ var abs = this._makeAbs(f)
+ this.cache[abs] = 'FILE'
+ if (abs === this.cwdAbs) {
+ var error = new Error(er.code + ' invalid cwd ' + this.cwd)
+ error.path = this.cwd
+ error.code = er.code
+ this.emit('error', error)
+ this.abort()
+ }
break
case 'ENOENT': // not terribly unusual
diff --git a/deps/npm/node_modules/glob/package.json b/deps/npm/node_modules/glob/package.json
index 2949b83be0637f..4d5d7f791d6eab 100644
--- a/deps/npm/node_modules/glob/package.json
+++ b/deps/npm/node_modules/glob/package.json
@@ -6,7 +6,7 @@
},
"name": "glob",
"description": "a little globber",
- "version": "5.0.15",
+ "version": "7.0.3",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/node-glob.git"
@@ -30,7 +30,7 @@
"devDependencies": {
"mkdirp": "0",
"rimraf": "^2.2.8",
- "tap": "^1.1.4",
+ "tap": "^5.7.0",
"tick": "0.0.6"
},
"scripts": {
@@ -43,23 +43,23 @@
"benchclean": "node benchclean.js"
},
"license": "ISC",
- "gitHead": "3a7e71d453dd80e75b196fd262dd23ed54beeceb",
+ "gitHead": "2fc2278ab857c7df117213a2fb431de090be6353",
"bugs": {
"url": "https://github.com/isaacs/node-glob/issues"
},
"homepage": "https://github.com/isaacs/node-glob#readme",
- "_id": "glob@5.0.15",
- "_shasum": "1bc936b9e02f4a603fcc222ecf7633d30b8b93b1",
- "_from": "glob@5.0.15",
- "_npmVersion": "3.3.2",
- "_nodeVersion": "4.0.0",
+ "_id": "glob@7.0.3",
+ "_shasum": "0aa235931a4a96ac13d60ffac2fb877bd6ed4f58",
+ "_from": "glob@7.0.3",
+ "_npmVersion": "3.7.3",
+ "_nodeVersion": "5.6.0",
"_npmUser": {
"name": "isaacs",
- "email": "isaacs@npmjs.com"
+ "email": "i@izs.me"
},
"dist": {
- "shasum": "1bc936b9e02f4a603fcc222ecf7633d30b8b93b1",
- "tarball": "http://registry.npmjs.org/glob/-/glob-5.0.15.tgz"
+ "shasum": "0aa235931a4a96ac13d60ffac2fb877bd6ed4f58",
+ "tarball": "http://registry.npmjs.org/glob/-/glob-7.0.3.tgz"
},
"maintainers": [
{
@@ -67,7 +67,10 @@
"email": "i@izs.me"
}
],
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/glob-7.0.3.tgz_1457166529288_0.7840580905321985"
+ },
"directories": {},
- "_resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
- "readme": "ERROR: No README data found!"
+ "_resolved": "https://registry.npmjs.org/glob/-/glob-7.0.3.tgz"
}
diff --git a/deps/npm/node_modules/glob/sync.js b/deps/npm/node_modules/glob/sync.js
index 09883d2ce0c9de..301577ab5f228f 100644
--- a/deps/npm/node_modules/glob/sync.js
+++ b/deps/npm/node_modules/glob/sync.js
@@ -305,7 +305,14 @@ GlobSync.prototype._readdirError = function (f, er) {
switch (er.code) {
case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205
case 'ENOTDIR': // totally normal. means it *does* exist.
- this.cache[this._makeAbs(f)] = 'FILE'
+ var abs = this._makeAbs(f)
+ this.cache[abs] = 'FILE'
+ if (abs === this.cwdAbs) {
+ var error = new Error(er.code + ' invalid cwd ' + this.cwd)
+ error.path = this.cwd
+ error.code = er.code
+ throw error
+ }
break
case 'ENOENT': // not terribly unusual
diff --git a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py
index ad6eff6d17b17d..bb9eb5f4b96775 100644
--- a/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py
+++ b/deps/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py
@@ -164,7 +164,7 @@ def Write(self, qualified_target, relative_target, base_path, output_filename,
if self.toolset == 'host':
self.WriteLn('LOCAL_IS_HOST_MODULE := true')
self.WriteLn('LOCAL_MULTILIB := $(GYP_HOST_MULTILIB)')
- else:
+ elif sdk_version > 0:
self.WriteLn('LOCAL_MODULE_TARGET_ARCH := '
'$(TARGET_$(GYP_VAR_PREFIX)ARCH)')
self.WriteLn('LOCAL_SDK_VERSION := %s' % sdk_version)
@@ -965,7 +965,7 @@ def GenerateOutput(target_list, target_dicts, data, params):
builddir_name = generator_flags.get('output_dir', 'out')
limit_to_target_all = generator_flags.get('limit_to_target_all', False)
write_alias_targets = generator_flags.get('write_alias_targets', True)
- sdk_version = generator_flags.get('aosp_sdk_version', 19)
+ sdk_version = generator_flags.get('aosp_sdk_version', 0)
android_top_dir = os.environ.get('ANDROID_BUILD_TOP')
assert android_top_dir, '$ANDROID_BUILD_TOP not set; you need to run lunch.'
diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/package.json b/deps/npm/node_modules/node-gyp/node_modules/glob/package.json
index ad70fb110ce271..434e4696f8fb15 100644
--- a/deps/npm/node_modules/node-gyp/node_modules/glob/package.json
+++ b/deps/npm/node_modules/node-gyp/node_modules/glob/package.json
@@ -67,5 +67,6 @@
"tarball": "http://registry.npmjs.org/glob/-/glob-4.5.3.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz"
+ "_resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/node_modules/debug/node_modules/ms/package.json b/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/node_modules/debug/node_modules/ms/package.json
index b12c4a074f739b..253335e6234907 100644
--- a/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/node_modules/debug/node_modules/ms/package.json
+++ b/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/node_modules/debug/node_modules/ms/package.json
@@ -43,5 +43,6 @@
"tarball": "http://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
+ "_resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/package.json b/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/package.json
index 6d7c5e1048be04..2d403b6b2f2f12 100644
--- a/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/package.json
+++ b/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/package.json
@@ -55,5 +55,6 @@
"tarball": "http://registry.npmjs.org/array-index/-/array-index-1.0.0.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/array-index/-/array-index-1.0.0.tgz"
+ "_resolved": "https://registry.npmjs.org/array-index/-/array-index-1.0.0.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/node-gyp/node_modules/path-array/package.json b/deps/npm/node_modules/node-gyp/node_modules/path-array/package.json
index a9604065674615..974703c2eafbca 100644
--- a/deps/npm/node_modules/node-gyp/node_modules/path-array/package.json
+++ b/deps/npm/node_modules/node-gyp/node_modules/path-array/package.json
@@ -52,5 +52,6 @@
"tarball": "http://registry.npmjs.org/path-array/-/path-array-1.0.1.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/path-array/-/path-array-1.0.1.tgz"
+ "_resolved": "https://registry.npmjs.org/path-array/-/path-array-1.0.1.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/node-gyp/package.json b/deps/npm/node_modules/node-gyp/package.json
index 2c285300a89fe3..aedb6ce63dbf42 100644
--- a/deps/npm/node_modules/node-gyp/package.json
+++ b/deps/npm/node_modules/node-gyp/package.json
@@ -11,7 +11,7 @@
"bindings",
"gyp"
],
- "version": "3.3.0",
+ "version": "3.3.1",
"installVersion": 9,
"author": {
"name": "Nathan Rajlich",
@@ -52,19 +52,19 @@
"scripts": {
"test": "tape test/test-*"
},
- "gitHead": "7b10467b57dc632d358917decbeea94fd1172282",
+ "gitHead": "1dcf356ca7b658789447108b29a985c00ffcf0f5",
"bugs": {
"url": "https://github.com/nodejs/node-gyp/issues"
},
- "homepage": "https://github.com/nodejs/node-gyp",
- "_id": "node-gyp@3.3.0",
- "_shasum": "7cc676b72d0be31dc977fb3c93539cab7adeff1e",
- "_from": "node-gyp@3.3.0",
+ "homepage": "https://github.com/nodejs/node-gyp#readme",
+ "_id": "node-gyp@3.3.1",
+ "_shasum": "80f7b6d7c2f9c0495ba42c518a670c99bdf6e4a0",
+ "_from": "node-gyp@3.3.1",
"_npmVersion": "3.3.12",
- "_nodeVersion": "5.3.0",
+ "_nodeVersion": "6.0.0-pre",
"_npmUser": {
- "name": "rvagg",
- "email": "rod@vagg.org"
+ "name": "bnoordhuis",
+ "email": "info@bnoordhuis.nl"
},
"maintainers": [
{
@@ -93,13 +93,13 @@
}
],
"dist": {
- "shasum": "7cc676b72d0be31dc977fb3c93539cab7adeff1e",
- "tarball": "http://registry.npmjs.org/node-gyp/-/node-gyp-3.3.0.tgz"
+ "shasum": "80f7b6d7c2f9c0495ba42c518a670c99bdf6e4a0",
+ "tarball": "http://registry.npmjs.org/node-gyp/-/node-gyp-3.3.1.tgz"
},
"_npmOperationalInternal": {
- "host": "packages-6-west.internal.npmjs.com",
- "tmp": "tmp/node-gyp-3.3.0.tgz_1455598883163_0.7978834484238178"
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/node-gyp-3.3.1.tgz_1457115144174_0.4018901875242591"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.3.0.tgz"
+ "_resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.3.1.tgz"
}
diff --git a/deps/npm/node_modules/npm-registry-client/README.md b/deps/npm/node_modules/npm-registry-client/README.md
index fb3226cf401b5b..2caa3643708f80 100644
--- a/deps/npm/node_modules/npm-registry-client/README.md
+++ b/deps/npm/node_modules/npm-registry-client/README.md
@@ -310,5 +310,9 @@ any):
Default = `"latest"`
* `couchToken` {Object} A token for use with
[couch-login](https://npmjs.org/package/couch-login).
-* `sessionToken` {string} A random identifier for this set of client requests.
+* `sessionToken` {String} A random identifier for this set of client requests.
Default = 8 random hexadecimal bytes.
+* `maxSockets` {Number} The maximum number of connections that will be open per
+ origin (unique combination of protocol:host:port). Passed to the
+ [httpAgent](https://nodejs.org/api/http.html#http_agent_maxsockets).
+ Default = 50
diff --git a/deps/npm/node_modules/npm-registry-client/index.js b/deps/npm/node_modules/npm-registry-client/index.js
index 9b99a23738f103..a199801f98da99 100644
--- a/deps/npm/node_modules/npm-registry-client/index.js
+++ b/deps/npm/node_modules/npm-registry-client/index.js
@@ -39,6 +39,7 @@ function RegClient (config) {
if (typeof this.config.retry.factor !== 'number') this.config.retry.factor = 10
if (typeof this.config.retry.minTimeout !== 'number') this.config.retry.minTimeout = 10000
if (typeof this.config.retry.maxTimeout !== 'number') this.config.retry.maxTimeout = 60000
+ if (typeof this.config.maxSockets !== 'number') this.config.maxSockets = 50
this.config.userAgent = this.config.userAgent || 'node/' + process.version
this.config.defaultTag = this.config.defaultTag || 'latest'
diff --git a/deps/npm/node_modules/npm-registry-client/lib/initialize.js b/deps/npm/node_modules/npm-registry-client/lib/initialize.js
index 4a2160fbbdad8a..3c12697f03cba6 100644
--- a/deps/npm/node_modules/npm-registry-client/lib/initialize.js
+++ b/deps/npm/node_modules/npm-registry-client/lib/initialize.js
@@ -4,9 +4,6 @@ var HttpsAgent = require('https').Agent
var pkg = require('../package.json')
-var httpAgent
-var httpsAgent
-
module.exports = initialize
function initialize (uri, method, accept, headers) {
@@ -24,7 +21,7 @@ function initialize (uri, method, accept, headers) {
cert: this.config.ssl.certificate,
key: this.config.ssl.key,
ca: this.config.ssl.ca,
- agent: getAgent(uri.protocol, this.config)
+ agent: getAgent.call(this, uri.protocol)
}
// allow explicit disabling of proxy in environment via CLI
@@ -55,28 +52,30 @@ function initialize (uri, method, accept, headers) {
return opts
}
-function getAgent (protocol, config) {
+function getAgent (protocol) {
if (protocol === 'https:') {
- if (!httpsAgent) {
- httpsAgent = new HttpsAgent({
+ if (!this.httpsAgent) {
+ this.httpsAgent = new HttpsAgent({
keepAlive: true,
- localAddress: config.proxy.localAddress,
- rejectUnauthorized: config.ssl.strict,
- ca: config.ssl.ca,
- cert: config.ssl.certificate,
- key: config.ssl.key
+ maxSockets: this.config.maxSockets,
+ localAddress: this.config.proxy.localAddress,
+ rejectUnauthorized: this.config.ssl.strict,
+ ca: this.config.ssl.ca,
+ cert: this.config.ssl.certificate,
+ key: this.config.ssl.key
})
}
- return httpsAgent
+ return this.httpsAgent
} else {
- if (!httpAgent) {
- httpAgent = new HttpAgent({
+ if (!this.httpAgent) {
+ this.httpAgent = new HttpAgent({
keepAlive: true,
- localAddress: config.proxy.localAddress
+ maxSockets: this.config.maxSockets,
+ localAddress: this.config.proxy.localAddress
})
}
- return httpAgent
+ return this.httpAgent
}
}
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/doc/stream.markdown b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/doc/stream.markdown
index bf544f9f2565f3..3988c0cbd0d9c9 100644
--- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/doc/stream.markdown
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/doc/stream.markdown
@@ -3,8 +3,7 @@
Stability: 2 - Stable
A stream is an abstract interface implemented by various objects in
-Node.js. For example a [request to an HTTP
-server](https://iojs.org/dist/v5.0.0/doc/api/http.html#http_http_incomingmessage) is a stream, as is
+Node.js. For example a [request to an HTTP server][] is a stream, as is
[stdout][]. Streams are readable, writable, or both. All streams are
instances of [EventEmitter][]
@@ -93,6 +92,17 @@ server.listen(1337);
// error: Unexpected token o
```
+### Class: stream.Duplex
+
+Duplex streams are streams that implement both the [Readable][] and
+[Writable][] interfaces. See above for usage.
+
+Examples of Duplex streams include:
+
+* [tcp sockets][]
+* [zlib streams][]
+* [crypto streams][]
+
### Class: stream.Readable
@@ -136,61 +146,22 @@ destinations drain and ask for more data.
Examples of readable streams include:
-* [http responses, on the client](https://iojs.org/dist/v5.0.0/doc/api/http.html#http_http_incomingmessage)
-* [http requests, on the server](https://iojs.org/dist/v5.0.0/doc/api/http.html#http_http_incomingmessage)
-* [fs read streams](https://iojs.org/dist/v5.0.0/doc/api/fs.html#fs_class_fs_readstream)
+* [http responses, on the client][]
+* [http requests, on the server][]
+* [fs read streams][]
* [zlib streams][]
* [crypto streams][]
* [tcp sockets][]
* [child process stdout and stderr][]
* [process.stdin][]
-#### Event: 'readable'
-
-When a chunk of data can be read from the stream, it will emit a
-`'readable'` event.
-
-In some cases, listening for a `'readable'` event will cause some data
-to be read into the internal buffer from the underlying system, if it
-hadn't already.
-
-```javascript
-var readable = getReadableStreamSomehow();
-readable.on('readable', function() {
- // there is some data to read now
-});
-```
-
-Once the internal buffer is drained, a `readable` event will fire
-again when more data is available.
-
-The `readable` event is not emitted in the "flowing" mode with the
-sole exception of the last one, on end-of-stream.
-
-The 'readable' event indicates that the stream has new information:
-either new data is available or the end of the stream has been reached.
-In the former case, `.read()` will return that data. In the latter case,
-`.read()` will return null. For instance, in the following example, `foo.txt`
-is an empty file:
-
-```javascript
-var fs = require('fs');
-var rr = fs.createReadStream('foo.txt');
-rr.on('readable', function() {
- console.log('readable:', rr.read());
-});
-rr.on('end', function() {
- console.log('end');
-});
-```
+#### Event: 'close'
-The output of running this script is:
+Emitted when the stream and any of its underlying resources (a file
+descriptor, for example) have been closed. The event indicates that
+no more events will be emitted, and no further computation will occur.
-```
-bash-3.2$ node test.js
-readable: null
-end
-```
+Not all streams will emit the 'close' event.
#### Event: 'data'
@@ -228,101 +199,75 @@ readable.on('end', function() {
});
```
-#### Event: 'close'
-
-Emitted when the stream and any of its underlying resources (a file
-descriptor, for example) have been closed. The event indicates that
-no more events will be emitted, and no further computation will occur.
-
-Not all streams will emit the 'close' event.
-
#### Event: 'error'
* {Error Object}
Emitted if there was an error receiving data.
-#### readable.read([size])
-
-* `size` {Number} Optional argument to specify how much data to read.
-* Return {String | Buffer | null}
-
-The `read()` method pulls some data out of the internal buffer and
-returns it. If there is no data available, then it will return
-`null`.
-
-If you pass in a `size` argument, then it will return that many
-bytes. If `size` bytes are not available, then it will return `null`,
-unless we've ended, in which case it will return the data remaining
-in the buffer.
+#### Event: 'readable'
-If you do not specify a `size` argument, then it will return all the
-data in the internal buffer.
+When a chunk of data can be read from the stream, it will emit a
+`'readable'` event.
-This method should only be called in paused mode. In flowing mode,
-this method is called automatically until the internal buffer is
-drained.
+In some cases, listening for a `'readable'` event will cause some data
+to be read into the internal buffer from the underlying system, if it
+hadn't already.
```javascript
var readable = getReadableStreamSomehow();
readable.on('readable', function() {
- var chunk;
- while (null !== (chunk = readable.read())) {
- console.log('got %d bytes of data', chunk.length);
- }
+ // there is some data to read now
});
```
-If this method returns a data chunk, then it will also trigger the
-emission of a [`'data'` event][].
-
-Note that calling `readable.read([size])` after the `end` event has been
-triggered will return `null`. No runtime error will be raised.
-
-#### readable.setEncoding(encoding)
-
-* `encoding` {String} The encoding to use.
-* Return: `this`
+Once the internal buffer is drained, a `readable` event will fire
+again when more data is available.
-Call this function to cause the stream to return strings of the
-specified encoding instead of Buffer objects. For example, if you do
-`readable.setEncoding('utf8')`, then the output data will be
-interpreted as UTF-8 data, and returned as strings. If you do
-`readable.setEncoding('hex')`, then the data will be encoded in
-hexadecimal string format.
+The `readable` event is not emitted in the "flowing" mode with the
+sole exception of the last one, on end-of-stream.
-This properly handles multi-byte characters that would otherwise be
-potentially mangled if you simply pulled the Buffers directly and
-called `buf.toString(encoding)` on them. If you want to read the data
-as strings, always use this method.
+The 'readable' event indicates that the stream has new information:
+either new data is available or the end of the stream has been reached.
+In the former case, `.read()` will return that data. In the latter case,
+`.read()` will return null. For instance, in the following example, `foo.txt`
+is an empty file:
```javascript
-var readable = getReadableStreamSomehow();
-readable.setEncoding('utf8');
-readable.on('data', function(chunk) {
- assert.equal(typeof chunk, 'string');
- console.log('got %d characters of string data', chunk.length);
+var fs = require('fs');
+var rr = fs.createReadStream('foo.txt');
+rr.on('readable', function() {
+ console.log('readable:', rr.read());
+});
+rr.on('end', function() {
+ console.log('end');
});
```
-#### readable.resume()
+The output of running this script is:
-* Return: `this`
+```
+bash-3.2$ node test.js
+readable: null
+end
+```
-This method will cause the readable stream to resume emitting `data`
-events.
+#### readable.isPaused()
-This method will switch the stream into flowing mode. If you do *not*
-want to consume the data from a stream, but you *do* want to get to
-its `end` event, you can call [`readable.resume()`][] to open the flow of
-data.
+* Return: `Boolean`
+
+This method returns whether or not the `readable` has been **explicitly**
+paused by client code (using `readable.pause()` without a corresponding
+`readable.resume()`).
```javascript
-var readable = getReadableStreamSomehow();
-readable.resume();
-readable.on('end', function() {
- console.log('got to the end, but did not read anything');
-});
+var readable = new stream.Readable
+
+readable.isPaused() // === false
+readable.pause()
+readable.isPaused() // === true
+readable.resume()
+readable.isPaused() // === false
```
#### readable.pause()
@@ -346,24 +291,6 @@ readable.on('data', function(chunk) {
});
```
-#### readable.isPaused()
-
-* Return: `Boolean`
-
-This method returns whether or not the `readable` has been **explicitly**
-paused by client code (using `readable.pause()` without a corresponding
-`readable.resume()`).
-
-```javascript
-var readable = new stream.Readable
-
-readable.isPaused() // === false
-readable.pause()
-readable.isPaused() // === true
-readable.resume()
-readable.isPaused() // === false
-```
-
#### readable.pipe(destination[, options])
* `destination` {[Writable][] Stream} The destination for writing data
@@ -416,54 +343,137 @@ reader.on('end', function() {
Note that `process.stderr` and `process.stdout` are never closed until
the process exits, regardless of the specified options.
-#### readable.unpipe([destination])
+#### readable.read([size])
-* `destination` {[Writable][] Stream} Optional specific stream to unpipe
+* `size` {Number} Optional argument to specify how much data to read.
+* Return {String | Buffer | null}
-This method will remove the hooks set up for a previous `pipe()` call.
+The `read()` method pulls some data out of the internal buffer and
+returns it. If there is no data available, then it will return
+`null`.
-If the destination is not specified, then all pipes are removed.
+If you pass in a `size` argument, then it will return that many
+bytes. If `size` bytes are not available, then it will return `null`,
+unless we've ended, in which case it will return the data remaining
+in the buffer.
-If the destination is specified, but no pipe is set up for it, then
-this is a no-op.
+If you do not specify a `size` argument, then it will return all the
+data in the internal buffer.
+
+This method should only be called in paused mode. In flowing mode,
+this method is called automatically until the internal buffer is
+drained.
```javascript
var readable = getReadableStreamSomehow();
-var writable = fs.createWriteStream('file.txt');
-// All the data from readable goes into 'file.txt',
-// but only for the first second
-readable.pipe(writable);
-setTimeout(function() {
- console.log('stop writing to file.txt');
- readable.unpipe(writable);
- console.log('manually close the file stream');
- writable.end();
-}, 1000);
+readable.on('readable', function() {
+ var chunk;
+ while (null !== (chunk = readable.read())) {
+ console.log('got %d bytes of data', chunk.length);
+ }
+});
```
-#### readable.unshift(chunk)
+If this method returns a data chunk, then it will also trigger the
+emission of a [`'data'` event][].
-* `chunk` {Buffer | String} Chunk of data to unshift onto the read queue
+Note that calling `readable.read([size])` after the `end` event has been
+triggered will return `null`. No runtime error will be raised.
-This is useful in certain cases where a stream is being consumed by a
-parser, which needs to "un-consume" some data that it has
-optimistically pulled out of the source, so that the stream can be
-passed on to some other party.
+#### readable.resume()
-Note that `stream.unshift(chunk)` cannot be called after the `end` event
-has been triggered; a runtime error will be raised.
+* Return: `this`
-If you find that you must often call `stream.unshift(chunk)` in your
-programs, consider implementing a [Transform][] stream instead. (See API
-for Stream Implementors, below.)
+This method will cause the readable stream to resume emitting `data`
+events.
+
+This method will switch the stream into flowing mode. If you do *not*
+want to consume the data from a stream, but you *do* want to get to
+its `end` event, you can call [`readable.resume()`][] to open the flow of
+data.
```javascript
-// Pull off a header delimited by \n\n
-// use unshift() if we get too much
-// Call the callback with (error, header, stream)
-var StringDecoder = require('string_decoder').StringDecoder;
-function parseHeader(stream, callback) {
- stream.on('error', callback);
+var readable = getReadableStreamSomehow();
+readable.resume();
+readable.on('end', function() {
+ console.log('got to the end, but did not read anything');
+});
+```
+
+#### readable.setEncoding(encoding)
+
+* `encoding` {String} The encoding to use.
+* Return: `this`
+
+Call this function to cause the stream to return strings of the
+specified encoding instead of Buffer objects. For example, if you do
+`readable.setEncoding('utf8')`, then the output data will be
+interpreted as UTF-8 data, and returned as strings. If you do
+`readable.setEncoding('hex')`, then the data will be encoded in
+hexadecimal string format.
+
+This properly handles multi-byte characters that would otherwise be
+potentially mangled if you simply pulled the Buffers directly and
+called `buf.toString(encoding)` on them. If you want to read the data
+as strings, always use this method.
+
+```javascript
+var readable = getReadableStreamSomehow();
+readable.setEncoding('utf8');
+readable.on('data', function(chunk) {
+ assert.equal(typeof chunk, 'string');
+ console.log('got %d characters of string data', chunk.length);
+});
+```
+
+#### readable.unpipe([destination])
+
+* `destination` {[Writable][] Stream} Optional specific stream to unpipe
+
+This method will remove the hooks set up for a previous `pipe()` call.
+
+If the destination is not specified, then all pipes are removed.
+
+If the destination is specified, but no pipe is set up for it, then
+this is a no-op.
+
+```javascript
+var readable = getReadableStreamSomehow();
+var writable = fs.createWriteStream('file.txt');
+// All the data from readable goes into 'file.txt',
+// but only for the first second
+readable.pipe(writable);
+setTimeout(function() {
+ console.log('stop writing to file.txt');
+ readable.unpipe(writable);
+ console.log('manually close the file stream');
+ writable.end();
+}, 1000);
+```
+
+#### readable.unshift(chunk)
+
+* `chunk` {Buffer | String} Chunk of data to unshift onto the read queue
+
+This is useful in certain cases where a stream is being consumed by a
+parser, which needs to "un-consume" some data that it has
+optimistically pulled out of the source, so that the stream can be
+passed on to some other party.
+
+Note that `stream.unshift(chunk)` cannot be called after the `end` event
+has been triggered; a runtime error will be raised.
+
+If you find that you must often call `stream.unshift(chunk)` in your
+programs, consider implementing a [Transform][] stream instead. (See API
+for Stream Implementors, below.)
+
+```javascript
+// Pull off a header delimited by \n\n
+// use unshift() if we get too much
+// Call the callback with (error, header, stream)
+var StringDecoder = require('string_decoder').StringDecoder;
+function parseHeader(stream, callback) {
+ stream.on('error', callback);
stream.on('readable', onReadable);
var decoder = new StringDecoder('utf8');
var header = '';
@@ -528,6 +538,16 @@ myReader.on('readable', function() {
});
```
+### Class: stream.Transform
+
+Transform streams are [Duplex][] streams where the output is in some way
+computed from the input. They implement both the [Readable][] and
+[Writable][] interfaces. See above for usage.
+
+Examples of Transform streams include:
+
+* [zlib streams][]
+* [crypto streams][]
### Class: stream.Writable
@@ -538,34 +558,15 @@ that you are writing data *to*.
Examples of writable streams include:
-* [http requests, on the client](https://iojs.org/dist/v5.0.0/doc/api/http.html#http_class_http_clientrequest)
-* [http responses, on the server](https://iojs.org/dist/v5.0.0/doc/api/http.html#http_class_http_serverresponse)
-* [fs write streams](https://iojs.org/dist/v5.0.0/doc/api/fs.html#fs_class_fs_writestream)
+* [http requests, on the client][]
+* [http responses, on the server][]
+* [fs write streams][]
* [zlib streams][]
* [crypto streams][]
* [tcp sockets][]
-* [child process stdin](https://iojs.org/dist/v5.0.0/doc/api/child_process.html#child_process_child_stdin)
+* [child process stdin][]
* [process.stdout][], [process.stderr][]
-#### writable.write(chunk[, encoding][, callback])
-
-* `chunk` {String | Buffer} The data to write
-* `encoding` {String} The encoding, if `chunk` is a String
-* `callback` {Function} Callback for when this chunk of data is flushed
-* Returns: {Boolean} True if the data was handled completely.
-
-This method writes some data to the underlying system, and calls the
-supplied callback once the data has been fully handled.
-
-The return value indicates if you should continue writing right now.
-If the data had to be buffered internally, then it will return
-`false`. Otherwise, it will return `true`.
-
-This return value is strictly advisory. You MAY continue to write,
-even if it returns `false`. However, writes will be buffered in
-memory, so it is best not to do this excessively. Instead, wait for
-the `drain` event before writing more data.
-
#### Event: 'drain'
If a [`writable.write(chunk)`][] call returns false, then the `drain`
@@ -600,40 +601,11 @@ function writeOneMillionTimes(writer, data, encoding, callback) {
}
```
-#### writable.cork()
-
-Forces buffering of all writes.
-
-Buffered data will be flushed either at `.uncork()` or at `.end()` call.
-
-#### writable.uncork()
-
-Flush all data, buffered since `.cork()` call.
-
-#### writable.setDefaultEncoding(encoding)
-
-* `encoding` {String} The new default encoding
-
-Sets the default encoding for a writable stream.
-
-#### writable.end([chunk][, encoding][, callback])
-
-* `chunk` {String | Buffer} Optional data to write
-* `encoding` {String} The encoding, if `chunk` is a String
-* `callback` {Function} Optional callback for when the stream is finished
-
-Call this method when no more data will be written to the stream. If
-supplied, the callback is attached as a listener on the `finish` event.
+#### Event: 'error'
-Calling [`write()`][] after calling [`end()`][] will raise an error.
+* {Error object}
-```javascript
-// write 'hello, ' and then end with 'world!'
-var file = fs.createWriteStream('example.txt');
-file.write('hello, ');
-file.end('world!');
-// writing more now is not allowed!
-```
+Emitted if there was an error when writing or piping data.
#### Event: 'finish'
@@ -686,34 +658,59 @@ reader.pipe(writer);
reader.unpipe(writer);
```
-#### Event: 'error'
+#### writable.cork()
-* {Error object}
+Forces buffering of all writes.
-Emitted if there was an error when writing or piping data.
+Buffered data will be flushed either at `.uncork()` or at `.end()` call.
-### Class: stream.Duplex
+#### writable.end([chunk][, encoding][, callback])
-Duplex streams are streams that implement both the [Readable][] and
-[Writable][] interfaces. See above for usage.
+* `chunk` {String | Buffer} Optional data to write
+* `encoding` {String} The encoding, if `chunk` is a String
+* `callback` {Function} Optional callback for when the stream is finished
-Examples of Duplex streams include:
+Call this method when no more data will be written to the stream. If
+supplied, the callback is attached as a listener on the `finish` event.
-* [tcp sockets][]
-* [zlib streams][]
-* [crypto streams][]
+Calling [`write()`][] after calling [`end()`][] will raise an error.
+```javascript
+// write 'hello, ' and then end with 'world!'
+var file = fs.createWriteStream('example.txt');
+file.write('hello, ');
+file.end('world!');
+// writing more now is not allowed!
+```
-### Class: stream.Transform
+#### writable.setDefaultEncoding(encoding)
-Transform streams are [Duplex][] streams where the output is in some way
-computed from the input. They implement both the [Readable][] and
-[Writable][] interfaces. See above for usage.
+* `encoding` {String} The new default encoding
-Examples of Transform streams include:
+Sets the default encoding for a writable stream.
-* [zlib streams][]
-* [crypto streams][]
+#### writable.uncork()
+
+Flush all data, buffered since `.cork()` call.
+
+#### writable.write(chunk[, encoding][, callback])
+
+* `chunk` {String | Buffer} The data to write
+* `encoding` {String} The encoding, if `chunk` is a String
+* `callback` {Function} Callback for when this chunk of data is flushed
+* Returns: {Boolean} True if the data was handled completely.
+
+This method writes some data to the underlying system, and calls the
+supplied callback once the data has been fully handled.
+
+The return value indicates if you should continue writing right now.
+If the data had to be buffered internally, then it will return
+`false`. Otherwise, it will return `true`.
+
+This return value is strictly advisory. You MAY continue to write,
+even if it returns `false`. However, writes will be buffered in
+memory, so it is best not to do this excessively. Instead, wait for
+the `drain` event before writing more data.
## API for Stream Implementors
@@ -796,6 +793,49 @@ methods described in [API for Stream Consumers][] above. Otherwise, you
can potentially cause adverse side effects in programs that consume
your streaming interfaces.
+### Class: stream.Duplex
+
+
+
+A "duplex" stream is one that is both Readable and Writable, such as a
+TCP socket connection.
+
+Note that `stream.Duplex` is an abstract class designed to be extended
+with an underlying implementation of the `_read(size)` and
+[`_write(chunk, encoding, callback)`][] methods as you would with a
+Readable or Writable stream class.
+
+Since JavaScript doesn't have multiple prototypal inheritance, this
+class prototypally inherits from Readable, and then parasitically from
+Writable. It is thus up to the user to implement both the lowlevel
+`_read(n)` method as well as the lowlevel
+[`_write(chunk, encoding, callback)`][] method on extension duplex classes.
+
+#### new stream.Duplex(options)
+
+* `options` {Object} Passed to both Writable and Readable
+ constructors. Also has the following fields:
+ * `allowHalfOpen` {Boolean} Default=true. If set to `false`, then
+ the stream will automatically end the readable side when the
+ writable side ends and vice versa.
+ * `readableObjectMode` {Boolean} Default=false. Sets `objectMode`
+ for readable side of the stream. Has no effect if `objectMode`
+ is `true`.
+ * `writableObjectMode` {Boolean} Default=false. Sets `objectMode`
+ for writable side of the stream. Has no effect if `objectMode`
+ is `true`.
+
+In classes that extend the Duplex class, make sure to call the
+constructor so that the buffering settings can be properly
+initialized.
+
+### Class: stream.PassThrough
+
+This is a trivial implementation of a [Transform][] stream that simply
+passes the input bytes across to the output. Its purpose is mainly
+for examples and testing, but there are occasionally use cases where
+it can come in handy as a building block for novel sorts of streams.
+
### Class: stream.Readable
@@ -807,15 +847,115 @@ Please see above under [API for Stream Consumers][] for how to consume
streams in your programs. What follows is an explanation of how to
implement Readable streams in your programs.
-#### Example: A Counting Stream
-
-
-
-This is a basic example of a Readable stream. It emits the numerals
-from 1 to 1,000,000 in ascending order, and then ends.
+#### new stream.Readable([options])
-```javascript
-var Readable = require('stream').Readable;
+* `options` {Object}
+ * `highWaterMark` {Number} The maximum number of bytes to store in
+ the internal buffer before ceasing to read from the underlying
+ resource. Default=16kb, or 16 for `objectMode` streams
+ * `encoding` {String} If specified, then buffers will be decoded to
+ strings using the specified encoding. Default=null
+ * `objectMode` {Boolean} Whether this stream should behave
+ as a stream of objects. Meaning that stream.read(n) returns
+ a single value instead of a Buffer of size n. Default=false
+
+In classes that extend the Readable class, make sure to call the
+Readable constructor so that the buffering settings can be properly
+initialized.
+
+#### readable.\_read(size)
+
+* `size` {Number} Number of bytes to read asynchronously
+
+Note: **Implement this method, but do NOT call it directly.**
+
+This method is prefixed with an underscore because it is internal to the
+class that defines it and should only be called by the internal Readable
+class methods. All Readable stream implementations must provide a _read
+method to fetch data from the underlying resource.
+
+When _read is called, if data is available from the resource, `_read` should
+start pushing that data into the read queue by calling `this.push(dataChunk)`.
+`_read` should continue reading from the resource and pushing data until push
+returns false, at which point it should stop reading from the resource. Only
+when _read is called again after it has stopped should it start reading
+more data from the resource and pushing that data onto the queue.
+
+Note: once the `_read()` method is called, it will not be called again until
+the `push` method is called.
+
+The `size` argument is advisory. Implementations where a "read" is a
+single call that returns data can use this to know how much data to
+fetch. Implementations where that is not relevant, such as TCP or
+TLS, may ignore this argument, and simply provide data whenever it
+becomes available. There is no need, for example to "wait" until
+`size` bytes are available before calling [`stream.push(chunk)`][].
+
+#### readable.push(chunk[, encoding])
+
+* `chunk` {Buffer | null | String} Chunk of data to push into the read queue
+* `encoding` {String} Encoding of String chunks. Must be a valid
+ Buffer encoding, such as `'utf8'` or `'ascii'`
+* return {Boolean} Whether or not more pushes should be performed
+
+Note: **This method should be called by Readable implementors, NOT
+by consumers of Readable streams.**
+
+If a value other than null is passed, The `push()` method adds a chunk of data
+into the queue for subsequent stream processors to consume. If `null` is
+passed, it signals the end of the stream (EOF), after which no more data
+can be written.
+
+The data added with `push` can be pulled out by calling the `read()` method
+when the `'readable'`event fires.
+
+This API is designed to be as flexible as possible. For example,
+you may be wrapping a lower-level source which has some sort of
+pause/resume mechanism, and a data callback. In those cases, you
+could wrap the low-level source object by doing something like this:
+
+```javascript
+// source is an object with readStop() and readStart() methods,
+// and an `ondata` member that gets called when it has data, and
+// an `onend` member that gets called when the data is over.
+
+util.inherits(SourceWrapper, Readable);
+
+function SourceWrapper(options) {
+ Readable.call(this, options);
+
+ this._source = getLowlevelSourceObject();
+ var self = this;
+
+ // Every time there's data, we push it into the internal buffer.
+ this._source.ondata = function(chunk) {
+ // if push() returns false, then we need to stop reading from source
+ if (!self.push(chunk))
+ self._source.readStop();
+ };
+
+ // When the source ends, we push the EOF-signaling `null` chunk
+ this._source.onend = function() {
+ self.push(null);
+ };
+}
+
+// _read will be called when the stream wants to pull more data in
+// the advisory size argument is ignored in this case.
+SourceWrapper.prototype._read = function(size) {
+ this._source.readStart();
+};
+```
+
+#### Example: A Counting Stream
+
+
+
+This is a basic example of a Readable stream. It emits the numerals
+from 1 to 1,000,000 in ascending order, and then ends.
+
+```javascript
+var Readable = require('stream').Readable;
var util = require('util');
util.inherits(Counter, Readable);
@@ -951,220 +1091,6 @@ SimpleProtocol.prototype._read = function(n) {
// with the parsed header data.
```
-
-#### new stream.Readable([options])
-
-* `options` {Object}
- * `highWaterMark` {Number} The maximum number of bytes to store in
- the internal buffer before ceasing to read from the underlying
- resource. Default=16kb, or 16 for `objectMode` streams
- * `encoding` {String} If specified, then buffers will be decoded to
- strings using the specified encoding. Default=null
- * `objectMode` {Boolean} Whether this stream should behave
- as a stream of objects. Meaning that stream.read(n) returns
- a single value instead of a Buffer of size n. Default=false
-
-In classes that extend the Readable class, make sure to call the
-Readable constructor so that the buffering settings can be properly
-initialized.
-
-#### readable.\_read(size)
-
-* `size` {Number} Number of bytes to read asynchronously
-
-Note: **Implement this method, but do NOT call it directly.**
-
-This method is prefixed with an underscore because it is internal to the
-class that defines it and should only be called by the internal Readable
-class methods. All Readable stream implementations must provide a _read
-method to fetch data from the underlying resource.
-
-When _read is called, if data is available from the resource, `_read` should
-start pushing that data into the read queue by calling `this.push(dataChunk)`.
-`_read` should continue reading from the resource and pushing data until push
-returns false, at which point it should stop reading from the resource. Only
-when _read is called again after it has stopped should it start reading
-more data from the resource and pushing that data onto the queue.
-
-Note: once the `_read()` method is called, it will not be called again until
-the `push` method is called.
-
-The `size` argument is advisory. Implementations where a "read" is a
-single call that returns data can use this to know how much data to
-fetch. Implementations where that is not relevant, such as TCP or
-TLS, may ignore this argument, and simply provide data whenever it
-becomes available. There is no need, for example to "wait" until
-`size` bytes are available before calling [`stream.push(chunk)`][].
-
-#### readable.push(chunk[, encoding])
-
-* `chunk` {Buffer | null | String} Chunk of data to push into the read queue
-* `encoding` {String} Encoding of String chunks. Must be a valid
- Buffer encoding, such as `'utf8'` or `'ascii'`
-* return {Boolean} Whether or not more pushes should be performed
-
-Note: **This method should be called by Readable implementors, NOT
-by consumers of Readable streams.**
-
-If a value other than null is passed, The `push()` method adds a chunk of data
-into the queue for subsequent stream processors to consume. If `null` is
-passed, it signals the end of the stream (EOF), after which no more data
-can be written.
-
-The data added with `push` can be pulled out by calling the `read()` method
-when the `'readable'`event fires.
-
-This API is designed to be as flexible as possible. For example,
-you may be wrapping a lower-level source which has some sort of
-pause/resume mechanism, and a data callback. In those cases, you
-could wrap the low-level source object by doing something like this:
-
-```javascript
-// source is an object with readStop() and readStart() methods,
-// and an `ondata` member that gets called when it has data, and
-// an `onend` member that gets called when the data is over.
-
-util.inherits(SourceWrapper, Readable);
-
-function SourceWrapper(options) {
- Readable.call(this, options);
-
- this._source = getLowlevelSourceObject();
- var self = this;
-
- // Every time there's data, we push it into the internal buffer.
- this._source.ondata = function(chunk) {
- // if push() returns false, then we need to stop reading from source
- if (!self.push(chunk))
- self._source.readStop();
- };
-
- // When the source ends, we push the EOF-signaling `null` chunk
- this._source.onend = function() {
- self.push(null);
- };
-}
-
-// _read will be called when the stream wants to pull more data in
-// the advisory size argument is ignored in this case.
-SourceWrapper.prototype._read = function(size) {
- this._source.readStart();
-};
-```
-
-
-### Class: stream.Writable
-
-
-
-`stream.Writable` is an abstract class designed to be extended with an
-underlying implementation of the [`_write(chunk, encoding, callback)`][] method.
-
-Please see above under [API for Stream Consumers][] for how to consume
-writable streams in your programs. What follows is an explanation of
-how to implement Writable streams in your programs.
-
-#### new stream.Writable([options])
-
-* `options` {Object}
- * `highWaterMark` {Number} Buffer level when [`write()`][] starts
- returning false. Default=16kb, or 16 for `objectMode` streams
- * `decodeStrings` {Boolean} Whether or not to decode strings into
- Buffers before passing them to [`_write()`][]. Default=true
- * `objectMode` {Boolean} Whether or not the `write(anyObj)` is
- a valid operation. If set you can write arbitrary data instead
- of only `Buffer` / `String` data. Default=false
-
-In classes that extend the Writable class, make sure to call the
-constructor so that the buffering settings can be properly
-initialized.
-
-#### writable.\_write(chunk, encoding, callback)
-
-* `chunk` {Buffer | String} The chunk to be written. Will **always**
- be a buffer unless the `decodeStrings` option was set to `false`.
-* `encoding` {String} If the chunk is a string, then this is the
- encoding type. If chunk is a buffer, then this is the special
- value - 'buffer', ignore it in this case.
-* `callback` {Function} Call this function (optionally with an error
- argument) when you are done processing the supplied chunk.
-
-All Writable stream implementations must provide a [`_write()`][]
-method to send data to the underlying resource.
-
-Note: **This function MUST NOT be called directly.** It should be
-implemented by child classes, and called by the internal Writable
-class methods only.
-
-Call the callback using the standard `callback(error)` pattern to
-signal that the write completed successfully or with an error.
-
-If the `decodeStrings` flag is set in the constructor options, then
-`chunk` may be a string rather than a Buffer, and `encoding` will
-indicate the sort of string that it is. This is to support
-implementations that have an optimized handling for certain string
-data encodings. If you do not explicitly set the `decodeStrings`
-option to `false`, then you can safely ignore the `encoding` argument,
-and assume that `chunk` will always be a Buffer.
-
-This method is prefixed with an underscore because it is internal to
-the class that defines it, and should not be called directly by user
-programs. However, you **are** expected to override this method in
-your own extension classes.
-
-#### writable.\_writev(chunks, callback)
-
-* `chunks` {Array} The chunks to be written. Each chunk has following
- format: `{ chunk: ..., encoding: ... }`.
-* `callback` {Function} Call this function (optionally with an error
- argument) when you are done processing the supplied chunks.
-
-Note: **This function MUST NOT be called directly.** It may be
-implemented by child classes, and called by the internal Writable
-class methods only.
-
-This function is completely optional to implement. In most cases it is
-unnecessary. If implemented, it will be called with all the chunks
-that are buffered in the write queue.
-
-
-### Class: stream.Duplex
-
-
-
-A "duplex" stream is one that is both Readable and Writable, such as a
-TCP socket connection.
-
-Note that `stream.Duplex` is an abstract class designed to be extended
-with an underlying implementation of the `_read(size)` and
-[`_write(chunk, encoding, callback)`][] methods as you would with a
-Readable or Writable stream class.
-
-Since JavaScript doesn't have multiple prototypal inheritance, this
-class prototypally inherits from Readable, and then parasitically from
-Writable. It is thus up to the user to implement both the lowlevel
-`_read(n)` method as well as the lowlevel
-[`_write(chunk, encoding, callback)`][] method on extension duplex classes.
-
-#### new stream.Duplex(options)
-
-* `options` {Object} Passed to both Writable and Readable
- constructors. Also has the following fields:
- * `allowHalfOpen` {Boolean} Default=true. If set to `false`, then
- the stream will automatically end the readable side when the
- writable side ends and vice versa.
- * `readableObjectMode` {Boolean} Default=false. Sets `objectMode`
- for readable side of the stream. Has no effect if `objectMode`
- is `true`.
- * `writableObjectMode` {Boolean} Default=false. Sets `objectMode`
- for writable side of the stream. Has no effect if `objectMode`
- is `true`.
-
-In classes that extend the Duplex class, make sure to call the
-constructor so that the buffering settings can be properly
-initialized.
-
-
### Class: stream.Transform
A "transform" stream is a duplex stream where the output is causally
@@ -1183,12 +1109,47 @@ also implement the `_flush()` method. (See below.)
#### new stream.Transform([options])
-* `options` {Object} Passed to both Writable and Readable
- constructors.
+* `options` {Object} Passed to both Writable and Readable
+ constructors.
+
+In classes that extend the Transform class, make sure to call the
+constructor so that the buffering settings can be properly
+initialized.
+
+#### Events: 'finish' and 'end'
+
+The [`finish`][] and [`end`][] events are from the parent Writable
+and Readable classes respectively. The `finish` event is fired after
+`.end()` is called and all chunks have been processed by `_transform`,
+`end` is fired after all data has been output which is after the callback
+in `_flush` has been called.
+
+#### transform.\_flush(callback)
+
+* `callback` {Function} Call this function (optionally with an error
+ argument) when you are done flushing any remaining data.
+
+Note: **This function MUST NOT be called directly.** It MAY be implemented
+by child classes, and if so, will be called by the internal Transform
+class methods only.
+
+In some cases, your transform operation may need to emit a bit more
+data at the end of the stream. For example, a `Zlib` compression
+stream will store up some internal state so that it can optimally
+compress the output. At the end, however, it needs to do the best it
+can with what is left, so that the data will be complete.
+
+In those cases, you can implement a `_flush` method, which will be
+called at the very end, after all the written data is consumed, but
+before emitting `end` to signal the end of the readable side. Just
+like with `_transform`, call `transform.push(chunk)` zero or more
+times, as appropriate, and call `callback` when the flush operation is
+complete.
-In classes that extend the Transform class, make sure to call the
-constructor so that the buffering settings can be properly
-initialized.
+This method is prefixed with an underscore because it is internal to
+the class that defines it, and should not be called directly by user
+programs. However, you **are** expected to override this method in
+your own extension classes.
#### transform.\_transform(chunk, encoding, callback)
@@ -1238,41 +1199,6 @@ the class that defines it, and should not be called directly by user
programs. However, you **are** expected to override this method in
your own extension classes.
-#### transform.\_flush(callback)
-
-* `callback` {Function} Call this function (optionally with an error
- argument) when you are done flushing any remaining data.
-
-Note: **This function MUST NOT be called directly.** It MAY be implemented
-by child classes, and if so, will be called by the internal Transform
-class methods only.
-
-In some cases, your transform operation may need to emit a bit more
-data at the end of the stream. For example, a `Zlib` compression
-stream will store up some internal state so that it can optimally
-compress the output. At the end, however, it needs to do the best it
-can with what is left, so that the data will be complete.
-
-In those cases, you can implement a `_flush` method, which will be
-called at the very end, after all the written data is consumed, but
-before emitting `end` to signal the end of the readable side. Just
-like with `_transform`, call `transform.push(chunk)` zero or more
-times, as appropriate, and call `callback` when the flush operation is
-complete.
-
-This method is prefixed with an underscore because it is internal to
-the class that defines it, and should not be called directly by user
-programs. However, you **are** expected to override this method in
-your own extension classes.
-
-#### Events: 'finish' and 'end'
-
-The [`finish`][] and [`end`][] events are from the parent Writable
-and Readable classes respectively. The `finish` event is fired after
-`.end()` is called and all chunks have been processed by `_transform`,
-`end` is fired after all data has been output which is after the callback
-in `_flush` has been called.
-
#### Example: `SimpleProtocol` parser v2
The example above of a simple protocol parser can be implemented
@@ -1351,13 +1277,79 @@ SimpleProtocol.prototype._transform = function(chunk, encoding, done) {
// with the parsed header data.
```
+### Class: stream.Writable
-### Class: stream.PassThrough
+
-This is a trivial implementation of a [Transform][] stream that simply
-passes the input bytes across to the output. Its purpose is mainly
-for examples and testing, but there are occasionally use cases where
-it can come in handy as a building block for novel sorts of streams.
+`stream.Writable` is an abstract class designed to be extended with an
+underlying implementation of the [`_write(chunk, encoding, callback)`][] method.
+
+Please see above under [API for Stream Consumers][] for how to consume
+writable streams in your programs. What follows is an explanation of
+how to implement Writable streams in your programs.
+
+#### new stream.Writable([options])
+
+* `options` {Object}
+ * `highWaterMark` {Number} Buffer level when [`write()`][] starts
+ returning false. Default=16kb, or 16 for `objectMode` streams
+ * `decodeStrings` {Boolean} Whether or not to decode strings into
+ Buffers before passing them to [`_write()`][]. Default=true
+ * `objectMode` {Boolean} Whether or not the `write(anyObj)` is
+ a valid operation. If set you can write arbitrary data instead
+ of only `Buffer` / `String` data. Default=false
+
+In classes that extend the Writable class, make sure to call the
+constructor so that the buffering settings can be properly
+initialized.
+
+#### writable.\_write(chunk, encoding, callback)
+
+* `chunk` {Buffer | String} The chunk to be written. Will **always**
+ be a buffer unless the `decodeStrings` option was set to `false`.
+* `encoding` {String} If the chunk is a string, then this is the
+ encoding type. If chunk is a buffer, then this is the special
+ value - 'buffer', ignore it in this case.
+* `callback` {Function} Call this function (optionally with an error
+ argument) when you are done processing the supplied chunk.
+
+All Writable stream implementations must provide a [`_write()`][]
+method to send data to the underlying resource.
+
+Note: **This function MUST NOT be called directly.** It should be
+implemented by child classes, and called by the internal Writable
+class methods only.
+
+Call the callback using the standard `callback(error)` pattern to
+signal that the write completed successfully or with an error.
+
+If the `decodeStrings` flag is set in the constructor options, then
+`chunk` may be a string rather than a Buffer, and `encoding` will
+indicate the sort of string that it is. This is to support
+implementations that have an optimized handling for certain string
+data encodings. If you do not explicitly set the `decodeStrings`
+option to `false`, then you can safely ignore the `encoding` argument,
+and assume that `chunk` will always be a Buffer.
+
+This method is prefixed with an underscore because it is internal to
+the class that defines it, and should not be called directly by user
+programs. However, you **are** expected to override this method in
+your own extension classes.
+
+#### writable.\_writev(chunks, callback)
+
+* `chunks` {Array} The chunks to be written. Each chunk has following
+ format: `{ chunk: ..., encoding: ... }`.
+* `callback` {Function} Call this function (optionally with an error
+ argument) when you are done processing the supplied chunks.
+
+Note: **This function MUST NOT be called directly.** It may be
+implemented by child classes, and called by the internal Writable
+class methods only.
+
+This function is completely optional to implement. In most cases it is
+unnecessary. If implemented, it will be called with all the chunks
+that are buffered in the write queue.
## Simplified Constructor API
@@ -1370,51 +1362,52 @@ This can be done by passing the appropriate methods as constructor options:
Examples:
-### Readable
+### Duplex
```javascript
-var readable = new stream.Readable({
+var duplex = new stream.Duplex({
read: function(n) {
// sets this._read under the hood
- }
-});
-```
-### Writable
-```javascript
-var writable = new stream.Writable({
+ // push data onto the read queue, passing null
+ // will signal the end of the stream (EOF)
+ this.push(chunk);
+ },
write: function(chunk, encoding, next) {
// sets this._write under the hood
+
+ // An optional error can be passed as the first argument
+ next()
}
});
// or
-var writable = new stream.Writable({
+var duplex = new stream.Duplex({
+ read: function(n) {
+ // sets this._read under the hood
+
+ // push data onto the read queue, passing null
+ // will signal the end of the stream (EOF)
+ this.push(chunk);
+ },
writev: function(chunks, next) {
// sets this._writev under the hood
+
+ // An optional error can be passed as the first argument
+ next()
}
});
```
-### Duplex
+### Readable
```javascript
-var duplex = new stream.Duplex({
+var readable = new stream.Readable({
read: function(n) {
// sets this._read under the hood
- },
- write: function(chunk, encoding, next) {
- // sets this._write under the hood
- }
-});
-
-// or
-var duplex = new stream.Duplex({
- read: function(n) {
- // sets this._read under the hood
- },
- writev: function(chunks, next) {
- // sets this._writev under the hood
+ // push data onto the read queue, passing null
+ // will signal the end of the stream (EOF)
+ this.push(chunk);
}
});
```
@@ -1424,9 +1417,43 @@ var duplex = new stream.Duplex({
var transform = new stream.Transform({
transform: function(chunk, encoding, next) {
// sets this._transform under the hood
+
+ // generate output as many times as needed
+ // this.push(chunk);
+
+ // call when the current chunk is consumed
+ next();
},
flush: function(done) {
// sets this._flush under the hood
+
+ // generate output as many times as needed
+ // this.push(chunk);
+
+ done();
+ }
+});
+```
+
+### Writable
+```javascript
+var writable = new stream.Writable({
+ write: function(chunk, encoding, next) {
+ // sets this._write under the hood
+
+ // An optional error can be passed as the first argument
+ next()
+ }
+});
+
+// or
+
+var writable = new stream.Writable({
+ writev: function(chunks, next) {
+ // sets this._writev under the hood
+
+ // An optional error can be passed as the first argument
+ next()
}
});
```
@@ -1458,40 +1485,6 @@ The purpose of streams, especially with the `pipe()` method, is to
limit the buffering of data to acceptable levels, so that sources and
destinations of varying speed will not overwhelm the available memory.
-### `stream.read(0)`
-
-There are some cases where you want to trigger a refresh of the
-underlying readable stream mechanisms, without actually consuming any
-data. In that case, you can call `stream.read(0)`, which will always
-return null.
-
-If the internal read buffer is below the `highWaterMark`, and the
-stream is not currently reading, then calling `read(0)` will trigger
-a low-level `_read` call.
-
-There is almost never a need to do this. However, you will see some
-cases in Node.js's internals where this is done, particularly in the
-Readable stream class internals.
-
-### `stream.push('')`
-
-Pushing a zero-byte string or Buffer (when not in [Object mode][]) has an
-interesting side effect. Because it *is* a call to
-[`stream.push()`][], it will end the `reading` process. However, it
-does *not* add any data to the readable buffer, so there's nothing for
-a user to consume.
-
-Very rarely, there are cases where you have no data to provide now,
-but the consumer of your stream (or, perhaps, another bit of your own
-code) will know when to check again, by calling `stream.read(0)`. In
-those cases, you *may* call `stream.push('')`.
-
-So far, the only use case for this functionality is in the
-[tls.CryptoStream][] class, which is deprecated in Node.js/io.js v1.0. If you
-find that you have to use `stream.push('')`, please consider another
-approach, because it almost certainly indicates that something is
-horribly wrong.
-
### Compatibility with Older Node.js Versions
@@ -1649,25 +1642,66 @@ JSONParseStream.prototype._flush = function(cb) {
};
```
+### `stream.read(0)`
+
+There are some cases where you want to trigger a refresh of the
+underlying readable stream mechanisms, without actually consuming any
+data. In that case, you can call `stream.read(0)`, which will always
+return null.
+
+If the internal read buffer is below the `highWaterMark`, and the
+stream is not currently reading, then calling `read(0)` will trigger
+a low-level `_read` call.
+
+There is almost never a need to do this. However, you will see some
+cases in Node.js's internals where this is done, particularly in the
+Readable stream class internals.
+
+### `stream.push('')`
+
+Pushing a zero-byte string or Buffer (when not in [Object mode][]) has an
+interesting side effect. Because it *is* a call to
+[`stream.push()`][], it will end the `reading` process. However, it
+does *not* add any data to the readable buffer, so there's nothing for
+a user to consume.
+
+Very rarely, there are cases where you have no data to provide now,
+but the consumer of your stream (or, perhaps, another bit of your own
+code) will know when to check again, by calling `stream.read(0)`. In
+those cases, you *may* call `stream.push('')`.
+
+So far, the only use case for this functionality is in the
+[tls.CryptoStream][] class, which is deprecated in Node.js/io.js v1.0. If you
+find that you have to use `stream.push('')`, please consider another
+approach, because it almost certainly indicates that something is
+horribly wrong.
-[EventEmitter]: https://iojs.org/dist/v5.0.0/doc/api/events.html#events_class_events_eventemitter
+[request to an HTTP server]: https://nodejs.org/docs/v5.1.0/api/http.html#http_http_incomingmessage
+[EventEmitter]: https://nodejs.org/docs/v5.1.0/api/events.html#events_class_events_eventemitter
[Object mode]: #stream_object_mode
[`stream.push(chunk)`]: #stream_readable_push_chunk_encoding
[`stream.push(null)`]: #stream_readable_push_chunk_encoding
[`stream.push()`]: #stream_readable_push_chunk_encoding
[`unpipe()`]: #stream_readable_unpipe_destination
[unpiped]: #stream_readable_unpipe_destination
-[tcp sockets]: https://iojs.org/dist/v5.0.0/doc/api/net.html#net_class_net_socket
+[tcp sockets]: https://nodejs.org/docs/v5.1.0/api/net.html#net_class_net_socket
+[http responses, on the client]: https://nodejs.org/docs/v5.1.0/api/http.html#http_http_incomingmessage
+[http requests, on the server]: https://nodejs.org/docs/v5.1.0/api/http.html#http_http_incomingmessage
+[http requests, on the client]: https://nodejs.org/docs/v5.1.0/api/http.html#http_class_http_clientrequest
+[http responses, on the server]: https://nodejs.org/docs/v5.1.0/api/http.html#http_class_http_serverresponse
+[fs read streams]: https://nodejs.org/docs/v5.1.0/api/fs.html#fs_class_fs_readstream
+[fs write streams]: https://nodejs.org/docs/v5.1.0/api/fs.html#fs_class_fs_writestream
[zlib streams]: zlib.html
[zlib]: zlib.html
[crypto streams]: crypto.html
[crypto]: crypto.html
-[tls.CryptoStream]: https://iojs.org/dist/v5.0.0/doc/api/tls.html#tls_class_cryptostream
-[process.stdin]: https://iojs.org/dist/v5.0.0/doc/api/process.html#process_process_stdin
-[stdout]: https://iojs.org/dist/v5.0.0/doc/api/process.html#process_process_stdout
-[process.stdout]: https://iojs.org/dist/v5.0.0/doc/api/process.html#process_process_stdout
-[process.stderr]: https://iojs.org/dist/v5.0.0/doc/api/process.html#process_process_stderr
-[child process stdout and stderr]: https://iojs.org/dist/v5.0.0/doc/api/child_process.html#child_process_child_stdout
+[tls.CryptoStream]: https://nodejs.org/docs/v5.1.0/api/tls.html#tls_class_cryptostream
+[process.stdin]: https://nodejs.org/docs/v5.1.0/api/process.html#process_process_stdin
+[stdout]: https://nodejs.org/docs/v5.1.0/api/process.html#process_process_stdout
+[process.stdout]: https://nodejs.org/docs/v5.1.0/api/process.html#process_process_stdout
+[process.stderr]: https://nodejs.org/docs/v5.1.0/api/process.html#process_process_stderr
+[child process stdout and stderr]: https://nodejs.org/docs/v5.1.0/api/child_process.html#child_process_child_stdout
+[child process stdin]: https://nodejs.org/docs/v5.1.0/api/child_process.html#child_process_child_stdin
[API for Stream Consumers]: #stream_api_for_stream_consumers
[API for Stream Implementors]: #stream_api_for_stream_implementors
[Readable]: #stream_class_stream_readable
@@ -1686,7 +1720,7 @@ JSONParseStream.prototype._flush = function(cb) {
[`_write(chunk, encoding, callback)`]: #stream_writable_write_chunk_encoding_callback_1
[`_write()`]: #stream_writable_write_chunk_encoding_callback_1
[_write]: #stream_writable_write_chunk_encoding_callback_1
-[`util.inherits`]: https://iojs.org/dist/v5.0.0/doc/api/util.html#util_util_inherits_constructor_superconstructor
+[`util.inherits`]: https://nodejs.org/docs/v5.1.0/api/util.html#util_util_inherits_constructor_superconstructor
[`end()`]: #stream_writable_end_chunk_encoding_callback
[`'data'` event]: #stream_event_data
[`resume()`]: #stream_readable_resume
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable.js b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable.js
index 90068ea249d998..50852aee7e6e02 100644
--- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable.js
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable.js
@@ -61,8 +61,9 @@ var StringDecoder;
util.inherits(Readable, Stream);
+var Duplex;
function ReadableState(options, stream) {
- var Duplex = require('./_stream_duplex');
+ Duplex = Duplex || require('./_stream_duplex');
options = options || {};
@@ -128,8 +129,9 @@ function ReadableState(options, stream) {
}
}
+var Duplex;
function Readable(options) {
- var Duplex = require('./_stream_duplex');
+ Duplex = Duplex || require('./_stream_duplex');
if (!(this instanceof Readable))
return new Readable(options);
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js
index 23a2ba295df2f1..1fa5eb695adde6 100644
--- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js
@@ -55,8 +55,9 @@ function WriteReq(chunk, encoding, cb) {
this.next = null;
}
+var Duplex;
function WritableState(options, stream) {
- var Duplex = require('./_stream_duplex');
+ Duplex = Duplex || require('./_stream_duplex');
options = options || {};
@@ -164,8 +165,9 @@ Object.defineProperty(WritableState.prototype, 'buffer', {
}catch(_){}}());
+var Duplex;
function Writable(options) {
- var Duplex = require('./_stream_duplex');
+ Duplex = Duplex || require('./_stream_duplex');
// Writable ctor is applied to Duplexes, though they're not
// instanceof Writable, they're instanceof Readable.
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json
index 83e519e7b464a5..ddd227e64f99f4 100644
--- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json
@@ -33,11 +33,28 @@
"devDependencies": {
"tap": "^2.3.0"
},
- "readme": "# core-util-is\n\nThe `util.is*` functions introduced in Node v0.12.\n",
- "readmeFilename": "README.md",
+ "gitHead": "a177da234df5638b363ddc15fa324619a38577c8",
"homepage": "https://github.com/isaacs/core-util-is#readme",
"_id": "core-util-is@1.0.2",
"_shasum": "b5fd54220aa2bc5ab57aab7140c940754503c1a7",
+ "_from": "core-util-is@>=1.0.0 <1.1.0",
+ "_npmVersion": "3.3.2",
+ "_nodeVersion": "4.0.0",
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "dist": {
+ "shasum": "b5fd54220aa2bc5ab57aab7140c940754503c1a7",
+ "tarball": "http://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ }
+ ],
+ "directories": {},
"_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "_from": "core-util-is@>=1.0.0 <1.1.0"
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/package.json
index 4019a28addcd88..0ccf22578d2caa 100644
--- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/package.json
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/package.json
@@ -22,7 +22,7 @@
"gitHead": "e85787b05a8c3c1adb714f332d822e9162699c78",
"_id": "process-nextick-args@1.0.6",
"_shasum": "0f96b001cea90b12592ce566edb97ec11e69bd05",
- "_from": "process-nextick-args@>=1.0.0 <1.1.0",
+ "_from": "process-nextick-args@>=1.0.6 <1.1.0",
"_npmVersion": "2.14.4",
"_nodeVersion": "4.1.1",
"_npmUser": {
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json
index ee70702359198d..0364d54ba46af6 100644
--- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json
@@ -22,13 +22,33 @@
"browserify"
],
"license": "MIT",
- "readme": "**string_decoder.js** (`require('string_decoder')`) from Node.js core\n\nCopyright Joyent, Inc. and other Node contributors. See LICENCE file for details.\n\nVersion numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.**\n\nThe *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version.",
- "readmeFilename": "README.md",
+ "gitHead": "d46d4fd87cf1d06e031c23f1ba170ca7d4ade9a0",
"bugs": {
"url": "https://github.com/rvagg/string_decoder/issues"
},
"_id": "string_decoder@0.10.31",
"_shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94",
+ "_from": "string_decoder@>=0.10.0 <0.11.0",
+ "_npmVersion": "1.4.23",
+ "_npmUser": {
+ "name": "rvagg",
+ "email": "rod@vagg.org"
+ },
+ "maintainers": [
+ {
+ "name": "substack",
+ "email": "mail@substack.net"
+ },
+ {
+ "name": "rvagg",
+ "email": "rod@vagg.org"
+ }
+ ],
+ "dist": {
+ "shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94",
+ "tarball": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
+ },
+ "directories": {},
"_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "_from": "string_decoder@>=0.10.0 <0.11.0"
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/util-deprecate/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/util-deprecate/package.json
index f68d8bb958657f..ae0c70f6c633f1 100644
--- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/util-deprecate/package.json
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/util-deprecate/package.json
@@ -28,10 +28,27 @@
"url": "https://github.com/TooTallNate/util-deprecate/issues"
},
"homepage": "https://github.com/TooTallNate/util-deprecate",
- "readme": "util-deprecate\n==============\n### The Node.js `util.deprecate()` function with browser support\n\nIn Node.js, this module simply re-exports the `util.deprecate()` function.\n\nIn the web browser (i.e. via browserify), a browser-specific implementation\nof the `util.deprecate()` function is used.\n\n\n## API\n\nA `deprecate()` function is the only thing exposed by this module.\n\n``` javascript\n// setup:\nexports.foo = deprecate(foo, 'foo() is deprecated, use bar() instead');\n\n\n// users see:\nfoo();\n// foo() is deprecated, use bar() instead\nfoo();\nfoo();\n```\n\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2014 Nathan Rajlich \n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n",
- "readmeFilename": "README.md",
+ "gitHead": "475fb6857cd23fafff20c1be846c1350abf8e6d4",
"_id": "util-deprecate@1.0.2",
"_shasum": "450d4dc9fa70de732762fbd2d4a28981419a0ccf",
+ "_from": "util-deprecate@>=1.0.1 <1.1.0",
+ "_npmVersion": "2.14.4",
+ "_nodeVersion": "4.1.2",
+ "_npmUser": {
+ "name": "tootallnate",
+ "email": "nathan@tootallnate.net"
+ },
+ "maintainers": [
+ {
+ "name": "tootallnate",
+ "email": "nathan@tootallnate.net"
+ }
+ ],
+ "dist": {
+ "shasum": "450d4dc9fa70de732762fbd2d4a28981419a0ccf",
+ "tarball": "http://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
+ },
+ "directories": {},
"_resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "_from": "util-deprecate@>=1.0.1 <1.1.0"
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/package.json
index c0698efcb36108..7590ac88879acf 100644
--- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/package.json
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/package.json
@@ -1,13 +1,13 @@
{
"name": "readable-stream",
- "version": "2.0.4",
+ "version": "2.0.5",
"description": "Streams3, a user-land copy of the stream library from iojs v2.x",
"main": "readable.js",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.1",
"isarray": "0.0.1",
- "process-nextick-args": "~1.0.0",
+ "process-nextick-args": "~1.0.6",
"string_decoder": "~0.10.x",
"util-deprecate": "~1.0.1"
},
@@ -34,14 +34,43 @@
"util": false
},
"license": "MIT",
- "readme": "# readable-stream\n\n***Node-core streams for userland*** [![Build Status](https://travis-ci.org/nodejs/readable-stream.svg?branch=master)](https://travis-ci.org/nodejs/readable-stream)\n\n\n[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/)\n[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/)\n\n\n[![Sauce Test Status](https://saucelabs.com/browser-matrix/readable-stream.svg)](https://saucelabs.com/u/readable-stream)\n\n```bash\nnpm install --save readable-stream\n```\n\n***Node-core streams for userland***\n\nThis package is a mirror of the Streams2 and Streams3 implementations in\nNode-core, including [documentation](doc/stream.markdown).\n\nIf you want to guarantee a stable streams base, regardless of what version of\nNode you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *\"stream\"* module in Node-core, for background see [this blogpost](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html).\n\nAs of version 2.0.0 **readable-stream** uses semantic versioning. \n\n# Streams WG Team Members\n\n* **Chris Dickinson** ([@chrisdickinson](https://github.com/chrisdickinson)) <christopher.s.dickinson@gmail.com>\n - Release GPG key: 9554F04D7259F04124DE6B476D5A82AC7E37093B\n* **Calvin Metcalf** ([@calvinmetcalf](https://github.com/calvinmetcalf)) <calvin.metcalf@gmail.com>\n - Release GPG key: F3EF5F62A87FC27A22E643F714CE4FF5015AA242\n* **Rod Vagg** ([@rvagg](https://github.com/rvagg)) <rod@vagg.org>\n - Release GPG key: DD8F2338BAE7501E3DD5AC78C273792F7D83545D\n* **Sam Newman** ([@sonewman](https://github.com/sonewman)) <newmansam@outlook.com>\n* **Mathias Buus** ([@mafintosh](https://github.com/mafintosh)) <mathiasbuus@gmail.com>\n* **Domenic Denicola** ([@domenic](https://github.com/domenic)) <d@domenic.me>\n",
- "readmeFilename": "README.md",
+ "gitHead": "a4f23d8e451267684a8160679ce16e16149fe72b",
"bugs": {
"url": "https://github.com/nodejs/readable-stream/issues"
},
"homepage": "https://github.com/nodejs/readable-stream#readme",
- "_id": "readable-stream@2.0.4",
- "_shasum": "2523ef27ffa339d7ba9da8603f2d0599d06edbd8",
- "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.4.tgz",
- "_from": "readable-stream@>=2.0.0 <2.1.0"
+ "_id": "readable-stream@2.0.5",
+ "_shasum": "a2426f8dcd4551c77a33f96edf2886a23c829669",
+ "_from": "readable-stream@>=2.0.0 <2.1.0",
+ "_npmVersion": "3.3.12",
+ "_nodeVersion": "5.1.1",
+ "_npmUser": {
+ "name": "cwmma",
+ "email": "calvin.metcalf@gmail.com"
+ },
+ "dist": {
+ "shasum": "a2426f8dcd4551c77a33f96edf2886a23c829669",
+ "tarball": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.5.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "isaacs",
+ "email": "isaacs@npmjs.com"
+ },
+ {
+ "name": "tootallnate",
+ "email": "nathan@tootallnate.net"
+ },
+ {
+ "name": "rvagg",
+ "email": "rod@vagg.org"
+ },
+ {
+ "name": "cwmma",
+ "email": "calvin.metcalf@gmail.com"
+ }
+ ],
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.5.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/typedarray/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/typedarray/package.json
index f946a953af73c6..b8b59f5c303991 100644
--- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/typedarray/package.json
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/typedarray/package.json
@@ -52,13 +52,28 @@
"android-browser/4.2..latest"
]
},
- "readme": "# typedarray\n\nTypedArray polyfill ripped from [this\nmodule](https://raw.github.com/inexorabletash/polyfill).\n\n[![build status](https://secure.travis-ci.org/substack/typedarray.png)](http://travis-ci.org/substack/typedarray)\n\n[![testling badge](https://ci.testling.com/substack/typedarray.png)](https://ci.testling.com/substack/typedarray)\n\n# example\n\n``` js\nvar Uint8Array = require('typedarray').Uint8Array;\nvar ua = new Uint8Array(5);\nua[1] = 256 + 55;\nconsole.log(ua[1]);\n```\n\noutput:\n\n```\n55\n```\n\n# methods\n\n``` js\nvar TA = require('typedarray')\n```\n\nThe `TA` object has the following constructors:\n\n* TA.ArrayBuffer\n* TA.DataView\n* TA.Float32Array\n* TA.Float64Array\n* TA.Int8Array\n* TA.Int16Array\n* TA.Int32Array\n* TA.Uint8Array\n* TA.Uint8ClampedArray\n* TA.Uint16Array\n* TA.Uint32Array\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install typedarray\n```\n\nTo use this module in the browser, compile with\n[browserify](http://browserify.org)\nor download a UMD build from browserify CDN:\n\nhttp://wzrd.in/standalone/typedarray@latest\n\n# license\n\nMIT\n",
- "readmeFilename": "readme.markdown",
"bugs": {
"url": "https://github.com/substack/typedarray/issues"
},
"_id": "typedarray@0.0.6",
+ "dist": {
+ "shasum": "867ac74e3864187b1d3d47d996a78ec5c8830777",
+ "tarball": "http://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"
+ },
+ "_from": "typedarray@>=0.0.5 <0.1.0",
+ "_npmVersion": "1.4.3",
+ "_npmUser": {
+ "name": "substack",
+ "email": "mail@substack.net"
+ },
+ "maintainers": [
+ {
+ "name": "substack",
+ "email": "mail@substack.net"
+ }
+ ],
+ "directories": {},
"_shasum": "867ac74e3864187b1d3d47d996a78ec5c8830777",
"_resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "_from": "typedarray@>=0.0.5 <0.1.0"
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/package.json
index 53820bc0b2ce94..5a3f8b401e4449 100644
--- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/package.json
+++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/package.json
@@ -54,11 +54,28 @@
"android-browser/4.2..latest"
]
},
- "readme": "# concat-stream\n\nWritable stream that concatenates all the data from a stream and calls a callback with the result. Use this when you want to collect all the data from a stream into a single buffer.\n\n[![Build Status](https://travis-ci.org/maxogden/concat-stream.svg?branch=master)](https://travis-ci.org/maxogden/concat-stream)\n\n[![NPM](https://nodei.co/npm/concat-stream.png)](https://nodei.co/npm/concat-stream/)\n\n### description\n\nStreams emit many buffers. If you want to collect all of the buffers, and when the stream ends concatenate all of the buffers together and receive a single buffer then this is the module for you.\n\nOnly use this if you know you can fit all of the output of your stream into a single Buffer (e.g. in RAM).\n\nThere are also `objectMode` streams that emit things other than Buffers, and you can concatenate these too. See below for details.\n\n## Related\n\n`stream-each` is part of the [mississippi stream utility collection](https://github.com/maxogden/mississippi) which includes more useful stream modules similar to this one.\n\n### examples\n\n#### Buffers\n\n```js\nvar fs = require('fs')\nvar concat = require('concat-stream')\n\nvar readStream = fs.createReadStream('cat.png')\nvar concatStream = concat(gotPicture)\n\nreadStream.on('error', handleError)\nreadStream.pipe(concatStream)\n\nfunction gotPicture(imageBuffer) {\n // imageBuffer is all of `cat.png` as a node.js Buffer\n}\n\nfunction handleError(err) {\n // handle your error appropriately here, e.g.:\n console.error(err) // print the error to STDERR\n process.exit(1) // exit program with non-zero exit code\n}\n\n```\n\n#### Arrays\n\n```js\nvar write = concat(function(data) {})\nwrite.write([1,2,3])\nwrite.write([4,5,6])\nwrite.end()\n// data will be [1,2,3,4,5,6] in the above callback\n```\n\n#### Uint8Arrays\n\n```js\nvar write = concat(function(data) {})\nvar a = new Uint8Array(3)\na[0] = 97; a[1] = 98; a[2] = 99\nwrite.write(a)\nwrite.write('!')\nwrite.end(Buffer('!!1'))\n```\n\nSee `test/` for more examples\n\n# methods\n\n```js\nvar concat = require('concat-stream')\n```\n\n## var writable = concat(opts={}, cb)\n\nReturn a `writable` stream that will fire `cb(data)` with all of the data that\nwas written to the stream. Data can be written to `writable` as strings,\nBuffers, arrays of byte integers, and Uint8Arrays. \n\nBy default `concat-stream` will give you back the same data type as the type of the first buffer written to the stream. Use `opts.encoding` to set what format `data` should be returned as, e.g. if you if you don't want to rely on the built-in type checking or for some other reason.\n\n* `string` - get a string\n* `buffer` - get back a Buffer\n* `array` - get an array of byte integers\n* `uint8array`, `u8`, `uint8` - get back a Uint8Array\n* `object`, get back an array of Objects\n\nIf you don't specify an encoding, and the types can't be inferred (e.g. you write things that aren't in the list above), it will try to convert concat them into a `Buffer`.\n\n# error handling\n\n`concat-stream` does not handle errors for you, so you must handle errors on whatever streams you pipe into `concat-stream`. This is a general rule when programming with node.js streams: always handle errors on each and every stream. Since `concat-stream` is not itself a stream it does not emit errors.\n\nWe recommend using [`end-of-stream`](https://npmjs.org/end-of-stream) or [`pump`](https://npmjs.org/pump) for writing error tolerant stream code.\n\n# license\n\nMIT LICENSE\n",
- "readmeFilename": "readme.md",
+ "gitHead": "522adc12d82f57c691a5f946fbc8ba08718dcdcb",
"homepage": "https://github.com/maxogden/concat-stream#readme",
"_id": "concat-stream@1.5.1",
"_shasum": "f3b80acf9e1f48e3875c0688b41b6c31602eea1c",
+ "_from": "concat-stream@>=1.4.6 <2.0.0",
+ "_npmVersion": "2.14.2",
+ "_nodeVersion": "4.0.0",
+ "_npmUser": {
+ "name": "maxogden",
+ "email": "max@maxogden.com"
+ },
+ "dist": {
+ "shasum": "f3b80acf9e1f48e3875c0688b41b6c31602eea1c",
+ "tarball": "http://registry.npmjs.org/concat-stream/-/concat-stream-1.5.1.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "maxogden",
+ "email": "max@maxogden.com"
+ }
+ ],
+ "directories": {},
"_resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.1.tgz",
- "_from": "concat-stream@>=1.4.6 <2.0.0"
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/npm-registry-client/package.json b/deps/npm/node_modules/npm-registry-client/package.json
index 7ead37785b2d14..362862cfc5f886 100644
--- a/deps/npm/node_modules/npm-registry-client/package.json
+++ b/deps/npm/node_modules/npm-registry-client/package.json
@@ -6,7 +6,7 @@
},
"name": "npm-registry-client",
"description": "Client for the npm registry",
- "version": "7.0.9",
+ "version": "7.1.0",
"repository": {
"url": "git+https://github.com/npm/npm-registry-client.git"
},
@@ -40,23 +40,23 @@
"npmlog": "~2.0.0"
},
"license": "ISC",
- "gitHead": "2c0c83149edb270829582a234703404b2ba1c410",
+ "gitHead": "d077cb652152a8c265369d9d169cba8a52239fb4",
"bugs": {
"url": "https://github.com/npm/npm-registry-client/issues"
},
"homepage": "https://github.com/npm/npm-registry-client#readme",
- "_id": "npm-registry-client@7.0.9",
- "_shasum": "1baf86ee5285c4e6d38d4556208ded56049231bb",
- "_from": "npm-registry-client@>=7.0.9 <7.1.0",
- "_npmVersion": "3.4.1",
- "_nodeVersion": "5.1.0",
+ "_id": "npm-registry-client@7.1.0",
+ "_shasum": "e3be14ab279fe5123e15ab5c8a650445415664a5",
+ "_from": "npm-registry-client@7.1.0",
+ "_npmVersion": "3.7.5",
+ "_nodeVersion": "5.4.0",
"_npmUser": {
- "name": "othiym23",
- "email": "ogd@aoaioxxysz.net"
+ "name": "iarna",
+ "email": "me@re-becca.org"
},
"dist": {
- "shasum": "1baf86ee5285c4e6d38d4556208ded56049231bb",
- "tarball": "http://registry.npmjs.org/npm-registry-client/-/npm-registry-client-7.0.9.tgz"
+ "shasum": "e3be14ab279fe5123e15ab5c8a650445415664a5",
+ "tarball": "http://registry.npmjs.org/npm-registry-client/-/npm-registry-client-7.1.0.tgz"
},
"maintainers": [
{
@@ -76,7 +76,10 @@
"email": "kat@sykosomatic.org"
}
],
+ "_npmOperationalInternal": {
+ "host": "packages-5-east.internal.npmjs.com",
+ "tmp": "tmp/npm-registry-client-7.1.0.tgz_1456435497334_0.35472381697036326"
+ },
"directories": {},
- "_resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-7.0.9.tgz",
- "readme": "ERROR: No README data found!"
+ "_resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-7.1.0.tgz"
}
diff --git a/deps/npm/node_modules/npm-registry-client/test/fixtures/@npm/npm-registry-client/cache.json b/deps/npm/node_modules/npm-registry-client/test/fixtures/@npm/npm-registry-client/cache.json
new file mode 100644
index 00000000000000..4561db502b18e5
--- /dev/null
+++ b/deps/npm/node_modules/npm-registry-client/test/fixtures/@npm/npm-registry-client/cache.json
@@ -0,0 +1 @@
+{"_id":"@npm%2fnpm-registry-client","_rev":"213-0a1049cf56172b7d9a1184742c6477b9","name":"@npm/npm-registry-client","description":"Client for the npm registry","dist-tags":{"latest":"2.0.4","v2.0":"2.0.3"},"versions":{"0.0.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"@npm%2fnpm-registry-client@0.0.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.7.10-pre","_defaultsLoaded":true,"dist":{"shasum":"693a08f6d2faea22bbd2bf412508a63d3e6229a7","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.1.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"@npm%2fnpm-registry-client@0.0.2","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.7.10-pre","_defaultsLoaded":true,"dist":{"shasum":"b48c0ec5563c6a6fdc253454fc56d2c60c5a26f4","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.2.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"@npm%2fnpm-registry-client@0.0.3","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.7.10-pre","_defaultsLoaded":true,"dist":{"shasum":"ccc0254c2d59e3ea9b9050e2b16edef78df1a1e8","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.3.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"@npm%2fnpm-registry-client@0.0.4","_engineSupported":true,"_npmVersion":"1.1.25","_nodeVersion":"v0.7.10-pre","_defaultsLoaded":true,"dist":{"shasum":"faabd25ef477521c74ac21e0f4cf3a2f66d18fb3","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.4.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.5":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.5","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_id":"@npm%2fnpm-registry-client@0.0.5","dist":{"shasum":"85219810c9d89ae8d28ea766e7cf74efbd9f1e52","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.5.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.6":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"The code that npm uses to talk to the registry","version":"0.0.6","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_id":"@npm%2fnpm-registry-client@0.0.6","dist":{"shasum":"cc6533b3b41df65e6e9db2601fbbf1a509a7e94c","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.6.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.7":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"The code that npm uses to talk to the registry","version":"0.0.7","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_id":"@npm%2fnpm-registry-client@0.0.7","dist":{"shasum":"0cee1d1c61f1c8e483774fe1f7bbb81c4f394a3a","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.7.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.8":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.8","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.0.8","dist":{"shasum":"1b7411c3f7310ec2a96b055b00e7ca606e47bd07","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.8.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.9":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.9","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.0.9","dist":{"shasum":"6d5bfde431559ac9e2e52a7db85f5839b874f022","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.9.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.10":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.10","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.0.10","dist":{"shasum":"0c8b6a4615bce82aa6cc04a0d1f7dc89921f7a38","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.10.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.11":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.11","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.0.11","dist":{"shasum":"afab40be5bed1faa946d8e1827844698f2ec1db7","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.11.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.1.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.1.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.1.0","dist":{"shasum":"1077d6bbb5e432450239dc6622a59474953ffbea","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.1.0.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.1.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.1.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.1.1","dist":{"shasum":"759765361d09b715270f59cf50f10908e4e9c5fc","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.1.1.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.1.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.1.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.1.2","dist":{"shasum":"541ce93abb3d35f5c325545c718dd3bbeaaa9ff0","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.1.2.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.1.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.1.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.1.3","dist":{"shasum":"e9a40d7031e8f809af5fd85aa9aac979e17efc97","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.1.3.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.1.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.1.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.1.4","dist":{"shasum":"b211485b046191a1085362376530316f0cab0420","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.1.4.tgz"},"_npmVersion":"1.1.48","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.0","dist":{"shasum":"6508a4b4d96f31057d5200ca5779531bafd2b840","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.0.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.1","dist":{"shasum":"1bc8c4576c368cd88253d8a52daf40c55b89bb1a","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.1.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.5":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.5","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.5","dist":{"shasum":"2f55d675dfb977403b1ad0d96874c1d30e8058d7","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.5.tgz"},"_npmVersion":"1.1.51","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.6":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.6","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.6","dist":{"shasum":"f05df6695360360ad220e6e13a6a7bace7165fbe","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.6.tgz"},"_npmVersion":"1.1.56","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.7":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.7","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.7","dist":{"shasum":"867bad8854cae82ed89ee3b7f1d391af59491671","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.7.tgz"},"_npmVersion":"1.1.59","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.8":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.8","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.8","dist":{"shasum":"ef194cdb70f1ea03a576cff2c97392fa96e36563","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.8.tgz"},"_npmVersion":"1.1.62","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.9":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.9","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.9","dist":{"shasum":"3cec10431dfed1594adaf99c50f482ee56ecf9e4","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.9.tgz"},"_npmVersion":"1.1.59","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.10":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.10","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.10","dist":{"shasum":"1e69726dae0944e78562fd77243f839c6a2ced1e","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.10.tgz"},"_npmVersion":"1.1.64","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.11":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.11","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.11","dist":{"shasum":"d92f33c297eb1bbd57fd597c3d8f5f7e9340a0b5","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.11.tgz"},"_npmVersion":"1.1.70","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.12":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.12","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.12","dist":{"shasum":"3bfb6fc0e4b131d665580cd1481c341fe521bfd3","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.12.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.13":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.13","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.13","dist":{"shasum":"e03f2a4340065511b7184a3e2862cd5d459ef027","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.13.tgz"},"_from":".","_npmVersion":"1.2.4","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.14":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.14","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.14","dist":{"shasum":"186874a7790417a340d582b1cd4a7c338087ee12","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.14.tgz"},"_from":".","_npmVersion":"1.2.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.15":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.15","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.15","dist":{"shasum":"f71f32b7185855f1f8b7a5ef49e49d2357c2c552","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.15.tgz"},"_from":".","_npmVersion":"1.2.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.16":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.16","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.16","dist":{"shasum":"3331323b5050fc5afdf77c3a35913c16f3e43964","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.16.tgz"},"_from":".","_npmVersion":"1.2.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.17":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.17","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.17","dist":{"shasum":"1df2bbecac6751f5d9600fb43722aef96d956773","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.17.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.18":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.18","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.18","dist":{"shasum":"198c8d15ed9b1ed546faf6e431eb63a6b18193ad","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.18.tgz"},"_from":".","_npmVersion":"1.2.13","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.19":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.19","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.16","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.19","dist":{"shasum":"106da826f0d2007f6e081f2b68fb6f26fa951b20","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.19.tgz"},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.20":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.20","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.16","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.20","dist":{"shasum":"3fff194331e26660be2cf8ebf45ddf7d36add5f6","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.20.tgz"},"_from":".","_npmVersion":"1.2.15","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.21":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.21","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.16","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.21","dist":{"shasum":"d85dd32525f193925c46ff9eb0e0f529dfd1b254","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.21.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.22":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.22","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.20.0","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.22","dist":{"shasum":"caa22ff40a1ccd632a660b8b80c333c8f92d5a17","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.22.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.23":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.23","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.20.0","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.23","dist":{"shasum":"a320ab2b1d048b4f7b88e40bd86974ca322b4c24","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.23.tgz"},"_from":".","_npmVersion":"1.2.19","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.24":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.24","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.20.0","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.24","dist":{"shasum":"e12f644338619319ee7f233363a1714a87f3c72d","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.24.tgz"},"_from":".","_npmVersion":"1.2.22","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.25":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.25","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.20.0","graceful-fs":"~1.2.0","semver":"~2.0.5","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.25","dist":{"shasum":"c2caeb1dcf937d6fcc4a187765d401f5e2f54027","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.25.tgz"},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.26":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.26","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.20.0","graceful-fs":"~1.2.0","semver":"~2.0.5","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.26","dist":{"shasum":"4c5a2b3de946e383032f10fa497d0c15ee5f4c60","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.26.tgz"},"_from":".","_npmVersion":"1.3.1","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.27":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.27","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.20.0","graceful-fs":"~2.0.0","semver":"~2.0.5","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.27","dist":{"shasum":"8f338189d32769267886a07ad7b7fd2267446adf","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.27.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.28":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.28","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"~2.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.28","dist":{"shasum":"959141fc0180d7b1ad089e87015a8a2142a8bffc","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.28.tgz"},"_from":".","_npmVersion":"1.3.6","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.29":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.29","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.2.29","dist":{"shasum":"66ff2766f0c61d41e8a6139d3692d8833002c686","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.29.tgz"},"_from":".","_npmVersion":"1.3.12","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.30":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.30","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.2.30","dist":{"shasum":"f01cae5c51aa0a1c5dc2516cbad3ebde068d3eaa","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.30.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.31":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.31","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.2.31","dist":{"shasum":"24a23e24e43246677cb485f8391829e9536563d4","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.31.tgz"},"_from":".","_npmVersion":"1.3.17","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.0","dist":{"shasum":"66eab02a69be67f232ac14023eddfb8308c2eccd","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.0.tgz"},"_from":".","_npmVersion":"1.3.18","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.1","dist":{"shasum":"16dba07cc304442edcece378218672d0a1258ef8","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.1.tgz"},"_from":".","_npmVersion":"1.3.18","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.2","dist":{"shasum":"ea3060bd0a87fb1d97b87433b50f38f7272b1686","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.2.tgz"},"_from":".","_npmVersion":"1.3.20","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.3","dist":{"shasum":"da08bb681fb24aa5c988ca71f8c10f27f09daf4a","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.3.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.4","dist":{"shasum":"25d771771590b1ca39277aea4506af234c5f4342","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.4.tgz"},"_from":".","_npmVersion":"1.3.25","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.5":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.5","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.5","dist":{"shasum":"98ba1ac851a3939a3fb9917c28fa8da522dc635f","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.5.tgz"},"_from":".","_npmVersion":"1.3.25","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.6":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.6","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.6","dist":{"shasum":"c48a2a03643769acc49672860f7920ec6bffac6e","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.6.tgz"},"_from":".","_npmVersion":"1.3.26","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.0","dist":{"shasum":"30d0c178b7f2e54183a6a3fc9fe4071eb10290bf","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.0.tgz"},"_from":".","_npmVersion":"1.3.26","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.1","dist":{"shasum":"9c49b3e44558e2072158fb085be8a083c5f83537","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.1.tgz"},"_from":".","_npmVersion":"1.4.0","_npmUser":{"name":"npm-www","email":"npm@npmjs.com"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.2","dist":{"shasum":"d9568a9413bee14951201ce73f3b3992ec6658c0","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.2.tgz"},"_from":".","_npmVersion":"1.4.1","_npmUser":{"name":"npm-www","email":"npm@npmjs.com"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.3","dist":{"shasum":"aa188fc5067158e991a57f4697c54994108f5389","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.3.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.4","dist":{"shasum":"f9dbc383a49069d8c7f67755a3ff6e424aff584f","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.4.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.5":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.5","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.5","dist":{"shasum":"7d6fdca46139470715f9477ddb5ad3e770d4de7b","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.5.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.6":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.6","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.6","_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"657f69a79543fc4cc264c3b2de958bd15f7140fe","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.6.tgz"},"directories":{}},"0.4.7":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.7","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.7","dist":{"shasum":"f4369b59890da7882527eb7c427dd95d43707afb","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.7.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.8":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.8","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.8","_shasum":"a6685a161033101be6064b7af887ab440e8695d0","_from":".","_npmVersion":"1.4.8","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"a6685a161033101be6064b7af887ab440e8695d0","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.8.tgz"},"directories":{}},"0.4.9":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.9","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.9","_shasum":"304d3d4726a58e33d8cc965afdc9ed70b996580c","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"304d3d4726a58e33d8cc965afdc9ed70b996580c","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.9.tgz"},"directories":{}},"0.4.10":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.10","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.10","_shasum":"ab7bf1be3ba07d769eaf74dee3c9347e02283116","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"ab7bf1be3ba07d769eaf74dee3c9347e02283116","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.10.tgz"},"directories":{}},"0.4.11":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.11","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"2 >=2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.11","_shasum":"032e9b6b050ed052ee9441841a945a184ea6bc33","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"032e9b6b050ed052ee9441841a945a184ea6bc33","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.11.tgz"},"directories":{}},"0.4.12":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.12","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"2 >=2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.12","_shasum":"34303422f6a3da93ca3a387a2650d707c8595b99","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"34303422f6a3da93ca3a387a2650d707c8595b99","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.12.tgz"},"directories":{}},"1.0.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"1.0.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"~2.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@1.0.0","_shasum":"2a6f9dfdce5f8ebf4b9af4dbfd738384d25014e5","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"2a6f9dfdce5f8ebf4b9af4dbfd738384d25014e5","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-1.0.0.tgz"},"directories":{}},"1.0.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"1.0.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"~2.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"98b1278c230cf6c159f189e2f8c69daffa727ab8","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@1.0.1","_shasum":"c5f6a87d285f2005a35d3f67d9c724bce551b0f1","_from":".","_npmVersion":"1.4.13","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"c5f6a87d285f2005a35d3f67d9c724bce551b0f1","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-1.0.1.tgz"},"directories":{}},"2.0.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"2.0.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"~2.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"47a98069b6a34e751cbd5b84ce92858cae5abe70","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@2.0.0","_shasum":"88810dac2d534c0df1d905c79e723392fcfc791a","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"88810dac2d534c0df1d905c79e723392fcfc791a","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-2.0.0.tgz"},"directories":{}},"2.0.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"2.0.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"123e40131f83f7265f66ecd2a558cce44a3aea86","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@2.0.1","_shasum":"611c7cb7c8f7ff22be2ebc6398423b5de10db0e2","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"611c7cb7c8f7ff22be2ebc6398423b5de10db0e2","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-2.0.1.tgz"},"directories":{}},"2.0.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"2.0.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"6ecc311c9dd4890f2d9b6bae60447070a3321e12","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@2.0.2","_shasum":"a82b000354c7f830114fb18444764bc477d5740f","_from":".","_npmVersion":"1.4.15","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"a82b000354c7f830114fb18444764bc477d5740f","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-2.0.2.tgz"},"directories":{}},"3.0.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","normalize-package-data":"^0.4.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"6bb1aec1e85fa82ee075bd997d6fb9f2dbb7f643","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.0","_shasum":"4febc5cdb274e9fa06bc3008910e3fa1ec007994","_from":".","_npmVersion":"1.5.0-pre","_npmUser":{"name":"othiym23","email":"ogd@aoaioxxysz.net"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"4febc5cdb274e9fa06bc3008910e3fa1ec007994","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.0.tgz"},"directories":{}},"3.0.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","normalize-package-data":"^0.4.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"fe8382dde609ea1e3580fcdc5bc3d0bba119cfc6","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.1","_shasum":"5f3ee362ce5c237cfb798fce22c77875fc1a63c2","_from":".","_npmVersion":"1.5.0-alpha-1","_npmUser":{"name":"othiym23","email":"ogd@aoaioxxysz.net"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"5f3ee362ce5c237cfb798fce22c77875fc1a63c2","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.1.tgz"},"directories":{}},"2.0.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"2.0.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"2578fb9a807d77417554ba235ba8fac39405e832","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@2.0.3","_shasum":"93dad3d9a162c99404badb71739c622c0f3b9a72","_from":".","_npmVersion":"1.5.0-alpha-1","_npmUser":{"name":"othiym23","email":"ogd@aoaioxxysz.net"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"93dad3d9a162c99404badb71739c622c0f3b9a72","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-2.0.3.tgz"},"directories":{}},"3.0.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","normalize-package-data":"^0.4.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"15343019160ace0b9874cf0ec186b3425dbc7301","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.2","_shasum":"5dd0910157ce55f4286a1871d39f9a2128cd3c99","_from":".","_npmVersion":"1.5.0-alpha-2","_npmUser":{"name":"othiym23","email":"ogd@aoaioxxysz.net"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"5dd0910157ce55f4286a1871d39f9a2128cd3c99","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.2.tgz"},"directories":{}},"3.0.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","normalize-package-data":"^0.4.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1 || 3.x","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"b18a780d1185f27c06c27812147b83aba0d4a2f5","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.3","_shasum":"2377dc1cf69b4d374b3a95fb7feba8c804d8cb30","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"2377dc1cf69b4d374b3a95fb7feba8c804d8cb30","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.3.tgz"},"directories":{}},"3.0.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.5.0","normalize-package-data":"^0.4.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1 || 3.x","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"54900fe4b2eb5b99ee6dfe173f145732fdfae80e","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.4","_shasum":"d4a177d1f25615cfaef9b6844fa366ffbf5f578a","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"d4a177d1f25615cfaef9b6844fa366ffbf5f578a","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.4.tgz"},"directories":{}},"3.0.5":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.5","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"0.5","normalize-package-data":"0.4","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"2","semver":"2 >=2.2.1 || 3.x","slide":"^1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"635db1654346bc86473df7b39626601425f46177","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.5","_shasum":"cdabaefa399b81ac8a86a48718aefd80e7b19ff3","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"cdabaefa399b81ac8a86a48718aefd80e7b19ff3","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.5.tgz"},"directories":{}},"3.0.6":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.6","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"^0.5.0","normalize-package-data":"0.4","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"2","semver":"2 >=2.2.1 || 3.x","slide":"^1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"ISC","gitHead":"eba30fadd724ed5cad1aec95ac3ee907a59b7317","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.6","_shasum":"14a17d9a60ed2a80b04edcbc596dbce0d96540ee","_from":".","_npmVersion":"1.4.22","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"14a17d9a60ed2a80b04edcbc596dbce0d96540ee","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.6.tgz"},"directories":{}},"2.0.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"2.0.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"^0.5.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"ISC","gitHead":"a10f621d9cdc813b9d3092a14b661f65bfa6d40d","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@2.0.4","_shasum":"528e08900d7655c12096d1637d1c3a7a5b451019","_from":".","_npmVersion":"1.4.22","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"528e08900d7655c12096d1637d1c3a7a5b451019","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-2.0.4.tgz"},"directories":{}}},"readme":"# npm-registry-client\u000a\u000aThe code that npm uses to talk to the registry.\u000a\u000aIt handles all the caching and HTTP calls.\u000a\u000a## Usage\u000a\u000a```javascript\u000avar RegClient = require('npm-registry-client')\u000avar client = new RegClient(config)\u000avar uri = \"npm://registry.npmjs.org/npm\"\u000avar options = {timeout: 1000}\u000a\u000aclient.get(uri, options, function (error, data, raw, res) {\u000a // error is an error if there was a problem.\u000a // data is the parsed data object\u000a // raw is the json string\u000a // res is the response from couch\u000a})\u000a```\u000a\u000a# Registry URLs\u000a\u000aThe registry calls take either a full URL pointing to a resource in the\u000aregistry, or a base URL for the registry as a whole (for the base URL, any path\u000awill be ignored). In addition to `http` and `https`, `npm` URLs are allowed.\u000a`npm` URLs are `https` URLs with the additional restrictions that they will\u000aalways include authorization credentials, and the response is always registry\u000ametadata (and not tarballs or other attachments).\u000a\u000a# Configuration\u000a\u000aThis program is designed to work with\u000a[npmconf](https://npmjs.org/package/npmconf), but you can also pass in\u000aa plain-jane object with the appropriate configs, and it'll shim it\u000afor you. Any configuration thingie that has get/set/del methods will\u000aalso be accepted.\u000a\u000a* `cache` **Required** {String} Path to the cache folder\u000a* `always-auth` {Boolean} Auth even for GET requests.\u000a* `auth` {String} A base64-encoded `username:password`\u000a* `email` {String} User's email address\u000a* `tag` {String} The default tag to use when publishing new packages.\u000a Default = `\"latest\"`\u000a* `ca` {String} Cerficate signing authority certificates to trust.\u000a* `cert` {String} Client certificate (PEM encoded). Enable access\u000a to servers that require client certificates\u000a* `key` {String} Private key (PEM encoded) for client certificate 'cert'\u000a* `strict-ssl` {Boolean} Whether or not to be strict with SSL\u000a certificates. Default = `true`\u000a* `user-agent` {String} User agent header to send. Default =\u000a `\"node/{process.version} {process.platform} {process.arch}\"`\u000a* `log` {Object} The logger to use. Defaults to `require(\"npmlog\")` if\u000a that works, otherwise logs are disabled.\u000a* `fetch-retries` {Number} Number of times to retry on GET failures.\u000a Default=2\u000a* `fetch-retry-factor` {Number} `factor` setting for `node-retry`. Default=10\u000a* `fetch-retry-mintimeout` {Number} `minTimeout` setting for `node-retry`.\u000a Default=10000 (10 seconds)\u000a* `fetch-retry-maxtimeout` {Number} `maxTimeout` setting for `node-retry`.\u000a Default=60000 (60 seconds)\u000a* `proxy` {URL} The url to proxy requests through.\u000a* `https-proxy` {URL} The url to proxy https requests through.\u000a Defaults to be the same as `proxy` if unset.\u000a* `_auth` {String} The base64-encoded authorization header.\u000a* `username` `_password` {String} Username/password to use to generate\u000a `_auth` if not supplied.\u000a* `_token` {Object} A token for use with\u000a [couch-login](https://npmjs.org/package/couch-login)\u000a\u000a# client.request(method, uri, options, cb)\u000a\u000a* `method` {String} HTTP method\u000a* `uri` {String} URI pointing to the resource to request\u000a* `options` {Object} Object containing optional per-request properties.\u000a * `what` {Stream | Buffer | String | Object} The request body. Objects\u000a that are not Buffers or Streams are encoded as JSON.\u000a * `etag` {String} The cached ETag\u000a * `follow` {Boolean} Follow 302/301 responses (defaults to true)\u000a* `cb` {Function}\u000a * `error` {Error | null}\u000a * `data` {Object} the parsed data object\u000a * `raw` {String} the json\u000a * `res` {Response Object} response from couch\u000a\u000aMake a request to the registry. All the other methods are wrappers around\u000a`request`.\u000a\u000a# client.adduser(base, username, password, email, cb)\u000a\u000a* `base` {String} Base registry URL\u000a* `username` {String}\u000a* `password` {String}\u000a* `email` {String}\u000a* `cb` {Function}\u000a\u000aAdd a user account to the registry, or verify the credentials.\u000a\u000a# client.deprecate(uri, version, message, cb)\u000a\u000a* `uri` {String} Full registry URI for the deprecated package\u000a* `version` {String} Semver version range\u000a* `message` {String} The message to use as a deprecation warning\u000a* `cb` {Function}\u000a\u000aDeprecate a version of a package in the registry.\u000a\u000a# client.bugs(uri, cb)\u000a\u000a* `uri` {String} Full registry URI for the package\u000a* `cb` {Function}\u000a\u000aGet the url for bugs of a package\u000a\u000a# client.get(uri, options, cb)\u000a\u000a* `uri` {String} The complete registry URI to fetch\u000a* `options` {Object} Object containing optional per-request properties.\u000a * `timeout` {Number} Duration before the request times out.\u000a * `follow` {Boolean} Follow 302/301 responses (defaults to true)\u000a * `staleOk` {Boolean} If there's cached data available, then return that\u000a to the callback quickly, and update the cache the background.\u000a\u000aFetches data from the registry via a GET request, saving it in the cache folder\u000awith the ETag.\u000a\u000a# client.publish(uri, data, tarball, cb)\u000a\u000a* `uri` {String} The registry URI to publish to\u000a* `data` {Object} Package data\u000a* `tarball` {String | Stream} Filename or stream of the package tarball\u000a* `cb` {Function}\u000a\u000aPublish a package to the registry.\u000a\u000aNote that this does not create the tarball from a folder. However, it can\u000aaccept a gzipped tar stream or a filename to a tarball.\u000a\u000a# client.star(uri, starred, cb)\u000a\u000a* `uri` {String} The complete registry URI to star\u000a* `starred` {Boolean} True to star the package, false to unstar it.\u000a* `cb` {Function}\u000a\u000aStar or unstar a package.\u000a\u000aNote that the user does not have to be the package owner to star or unstar a\u000apackage, though other writes do require that the user be the package owner.\u000a\u000a# client.stars(base, username, cb)\u000a\u000a* `base` {String} The base URL for the registry\u000a* `username` {String} Name of user to fetch starred packages for.\u000a* `cb` {Function}\u000a\u000aView your own or another user's starred packages.\u000a\u000a# client.tag(uri, version, tag, cb)\u000a\u000a* `uri` {String} The complete registry URI to tag\u000a* `version` {String} Version to tag\u000a* `tag` {String} Tag name to apply\u000a* `cb` {Function}\u000a\u000aMark a version in the `dist-tags` hash, so that `pkg@tag` will fetch the\u000aspecified version.\u000a\u000a# client.unpublish(uri, [ver], cb)\u000a\u000a* `uri` {String} The complete registry URI to unpublish\u000a* `ver` {String} version to unpublish. Leave blank to unpublish all\u000a versions.\u000a* `cb` {Function}\u000a\u000aRemove a version of a package (or all versions) from the registry. When the\u000alast version us unpublished, the entire document is removed from the database.\u000a\u000a# client.upload(uri, file, [etag], [nofollow], cb)\u000a\u000a* `uri` {String} The complete registry URI to upload to\u000a* `file` {String | Stream} Either the filename or a readable stream\u000a* `etag` {String} Cache ETag\u000a* `nofollow` {Boolean} Do not follow 301/302 responses\u000a* `cb` {Function}\u000a\u000aUpload an attachment. Mostly used by `client.publish()`.\u000a","maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"time":{"modified":"2014-07-31T21:59:52.896Z","created":"2012-06-07T04:43:36.581Z","0.0.1":"2012-06-07T04:43:38.123Z","0.0.2":"2012-06-07T05:35:05.937Z","0.0.3":"2012-06-09T00:55:25.861Z","0.0.4":"2012-06-11T03:53:26.548Z","0.0.5":"2012-06-11T23:48:11.235Z","0.0.6":"2012-06-17T06:23:27.320Z","0.0.7":"2012-06-18T19:19:38.315Z","0.0.8":"2012-06-28T20:40:20.563Z","0.0.9":"2012-07-10T03:28:04.651Z","0.0.10":"2012-07-11T17:03:45.151Z","0.0.11":"2012-07-17T14:06:37.489Z","0.1.0":"2012-07-23T18:17:38.007Z","0.1.1":"2012-07-23T21:21:28.196Z","0.1.2":"2012-07-24T06:14:12.831Z","0.1.3":"2012-08-07T02:02:20.564Z","0.1.4":"2012-08-15T03:04:52.822Z","0.1.5":"2012-08-17T21:59:33.310Z","0.2.0":"2012-08-17T22:00:18.081Z","0.2.1":"2012-08-17T22:07:28.827Z","0.2.2":"2012-08-17T22:37:24.352Z","0.2.3":"2012-08-19T19:16:44.808Z","0.2.4":"2012-08-19T19:18:51.792Z","0.2.5":"2012-08-20T16:54:50.794Z","0.2.6":"2012-08-22T00:25:04.766Z","0.2.7":"2012-08-27T19:07:34.829Z","0.2.8":"2012-10-02T19:53:50.661Z","0.2.9":"2012-10-03T22:09:50.766Z","0.2.10":"2012-10-25T14:55:54.216Z","0.2.11":"2012-12-21T16:26:38.094Z","0.2.12":"2013-01-18T22:22:41.668Z","0.2.13":"2013-02-06T00:16:35.939Z","0.2.14":"2013-02-10T02:44:02.764Z","0.2.15":"2013-02-11T19:18:55.678Z","0.2.16":"2013-02-15T17:09:03.249Z","0.2.17":"2013-02-16T03:47:13.898Z","0.2.18":"2013-03-06T22:09:23.536Z","0.2.19":"2013-03-20T06:27:39.128Z","0.2.20":"2013-03-28T00:43:07.558Z","0.2.21":"2013-04-29T15:46:54.094Z","0.2.22":"2013-04-29T15:51:02.178Z","0.2.23":"2013-05-11T00:28:14.198Z","0.2.24":"2013-05-24T21:27:50.693Z","0.2.25":"2013-06-20T15:36:46.277Z","0.2.26":"2013-07-06T17:12:54.670Z","0.2.27":"2013-07-11T07:14:45.740Z","0.2.28":"2013-08-02T20:27:41.732Z","0.2.29":"2013-10-28T18:23:24.477Z","0.2.30":"2013-11-18T23:12:00.540Z","0.2.31":"2013-12-16T08:36:43.044Z","0.3.0":"2013-12-17T07:03:10.699Z","0.3.1":"2013-12-17T16:53:27.867Z","0.3.2":"2013-12-17T22:25:14.882Z","0.3.3":"2013-12-21T16:07:06.773Z","0.3.4":"2014-01-29T15:24:05.163Z","0.3.5":"2014-01-31T01:53:19.656Z","0.3.6":"2014-02-07T00:17:21.362Z","0.4.0":"2014-02-13T01:17:18.973Z","0.4.1":"2014-02-13T23:47:37.892Z","0.4.2":"2014-02-14T00:29:13.086Z","0.4.3":"2014-02-16T03:40:54.640Z","0.4.4":"2014-02-16T03:41:48.856Z","0.4.5":"2014-03-12T05:09:17.474Z","0.4.6":"2014-03-29T19:44:15.041Z","0.4.7":"2014-04-02T19:41:07.149Z","0.4.8":"2014-05-01T22:24:54.980Z","0.4.9":"2014-05-12T21:52:55.127Z","0.4.10":"2014-05-13T16:44:29.801Z","0.4.11":"2014-05-13T20:33:04.738Z","0.4.12":"2014-05-14T06:14:22.842Z","1.0.0":"2014-05-14T23:04:37.188Z","1.0.1":"2014-06-03T00:55:54.448Z","2.0.0":"2014-06-06T04:23:46.579Z","2.0.1":"2014-06-06T06:25:14.419Z","2.0.2":"2014-06-14T00:33:10.205Z","3.0.0":"2014-07-02T00:30:29.154Z","3.0.1":"2014-07-14T23:29:05.057Z","2.0.3":"2014-07-15T00:09:36.043Z","3.0.2":"2014-07-17T06:30:02.659Z","3.0.3":"2014-07-23T21:20:42.406Z","3.0.4":"2014-07-25T00:27:26.007Z","3.0.5":"2014-07-25T00:28:48.007Z","3.0.6":"2014-07-31T21:57:49.043Z","2.0.4":"2014-07-31T21:59:52.896Z"},"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"repository":{"url":"git://github.com/isaacs/npm-registry-client"},"users":{"fgribreau":true,"fengmk2":true},"readmeFilename":"README.md","homepage":"https://github.com/isaacs/npm-registry-client","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"license":"ISC","_attachments":{}}
diff --git a/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/cache.json b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/cache.json
new file mode 100644
index 00000000000000..01da3002763731
--- /dev/null
+++ b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/cache.json
@@ -0,0 +1 @@
+{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.3","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.3","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"47ac53683daf832bfa952e1774417da47817ae42","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.3.3.tgz"},"readme":" __ \n /\\ \\ __ \n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____ \n /\\ \\/\\ \\ /' _ `\\ /'_ \\ /'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/'__`\\ \\/\\ \\ /',__\\ \n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/ \n \\ \\____/ \n \\/___/\n \nUnderscore.js is a utility-belt library for JavaScript that provides \nsupport for the usual functional suspects (each, map, reduce, filter...) \nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://documentcloud.github.com/underscore/\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}}
\ No newline at end of file
diff --git a/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/package.tgz b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/package.tgz
new file mode 100644
index 00000000000000..19da9baa7fb191
Binary files /dev/null and b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/package.tgz differ
diff --git a/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/cache.json b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/cache.json
new file mode 100644
index 00000000000000..d899f11922a405
--- /dev/null
+++ b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/cache.json
@@ -0,0 +1 @@
+{"_id":"underscore","_rev":"72-47f2986bfd8e8b55068b204588bbf484","name":"underscore","description":"JavaScript's functional programming helper library.","dist-tags":{"latest":"1.3.3","stable":"1.3.3"},"versions":{"1.0.3":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.0.3","_id":"underscore@1.0.3","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/underscore/-/underscore-1.0.3.tgz"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.0.4":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.0.4","_id":"underscore@1.0.4","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/underscore/-/underscore-1.0.4.tgz"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.0":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.1.0","_id":"underscore@1.1.0","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.0.tgz"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.1":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.1.1","_id":"underscore@1.1.1","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.1.tgz"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.2":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.1.2","_id":"underscore@1.1.2","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.2.tgz"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.3":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.1.3","_id":"underscore@1.1.3","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.8-1","_nodeVersion":"v0.2.5","dist":{"tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.3.tgz"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.4":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore.js","version":"1.1.4","_id":"underscore@1.1.4","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.9","_nodeVersion":"v0.5.0-pre","dist":{"shasum":"9e82274902865625b3a6d4c315a38ffd80047dae","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.4.tgz"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.1.5":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.1.5","_id":"underscore@1.1.5","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.16","_nodeVersion":"v0.4.2","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"23601d62c75619998b2f0db24938102793336a56","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.5.tgz"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.6":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.1.6","_id":"underscore@1.1.6","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.18","_nodeVersion":"v0.4.2","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"6868da1bdd72d75285be0b4e50f228e70d001a2c","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.6.tgz"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.7":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.1.7","devDependencies":{},"_id":"underscore@1.1.7","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"40bab84bad19d230096e8d6ef628bff055d83db0","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.7.tgz"},"scripts":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.2.0":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.0","_npmJsonOpts":{"file":"/Users/jashkenas/.npm/underscore/1.2.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"underscore@1.2.0","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"b32ce32c8c118caa8031c10b54c7f65ab3b557fd","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.2.0.tgz"},"scripts":{},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"directories":{}},"1.2.1":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.1","_npmJsonOpts":{"file":"/Users/jashkenas/.npm/underscore/1.2.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"underscore@1.2.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"fc5c6b0765673d92a2d4ac8b4dc0aa88702e2bd4","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.2.1.tgz"},"scripts":{},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"directories":{}},"1.2.2":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.2","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.2.2","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"74dd40e9face84e724eb2edae945b8aedc233ba3","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.2.2.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.2.3":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.3","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.2.3","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"11b874da70f4683d7d48bba2b44be1e600d2f6cf","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.2.3.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.2.4":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.4","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.2.4","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"e8da6241aa06f64df2473bb2590b8c17c84c3c7e","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.2.4.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.3.0":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.0","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"253b2d79b7bb67943ced0fc744eb18267963ede8","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.3.0.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.3.1":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.1","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.1","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"6cb8aad0e77eb5dbbfb54b22bcd8697309cf9641","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.3.1.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.3.2":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.2","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"1b4e455089ab1d1d38ab6794ffe6cf08f764394a","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.3.2.tgz"},"readme":" __ \n /\\ \\ __ \n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____ \n /\\ \\/\\ \\ /' _ `\\ /'_ \\ /'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/'__`\\ \\/\\ \\ /',__\\ \n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/ \n \\ \\____/ \n \\/___/\n \nUnderscore.js is a utility-belt library for JavaScript that provides \nsupport for the usual functional suspects (each, map, reduce, filter...) \nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://documentcloud.github.com/underscore/\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.3.3":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.3","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.3","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"47ac53683daf832bfa952e1774417da47817ae42","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.3.3.tgz"},"readme":" __ \n /\\ \\ __ \n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____ \n /\\ \\/\\ \\ /' _ `\\ /'_ \\ /'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/'__`\\ \\/\\ \\ /',__\\ \n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/ \n \\ \\____/ \n \\/___/\n \nUnderscore.js is a utility-belt library for JavaScript that provides \nsupport for the usual functional suspects (each, map, reduce, filter...) \nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://documentcloud.github.com/underscore/\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}}},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"time":{"1.0.3":"2011-12-07T15:12:18.045Z","1.0.4":"2011-12-07T15:12:18.045Z","1.1.0":"2011-12-07T15:12:18.045Z","1.1.1":"2011-12-07T15:12:18.045Z","1.1.2":"2011-12-07T15:12:18.045Z","1.1.3":"2011-12-07T15:12:18.045Z","1.1.4":"2011-12-07T15:12:18.045Z","1.1.5":"2011-12-07T15:12:18.045Z","1.1.6":"2011-12-07T15:12:18.045Z","1.1.7":"2011-12-07T15:12:18.045Z","1.2.0":"2011-12-07T15:12:18.045Z","1.2.1":"2011-12-07T15:12:18.045Z","1.2.2":"2011-11-14T20:28:47.115Z","1.2.3":"2011-12-07T15:12:18.045Z","1.2.4":"2012-01-09T17:23:14.818Z","1.3.0":"2012-01-11T16:41:38.459Z","1.3.1":"2012-01-23T22:57:36.474Z","1.3.2":"2012-04-09T18:38:14.345Z","1.3.3":"2012-04-10T14:43:48.089Z"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"users":{"vesln":true,"mvolkmann":true,"lancehunt":true,"mikl":true,"linus":true,"vasc":true,"bat":true,"dmalam":true,"mbrevoort":true,"danielr":true,"rsimoes":true,"thlorenz":true}}
\ No newline at end of file
diff --git a/deps/npm/node_modules/npm-registry-client/test/initialize.js b/deps/npm/node_modules/npm-registry-client/test/initialize.js
index aefbe626fce210..3856b67b45e0f8 100644
--- a/deps/npm/node_modules/npm-registry-client/test/initialize.js
+++ b/deps/npm/node_modules/npm-registry-client/test/initialize.js
@@ -1,4 +1,5 @@
var test = require('tap').test
+var url = require('url')
// var server = require('./lib/server.js')
var Client = require('../')
@@ -29,6 +30,39 @@ test('defaulted initialization', function (t) {
var HttpAgent = require('http').Agent
t.ok(options.agent instanceof HttpAgent, 'got an HTTP agent for an HTTP URL')
+ t.equal(options.agent.maxSockets, 50, 'maxSockets set to a reasonable default')
+
+ t.end()
+})
+
+test('intializing with maxSockets set works for http', function (t) {
+ var client = new Client({ maxSockets: Infinity })
+ var options = client.initialize(
+ url.parse('http://localhost:1337/'),
+ 'GET',
+ 'application/json',
+ {}
+ )
+
+ var HttpAgent = require('http').Agent
+ t.ok(options.agent instanceof HttpAgent, 'got an HTTP agent for an HTTP URL')
+ t.equal(options.agent.maxSockets, Infinity, 'request uses configured value for maxSockets')
+
+ t.end()
+})
+
+test('intializing with maxSockets set works for https', function (t) {
+ var client = new Client({ maxSockets: Infinity })
+ var options = client.initialize(
+ url.parse('https://localhost:1337/'),
+ 'GET',
+ 'application/json',
+ {}
+ )
+
+ var HttpsAgent = require('https').Agent
+ t.ok(options.agent instanceof HttpsAgent, 'got an HTTPS agent for an HTTPS URL')
+ t.equal(options.agent.maxSockets, Infinity, 'request uses configured value for maxSockets')
t.end()
})
diff --git a/deps/npm/node_modules/request/.eslintrc b/deps/npm/node_modules/request/.eslintrc
new file mode 100644
index 00000000000000..6ebc53601d7ba5
--- /dev/null
+++ b/deps/npm/node_modules/request/.eslintrc
@@ -0,0 +1,45 @@
+{
+ "env": {
+ "node": true
+ },
+ "rules": {
+ // 2-space indentation
+ "indent": [2, 2, {"SwitchCase": 1}],
+ // Disallow semi-colons, unless needed to disambiguate statement
+ "semi": [2, "never"],
+ // Require strings to use single quotes
+ "quotes": [2, "single"],
+ // Require curly braces for all control statements
+ "curly": 2,
+ // Disallow using variables and functions before they've been defined
+ "no-use-before-define": 2,
+ // Allow any case for variable naming
+ "camelcase": 0,
+ // Disallow unused variables, except as function arguments
+ "no-unused-vars": [2, {"args":"none"}],
+ // Allow leading underscores for method names
+ // REASON: we use underscores to denote private methods
+ "no-underscore-dangle": 0,
+ // Allow multi spaces around operators since they are
+ // used for alignment. This is not consistent in the
+ // code.
+ "no-multi-spaces": 0,
+ // Style rule is: most objects use { beforeColon: false, afterColon: true }, unless aligning which uses:
+ //
+ // {
+ // beforeColon : true,
+ // afterColon : true
+ // }
+ //
+ // eslint can't handle this, so the check is disabled.
+ "key-spacing": 0,
+ // Allow shadowing vars in outer scope (needs discussion)
+ "no-shadow": 0,
+ // Use if () { }
+ // ^ space
+ "space-after-keywords": [2, "always"],
+ // Use if () { }
+ // ^ space
+ "space-before-blocks": [2, "always"]
+ }
+}
diff --git a/deps/npm/node_modules/strip-ansi/package.json b/deps/npm/node_modules/strip-ansi/package.json
index f9809beee8dc3f..32e04f05858668 100644
--- a/deps/npm/node_modules/strip-ansi/package.json
+++ b/deps/npm/node_modules/strip-ansi/package.json
@@ -1,11 +1,11 @@
{
"name": "strip-ansi",
- "version": "3.0.0",
+ "version": "3.0.1",
"description": "Strip ANSI escape codes",
"license": "MIT",
"repository": {
"type": "git",
- "url": "git+https://github.com/sindresorhus/strip-ansi.git"
+ "url": "git+https://github.com/chalk/strip-ansi.git"
},
"author": {
"name": "Sindre Sorhus",
@@ -26,7 +26,7 @@
"node": ">=0.10.0"
},
"scripts": {
- "test": "node test.js"
+ "test": "xo && ava"
},
"files": [
"index.js"
@@ -59,27 +59,32 @@
"ansi-regex": "^2.0.0"
},
"devDependencies": {
- "ava": "0.0.4"
+ "ava": "*",
+ "xo": "*"
},
- "gitHead": "3f05b9810e1438f946e2eb84ee854cc00b972e9e",
+ "gitHead": "8270705c704956da865623e564eba4875c3ea17f",
"bugs": {
- "url": "https://github.com/sindresorhus/strip-ansi/issues"
+ "url": "https://github.com/chalk/strip-ansi/issues"
},
- "homepage": "https://github.com/sindresorhus/strip-ansi",
- "_id": "strip-ansi@3.0.0",
- "_shasum": "7510b665567ca914ccb5d7e072763ac968be3724",
- "_from": "strip-ansi@3.0.0",
- "_npmVersion": "2.11.2",
- "_nodeVersion": "0.12.5",
+ "homepage": "https://github.com/chalk/strip-ansi",
+ "_id": "strip-ansi@3.0.1",
+ "_shasum": "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf",
+ "_from": "strip-ansi@*",
+ "_npmVersion": "2.11.3",
+ "_nodeVersion": "0.12.7",
"_npmUser": {
- "name": "sindresorhus",
- "email": "sindresorhus@gmail.com"
+ "name": "jbnicolai",
+ "email": "jappelman@xebia.com"
},
"dist": {
- "shasum": "7510b665567ca914ccb5d7e072763ac968be3724",
- "tarball": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz"
+ "shasum": "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf",
+ "tarball": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"
+ },
+ "_npmOperationalInternal": {
+ "host": "packages-9-west.internal.npmjs.com",
+ "tmp": "tmp/strip-ansi-3.0.1.tgz_1456057278183_0.28958667791448534"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz",
+ "_resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/strip-ansi/readme.md b/deps/npm/node_modules/strip-ansi/readme.md
index 76091512df5e46..cb7d9ff7ee403d 100644
--- a/deps/npm/node_modules/strip-ansi/readme.md
+++ b/deps/npm/node_modules/strip-ansi/readme.md
@@ -1,4 +1,4 @@
-# strip-ansi [![Build Status](https://travis-ci.org/sindresorhus/strip-ansi.svg?branch=master)](https://travis-ci.org/sindresorhus/strip-ansi)
+# strip-ansi [![Build Status](https://travis-ci.org/chalk/strip-ansi.svg?branch=master)](https://travis-ci.org/chalk/strip-ansi)
> Strip [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)
@@ -22,10 +22,10 @@ stripAnsi('\u001b[4mcake\u001b[0m');
## Related
-- [strip-ansi-cli](https://github.com/sindresorhus/strip-ansi-cli) - CLI for this module
-- [has-ansi](https://github.com/sindresorhus/has-ansi) - Check if a string has ANSI escape codes
-- [ansi-regex](https://github.com/sindresorhus/ansi-regex) - Regular expression for matching ANSI escape codes
-- [chalk](https://github.com/sindresorhus/chalk) - Terminal string styling done right
+- [strip-ansi-cli](https://github.com/chalk/strip-ansi-cli) - CLI for this module
+- [has-ansi](https://github.com/chalk/has-ansi) - Check if a string has ANSI escape codes
+- [ansi-regex](https://github.com/chalk/ansi-regex) - Regular expression for matching ANSI escape codes
+- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right
## License
diff --git a/deps/npm/package.json b/deps/npm/package.json
index 660b192626db85..be2988afefc2eb 100644
--- a/deps/npm/package.json
+++ b/deps/npm/package.json
@@ -1,5 +1,5 @@
{
- "version": "2.14.20",
+ "version": "2.15.0",
"name": "npm",
"description": "a package manager for JavaScript",
"keywords": [
@@ -51,7 +51,7 @@
"fstream-npm": "~1.0.7",
"github-url-from-git": "~1.4.0",
"github-url-from-username-repo": "~1.0.2",
- "glob": "~5.0.15",
+ "glob": "~7.0.3",
"graceful-fs": "~4.1.3",
"hosted-git-info": "~2.1.4",
"inflight": "~1.0.4",
@@ -62,14 +62,14 @@
"lru-cache": "~3.2.0",
"minimatch": "~3.0.0",
"mkdirp": "~0.5.1",
- "node-gyp": "~3.3.0",
+ "node-gyp": "~3.3.1",
"nopt": "~3.0.6",
"normalize-git-url": "~3.0.1",
"normalize-package-data": "~2.3.5",
"npm-cache-filename": "~1.0.2",
"npm-install-checks": "~1.0.7",
"npm-package-arg": "~4.1.0",
- "npm-registry-client": "~7.0.9",
+ "npm-registry-client": "~7.1.0",
"npm-user-validate": "~0.1.2",
"npmlog": "~2.0.2",
"once": "~1.3.3",
@@ -89,6 +89,7 @@
"slide": "~1.1.6",
"sorted-object": "~1.0.0",
"spdx-license-ids": "~1.2.0",
+ "strip-ansi": "~3.0.1",
"tar": "~2.2.1",
"text-table": "~0.2.0",
"uid-number": "0.0.6",
@@ -180,6 +181,7 @@
"npm-registry-mock": "~1.0.0",
"require-inject": "~1.3.0",
"sprintf-js": "~1.0.2",
+ "tacks": "~1.0.9",
"tap": "~2.3.1"
},
"scripts": {
@@ -188,8 +190,6 @@
"preversion": "bash scripts/update-authors.sh && git add AUTHORS && git commit -m \"update AUTHORS\" || true",
"tap": "tap --timeout 240",
"test": "npm run test-tap",
- "test-all": "npm run test-legacy && npm run test-tap",
- "test-legacy": "node ./test/run.js",
"test-tap": "npm run tap -- \"test/tap/*.js\""
},
"license": "Artistic-2.0"
diff --git a/deps/npm/test/fixtures/config/userconfig-with-gc b/deps/npm/test/fixtures/config/userconfig-with-gc
index 62ad80be113e5e..7268fcb3c611f9 100644
--- a/deps/npm/test/fixtures/config/userconfig-with-gc
+++ b/deps/npm/test/fixtures/config/userconfig-with-gc
@@ -1,4 +1,4 @@
-globalconfig=/Users/zkat/Documents/code/npm/test/fixtures/config/globalconfig
+globalconfig=/Users/ogd/Documents/projects/npm/npm/test/fixtures/config/globalconfig
email=i@izs.me
env-thing=asdf
init.author.name=Isaac Z. Schlueter
diff --git a/deps/npm/test/npm_cache/npm-test-files/1.2.5/package.tgz b/deps/npm/test/npm_cache/npm-test-files/1.2.5/package.tgz
deleted file mode 100644
index b24f7944c59584..00000000000000
Binary files a/deps/npm/test/npm_cache/npm-test-files/1.2.5/package.tgz and /dev/null differ
diff --git a/deps/npm/test/npm_cache/npm-test-files/1.2.5/package/package.json b/deps/npm/test/npm_cache/npm-test-files/1.2.5/package/package.json
deleted file mode 100644
index 717149c176cc69..00000000000000
--- a/deps/npm/test/npm_cache/npm-test-files/1.2.5/package/package.json
+++ /dev/null
@@ -1 +0,0 @@
-{"name":"npm-test-files","version":"1.2.5","files":["sub1/sub","sub2"],"readme":"ERROR: No README data found!","_id":"npm-test-files@1.2.5","scripts":{},"_shasum":"3f516561e52d6958b818db2a4fbc1b40707e68e3","_from":"npm-test-files","_resolved":"file:npm-test-files"}
\ No newline at end of file
diff --git a/deps/npm/test/packages/npm-test-array-bin/README b/deps/npm/test/packages/npm-test-array-bin/README
deleted file mode 100644
index 8848f0786872f2..00000000000000
--- a/deps/npm/test/packages/npm-test-array-bin/README
+++ /dev/null
@@ -1 +0,0 @@
-just an npm test
diff --git a/deps/npm/test/packages/npm-test-array-bin/bin/array-bin b/deps/npm/test/packages/npm-test-array-bin/bin/array-bin
deleted file mode 100644
index 9558516aad0c79..00000000000000
--- a/deps/npm/test/packages/npm-test-array-bin/bin/array-bin
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/usr/bin/env node
-console.log('ok')
diff --git a/deps/npm/test/packages/npm-test-array-bin/package.json b/deps/npm/test/packages/npm-test-array-bin/package.json
deleted file mode 100644
index 45e22efc41c9e0..00000000000000
--- a/deps/npm/test/packages/npm-test-array-bin/package.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{ "name":"npm-test-array-bin"
-, "version":"1.2.5"
-, "bin": [ "bin/array-bin" ]
-, "scripts": { "test": "node test.js" } }
diff --git a/deps/npm/test/packages/npm-test-blerg/README b/deps/npm/test/packages/npm-test-blerg/README
deleted file mode 100644
index 8848f0786872f2..00000000000000
--- a/deps/npm/test/packages/npm-test-blerg/README
+++ /dev/null
@@ -1 +0,0 @@
-just an npm test
diff --git a/deps/npm/test/packages/npm-test-blerg/package.json b/deps/npm/test/packages/npm-test-blerg/package.json
deleted file mode 100644
index 04e3338918716f..00000000000000
--- a/deps/npm/test/packages/npm-test-blerg/package.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "name":"npm-test-blerg"
-, "version" : "0.0.2"
-, "scripts" : { "test" : "node test.js" }
-, "publishConfig": {"tag": "foo"}
-}
diff --git a/deps/npm/test/packages/npm-test-blerg3/README b/deps/npm/test/packages/npm-test-blerg3/README
deleted file mode 100644
index 8848f0786872f2..00000000000000
--- a/deps/npm/test/packages/npm-test-blerg3/README
+++ /dev/null
@@ -1 +0,0 @@
-just an npm test
diff --git a/deps/npm/test/packages/npm-test-blerg3/package.json b/deps/npm/test/packages/npm-test-blerg3/package.json
deleted file mode 100644
index 87b5bbb96e54ec..00000000000000
--- a/deps/npm/test/packages/npm-test-blerg3/package.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "name":"npm-test-blerg3"
-, "homepage": "https://github.com/npm/npm/issues/2658"
-, "version" : "0.0.0"
-, "scripts" : { "test" : "node test.js" }
-}
diff --git a/deps/npm/test/packages/npm-test-bundled-git/README b/deps/npm/test/packages/npm-test-bundled-git/README
deleted file mode 100644
index 8848f0786872f2..00000000000000
--- a/deps/npm/test/packages/npm-test-bundled-git/README
+++ /dev/null
@@ -1 +0,0 @@
-just an npm test
diff --git a/deps/npm/test/packages/npm-test-bundled-git/package.json b/deps/npm/test/packages/npm-test-bundled-git/package.json
deleted file mode 100644
index 69e0eb7a8b2d0f..00000000000000
--- a/deps/npm/test/packages/npm-test-bundled-git/package.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{"name":"npm-test-bundled-git"
-,"scripts":{"test":"node test.js"}
-,"version":"1.2.5"
-,"dependencies":{"glob":"git://github.com/isaacs/node-glob.git#npm-test"}
-,"bundledDependencies":["glob"]}
diff --git a/deps/npm/test/packages/npm-test-dir-bin/README b/deps/npm/test/packages/npm-test-dir-bin/README
deleted file mode 100644
index 8848f0786872f2..00000000000000
--- a/deps/npm/test/packages/npm-test-dir-bin/README
+++ /dev/null
@@ -1 +0,0 @@
-just an npm test
diff --git a/deps/npm/test/packages/npm-test-dir-bin/bin/dir-bin b/deps/npm/test/packages/npm-test-dir-bin/bin/dir-bin
deleted file mode 100644
index 9558516aad0c79..00000000000000
--- a/deps/npm/test/packages/npm-test-dir-bin/bin/dir-bin
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/usr/bin/env node
-console.log('ok')
diff --git a/deps/npm/test/packages/npm-test-dir-bin/package.json b/deps/npm/test/packages/npm-test-dir-bin/package.json
deleted file mode 100644
index 1ea26323fdbd3f..00000000000000
--- a/deps/npm/test/packages/npm-test-dir-bin/package.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{ "name":"npm-test-dir-bin"
-, "version":"1.2.5"
-, "directories": { "bin": "./bin" }
-, "scripts": { "test": "node test.js" } }
diff --git a/deps/npm/test/packages/npm-test-env-reader/README b/deps/npm/test/packages/npm-test-env-reader/README
deleted file mode 100644
index 8848f0786872f2..00000000000000
--- a/deps/npm/test/packages/npm-test-env-reader/README
+++ /dev/null
@@ -1 +0,0 @@
-just an npm test
diff --git a/deps/npm/test/packages/npm-test-env-reader/package.json b/deps/npm/test/packages/npm-test-env-reader/package.json
deleted file mode 100644
index 99d7fc93070284..00000000000000
--- a/deps/npm/test/packages/npm-test-env-reader/package.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{ "name":"npm-test-env-reader"
-, "version" : "1.2.3"
-, "scripts" :
- { "install" : "node test.js"
- , "preinstall" : "node test.js"
- , "preuninstall" : "node test.js"
- , "postuninstall" : "node test.js"
- , "test" : "node test.js"
- , "stop" : "node test.js"
- , "start" : "node test.js"
- , "restart" : "node test.js"
- , "foo" : "node test.js"
- }
-}
diff --git a/deps/npm/test/packages/npm-test-env-reader/test.js b/deps/npm/test/packages/npm-test-env-reader/test.js
deleted file mode 100755
index d6cb7893a70f7a..00000000000000
--- a/deps/npm/test/packages/npm-test-env-reader/test.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var envs = []
-for (var e in process.env) {
- if (e.match(/npm|^path$/i)) envs.push(e + '=' + process.env[e])
-}
-envs.sort(function (a, b) {
- return a === b ? 0 : a > b ? -1 : 1
-}).forEach(function (e) {
- console.log(e)
-})
diff --git a/deps/npm/test/packages/npm-test-files/.npmignore b/deps/npm/test/packages/npm-test-files/.npmignore
deleted file mode 100644
index c7d927d0a2fd51..00000000000000
--- a/deps/npm/test/packages/npm-test-files/.npmignore
+++ /dev/null
@@ -1,7 +0,0 @@
-/sub/ignore1
-./sub/include2
-ignore3
-./include4
-ignoredir1
-ignoredir2/
-*.tgz
diff --git a/deps/npm/test/packages/npm-test-files/include4 b/deps/npm/test/packages/npm-test-files/include4
deleted file mode 100644
index e69de29bb2d1d6..00000000000000
diff --git a/deps/npm/test/packages/npm-test-files/package.json b/deps/npm/test/packages/npm-test-files/package.json
deleted file mode 100644
index 2afa12dc560fc0..00000000000000
--- a/deps/npm/test/packages/npm-test-files/package.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{ "name":"npm-test-files"
-, "version":"1.2.5"
-, "files":
- [ "include4"
- , "sub/include"
- , "sub/include2"
- , "sub/include4"
- , "test.sh"
- , ".npmignore" ]
-, "scripts":{"test":"bash test.sh"}}
diff --git a/deps/npm/test/packages/npm-test-files/sub/include b/deps/npm/test/packages/npm-test-files/sub/include
deleted file mode 100644
index e69de29bb2d1d6..00000000000000
diff --git a/deps/npm/test/packages/npm-test-files/sub/include2 b/deps/npm/test/packages/npm-test-files/sub/include2
deleted file mode 100644
index e69de29bb2d1d6..00000000000000
diff --git a/deps/npm/test/packages/npm-test-files/sub/include4 b/deps/npm/test/packages/npm-test-files/sub/include4
deleted file mode 100644
index d16969cd189673..00000000000000
--- a/deps/npm/test/packages/npm-test-files/sub/include4
+++ /dev/null
@@ -1 +0,0 @@
-This file should be in the package.
diff --git a/deps/npm/test/packages/npm-test-files/test.sh b/deps/npm/test/packages/npm-test-files/test.sh
deleted file mode 100644
index cdf47f211a86b8..00000000000000
--- a/deps/npm/test/packages/npm-test-files/test.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-x=`find . | grep ignore | grep -v npmignore`
-if [ "$x" != "" ]; then
- echo "ignored files included: $x"
- exit 1
-fi
-
-x=`find . | grep -v ignore | sort`
-y=".
-./include4
-./package.json
-./sub
-./sub/include
-./sub/include2
-./sub/include4
-./test.sh"
-if [ "$x" != "$y" ]; then
- echo "missing included files"
- echo "got:"
- echo "==="
- echo "$x"
- echo "==="
- echo "wanted:"
- echo "==="
- echo "$y"
- echo "==="
- exit 1
-fi
diff --git a/deps/npm/test/packages/npm-test-ignore-nested-nm/README b/deps/npm/test/packages/npm-test-ignore-nested-nm/README
deleted file mode 100644
index 8848f0786872f2..00000000000000
--- a/deps/npm/test/packages/npm-test-ignore-nested-nm/README
+++ /dev/null
@@ -1 +0,0 @@
-just an npm test
diff --git a/deps/npm/test/packages/npm-test-ignore-nested-nm/lib/node_modules/foo b/deps/npm/test/packages/npm-test-ignore-nested-nm/lib/node_modules/foo
deleted file mode 100644
index 2c9d06aff6f62c..00000000000000
--- a/deps/npm/test/packages/npm-test-ignore-nested-nm/lib/node_modules/foo
+++ /dev/null
@@ -1 +0,0 @@
-I WILL NOT BE IGNORED!
diff --git a/deps/npm/test/packages/npm-test-ignore-nested-nm/package.json b/deps/npm/test/packages/npm-test-ignore-nested-nm/package.json
deleted file mode 100644
index 177dbfb01d61b7..00000000000000
--- a/deps/npm/test/packages/npm-test-ignore-nested-nm/package.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{"name":"npm-test-ignore-nested-nm"
-,"version":"1.2.5"
-,"scripts":{"test":"node test.js"}}
diff --git a/deps/npm/test/packages/npm-test-ignore/.npmignore b/deps/npm/test/packages/npm-test-ignore/.npmignore
deleted file mode 100644
index c7d927d0a2fd51..00000000000000
--- a/deps/npm/test/packages/npm-test-ignore/.npmignore
+++ /dev/null
@@ -1,7 +0,0 @@
-/sub/ignore1
-./sub/include2
-ignore3
-./include4
-ignoredir1
-ignoredir2/
-*.tgz
diff --git a/deps/npm/test/packages/npm-test-ignore/README b/deps/npm/test/packages/npm-test-ignore/README
deleted file mode 100644
index 8848f0786872f2..00000000000000
--- a/deps/npm/test/packages/npm-test-ignore/README
+++ /dev/null
@@ -1 +0,0 @@
-just an npm test
diff --git a/deps/npm/test/packages/npm-test-ignore/include4 b/deps/npm/test/packages/npm-test-ignore/include4
deleted file mode 100644
index e69de29bb2d1d6..00000000000000
diff --git a/deps/npm/test/packages/npm-test-ignore/package.json b/deps/npm/test/packages/npm-test-ignore/package.json
deleted file mode 100644
index 6d492de78063ae..00000000000000
--- a/deps/npm/test/packages/npm-test-ignore/package.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{ "name":"npm-test-ignore"
-, "version":"1.2.5"
-, "scripts":{"test":"bash test.sh"}}
diff --git a/deps/npm/test/packages/npm-test-ignore/sub/include b/deps/npm/test/packages/npm-test-ignore/sub/include
deleted file mode 100644
index e69de29bb2d1d6..00000000000000
diff --git a/deps/npm/test/packages/npm-test-ignore/sub/include2 b/deps/npm/test/packages/npm-test-ignore/sub/include2
deleted file mode 100644
index e69de29bb2d1d6..00000000000000
diff --git a/deps/npm/test/packages/npm-test-ignore/sub/include4 b/deps/npm/test/packages/npm-test-ignore/sub/include4
deleted file mode 100644
index d16969cd189673..00000000000000
--- a/deps/npm/test/packages/npm-test-ignore/sub/include4
+++ /dev/null
@@ -1 +0,0 @@
-This file should be in the package.
diff --git a/deps/npm/test/packages/npm-test-ignore/test.sh b/deps/npm/test/packages/npm-test-ignore/test.sh
deleted file mode 100644
index 05fbaf169973bf..00000000000000
--- a/deps/npm/test/packages/npm-test-ignore/test.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-x=`find . | grep ignore | grep -v npmignore`
-if [ "$x" != "" ]; then
- echo "ignored files included: $x"
- exit 1
-fi
-
-x=`find . | grep -v ignore | sort`
-y=".
-./include4
-./package.json
-./README
-./sub
-./sub/include
-./sub/include2
-./sub/include4
-./test.sh"
-y="`echo "$y" | sort`"
-if [ "$x" != "$y" ]; then
- echo "missing included files"
- echo "got:"
- echo "==="
- echo "$x"
- echo "==="
- echo "wanted:"
- echo "==="
- echo "$y"
- echo "==="
- exit 1
-fi
diff --git a/deps/npm/test/packages/npm-test-missing-bindir/README b/deps/npm/test/packages/npm-test-missing-bindir/README
deleted file mode 100644
index 8848f0786872f2..00000000000000
--- a/deps/npm/test/packages/npm-test-missing-bindir/README
+++ /dev/null
@@ -1 +0,0 @@
-just an npm test
diff --git a/deps/npm/test/packages/npm-test-missing-bindir/package.json b/deps/npm/test/packages/npm-test-missing-bindir/package.json
deleted file mode 100644
index 49e26742df58f0..00000000000000
--- a/deps/npm/test/packages/npm-test-missing-bindir/package.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{ "name":"npm-test-missing-bindir"
-, "version" : "0.0.0"
-, "scripts" : { "test" : "node test.js" }
-, "directories": { "bin" : "./not-found" } }
diff --git a/deps/npm/test/packages/npm-test-optional-deps/README b/deps/npm/test/packages/npm-test-optional-deps/README
deleted file mode 100644
index 8848f0786872f2..00000000000000
--- a/deps/npm/test/packages/npm-test-optional-deps/README
+++ /dev/null
@@ -1 +0,0 @@
-just an npm test
diff --git a/deps/npm/test/packages/npm-test-optional-deps/package.json b/deps/npm/test/packages/npm-test-optional-deps/package.json
deleted file mode 100644
index 67545ca9da1391..00000000000000
--- a/deps/npm/test/packages/npm-test-optional-deps/package.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{ "name": "npm-test-optional-deps"
-, "version": "1.2.5"
-, "scripts": { "test": "node test.js" }
-, "optionalDependencies":
- { "npm-test-foobarzaaakakaka": "http://example.com/"
- , "dnode": "10.999.14234"
- , "sax": "0.3.5"
- , "glob": "some invalid version 99 #! $$ x y z"
- , "npm-test-failer":"*"
- }
-}
diff --git a/deps/npm/test/packages/npm-test-platform-all/README b/deps/npm/test/packages/npm-test-platform-all/README
deleted file mode 100644
index 8848f0786872f2..00000000000000
--- a/deps/npm/test/packages/npm-test-platform-all/README
+++ /dev/null
@@ -1 +0,0 @@
-just an npm test
diff --git a/deps/npm/test/packages/npm-test-platform-all/package.json b/deps/npm/test/packages/npm-test-platform-all/package.json
deleted file mode 100644
index 07624363e6e996..00000000000000
--- a/deps/npm/test/packages/npm-test-platform-all/package.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{"name":"npm-test-platform-all"
-,"version":"9.9.9-9"
-,"homepage":"http://www.zombo.com/"
-,"os":["darwin","linux","win32","solaris","haiku","sunos","freebsd","openbsd","netbsd"]
-,"cpu":["arm","mips","ia32","x64","sparc"]}
diff --git a/deps/npm/test/packages/npm-test-platform/README b/deps/npm/test/packages/npm-test-platform/README
deleted file mode 100644
index 8848f0786872f2..00000000000000
--- a/deps/npm/test/packages/npm-test-platform/README
+++ /dev/null
@@ -1 +0,0 @@
-just an npm test
diff --git a/deps/npm/test/packages/npm-test-platform/package.json b/deps/npm/test/packages/npm-test-platform/package.json
deleted file mode 100644
index d6c3e09e1d9091..00000000000000
--- a/deps/npm/test/packages/npm-test-platform/package.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{"name":"npm-test-platform"
-,"version":"9.9.9-9"
-,"homepage":"http://www.youtube.com/watch?v=dQw4w9WgXcQ"
-,"os":["!this_is_not_a_real_os", "!neither_is_this"]
-,"cpu":["!this_is_not_a_real_cpu","!this_isnt_either"]}
diff --git a/deps/npm/test/packages/npm-test-private/README b/deps/npm/test/packages/npm-test-private/README
deleted file mode 100644
index 8848f0786872f2..00000000000000
--- a/deps/npm/test/packages/npm-test-private/README
+++ /dev/null
@@ -1 +0,0 @@
-just an npm test
diff --git a/deps/npm/test/packages/npm-test-private/package.json b/deps/npm/test/packages/npm-test-private/package.json
deleted file mode 100644
index 3d95a37af14b45..00000000000000
--- a/deps/npm/test/packages/npm-test-private/package.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{"name":"npm-test-private"
-,"version":"9.9.9-9"
-,"homepage":"http://www.youtube.com/watch?v=1MLry6Cn_D4"
-,"private":"true"}
diff --git a/deps/npm/test/packages/npm-test-shrinkwrap/README b/deps/npm/test/packages/npm-test-shrinkwrap/README
deleted file mode 100644
index 8848f0786872f2..00000000000000
--- a/deps/npm/test/packages/npm-test-shrinkwrap/README
+++ /dev/null
@@ -1 +0,0 @@
-just an npm test
diff --git a/deps/npm/test/packages/npm-test-shrinkwrap/package.json b/deps/npm/test/packages/npm-test-shrinkwrap/package.json
deleted file mode 100644
index a5d446e2d11681..00000000000000
--- a/deps/npm/test/packages/npm-test-shrinkwrap/package.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "author": "Isaac Z. Schlueter (http://blog.izs.me/)",
- "name": "npm-test-shrinkwrap",
- "version": "0.0.0",
- "dependencies": {
- "npm-test-single-file": "https://gist.github.com/isaacs/1837112/raw/9ef57a59fc22aeb1d1ca346b68826dcb638b8416/index.js",
- "glob": "git://github.com/isaacs/node-glob.git#npm-test",
- "minimatch": "~0.1.0"
- },
- "scripts": {
- "test": "node test.js"
- }
-}
diff --git a/deps/npm/test/packages/npm-test-test-package/README b/deps/npm/test/packages/npm-test-test-package/README
deleted file mode 100644
index 8848f0786872f2..00000000000000
--- a/deps/npm/test/packages/npm-test-test-package/README
+++ /dev/null
@@ -1 +0,0 @@
-just an npm test
diff --git a/deps/npm/test/packages/npm-test-test-package/package.json b/deps/npm/test/packages/npm-test-test-package/package.json
deleted file mode 100644
index c5c5aeabc1e56f..00000000000000
--- a/deps/npm/test/packages/npm-test-test-package/package.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{ "name":"npm-test-test-package"
-, "author" : "Testy McMock"
-, "version" : "1.2.3-99-b"
-, "description" : "This is a test package used for debugging. It has some random data and that's all."
-}
diff --git a/deps/npm/test/packages/npm-test-url-dep/README b/deps/npm/test/packages/npm-test-url-dep/README
deleted file mode 100644
index 8848f0786872f2..00000000000000
--- a/deps/npm/test/packages/npm-test-url-dep/README
+++ /dev/null
@@ -1 +0,0 @@
-just an npm test
diff --git a/deps/npm/test/packages/npm-test-url-dep/package.json b/deps/npm/test/packages/npm-test-url-dep/package.json
deleted file mode 100644
index f1949d8388154c..00000000000000
--- a/deps/npm/test/packages/npm-test-url-dep/package.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{ "name":"npm-test-url-dep"
-, "version" : "1.2.3"
-, "dependencies" :
- { "jsonify" : "https://github.com/substack/jsonify/tarball/master"
- , "sax": "isaacs/sax-js"
- , "canonical-host": "git://github.com/isaacs/canonical-host"
- } }
diff --git a/deps/npm/test/tap/bearer-token-check.js b/deps/npm/test/tap/bearer-token-check.js
new file mode 100644
index 00000000000000..6db2b832067541
--- /dev/null
+++ b/deps/npm/test/tap/bearer-token-check.js
@@ -0,0 +1,119 @@
+var resolve = require('path').resolve
+var writeFileSync = require('graceful-fs').writeFileSync
+
+var mkdirp = require('mkdirp')
+var mr = require('npm-registry-mock')
+var osenv = require('osenv')
+var rimraf = require('rimraf')
+var test = require('tap').test
+
+var common = require('../common-tap.js')
+var toNerfDart = require('../../lib/config/nerf-dart.js')
+
+var pkg = resolve(__dirname, 'install-bearer-check')
+var outfile = resolve(pkg, '_npmrc')
+var modules = resolve(pkg, 'node_modules')
+var tarballPath = '/scoped-underscore/-/scoped-underscore-1.3.1.tgz'
+// needs to be a different hostname to verify tokens (not) being sent correctly
+var tarballURL = 'http://lvh.me:' + common.port + tarballPath
+var tarball = resolve(__dirname, '../fixtures/scoped-underscore-1.3.1.tgz')
+
+var server
+
+var EXEC_OPTS = { cwd: pkg }
+
+function mocks (server) {
+ var auth = 'Bearer 0xabad1dea'
+ server.get(tarballPath, { authorization: auth }).reply(403, {
+ error: 'token leakage',
+ reason: 'This token should not be sent.'
+ })
+ server.get(tarballPath).replyWithFile(200, tarball)
+}
+
+test('setup', function (t) {
+ mr({ port: common.port, plugin: mocks }, function (er, s) {
+ server = s
+ t.ok(s, 'set up mock registry')
+ setup()
+ t.end()
+ })
+})
+
+test('authed npm install with tarball not on registry', function (t) {
+ common.npm(
+ [
+ 'install',
+ '--loglevel', 'silent',
+ '--json',
+ '--fetch-retries', 0,
+ '--userconfig', outfile
+ ],
+ EXEC_OPTS,
+ function (err, code, stdout, stderr) {
+ t.ifError(err, 'test runner executed without error')
+ t.equal(code, 0, 'npm install exited OK')
+ t.notOk(stderr, 'no output on stderr')
+ try {
+ var results = JSON.parse(stdout)
+ } catch (ex) {
+ console.error('#', ex)
+ t.ifError(ex, 'stdout was valid JSON')
+ }
+
+ if (results) {
+ var installedversion = {
+ 'name': '@scoped/underscore',
+ 'version': '1.3.1',
+ 'from': 'http://lvh.me:1337/scoped-underscore/-/scoped-underscore-1.3.1.tgz',
+ 'dependencies': {}
+ }
+ t.isDeeply(results[0], installedversion, '@scoped/underscore installed')
+ }
+
+ t.end()
+ }
+ )
+})
+
+test('cleanup', function (t) {
+ server.close()
+ cleanup()
+ t.end()
+})
+
+var contents = '@scoped:registry=' + common.registry + '\n' +
+ toNerfDart(common.registry) + ':_authToken=0xabad1dea\n'
+
+var json = {
+ name: 'test-package-install',
+ version: '1.0.0'
+}
+
+var shrinkwrap = {
+ name: 'test-package-install',
+ version: '1.0.0',
+ dependencies: {
+ '@scoped/underscore': {
+ resolved: tarballURL,
+ from: '>=1.3.1 <2',
+ version: '1.3.1'
+ }
+ }
+}
+
+function setup () {
+ cleanup()
+ mkdirp.sync(modules)
+ writeFileSync(resolve(pkg, 'package.json'), JSON.stringify(json, null, 2) + '\n')
+ writeFileSync(outfile, contents)
+ writeFileSync(
+ resolve(pkg, 'npm-shrinkwrap.json'),
+ JSON.stringify(shrinkwrap, null, 2) + '\n'
+ )
+}
+
+function cleanup () {
+ process.chdir(osenv.tmpdir())
+ rimraf.sync(pkg)
+}
diff --git a/deps/npm/test/tap/config-credentials.js b/deps/npm/test/tap/config-credentials.js
index 1cb2a7eb410c59..c23be12f6e0abb 100644
--- a/deps/npm/test/tap/config-credentials.js
+++ b/deps/npm/test/tap/config-credentials.js
@@ -73,13 +73,13 @@ test("set with token", function (t) {
}, "needs only token")
var expected = {
- scope : "//registry.lvh.me:8661/",
- token : "simple-token",
- username : undefined,
- password : undefined,
- email : undefined,
- auth : undefined,
- alwaysAuth : undefined
+ scope: '//registry.lvh.me:8661/',
+ token: 'simple-token',
+ username: undefined,
+ password: undefined,
+ email: undefined,
+ auth: undefined,
+ alwaysAuth: false
}
t.same(conf.getCredentialsByURI(URI), expected, "got bearer token and scope")
diff --git a/deps/npm/test/tap/files-and-ignores.js b/deps/npm/test/tap/files-and-ignores.js
new file mode 100644
index 00000000000000..02371cfe3eab78
--- /dev/null
+++ b/deps/npm/test/tap/files-and-ignores.js
@@ -0,0 +1,558 @@
+'use strict'
+var test = require('tap').test
+var common = require('../common-tap.js')
+var path = require('path')
+var rimraf = require('rimraf')
+var mkdirp = require('mkdirp')
+var fs = require('graceful-fs')
+var basepath = path.resolve(__dirname, path.basename(__filename, '.js'))
+var fixturepath = path.resolve(basepath, 'npm-test-files')
+var modulepath = path.resolve(basepath, 'node_modules')
+var installedpath = path.resolve(modulepath, 'npm-test-files')
+var Tacks = require('tacks')
+var File = Tacks.File
+var Dir = Tacks.Dir
+
+test('basic file inclusion', function (t) {
+ var fixture = new Tacks(
+ Dir({
+ 'package.json': File({
+ name: 'npm-test-files',
+ version: '1.2.5',
+ files: [
+ 'include',
+ 'sub/include'
+ ]
+ }),
+ include: File(''),
+ sub: Dir({ include: File('') }),
+ notincluded: File('')
+ })
+ )
+ withFixture(t, fixture, function (done) {
+ t.ok(fileExists('include'), 'toplevel file included')
+ t.ok(fileExists('sub/include'), 'nested file included')
+ t.notOk(fileExists('notincluded'), 'unspecified file not included')
+ done()
+ })
+})
+
+test('basic file exclusion', function (t) {
+ var fixture = new Tacks(
+ Dir({
+ 'package.json': File({
+ name: 'npm-test-files',
+ version: '1.2.5'
+ }),
+ '.npmignore': File(
+ 'ignore\n' +
+ 'sub/ignore\n'
+ ),
+ include: File(''),
+ ignore: File(''),
+ sub: Dir({ ignore: File('') })
+ })
+ )
+ withFixture(t, fixture, function (done) {
+ t.notOk(fileExists('ignore'), 'toplevel file excluded')
+ t.notOk(fileExists('sub/ignore'), 'nested file excluded')
+ t.ok(fileExists('include'), 'unignored file included')
+ done()
+ })
+})
+
+test('toplevel-only and blanket ignores', function (t) {
+ var fixture = new Tacks(
+ Dir({
+ 'package.json': File({
+ name: 'npm-test-files',
+ version: '1.2.5'
+ }),
+ '.npmignore': File(
+ './shallow1\n' +
+ '/shallow2\n' +
+ '/sub/onelevel\n' +
+ 'deep\n' +
+ ''
+ ),
+ shallow1: File(''),
+ shallow2: File(''),
+ deep: File(''),
+ sub: Dir({
+ shallow1: File(''),
+ shallow2: File(''),
+ onelevel: File(''),
+ deep: File(''),
+ sub: Dir({
+ deep: File(''),
+ onelevel: File('')
+ })
+ })
+ })
+ )
+ withFixture(t, fixture, function (done) {
+ t.notOk(fileExists('shallow2'), '/ file excluded')
+ t.ok(fileExists('sub/shallow1'), 'nested ./ file included')
+ t.ok(fileExists('sub/shallow2'), 'nested / file included')
+ t.ok(fileExists('sub/sub/onelevel'), 'double-nested file included')
+ t.notOk(fileExists('sub/onelevel'), 'nested / file excluded')
+ t.notOk(fileExists('deep'), 'deep file excluded')
+ t.notOk(fileExists('sub/deep'), 'nested deep file excluded')
+ t.notOk(fileExists('sub/sub/deep'), 'double-nested deep file excluded')
+ t.ok(fileExists('shallow1'), './ file included')
+ done()
+ })
+})
+
+test('.npmignore works for nested directories recursively', function (t) {
+ var fixture = new Tacks(
+ Dir({
+ 'package.json': File({
+ name: 'npm-test-files',
+ version: '1.2.5'
+ }),
+ '.npmignore': File(
+ '/ignore\n' +
+ 'deep\n'
+ ),
+ include: File(''),
+ ignore: File(''),
+ deep: File(''),
+ sub: Dir({
+ ignore: File(''),
+ include: File(''),
+ deep: File(''),
+ sub: Dir({
+ '.npmignore': File(
+ '/ignore\n'
+ ),
+ ignore: File(''),
+ include: File(''),
+ deep: File('')
+ })
+ })
+ })
+ )
+ withFixture(t, fixture, function (done) {
+ t.notOk(fileExists('ignore'), 'toplevel file excluded')
+ t.ok(fileExists('include'), 'unignored file included')
+ t.ok(fileExists('sub/ignore'), 'same-name file in nested dir included')
+ t.ok(fileExists('sub/include'), 'unignored nested dir file included')
+ t.notOk(fileExists('sub/sub/ignore'), 'sub-sub-directory file excluded')
+ t.ok(fileExists('sub/sub/include'), 'sub-sube-directory file included')
+ t.notOk(fileExists('deep'), 'deep file excluded')
+ t.notOk(fileExists('sub/deep'), 'sub-dir deep file excluded')
+ t.notOk(fileExists('sub/sub/deep'), 'sub-sub-dir deep file excluded')
+ done()
+ })
+})
+
+test('.gitignore should have identical semantics', function (t) {
+ var fixture = new Tacks(
+ Dir({
+ 'package.json': File({
+ name: 'npm-test-files',
+ version: '1.2.5'
+ }),
+ '.gitignore': File(
+ './shallow1\n' +
+ '/shallow2\n' +
+ '/sub/onelevel\n' +
+ 'deep\n' +
+ ''
+ ),
+ shallow1: File(''),
+ shallow2: File(''),
+ deep: File(''),
+ sub: Dir({
+ shallow1: File(''),
+ shallow2: File(''),
+ onelevel: File(''),
+ deep: File(''),
+ sub: Dir({
+ deep: File(''),
+ onelevel: File('')
+ })
+ })
+ })
+ )
+ withFixture(t, fixture, function (done) {
+ t.notOk(fileExists('shallow2'), '/ file excluded')
+ t.ok(fileExists('sub/shallow1'), 'nested ./ file included')
+ t.ok(fileExists('sub/shallow2'), 'nested / file included')
+ t.ok(fileExists('sub/sub/onelevel'), 'double-nested file included')
+ t.notOk(fileExists('sub/onelevel'), 'nested / file excluded')
+ t.notOk(fileExists('deep'), 'deep file excluded')
+ t.notOk(fileExists('sub/deep'), 'nested deep file excluded')
+ t.notOk(fileExists('sub/sub/deep'), 'double-nested deep file excluded')
+ t.ok(fileExists('shallow1'), './ file included')
+ done()
+ })
+})
+
+test('.npmignore should always be overridden by files array', function (t) {
+ var fixture = new Tacks(
+ Dir({
+ 'package.json': File({
+ name: 'npm-test-files',
+ version: '1.2.5',
+ files: [
+ 'include',
+ 'sub'
+ ]
+ }),
+ '.npmignore': File(
+ 'include\n' +
+ 'ignore\n' +
+ 'sub/included\n'
+ ),
+ include: File(''),
+ ignore: File(''),
+ sub: Dir({
+ include: File('')
+ })
+ })
+ )
+ withFixture(t, fixture, function (done) {
+ t.notOk(fileExists('ignore'), 'toplevel file excluded')
+ t.ok(fileExists('include'), 'unignored file included')
+ t.ok(fileExists('sub/include'), 'nested file included')
+ done()
+ })
+})
+
+test('.gitignore supported for ignores', function (t) {
+ var fixture = new Tacks(
+ Dir({
+ 'package.json': File({
+ name: 'npm-test-files',
+ version: '1.2.5'
+ }),
+ '.gitignore': File(
+ 'ignore\n' +
+ 'sub/ignore\n'
+ ),
+ include: File(''),
+ ignore: File(''),
+ sub: Dir({ ignore: File('') })
+ })
+ )
+ withFixture(t, fixture, function (done) {
+ t.notOk(fileExists('ignore'), 'toplevel file excluded')
+ t.notOk(fileExists('sub/ignore'), 'nested file excluded')
+ t.ok(fileExists('include'), 'unignored file included')
+ done()
+ })
+})
+
+test('.npmignore completely overrides .gitignore', function (t) {
+ var fixture = new Tacks(
+ Dir({
+ 'package.json': File({
+ name: 'npm-test-files',
+ version: '1.2.5'
+ }),
+ '.npmignore': File(
+ 'ignore\n' +
+ 'sub/ignore\n'
+ ),
+ '.gitignore': File(
+ 'include\n' +
+ 'sub/include\n' +
+ 'extra\n'
+ ),
+ include: File(''),
+ sub: Dir({ include: File('') }),
+ extra: File('')
+ })
+ )
+ withFixture(t, fixture, function (done) {
+ t.ok(fileExists('include'), 'gitignored toplevel file included')
+ t.ok(fileExists('extra'), 'gitignored extra toplevel file included')
+ t.ok(fileExists('sub/include'), 'gitignored nested file included')
+ t.notOk(fileExists('ignore'), 'toplevel file excluded')
+ t.notOk(fileExists('sub/ignore'), 'nested file excluded')
+ done()
+ })
+})
+
+test('files array overrides .npmignore', function (t) {
+ var fixture = new Tacks(
+ Dir({
+ 'package.json': File({
+ name: 'npm-test-files',
+ version: '1.2.5',
+ files: [
+ 'include',
+ 'sub/include'
+ ]
+ }),
+ '.npmignore': File(
+ 'include\n' +
+ 'sub/include\n'
+ ),
+ include: File(''),
+ sub: Dir({ include: File('') })
+ })
+ )
+ withFixture(t, fixture, function (done) {
+ t.ok(fileExists('include'), 'toplevel file included')
+ t.ok(fileExists('sub/include'), 'nested file included')
+ done()
+ })
+})
+
+test('includes files regardless of emptiness', function (t) {
+ var fixture = new Tacks(
+ Dir({
+ 'package.json': File({
+ name: 'npm-test-files',
+ version: '1.2.5',
+ files: [
+ 'full',
+ 'empty'
+ ]
+ }),
+ full: File('This file has contents~'),
+ empty: File('')
+ })
+ )
+ withFixture(t, fixture, function (done) {
+ t.ok(fileExists('full'), 'contentful file included')
+ t.ok(fileExists('empty'), 'empty file included')
+ done()
+ })
+})
+
+test('.npmignore itself gets included', function (t) {
+ var fixture = new Tacks(
+ Dir({
+ 'package.json': File({
+ name: 'npm-test-files',
+ version: '1.2.5',
+ files: [
+ '.npmignore'
+ ]
+ }),
+ '.npmignore': File('')
+ })
+ )
+ withFixture(t, fixture, function (done) {
+ t.ok(fileExists('.npmignore'), '.npmignore included')
+ done()
+ })
+})
+
+test('include default files when missing files spec', function (t) {
+ var fixture = new Tacks(
+ Dir({
+ 'package.json': File({
+ name: 'npm-test-files',
+ version: '1.2.5'
+ }),
+ 'index.js': File(''),
+ foo: File(''),
+ node_modules: Dir({foo: Dir({bar: File('')})})
+ })
+ )
+ withFixture(t, fixture, function (done) {
+ t.ok(fileExists('index.js'), 'index.js included')
+ t.ok(fileExists('foo'), 'foo included')
+ t.notOk(fileExists('node_modules'), 'node_modules not included')
+ done()
+ })
+})
+
+test('include main file', function (t) {
+ var fixture = new Tacks(
+ Dir({
+ 'package.json': File({
+ name: 'npm-test-files',
+ version: '1.2.5',
+ main: 'foo.js',
+ files: []
+ }),
+ 'index.js': File(''),
+ 'foo.js': File('')
+ })
+ )
+ withFixture(t, fixture, function (done) {
+ t.ok(fileExists('foo.js'), 'foo.js included because of main')
+ t.notOk(fileExists('index.js'), 'index.js not included')
+ done()
+ })
+})
+
+test('certain files ignored unconditionally', function (t) {
+ var fixture = new Tacks(
+ Dir({
+ 'package.json': File({
+ name: 'npm-test-files',
+ version: '1.2.5',
+ files: [
+ '.git',
+ '.svn',
+ 'CVS',
+ '.hg',
+ '.lock-wscript',
+ '.wafpickle-0',
+ '.wafpickle-5',
+ '.wafpickle-50',
+ 'build/config.gypi',
+ 'npm-debug.log',
+ '.npmrc',
+ '.foo.swp',
+ '.DS_Store',
+ '._ohno'
+ ]
+ }),
+ '.git': Dir({foo: File('')}),
+ '.svn': Dir({foo: File('')}),
+ 'CVS': Dir({foo: File('')}),
+ '.hg': Dir({foo: File('')}),
+ '.lock-wscript': File(''),
+ '.wafpickle-0': File(''),
+ '.wafpickle-5': File(''),
+ '.wafpickle-50': File(''),
+ 'build': Dir({'config.gypi': File('')}),
+ 'npm-debug.log': File(''),
+ '.npmrc': File(''),
+ '.foo.swp': File(''),
+ '.DS_Store': Dir({foo: File('')}),
+ '._ohno': File(''),
+ '._ohnoes': Dir({noes: File('')})
+ })
+ )
+ withFixture(t, fixture, function (done) {
+ t.notOk(fileExists('.git'), '.git not included')
+ t.notOk(fileExists('.svn'), '.svn not included')
+ t.notOk(fileExists('CVS'), 'CVS not included')
+ t.notOk(fileExists('.hg'), '.hg not included')
+ t.notOk(fileExists('.lock-wscript'), '.lock-wscript not included')
+ t.notOk(fileExists('.wafpickle-0'), '.wafpickle-0 not included')
+ t.notOk(fileExists('.wafpickle-5'), '.wafpickle-5 not included')
+ t.notOk(fileExists('.wafpickle-50'), '.wafpickle-50 not included')
+ t.notOk(fileExists('build/config.gypi'), 'build/config.gypi not included')
+ t.notOk(fileExists('npm-debug.log'), 'npm-debug.log not included')
+ t.notOk(fileExists('.npmrc'), '.npmrc not included')
+ t.notOk(fileExists('.foo.swp'), '.foo.swp not included')
+ t.notOk(fileExists('.DS_Store'), '.DS_Store not included')
+ t.notOk(fileExists('._ohno'), '._ohno not included')
+ t.notOk(fileExists('._ohnoes'), '._ohnoes not included')
+ done()
+ })
+})
+
+test('certain files included unconditionally', function (t) {
+ var fixture = new Tacks(
+ Dir({
+ 'package.json': File({
+ name: 'npm-test-files',
+ version: '1.2.5'
+ }),
+ '.npmignore': File(
+ 'package.json',
+ 'README',
+ 'Readme',
+ 'readme.md',
+ 'readme.randomext',
+ 'changelog',
+ 'CHAngelog',
+ 'ChangeLOG.txt',
+ 'license',
+ 'licence',
+ 'LICENSE',
+ 'LICENCE'
+ ),
+ 'README': File(''),
+ 'Readme': File(''),
+ 'readme.md': File(''),
+ 'readme.randomext': File(''),
+ 'changelog': File(''),
+ 'CHAngelog': File(''),
+ 'ChangeLOG.txt': File(''),
+ 'license': File(''),
+ 'licence': File(''),
+ 'LICENSE': File(''),
+ 'LICENCE': File('')
+ })
+ )
+ withFixture(t, fixture, function (done) {
+ t.ok(fileExists('package.json'), 'package.json included')
+ t.ok(fileExists('README'), 'README included')
+ t.ok(fileExists('Readme'), 'Readme included')
+ t.ok(fileExists('readme.md'), 'readme.md included')
+ t.ok(fileExists('readme.randomext'), 'readme.randomext included')
+ t.ok(fileExists('changelog'), 'changelog included')
+ t.ok(fileExists('CHAngelog'), 'CHAngelog included')
+ t.ok(fileExists('ChangeLOG.txt'), 'ChangeLOG.txt included')
+ t.ok(fileExists('license'), 'license included')
+ t.ok(fileExists('licence'), 'licence included')
+ t.ok(fileExists('LICENSE'), 'LICENSE included')
+ t.ok(fileExists('LICENCE'), 'LICENCE included')
+ done()
+ })
+})
+
+test('folder-based inclusion works', function (t) {
+ var fixture = new Tacks(
+ Dir({
+ 'package.json': File({
+ name: 'npm-test-files',
+ version: '1.2.5',
+ files: [
+ 'sub1/sub',
+ 'sub2'
+ ]
+ }),
+ sub1: Dir({
+ sub: Dir({
+ include1: File(''),
+ include2: File('')
+ }),
+ ignored: File('')
+ }),
+ sub2: Dir({
+ include1: File(''),
+ include2: File(''),
+ empty: Dir({})
+ })
+ })
+ )
+ withFixture(t, fixture, function (done) {
+ t.ok(fileExists('sub1/sub/include1'), 'nested dir included')
+ t.ok(fileExists('sub1/sub/include2'), 'nested dir included')
+ t.notOk(fileExists('sub1/ignored'), 'unspecified file not included')
+
+ t.ok(fileExists('sub2/include1'), 'dir contents included')
+ t.ok(fileExists('sub2/include2'), 'dir contents included')
+ t.notOk(fileExists('sub2/empty'), 'empty dir not included')
+
+ done()
+ })
+})
+
+function fileExists (file) {
+ try {
+ return !!fs.statSync(path.resolve(installedpath, file))
+ } catch (_) {
+ return false
+ }
+}
+
+function withFixture (t, fixture, tester) {
+ fixture.create(fixturepath)
+ mkdirp.sync(modulepath)
+ common.npm(['install', fixturepath], {cwd: basepath}, installCheckAndTest)
+ function installCheckAndTest (err, code) {
+ if (err) throw err
+ t.is(code, 0, 'install went ok')
+ tester(removeAndDone)
+ }
+ function removeAndDone (err) {
+ if (err) throw err
+ fixture.remove(fixturepath)
+ rimraf.sync(basepath)
+ t.done()
+ }
+}
diff --git a/deps/npm/test/tap/legacy-array-bin.js b/deps/npm/test/tap/legacy-array-bin.js
new file mode 100644
index 00000000000000..3e421ee23e3ff0
--- /dev/null
+++ b/deps/npm/test/tap/legacy-array-bin.js
@@ -0,0 +1,80 @@
+'use strict'
+var test = require('tap').test
+var common = require('../common-tap.js')
+var path = require('path')
+var rimraf = require('rimraf')
+var mkdirp = require('mkdirp')
+var basepath = path.resolve(__dirname, path.basename(__filename, '.js'))
+var fixturepath = path.resolve(basepath, 'npm-test-array-bin')
+var modulepath = path.resolve(basepath, 'node_modules')
+var installedpath = path.resolve(modulepath, 'npm-test-array-bin')
+var Tacks = require('tacks')
+var File = Tacks.File
+var Dir = Tacks.Dir
+var fixture = new Tacks(
+ Dir({
+ bin: Dir({
+ 'array-bin': File(
+ '#!/usr/bin/env node\n' +
+ "console.log('test ran ok')\n"
+ )
+ }),
+ 'package.json': File({
+ name: 'npm-test-array-bin',
+ version: '1.2.5',
+ bin: [
+ 'bin/array-bin'
+ ],
+ scripts: {
+ test: 'node test.js'
+ }
+ }),
+ 'test.js': File(
+ "require('child_process').exec('array-bin', { env: process.env },\n" +
+ ' function (err, stdout, stderr) {\n' +
+ " if (err && err.code) throw new Error('exited badly with code = ' + err.code)\n" +
+ ' console.log(stdout)\n' +
+ ' console.error(stderr)\n' +
+ ' }\n' +
+ ')\n'
+ )
+ })
+)
+test('setup', function (t) {
+ setup()
+ t.done()
+})
+test('array-bin', function (t) {
+ common.npm(['install', fixturepath], {cwd: basepath}, installCheckAndTest)
+ function installCheckAndTest (err, code, stdout, stderr) {
+ if (err) throw err
+ t.is(code, 0, 'install went ok')
+ t.equal(stderr, '', 'no error output')
+ common.npm(['test'], {cwd: installedpath}, testCheckAndRemove)
+ }
+ function testCheckAndRemove (err, code, stdout, stderr) {
+ t.ifError(err, 'npm test on array bin')
+ t.equal(code, 0, 'exited OK')
+ t.equal(stderr.trim(), '', 'no error output')
+ t.match(stdout, /test ran ok/, 'child script ran properly')
+ common.npm(['rm', fixturepath], {cwd: basepath}, removeCheckAndDone)
+ }
+ function removeCheckAndDone (err, code, stdout, stderr) {
+ if (err) throw err
+ t.is(code, 0, 'remove went ok')
+ t.done()
+ }
+})
+test('cleanup', function (t) {
+ cleanup()
+ t.done()
+})
+function setup () {
+ cleanup()
+ fixture.create(fixturepath)
+ mkdirp.sync(modulepath)
+}
+function cleanup () {
+ fixture.remove(fixturepath)
+ rimraf.sync(basepath)
+}
diff --git a/deps/npm/test/tap/legacy-bundled-git.js b/deps/npm/test/tap/legacy-bundled-git.js
new file mode 100644
index 00000000000000..355f9467c151fb
--- /dev/null
+++ b/deps/npm/test/tap/legacy-bundled-git.js
@@ -0,0 +1,103 @@
+'use strict'
+var test = require('tap').test
+var common = require('../common-tap.js')
+var path = require('path')
+var rimraf = require('rimraf')
+var mkdirp = require('mkdirp')
+var basepath = path.resolve(__dirname, path.basename(__filename, '.js'))
+var fixturepath = path.resolve(basepath, 'npm-test-bundled-git')
+var modulepath = path.resolve(basepath, 'node_modules')
+var installedpath = path.resolve(modulepath, 'npm-test-bundled-git')
+var Tacks = require('tacks')
+var File = Tacks.File
+var Dir = Tacks.Dir
+
+var minimatchExpected = {
+ name: 'minimatch',
+ description: 'a glob matcher in javascript',
+ version: '0.2.1',
+ repository: {
+ type: 'git',
+ url: 'git://github.com/isaacs/minimatch.git'
+ },
+ main: 'minimatch.js',
+ scripts: {
+ test: 'tap test'
+ },
+ engines: {
+ node: '*'
+ },
+ dependencies: {
+ 'lru-cache': '~1.0.5'
+ },
+ devDependencies: {
+ tap: '~0.1.3'
+ },
+ licenses: [
+ {
+ type: 'MIT',
+ url: 'http://github.com/isaacs/minimatch/raw/master/LICENSE'
+ }
+ ]
+}
+
+var fixture = new Tacks(
+ Dir({
+ README: File(
+ 'just an npm test\n'
+ ),
+ 'package.json': File({
+ name: 'npm-test-bundled-git',
+ scripts: {
+ test: 'node test.js'
+ },
+ version: '1.2.5',
+ dependencies: {
+ glob: 'git://github.com/isaacs/node-glob.git#npm-test'
+ },
+ bundledDependencies: [
+ 'glob'
+ ]
+ })
+ })
+)
+test('setup', function (t) {
+ setup()
+ t.done()
+})
+test('bundled-git', function (t) {
+ common.npm(['install', '--global-style', fixturepath], {cwd: basepath}, installCheckAndTest)
+ function installCheckAndTest (err, code, stdout, stderr) {
+ if (err) throw err
+ console.error(stderr)
+ console.log(stdout)
+ t.is(code, 0, 'install went ok')
+
+ var actual = require(path.resolve(installedpath, 'node_modules/glob/node_modules/minimatch/package.json'))
+ Object.keys(minimatchExpected).forEach(function (key) {
+ t.isDeeply(actual[key], minimatchExpected[key], key + ' set to the right value')
+ })
+
+ common.npm(['rm', fixturepath], {cwd: basepath}, removeCheckAndDone)
+ }
+ function removeCheckAndDone (err, code, stdout, stderr) {
+ if (err) throw err
+ console.error(stderr)
+ console.log(stdout)
+ t.is(code, 0, 'remove went ok')
+ t.done()
+ }
+})
+test('cleanup', function (t) {
+ cleanup()
+ t.done()
+})
+function setup () {
+ cleanup()
+ fixture.create(fixturepath)
+ mkdirp.sync(modulepath)
+}
+function cleanup () {
+ fixture.remove(fixturepath)
+ rimraf.sync(basepath)
+}
diff --git a/deps/npm/test/tap/legacy-dir-bin.js b/deps/npm/test/tap/legacy-dir-bin.js
new file mode 100644
index 00000000000000..e9e6bdfe1320f6
--- /dev/null
+++ b/deps/npm/test/tap/legacy-dir-bin.js
@@ -0,0 +1,79 @@
+'use strict'
+var test = require('tap').test
+var common = require('../common-tap.js')
+var path = require('path')
+var rimraf = require('rimraf')
+var mkdirp = require('mkdirp')
+var basepath = path.resolve(__dirname, path.basename(__filename, '.js'))
+var fixturepath = path.resolve(basepath, 'npm-test-dir-bin')
+var modulepath = path.resolve(basepath, 'node_modules')
+var installedpath = path.resolve(modulepath, 'npm-test-dir-bin')
+var Tacks = require('tacks')
+var File = Tacks.File
+var Dir = Tacks.Dir
+var fixture = new Tacks(
+ Dir({
+ bin: Dir({
+ 'dir-bin': File(
+ '#!/usr/bin/env node\n' +
+ "console.log('test ran ok')\n"
+ )
+ }),
+ 'package.json': File({
+ name: 'npm-test-dir-bin',
+ version: '1.2.5',
+ directories: {
+ bin: './bin'
+ },
+ scripts: {
+ test: 'node test.js'
+ }
+ }),
+ 'test.js': File(
+ "require('child_process').exec('dir-bin', { env: process.env },\n" +
+ ' function (err, stdout, stderr) {\n' +
+ " if (err && err.code) throw new Error('exited badly with code = ' + err.code)\n" +
+ ' console.log(stdout)\n' +
+ ' console.error(stderr)\n' +
+ ' }\n' +
+ ')\n'
+ )
+ })
+)
+test('setup', function (t) {
+ setup()
+ t.done()
+})
+test('dir-bin', function (t) {
+ common.npm(['install', fixturepath], {cwd: basepath}, installCheckAndTest)
+ function installCheckAndTest (err, code, stdout, stderr) {
+ if (err) throw err
+ t.is(code, 0, 'install went ok')
+ common.npm(['test'], {cwd: installedpath}, testCheckAndRemove)
+ }
+ function testCheckAndRemove (err, code, stdout, stderr) {
+ t.ifError(err, 'npm test on array bin')
+ t.equal(code, 0, 'exited OK')
+ t.equal(stderr.trim(), '', 'no error output')
+ t.match(stdout, /test ran ok/, 'child script ran properly')
+ common.npm(['rm', fixturepath], {cwd: basepath}, removeCheckAndDone)
+ }
+ function removeCheckAndDone (err, code, stdout, stderr) {
+ if (err) throw err
+ t.is(code, 0, 'remove went ok')
+ t.done()
+ }
+})
+test('cleanup', function (t) {
+ cleanup()
+ t.done()
+})
+function setup () {
+ cleanup()
+ fixture.create(fixturepath)
+ mkdirp.sync(modulepath)
+}
+function cleanup () {
+ fixture.remove(fixturepath)
+ rimraf.sync(basepath)
+}
diff --git a/deps/npm/test/tap/legacy-ignore-nested-nm.js b/deps/npm/test/tap/legacy-ignore-nested-nm.js
new file mode 100644
index 00000000000000..095c41efa146ba
--- /dev/null
+++ b/deps/npm/test/tap/legacy-ignore-nested-nm.js
@@ -0,0 +1,64 @@
+'use strict'
+var test = require('tap').test
+var common = require('../common-tap.js')
+var path = require('path')
+var rimraf = require('rimraf')
+var mkdirp = require('mkdirp')
+var basepath = path.resolve(__dirname, path.basename(__filename, '.js'))
+var fixturepath = path.resolve(basepath, 'npm-test-ignore-nested-nm')
+var modulepath = path.resolve(basepath, 'node_modules')
+var installedpath = path.resolve(modulepath, 'npm-test-ignore-nested-nm')
+var fs = require('graceful-fs')
+var Tacks = require('tacks')
+var File = Tacks.File
+var Dir = Tacks.Dir
+
+var fileData = 'I WILL NOT BE IGNORED!\n'
+var fixture = new Tacks(
+ Dir({
+ lib: Dir({
+ node_modules: Dir({
+ foo: File(fileData)
+ })
+ }),
+ 'package.json': File({
+ name: 'npm-test-ignore-nested-nm',
+ version: '1.2.5'
+ })
+ })
+)
+test('setup', function (t) {
+ setup()
+ t.done()
+})
+test('ignore-nested-nm', function (t) {
+ common.npm(['install', fixturepath], {cwd: basepath}, installCheckAndTest)
+ function installCheckAndTest (err, code, stdout, stderr) {
+ if (err) throw err
+ t.is(code, 0, 'install went ok')
+ var foopath = path.resolve(installedpath, 'lib/node_modules/foo')
+ fs.readFile(foopath, function (err, data) {
+ t.ifError(err, 'file read successfully')
+ t.equal(data.toString(), fileData)
+ common.npm(['rm', fixturepath], {cwd: basepath}, removeCheckAndDone)
+ })
+ }
+ function removeCheckAndDone (err, code, stdout, stderr) {
+ if (err) throw err
+ t.is(code, 0, 'remove went ok')
+ t.done()
+ }
+})
+test('cleanup', function (t) {
+ cleanup()
+ t.done()
+})
+function setup () {
+ cleanup()
+ fixture.create(fixturepath)
+ mkdirp.sync(modulepath)
+}
+function cleanup () {
+ fixture.remove(fixturepath)
+ rimraf.sync(basepath)
+}
diff --git a/deps/npm/test/tap/legacy-missing-bindir.js b/deps/npm/test/tap/legacy-missing-bindir.js
new file mode 100644
index 00000000000000..a55703bebdb7cc
--- /dev/null
+++ b/deps/npm/test/tap/legacy-missing-bindir.js
@@ -0,0 +1,82 @@
+'use strict'
+var path = require('path')
+var fs = require('fs')
+var test = require('tap').test
+var common = require('../common-tap.js')
+var rimraf = require('rimraf')
+var mkdirp = require('mkdirp')
+var basepath = path.resolve(__dirname, path.basename(__filename, '.js'))
+var fixturepath = path.resolve(basepath, 'npm-test-missing-bindir')
+var modulepath = path.resolve(basepath, 'node_modules')
+var installedpath = path.resolve(modulepath, 'npm-test-missing-bindir')
+var Tacks = require('tacks')
+var File = Tacks.File
+var Dir = Tacks.Dir
+
+var fixture = new Tacks(
+ Dir({
+ README: File(
+ 'just an npm test\n'
+ ),
+ 'package.json': File({
+ name: 'npm-test-missing-bindir',
+ version: '0.0.0',
+ directories: {
+ bin: './not-found'
+ }
+ })
+ })
+)
+
+test('setup', function (t) {
+ setup()
+ t.done()
+})
+
+function installedExists (filename) {
+ try {
+ fs.statSync(path.resolve(installedpath, filename))
+ return true
+ } catch (ex) {
+ console.log(ex)
+ return false
+ }
+}
+
+test('missing-bindir', function (t) {
+ common.npm(['install', fixturepath], {cwd: basepath}, installCheckAndTest)
+
+ function installCheckAndTest (err, code, stdout, stderr) {
+ if (err) throw err
+ if (stderr) console.error(stderr)
+ console.log(stdout)
+ t.is(code, 0, 'install went ok')
+ t.is(installedExists('README'), true, 'README')
+ t.is(installedExists('package.json'), true, 'package.json')
+ common.npm(['rm', fixturepath], {cwd: basepath}, removeCheckAndDone)
+ }
+
+ function removeCheckAndDone (err, code, stdout, stderr) {
+ if (err) throw err
+ console.error(stderr)
+ console.log(stdout)
+ t.is(code, 0, 'remove went ok')
+ t.done()
+ }
+})
+
+test('cleanup', function (t) {
+ cleanup()
+ t.done()
+})
+
+function setup () {
+ cleanup()
+ fixture.create(fixturepath)
+ mkdirp.sync(modulepath)
+}
+
+function cleanup () {
+ fixture.remove(fixturepath)
+ rimraf.sync(basepath)
+}
diff --git a/deps/npm/test/tap/legacy-no-auth-leak.js b/deps/npm/test/tap/legacy-no-auth-leak.js
new file mode 100644
index 00000000000000..f837239250222b
--- /dev/null
+++ b/deps/npm/test/tap/legacy-no-auth-leak.js
@@ -0,0 +1,75 @@
+'use strict'
+var test = require('tap').test
+var common = require('../common-tap.js')
+var path = require('path')
+var basepath = path.resolve(__dirname, path.basename(__filename, '.js'))
+var Tacks = require('tacks')
+var File = Tacks.File
+var Dir = Tacks.Dir
+
+var fixture = new Tacks(
+ Dir({
+ README: File(
+ 'just an npm test\n'
+ ),
+ 'package.json': File({
+ name: 'npm-test-no-auth-leak',
+ version: '0.0.0',
+ scripts: {
+ test: 'node test.js'
+ }
+ }),
+ '.npmrc': File(
+ 'auth=abc',
+ 'authCrypt=def',
+ 'password=xyz',
+ '//registry.npmjs.org/:_authToken=nopenope'
+ ),
+ 'test.js': File(
+ 'var authTokenKeys = Object.keys(process.env)\n' +
+ ' .filter(function (key) { return /authToken/.test(key) })\n' +
+ 'console.log(JSON.stringify({\n' +
+ ' password: process.env.npm_config__password || null,\n' +
+ ' auth: process.env.npm_config__auth || null,\n' +
+ ' authCrypt: process.env.npm_config__authCrypt || null ,\n' +
+ ' authToken: authTokenKeys && process.env[authTokenKeys[0]] || null\n' +
+ '}))'
+ )
+ })
+)
+
+test('setup', function (t) {
+ setup()
+ t.done()
+})
+
+test('no-auth-leak', function (t) {
+ common.npm(['test'], {cwd: basepath}, function (err, code, stdout, stderr) {
+ if (err) throw err
+ t.is(code, 0, 'test ran ok')
+ if (stderr) console.log(stderr)
+ var matchResult = /^[^{]*(\{(?:.|\n)*\})[^}]*$/
+ t.like(stdout, matchResult, 'got results with a JSON chunk in them')
+ var stripped = stdout.replace(matchResult, '$1')
+ var result = JSON.parse(stripped)
+ t.is(result.password, null, 'password')
+ t.is(result.auth, null, 'auth')
+ t.is(result.authCrypt, null, 'authCrypt')
+ t.is(result.authToken, null, 'authToken')
+ t.end()
+ })
+})
+
+test('cleanup', function (t) {
+ cleanup()
+ t.done()
+})
+
+function setup () {
+ cleanup()
+ fixture.create(basepath)
+}
+
+function cleanup () {
+ fixture.remove(basepath)
+}
diff --git a/deps/npm/test/tap/legacy-npm-self-install.js b/deps/npm/test/tap/legacy-npm-self-install.js
new file mode 100644
index 00000000000000..313c0594935a0d
--- /dev/null
+++ b/deps/npm/test/tap/legacy-npm-self-install.js
@@ -0,0 +1,107 @@
+'use strict'
+var test = require('tap').test
+var fs = require('graceful-fs')
+var common = require('../common-tap.js')
+var path = require('path')
+var rimraf = require('rimraf')
+var mkdirp = require('mkdirp')
+var osenv = require('osenv')
+var npmpath = path.resolve(__dirname, '../..')
+var basepath = path.resolve(osenv.tmpdir(), path.basename(__filename, '.js'))
+var globalpath = path.resolve(basepath, 'global')
+var extend = Object.assign || require('util')._extend
+var isWin32 = process.platform === 'win32'
+
+test('setup', function (t) {
+ setup()
+ t.done()
+})
+
+var tarball
+
+test('build-tarball', function (t) {
+ common.npm(['pack'], {cwd: npmpath, stdio: ['ignore', 'pipe', process.stderr]}, function (err, code, stdout) {
+ if (err) throw err
+ t.is(code, 0, 'pack went ok')
+ tarball = path.resolve(npmpath, stdout.trim().replace(/^(?:.|\n)*(?:^|\n)(.*?[.]tgz)$/, '$1'))
+ t.match(tarball, /[.]tgz$/, 'got a tarball')
+ t.done()
+ })
+})
+
+function exists () {
+ try {
+ fs.statSync(path.resolve.apply(null, arguments))
+ return true
+ } catch (ex) {
+ return false
+ }
+}
+
+test('npm-self-install', function (t) {
+ if (!tarball) return t.done()
+
+ var env = extend({}, process.env)
+ var pathsep = isWin32 ? ';' : ':'
+ env.npm_config_prefix = globalpath
+ env.npm_config_global = 'true'
+ env.npm_config_npat = 'false'
+ env.NODE_PATH = null
+ env.npm_config_user_agent = null
+ env.npm_config_color = 'always'
+ env.npm_config_progress = 'always'
+ var PATH = env.PATH.split(pathsep)
+ var binpath = isWin32 ? globalpath : path.join(globalpath, 'bin')
+ var cmdname = isWin32 ? 'npm.cmd' : 'npm'
+ PATH.unshift(binpath)
+ env.PATH = PATH.join(pathsep)
+
+ var opts = {cwd: basepath, env: env, stdio: ['ignore', 'ignore', process.stderr]}
+
+ common.npm(['install', '--ignore-scripts', tarball], opts, installCheckAndTest)
+ function installCheckAndTest (err, code) {
+ if (err) throw err
+ t.is(code, 0, 'install went ok')
+ t.is(exists(binpath, cmdname), true, 'binary was installed')
+ t.is(exists(globalpath, 'lib', 'node_modules', 'npm'), true, 'module path exists')
+ common.npm(['ls', '--json', '--depth=0'], {cwd: basepath, env: env}, lsCheckAndRemove)
+ }
+ function lsCheckAndRemove (err, code, stdout, stderr) {
+ t.ifError(err, 'npm test on array bin')
+ t.equal(code, 0, 'exited OK')
+ t.equal(stderr.trim(), '', 'no error output')
+ var installed = JSON.parse(stdout.trim())
+ t.is(Object.keys(installed.dependencies).length, 1, 'one thing installed')
+ t.is(path.resolve(globalpath, installed.dependencies.npm.from), tarball, 'and it was our npm tarball')
+ common.npm(['rm', 'npm'], {cwd: basepath, env: env, stdio: 'inherit'}, removeCheck)
+ }
+ function removeCheck (err, code) {
+ if (err) throw err
+ t.is(code, 0, 'remove went ok')
+ common.npm(['ls', '--json', '--depth=0'], {cwd: basepath, env: env}, andDone)
+ }
+ function andDone (err, code, stdout, stderr) {
+ if (err) throw err
+ t.is(code, 0, 'remove went ok')
+ t.equal(stderr.trim(), '', 'no error output')
+ var installed = JSON.parse(stdout.trim())
+ t.ok(!installed.dependencies || installed.dependencies.length === 0, 'nothing left')
+ t.is(exists(binpath, cmdname), false, 'binary was removed')
+ t.is(exists(globalpath, 'lib', 'node_modules', 'npm'), false, 'module was entirely removed')
+ t.done()
+ }
+})
+
+test('cleanup', function (t) {
+ cleanup()
+ t.done()
+})
+
+function setup () {
+ cleanup()
+ mkdirp.sync(globalpath)
+}
+
+function cleanup () {
+ rimraf.sync(basepath)
+}
diff --git a/deps/npm/test/tap/legacy-optional-deps.js b/deps/npm/test/tap/legacy-optional-deps.js
new file mode 100644
index 00000000000000..54d0c75aabd0ed
--- /dev/null
+++ b/deps/npm/test/tap/legacy-optional-deps.js
@@ -0,0 +1,80 @@
+'use strict'
+var path = require('path')
+var fs = require('fs')
+var test = require('tap').test
+var common = require('../common-tap.js')
+var rimraf = require('rimraf')
+var mkdirp = require('mkdirp')
+var mr = require('npm-registry-mock')
+var basepath = path.resolve(__dirname, path.basename(__filename, '.js'))
+var fixturepath = path.resolve(basepath, 'npm-test-optional-deps')
+var modulepath = path.resolve(basepath, 'node_modules')
+var Tacks = require('tacks')
+var File = Tacks.File
+var Dir = Tacks.Dir
+
+var fixture = new Tacks(
+ Dir({
+ README: File(
+ 'just an npm test\n'
+ ),
+ 'package.json': File({
+ name: 'npm-test-optional-deps',
+ version: '1.2.5',
+ optionalDependencies: {
+ 'npm-test-foobarzaaakakaka': 'http://example.com/',
+ async: '10.999.14234',
+ mkdirp: '0.3.5',
+ optimist: 'some invalid version 99 #! $$ x y z',
+ 'npm-test-failer': '*'
+ }
+ })
+ })
+)
+
+var server
+
+test('setup', function (t) {
+ setup()
+ mr({port: common.port}, function (err, s) {
+ if (err) throw err
+ server = s
+ t.done()
+ })
+})
+
+test('optional-deps', function (t) {
+ server.get('/npm-test-failer').reply(404, {error: 'nope'})
+
+ var opts = ['--registry=' + common.registry, '--timeout=100']
+ common.npm(opts.concat(['install', fixturepath]), {cwd: basepath}, installCheckAndTest)
+
+ function installCheckAndTest (err, code, stdout, stderr) {
+ if (err) throw err
+ if (stderr) console.error(stderr)
+ server.done()
+ t.is(code, 0, 'install went ok')
+ var subpath = modulepath + '/npm-test-optional-deps/node_modules/'
+ var dir = fs.readdirSync(subpath)
+ t.isDeeply(dir, ['mkdirp'], 'only one optional dep should be there')
+ t.is(require(path.resolve(subpath, 'mkdirp', 'package.json')).version, '0.3.5', 'mkdirp version right')
+ t.done()
+ }
+})
+
+test('cleanup', function (t) {
+ cleanup()
+ server.close()
+ t.done()
+})
+
+function setup () {
+ cleanup()
+ fixture.create(fixturepath)
+ mkdirp.sync(modulepath)
+}
+
+function cleanup () {
+ fixture.remove(fixturepath)
+ rimraf.sync(basepath)
+}
diff --git a/deps/npm/test/tap/legacy-platform-all.js b/deps/npm/test/tap/legacy-platform-all.js
new file mode 100644
index 00000000000000..2bfb19a45782bd
--- /dev/null
+++ b/deps/npm/test/tap/legacy-platform-all.js
@@ -0,0 +1,73 @@
+'use strict'
+var test = require('tap').test
+var common = require('../common-tap.js')
+var path = require('path')
+var rimraf = require('rimraf')
+var mkdirp = require('mkdirp')
+var basepath = path.resolve(__dirname, path.basename(__filename, '.js'))
+var fixturepath = path.resolve(basepath, 'npm-test-platform-all')
+var modulepath = path.resolve(basepath, 'node_modules')
+var Tacks = require('tacks')
+var File = Tacks.File
+var Dir = Tacks.Dir
+
+var fixture = new Tacks(
+ Dir({
+ README: File(
+ 'just an npm test\n'
+ ),
+ 'package.json': File({
+ name: 'npm-test-platform-all',
+ version: '9.9.9-9',
+ homepage: 'http://www.zombo.com/',
+ os: [
+ 'darwin',
+ 'linux',
+ 'win32',
+ 'solaris',
+ 'haiku',
+ 'sunos',
+ 'freebsd',
+ 'openbsd',
+ 'netbsd'
+ ],
+ cpu: [
+ 'arm',
+ 'mips',
+ 'ia32',
+ 'x64',
+ 'sparc'
+ ]
+ })
+ })
+)
+
+test('setup', function (t) {
+ setup()
+ t.done()
+})
+
+test('platform-all', function (t) {
+ common.npm(['install', fixturepath], {cwd: basepath}, installCheckAndTest)
+ function installCheckAndTest (err, code, stdout, stderr) {
+ if (err) throw err
+ t.is(stderr, '', 'no error messages')
+ t.is(code, 0, 'install went ok')
+ t.done()
+ }
+})
+
+test('cleanup', function (t) {
+ cleanup()
+ t.done()
+})
+
+function setup () {
+ cleanup()
+ fixture.create(fixturepath)
+ mkdirp.sync(modulepath)
+}
+function cleanup () {
+ fixture.remove(fixturepath)
+ rimraf.sync(basepath)
+}
diff --git a/deps/npm/test/tap/legacy-platform.js b/deps/npm/test/tap/legacy-platform.js
new file mode 100644
index 00000000000000..4e94148b213097
--- /dev/null
+++ b/deps/npm/test/tap/legacy-platform.js
@@ -0,0 +1,64 @@
+'use strict'
+var test = require('tap').test
+var common = require('../common-tap.js')
+var path = require('path')
+var rimraf = require('rimraf')
+var mkdirp = require('mkdirp')
+var basepath = path.resolve(__dirname, path.basename(__filename, '.js'))
+var fixturepath = path.resolve(basepath, 'npm-test-platform')
+var modulepath = path.resolve(basepath, 'node_modules')
+var Tacks = require('tacks')
+var File = Tacks.File
+var Dir = Tacks.Dir
+
+var fixture = new Tacks(
+ Dir({
+ README: File(
+ 'just an npm test\n'
+ ),
+ 'package.json': File({
+ name: 'npm-test-platform',
+ version: '9.9.9-9',
+ homepage: 'http://www.youtube.com/watch?v=dQw4w9WgXcQ',
+ os: [
+ '!this_is_not_a_real_os',
+ '!neither_is_this'
+ ],
+ cpu: [
+ '!this_is_not_a_real_cpu',
+ '!this_isnt_either'
+ ]
+ })
+ })
+)
+
+test('setup', function (t) {
+ setup()
+ t.done()
+})
+
+test('platform', function (t) {
+ common.npm(['install', fixturepath], {cwd: basepath}, installCheckAndTest)
+ function installCheckAndTest (err, code, stdout, stderr) {
+ if (err) throw err
+ console.error(stderr)
+ t.is(code, 0, 'install went ok')
+ t.done()
+ }
+})
+
+test('cleanup', function (t) {
+ cleanup()
+ t.done()
+})
+
+function setup () {
+ cleanup()
+ fixture.create(fixturepath)
+ mkdirp.sync(modulepath)
+}
+
+function cleanup () {
+ fixture.remove(fixturepath)
+ rimraf.sync(basepath)
+}
diff --git a/deps/npm/test/tap/legacy-private.js b/deps/npm/test/tap/legacy-private.js
new file mode 100644
index 00000000000000..5e7817bf6a13a7
--- /dev/null
+++ b/deps/npm/test/tap/legacy-private.js
@@ -0,0 +1,58 @@
+'use strict'
+var test = require('tap').test
+var common = require('../common-tap.js')
+var path = require('path')
+var rimraf = require('rimraf')
+var mkdirp = require('mkdirp')
+var basepath = path.resolve(__dirname, path.basename(__filename, '.js'))
+var fixturepath = path.resolve(basepath, 'npm-test-private')
+var modulepath = path.resolve(basepath, 'node_modules')
+var Tacks = require('tacks')
+var File = Tacks.File
+var Dir = Tacks.Dir
+
+var fixture = new Tacks(
+ Dir({
+ README: File(
+ 'just an npm test\n'
+ ),
+ 'package.json': File({
+ name: 'npm-test-private',
+ version: '9.9.9-9',
+ homepage: 'http://www.youtube.com/watch?v=1MLry6Cn_D4',
+ private: 'true'
+ })
+ })
+)
+
+test('setup', function (t) {
+ setup()
+ t.done()
+})
+
+test('private', function (t) {
+ common.npm(['install', fixturepath], {cwd: basepath}, installCheckAndTest)
+ function installCheckAndTest (err, code, stdout, stderr) {
+ if (err) throw err
+ console.error(stderr)
+ console.log(stdout)
+ t.is(code, 0, 'install went ok')
+ t.done()
+ }
+})
+
+test('cleanup', function (t) {
+ cleanup()
+ t.done()
+})
+
+function setup () {
+ cleanup()
+ fixture.create(fixturepath)
+ mkdirp.sync(modulepath)
+}
+
+function cleanup () {
+ fixture.remove(fixturepath)
+ rimraf.sync(basepath)
+}
diff --git a/deps/npm/test/tap/legacy-shrinkwrap.js b/deps/npm/test/tap/legacy-shrinkwrap.js
new file mode 100644
index 00000000000000..6f5303037707a0
--- /dev/null
+++ b/deps/npm/test/tap/legacy-shrinkwrap.js
@@ -0,0 +1,132 @@
+'use strict'
+var test = require('tap').test
+var common = require('../common-tap.js')
+var path = require('path')
+var basepath = path.resolve(__dirname, path.basename(__filename, '.js'))
+var Tacks = require('tacks')
+var File = Tacks.File
+var Dir = Tacks.Dir
+
+var fixture = new Tacks(
+ Dir({
+ README: File(
+ 'just an npm test\n'
+ ),
+ 'npm-shrinkwrap.json': File({
+ name: 'npm-test-shrinkwrap',
+ version: '0.0.0',
+ dependencies: {
+ glob: {
+ version: '3.1.5',
+ from: 'git://github.com/isaacs/node-glob.git#npm-test',
+ resolved: 'git://github.com/isaacs/node-glob.git#67bda227fd7a559cca5620307c7d30a6732a792f',
+ dependencies: {
+ 'graceful-fs': {
+ version: '1.1.5',
+ resolved: 'https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.5.tgz',
+ dependencies: {
+ 'fast-list': {
+ version: '1.0.2',
+ resolved: 'https://registry.npmjs.org/fast-list/-/fast-list-1.0.2.tgz'
+ }
+ }
+ },
+ inherits: {
+ version: '1.0.0',
+ resolved: 'https://registry.npmjs.org/inherits/-/inherits-1.0.0.tgz'
+ },
+ minimatch: {
+ version: '0.2.1',
+ dependencies: {
+ 'lru-cache': {
+ version: '1.0.5'
+ }
+ }
+ }
+ }
+ },
+ minimatch: {
+ version: '0.1.5',
+ resolved: 'https://registry.npmjs.org/minimatch/-/minimatch-0.1.5.tgz',
+ dependencies: {
+ 'lru-cache': {
+ version: '1.0.5',
+ resolved: 'https://registry.npmjs.org/lru-cache/-/lru-cache-1.0.5.tgz'
+ }
+ }
+ },
+ 'npm-test-single-file': {
+ version: '1.2.3',
+ resolved: 'https://gist.github.com/isaacs/1837112/raw/9ef57a59fc22aeb1d1ca346b68826dcb638b8416/index.js'
+ }
+ }
+ }),
+ 'package.json': File({
+ author: 'Isaac Z. Schlueter (http://blog.izs.me/)',
+ name: 'npm-test-shrinkwrap',
+ version: '0.0.0',
+ dependencies: {
+ 'npm-test-single-file': 'https://gist.github.com/isaacs/1837112/raw/9ef57a59fc22aeb1d1ca346b68826dcb638b8416/index.js',
+ glob: 'git://github.com/isaacs/node-glob.git#npm-test',
+ minimatch: '~0.1.0'
+ },
+ scripts: {
+ test: 'node test.js'
+ }
+ })
+ })
+)
+
+test('setup', function (t) {
+ setup()
+ t.done()
+})
+
+test('shrinkwrap', function (t) {
+ common.npm(['install'], {cwd: basepath}, installCheckAndTest)
+
+ function installCheckAndTest (err, code, stdout, stderr) {
+ if (err) throw err
+ console.error(stderr)
+ t.is(code, 0, 'install went ok')
+
+ common.npm(['ls', '--json'], {cwd: basepath}, verifyLsMatchesShrinkwrap)
+ }
+
+ function verifyLsMatchesShrinkwrap (err, code, stdout, stderr) {
+ if (err) throw err
+ console.error(stderr)
+ t.is(code, 0, 'ls went ok')
+ var actual = JSON.parse(stdout)
+ var expected = require(path.resolve(basepath, 'npm-shrinkwrap.json'))
+ // from is expected to vary
+ t.isDeeply(rmFrom(actual), rmFrom(expected))
+ t.done()
+ }
+
+ function rmFrom (obj) {
+ for (var i in obj) {
+ if (i === 'from') {
+ delete obj[i]
+ } else if (i === 'dependencies') {
+ for (var j in obj[i]) {
+ rmFrom(obj[i][j])
+ }
+ }
+ }
+ }
+})
+
+test('cleanup', function (t) {
+ cleanup()
+ t.done()
+})
+
+function setup () {
+ cleanup()
+ fixture.create(basepath)
+}
+
+function cleanup () {
+ fixture.remove(basepath)
+}
diff --git a/deps/npm/test/tap/legacy-test-package.js b/deps/npm/test/tap/legacy-test-package.js
new file mode 100644
index 00000000000000..b0cbaa01a5cb62
--- /dev/null
+++ b/deps/npm/test/tap/legacy-test-package.js
@@ -0,0 +1,76 @@
+'use strict'
+var test = require('tap').test
+var common = require('../common-tap.js')
+var path = require('path')
+var rimraf = require('rimraf')
+var mkdirp = require('mkdirp')
+var basepath = path.resolve(__dirname, path.basename(__filename, '.js'))
+var fixturepath = path.resolve(basepath, 'npm-test-test-package')
+var modulepath = path.resolve(basepath, 'node_modules')
+var installedpath = path.resolve(modulepath, 'npm-test-test-package')
+var Tacks = require('tacks')
+var File = Tacks.File
+var Dir = Tacks.Dir
+
+var fixture = new Tacks(
+ Dir({
+ README: File(
+ 'just an npm test\n'
+ ),
+ 'package.json': File({
+ name: 'npm-test-test-package',
+ author: 'Testy McMock',
+ version: '1.2.3-99-b',
+ description: "This is a test package used for debugging. It has some random data and that's all."
+ })
+ })
+)
+
+test('setup', function (t) {
+ setup()
+ t.done()
+})
+
+test('test-package', function (t) {
+ common.npm(['install', fixturepath], {cwd: basepath}, installCheckAndTest)
+
+ function installCheckAndTest (err, code, stdout, stderr) {
+ if (err) throw err
+ console.error(stderr)
+ console.log(stdout)
+ t.is(code, 0, 'install went ok')
+ common.npm(['test'], {cwd: installedpath}, testCheckAndRemove)
+ }
+
+ function testCheckAndRemove (err, code, stdout, stderr) {
+ if (err) throw err
+ console.error(stderr)
+ console.log(stdout)
+ t.is(code, 0, 'npm test w/o test is ok')
+ common.npm(['rm', fixturepath], {cwd: basepath}, removeCheckAndDone)
+ }
+
+ function removeCheckAndDone (err, code, stdout, stderr) {
+ if (err) throw err
+ console.error(stderr)
+ console.log(stdout)
+ t.is(code, 0, 'remove went ok')
+ t.done()
+ }
+})
+
+test('cleanup', function (t) {
+ cleanup()
+ t.done()
+})
+
+function setup () {
+ cleanup()
+ fixture.create(fixturepath)
+ mkdirp.sync(modulepath)
+}
+
+function cleanup () {
+ fixture.remove(fixturepath)
+ rimraf.sync(basepath)
+}
diff --git a/deps/npm/test/tap/legacy-url-dep.js b/deps/npm/test/tap/legacy-url-dep.js
new file mode 100644
index 00000000000000..9807d6916a4e44
--- /dev/null
+++ b/deps/npm/test/tap/legacy-url-dep.js
@@ -0,0 +1,61 @@
+'use strict'
+var test = require('tap').test
+var common = require('../common-tap.js')
+var path = require('path')
+var rimraf = require('rimraf')
+var mkdirp = require('mkdirp')
+var basepath = path.resolve(__dirname, path.basename(__filename, '.js'))
+var fixturepath = path.resolve(basepath, 'npm-test-url-dep')
+var modulepath = path.resolve(basepath, 'node_modules')
+var Tacks = require('tacks')
+var File = Tacks.File
+var Dir = Tacks.Dir
+
+var fixture = new Tacks(
+ Dir({
+ README: File(
+ 'just an npm test\n'
+ ),
+ 'package.json': File({
+ name: 'npm-test-url-dep',
+ version: '1.2.3',
+ dependencies: {
+ jsonify: 'https://github.com/substack/jsonify/tarball/master',
+ sax: 'isaacs/sax-js',
+ 'canonical-host': 'git://github.com/isaacs/canonical-host'
+ }
+ })
+ })
+)
+
+test('setup', function (t) {
+ setup()
+ t.done()
+})
+
+test('url-dep', function (t) {
+ common.npm(['install', fixturepath], {cwd: basepath}, installCheckAndTest)
+ function installCheckAndTest (err, code, stdout, stderr) {
+ if (err) throw err
+ console.error(stderr)
+ console.log(stdout)
+ t.is(code, 0, 'install went ok')
+ t.done()
+ }
+})
+
+test('cleanup', function (t) {
+ cleanup()
+ t.done()
+})
+
+function setup () {
+ cleanup()
+ fixture.create(fixturepath)
+ mkdirp.sync(modulepath)
+}
+
+function cleanup () {
+ fixture.remove(fixturepath)
+ rimraf.sync(basepath)
+}
diff --git a/deps/npm/test/tap/lifecycle-path.js b/deps/npm/test/tap/lifecycle-path.js
index fae6fcc83f71e3..39761b48d7533e 100644
--- a/deps/npm/test/tap/lifecycle-path.js
+++ b/deps/npm/test/tap/lifecycle-path.js
@@ -67,7 +67,8 @@ test('make sure the path is correct', function (t) {
// get the ones we tacked on, then the system-specific requirements
var expect = [
'{{ROOT}}/bin/node-gyp-bin',
- '{{ROOT}}/test/tap/lifecycle-path/node_modules/.bin'
+ '{{ROOT}}/test/tap/lifecycle-path/node_modules/.bin',
+ path.dirname(process.execPath)
].concat(PATH.split(pathSplit).map(function (p) {
return p.replace(/\\/g, '/')
}))
diff --git a/deps/npm/test/tap/map-to-registry.js b/deps/npm/test/tap/map-to-registry.js
index 9f6673b92c0d6c..d9677bd7e0fceb 100644
--- a/deps/npm/test/tap/map-to-registry.js
+++ b/deps/npm/test/tap/map-to-registry.js
@@ -48,7 +48,7 @@ test('mapRegistryToURI', function (t) {
password: undefined,
email: undefined,
auth: undefined,
- alwaysAuth: undefined
+ alwaysAuth: false
})
t.equal(registry, 'http://reg.npm/design/-/rewrite/')
})
@@ -66,7 +66,7 @@ test('mapRegistryToURI', function (t) {
password: undefined,
email: undefined,
auth: undefined,
- alwaysAuth: undefined
+ alwaysAuth: false
})
t.equal(registry, 'http://reg.npm/-/rewrite/')
})
@@ -84,8 +84,83 @@ test('mapRegistryToURI', function (t) {
password: undefined,
email: undefined,
auth: undefined,
- alwaysAuth: undefined
+ alwaysAuth: false
})
t.equal(registry, 'http://reg.npm/design/-/rewrite/relative/')
})
})
+
+test('mapToRegistry token scoping', function (t) {
+ npm.config.set('scope', '')
+ npm.config.set('registry', 'https://reg.npm/')
+ npm.config.set('//reg.npm/:_authToken', 'r-token')
+
+ t.test('pass token to registry host', function (t) {
+ mapRegistry(
+ 'https://reg.npm/packages/e/easy-1.0.0.tgz',
+ npm.config,
+ function (er, uri, auth, registry) {
+ t.ifError(er, 'mapRegistryToURI worked')
+ t.equal(uri, 'https://reg.npm/packages/e/easy-1.0.0.tgz')
+ t.deepEqual(auth, {
+ scope: '//reg.npm/',
+ token: 'r-token',
+ username: undefined,
+ password: undefined,
+ email: undefined,
+ auth: undefined,
+ alwaysAuth: false
+ })
+ t.equal(registry, 'https://reg.npm/')
+ }
+ )
+ t.end()
+ })
+
+ t.test("don't pass token to non-registry host", function (t) {
+ mapRegistry(
+ 'https://butts.lol/packages/e/easy-1.0.0.tgz',
+ npm.config,
+ function (er, uri, auth, registry) {
+ t.ifError(er, 'mapRegistryToURI worked')
+ t.equal(uri, 'https://butts.lol/packages/e/easy-1.0.0.tgz')
+ t.deepEqual(auth, {
+ scope: '//reg.npm/',
+ token: undefined,
+ username: undefined,
+ password: undefined,
+ email: undefined,
+ auth: undefined,
+ alwaysAuth: false
+ })
+ t.equal(registry, 'https://reg.npm/')
+ }
+ )
+ t.end()
+ })
+
+ t.test('pass token to non-registry host with always-auth', function (t) {
+ npm.config.set('always-auth', true)
+ mapRegistry(
+ 'https://butts.lol/packages/e/easy-1.0.0.tgz',
+ npm.config,
+ function (er, uri, auth, registry) {
+ t.ifError(er, 'mapRegistryToURI worked')
+ t.equal(uri, 'https://butts.lol/packages/e/easy-1.0.0.tgz')
+ t.deepEqual(auth, {
+ scope: '//reg.npm/',
+ token: 'r-token',
+ username: undefined,
+ password: undefined,
+ email: undefined,
+ auth: undefined,
+ alwaysAuth: true
+ })
+ t.equal(registry, 'https://reg.npm/')
+ }
+ )
+ t.end()
+ })
+
+ t.end()
+})
diff --git a/deps/npm/test/tap/peer-deps-invalid.js b/deps/npm/test/tap/peer-deps-invalid.js
index 453f9617f38e34..3f51dbfc8e349e 100644
--- a/deps/npm/test/tap/peer-deps-invalid.js
+++ b/deps/npm/test/tap/peer-deps-invalid.js
@@ -6,73 +6,66 @@ var mr = require('npm-registry-mock')
var osenv = require('osenv')
var rimraf = require('rimraf')
var test = require('tap').test
+var Tacks = require('tacks')
+var Dir = Tacks.Dir
+var File = Tacks.File
var npm = require('../../')
var common = require('../common-tap')
-var pkg = path.resolve(__dirname, 'peer-deps-invalid')
-var cache = path.resolve(pkg, 'cache')
+var testdir = path.resolve(__dirname, path.basename(__filename, '.js'))
+var cachedir = path.resolve(testdir, 'cache')
-var json = {
- author: 'Domenic Denicola (http://domenicdenicola.com/)',
- name: 'peer-deps-invalid',
- version: '0.0.0',
- dependencies: {
- 'npm-test-peer-deps-file': 'http://localhost:1337/ok.js',
- 'npm-test-peer-deps-file-invalid': 'http://localhost:1337/invalid.js'
- }
-}
-
-var fileFail = function () {
-/**package
-* { "name": "npm-test-peer-deps-file-invalid"
-* , "main": "index.js"
-* , "version": "1.2.3"
-* , "description":"This one should conflict with the other one"
-* , "peerDependencies": { "underscore": "1.3.3" }
-* }
-**/
- module.exports = 'I\'m just a lonely index, naked as the day I was born.'
-}.toString().split('\n').slice(1, -1).join('\n')
-
-var fileOK = function () {
-/**package
-* { "name": "npm-test-peer-deps-file"
-* , "main": "index.js"
-* , "version": "1.2.3"
-* , "description":"No package.json in sight!"
-* , "peerDependencies": { "underscore": "1.3.1" }
-* , "dependencies": { "mkdirp": "0.3.5" }
-* }
-**/
- module.exports = 'I\'m just a lonely index, naked as the day I was born.'
-}.toString().split('\n').slice(1, -1).join('\n')
+var fixtures = new Tacks(Dir({
+ cache: Dir({}),
+ 'package.json': File({
+ author: 'Domenic Denicola (http://domenicdenicola.com/)',
+ name: 'peer-deps-invalid',
+ version: '0.0.0',
+ dependencies: {
+ 'npm-test-peer-deps-file': 'file-ok/',
+ 'npm-test-peer-deps-file-invalid': 'file-fail/'
+ }
+ }),
+ 'file-ok': Dir({
+ 'package.json': File({
+ name: 'npm-test-peer-deps-file',
+ main: 'index.js',
+ version: '1.2.3',
+ description:'This one should conflict with the other one',
+ peerDependencies: { underscore: '1.3.1' },
+ dependencies: { mkdirp: '0.3.5' }
+ }),
+ 'index.js': File(
+ "module.exports = 'I\'m just a lonely index, naked as the day I was born.'"
+ ),
+ }),
+ 'file-fail': Dir({
+ 'package.json': File({
+ name: 'npm-test-peer-deps-file-invalid',
+ main: 'index.js',
+ version: '1.2.3',
+ description:'This one should conflict with the other one',
+ peerDependencies: { underscore: '1.3.3' }
+ }),
+ 'index.js': File(
+ "module.exports = 'I\'m just a lonely index, naked as the day I was born.'"
+ ),
+ }),
+}))
test('setup', function (t) {
cleanup()
- mkdirp.sync(cache)
- fs.writeFileSync(
- path.join(pkg, 'package.json'),
- JSON.stringify(json, null, 2)
- )
- fs.writeFileSync(path.join(pkg, 'file-ok.js'), fileOK)
- fs.writeFileSync(path.join(pkg, 'file-fail.js'), fileFail)
-
- process.chdir(pkg)
+ fixtures.create(testdir)
+ process.chdir(testdir)
t.end()
})
test('installing dependencies that have conflicting peerDependencies', function (t) {
- var customMocks = {
- 'get': {
- '/ok.js': [200, path.join(pkg, 'file-ok.js')],
- '/invalid.js': [200, path.join(pkg, 'file-fail.js')]
- }
- }
- mr({port: common.port, mocks: customMocks}, function (err, s) { // create mock registry.
+ mr({port: common.port}, function (err, s) { // create mock registry.
t.ifError(err, 'mock registry started')
npm.load({
- cache: pkg + "/cache",
+ cache: cachedir,
registry: common.registry
}, function () {
npm.commands.install([], function (err) {
@@ -81,8 +74,8 @@ test('installing dependencies that have conflicting peerDependencies', function
} else {
t.equal(err.code, "EPEERINVALID")
t.equal(err.packageName, "underscore")
- t.equal(err.packageVersion, "1.3.3")
- t.equal(err.message, "The package underscore@1.3.3 does not satisfy its siblings' peerDependencies requirements!")
+ t.match(err.packageVersion, /^1\.3\.[13]$/)
+ t.match(err.message, /^The package underscore@1\.3\.[13] does not satisfy its siblings' peerDependencies requirements!$/)
}
s.close() // shutdown mock registry.
t.end()
@@ -97,6 +90,5 @@ test('cleanup', function (t) {
})
function cleanup () {
- process.chdir(osenv.tmpdir())
- rimraf.sync(pkg)
+ fixtures.remove(testdir)
}
diff --git a/deps/npm/test/tap/run-script.js b/deps/npm/test/tap/run-script.js
index 5d414d8e9249f9..f95f7028b261bc 100644
--- a/deps/npm/test/tap/run-script.js
+++ b/deps/npm/test/tap/run-script.js
@@ -25,8 +25,13 @@ var fullyPopulated = {
'prewith-both': 'node -e "console.log(process.argv[1] || \'pre\')"',
'with-both': 'node -e "console.log(process.argv[1] || \'main\')"',
'postwith-both': 'node -e "console.log(process.argv[1] || \'post\')"',
- 'stop': 'node -e "console.log(process.argv[1] || \'stop\')"'
- }
+ 'stop': 'node -e "console.log(process.argv[1] || \'stop\')"',
+ 'env-vars': 'node -e "console.log(process.env.run_script_foo_var)"',
+ 'npm-env-vars': 'node -e "console.log(process.env.npm_run_script_foo_var)"',
+ 'package-env-vars': 'node -e "console.log(process.env.run_script_foo_var)"',
+ 'prefixed-package-env-vars': 'node -e "console.log(process.env.npm_package_run_script_foo_var)"'
+ },
+ 'run_script_foo_var': 'run_script_test_foo_val'
}
var lifecycleOnly = {
@@ -181,6 +186,64 @@ test('npm run-script nonexistent-script with --if-present flag', function (t) {
})
})
+test('npm run-script env vars accessible', function (t) {
+ process.env.run_script_foo_var = 'run_script_test_foo_val'
+ common.npm(['run-script', 'env-vars'], {
+ cwd: pkg
+ }, function (err, code, stdout, stderr) {
+ t.ifError(err, 'ran run-script without crashing')
+ t.equal(code, 0, 'exited normally')
+ t.equal(stderr, '', 'no error output')
+ t.match(stdout,
+ new RegExp(process.env.run_script_foo_var),
+ 'script had env access')
+ t.end()
+ })
+})
+
+test('npm run-script package.json vars injected', function (t) {
+ common.npm(['run-script', 'package-env-vars'], {
+ cwd: pkg
+ }, function (err, code, stdout, stderr) {
+ t.ifError(err, 'ran run-script without crashing')
+ t.equal(code, 0, 'exited normally')
+ t.equal(stderr, '', 'no error output')
+ t.match(stdout,
+ new RegExp(fullyPopulated.run_script_foo_var),
+ 'script injected package.json value')
+ t.end()
+ })
+})
+
+test('npm run-script package.json vars injected with prefix', function (t) {
+ common.npm(['run-script', 'prefixed-package-env-vars'], {
+ cwd: pkg
+ }, function (err, code, stdout, stderr) {
+ t.ifError(err, 'ran run-script without crashing')
+ t.equal(code, 0, 'exited normally')
+ t.equal(stderr, '', 'no error output')
+ t.match(stdout,
+ new RegExp(fullyPopulated.run_script_foo_var),
+ 'script injected npm_package-prefixed package.json value')
+ t.end()
+ })
+})
+
+test('npm run-script env vars stripped npm-prefixed', function (t) {
+ process.env.npm_run_script_foo_var = 'run_script_test_foo_val'
+ common.npm(['run-script', 'npm-env-vars'], {
+ cwd: pkg
+ }, function (err, code, stdout, stderr) {
+ t.ifError(err, 'ran run-script without crashing')
+ t.equal(code, 0, 'exited normally')
+ t.equal(stderr, '', 'no error output')
+ t.notMatch(stdout,
+ new RegExp(process.env.npm_run_script_foo_var),
+ 'script stripped npm-prefixed env var')
+ t.end()
+ })
+})
+
test('npm run-script no-params (lifecycle only)', function (t) {
var expected = [
'Lifecycle scripts included in scripted:',