From af69f88a9d57e302af632c047faffed7cca90772 Mon Sep 17 00:00:00 2001
From: Timothy J Fontaine node package manager ![Build Status
+## SYNOPSIS This is just enough info to get you up and running.npm
SYNOPSIS
+
npm.bin
member.
man 3 npm-<command>
for programmatic usage.
npm rebuild <pkg>
if you make any changes.
packages
parameter.
packages
parameter.
packages
parameter.
packages
parameter.
1.4.6
+1.4.7
npm.deref
method to find the real name.
package.json
in the current folder and use the name
package.json
file in its root.
name
property.
"notepad"
on Windows.node_modules
folder.npm ls promzard
in npm's source tree will show:
-npm@1.4.6 /path/to/npm
+npm@1.4.7 /path/to/npm
└─┬ init-package-json@0.0.4
└── promzard@0.1.5
@@ -86,5 +87,5 @@ project.
-
+
diff --git a/deps/npm/html/doc/cli/npm-outdated.html b/deps/npm/html/doc/cli/npm-outdated.html
index 015d9120c32..52f46b27daf 100644
--- a/deps/npm/html/doc/cli/npm-outdated.html
+++ b/deps/npm/html/doc/cli/npm-outdated.html
@@ -3,6 +3,7 @@
npm-outdated
+
@@ -70,5 +71,5 @@ project.
-
+
diff --git a/deps/npm/html/doc/cli/npm-owner.html b/deps/npm/html/doc/cli/npm-owner.html
index 542228cf412..9887040b88a 100644
--- a/deps/npm/html/doc/cli/npm-owner.html
+++ b/deps/npm/html/doc/cli/npm-owner.html
@@ -3,6 +3,7 @@
npm-owner
+
@@ -46,5 +47,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 99608776fa9..d3ebdba9c54 100644
--- a/deps/npm/html/doc/cli/npm-pack.html
+++ b/deps/npm/html/doc/cli/npm-pack.html
@@ -3,6 +3,7 @@
npm-pack
+
@@ -41,5 +42,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 e7a8eebbb91..35ea1ab30df 100644
--- a/deps/npm/html/doc/cli/npm-prefix.html
+++ b/deps/npm/html/doc/cli/npm-prefix.html
@@ -3,6 +3,7 @@
npm-prefix
+
@@ -32,5 +33,5 @@
-
+
diff --git a/deps/npm/html/doc/cli/npm-prune.html b/deps/npm/html/doc/cli/npm-prune.html
index baf66973504..8fc7298b4c8 100644
--- a/deps/npm/html/doc/cli/npm-prune.html
+++ b/deps/npm/html/doc/cli/npm-prune.html
@@ -3,6 +3,7 @@
npm-prune
+
@@ -41,5 +42,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 f11179ed98e..3ff10e9d94c 100644
--- a/deps/npm/html/doc/cli/npm-publish.html
+++ b/deps/npm/html/doc/cli/npm-publish.html
@@ -3,6 +3,7 @@
npm-publish
+
@@ -48,5 +49,5 @@ it is removed with npm-unpublish(1).
-
+
diff --git a/deps/npm/html/doc/cli/npm-rebuild.html b/deps/npm/html/doc/cli/npm-rebuild.html
index f2ff2f5ba9a..0dc90210b23 100644
--- a/deps/npm/html/doc/cli/npm-rebuild.html
+++ b/deps/npm/html/doc/cli/npm-rebuild.html
@@ -3,6 +3,7 @@
npm-rebuild
+
@@ -38,5 +39,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 bbf00663de9..7d6bda4fca5 100644
--- a/deps/npm/html/doc/cli/npm-repo.html
+++ b/deps/npm/html/doc/cli/npm-repo.html
@@ -3,6 +3,7 @@
npm-repo
+
@@ -44,5 +45,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 f36b69282ac..17caa3c6afd 100644
--- a/deps/npm/html/doc/cli/npm-restart.html
+++ b/deps/npm/html/doc/cli/npm-restart.html
@@ -3,6 +3,7 @@
npm-restart
+
@@ -36,5 +37,5 @@ the "start" script.
-
+
diff --git a/deps/npm/html/doc/cli/npm-rm.html b/deps/npm/html/doc/cli/npm-rm.html
index 8d06cca21d2..aa98f3f2699 100644
--- a/deps/npm/html/doc/cli/npm-rm.html
+++ b/deps/npm/html/doc/cli/npm-rm.html
@@ -3,6 +3,7 @@
npm-rm
+
@@ -36,5 +37,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 a4e0bd24c42..85b7f6d87ce 100644
--- a/deps/npm/html/doc/cli/npm-root.html
+++ b/deps/npm/html/doc/cli/npm-root.html
@@ -3,6 +3,7 @@
npm-root
+
@@ -32,5 +33,5 @@
-
+
diff --git a/deps/npm/html/doc/cli/npm-run-script.html b/deps/npm/html/doc/cli/npm-run-script.html
index 13d2d43053e..e410640ac15 100644
--- a/deps/npm/html/doc/cli/npm-run-script.html
+++ b/deps/npm/html/doc/cli/npm-run-script.html
@@ -3,6 +3,7 @@
npm-run-script
+
@@ -35,5 +36,5 @@ called directly, as well.
-
+
diff --git a/deps/npm/html/doc/cli/npm-search.html b/deps/npm/html/doc/cli/npm-search.html
index f66445b01a0..6fc04160651 100644
--- a/deps/npm/html/doc/cli/npm-search.html
+++ b/deps/npm/html/doc/cli/npm-search.html
@@ -3,6 +3,7 @@
npm-search
+
@@ -49,5 +50,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 ca5da85f4a2..a882921091b 100644
--- a/deps/npm/html/doc/cli/npm-shrinkwrap.html
+++ b/deps/npm/html/doc/cli/npm-shrinkwrap.html
@@ -3,6 +3,7 @@
npm-shrinkwrap
+
@@ -195,5 +196,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 a0761b533a3..034b5eac5ba 100644
--- a/deps/npm/html/doc/cli/npm-star.html
+++ b/deps/npm/html/doc/cli/npm-star.html
@@ -3,6 +3,7 @@
npm-star
+
@@ -38,5 +39,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 067c4154333..b8d3f7f53d7 100644
--- a/deps/npm/html/doc/cli/npm-stars.html
+++ b/deps/npm/html/doc/cli/npm-stars.html
@@ -3,6 +3,7 @@
npm-stars
+
@@ -37,5 +38,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 0208291c2e0..0756eb6bb28 100644
--- a/deps/npm/html/doc/cli/npm-start.html
+++ b/deps/npm/html/doc/cli/npm-start.html
@@ -3,6 +3,7 @@
npm-start
+
@@ -32,5 +33,5 @@
-
+
diff --git a/deps/npm/html/doc/cli/npm-stop.html b/deps/npm/html/doc/cli/npm-stop.html
index 71b9bb66a1a..d7d66ecfc39 100644
--- a/deps/npm/html/doc/cli/npm-stop.html
+++ b/deps/npm/html/doc/cli/npm-stop.html
@@ -3,6 +3,7 @@
npm-stop
+
@@ -32,5 +33,5 @@
-
+
diff --git a/deps/npm/html/doc/cli/npm-submodule.html b/deps/npm/html/doc/cli/npm-submodule.html
index cd574596512..ed73b38bb90 100644
--- a/deps/npm/html/doc/cli/npm-submodule.html
+++ b/deps/npm/html/doc/cli/npm-submodule.html
@@ -3,6 +3,7 @@
npm-submodule
+
@@ -45,5 +46,5 @@ dependencies into the submodule folder.
-
+
diff --git a/deps/npm/html/doc/cli/npm-tag.html b/deps/npm/html/doc/cli/npm-tag.html
index b0d248c6902..51f529fd9e2 100644
--- a/deps/npm/html/doc/cli/npm-tag.html
+++ b/deps/npm/html/doc/cli/npm-tag.html
@@ -3,6 +3,7 @@
npm-tag
+
@@ -46,5 +47,5 @@ of using a specific version number:
-
+
diff --git a/deps/npm/html/doc/cli/npm-test.html b/deps/npm/html/doc/cli/npm-test.html
index f11d1de7486..0afbd5b8229 100644
--- a/deps/npm/html/doc/cli/npm-test.html
+++ b/deps/npm/html/doc/cli/npm-test.html
@@ -3,6 +3,7 @@
npm-test
+
@@ -36,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 7f24b1ae2b9..bfdeca120b9 100644
--- a/deps/npm/html/doc/cli/npm-uninstall.html
+++ b/deps/npm/html/doc/cli/npm-uninstall.html
@@ -3,6 +3,7 @@
npm-uninstall
+
@@ -52,5 +53,5 @@ npm uninstall dtrace-provider --save-optional
1.4.6
+1.4.7
packa
-
+
diff --git a/deps/npm/html/doc/files/npm-global.html b/deps/npm/html/doc/files/npm-global.html
index 77a674b512f..75e44e25409 100644
--- a/deps/npm/html/doc/files/npm-global.html
+++ b/deps/npm/html/doc/files/npm-global.html
@@ -3,6 +3,7 @@
npm-folders
+
@@ -217,5 +218,5 @@ cannot be found elsewhere. See packa
-
+
diff --git a/deps/npm/html/doc/files/npm-json.html b/deps/npm/html/doc/files/npm-json.html
index 9dbb57d6d2a..b8dc0d46b29 100644
--- a/deps/npm/html/doc/files/npm-json.html
+++ b/deps/npm/html/doc/files/npm-json.html
@@ -3,6 +3,7 @@
package.json
+
@@ -396,6 +397,40 @@ can consume the functionality without requiring them to compile it
themselves. In dev mode (ie, locally running npm install
), it'll
run this script as well, so that you can test it easily.
+peerDependencies
+
+In some cases, you want to express the compatibility of your package with an
+host tool or library, while not necessarily doing a require
of this host.
+This is usually refered to as a plugin. Notably, your module may be exposing
+a specific interface, expected and specified by the host documentation.
+
+For example:
+
+{
+ "name": "tea-latte",
+ "version": "1.3.5"
+ "peerDependencies": {
+ "tea": "2.x"
+ }
+}
+
+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-latte@1.3.5
+└── tea@2.2.0
+
+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
+the host package's major version will break your plugin. Thus, if you've worked
+with every 1.x version of the host package, use "^1.0"
or "1.x"
to express
+this. If you depend on features introduced in 1.5.2, use ">= 1.5.2 < 2"
.
+
bundledDependencies
Array of package names that will be bundled when publishing the package.
@@ -554,5 +589,5 @@ ignored.
-
+
diff --git a/deps/npm/html/doc/files/npmrc.html b/deps/npm/html/doc/files/npmrc.html
index f003e807e75..608c4976c4f 100644
--- a/deps/npm/html/doc/files/npmrc.html
+++ b/deps/npm/html/doc/files/npmrc.html
@@ -3,6 +3,7 @@
npmrc
+
@@ -71,5 +72,5 @@ manner.
-
+
diff --git a/deps/npm/html/doc/files/package.json.html b/deps/npm/html/doc/files/package.json.html
index 9dbb57d6d2a..b8dc0d46b29 100644
--- a/deps/npm/html/doc/files/package.json.html
+++ b/deps/npm/html/doc/files/package.json.html
@@ -3,6 +3,7 @@
package.json
+
@@ -396,6 +397,40 @@ can consume the functionality without requiring them to compile it
themselves. In dev mode (ie, locally running npm install
), it'll
run this script as well, so that you can test it easily.
+peerDependencies
+
+In some cases, you want to express the compatibility of your package with an
+host tool or library, while not necessarily doing a require
of this host.
+This is usually refered to as a plugin. Notably, your module may be exposing
+a specific interface, expected and specified by the host documentation.
+
+For example:
+
+{
+ "name": "tea-latte",
+ "version": "1.3.5"
+ "peerDependencies": {
+ "tea": "2.x"
+ }
+}
+
+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-latte@1.3.5
+└── tea@2.2.0
+
+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
+the host package's major version will break your plugin. Thus, if you've worked
+with every 1.x version of the host package, use "^1.0"
or "1.x"
to express
+this. If you depend on features introduced in 1.5.2, use ">= 1.5.2 < 2"
.
+
bundledDependencies
Array of package names that will be bundled when publishing the package.
@@ -554,5 +589,5 @@ ignored.
-
+
diff --git a/deps/npm/html/doc/index.html b/deps/npm/html/doc/index.html
index 1c673fa198e..a8897284d8c 100644
--- a/deps/npm/html/doc/index.html
+++ b/deps/npm/html/doc/index.html
@@ -3,6 +3,7 @@
npm-index
+
@@ -428,5 +429,5 @@
-
+
diff --git a/deps/npm/html/doc/misc/npm-coding-style.html b/deps/npm/html/doc/misc/npm-coding-style.html
index 5e1992443cc..b3c373ca114 100644
--- a/deps/npm/html/doc/misc/npm-coding-style.html
+++ b/deps/npm/html/doc/misc/npm-coding-style.html
@@ -3,6 +3,7 @@
npm-coding-style
+
@@ -194,5 +195,5 @@ set to anything."
-
+
diff --git a/deps/npm/html/doc/misc/npm-config.html b/deps/npm/html/doc/misc/npm-config.html
index 5f4dec5acab..1c44de37f3e 100644
--- a/deps/npm/html/doc/misc/npm-config.html
+++ b/deps/npm/html/doc/misc/npm-config.html
@@ -3,6 +3,7 @@
npm-config
+
@@ -565,6 +566,17 @@ devDependencies hash.
Only works if there is already a package.json file present.
+save-prefix
+
+- Default: '^'
- Type: String
+
+Configure how versions of packages installed to a package.json file via
+--save
or --save-dev
get prefixed.
+
+For example if a package has version 1.2.3
, by default it's version is
+set to ^1.2.3
which allows minor upgrades for that package, but after
npm config set save-prefix='~'
it would be set to ~1.2.3
which only allows
+patch upgrades.
+
searchopts
- Default: ""
- Type: String
@@ -731,5 +743,5 @@ hash, and exit successfully.
-
+
diff --git a/deps/npm/html/doc/misc/npm-developers.html b/deps/npm/html/doc/misc/npm-developers.html
index 25a6348ca78..a3cfc32b89b 100644
--- a/deps/npm/html/doc/misc/npm-developers.html
+++ b/deps/npm/html/doc/misc/npm-developers.html
@@ -3,6 +3,7 @@
npm-developers
+
@@ -186,5 +187,5 @@ from a fresh checkout.
-
+
diff --git a/deps/npm/html/doc/misc/npm-disputes.html b/deps/npm/html/doc/misc/npm-disputes.html
index 87cf6b2fd37..15dfd2a3c80 100644
--- a/deps/npm/html/doc/misc/npm-disputes.html
+++ b/deps/npm/html/doc/misc/npm-disputes.html
@@ -3,6 +3,7 @@
npm-disputes
+
@@ -104,5 +105,5 @@ things into it.
-
+
diff --git a/deps/npm/html/doc/misc/npm-faq.html b/deps/npm/html/doc/misc/npm-faq.html
index 298b44548b8..7e310072daa 100644
--- a/deps/npm/html/doc/misc/npm-faq.html
+++ b/deps/npm/html/doc/misc/npm-faq.html
@@ -3,6 +3,7 @@
npm-faq
+
@@ -85,7 +86,7 @@ in a shell script if you really wanted to.
Mikeal Rogers answered this question very well:
-http://www.mikealrogers.com/posts/nodemodules-in-git.html
+http://www.futurealoof.com/posts/nodemodules-in-git.html
tl;dr
@@ -360,5 +361,5 @@ good folks at npm, Inc.
-
+
diff --git a/deps/npm/html/doc/misc/npm-index.html b/deps/npm/html/doc/misc/npm-index.html
index b92a2147317..4afdf117e09 100644
--- a/deps/npm/html/doc/misc/npm-index.html
+++ b/deps/npm/html/doc/misc/npm-index.html
@@ -3,6 +3,7 @@
npm-index
+
@@ -428,5 +429,5 @@
-
+
diff --git a/deps/npm/html/doc/misc/npm-registry.html b/deps/npm/html/doc/misc/npm-registry.html
index 79c9957b753..3c0fea26890 100644
--- a/deps/npm/html/doc/misc/npm-registry.html
+++ b/deps/npm/html/doc/misc/npm-registry.html
@@ -3,6 +3,7 @@
npm-registry
+
@@ -83,5 +84,5 @@ effectively implement the entire CouchDB API anyway.
-
+
diff --git a/deps/npm/html/doc/misc/npm-scripts.html b/deps/npm/html/doc/misc/npm-scripts.html
index 16f9a53e619..1e41008cdce 100644
--- a/deps/npm/html/doc/misc/npm-scripts.html
+++ b/deps/npm/html/doc/misc/npm-scripts.html
@@ -3,6 +3,7 @@
npm-scripts
+
@@ -235,5 +236,5 @@ the user will sudo the npm command in question.
-
+
diff --git a/deps/npm/html/doc/misc/removing-npm.html b/deps/npm/html/doc/misc/removing-npm.html
index c79e6775426..40dab55b444 100644
--- a/deps/npm/html/doc/misc/removing-npm.html
+++ b/deps/npm/html/doc/misc/removing-npm.html
@@ -3,6 +3,7 @@
removing-npm
+
@@ -70,5 +71,5 @@ modules. To track those down, you can do the following:
-
+
diff --git a/deps/npm/html/doc/misc/semver.html b/deps/npm/html/doc/misc/semver.html
index 893858ab407..51473c703a9 100644
--- a/deps/npm/html/doc/misc/semver.html
+++ b/deps/npm/html/doc/misc/semver.html
@@ -3,6 +3,7 @@
semver
+
@@ -129,5 +130,5 @@ range, use the satisfies(version, range)
function.
-
+
diff --git a/deps/npm/html/dochead.html b/deps/npm/html/dochead.html
index f2c8a6bad1a..e2f0e83d78e 100644
--- a/deps/npm/html/dochead.html
+++ b/deps/npm/html/dochead.html
@@ -3,6 +3,7 @@
@NAME@
+
diff --git a/deps/npm/lib/cache.js b/deps/npm/lib/cache.js
index 3b9a46f6978..b17da0cf925 100644
--- a/deps/npm/lib/cache.js
+++ b/deps/npm/lib/cache.js
@@ -241,9 +241,10 @@ function add (args, cb) {
log.verbose("cache add", "name=%j spec=%j args=%j", name, spec, args)
-
if (!name && !spec) return cb(usage)
+ cb = afterAdd([name, spec], cb)
+
// see if the spec is a url
// otherwise, treat as name@version
var p = url.parse(spec) || {}
@@ -265,6 +266,23 @@ function add (args, cb) {
add_(name, spec, p, cb)
}
+function afterAdd (arg, cb) { return function (er, data) {
+ if (er || !data || !data.name || !data.version) {
+ return cb(er, data)
+ }
+
+ // Save the resolved, shasum, etc. into the data so that the next
+ // time we load from this cached data, we have all the same info.
+ var name = data.name
+ var ver = data.version
+ var pj = path.join(npm.cache, name, ver, "package", "package.json")
+ fs.writeFile(pj, JSON.stringify(data), "utf8", function (er) {
+ cb(er, data)
+ })
+}}
+
+
+
function maybeFile (spec, p, cb) {
fs.stat(spec, function (er, stat) {
if (!er) {
@@ -316,7 +334,15 @@ function fetchAndShaCheck (u, tmp, shasum, cb) {
log.error("fetch failed", u)
return cb(er, response)
}
- if (!shasum) return cb(null, response)
+
+ if (!shasum) {
+ // Well, we weren't given a shasum, so at least sha what we have
+ // in case we want to compare it to something else later
+ return sha.get(tmp, function (er, shasum) {
+ cb(er, response, shasum)
+ })
+ }
+
// validate that the url we just downloaded matches the expected shasum.
sha.check(tmp, shasum, function (er) {
if (er != null && er.message) {
@@ -331,7 +357,8 @@ function fetchAndShaCheck (u, tmp, shasum, cb) {
// Only have a single download action at once for a given url
// additional calls stack the callbacks.
var inFlightURLs = {}
-function addRemoteTarball (u, shasum, name, cb_) {
+function addRemoteTarball (u, shasum, name, version, cb_) {
+ if (typeof cb_ !== "function") cb_ = version, version = ""
if (typeof cb_ !== "function") cb_ = name, name = ""
if (typeof cb_ !== "function") cb_ = shasum, shasum = null
@@ -343,6 +370,7 @@ function addRemoteTarball (u, shasum, name, cb_) {
function cb (er, data) {
if (data) {
data._from = u
+ data._shasum = data._shasum || shasum
data._resolved = u
}
unlock(u, function () {
@@ -366,7 +394,7 @@ function addRemoteTarball (u, shasum, name, cb_) {
function done (er, resp, shasum) {
if (er) return cb(er)
- addLocalTarball(tmp, name, shasum, cb)
+ addLocalTarball(tmp, name, version, shasum, cb)
}
}
@@ -791,9 +819,15 @@ function addNameVersion (name, v, data, cb) {
response = null
return next()
}
- registry.get(name + "/" + ver, function (er, d, json, resp) {
+ registry.get(name, function (er, d, json, resp) {
if (er) return cb(er)
- data = d
+ data = d && d.versions[ver]
+ if (!data) {
+ er = new Error('version not found: ' + name + '@' + ver)
+ er.package = name
+ er.statusCode = 404
+ return cb(er)
+ }
response = resp
next()
})
@@ -853,7 +887,8 @@ function addNameVersion (name, v, data, cb) {
}
return addRemoteTarball( tb
, dist.shasum
- , name+"-"+ver
+ , name
+ , ver
, cb )
}
}
@@ -924,13 +959,23 @@ function maybeGithub (p, name, er, cb) {
}
}
-function addLocalTarball (p, name, shasum, cb_) {
+function addLocalTarball (p, name, version, shasum, cb_) {
if (typeof cb_ !== "function") cb_ = shasum, shasum = null
+ if (typeof cb_ !== "function") cb_ = version, version = ""
if (typeof cb_ !== "function") cb_ = name, name = ""
+
+ // If we don't have a shasum yet, then get the shasum now.
+ if (!shasum) {
+ return sha.get(p, function (er, shasum) {
+ if (er) return cb_(er)
+ addLocalTarball(p, name, version, shasum, cb_)
+ })
+ }
+
// if it's a tar, and not in place,
// then unzip to .tmp, add the tmp folder, and clean up tmp
if (pathIsInside(p, npm.tmp))
- return addTmpTarball(p, name, shasum, cb_)
+ return addTmpTarball(p, name, version, shasum, cb_)
if (pathIsInside(p, npm.cache)) {
if (path.basename(p) !== "package.tgz") return cb_(new Error(
@@ -939,7 +984,10 @@ function addLocalTarball (p, name, shasum, cb_) {
}
function cb (er, data) {
- if (data) data._resolved = p
+ if (data) {
+ data._resolved = p
+ data._shasum = data._shasum || shasum
+ }
return cb_(er, data)
}
@@ -962,7 +1010,7 @@ function addLocalTarball (p, name, shasum, cb_) {
log.verbose("chmod", tmp, npm.modes.file.toString(8))
fs.chmod(tmp, npm.modes.file, function (er) {
if (er) return cb(er)
- addTmpTarball(tmp, name, shasum, cb)
+ addTmpTarball(tmp, name, null, shasum, cb)
})
})
from.pipe(to)
@@ -1188,6 +1236,10 @@ function addLocalDirectory (p, name, shasum, cb) {
, data.version, "package.tgz" )
, placeDirect = path.basename(p) === "package"
, tgz = placeDirect ? placed : tmptgz
+ , version = data.version
+
+ name = data.name
+
getCacheStat(function (er, cs) {
mkdir(path.dirname(tgz), function (er, made) {
if (er) return cb(er)
@@ -1207,7 +1259,7 @@ function addLocalDirectory (p, name, shasum, cb) {
chownr(made || tgz, cs.uid, cs.gid, function (er) {
if (er) return cb(er)
- addLocalTarball(tgz, name, shasum, cb)
+ addLocalTarball(tgz, name, version, shasum, cb)
})
})
})
@@ -1215,21 +1267,75 @@ function addLocalDirectory (p, name, shasum, cb) {
})
}
-function addTmpTarball (tgz, name, shasum, cb) {
- if (!cb) cb = name, name = ""
+// XXX This is where it should be fixed
+// Right now it's unpacking to a "package" folder, and then
+// adding that local folder, for historical reasons.
+// Instead, unpack to the *cache* folder, and then copy the
+// tgz into place in the cache, so the shasum doesn't change.
+function addTmpTarball (tgz, name, version, shasum, cb) {
+ // Just have a placeholder here so we can move it into place after.
+ var tmp = false
+ if (!version) {
+ tmp = true
+ version = 'tmp_' + crypto.randomBytes(6).toString('hex')
+ }
+ if (!name) {
+ tmp = true
+ name = 'tmp_' + crypto.randomBytes(6).toString('hex')
+ }
+ if (!tmp) {
+ var pdir = path.resolve(npm.cache, name, version, "package")
+ } else {
+ var pdir = path.resolve(npm.cache, name + version + "package")
+ }
+
getCacheStat(function (er, cs) {
if (er) return cb(er)
- var contents = path.dirname(tgz)
- tar.unpack( tgz, path.resolve(contents, "package")
- , null, null
- , cs.uid, cs.gid
- , function (er) {
- if (er) {
- return cb(er)
- }
- addLocalDirectory(path.resolve(contents, "package"), name, shasum, cb)
- })
+ tar.unpack(tgz, pdir, null, null, cs.uid, cs.gid, next)
})
+
+ function next (er) {
+ if (er) return cb(er)
+ // it MUST be able to get a version now!
+ var pj = path.resolve(pdir, "package.json")
+ readJson(pj, function (er, data) {
+ if (er) return cb(er)
+ if (version === data.version && name === data.name && !tmp) {
+ addTmpTarball_(tgz, data, name, version, shasum, cb)
+ } else {
+ var old = pdir
+ name = data.name
+ version = data.version
+ pdir = path.resolve(npm.cache, name, version, "package")
+ mkdir(path.dirname(pdir), function(er) {
+ if (er) return cb(er)
+ rm(pdir, function(er) {
+ if (er) return cb(er)
+ fs.rename(old, pdir, function(er) {
+ if (er) return cb(er)
+ rm(old, function(er) {
+ if (er) return cb(er)
+ addTmpTarball_(tgz, data, name, version, shasum, cb)
+ })
+ })
+ })
+ })
+ }
+ })
+ }
+}
+
+function addTmpTarball_ (tgz, data, name, version, shasum, cb) {
+ cb = once(cb)
+ var target = path.resolve(npm.cache, name, version, "package.tgz")
+ var read = fs.createReadStream(tgz)
+ var write = fs.createWriteStream(target)
+ read.on("error", cb).pipe(write).on("error", cb).on("close", done)
+
+ function done() {
+ data._shasum = data._shasum || shasum
+ cb(null, data)
+ }
}
function unpack (pkg, ver, unpackTarget, dMode, fMode, uid, gid, cb) {
diff --git a/deps/npm/lib/dedupe.js b/deps/npm/lib/dedupe.js
index 55823d96768..0c2b18a7842 100644
--- a/deps/npm/lib/dedupe.js
+++ b/deps/npm/lib/dedupe.js
@@ -354,4 +354,3 @@ function whoDepends_ (pkg, who, test) {
})
return who
}
-
diff --git a/deps/npm/lib/install.js b/deps/npm/lib/install.js
index 39c98ecff27..8bc009349b6 100644
--- a/deps/npm/lib/install.js
+++ b/deps/npm/lib/install.js
@@ -337,6 +337,7 @@ function save (where, installed, tree, pretty, hasArguments, cb) {
}
var saveBundle = npm.config.get('save-bundle')
+ var savePrefix = npm.config.get('save-prefix') || "^";
// each item in the tree is a top-level thing that should be saved
// to the package.json file.
@@ -353,7 +354,7 @@ function save (where, installed, tree, pretty, hasArguments, cb) {
var rangeDescriptor = semver.valid(k[1], true) &&
semver.gte(k[1], "0.1.0", true) &&
!npm.config.get("save-exact")
- ? "^" : ""
+ ? savePrefix : ""
set[k[0]] = rangeDescriptor + k[1]
return set
}, {})
diff --git a/deps/npm/lib/shrinkwrap.js b/deps/npm/lib/shrinkwrap.js
index 48a3e4ae12e..ef5732590e0 100644
--- a/deps/npm/lib/shrinkwrap.js
+++ b/deps/npm/lib/shrinkwrap.js
@@ -59,7 +59,7 @@ function shrinkwrap_ (pkginfo, silent, dev, cb) {
function save (pkginfo, silent, cb) {
// copy the keys over in a well defined order
// because javascript objects serialize arbitrarily
- pkginfo.dependencies = sortedObject(pkginfo.dependencies)
+ pkginfo.dependencies = sortedObject(pkginfo.dependencies || {})
try {
var swdata = JSON.stringify(pkginfo, null, 2) + "\n"
} catch (er) {
diff --git a/deps/npm/lib/utils/error-handler.js b/deps/npm/lib/utils/error-handler.js
index 4286a1c2910..9777c6a50b0 100644
--- a/deps/npm/lib/utils/error-handler.js
+++ b/deps/npm/lib/utils/error-handler.js
@@ -146,9 +146,10 @@ function errorHandler (er) {
case "E404":
er.code = "E404"
+ var msg = [er.message]
if (er.pkgid && er.pkgid !== "-") {
- var msg = ["'"+er.pkgid+"' is not in the npm registry."
- ,"You should bug the author to publish it"]
+ msg.push("", "'"+er.pkgid+"' is not in the npm registry."
+ ,"You should bug the author to publish it")
if (er.parent) {
msg.push("It was specified as a dependency of '"+er.parent+"'")
}
@@ -161,8 +162,8 @@ function errorHandler (er) {
}
msg.push("\nNote that you can also install from a"
,"tarball, folder, or http url, or git url.")
- log.error("404", msg.join("\n"))
}
+ log.error("404", msg.join("\n"))
break
case "EPUBLISHCONFLICT":
diff --git a/deps/npm/lib/utils/lifecycle.js b/deps/npm/lib/utils/lifecycle.js
index e6ef925b304..d1493700d04 100644
--- a/deps/npm/lib/utils/lifecycle.js
+++ b/deps/npm/lib/utils/lifecycle.js
@@ -1,4 +1,3 @@
-
exports = module.exports = lifecycle
exports.cmd = cmd
@@ -161,7 +160,9 @@ function runCmd (note, cmd, pkg, env, stage, wd, unsafe, cb) {
var user = unsafe ? null : npm.config.get("user")
, group = unsafe ? null : npm.config.get("group")
- console.log(note)
+ if (log.level !== 'silent') {
+ console.log(note)
+ }
log.verbose("unsafe-perm in lifecycle", unsafe)
if (process.platform === "win32") {
diff --git a/deps/npm/lib/view.js b/deps/npm/lib/view.js
index f7ba5a9541c..18484b2bd1a 100644
--- a/deps/npm/lib/view.js
+++ b/deps/npm/lib/view.js
@@ -58,13 +58,24 @@ function view (args, silent, cb) {
// get the data about this package
registry.get(name, function (er, data) {
if (er) return cb(er)
- if (data["dist-tags"].hasOwnProperty(version)) {
+ if (data["dist-tags"] && data["dist-tags"].hasOwnProperty(version)) {
version = data["dist-tags"][version]
}
+
+ if (data.time && data.time.unpublished) {
+ var u = data.time.unpublished
+ var er = new Error("Unpublished by " + u.name + " on " + u.time)
+ er.statusCode = 404
+ er.code = "E404"
+ er.pkgid = data._id
+ return cb(er, data)
+ }
+
+
var results = []
, error = null
- , versions = data.versions
- data.versions = Object.keys(data.versions).sort(semver.compareLoose)
+ , versions = data.versions || {}
+ data.versions = Object.keys(versions).sort(semver.compareLoose)
if (!args.length) args = [""]
// remove readme unless we asked for it
diff --git a/deps/npm/man/man1/npm-README.1 b/deps/npm/man/man1/npm-README.1
index b9d79a83e6c..6118efec7a0 100644
--- a/deps/npm/man/man1/npm-README.1
+++ b/deps/npm/man/man1/npm-README.1
@@ -1,12 +1,13 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM" "1" "March 2014" "" ""
+.TH "NPM" "1" "April 2014" "" ""
.
.SH "NAME"
-\fBnpm\fR \-\- node package manager
+\fBnpm\fR \-\- node package manager {
.fi
.
.SH "VERSION"
-1.4.6
+1.4.7
.
.SH "DESCRIPTION"
This is the API documentation for npm\.
diff --git a/deps/npm/man/man5/npm-folders.5 b/deps/npm/man/man5/npm-folders.5
index 194bb9b6d36..cc93fdee849 100644
--- a/deps/npm/man/man5/npm-folders.5
+++ b/deps/npm/man/man5/npm-folders.5
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-FOLDERS" "5" "March 2014" "" ""
+.TH "NPM\-FOLDERS" "5" "April 2014" "" ""
.
.SH "NAME"
\fBnpm-folders\fR \-\- Folder Structures Used by npm
diff --git a/deps/npm/man/man5/npm-global.5 b/deps/npm/man/man5/npm-global.5
index 194bb9b6d36..cc93fdee849 100644
--- a/deps/npm/man/man5/npm-global.5
+++ b/deps/npm/man/man5/npm-global.5
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-FOLDERS" "5" "March 2014" "" ""
+.TH "NPM\-FOLDERS" "5" "April 2014" "" ""
.
.SH "NAME"
\fBnpm-folders\fR \-\- Folder Structures Used by npm
diff --git a/deps/npm/man/man5/npm-json.5 b/deps/npm/man/man5/npm-json.5
index a0cd2c9b6fc..c08044a9a06 100644
--- a/deps/npm/man/man5/npm-json.5
+++ b/deps/npm/man/man5/npm-json.5
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "PACKAGE\.JSON" "5" "March 2014" "" ""
+.TH "PACKAGE\.JSON" "5" "April 2014" "" ""
.
.SH "NAME"
\fBpackage.json\fR \-\- Specifics of npm\'s package\.json handling
@@ -567,6 +567,57 @@ can consume the functionality without requiring them to compile it
themselves\. In dev mode (ie, locally running \fBnpm install\fR), it\'ll
run this script as well, so that you can test it easily\.
.
+.SH "peerDependencies"
+In some cases, you want to express the compatibility of your package with an
+host tool or library, while not necessarily doing a \fBrequire\fR of this host\.
+This is usually refered to as a \fIplugin\fR\|\. Notably, your module may be exposing
+a specific interface, expected and specified by the host documentation\.
+.
+.P
+For example:
+.
+.IP "" 4
+.
+.nf
+{
+ "name": "tea\-latte",
+ "version": "1\.3\.5"
+ "peerDependencies": {
+ "tea": "2\.x"
+ }
+}
+.
+.fi
+.
+.IP "" 0
+.
+.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:
+.
+.IP "" 4
+.
+.nf
+├── tea\-latte@1\.3\.5
+└── tea@2\.2\.0
+.
+.fi
+.
+.IP "" 0
+.
+.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\.
+.
+.P
+Assuming the host complies with semver \fIhttp://semver\.org/\fR, only changes in
+the host package\'s major version will break your plugin\. Thus, if you\'ve worked
+with every 1\.x version of the host package, use \fB"^1\.0"\fR or \fB"1\.x"\fR to express
+this\. If you depend on features introduced in 1\.5\.2, use \fB">= 1\.5\.2 < 2"\fR\|\.
+.
.SH "bundledDependencies"
Array of package names that will be bundled when publishing the package\.
.
diff --git a/deps/npm/man/man5/npmrc.5 b/deps/npm/man/man5/npmrc.5
index e8a740abd35..8ac6b3ba8f2 100644
--- a/deps/npm/man/man5/npmrc.5
+++ b/deps/npm/man/man5/npmrc.5
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPMRC" "5" "March 2014" "" ""
+.TH "NPMRC" "5" "April 2014" "" ""
.
.SH "NAME"
\fBnpmrc\fR \-\- The npm config files
diff --git a/deps/npm/man/man5/package.json.5 b/deps/npm/man/man5/package.json.5
index a0cd2c9b6fc..c08044a9a06 100644
--- a/deps/npm/man/man5/package.json.5
+++ b/deps/npm/man/man5/package.json.5
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "PACKAGE\.JSON" "5" "March 2014" "" ""
+.TH "PACKAGE\.JSON" "5" "April 2014" "" ""
.
.SH "NAME"
\fBpackage.json\fR \-\- Specifics of npm\'s package\.json handling
@@ -567,6 +567,57 @@ can consume the functionality without requiring them to compile it
themselves\. In dev mode (ie, locally running \fBnpm install\fR), it\'ll
run this script as well, so that you can test it easily\.
.
+.SH "peerDependencies"
+In some cases, you want to express the compatibility of your package with an
+host tool or library, while not necessarily doing a \fBrequire\fR of this host\.
+This is usually refered to as a \fIplugin\fR\|\. Notably, your module may be exposing
+a specific interface, expected and specified by the host documentation\.
+.
+.P
+For example:
+.
+.IP "" 4
+.
+.nf
+{
+ "name": "tea\-latte",
+ "version": "1\.3\.5"
+ "peerDependencies": {
+ "tea": "2\.x"
+ }
+}
+.
+.fi
+.
+.IP "" 0
+.
+.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:
+.
+.IP "" 4
+.
+.nf
+├── tea\-latte@1\.3\.5
+└── tea@2\.2\.0
+.
+.fi
+.
+.IP "" 0
+.
+.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\.
+.
+.P
+Assuming the host complies with semver \fIhttp://semver\.org/\fR, only changes in
+the host package\'s major version will break your plugin\. Thus, if you\'ve worked
+with every 1\.x version of the host package, use \fB"^1\.0"\fR or \fB"1\.x"\fR to express
+this\. If you depend on features introduced in 1\.5\.2, use \fB">= 1\.5\.2 < 2"\fR\|\.
+.
.SH "bundledDependencies"
Array of package names that will be bundled when publishing the package\.
.
diff --git a/deps/npm/man/man7/npm-coding-style.7 b/deps/npm/man/man7/npm-coding-style.7
index 710aa660471..a15a004e1b7 100644
--- a/deps/npm/man/man7/npm-coding-style.7
+++ b/deps/npm/man/man7/npm-coding-style.7
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-CODING\-STYLE" "7" "March 2014" "" ""
+.TH "NPM\-CODING\-STYLE" "7" "April 2014" "" ""
.
.SH "NAME"
\fBnpm-coding-style\fR \-\- npm\'s "funny" coding style
diff --git a/deps/npm/man/man7/npm-config.7 b/deps/npm/man/man7/npm-config.7
index 60577f4ee41..a7069c811bb 100644
--- a/deps/npm/man/man7/npm-config.7
+++ b/deps/npm/man/man7/npm-config.7
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-CONFIG" "7" "March 2014" "" ""
+.TH "NPM\-CONFIG" "7" "April 2014" "" ""
.
.SH "NAME"
\fBnpm-config\fR \-\- More than you probably want to know about npm configuration
@@ -1137,6 +1137,27 @@ devDependencies hash\.
.P
Only works if there is already a package\.json file present\.
.
+.SS "save\-prefix"
+.
+.IP "\(bu" 4
+Default: \'^\'
+.
+.IP "\(bu" 4
+Type: String
+.
+.IP "" 0
+.
+.P
+Configure how versions of packages installed to a package\.json file via \fB\-\-save\fR or \fB\-\-save\-dev\fR get prefixed\.
+.
+.P
+For example if a package has version \fB1\.2\.3\fR, by default it\'s version is
+set to \fB^1\.2\.3\fR which allows minor upgrades for that package, but after
+.
+.br
+\fBnpm config set save\-prefix=\'~\'\fR it would be set to \fB~1\.2\.3\fR which only allows
+patch upgrades\.
+.
.SS "searchopts"
.
.IP "\(bu" 4
diff --git a/deps/npm/man/man7/npm-developers.7 b/deps/npm/man/man7/npm-developers.7
index b50705ba1af..acd9593a6bd 100644
--- a/deps/npm/man/man7/npm-developers.7
+++ b/deps/npm/man/man7/npm-developers.7
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-DEVELOPERS" "7" "March 2014" "" ""
+.TH "NPM\-DEVELOPERS" "7" "April 2014" "" ""
.
.SH "NAME"
\fBnpm-developers\fR \-\- Developer Guide
diff --git a/deps/npm/man/man7/npm-disputes.7 b/deps/npm/man/man7/npm-disputes.7
index 3afd7e571ec..1d59103d3f5 100644
--- a/deps/npm/man/man7/npm-disputes.7
+++ b/deps/npm/man/man7/npm-disputes.7
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-DISPUTES" "7" "March 2014" "" ""
+.TH "NPM\-DISPUTES" "7" "April 2014" "" ""
.
.SH "NAME"
\fBnpm-disputes\fR \-\- Handling Module Name Disputes
diff --git a/deps/npm/man/man7/npm-faq.7 b/deps/npm/man/man7/npm-faq.7
index ce7453fa04c..9793e51436a 100644
--- a/deps/npm/man/man7/npm-faq.7
+++ b/deps/npm/man/man7/npm-faq.7
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-FAQ" "7" "March 2014" "" ""
+.TH "NPM\-FAQ" "7" "April 2014" "" ""
.
.SH "NAME"
\fBnpm-faq\fR \-\- Frequently Asked Questions
@@ -94,7 +94,7 @@ npm will not help you do something that is known to be a bad idea\.
Mikeal Rogers answered this question very well:
.
.P
-\fIhttp://www\.mikealrogers\.com/posts/nodemodules\-in\-git\.html\fR
+\fIhttp://www\.futurealoof\.com/posts/nodemodules\-in\-git\.html\fR
.
.P
tl;dr
diff --git a/deps/npm/man/man7/npm-index.7 b/deps/npm/man/man7/npm-index.7
index 8e17a3d7a52..24abdf9e36c 100644
--- a/deps/npm/man/man7/npm-index.7
+++ b/deps/npm/man/man7/npm-index.7
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-INDEX" "7" "March 2014" "" ""
+.TH "NPM\-INDEX" "7" "April 2014" "" ""
.
.SH "NAME"
\fBnpm-index\fR \-\- Index of all npm documentation
diff --git a/deps/npm/man/man7/npm-registry.7 b/deps/npm/man/man7/npm-registry.7
index 5a62ae6fcbf..94b915a9a6b 100644
--- a/deps/npm/man/man7/npm-registry.7
+++ b/deps/npm/man/man7/npm-registry.7
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-REGISTRY" "7" "March 2014" "" ""
+.TH "NPM\-REGISTRY" "7" "April 2014" "" ""
.
.SH "NAME"
\fBnpm-registry\fR \-\- The JavaScript Package Registry
diff --git a/deps/npm/man/man7/npm-scripts.7 b/deps/npm/man/man7/npm-scripts.7
index bc16a8d6ef9..8ccf99db7dc 100644
--- a/deps/npm/man/man7/npm-scripts.7
+++ b/deps/npm/man/man7/npm-scripts.7
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-SCRIPTS" "7" "March 2014" "" ""
+.TH "NPM\-SCRIPTS" "7" "April 2014" "" ""
.
.SH "NAME"
\fBnpm-scripts\fR \-\- How npm handles the "scripts" field
diff --git a/deps/npm/man/man7/removing-npm.7 b/deps/npm/man/man7/removing-npm.7
index d3fd8696d91..947046a8f61 100644
--- a/deps/npm/man/man7/removing-npm.7
+++ b/deps/npm/man/man7/removing-npm.7
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-REMOVAL" "1" "March 2014" "" ""
+.TH "NPM\-REMOVAL" "1" "April 2014" "" ""
.
.SH "NAME"
\fBnpm-removal\fR \-\- Cleaning the Slate
diff --git a/deps/npm/man/man7/semver.7 b/deps/npm/man/man7/semver.7
index 567e28f4d03..6e2e984debd 100644
--- a/deps/npm/man/man7/semver.7
+++ b/deps/npm/man/man7/semver.7
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "SEMVER" "7" "March 2014" "" ""
+.TH "SEMVER" "7" "April 2014" "" ""
.
.SH "NAME"
\fBsemver\fR \-\- The semantic versioner for npm
diff --git a/deps/npm/node_modules/npm-registry-client/lib/request.js b/deps/npm/node_modules/npm-registry-client/lib/request.js
index c11dc9ca3d8..3cbb07228b9 100644
--- a/deps/npm/node_modules/npm-registry-client/lib/request.js
+++ b/deps/npm/node_modules/npm-registry-client/lib/request.js
@@ -112,6 +112,8 @@ function regRequest (method, where, what, etag, nofollow, cb_) {
self.log.info("retry", "will retry, error on last attempt: " + er)
return
}
+ if (response)
+ this.log.verbose("headers", response.headers)
cb.apply(null, arguments)
}.bind(this))
}.bind(this))
@@ -189,6 +191,12 @@ function decodeResponseBody(cb) {
return function (er, response, data) {
if (er) return cb(er, response, data)
+ // don't ever re-use connections that had server errors.
+ // those sockets connect to the Bad Place!
+ if (response.socket && response.statusCode > 500) {
+ response.socket.destroy()
+ }
+
if (response.headers['content-encoding'] !== 'gzip') return cb(er, response, data)
zlib.gunzip(data, function (er, buf) {
diff --git a/deps/npm/node_modules/npm-registry-client/package.json b/deps/npm/node_modules/npm-registry-client/package.json
index 17d1f782c72..0a9d7314368 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": "0.4.5",
+ "version": "0.4.7",
"repository": {
"url": "git://github.com/isaacs/npm-registry-client"
},
@@ -38,6 +38,6 @@
"url": "https://github.com/isaacs/npm-registry-client/issues"
},
"homepage": "https://github.com/isaacs/npm-registry-client",
- "_id": "npm-registry-client@0.4.5",
+ "_id": "npm-registry-client@0.4.7",
"_from": "npm-registry-client@latest"
}
diff --git a/deps/npm/node_modules/npmconf/config-defs.js b/deps/npm/node_modules/npmconf/config-defs.js
index 1815870f6ff..2760a452e6e 100644
--- a/deps/npm/node_modules/npmconf/config-defs.js
+++ b/deps/npm/node_modules/npmconf/config-defs.js
@@ -188,6 +188,7 @@ Object.defineProperty(exports, "defaults", {get: function () {
, "save-dev" : false
, "save-exact" : false
, "save-optional" : false
+ , "save-prefix": "^"
, searchopts: ""
, searchexclude: null
, searchsort: "name"
@@ -290,6 +291,7 @@ exports.types =
, "save-dev" : Boolean
, "save-exact" : Boolean
, "save-optional" : Boolean
+ , "save-prefix": String
, searchopts : String
, searchexclude: [null, String]
, searchsort: [ "name", "-name"
diff --git a/deps/npm/node_modules/npmconf/node_modules/config-chain/node_modules/proto-list/package.json b/deps/npm/node_modules/npmconf/node_modules/config-chain/node_modules/proto-list/package.json
index b7117440c60..a7349f06b7a 100644
--- a/deps/npm/node_modules/npmconf/node_modules/config-chain/node_modules/proto-list/package.json
+++ b/deps/npm/node_modules/npmconf/node_modules/config-chain/node_modules/proto-list/package.json
@@ -29,9 +29,7 @@
},
"homepage": "https://github.com/isaacs/proto-list",
"_id": "proto-list@1.2.2",
- "dist": {
- "shasum": "48b88798261ec2c4a785720cdfec6200d57d3326"
- },
+ "_shasum": "48b88798261ec2c4a785720cdfec6200d57d3326",
"_from": "proto-list@~1.2.1",
"_resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.2.tgz"
}
diff --git a/deps/npm/node_modules/npmconf/node_modules/config-chain/package.json b/deps/npm/node_modules/npmconf/node_modules/config-chain/package.json
index 72ab798b72b..2f8695410e5 100644
--- a/deps/npm/node_modules/npmconf/node_modules/config-chain/package.json
+++ b/deps/npm/node_modules/npmconf/node_modules/config-chain/package.json
@@ -28,9 +28,7 @@
"url": "https://github.com/dominictarr/config-chain/issues"
},
"_id": "config-chain@1.1.8",
- "dist": {
- "shasum": "a3b9ae699dedb3a7837615001f3cf646ca37c77a"
- },
+ "_shasum": "0943d0b7227213a20d4eaff4434f4a1c0a052cad",
"_from": "config-chain@~1.1.8",
"_resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.8.tgz"
}
diff --git a/deps/npm/node_modules/npmconf/package.json b/deps/npm/node_modules/npmconf/package.json
index 89b8fc80871..b87c1def93f 100644
--- a/deps/npm/node_modules/npmconf/package.json
+++ b/deps/npm/node_modules/npmconf/package.json
@@ -1,6 +1,6 @@
{
"name": "npmconf",
- "version": "0.1.13",
+ "version": "0.1.14",
"description": "The config thing npm uses",
"main": "npmconf.js",
"directories": {
@@ -45,6 +45,7 @@
"url": "https://github.com/isaacs/npmconf/issues"
},
"homepage": "https://github.com/isaacs/npmconf",
- "_id": "npmconf@0.1.13",
+ "_id": "npmconf@0.1.14",
+ "_shasum": "aea4bc12c5a84191a32cd350e325da4fe8b127e7",
"_from": "npmconf@latest"
}
diff --git a/deps/npm/node_modules/read-installed/package.json b/deps/npm/node_modules/read-installed/package.json
index 7887f71a9d8..41a980f76eb 100644
--- a/deps/npm/node_modules/read-installed/package.json
+++ b/deps/npm/node_modules/read-installed/package.json
@@ -1,7 +1,7 @@
{
"name": "read-installed",
"description": "Read all the installed packages in a folder, and return a tree structure with all the data.",
- "version": "2.0.1",
+ "version": "2.0.2",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/read-installed"
@@ -35,6 +35,6 @@
"url": "https://github.com/isaacs/read-installed/issues"
},
"homepage": "https://github.com/isaacs/read-installed",
- "_id": "read-installed@2.0.1",
+ "_id": "read-installed@2.0.2",
"_from": "read-installed@latest"
}
diff --git a/deps/npm/node_modules/read-installed/read-installed.js b/deps/npm/node_modules/read-installed/read-installed.js
index f9104934d3e..a33758b1720 100644
--- a/deps/npm/node_modules/read-installed/read-installed.js
+++ b/deps/npm/node_modules/read-installed/read-installed.js
@@ -334,10 +334,13 @@ function findUnmet (obj, opts) {
dependency = obj.parent.dependencies && obj.parent.dependencies[d]
}
- if (!dependency) return
-
- if (!semver.satisfies(dependency.version, peerDeps[d], true)) {
+ if (!dependency) {
+ // mark as a missing dep!
+ obj.dependencies[d] = peerDeps[d]
+ } else if (!semver.satisfies(dependency.version, peerDeps[d], true)) {
dependency.peerInvalid = true
+ } else {
+ dependency.extraneous = false
}
})
diff --git a/deps/npm/package.json b/deps/npm/package.json
index 6e5004af72c..76b1f02fd8b 100644
--- a/deps/npm/package.json
+++ b/deps/npm/package.json
@@ -1,5 +1,5 @@
{
- "version": "1.4.6",
+ "version": "1.4.7",
"name": "npm",
"publishConfig": {
"proprietary-attribs": false
@@ -61,9 +61,9 @@
"node-gyp": "~0.13.0",
"nopt": "~2.2.0",
"npm-install-checks": "~1.0.0",
- "npm-registry-client": "~0.4.5",
+ "npm-registry-client": "~0.4.7",
"npm-user-validate": "0.0.3",
- "npmconf": "~0.1.13",
+ "npmconf": "~0.1.14",
"npmlog": "0.0.6",
"once": "~1.3.0",
"opener": "~1.3.0",
@@ -138,7 +138,7 @@
"which"
],
"devDependencies": {
- "npm-registry-mock": "~0.5",
+ "npm-registry-mock": "~0.6.3",
"ronn": "~0.3.6",
"tap": "~0.4.0"
},
@@ -147,11 +147,12 @@
"npm": "1"
},
"scripts": {
- "test": "node ./test/run.js && tap test/tap/*.js",
- "tap": "tap test/tap/*.js",
+ "test-legacy": "node ./test/run.js",
+ "test": "tap --timeout 120 test/tap/*.js",
+ "tap": "tap --timeout 120 test/tap/*.js",
+ "test-all": "node ./test/run.js && tap test/tap/*.js",
"prepublish": "node bin/npm-cli.js prune --prefix=. --no-global && rm -rf test/*/*/node_modules && make -j32 doc",
- "dumpconf": "env | grep npm | sort | uniq",
- "echo": "node bin/npm-cli.js"
+ "dumpconf": "env | grep npm | sort | uniq"
},
"license": "Artistic-2.0"
}
diff --git a/deps/npm/scripts/doc-build.sh b/deps/npm/scripts/doc-build.sh
index 849ffce3f7d..cd8d4fa7710 100755
--- a/deps/npm/scripts/doc-build.sh
+++ b/deps/npm/scripts/doc-build.sh
@@ -53,11 +53,13 @@ case $dest in
exit $?
;;
*.html)
+ url=${dest/html\//}
(cat html/dochead.html && \
./node_modules/.bin/ronn -f $src &&
cat html/docfoot.html)\
| sed "s|@NAME@|$name|g" \
| sed "s|@DATE@|$date|g" \
+ | sed "s|@URL@|$url|g" \
| sed "s|@VERSION@|$version|g" \
| perl -pi -e 's/([^\(]*\([0-9]\)) -- (.*?)<\/h1>/\1<\/h1>
\2<\/p>/g' \
| perl -pi -e 's/npm-npm/npm/g' \
diff --git a/deps/npm/test/tap/00-check-mock-dep.js b/deps/npm/test/tap/00-check-mock-dep.js
new file mode 100644
index 00000000000..c4d2ff2c224
--- /dev/null
+++ b/deps/npm/test/tap/00-check-mock-dep.js
@@ -0,0 +1,15 @@
+console.log("TAP Version 13")
+
+process.on("uncaughtException", function(er) {
+ console.log("not ok - Failed checking mock registry dep. Expect much fail!")
+ console.log("1..1")
+ process.exit(1)
+})
+
+var assert = require("assert")
+var semver = require("semver")
+var mock = require("npm-registry-mock/package.json").version
+var req = require("../../package.json").devDependencies["npm-registry-mock"]
+assert(semver.satisfies(mock, req))
+console.log("ok")
+console.log("1..1")
diff --git a/deps/npm/test/tap/404-parent.js b/deps/npm/test/tap/404-parent.js
index a7eff25b6e6..b3c353827f7 100644
--- a/deps/npm/test/tap/404-parent.js
+++ b/deps/npm/test/tap/404-parent.js
@@ -7,6 +7,7 @@ var fs = require('fs')
var rimraf = require('rimraf')
var mkdirp = require('mkdirp')
var pkg = path.resolve(__dirname, '404-parent')
+var mr = require("npm-registry-mock")
test('404-parent: if parent exists, specify parent in error message', function(t) {
setup()
@@ -41,9 +42,12 @@ function setup() {
}
function performInstall(cb) {
- npm.load(function() {
- npm.commands.install(pkg, [], function(err) {
- cb(err)
+ mr(common.port, function (s) { // create mock registry.
+ npm.load({registry: common.registry}, function() {
+ npm.commands.install(pkg, [], function(err) {
+ cb(err)
+ s.close() // shutdown mock npm server.
+ })
})
})
}
diff --git a/deps/npm/test/tap/cache-shasum.js b/deps/npm/test/tap/cache-shasum.js
new file mode 100644
index 00000000000..460f2ee3ff1
--- /dev/null
+++ b/deps/npm/test/tap/cache-shasum.js
@@ -0,0 +1,60 @@
+var npm = require.resolve("../../")
+var test = require("tap").test
+var path = require("path")
+var fs = require("fs")
+var rimraf = require("rimraf")
+var mkdirp = require("mkdirp")
+var mr = require("npm-registry-mock")
+var common = require("../common-tap.js")
+var cache = path.resolve(__dirname, "cache-shasum")
+var spawn = require("child_process").spawn
+var sha = require("sha")
+var server
+
+test("mock reg", function(t) {
+ rimraf.sync(cache)
+ mkdirp.sync(cache)
+ mr(common.port, function (s) {
+ server = s
+ t.pass("ok")
+ t.end()
+ })
+})
+
+test("npm cache add request", function(t) {
+ var c = spawn(process.execPath, [
+ npm, "cache", "add", "request@2.27.0",
+ "--cache=" + cache,
+ "--registry=" + common.registry,
+ "--loglevel=quiet"
+ ])
+ c.stderr.pipe(process.stderr)
+
+ c.stdout.on("data", function(d) {
+ t.fail("Should not get data on stdout: " + d)
+ })
+
+ c.on("close", function(code) {
+ t.notOk(code, "exit ok")
+ t.end()
+ })
+})
+
+test("compare", function(t) {
+ var d = path.resolve(__dirname, "cache-shasum/request")
+ var p = path.resolve(d, "2.27.0/package.tgz")
+ var r = require(path.resolve(d, ".cache.json"))
+ var rshasum = r.versions['2.27.0'].dist.shasum
+ sha.get(p, function (er, pshasum) {
+ if (er)
+ throw er
+ t.equal(pshasum, rshasum)
+ t.end()
+ })
+})
+
+test("cleanup", function(t) {
+ server.close()
+ rimraf.sync(cache)
+ t.end()
+})
diff --git a/deps/npm/test/tap/dedupe.js b/deps/npm/test/tap/dedupe.js
index 9a8b31a7991..b4b7495aa87 100644
--- a/deps/npm/test/tap/dedupe.js
+++ b/deps/npm/test/tap/dedupe.js
@@ -4,17 +4,19 @@ var test = require("tap").test
, existsSync = fs.existsSync || path.existsSync
, npm = require("../../")
, rimraf = require("rimraf")
+ , mr = require("npm-registry-mock")
+ , common = require('../common-tap.js')
test("dedupe finds the common module and moves it up one level", function (t) {
- t.plan(2)
-
- setup(function () {
+ setup(function (s) {
npm.install(".", function (err) {
if (err) return t.fail(err)
npm.dedupe(function(err) {
if (err) return t.fail(err)
t.ok(existsSync(path.join(__dirname, "dedupe", "node_modules", "minimist")))
- t.ok(!existsSync(path.join(__dirname, "dedupe", "node_modules", "prime")))
+ t.ok(!existsSync(path.join(__dirname, "dedupe", "node_modules", "checker")))
+ s.close() // shutdown mock registry.
+ t.end()
})
})
})
@@ -22,9 +24,11 @@ test("dedupe finds the common module and moves it up one level", function (t) {
function setup (cb) {
process.chdir(path.join(__dirname, "dedupe"))
- npm.load(function () {
- rimraf.sync(path.join(__dirname, "dedupe", "node_modules"))
- fs.mkdirSync(path.join(__dirname, "dedupe", "node_modules"))
- cb()
+ mr(common.port, function (s) { // create mock registry.
+ npm.load({registry: common.registry}, function() {
+ rimraf.sync(path.join(__dirname, "dedupe", "node_modules"))
+ fs.mkdirSync(path.join(__dirname, "dedupe", "node_modules"))
+ cb(s)
+ })
})
}
diff --git a/deps/npm/test/tap/dedupe/package.json b/deps/npm/test/tap/dedupe/package.json
index d0f79ff2023..842d4b2b2d7 100644
--- a/deps/npm/test/tap/dedupe/package.json
+++ b/deps/npm/test/tap/dedupe/package.json
@@ -4,8 +4,6 @@
"version": "0.0.0",
"dependencies": {
"optimist": "0.6.0",
- "clean": "2.1.6",
- "informal": "0.0.1",
- "pathogen": "0.1.5"
+ "clean": "2.1.6"
}
}
diff --git a/deps/npm/test/tap/git-cache-locking.js b/deps/npm/test/tap/git-cache-locking.js
index dcecad9ebf3..b9b328f30c6 100644
--- a/deps/npm/test/tap/git-cache-locking.js
+++ b/deps/npm/test/tap/git-cache-locking.js
@@ -21,6 +21,9 @@ test("setup", function (t) {
test("git-cache-locking: install a git dependency", function (t) {
+ // disable git integration tests on Travis.
+ if (process.env.TRAVIS) return t.end()
+
// package c depends on a.git#master and b.git#master
// package b depends on a.git#master
var child = spawn(node, [npm, "install", "git://github.com/nigelzor/npm-4503-c.git"], {
diff --git a/deps/npm/test/tap/ignore-scripts.js b/deps/npm/test/tap/ignore-scripts.js
index b742cf92e8a..0115b7571d8 100644
--- a/deps/npm/test/tap/ignore-scripts.js
+++ b/deps/npm/test/tap/ignore-scripts.js
@@ -35,7 +35,7 @@ var scripts = [
]
scripts.forEach(function(script) {
- test("ignore-scripts: run-script"+script+" using the option", function(t) {
+ test("ignore-scripts: run-script "+script+" using the option", function(t) {
createChild([npm, "--ignore-scripts", "run-script", script])
.on("close", function(code) {
t.equal(code, 0)
@@ -57,7 +57,8 @@ function createChild (args) {
var env = {
HOME: process.env.HOME,
Path: process.env.PATH,
- PATH: process.env.PATH
+ PATH: process.env.PATH,
+ npm_config_loglevel: "silent"
}
if (process.platform === "win32")
diff --git a/deps/npm/test/tap/install-save-prefix.js b/deps/npm/test/tap/install-save-prefix.js
new file mode 100644
index 00000000000..0ce6e02fa11
--- /dev/null
+++ b/deps/npm/test/tap/install-save-prefix.js
@@ -0,0 +1,140 @@
+var common = require('../common-tap.js')
+var test = require('tap').test
+var npm = require('../../')
+var osenv = require('osenv')
+var path = require('path')
+var fs = require('fs')
+var rimraf = require('rimraf')
+var mkdirp = require('mkdirp')
+var pkg = path.join(__dirname, 'install-save-prefix')
+var mr = require("npm-registry-mock")
+
+test("setup", function (t) {
+ mkdirp.sync(pkg)
+ mkdirp.sync(path.resolve(pkg, 'node_modules'))
+ process.chdir(pkg)
+ t.end()
+})
+
+test('"npm install --save with default save-prefix should install local pkg versioned to allow minor updates', function(t) {
+ resetPackageJSON(pkg)
+ mr(common.port, function (s) {
+ npm.load({
+ cache: pkg + "/cache",
+ loglevel: 'silent',
+ registry: common.registry }, function(err) {
+ t.ifError(err)
+ npm.config.set('save', true)
+ npm.commands.install(['underscore@1.3.1'], function(err) {
+ t.ifError(err)
+ var p = path.resolve(pkg, 'node_modules/underscore/package.json')
+ t.ok(JSON.parse(fs.readFileSync(p)))
+ var pkgJson = JSON.parse(fs.readFileSync(pkg + '/package.json', 'utf8'))
+ t.deepEqual(pkgJson.dependencies, {
+ 'underscore': '^1.3.1'
+ }, 'Underscore dependency should specify ^1.3.1')
+ npm.config.set('save', undefined)
+ s.close()
+ t.end()
+ })
+ })
+ })
+})
+
+test('"npm install --save-dev with default save-prefix should install local pkg to dev dependencies versioned to allow minor updates', function(t) {
+ resetPackageJSON(pkg)
+ mr(common.port, function (s) {
+ npm.load({
+ cache: pkg + "/cache",
+ loglevel: 'silent',
+ registry: common.registry }, function(err) {
+ t.ifError(err)
+ npm.config.set('save-dev', true)
+ npm.commands.install(['underscore@1.3.1'], function(err) {
+ t.ifError(err)
+ var p = path.resolve(pkg, 'node_modules/underscore/package.json')
+ t.ok(JSON.parse(fs.readFileSync(p)))
+ var pkgJson = JSON.parse(fs.readFileSync(pkg + '/package.json', 'utf8'))
+ t.deepEqual(pkgJson.devDependencies, {
+ 'underscore': '^1.3.1'
+ }, 'Underscore devDependency should specify ^1.3.1')
+ npm.config.set('save-dev', undefined)
+ s.close()
+ t.end()
+ })
+ })
+ })
+})
+
+test('"npm install --save with "~" save-prefix should install local pkg versioned to allow patch updates', function(t) {
+ resetPackageJSON(pkg)
+ mr(common.port, function (s) {
+ npm.load({
+ cache: pkg + "/cache",
+ loglevel: 'silent',
+ registry: common.registry }, function(err) {
+ t.ifError(err)
+ npm.config.set('save', true)
+ npm.config.set('save-prefix', '~')
+ npm.commands.install(['underscore@1.3.1'], function(err) {
+ t.ifError(err)
+ var p = path.resolve(pkg, 'node_modules/underscore/package.json')
+ t.ok(JSON.parse(fs.readFileSync(p)))
+ var pkgJson = JSON.parse(fs.readFileSync(pkg + '/package.json', 'utf8'))
+ t.deepEqual(pkgJson.dependencies, {
+ 'underscore': '~1.3.1'
+ }, 'Underscore dependency should specify ~1.3.1')
+ npm.config.set('save', undefined)
+ npm.config.set('save-prefix', undefined)
+ s.close()
+ t.end()
+ })
+ })
+ })
+})
+
+test('"npm install --save-dev with "~" save-prefix should install local pkg to dev dependencies versioned to allow patch updates', function(t) {
+ resetPackageJSON(pkg)
+ mr(common.port, function (s) {
+ npm.load({
+ cache: pkg + "/cache",
+ loglevel: 'silent',
+ registry: common.registry }, function(err) {
+ t.ifError(err)
+ npm.config.set('save-dev', true)
+ npm.config.set('save-prefix', '~')
+ npm.commands.install(['underscore@1.3.1'], function(err) {
+ t.ifError(err)
+ var p = path.resolve(pkg, 'node_modules/underscore/package.json')
+ t.ok(JSON.parse(fs.readFileSync(p)))
+ var pkgJson = JSON.parse(fs.readFileSync(pkg + '/package.json', 'utf8'))
+ t.deepEqual(pkgJson.devDependencies, {
+ 'underscore': '~1.3.1'
+ }, 'Underscore devDependency should specify ~1.3.1')
+ npm.config.set('save-dev', undefined)
+ npm.config.set('save-prefix', undefined)
+ s.close()
+ t.end()
+ })
+ })
+ })
+})
+
+test('cleanup', function(t) {
+ process.chdir(__dirname)
+ rimraf.sync(path.resolve(pkg, 'node_modules'))
+ rimraf.sync(path.resolve(pkg, 'cache'))
+ resetPackageJSON(pkg)
+ t.end()
+})
+
+function resetPackageJSON(pkg) {
+ var pkgJson = JSON.parse(fs.readFileSync(pkg + '/package.json', 'utf8'))
+ delete pkgJson.dependencies
+ delete pkgJson.devDependencies
+ delete pkgJson.optionalDependencies
+ var json = JSON.stringify(pkgJson, null, 2) + "\n"
+ fs.writeFileSync(pkg + '/package.json', json, "ascii")
+}
+
+
diff --git a/deps/npm/test/tap/install-save-prefix/README.md b/deps/npm/test/tap/install-save-prefix/README.md
new file mode 100644
index 00000000000..aca67ff17d2
--- /dev/null
+++ b/deps/npm/test/tap/install-save-prefix/README.md
@@ -0,0 +1 @@
+# just a test
diff --git a/deps/npm/test/tap/install-save-prefix/index.js b/deps/npm/test/tap/install-save-prefix/index.js
new file mode 100644
index 00000000000..33c1891f81e
--- /dev/null
+++ b/deps/npm/test/tap/install-save-prefix/index.js
@@ -0,0 +1 @@
+module.exports = true
diff --git a/deps/npm/test/tap/install-save-prefix/package.json b/deps/npm/test/tap/install-save-prefix/package.json
new file mode 100644
index 00000000000..84789fc224f
--- /dev/null
+++ b/deps/npm/test/tap/install-save-prefix/package.json
@@ -0,0 +1,7 @@
+{
+ "name": "bla",
+ "description": "fixture",
+ "version": "0.0.1",
+ "main": "index.js",
+ "repository": "git://github.com/robertkowalski/bogusfixture"
+}
diff --git a/deps/npm/test/tap/lifecycle-signal.js b/deps/npm/test/tap/lifecycle-signal.js
index e39e891e15b..9d88fbd79b8 100644
--- a/deps/npm/test/tap/lifecycle-signal.js
+++ b/deps/npm/test/tap/lifecycle-signal.js
@@ -7,11 +7,19 @@ var pkg = path.resolve(__dirname, "lifecycle-signal")
test("lifecycle signal abort", function (t) {
// windows does not use lifecycle signals, abort
- if (process.platform === "win32") return t.end()
+ if (process.platform === "win32" || process.env.TRAVIS) return t.end()
+
var child = spawn(node, [npm, "install"], {
cwd: pkg
})
child.on("close", function (code, signal) {
+ // GNU shell returns a code, no signal
+ if (process.platform === "linux") {
+ t.equal(code, 1)
+ t.equal(signal, null)
+ return t.end()
+ }
+
t.equal(code, null)
t.equal(signal, "SIGSEGV")
t.end()
diff --git a/deps/npm/test/tap/outdated-color.js b/deps/npm/test/tap/outdated-color.js
index e729d56a85f..f20bcea93cf 100644
--- a/deps/npm/test/tap/outdated-color.js
+++ b/deps/npm/test/tap/outdated-color.js
@@ -5,6 +5,7 @@ var mkdirp = require("mkdirp")
var rimraf = require("rimraf")
var mr = require("npm-registry-mock")
var exec = require('child_process').exec
+var mr = require("npm-registry-mock")
var pkg = __dirname + '/outdated'
var NPM_BIN = __dirname + '/../../bin/npm-cli.js'
@@ -25,12 +26,15 @@ function ansiTrim (str) {
// it's not running in a tty
test("does not use ansi styling", function (t) {
t.plan(3)
- exec('node ' + NPM_BIN + ' outdated --color false', {
- cwd: pkg
- }, function(err, stdout) {
- t.ifError(err)
- t.ok(stdout, stdout.length)
- t.ok(!hasControlCodes(stdout))
+ mr(common.port, function (s) { // create mock registry.
+ exec('node ' + NPM_BIN + ' outdated --registry ' + common.registry + ' --color false underscore', {
+ cwd: pkg
+ }, function(err, stdout) {
+ t.ifError(err)
+ t.ok(stdout, stdout.length)
+ t.ok(!hasControlCodes(stdout))
+ s.close()
+ })
})
})
@@ -38,4 +42,3 @@ test("cleanup", function (t) {
rimraf.sync(pkg + "/cache")
t.end()
})
-
diff --git a/deps/npm/test/tap/peer-deps-invalid.js b/deps/npm/test/tap/peer-deps-invalid.js
index 50c961e7b9a..2392c928a22 100644
--- a/deps/npm/test/tap/peer-deps-invalid.js
+++ b/deps/npm/test/tap/peer-deps-invalid.js
@@ -4,18 +4,19 @@ var test = require("tap").test
var rimraf = require("rimraf")
var npm = require("../../")
var http = require("http")
+var mr = require("npm-registry-mock")
var okFile = new Buffer(
-'/**package\n' +
-' * { "name": "npm-test-peer-deps-file"\n' +
-' * , "main": "index.js"\n' +
-' * , "version": "1.2.3"\n' +
-' * , "description":"No package.json in sight!"\n' +
-' * , "peerDependencies": { "dict": "1.1.0" }\n' +
-' * , "dependencies": { "opener": "1.3.0" }\n' +
-' * }\n' +
-' **/\n' +
-'\n' +
+'/**package\n' +
+' * { "name": "npm-test-peer-deps-file"\n' +
+' * , "main": "index.js"\n' +
+' * , "version": "1.2.3"\n' +
+' * , "description":"No package.json in sight!"\n' +
+' * , "peerDependencies": { "underscore": "1.3.1" }\n' +
+' * , "dependencies": { "mkdirp": "0.3.5" }\n' +
+' * }\n' +
+' **/\n' +
+'\n' +
'module.exports = "I\'m just a lonely index, naked as the day I was born."\n'
)
@@ -25,7 +26,7 @@ var failFile = new Buffer(
' * , "main": "index.js"\n' +
' * , "version": "1.2.3"\n' +
' * , "description":"This one should conflict with the other one"\n' +
-' * , "peerDependencies": { "dict": "1.0.0" }\n' +
+' * , "peerDependencies": { "underscore": "1.3.3" }\n' +
' * }\n' +
' **/\n' +
'\n' +
@@ -51,20 +52,25 @@ test("setup", function(t) {
-test("installing dependencies that having conflicting peerDependencies", function (t) {
+test("installing dependencies that have conflicting peerDependencies", function (t) {
rimraf.sync(__dirname + "/peer-deps-invalid/node_modules")
process.chdir(__dirname + "/peer-deps-invalid")
- npm.load(function () {
- console.error('back from load')
- npm.commands.install([], function (err) {
- console.error('back from install')
- if (!err) {
- t.fail("No error!")
- } else {
- t.equal(err.code, "EPEERINVALID")
- }
- t.end()
+ // we're already listening on common.port,
+ // use an alternative port for this test.
+ mr(1331, function (s) { // create mock registry.
+ npm.load({registry: "http://localhost:1331"}, function () {
+ console.error('back from load')
+ npm.commands.install([], function (err) {
+ console.error('back from install')
+ if (!err) {
+ t.fail("No error!")
+ } else {
+ t.equal(err.code, "EPEERINVALID")
+ }
+ t.end()
+ s.close() // shutdown mock registry.
+ })
})
})
})
diff --git a/deps/npm/test/tap/peer-deps-without-package-json.js b/deps/npm/test/tap/peer-deps-without-package-json.js
index 9f987c5ee51..ce7c5e81542 100644
--- a/deps/npm/test/tap/peer-deps-without-package-json.js
+++ b/deps/npm/test/tap/peer-deps-without-package-json.js
@@ -3,7 +3,7 @@ var fs = require("fs")
var test = require("tap").test
var rimraf = require("rimraf")
var npm = require("../../")
-
+var mr = require("npm-registry-mock")
var http = require("http")
@@ -13,8 +13,8 @@ var js = new Buffer(
' * , "main": "index.js"\n' +
' * , "version": "1.2.3"\n' +
' * , "description":"No package.json in sight!"\n' +
-' * , "peerDependencies": { "dict": "1.1.0" }\n' +
-' * , "dependencies": { "opener": "1.3.0" }\n' +
+' * , "peerDependencies": { "underscore": "1.3.1" }\n' +
+' * , "dependencies": { "mkdirp": "0.3.5" }\n' +
' * }\n' +
' **/\n' +
'\n' +
@@ -38,15 +38,20 @@ test("installing a peerDependencies-using package without a package.json present
fs.mkdirSync(__dirname + "/peer-deps-without-package-json/node_modules")
process.chdir(__dirname + "/peer-deps-without-package-json")
- npm.load(function () {
- npm.install(common.registry, function (err) {
- if (err) {
- t.fail(err)
- } else {
- t.ok(fs.existsSync(__dirname + "/peer-deps-without-package-json/node_modules/npm-test-peer-deps-file"))
- t.ok(fs.existsSync(__dirname + "/peer-deps-without-package-json/node_modules/dict"))
- }
- t.end()
+ // we're already listening on common.port,
+ // use an alternative port for this test.
+ mr(1331, function (s) { // create mock registry.
+ npm.load({registry: 'http://localhost:1331'}, function () {
+ npm.install(common.registry, function (err) {
+ if (err) {
+ t.fail(err)
+ } else {
+ t.ok(fs.existsSync(__dirname + "/peer-deps-without-package-json/node_modules/npm-test-peer-deps-file"))
+ t.ok(fs.existsSync(__dirname + "/peer-deps-without-package-json/node_modules/underscore"))
+ }
+ t.end()
+ s.close() // shutdown mock registry.
+ })
})
})
})
diff --git a/deps/npm/test/tap/shrinkwrap-empty-deps.js b/deps/npm/test/tap/shrinkwrap-empty-deps.js
new file mode 100644
index 00000000000..9ec8e71e0ba
--- /dev/null
+++ b/deps/npm/test/tap/shrinkwrap-empty-deps.js
@@ -0,0 +1,47 @@
+var test = require("tap").test
+ , npm = require("../../")
+ , mr = require("npm-registry-mock")
+ , common = require("../common-tap.js")
+ , path = require("path")
+ , fs = require("fs")
+ , osenv = require("osenv")
+ , rimraf = require("rimraf")
+ , pkg = __dirname + "/shrinkwrap-empty-deps"
+
+test("returns a list of removed items", function (t) {
+ var desiredResultsPath = path.resolve(pkg, "npm-shrinkwrap.json")
+
+ cleanup()
+
+ mr(common.port, function (s) {
+ setup(function () {
+ npm.shrinkwrap([], function (err) {
+ if (err) return t.fail(err)
+ fs.readFile(desiredResultsPath, function (err, desired) {
+ if (err) return t.fail(err)
+ t.deepEqual({
+ "name": "npm-test-shrinkwrap-empty-deps",
+ "version": "0.0.0",
+ "dependencies": {}
+ }, JSON.parse(desired))
+ cleanup()
+ s.close()
+ t.end()
+ })
+ })
+ })
+ })
+})
+
+function setup (cb) {
+ cleanup()
+ process.chdir(pkg)
+ npm.load({cache: pkg + "/cache", registry: common.registry}, function () {
+ cb()
+ })
+}
+
+function cleanup () {
+ process.chdir(osenv.tmpdir())
+ rimraf.sync(path.resolve(pkg, "npm-shrinkwrap.json"))
+}
diff --git a/deps/npm/test/tap/shrinkwrap-empty-deps/package.json b/deps/npm/test/tap/shrinkwrap-empty-deps/package.json
new file mode 100644
index 00000000000..9a51088c7ee
--- /dev/null
+++ b/deps/npm/test/tap/shrinkwrap-empty-deps/package.json
@@ -0,0 +1,7 @@
+{
+ "author": "Rockbert",
+ "name": "npm-test-shrinkwrap-empty-deps",
+ "version": "0.0.0",
+ "dependencies": {},
+ "devDependencies": {}
+}
diff --git a/deps/npm/test/tap/sorted-package-json.js b/deps/npm/test/tap/sorted-package-json.js
index 0d978997f69..41c90855a87 100644
--- a/deps/npm/test/tap/sorted-package-json.js
+++ b/deps/npm/test/tap/sorted-package-json.js
@@ -24,7 +24,7 @@ test("sorting dependencies", function (t) {
var before = JSON.parse(fs.readFileSync(packageJson).toString())
- mr({port: common.port}, function (s) {
+ mr(common.port, function (s) {
// underscore is already in the package.json,
// but --save will trigger a rewrite with sort
var child = spawn(node, [npm, "install", "--save", "underscore@1.3.3"], {
From 4601e7c8927ba5655f0872f1f1794aec2b9a4d56 Mon Sep 17 00:00:00 2001
From: Fedor Indutny
Date: Thu, 24 Apr 2014 10:19:30 +0400
Subject: [PATCH 07/15] Revert "deps: backport b5135bbc from c-ares repo"
This reverts commit 896e19330ad06ace8973c5d7b75d2de538228062.
Proper handling of TXT records requires API change, we can't afford it
in v0.10.
See #7371 for details.
---
deps/cares/src/ares_parse_txt_reply.c | 76 ++++++++++++++-------------
1 file changed, 40 insertions(+), 36 deletions(-)
diff --git a/deps/cares/src/ares_parse_txt_reply.c b/deps/cares/src/ares_parse_txt_reply.c
index e1ebbbea90d..51653328eb0 100644
--- a/deps/cares/src/ares_parse_txt_reply.c
+++ b/deps/cares/src/ares_parse_txt_reply.c
@@ -54,7 +54,7 @@ int
ares_parse_txt_reply (const unsigned char *abuf, int alen,
struct ares_txt_reply **txt_out)
{
- size_t substr_len;
+ size_t substr_len, str_len;
unsigned int qdcount, ancount, i;
const unsigned char *aptr;
const unsigned char *strptr;
@@ -116,6 +116,23 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
/* Check if we are really looking at a TXT record */
if (rr_class == C_IN && rr_type == T_TXT)
{
+ /* Allocate storage for this TXT answer appending it to the list */
+ txt_curr = ares_malloc_data(ARES_DATATYPE_TXT_REPLY);
+ if (!txt_curr)
+ {
+ status = ARES_ENOMEM;
+ break;
+ }
+ if (txt_last)
+ {
+ txt_last->next = txt_curr;
+ }
+ else
+ {
+ txt_head = txt_curr;
+ }
+ txt_last = txt_curr;
+
/*
* There may be multiple substrings in a single TXT record. Each
* substring may be up to 255 characters in length, with a
@@ -124,49 +141,36 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
* substrings contained therein.
*/
+ /* Compute total length to allow a single memory allocation */
strptr = aptr;
while (strptr < (aptr + rr_len))
{
substr_len = (unsigned char)*strptr;
- if (strptr + substr_len + 1 > aptr + rr_len)
- {
- status = ARES_EBADRESP;
- break;
- }
+ txt_curr->length += substr_len;
+ strptr += substr_len + 1;
+ }
- ++strptr;
-
- /* Allocate storage for this TXT answer appending it to the list */
- txt_curr = ares_malloc_data(ARES_DATATYPE_TXT_REPLY);
- if (!txt_curr)
- {
- status = ARES_ENOMEM;
- break;
- }
- if (txt_last)
- {
- txt_last->next = txt_curr;
- }
- else
- {
- txt_head = txt_curr;
- }
- txt_last = txt_curr;
-
- txt_curr->length = substr_len;
- txt_curr->txt = malloc (substr_len + 1/* Including null byte */);
- if (txt_curr->txt == NULL)
- {
- status = ARES_ENOMEM;
- break;
- }
- memcpy ((char *) txt_curr->txt, strptr, substr_len);
-
- /* Make sure we NULL-terminate */
- txt_curr->txt[substr_len] = 0;
+ /* Including null byte */
+ txt_curr->txt = malloc (txt_curr->length + 1);
+ if (txt_curr->txt == NULL)
+ {
+ status = ARES_ENOMEM;
+ break;
+ }
+ /* Step through the list of substrings, concatenating them */
+ str_len = 0;
+ strptr = aptr;
+ while (strptr < (aptr + rr_len))
+ {
+ substr_len = (unsigned char)*strptr;
+ strptr++;
+ memcpy ((char *) txt_curr->txt + str_len, strptr, substr_len);
+ str_len += substr_len;
strptr += substr_len;
}
+ /* Make sure we NULL-terminate */
+ *((char *) txt_curr->txt + txt_curr->length) = '\0';
}
/* Don't lose memory in the next iteration */
From b0fa931e0751df74242b9f069388b628e1ab43c2 Mon Sep 17 00:00:00 2001
From: Julian Gruber
Date: Thu, 24 Apr 2014 04:18:31 -0700
Subject: [PATCH 08/15] doc: fix order in net api
Signed-off-by: Fedor Indutny
---
doc/api/net.markdown | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/doc/api/net.markdown b/doc/api/net.markdown
index 9cd6ddf5196..7e1412ea0f8 100644
--- a/doc/api/net.markdown
+++ b/doc/api/net.markdown
@@ -235,8 +235,6 @@ This becomes `null` when sending a socket to a child with
`child_process.fork()`. To poll forks and get current number of active
connections use asynchronous `server.getConnections` instead.
-`net.Server` is an [EventEmitter][] with the following events:
-
### server.getConnections(callback)
Asynchronously get the number of concurrent connections on the server. Works
@@ -244,6 +242,8 @@ when sockets were sent to forks.
Callback should take two arguments `err` and `count`.
+`net.Server` is an [EventEmitter][] with the following events:
+
### Event: 'listening'
Emitted when the server has been bound after calling `server.listen`.
From 0ee99565f9dd41225fd5d4084403db82733c575e Mon Sep 17 00:00:00 2001
From: Julian Gruber
Date: Thu, 24 Apr 2014 04:19:14 -0700
Subject: [PATCH 09/15] doc: fix missing link in net api
Signed-off-by: Fedor Indutny
---
doc/api/net.markdown | 1 +
1 file changed, 1 insertion(+)
diff --git a/doc/api/net.markdown b/doc/api/net.markdown
index 7e1412ea0f8..7d23b680c9d 100644
--- a/doc/api/net.markdown
+++ b/doc/api/net.markdown
@@ -526,5 +526,6 @@ Returns true if input is a version 6 IP address, otherwise returns false.
['end']: #net_event_end
[EventEmitter]: events.html#events_class_events_eventemitter
['listening']: #net_event_listening
+[server.getConnections()]: #net_server_getconnections_callback
[Readable Stream]: stream.html#stream_readable_stream
[stream.setEncoding()]: stream.html#stream_stream_setencoding_encoding
From f9ced08de30c37838756e8227bd091f80ad9cafa Mon Sep 17 00:00:00 2001
From: Ben Noordhuis
Date: Thu, 24 Apr 2014 04:27:40 +0200
Subject: [PATCH 10/15] deps: make v8 use CLOCK_REALTIME_COARSE
Date.now() indirectly calls gettimeofday() on Linux and that's a system
call that is extremely expensive on virtualized systems when the host
operating system has to emulate access to the hardware clock.
Case in point: output from `perf record -c 10000 -e cycles:u -g -i`
for a benchmark/http_simple bytes/8 benchmark with a light load of
50 concurrent clients:
53.69% node node [.] v8::internal::OS::TimeCurrentMillis()
|
--- v8::internal::OS::TimeCurrentMillis()
|
|--99.77%-- v8::internal::Runtime_DateCurrentTime(v8::internal::Arguments, v8::internal::Isolate*)
| 0x23587880618e
That's right - over half of user time spent inside the V8 function that
calls gettimeofday().
Notably, nearly all system time gets attributed to acpi_pm_read(), the
kernel function that reads the ACPI power management timer:
32.49% node [kernel.kallsyms] [k] acpi_pm_read
|
--- acpi_pm_read
|
|--98.40%-- __getnstimeofday
| getnstimeofday
| |
| |--71.61%-- do_gettimeofday
| | sys_gettimeofday
| | system_call_fastpath
| | 0x7fffbbaf6dbc
| | |
| | |--98.72%-- v8::internal::OS::TimeCurrentMillis()
The cost of the gettimeofday() system call is normally measured in
nanoseconds but we were seeing 100 us averages and spikes >= 1000 us.
The numbers were so bad, my initial hunch was that the node process was
continuously getting rescheduled inside the system call...
v8::internal::OS::TimeCurrentMillis()'s most frequent caller is
v8::internal::Runtime_DateCurrentTime(), the V8 run-time function
that's behind Date.now(). The timeout handling logic in lib/http.js
and lib/net.js calls into lib/timers.js and that module will happily
call Date.now() hundreds or even thousands of times per second.
If you saw exports._unrefActive() show up in --prof output a lot,
now you know why.
That's why this commit makes V8 switch over to clock_gettime() on Linux.
In particular, it checks if CLOCK_REALTIME_COARSE is available and has
a resolution <= 1 ms because in that case the clock_gettime() call can
be fully serviced from the vDSO.
It speeds up the aforementioned benchmark by about 100% on the affected
systems and should go a long way toward addressing the latency issues
that StrongLoop customers have been reporting.
This patch will be upstreamed as a CR against V8 3.26. I'm sending it
as a pull request for v0.10 first because that's what our users are
running and because the delta between 3.26 and 3.14 is too big to
reasonably back-port the patch. I'll open a pull request for the
master branch once the CR lands upstream.
Signed-off-by: Trevor Norris
Signed-off-by: Fedor Indutny
---
deps/v8/src/platform-posix.cc | 26 ++++++++++++++++++++++----
1 file changed, 22 insertions(+), 4 deletions(-)
diff --git a/deps/v8/src/platform-posix.cc b/deps/v8/src/platform-posix.cc
index ad74eba8d99..3c868688ae7 100644
--- a/deps/v8/src/platform-posix.cc
+++ b/deps/v8/src/platform-posix.cc
@@ -188,19 +188,37 @@ int OS::GetUserTime(uint32_t* secs, uint32_t* usecs) {
double OS::TimeCurrentMillis() {
- struct timeval tv;
- if (gettimeofday(&tv, NULL) < 0) return 0.0;
- return (static_cast(tv.tv_sec) * 1000) +
- (static_cast(tv.tv_usec) / 1000);
+ return static_cast(Ticks()) / 1000;
}
int64_t OS::Ticks() {
+#if defined(__linux__)
+ static clockid_t clock_id = static_cast(-1);
+ struct timespec spec;
+ if (clock_id == static_cast(-1)) {
+ // CLOCK_REALTIME_COARSE may not be defined by the system headers but
+ // might still be supported by the kernel so use the clock id directly.
+ // Only use CLOCK_REALTIME_COARSE when its granularity <= 1 ms.
+ const clockid_t clock_realtime_coarse = 5;
+ if (clock_getres(clock_realtime_coarse, &spec) == 0 &&
+ spec.tv_nsec <= 1000 * 1000) {
+ clock_id = clock_realtime_coarse;
+ } else {
+ clock_id = CLOCK_REALTIME;
+ }
+ }
+ if (clock_gettime(clock_id, &spec) != 0) {
+ return 0; // Not really possible.
+ }
+ return static_cast(spec.tv_sec) * 1000000 + (spec.tv_nsec / 1000);
+#else
// gettimeofday has microsecond resolution.
struct timeval tv;
if (gettimeofday(&tv, NULL) < 0)
return 0;
return (static_cast(tv.tv_sec) * 1000000) + tv.tv_usec;
+#endif
}
From 250782d139ccec276ec24e401a78423a66dcf97a Mon Sep 17 00:00:00 2001
From: Rod Vagg
Date: Tue, 15 Oct 2013 12:26:18 +1100
Subject: [PATCH 11/15] util: format as Error if instanceof Error
Conflicts:
lib/util.js
test/simple/test-util-format.js
This is a backport to fix #7253
Signed-off-by: Fedor Indutny
---
lib/util.js | 3 ++-
test/simple/test-util-format.js | 10 ++++++++++
test/simple/test-util.js | 2 +-
3 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/lib/util.js b/lib/util.js
index 40b0680b37f..3e3411e29e2 100644
--- a/lib/util.js
+++ b/lib/util.js
@@ -452,7 +452,8 @@ exports.isDate = isDate;
function isError(e) {
- return typeof e === 'object' && objectToString(e) === '[object Error]';
+ return typeof e === 'object' &&
+ (objectToString(e) === '[object Error]' || e instanceof Error);
}
exports.isError = isError;
diff --git a/test/simple/test-util-format.js b/test/simple/test-util-format.js
index b5592203a39..16c3c56dd16 100644
--- a/test/simple/test-util-format.js
+++ b/test/simple/test-util-format.js
@@ -60,3 +60,13 @@ assert.equal(util.format('%s:%s', 'foo', 'bar'), 'foo:bar');
assert.equal(util.format('%s:%s', 'foo', 'bar', 'baz'), 'foo:bar baz');
assert.equal(util.format('%%%s%%', 'hi'), '%hi%');
assert.equal(util.format('%%%s%%%%', 'hi'), '%hi%%');
+
+// Errors
+assert.equal(util.format(new Error('foo')), '[Error: foo]');
+function CustomError(msg) {
+ Error.call(this);
+ Object.defineProperty(this, 'message', { value: msg, enumerable: false });
+ Object.defineProperty(this, 'name', { value: 'CustomError', enumerable: false });
+}
+util.inherits(CustomError, Error);
+assert.equal(util.format(new CustomError('bar')), '[CustomError: bar]');
diff --git a/test/simple/test-util.js b/test/simple/test-util.js
index 7c30f5e83e5..f4c4d82f577 100644
--- a/test/simple/test-util.js
+++ b/test/simple/test-util.js
@@ -68,7 +68,7 @@ assert.equal(true, util.isError(new (context('SyntaxError'))));
assert.equal(false, util.isError({}));
assert.equal(false, util.isError({ name: 'Error', message: '' }));
assert.equal(false, util.isError([]));
-assert.equal(false, util.isError(Object.create(Error.prototype)));
+assert.equal(true, util.isError(Object.create(Error.prototype)));
// _extend
assert.deepEqual(util._extend({a:1}), {a:1});
From 3f3a71e61e90d45293704f21c98bc0ea53bb09ff Mon Sep 17 00:00:00 2001
From: Ben Noordhuis
Date: Mon, 28 Apr 2014 13:05:00 +0200
Subject: [PATCH 12/15] deps: fix v8 link error with glibc < 2.17
Commit f9ced08 switches V8 on Linux over from gettimeofday() to
clock_getres() and clock_gettime(). As of glibc 2.17, those functions
live in libc. For older versions, we need to pull them in from librt.
Fixes the following link-time error;
Release/obj.target/deps/v8/tools/gyp/libv8_base.a(platform-posix.o):
In function `v8::internal::OS::Ticks()':
platform-posix.cc:(.text+0x93c):
undefined reference to `clock_gettime'
platform-posix.cc:(.text+0x989):
undefined reference to `clock_getres'
Fixes #7514.
Signed-off-by: Fedor Indutny
---
deps/v8/tools/gyp/v8.gyp | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/deps/v8/tools/gyp/v8.gyp b/deps/v8/tools/gyp/v8.gyp
index 7a54ef4fce9..71cf36649ad 100644
--- a/deps/v8/tools/gyp/v8.gyp
+++ b/deps/v8/tools/gyp/v8.gyp
@@ -643,6 +643,12 @@
'../../src/platform-linux.cc',
'../../src/platform-posix.cc'
],
+ # XXX(bnoordhuis) Pull in definitions for clock_getres()
+ # and clock_gettime() with glibc < 2.17.
+ 'libraries': [ '-lrt' ],
+ 'direct_dependent_settings': {
+ 'libraries': [ '-lrt' ],
+ },
}
],
['OS=="android"', {
From 793c76e5c65031009525fcb6e5e4af78c28d1c4f Mon Sep 17 00:00:00 2001
From: Forrest L Norvell
Date: Mon, 28 Apr 2014 12:38:06 -0700
Subject: [PATCH 13/15] docs: add cautionary note to emitter.removeAllListeners
Signed-off-by: Fedor Indutny
---
doc/api/events.markdown | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/doc/api/events.markdown b/doc/api/events.markdown
index 77d0418e217..07c5b0e2b21 100644
--- a/doc/api/events.markdown
+++ b/doc/api/events.markdown
@@ -69,7 +69,9 @@ Returns emitter, so calls can be chained.
### emitter.removeAllListeners([event])
-Removes all listeners, or those of the specified event.
+Removes all listeners, or those of the specified event. It's not a good idea to
+remove listeners that were added elsewhere in the code, especially when it's on
+an emitter that you didn't create (e.g. sockets or file streams).
Returns emitter, so calls can be chained.
From 1038959dbf70800545df319715e5d89dbd8ad8af Mon Sep 17 00:00:00 2001
From: Timothy J Fontaine
Date: Thu, 1 May 2014 09:27:39 -0700
Subject: [PATCH 14/15] uv: update to v0.10.27
---
deps/uv/.mailmap | 8 +++
deps/uv/AUTHORS | 36 ++++++++++++
deps/uv/ChangeLog | 30 +++++++++-
deps/uv/include/uv.h | 6 ++
deps/uv/src/unix/error.c | 6 ++
deps/uv/src/unix/kqueue.c | 6 +-
deps/uv/src/unix/linux-core.c | 20 +++++--
deps/uv/src/unix/process.c | 7 +--
deps/uv/src/version.c | 2 +-
deps/uv/src/win/pipe.c | 6 +-
deps/uv/src/win/signal.c | 4 +-
deps/uv/src/win/util.c | 1 +
deps/uv/test/test-list.h | 4 ++
deps/uv/test/test-spawn.c | 107 ++++++++++++++++++++++++++++++++++
deps/uv/vcbuild.bat | 19 ++++--
15 files changed, 236 insertions(+), 26 deletions(-)
diff --git a/deps/uv/.mailmap b/deps/uv/.mailmap
index 9975da08617..7ece4373822 100644
--- a/deps/uv/.mailmap
+++ b/deps/uv/.mailmap
@@ -1,15 +1,23 @@
Alan Gutierrez
+Andrius Bentkus
Bert Belder
Bert Belder
Brandon Philips
Brian White
Brian White
+Fedor Indutny
Frank Denis
Isaac Z. Schlueter
+Justin Venus
+Keno Fischer
+Keno Fischer
+Maciej Małecki
Marc Schlaich
+Rasmus Pedersen
Robert Mustacchi
Ryan Dahl
Ryan Emery
+Sam Roberts
San-Tai Hsu
Saúl Ibarra Corretgé
Shigeki Ohtsu
diff --git a/deps/uv/AUTHORS b/deps/uv/AUTHORS
index dcb99318185..060701ffa77 100644
--- a/deps/uv/AUTHORS
+++ b/deps/uv/AUTHORS
@@ -94,3 +94,39 @@ Luca Bruno
Trevor Norris
Oguz Bastemur
Alexis Campailla
+Justin Venus
+Ben Kelly
+Kristian Evensen
+Sean Silva
+Linus Mårtensson
+Navaneeth Kedaram Nambiathan
+Brent Cook
+Brian Kaisner
+Reini Urban
+Maks Naumov
+Sean Farrell
+Christoph Iserlohn
+Steven Kabbes
+Tenor Biel
+Andrej Manduch
+Joshua Neuheisel
+Yorkie
+Sam Roberts
+River Tarnell
+Nathan Sweet
+Dylan Cali
+Austin Foxley
+Geoffry Song
+Benjamin Saunders
+Rasmus Pedersen
+William Light
+Oleg Efimov
+Lars Gierth
+StarWing
+thierry-FreeBSD
+Isaiah Norton
+Raul Martins
+David Capello
+Paul Tan
+Javier Hernández
+Tonis Tiigi
diff --git a/deps/uv/ChangeLog b/deps/uv/ChangeLog
index b41636dd53e..87c5d99b2b2 100644
--- a/deps/uv/ChangeLog
+++ b/deps/uv/ChangeLog
@@ -1,4 +1,32 @@
-2014.02.19, Version 0.10.25 (Stable)
+2014.05.02, Version 0.10.27 (Stable)
+
+Changes since version 0.10.26:
+
+* windows: fix console signal handler refcount (Saúl Ibarra Corretgé)
+
+* win: always leave crit section in get_proc_title (Fedor Indutny)
+
+
+2014.04.07, Version 0.10.26 (Stable), d864907611c25ec986c5e77d4d6d6dee88f26926
+
+Changes since version 0.10.25:
+
+* process: don't close stdio fds during spawn (Tonis Tiigi)
+
+* build, windows: do not fail on Windows SDK Prompt (Marc Schlaich)
+
+* build, windows: fix x64 configuration issue (Marc Schlaich)
+
+* win: fix buffer leak on error in pipe.c (Fedor Indutny)
+
+* kqueue: invalidate fd in uv_fs_event_t (Fedor Indutny)
+
+* linux: always deregister closing fds from epoll (Geoffry Song)
+
+* error: add ENXIO for O_NONBLOCK FIFO open() (Fedor Indutny)
+
+
+2014.02.19, Version 0.10.25 (Stable), d778dc588507588b12b9f9d2905078db542ed751
Changes since version 0.10.24:
diff --git a/deps/uv/include/uv.h b/deps/uv/include/uv.h
index 3978def5c46..7022bc669fd 100644
--- a/deps/uv/include/uv.h
+++ b/deps/uv/include/uv.h
@@ -130,6 +130,12 @@ extern "C" {
XX( 57, ENODEV, "no such device") \
XX( 58, ESPIPE, "invalid seek") \
XX( 59, ECANCELED, "operation canceled") \
+ XX( 60, EFBIG, "file too large") \
+ XX( 61, ENOPROTOOPT, "protocol not available") \
+ XX( 62, ETXTBSY, "text file is busy") \
+ XX( 63, ERANGE, "result too large") \
+ XX( 64, ENXIO, "no such device or address") \
+ XX( 65, EMLINK, "too many links") \
#define UV_ERRNO_GEN(val, name, s) UV_##name = val,
diff --git a/deps/uv/src/unix/error.c b/deps/uv/src/unix/error.c
index 05ab4820250..f54ffdbcc83 100644
--- a/deps/uv/src/unix/error.c
+++ b/deps/uv/src/unix/error.c
@@ -104,6 +104,12 @@ uv_err_code uv_translate_sys_error(int sys_errno) {
case EROFS: return UV_EROFS;
case ENOMEM: return UV_ENOMEM;
case EDQUOT: return UV_ENOSPC;
+ case EFBIG: return UV_EFBIG;
+ case ENOPROTOOPT: return UV_ENOPROTOOPT;
+ case ETXTBSY: return UV_ETXTBSY;
+ case ERANGE: return UV_ERANGE;
+ case ENXIO: return UV_ENXIO;
+ case EMLINK: return UV_EMLINK;
default: return UV_UNKNOWN;
}
UNREACHABLE();
diff --git a/deps/uv/src/unix/kqueue.c b/deps/uv/src/unix/kqueue.c
index dc64203452a..124f4fd5764 100644
--- a/deps/uv/src/unix/kqueue.c
+++ b/deps/uv/src/unix/kqueue.c
@@ -359,10 +359,10 @@ fallback:
void uv__fs_event_close(uv_fs_event_t* handle) {
#if defined(__APPLE__)
if (uv__fsevents_close(handle))
- uv__io_stop(handle->loop, &handle->event_watcher, UV__POLLIN);
-#else
- uv__io_stop(handle->loop, &handle->event_watcher, UV__POLLIN);
#endif /* defined(__APPLE__) */
+ {
+ uv__io_close(handle->loop, &handle->event_watcher);
+ }
uv__handle_stop(handle);
diff --git a/deps/uv/src/unix/linux-core.c b/deps/uv/src/unix/linux-core.c
index 7a8fcd3548f..69a60b05b39 100644
--- a/deps/uv/src/unix/linux-core.c
+++ b/deps/uv/src/unix/linux-core.c
@@ -99,6 +99,7 @@ void uv__platform_loop_delete(uv_loop_t* loop) {
void uv__platform_invalidate_fd(uv_loop_t* loop, int fd) {
struct uv__epoll_event* events;
+ struct uv__epoll_event dummy;
uintptr_t i;
uintptr_t nfds;
@@ -106,13 +107,20 @@ void uv__platform_invalidate_fd(uv_loop_t* loop, int fd) {
events = (struct uv__epoll_event*) loop->watchers[loop->nwatchers];
nfds = (uintptr_t) loop->watchers[loop->nwatchers + 1];
- if (events == NULL)
- return;
+ if (events != NULL)
+ /* Invalidate events with same file descriptor */
+ for (i = 0; i < nfds; i++)
+ if ((int) events[i].data == fd)
+ events[i].data = -1;
- /* Invalidate events with same file descriptor */
- for (i = 0; i < nfds; i++)
- if ((int) events[i].data == fd)
- events[i].data = -1;
+ /* Remove the file descriptor from the epoll.
+ * This avoids a problem where the same file description remains open
+ * in another process, causing repeated junk epoll events.
+ *
+ * We pass in a dummy epoll_event, to work around a bug in old kernels.
+ */
+ if (loop->backend_fd >= 0)
+ uv__epoll_ctl(loop->backend_fd, UV__EPOLL_CTL_DEL, fd, &dummy);
}
diff --git a/deps/uv/src/unix/process.c b/deps/uv/src/unix/process.c
index ca029b1cee8..19686a291f0 100644
--- a/deps/uv/src/unix/process.c
+++ b/deps/uv/src/unix/process.c
@@ -302,7 +302,6 @@ static void uv__process_child_init(uv_process_options_t options,
if (use_fd == -1) {
uv__write_int(error_fd, errno);
- perror("failed to open stdio");
_exit(127);
}
}
@@ -316,7 +315,7 @@ static void uv__process_child_init(uv_process_options_t options,
if (fd <= 2)
uv__nonblock(fd, 0);
- if (close_fd != -1)
+ if (close_fd >= stdio_count)
close(close_fd);
}
@@ -329,19 +328,16 @@ static void uv__process_child_init(uv_process_options_t options,
if (options.cwd && chdir(options.cwd)) {
uv__write_int(error_fd, errno);
- perror("chdir()");
_exit(127);
}
if ((options.flags & UV_PROCESS_SETGID) && setgid(options.gid)) {
uv__write_int(error_fd, errno);
- perror("setgid()");
_exit(127);
}
if ((options.flags & UV_PROCESS_SETUID) && setuid(options.uid)) {
uv__write_int(error_fd, errno);
- perror("setuid()");
_exit(127);
}
@@ -351,7 +347,6 @@ static void uv__process_child_init(uv_process_options_t options,
execvp(options.file, options.args);
uv__write_int(error_fd, errno);
- perror("execvp()");
_exit(127);
}
diff --git a/deps/uv/src/version.c b/deps/uv/src/version.c
index 8ea385ed58b..0c35b1b3cba 100644
--- a/deps/uv/src/version.c
+++ b/deps/uv/src/version.c
@@ -34,7 +34,7 @@
#define UV_VERSION_MAJOR 0
#define UV_VERSION_MINOR 10
-#define UV_VERSION_PATCH 25
+#define UV_VERSION_PATCH 27
#define UV_VERSION_IS_RELEASE 1
diff --git a/deps/uv/src/win/pipe.c b/deps/uv/src/win/pipe.c
index cce1d99057d..ee0c0f88428 100644
--- a/deps/uv/src/win/pipe.c
+++ b/deps/uv/src/win/pipe.c
@@ -1240,9 +1240,9 @@ static void uv_pipe_read_eof(uv_loop_t* loop, uv_pipe_t* handle,
uv__set_artificial_error(loop, UV_EOF);
if (handle->read2_cb) {
- handle->read2_cb(handle, -1, uv_null_buf_, UV_UNKNOWN_HANDLE);
+ handle->read2_cb(handle, -1, buf, UV_UNKNOWN_HANDLE);
} else {
- handle->read_cb((uv_stream_t*) handle, -1, uv_null_buf_);
+ handle->read_cb((uv_stream_t*) handle, -1, buf);
}
}
@@ -1404,7 +1404,7 @@ void uv_process_pipe_read_req(uv_loop_t* loop, uv_pipe_t* handle,
break;
}
} else {
- uv_pipe_read_error_or_eof(loop, handle, GetLastError(), uv_null_buf_);
+ uv_pipe_read_error_or_eof(loop, handle, GetLastError(), buf);
break;
}
}
diff --git a/deps/uv/src/win/signal.c b/deps/uv/src/win/signal.c
index e630cd38bc1..f2938355b8c 100644
--- a/deps/uv/src/win/signal.c
+++ b/deps/uv/src/win/signal.c
@@ -129,8 +129,10 @@ static uv_err_t uv__signal_register_control_handler() {
/* If the console control handler has already been hooked, just add a */
/* reference. */
- if (uv__signal_control_handler_refs > 0)
+ if (uv__signal_control_handler_refs > 0) {
+ uv__signal_control_handler_refs++;
return uv_ok_;
+ }
if (!SetConsoleCtrlHandler(uv__signal_control_handler, TRUE))
return uv__new_sys_error(GetLastError());
diff --git a/deps/uv/src/win/util.c b/deps/uv/src/win/util.c
index 898dcb490e3..6e6f6201c3a 100644
--- a/deps/uv/src/win/util.c
+++ b/deps/uv/src/win/util.c
@@ -425,6 +425,7 @@ uv_err_t uv_get_process_title(char* buffer, size_t size) {
* we must query it with getConsoleTitleW
*/
if (!process_title && uv__get_process_title() == -1) {
+ LeaveCriticalSection(&process_title_lock);
return uv__new_sys_error(GetLastError());
}
diff --git a/deps/uv/test/test-list.h b/deps/uv/test/test-list.h
index f60eab30b33..c280ca95eb2 100644
--- a/deps/uv/test/test-list.h
+++ b/deps/uv/test/test-list.h
@@ -163,6 +163,7 @@ TEST_DECLARE (spawn_setgid_fails)
TEST_DECLARE (spawn_stdout_to_file)
TEST_DECLARE (spawn_stdout_and_stderr_to_file)
TEST_DECLARE (spawn_auto_unref)
+TEST_DECLARE (spawn_closed_process_io)
TEST_DECLARE (fs_poll)
TEST_DECLARE (kill)
TEST_DECLARE (fs_file_noent)
@@ -226,6 +227,7 @@ TEST_DECLARE (spawn_setuid_setgid)
TEST_DECLARE (we_get_signal)
TEST_DECLARE (we_get_signals)
TEST_DECLARE (signal_multiple_loops)
+TEST_DECLARE (closed_fd_events)
#endif
#ifdef __APPLE__
TEST_DECLARE (osx_select)
@@ -442,6 +444,7 @@ TASK_LIST_START
TEST_ENTRY (spawn_stdout_to_file)
TEST_ENTRY (spawn_stdout_and_stderr_to_file)
TEST_ENTRY (spawn_auto_unref)
+ TEST_ENTRY (spawn_closed_process_io)
TEST_ENTRY (fs_poll)
TEST_ENTRY (kill)
@@ -458,6 +461,7 @@ TASK_LIST_START
TEST_ENTRY (we_get_signal)
TEST_ENTRY (we_get_signals)
TEST_ENTRY (signal_multiple_loops)
+ TEST_ENTRY (closed_fd_events)
#endif
#ifdef __APPLE__
diff --git a/deps/uv/test/test-spawn.c b/deps/uv/test/test-spawn.c
index 4388987800a..3afe0cbcbe3 100644
--- a/deps/uv/test/test-spawn.c
+++ b/deps/uv/test/test-spawn.c
@@ -40,6 +40,7 @@ static char exepath[1024];
static size_t exepath_size = 1024;
static char* args[3];
static int no_term_signal;
+static int timer_counter;
#define OUTPUT_SIZE 1024
static char output[OUTPUT_SIZE];
@@ -118,6 +119,12 @@ static void on_read(uv_stream_t* tcp, ssize_t nread, uv_buf_t buf) {
}
+static void on_read_once(uv_stream_t* tcp, ssize_t nread, const uv_buf_t buf) {
+ uv_read_stop(tcp);
+ on_read(tcp, nread, buf);
+}
+
+
static void write_cb(uv_write_t* req, int status) {
ASSERT(status == 0);
uv_close((uv_handle_t*)req->handle, close_cb);
@@ -145,6 +152,11 @@ static void timer_cb(uv_timer_t* handle, int status) {
}
+static void timer_counter_cb(uv_timer_t* handle, int status) {
+ ++timer_counter;
+}
+
+
TEST_IMPL(spawn_fails) {
init_process_options("", exit_cb_failure_expected);
options.file = options.args[0] = "program-that-had-better-not-exist";
@@ -664,6 +676,39 @@ TEST_IMPL(spawn_same_stdout_stderr) {
}
+TEST_IMPL(spawn_closed_process_io) {
+ uv_pipe_t in;
+ uv_write_t write_req;
+ uv_buf_t buf;
+ uv_stdio_container_t stdio[2];
+ static char buffer[] = "hello-from-spawn_stdin";
+
+ init_process_options("spawn_helper1", exit_cb);
+
+ uv_pipe_init(uv_default_loop(), &in, 0);
+ options.stdio = stdio;
+ options.stdio[0].flags = UV_CREATE_PIPE | UV_READABLE_PIPE;
+ options.stdio[0].data.stream = (uv_stream_t*) ∈
+ options.stdio_count = 1;
+
+ close(0); /* Close process stdin. */
+
+ ASSERT(0 == uv_spawn(uv_default_loop(), &process, options));
+
+ buf.base = buffer;
+ buf.len = sizeof(buffer);
+ ASSERT(0 == uv_write(&write_req, (uv_stream_t*) &in, &buf, 1, write_cb));
+
+ ASSERT(0 == uv_run(uv_default_loop(), UV_RUN_DEFAULT));
+
+ ASSERT(exit_cb_called == 1);
+ ASSERT(close_cb_called == 2); /* process, child stdin */
+
+ MAKE_VALGRIND_HAPPY();
+ return 0;
+}
+
+
TEST_IMPL(kill) {
int r;
uv_err_t err;
@@ -1038,3 +1083,65 @@ TEST_IMPL(spawn_auto_unref) {
MAKE_VALGRIND_HAPPY();
return 0;
}
+
+
+#ifndef _WIN32
+TEST_IMPL(closed_fd_events) {
+ uv_stdio_container_t stdio[3];
+ uv_pipe_t pipe_handle;
+ int fd[2];
+
+ /* create a pipe and share it with a child process */
+ ASSERT(0 == pipe(fd));
+ ASSERT(0 == fcntl(fd[0], F_SETFL, O_NONBLOCK));
+
+ /* spawn_helper4 blocks indefinitely. */
+ init_process_options("spawn_helper4", exit_cb);
+ options.stdio_count = 3;
+ options.stdio = stdio;
+ options.stdio[0].data.fd = fd[0];
+ options.stdio[0].flags = UV_INHERIT_FD;
+ options.stdio[1].flags = UV_IGNORE;
+ options.stdio[2].flags = UV_IGNORE;
+
+ ASSERT(0 == uv_spawn(uv_default_loop(), &process, options));
+ uv_unref((uv_handle_t*) &process);
+
+ /* read from the pipe with uv */
+ ASSERT(0 == uv_pipe_init(uv_default_loop(), &pipe_handle, 0));
+ ASSERT(0 == uv_pipe_open(&pipe_handle, fd[0]));
+ fd[0] = -1;
+
+ ASSERT(0 == uv_read_start((uv_stream_t*) &pipe_handle, on_alloc, on_read_once));
+
+ ASSERT(1 == write(fd[1], "", 1));
+
+ ASSERT(0 == uv_run(uv_default_loop(), UV_RUN_ONCE));
+
+ /* should have received just one byte */
+ ASSERT(output_used == 1);
+
+ /* close the pipe and see if we still get events */
+ uv_close((uv_handle_t*) &pipe_handle, close_cb);
+
+ ASSERT(1 == write(fd[1], "", 1));
+
+ ASSERT(0 == uv_timer_init(uv_default_loop(), &timer));
+ ASSERT(0 == uv_timer_start(&timer, timer_counter_cb, 10, 0));
+
+ /* see if any spurious events interrupt the timer */
+ if (1 == uv_run(uv_default_loop(), UV_RUN_ONCE)) {
+ if (1 == uv_run(uv_default_loop(), UV_RUN_ONCE))
+ ASSERT(0 == uv_run(uv_default_loop(), UV_RUN_ONCE));
+ }
+
+ ASSERT(timer_counter == 1);
+
+ /* cleanup */
+ ASSERT(0 == uv_process_kill(&process, /* SIGTERM */ 15));
+ ASSERT(0 == close(fd[1]));
+
+ MAKE_VALGRIND_HAPPY();
+ return 0;
+}
+#endif /* !_WIN32 */
diff --git a/deps/uv/vcbuild.bat b/deps/uv/vcbuild.bat
index 0b7ea481117..42b0b947922 100644
--- a/deps/uv/vcbuild.bat
+++ b/deps/uv/vcbuild.bat
@@ -33,7 +33,7 @@ if /i "%1"=="noprojgen" set noprojgen=1&goto arg-ok
if /i "%1"=="nobuild" set nobuild=1&goto arg-ok
if /i "%1"=="x86" set target_arch=ia32&set platform=WIN32&set vs_toolset=x86&goto arg-ok
if /i "%1"=="ia32" set target_arch=ia32&set platform=WIN32&set vs_toolset=x86&goto arg-ok
-if /i "%1"=="x64" set target_arch=x64&set platform=amd64&set vs_toolset=x64&goto arg-ok
+if /i "%1"=="x64" set target_arch=x64&set platform=x64&set vs_toolset=x64&goto arg-ok
if /i "%1"=="shared" set library=shared_library&goto arg-ok
if /i "%1"=="static" set library=static_library&goto arg-ok
:arg-ok
@@ -41,6 +41,17 @@ shift
goto next-arg
:args-done
+if defined WindowsSDKDir goto select-target
+if defined VCINSTALLDIR goto select-target
+
+@rem Look for Visual Studio 2013
+if not defined VS120COMNTOOLS goto vc-set-2012
+if not exist "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-2012
+call "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat" %vs_toolset%
+set GYP_MSVS_VERSION=2013
+goto select-target
+
+:vc-set-2012
@rem Look for Visual Studio 2012
if not defined VS110COMNTOOLS goto vc-set-2010
if not exist "%VS110COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-2010
@@ -101,10 +112,8 @@ echo Project files generated.
if defined nobuild goto run
@rem Check if VS build env is available
-if not defined VCINSTALLDIR goto msbuild-not-found
-goto msbuild-found
-
-:msbuild-not-found
+if defined VCINSTALLDIR goto msbuild-found
+if defined WindowsSDKDir goto msbuild-found
echo Build skipped. To build, this file needs to run from VS cmd prompt.
goto run
From f76c3938d0660378017bf276a72ea60e9adfe62c Mon Sep 17 00:00:00 2001
From: isaacs
Date: Thu, 1 May 2014 11:09:00 -0700
Subject: [PATCH 15/15] npm: upgrade to v1.4.8
* Check SHA before using files from cache
* adduser: allow change of the saved password
* Make `npm install` respect `config.unicode`
* Fix lifecycle to pass `Infinity` for config env value
* Don't return 0 exit code on invalid command
* cache: Handle 404s and other HTTP errors as errors
* bump tap dep, make tests stderr a bit quieter
* Resolve ~ in path configs to env.HOME
* Include npm version in default user-agent conf
* npm init: Use ISC as default license, use save-prefix for deps
* Many test and doc fixes
---
deps/npm/README.md | 4 +
deps/npm/doc/api/npm.md | 2 +-
deps/npm/doc/cli/npm-install.md | 3 +-
deps/npm/doc/cli/npm-run-script.md | 6 +-
deps/npm/doc/files/package.json.md | 1 +
deps/npm/html/doc/README.html | 8 +-
deps/npm/html/doc/api/npm-bin.html | 2 +-
deps/npm/html/doc/api/npm-bugs.html | 2 +-
deps/npm/html/doc/api/npm-commands.html | 2 +-
deps/npm/html/doc/api/npm-config.html | 2 +-
deps/npm/html/doc/api/npm-deprecate.html | 2 +-
deps/npm/html/doc/api/npm-docs.html | 2 +-
deps/npm/html/doc/api/npm-edit.html | 2 +-
deps/npm/html/doc/api/npm-explore.html | 2 +-
deps/npm/html/doc/api/npm-help-search.html | 2 +-
deps/npm/html/doc/api/npm-init.html | 2 +-
deps/npm/html/doc/api/npm-install.html | 2 +-
deps/npm/html/doc/api/npm-link.html | 2 +-
deps/npm/html/doc/api/npm-load.html | 2 +-
deps/npm/html/doc/api/npm-ls.html | 2 +-
deps/npm/html/doc/api/npm-outdated.html | 2 +-
deps/npm/html/doc/api/npm-owner.html | 2 +-
deps/npm/html/doc/api/npm-pack.html | 2 +-
deps/npm/html/doc/api/npm-prefix.html | 2 +-
deps/npm/html/doc/api/npm-prune.html | 2 +-
deps/npm/html/doc/api/npm-publish.html | 2 +-
deps/npm/html/doc/api/npm-rebuild.html | 2 +-
deps/npm/html/doc/api/npm-repo.html | 2 +-
deps/npm/html/doc/api/npm-restart.html | 2 +-
deps/npm/html/doc/api/npm-root.html | 2 +-
deps/npm/html/doc/api/npm-run-script.html | 2 +-
deps/npm/html/doc/api/npm-search.html | 2 +-
deps/npm/html/doc/api/npm-shrinkwrap.html | 2 +-
deps/npm/html/doc/api/npm-start.html | 2 +-
deps/npm/html/doc/api/npm-stop.html | 2 +-
deps/npm/html/doc/api/npm-submodule.html | 2 +-
deps/npm/html/doc/api/npm-tag.html | 2 +-
deps/npm/html/doc/api/npm-test.html | 2 +-
deps/npm/html/doc/api/npm-uninstall.html | 2 +-
deps/npm/html/doc/api/npm-unpublish.html | 2 +-
deps/npm/html/doc/api/npm-update.html | 2 +-
deps/npm/html/doc/api/npm-version.html | 2 +-
deps/npm/html/doc/api/npm-view.html | 2 +-
deps/npm/html/doc/api/npm-whoami.html | 2 +-
deps/npm/html/doc/api/npm.html | 6 +-
deps/npm/html/doc/cli/npm-adduser.html | 2 +-
deps/npm/html/doc/cli/npm-bin.html | 2 +-
deps/npm/html/doc/cli/npm-bugs.html | 2 +-
deps/npm/html/doc/cli/npm-build.html | 2 +-
deps/npm/html/doc/cli/npm-bundle.html | 2 +-
deps/npm/html/doc/cli/npm-cache.html | 2 +-
deps/npm/html/doc/cli/npm-completion.html | 2 +-
deps/npm/html/doc/cli/npm-config.html | 2 +-
deps/npm/html/doc/cli/npm-dedupe.html | 2 +-
deps/npm/html/doc/cli/npm-deprecate.html | 2 +-
deps/npm/html/doc/cli/npm-docs.html | 2 +-
deps/npm/html/doc/cli/npm-edit.html | 2 +-
deps/npm/html/doc/cli/npm-explore.html | 2 +-
deps/npm/html/doc/cli/npm-help-search.html | 2 +-
deps/npm/html/doc/cli/npm-help.html | 2 +-
deps/npm/html/doc/cli/npm-init.html | 2 +-
deps/npm/html/doc/cli/npm-install.html | 6 +-
deps/npm/html/doc/cli/npm-link.html | 2 +-
deps/npm/html/doc/cli/npm-ls.html | 4 +-
deps/npm/html/doc/cli/npm-outdated.html | 2 +-
deps/npm/html/doc/cli/npm-owner.html | 2 +-
deps/npm/html/doc/cli/npm-pack.html | 2 +-
deps/npm/html/doc/cli/npm-prefix.html | 2 +-
deps/npm/html/doc/cli/npm-prune.html | 2 +-
deps/npm/html/doc/cli/npm-publish.html | 2 +-
deps/npm/html/doc/cli/npm-rebuild.html | 2 +-
deps/npm/html/doc/cli/npm-repo.html | 2 +-
deps/npm/html/doc/cli/npm-restart.html | 2 +-
deps/npm/html/doc/cli/npm-rm.html | 2 +-
deps/npm/html/doc/cli/npm-root.html | 2 +-
deps/npm/html/doc/cli/npm-run-script.html | 8 +-
deps/npm/html/doc/cli/npm-search.html | 2 +-
deps/npm/html/doc/cli/npm-shrinkwrap.html | 2 +-
deps/npm/html/doc/cli/npm-star.html | 2 +-
deps/npm/html/doc/cli/npm-stars.html | 2 +-
deps/npm/html/doc/cli/npm-start.html | 2 +-
deps/npm/html/doc/cli/npm-stop.html | 2 +-
deps/npm/html/doc/cli/npm-submodule.html | 2 +-
deps/npm/html/doc/cli/npm-tag.html | 2 +-
deps/npm/html/doc/cli/npm-test.html | 2 +-
deps/npm/html/doc/cli/npm-uninstall.html | 2 +-
deps/npm/html/doc/cli/npm-unpublish.html | 2 +-
deps/npm/html/doc/cli/npm-update.html | 2 +-
deps/npm/html/doc/cli/npm-version.html | 2 +-
deps/npm/html/doc/cli/npm-view.html | 2 +-
deps/npm/html/doc/cli/npm-whoami.html | 2 +-
deps/npm/html/doc/cli/npm.html | 4 +-
deps/npm/html/doc/files/npm-folders.html | 2 +-
deps/npm/html/doc/files/npm-global.html | 2 +-
deps/npm/html/doc/files/npm-json.html | 4 +-
deps/npm/html/doc/files/npmrc.html | 2 +-
deps/npm/html/doc/files/package.json.html | 4 +-
deps/npm/html/doc/index.html | 2 +-
deps/npm/html/doc/misc/npm-coding-style.html | 2 +-
deps/npm/html/doc/misc/npm-config.html | 2 +-
deps/npm/html/doc/misc/npm-developers.html | 2 +-
deps/npm/html/doc/misc/npm-disputes.html | 2 +-
deps/npm/html/doc/misc/npm-faq.html | 2 +-
deps/npm/html/doc/misc/npm-index.html | 2 +-
deps/npm/html/doc/misc/npm-registry.html | 2 +-
deps/npm/html/doc/misc/npm-scripts.html | 2 +-
deps/npm/html/doc/misc/removing-npm.html | 2 +-
deps/npm/html/doc/misc/semver.html | 2 +-
deps/npm/lib/adduser.js | 18 ++++-
deps/npm/lib/cache.js | 24 ++++++
deps/npm/lib/help.js | 11 ++-
deps/npm/lib/install.js | 2 +-
deps/npm/lib/npm.js | 8 ++
deps/npm/lib/utils/error-handler.js | 2 +-
deps/npm/lib/utils/lifecycle.js | 2 +
deps/npm/man/man1/npm-README.1 | 14 +++-
deps/npm/man/man1/npm-adduser.1 | 2 +-
deps/npm/man/man1/npm-bin.1 | 2 +-
deps/npm/man/man1/npm-bugs.1 | 2 +-
deps/npm/man/man1/npm-build.1 | 2 +-
deps/npm/man/man1/npm-bundle.1 | 2 +-
deps/npm/man/man1/npm-cache.1 | 2 +-
deps/npm/man/man1/npm-completion.1 | 2 +-
deps/npm/man/man1/npm-config.1 | 2 +-
deps/npm/man/man1/npm-dedupe.1 | 2 +-
deps/npm/man/man1/npm-deprecate.1 | 2 +-
deps/npm/man/man1/npm-docs.1 | 2 +-
deps/npm/man/man1/npm-edit.1 | 2 +-
deps/npm/man/man1/npm-explore.1 | 2 +-
deps/npm/man/man1/npm-help-search.1 | 2 +-
deps/npm/man/man1/npm-help.1 | 2 +-
deps/npm/man/man1/npm-init.1 | 2 +-
deps/npm/man/man1/npm-install.1 | 7 +-
deps/npm/man/man1/npm-link.1 | 2 +-
deps/npm/man/man1/npm-ls.1 | 4 +-
deps/npm/man/man1/npm-outdated.1 | 2 +-
deps/npm/man/man1/npm-owner.1 | 2 +-
deps/npm/man/man1/npm-pack.1 | 2 +-
deps/npm/man/man1/npm-prefix.1 | 2 +-
deps/npm/man/man1/npm-prune.1 | 2 +-
deps/npm/man/man1/npm-publish.1 | 2 +-
deps/npm/man/man1/npm-rebuild.1 | 2 +-
deps/npm/man/man1/npm-repo.1 | 2 +-
deps/npm/man/man1/npm-restart.1 | 2 +-
deps/npm/man/man1/npm-rm.1 | 2 +-
deps/npm/man/man1/npm-root.1 | 2 +-
deps/npm/man/man1/npm-run-script.1 | 8 +-
deps/npm/man/man1/npm-search.1 | 2 +-
deps/npm/man/man1/npm-shrinkwrap.1 | 2 +-
deps/npm/man/man1/npm-star.1 | 2 +-
deps/npm/man/man1/npm-stars.1 | 2 +-
deps/npm/man/man1/npm-start.1 | 2 +-
deps/npm/man/man1/npm-stop.1 | 2 +-
deps/npm/man/man1/npm-submodule.1 | 2 +-
deps/npm/man/man1/npm-tag.1 | 2 +-
deps/npm/man/man1/npm-test.1 | 2 +-
deps/npm/man/man1/npm-uninstall.1 | 2 +-
deps/npm/man/man1/npm-unpublish.1 | 2 +-
deps/npm/man/man1/npm-update.1 | 2 +-
deps/npm/man/man1/npm-version.1 | 2 +-
deps/npm/man/man1/npm-view.1 | 2 +-
deps/npm/man/man1/npm-whoami.1 | 2 +-
deps/npm/man/man1/npm.1 | 4 +-
deps/npm/man/man3/npm-bin.3 | 2 +-
deps/npm/man/man3/npm-bugs.3 | 2 +-
deps/npm/man/man3/npm-commands.3 | 2 +-
deps/npm/man/man3/npm-config.3 | 2 +-
deps/npm/man/man3/npm-deprecate.3 | 2 +-
deps/npm/man/man3/npm-docs.3 | 2 +-
deps/npm/man/man3/npm-edit.3 | 2 +-
deps/npm/man/man3/npm-explore.3 | 2 +-
deps/npm/man/man3/npm-help-search.3 | 2 +-
deps/npm/man/man3/npm-init.3 | 2 +-
deps/npm/man/man3/npm-install.3 | 2 +-
deps/npm/man/man3/npm-link.3 | 2 +-
deps/npm/man/man3/npm-load.3 | 2 +-
deps/npm/man/man3/npm-ls.3 | 2 +-
deps/npm/man/man3/npm-outdated.3 | 2 +-
deps/npm/man/man3/npm-owner.3 | 2 +-
deps/npm/man/man3/npm-pack.3 | 2 +-
deps/npm/man/man3/npm-prefix.3 | 2 +-
deps/npm/man/man3/npm-prune.3 | 2 +-
deps/npm/man/man3/npm-publish.3 | 2 +-
deps/npm/man/man3/npm-rebuild.3 | 2 +-
deps/npm/man/man3/npm-repo.3 | 2 +-
deps/npm/man/man3/npm-restart.3 | 2 +-
deps/npm/man/man3/npm-root.3 | 2 +-
deps/npm/man/man3/npm-run-script.3 | 2 +-
deps/npm/man/man3/npm-search.3 | 2 +-
deps/npm/man/man3/npm-shrinkwrap.3 | 2 +-
deps/npm/man/man3/npm-start.3 | 2 +-
deps/npm/man/man3/npm-stop.3 | 2 +-
deps/npm/man/man3/npm-submodule.3 | 2 +-
deps/npm/man/man3/npm-tag.3 | 2 +-
deps/npm/man/man3/npm-test.3 | 2 +-
deps/npm/man/man3/npm-uninstall.3 | 2 +-
deps/npm/man/man3/npm-unpublish.3 | 2 +-
deps/npm/man/man3/npm-update.3 | 2 +-
deps/npm/man/man3/npm-version.3 | 2 +-
deps/npm/man/man3/npm-view.3 | 2 +-
deps/npm/man/man3/npm-whoami.3 | 2 +-
deps/npm/man/man3/npm.3 | 6 +-
deps/npm/man/man5/npm-folders.5 | 2 +-
deps/npm/man/man5/npm-global.5 | 2 +-
deps/npm/man/man5/npm-json.5 | 5 +-
deps/npm/man/man5/npmrc.5 | 2 +-
deps/npm/man/man5/package.json.5 | 5 +-
deps/npm/man/man7/npm-coding-style.7 | 2 +-
deps/npm/man/man7/npm-config.7 | 2 +-
deps/npm/man/man7/npm-developers.7 | 2 +-
deps/npm/man/man7/npm-disputes.7 | 2 +-
deps/npm/man/man7/npm-faq.7 | 2 +-
deps/npm/man/man7/npm-index.7 | 2 +-
deps/npm/man/man7/npm-registry.7 | 2 +-
deps/npm/man/man7/npm-scripts.7 | 2 +-
deps/npm/man/man7/removing-npm.7 | 2 +-
deps/npm/man/man7/semver.7 | 2 +-
.../github-url-from-username-repo/index.js | 6 +-
.../package.json | 11 ++-
.../test/index.js | 27 +++++--
.../init-package-json/default-input.js | 4 +-
.../node_modules/promzard/package.json | 4 +-
.../init-package-json/package.json | 11 +--
deps/npm/node_modules/nopt/lib/nopt.js | 5 ++
deps/npm/node_modules/nopt/package.json | 5 +-
deps/npm/node_modules/nopt/test/basic.js | 8 ++
deps/npm/node_modules/npmconf/config-defs.js | 7 +-
deps/npm/node_modules/npmconf/package.json | 6 +-
.../normalize-package-data/.travis.yml | 1 -
.../normalize-package-data/lib/fixer.js | 66 +++++++--------
.../lib/make_warning.js | 23 ++++++
.../normalize-package-data/lib/normalize.js | 3 +-
.../normalize-package-data/package.json | 11 +--
.../read-package-json/package.json | 7 +-
deps/npm/node_modules/uid-number/LICENCE | 25 ++++++
deps/npm/package.json | 14 ++--
deps/npm/scripts/doc-build.sh | 2 +-
deps/npm/test/common-tap.js | 30 +++++++
deps/npm/test/tap/cache-add-unpublished.js | 61 ++++++++++++++
deps/npm/test/tap/circular-dep.js | 23 +++---
deps/npm/test/tap/config-meta.js | 2 -
deps/npm/test/tap/ignore-install-link.js | 9 +--
deps/npm/test/tap/install-cli-unicode.js | 38 +++++++++
deps/npm/test/tap/install-cli/README.md | 1 +
deps/npm/test/tap/install-cli/index.js | 1 +
deps/npm/test/tap/install-cli/package.json | 10 +++
deps/npm/test/tap/invalid-cmd-exit-code.js | 29 +++++++
deps/npm/test/tap/lifecycle.js | 12 +++
deps/npm/test/tap/ls-depth-cli.js | 79 ++++++++++++++++++
deps/npm/test/tap/ls-depth/package.json | 8 ++
deps/npm/test/tap/peer-deps-invalid.js | 81 +++++--------------
.../test/tap/peer-deps-invalid/file-fail.js | 10 +++
.../npm/test/tap/peer-deps-invalid/file-ok.js | 11 +++
.../tap/peer-deps-without-package-json.js | 65 ++++++---------
.../peer-deps-without-package-json/file-js.js | 11 +++
deps/npm/test/tap/startstop.js | 58 +++++--------
deps/npm/wercker.yml | 22 +++++
257 files changed, 879 insertions(+), 486 deletions(-)
create mode 100644 deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/make_warning.js
create mode 100644 deps/npm/node_modules/uid-number/LICENCE
create mode 100644 deps/npm/test/tap/cache-add-unpublished.js
create mode 100644 deps/npm/test/tap/install-cli-unicode.js
create mode 100644 deps/npm/test/tap/install-cli/README.md
create mode 100644 deps/npm/test/tap/install-cli/index.js
create mode 100644 deps/npm/test/tap/install-cli/package.json
create mode 100644 deps/npm/test/tap/invalid-cmd-exit-code.js
create mode 100644 deps/npm/test/tap/lifecycle.js
create mode 100644 deps/npm/test/tap/ls-depth-cli.js
create mode 100644 deps/npm/test/tap/ls-depth/package.json
create mode 100644 deps/npm/test/tap/peer-deps-invalid/file-fail.js
create mode 100644 deps/npm/test/tap/peer-deps-invalid/file-ok.js
create mode 100644 deps/npm/test/tap/peer-deps-without-package-json/file-js.js
create mode 100644 deps/npm/wercker.yml
diff --git a/deps/npm/README.md b/deps/npm/README.md
index 2383245b88b..0c08862fce9 100644
--- a/deps/npm/README.md
+++ b/deps/npm/README.md
@@ -38,6 +38,10 @@ paths, etc.) then read on.
There's a pretty robust install script at
. You can download that and run it.
+Here's an example using curl:
+
+ curl -L https://npmjs.org/install.sh | sh
+
### Slightly Fancier
You can set any npm configuration params with that script:
diff --git a/deps/npm/doc/api/npm.md b/deps/npm/doc/api/npm.md
index dea8773b80b..d05684e8b9d 100644
--- a/deps/npm/doc/api/npm.md
+++ b/deps/npm/doc/api/npm.md
@@ -4,7 +4,7 @@ npm(3) -- node package manager
## SYNOPSIS
var npm = require("npm")
- npm.load([configObject], function (er, npm) {
+ npm.load([configObject, ]function (er, npm) {
// use the npm object, now that it's loaded.
npm.config.set(key, val)
diff --git a/deps/npm/doc/cli/npm-install.md b/deps/npm/doc/cli/npm-install.md
index 47820a73c0e..62eec2d8e34 100644
--- a/deps/npm/doc/cli/npm-install.md
+++ b/deps/npm/doc/cli/npm-install.md
@@ -24,7 +24,7 @@ A `package` is:
* a) a folder containing a program described by a package.json file
* b) a gzipped tarball containing (a)
* c) a url that resolves to (b)
-* d) a `@` that is published on the registry with (c)
+* d) a `@` that is published on the registry (see `npm-registry(7)`) with (c)
* e) a `@` that points to (d)
* f) a `` that has a "latest" tag satisfying (e)
* g) a `` that resolves to (b)
@@ -254,7 +254,6 @@ affects a real use-case, it will be investigated.
* npm-config(7)
* npmrc(5)
* npm-registry(7)
-* npm-folders(5)
* npm-tag(1)
* npm-rm(1)
* npm-shrinkwrap(1)
diff --git a/deps/npm/doc/cli/npm-run-script.md b/deps/npm/doc/cli/npm-run-script.md
index 6c3c2b7a9cf..80b813cff7f 100644
--- a/deps/npm/doc/cli/npm-run-script.md
+++ b/deps/npm/doc/cli/npm-run-script.md
@@ -3,11 +3,13 @@ npm-run-script(1) -- Run arbitrary package scripts
## SYNOPSIS
- npm run-script
@@ -49,6 +49,10 @@ paths, etc.) then read on.
There's a pretty robust install script at
https://www.npmjs.org/install.sh. You can download that and run it.
+Here's an example using curl:
+
+curl -L https://npmjs.org/install.sh | sh
+
Slightly Fancier
You can set any npm configuration params with that script:
@@ -256,5 +260,5 @@ will no doubt tell you to put the output in a gist or email.
-
+
diff --git a/deps/npm/html/doc/api/npm-bin.html b/deps/npm/html/doc/api/npm-bin.html
index e8d570c3803..50bc54e4a9a 100644
--- a/deps/npm/html/doc/api/npm-bin.html
+++ b/deps/npm/html/doc/api/npm-bin.html
@@ -32,5 +32,5 @@ to the npm.bin
member.
-
+
diff --git a/deps/npm/html/doc/api/npm-bugs.html b/deps/npm/html/doc/api/npm-bugs.html
index 0849c7bad4d..d0cf9f376f3 100644
--- a/deps/npm/html/doc/api/npm-bugs.html
+++ b/deps/npm/html/doc/api/npm-bugs.html
@@ -38,5 +38,5 @@ friendly for programmatic use.
-
+
diff --git a/deps/npm/html/doc/api/npm-commands.html b/deps/npm/html/doc/api/npm-commands.html
index 8e28ec1c2fb..735905e295a 100644
--- a/deps/npm/html/doc/api/npm-commands.html
+++ b/deps/npm/html/doc/api/npm-commands.html
@@ -41,5 +41,5 @@ usage, or man 3 npm-<command>
for programmatic usage.
-
+
diff --git a/deps/npm/html/doc/api/npm-config.html b/deps/npm/html/doc/api/npm-config.html
index 2b424e094c6..e1d685560e9 100644
--- a/deps/npm/html/doc/api/npm-config.html
+++ b/deps/npm/html/doc/api/npm-config.html
@@ -46,5 +46,5 @@ functions instead.
-
+
diff --git a/deps/npm/html/doc/api/npm-deprecate.html b/deps/npm/html/doc/api/npm-deprecate.html
index 7a44a2e4fe9..2513519559a 100644
--- a/deps/npm/html/doc/api/npm-deprecate.html
+++ b/deps/npm/html/doc/api/npm-deprecate.html
@@ -45,5 +45,5 @@ install the package.
-
+
diff --git a/deps/npm/html/doc/api/npm-docs.html b/deps/npm/html/doc/api/npm-docs.html
index cb3ad991dfb..ad50e542221 100644
--- a/deps/npm/html/doc/api/npm-docs.html
+++ b/deps/npm/html/doc/api/npm-docs.html
@@ -38,5 +38,5 @@ friendly for programmatic use.
-
+
diff --git a/deps/npm/html/doc/api/npm-edit.html b/deps/npm/html/doc/api/npm-edit.html
index 6eae8b48d3d..38e691567f0 100644
--- a/deps/npm/html/doc/api/npm-edit.html
+++ b/deps/npm/html/doc/api/npm-edit.html
@@ -43,5 +43,5 @@ and how this is used.
-
+
diff --git a/deps/npm/html/doc/api/npm-explore.html b/deps/npm/html/doc/api/npm-explore.html
index ea2c890c686..7991f75139c 100644
--- a/deps/npm/html/doc/api/npm-explore.html
+++ b/deps/npm/html/doc/api/npm-explore.html
@@ -37,5 +37,5 @@ sure to use npm rebuild <pkg>
if you make any changes.
-
+
diff --git a/deps/npm/html/doc/api/npm-help-search.html b/deps/npm/html/doc/api/npm-help-search.html
index 52539869bf2..4bfb677ebc4 100644
--- a/deps/npm/html/doc/api/npm-help-search.html
+++ b/deps/npm/html/doc/api/npm-help-search.html
@@ -45,5 +45,5 @@ Name of the file that matched
-
+
diff --git a/deps/npm/html/doc/api/npm-init.html b/deps/npm/html/doc/api/npm-init.html
index 7a51f6462b7..90eac28a0cc 100644
--- a/deps/npm/html/doc/api/npm-init.html
+++ b/deps/npm/html/doc/api/npm-init.html
@@ -48,5 +48,5 @@ then go ahead and use this programmatically.
-
+
diff --git a/deps/npm/html/doc/api/npm-install.html b/deps/npm/html/doc/api/npm-install.html
index f128d43e14e..d78b3f41dcb 100644
--- a/deps/npm/html/doc/api/npm-install.html
+++ b/deps/npm/html/doc/api/npm-install.html
@@ -38,5 +38,5 @@ installed or when an error has been encountered.
-
+
diff --git a/deps/npm/html/doc/api/npm-link.html b/deps/npm/html/doc/api/npm-link.html
index 57eb24fa8c0..24461c092aa 100644
--- a/deps/npm/html/doc/api/npm-link.html
+++ b/deps/npm/html/doc/api/npm-link.html
@@ -52,5 +52,5 @@ the package in the current working directory
-
+
diff --git a/deps/npm/html/doc/api/npm-load.html b/deps/npm/html/doc/api/npm-load.html
index 067262214ef..55e4500b34a 100644
--- a/deps/npm/html/doc/api/npm-load.html
+++ b/deps/npm/html/doc/api/npm-load.html
@@ -45,5 +45,5 @@ config object.
-
+
diff --git a/deps/npm/html/doc/api/npm-ls.html b/deps/npm/html/doc/api/npm-ls.html
index 06b1be091d9..56553d2b239 100644
--- a/deps/npm/html/doc/api/npm-ls.html
+++ b/deps/npm/html/doc/api/npm-ls.html
@@ -72,5 +72,5 @@ dependency will only be output once.
-
+
diff --git a/deps/npm/html/doc/api/npm-outdated.html b/deps/npm/html/doc/api/npm-outdated.html
index 81383f9cda8..311922f7c0d 100644
--- a/deps/npm/html/doc/api/npm-outdated.html
+++ b/deps/npm/html/doc/api/npm-outdated.html
@@ -32,5 +32,5 @@ currently outdated.
-
+
diff --git a/deps/npm/html/doc/api/npm-owner.html b/deps/npm/html/doc/api/npm-owner.html
index 95a46c2c4d3..fbaef4359f7 100644
--- a/deps/npm/html/doc/api/npm-owner.html
+++ b/deps/npm/html/doc/api/npm-owner.html
@@ -47,5 +47,5 @@ that is not implemented at this time.
-
+
diff --git a/deps/npm/html/doc/api/npm-pack.html b/deps/npm/html/doc/api/npm-pack.html
index bb911e8e092..7af6b832301 100644
--- a/deps/npm/html/doc/api/npm-pack.html
+++ b/deps/npm/html/doc/api/npm-pack.html
@@ -38,5 +38,5 @@ overwritten the second time.
-
+
diff --git a/deps/npm/html/doc/api/npm-prefix.html b/deps/npm/html/doc/api/npm-prefix.html
index 218f02f5b36..808290ca2e1 100644
--- a/deps/npm/html/doc/api/npm-prefix.html
+++ b/deps/npm/html/doc/api/npm-prefix.html
@@ -34,5 +34,5 @@
-
+
diff --git a/deps/npm/html/doc/api/npm-prune.html b/deps/npm/html/doc/api/npm-prune.html
index c125b641ee6..1ade79fab4e 100644
--- a/deps/npm/html/doc/api/npm-prune.html
+++ b/deps/npm/html/doc/api/npm-prune.html
@@ -36,5 +36,5 @@ package's dependencies list.
-
+
diff --git a/deps/npm/html/doc/api/npm-publish.html b/deps/npm/html/doc/api/npm-publish.html
index 0fcd6f81304..1220fd6080d 100644
--- a/deps/npm/html/doc/api/npm-publish.html
+++ b/deps/npm/html/doc/api/npm-publish.html
@@ -45,5 +45,5 @@ the registry. Overwrites when the "force" environment variable is set
-
+
diff --git a/deps/npm/html/doc/api/npm-rebuild.html b/deps/npm/html/doc/api/npm-rebuild.html
index b15b33e27f0..0e22893c402 100644
--- a/deps/npm/html/doc/api/npm-rebuild.html
+++ b/deps/npm/html/doc/api/npm-rebuild.html
@@ -35,5 +35,5 @@ the new binary. If no 'packages' parameter is specify, every package wil
-
+
diff --git a/deps/npm/html/doc/api/npm-repo.html b/deps/npm/html/doc/api/npm-repo.html
index 2e9ba10a42f..a4a98208041 100644
--- a/deps/npm/html/doc/api/npm-repo.html
+++ b/deps/npm/html/doc/api/npm-repo.html
@@ -38,5 +38,5 @@ friendly for programmatic use.
-
+
diff --git a/deps/npm/html/doc/api/npm-restart.html b/deps/npm/html/doc/api/npm-restart.html
index 0466c9b5f31..71cad00b944 100644
--- a/deps/npm/html/doc/api/npm-restart.html
+++ b/deps/npm/html/doc/api/npm-restart.html
@@ -40,5 +40,5 @@ in the packages
parameter.
-
+
diff --git a/deps/npm/html/doc/api/npm-root.html b/deps/npm/html/doc/api/npm-root.html
index e9736533e5c..e1dd216bbde 100644
--- a/deps/npm/html/doc/api/npm-root.html
+++ b/deps/npm/html/doc/api/npm-root.html
@@ -34,5 +34,5 @@
-
+
diff --git a/deps/npm/html/doc/api/npm-run-script.html b/deps/npm/html/doc/api/npm-run-script.html
index cadce60e18d..c6be4c6fe21 100644
--- a/deps/npm/html/doc/api/npm-run-script.html
+++ b/deps/npm/html/doc/api/npm-run-script.html
@@ -42,5 +42,5 @@ assumed to be the command to run. All other elements are ignored.
-
+
diff --git a/deps/npm/html/doc/api/npm-search.html b/deps/npm/html/doc/api/npm-search.html
index 05894ce20b4..dcb5e0fde92 100644
--- a/deps/npm/html/doc/api/npm-search.html
+++ b/deps/npm/html/doc/api/npm-search.html
@@ -45,5 +45,5 @@ like).
-
+
diff --git a/deps/npm/html/doc/api/npm-shrinkwrap.html b/deps/npm/html/doc/api/npm-shrinkwrap.html
index ee76b5f3831..cce22640fae 100644
--- a/deps/npm/html/doc/api/npm-shrinkwrap.html
+++ b/deps/npm/html/doc/api/npm-shrinkwrap.html
@@ -39,5 +39,5 @@ been saved.
-
+
diff --git a/deps/npm/html/doc/api/npm-start.html b/deps/npm/html/doc/api/npm-start.html
index a6d069ea2c7..ec2f3694193 100644
--- a/deps/npm/html/doc/api/npm-start.html
+++ b/deps/npm/html/doc/api/npm-start.html
@@ -32,5 +32,5 @@ in the packages
parameter.
-
+
diff --git a/deps/npm/html/doc/api/npm-stop.html b/deps/npm/html/doc/api/npm-stop.html
index 0eb6fe91172..882ebbe02a9 100644
--- a/deps/npm/html/doc/api/npm-stop.html
+++ b/deps/npm/html/doc/api/npm-stop.html
@@ -32,5 +32,5 @@ in the packages
parameter.
-
+
diff --git a/deps/npm/html/doc/api/npm-submodule.html b/deps/npm/html/doc/api/npm-submodule.html
index 0180f6c777b..42b82ac15de 100644
--- a/deps/npm/html/doc/api/npm-submodule.html
+++ b/deps/npm/html/doc/api/npm-submodule.html
@@ -46,5 +46,5 @@ dependencies into the submodule folder.
-
+
diff --git a/deps/npm/html/doc/api/npm-tag.html b/deps/npm/html/doc/api/npm-tag.html
index d4331c3c173..dbf97be1aed 100644
--- a/deps/npm/html/doc/api/npm-tag.html
+++ b/deps/npm/html/doc/api/npm-tag.html
@@ -42,5 +42,5 @@ used. For more information about how to set this config, check
-
+
diff --git a/deps/npm/html/doc/api/npm-test.html b/deps/npm/html/doc/api/npm-test.html
index 57dc2520180..2820fa70965 100644
--- a/deps/npm/html/doc/api/npm-test.html
+++ b/deps/npm/html/doc/api/npm-test.html
@@ -35,5 +35,5 @@ in the packages
parameter.
-
+
diff --git a/deps/npm/html/doc/api/npm-uninstall.html b/deps/npm/html/doc/api/npm-uninstall.html
index e3e60e0bdb0..2a568d9e6a9 100644
--- a/deps/npm/html/doc/api/npm-uninstall.html
+++ b/deps/npm/html/doc/api/npm-uninstall.html
@@ -35,5 +35,5 @@ uninstalled or when an error has been encountered.
-
+
diff --git a/deps/npm/html/doc/api/npm-unpublish.html b/deps/npm/html/doc/api/npm-unpublish.html
index a95d7a4ff46..09748b7cc20 100644
--- a/deps/npm/html/doc/api/npm-unpublish.html
+++ b/deps/npm/html/doc/api/npm-unpublish.html
@@ -39,5 +39,5 @@ the root package entry is removed from the registry entirely.
-
+
diff --git a/deps/npm/html/doc/api/npm-update.html b/deps/npm/html/doc/api/npm-update.html
index 26e79de713a..b929ad73926 100644
--- a/deps/npm/html/doc/api/npm-update.html
+++ b/deps/npm/html/doc/api/npm-update.html
@@ -31,5 +31,5 @@
-
+
diff --git a/deps/npm/html/doc/api/npm-version.html b/deps/npm/html/doc/api/npm-version.html
index aada25a45b5..ffe2a4093fa 100644
--- a/deps/npm/html/doc/api/npm-version.html
+++ b/deps/npm/html/doc/api/npm-version.html
@@ -37,5 +37,5 @@ not have exactly one element. The only element should be a version number.
-
+
diff --git a/deps/npm/html/doc/api/npm-view.html b/deps/npm/html/doc/api/npm-view.html
index 685445b84f3..09dfffce1ad 100644
--- a/deps/npm/html/doc/api/npm-view.html
+++ b/deps/npm/html/doc/api/npm-view.html
@@ -112,5 +112,5 @@ the field name.
-
+
diff --git a/deps/npm/html/doc/api/npm-whoami.html b/deps/npm/html/doc/api/npm-whoami.html
index 37c3721b046..cccc2f5555f 100644
--- a/deps/npm/html/doc/api/npm-whoami.html
+++ b/deps/npm/html/doc/api/npm-whoami.html
@@ -34,5 +34,5 @@
-
+
diff --git a/deps/npm/html/doc/api/npm.html b/deps/npm/html/doc/api/npm.html
index fab4dc18525..75f85657d73 100644
--- a/deps/npm/html/doc/api/npm.html
+++ b/deps/npm/html/doc/api/npm.html
@@ -14,7 +14,7 @@
SYNOPSIS
var npm = require("npm")
-npm.load([configObject], function (er, npm) {
+npm.load([configObject, ]function (er, npm) {
// use the npm object, now that it's loaded.
npm.config.set(key, val)
@@ -27,7 +27,7 @@ npm.load([configObject], function (er, npm) {
VERSION
-1.4.7
+1.4.8
DESCRIPTION
@@ -105,5 +105,5 @@ method names. Use the npm.deref
method to find the real name.
-
+
diff --git a/deps/npm/html/doc/cli/npm-adduser.html b/deps/npm/html/doc/cli/npm-adduser.html
index 2a18cfd9f96..e97c3c21b1c 100644
--- a/deps/npm/html/doc/cli/npm-adduser.html
+++ b/deps/npm/html/doc/cli/npm-adduser.html
@@ -52,5 +52,5 @@ authorize on a new machine.
-
+
diff --git a/deps/npm/html/doc/cli/npm-bin.html b/deps/npm/html/doc/cli/npm-bin.html
index 8d107f2e639..f753966fe8f 100644
--- a/deps/npm/html/doc/cli/npm-bin.html
+++ b/deps/npm/html/doc/cli/npm-bin.html
@@ -33,5 +33,5 @@
-
+
diff --git a/deps/npm/html/doc/cli/npm-bugs.html b/deps/npm/html/doc/cli/npm-bugs.html
index 3f4473e1016..821dbb3a640 100644
--- a/deps/npm/html/doc/cli/npm-bugs.html
+++ b/deps/npm/html/doc/cli/npm-bugs.html
@@ -51,5 +51,5 @@ a package.json
in the current folder and use the name
-
+
diff --git a/deps/npm/html/doc/cli/npm-build.html b/deps/npm/html/doc/cli/npm-build.html
index 46ea9081564..89d75f1f714 100644
--- a/deps/npm/html/doc/cli/npm-build.html
+++ b/deps/npm/html/doc/cli/npm-build.html
@@ -38,5 +38,5 @@ A folder containing a package.json
file in its root.
-
+
diff --git a/deps/npm/html/doc/cli/npm-bundle.html b/deps/npm/html/doc/cli/npm-bundle.html
index c76024e205f..4c1de8ceedf 100644
--- a/deps/npm/html/doc/cli/npm-bundle.html
+++ b/deps/npm/html/doc/cli/npm-bundle.html
@@ -33,5 +33,5 @@ install packages into the local space.
-
+
diff --git a/deps/npm/html/doc/cli/npm-cache.html b/deps/npm/html/doc/cli/npm-cache.html
index 60a7e30b63a..90013f941e8 100644
--- a/deps/npm/html/doc/cli/npm-cache.html
+++ b/deps/npm/html/doc/cli/npm-cache.html
@@ -79,5 +79,5 @@ they do not make an HTTP request to the registry.
-
+
diff --git a/deps/npm/html/doc/cli/npm-completion.html b/deps/npm/html/doc/cli/npm-completion.html
index f79d2c48eca..357d095d78d 100644
--- a/deps/npm/html/doc/cli/npm-completion.html
+++ b/deps/npm/html/doc/cli/npm-completion.html
@@ -46,5 +46,5 @@ completions based on the arguments.
-
+
diff --git a/deps/npm/html/doc/cli/npm-config.html b/deps/npm/html/doc/cli/npm-config.html
index c369ab5e853..ad93e7803d7 100644
--- a/deps/npm/html/doc/cli/npm-config.html
+++ b/deps/npm/html/doc/cli/npm-config.html
@@ -86,5 +86,5 @@ global config.
-
+
diff --git a/deps/npm/html/doc/cli/npm-dedupe.html b/deps/npm/html/doc/cli/npm-dedupe.html
index c069b85dab8..2576a78c6ca 100644
--- a/deps/npm/html/doc/cli/npm-dedupe.html
+++ b/deps/npm/html/doc/cli/npm-dedupe.html
@@ -75,5 +75,5 @@ versions.
-
+
diff --git a/deps/npm/html/doc/cli/npm-deprecate.html b/deps/npm/html/doc/cli/npm-deprecate.html
index f7a8ad446b1..13a9b3b0f68 100644
--- a/deps/npm/html/doc/cli/npm-deprecate.html
+++ b/deps/npm/html/doc/cli/npm-deprecate.html
@@ -44,5 +44,5 @@ something like this:
-
+
diff --git a/deps/npm/html/doc/cli/npm-docs.html b/deps/npm/html/doc/cli/npm-docs.html
index 0be91683245..af1fcc0ba4f 100644
--- a/deps/npm/html/doc/cli/npm-docs.html
+++ b/deps/npm/html/doc/cli/npm-docs.html
@@ -54,5 +54,5 @@ the current folder and use the name
property.
-
+
diff --git a/deps/npm/html/doc/cli/npm-edit.html b/deps/npm/html/doc/cli/npm-edit.html
index abb78679230..91b064cd49e 100644
--- a/deps/npm/html/doc/cli/npm-edit.html
+++ b/deps/npm/html/doc/cli/npm-edit.html
@@ -50,5 +50,5 @@ or "notepad"
on Windows.Type: path
-
+
diff --git a/deps/npm/html/doc/cli/npm-explore.html b/deps/npm/html/doc/cli/npm-explore.html
index 7a615f7444b..7febeee318a 100644
--- a/deps/npm/html/doc/cli/npm-explore.html
+++ b/deps/npm/html/doc/cli/npm-explore.html
@@ -53,5 +53,5 @@ WindowsType: path
-
+
diff --git a/deps/npm/html/doc/cli/npm-help-search.html b/deps/npm/html/doc/cli/npm-help-search.html
index 524301abaed..16e3773de84 100644
--- a/deps/npm/html/doc/cli/npm-help-search.html
+++ b/deps/npm/html/doc/cli/npm-help-search.html
@@ -51,5 +51,5 @@ where the terms were found in the documentation.
-
+
diff --git a/deps/npm/html/doc/cli/npm-help.html b/deps/npm/html/doc/cli/npm-help.html
index 625c093413d..24ec2533014 100644
--- a/deps/npm/html/doc/cli/npm-help.html
+++ b/deps/npm/html/doc/cli/npm-help.html
@@ -49,5 +49,5 @@ matches are equivalent to specifying a topic name.
-
+
diff --git a/deps/npm/html/doc/cli/npm-init.html b/deps/npm/html/doc/cli/npm-init.html
index ed4fc858a23..fe2d1af96fa 100644
--- a/deps/npm/html/doc/cli/npm-init.html
+++ b/deps/npm/html/doc/cli/npm-init.html
@@ -42,5 +42,5 @@ without a really good reason to do so.
-
+
diff --git a/deps/npm/html/doc/cli/npm-install.html b/deps/npm/html/doc/cli/npm-install.html
index 50a1d814137..3e0a78f3f6f 100644
--- a/deps/npm/html/doc/cli/npm-install.html
+++ b/deps/npm/html/doc/cli/npm-install.html
@@ -31,7 +31,7 @@ by that. See npm-shrinkwrap(1).
A package
is:
-- a) a folder containing a program described by a package.json file
- b) a gzipped tarball containing (a)
- c) a url that resolves to (b)
- d) a
<name>@<version>
that is published on the registry with (c) - e) a
<name>@<tag>
that points to (d) - f) a
<name>
that has a "latest" tag satisfying (e) - g) a
<git remote url>
that resolves to (b)
+- a) a folder containing a program described by a package.json file
- b) a gzipped tarball containing (a)
- c) a url that resolves to (b)
- d) a
<name>@<version>
that is published on the registry (see npm-registry(7)
) with (c) - e) a
<name>@<tag>
that points to (d) - f) a
<name>
that has a "latest" tag satisfying (e) - g) a
<git remote url>
that resolves to (b)
Even if you never publish your package, you can still get a lot of
benefits of using npm if you just want to write a node program (a), and
@@ -154,7 +154,7 @@ affects a real use-case, it will be investigated.
SEE ALSO
-- npm-folders(5)
- npm-update(1)
- npm-link(1)
- npm-rebuild(1)
- npm-scripts(7)
- npm-build(1)
- npm-config(1)
- npm-config(7)
- npmrc(5)
- npm-registry(7)
- npm-folders(5)
- npm-tag(1)
- npm-rm(1)
- npm-shrinkwrap(1)
+- npm-folders(5)
- npm-update(1)
- npm-link(1)
- npm-rebuild(1)
- npm-scripts(7)
- npm-build(1)
- npm-config(1)
- npm-config(7)
- npmrc(5)
- npm-registry(7)
- npm-tag(1)
- npm-rm(1)
- npm-shrinkwrap(1)
@@ -166,5 +166,5 @@ affects a real use-case, it will be investigated.
-
+
diff --git a/deps/npm/html/doc/cli/npm-link.html b/deps/npm/html/doc/cli/npm-link.html
index 85bcc057fef..063b2a4c4a9 100644
--- a/deps/npm/html/doc/cli/npm-link.html
+++ b/deps/npm/html/doc/cli/npm-link.html
@@ -75,5 +75,5 @@ installation target into your project's node_modules
folder.
-
+
diff --git a/deps/npm/html/doc/cli/npm-ls.html b/deps/npm/html/doc/cli/npm-ls.html
index 260033b23d7..568e4e142de 100644
--- a/deps/npm/html/doc/cli/npm-ls.html
+++ b/deps/npm/html/doc/cli/npm-ls.html
@@ -28,7 +28,7 @@ limit the results to only the paths to the packages named. Note that
nested packages will also show the paths to the specified packages.
For example, running npm ls promzard
in npm's source tree will show:
-npm@1.4.7 /path/to/npm
+npm@1.4.8 /path/to/npm
└─┬ init-package-json@0.0.4
└── promzard@0.1.5
@@ -87,5 +87,5 @@ project.
-
+
diff --git a/deps/npm/html/doc/cli/npm-outdated.html b/deps/npm/html/doc/cli/npm-outdated.html
index 52f46b27daf..ee938ac08a2 100644
--- a/deps/npm/html/doc/cli/npm-outdated.html
+++ b/deps/npm/html/doc/cli/npm-outdated.html
@@ -71,5 +71,5 @@ project.
-
+
diff --git a/deps/npm/html/doc/cli/npm-owner.html b/deps/npm/html/doc/cli/npm-owner.html
index 9887040b88a..2fba0e09310 100644
--- a/deps/npm/html/doc/cli/npm-owner.html
+++ b/deps/npm/html/doc/cli/npm-owner.html
@@ -47,5 +47,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 d3ebdba9c54..323da3e70f2 100644
--- a/deps/npm/html/doc/cli/npm-pack.html
+++ b/deps/npm/html/doc/cli/npm-pack.html
@@ -42,5 +42,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 35ea1ab30df..fce8f433976 100644
--- a/deps/npm/html/doc/cli/npm-prefix.html
+++ b/deps/npm/html/doc/cli/npm-prefix.html
@@ -33,5 +33,5 @@
-
+
diff --git a/deps/npm/html/doc/cli/npm-prune.html b/deps/npm/html/doc/cli/npm-prune.html
index 8fc7298b4c8..e7ee0ee6ae6 100644
--- a/deps/npm/html/doc/cli/npm-prune.html
+++ b/deps/npm/html/doc/cli/npm-prune.html
@@ -42,5 +42,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 3ff10e9d94c..14572af70c6 100644
--- a/deps/npm/html/doc/cli/npm-publish.html
+++ b/deps/npm/html/doc/cli/npm-publish.html
@@ -49,5 +49,5 @@ it is removed with npm-unpublish(1).
-
+
diff --git a/deps/npm/html/doc/cli/npm-rebuild.html b/deps/npm/html/doc/cli/npm-rebuild.html
index 0dc90210b23..bc4061bd910 100644
--- a/deps/npm/html/doc/cli/npm-rebuild.html
+++ b/deps/npm/html/doc/cli/npm-rebuild.html
@@ -39,5 +39,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 7d6bda4fca5..17851420675 100644
--- a/deps/npm/html/doc/cli/npm-repo.html
+++ b/deps/npm/html/doc/cli/npm-repo.html
@@ -45,5 +45,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 17caa3c6afd..df666ff85f9 100644
--- a/deps/npm/html/doc/cli/npm-restart.html
+++ b/deps/npm/html/doc/cli/npm-restart.html
@@ -37,5 +37,5 @@ the "start" script.
-
+
diff --git a/deps/npm/html/doc/cli/npm-rm.html b/deps/npm/html/doc/cli/npm-rm.html
index aa98f3f2699..5a66704a338 100644
--- a/deps/npm/html/doc/cli/npm-rm.html
+++ b/deps/npm/html/doc/cli/npm-rm.html
@@ -37,5 +37,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 85b7f6d87ce..527667f7294 100644
--- a/deps/npm/html/doc/cli/npm-root.html
+++ b/deps/npm/html/doc/cli/npm-root.html
@@ -33,5 +33,5 @@
-
+
diff --git a/deps/npm/html/doc/cli/npm-run-script.html b/deps/npm/html/doc/cli/npm-run-script.html
index e410640ac15..c602aeb6985 100644
--- a/deps/npm/html/doc/cli/npm-run-script.html
+++ b/deps/npm/html/doc/cli/npm-run-script.html
@@ -13,11 +13,13 @@
SYNOPSIS
-npm run-script <script> <name>
+npm run-script [<pkg>] <command>
DESCRIPTION
-This runs an arbitrary command from a package's "scripts" object.
+This runs an arbitrary command from a package's "scripts"
object.
+If no package name is provided, it will search for a package.json
+in the current folder and use its "scripts"
object.
It is used by the test, start, restart, and stop commands, but can be
called directly, as well.
@@ -36,5 +38,5 @@ called directly, as well.
-
+
diff --git a/deps/npm/html/doc/cli/npm-search.html b/deps/npm/html/doc/cli/npm-search.html
index 6fc04160651..7df4e26149e 100644
--- a/deps/npm/html/doc/cli/npm-search.html
+++ b/deps/npm/html/doc/cli/npm-search.html
@@ -50,5 +50,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 a882921091b..1f0464e0b8d 100644
--- a/deps/npm/html/doc/cli/npm-shrinkwrap.html
+++ b/deps/npm/html/doc/cli/npm-shrinkwrap.html
@@ -196,5 +196,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 034b5eac5ba..a02ba32c02d 100644
--- a/deps/npm/html/doc/cli/npm-star.html
+++ b/deps/npm/html/doc/cli/npm-star.html
@@ -39,5 +39,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 b8d3f7f53d7..9f1568fc249 100644
--- a/deps/npm/html/doc/cli/npm-stars.html
+++ b/deps/npm/html/doc/cli/npm-stars.html
@@ -38,5 +38,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 0756eb6bb28..c8e48649576 100644
--- a/deps/npm/html/doc/cli/npm-start.html
+++ b/deps/npm/html/doc/cli/npm-start.html
@@ -33,5 +33,5 @@
-
+
diff --git a/deps/npm/html/doc/cli/npm-stop.html b/deps/npm/html/doc/cli/npm-stop.html
index d7d66ecfc39..b746a6111f8 100644
--- a/deps/npm/html/doc/cli/npm-stop.html
+++ b/deps/npm/html/doc/cli/npm-stop.html
@@ -33,5 +33,5 @@
-
+
diff --git a/deps/npm/html/doc/cli/npm-submodule.html b/deps/npm/html/doc/cli/npm-submodule.html
index ed73b38bb90..f4358281afa 100644
--- a/deps/npm/html/doc/cli/npm-submodule.html
+++ b/deps/npm/html/doc/cli/npm-submodule.html
@@ -46,5 +46,5 @@ dependencies into the submodule folder.
-
+
diff --git a/deps/npm/html/doc/cli/npm-tag.html b/deps/npm/html/doc/cli/npm-tag.html
index 51f529fd9e2..26c36d4f8f7 100644
--- a/deps/npm/html/doc/cli/npm-tag.html
+++ b/deps/npm/html/doc/cli/npm-tag.html
@@ -47,5 +47,5 @@ of using a specific version number:
-
+
diff --git a/deps/npm/html/doc/cli/npm-test.html b/deps/npm/html/doc/cli/npm-test.html
index 0afbd5b8229..d36b4df7fbc 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 bfdeca120b9..f77e270b37a 100644
--- a/deps/npm/html/doc/cli/npm-uninstall.html
+++ b/deps/npm/html/doc/cli/npm-uninstall.html
@@ -53,5 +53,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 de3e2f54b4a..e7864dca839 100644
--- a/deps/npm/html/doc/cli/npm-unpublish.html
+++ b/deps/npm/html/doc/cli/npm-unpublish.html
@@ -51,5 +51,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 3f15e4e09da..ca7974d2ca2 100644
--- a/deps/npm/html/doc/cli/npm-update.html
+++ b/deps/npm/html/doc/cli/npm-update.html
@@ -39,5 +39,5 @@ If no package name is specified, all packages in the specified location (global
-
+
diff --git a/deps/npm/html/doc/cli/npm-version.html b/deps/npm/html/doc/cli/npm-version.html
index b90a64287c9..88fc4e6470e 100644
--- a/deps/npm/html/doc/cli/npm-version.html
+++ b/deps/npm/html/doc/cli/npm-version.html
@@ -62,5 +62,5 @@ Enter passphrase:
-
+
diff --git a/deps/npm/html/doc/cli/npm-view.html b/deps/npm/html/doc/cli/npm-view.html
index b332c4a0da2..83a295aa532 100644
--- a/deps/npm/html/doc/cli/npm-view.html
+++ b/deps/npm/html/doc/cli/npm-view.html
@@ -104,5 +104,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 aecaf14e6a1..9330dc3b214 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 8770da02fec..50a4bb65bd4 100644
--- a/deps/npm/html/doc/cli/npm.html
+++ b/deps/npm/html/doc/cli/npm.html
@@ -17,7 +17,7 @@
VERSION
-1.4.7
+1.4.8
DESCRIPTION
@@ -144,5 +144,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 75e44e25409..eb9606b5c5b 100644
--- a/deps/npm/html/doc/files/npm-folders.html
+++ b/deps/npm/html/doc/files/npm-folders.html
@@ -218,5 +218,5 @@ cannot be found elsewhere. See packa
-
+
diff --git a/deps/npm/html/doc/files/npm-global.html b/deps/npm/html/doc/files/npm-global.html
index 75e44e25409..eb9606b5c5b 100644
--- a/deps/npm/html/doc/files/npm-global.html
+++ b/deps/npm/html/doc/files/npm-global.html
@@ -218,5 +218,5 @@ cannot be found elsewhere. See packa
-
+
diff --git a/deps/npm/html/doc/files/npm-json.html b/deps/npm/html/doc/files/npm-json.html
index b8dc0d46b29..bcb0a56bf8b 100644
--- a/deps/npm/html/doc/files/npm-json.html
+++ b/deps/npm/html/doc/files/npm-json.html
@@ -311,7 +311,7 @@ a tarball or git URL.
See semver(7) for more details about specifying version ranges.
-version
Must match version
exactly>version
Must be greater than version
>=version
etc<version
<=version
~version
"Approximately equivalent to version" See semver(7)1.2.x
1.2.0, 1.2.1, etc., but not 1.3.0http://...
See 'URLs as Dependencies' below*
Matches any version""
(just an empty string) Same as *
version1 - version2
Same as >=version1 <=version2
.range1 || range2
Passes if either range1 or range2 are satisfied.git...
See 'Git URLs as Dependencies' belowuser/repo
See 'GitHub URLs' below
+version
Must match version
exactly>version
Must be greater than version
>=version
etc<version
<=version
~version
"Approximately equivalent to version" See semver(7)^version
"Compatible with version" See semver(7)1.2.x
1.2.0, 1.2.1, etc., but not 1.3.0http://...
See 'URLs as Dependencies' below*
Matches any version""
(just an empty string) Same as *
version1 - version2
Same as >=version1 <=version2
.range1 || range2
Passes if either range1 or range2 are satisfied.git...
See 'Git URLs as Dependencies' belowuser/repo
See 'GitHub URLs' below
For example, these are all valid:
@@ -589,5 +589,5 @@ ignored.
-
+
diff --git a/deps/npm/html/doc/files/npmrc.html b/deps/npm/html/doc/files/npmrc.html
index 608c4976c4f..10dff0f1b6f 100644
--- a/deps/npm/html/doc/files/npmrc.html
+++ b/deps/npm/html/doc/files/npmrc.html
@@ -72,5 +72,5 @@ manner.
-
+
diff --git a/deps/npm/html/doc/files/package.json.html b/deps/npm/html/doc/files/package.json.html
index b8dc0d46b29..bcb0a56bf8b 100644
--- a/deps/npm/html/doc/files/package.json.html
+++ b/deps/npm/html/doc/files/package.json.html
@@ -311,7 +311,7 @@ a tarball or git URL.
See semver(7) for more details about specifying version ranges.
-version
Must match version
exactly>version
Must be greater than version
>=version
etc<version
<=version
~version
"Approximately equivalent to version" See semver(7)1.2.x
1.2.0, 1.2.1, etc., but not 1.3.0http://...
See 'URLs as Dependencies' below*
Matches any version""
(just an empty string) Same as *
version1 - version2
Same as >=version1 <=version2
.range1 || range2
Passes if either range1 or range2 are satisfied.git...
See 'Git URLs as Dependencies' belowuser/repo
See 'GitHub URLs' below
+version
Must match version
exactly>version
Must be greater than version
>=version
etc<version
<=version
~version
"Approximately equivalent to version" See semver(7)^version
"Compatible with version" See semver(7)1.2.x
1.2.0, 1.2.1, etc., but not 1.3.0http://...
See 'URLs as Dependencies' below*
Matches any version""
(just an empty string) Same as *
version1 - version2
Same as >=version1 <=version2
.range1 || range2
Passes if either range1 or range2 are satisfied.git...
See 'Git URLs as Dependencies' belowuser/repo
See 'GitHub URLs' below
For example, these are all valid:
@@ -589,5 +589,5 @@ ignored.
-
+
diff --git a/deps/npm/html/doc/index.html b/deps/npm/html/doc/index.html
index a8897284d8c..8ddfe6853d8 100644
--- a/deps/npm/html/doc/index.html
+++ b/deps/npm/html/doc/index.html
@@ -429,5 +429,5 @@
-
+
diff --git a/deps/npm/html/doc/misc/npm-coding-style.html b/deps/npm/html/doc/misc/npm-coding-style.html
index b3c373ca114..718683cc64e 100644
--- a/deps/npm/html/doc/misc/npm-coding-style.html
+++ b/deps/npm/html/doc/misc/npm-coding-style.html
@@ -195,5 +195,5 @@ set to anything."
-
+
diff --git a/deps/npm/html/doc/misc/npm-config.html b/deps/npm/html/doc/misc/npm-config.html
index 1c44de37f3e..54ff62e0717 100644
--- a/deps/npm/html/doc/misc/npm-config.html
+++ b/deps/npm/html/doc/misc/npm-config.html
@@ -743,5 +743,5 @@ hash, and exit successfully.
-
+
diff --git a/deps/npm/html/doc/misc/npm-developers.html b/deps/npm/html/doc/misc/npm-developers.html
index a3cfc32b89b..c079166bd9f 100644
--- a/deps/npm/html/doc/misc/npm-developers.html
+++ b/deps/npm/html/doc/misc/npm-developers.html
@@ -187,5 +187,5 @@ from a fresh checkout.
-
+
diff --git a/deps/npm/html/doc/misc/npm-disputes.html b/deps/npm/html/doc/misc/npm-disputes.html
index 15dfd2a3c80..b6fa66273f6 100644
--- a/deps/npm/html/doc/misc/npm-disputes.html
+++ b/deps/npm/html/doc/misc/npm-disputes.html
@@ -105,5 +105,5 @@ things into it.
-
+
diff --git a/deps/npm/html/doc/misc/npm-faq.html b/deps/npm/html/doc/misc/npm-faq.html
index 7e310072daa..556f1cb8e0e 100644
--- a/deps/npm/html/doc/misc/npm-faq.html
+++ b/deps/npm/html/doc/misc/npm-faq.html
@@ -361,5 +361,5 @@ good folks at npm, Inc.
-
+
diff --git a/deps/npm/html/doc/misc/npm-index.html b/deps/npm/html/doc/misc/npm-index.html
index 4afdf117e09..b4892a7bb0d 100644
--- a/deps/npm/html/doc/misc/npm-index.html
+++ b/deps/npm/html/doc/misc/npm-index.html
@@ -429,5 +429,5 @@
-
+
diff --git a/deps/npm/html/doc/misc/npm-registry.html b/deps/npm/html/doc/misc/npm-registry.html
index 3c0fea26890..0828d93f8c5 100644
--- a/deps/npm/html/doc/misc/npm-registry.html
+++ b/deps/npm/html/doc/misc/npm-registry.html
@@ -84,5 +84,5 @@ effectively implement the entire CouchDB API anyway.
-
+
diff --git a/deps/npm/html/doc/misc/npm-scripts.html b/deps/npm/html/doc/misc/npm-scripts.html
index 1e41008cdce..c1e77d6fb53 100644
--- a/deps/npm/html/doc/misc/npm-scripts.html
+++ b/deps/npm/html/doc/misc/npm-scripts.html
@@ -236,5 +236,5 @@ the user will sudo the npm command in question.
-
+
diff --git a/deps/npm/html/doc/misc/removing-npm.html b/deps/npm/html/doc/misc/removing-npm.html
index 40dab55b444..08d7a4f7d87 100644
--- a/deps/npm/html/doc/misc/removing-npm.html
+++ b/deps/npm/html/doc/misc/removing-npm.html
@@ -71,5 +71,5 @@ modules. To track those down, you can do the following:
-
+
diff --git a/deps/npm/html/doc/misc/semver.html b/deps/npm/html/doc/misc/semver.html
index 51473c703a9..3dae36b08e2 100644
--- a/deps/npm/html/doc/misc/semver.html
+++ b/deps/npm/html/doc/misc/semver.html
@@ -130,5 +130,5 @@ range, use the satisfies(version, range)
function.
-
+
diff --git a/deps/npm/lib/adduser.js b/deps/npm/lib/adduser.js
index 739f14243f1..94a119683a7 100644
--- a/deps/npm/lib/adduser.js
+++ b/deps/npm/lib/adduser.js
@@ -66,15 +66,24 @@ function readUsername (c, u, cb) {
function readPassword (c, u, cb) {
var v = userValidate.pw
- if (!c.changed) {
- u.p = c.p
- return cb()
+ var prompt
+ if (c.p && !c.changed) {
+ prompt = "Password: (or leave unchanged) "
+ } else {
+ prompt = "Password: "
}
- read({prompt: "Password: ", silent: true}, function (er, pw) {
+
+ read({prompt: prompt, silent: true}, function (er, pw) {
if (er) {
return cb(er.message === "cancelled" ? er.message : er)
}
+ if (!c.changed && pw === "") {
+ // when the username was not changed,
+ // empty response means "use the old value"
+ pw = c.p
+ }
+
if (!pw) {
return readPassword(c, u, cb)
}
@@ -85,6 +94,7 @@ function readPassword (c, u, cb) {
return readPassword(c, u, cb)
}
+ c.changed = c.changed || c.p != pw
u.p = pw
cb(er)
})
diff --git a/deps/npm/lib/cache.js b/deps/npm/lib/cache.js
index b17da0cf925..5c2d07840ea 100644
--- a/deps/npm/lib/cache.js
+++ b/deps/npm/lib/cache.js
@@ -84,6 +84,7 @@ var mkdir = require("mkdirp")
, which = require("which")
, isGitUrl = require("./utils/is-git-url.js")
, pathIsInside = require("path-is-inside")
+ , http = require("http")
cache.usage = "npm cache add "
+ "\nnpm cache add "
@@ -709,6 +710,9 @@ function addNameTag (name, tag, data, cb_) {
}
registry.get(name, function (er, data, json, response) {
+ if (!er) {
+ er = errorResponse(name, resp)
+ }
if (er) return cb(er)
engineFilter(data)
if (data["dist-tags"] && data["dist-tags"][tag]
@@ -744,6 +748,16 @@ function engineFilter (data) {
})
}
+function errorResponse (name, response) {
+ if (response.statusCode >= 400) {
+ var er = new Error(http.STATUS_CODES[response.statusCode])
+ er.statusCode = response.statusCode
+ er.code = "E" + er.statusCode
+ er.pkgid = name
+ }
+ return er
+}
+
function addNameRange (name, range, data, cb) {
if (typeof cb !== "function") cb = data, data = null
@@ -755,6 +769,9 @@ function addNameRange (name, range, data, cb) {
if (data) return next()
registry.get(name, function (er, d, json, response) {
+ if (!er) {
+ er = errorResponse(name, response)
+ }
if (er) return cb(er)
data = d
next()
@@ -820,6 +837,9 @@ function addNameVersion (name, v, data, cb) {
return next()
}
registry.get(name, function (er, d, json, resp) {
+ if (!er) {
+ er = errorResponse(name, resp)
+ }
if (er) return cb(er)
data = d && d.versions[ver]
if (!data) {
@@ -857,6 +877,10 @@ function addNameVersion (name, v, data, cb) {
if (er && er.code !== "ENOENT" && er.code !== "ENOTDIR")
return cb(er)
if (er) return fetchit()
+ // check the SHA of the package we have, to ensure it wasn't installed
+ // from somewhere other than the registry (eg, a fork)
+ if (data._shasum && dist.shasum && data._shasum !== dist.shasum)
+ return fetchit()
return cb(null, data)
})
} else return fetchit()
diff --git a/deps/npm/lib/help.js b/deps/npm/lib/help.js
index ea3970b2409..72b4393b6af 100644
--- a/deps/npm/lib/help.js
+++ b/deps/npm/lib/help.js
@@ -30,8 +30,11 @@ function help (args, cb) {
var section = npm.deref(args[0]) || args[0]
// npm help : show basic usage
- if (!section)
- return npmUsage(cb)
+ if (!section) {
+ var valid = argv[0] === 'help' ? 0 : 1
+ return npmUsage(valid, cb)
+ }
+
// npm -h: show command usage
if ( npm.config.get("usage")
@@ -147,7 +150,7 @@ function htmlMan (man) {
return path.resolve(__dirname, "..", "html", "doc", sect, f)
}
-function npmUsage (cb) {
+function npmUsage (valid, cb) {
npm.config.set("loglevel", "silent")
log.level = "silent"
console.log
@@ -170,7 +173,7 @@ function npmUsage (cb) {
, ""
, "npm@" + npm.version + " " + path.dirname(__dirname)
].join("\n"))
- cb()
+ cb(valid)
}
function usages () {
diff --git a/deps/npm/lib/install.js b/deps/npm/lib/install.js
index 8bc009349b6..3e319fa6734 100644
--- a/deps/npm/lib/install.js
+++ b/deps/npm/lib/install.js
@@ -448,7 +448,7 @@ function prettify (tree, installed) {
if (g) g = " (" + g + ")"
return c.what + g
})
- })
+ }, "", { unicode: npm.config.get("unicode") })
}).join("\n")
}
diff --git a/deps/npm/lib/npm.js b/deps/npm/lib/npm.js
index c443b64998b..a529862d5ad 100644
--- a/deps/npm/lib/npm.js
+++ b/deps/npm/lib/npm.js
@@ -288,6 +288,14 @@ function load (npm, cli, cb) {
npmconf.load(cli, builtin, function (er, config) {
if (er === config) er = null
+ // Include npm-version and node-version in user-agent
+ var ua = config.get("user-agent") || ""
+ ua = ua.replace(/\{node-version\}/gi, process.version)
+ ua = ua.replace(/\{npm-version\}/gi, npm.version)
+ ua = ua.replace(/\{platform\}/gi, process.platform)
+ ua = ua.replace(/\{arch\}/gi, process.arch)
+ config.set("user-agent", ua)
+
npm.config = config
var color = config.get("color")
diff --git a/deps/npm/lib/utils/error-handler.js b/deps/npm/lib/utils/error-handler.js
index 9777c6a50b0..b025fdd371c 100644
--- a/deps/npm/lib/utils/error-handler.js
+++ b/deps/npm/lib/utils/error-handler.js
@@ -279,7 +279,7 @@ function errorHandler (er) {
var os = require("os")
// just a line break
- console.error("")
+ if (log.levels[log.level] <= log.levels.error) console.error("")
log.error("System", os.type() + " " + os.release())
log.error("command", process.argv
.map(JSON.stringify).join(" "))
diff --git a/deps/npm/lib/utils/lifecycle.js b/deps/npm/lib/utils/lifecycle.js
index d1493700d04..1af5bddca71 100644
--- a/deps/npm/lib/utils/lifecycle.js
+++ b/deps/npm/lib/utils/lifecycle.js
@@ -1,5 +1,6 @@
exports = module.exports = lifecycle
exports.cmd = cmd
+exports.makeEnv = makeEnv
var log = require("npmlog")
, spawn = require("child_process").spawn
@@ -314,6 +315,7 @@ function makeEnv (data, prefix, env) {
var value = npm.config.get(i)
if (value instanceof Stream || Array.isArray(value)) return
if (!value) value = ""
+ else if (typeof value === "number") value = "" + value
else if (typeof value !== "string") value = JSON.stringify(value)
value = -1 !== value.indexOf("\n")
diff --git a/deps/npm/man/man1/npm-README.1 b/deps/npm/man/man1/npm-README.1
index 6118efec7a0..0f8bef3d71d 100644
--- a/deps/npm/man/man1/npm-README.1
+++ b/deps/npm/man/man1/npm-README.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM" "1" "April 2014" "" ""
+.TH "NPM" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm\fR \-\- node package manager then read on\.
.SH "Fancy Install (Unix)"
There\'s a pretty robust install script at \fIhttps://www\.npmjs\.org/install\.sh\fR\|\. You can download that and run it\.
.
+.P
+Here\'s an example using curl:
+.
+.IP "" 4
+.
+.nf
+curl \-L https://npmjs\.org/install\.sh | sh
+.
+.fi
+.
+.IP "" 0
+.
.SS "Slightly Fancier"
You can set any npm configuration params with that script:
.
diff --git a/deps/npm/man/man1/npm-adduser.1 b/deps/npm/man/man1/npm-adduser.1
index 32fb4e258db..594330a415b 100644
--- a/deps/npm/man/man1/npm-adduser.1
+++ b/deps/npm/man/man1/npm-adduser.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-ADDUSER" "1" "April 2014" "" ""
+.TH "NPM\-ADDUSER" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-adduser\fR \-\- Add a registry user account
diff --git a/deps/npm/man/man1/npm-bin.1 b/deps/npm/man/man1/npm-bin.1
index 7b84d493afd..af5468b59dc 100644
--- a/deps/npm/man/man1/npm-bin.1
+++ b/deps/npm/man/man1/npm-bin.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-BIN" "1" "April 2014" "" ""
+.TH "NPM\-BIN" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-bin\fR \-\- Display npm bin folder
diff --git a/deps/npm/man/man1/npm-bugs.1 b/deps/npm/man/man1/npm-bugs.1
index 5d55899f7e2..b3a953bfe64 100644
--- a/deps/npm/man/man1/npm-bugs.1
+++ b/deps/npm/man/man1/npm-bugs.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-BUGS" "1" "April 2014" "" ""
+.TH "NPM\-BUGS" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-bugs\fR \-\- Bugs for a package in a web browser maybe
diff --git a/deps/npm/man/man1/npm-build.1 b/deps/npm/man/man1/npm-build.1
index 7fa37e86423..152caf79cca 100644
--- a/deps/npm/man/man1/npm-build.1
+++ b/deps/npm/man/man1/npm-build.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-BUILD" "1" "April 2014" "" ""
+.TH "NPM\-BUILD" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-build\fR \-\- Build a package
diff --git a/deps/npm/man/man1/npm-bundle.1 b/deps/npm/man/man1/npm-bundle.1
index 6060b3c342a..5f2f85a3f55 100644
--- a/deps/npm/man/man1/npm-bundle.1
+++ b/deps/npm/man/man1/npm-bundle.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-BUNDLE" "1" "April 2014" "" ""
+.TH "NPM\-BUNDLE" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-bundle\fR \-\- REMOVED
diff --git a/deps/npm/man/man1/npm-cache.1 b/deps/npm/man/man1/npm-cache.1
index cbedf547fda..0e5b949c2b8 100644
--- a/deps/npm/man/man1/npm-cache.1
+++ b/deps/npm/man/man1/npm-cache.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-CACHE" "1" "April 2014" "" ""
+.TH "NPM\-CACHE" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-cache\fR \-\- Manipulates packages cache
diff --git a/deps/npm/man/man1/npm-completion.1 b/deps/npm/man/man1/npm-completion.1
index 1a4bc30e1de..6d1ec8d972c 100644
--- a/deps/npm/man/man1/npm-completion.1
+++ b/deps/npm/man/man1/npm-completion.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-COMPLETION" "1" "April 2014" "" ""
+.TH "NPM\-COMPLETION" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-completion\fR \-\- Tab Completion for npm
diff --git a/deps/npm/man/man1/npm-config.1 b/deps/npm/man/man1/npm-config.1
index 166acddd287..38490724d72 100644
--- a/deps/npm/man/man1/npm-config.1
+++ b/deps/npm/man/man1/npm-config.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-CONFIG" "1" "April 2014" "" ""
+.TH "NPM\-CONFIG" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-config\fR \-\- Manage the npm configuration files
diff --git a/deps/npm/man/man1/npm-dedupe.1 b/deps/npm/man/man1/npm-dedupe.1
index 6f65a68e977..e60192178b0 100644
--- a/deps/npm/man/man1/npm-dedupe.1
+++ b/deps/npm/man/man1/npm-dedupe.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-DEDUPE" "1" "April 2014" "" ""
+.TH "NPM\-DEDUPE" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-dedupe\fR \-\- Reduce duplication
diff --git a/deps/npm/man/man1/npm-deprecate.1 b/deps/npm/man/man1/npm-deprecate.1
index d823ee309a7..e4a19b23bc2 100644
--- a/deps/npm/man/man1/npm-deprecate.1
+++ b/deps/npm/man/man1/npm-deprecate.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-DEPRECATE" "1" "April 2014" "" ""
+.TH "NPM\-DEPRECATE" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-deprecate\fR \-\- Deprecate a version of a package
diff --git a/deps/npm/man/man1/npm-docs.1 b/deps/npm/man/man1/npm-docs.1
index 5c19cb41ac3..27cbb05c8d7 100644
--- a/deps/npm/man/man1/npm-docs.1
+++ b/deps/npm/man/man1/npm-docs.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-DOCS" "1" "April 2014" "" ""
+.TH "NPM\-DOCS" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-docs\fR \-\- Docs for a package in a web browser maybe
diff --git a/deps/npm/man/man1/npm-edit.1 b/deps/npm/man/man1/npm-edit.1
index 1dd706140f0..678c9128b2c 100644
--- a/deps/npm/man/man1/npm-edit.1
+++ b/deps/npm/man/man1/npm-edit.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-EDIT" "1" "April 2014" "" ""
+.TH "NPM\-EDIT" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-edit\fR \-\- Edit an installed package
diff --git a/deps/npm/man/man1/npm-explore.1 b/deps/npm/man/man1/npm-explore.1
index 2bf1de761a7..2baac8f2fee 100644
--- a/deps/npm/man/man1/npm-explore.1
+++ b/deps/npm/man/man1/npm-explore.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-EXPLORE" "1" "April 2014" "" ""
+.TH "NPM\-EXPLORE" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-explore\fR \-\- Browse an installed package
diff --git a/deps/npm/man/man1/npm-help-search.1 b/deps/npm/man/man1/npm-help-search.1
index 5450e75cd1c..cf723d2f417 100644
--- a/deps/npm/man/man1/npm-help-search.1
+++ b/deps/npm/man/man1/npm-help-search.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-HELP\-SEARCH" "1" "April 2014" "" ""
+.TH "NPM\-HELP\-SEARCH" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-help-search\fR \-\- Search npm help documentation
diff --git a/deps/npm/man/man1/npm-help.1 b/deps/npm/man/man1/npm-help.1
index 5b010bde4e1..9e6c240fd14 100644
--- a/deps/npm/man/man1/npm-help.1
+++ b/deps/npm/man/man1/npm-help.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-HELP" "1" "April 2014" "" ""
+.TH "NPM\-HELP" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-help\fR \-\- Get help on npm
diff --git a/deps/npm/man/man1/npm-init.1 b/deps/npm/man/man1/npm-init.1
index 2a9fb3a1f00..795a8db9b47 100644
--- a/deps/npm/man/man1/npm-init.1
+++ b/deps/npm/man/man1/npm-init.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-INIT" "1" "April 2014" "" ""
+.TH "NPM\-INIT" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-init\fR \-\- Interactively create a package\.json file
diff --git a/deps/npm/man/man1/npm-install.1 b/deps/npm/man/man1/npm-install.1
index 8ffb4e663a3..d98b55b12d1 100644
--- a/deps/npm/man/man1/npm-install.1
+++ b/deps/npm/man/man1/npm-install.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-INSTALL" "1" "April 2014" "" ""
+.TH "NPM\-INSTALL" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-install\fR \-\- Install a package
@@ -39,7 +39,7 @@ b) a gzipped tarball containing (a)
c) a url that resolves to (b)
.
.IP "\(bu" 4
-d) a \fB@\fR that is published on the registry with (c)
+d) a \fB@\fR that is published on the registry (npm help see \fBnpm\-registry\fR) with (c)
.
.IP "\(bu" 4
e) a \fB@\fR that points to (d)
@@ -429,9 +429,6 @@ npm help npmrc
npm help registry
.
.IP "\(bu" 4
-npm help folders
-.
-.IP "\(bu" 4
npm help tag
.
.IP "\(bu" 4
diff --git a/deps/npm/man/man1/npm-link.1 b/deps/npm/man/man1/npm-link.1
index 49a9030254c..389dd82d53e 100644
--- a/deps/npm/man/man1/npm-link.1
+++ b/deps/npm/man/man1/npm-link.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-LINK" "1" "April 2014" "" ""
+.TH "NPM\-LINK" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-link\fR \-\- Symlink a package folder
diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1
index 32ae9dd781f..ddd00f58549 100644
--- a/deps/npm/man/man1/npm-ls.1
+++ b/deps/npm/man/man1/npm-ls.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-LS" "1" "April 2014" "" ""
+.TH "NPM\-LS" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-ls\fR \-\- List installed packages
@@ -29,7 +29,7 @@ For example, running \fBnpm ls promzard\fR in npm\'s source tree will show:
.IP "" 4
.
.nf
-npm@1.4.7 /path/to/npm
+npm@1.4.8 /path/to/npm
└─┬ init\-package\-json@0\.0\.4
└── promzard@0\.1\.5
.
diff --git a/deps/npm/man/man1/npm-outdated.1 b/deps/npm/man/man1/npm-outdated.1
index 7a9d3afb94f..f0e7ce6d976 100644
--- a/deps/npm/man/man1/npm-outdated.1
+++ b/deps/npm/man/man1/npm-outdated.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-OUTDATED" "1" "April 2014" "" ""
+.TH "NPM\-OUTDATED" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-outdated\fR \-\- Check for outdated packages
diff --git a/deps/npm/man/man1/npm-owner.1 b/deps/npm/man/man1/npm-owner.1
index f137e430016..dbb41b7b8a7 100644
--- a/deps/npm/man/man1/npm-owner.1
+++ b/deps/npm/man/man1/npm-owner.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-OWNER" "1" "April 2014" "" ""
+.TH "NPM\-OWNER" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-owner\fR \-\- Manage package owners
diff --git a/deps/npm/man/man1/npm-pack.1 b/deps/npm/man/man1/npm-pack.1
index 302617e5d1d..c23b617e0af 100644
--- a/deps/npm/man/man1/npm-pack.1
+++ b/deps/npm/man/man1/npm-pack.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-PACK" "1" "April 2014" "" ""
+.TH "NPM\-PACK" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-pack\fR \-\- Create a tarball from a package
diff --git a/deps/npm/man/man1/npm-prefix.1 b/deps/npm/man/man1/npm-prefix.1
index 2354b1c17ca..66849742bf3 100644
--- a/deps/npm/man/man1/npm-prefix.1
+++ b/deps/npm/man/man1/npm-prefix.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-PREFIX" "1" "April 2014" "" ""
+.TH "NPM\-PREFIX" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-prefix\fR \-\- Display prefix
diff --git a/deps/npm/man/man1/npm-prune.1 b/deps/npm/man/man1/npm-prune.1
index 052cad9d3cf..710438d1062 100644
--- a/deps/npm/man/man1/npm-prune.1
+++ b/deps/npm/man/man1/npm-prune.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-PRUNE" "1" "April 2014" "" ""
+.TH "NPM\-PRUNE" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-prune\fR \-\- Remove extraneous packages
diff --git a/deps/npm/man/man1/npm-publish.1 b/deps/npm/man/man1/npm-publish.1
index 6fc6743ac97..19271c82a71 100644
--- a/deps/npm/man/man1/npm-publish.1
+++ b/deps/npm/man/man1/npm-publish.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-PUBLISH" "1" "April 2014" "" ""
+.TH "NPM\-PUBLISH" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-publish\fR \-\- Publish a package
diff --git a/deps/npm/man/man1/npm-rebuild.1 b/deps/npm/man/man1/npm-rebuild.1
index 4a63d3d27ca..7dda41232ee 100644
--- a/deps/npm/man/man1/npm-rebuild.1
+++ b/deps/npm/man/man1/npm-rebuild.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-REBUILD" "1" "April 2014" "" ""
+.TH "NPM\-REBUILD" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-rebuild\fR \-\- Rebuild a package
diff --git a/deps/npm/man/man1/npm-repo.1 b/deps/npm/man/man1/npm-repo.1
index 3f9fb3251f6..e79f8826a27 100644
--- a/deps/npm/man/man1/npm-repo.1
+++ b/deps/npm/man/man1/npm-repo.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-REPO" "1" "April 2014" "" ""
+.TH "NPM\-REPO" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-repo\fR \-\- Open package repository page in the browser
diff --git a/deps/npm/man/man1/npm-restart.1 b/deps/npm/man/man1/npm-restart.1
index 47a032ebeab..d7ebaf7c097 100644
--- a/deps/npm/man/man1/npm-restart.1
+++ b/deps/npm/man/man1/npm-restart.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-RESTART" "1" "April 2014" "" ""
+.TH "NPM\-RESTART" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-restart\fR \-\- Start a package
diff --git a/deps/npm/man/man1/npm-rm.1 b/deps/npm/man/man1/npm-rm.1
index b8d010964c0..a41689777fb 100644
--- a/deps/npm/man/man1/npm-rm.1
+++ b/deps/npm/man/man1/npm-rm.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-RM" "1" "April 2014" "" ""
+.TH "NPM\-RM" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-rm\fR \-\- Remove a package
diff --git a/deps/npm/man/man1/npm-root.1 b/deps/npm/man/man1/npm-root.1
index 1a78a2e718a..ec6a2391bb3 100644
--- a/deps/npm/man/man1/npm-root.1
+++ b/deps/npm/man/man1/npm-root.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-ROOT" "1" "April 2014" "" ""
+.TH "NPM\-ROOT" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-root\fR \-\- Display npm root
diff --git a/deps/npm/man/man1/npm-run-script.1 b/deps/npm/man/man1/npm-run-script.1
index f7ec7f01c4c..b81fa80b873 100644
--- a/deps/npm/man/man1/npm-run-script.1
+++ b/deps/npm/man/man1/npm-run-script.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs 0.3.8
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-RUN\-SCRIPT" "1" "April 2014" "" ""
+.TH "NPM\-RUN\-SCRIPT" "1" "May 2014" "" ""
.
.SH "NAME"
\fBnpm-run-script\fR \-\- Run arbitrary package scripts
@@ -9,12 +9,14 @@
.SH "SYNOPSIS"
.
.nf
-npm run\-script