From 63fbd10b6cdea195bfbc55221d8fe279757d56cc Mon Sep 17 00:00:00 2001
From: Forrest L Norvell
Data published to the npm registry is not part of npm itself, and is the sole property of the publisher. While every effort is made to -ensure accountability, there is absolutely no guarantee, warrantee, or +ensure accountability, there is absolutely no guarantee, warranty, or assertion expressed or implied as to the quality, fitness for a specific purpose, or lack of malice in any given npm package.
If you have a complaint about a package in the public npm registry, and cannot resolve it with the package owner, please email -support@npmjs.com and explain the situation.
+support@npmjs.com and explain the situation.Any data published to The npm Registry (including user account information) may be removed or modified at the sole discretion of the npm server administrators.
@@ -169,5 +169,5 @@ will no doubt tell you to put the output in a gist or email.npm.bin
property.
man 3 npm-<command>
for programmatic usage.
npm rebuild <pkg>
if you make any changes.
packages
parameter.
packages
parameter.
2.5.1
+2.6.1
This is the API documentation for npm.
To find documentation of the command line
@@ -109,5 +109,5 @@ method names. Use the npm.deref
method to find the real name.
package.json
in the current folder and use the name
package.json
file in its root.
ls: Show all of the dist-tags for a package, defaulting to the package in -the curren prefix.
+the current prefix.A tag can be used when installing packages as a reference to a version instead
@@ -76,5 +76,5 @@ begin with a number or the letter v
.
name
property.
"notepad"
on Windows.
Now, any changes to ~/projects/node-redis will be reflected in -~/projects/node-bloggy/node_modules/redis/
+~/projects/node-bloggy/node_modules/node-redis/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
npm link ../node-redis # link the dir of your dependency
The second line is the equivalent of doing:
(cd ../node-redis; npm link)
-npm link redis
+npm link node-redis
That is, it first creates a global link, and then links the global
installation target into your project's node_modules
folder.
If your linked package is scoped (see npm-scope(7)
) your link command must
@@ -71,5 +71,5 @@ include that scope, e.g.
Log out of the registry
+npm logout [--registry=url] [--scope=@orgname]
+
When logged into a registry that supports token-based authentication, tell the +server to end this token's session. This will invalidate the token everywhere +you're using it, not just for the current environment.
+When logged into a legacy registry that uses username and password authentication, this will +clear the credentials in your user configuration. In this case, it will only affect +the current environment.
+If --scope
is provided, this will find the credentials for the registry
+connected to that scope, if set.
Default: http://registry.npmjs.org/
+The base URL of the npm package registry. If scope
is also specified,
+it takes precedence.
Default: none
+If specified, the user and login credentials given will be associated
+with the specified scope. See npm-scope(7)
. You can use both at the same time,
+e.g.
npm adduser --registry=http://myregistry.example.com --scope=@myco
+
This will set a registry for the given scope and login or create a user for +that registry at the same time.
+npm ls promzard
in npm's source tree will show:
-npm@2.5.1 /path/to/npm
+npm@2.6.1 /path/to/npm
└─┬ init-package-json@0.0.4
└── promzard@0.1.5
It will print out extraneous, missing, and invalid packages.
@@ -85,5 +85,5 @@ project.
-
+
diff --git a/deps/npm/html/doc/cli/npm-outdated.html b/deps/npm/html/doc/cli/npm-outdated.html
index 1b1414d710..d8418a45d5 100644
--- a/deps/npm/html/doc/cli/npm-outdated.html
+++ b/deps/npm/html/doc/cli/npm-outdated.html
@@ -67,5 +67,5 @@ project.
-
+
diff --git a/deps/npm/html/doc/cli/npm-owner.html b/deps/npm/html/doc/cli/npm-owner.html
index 9d6e4541cc..58cc89584d 100644
--- a/deps/npm/html/doc/cli/npm-owner.html
+++ b/deps/npm/html/doc/cli/npm-owner.html
@@ -49,5 +49,5 @@ that is not implemented at this time.
-
+
diff --git a/deps/npm/html/doc/cli/npm-pack.html b/deps/npm/html/doc/cli/npm-pack.html
index cf7fcaed9f..e61d433081 100644
--- a/deps/npm/html/doc/cli/npm-pack.html
+++ b/deps/npm/html/doc/cli/npm-pack.html
@@ -41,5 +41,5 @@ overwritten the second time.
-
+
diff --git a/deps/npm/html/doc/cli/npm-prefix.html b/deps/npm/html/doc/cli/npm-prefix.html
index 98f44e133d..23f77c039c 100644
--- a/deps/npm/html/doc/cli/npm-prefix.html
+++ b/deps/npm/html/doc/cli/npm-prefix.html
@@ -38,5 +38,5 @@ to contain a package.json file unless -g
is also specified.
-
+
diff --git a/deps/npm/html/doc/cli/npm-prune.html b/deps/npm/html/doc/cli/npm-prune.html
index 247a291d78..579f0b3149 100644
--- a/deps/npm/html/doc/cli/npm-prune.html
+++ b/deps/npm/html/doc/cli/npm-prune.html
@@ -39,5 +39,5 @@ packages specified in your devDependencies
.
-
+
diff --git a/deps/npm/html/doc/cli/npm-publish.html b/deps/npm/html/doc/cli/npm-publish.html
index 23559cacd6..6e48c16093 100644
--- a/deps/npm/html/doc/cli/npm-publish.html
+++ b/deps/npm/html/doc/cli/npm-publish.html
@@ -66,5 +66,5 @@ it is removed with
-
+
diff --git a/deps/npm/html/doc/cli/npm-rebuild.html b/deps/npm/html/doc/cli/npm-rebuild.html
index bcf73eca7e..5d303f40f5 100644
--- a/deps/npm/html/doc/cli/npm-rebuild.html
+++ b/deps/npm/html/doc/cli/npm-rebuild.html
@@ -38,5 +38,5 @@ the new binary.
-
+
diff --git a/deps/npm/html/doc/cli/npm-repo.html b/deps/npm/html/doc/cli/npm-repo.html
index 5eb88eae94..14affbe4d6 100644
--- a/deps/npm/html/doc/cli/npm-repo.html
+++ b/deps/npm/html/doc/cli/npm-repo.html
@@ -42,5 +42,5 @@ a package.json
in the current folder and use the name
-
+
diff --git a/deps/npm/html/doc/cli/npm-restart.html b/deps/npm/html/doc/cli/npm-restart.html
index 67b397552b..f94762e8d2 100644
--- a/deps/npm/html/doc/cli/npm-restart.html
+++ b/deps/npm/html/doc/cli/npm-restart.html
@@ -53,5 +53,5 @@ behavior will be accompanied by an increase in major version number
-
+
diff --git a/deps/npm/html/doc/cli/npm-rm.html b/deps/npm/html/doc/cli/npm-rm.html
index c832eee203..ed20e046d4 100644
--- a/deps/npm/html/doc/cli/npm-rm.html
+++ b/deps/npm/html/doc/cli/npm-rm.html
@@ -39,5 +39,5 @@ on its behalf.
-
+
diff --git a/deps/npm/html/doc/cli/npm-root.html b/deps/npm/html/doc/cli/npm-root.html
index c9df7b98fd..327bc76d13 100644
--- a/deps/npm/html/doc/cli/npm-root.html
+++ b/deps/npm/html/doc/cli/npm-root.html
@@ -35,5 +35,5 @@
-
+
diff --git a/deps/npm/html/doc/cli/npm-run-script.html b/deps/npm/html/doc/cli/npm-run-script.html
index 716ad484a4..ae7cced851 100644
--- a/deps/npm/html/doc/cli/npm-run-script.html
+++ b/deps/npm/html/doc/cli/npm-run-script.html
@@ -50,5 +50,5 @@ and not to any pre or post script.
-
+
diff --git a/deps/npm/html/doc/cli/npm-search.html b/deps/npm/html/doc/cli/npm-search.html
index 88ad801bc6..d158f06b23 100644
--- a/deps/npm/html/doc/cli/npm-search.html
+++ b/deps/npm/html/doc/cli/npm-search.html
@@ -49,5 +49,5 @@ fall on multiple lines.
-
+
diff --git a/deps/npm/html/doc/cli/npm-shrinkwrap.html b/deps/npm/html/doc/cli/npm-shrinkwrap.html
index 21c104f59b..6930d098ca 100644
--- a/deps/npm/html/doc/cli/npm-shrinkwrap.html
+++ b/deps/npm/html/doc/cli/npm-shrinkwrap.html
@@ -164,5 +164,5 @@ contents rather than versions.
-
+
diff --git a/deps/npm/html/doc/cli/npm-star.html b/deps/npm/html/doc/cli/npm-star.html
index 58c2c240c1..d56f711f1d 100644
--- a/deps/npm/html/doc/cli/npm-star.html
+++ b/deps/npm/html/doc/cli/npm-star.html
@@ -36,5 +36,5 @@ a vaguely positive way to show that you care.
-
+
diff --git a/deps/npm/html/doc/cli/npm-stars.html b/deps/npm/html/doc/cli/npm-stars.html
index 0ffb3f4d5e..ce95dac976 100644
--- a/deps/npm/html/doc/cli/npm-stars.html
+++ b/deps/npm/html/doc/cli/npm-stars.html
@@ -37,5 +37,5 @@ you will most certainly enjoy this command.
-
+
diff --git a/deps/npm/html/doc/cli/npm-start.html b/deps/npm/html/doc/cli/npm-start.html
index 330378cd81..f4b720077d 100644
--- a/deps/npm/html/doc/cli/npm-start.html
+++ b/deps/npm/html/doc/cli/npm-start.html
@@ -34,5 +34,5 @@
-
+
diff --git a/deps/npm/html/doc/cli/npm-stop.html b/deps/npm/html/doc/cli/npm-stop.html
index ee69ec0304..8c41f7c18a 100644
--- a/deps/npm/html/doc/cli/npm-stop.html
+++ b/deps/npm/html/doc/cli/npm-stop.html
@@ -34,5 +34,5 @@
-
+
diff --git a/deps/npm/html/doc/cli/npm-tag.html b/deps/npm/html/doc/cli/npm-tag.html
index d66caeebd3..c26dacd418 100644
--- a/deps/npm/html/doc/cli/npm-tag.html
+++ b/deps/npm/html/doc/cli/npm-tag.html
@@ -62,5 +62,5 @@ that do not begin with a number or the letter v
.
-
+
diff --git a/deps/npm/html/doc/cli/npm-test.html b/deps/npm/html/doc/cli/npm-test.html
index 401a51304e..3e8f43ffce 100644
--- a/deps/npm/html/doc/cli/npm-test.html
+++ b/deps/npm/html/doc/cli/npm-test.html
@@ -37,5 +37,5 @@ true.
-
+
diff --git a/deps/npm/html/doc/cli/npm-uninstall.html b/deps/npm/html/doc/cli/npm-uninstall.html
index ef33583b31..29ba5fecc4 100644
--- a/deps/npm/html/doc/cli/npm-uninstall.html
+++ b/deps/npm/html/doc/cli/npm-uninstall.html
@@ -57,5 +57,5 @@ npm uninstall dtrace-provider --save-optional
-
+
diff --git a/deps/npm/html/doc/cli/npm-unpublish.html b/deps/npm/html/doc/cli/npm-unpublish.html
index f31a4f03b8..baf7c0562e 100644
--- a/deps/npm/html/doc/cli/npm-unpublish.html
+++ b/deps/npm/html/doc/cli/npm-unpublish.html
@@ -47,5 +47,5 @@ package again, a new version number must be used.
-
+
diff --git a/deps/npm/html/doc/cli/npm-update.html b/deps/npm/html/doc/cli/npm-update.html
index 441c0b1a89..9912bcacc6 100644
--- a/deps/npm/html/doc/cli/npm-update.html
+++ b/deps/npm/html/doc/cli/npm-update.html
@@ -42,5 +42,5 @@ or local) will be updated.
-
+
diff --git a/deps/npm/html/doc/cli/npm-version.html b/deps/npm/html/doc/cli/npm-version.html
index bb0fe413ad..9a512cab18 100644
--- a/deps/npm/html/doc/cli/npm-version.html
+++ b/deps/npm/html/doc/cli/npm-version.html
@@ -55,5 +55,5 @@ Enter passphrase:
-
+
diff --git a/deps/npm/html/doc/cli/npm-view.html b/deps/npm/html/doc/cli/npm-view.html
index 3fa8beb789..e7c5d8bf1c 100644
--- a/deps/npm/html/doc/cli/npm-view.html
+++ b/deps/npm/html/doc/cli/npm-view.html
@@ -82,5 +82,5 @@ the field name.
-
+
diff --git a/deps/npm/html/doc/cli/npm-whoami.html b/deps/npm/html/doc/cli/npm-whoami.html
index eb8274f960..fd484f142f 100644
--- a/deps/npm/html/doc/cli/npm-whoami.html
+++ b/deps/npm/html/doc/cli/npm-whoami.html
@@ -33,5 +33,5 @@
-
+
diff --git a/deps/npm/html/doc/cli/npm.html b/deps/npm/html/doc/cli/npm.html
index 8651e98937..c3408419b2 100644
--- a/deps/npm/html/doc/cli/npm.html
+++ b/deps/npm/html/doc/cli/npm.html
@@ -13,7 +13,7 @@
SYNOPSIS
npm <command> [args]
VERSION
-2.5.1
+2.6.1
DESCRIPTION
npm is the package manager for the Node JavaScript platform. It puts
modules in place so that node can find them, and manages dependency
@@ -110,7 +110,7 @@ easily by doing npm view npm contributors
.
the issues list or ask on the mailing list.
BUGS
When you find issues, please report them:
@@ -118,7 +118,7 @@ the issues list or ask on the mailing list.
web:
http://github.com/npm/npm/issues
email:
-npm-@googlegroups.com
+npm-@googlegroups.com
Be sure to include all of the output from the npm command that didn't work
as expected. The npm-debug.log
file is also helpful to provide.
@@ -128,7 +128,7 @@ will no doubt tell you to put the output in a gist or email.
Isaac Z. Schlueter ::
isaacs ::
@izs ::
-i@izs.me
+i@izs.me
SEE ALSO
- npm-help(1)
@@ -154,5 +154,5 @@ will no doubt tell you to put the output in a gist or email.
-
+
diff --git a/deps/npm/html/doc/files/npm-folders.html b/deps/npm/html/doc/files/npm-folders.html
index a8e58e4185..a418865895 100644
--- a/deps/npm/html/doc/files/npm-folders.html
+++ b/deps/npm/html/doc/files/npm-folders.html
@@ -184,5 +184,5 @@ cannot be found elsewhere. See
-
+
diff --git a/deps/npm/html/doc/files/npm-global.html b/deps/npm/html/doc/files/npm-global.html
index 202d7f4974..3debb67b56 100644
--- a/deps/npm/html/doc/files/npm-global.html
+++ b/deps/npm/html/doc/files/npm-global.html
@@ -184,5 +184,5 @@ cannot be found elsewhere. See
-
+
diff --git a/deps/npm/html/doc/files/npm-json.html b/deps/npm/html/doc/files/npm-json.html
index b915f8482e..e1015ec656 100644
--- a/deps/npm/html/doc/files/npm-json.html
+++ b/deps/npm/html/doc/files/npm-json.html
@@ -63,7 +63,7 @@ been published somewhere else, and spit at you.
issues should be reported. These are helpful for people who encounter issues
with your package.
It should look like this:
-{ "url" : "http://github.com/owner/project/issues"
+{ "url" : "https://github.com/owner/project/issues"
, "email" : "project@hostname.com"
}
You can specify either one or both values. If you want to provide only a url,
@@ -161,7 +161,7 @@ compressed. The number dictates which man section the file is installed into.
directories
The CommonJS Packages spec details a
few ways that you can indicate the structure of your package using a directories
-object. If you look at npm's package.json,
+object. If you look at npm's package.json,
you'll see that it has directories for doc, lib, and man.
In the future, this information may be used in other creative ways.
directories.lib
@@ -186,17 +186,20 @@ command will be able to find you.
Do it like this:
"repository" :
{ "type" : "git"
- , "url" : "http://github.com/npm/npm.git"
+ , "url" : "https://github.com/npm/npm.git"
}
"repository" :
{ "type" : "svn"
- , "url" : "http://v8.googlecode.com/svn/trunk/"
+ , "url" : "https://v8.googlecode.com/svn/trunk/"
}
The URL should be a publicly available (perhaps read-only) url that can be handed
directly to a VCS program without any modification. It should not be a url to an
html project page that you put in your browser. It's for computers.
-scripts
+For GitHub repositories you can use the same shortcut syntax you use for npm
+install
:
+"repository": "npm/npm"
+
scripts
The "scripts" property is a dictionary containing script commands that are run
at various times in the lifecycle of your package. The key is the lifecycle
event, and the value is the command to run at that point.
@@ -342,12 +345,17 @@ a specific interface, expected and specified by the host documentation.
}
}
This ensures your package tea-latte
can be installed along with the second
-major version of the host package tea
only. The host package is automatically
-installed if needed. npm install tea-latte
could possibly yield the following
-dependency graph:
+major version of the host package tea
only. npm install tea-latte
could
+possibly yield the following dependency graph:
├── tea-latte@1.3.5
└── tea@2.2.0
-
Trying to install another plugin with a conflicting requirement will cause an
+
NOTE: npm versions 1 and 2 will automatically install peerDependencies
if
+they are not explicitly depended upon higher in the dependency tree. In the
+next major version of npm (npm@3), this will no longer be the case. You will
+receive a warning that the peerDependency is not installed instead. The
+behavior in npms 1 & 2 was frequently confusing and could easily put you into
+dependency hell, a situation that npm is designed to avoid as much as possible.
Trying to install another plugin with a conflicting requirement will cause an error. For this reason, make sure your plugin requirement is as broad as possible, and not to lock it down to specific patch versions.
Assuming the host complies with semver, only changes in @@ -396,6 +404,7 @@ are capable of properly installing your program. For example:
Note that, unless the user has set the engine-strict
config flag, this
field is advisory only.
NOTE: This feature is deprecated and will be removed in npm 3.0.0.
If you are sure that your module will definitely not run properly on
versions of Node/npm other than those specified in the engines
object,
then you can set "engineStrict": true
in your package.json file.
@@ -403,8 +412,7 @@ This will override the user's engine-strict
config setting.
Please do not do this unless you are really very very sure. If your engines object is something overly restrictive, you can quite easily and inadvertently lock yourself into obscurity and prevent your users from -updating to new versions of Node. Consider this choice carefully. If -people abuse it, it will be removed in a future version of npm.
+updating to new versions of Node. Consider this choice carefully.You can specify which operating systems your module will run on:
@@ -488,5 +496,5 @@ ignored.It should look like this:
-{ "url" : "http://github.com/owner/project/issues"
+{ "url" : "https://github.com/owner/project/issues"
, "email" : "project@hostname.com"
}
You can specify either one or both values. If you want to provide only a url,
@@ -161,7 +161,7 @@ compressed. The number dictates which man section the file is installed into.
directories
The CommonJS Packages spec details a
few ways that you can indicate the structure of your package using a directories
-object. If you look at npm's package.json,
+object. If you look at npm's package.json,
you'll see that it has directories for doc, lib, and man.
In the future, this information may be used in other creative ways.
directories.lib
@@ -186,17 +186,20 @@ command will be able to find you.
Do it like this:
"repository" :
{ "type" : "git"
- , "url" : "http://github.com/npm/npm.git"
+ , "url" : "https://github.com/npm/npm.git"
}
"repository" :
{ "type" : "svn"
- , "url" : "http://v8.googlecode.com/svn/trunk/"
+ , "url" : "https://v8.googlecode.com/svn/trunk/"
}
The URL should be a publicly available (perhaps read-only) url that can be handed
directly to a VCS program without any modification. It should not be a url to an
html project page that you put in your browser. It's for computers.
-scripts
+For GitHub repositories you can use the same shortcut syntax you use for npm
+install
:
+"repository": "npm/npm"
+
scripts
The "scripts" property is a dictionary containing script commands that are run
at various times in the lifecycle of your package. The key is the lifecycle
event, and the value is the command to run at that point.
@@ -342,12 +345,17 @@ a specific interface, expected and specified by the host documentation.
}
}
This ensures your package tea-latte
can be installed along with the second
-major version of the host package tea
only. The host package is automatically
-installed if needed. npm install tea-latte
could possibly yield the following
-dependency graph:
tea
only. npm install tea-latte
could
+possibly yield the following dependency graph:
├── tea-latte@1.3.5
└── tea@2.2.0
-
Trying to install another plugin with a conflicting requirement will cause an +
NOTE: npm versions 1 and 2 will automatically install peerDependencies
if
+they are not explicitly depended upon higher in the dependency tree. In the
+next major version of npm (npm@3), this will no longer be the case. You will
+receive a warning that the peerDependency is not installed instead. The
+behavior in npms 1 & 2 was frequently confusing and could easily put you into
+dependency hell, a situation that npm is designed to avoid as much as possible.
Trying to install another plugin with a conflicting requirement will cause an error. For this reason, make sure your plugin requirement is as broad as possible, and not to lock it down to specific patch versions.
Assuming the host complies with semver, only changes in @@ -396,6 +404,7 @@ are capable of properly installing your program. For example:
Note that, unless the user has set the engine-strict
config flag, this
field is advisory only.
NOTE: This feature is deprecated and will be removed in npm 3.0.0.
If you are sure that your module will definitely not run properly on
versions of Node/npm other than those specified in the engines
object,
then you can set "engineStrict": true
in your package.json file.
@@ -403,8 +412,7 @@ This will override the user's engine-strict
config setting.
Please do not do this unless you are really very very sure. If your engines object is something overly restrictive, you can quite easily and inadvertently lock yourself into obscurity and prevent your users from -updating to new versions of Node. Consider this choice carefully. If -people abuse it, it will be removed in a future version of npm.
+updating to new versions of Node. Consider this choice carefully.You can specify which operating systems your module will run on:
@@ -488,5 +496,5 @@ ignored.Install a package
Symlink a package folder
+Log out of the registry
List installed packages
The depth to go when recursing directories for npm ls
and
-npm cache ls
.
The depth to go when recursing directories for npm ls
,
+npm cache ls
, and npm outdated
.
For npm outdated
, a setting of Infinity
will be treated as 0
+since that gives more useful information. To show the outdated status
+of all packages and dependents, use a large integer value,
+e.g., npm outdated --depth 9999
npm owner ls <pkgname>
Don't squat on package names. Publish code or move out of the way.
@@ -51,12 +51,12 @@ Joe's appropriate course of action in each case is the same. owner (Bob).npm owner add
joe foo
to add Joe as an owner of the foo
package.To check if the registry is down, open up https://registry.npmjs.org/ in a web browser. This will also tell you if you are just unable to access the internet for some reason.
-If the registry IS down, let us know by emailing support@npmjs.com +
If the registry IS down, let us know by emailing support@npmjs.com or posting an issue at https://github.com/npm/npm/issues. If it's down for the world (and not just on your local network) then we're probably already being pinged about it.
@@ -307,5 +307,5 @@ good folks at npm, Inc.Install a package
Symlink a package folder
+Log out of the registry
List installed packages
The method .inc
takes an additional identifier
string argument that
will append the value of the string as a prerelease identifier:
> semver.inc('1.2.3', 'pre', 'beta')
+> semver.inc('1.2.3', 'pre', 'beta')
'1.2.4-beta.0'
command-line example:
@@ -219,6 +219,9 @@ prerelease. If the input version is already a prerelease it simply
increments it.
+major(v)
: Return the major version number.
+minor(v)
: Return the minor version number.
+patch(v)
: Return the patch version number.
Comparison
@@ -279,5 +282,5 @@ range, use the satisfies(version, range)
function.
-
+
diff --git a/deps/npm/html/partial/doc/README.html b/deps/npm/html/partial/doc/README.html
index 9dedc3b11b..a356aaf7ee 100644
--- a/deps/npm/html/partial/doc/README.html
+++ b/deps/npm/html/partial/doc/README.html
@@ -109,13 +109,13 @@ All rights reserved. See the included LICENSE file for more details.
npm, Inc. or the Node.js project.
Data published to the npm registry is not part of npm itself, and is
the sole property of the publisher. While every effort is made to
-ensure accountability, there is absolutely no guarantee, warrantee, or
+ensure accountability, there is absolutely no guarantee, warranty, or
assertion expressed or implied as to the quality, fitness for a
specific purpose, or lack of malice in any given npm package.
If you have a complaint about a package in the public npm registry,
and cannot resolve it with the package
owner, please email
-support@npmjs.com and explain the situation.
+support@npmjs.com and explain the situation.
Any data published to The npm Registry (including user account
information) may be removed or modified at the sole discretion of the
npm server administrators.
diff --git a/deps/npm/html/partial/doc/api/npm.html b/deps/npm/html/partial/doc/api/npm.html
index 207f251030..44c3340c68 100644
--- a/deps/npm/html/partial/doc/api/npm.html
+++ b/deps/npm/html/partial/doc/api/npm.html
@@ -12,7 +12,7 @@ npm.load([configObject, ]function (er, npm) {
npm.commands.install(["package"], cb)
})
2.5.1
+2.6.1
This is the API documentation for npm. To find documentation of the command line diff --git a/deps/npm/html/partial/doc/cli/npm-dist-tag.html b/deps/npm/html/partial/doc/cli/npm-dist-tag.html index 86a3d21a29..8abcf222ab 100644 --- a/deps/npm/html/partial/doc/cli/npm-dist-tag.html +++ b/deps/npm/html/partial/doc/cli/npm-dist-tag.html @@ -15,7 +15,7 @@ Clear a tag that is no longer in use from the package.
ls: Show all of the dist-tags for a package, defaulting to the package in -the curren prefix.
+the current prefix.A tag can be used when installing packages as a reference to a version instead diff --git a/deps/npm/html/partial/doc/cli/npm-link.html b/deps/npm/html/partial/doc/cli/npm-link.html index c4b01c2a65..1a33cf2c3e 100644 --- a/deps/npm/html/partial/doc/cli/npm-link.html +++ b/deps/npm/html/partial/doc/cli/npm-link.html @@ -24,14 +24,14 @@ npm link # creates global link cd ~/projects/node-bloggy # go into some other package directory. npm link redis # link-install the package
Now, any changes to ~/projects/node-redis will be reflected in -~/projects/node-bloggy/node_modules/redis/
+~/projects/node-bloggy/node_modules/node-redis/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
npm link ../node-redis # link the dir of your dependency
The second line is the equivalent of doing:
(cd ../node-redis; npm link)
-npm link redis
+npm link node-redis
That is, it first creates a global link, and then links the global
installation target into your project's node_modules
folder.
If your linked package is scoped (see npm-scope(7)
) your link command must
diff --git a/deps/npm/html/partial/doc/cli/npm-logout.html b/deps/npm/html/partial/doc/cli/npm-logout.html
new file mode 100644
index 0000000000..63c28a3d7c
--- /dev/null
+++ b/deps/npm/html/partial/doc/cli/npm-logout.html
@@ -0,0 +1,35 @@
+
Log out of the registry
+npm logout [--registry=url] [--scope=@orgname]
+
When logged into a registry that supports token-based authentication, tell the +server to end this token's session. This will invalidate the token everywhere +you're using it, not just for the current environment.
+When logged into a legacy registry that uses username and password authentication, this will +clear the credentials in your user configuration. In this case, it will only affect +the current environment.
+If --scope
is provided, this will find the credentials for the registry
+connected to that scope, if set.
Default: http://registry.npmjs.org/
+The base URL of the npm package registry. If scope
is also specified,
+it takes precedence.
Default: none
+If specified, the user and login credentials given will be associated
+with the specified scope. See npm-scope(7)
. You can use both at the same time,
+e.g.
npm adduser --registry=http://myregistry.example.com --scope=@myco
+
This will set a registry for the given scope and login or create a user for +that registry at the same time.
+npm ls promzard
in npm's source tree will show:
-npm@2.5.1 /path/to/npm
+npm@2.6.1 /path/to/npm
└─┬ init-package-json@0.0.4
└── promzard@0.1.5
It will print out extraneous, missing, and invalid packages.
diff --git a/deps/npm/html/partial/doc/cli/npm.html b/deps/npm/html/partial/doc/cli/npm.html
index e8178c2462..224c7e0ab5 100644
--- a/deps/npm/html/partial/doc/cli/npm.html
+++ b/deps/npm/html/partial/doc/cli/npm.html
@@ -2,7 +2,7 @@
SYNOPSIS
npm <command> [args]
VERSION
-2.5.1
+2.6.1
DESCRIPTION
npm is the package manager for the Node JavaScript platform. It puts
modules in place so that node can find them, and manages dependency
@@ -99,7 +99,7 @@ easily by doing npm view npm contributors
.
the issues list or ask on the mailing list.
BUGS
When you find issues, please report them:
@@ -107,7 +107,7 @@ the issues list or ask on the mailing list.
web:
http://github.com/npm/npm/issues
email:
-npm-@googlegroups.com
+npm-@googlegroups.com
Be sure to include all of the output from the npm command that didn't work
as expected. The npm-debug.log
file is also helpful to provide.
@@ -117,7 +117,7 @@ will no doubt tell you to put the output in a gist or email.
Isaac Z. Schlueter ::
isaacs ::
@izs ::
-i@izs.me
+i@izs.me
SEE ALSO
- npm-help(1)
diff --git a/deps/npm/html/partial/doc/files/npm-json.html b/deps/npm/html/partial/doc/files/npm-json.html
index cc2b12a5ea..401d27aec8 100644
--- a/deps/npm/html/partial/doc/files/npm-json.html
+++ b/deps/npm/html/partial/doc/files/npm-json.html
@@ -52,7 +52,7 @@ been published somewhere else, and spit at you.
issues should be reported. These are helpful for people who encounter issues
with your package.
It should look like this:
-
{ "url" : "http://github.com/owner/project/issues"
+{ "url" : "https://github.com/owner/project/issues"
, "email" : "project@hostname.com"
}
You can specify either one or both values. If you want to provide only a url,
@@ -150,7 +150,7 @@ compressed. The number dictates which man section the file is installed into.
directories
The CommonJS Packages spec details a
few ways that you can indicate the structure of your package using a directories
-object. If you look at npm's package.json,
+object. If you look at npm's package.json,
you'll see that it has directories for doc, lib, and man.
In the future, this information may be used in other creative ways.
directories.lib
@@ -175,17 +175,20 @@ command will be able to find you.
Do it like this:
"repository" :
{ "type" : "git"
- , "url" : "http://github.com/npm/npm.git"
+ , "url" : "https://github.com/npm/npm.git"
}
"repository" :
{ "type" : "svn"
- , "url" : "http://v8.googlecode.com/svn/trunk/"
+ , "url" : "https://v8.googlecode.com/svn/trunk/"
}
The URL should be a publicly available (perhaps read-only) url that can be handed
directly to a VCS program without any modification. It should not be a url to an
html project page that you put in your browser. It's for computers.
-scripts
+For GitHub repositories you can use the same shortcut syntax you use for npm
+install
:
+"repository": "npm/npm"
+
scripts
The "scripts" property is a dictionary containing script commands that are run
at various times in the lifecycle of your package. The key is the lifecycle
event, and the value is the command to run at that point.
@@ -331,12 +334,17 @@ a specific interface, expected and specified by the host documentation.
}
}
This ensures your package tea-latte
can be installed along with the second
-major version of the host package tea
only. The host package is automatically
-installed if needed. npm install tea-latte
could possibly yield the following
-dependency graph:
+major version of the host package tea
only. npm install tea-latte
could
+possibly yield the following dependency graph:
├── tea-latte@1.3.5
└── tea@2.2.0
-
Trying to install another plugin with a conflicting requirement will cause an
+
NOTE: npm versions 1 and 2 will automatically install peerDependencies
if
+they are not explicitly depended upon higher in the dependency tree. In the
+next major version of npm (npm@3), this will no longer be the case. You will
+receive a warning that the peerDependency is not installed instead. The
+behavior in npms 1 & 2 was frequently confusing and could easily put you into
+dependency hell, a situation that npm is designed to avoid as much as possible.
Trying to install another plugin with a conflicting requirement will cause an error. For this reason, make sure your plugin requirement is as broad as possible, and not to lock it down to specific patch versions.
Assuming the host complies with semver, only changes in @@ -385,6 +393,7 @@ are capable of properly installing your program. For example:
Note that, unless the user has set the engine-strict
config flag, this
field is advisory only.
NOTE: This feature is deprecated and will be removed in npm 3.0.0.
If you are sure that your module will definitely not run properly on
versions of Node/npm other than those specified in the engines
object,
then you can set "engineStrict": true
in your package.json file.
@@ -392,8 +401,7 @@ This will override the user's engine-strict
config setting.
Please do not do this unless you are really very very sure. If your engines object is something overly restrictive, you can quite easily and inadvertently lock yourself into obscurity and prevent your users from -updating to new versions of Node. Consider this choice carefully. If -people abuse it, it will be removed in a future version of npm.
+updating to new versions of Node. Consider this choice carefully.You can specify which operating systems your module will run on:
diff --git a/deps/npm/html/partial/doc/files/package.json.html b/deps/npm/html/partial/doc/files/package.json.html index cc2b12a5ea..401d27aec8 100644 --- a/deps/npm/html/partial/doc/files/package.json.html +++ b/deps/npm/html/partial/doc/files/package.json.html @@ -52,7 +52,7 @@ been published somewhere else, and spit at you. issues should be reported. These are helpful for people who encounter issues with your package.It should look like this:
-{ "url" : "http://github.com/owner/project/issues"
+{ "url" : "https://github.com/owner/project/issues"
, "email" : "project@hostname.com"
}
You can specify either one or both values. If you want to provide only a url,
@@ -150,7 +150,7 @@ compressed. The number dictates which man section the file is installed into.
directories
The CommonJS Packages spec details a
few ways that you can indicate the structure of your package using a directories
-object. If you look at npm's package.json,
+object. If you look at npm's package.json,
you'll see that it has directories for doc, lib, and man.
In the future, this information may be used in other creative ways.
directories.lib
@@ -175,17 +175,20 @@ command will be able to find you.
Do it like this:
"repository" :
{ "type" : "git"
- , "url" : "http://github.com/npm/npm.git"
+ , "url" : "https://github.com/npm/npm.git"
}
"repository" :
{ "type" : "svn"
- , "url" : "http://v8.googlecode.com/svn/trunk/"
+ , "url" : "https://v8.googlecode.com/svn/trunk/"
}
The URL should be a publicly available (perhaps read-only) url that can be handed
directly to a VCS program without any modification. It should not be a url to an
html project page that you put in your browser. It's for computers.
-scripts
+For GitHub repositories you can use the same shortcut syntax you use for npm
+install
:
+"repository": "npm/npm"
+
scripts
The "scripts" property is a dictionary containing script commands that are run
at various times in the lifecycle of your package. The key is the lifecycle
event, and the value is the command to run at that point.
@@ -331,12 +334,17 @@ a specific interface, expected and specified by the host documentation.
}
}
This ensures your package tea-latte
can be installed along with the second
-major version of the host package tea
only. The host package is automatically
-installed if needed. npm install tea-latte
could possibly yield the following
-dependency graph:
tea
only. npm install tea-latte
could
+possibly yield the following dependency graph:
├── tea-latte@1.3.5
└── tea@2.2.0
-
Trying to install another plugin with a conflicting requirement will cause an +
NOTE: npm versions 1 and 2 will automatically install peerDependencies
if
+they are not explicitly depended upon higher in the dependency tree. In the
+next major version of npm (npm@3), this will no longer be the case. You will
+receive a warning that the peerDependency is not installed instead. The
+behavior in npms 1 & 2 was frequently confusing and could easily put you into
+dependency hell, a situation that npm is designed to avoid as much as possible.
Trying to install another plugin with a conflicting requirement will cause an error. For this reason, make sure your plugin requirement is as broad as possible, and not to lock it down to specific patch versions.
Assuming the host complies with semver, only changes in @@ -385,6 +393,7 @@ are capable of properly installing your program. For example:
Note that, unless the user has set the engine-strict
config flag, this
field is advisory only.
NOTE: This feature is deprecated and will be removed in npm 3.0.0.
If you are sure that your module will definitely not run properly on
versions of Node/npm other than those specified in the engines
object,
then you can set "engineStrict": true
in your package.json file.
@@ -392,8 +401,7 @@ This will override the user's engine-strict
config setting.
Please do not do this unless you are really very very sure. If your engines object is something overly restrictive, you can quite easily and inadvertently lock yourself into obscurity and prevent your users from -updating to new versions of Node. Consider this choice carefully. If -people abuse it, it will be removed in a future version of npm.
+updating to new versions of Node. Consider this choice carefully.You can specify which operating systems your module will run on:
diff --git a/deps/npm/html/partial/doc/index.html b/deps/npm/html/partial/doc/index.html index 2d23cb50cc..2048487ee2 100644 --- a/deps/npm/html/partial/doc/index.html +++ b/deps/npm/html/partial/doc/index.html @@ -45,6 +45,8 @@Install a package
Symlink a package folder
+Log out of the registry
List installed packages
The depth to go when recursing directories for npm ls
and
-npm cache ls
.
The depth to go when recursing directories for npm ls
,
+npm cache ls
, and npm outdated
.
For npm outdated
, a setting of Infinity
will be treated as 0
+since that gives more useful information. To show the outdated status
+of all packages and dependents, use a large integer value,
+e.g., npm outdated --depth 9999
npm owner ls <pkgname>
Don't squat on package names. Publish code or move out of the way.
@@ -40,12 +40,12 @@ Joe's appropriate course of action in each case is the same. owner (Bob).npm owner add
joe foo
to add Joe as an owner of the foo
package.To check if the registry is down, open up https://registry.npmjs.org/ in a web browser. This will also tell you if you are just unable to access the internet for some reason.
-If the registry IS down, let us know by emailing support@npmjs.com +
If the registry IS down, let us know by emailing support@npmjs.com or posting an issue at https://github.com/npm/npm/issues. If it's down for the world (and not just on your local network) then we're probably already being pinged about it.
diff --git a/deps/npm/html/partial/doc/misc/npm-index.html b/deps/npm/html/partial/doc/misc/npm-index.html index c42ca682cc..feeb5792cd 100644 --- a/deps/npm/html/partial/doc/misc/npm-index.html +++ b/deps/npm/html/partial/doc/misc/npm-index.html @@ -45,6 +45,8 @@Install a package
Symlink a package folder
+Log out of the registry
List installed packages
The method .inc
takes an additional identifier
string argument that
will append the value of the string as a prerelease identifier:
> semver.inc('1.2.3', 'pre', 'beta')
+> semver.inc('1.2.3', 'pre', 'beta')
'1.2.4-beta.0'
command-line example:
@@ -208,6 +208,9 @@ prerelease. If the input version is already a prerelease it simply
increments it.
+major(v)
: Return the major version number.
+minor(v)
: Return the minor version number.
+patch(v)
: Return the patch version number.
Comparison
diff --git a/deps/npm/lib/build.js b/deps/npm/lib/build.js
index 7477ba4579..47f1055967 100644
--- a/deps/npm/lib/build.js
+++ b/deps/npm/lib/build.js
@@ -239,8 +239,9 @@ function linkMans (pkg, folder, parent, gtop, cb) {
var stem = parseMan[1]
var sxn = parseMan[2]
var bn = path.basename(stem)
+ var manSrc = path.resolve(folder, man)
var manDest = path.join(manRoot, "man" + sxn, bn)
- linkIfExists(man, manDest, gtop && folder, cb)
+ linkIfExists(manSrc, manDest, gtop && folder, cb)
}, cb)
}
diff --git a/deps/npm/lib/cache/add-named.js b/deps/npm/lib/cache/add-named.js
index cb5a3fa8a6..d81b7b0da6 100644
--- a/deps/npm/lib/cache/add-named.js
+++ b/deps/npm/lib/cache/add-named.js
@@ -12,6 +12,7 @@ var path = require("path")
, addRemoteTarball = require("./add-remote-tarball.js")
, cachedPackageRoot = require("./cached-package-root.js")
, mapToRegistry = require("../utils/map-to-registry.js")
+ , warnStrict = require("../utils/warn-deprecated.js")("engineStrict")
module.exports = addNamed
@@ -91,6 +92,12 @@ function engineFilter (data) {
Object.keys(data.versions || {}).forEach(function (v) {
var eng = data.versions[v].engines
if (!eng) return
+ if (data.versions[v].engineStrict) {
+ warnStrict([
+ "Per-package engineStrict (found in package.json for "+data.name+")",
+ "won't be used in npm 3+. Use the config setting `engine-strict` instead."
+ ], data.name)
+ }
if (!strict && !data.versions[v].engineStrict) return
if (eng.node && !semver.satisfies(nodev, eng.node, true)
|| eng.npm && !semver.satisfies(npmv, eng.npm, true)) {
diff --git a/deps/npm/lib/config/clear-credentials-by-uri.js b/deps/npm/lib/config/clear-credentials-by-uri.js
new file mode 100644
index 0000000000..88131f7adb
--- /dev/null
+++ b/deps/npm/lib/config/clear-credentials-by-uri.js
@@ -0,0 +1,16 @@
+var assert = require("assert")
+
+var toNerfDart = require("./nerf-dart.js")
+
+module.exports = clearCredentialsByURI
+
+function clearCredentialsByURI (uri) {
+ assert(uri && typeof uri === "string", "registry URL is required")
+
+ var nerfed = toNerfDart(uri)
+
+ this.del(nerfed + ":_authToken", "user")
+ this.del(nerfed + ":_password", "user")
+ this.del(nerfed + ":username", "user")
+ this.del(nerfed + ":email", "user")
+}
diff --git a/deps/npm/lib/config/core.js b/deps/npm/lib/config/core.js
index 59f7cf5568..97c17919d2 100644
--- a/deps/npm/lib/config/core.js
+++ b/deps/npm/lib/config/core.js
@@ -152,10 +152,17 @@ function load_(builtin, rc, cli, cb) {
// annoying humans and their expectations!
if (conf.get("prefix")) {
var etc = path.resolve(conf.get("prefix"), "etc")
- defaults.globalconfig = path.resolve(etc, "npmrc")
- defaults.globalignorefile = path.resolve(etc, "npmignore")
+ mkdirp(etc, function (err) {
+ defaults.globalconfig = path.resolve(etc, "npmrc")
+ defaults.globalignorefile = path.resolve(etc, "npmignore")
+ afterUserContinuation()
+ })
+ } else {
+ afterUserContinuation()
}
+ }
+ function afterUserContinuation() {
conf.addFile(conf.get("globalconfig"), "global")
// move the builtin into the conf stack now.
@@ -220,6 +227,7 @@ Conf.prototype.setUser = require("./set-user.js")
Conf.prototype.findPrefix = require("./find-prefix.js")
Conf.prototype.getCredentialsByURI = require("./get-credentials-by-uri.js")
Conf.prototype.setCredentialsByURI = require("./set-credentials-by-uri.js")
+Conf.prototype.clearCredentialsByURI = require("./clear-credentials-by-uri.js")
Conf.prototype.loadExtras = function(cb) {
this.setUser(function(er) {
diff --git a/deps/npm/lib/install.js b/deps/npm/lib/install.js
index 756d12ee36..7fa9058f3e 100644
--- a/deps/npm/lib/install.js
+++ b/deps/npm/lib/install.js
@@ -89,6 +89,7 @@ var npm = require("./npm.js")
, locker = require("./utils/locker.js")
, lock = locker.lock
, unlock = locker.unlock
+ , warnPeers = require("./utils/warn-deprecated.js")("peerDependencies")
function install (args, cb_) {
var hasArguments = !!args.length
@@ -159,6 +160,11 @@ function install (args, cb_) {
"install",
"peerDependency", dep, "wasn't going to be installed; adding"
)
+ warnPeers([
+ "The peer dependency "+dep+" included from "+data.name+" will no",
+ "longer be automatically installed to fulfill the peerDependency ",
+ "in npm 3+. Your application will need to depend on it explicitly."
+ ], dep+","+data.name)
peers.push(dep)
}
})
@@ -1036,6 +1042,13 @@ function write (target, targetFolder, context, cb_) {
// favor of killing implicit peerDependency installs with fire.
var peerDeps = prepareForInstallMany(data, "peerDependencies", bundled,
wrap, family)
+ peerDeps.forEach(function (pd) {
+ warnPeers([
+ "The peer dependency "+pd+" included from "+data.name+" will no",
+ "longer be automatically installed to fulfill the peerDependency ",
+ "in npm 3+. Your application will need to depend on it explicitly."
+ ], pd+","+data.name)
+ })
var pdTargetFolder = path.resolve(targetFolder, "..", "..")
var pdContext = context
if (peerDeps.length > 0) {
diff --git a/deps/npm/lib/logout.js b/deps/npm/lib/logout.js
new file mode 100644
index 0000000000..64635be4de
--- /dev/null
+++ b/deps/npm/lib/logout.js
@@ -0,0 +1,40 @@
+module.exports = logout
+
+var dezalgo = require("dezalgo")
+var log = require("npmlog")
+
+var npm = require("./npm.js")
+var mapToRegistry = require("./utils/map-to-registry.js")
+
+logout.usage = "npm logout [--registry] [--scope]"
+
+function logout (args, cb) {
+ npm.spinner.start()
+ cb = dezalgo(cb)
+
+ mapToRegistry("/", npm.config, function (err, uri, auth, normalized) {
+ if (err) return cb(err)
+
+ if (auth.token) {
+ log.verbose("logout", "clearing session token for", normalized)
+ npm.registry.logout(normalized, { auth: auth }, function (err) {
+ if (err) return cb(err)
+
+ npm.config.clearCredentialsByURI(normalized)
+ npm.spinner.stop()
+ npm.config.save("user", cb)
+ })
+ }
+ else if (auth.username || auth.password) {
+ log.verbose("logout", "clearing user credentials for", normalized)
+ npm.config.clearCredentialsByURI(normalized)
+ npm.spinner.stop()
+ npm.config.save("user", cb)
+ }
+ else {
+ cb(new Error(
+ "Not logged in to", normalized + ",", "so can't log out."
+ ))
+ }
+ })
+}
diff --git a/deps/npm/lib/npm.js b/deps/npm/lib/npm.js
index 8077e8ac99..25b7feab6a 100644
--- a/deps/npm/lib/npm.js
+++ b/deps/npm/lib/npm.js
@@ -110,6 +110,7 @@ var commandCache = {}
, "stars"
, "tag"
, "adduser"
+ , "logout"
, "unpublish"
, "owner"
, "access"
diff --git a/deps/npm/lib/outdated.js b/deps/npm/lib/outdated.js
index f69d81550a..4963b096ef 100644
--- a/deps/npm/lib/outdated.js
+++ b/deps/npm/lib/outdated.js
@@ -40,7 +40,12 @@ var path = require("path")
function outdated (args, silent, cb) {
if (typeof cb !== "function") cb = silent, silent = false
var dir = path.resolve(npm.dir, "..")
+
+ // default depth for `outdated` is 0 (cf. `ls`)
+ if (npm.config.get("depth") === Infinity) npm.config.set("depth", 0)
+
outdated_(args, dir, {}, 0, function (er, list) {
+ if (!list) list = []
if (er || silent || list.length === 0) return cb(er, list)
if (npm.config.get("json")) {
console.log(makeJSON(list))
diff --git a/deps/npm/lib/utils/warn-deprecated.js b/deps/npm/lib/utils/warn-deprecated.js
new file mode 100644
index 0000000000..ec821b9bd4
--- /dev/null
+++ b/deps/npm/lib/utils/warn-deprecated.js
@@ -0,0 +1,24 @@
+module.exports = warnDeprecated
+
+var log = require("npmlog")
+
+var deprecations = {}
+
+function warnDeprecated (type) {
+ return function warn (messages, instance) {
+ if (!instance) {
+ if (!deprecations[type]) {
+ deprecations[type] = {}
+ messages.forEach(function (m) { log.warn(type, m) })
+ }
+ }
+ else {
+ if (!deprecations[type]) deprecations[type] = {}
+
+ if (!deprecations[type][instance]) {
+ deprecations[type][instance] = true
+ messages.forEach(function (m) { log.warn(type, m) })
+ }
+ }
+ }
+}
diff --git a/deps/npm/man/man1/npm-README.1 b/deps/npm/man/man1/npm-README.1
index 2d82982aef..aa6c29787a 100644
--- a/deps/npm/man/man1/npm-README.1
+++ b/deps/npm/man/man1/npm-README.1
@@ -192,7 +192,7 @@ npm, Inc\. or the Node\.js project\.
.P
Data published to the npm registry is not part of npm itself, and is
the sole property of the publisher\. While every effort is made to
-ensure accountability, there is absolutely no guarantee, warrantee, or
+ensure accountability, there is absolutely no guarantee, warranty, or
assertion expressed or implied as to the quality, fitness for a
specific purpose, or lack of malice in any given npm package\.
.P
diff --git a/deps/npm/man/man1/npm-dist-tag.1 b/deps/npm/man/man1/npm-dist-tag.1
index 9707d31b26..28c3c3da4b 100644
--- a/deps/npm/man/man1/npm-dist-tag.1
+++ b/deps/npm/man/man1/npm-dist-tag.1
@@ -24,7 +24,7 @@ Clear a tag that is no longer in use from the package\.
.IP \(bu 2
ls:
Show all of the dist\-tags for a package, defaulting to the package in
-the curren prefix\.
+the current prefix\.
.RE
.P
diff --git a/deps/npm/man/man1/npm-link.1 b/deps/npm/man/man1/npm-link.1
index 9151b68c0e..6c4f04fb87 100644
--- a/deps/npm/man/man1/npm-link.1
+++ b/deps/npm/man/man1/npm-link.1
@@ -45,7 +45,7 @@ npm link redis # link\-install the package
.RE
.P
Now, any changes to ~/projects/node\-redis will be reflected in
-~/projects/node\-bloggy/node_modules/redis/
+~/projects/node\-bloggy/node_modules/node\-redis/
.P
You may also shortcut the two steps in one\. For example, to do the
above use\-case in a shorter way:
@@ -62,7 +62,7 @@ The second line is the equivalent of doing:
.RS 2
.nf
(cd \.\./node\-redis; npm link)
-npm link redis
+npm link node\-redis
.fi
.RE
.P
diff --git a/deps/npm/man/man1/npm-logout.1 b/deps/npm/man/man1/npm-logout.1
new file mode 100644
index 0000000000..9d56285ad3
--- /dev/null
+++ b/deps/npm/man/man1/npm-logout.1
@@ -0,0 +1,62 @@
+.TH "NPM\-LOGOUT" "1" "February 2015" "" ""
+.SH "NAME"
+\fBnpm-logout\fR \- Log out of the registry
+.SH SYNOPSIS
+.P
+.RS 2
+.nf
+npm logout [\-\-registry=url] [\-\-scope=@orgname]
+.fi
+.RE
+.SH DESCRIPTION
+.P
+When logged into a registry that supports token\-based authentication, tell the
+server to end this token's session\. This will invalidate the token everywhere
+you're using it, not just for the current environment\.
+.P
+When logged into a legacy registry that uses username and password authentication, this will
+clear the credentials in your user configuration\. In this case, it will \fIonly\fR affect
+the current environment\.
+.P
+If \fB\-\-scope\fR is provided, this will find the credentials for the registry
+connected to that scope, if set\.
+.SH CONFIGURATION
+.SS registry
+.P
+Default: http://registry\.npmjs\.org/
+.P
+The base URL of the npm package registry\. If \fBscope\fR is also specified,
+it takes precedence\.
+.SS scope
+.P
+Default: none
+.P
+If specified, the user and login credentials given will be associated
+with the specified scope\. See npm help 7 \fBnpm\-scope\fR\|\. You can use both at the same time,
+e\.g\.
+.P
+.RS 2
+.nf
+npm adduser \-\-registry=http://myregistry\.example\.com \-\-scope=@myco
+.fi
+.RE
+.P
+This will set a registry for the given scope and login or create a user for
+that registry at the same time\.
+.SH SEE ALSO
+.RS 0
+.IP \(bu 2
+npm help adduser
+.IP \(bu 2
+npm help 7 registry
+.IP \(bu 2
+npm help config
+.IP \(bu 2
+npm help 7 config
+.IP \(bu 2
+npm help 5 npmrc
+.IP \(bu 2
+npm help whoami
+
+.RE
+
diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1
index 4f2d713e2e..553afb68fe 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\fR in npm's source tree will show:
.P
.RS 2
.nf
-npm@2.5.1 /path/to/npm
+npm@2.6.1 /path/to/npm
└─┬ init\-package\-json@0\.0\.4
└── promzard@0\.1\.5
.fi
diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1
index 6794269320..bf47dee787 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.5.1
+2.6.1
.SH DESCRIPTION
.P
npm is the package manager for the Node JavaScript platform\. It puts
diff --git a/deps/npm/man/man3/npm.3 b/deps/npm/man/man3/npm.3
index 8fcfc1ebdc..dbb61b04a2 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.5.1
+2.6.1
.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 e4a928569e..fcdfa167d5 100644
--- a/deps/npm/man/man5/npm-json.5
+++ b/deps/npm/man/man5/npm-json.5
@@ -77,7 +77,7 @@ It should look like this:
.P
.RS 2
.nf
-{ "url" : "http://github\.com/owner/project/issues"
+{ "url" : "https://github\.com/owner/project/issues"
, "email" : "project@hostname\.com"
}
.fi
@@ -251,7 +251,7 @@ will create entries for \fBman foo\fR and \fBman 2 foo\fR
.P
The CommonJS Packages \fIhttp://wiki\.commonjs\.org/wiki/Packages/1\.0\fR spec details a
few ways that you can indicate the structure of your package using a \fBdirectories\fR
-object\. If you look at npm's package\.json \fIhttp://registry\.npmjs\.org/npm/latest\fR,
+object\. If you look at npm's package\.json \fIhttps://registry\.npmjs\.org/npm/latest\fR,
you'll see that it has directories for doc, lib, and man\.
.P
In the future, this information may be used in other creative ways\.
@@ -288,12 +288,12 @@ Do it like this:
.nf
"repository" :
{ "type" : "git"
- , "url" : "http://github\.com/npm/npm\.git"
+ , "url" : "https://github\.com/npm/npm\.git"
}
"repository" :
{ "type" : "svn"
- , "url" : "http://v8\.googlecode\.com/svn/trunk/"
+ , "url" : "https://v8\.googlecode\.com/svn/trunk/"
}
.fi
.RE
@@ -301,6 +301,15 @@ Do it like this:
The URL should be a publicly available (perhaps read\-only) url that can be handed
directly to a VCS program without any modification\. It should not be a url to an
html project page that you put in your browser\. It's for computers\.
+.P
+For GitHub repositories you can use the same shortcut syntax you use for \fBnpm
+install\fR:
+.P
+.RS 2
+.nf
+"repository": "npm/npm"
+.fi
+.RE
.SH scripts
.P
The "scripts" property is a dictionary containing script commands that are run
@@ -531,9 +540,8 @@ For example:
.RE
.P
This ensures your package \fBtea\-latte\fR can be installed \fIalong\fR with the second
-major version of the host package \fBtea\fR only\. The host package is automatically
-installed if needed\. \fBnpm install tea\-latte\fR could possibly yield the following
-dependency graph:
+major version of the host package \fBtea\fR only\. \fBnpm install tea\-latte\fR could
+possibly yield the following dependency graph:
.P
.RS 2
.nf
@@ -542,6 +550,13 @@ dependency graph:
.fi
.RE
.P
+\fBNOTE: npm versions 1 and 2 will automatically install \fBpeerDependencies\fR if
+they are not explicitly depended upon higher in the dependency tree\. In the
+next major version of npm (npm@3), this will no longer be the case\. You will
+receive a warning that the peerDependency is not installed instead\.\fR The
+behavior in npms 1 & 2 was frequently confusing and could easily put you into
+dependency hell, a situation that npm is designed to avoid as much as possible\.
+.P
Trying to install another plugin with a conflicting requirement will cause an
error\. For this reason, make sure your plugin requirement is as broad as
possible, and not to lock it down to specific patch versions\.
@@ -618,6 +633,8 @@ Note that, unless the user has set the \fBengine\-strict\fR config flag, this
field is advisory only\.
.SH engineStrict
.P
+\fBNOTE: This feature is deprecated and will be removed in npm 3\.0\.0\.\fR
+.P
If you are sure that your module will \fIdefinitely not\fR run properly on
versions of Node/npm other than those specified in the \fBengines\fR object,
then you can set \fB"engineStrict": true\fR in your package\.json file\.
@@ -626,8 +643,7 @@ This will override the user's \fBengine\-strict\fR config setting\.
Please do not do this unless you are really very very sure\. If your
engines object is something overly restrictive, you can quite easily and
inadvertently lock yourself into obscurity and prevent your users from
-updating to new versions of Node\. Consider this choice carefully\. If
-people abuse it, it will be removed in a future version of npm\.
+updating to new versions of Node\. Consider this choice carefully\.
.SH os
.P
You can specify which operating systems your
diff --git a/deps/npm/man/man5/package.json.5 b/deps/npm/man/man5/package.json.5
index e4a928569e..fcdfa167d5 100644
--- a/deps/npm/man/man5/package.json.5
+++ b/deps/npm/man/man5/package.json.5
@@ -77,7 +77,7 @@ It should look like this:
.P
.RS 2
.nf
-{ "url" : "http://github\.com/owner/project/issues"
+{ "url" : "https://github\.com/owner/project/issues"
, "email" : "project@hostname\.com"
}
.fi
@@ -251,7 +251,7 @@ will create entries for \fBman foo\fR and \fBman 2 foo\fR
.P
The CommonJS Packages \fIhttp://wiki\.commonjs\.org/wiki/Packages/1\.0\fR spec details a
few ways that you can indicate the structure of your package using a \fBdirectories\fR
-object\. If you look at npm's package\.json \fIhttp://registry\.npmjs\.org/npm/latest\fR,
+object\. If you look at npm's package\.json \fIhttps://registry\.npmjs\.org/npm/latest\fR,
you'll see that it has directories for doc, lib, and man\.
.P
In the future, this information may be used in other creative ways\.
@@ -288,12 +288,12 @@ Do it like this:
.nf
"repository" :
{ "type" : "git"
- , "url" : "http://github\.com/npm/npm\.git"
+ , "url" : "https://github\.com/npm/npm\.git"
}
"repository" :
{ "type" : "svn"
- , "url" : "http://v8\.googlecode\.com/svn/trunk/"
+ , "url" : "https://v8\.googlecode\.com/svn/trunk/"
}
.fi
.RE
@@ -301,6 +301,15 @@ Do it like this:
The URL should be a publicly available (perhaps read\-only) url that can be handed
directly to a VCS program without any modification\. It should not be a url to an
html project page that you put in your browser\. It's for computers\.
+.P
+For GitHub repositories you can use the same shortcut syntax you use for \fBnpm
+install\fR:
+.P
+.RS 2
+.nf
+"repository": "npm/npm"
+.fi
+.RE
.SH scripts
.P
The "scripts" property is a dictionary containing script commands that are run
@@ -531,9 +540,8 @@ For example:
.RE
.P
This ensures your package \fBtea\-latte\fR can be installed \fIalong\fR with the second
-major version of the host package \fBtea\fR only\. The host package is automatically
-installed if needed\. \fBnpm install tea\-latte\fR could possibly yield the following
-dependency graph:
+major version of the host package \fBtea\fR only\. \fBnpm install tea\-latte\fR could
+possibly yield the following dependency graph:
.P
.RS 2
.nf
@@ -542,6 +550,13 @@ dependency graph:
.fi
.RE
.P
+\fBNOTE: npm versions 1 and 2 will automatically install \fBpeerDependencies\fR if
+they are not explicitly depended upon higher in the dependency tree\. In the
+next major version of npm (npm@3), this will no longer be the case\. You will
+receive a warning that the peerDependency is not installed instead\.\fR The
+behavior in npms 1 & 2 was frequently confusing and could easily put you into
+dependency hell, a situation that npm is designed to avoid as much as possible\.
+.P
Trying to install another plugin with a conflicting requirement will cause an
error\. For this reason, make sure your plugin requirement is as broad as
possible, and not to lock it down to specific patch versions\.
@@ -618,6 +633,8 @@ Note that, unless the user has set the \fBengine\-strict\fR config flag, this
field is advisory only\.
.SH engineStrict
.P
+\fBNOTE: This feature is deprecated and will be removed in npm 3\.0\.0\.\fR
+.P
If you are sure that your module will \fIdefinitely not\fR run properly on
versions of Node/npm other than those specified in the \fBengines\fR object,
then you can set \fB"engineStrict": true\fR in your package\.json file\.
@@ -626,8 +643,7 @@ This will override the user's \fBengine\-strict\fR config setting\.
Please do not do this unless you are really very very sure\. If your
engines object is something overly restrictive, you can quite easily and
inadvertently lock yourself into obscurity and prevent your users from
-updating to new versions of Node\. Consider this choice carefully\. If
-people abuse it, it will be removed in a future version of npm\.
+updating to new versions of Node\. Consider this choice carefully\.
.SH os
.P
You can specify which operating systems your
diff --git a/deps/npm/man/man7/npm-config.7 b/deps/npm/man/man7/npm-config.7
index a712dce1da..77e554f3eb 100644
--- a/deps/npm/man/man7/npm-config.7
+++ b/deps/npm/man/man7/npm-config.7
@@ -340,8 +340,13 @@ Type: Number
.RE
.P
-The depth to go when recursing directories for \fBnpm ls\fR and
-\fBnpm cache ls\fR\|\.
+The depth to go when recursing directories for \fBnpm ls\fR,
+\fBnpm cache ls\fR, and \fBnpm outdated\fR\|\.
+.P
+For \fBnpm outdated\fR, a setting of \fBInfinity\fR will be treated as \fB0\fR
+since that gives more useful information\. To show the outdated status
+of all packages and dependents, use a large integer value,
+e\.g\., \fBnpm outdated \-\-depth 9999\fR
.SS description
.RS 0
.IP \(bu 2
diff --git a/deps/npm/man/man7/npm-index.7 b/deps/npm/man/man7/npm-index.7
index f9c996fb78..c1491c918b 100644
--- a/deps/npm/man/man7/npm-index.7
+++ b/deps/npm/man/man7/npm-index.7
@@ -70,6 +70,9 @@ Install a package
.SS npm help link
.P
Symlink a package folder
+.SS npm help logout
+.P
+Log out of the registry
.SS npm help ls
.P
List installed packages
diff --git a/deps/npm/man/man7/semver.7 b/deps/npm/man/man7/semver.7
index de6a889185..d15e0de43e 100644
--- a/deps/npm/man/man7/semver.7
+++ b/deps/npm/man/man7/semver.7
@@ -311,6 +311,12 @@ prerelease\. If the input version is already a prerelease it simply
increments it\.
.RE
+.IP \(bu 2
+\fBmajor(v)\fR: Return the major version number\.
+.IP \(bu 2
+\fBminor(v)\fR: Return the minor version number\.
+.IP \(bu 2
+\fBpatch(v)\fR: Return the patch version number\.
.RE
.SS Comparison
diff --git a/deps/npm/node_modules/glob/README.md b/deps/npm/node_modules/glob/README.md
index e479ae29e3..ba95474c28 100644
--- a/deps/npm/node_modules/glob/README.md
+++ b/deps/npm/node_modules/glob/README.md
@@ -264,6 +264,7 @@ filesystem.
* `nocomment` Suppress `comment` behavior. (See below.)
* `nonull` Return the pattern when no matches are found.
* `nodir` Do not match directories, only files.
+* `ignore` Add a pattern or an array of patterns to exclude matches.
## Comparisons to other fnmatch/glob implementations
diff --git a/deps/npm/node_modules/glob/common.js b/deps/npm/node_modules/glob/common.js
index 610d1245b4..491b9730bd 100644
--- a/deps/npm/node_modules/glob/common.js
+++ b/deps/npm/node_modules/glob/common.js
@@ -6,6 +6,8 @@ exports.ownProp = ownProp
exports.makeAbs = makeAbs
exports.finish = finish
exports.mark = mark
+exports.isIgnored = isIgnored
+exports.childrenIgnored = childrenIgnored
function ownProp (obj, field) {
return Object.prototype.hasOwnProperty.call(obj, field)
@@ -41,6 +43,29 @@ function alphasort (a, b) {
return a.localeCompare(b)
}
+function setupIgnores (self, options) {
+ self.ignore = options.ignore || []
+
+ if (!Array.isArray(self.ignore))
+ self.ignore = [self.ignore]
+
+ if (self.ignore.length) {
+ self.ignore = self.ignore.map(ignoreMap)
+ }
+}
+
+function ignoreMap (pattern) {
+ var gmatcher = null
+ if (pattern.slice(-3) === '/**') {
+ var gpattern = pattern.replace(/(\/\*\*)+$/, '')
+ gmatcher = new Minimatch(gpattern, { nonegate: true })
+ }
+
+ return {
+ matcher: new Minimatch(pattern, { nonegate: true }),
+ gmatcher: gmatcher
+ }
+}
function setopts (self, pattern, options) {
if (!options)
@@ -74,6 +99,8 @@ function setopts (self, pattern, options) {
self.statCache = options.statCache || Object.create(null)
self.symlinks = options.symlinks || Object.create(null)
+ setupIgnores(self, options)
+
self.changedCwd = false
var cwd = process.cwd()
if (!ownProp(options, "cwd"))
@@ -139,6 +166,11 @@ function finish (self) {
}
}
+ if (self.ignore.length)
+ all = all.filter(function(m) {
+ return !isIgnored(self, m)
+ })
+
self.found = all
}
@@ -166,7 +198,7 @@ function mark (self, p) {
// lotta situps...
function makeAbs (self, f) {
var abs = f
- if (f.charAt(0) === "/") {
+ if (f.charAt(0) === '/') {
abs = path.join(self.root, f)
} else if (exports.isAbsolute(f)) {
abs = f
@@ -175,3 +207,24 @@ function makeAbs (self, f) {
}
return abs
}
+
+
+// Return true, if pattern ends with globstar '**', for the accompanying parent directory.
+// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents
+function isIgnored (self, path) {
+ if (!self.ignore.length)
+ return false
+
+ return self.ignore.some(function(item) {
+ return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))
+ })
+}
+
+function childrenIgnored (self, path) {
+ if (!self.ignore.length)
+ return false
+
+ return self.ignore.some(function(item) {
+ return !!(item.gmatcher && item.gmatcher.match(path))
+ })
+}
diff --git a/deps/npm/node_modules/glob/glob.js b/deps/npm/node_modules/glob/glob.js
index 7401e0b7e9..0075c1fb86 100644
--- a/deps/npm/node_modules/glob/glob.js
+++ b/deps/npm/node_modules/glob/glob.js
@@ -56,6 +56,7 @@ var setopts = common.setopts
var ownProp = common.ownProp
var inflight = require('inflight')
var util = require('util')
+var childrenIgnored = common.childrenIgnored
var once = require('once')
@@ -270,6 +271,10 @@ Glob.prototype._process = function (pattern, index, inGlobStar, cb) {
var abs = this._makeAbs(read)
+ //if ignored, skip _processing
+ if (childrenIgnored(this, read))
+ return cb()
+
var isGlobStar = remain[0] === minimatch.GLOBSTAR
if (isGlobStar)
this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)
@@ -277,7 +282,6 @@ Glob.prototype._process = function (pattern, index, inGlobStar, cb) {
this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)
}
-
Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {
var self = this
this._readdir(abs, inGlobStar, function (er, entries) {
diff --git a/deps/npm/node_modules/glob/package.json b/deps/npm/node_modules/glob/package.json
index 5b782d625e..c5032684b2 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": "4.3.5",
+ "version": "4.4.0",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/node-glob.git"
@@ -42,16 +42,16 @@
"benchclean": "bash benchclean.sh"
},
"license": "ISC",
- "gitHead": "9de4cb6bfeb9c8458cf188fe91447b99bf8f3cfd",
+ "gitHead": "57e6b293108b48d9771a05e2b9a6a1b12cb81c12",
"bugs": {
"url": "https://github.com/isaacs/node-glob/issues"
},
"homepage": "https://github.com/isaacs/node-glob",
- "_id": "glob@4.3.5",
- "_shasum": "80fbb08ca540f238acce5d11d1e9bc41e75173d3",
- "_from": "glob@>=4.3.5 <4.4.0",
- "_npmVersion": "2.2.0",
- "_nodeVersion": "0.10.35",
+ "_id": "glob@4.4.0",
+ "_shasum": "91d63dc1ed1d82b52ba2cb76044852ccafc2130f",
+ "_from": "glob@>=4.4.0 <4.5.0",
+ "_npmVersion": "2.6.0",
+ "_nodeVersion": "1.1.0",
"_npmUser": {
"name": "isaacs",
"email": "i@izs.me"
@@ -63,9 +63,10 @@
}
],
"dist": {
- "shasum": "80fbb08ca540f238acce5d11d1e9bc41e75173d3",
- "tarball": "http://registry.npmjs.org/glob/-/glob-4.3.5.tgz"
+ "shasum": "91d63dc1ed1d82b52ba2cb76044852ccafc2130f",
+ "tarball": "http://registry.npmjs.org/glob/-/glob-4.4.0.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/glob/-/glob-4.3.5.tgz"
+ "_resolved": "https://registry.npmjs.org/glob/-/glob-4.4.0.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/glob/sync.js b/deps/npm/node_modules/glob/sync.js
index f981055af9..686f2c3694 100644
--- a/deps/npm/node_modules/glob/sync.js
+++ b/deps/npm/node_modules/glob/sync.js
@@ -14,6 +14,7 @@ var alphasorti = common.alphasorti
var isAbsolute = common.isAbsolute
var setopts = common.setopts
var ownProp = common.ownProp
+var childrenIgnored = common.childrenIgnored
function globSync (pattern, options) {
if (typeof options === 'function' || arguments.length === 3)
@@ -98,6 +99,10 @@ GlobSync.prototype._process = function (pattern, index, inGlobStar) {
var abs = this._makeAbs(read)
+ //if ignored, skip processing
+ if (childrenIgnored(this, read))
+ return
+
var isGlobStar = remain[0] === minimatch.GLOBSTAR
if (isGlobStar)
this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)
@@ -105,6 +110,7 @@ GlobSync.prototype._process = function (pattern, index, inGlobStar) {
this._processReaddir(prefix, read, abs, remain, index, inGlobStar)
}
+
GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {
var entries = this._readdir(abs, inGlobStar)
diff --git a/deps/npm/node_modules/ini/ini.js b/deps/npm/node_modules/ini/ini.js
index 1e232e7438..ddf5bd9cc6 100644
--- a/deps/npm/node_modules/ini/ini.js
+++ b/deps/npm/node_modules/ini/ini.js
@@ -145,7 +145,7 @@ function isQuoted (val) {
function safe (val) {
return ( typeof val !== "string"
- || val.match(/[\r\n]/)
+ || val.match(/[=\r\n]/)
|| val.match(/^\[/)
|| (val.length > 1
&& isQuoted(val))
diff --git a/deps/npm/node_modules/ini/package.json b/deps/npm/node_modules/ini/package.json
index a910b78861..5a1e10b81c 100644
--- a/deps/npm/node_modules/ini/package.json
+++ b/deps/npm/node_modules/ini/package.json
@@ -6,7 +6,7 @@
},
"name": "ini",
"description": "An ini encoder/decoder for node",
- "version": "1.3.2",
+ "version": "1.3.3",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/ini.git"
@@ -23,16 +23,16 @@
"tap": "~0.4.0"
},
"license": "ISC",
- "gitHead": "bbe4a8bb09afa58f724c04ce43a49037cabeadfb",
+ "gitHead": "566268f1fb8dd3c0f7d968091de7b7fb2b97b483",
"bugs": {
"url": "https://github.com/isaacs/ini/issues"
},
"homepage": "https://github.com/isaacs/ini",
- "_id": "ini@1.3.2",
- "_shasum": "9ebf4a44daf9d89acd07aab9f89a083d887f6dec",
- "_from": "ini@>=1.3.2 <1.4.0",
- "_npmVersion": "2.1.9",
- "_nodeVersion": "0.10.16",
+ "_id": "ini@1.3.3",
+ "_shasum": "c07e34aef1de06aff21d413b458e52b21533a11e",
+ "_from": "ini@>=1.3.1 <1.4.0",
+ "_npmVersion": "2.5.1",
+ "_nodeVersion": "1.1.0",
"_npmUser": {
"name": "isaacs",
"email": "i@izs.me"
@@ -44,9 +44,9 @@
}
],
"dist": {
- "shasum": "9ebf4a44daf9d89acd07aab9f89a083d887f6dec",
- "tarball": "http://registry.npmjs.org/ini/-/ini-1.3.2.tgz"
+ "shasum": "c07e34aef1de06aff21d413b458e52b21533a11e",
+ "tarball": "http://registry.npmjs.org/ini/-/ini-1.3.3.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/ini/-/ini-1.3.2.tgz"
+ "_resolved": "https://registry.npmjs.org/ini/-/ini-1.3.3.tgz"
}
diff --git a/deps/npm/node_modules/ini/test/fixtures/foo.ini b/deps/npm/node_modules/ini/test/fixtures/foo.ini
index 27555e9d82..fc2080f161 100644
--- a/deps/npm/node_modules/ini/test/fixtures/foo.ini
+++ b/deps/npm/node_modules/ini/test/fixtures/foo.ini
@@ -29,6 +29,8 @@ ar = this is included
br = cold
br = warm
+eq = "eq=eq"
+
; a section
[a]
av = a val
diff --git a/deps/npm/node_modules/ini/test/foo.js b/deps/npm/node_modules/ini/test/foo.js
index 9d34aa6fda..58102d1e72 100644
--- a/deps/npm/node_modules/ini/test/foo.js
+++ b/deps/npm/node_modules/ini/test/foo.js
@@ -18,6 +18,7 @@ var i = require("../")
+ 'ar[]=three\n'
+ 'ar[]=this is included\n'
+ 'br=warm\n'
+ + 'eq=\"eq=eq\"\n'
+ '\n'
+ '[a]\n'
+ 'av=a val\n'
@@ -43,6 +44,7 @@ var i = require("../")
'zr': ['deedee'],
'ar': ['one', 'three', 'this is included'],
'br': 'warm',
+ 'eq': 'eq=eq',
a:
{ av: 'a val',
e: '{ o: p, a: { av: a val, b: { c: { e: "this [value]" } } } }',
diff --git a/deps/npm/node_modules/npm-registry-client/.travis.yml b/deps/npm/node_modules/npm-registry-client/.travis.yml
new file mode 100644
index 0000000000..686d9aecaf
--- /dev/null
+++ b/deps/npm/node_modules/npm-registry-client/.travis.yml
@@ -0,0 +1,10 @@
+language: node_js
+node_js:
+ - "0.12"
+ - "0.10"
+ - iojs
+before_install:
+ - "npm install -g npm@^2"
+script: "npm test"
+notifications:
+ slack: npm-inc:kRqQjto7YbINqHPb1X6nS3g8
diff --git a/deps/npm/node_modules/npm-registry-client/lib/logout.js b/deps/npm/node_modules/npm-registry-client/lib/logout.js
new file mode 100644
index 0000000000..00964a4be7
--- /dev/null
+++ b/deps/npm/node_modules/npm-registry-client/lib/logout.js
@@ -0,0 +1,23 @@
+module.exports = logout
+
+var assert = require("assert")
+var url = require("url")
+
+function logout (uri, params, cb) {
+ assert(typeof uri === "string", "must pass registry URI to logout")
+ assert(params && typeof params === "object", "must pass params to logout")
+ assert(typeof cb === "function", "must pass callback to star")
+
+ var auth = params.auth
+ assert(auth && typeof auth === "object", "must pass auth to logout")
+ assert(typeof auth.token === "string", "can only log out for token auth")
+
+ uri = url.resolve(uri, "-/user/token/" + auth.token)
+ var options = {
+ method: "DELETE",
+ auth: auth
+ }
+
+ this.log.verbose("logout", "invalidating session token for user")
+ this.request(uri, options, cb)
+}
diff --git a/deps/npm/node_modules/npm-registry-client/package.json b/deps/npm/node_modules/npm-registry-client/package.json
index 0cd832ad7d..35b1ea4608 100644
--- a/deps/npm/node_modules/npm-registry-client/package.json
+++ b/deps/npm/node_modules/npm-registry-client/package.json
@@ -6,7 +6,7 @@
},
"name": "npm-registry-client",
"description": "Client for the npm registry",
- "version": "6.0.7",
+ "version": "6.1.1",
"repository": {
"url": "git://github.com/isaacs/npm-registry-client"
},
@@ -40,12 +40,12 @@
"license": "ISC",
"readme": "# npm-registry-client\n\nThe code that npm uses to talk to the registry.\n\nIt handles all the caching and HTTP calls.\n\n## Usage\n\n```javascript\nvar RegClient = require('npm-registry-client')\nvar client = new RegClient(config)\nvar uri = \"npm://registry.npmjs.org/npm\"\nvar params = {timeout: 1000}\n\nclient.get(uri, params, function (error, data, raw, res) {\n // error is an error if there was a problem.\n // data is the parsed data object\n // raw is the json string\n // res is the response from couch\n})\n```\n\n# Registry URLs\n\nThe registry calls take either a full URL pointing to a resource in the\nregistry, or a base URL for the registry as a whole (including the registry\npath – but be sure to terminate the path with `/`). `http` and `https` URLs are\nthe only ones supported.\n\n## Using the client\n\nEvery call to the client follows the same pattern:\n\n* `uri` {String} The *fully-qualified* URI of the registry API method being\n invoked.\n* `params` {Object} Per-request parameters.\n* `callback` {Function} Callback to be invoked when the call is complete.\n\n### Credentials\n\nMany requests to the registry can by authenticated, and require credentials\nfor authorization. These credentials always look the same:\n\n* `username` {String}\n* `password` {String}\n* `email` {String}\n* `alwaysAuth` {Boolean} Whether calls to the target registry are always\n authed.\n\n**or**\n\n* `token` {String}\n* `alwaysAuth` {Boolean} Whether calls to the target registry are always\n authed.\n\n## API\n\n### client.access(uri, params, cb)\n\n* `uri` {String} Registry URL for the package's access API endpoint.\n Looks like `/-/package//access`.\n* `params` {Object} Object containing per-request properties.\n * `access` {String} New access level for the package. Can be either\n `public` or `restricted`. Registry will raise an error if trying\n to change the access level of an unscoped package.\n * `auth` {Credentials}\n\nSet the access level for scoped packages. For now, there are only two\naccess levels: \"public\" and \"restricted\".\n\n### client.adduser(uri, params, cb)\n\n* `uri` {String} Base registry URL.\n* `params` {Object} Object containing per-request properties.\n * `auth` {Credentials}\n* `cb` {Function}\n * `error` {Error | null}\n * `data` {Object} the parsed data object\n * `raw` {String} the json\n * `res` {Response Object} response from couch\n\nAdd a user account to the registry, or verify the credentials.\n\n### client.deprecate(uri, params, cb)\n\n* `uri` {String} Full registry URI for the deprecated package.\n* `params` {Object} Object containing per-request properties.\n * `version` {String} Semver version range.\n * `message` {String} The message to use as a deprecation warning.\n * `auth` {Credentials}\n* `cb` {Function}\n\nDeprecate a version of a package in the registry.\n\n### client.distTags.fetch(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `auth` {Credentials}\n* `cb` {Function}\n\nFetch all of the `dist-tags` for the named package.\n\n### client.distTags.add(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTag` {String} Name of the new `dist-tag`.\n * `version` {String} Exact version to be mapped to the `dist-tag`.\n * `auth` {Credentials}\n* `cb` {Function}\n\nAdd (or replace) a single dist-tag onto the named package.\n\n### client.distTags.set(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTags` {Object} Object containing a map from tag names to package\n versions.\n * `auth` {Credentials}\n* `cb` {Function}\n\nSet all of the `dist-tags` for the named package at once, creating any\n`dist-tags` that do not already exit. Any `dist-tags` not included in the\n`distTags` map will be removed.\n\n### client.distTags.update(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTags` {Object} Object containing a map from tag names to package\n versions.\n * `auth` {Credentials}\n* `cb` {Function}\n\nUpdate the values of multiple `dist-tags`, creating any `dist-tags` that do\nnot already exist. Any pre-existing `dist-tags` not included in the `distTags`\nmap will be left alone.\n\n### client.distTags.rm(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTag` {String} Name of the new `dist-tag`.\n * `auth` {Credentials}\n* `cb` {Function}\n\nRemove a single `dist-tag` from the named package.\n\n### client.get(uri, params, cb)\n\n* `uri` {String} The complete registry URI to fetch\n* `params` {Object} Object containing per-request properties.\n * `timeout` {Number} Duration before the request times out. Optional\n (default: never).\n * `follow` {Boolean} Follow 302/301 responses. Optional (default: true).\n * `staleOk` {Boolean} If there's cached data available, then return that to\n the callback quickly, and update the cache the background. Optional\n (default: false).\n * `auth` {Credentials} Optional.\n* `cb` {Function}\n\nFetches data from the registry via a GET request, saving it in the cache folder\nwith the ETag or the \"Last Modified\" timestamp.\n\n### client.publish(uri, params, cb)\n\n* `uri` {String} The registry URI for the package to publish.\n* `params` {Object} Object containing per-request properties.\n * `metadata` {Object} Package metadata.\n * `access` {String} Access for the package. Can be `public` or `restricted` (no default).\n * `body` {Stream} Stream of the package body / tarball.\n * `auth` {Credentials}\n* `cb` {Function}\n\nPublish a package to the registry.\n\nNote that this does not create the tarball from a folder.\n\n### client.star(uri, params, cb)\n\n* `uri` {String} The complete registry URI for the package to star.\n* `params` {Object} Object containing per-request properties.\n * `starred` {Boolean} True to star the package, false to unstar it. Optional\n (default: false).\n * `auth` {Credentials}\n* `cb` {Function}\n\nStar or unstar a package.\n\nNote that the user does not have to be the package owner to star or unstar a\npackage, though other writes do require that the user be the package owner.\n\n### client.stars(uri, params, cb)\n\n* `uri` {String} The base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `username` {String} Name of user to fetch starred packages for. Optional\n (default: user in `auth`).\n * `auth` {Credentials} Optional (required if `username` is omitted).\n* `cb` {Function}\n\nView your own or another user's starred packages.\n\n### client.tag(uri, params, cb)\n\n* `uri` {String} The complete registry URI to tag\n* `params` {Object} Object containing per-request properties.\n * `version` {String} Version to tag.\n * `tag` {String} Tag name to apply.\n * `auth` {Credentials}\n* `cb` {Function}\n\nMark a version in the `dist-tags` hash, so that `pkg@tag` will fetch the\nspecified version.\n\n### client.unpublish(uri, params, cb)\n\n* `uri` {String} The complete registry URI of the package to unpublish.\n* `params` {Object} Object containing per-request properties.\n * `version` {String} version to unpublish. Optional – omit to unpublish all\n versions.\n * `auth` {Credentials}\n* `cb` {Function}\n\nRemove a version of a package (or all versions) from the registry. When the\nlast version us unpublished, the entire document is removed from the database.\n\n### client.whoami(uri, params, cb)\n\n* `uri` {String} The base registry for the URI.\n* `params` {Object} Object containing per-request properties.\n * `auth` {Credentials}\n* `cb` {Function}\n\nSimple call to see who the registry thinks you are. Especially useful with\ntoken-based auth.\n\n\n## PLUMBING\n\nThe below are primarily intended for use by the rest of the API, or by the npm\ncaching logic directly.\n\n### client.request(uri, params, cb)\n\n* `uri` {String} URI pointing to the resource to request.\n* `params` {Object} Object containing per-request properties.\n * `method` {String} HTTP method. Optional (default: \"GET\").\n * `body` {Stream | Buffer | String | Object} The request body. Objects\n that are not Buffers or Streams are encoded as JSON. Optional – body\n only used for write operations.\n * `etag` {String} The cached ETag. Optional.\n * `lastModified` {String} The cached Last-Modified timestamp. Optional.\n * `follow` {Boolean} Follow 302/301 responses. Optional (default: true).\n * `auth` {Credentials} Optional.\n* `cb` {Function}\n * `error` {Error | null}\n * `data` {Object} the parsed data object\n * `raw` {String} the json\n * `res` {Response Object} response from couch\n\nMake a generic request to the registry. All the other methods are wrappers\naround `client.request`.\n\n### client.fetch(uri, params, cb)\n\n* `uri` {String} The complete registry URI to upload to\n* `params` {Object} Object containing per-request properties.\n * `headers` {Stream} HTTP headers to be included with the request. Optional.\n * `auth` {Credentials} Optional.\n* `cb` {Function}\n\nFetch a package from a URL, with auth set appropriately if included. Used to\ncache remote tarballs as well as request package tarballs from the registry.\n\n# Configuration\n\nThe client uses its own configuration, which is just passed in as a simple\nnested object. The following are the supported values (with their defaults, if\nany):\n\n* `proxy.http` {URL} The URL to proxy HTTP requests through.\n* `proxy.https` {URL} The URL to proxy HTTPS requests through. Defaults to be\n the same as `proxy.http` if unset.\n* `proxy.localAddress` {IP} The local address to use on multi-homed systems.\n* `ssl.ca` {String} Certificate signing authority certificates to trust.\n* `ssl.certificate` {String} Client certificate (PEM encoded). Enable access\n to servers that require client certificates.\n* `ssl.key` {String} Private key (PEM encoded) for client certificate.\n* `ssl.strict` {Boolean} Whether or not to be strict with SSL certificates.\n Default = `true`\n* `retry.count` {Number} Number of times to retry on GET failures. Default = 2.\n* `retry.factor` {Number} `factor` setting for `node-retry`. Default = 10.\n* `retry.minTimeout` {Number} `minTimeout` setting for `node-retry`.\n Default = 10000 (10 seconds)\n* `retry.maxTimeout` {Number} `maxTimeout` setting for `node-retry`.\n Default = 60000 (60 seconds)\n* `userAgent` {String} User agent header to send. Default =\n `\"node/{process.version}\"`\n* `log` {Object} The logger to use. Defaults to `require(\"npmlog\")` if\n that works, otherwise logs are disabled.\n* `defaultTag` {String} The default tag to use when publishing new packages.\n Default = `\"latest\"`\n* `couchToken` {Object} A token for use with\n [couch-login](https://npmjs.org/package/couch-login).\n* `sessionToken` {string} A random identifier for this set of client requests.\n Default = 8 random hexadecimal bytes.\n",
"readmeFilename": "README.md",
- "gitHead": "8691eaf8ca1f4c8a4d16389da6e8f6d0a0042ed9",
+ "gitHead": "88399fa1ebc5473125466ffa940c5b7df9e693bc",
"bugs": {
"url": "https://github.com/isaacs/npm-registry-client/issues"
},
"homepage": "https://github.com/isaacs/npm-registry-client",
- "_id": "npm-registry-client@6.0.7",
- "_shasum": "c9f36f727f0b72f47a9ed11a539829770565e0fb",
- "_from": "npm-registry-client@>=6.0.7 <6.1.0"
+ "_id": "npm-registry-client@6.1.1",
+ "_shasum": "ffc74d9d85f3228fcd21a7eaad8a8ed134a5dddb",
+ "_from": "npm-registry-client@>=6.1.1 <6.2.0"
}
diff --git a/deps/npm/node_modules/npm-registry-client/test/logout.js b/deps/npm/node_modules/npm-registry-client/test/logout.js
new file mode 100644
index 0000000000..bbf1b8c095
--- /dev/null
+++ b/deps/npm/node_modules/npm-registry-client/test/logout.js
@@ -0,0 +1,74 @@
+var test = require("tap").test
+
+var server = require("./lib/server.js")
+var common = require("./lib/common.js")
+var client = common.freshClient()
+
+function nop () {}
+
+var URI = "http://localhost:1337/rewrite"
+var TOKEN = "b00b00feed"
+var PARAMS = {
+ auth: {
+ token: TOKEN
+ }
+}
+
+test("logout call contract", function (t) {
+ t.throws(function () {
+ client.logout(undefined, PARAMS, nop)
+ }, "requires a URI")
+
+ t.throws(function () {
+ client.logout([], PARAMS, nop)
+ }, "requires URI to be a string")
+
+ t.throws(function () {
+ client.logout(URI, undefined, nop)
+ }, "requires params object")
+
+ t.throws(function () {
+ client.logout(URI, "", nop)
+ }, "params must be object")
+
+ t.throws(function () {
+ client.logout(URI, PARAMS, undefined)
+ }, "requires callback")
+
+ t.throws(function () {
+ client.logout(URI, PARAMS, "callback")
+ }, "callback must be function")
+
+ t.throws(
+ function () {
+ var params = {
+ auth: {}
+ }
+ client.logout(URI, params, nop)
+ },
+ { name: "AssertionError", message: "can only log out for token auth" },
+ "auth must include token"
+ )
+
+ t.end()
+})
+
+test("log out from a token-based registry", function (t) {
+ server.expect("DELETE", "/-/user/token/" + TOKEN, function (req, res) {
+ t.equal(req.method, "DELETE")
+ t.equal(req.headers.authorization, "Bearer " + TOKEN, "request is authed")
+
+ res.json({message: "ok"})
+ })
+
+ client.logout(URI, PARAMS, function (er) {
+ t.ifError(er, "no errors")
+
+ t.end()
+ })
+})
+
+test("cleanup", function (t) {
+ server.close()
+ t.end()
+})
diff --git a/deps/npm/node_modules/npm-registry-client/test/request-gzip-content.js b/deps/npm/node_modules/npm-registry-client/test/request-gzip-content.js
index 497a6b8c0d..5f6a33daa3 100644
--- a/deps/npm/node_modules/npm-registry-client/test/request-gzip-content.js
+++ b/deps/npm/node_modules/npm-registry-client/test/request-gzip-content.js
@@ -40,7 +40,7 @@ zlib.gzip(JSON.stringify(pkg), function (err, pkgGzip) {
tap.test("request wrong gzip package content", function (t) {
// will retry 3 times
for (var i = 0; i < 3; i++) {
- server.expect("GET", "/some-package-gzip-error/1.2.3", function (req, res) {
+ server.expect("GET", "/some-package-gzip/1.2.3", function (req, res) {
res.statusCode = 200
res.setHeader("Content-Encoding", "gzip")
res.setHeader("Content-Type", "application/json")
diff --git a/deps/npm/node_modules/read-package-json/package.json b/deps/npm/node_modules/read-package-json/package.json
index 1fd2f674f7..3c2ff0ff80 100644
--- a/deps/npm/node_modules/read-package-json/package.json
+++ b/deps/npm/node_modules/read-package-json/package.json
@@ -1,6 +1,6 @@
{
"name": "read-package-json",
- "version": "1.2.7",
+ "version": "1.3.1",
"author": {
"name": "Isaac Z. Schlueter",
"email": "i@izs.me",
@@ -30,15 +30,16 @@
"graceful-fs": "2 || 3"
},
"license": "ISC",
- "gitHead": "41d6696c527e32a1cb38ebf0b6fc91b489b0499c",
+ "gitHead": "59011e6b660cf0cc916646a08955c12a8f990174",
"bugs": {
"url": "https://github.com/isaacs/read-package-json/issues"
},
"homepage": "https://github.com/isaacs/read-package-json",
- "_id": "read-package-json@1.2.7",
- "_shasum": "f0b440c461a218f4dbf48b094e80fc65c5248502",
- "_from": "read-package-json@>=1.2.7-0 <1.3.0-0",
- "_npmVersion": "2.0.0-beta.0",
+ "_id": "read-package-json@1.3.1",
+ "_shasum": "5a965f9fc34b25ffa5e0d93b1d0fc063af6d10b0",
+ "_from": "read-package-json@1.3.1",
+ "_npmVersion": "2.5.1",
+ "_nodeVersion": "0.12.0",
"_npmUser": {
"name": "othiym23",
"email": "ogd@aoaioxxysz.net"
@@ -54,9 +55,9 @@
}
],
"dist": {
- "shasum": "f0b440c461a218f4dbf48b094e80fc65c5248502",
- "tarball": "http://registry.npmjs.org/read-package-json/-/read-package-json-1.2.7.tgz"
+ "shasum": "5a965f9fc34b25ffa5e0d93b1d0fc063af6d10b0",
+ "tarball": "http://registry.npmjs.org/read-package-json/-/read-package-json-1.3.1.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-1.2.7.tgz"
+ "_resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-1.3.1.tgz"
}
diff --git a/deps/npm/node_modules/read-package-json/read-json.js b/deps/npm/node_modules/read-package-json/read-json.js
index acb7d62d81..863f8e8e32 100644
--- a/deps/npm/node_modules/read-package-json/read-json.js
+++ b/deps/npm/node_modules/read-package-json/read-json.js
@@ -332,6 +332,31 @@ function githead_ (file, data, dir, head, cb) {
})
}
+/**
+ * Warn if the bin references don't point to anything. This might be better in
+ * normalize-package-data if it had access to the file path.
+ */
+function checkBinReferences_ (file, data, warn, cb) {
+ if (!(data.bin instanceof Object)) return cb()
+
+ var keys = Object.keys(data.bin)
+ var keysLeft = keys.length
+ if (!keysLeft) return cb()
+
+ function handleExists(relName, result) {
+ keysLeft--
+ if (!result) warn("No bin file found at " + relName)
+ if (!keysLeft) cb()
+ }
+
+ keys.forEach(function (key) {
+ var dirName = path.dirname(file)
+ var relName = data.bin[key]
+ var binPath = path.resolve(dirName, relName)
+ fs.exists(binPath, handleExists.bind(null, relName))
+ })
+}
+
function final (file, data, log, strict, cb) {
var pId = makePackageId(data)
function warn(msg) {
@@ -344,9 +369,11 @@ function final (file, data, log, strict, cb) {
catch (error) {
return cb(error)
}
- typoWarned[pId] = true
- readJson.cache.set(file, data)
- cb(null, data)
+ checkBinReferences_(file, data, warn, function () {
+ typoWarned[pId] = true
+ readJson.cache.set(file, data)
+ cb(null, data)
+ })
}
function makePackageId (data) {
diff --git a/deps/npm/node_modules/read-package-json/test/bin.js b/deps/npm/node_modules/read-package-json/test/bin.js
new file mode 100644
index 0000000000..2ed4ec5ca5
--- /dev/null
+++ b/deps/npm/node_modules/read-package-json/test/bin.js
@@ -0,0 +1,43 @@
+// vim: set softtabstop=16 shiftwidth=16:
+var tap = require("tap")
+var readJson = require("../")
+var path = require("path")
+var fs = require("fs")
+
+var createWarningCollector = function () {
+ var warn = function (msg) {
+ warn.warnings.push(arguments)
+ }
+ warn.warnings = []
+ return warn
+}
+
+tap.test("Bin test", function (t) {
+ var p = path.resolve(__dirname, "fixtures/bin.json")
+ var warn = createWarningCollector()
+ readJson(p, warn, function (er, data) {
+ t.equals(warn.warnings.length, 0)
+ t.deepEqual(data.bin, {"bin-test": "./bin/echo"})
+ t.end()
+ })
+})
+
+tap.test("Bad bin test", function (t) {
+ var p = path.resolve(__dirname, "fixtures/badbin.json")
+ var warn = createWarningCollector()
+ readJson(p, warn, function (er, data) {
+ t.equals(warn.warnings.length, 1)
+ t.equals(warn.warnings[0][2], "No bin file found at ./bin/typo")
+ t.end()
+ })
+})
+
+tap.test("Empty bin test", function (t) {
+ var p = path.resolve(__dirname, "fixtures/emptybin.json")
+ var warn = createWarningCollector()
+ readJson(p, warn, function (er, data) {
+ t.equals(warn.warnings.length, 0)
+ t.same(data.bin, {}, "no mapping to bin because object was empty")
+ t.end()
+ })
+})
diff --git a/deps/npm/node_modules/read-package-json/test/fixtures/badbin.json b/deps/npm/node_modules/read-package-json/test/fixtures/badbin.json
new file mode 100644
index 0000000000..06c57f43bc
--- /dev/null
+++ b/deps/npm/node_modules/read-package-json/test/fixtures/badbin.json
@@ -0,0 +1,11 @@
+{
+ "name": "badbin-test",
+ "description": "my desc",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/npm/read-package-json.git"
+ },
+ "version": "0.0.1",
+ "readme": "hello world",
+ "bin": "./bin/typo"
+}
diff --git a/deps/npm/node_modules/read-package-json/test/fixtures/bin.json b/deps/npm/node_modules/read-package-json/test/fixtures/bin.json
new file mode 100644
index 0000000000..d47a5270c6
--- /dev/null
+++ b/deps/npm/node_modules/read-package-json/test/fixtures/bin.json
@@ -0,0 +1,11 @@
+{
+ "name": "bin-test",
+ "description": "my desc",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/npm/read-package-json.git"
+ },
+ "version": "0.0.1",
+ "readme": "hello world",
+ "bin": "./bin/echo"
+}
diff --git a/deps/npm/node_modules/read-package-json/test/fixtures/bin/echo b/deps/npm/node_modules/read-package-json/test/fixtures/bin/echo
new file mode 100644
index 0000000000..aaed878509
--- /dev/null
+++ b/deps/npm/node_modules/read-package-json/test/fixtures/bin/echo
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo "Hello world"
\ No newline at end of file
diff --git a/deps/npm/node_modules/read-package-json/test/fixtures/emptybin.json b/deps/npm/node_modules/read-package-json/test/fixtures/emptybin.json
new file mode 100644
index 0000000000..ef926f04d3
--- /dev/null
+++ b/deps/npm/node_modules/read-package-json/test/fixtures/emptybin.json
@@ -0,0 +1,11 @@
+{
+ "name": "badbin-test",
+ "description": "my desc",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/npm/read-package-json.git"
+ },
+ "version": "0.0.1",
+ "readme": "hello world",
+ "bin": {}
+}
diff --git a/deps/npm/node_modules/semver/README.md b/deps/npm/node_modules/semver/README.md
index 1ec8089546..b5e35ff0b5 100644
--- a/deps/npm/node_modules/semver/README.md
+++ b/deps/npm/node_modules/semver/README.md
@@ -106,7 +106,7 @@ similar risk on the *next* set of prerelease versions.
The method `.inc` takes an additional `identifier` string argument that
will append the value of the string as a prerelease identifier:
-````javascript
+```javascript
> semver.inc('1.2.3', 'pre', 'beta')
'1.2.4-beta.0'
```
@@ -248,6 +248,9 @@ strings that they parse.
same as `prepatch`. It increments the patch version, then makes a
prerelease. If the input version is already a prerelease it simply
increments it.
+* `major(v)`: Return the major version number.
+* `minor(v)`: Return the minor version number.
+* `patch(v)`: Return the patch version number.
### Comparison
diff --git a/deps/npm/node_modules/semver/package.json b/deps/npm/node_modules/semver/package.json
index 51326d7a30..466de0e19a 100644
--- a/deps/npm/node_modules/semver/package.json
+++ b/deps/npm/node_modules/semver/package.json
@@ -1,6 +1,6 @@
{
"name": "semver",
- "version": "4.2.0",
+ "version": "4.3.0",
"description": "The semantic version parser used by npm.",
"main": "semver.js",
"browser": "semver.browser.js",
@@ -21,16 +21,16 @@
"bin": {
"semver": "./bin/semver"
},
- "gitHead": "f353d3337dd9bef990b6873e281342260b4e63ae",
+ "gitHead": "12c0304de19c3d01ae2524b70592e9c49a76ff9d",
"bugs": {
"url": "https://github.com/isaacs/node-semver/issues"
},
"homepage": "https://github.com/isaacs/node-semver",
- "_id": "semver@4.2.0",
- "_shasum": "a571fd4adbe974fe32bd9cb4c5e249606f498423",
- "_from": "semver@>=4.2.0 <4.3.0",
- "_npmVersion": "2.1.14",
- "_nodeVersion": "0.10.33",
+ "_id": "semver@4.3.0",
+ "_shasum": "3757ceed2b91afefe0ba2c3b6bda49c688b0257a",
+ "_from": "semver@>=4.3.0 <4.4.0",
+ "_npmVersion": "2.5.1",
+ "_nodeVersion": "1.1.0",
"_npmUser": {
"name": "isaacs",
"email": "i@izs.me"
@@ -46,10 +46,9 @@
}
],
"dist": {
- "shasum": "a571fd4adbe974fe32bd9cb4c5e249606f498423",
- "tarball": "http://registry.npmjs.org/semver/-/semver-4.2.0.tgz"
+ "shasum": "3757ceed2b91afefe0ba2c3b6bda49c688b0257a",
+ "tarball": "http://registry.npmjs.org/semver/-/semver-4.3.0.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/semver/-/semver-4.2.0.tgz",
- "readme": "ERROR: No README data found!"
+ "_resolved": "https://registry.npmjs.org/semver/-/semver-4.3.0.tgz"
}
diff --git a/deps/npm/node_modules/semver/semver.browser.js b/deps/npm/node_modules/semver/semver.browser.js
index 49d785650e..1ee7204222 100644
--- a/deps/npm/node_modules/semver/semver.browser.js
+++ b/deps/npm/node_modules/semver/semver.browser.js
@@ -505,6 +505,21 @@ function rcompareIdentifiers(a, b) {
return compareIdentifiers(b, a);
}
+exports.major = major;
+function major(a, loose) {
+ return new SemVer(a, loose).major;
+}
+
+exports.minor = minor;
+function minor(a, loose) {
+ return new SemVer(a, loose).minor;
+}
+
+exports.patch = patch;
+function patch(a, loose) {
+ return new SemVer(a, loose).patch;
+}
+
exports.compare = compare;
function compare(a, b, loose) {
return new SemVer(a, loose).compare(b);
diff --git a/deps/npm/node_modules/semver/semver.browser.js.gz b/deps/npm/node_modules/semver/semver.browser.js.gz
index c6b27c9ad311eba6e0be891e8c4decf10a8f4fb7..4bd16d689ccfb4706c0aed722ee0b8c03c683ce7 100644
GIT binary patch
literal 7786
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
B_{jhO
diff --git a/deps/npm/node_modules/semver/semver.js b/deps/npm/node_modules/semver/semver.js
index 026173eabc..544bc83123 100644
--- a/deps/npm/node_modules/semver/semver.js
+++ b/deps/npm/node_modules/semver/semver.js
@@ -515,6 +515,21 @@ function rcompareIdentifiers(a, b) {
return compareIdentifiers(b, a);
}
+exports.major = major;
+function major(a, loose) {
+ return new SemVer(a, loose).major;
+}
+
+exports.minor = minor;
+function minor(a, loose) {
+ return new SemVer(a, loose).minor;
+}
+
+exports.patch = patch;
+function patch(a, loose) {
+ return new SemVer(a, loose).patch;
+}
+
exports.compare = compare;
function compare(a, b, loose) {
return new SemVer(a, loose).compare(b);
diff --git a/deps/npm/node_modules/semver/semver.min.js b/deps/npm/node_modules/semver/semver.min.js
index 2f07e16ed3..6de8c73459 100644
--- a/deps/npm/node_modules/semver/semver.min.js
+++ b/deps/npm/node_modules/semver/semver.min.js
@@ -1 +1 @@
-(function(e){if(typeof module==="object"&&module.exports===e)e=module.exports=H;e.SEMVER_SPEC_VERSION="2.0.0";var r=e.re=[];var t=e.src=[];var n=0;var i=n++;t[i]="0|[1-9]\\d*";var s=n++;t[s]="[0-9]+";var a=n++;t[a]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var o=n++;t[o]="("+t[i]+")\\."+"("+t[i]+")\\."+"("+t[i]+")";var f=n++;t[f]="("+t[s]+")\\."+"("+t[s]+")\\."+"("+t[s]+")";var u=n++;t[u]="(?:"+t[i]+"|"+t[a]+")";var l=n++;t[l]="(?:"+t[s]+"|"+t[a]+")";var p=n++;t[p]="(?:-("+t[u]+"(?:\\."+t[u]+")*))";var c=n++;t[c]="(?:-?("+t[l]+"(?:\\."+t[l]+")*))";var h=n++;t[h]="[0-9A-Za-z-]+";var v=n++;t[v]="(?:\\+("+t[h]+"(?:\\."+t[h]+")*))";var m=n++;var g="v?"+t[o]+t[p]+"?"+t[v]+"?";t[m]="^"+g+"$";var w="[v=\\s]*"+t[f]+t[c]+"?"+t[v]+"?";var d=n++;t[d]="^"+w+"$";var y=n++;t[y]="((?:<|>)?=?)";var j=n++;t[j]=t[s]+"|x|X|\\*";var b=n++;t[b]=t[i]+"|x|X|\\*";var $=n++;t[$]="[v=\\s]*("+t[b]+")"+"(?:\\.("+t[b]+")"+"(?:\\.("+t[b]+")"+"(?:"+t[p]+")?"+t[v]+"?"+")?)?";var k=n++;t[k]="[v=\\s]*("+t[j]+")"+"(?:\\.("+t[j]+")"+"(?:\\.("+t[j]+")"+"(?:"+t[c]+")?"+t[v]+"?"+")?)?";var E=n++;t[E]="^"+t[y]+"\\s*"+t[$]+"$";var x=n++;t[x]="^"+t[y]+"\\s*"+t[k]+"$";var R=n++;t[R]="(?:~>?)";var S=n++;t[S]="(\\s*)"+t[R]+"\\s+";r[S]=new RegExp(t[S],"g");var V="$1~";var I=n++;t[I]="^"+t[R]+t[$]+"$";var T=n++;t[T]="^"+t[R]+t[k]+"$";var A=n++;t[A]="(?:\\^)";var C=n++;t[C]="(\\s*)"+t[A]+"\\s+";r[C]=new RegExp(t[C],"g");var M="$1^";var z=n++;t[z]="^"+t[A]+t[$]+"$";var N=n++;t[N]="^"+t[A]+t[k]+"$";var P=n++;t[P]="^"+t[y]+"\\s*("+w+")$|^$";var Z=n++;t[Z]="^"+t[y]+"\\s*("+g+")$|^$";var q=n++;t[q]="(\\s*)"+t[y]+"\\s*("+w+"|"+t[$]+")";r[q]=new RegExp(t[q],"g");var L="$1$2$3";var X=n++;t[X]="^\\s*("+t[$]+")"+"\\s+-\\s+"+"("+t[$]+")"+"\\s*$";var _=n++;t[_]="^\\s*("+t[k]+")"+"\\s+-\\s+"+"("+t[k]+")"+"\\s*$";var O=n++;t[O]="(<|>)?=?\\s*\\*";for(var B=0;B'};H.prototype.toString=function(){return this.version};H.prototype.compare=function(e){if(!(e instanceof H))e=new H(e,this.loose);return this.compareMain(e)||this.comparePre(e)};H.prototype.compareMain=function(e){if(!(e instanceof H))e=new H(e,this.loose);return U(this.major,e.major)||U(this.minor,e.minor)||U(this.patch,e.patch)};H.prototype.comparePre=function(e){if(!(e instanceof H))e=new H(e,this.loose);if(this.prerelease.length&&!e.prerelease.length)return-1;else if(!this.prerelease.length&&e.prerelease.length)return 1;else if(!this.prerelease.length&&!e.prerelease.length)return 0;var r=0;do{var t=this.prerelease[r];var n=e.prerelease[r];if(t===undefined&&n===undefined)return 0;else if(n===undefined)return 1;else if(t===undefined)return-1;else if(t===n)continue;else return U(t,n)}while(++r)};H.prototype.inc=function(e,r){switch(e){case"premajor":this.prerelease.length=0;this.patch=0;this.minor=0;this.major++;this.inc("pre",r);break;case"preminor":this.prerelease.length=0;this.patch=0;this.minor++;this.inc("pre",r);break;case"prepatch":this.prerelease.length=0;this.inc("patch",r);this.inc("pre",r);break;case"prerelease":if(this.prerelease.length===0)this.inc("patch",r);this.inc("pre",r);break;case"major":if(this.minor!==0||this.patch!==0||this.prerelease.length===0)this.major++;this.minor=0;this.patch=0;this.prerelease=[];break;case"minor":if(this.patch!==0||this.prerelease.length===0)this.minor++;this.patch=0;this.prerelease=[];break;case"patch":if(this.prerelease.length===0)this.patch++;this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else{var t=this.prerelease.length;while(--t>=0){if(typeof this.prerelease[t]==="number"){this.prerelease[t]++;t=-2}}if(t===-1)this.prerelease.push(0)}if(r){if(this.prerelease[0]===r){if(isNaN(this.prerelease[1]))this.prerelease=[r,0]}else this.prerelease=[r,0]}break;default:throw new Error("invalid increment argument: "+e)}this.format();return this};e.inc=J;function J(e,r,t,n){if(typeof t==="string"){n=t;t=undefined}try{return new H(e,t).inc(r,n).version}catch(i){return null}}e.diff=K;function K(e,r){if(ar(e,r)){return null}else{var t=D(e);var n=D(r);if(t.prerelease.length||n.prerelease.length){for(var i in t){if(i==="major"||i==="minor"||i==="patch"){if(t[i]!==n[i]){return"pre"+i}}}return"prerelease"}for(var i in t){if(i==="major"||i==="minor"||i==="patch"){if(t[i]!==n[i]){return i}}}}}e.compareIdentifiers=U;var Q=/^[0-9]+$/;function U(e,r){var t=Q.test(e);var n=Q.test(r);if(t&&n){e=+e;r=+r}return t&&!n?-1:n&&!t?1:er?1:0}e.rcompareIdentifiers=W;function W(e,r){return U(r,e)}e.compare=Y;function Y(e,r,t){return new H(e,t).compare(r)}e.compareLoose=er;function er(e,r){return Y(e,r,true)}e.rcompare=rr;function rr(e,r,t){return Y(r,e,t)}e.sort=tr;function tr(r,t){return r.sort(function(r,n){return e.compare(r,n,t)})}e.rsort=nr;function nr(r,t){return r.sort(function(r,n){return e.rcompare(r,n,t)})}e.gt=ir;function ir(e,r,t){return Y(e,r,t)>0}e.lt=sr;function sr(e,r,t){return Y(e,r,t)<0}e.eq=ar;function ar(e,r,t){return Y(e,r,t)===0}e.neq=or;function or(e,r,t){return Y(e,r,t)!==0}e.gte=fr;function fr(e,r,t){return Y(e,r,t)>=0}e.lte=ur;function ur(e,r,t){return Y(e,r,t)<=0}e.cmp=lr;function lr(e,r,t,n){var i;switch(r){case"===":if(typeof e==="object")e=e.version;if(typeof t==="object")t=t.version;i=e===t;break;case"!==":if(typeof e==="object")e=e.version;if(typeof t==="object")t=t.version;i=e!==t;break;case"":case"=":case"==":i=ar(e,t,n);break;case"!=":i=or(e,t,n);break;case">":i=ir(e,t,n);break;case">=":i=fr(e,t,n);break;case"<":i=sr(e,t,n);break;case"<=":i=ur(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return i}e.Comparator=pr;function pr(e,r){if(e instanceof pr){if(e.loose===r)return e;else e=e.value}if(!(this instanceof pr))return new pr(e,r);this.loose=r;this.parse(e);if(this.semver===cr)this.value="";else this.value=this.operator+this.semver.version}var cr={};pr.prototype.parse=function(e){var t=this.loose?r[P]:r[Z];var n=e.match(t);if(!n)throw new TypeError("Invalid comparator: "+e);this.operator=n[1];if(this.operator==="=")this.operator="";if(!n[2])this.semver=cr;else this.semver=new H(n[2],this.loose)};pr.prototype.inspect=function(){return''};pr.prototype.toString=function(){return this.value};pr.prototype.test=function(e){if(this.semver===cr)return true;if(typeof e==="string")e=new H(e,this.loose);return lr(e,this.operator,this.semver,this.loose)};e.Range=hr;function hr(e,r){if(e instanceof hr&&e.loose===r)return e;if(!(this instanceof hr))return new hr(e,r);this.loose=r;this.raw=e;this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length});if(!this.set.length){throw new TypeError("Invalid SemVer Range: "+e)}this.format()}hr.prototype.inspect=function(){return''};hr.prototype.format=function(){this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim();return this.range};hr.prototype.toString=function(){return this.range};hr.prototype.parseRange=function(e){var t=this.loose;e=e.trim();var n=t?r[_]:r[X];e=e.replace(n,Er);e=e.replace(r[q],L);e=e.replace(r[S],V);e=e.replace(r[C],M);e=e.split(/\s+/).join(" ");var i=t?r[P]:r[Z];var s=e.split(" ").map(function(e){return mr(e,t)}).join(" ").split(/\s+/);if(this.loose){s=s.filter(function(e){return!!e.match(i)})}s=s.map(function(e){return new pr(e,t)});return s};e.toComparators=vr;function vr(e,r){return new hr(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})}function mr(e,r){e=yr(e,r);e=wr(e,r);e=br(e,r);e=kr(e,r);return e}function gr(e){return!e||e.toLowerCase()==="x"||e==="*"}function wr(e,r){return e.trim().split(/\s+/).map(function(e){return dr(e,r)}).join(" ")}function dr(e,t){var n=t?r[T]:r[I];return e.replace(n,function(e,r,t,n,i){var s;if(gr(r))s="";else if(gr(t))s=">="+r+".0.0 <"+(+r+1)+".0.0";else if(gr(n))s=">="+r+"."+t+".0 <"+r+"."+(+t+1)+".0";else if(i){if(i.charAt(0)!=="-")i="-"+i;s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+" <"+r+"."+(+t+1)+".0";return s})}function yr(e,r){return e.trim().split(/\s+/).map(function(e){return jr(e,r)}).join(" ")}function jr(e,t){var n=t?r[N]:r[z];return e.replace(n,function(e,r,t,n,i){var s;if(gr(r))s="";else if(gr(t))s=">="+r+".0.0 <"+(+r+1)+".0.0";else if(gr(n)){if(r==="0")s=">="+r+"."+t+".0 <"+r+"."+(+t+1)+".0";else s=">="+r+"."+t+".0 <"+(+r+1)+".0.0"}else if(i){if(i.charAt(0)!=="-")i="-"+i;if(r==="0"){if(t==="0")s=">="+r+"."+t+"."+n+i+" <"+r+"."+t+"."+(+n+1);else s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+i+" <"+(+r+1)+".0.0"}else{if(r==="0"){if(t==="0")s=">="+r+"."+t+"."+n+" <"+r+"."+t+"."+(+n+1);else s=">="+r+"."+t+"."+n+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+" <"+(+r+1)+".0.0"}return s})}function br(e,r){return e.split(/\s+/).map(function(e){return $r(e,r)}).join(" ")}function $r(e,t){e=e.trim();var n=t?r[x]:r[E];return e.replace(n,function(e,r,t,n,i,s){var a=gr(t);var o=a||gr(n);var f=o||gr(i);var u=f;if(r==="="&&u)r="";if(a){if(r===">"||r==="<"){e="<0.0.0"}else{e="*"}}else if(r&&u){if(o)n=0;if(f)i=0;if(r===">"){r=">=";if(o){t=+t+1;n=0;i=0}else if(f){n=+n+1;i=0}}else if(r==="<="){r="<";if(o)t=+t+1;else n=+n+1}e=r+t+"."+n+"."+i}else if(o){e=">="+t+".0.0 <"+(+t+1)+".0.0"}else if(f){e=">="+t+"."+n+".0 <"+t+"."+(+n+1)+".0"}return e})}function kr(e,t){return e.trim().replace(r[O],"")}function Er(e,r,t,n,i,s,a,o,f,u,l,p,c){if(gr(t))r="";else if(gr(n))r=">="+t+".0.0";else if(gr(i))r=">="+t+"."+n+".0";else r=">="+r;if(gr(f))o="";else if(gr(u))o="<"+(+f+1)+".0.0";else if(gr(l))o="<"+f+"."+(+u+1)+".0";else if(p)o="<="+f+"."+u+"."+l+"-"+p;else o="<="+o;return(r+" "+o).trim()}hr.prototype.test=function(e){if(!e)return false;if(typeof e==="string")e=new H(e,this.loose);for(var r=0;r0){var n=e[t].semver;if(n.major===r.major&&n.minor===r.minor&&n.patch===r.patch)return true}}return false}return true}e.satisfies=Rr;function Rr(e,r,t){try{r=new hr(r,t)}catch(n){return false}return r.test(e)}e.maxSatisfying=Sr;function Sr(e,r,t){return e.filter(function(e){return Rr(e,r,t)}).sort(function(e,r){return rr(e,r,t)})[0]||null}e.validRange=Vr;function Vr(e,r){try{return new hr(e,r).range||"*"}catch(t){return null}}e.ltr=Ir;function Ir(e,r,t){return Ar(e,r,"<",t)}e.gtr=Tr;function Tr(e,r,t){return Ar(e,r,">",t)}e.outside=Ar;function Ar(e,r,t,n){e=new H(e,n);r=new hr(r,n);var i,s,a,o,f;switch(t){case">":i=ir;s=ur;a=sr;o=">";f=">=";break;case"<":i=sr;s=fr;a=ir;o="<";f="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Rr(e,r,n)){return false}for(var u=0;u)?=?)";var j=n++;t[j]=t[s]+"|x|X|\\*";var b=n++;t[b]=t[i]+"|x|X|\\*";var $=n++;t[$]="[v=\\s]*("+t[b]+")"+"(?:\\.("+t[b]+")"+"(?:\\.("+t[b]+")"+"(?:"+t[p]+")?"+t[v]+"?"+")?)?";var k=n++;t[k]="[v=\\s]*("+t[j]+")"+"(?:\\.("+t[j]+")"+"(?:\\.("+t[j]+")"+"(?:"+t[c]+")?"+t[v]+"?"+")?)?";var E=n++;t[E]="^"+t[y]+"\\s*"+t[$]+"$";var x=n++;t[x]="^"+t[y]+"\\s*"+t[k]+"$";var R=n++;t[R]="(?:~>?)";var S=n++;t[S]="(\\s*)"+t[R]+"\\s+";r[S]=new RegExp(t[S],"g");var V="$1~";var I=n++;t[I]="^"+t[R]+t[$]+"$";var T=n++;t[T]="^"+t[R]+t[k]+"$";var A=n++;t[A]="(?:\\^)";var C=n++;t[C]="(\\s*)"+t[A]+"\\s+";r[C]=new RegExp(t[C],"g");var M="$1^";var z=n++;t[z]="^"+t[A]+t[$]+"$";var N=n++;t[N]="^"+t[A]+t[k]+"$";var P=n++;t[P]="^"+t[y]+"\\s*("+w+")$|^$";var Z=n++;t[Z]="^"+t[y]+"\\s*("+g+")$|^$";var q=n++;t[q]="(\\s*)"+t[y]+"\\s*("+w+"|"+t[$]+")";r[q]=new RegExp(t[q],"g");var L="$1$2$3";var X=n++;t[X]="^\\s*("+t[$]+")"+"\\s+-\\s+"+"("+t[$]+")"+"\\s*$";var _=n++;t[_]="^\\s*("+t[k]+")"+"\\s+-\\s+"+"("+t[k]+")"+"\\s*$";var O=n++;t[O]="(<|>)?=?\\s*\\*";for(var B=0;B'};H.prototype.toString=function(){return this.version};H.prototype.compare=function(e){if(!(e instanceof H))e=new H(e,this.loose);return this.compareMain(e)||this.comparePre(e)};H.prototype.compareMain=function(e){if(!(e instanceof H))e=new H(e,this.loose);return U(this.major,e.major)||U(this.minor,e.minor)||U(this.patch,e.patch)};H.prototype.comparePre=function(e){if(!(e instanceof H))e=new H(e,this.loose);if(this.prerelease.length&&!e.prerelease.length)return-1;else if(!this.prerelease.length&&e.prerelease.length)return 1;else if(!this.prerelease.length&&!e.prerelease.length)return 0;var r=0;do{var t=this.prerelease[r];var n=e.prerelease[r];if(t===undefined&&n===undefined)return 0;else if(n===undefined)return 1;else if(t===undefined)return-1;else if(t===n)continue;else return U(t,n)}while(++r)};H.prototype.inc=function(e,r){switch(e){case"premajor":this.prerelease.length=0;this.patch=0;this.minor=0;this.major++;this.inc("pre",r);break;case"preminor":this.prerelease.length=0;this.patch=0;this.minor++;this.inc("pre",r);break;case"prepatch":this.prerelease.length=0;this.inc("patch",r);this.inc("pre",r);break;case"prerelease":if(this.prerelease.length===0)this.inc("patch",r);this.inc("pre",r);break;case"major":if(this.minor!==0||this.patch!==0||this.prerelease.length===0)this.major++;this.minor=0;this.patch=0;this.prerelease=[];break;case"minor":if(this.patch!==0||this.prerelease.length===0)this.minor++;this.patch=0;this.prerelease=[];break;case"patch":if(this.prerelease.length===0)this.patch++;this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else{var t=this.prerelease.length;while(--t>=0){if(typeof this.prerelease[t]==="number"){this.prerelease[t]++;t=-2}}if(t===-1)this.prerelease.push(0)}if(r){if(this.prerelease[0]===r){if(isNaN(this.prerelease[1]))this.prerelease=[r,0]}else this.prerelease=[r,0]}break;default:throw new Error("invalid increment argument: "+e)}this.format();return this};e.inc=J;function J(e,r,t,n){if(typeof t==="string"){n=t;t=undefined}try{return new H(e,t).inc(r,n).version}catch(i){return null}}e.diff=K;function K(e,r){if(ur(e,r)){return null}else{var t=D(e);var n=D(r);if(t.prerelease.length||n.prerelease.length){for(var i in t){if(i==="major"||i==="minor"||i==="patch"){if(t[i]!==n[i]){return"pre"+i}}}return"prerelease"}for(var i in t){if(i==="major"||i==="minor"||i==="patch"){if(t[i]!==n[i]){return i}}}}}e.compareIdentifiers=U;var Q=/^[0-9]+$/;function U(e,r){var t=Q.test(e);var n=Q.test(r);if(t&&n){e=+e;r=+r}return t&&!n?-1:n&&!t?1:er?1:0}e.rcompareIdentifiers=W;function W(e,r){return U(r,e)}e.major=Y;function Y(e,r){return new H(e,r).major}e.minor=er;function er(e,r){return new H(e,r).minor}e.patch=rr;function rr(e,r){return new H(e,r).patch}e.compare=tr;function tr(e,r,t){return new H(e,t).compare(r)}e.compareLoose=nr;function nr(e,r){return tr(e,r,true)}e.rcompare=ir;function ir(e,r,t){return tr(r,e,t)}e.sort=sr;function sr(r,t){return r.sort(function(r,n){return e.compare(r,n,t)})}e.rsort=ar;function ar(r,t){return r.sort(function(r,n){return e.rcompare(r,n,t)})}e.gt=or;function or(e,r,t){return tr(e,r,t)>0}e.lt=fr;function fr(e,r,t){return tr(e,r,t)<0}e.eq=ur;function ur(e,r,t){return tr(e,r,t)===0}e.neq=lr;function lr(e,r,t){return tr(e,r,t)!==0}e.gte=pr;function pr(e,r,t){return tr(e,r,t)>=0}e.lte=cr;function cr(e,r,t){return tr(e,r,t)<=0}e.cmp=hr;function hr(e,r,t,n){var i;switch(r){case"===":if(typeof e==="object")e=e.version;if(typeof t==="object")t=t.version;i=e===t;break;case"!==":if(typeof e==="object")e=e.version;if(typeof t==="object")t=t.version;i=e!==t;break;case"":case"=":case"==":i=ur(e,t,n);break;case"!=":i=lr(e,t,n);break;case">":i=or(e,t,n);break;case">=":i=pr(e,t,n);break;case"<":i=fr(e,t,n);break;case"<=":i=cr(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return i}e.Comparator=vr;function vr(e,r){if(e instanceof vr){if(e.loose===r)return e;else e=e.value}if(!(this instanceof vr))return new vr(e,r);this.loose=r;this.parse(e);if(this.semver===mr)this.value="";else this.value=this.operator+this.semver.version}var mr={};vr.prototype.parse=function(e){var t=this.loose?r[P]:r[Z];var n=e.match(t);if(!n)throw new TypeError("Invalid comparator: "+e);this.operator=n[1];if(this.operator==="=")this.operator="";if(!n[2])this.semver=mr;else this.semver=new H(n[2],this.loose)};vr.prototype.inspect=function(){return''};vr.prototype.toString=function(){return this.value};vr.prototype.test=function(e){if(this.semver===mr)return true;if(typeof e==="string")e=new H(e,this.loose);return hr(e,this.operator,this.semver,this.loose)};e.Range=gr;function gr(e,r){if(e instanceof gr&&e.loose===r)return e;if(!(this instanceof gr))return new gr(e,r);this.loose=r;this.raw=e;this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length});if(!this.set.length){throw new TypeError("Invalid SemVer Range: "+e)}this.format()}gr.prototype.inspect=function(){return''};gr.prototype.format=function(){this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim();return this.range};gr.prototype.toString=function(){return this.range};gr.prototype.parseRange=function(e){var t=this.loose;e=e.trim();var n=t?r[_]:r[X];e=e.replace(n,Sr);e=e.replace(r[q],L);e=e.replace(r[S],V);e=e.replace(r[C],M);e=e.split(/\s+/).join(" ");var i=t?r[P]:r[Z];var s=e.split(" ").map(function(e){return dr(e,t)}).join(" ").split(/\s+/);if(this.loose){s=s.filter(function(e){return!!e.match(i)})}s=s.map(function(e){return new vr(e,t)});return s};e.toComparators=wr;function wr(e,r){return new gr(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})}function dr(e,r){e=$r(e,r);e=jr(e,r);e=Er(e,r);e=Rr(e,r);return e}function yr(e){return!e||e.toLowerCase()==="x"||e==="*"}function jr(e,r){return e.trim().split(/\s+/).map(function(e){return br(e,r)}).join(" ")}function br(e,t){var n=t?r[T]:r[I];return e.replace(n,function(e,r,t,n,i){var s;if(yr(r))s="";else if(yr(t))s=">="+r+".0.0 <"+(+r+1)+".0.0";else if(yr(n))s=">="+r+"."+t+".0 <"+r+"."+(+t+1)+".0";else if(i){if(i.charAt(0)!=="-")i="-"+i;s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+" <"+r+"."+(+t+1)+".0";return s})}function $r(e,r){return e.trim().split(/\s+/).map(function(e){return kr(e,r)}).join(" ")}function kr(e,t){var n=t?r[N]:r[z];return e.replace(n,function(e,r,t,n,i){var s;if(yr(r))s="";else if(yr(t))s=">="+r+".0.0 <"+(+r+1)+".0.0";else if(yr(n)){if(r==="0")s=">="+r+"."+t+".0 <"+r+"."+(+t+1)+".0";else s=">="+r+"."+t+".0 <"+(+r+1)+".0.0"}else if(i){if(i.charAt(0)!=="-")i="-"+i;if(r==="0"){if(t==="0")s=">="+r+"."+t+"."+n+i+" <"+r+"."+t+"."+(+n+1);else s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+i+" <"+(+r+1)+".0.0"}else{if(r==="0"){if(t==="0")s=">="+r+"."+t+"."+n+" <"+r+"."+t+"."+(+n+1);else s=">="+r+"."+t+"."+n+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+" <"+(+r+1)+".0.0"}return s})}function Er(e,r){return e.split(/\s+/).map(function(e){return xr(e,r)}).join(" ")}function xr(e,t){e=e.trim();var n=t?r[x]:r[E];return e.replace(n,function(e,r,t,n,i,s){var a=yr(t);var o=a||yr(n);var f=o||yr(i);var u=f;if(r==="="&&u)r="";if(a){if(r===">"||r==="<"){e="<0.0.0"}else{e="*"}}else if(r&&u){if(o)n=0;if(f)i=0;if(r===">"){r=">=";if(o){t=+t+1;n=0;i=0}else if(f){n=+n+1;i=0}}else if(r==="<="){r="<";if(o)t=+t+1;else n=+n+1}e=r+t+"."+n+"."+i}else if(o){e=">="+t+".0.0 <"+(+t+1)+".0.0"}else if(f){e=">="+t+"."+n+".0 <"+t+"."+(+n+1)+".0"}return e})}function Rr(e,t){return e.trim().replace(r[O],"")}function Sr(e,r,t,n,i,s,a,o,f,u,l,p,c){if(yr(t))r="";else if(yr(n))r=">="+t+".0.0";else if(yr(i))r=">="+t+"."+n+".0";else r=">="+r;if(yr(f))o="";else if(yr(u))o="<"+(+f+1)+".0.0";else if(yr(l))o="<"+f+"."+(+u+1)+".0";else if(p)o="<="+f+"."+u+"."+l+"-"+p;else o="<="+o;return(r+" "+o).trim()}gr.prototype.test=function(e){if(!e)return false;if(typeof e==="string")e=new H(e,this.loose);for(var r=0;r0){var n=e[t].semver;if(n.major===r.major&&n.minor===r.minor&&n.patch===r.patch)return true}}return false}return true}e.satisfies=Ir;function Ir(e,r,t){try{r=new gr(r,t)}catch(n){return false}return r.test(e)}e.maxSatisfying=Tr;function Tr(e,r,t){return e.filter(function(e){return Ir(e,r,t)}).sort(function(e,r){return ir(e,r,t)})[0]||null}e.validRange=Ar;function Ar(e,r){try{return new gr(e,r).range||"*"}catch(t){return null}}e.ltr=Cr;function Cr(e,r,t){return zr(e,r,"<",t)}e.gtr=Mr;function Mr(e,r,t){return zr(e,r,">",t)}e.outside=zr;function zr(e,r,t,n){e=new H(e,n);r=new gr(r,n);var i,s,a,o,f;switch(t){case">":i=or;s=cr;a=fr;o=">";f=">=";break;case"<":i=fr;s=pr;a=or;o="<";f="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Ir(e,r,n)){return false}for(var u=0;ua
z0wFmk2?$vI>~HsOPddr618ryCbSCKbcK7zz?d|Qk?P(VIX%I(kZr=yfcKU73<7w+E
zKFdPR7_;Kj3+|`Z)|LYG`0YFvX#!K+=Bx&M`O~{^5uHqc6wr_V>QP$MM12H_Uq8
z>-YMWd+mvqV7w)!2lKXoVc0jS*x@rVgG2Hdvg;7X2VpPck8XU$mAPKkD^X_Fdm
z<59W4k
z#WLIVAd3vRYNdTzXjc1!?c&wA{nfShNx81)M=IhLQWiapaM>
zA;vEzHvUu96@WSK%{`HD_R`hoXzOL0cT)Raoo4AsKoS}VNM)|zX(pmp)Ju7i!f`u7
zZm%TvAj-lJm|c5eaK?Trnf(OQLNQC(OF7Vd(ox#G<{|+!P40)>i`dU4`Oh`-UMhmC
zwhia+JoJ3te)f6HVADVASeCt>^)bKtzy%!e1#cxe8i==oC`rA@$I9WA0`3NV;1<@;)c6JeoL`$jQD2#IDrT%%_@R;o)x@a9tLUK>RG75ylobA$^hVH
zStV^gD?-oV1D=z(r&$offjR!qWQ6}1{03tZ61E0dr)}r2VD&hS(P0E+#d_#6z$NFh
zQh&$7DxlE597^3$>zZD@kVmuh+&1|+%<5{g67eDqA}MMSx&}$^n&Lue%%PGs`4yQ@0*Ky=L)NpRPWA_bjG#Tw^m9lOiEip{Oq;(kwdT(;(t!TU(JiESJy{
zHcpocqz%*E>U3oLag+v8MoGI2hE8PXH|Igf+m0jb`VR9ApW?xj+yt0Y!M{EzV}V{W
zfUH5Y4Z%D{PVAc*vv1^6Ji>7R>$Q=mg-6$^;NGQMEQ3UkU*-XvCDHddD|(5E9KOes
zm{^0Ap$$Ii+mB{V#@1Y=ig3pEDS=2X=6Ln06}wkFQZZun$TB5S{wVZLA{$9<~^{
z=mEx*m<98d{KUgtV>0Ng6T5k@6Q!#*Qn#D#01Ko0Qcn%(1UoTNc6G{yMaOJq8dYH3
z=Xp;1x4T`Js5j4&^LAg>NNK$s21EHKoi5$;QjV
zbWm1OR7C|;ML`6^rsYxE^298|4=U{{<%fAD=B`ROzmyf}FPL;Xn4(NuGP9_JvIHzu
zWWPKW-|m;HM7f^?uqn=UUzUbJap=pU7^>p4U^->LmJcI-u%|1rhltI;vdqBFR$}8x1NadTga$#ll3+s-
z%u>$g2Elx_^h}A*nQ!3xtL2yY{?(kF8~Ep#2Tp}eQ#&{lH_k|+dDGMoXQqua
zlE|-3Eg!lK?TdKMg_p(xk6YOGMT+LVJ-G{Tj$Iqhy%xn8SGlfTi(2DHG&O#_Fyqbb
z8lX4(HMES`uo1cj6basVi+fLDsOSrPkK-n$uEp;Hj=ccO!kkoz6BIwk6CsV23o5w
z(sSw}k#(+wVGV+*%#Wz%{ko?5_uD3Apwv1j6+Yi>p~%pv(ZHEr?-DGzyvRv#S*`7Q
zUG}Z*aL8;`F=EG9qiPx6JMy9#XES3%%vNlOnZSlZ!)|B{|5-KsXDh?sXf7sPzMjf<
z-81ZBFW|rA>9bXRz*f0`q#8v(*v_Szc5fO$?iWp@y7E2??vdK!hO`yf1fK|G5l5tIj?}dF6P3fVv
zDaYkS@7gV28@^x``Z$r3y3HSTjvA0#Q}p$YZuBJWg3^+
zEMYgsHosY}wrP{DkD`?mD&g5nVP=>Ov?$g;qxCu4q};&SMe(&?d>x6(D-ka_d=rMP
z_+o+DzK(CW*n=9Pjn$=f3$ZOT=TobsyQpf;t8!92tWfh*(VA+Oj88@Vsq8&Q&_VH3
zW=62tSi~x)6DYz2V+2%#{FxMIz5=BZ1QnHoZw~!lzcsX+HVn3HHLhSs6>Q5%5eF&M
zunho3S5gJ)Hr(^iJ+Yg%`&e*WUCR#STLqN8b$*r;Ie}v}a#dZFMv`WNGH?x>ZvF#j
zU9NN1<&v}BptJ7&Z_Yx~%NnR}J$d#q?hkDqM;huVLjq)rxJ|)>ASkztZ`M(h?
zM6#^U{bPiEyr_RKs;go)Mf83>q8}2
z3mKyHW3gBc1Dk&TH7$aMSzB9~t!s9#jOZOm!}4Qjp_JCJZ+MZ*>|8{sKpsdL+xX)-
z_?SX;_T7>f7)6@jl}Ps~L+`i}8L#ieXNt{H^s$7N?4=k?F&PpMVj*!9Q4aNK>DV4N
z6E%les(|iK&5fNl?6zqIRk4!jW(caVDvme9uSew9dhRQWnYR=Cr9(+^EKFZ^yiVMi
zcCt>`nRk3?RF#-SEmuVnWT;e`4Jxyw1!2&HpgcIW?YPD}lOSoLX>;xiHO7>zk}Vxf
zbBVz;N+$me9n4vCg+%i)#d#aHCKTpzQR~jWcMsd(`o1#tfZ^k=Ub?4@uSjB8yG*!(
zet7di=-Xa87LyLQ&AVQ1uAY~5+6PJ(dWjUDi-yIMOR9g=gU=?qX!-a^WTX@#rMeRSI(W3lin
z)b`d^0(Q|W)s3Ttst`@Lw!Aeol>|^`ZS^9Gsau-}suKn5c~@t)`ox`W7m2?3UjcOU
cd_~FtaU_pWurPys}ZaiZVz`l2}SS;C^rr{*4
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
diff --git a/deps/npm/node_modules/semver/test/index.js b/deps/npm/node_modules/semver/test/index.js
index 1528bb7788..926d560fe0 100644
--- a/deps/npm/node_modules/semver/test/index.js
+++ b/deps/npm/node_modules/semver/test/index.js
@@ -50,7 +50,9 @@ test('\ncomparison tests', function(t) {
['1.2.3-a.10', '1.2.3-a.5'],
['1.2.3-a.b', '1.2.3-a.5'],
['1.2.3-a.b', '1.2.3-a'],
- ['1.2.3-a.b.c.10.d.5', '1.2.3-a.b.c.5.d.100']
+ ['1.2.3-a.b.c.10.d.5', '1.2.3-a.b.c.5.d.100'],
+ ['1.2.3-r2', '1.2.3-r100'],
+ ['1.2.3-r100', '1.2.3-R2']
].forEach(function(v) {
var v0 = v[0];
var v1 = v[1];
diff --git a/deps/npm/node_modules/semver/test/major-minor-patch.js b/deps/npm/node_modules/semver/test/major-minor-patch.js
new file mode 100644
index 0000000000..e9d4039c8b
--- /dev/null
+++ b/deps/npm/node_modules/semver/test/major-minor-patch.js
@@ -0,0 +1,72 @@
+var tap = require('tap');
+var test = tap.test;
+var semver = require('../semver.js');
+
+test('\nmajor tests', function(t) {
+ // [range, version]
+ // Version should be detectable despite extra characters
+ [
+ ['1.2.3', 1],
+ [' 1.2.3 ', 1],
+ [' 2.2.3-4 ', 2],
+ [' 3.2.3-pre ', 3],
+ ['v5.2.3', 5],
+ [' v8.2.3 ', 8],
+ ['\t13.2.3', 13],
+ ['=21.2.3', 21, true],
+ ['v=34.2.3', 34, true]
+ ].forEach(function(tuple) {
+ var range = tuple[0];
+ var version = tuple[1];
+ var loose = tuple[2] || false;
+ var msg = 'major(' + range + ') = ' + version;
+ t.equal(semver.major(range, loose), version, msg);
+ });
+ t.end();
+});
+
+test('\nminor tests', function(t) {
+ // [range, version]
+ // Version should be detectable despite extra characters
+ [
+ ['1.1.3', 1],
+ [' 1.1.3 ', 1],
+ [' 1.2.3-4 ', 2],
+ [' 1.3.3-pre ', 3],
+ ['v1.5.3', 5],
+ [' v1.8.3 ', 8],
+ ['\t1.13.3', 13],
+ ['=1.21.3', 21, true],
+ ['v=1.34.3', 34, true]
+ ].forEach(function(tuple) {
+ var range = tuple[0];
+ var version = tuple[1];
+ var loose = tuple[2] || false;
+ var msg = 'minor(' + range + ') = ' + version;
+ t.equal(semver.minor(range, loose), version, msg);
+ });
+ t.end();
+});
+
+test('\npatch tests', function(t) {
+ // [range, version]
+ // Version should be detectable despite extra characters
+ [
+ ['1.2.1', 1],
+ [' 1.2.1 ', 1],
+ [' 1.2.2-4 ', 2],
+ [' 1.2.3-pre ', 3],
+ ['v1.2.5', 5],
+ [' v1.2.8 ', 8],
+ ['\t1.2.13', 13],
+ ['=1.2.21', 21, true],
+ ['v=1.2.34', 34, true]
+ ].forEach(function(tuple) {
+ var range = tuple[0];
+ var version = tuple[1];
+ var loose = tuple[2] || false;
+ var msg = 'patch(' + range + ') = ' + version;
+ t.equal(semver.patch(range, loose), version, msg);
+ });
+ t.end();
+});
diff --git a/deps/npm/package.json b/deps/npm/package.json
index 07b74e0960..55a4ea72e3 100644
--- a/deps/npm/package.json
+++ b/deps/npm/package.json
@@ -1,5 +1,5 @@
{
- "version": "2.5.1",
+ "version": "2.6.1",
"name": "npm",
"description": "a package manager for JavaScript",
"keywords": [
@@ -53,11 +53,11 @@
"fstream-npm": "~1.0.1",
"github-url-from-git": "~1.4.0",
"github-url-from-username-repo": "~1.0.2",
- "glob": "~4.3.5",
+ "glob": "~4.4.0",
"graceful-fs": "~3.0.5",
"inflight": "~1.0.4",
"inherits": "~2.0.1",
- "ini": "~1.3.2",
+ "ini": "~1.3.3",
"init-package-json": "~1.2.0",
"lockfile": "~1.0.0",
"lru-cache": "~2.5.0",
@@ -70,7 +70,7 @@
"npm-cache-filename": "~1.0.1",
"npm-install-checks": "~1.0.5",
"npm-package-arg": "~2.1.3",
- "npm-registry-client": "~6.0.7",
+ "npm-registry-client": "~6.1.1",
"npm-user-validate": "~0.1.1",
"npmlog": "~0.1.1",
"once": "~1.3.1",
@@ -79,13 +79,13 @@
"path-is-inside": "~1.0.0",
"read": "~1.0.4",
"read-installed": "~3.1.5",
- "read-package-json": "~1.2.7",
+ "read-package-json": "~1.3.1",
"readable-stream": "~1.0.33",
"realize-package-specifier": "~1.3.0",
"request": "~2.53.0",
"retry": "~0.6.1",
"rimraf": "~2.2.8",
- "semver": "~4.2.0",
+ "semver": "~4.3.0",
"sha": "~1.3.0",
"slide": "~1.1.6",
"sorted-object": "~1.0.0",
@@ -171,7 +171,8 @@
"npm-registry-couchapp": "~2.6.2",
"npm-registry-mock": "~1.0.0",
"require-inject": "~1.1.0",
- "tap": "~0.5.0"
+ "sprintf-js": "~1.0.2",
+ "tap": "~0.6.0"
},
"scripts": {
"test-legacy": "node ./test/run.js",
diff --git a/deps/npm/test/common-tap.js b/deps/npm/test/common-tap.js
index 7dcfc35cc8..4036708286 100644
--- a/deps/npm/test/common-tap.js
+++ b/deps/npm/test/common-tap.js
@@ -18,7 +18,7 @@ exports.npm = function (cmd, opts, cb) {
cmd = [bin].concat(cmd)
opts = opts || {}
- opts.env = opts.env ? opts.env : process.env
+ opts.env = opts.env || process.env
if (!opts.env.npm_config_cache) {
opts.env.npm_config_cache = npm_config_cache
}
diff --git a/deps/npm/test/fixtures/config/userconfig-with-gc b/deps/npm/test/fixtures/config/userconfig-with-gc
index 3e5d605f4e..7268fcb3c6 100644
--- a/deps/npm/test/fixtures/config/userconfig-with-gc
+++ b/deps/npm/test/fixtures/config/userconfig-with-gc
@@ -12,7 +12,7 @@ npm-www:nocache=1
sign-git-tag=false
message=v%s
strict-ssl=false
-_auth=dXNlcm5hbWU6cGFzc3dvcmQ=
+_auth="dXNlcm5hbWU6cGFzc3dvcmQ="
[_token]
AuthSession=yabba-dabba-doodle
diff --git a/deps/npm/test/tap/add-remote-git-fake-windows.js b/deps/npm/test/tap/add-remote-git-fake-windows.js
index 5de7cff7d0..3052477927 100644
--- a/deps/npm/test/tap/add-remote-git-fake-windows.js
+++ b/deps/npm/test/tap/add-remote-git-fake-windows.js
@@ -20,7 +20,9 @@ var git
test("setup", function (t) {
bootstrap()
setup(function (er, r) {
- t.ifError(er, "git started up successfully")
+ if (er) {
+ throw er
+ }
if (!er) {
daemon = r[r.length - 2]
@@ -66,11 +68,13 @@ var pjChild = JSON.stringify({
}, null, 2) + "\n"
function bootstrap () {
+ rimraf.sync(pkg)
mkdirp.sync(pkg)
fs.writeFileSync(resolve(pkg, "package.json"), pjParent)
}
function setup (cb) {
+ rimraf.sync(repo)
mkdirp.sync(repo)
fs.writeFileSync(resolve(repo, "package.json"), pjChild)
npm.load({ registry : common.registry, loglevel : "silent" }, function () {
diff --git a/deps/npm/test/tap/config-credentials.js b/deps/npm/test/tap/config-credentials.js
index c24bb7e1b2..1cb2a7eb41 100644
--- a/deps/npm/test/tap/config-credentials.js
+++ b/deps/npm/test/tap/config-credentials.js
@@ -28,6 +28,18 @@ test("trying to set credentials with no URI", function (t) {
})
})
+test("trying to clear credentials with no URI", function (t) {
+ npmconf.load(common.builtin, function (er, conf) {
+ t.ifError(er, "configuration loaded")
+
+ t.throws(function () {
+ conf.clearCredentialsByURI()
+ }, "enforced missing URI")
+
+ t.end()
+ })
+})
+
test("set with missing credentials object", function (t) {
npmconf.load(common.builtin, function (er, conf) {
t.ifError(er, "configuration loaded")
@@ -76,6 +88,24 @@ test("set with token", function (t) {
})
})
+test("clear with token", function (t) {
+ npmconf.load(common.builtin, function (er, conf) {
+ t.ifError(er, "configuration loaded")
+
+ t.doesNotThrow(function () {
+ conf.setCredentialsByURI(URI, {token : "simple-token"})
+ }, "needs only token")
+
+ t.doesNotThrow(function () {
+ conf.clearCredentialsByURI(URI)
+ }, "needs only URI")
+
+ t.notOk(conf.getCredentialsByURI(URI).token, "token all gone")
+
+ t.end()
+ })
+})
+
test("set with missing username", function (t) {
npmconf.load(common.builtin, function (er, conf) {
t.ifError(er, "configuration loaded")
@@ -157,6 +187,31 @@ test("set with old-style credentials", function (t) {
})
})
+test("clear with old-style credentials", function (t) {
+ npmconf.load(common.builtin, function (er, conf) {
+ t.ifError(er, "configuration loaded")
+
+ var credentials = {
+ username : "username",
+ password : "password",
+ email : "ogd@aoaioxxysz.net"
+ }
+
+ t.doesNotThrow(function () {
+ conf.setCredentialsByURI(URI, credentials)
+ }, "requires all of username, password, and email")
+
+ t.doesNotThrow(function () {
+ conf.clearCredentialsByURI(URI)
+ }, "clearing only required URI")
+
+ t.notOk(conf.getCredentialsByURI(URI).username, "username cleared")
+ t.notOk(conf.getCredentialsByURI(URI).password, "password cleared")
+
+ t.end()
+ })
+})
+
test("get old-style credentials for default registry", function (t) {
npmconf.load(common.builtin, function (er, conf) {
var actual = conf.getCredentialsByURI(conf.get("registry"))
diff --git a/deps/npm/test/tap/config-edit.js b/deps/npm/test/tap/config-edit.js
new file mode 100644
index 0000000000..97a54d2ece
--- /dev/null
+++ b/deps/npm/test/tap/config-edit.js
@@ -0,0 +1,72 @@
+var fs = require("fs")
+var path = require("path")
+
+var mkdirp = require("mkdirp")
+var rimraf = require("rimraf")
+var test = require("tap").test
+var common = require("../common-tap.js")
+
+var pkg = path.resolve(__dirname, "npm-global-edit")
+
+var editorSrc = function () {/*
+#!/usr/bin/env node
+var fs = require("fs")
+if (fs.existsSync(process.argv[2])) {
+ console.log("success")
+} else {
+ console.log("error")
+ process.exit(1)
+}
+*/}.toString().split("\n").slice(1, -1).join("\n")
+var editorPath = path.join(pkg, "editor")
+
+test("setup", function (t) {
+ cleanup(function (er) {
+ t.ifError(er, "old directory removed")
+
+ mkdirp(pkg, "0777", function (er) {
+ fs.writeFileSync(editorPath, editorSrc)
+ fs.chmodSync(editorPath, "0777")
+ t.ifError(er, "created package directory correctly")
+ t.end()
+ })
+ })
+})
+
+test("saving configs", function (t) {
+ var opts = {
+ cwd: pkg,
+ env: {
+ PATH: process.env.PATH,
+ EDITOR: editorPath
+ }
+ }
+ common.npm(
+ [
+ "config",
+ "--prefix", pkg,
+ "--global",
+ "edit"
+ ],
+ opts,
+ function (err, code, stdout, stderr) {
+ t.ifError(err, "command ran without issue")
+
+ t.equal(stderr, "", "got nothing on stderr")
+ t.equal(code, 0, "exit ok")
+ t.equal(stdout, "success\n", "got success message")
+ t.end()
+ }
+ )
+})
+
+test("cleanup", function (t) {
+ cleanup(function (er) {
+ t.ifError(er, "test directory removed OK")
+ t.end()
+ })
+})
+
+function cleanup (cb) {
+ rimraf(pkg, cb)
+}
diff --git a/deps/npm/test/tap/install-man.js b/deps/npm/test/tap/install-man.js
new file mode 100644
index 0000000000..70879d81f1
--- /dev/null
+++ b/deps/npm/test/tap/install-man.js
@@ -0,0 +1,75 @@
+var fs = require("fs")
+var resolve = require("path").resolve
+
+var osenv = require("osenv")
+var mkdirp = require("mkdirp")
+var rimraf = require("rimraf")
+var test = require("tap").test
+
+var common = require("../common-tap.js")
+
+var pkg = resolve(__dirname, "install-man")
+var target = resolve(__dirname, "install-man-target")
+
+var EXEC_OPTS = {
+ cwd: target
+}
+
+test("setup", function (t) {
+ setup()
+ t.pass("setup ran")
+ t.end()
+})
+
+test("install man page", function (t) {
+ common.npm(
+ [
+ "install",
+ "--prefix", target,
+ "--global",
+ pkg
+ ],
+ EXEC_OPTS,
+ function (err, code, stdout, stderr) {
+ t.ifError(err, "npm command ran from test")
+ t.equals(code, 0, "install exited with success (0)")
+ t.ok(stdout, "output indicating success")
+ t.ok(
+ fs.existsSync(resolve(target, "share", "man", "man1", "install-man.1")),
+ "man page link was created"
+ )
+
+ t.end()
+ }
+ )
+})
+
+test("clean", function (t) {
+ cleanup()
+ t.pass("cleaned up")
+ t.end()
+})
+
+var json = {
+ name : "install-man",
+ version : "1.2.3",
+ man : [ "./install-man.1" ]
+}
+
+function setup () {
+ cleanup()
+ mkdirp.sync(pkg)
+ // make sure it installs locally
+ mkdirp.sync(resolve(target, "node_modules"))
+ fs.writeFileSync(
+ resolve(pkg, "package.json"),
+ JSON.stringify(json, null, 2)+"\n"
+ )
+ fs.writeFileSync(resolve(pkg, "install-man.1"), "THIS IS A MANPAGE\n")
+}
+
+function cleanup () {
+ process.chdir(osenv.tmpdir())
+ rimraf.sync(pkg)
+ rimraf.sync(target)
+}
diff --git a/deps/npm/test/tap/logout.js b/deps/npm/test/tap/logout.js
new file mode 100644
index 0000000000..1d9392ad16
--- /dev/null
+++ b/deps/npm/test/tap/logout.js
@@ -0,0 +1,67 @@
+var fs = require("fs")
+var path = require("path")
+
+var mkdirp = require("mkdirp")
+var mr = require("npm-registry-mock")
+var rimraf = require("rimraf")
+var test = require("tap").test
+
+var common = require("../common-tap.js")
+
+var pkg = path.resolve(__dirname, "logout")
+var outfile = path.join(pkg, "_npmrc")
+var opts = { cwd: pkg }
+
+var contents = function () {/*
+foo=boo
+//localhost:1337/:_authToken=glarb
+*/}.toString().split("\n").slice(1, -1).join("\n")
+
+function mocks (server) {
+ server.delete("/-/user/token/glarb")
+ .reply(200, {})
+}
+
+test("setup", function (t) {
+ cleanup()
+ setup()
+ t.end()
+})
+
+test("npm logout", function (t) {
+ mr({ port: common.port, plugin: mocks }, function (err, s) {
+ if (err) throw err
+
+ common.npm(
+ [
+ "logout",
+ "--registry", common.registry,
+ "--loglevel", "silent",
+ "--userconfig", outfile
+ ],
+ opts,
+ function (err, code) {
+ t.ifError(err, "no error output")
+ t.notOk(code, "exited OK")
+
+ var config = fs.readFileSync(outfile, "utf8")
+ t.equal(config, "foo=boo\n", "creds gone")
+ s.close()
+ t.end()
+ })
+ })
+})
+
+test("cleanup", function (t) {
+ cleanup()
+ t.end()
+})
+
+function setup () {
+ mkdirp.sync(pkg)
+ fs.writeFileSync(outfile, contents)
+}
+
+function cleanup () {
+ rimraf.sync(pkg)
+}
diff --git a/deps/npm/test/tap/outdated-depth-deep.js b/deps/npm/test/tap/outdated-depth-deep.js
new file mode 100644
index 0000000000..c208669b37
--- /dev/null
+++ b/deps/npm/test/tap/outdated-depth-deep.js
@@ -0,0 +1,78 @@
+var common = require("../common-tap")
+ , path = require("path")
+ , test = require("tap").test
+ , rimraf = require("rimraf")
+ , npm = require("../../")
+ , mr = require("npm-registry-mock")
+ , pkg = path.resolve(__dirname, "outdated-depth-deep")
+ , cache = path.resolve(pkg, "cache")
+
+var osenv = require("osenv")
+var mkdirp = require("mkdirp")
+var fs = require("fs")
+
+var pj = JSON.stringify({
+ "name": "whatever",
+ "description": "yeah idk",
+ "version": "1.2.3",
+ "main": "index.js",
+ "dependencies": {
+ "underscore": "1.3.1",
+ "npm-test-peer-deps": "0.0.0"
+ },
+ "repository": "git://github.com/luk-/whatever"
+}, null, 2)
+
+function cleanup () {
+ process.chdir(osenv.tmpdir())
+ rimraf.sync(pkg)
+}
+
+function setup () {
+ mkdirp.sync(pkg)
+ process.chdir(pkg)
+ fs.writeFileSync(path.resolve(pkg, "package.json"), pj)
+}
+
+test("setup", function (t) {
+ cleanup()
+ setup()
+ t.end()
+})
+
+test("outdated depth deep (9999)", function (t) {
+ var underscoreOutdated = ["underscore", "1.3.1", "1.3.1", "1.5.1", "1.3.1"]
+ var childPkg = path.resolve(pkg, "node_modules", "npm-test-peer-deps")
+
+ var expected = [ [pkg].concat(underscoreOutdated),
+ [childPkg].concat(underscoreOutdated) ]
+
+ process.chdir(pkg)
+
+ mr({port : common.port}, function (er, s) {
+ npm.load({
+ cache: cache
+ , loglevel: "silent"
+ , registry: common.registry
+ , depth: 9999
+ }
+ , function () {
+ npm.install(".", function (er) {
+ if (er) throw new Error(er)
+ npm.outdated(function (err, d) {
+ if (err) throw new Error(err)
+ t.deepEqual(d, expected)
+ s.close()
+ t.end()
+ })
+ })
+ }
+ )
+ })
+})
+
+
+test("cleanup", function (t) {
+ cleanup()
+ t.end()
+})
diff --git a/deps/npm/test/tap/outdated-depth.js b/deps/npm/test/tap/outdated-depth.js
index 213c4d60f4..4e1aca0e7d 100644
--- a/deps/npm/test/tap/outdated-depth.js
+++ b/deps/npm/test/tap/outdated-depth.js
@@ -30,7 +30,6 @@ test("outdated depth zero", function (t) {
cache: cache
, loglevel: "silent"
, registry: common.registry
- , depth: 0
}
, function () {
npm.install(".", function (er) {
diff --git a/deps/npm/test/tap/outdated-depth/package.json b/deps/npm/test/tap/outdated-depth/package.json
index df269dc725..aed35fe031 100644
--- a/deps/npm/test/tap/outdated-depth/package.json
+++ b/deps/npm/test/tap/outdated-depth/package.json
@@ -4,7 +4,8 @@
"version": "1.2.3",
"main": "index.js",
"dependencies": {
- "underscore": "1.3.1"
+ "underscore": "1.3.1",
+ "npm-test-peer-deps": "0.0.0"
},
"repository": "git://github.com/luk-/whatever"
}
diff --git a/deps/npm/test/tap/umask-lifecycle.js b/deps/npm/test/tap/umask-lifecycle.js
index a40eae44be..e4f91a2df6 100644
--- a/deps/npm/test/tap/umask-lifecycle.js
+++ b/deps/npm/test/tap/umask-lifecycle.js
@@ -3,6 +3,7 @@ var test = require("tap").test
var fs = require("fs")
var rimraf = require("rimraf")
var mkdirp = require("mkdirp")
+var sprintf = require("sprintf-js").sprintf
var common = require("../common-tap.js")
var pkg = path.resolve(__dirname, "umask-lifecycle")
@@ -12,14 +13,15 @@ var pj = JSON.stringify({
scripts: { umask: "$npm_execpath config get umask && echo \"$npm_config_umask\" && node -p 'process.umask()'" }
}, null, 2) + "\n"
+var umask = process.umask()
var expected = [
"",
"> x@1.2.3 umask "+path.join(__dirname, "umask-lifecycle"),
"> $npm_execpath config get umask && echo \"$npm_config_umask\" && node -p 'process.umask()'",
"",
- "0022",
- "0022",
- "18",
+ sprintf("%04o", umask),
+ sprintf("%04o", umask),
+ sprintf("%d", umask),
""
].join("\n")
@@ -32,7 +34,6 @@ test("setup", function (t) {
test("umask script", function (t) {
common.npm(["run", "umask"], {
- umask: 0022,
cwd: pkg,
env: {
PATH: process.env.PATH,
diff --git a/deps/npm/test/tap/version-git-not-clean.js b/deps/npm/test/tap/version-git-not-clean.js
index efca362407..1deae49f92 100644
--- a/deps/npm/test/tap/version-git-not-clean.js
+++ b/deps/npm/test/tap/version-git-not-clean.js
@@ -55,7 +55,8 @@ test("npm version with working directory not clean", function (t) {
t.fail("should fail on non-clean working directory")
}
else {
- t.equal(err.message, "Git working directory not clean.\nM package.json")
+ t.ok(err.message.match(/Git working directory not clean./))
+ t.ok(err.message.match(/M package.json/))
}
t.end()
})