summaryrefslogtreecommitdiff
path: root/deps
diff options
context:
space:
mode:
authorisaacs <i@izs.me>2012-04-06 14:42:19 -0700
committerisaacs <i@izs.me>2012-04-06 14:42:19 -0700
commit37ac5e52bfaa79be477b4ac123ed05980defe599 (patch)
treeaa8a95c1fb225968f8ad5a55c14d6240d8a7609d /deps
parent0b57fee3f8598e4d16af5ce89714e460dd042700 (diff)
downloadnode-37ac5e52bfaa79be477b4ac123ed05980defe599.tar.gz
Update npm to 1.1.16
Diffstat (limited to 'deps')
-rw-r--r--deps/npm/AUTHORS2
-rw-r--r--deps/npm/doc/cli/config.md7
-rw-r--r--deps/npm/doc/cli/json.md2
-rw-r--r--deps/npm/html/api/bin.html2
-rw-r--r--deps/npm/html/api/bugs.html2
-rw-r--r--deps/npm/html/api/commands.html2
-rw-r--r--deps/npm/html/api/config.html2
-rw-r--r--deps/npm/html/api/deprecate.html2
-rw-r--r--deps/npm/html/api/docs.html2
-rw-r--r--deps/npm/html/api/edit.html2
-rw-r--r--deps/npm/html/api/explore.html2
-rw-r--r--deps/npm/html/api/help-search.html2
-rw-r--r--deps/npm/html/api/init.html2
-rw-r--r--deps/npm/html/api/install.html2
-rw-r--r--deps/npm/html/api/link.html2
-rw-r--r--deps/npm/html/api/load.html2
-rw-r--r--deps/npm/html/api/ls.html2
-rw-r--r--deps/npm/html/api/npm.html4
-rw-r--r--deps/npm/html/api/outdated.html2
-rw-r--r--deps/npm/html/api/owner.html2
-rw-r--r--deps/npm/html/api/pack.html2
-rw-r--r--deps/npm/html/api/prefix.html2
-rw-r--r--deps/npm/html/api/prune.html2
-rw-r--r--deps/npm/html/api/publish.html2
-rw-r--r--deps/npm/html/api/rebuild.html2
-rw-r--r--deps/npm/html/api/restart.html2
-rw-r--r--deps/npm/html/api/root.html2
-rw-r--r--deps/npm/html/api/run-script.html2
-rw-r--r--deps/npm/html/api/search.html2
-rw-r--r--deps/npm/html/api/shrinkwrap.html2
-rw-r--r--deps/npm/html/api/start.html2
-rw-r--r--deps/npm/html/api/stop.html2
-rw-r--r--deps/npm/html/api/submodule.html2
-rw-r--r--deps/npm/html/api/tag.html2
-rw-r--r--deps/npm/html/api/test.html2
-rw-r--r--deps/npm/html/api/uninstall.html2
-rw-r--r--deps/npm/html/api/unpublish.html2
-rw-r--r--deps/npm/html/api/update.html2
-rw-r--r--deps/npm/html/api/version.html2
-rw-r--r--deps/npm/html/api/view.html2
-rw-r--r--deps/npm/html/api/whoami.html2
-rw-r--r--deps/npm/html/doc/README.html2
-rw-r--r--deps/npm/html/doc/adduser.html2
-rw-r--r--deps/npm/html/doc/bin.html2
-rw-r--r--deps/npm/html/doc/bugs.html2
-rw-r--r--deps/npm/html/doc/build.html2
-rw-r--r--deps/npm/html/doc/bundle.html2
-rw-r--r--deps/npm/html/doc/cache.html2
-rw-r--r--deps/npm/html/doc/changelog.html2
-rw-r--r--deps/npm/html/doc/coding-style.html2
-rw-r--r--deps/npm/html/doc/completion.html2
-rw-r--r--deps/npm/html/doc/config.html8
-rw-r--r--deps/npm/html/doc/deprecate.html2
-rw-r--r--deps/npm/html/doc/developers.html2
-rw-r--r--deps/npm/html/doc/disputes.html2
-rw-r--r--deps/npm/html/doc/docs.html2
-rw-r--r--deps/npm/html/doc/edit.html2
-rw-r--r--deps/npm/html/doc/explore.html2
-rw-r--r--deps/npm/html/doc/faq.html2
-rw-r--r--deps/npm/html/doc/folders.html2
-rw-r--r--deps/npm/html/doc/help-search.html2
-rw-r--r--deps/npm/html/doc/help.html2
-rw-r--r--deps/npm/html/doc/index.html2
-rw-r--r--deps/npm/html/doc/init.html2
-rw-r--r--deps/npm/html/doc/install.html2
-rw-r--r--deps/npm/html/doc/json.html4
-rw-r--r--deps/npm/html/doc/link.html2
-rw-r--r--deps/npm/html/doc/list.html2
-rw-r--r--deps/npm/html/doc/npm.html4
-rw-r--r--deps/npm/html/doc/outdated.html2
-rw-r--r--deps/npm/html/doc/owner.html2
-rw-r--r--deps/npm/html/doc/pack.html2
-rw-r--r--deps/npm/html/doc/prefix.html2
-rw-r--r--deps/npm/html/doc/prune.html2
-rw-r--r--deps/npm/html/doc/publish.html2
-rw-r--r--deps/npm/html/doc/rebuild.html2
-rw-r--r--deps/npm/html/doc/registry.html2
-rw-r--r--deps/npm/html/doc/removing-npm.html2
-rw-r--r--deps/npm/html/doc/restart.html2
-rw-r--r--deps/npm/html/doc/root.html2
-rw-r--r--deps/npm/html/doc/run-script.html2
-rw-r--r--deps/npm/html/doc/scripts.html2
-rw-r--r--deps/npm/html/doc/search.html2
-rw-r--r--deps/npm/html/doc/semver.html2
-rw-r--r--deps/npm/html/doc/shrinkwrap.html2
-rw-r--r--deps/npm/html/doc/star.html2
-rw-r--r--deps/npm/html/doc/start.html2
-rw-r--r--deps/npm/html/doc/stop.html2
-rw-r--r--deps/npm/html/doc/submodule.html2
-rw-r--r--deps/npm/html/doc/tag.html2
-rw-r--r--deps/npm/html/doc/test.html2
-rw-r--r--deps/npm/html/doc/uninstall.html2
-rw-r--r--deps/npm/html/doc/unpublish.html2
-rw-r--r--deps/npm/html/doc/update.html2
-rw-r--r--deps/npm/html/doc/version.html2
-rw-r--r--deps/npm/html/doc/view.html2
-rw-r--r--deps/npm/html/doc/whoami.html2
-rw-r--r--deps/npm/lib/bugs.js2
-rw-r--r--deps/npm/lib/cache.js90
-rw-r--r--deps/npm/lib/docs.js2
-rw-r--r--deps/npm/lib/init.js5
-rw-r--r--deps/npm/lib/install.js62
-rw-r--r--deps/npm/lib/ls.js196
-rw-r--r--deps/npm/lib/npm.js32
-rw-r--r--deps/npm/lib/utils/cmd-shim.js2
-rw-r--r--deps/npm/lib/utils/completion/file-completion.js2
-rw-r--r--deps/npm/lib/utils/config-defs.js3
-rw-r--r--deps/npm/lib/utils/excludes.js159
-rw-r--r--deps/npm/lib/utils/fetch.js6
-rw-r--r--deps/npm/lib/utils/link.js2
-rw-r--r--deps/npm/lib/utils/mkdir-p.js191
-rw-r--r--deps/npm/lib/utils/npm-registry-client/get.js7
-rw-r--r--deps/npm/lib/utils/npm-registry-client/request.js2
-rw-r--r--deps/npm/lib/utils/read-json.js18
-rw-r--r--deps/npm/lib/utils/tar.js476
-rw-r--r--deps/npm/lib/utils/uid-number.js55
-rw-r--r--deps/npm/man/man1/README.12
-rw-r--r--deps/npm/man/man1/adduser.12
-rw-r--r--deps/npm/man/man1/bin.12
-rw-r--r--deps/npm/man/man1/bugs.12
-rw-r--r--deps/npm/man/man1/build.12
-rw-r--r--deps/npm/man/man1/bundle.12
-rw-r--r--deps/npm/man/man1/cache.12
-rw-r--r--deps/npm/man/man1/changelog.12
-rw-r--r--deps/npm/man/man1/coding-style.12
-rw-r--r--deps/npm/man/man1/completion.12
-rw-r--r--deps/npm/man/man1/config.115
-rw-r--r--deps/npm/man/man1/deprecate.12
-rw-r--r--deps/npm/man/man1/developers.12
-rw-r--r--deps/npm/man/man1/disputes.12
-rw-r--r--deps/npm/man/man1/docs.12
-rw-r--r--deps/npm/man/man1/edit.12
-rw-r--r--deps/npm/man/man1/explore.12
-rw-r--r--deps/npm/man/man1/faq.12
-rw-r--r--deps/npm/man/man1/folders.12
-rw-r--r--deps/npm/man/man1/help-search.12
-rw-r--r--deps/npm/man/man1/help.12
-rw-r--r--deps/npm/man/man1/index.12
-rw-r--r--deps/npm/man/man1/init.12
-rw-r--r--deps/npm/man/man1/install.12
-rw-r--r--deps/npm/man/man1/json.14
-rw-r--r--deps/npm/man/man1/link.12
-rw-r--r--deps/npm/man/man1/list.12
-rw-r--r--deps/npm/man/man1/npm.14
-rw-r--r--deps/npm/man/man1/outdated.12
-rw-r--r--deps/npm/man/man1/owner.12
-rw-r--r--deps/npm/man/man1/pack.12
-rw-r--r--deps/npm/man/man1/prefix.12
-rw-r--r--deps/npm/man/man1/prune.12
-rw-r--r--deps/npm/man/man1/publish.12
-rw-r--r--deps/npm/man/man1/rebuild.12
-rw-r--r--deps/npm/man/man1/registry.12
-rw-r--r--deps/npm/man/man1/removing-npm.12
-rw-r--r--deps/npm/man/man1/restart.12
-rw-r--r--deps/npm/man/man1/root.12
-rw-r--r--deps/npm/man/man1/run-script.12
-rw-r--r--deps/npm/man/man1/scripts.12
-rw-r--r--deps/npm/man/man1/search.12
-rw-r--r--deps/npm/man/man1/semver.12
-rw-r--r--deps/npm/man/man1/shrinkwrap.12
-rw-r--r--deps/npm/man/man1/star.12
-rw-r--r--deps/npm/man/man1/start.12
-rw-r--r--deps/npm/man/man1/stop.12
-rw-r--r--deps/npm/man/man1/submodule.12
-rw-r--r--deps/npm/man/man1/tag.12
-rw-r--r--deps/npm/man/man1/test.12
-rw-r--r--deps/npm/man/man1/uninstall.12
-rw-r--r--deps/npm/man/man1/unpublish.12
-rw-r--r--deps/npm/man/man1/update.12
-rw-r--r--deps/npm/man/man1/version.12
-rw-r--r--deps/npm/man/man1/view.12
-rw-r--r--deps/npm/man/man1/whoami.12
-rw-r--r--deps/npm/man/man3/bin.32
-rw-r--r--deps/npm/man/man3/bugs.32
-rw-r--r--deps/npm/man/man3/commands.32
-rw-r--r--deps/npm/man/man3/config.32
-rw-r--r--deps/npm/man/man3/deprecate.32
-rw-r--r--deps/npm/man/man3/docs.32
-rw-r--r--deps/npm/man/man3/edit.32
-rw-r--r--deps/npm/man/man3/explore.32
-rw-r--r--deps/npm/man/man3/help-search.32
-rw-r--r--deps/npm/man/man3/init.32
-rw-r--r--deps/npm/man/man3/install.32
-rw-r--r--deps/npm/man/man3/link.32
-rw-r--r--deps/npm/man/man3/load.32
-rw-r--r--deps/npm/man/man3/ls.32
-rw-r--r--deps/npm/man/man3/npm.34
-rw-r--r--deps/npm/man/man3/outdated.32
-rw-r--r--deps/npm/man/man3/owner.32
-rw-r--r--deps/npm/man/man3/pack.32
-rw-r--r--deps/npm/man/man3/prefix.32
-rw-r--r--deps/npm/man/man3/prune.32
-rw-r--r--deps/npm/man/man3/publish.32
-rw-r--r--deps/npm/man/man3/rebuild.32
-rw-r--r--deps/npm/man/man3/restart.32
-rw-r--r--deps/npm/man/man3/root.32
-rw-r--r--deps/npm/man/man3/run-script.32
-rw-r--r--deps/npm/man/man3/search.32
-rw-r--r--deps/npm/man/man3/shrinkwrap.32
-rw-r--r--deps/npm/man/man3/start.32
-rw-r--r--deps/npm/man/man3/stop.32
-rw-r--r--deps/npm/man/man3/submodule.32
-rw-r--r--deps/npm/man/man3/tag.32
-rw-r--r--deps/npm/man/man3/test.32
-rw-r--r--deps/npm/man/man3/uninstall.32
-rw-r--r--deps/npm/man/man3/unpublish.32
-rw-r--r--deps/npm/man/man3/update.32
-rw-r--r--deps/npm/man/man3/version.32
-rw-r--r--deps/npm/man/man3/view.32
-rw-r--r--deps/npm/man/man3/whoami.32
-rw-r--r--deps/npm/node_modules/archy/README.markdown92
-rw-r--r--deps/npm/node_modules/archy/index.js35
-rw-r--r--deps/npm/node_modules/archy/package.json52
-rw-r--r--deps/npm/node_modules/chownr/README.md3
-rw-r--r--deps/npm/node_modules/chownr/chownr.js41
-rw-r--r--deps/npm/node_modules/chownr/package.json38
-rw-r--r--deps/npm/node_modules/fstream-npm/.npmignore2
-rw-r--r--deps/npm/node_modules/fstream-npm/README.md18
-rw-r--r--deps/npm/node_modules/fstream-npm/fstream-npm.js302
-rw-r--r--deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/.npmignore1
-rw-r--r--deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/README.md22
-rw-r--r--deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/ignore.js275
-rw-r--r--deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/package.json42
-rw-r--r--deps/npm/node_modules/fstream-npm/package.json34
-rw-r--r--deps/npm/node_modules/fstream/lib/abstract.js5
-rw-r--r--deps/npm/node_modules/fstream/lib/dir-reader.js111
-rw-r--r--deps/npm/node_modules/fstream/lib/dir-writer.js4
-rw-r--r--deps/npm/node_modules/fstream/lib/link-writer.js1
-rw-r--r--deps/npm/node_modules/fstream/lib/proxy-reader.js1
-rw-r--r--deps/npm/node_modules/fstream/lib/reader.js31
-rw-r--r--deps/npm/node_modules/fstream/lib/writer.js211
-rw-r--r--deps/npm/node_modules/fstream/package.json8
-rw-r--r--deps/npm/node_modules/minimatch/README.md14
-rw-r--r--deps/npm/node_modules/minimatch/minimatch.js46
-rw-r--r--deps/npm/node_modules/minimatch/package.json29
-rw-r--r--deps/npm/node_modules/mkdirp/index.js46
-rw-r--r--deps/npm/node_modules/mkdirp/package.json63
-rw-r--r--deps/npm/node_modules/node-gyp/README.md6
-rwxr-xr-xdeps/npm/node_modules/node-gyp/bin/node-gyp.js2
-rw-r--r--deps/npm/node_modules/node-gyp/lib/install.js16
-rw-r--r--deps/npm/node_modules/node-gyp/lib/remove.js2
-rw-r--r--deps/npm/node_modules/node-gyp/node_modules/ansi/package.json5
-rw-r--r--deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/.travis.yml4
-rw-r--r--deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/LICENSE23
-rw-r--r--deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/README.md218
-rw-r--r--deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/minimatch.js986
-rw-r--r--deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/package.json44
-rw-r--r--deps/npm/node_modules/node-gyp/node_modules/glob/package.json2
-rw-r--r--deps/npm/node_modules/node-gyp/package.json12
-rw-r--r--deps/npm/node_modules/read/LICENCE25
-rw-r--r--deps/npm/node_modules/read/lib/read.js16
-rw-r--r--deps/npm/node_modules/read/package.json18
-rw-r--r--deps/npm/node_modules/uid-number/README.md17
-rwxr-xr-xdeps/npm/node_modules/uid-number/get-uid-gid.js (renamed from deps/npm/bin/npm-get-uid-gid.js)8
-rw-r--r--deps/npm/node_modules/uid-number/package.json34
-rw-r--r--deps/npm/node_modules/uid-number/uid-number.js54
-rw-r--r--deps/npm/package.json18
-rwxr-xr-xdeps/npm/scripts/index-build.js1
258 files changed, 2010 insertions, 2758 deletions
diff --git a/deps/npm/AUTHORS b/deps/npm/AUTHORS
index 8f78dca48..340c4bdbc 100644
--- a/deps/npm/AUTHORS
+++ b/deps/npm/AUTHORS
@@ -61,3 +61,5 @@ Andrew Lunny <alunny@gmail.com>
Henrik Hodne <dvyjones@binaryhex.com>
Adam Blackburn <regality@gmail.com>
Kris Windham <kriswindham@gmail.com>
+Jens Grunert <jens.grunert@gmail.com>
+Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>
diff --git a/deps/npm/doc/cli/config.md b/deps/npm/doc/cli/config.md
index 049a51ea4..8cd03a769 100644
--- a/deps/npm/doc/cli/config.md
+++ b/deps/npm/doc/cli/config.md
@@ -358,6 +358,13 @@ user.
A proxy to use for outgoing https requests.
+### user-agent
+
+* Default: npm/{npm.version} node/{process.version}
+* Type: String
+
+Sets a User-Agent to the request header
+
### ignore
* Default: ""
diff --git a/deps/npm/doc/cli/json.md b/deps/npm/doc/cli/json.md
index 16b2ad931..ddd500e3b 100644
--- a/deps/npm/doc/cli/json.md
+++ b/deps/npm/doc/cli/json.md
@@ -485,7 +485,7 @@ to publish it.
This is a way to prevent accidental publication of private repositories.
If you would like to ensure that a given package is only ever published
-to a speciic registry (for example, an internal registry),
+to a specific registry (for example, an internal registry),
then use the `publishConfig` hash described below
to override the `registry` config param at publish-time.
diff --git a/deps/npm/html/api/bin.html b/deps/npm/html/api/bin.html
index b8937d7c7..c5d56c12e 100644
--- a/deps/npm/html/api/bin.html
+++ b/deps/npm/html/api/bin.html
@@ -19,7 +19,7 @@
<p>This function should not be used programmatically. Instead, just refer
to the <code>npm.bin</code> member.</p>
</div>
-<p id="footer">bin &mdash; npm@1.1.12</p>
+<p id="footer">bin &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/bugs.html b/deps/npm/html/api/bugs.html
index b45fe7c17..dda6be2af 100644
--- a/deps/npm/html/api/bugs.html
+++ b/deps/npm/html/api/bugs.html
@@ -25,7 +25,7 @@ optional version number.</p>
<p>This command will launch a browser, so this command may not be the most
friendly for programmatic use.</p>
</div>
-<p id="footer">bugs &mdash; npm@1.1.12</p>
+<p id="footer">bugs &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/commands.html b/deps/npm/html/api/commands.html
index c47f09a78..23232a460 100644
--- a/deps/npm/html/api/commands.html
+++ b/deps/npm/html/api/commands.html
@@ -28,7 +28,7 @@ usage, or <code>man 3 npm-&lt;command&gt;</code> for programmatic usage.</p>
<ul><li><a href="../doc/index.html">index(1)</a></li></ul>
</div>
-<p id="footer">commands &mdash; npm@1.1.12</p>
+<p id="footer">commands &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/config.html b/deps/npm/html/api/config.html
index 4b4682497..0e86fb0bb 100644
--- a/deps/npm/html/api/config.html
+++ b/deps/npm/html/api/config.html
@@ -33,7 +33,7 @@ functions instead.</p>
<ul><li><a href="../api/npm.html">npm(3)</a></li></ul>
</div>
-<p id="footer">config &mdash; npm@1.1.12</p>
+<p id="footer">config &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/deprecate.html b/deps/npm/html/api/deprecate.html
index 8e040d3f0..487eed75e 100644
--- a/deps/npm/html/api/deprecate.html
+++ b/deps/npm/html/api/deprecate.html
@@ -30,7 +30,7 @@ install the package.</p></li></ul>
<ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../api/unpublish.html">unpublish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
</div>
-<p id="footer">deprecate &mdash; npm@1.1.12</p>
+<p id="footer">deprecate &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/docs.html b/deps/npm/html/api/docs.html
index 8f6f4dcf6..52b1684e9 100644
--- a/deps/npm/html/api/docs.html
+++ b/deps/npm/html/api/docs.html
@@ -25,7 +25,7 @@ optional version number.</p>
<p>This command will launch a browser, so this command may not be the most
friendly for programmatic use.</p>
</div>
-<p id="footer">docs &mdash; npm@1.1.12</p>
+<p id="footer">docs &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/edit.html b/deps/npm/html/api/edit.html
index 63657d305..54fc61dba 100644
--- a/deps/npm/html/api/edit.html
+++ b/deps/npm/html/api/edit.html
@@ -30,7 +30,7 @@ to open. The package can optionally have a version number attached.</p>
<p>Since this command opens an editor in a new process, be careful about where
and how this is used.</p>
</div>
-<p id="footer">edit &mdash; npm@1.1.12</p>
+<p id="footer">edit &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/explore.html b/deps/npm/html/api/explore.html
index 5755e6f9f..8dcdf98a3 100644
--- a/deps/npm/html/api/explore.html
+++ b/deps/npm/html/api/explore.html
@@ -24,7 +24,7 @@ sure to use <code>npm rebuild &lt;pkg&gt;</code> if you make any changes.</p>
<p>The first element in the 'args' parameter must be a package name. After that is the optional command, which can be any number of strings. All of the strings will be combined into one, space-delimited command.</p>
</div>
-<p id="footer">explore &mdash; npm@1.1.12</p>
+<p id="footer">explore &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/help-search.html b/deps/npm/html/api/help-search.html
index 9726af629..93a8aa495 100644
--- a/deps/npm/html/api/help-search.html
+++ b/deps/npm/html/api/help-search.html
@@ -32,7 +32,7 @@ Name of the file that matched</li></ul>
<p>The silent parameter is not neccessary not used, but it may in the future.</p>
</div>
-<p id="footer">help-search &mdash; npm@1.1.12</p>
+<p id="footer">help-search &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/init.html b/deps/npm/html/api/init.html
index ab94cfa70..94610f0e7 100644
--- a/deps/npm/html/api/init.html
+++ b/deps/npm/html/api/init.html
@@ -35,7 +35,7 @@ then go ahead and use this programmatically.</p>
<p><a href="../doc/json.html">json(1)</a></p>
</div>
-<p id="footer">init &mdash; npm@1.1.12</p>
+<p id="footer">init &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/install.html b/deps/npm/html/api/install.html
index bf50d7053..89289779d 100644
--- a/deps/npm/html/api/install.html
+++ b/deps/npm/html/api/install.html
@@ -25,7 +25,7 @@ the name of a package to be installed.</p>
<p>Finally, 'callback' is a function that will be called when all packages have been
installed or when an error has been encountered.</p>
</div>
-<p id="footer">install &mdash; npm@1.1.12</p>
+<p id="footer">install &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/link.html b/deps/npm/html/api/link.html
index 27fb67aaa..3efed3a1c 100644
--- a/deps/npm/html/api/link.html
+++ b/deps/npm/html/api/link.html
@@ -39,7 +39,7 @@ npm.commands.link('redis', cb) # link-install the package</code></pre>
<p>Now, any changes to the redis package will be reflected in
the package in the current working directory</p>
</div>
-<p id="footer">link &mdash; npm@1.1.12</p>
+<p id="footer">link &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/load.html b/deps/npm/html/api/load.html
index 2e69c98e9..a50e1d232 100644
--- a/deps/npm/html/api/load.html
+++ b/deps/npm/html/api/load.html
@@ -32,7 +32,7 @@ config object.</p>
<p>For a list of all the available command-line configs, see <code>npm help config</code></p>
</div>
-<p id="footer">load &mdash; npm@1.1.12</p>
+<p id="footer">load &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/ls.html b/deps/npm/html/api/ls.html
index 3ab93effb..4d16c7c5f 100644
--- a/deps/npm/html/api/ls.html
+++ b/deps/npm/html/api/ls.html
@@ -59,7 +59,7 @@ project.</p>
This means that if a submodule a same dependency as a parent module, then the
dependency will only be output once.</p>
</div>
-<p id="footer">ls &mdash; npm@1.1.12</p>
+<p id="footer">ls &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/npm.html b/deps/npm/html/api/npm.html
index de961ca51..e735e41e4 100644
--- a/deps/npm/html/api/npm.html
+++ b/deps/npm/html/api/npm.html
@@ -24,7 +24,7 @@ npm.load(configObject, function (er, npm) {
<h2 id="VERSION">VERSION</h2>
-<p>1.1.12</p>
+<p>1.1.16</p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
@@ -91,7 +91,7 @@ method names. Use the <code>npm.deref</code> method to find the real name.</p>
<pre><code>var cmd = npm.deref("unp") // cmd === "unpublish"</code></pre>
</div>
-<p id="footer">npm &mdash; npm@1.1.12</p>
+<p id="footer">npm &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/outdated.html b/deps/npm/html/api/outdated.html
index bb58058bc..1d317a4bc 100644
--- a/deps/npm/html/api/outdated.html
+++ b/deps/npm/html/api/outdated.html
@@ -19,7 +19,7 @@ currently outdated.</p>
<p>If the 'packages' parameter is left out, npm will check all packages.</p>
</div>
-<p id="footer">outdated &mdash; npm@1.1.12</p>
+<p id="footer">outdated &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/owner.html b/deps/npm/html/api/owner.html
index 0ccb7c701..4704db628 100644
--- a/deps/npm/html/api/owner.html
+++ b/deps/npm/html/api/owner.html
@@ -34,7 +34,7 @@ that is not implemented at this time.</p>
<ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
</div>
-<p id="footer">owner &mdash; npm@1.1.12</p>
+<p id="footer">owner &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/pack.html b/deps/npm/html/api/pack.html
index e2befcbb2..933e0fd94 100644
--- a/deps/npm/html/api/pack.html
+++ b/deps/npm/html/api/pack.html
@@ -25,7 +25,7 @@ overwritten the second time.</p>
<p>If no arguments are supplied, then npm packs the current package folder.</p>
</div>
-<p id="footer">pack &mdash; npm@1.1.12</p>
+<p id="footer">pack &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/prefix.html b/deps/npm/html/api/prefix.html
index b15691a8b..3c2697dc4 100644
--- a/deps/npm/html/api/prefix.html
+++ b/deps/npm/html/api/prefix.html
@@ -21,7 +21,7 @@
<p>This function is not useful programmatically</p>
</div>
-<p id="footer">prefix &mdash; npm@1.1.12</p>
+<p id="footer">prefix &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/prune.html b/deps/npm/html/api/prune.html
index cd327084f..c178d5216 100644
--- a/deps/npm/html/api/prune.html
+++ b/deps/npm/html/api/prune.html
@@ -23,7 +23,7 @@
<p>Extraneous packages are packages that are not listed on the parent
package's dependencies list.</p>
</div>
-<p id="footer">prune &mdash; npm@1.1.12</p>
+<p id="footer">prune &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/publish.html b/deps/npm/html/api/publish.html
index 5949910e9..cacb9e42f 100644
--- a/deps/npm/html/api/publish.html
+++ b/deps/npm/html/api/publish.html
@@ -32,7 +32,7 @@ the registry. Overwrites when the "force" environment variable is set.</p>
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../api/owner.html">owner(3)</a></li></ul>
</div>
-<p id="footer">publish &mdash; npm@1.1.12</p>
+<p id="footer">publish &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/rebuild.html b/deps/npm/html/api/rebuild.html
index eddee5d10..26182e325 100644
--- a/deps/npm/html/api/rebuild.html
+++ b/deps/npm/html/api/rebuild.html
@@ -22,7 +22,7 @@ the new binary. If no 'packages' parameter is specify, every package will be reb
<p>See <code>npm help build</code></p>
</div>
-<p id="footer">rebuild &mdash; npm@1.1.12</p>
+<p id="footer">rebuild &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/restart.html b/deps/npm/html/api/restart.html
index 0fed5e895..7a90c9006 100644
--- a/deps/npm/html/api/restart.html
+++ b/deps/npm/html/api/restart.html
@@ -27,7 +27,7 @@ in the <code>packages</code> parameter.</p>
<ul><li><a href="../api/start.html">start(3)</a></li><li><a href="../api/stop.html">stop(3)</a></li></ul>
</div>
-<p id="footer">restart &mdash; npm@1.1.12</p>
+<p id="footer">restart &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/root.html b/deps/npm/html/api/root.html
index 6cda77721..1b530312c 100644
--- a/deps/npm/html/api/root.html
+++ b/deps/npm/html/api/root.html
@@ -21,7 +21,7 @@
<p>This function is not useful programmatically.</p>
</div>
-<p id="footer">root &mdash; npm@1.1.12</p>
+<p id="footer">root &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/run-script.html b/deps/npm/html/api/run-script.html
index 54f2b8088..4d35498e8 100644
--- a/deps/npm/html/api/run-script.html
+++ b/deps/npm/html/api/run-script.html
@@ -29,7 +29,7 @@ assumed to be the command to run. All other elements are ignored.</p>
<ul><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../api/test.html">test(3)</a></li><li><a href="../api/start.html">start(3)</a></li><li><a href="../api/restart.html">restart(3)</a></li><li><a href="../api/stop.html">stop(3)</a></li></ul>
</div>
-<p id="footer">run-script &mdash; npm@1.1.12</p>
+<p id="footer">run-script &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/search.html b/deps/npm/html/api/search.html
index 9b66c9ede..a32fd94c5 100644
--- a/deps/npm/html/api/search.html
+++ b/deps/npm/html/api/search.html
@@ -32,7 +32,7 @@ excluded term (the "searchexclude" config). The search is case insensitive
and doesn't try to read your mind (it doesn't do any verb tense matching or the
like).</p>
</div>
-<p id="footer">search &mdash; npm@1.1.12</p>
+<p id="footer">search &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/shrinkwrap.html b/deps/npm/html/api/shrinkwrap.html
index 631f2ca3a..fb9d91fc4 100644
--- a/deps/npm/html/api/shrinkwrap.html
+++ b/deps/npm/html/api/shrinkwrap.html
@@ -26,7 +26,7 @@ but the shrinkwrap file will still be written.</p>
<p>Finally, 'callback' is a function that will be called when the shrinkwrap has
been saved.</p>
</div>
-<p id="footer">shrinkwrap &mdash; npm@1.1.12</p>
+<p id="footer">shrinkwrap &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/start.html b/deps/npm/html/api/start.html
index 6d3bc8b2a..e82992201 100644
--- a/deps/npm/html/api/start.html
+++ b/deps/npm/html/api/start.html
@@ -19,7 +19,7 @@
<p>npm can run tests on multiple packages. Just specify multiple packages
in the <code>packages</code> parameter.</p>
</div>
-<p id="footer">start &mdash; npm@1.1.12</p>
+<p id="footer">start &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/stop.html b/deps/npm/html/api/stop.html
index 69d005a51..4515c5e3d 100644
--- a/deps/npm/html/api/stop.html
+++ b/deps/npm/html/api/stop.html
@@ -19,7 +19,7 @@
<p>npm can run stop on multiple packages. Just specify multiple packages
in the <code>packages</code> parameter.</p>
</div>
-<p id="footer">stop &mdash; npm@1.1.12</p>
+<p id="footer">stop &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/submodule.html b/deps/npm/html/api/submodule.html
index 4a4d01c98..7d5cdd22b 100644
--- a/deps/npm/html/api/submodule.html
+++ b/deps/npm/html/api/submodule.html
@@ -33,7 +33,7 @@ dependencies into the submodule folder.</p>
<ul><li>npm help json</li><li>git help submodule</li></ul>
</div>
-<p id="footer">submodule &mdash; npm@1.1.12</p>
+<p id="footer">submodule &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/tag.html b/deps/npm/html/api/tag.html
index 3dfb01295..11c039dc2 100644
--- a/deps/npm/html/api/tag.html
+++ b/deps/npm/html/api/tag.html
@@ -29,7 +29,7 @@ parameter is missing or falsey (empty), the default froom the config will be
used. For more information about how to set this config, check
<code>man 3 npm-config</code> for programmatic usage or <code>man npm-config</code> for cli usage.</p>
</div>
-<p id="footer">tag &mdash; npm@1.1.12</p>
+<p id="footer">tag &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/test.html b/deps/npm/html/api/test.html
index efce99599..acab6fb88 100644
--- a/deps/npm/html/api/test.html
+++ b/deps/npm/html/api/test.html
@@ -22,7 +22,7 @@ true.</p>
<p>npm can run tests on multiple packages. Just specify multiple packages
in the <code>packages</code> parameter.</p>
</div>
-<p id="footer">test &mdash; npm@1.1.12</p>
+<p id="footer">test &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/uninstall.html b/deps/npm/html/api/uninstall.html
index 6dc721ea1..daa244ecc 100644
--- a/deps/npm/html/api/uninstall.html
+++ b/deps/npm/html/api/uninstall.html
@@ -22,7 +22,7 @@ the name of a package to be uninstalled.</p>
<p>Finally, 'callback' is a function that will be called when all packages have been
uninstalled or when an error has been encountered.</p>
</div>
-<p id="footer">uninstall &mdash; npm@1.1.12</p>
+<p id="footer">uninstall &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/unpublish.html b/deps/npm/html/api/unpublish.html
index 2a2558fc8..cf2a3a625 100644
--- a/deps/npm/html/api/unpublish.html
+++ b/deps/npm/html/api/unpublish.html
@@ -26,7 +26,7 @@ is what is meant.</p>
<p>If no version is specified, or if all versions are removed then
the root package entry is removed from the registry entirely.</p>
</div>
-<p id="footer">unpublish &mdash; npm@1.1.12</p>
+<p id="footer">unpublish &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/update.html b/deps/npm/html/api/update.html
index d994b90a9..1b4a2125f 100644
--- a/deps/npm/html/api/update.html
+++ b/deps/npm/html/api/update.html
@@ -18,7 +18,7 @@
<p>The 'packages' argument is an array of packages to update. The 'callback' parameter will be called when done or when an error occurs.</p>
</div>
-<p id="footer">update &mdash; npm@1.1.12</p>
+<p id="footer">update &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/version.html b/deps/npm/html/api/version.html
index 1193aff45..39dd6d319 100644
--- a/deps/npm/html/api/version.html
+++ b/deps/npm/html/api/version.html
@@ -24,7 +24,7 @@ fail if the repo is not clean.</p>
parameter. The difference, however, is this function will fail if it does
not have exactly one element. The only element should be a version number.</p>
</div>
-<p id="footer">version &mdash; npm@1.1.12</p>
+<p id="footer">version &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/view.html b/deps/npm/html/api/view.html
index 1ea983ba8..a7558a97a 100644
--- a/deps/npm/html/api/view.html
+++ b/deps/npm/html/api/view.html
@@ -99,7 +99,7 @@ the field name.</p>
<p>corresponding to the list of fields selected.</p>
</div>
-<p id="footer">view &mdash; npm@1.1.12</p>
+<p id="footer">view &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/api/whoami.html b/deps/npm/html/api/whoami.html
index 4d6cf50e0..672ed6c51 100644
--- a/deps/npm/html/api/whoami.html
+++ b/deps/npm/html/api/whoami.html
@@ -21,7 +21,7 @@
<p>This function is not useful programmatically</p>
</div>
-<p id="footer">whoami &mdash; npm@1.1.12</p>
+<p id="footer">whoami &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/README.html b/deps/npm/html/doc/README.html
index 570c378d1..71350ac5a 100644
--- a/deps/npm/html/doc/README.html
+++ b/deps/npm/html/doc/README.html
@@ -267,7 +267,7 @@ will no doubt tell you to put the output in a gist or email.</p>
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/index.html">index(1)</a></li></ul>
</div>
-<p id="footer"><a href="../doc/README.html">README</a> &mdash; npm@1.1.12</p>
+<p id="footer"><a href="../doc/README.html">README</a> &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/adduser.html b/deps/npm/html/doc/adduser.html
index 1ff19bfe0..c67b9e2b0 100644
--- a/deps/npm/html/doc/adduser.html
+++ b/deps/npm/html/doc/adduser.html
@@ -39,7 +39,7 @@ authorize on a new machine.</p>
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li><li><a href="../doc/whoami.html">whoami(1)</a></li></ul>
</div>
-<p id="footer">adduser &mdash; npm@1.1.12</p>
+<p id="footer">adduser &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/bin.html b/deps/npm/html/doc/bin.html
index bad7f3488..ce60934e1 100644
--- a/deps/npm/html/doc/bin.html
+++ b/deps/npm/html/doc/bin.html
@@ -20,7 +20,7 @@
<ul><li><a href="../doc/prefix.html">prefix(1)</a></li><li><a href="../doc/root.html">root(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
</div>
-<p id="footer">bin &mdash; npm@1.1.12</p>
+<p id="footer">bin &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/bugs.html b/deps/npm/html/doc/bugs.html
index 4f0a0cb27..77d549f40 100644
--- a/deps/npm/html/doc/bugs.html
+++ b/deps/npm/html/doc/bugs.html
@@ -36,7 +36,7 @@ config param.</p>
<ul><li><a href="../doc/docs.html">docs(1)</a></li><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul>
</div>
-<p id="footer">bugs &mdash; npm@1.1.12</p>
+<p id="footer">bugs &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/build.html b/deps/npm/html/doc/build.html
index 099831663..381c92eaa 100644
--- a/deps/npm/html/doc/build.html
+++ b/deps/npm/html/doc/build.html
@@ -25,7 +25,7 @@ A folder containing a <code>package.json</code> file in its root.</li></ul>
<ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul>
</div>
-<p id="footer">build &mdash; npm@1.1.12</p>
+<p id="footer">build &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/bundle.html b/deps/npm/html/doc/bundle.html
index 8c1741a80..efd320201 100644
--- a/deps/npm/html/doc/bundle.html
+++ b/deps/npm/html/doc/bundle.html
@@ -20,7 +20,7 @@ install packages into the local space.</p>
<ul><li><a href="../doc/install.html">install(1)</a></li></ul>
</div>
-<p id="footer">bundle &mdash; npm@1.1.12</p>
+<p id="footer">bundle &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/cache.html b/deps/npm/html/doc/cache.html
index fc234a5f5..40571367a 100644
--- a/deps/npm/html/doc/cache.html
+++ b/deps/npm/html/doc/cache.html
@@ -66,7 +66,7 @@ they do not make an HTTP request to the registry.</p>
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/pack.html">pack(1)</a></li></ul>
</div>
-<p id="footer">cache &mdash; npm@1.1.12</p>
+<p id="footer">cache &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/changelog.html b/deps/npm/html/doc/changelog.html
index 10ca5e06e..1a5d0e8b4 100644
--- a/deps/npm/html/doc/changelog.html
+++ b/deps/npm/html/doc/changelog.html
@@ -65,7 +65,7 @@
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li></ul>
</div>
-<p id="footer">changelog &mdash; npm@1.1.12</p>
+<p id="footer">changelog &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/coding-style.html b/deps/npm/html/doc/coding-style.html
index 8da29d371..a33b02cce 100644
--- a/deps/npm/html/doc/coding-style.html
+++ b/deps/npm/html/doc/coding-style.html
@@ -191,7 +191,7 @@ set to anything."</p>
<ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul>
</div>
-<p id="footer">coding-style &mdash; npm@1.1.12</p>
+<p id="footer">coding-style &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/completion.html b/deps/npm/html/doc/completion.html
index cc05c02e1..bfa863e12 100644
--- a/deps/npm/html/doc/completion.html
+++ b/deps/npm/html/doc/completion.html
@@ -33,7 +33,7 @@ completions based on the arguments.</p>
<ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul>
</div>
-<p id="footer">completion &mdash; npm@1.1.12</p>
+<p id="footer">completion &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/config.html b/deps/npm/html/doc/config.html
index f7d4c0bb7..f5e4c5b32 100644
--- a/deps/npm/html/doc/config.html
+++ b/deps/npm/html/doc/config.html
@@ -320,6 +320,12 @@ user.</p>
<p>A proxy to use for outgoing https requests.</p>
+<h3 id="user-agent">user-agent</h3>
+
+<ul><li>Default: npm/{npm.version} node/{process.version}</li><li>Type: String</li></ul>
+
+<p>Sets a User-Agent to the request header</p>
+
<h3 id="ignore">ignore</h3>
<ul><li>Default: ""</li><li>Type: string</li></ul>
@@ -662,7 +668,7 @@ then answer "no" to any prompt.</p>
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul>
</div>
-<p id="footer">config &mdash; npm@1.1.12</p>
+<p id="footer">config &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/deprecate.html b/deps/npm/html/doc/deprecate.html
index 71e5a6156..bc4d557f8 100644
--- a/deps/npm/html/doc/deprecate.html
+++ b/deps/npm/html/doc/deprecate.html
@@ -29,7 +29,7 @@ something like this:</p>
<ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
</div>
-<p id="footer">deprecate &mdash; npm@1.1.12</p>
+<p id="footer">deprecate &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/developers.html b/deps/npm/html/doc/developers.html
index 9a77cf9fd..069d65b82 100644
--- a/deps/npm/html/doc/developers.html
+++ b/deps/npm/html/doc/developers.html
@@ -160,7 +160,7 @@ from a fresh checkout.</p>
<ul><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
</div>
-<p id="footer">developers &mdash; npm@1.1.12</p>
+<p id="footer">developers &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/disputes.html b/deps/npm/html/doc/disputes.html
index 00dcee63a..e0fdf1847 100644
--- a/deps/npm/html/doc/disputes.html
+++ b/deps/npm/html/doc/disputes.html
@@ -80,7 +80,7 @@ license statement)</li><li>Illegal content.</li></ol>
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li></ul>
</div>
-<p id="footer">disputes &mdash; npm@1.1.12</p>
+<p id="footer">disputes &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/docs.html b/deps/npm/html/doc/docs.html
index a8344d60a..f01e600aa 100644
--- a/deps/npm/html/doc/docs.html
+++ b/deps/npm/html/doc/docs.html
@@ -37,7 +37,7 @@ config param.</p>
<ul><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul>
</div>
-<p id="footer">docs &mdash; npm@1.1.12</p>
+<p id="footer">docs &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/edit.html b/deps/npm/html/doc/edit.html
index 243efb29c..b1220eb1d 100644
--- a/deps/npm/html/doc/edit.html
+++ b/deps/npm/html/doc/edit.html
@@ -37,7 +37,7 @@ or <code>"notepad"</code> on Windows.</li><li>Type: path</li></ul>
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/explore.html">explore(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
</div>
-<p id="footer">edit &mdash; npm@1.1.12</p>
+<p id="footer">edit &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/explore.html b/deps/npm/html/doc/explore.html
index dd9f9e330..1fa730ff9 100644
--- a/deps/npm/html/doc/explore.html
+++ b/deps/npm/html/doc/explore.html
@@ -40,7 +40,7 @@ Windows</li><li>Type: path</li></ul>
<ul><li><a href="../doc/submodule.html">submodule(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/edit.html">edit(1)</a></li><li><a href="../doc/rebuild.html">rebuild(1)</a></li><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul>
</div>
-<p id="footer">explore &mdash; npm@1.1.12</p>
+<p id="footer">explore &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/faq.html b/deps/npm/html/doc/faq.html
index 75eacd264..ace492838 100644
--- a/deps/npm/html/doc/faq.html
+++ b/deps/npm/html/doc/faq.html
@@ -241,7 +241,7 @@ We'll have someone kick it or something.</p>
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li></ul>
</div>
-<p id="footer">faq &mdash; npm@1.1.12</p>
+<p id="footer">faq &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/folders.html b/deps/npm/html/doc/folders.html
index f942afd35..731dbe45c 100644
--- a/deps/npm/html/doc/folders.html
+++ b/deps/npm/html/doc/folders.html
@@ -205,7 +205,7 @@ cannot be found elsewhere. See <code><a href="../doc/json.html">json(1)</a></co
<ul><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/pack.html">pack(1)</a></li><li><a href="../doc/cache.html">cache(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li></ul>
</div>
-<p id="footer">folders &mdash; npm@1.1.12</p>
+<p id="footer">folders &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/help-search.html b/deps/npm/html/doc/help-search.html
index 5b3a5984b..f203e4307 100644
--- a/deps/npm/html/doc/help-search.html
+++ b/deps/npm/html/doc/help-search.html
@@ -38,7 +38,7 @@ where the terms were found in the documentation.</p>
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/help.html">help(1)</a></li></ul>
</div>
-<p id="footer">help-search &mdash; npm@1.1.12</p>
+<p id="footer">help-search &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/help.html b/deps/npm/html/doc/help.html
index dba716922..455cafaab 100644
--- a/deps/npm/html/doc/help.html
+++ b/deps/npm/html/doc/help.html
@@ -36,7 +36,7 @@ matches are equivalent to specifying a topic name.</p>
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/README.html">README</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/help-search.html">help-search(1)</a></li><li><a href="../doc/index.html">index(1)</a></li></ul>
</div>
-<p id="footer">help &mdash; npm@1.1.12</p>
+<p id="footer">help &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/index.html b/deps/npm/html/doc/index.html
index 0befbcfa7..55672a532 100644
--- a/deps/npm/html/doc/index.html
+++ b/deps/npm/html/doc/index.html
@@ -384,7 +384,7 @@
<p> Display npm username</p>
</div>
-<p id="footer">index &mdash; npm@1.1.12</p>
+<p id="footer">index &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/init.html b/deps/npm/html/doc/init.html
index 2ac81776a..f3215e5b5 100644
--- a/deps/npm/html/doc/init.html
+++ b/deps/npm/html/doc/init.html
@@ -29,7 +29,7 @@ without a really good reason to do so.</p>
<ul><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/version.html">version(1)</a></li></ul>
</div>
-<p id="footer">init &mdash; npm@1.1.12</p>
+<p id="footer">init &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/install.html b/deps/npm/html/doc/install.html
index 426f5b10a..ffff9d36b 100644
--- a/deps/npm/html/doc/install.html
+++ b/deps/npm/html/doc/install.html
@@ -136,7 +136,7 @@ affects a real use-case, it will be investigated.</p>
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/update.html">update(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/rebuild.html">rebuild(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/tag.html">tag(1)</a></li><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/shrinkwrap.html">shrinkwrap(1)</a></li></ul>
</div>
-<p id="footer">install &mdash; npm@1.1.12</p>
+<p id="footer">install &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/json.html b/deps/npm/html/doc/json.html
index a8ef8c0ec..1695739a0 100644
--- a/deps/npm/html/doc/json.html
+++ b/deps/npm/html/doc/json.html
@@ -457,7 +457,7 @@ to publish it.</p>
<p>This is a way to prevent accidental publication of private repositories.
If you would like to ensure that a given package is only ever published
-to a speciic registry (for example, an internal registry),
+to a specific registry (for example, an internal registry),
then use the <code>publishConfig</code> hash described below
to override the <code>registry</code> config param at publish-time.</p>
@@ -478,7 +478,7 @@ overridden.</p>
<ul><li><a href="../doc/semver.html">semver(1)</a></li><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/version.html">version(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/rm.html">rm(1)</a></li></ul>
</div>
-<p id="footer">json &mdash; npm@1.1.12</p>
+<p id="footer">json &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/link.html b/deps/npm/html/doc/link.html
index 8ae0d1e9a..27221066a 100644
--- a/deps/npm/html/doc/link.html
+++ b/deps/npm/html/doc/link.html
@@ -58,7 +58,7 @@ installation target into your project's <code>node_modules</code> folder.</p>
<ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
</div>
-<p id="footer">link &mdash; npm@1.1.12</p>
+<p id="footer">link &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/list.html b/deps/npm/html/doc/list.html
index fdcaa6f83..a316573db 100644
--- a/deps/npm/html/doc/list.html
+++ b/deps/npm/html/doc/list.html
@@ -58,7 +58,7 @@ project.</p>
<ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/prune.html">prune(1)</a></li><li><a href="../doc/outdated.html">outdated(1)</a></li><li><a href="../doc/update.html">update(1)</a></li></ul>
</div>
-<p id="footer">list &mdash; npm@1.1.12</p>
+<p id="footer">list &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/npm.html b/deps/npm/html/doc/npm.html
index 5854a4790..44eb74d36 100644
--- a/deps/npm/html/doc/npm.html
+++ b/deps/npm/html/doc/npm.html
@@ -14,7 +14,7 @@
<h2 id="VERSION">VERSION</h2>
-<p>1.1.12</p>
+<p>1.1.16</p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
@@ -135,7 +135,7 @@ will no doubt tell you to put the output in a gist or email.</p>
<ul><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/README.html">README</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/index.html">index(1)</a></li><li><a href="../api/npm.html">npm(3)</a></li></ul>
</div>
-<p id="footer">npm &mdash; npm@1.1.12</p>
+<p id="footer">npm &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/outdated.html b/deps/npm/html/doc/outdated.html
index 0c9d4349d..980017b2c 100644
--- a/deps/npm/html/doc/outdated.html
+++ b/deps/npm/html/doc/outdated.html
@@ -21,7 +21,7 @@ packages are currently outdated.</p>
<ul><li><a href="../doc/update.html">update(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li></ul>
</div>
-<p id="footer">outdated &mdash; npm@1.1.12</p>
+<p id="footer">outdated &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/owner.html b/deps/npm/html/doc/owner.html
index 78773a18a..e9d2dca62 100644
--- a/deps/npm/html/doc/owner.html
+++ b/deps/npm/html/doc/owner.html
@@ -34,7 +34,7 @@ that is not implemented at this time.</p>
<ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/disputes.html">disputes(1)</a></li></ul>
</div>
-<p id="footer">owner &mdash; npm@1.1.12</p>
+<p id="footer">owner &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/pack.html b/deps/npm/html/doc/pack.html
index 829f3f171..177d63eda 100644
--- a/deps/npm/html/doc/pack.html
+++ b/deps/npm/html/doc/pack.html
@@ -29,7 +29,7 @@ overwritten the second time.</p>
<ul><li><a href="../doc/cache.html">cache(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
</div>
-<p id="footer">pack &mdash; npm@1.1.12</p>
+<p id="footer">pack &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/prefix.html b/deps/npm/html/doc/prefix.html
index cd5273d0b..3ca892057 100644
--- a/deps/npm/html/doc/prefix.html
+++ b/deps/npm/html/doc/prefix.html
@@ -20,7 +20,7 @@
<ul><li><a href="../doc/root.html">root(1)</a></li><li><a href="../doc/bin.html">bin(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
</div>
-<p id="footer">prefix &mdash; npm@1.1.12</p>
+<p id="footer">prefix &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/prune.html b/deps/npm/html/doc/prune.html
index 31a860b9f..852fab02e 100644
--- a/deps/npm/html/doc/prune.html
+++ b/deps/npm/html/doc/prune.html
@@ -25,7 +25,7 @@ package's dependencies list.</p>
<ul><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul>
</div>
-<p id="footer">prune &mdash; npm@1.1.12</p>
+<p id="footer">prune &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/publish.html b/deps/npm/html/doc/publish.html
index 0d64e535a..9be501527 100644
--- a/deps/npm/html/doc/publish.html
+++ b/deps/npm/html/doc/publish.html
@@ -29,7 +29,7 @@ the registry. Overwrites when the "--force" flag is set.</p>
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li><li><a href="../doc/deprecate.html">deprecate(1)</a></li><li><a href="../doc/tag.html">tag(1)</a></li></ul>
</div>
-<p id="footer">publish &mdash; npm@1.1.12</p>
+<p id="footer">publish &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/rebuild.html b/deps/npm/html/doc/rebuild.html
index 5ee54b555..cd60c3c4e 100644
--- a/deps/npm/html/doc/rebuild.html
+++ b/deps/npm/html/doc/rebuild.html
@@ -25,7 +25,7 @@ the new binary.</p>
<ul><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul>
</div>
-<p id="footer">rebuild &mdash; npm@1.1.12</p>
+<p id="footer">rebuild &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/registry.html b/deps/npm/html/doc/registry.html
index 2aa163569..b88470ede 100644
--- a/deps/npm/html/doc/registry.html
+++ b/deps/npm/html/doc/registry.html
@@ -97,7 +97,7 @@ ask for help on the <a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com
<ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/disputes.html">disputes(1)</a></li></ul>
</div>
-<p id="footer">registry &mdash; npm@1.1.12</p>
+<p id="footer">registry &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/removing-npm.html b/deps/npm/html/doc/removing-npm.html
index f32b402c2..99b4079b6 100644
--- a/deps/npm/html/doc/removing-npm.html
+++ b/deps/npm/html/doc/removing-npm.html
@@ -58,7 +58,7 @@ modules. To track those down, you can do the following:</p>
<ul><li><a href="../doc/README.html">README</a></li><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/prune.html">prune(1)</a></li></ul>
</div>
-<p id="footer">removing-npm &mdash; npm@1.1.12</p>
+<p id="footer">removing-npm &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/restart.html b/deps/npm/html/doc/restart.html
index d7864c0ef..d9e510fc5 100644
--- a/deps/npm/html/doc/restart.html
+++ b/deps/npm/html/doc/restart.html
@@ -24,7 +24,7 @@ the "start" script.</p>
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul>
</div>
-<p id="footer">restart &mdash; npm@1.1.12</p>
+<p id="footer">restart &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/root.html b/deps/npm/html/doc/root.html
index 93cfa5b02..3d568a94f 100644
--- a/deps/npm/html/doc/root.html
+++ b/deps/npm/html/doc/root.html
@@ -20,7 +20,7 @@
<ul><li><a href="../doc/prefix.html">prefix(1)</a></li><li><a href="../doc/bin.html">bin(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
</div>
-<p id="footer">root &mdash; npm@1.1.12</p>
+<p id="footer">root &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/run-script.html b/deps/npm/html/doc/run-script.html
index 7dfa85322..16d60bf75 100644
--- a/deps/npm/html/doc/run-script.html
+++ b/deps/npm/html/doc/run-script.html
@@ -23,7 +23,7 @@ called directly, as well.</p>
<ul><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul>
</div>
-<p id="footer">run-script &mdash; npm@1.1.12</p>
+<p id="footer">run-script &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/scripts.html b/deps/npm/html/doc/scripts.html
index c04dd9179..e95f7f3ec 100644
--- a/deps/npm/html/doc/scripts.html
+++ b/deps/npm/html/doc/scripts.html
@@ -177,7 +177,7 @@ will sudo the npm command in question.</li></ul>
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul>
</div>
-<p id="footer">scripts &mdash; npm@1.1.12</p>
+<p id="footer">scripts &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/search.html b/deps/npm/html/doc/search.html
index 589f5c906..6e5cde876 100644
--- a/deps/npm/html/doc/search.html
+++ b/deps/npm/html/doc/search.html
@@ -24,7 +24,7 @@ expression characters must be escaped or quoted in most shells.)</p>
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/view.html">view(1)</a></li></ul>
</div>
-<p id="footer">search &mdash; npm@1.1.12</p>
+<p id="footer">search &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/semver.html b/deps/npm/html/doc/semver.html
index 43aa640bf..79003cec4 100644
--- a/deps/npm/html/doc/semver.html
+++ b/deps/npm/html/doc/semver.html
@@ -104,7 +104,7 @@ that satisfies the range, or null if none of them do.</li></ul>
<ul><li><a href="../doc/json.html">json(1)</a></li></ul>
</div>
-<p id="footer">semver &mdash; npm@1.1.12</p>
+<p id="footer">semver &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/shrinkwrap.html b/deps/npm/html/doc/shrinkwrap.html
index bd1eee748..a146e2256 100644
--- a/deps/npm/html/doc/shrinkwrap.html
+++ b/deps/npm/html/doc/shrinkwrap.html
@@ -169,7 +169,7 @@ versions.</p>
<ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul>
</div>
-<p id="footer">shrinkwrap &mdash; npm@1.1.12</p>
+<p id="footer">shrinkwrap &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/star.html b/deps/npm/html/doc/star.html
index 4e8081bae..ce76b9639 100644
--- a/deps/npm/html/doc/star.html
+++ b/deps/npm/html/doc/star.html
@@ -26,7 +26,7 @@ a vaguely positive way to show that you care.</p>
<ul><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/whoami.html">whoami(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li></ul>
</div>
-<p id="footer">star &mdash; npm@1.1.12</p>
+<p id="footer">star &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/start.html b/deps/npm/html/doc/start.html
index 775f2515b..f35b6d628 100644
--- a/deps/npm/html/doc/start.html
+++ b/deps/npm/html/doc/start.html
@@ -20,7 +20,7 @@
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul>
</div>
-<p id="footer">start &mdash; npm@1.1.12</p>
+<p id="footer">start &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/stop.html b/deps/npm/html/doc/stop.html
index c4eec8984..d3780c301 100644
--- a/deps/npm/html/doc/stop.html
+++ b/deps/npm/html/doc/stop.html
@@ -20,7 +20,7 @@
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li></ul>
</div>
-<p id="footer">stop &mdash; npm@1.1.12</p>
+<p id="footer">stop &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/submodule.html b/deps/npm/html/doc/submodule.html
index 32cc4f6ca..bcd2b5dd8 100644
--- a/deps/npm/html/doc/submodule.html
+++ b/deps/npm/html/doc/submodule.html
@@ -33,7 +33,7 @@ dependencies into the submodule folder.</p>
<ul><li><a href="../doc/json.html">json(1)</a></li><li>git help submodule</li></ul>
</div>
-<p id="footer">submodule &mdash; npm@1.1.12</p>
+<p id="footer">submodule &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/tag.html b/deps/npm/html/doc/tag.html
index e8ce6576d..562858b16 100644
--- a/deps/npm/html/doc/tag.html
+++ b/deps/npm/html/doc/tag.html
@@ -21,7 +21,7 @@
<ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
</div>
-<p id="footer">tag &mdash; npm@1.1.12</p>
+<p id="footer">tag &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/test.html b/deps/npm/html/doc/test.html
index 2eb22df06..a1547facf 100644
--- a/deps/npm/html/doc/test.html
+++ b/deps/npm/html/doc/test.html
@@ -23,7 +23,7 @@ true.</p>
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul>
</div>
-<p id="footer">test &mdash; npm@1.1.12</p>
+<p id="footer">test &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/uninstall.html b/deps/npm/html/doc/uninstall.html
index 023e7f075..c95cca96d 100644
--- a/deps/npm/html/doc/uninstall.html
+++ b/deps/npm/html/doc/uninstall.html
@@ -22,7 +22,7 @@ on its behalf.</p>
<ul><li><a href="../doc/prune.html">prune(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
</div>
-<p id="footer">uninstall &mdash; npm@1.1.12</p>
+<p id="footer">uninstall &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/unpublish.html b/deps/npm/html/doc/unpublish.html
index b00e69481..aded4d6e5 100644
--- a/deps/npm/html/doc/unpublish.html
+++ b/deps/npm/html/doc/unpublish.html
@@ -34,7 +34,7 @@ the root package entry is removed from the registry entirely.</p>
<ul><li><a href="../doc/deprecate.html">deprecate(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li></ul>
</div>
-<p id="footer">unpublish &mdash; npm@1.1.12</p>
+<p id="footer">unpublish &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/update.html b/deps/npm/html/doc/update.html
index f97efed41..b512451bf 100644
--- a/deps/npm/html/doc/update.html
+++ b/deps/npm/html/doc/update.html
@@ -23,7 +23,7 @@
<ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/outdated.html">outdated(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul>
</div>
-<p id="footer">update &mdash; npm@1.1.12</p>
+<p id="footer">update &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/version.html b/deps/npm/html/doc/version.html
index cba58815a..846709a8f 100644
--- a/deps/npm/html/doc/version.html
+++ b/deps/npm/html/doc/version.html
@@ -31,7 +31,7 @@ will use it as a commit message when creating a version commit.</p>
<ul><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/semver.html">semver(1)</a></li></ul>
</div>
-<p id="footer">version &mdash; npm@1.1.12</p>
+<p id="footer">version &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/view.html b/deps/npm/html/doc/view.html
index af7dbb175..c88830a71 100644
--- a/deps/npm/html/doc/view.html
+++ b/deps/npm/html/doc/view.html
@@ -88,7 +88,7 @@ the field name.</p>
<ul><li><a href="../doc/search.html">search(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/docs.html">docs(1)</a></li></ul>
</div>
-<p id="footer">view &mdash; npm@1.1.12</p>
+<p id="footer">view &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/html/doc/whoami.html b/deps/npm/html/doc/whoami.html
index e0f33e85e..f63d142bc 100644
--- a/deps/npm/html/doc/whoami.html
+++ b/deps/npm/html/doc/whoami.html
@@ -20,7 +20,7 @@
<ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li></ul>
</div>
-<p id="footer">whoami &mdash; npm@1.1.12</p>
+<p id="footer">whoami &mdash; npm@1.1.16</p>
<script>
;(function () {
var wrapper = document.getElementById("wrapper")
diff --git a/deps/npm/lib/bugs.js b/deps/npm/lib/bugs.js
index a3a017cc0..7982746cf 100644
--- a/deps/npm/lib/bugs.js
+++ b/deps/npm/lib/bugs.js
@@ -28,7 +28,7 @@ function bugs (args, cb) {
}
if (repo) {
if (Array.isArray(repo)) repo = repo.shift()
- if (repo.url) repo = repo.url
+ if (repo.hasOwnProperty("url")) repo = repo.url
log.verbose(repo, "repository")
if (repo && repo.match(/^(https?:\/\/|git(:\/\/|@))github.com/)) {
return open(repo.replace(/^git(@|:\/\/)/, "http://")
diff --git a/deps/npm/lib/cache.js b/deps/npm/lib/cache.js
index e0a72ed18..b62e82dd1 100644
--- a/deps/npm/lib/cache.js
+++ b/deps/npm/lib/cache.js
@@ -3,11 +3,10 @@
/*
adding a folder:
1. tar into tmp/random/package.tgz
-2. untar into tmp/random/contents/{blah}
-3. rename {blah} to "package"
-4. tar tmp/random/contents/package to cache/n/v/package.tgz
-5. untar cache/n/v/package.tgz into cache/n/v/package
-6. rm tmp/random
+2. untar into tmp/random/contents/package, stripping one dir piece
+3. tar tmp/random/contents/package to cache/n/v/package.tgz
+4. untar cache/n/v/package.tgz into cache/n/v/package
+5. rm tmp/random
Adding a url:
1. fetch to tmp/random/package.tgz
@@ -32,7 +31,7 @@ exports.read = read
exports.clean = clean
exports.unpack = unpack
-var mkdir = require("./utils/mkdir-p.js")
+var mkdir = require("mkdirp")
, exec = require("./utils/exec.js")
, fetch = require("./utils/fetch.js")
, npm = require("./npm.js")
@@ -50,6 +49,7 @@ var mkdir = require("./utils/mkdir-p.js")
, tar = require("./utils/tar.js")
, fileCompletion = require("./utils/completion/file-completion.js")
, url = require("url")
+ , chownr = require("chownr")
cache.usage = "npm cache add <tarball file>"
+ "\nnpm cache add <folder>"
@@ -634,7 +634,7 @@ function getCacheStat (cb) {
}
function makeCacheDir (cb) {
- if (!process.getuid) return mkdir(npm.cache, npm.modes.exec, cb)
+ if (!process.getuid) return mkdir(npm.cache, cb)
var uid = +process.getuid()
, gid = +process.getgid()
@@ -645,18 +645,28 @@ function makeCacheDir (cb) {
}
if (uid !== 0 || !process.env.HOME) {
cacheStat = {uid: uid, gid: gid}
- return mkdir(npm.cache, npm.modes.exec, uid, gid, function (er) {
- return cb(er, cacheStat)
- })
+ return mkdir(npm.cache, afterMkdir)
}
+
fs.stat(process.env.HOME, function (er, st) {
if (er) return log.er(cb, "homeless?")(er)
cacheStat = st
log.silly([st.uid, st.gid], "uid, gid for cache dir")
- return mkdir(npm.cache, npm.modes.exec, st.uid, st.gid, function (er) {
+ return mkdir(npm.cache, afterMkdir)
+ })
+
+ function afterMkdir (er, made) {
+ if (er || !cacheStat || isNaN(cacheStat.uid) || isNaN(cacheStat.gid)) {
+ return cb(er, cacheStat)
+ }
+
+ if (!made) return cb(er, cacheStat)
+
+ // ensure that the ownership is correct.
+ chownr(made, cacheStat.uid, cacheStat.gid, function (er) {
return cb(er, cacheStat)
})
- })
+ }
}
@@ -734,9 +744,20 @@ function addLocalDirectory (p, name, cb) {
, tgz = placeDirect ? placed : tmptgz
, doFancyCrap = p.indexOf(npm.tmp) !== 0
&& p.indexOf(npm.cache) !== 0
- tar.pack(tgz, p, data, doFancyCrap, function (er) {
- if (er) return log.er(cb,"couldn't pack "+p+ " to "+tgz)(er)
- addLocalTarball(tgz, name, cb)
+ getCacheStat(function (er, cs) {
+ mkdir(path.dirname(tgz), function (er, made) {
+ if (er) return cb(er)
+ tar.pack(tgz, p, data, doFancyCrap, function (er) {
+ if (er) return log.er(cb,"couldn't pack "+p+ " to "+tgz)(er)
+
+ if (er || !cs || isNaN(cs.uid) || isNaN(cs.gid)) return cb()
+
+ chownr(made || tgz, cs.uid, cs.gid, function (er) {
+ if (er) return cb(er)
+ addLocalTarball(tgz, name, cb)
+ })
+ })
+ })
})
})
}
@@ -745,38 +766,15 @@ function addTmpTarball (tgz, name, cb) {
if (!cb) cb = name, name = ""
getCacheStat(function (er, cs) {
if (er) return cb(er)
- return addTmpTarball_(tgz, name, cs.uid, cs.gid, cb)
- })
-}
-
-function addTmpTarball_ (tgz, name, uid, gid, cb) {
- var contents = path.dirname(tgz)
- tar.unpack( tgz, path.resolve(contents, "package")
- , null, null
- , uid, gid
- , function (er) {
- if (er) {
- return cb(er)
- }
- fs.readdir(contents, function (er, folder) {
- if (er) return log.er(cb, "couldn't readdir "+contents)(er)
- log.verbose(folder, "tarball contents")
- if (folder.length > 1) {
- folder = folder.filter(function (f) {
- return !f.match(/^\.|^tmp\.tgz$/)
- })
- }
- if (folder.length > 1) {
- log.warn(folder.slice(1).join("\n")
- ,"extra junk in folder, ignoring")
+ 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)
}
- if (!folder.length) return cb(new Error("Empty package tarball"))
- folder = path.join(contents, folder[0])
- var newName = path.join(contents, "package")
- fs.rename(folder, newName, function (er) {
- if (er) return log.er(cb, "couldn't rename "+folder+" to package")(er)
- addLocalDirectory(newName, name, cb)
- })
+ addLocalDirectory(path.resolve(contents, "package"), name, cb)
})
})
}
diff --git a/deps/npm/lib/docs.js b/deps/npm/lib/docs.js
index de9f71c65..8af4c1bb6 100644
--- a/deps/npm/lib/docs.js
+++ b/deps/npm/lib/docs.js
@@ -25,7 +25,7 @@ function docs (args, cb) {
if (homepage) return open(homepage, cb)
if (repo) {
if (Array.isArray(repo)) repo = repo.shift()
- if (repo.url) repo = repo.url
+ if (repo.hasOwnProperty("url")) repo = repo.url
log.verbose(repo, "repository")
if (repo) {
return open(repo.replace(/^git(@|:\/\/)/, 'http://')
diff --git a/deps/npm/lib/init.js b/deps/npm/lib/init.js
index 1c64d9760..7cd7da8e2 100644
--- a/deps/npm/lib/init.js
+++ b/deps/npm/lib/init.js
@@ -99,7 +99,10 @@ function init_ (data, folder, cb) {
, function (er, r) {
if (er) return cb(er)
if (r !== "none") {
- data.repository = (data.repository || {}).url = r
+ data.repository = (data.repository || {})
+ data.repository.url = r
+ } else {
+ delete data.repository
}
cb()
}
diff --git a/deps/npm/lib/install.js b/deps/npm/lib/install.js
index 3288d436b..4da66d338 100644
--- a/deps/npm/lib/install.js
+++ b/deps/npm/lib/install.js
@@ -1,4 +1,3 @@
-
// npm install <pkg> <pkg> <pkg>
//
// See doc/install.md for more description
@@ -68,8 +67,9 @@ var npm = require("./npm.js")
, relativize = require("./utils/relativize.js")
, output
, url = require("url")
- , mkdir = require("./utils/mkdir-p.js")
+ , mkdir = require("mkdirp")
, lifecycle = require("./utils/lifecycle.js")
+ , archy = require("archy")
function install (args, cb_) {
@@ -107,7 +107,7 @@ function install (args, cb_) {
})
}
- mkdir(where, function (er) {
+ mkdir(where, function (er, made) {
if (er) return cb(er)
// install dependencies locally by default,
// or install current folder globally
@@ -278,26 +278,46 @@ function save (where, installed, tree, pretty, cb) {
// that the submodules are not immediately require()able.
// TODO: Show the complete tree, ls-style, but only if --long is provided
function prettify (tree, installed) {
- // XXX This should match the data structure provided by npm ls --json
- if (npm.config.get("json")) return JSON.stringify(tree, null, 2)
- if (npm.config.get("parseable")) return parseable(installed)
- return Object.keys(tree).map(function (p) {
- p = tree[p]
- var c = ""
- if (p.children && p.children.length) {
- pref = "\n"
- var l = p.children.pop()
- c = p.children.map(function (c) {
- var gc = c.children && c.children.length
- ? " (" + c.children.map(function (gc) {
- return gc.what
- }).join(" ") + ")"
- : ""
- return "\n├── " + c.what + gc
- }).join("") + "\n└── " + l.what
+ if (npm.config.get("json")) {
+ function red (set, kv) {
+ set[kv[0]] = kv[1]
+ return set
}
- return [p.what, p.where, c].join(" ")
+ tree = Object.keys(tree).map(function (p) {
+ if (!tree[p]) return null
+ var what = tree[p].what.split("@")
+ , name = what.shift()
+ , version = what.join("@")
+ , o = { name: name, version: version, from: tree[p].from }
+ o.dependencies = tree[p].children.map(function P (dep) {
+ var what = dep.what.split("@")
+ , name = what.shift()
+ , version = what.join("@")
+ , o = { version: version, from: dep.from }
+ o.dependencies = dep.children.map(P).reduce(red, {})
+ return [name, o]
+ }).reduce(red, {})
+ return o
+ })
+
+ return JSON.stringify(tree, null, 2)
+ }
+ if (npm.config.get("parseable")) return parseable(installed)
+
+ return Object.keys(tree).map(function (p) {
+ return archy({ label: tree[p].what + " " + p
+ , nodes: (tree[p].children || []).map(function P (c) {
+ if (npm.config.get("long")) {
+ return { label: c.what, nodes: c.children.map(P) }
+ }
+ var g = c.children.map(function (g) {
+ return g.what
+ }).join(", ")
+ if (g) g = " (" + g + ")"
+ return c.what + g
+ })
+ })
}).join("\n")
}
diff --git a/deps/npm/lib/ls.js b/deps/npm/lib/ls.js
index 274d0f22b..276530c35 100644
--- a/deps/npm/lib/ls.js
+++ b/deps/npm/lib/ls.js
@@ -13,6 +13,7 @@ var npm = require("./npm.js")
, log = require("./utils/log.js")
, relativize = require("./utils/relativize.js")
, path = require("path")
+ , archy = require("archy")
ls.usage = "npm ls"
@@ -43,13 +44,22 @@ function ls (args, silent, cb) {
}
return o
}, 2)
- } else {
- out = makePretty(bfsify(data), long, dir).join("\n")
+ } else if (npm.config.get("parseable")) {
+ out = makeParseable(bfsify(data), long, dir)
+ } else if (data) {
+ out = makeArchy(bfsify(data), long, dir)
}
output.write(out, function (er) { cb(er, data, lite) })
})
}
+function alphasort (a, b) {
+ a = a.toLowerCase()
+ b = b.toLowerCase()
+ return a > b ? 1
+ : a < b ? -1 : 0
+}
+
function getLite (data, noname) {
var lite = {}
, maxDepth = npm.config.get("depth")
@@ -147,103 +157,115 @@ function bfsify (root, current, queue, seen) {
}
-function makePretty (data, long, dir, prefix, list) {
- var top = !list
- list = list || []
- prefix = prefix || ""
- list.push(format(data, long, prefix, dir))
- var deps = data.dependencies || {}
- , childPref = prefix.split("├─").join("│ ")
- .split("└─").join(" ")
- , depList = Object.keys(deps)
- , depLast = depList.length - 1
- , maxDepth = npm.config.get("depth")
- Object.keys(deps).sort(function (a, b) {
- return a > b ? 1 : -1
- }).forEach(function (d, i) {
- var depData = deps[d]
- if (typeof depData === "string") {
- if (data.depth < maxDepth) {
- var p = data.link || data.path
- log.warn("Unmet dependency in "+p, d+" "+deps[d])
- depData = npm.config.get("parseable")
- ? ( npm.config.get("long")
- ? path.resolve(data.path, "node_modules", d)
- + ":"+d+"@"+JSON.stringify(depData)+":INVALID:MISSING"
- : "" )
- : "─ \033[31;40mUNMET DEPENDENCY\033[0m "+d+" "+depData
- } else {
- if (npm.config.get("parseable")) {
- depData = path.resolve(data.path, "node_modules", d)
- + (npm.config.get("long")
- ? ":" + d + "@" + JSON.stringify(depData)
- + ":" // no realpath resolved
- + ":MAXDEPTH"
- : "")
- } else {
- depData = "─ "+d+"@'"+depData +"' (max depth reached)"
- }
- }
- }
- var c = i === depLast ? "└─" : "├─"
- makePretty(depData, long, dir, childPref + c, list)
- })
- if (top && list.length === 1 && !data._id) {
- if (!npm.config.get("parseable")) {
- list.push("(empty)")
- } else if (npm.config.get("long")) list[0] += ":EMPTY"
- }
- return list.filter(function (l) { return l && l.trim() })
+function makeArchy (data, long, dir) {
+ var out = makeArchy_(data, long, dir, 0)
+ return archy(out, "", { unicode: npm.config.get("unicode") })
}
-function ugly (data) {
+function makeArchy_ (data, long, dir, depth, parent, d) {
if (typeof data === "string") {
+ if (depth < npm.config.get("depth")) {
+ // just missing
+ var p = parent.link || parent.path
+ log.warn("Unmet dependency in "+p, d+" "+data)
+ data = "\033[31;40mUNMET DEPENDENCY\033[0m " + d + " " + data
+ } else {
+ data = d+"@'"+ data +"' (max depth reached)"
+ }
return data
}
- if (!npm.config.get("long")) return data.path
- return data.path
- + ":" + (data._id || "")
- + ":" + (data.realPath !== data.path ? data.realPath : "")
- + (data.extraneous ? ":EXTRANEOUS" : "")
- + (data.invalid ? ":INVALID" : "")
-}
+ var out = {}
+ // the top level is a bit special.
+ out.label = data._id ? data._id + " " : ""
+ if (data.link) out.label += "-> " + data.link
-function format (data, long, prefix, dir) {
- if (npm.config.get("parseable")) return ugly(data)
- if (typeof data === "string") {
- return prefix + data
- }
-// console.log([data.path, dir], "relativize")
- var depLen = Object.keys(data.dependencies).length
- , space = prefix.split("├─").join("│ ")
- .split("└─").join(" ")
- + (depLen ? "" : " ")
- , rel = relativize(data.path || "", dir)
- , l = prefix
- + (rel === "." ? "" : depLen ? "┬ " : "─ ")
- + (data._id ? data._id + " " : "")
- + (data.link ? "-> " + data.link : "") + ""
- + (rel === "." && !(long && data._id) ? dir : "")
if (data.invalid) {
- if (data.realName !== data.name) l += " ("+data.realName+")"
- l += " \033[31;40minvalid\033[0m"
+ if (data.realName !== data.name) out.label += " ("+data.realName+")"
+ out.label += " \033[31;40minvalid\033[0m"
}
- if (data.extraneous && rel !== ".") {
- l += " \033[32;40mextraneous\033[0m"
+
+ if (data.extraneous && data.path !== dir) {
+ out.label += " \033[32;40mextraneous\033[0m"
}
- if (!long || !data._id) return l
+
+ if (long) {
+ if (dir === data.path) out.label += "\n" + dir
+ out.label += "\n" + getExtras(data, dir)
+ } else if (dir === data.path) {
+ out.label += dir
+ }
+
+ // now all the children.
+ out.nodes = Object.keys(data.dependencies || {})
+ .sort(alphasort).map(function (d) {
+ return makeArchy_(data.dependencies[d], long, dir, depth + 1, data, d)
+ })
+
+ if (out.nodes.length === 0 && data.path === dir) {
+ out.nodes = ["(empty)"]
+ }
+
+ return out
+}
+
+function getExtras (data, dir) {
var extras = []
- if (rel !== ".") extras.push(rel)
- else extras.push(dir)
+ , rel = relativize(data.path || "", dir)
+ , url = require("url")
+
if (data.description) extras.push(data.description)
if (data.repository) extras.push(data.repository.url)
if (data.homepage) extras.push(data.homepage)
- extras = extras.filter(function (e) { return e })
- var lastExtra = !depLen && extras.length - 1
- l += extras.map(function (e, i) {
- var indent = !depLen ? " " : "│ "
- return "\n" + space + indent + e
- }).join("")
- return l
+ if (data._from) {
+ var from = data._from
+ if (from.indexOf(data.name + "@") === 0) {
+ from = from.substr(data.name.length + 1)
+ }
+ var u = url.parse(from)
+ if (u.protocol) extras.push(from)
+ }
+ return extras.join("\n")
+}
+
+
+function makeParseable (data, long, dir, depth, parent, d) {
+ depth = depth || 0
+
+ return [ makeParseable_(data, long, dir, depth, parent, d) ]
+ .concat(Object.keys(data.dependencies || {})
+ .sort(alphasort).map(function (d) {
+ return makeParseable(data.dependencies[d], long, dir, depth + 1, data, d)
+ }))
+ .join("\n")
+}
+
+function makeParseable_ (data, long, dir, depth, parent, d) {
+ if (typeof data === "string") {
+ if (data.depth < npm.config.get("depth")) {
+ var p = parent.link || parent.path
+ log.warn("Unmet dependency in "+p, d+" "+data)
+ data = npm.config.get("long")
+ ? path.resolve(parent.path, "node_modules", d)
+ + ":"+d+"@"+JSON.stringify(data)+":INVALID:MISSING"
+ : ""
+ } else {
+ data = path.resolve(data.path, "node_modules", d)
+ + (npm.config.get("long")
+ ? ":" + d + "@" + JSON.stringify(data)
+ + ":" // no realpath resolved
+ + ":MAXDEPTH"
+ : "")
+ }
+
+ return data
+ }
+
+ if (!npm.config.get("long")) return data.path
+
+ return data.path
+ + ":" + (data._id || "")
+ + ":" + (data.realPath !== data.path ? data.realPath : "")
+ + (data.extraneous ? ":EXTRANEOUS" : "")
+ + (data.invalid ? ":INVALID" : "")
}
diff --git a/deps/npm/lib/npm.js b/deps/npm/lib/npm.js
index afce0f9f2..456948a29 100644
--- a/deps/npm/lib/npm.js
+++ b/deps/npm/lib/npm.js
@@ -25,8 +25,8 @@ var EventEmitter = require("events").EventEmitter
, which = require("which")
, semver = require("semver")
, findPrefix = require("./utils/find-prefix.js")
- , getUid = require("./utils/uid-number.js")
- , mkdir = require("./utils/mkdir-p.js")
+ , getUid = require("uid-number")
+ , mkdir = require("mkdirp")
, slide = require("slide")
, chain = slide.chain
@@ -40,30 +40,6 @@ npm.ECYCLE = {}
npm.ENOTSUP = {}
npm.EBADPLATFORM = {}
-// HACK for windows
-if (process.platform === "win32") {
- // stub in unavailable methods from process and fs binding
- if (!process.getuid) process.getuid = function() {}
- if (!process.getgid) process.getgid = function() {}
- var fsBinding = process.binding("fs")
- if (!fsBinding.chown) fsBinding.chown = function() {
- var cb = arguments[arguments.length - 1]
- if (typeof cb == "function") cb()
- }
-
- // patch rename/renameSync, but this should really be fixed in node
- var _fsRename = fs.rename
- , _fsPathPatch
- _fsPathPatch = function(p) {
- return p && p.replace(/\\/g, "/") || p;
- }
- fs.rename = function(p1, p2) {
- arguments[0] = _fsPathPatch(p1)
- arguments[1] = _fsPathPatch(p2)
- return _fsRename.apply(fs, arguments);
- }
-}
-
try {
// startup, ok to do this synchronously
var j = JSON.parse(fs.readFileSync(
@@ -310,7 +286,7 @@ function loadPrefix (npm, conf, cb) {
})
// the prefix MUST exist, or else nothing works.
if (!npm.config.get("global")) {
- mkdir(p, npm.modes.exec, null, null, true, next)
+ mkdir(p, next)
} else {
next(er)
}
@@ -323,7 +299,7 @@ function loadPrefix (npm, conf, cb) {
, enumerable : true
})
// the prefix MUST exist, or else nothing works.
- mkdir(gp, npm.modes.exec, null, null, true, next)
+ mkdir(gp, next)
})
var i = 2
diff --git a/deps/npm/lib/utils/cmd-shim.js b/deps/npm/lib/utils/cmd-shim.js
index f53ab3cf8..e24da36f6 100644
--- a/deps/npm/lib/utils/cmd-shim.js
+++ b/deps/npm/lib/utils/cmd-shim.js
@@ -14,7 +14,7 @@ cmdShim.ifExists = cmdShimIfExists
var fs = require("graceful-fs")
, chain = require("slide").chain
- , mkdir = require("./mkdir-p.js")
+ , mkdir = require("mkdirp")
, rm = require("rimraf")
, log = require("./log.js")
, path = require("path")
diff --git a/deps/npm/lib/utils/completion/file-completion.js b/deps/npm/lib/utils/completion/file-completion.js
index 427efefb4..c1c241d68 100644
--- a/deps/npm/lib/utils/completion/file-completion.js
+++ b/deps/npm/lib/utils/completion/file-completion.js
@@ -1,7 +1,7 @@
module.exports = fileCompletion
var find = require("../find.js")
- , mkdir = require("../mkdir-p.js")
+ , mkdir = require("mkdirp")
, path = require("path")
function fileCompletion (root, req, depth, cb) {
diff --git a/deps/npm/lib/utils/config-defs.js b/deps/npm/lib/utils/config-defs.js
index 39df42f91..0b36afdc1 100644
--- a/deps/npm/lib/utils/config-defs.js
+++ b/deps/npm/lib/utils/config-defs.js
@@ -9,6 +9,7 @@ var path = require("path")
, os = require("os")
, nopt = require("nopt")
, log = require("./log.js")
+ , npm = require("../npm.js")
function Octal () {}
function validateOctal (data, k, val) {
@@ -183,6 +184,7 @@ Object.defineProperty(exports, "defaults", {get: function () {
, proxy : process.env.HTTP_PROXY || process.env.http_proxy || null
, "https-proxy" : process.env.HTTPS_PROXY || process.env.https_proxy ||
process.env.HTTP_PROXY || process.env.http_proxy || null
+ , "user-agent" : "npm/" + npm.version + " node/" + process.version
, "rebuild-bundle" : true
, registry : "http" + (httpsOk ? "s" : "") + "://registry.npmjs.org/"
, rollback : true
@@ -239,6 +241,7 @@ exports.types =
, globalignorefile: path
, group : [Number, String]
, "https-proxy" : [null, url]
+ , "user-agent" : String
, ignore : String
, "init.version" : [null, semver]
, "init.author.name" : String
diff --git a/deps/npm/lib/utils/excludes.js b/deps/npm/lib/utils/excludes.js
deleted file mode 100644
index 83935ee35..000000000
--- a/deps/npm/lib/utils/excludes.js
+++ /dev/null
@@ -1,159 +0,0 @@
-// build up a set of exclude lists in order of precedence:
-// [ ["!foo", "bar"]
-// , ["foo", "!bar"] ]
-// being *included* will override a previous exclusion,
-// and being excluded will override a previous inclusion.
-//
-// Each time the tar file-list generator thingie enters a new directory,
-// it calls "addIgnoreFile(dir, list, cb)". If an ignore file is found,
-// then it is added to the list and the cb() is called with an
-// child of the original list, so that we don't have
-// to worry about popping it off at the right time, since other
-// directories will continue to use the original parent list.
-//
-// If no ignore file is found, then the original list is returned.
-//
-// To start off with, ~/.{npm,git}ignore is added, as is
-// prefix/{npm,git}ignore, effectively treated as if they were in the
-// base package directory.
-
-exports.addIgnoreFile = addIgnoreFile
-exports.readIgnoreFile = readIgnoreFile
-exports.parseIgnoreFile = parseIgnoreFile
-exports.test = test
-exports.filter = filter
-
-var path = require("path")
- , fs = require("graceful-fs")
- , minimatch = require("minimatch")
- , relativize = require("./relativize.js")
- , log = require("./log.js")
-
-// todo: memoize
-
-// read an ignore file, or fall back to the
-// "gitBase" file in the same directory.
-function readIgnoreFile (file, gitBase, cb) {
- //log.warn(file, "ignoreFile")
- if (!file) return cb(null, "")
- fs.readFile(file, function (er, data) {
- if (!er || !gitBase) return cb(null, data || "")
- var gitFile = path.resolve(path.dirname(file), gitBase)
- fs.readFile(gitFile, function (er, data) {
- return cb(null, data || "")
- })
- })
-}
-
-// read a file, and then return the list of patterns
-function parseIgnoreFile (file, gitBase, dir, cb) {
- readIgnoreFile(file, gitBase, function (er, data) {
- data = data ? data.toString("utf8") : ""
-
- data = data.split(/[\r\n]+/).map(function (p) {
- return p.trim()
- }).filter(function (p) {
- return p.length && p.charAt(0) !== "#"
- })
- data.dir = dir
- return cb(er, data)
- })
-}
-
-// add an ignore file to an existing list which can
-// then be passed to the test() function. If the ignore
-// file doesn't exist, then the list is unmodified. If
-// it is, then a concat-child of the original is returned,
-// so that this is suitable for walking a directory tree.
-function addIgnoreFile (file, gitBase, list, dir, cb) {
- if (typeof cb !== "function") cb = dir, dir = path.dirname(file)
- if (typeof cb !== "function") cb = list, list = []
- parseIgnoreFile(file, gitBase, dir, function (er, data) {
- if (!er && data) {
- // package.json "files" array trumps everything
- // Make sure it's always last.
- if (list.length && list[list.length-1].packageFiles) {
- list = list.concat([data, list.pop()])
- } else {
- list = list.concat([data])
- }
- }
- cb(er, list)
- })
-}
-
-
-// no IO
-// loop through the lists created in the functions above, and test to
-// see if a file should be included or not, given those exclude lists.
-function test (file, excludeList) {
- if (path.basename(file) === "package.json") return true
- // log.warn(file, "test file")
- // log.warn(excludeList, "test list")
- var incRe = /^\!(\!\!)*/
- , excluded = false
- , mmconf = { matchBase: true, dot: true }
- for (var i = 0, l = excludeList.length; i < l; i ++) {
- var excludes = excludeList[i]
- , dir = excludes.dir
-
- // chop the filename down to be relative to excludeDir
- var rf = relativize(file, dir, true)
- rf = rf.replace(/^\.?\//, "")
- if (file.slice(-1) === "/") rf += "/"
-
- // log.warn([file, rf], "rf")
-
- for (var ii = 0, ll = excludes.length; ii < ll; ii ++) {
- var ex = excludes[ii].replace(/^(!*)\//, "$1")
- , inc = !!ex.match(incRe)
-
- // log.warn([ex, rf], "ex, rf")
- // excluding/including a dir excludes/includes all the files in it.
- if (ex.slice(-1) === "/") ex += "**"
-
- // if this is not an inclusion attempt, and someone else
- // excluded it, then just continue, because there's nothing
- // that can be done here to change the exclusion.
- if (!inc && excluded) continue
-
- // if it's an inclusion attempt, and the file has not been
- // excluded, then skip it, because there's no need to try again.
- if (inc && !excluded) continue
-
- // if it matches the pattern, then it should be excluded.
- excluded = !!minimatch(rf, ex, mmconf)
- // log.error([rf, ex, excluded], "rf, ex, excluded")
-
- // if you include foo, then it also includes foo/bar.js
- if (inc && excluded && ex.slice(-3) !== "/**") {
- excluded = minimatch(rf, ex + "/**", mmconf)
- // log.warn([rf, ex + "/**", inc, excluded], "dir without /")
- }
-
- // if you exclude foo, then it also excludes foo/bar.js
- if (!inc
- && excluded
- && ex.slice(-3) !== "/**"
- && rf.slice(-1) === "/"
- && excludes.indexOf(ex + "/**") === -1) {
- // log.warn(ex + "/**", "adding dir-matching exclude pattern")
- excludes.splice(ii, 1, ex, ex + "/**")
- ll ++
- }
- }
-
- // log.warn([rf, excluded, excludes], "rf, excluded, excludes")
- }
- // true if it *should* be included
- // log.warn([file, excludeList, excluded], "file, excluded")
- return !excluded
-}
-
-// returns a function suitable for Array#filter
-function filter (dir, list) { return function (file) {
- file = file.trim()
- var testFile = path.resolve(dir, file)
- if (file.slice(-1) === "/") testFile += "/"
- return file && test(testFile, list)
-}}
diff --git a/deps/npm/lib/utils/fetch.js b/deps/npm/lib/utils/fetch.js
index 935e82039..bc1c095cd 100644
--- a/deps/npm/lib/utils/fetch.js
+++ b/deps/npm/lib/utils/fetch.js
@@ -8,7 +8,8 @@ var request = require("request")
, url = require("url")
, log = require("./log.js")
, path = require("path")
- , mkdir = require("./mkdir-p.js")
+ , mkdir = require("mkdirp")
+ , chownr = require("chownr")
, regHost
module.exports = fetch
@@ -16,7 +17,7 @@ module.exports = fetch
function fetch (remote, local, headers, cb) {
if (typeof cb !== "function") cb = headers, headers = {}
log.verbose(local, "fetch to")
- mkdir(path.dirname(local), function (er) {
+ mkdir(path.dirname(local), function (er, made) {
if (er) return cb(er)
fetch_(remote, local, headers, cb)
})
@@ -58,6 +59,7 @@ function makeRequest (remote, fstr, headers) {
, proxy: proxy
, strictSSL: npm.config.get("strict-ssl")
, ca: remote.host === regHost ? npm.config.get("ca") : undefined
+ , headers: { "user-agent": npm.config.get("user-agent") }
, onResponse: onResponse }).pipe(fstr)
function onResponse (er, res) {
if (er) return fstr.emit("error", er)
diff --git a/deps/npm/lib/utils/link.js b/deps/npm/lib/utils/link.js
index 918481068..7fa80d5e1 100644
--- a/deps/npm/lib/utils/link.js
+++ b/deps/npm/lib/utils/link.js
@@ -4,7 +4,7 @@ link.ifExists = linkIfExists
var fs = require("graceful-fs")
, chain = require("slide").chain
- , mkdir = require("./mkdir-p.js")
+ , mkdir = require("mkdirp")
, rm = require("./gently-rm.js")
, log = require("./log.js")
, path = require("path")
diff --git a/deps/npm/lib/utils/mkdir-p.js b/deps/npm/lib/utils/mkdir-p.js
deleted file mode 100644
index cc2b465fb..000000000
--- a/deps/npm/lib/utils/mkdir-p.js
+++ /dev/null
@@ -1,191 +0,0 @@
-
-var log = require("./log.js")
- , fs = require("graceful-fs")
- , path = require("path")
- , npm = require("../npm.js")
- , exec = require("./exec.js")
- , uidNumber = require("./uid-number.js")
- , umask = process.umask()
- , umaskOrig = umask
- , addedUmaskExit = false
- , mkdirCache = {}
-
-module.exports = mkdir
-function mkdir (ensure, mode, uid, gid, noChmod, cb_) {
- if (typeof cb_ !== "function") cb_ = noChmod, noChmod = null
- if (typeof cb_ !== "function") cb_ = gid, gid = null
- if (typeof cb_ !== "function") cb_ = uid, uid = null
- if (typeof cb_ !== "function") cb_ = mode, mode = npm.modes.exec
-
- if (mode & umask) {
- log.verbose(mode.toString(8), "umasking from "+umask.toString(8))
- process.umask(umask = 0)
- if (!addedUmaskExit) {
- addedUmaskExit = true
- process.on("exit", function () { process.umask(umask = umaskOrig) })
- }
- }
-
- ensure = path.resolve(ensure).replace(/\/+$/, '')
-
- // mkdir("/") should not do anything, since that always exists.
- if (!ensure
- || ( process.platform === "win32"
- && ensure.match(/^[a-zA-Z]:(\\|\/)?$/))) {
- return cb_()
- }
-
- if (mkdirCache.hasOwnProperty(ensure)) {
- return mkdirCache[ensure].push(cb_)
- }
- mkdirCache[ensure] = [cb_]
-
- function cb (er) {
- var cbs = mkdirCache[ensure]
- delete mkdirCache[ensure]
- cbs.forEach(function (c) { c(er) })
- }
-
- if (uid === null && gid === null) {
- return mkdir_(ensure, mode, uid, gid, noChmod, cb)
- }
-
- uidNumber(uid, gid, function (er, uid, gid) {
- if (er) return cb(er)
- mkdir_(ensure, mode, uid, gid, noChmod, cb)
- })
-}
-
-function mkdir_ (ensure, mode, uid, gid, noChmod, cb) {
- // if it's already a dir, then just check the bits and owner.
- fs.stat(ensure, function (er, s) {
- if (s && s.isDirectory()) {
- // check mode, uid, and gid.
- if ((noChmod || (s.mode & mode) === mode)
- && (typeof uid !== "number" || s.uid === uid)
- && (typeof gid !== "number" || s.gid === gid)) return cb()
- return done(ensure, mode, uid, gid, noChmod, cb)
- }
- return walkDirs(ensure, mode, uid, gid, noChmod, cb)
- })
-}
-
-function done (ensure, mode, uid, gid, noChmod, cb) {
- // now the directory has been created.
- // chown it to the desired uid/gid
- // Don't chown the npm.root dir, though, in case we're
- // in unsafe-perm mode.
- log.verbose("done: "+ensure+" "+mode.toString(8), "mkdir")
-
- // only chmod if noChmod isn't set.
- var d = done_(ensure, mode, uid, gid, cb)
- if (noChmod) return d()
- fs.chmod(ensure, mode, d)
-}
-
-function done_ (ensure, mode, uid, gid, cb) {
- return function (er) {
- if (er
- || ensure === npm.dir
- || typeof uid !== "number"
- || typeof gid !== "number"
- || npm.config.get("unsafe-perm")) return cb(er)
- uid = Math.floor(uid)
- gid = Math.floor(gid)
- fs.chown(ensure, uid, gid, cb)
- }
-}
-
-var pathSplit = process.platform === "win32" ? /\/|\\/ : "/"
-function walkDirs (ensure, mode, uid, gid, noChmod, cb) {
- var dirs = ensure.split(pathSplit)
- , walker = []
- , foundUID = null
- , foundGID = null
-
- // gobble the "/" or C: first
- walker.push(dirs.shift())
-
- // The loop that goes through and stats each dir.
- ;(function S (d) {
- // no more directory steps left.
- if (d === undefined) {
- // do the chown stuff
- return done(ensure, mode, uid, gid, noChmod, cb)
- }
-
- // get the absolute dir for the next piece being stat'd
- walker.push(d)
- var dir = walker.join(path.SPLIT_CHAR)
-
- // stat callback lambda
- fs.stat(dir, function STATCB (er, s) {
- if (er) {
- // the stat failed - directory does not exist.
-
- log.verbose(er.message, "mkdir (expected) error")
-
- // use the same uid/gid as the nearest parent, if not set.
- if (foundUID !== null) uid = foundUID
- if (foundGID !== null) gid = foundGID
-
- // make the directory
- fs.mkdir(dir, mode, function MKDIRCB (er) {
- // since stat and mkdir are done as two separate syscalls,
- // operating on a path rather than a file descriptor, it's
- // possible that the directory didn't exist when we did
- // the stat, but then *did* exist when we go to to the mkdir.
- // If we didn't care about uid/gid, we could just mkdir
- // repeatedly, failing on any error other than "EEXIST".
- if (er && er.message.indexOf("EEXIST") === 0) {
- return fs.stat(dir, STATCB)
- }
-
- // any other kind of error is not saveable.
- if (er) return cb(er)
-
- // at this point, we've just created a new directory successfully.
-
- // if we care about permissions
- if (!npm.config.get("unsafe-perm") // care about permissions
- // specified a uid and gid
- && uid !== null
- && gid !== null ) {
- // set the proper ownership
- return fs.chown(dir, uid, gid, function (er) {
- if (er) return cb(er)
- // attack the next portion of the path.
- S(dirs.shift())
- })
- } else {
- // either we don't care about ownership, or it's already right.
- S(dirs.shift())
- }
- }) // mkdir
-
- } else {
- // the stat succeeded.
- if (s.isDirectory()) {
- // if it's a directory, that's good.
- // if the uid and gid aren't already set, then try to preserve
- // the ownership on up the tree. Things in ~ remain owned by
- // the user, things in / remain owned by root, etc.
- if (uid === null && typeof s.uid === "number") foundUID = s.uid
- if (gid === null && typeof s.gid === "number") foundGID = s.gid
-
- // move onto next portion of path
- S(dirs.shift())
-
- } else {
- // the stat succeeded, but it's not a directory
- log.verbose(dir, "mkdir exists")
- log.silly(s, "stat("+dir+")")
- log.verbose(s.isDirectory(), "isDirectory()")
- cb(new Error("Failed to mkdir "+dir+": File exists"))
- }// if (isDirectory) else
- } // if (stat failed) else
- }) // stat
-
- // start the S function with the first item in the list of directories.
- })(dirs.shift())
-}
diff --git a/deps/npm/lib/utils/npm-registry-client/get.js b/deps/npm/lib/utils/npm-registry-client/get.js
index 49a8b4cc0..e0902f027 100644
--- a/deps/npm/lib/utils/npm-registry-client/get.js
+++ b/deps/npm/lib/utils/npm-registry-client/get.js
@@ -6,8 +6,9 @@ var GET = require("./request.js").GET
, npm = require("../../npm.js")
, path = require("path")
, log = require("../log.js")
- , mkdir = require("../mkdir-p.js")
+ , mkdir = require("mkdirp")
, cacheStat = null
+ , chownr = require("chownr")
function get (project, version, timeout, nofollow, staleOk, cb) {
if (typeof cb !== "function") cb = staleOk, staleOk = false
@@ -173,13 +174,13 @@ function saveToCache (cache, data, saved) {
}
function saveToCache_ (cache, data, uid, gid, saved) {
- mkdir(path.dirname(cache), npm.modes.exec, uid, gid, function (er) {
+ mkdir(path.dirname(cache), function (er, made) {
if (er) return saved()
fs.writeFile(cache, JSON.stringify(data), function (er) {
if (er || uid === null || gid === null) {
return saved()
}
- fs.chown(cache, uid, gid, saved)
+ chownr(made || cache, uid, gid, saved)
})
})
}
diff --git a/deps/npm/lib/utils/npm-registry-client/request.js b/deps/npm/lib/utils/npm-registry-client/request.js
index 5213c7966..d5122629d 100644
--- a/deps/npm/lib/utils/npm-registry-client/request.js
+++ b/deps/npm/lib/utils/npm-registry-client/request.js
@@ -94,6 +94,8 @@ function makeRequest (method, remote, where, what, etag, nofollow, cb) {
headers.accept = "application/json"
+ headers["user-agent"] = npm.config.get("user-agent")
+
opts.proxy = npm.config.get( remote.protocol === "https:"
? "https-proxy" : "proxy" )
diff --git a/deps/npm/lib/utils/read-json.js b/deps/npm/lib/utils/read-json.js
index 9d76a16b8..d1bba10f5 100644
--- a/deps/npm/lib/utils/read-json.js
+++ b/deps/npm/lib/utils/read-json.js
@@ -52,27 +52,11 @@ function readJson (jsonFile, opts, cb) {
if (er) return hasGyp(false)
// see if there are any *.gyp files in there.
- // If there are, then copy them to binding.gyp
- // if there are not, then just proceed without
gf = gf.filter(function (f) {
return f.match(/\.gyp$/)
})
gf = gf[0]
- if (!gf) return hasGyp(false)
- if (gf === "binding.gyp") return hasGyp(true)
-
- // need to rename. windows is annoying.
- // why not fs.rename? because we just saw the file, so it'll
- // be cached for potentially several seconds on a network share.
- return fs.readFile(path.resolve(pkgdir, gf), function (er, d) {
- if (er) return hasGyp(false)
- fs.writeFile(path.resolve(pkgdir, "binding.gyp"), d, function (er) {
- if (er) return hasGyp(false)
- fs.unlink(path.resolve(pkgdir, gf), function (er) {
- return hasGyp(!er)
- })
- })
- })
+ return hasGyp(!!gf)
})
}
diff --git a/deps/npm/lib/utils/tar.js b/deps/npm/lib/utils/tar.js
index 906913fe1..415eb7f9e 100644
--- a/deps/npm/lib/utils/tar.js
+++ b/deps/npm/lib/utils/tar.js
@@ -1,27 +1,21 @@
-// XXX lib/cache.js and this file need to be rewritten.
-
// commands for packing and unpacking tarballs
// this file is used by lib/cache.js
var npm = require("../npm.js")
, fs = require("graceful-fs")
- , exec = require("./exec.js")
- , find = require("./find.js")
- , mkdir = require("./mkdir-p.js")
- , asyncMap = require("slide").asyncMap
, path = require("path")
, log = require("./log.js")
- , uidNumber = require("./uid-number.js")
+ , uidNumber = require("uid-number")
, rm = require("rimraf")
, readJson = require("./read-json.js")
, relativize = require("./relativize.js")
, cache = require("../cache.js")
- , excludes = require("./excludes.js")
, myUid = process.getuid && process.getuid()
, myGid = process.getgid && process.getgid()
, tar = require("tar")
, zlib = require("zlib")
, fstream = require("fstream")
+ , Packer = require("fstream-npm")
if (process.env.SUDO_UID && myUid === 0) {
if (!isNaN(process.env.SUDO_UID)) myUid = +process.env.SUDO_UID
@@ -30,100 +24,16 @@ if (process.env.SUDO_UID && myUid === 0) {
exports.pack = pack
exports.unpack = unpack
-exports.makeList = makeList
function pack (targetTarball, folder, pkg, dfc, cb) {
+ log.verbose([targetTarball, folder], "tar.pack")
if (typeof cb !== "function") cb = dfc, dfc = true
- folder = path.resolve(folder)
-
- log.verbose(folder, "pack")
-
- if (typeof pkg === "function") {
- cb = pkg, pkg = null
- return readJson(path.resolve(folder, "package.json"), function (er, pkg) {
- if (er) return log.er(cb, "Couldn't find package.json in "+folder)(er)
- pack(targetTarball, folder, pkg, dfc, cb)
- })
- }
- log.verbose(folder+" "+targetTarball, "pack")
- var parent = path.dirname(folder)
- , addFolder = path.basename(folder)
-
- var confEx = npm.config.get("ignore")
- log.silly(folder, "makeList")
- makeList(folder, pkg, dfc, function (er, files, cleanup) {
- if (er) return cb(er)
- // log.silly(files, "files")
- return packFiles(targetTarball, parent, files, pkg, function (er) {
- if (!cleanup || !cleanup.length) return cb(er)
- // try to be a good citizen, even/especially in the event of failure.
- cleanupResolveLinkDep(cleanup, function (er2) {
- if (er || er2) {
- if (er) log(er, "packing tarball")
- if (er2) log(er2, "while cleaning up resolved deps")
- }
- return cb(er || er2)
- })
- })
- })
-}
-
-function packFiles (targetTarball, parent, files, pkg, cb_) {
-
- var p
-
- files = files.map(function (f) {
- p = f.split(/\/|\\/)[0]
- return path.resolve(parent, f)
- })
-
- parent = path.resolve(parent, p)
-
- var called = false
- function cb (er) {
- if (called) return
- called = true
- cb_(er)
- }
log.verbose(targetTarball, "tarball")
- log.verbose(parent, "parent")
- fstream.Reader({ type: "Directory"
- , path: parent
- , filter: function () {
- // files should *always* get into tarballs
- // in a user-writable state, even if they're
- // being installed from some wackey vm-mounted
- // read-only filesystem.
- this.props.mode = this.props.mode | 0200
- var inc = -1 !== files.indexOf(this.path)
+ log.verbose(folder, "folder")
+ new Packer({ path: folder, type: "Directory", isDirectory: true })
+ .on("error", log.er(cb, "error reading "+folder))
- // symbolic links are not allowed in packages.
- if (this.type.match(/^.*Link$/)) {
- log.warn( this.path.substr(parent.length + 1)
- + ' -> ' + this.linkpath
- , "excluding symbolic link")
- return false
- }
-
- // WARNING! Hackety hack!
- // XXX Fix this in a better way.
- // Rename .gitignore to .npmignore if there is not a
- // .npmignore file there already, the better to lock
- // down installed packages with git for deployment.
- if (this.basename === ".gitignore") {
- if (this.parent._entries.indexOf(".npmignore") !== -1) {
- return false
- }
- var d = path.dirname(this.path)
- this.basename = ".npmignore"
- this.path = path.join(d, ".npmignore")
- }
-
- return inc
- }
- })
- .on("error", log.er(cb, "error reading "+parent))
// By default, npm includes some proprietary attributes in the
// package tarball. This is sane, and allowed by the spec.
// However, npm *itself* excludes these from its own package,
@@ -135,11 +45,14 @@ function packFiles (targetTarball, parent, files, pkg, cb_) {
.on("error", log.er(cb, "gzip error "+targetTarball))
.pipe(fstream.Writer({ type: "File", path: targetTarball }))
.on("error", log.er(cb, "Could not write "+targetTarball))
- .on("close", cb)
+ .on("close", function () {
+ cb()
+ })
}
function unpack (tarball, unpackTarget, dMode, fMode, uid, gid, cb) {
+ log.verbose(tarball, "unpack")
if (typeof cb !== "function") cb = gid, gid = null
if (typeof cb !== "function") cb = uid, uid = null
if (typeof cb !== "function") cb = fMode, fMode = npm.modes.file
@@ -152,31 +65,20 @@ function unpack (tarball, unpackTarget, dMode, fMode, uid, gid, cb) {
}
function unpack_ ( tarball, unpackTarget, dMode, fMode, uid, gid, cb ) {
- // If the desired target is /path/to/foo,
- // then unpack into /path/to/.foo.npm/{something}
- // rename that to /path/to/foo, and delete /path/to/.foo.npm
var parent = path.dirname(unpackTarget)
, base = path.basename(unpackTarget)
rm(unpackTarget, function (er) {
if (er) return cb(er)
- mkdir(unpackTarget, dMode || npm.modes.exec, uid, gid, function (er) {
- log.verbose([uid, gid], "unpack_ uid, gid")
- log.verbose(unpackTarget, "unpackTarget")
+ // gzip {tarball} --decompress --stdout \
+ // | tar -mvxpf - --strip-components=1 -C {unpackTarget}
+ gunzTarPerm( tarball, unpackTarget
+ , dMode, fMode
+ , uid, gid
+ , function (er, folder) {
if (er) return cb(er)
-
- // cp the gzip of the tarball, pipe the stdout into tar's stdin
- // gzip {tarball} --decompress --stdout \
- // | tar -mvxpf - --strip-components=1 -C {unpackTarget}
- gunzTarPerm( tarball, unpackTarget
- , dMode, fMode
- , uid, gid
- , function (er, folder) {
- if (er) return cb(er)
- log.verbose(folder, "gunzed")
- readJson(path.resolve(folder, "package.json"), cb)
- })
+ readJson(path.resolve(folder, "package.json"), cb)
})
})
}
@@ -204,6 +106,7 @@ function gunzTarPerm (tarball, target, dMode, fMode, uid, gid, cb_) {
}
function extractEntry (entry) {
+ log.silly(entry.path, "extracting entry")
// never create things that are user-unreadable,
// or dirs that are user-un-listable. Only leads to headaches.
var originalMode = entry.mode = entry.mode || entry.props.mode
@@ -225,6 +128,13 @@ function gunzTarPerm (tarball, target, dMode, fMode, uid, gid, cb_) {
var extractOpts = { type: "Directory", path: target, strip: 1 }
+ if (process.platform !== "win32" &&
+ typeof uid === "number" &&
+ typeof gid === "number") {
+ extractOpts.uid = uid
+ extractOpts.gid = gid
+ }
+
extractOpts.filter = function () {
// symbolic links are not allowed in packages.
if (this.type.match(/^.*Link$/)) {
@@ -246,7 +156,6 @@ function gunzTarPerm (tarball, target, dMode, fMode, uid, gid, cb_) {
if (c[0] === 0x1F &&
c[1] === 0x8B &&
c[2] === 0x08) {
- var extracter = tar.Extract(extractOpts)
fst
.pipe(zlib.Unzip())
.on("error", log.er(cb, "unzip error "+tarball))
@@ -263,8 +172,17 @@ function gunzTarPerm (tarball, target, dMode, fMode, uid, gid, cb_) {
.on("close", cb)
} else {
// naked js file
+ var jsOpts = { path: path.resolve(target, "index.js") }
+
+ if (process.platform !== "win32" &&
+ typeof uid === "number" &&
+ typeof gid === "number") {
+ jsOpts.uid = uid
+ jsOpts.gid = gid
+ }
+
fst
- .pipe(fstream.Writer({ path: path.resolve(target, "index.js") }))
+ .pipe(fstream.Writer(jsOpts))
.on("error", log.er(cb, "copy error "+tarball))
.on("close", function () {
var j = path.resolve(target, "package.json")
@@ -283,327 +201,3 @@ function gunzTarPerm (tarball, target, dMode, fMode, uid, gid, cb_) {
fst.emit("data", c)
})
}
-
-function makeList (dir, pkg, dfc, cb) {
- if (typeof cb !== "function") cb = dfc, dfc = true
- if (typeof cb !== "function") cb = pkg, pkg = null
- dir = path.resolve(dir)
-
- if (!pkg.path) pkg.path = dir
-
- var name = path.basename(dir)
-
- // since this is a top-level traversal, get the user and global
- // exclude files, as well as the "ignore" config setting.
- var confIgnore = npm.config.get("ignore").trim()
- .split(/[\n\r\s\t]+/)
- .filter(function (i) { return i.trim() })
- , userIgnore = npm.config.get("userignorefile")
- , globalIgnore = npm.config.get("globalignorefile")
- , userExclude
- , globalExclude
-
- confIgnore.dir = dir
- confIgnore.name = "confIgnore"
-
- var defIgnore = ["build/"]
- defIgnore.dir = dir
-
- // TODO: only look these up once, and cache outside this function
- excludes.parseIgnoreFile( userIgnore, null, dir
- , function (er, uex) {
- if (er) return cb(er)
- userExclude = uex
- next()
- })
-
- excludes.parseIgnoreFile( globalIgnore, null, dir
- , function (er, gex) {
- if (er) return cb(er)
- globalExclude = gex
- next()
- })
-
- function next () {
- if (!globalExclude || !userExclude) return
- var exList = [ defIgnore, confIgnore, globalExclude, userExclude ]
-
- makeList_(dir, pkg, exList, dfc, function (er, files, cleanup) {
- if (er) return cb(er)
- var dirLen = dir.replace(/(\/|\\)$/, "").length + 1
- log.silly([dir, dirLen], "dir, dirLen")
- files = files.map(function (file) {
- return path.join(name, file.substr(dirLen))
- })
- return cb(null, files, cleanup)
- })
- }
-}
-
-// Patterns ending in slashes will only match targets
-// ending in slashes. To implement this, add a / to
-// the filename iff it lstats isDirectory()
-function readDir (dir, pkg, dfc, cb) {
- fs.readdir(dir, function (er, files) {
- if (er) return cb(er)
- files = files.filter(function (f) {
- return f && f.charAt(0) !== "/" && f.indexOf("\0") === -1
- })
- asyncMap(files, function (file, cb) {
- fs.lstat(path.resolve(dir, file), function (er, st) {
- if (er) return cb(null, [])
- // if it's a directory, then tack "/" onto the name
- // so that it can match dir-only patterns in the
- // include/exclude logic later.
- if (st.isDirectory()) return cb(null, file + "/")
-
- // if it's a symlink, then we need to do some more
- // complex stuff for GH-691
- if (st.isSymbolicLink()) return readSymlink(dir, file, pkg, dfc, cb)
-
- // otherwise, just let it on through.
- return cb(null, file)
- })
- }, cb)
- })
-}
-
-// just see where this link is pointing, and resolve relative paths.
-function shallowReal (link, cb) {
- link = path.resolve(link)
- fs.readlink(link, function (er, t) {
- if (er) return cb(er)
- return cb(null, path.resolve(path.dirname(link), t), t)
- })
-}
-
-function readSymlink (dir, file, pkg, dfc, cb) {
- var isNM = dfc
- && path.basename(dir) === "node_modules"
- && path.dirname(dir) === pkg.path
- // see if this thing is pointing outside of the package.
- // external symlinks are resolved for deps, ignored for other things.
- // internal symlinks are allowed through.
- var df = path.resolve(dir, file)
- shallowReal(df, function (er, r, target) {
- if (er) return cb(null, []) // wtf? exclude file.
- if (r.indexOf(dir) === 0) return cb(null, file) // internal
- if (!isNM) return cb(null, []) // external non-dep
- // now the fun stuff!
- fs.realpath(df, function (er, resolved) {
- if (er) return cb(null, []) // can't add it.
- readJson(path.resolve(resolved, "package.json"), function (er) {
- if (er) return cb(null, []) // not a package
- resolveLinkDep(dir, file, resolved, target, pkg, function (er, f, c) {
- cb(er, f, c)
- })
- })
- })
- })
-}
-
-// put the link back the way it was.
-function cleanupResolveLinkDep (cleanup, cb) {
- // cut it out of the list, so that cycles will be broken.
- if (!cleanup) return cb()
-
- asyncMap(cleanup, function (d, cb) {
- rm(d[1], function (er) {
- if (er) return cb(er)
- fs.symlink(d[0], d[1], cb)
- })
- }, cb)
-}
-
-function resolveLinkDep (dir, file, resolved, target, pkg, cb) {
- // we've already decided that this is a dep that will be bundled.
- // make sure the data reflects this.
- var bd = pkg.bundleDependencies || pkg.bundledDependencies || []
- delete pkg.bundledDependencies
- pkg.bundleDependencies = bd
- var f = path.resolve(dir, file)
- , cleanup = [[target, f, resolved]]
-
- if (bd.indexOf(file) === -1) {
- // then we don't do this one.
- // just move the symlink out of the way.
- return rm(f, function (er) {
- cb(er, file, cleanup)
- })
- }
-
- rm(f, function (er) {
- if (er) return cb(er)
- cache.add(resolved, function (er, data) {
- if (er) return cb(er)
- cache.unpack(data.name, data.version, f, function (er, data) {
- if (er) return cb(er)
- // now clear out the cache entry, since it's weird, probably.
- // pass the cleanup object along so that the thing getting the
- // list of files knows what to clean up afterwards.
- cache.clean([data._id], function (er) { cb(er, file, cleanup) })
- })
- })
- })
-}
-
-// exList is a list of ignore lists.
-// Each exList item is an array of patterns of files to ignore
-//
-function makeList_ (dir, pkg, exList, dfc, cb) {
- var files = null
- , cleanup = null
-
- readDir(dir, pkg, dfc, function (er, f, c) {
- if (er) return cb(er)
- cleanup = c
- files = f.map(function (f) {
- // no nulls in paths!
- return f.split(/\0/)[0]
- }).filter(function (f) {
- // always remove all source control folders and
- // waf/vim/OSX garbage. this is a firm requirement.
- return !( f === ".git/"
- || f === ".lock-wscript"
- || f.match(/^\.wafpickle-[0-9]+$/)
- || f === "CVS/"
- || f === ".svn/"
- || f === ".hg/"
- || f.match(/^\..*\.swp/)
- || f === ".DS_Store"
- || f.match(/^\._/)
- || f === "npm-debug.log"
- || f === ""
- || f.charAt(0) === "/"
- )
- })
-
- // if (files.length > 0) files.push(".")
-
- if (files.indexOf("package.json") !== -1 && dir !== pkg.path) {
- // a package.json file starts the whole exclude/include
- // logic all over. Otherwise, a parent could break its
- // deps with its files list or .npmignore file.
- readJson(path.resolve(dir, "package.json"), function (er, data) {
- if (!er && typeof data === "object") {
- data.path = dir
- return makeList(dir, data, dfc, function (er, files) {
- // these need to be mounted onto the directory now.
- cb(er, files && files.map(function (f) {
- return path.resolve(path.dirname(dir), f)
- }))
- })
- }
- next()
- })
- //next()
- } else next()
-
- // add a local ignore file, if found.
- if (files.indexOf(".npmignore") === -1
- && files.indexOf(".gitignore") === -1) next()
- else {
- excludes.addIgnoreFile( path.resolve(dir, ".npmignore")
- , ".gitignore"
- , exList
- , dir
- , function (er, list) {
- if (!er) exList = list
- next(er)
- })
- }
- })
-
- var n = 2
- , errState = null
- function next (er) {
- if (errState) return
- if (er) return cb(errState = er, [], cleanup)
- if (-- n > 0) return
-
- if (!pkg) return cb(new Error("No package.json file in "+dir))
- if (pkg.path === dir && pkg.files) {
- pkg.files = pkg.files.filter(function (f) {
- f = f.trim()
- return f && f.charAt(0) !== "#"
- })
- if (!pkg.files.length) pkg.files = null
- }
- if (pkg.path === dir && pkg.files) {
- // stuff on the files list MUST be there.
- // ignore everything, then include the stuff on the files list.
- var pkgFiles = ["*"].concat(pkg.files.map(function (f) {
- return "!" + f
- }))
- pkgFiles.dir = dir
- pkgFiles.packageFiles = true
- exList.push(pkgFiles)
- }
-
- if (path.basename(dir) === "node_modules"
- && pkg.path === path.dirname(dir)
- // do fancy crap
- && dfc
- // not already part of a bundled dependency
- && (path.basename(path.dirname(pkg.path)) !== "node_modules"
- // unless it's the root
- || pkg.path === npm.prefix)) {
- log.verbose(dir, "doing fancy crap")
- files = filterNodeModules(files, pkg)
- } else {
- // If a directory is excluded, we still need to be
- // able to *include* a file within it, and have that override
- // the prior exclusion.
- //
- // This whole makeList thing probably needs to be rewritten
- files = files.filter(function (f) {
- return excludes.filter(dir, exList)(f) || f.slice(-1) === "/"
- })
- }
-
-
- asyncMap(files, function (file, cb) {
- // if this is a dir, then dive into it.
- // otherwise, don't.
- file = path.resolve(dir, file)
-
- // in 0.6.0, fs.readdir can produce some really odd results.
- // XXX: remove this and make the engines hash exclude 0.6.0
- if (file.indexOf(dir) !== 0) {
- return cb(null, [])
- }
-
- fs.lstat(file, function (er, st) {
- if (er) return cb(er)
- if (st.isDirectory()) {
- return makeList_(file, pkg, exList, dfc, cb)
- }
- return cb(null, file)
- })
- }, function (er, files, c) {
- if (c) cleanup = (cleanup || []).concat(c)
- if (files.length > 0) files.push(dir)
- return cb(er, files, cleanup)
- })
- }
-}
-
-// only include node_modules folder that are:
-// 1. not on the dependencies list or
-// 2. on the "bundleDependencies" list.
-function filterNodeModules (files, pkg) {
- var bd = pkg.bundleDependencies || pkg.bundledDependencies || []
- , deps = Object.keys(pkg.dependencies || {})
- .filter(function (key) { return !pkg.dependencies[key].extraneous })
- .concat(Object.keys(pkg.devDependencies || {}))
-
- delete pkg.bundledDependencies
- pkg.bundleDependencies = bd
-
- return files.filter(function (f) {
- f = f.replace(/\/$/, "")
- return f.charAt(0) !== "."
- && f.charAt(0) !== "_"
- && bd.indexOf(f) !== -1
- })
-}
diff --git a/deps/npm/lib/utils/uid-number.js b/deps/npm/lib/utils/uid-number.js
deleted file mode 100644
index 375627553..000000000
--- a/deps/npm/lib/utils/uid-number.js
+++ /dev/null
@@ -1,55 +0,0 @@
-module.exports = uidNumber
-
-// This module calls into bin/npm-get-uid-gid.js, which sets the
-// uid and gid to the supplied argument, in order to find out their
-// numeric value. This can't be done in the main node process,
-// because otherwise npm would be running as that user.
-
-var exec = require("./exec.js")
- , path = require("path")
- , log = require("./log.js")
- , constants = require("constants")
- , npm = require("../npm.js")
- , uidSupport = process.getuid && process.setuid
- , uidCache = {}
- , gidCache = {}
-
-function uidNumber (uid, gid, cb) {
- if (!uidSupport || npm.config.get("unsafe-perm")) return cb()
- if (typeof cb !== "function") cb = gid, gid = null
- if (typeof cb !== "function") cb = uid, uid = null
- if (gid == null) gid = process.getgid()
- if (uid == null) uid = process.getuid()
- if (!isNaN(gid)) gid = +gid
- if (!isNaN(uid)) uid = +uid
-
- if (uidCache[uid]) uid = uidCache[uid]
- if (gidCache[gid]) gid = gidCache[gid]
-
- if (typeof gid === "number" && typeof uid === "number") {
- return cb(null, uid, gid)
- }
-
- var getter = path.join(__dirname, "..", "..", "bin", "npm-get-uid-gid.js")
- return exec( process.execPath, [getter, uid, gid], process.env, false
- , null, process.getuid(), process.getgid()
- , function (er, code, out, err) {
- if (er) return log.er(cb, "Could not get uid/gid "+err)(er)
- log.silly(out, "output from getuid/gid")
- out = JSON.parse(out+"")
- if (out.error) {
- if (!npm.config.get("unsafe-perm")) {
- var er = new Error(out.error)
- er.errno = out.errno
- return cb(er)
- } else {
- return cb(null, +process.getuid(), +process.getgid())
- }
- }
- if (isNaN(out.uid) || isNaN(out.gid)) return cb(new Error(
- "Could not get uid/gid: "+JSON.stringify(out)))
- uidCache[uid] = out.uid
- uidCache[gid] = out.gid
- cb(null, out.uid, out.gid)
- })
-}
diff --git a/deps/npm/man/man1/README.1 b/deps/npm/man/man1/README.1
index 7815aecf4..d3c019dab 100644
--- a/deps/npm/man/man1/README.1
+++ b/deps/npm/man/man1/README.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM" "1" "March 2012" "" ""
+.TH "NPM" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm\fR \-\- node package manager
diff --git a/deps/npm/man/man1/adduser.1 b/deps/npm/man/man1/adduser.1
index 40082f955..082812cc5 100644
--- a/deps/npm/man/man1/adduser.1
+++ b/deps/npm/man/man1/adduser.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-ADDUSER" "1" "March 2012" "" ""
+.TH "NPM\-ADDUSER" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-adduser\fR \-\- Add a registry user account
diff --git a/deps/npm/man/man1/bin.1 b/deps/npm/man/man1/bin.1
index 1f0701493..3f62258d1 100644
--- a/deps/npm/man/man1/bin.1
+++ b/deps/npm/man/man1/bin.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-BIN" "1" "March 2012" "" ""
+.TH "NPM\-BIN" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-bin\fR \-\- Display npm bin folder
diff --git a/deps/npm/man/man1/bugs.1 b/deps/npm/man/man1/bugs.1
index 01e01d63d..384384511 100644
--- a/deps/npm/man/man1/bugs.1
+++ b/deps/npm/man/man1/bugs.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-BUGS" "1" "March 2012" "" ""
+.TH "NPM\-BUGS" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-bugs\fR \-\- Bugs for a package in a web browser maybe
diff --git a/deps/npm/man/man1/build.1 b/deps/npm/man/man1/build.1
index 541dd494a..897781a48 100644
--- a/deps/npm/man/man1/build.1
+++ b/deps/npm/man/man1/build.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-BUILD" "1" "March 2012" "" ""
+.TH "NPM\-BUILD" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-build\fR \-\- Build a package
diff --git a/deps/npm/man/man1/bundle.1 b/deps/npm/man/man1/bundle.1
index 6ff090817..3fbe951c9 100644
--- a/deps/npm/man/man1/bundle.1
+++ b/deps/npm/man/man1/bundle.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-BUNDLE" "1" "March 2012" "" ""
+.TH "NPM\-BUNDLE" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-bundle\fR \-\- REMOVED
diff --git a/deps/npm/man/man1/cache.1 b/deps/npm/man/man1/cache.1
index f185ea970..6168b5097 100644
--- a/deps/npm/man/man1/cache.1
+++ b/deps/npm/man/man1/cache.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-CACHE" "1" "March 2012" "" ""
+.TH "NPM\-CACHE" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-cache\fR \-\- Manipulates packages cache
diff --git a/deps/npm/man/man1/changelog.1 b/deps/npm/man/man1/changelog.1
index 1e5d89587..d972a2955 100644
--- a/deps/npm/man/man1/changelog.1
+++ b/deps/npm/man/man1/changelog.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-CHANGELOG" "1" "March 2012" "" ""
+.TH "NPM\-CHANGELOG" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-changelog\fR \-\- Changes
diff --git a/deps/npm/man/man1/coding-style.1 b/deps/npm/man/man1/coding-style.1
index 25d53aa77..8d5c60b3d 100644
--- a/deps/npm/man/man1/coding-style.1
+++ b/deps/npm/man/man1/coding-style.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-CODING\-STYLE" "1" "March 2012" "" ""
+.TH "NPM\-CODING\-STYLE" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-coding-style\fR \-\- npm\'s "funny" coding style
diff --git a/deps/npm/man/man1/completion.1 b/deps/npm/man/man1/completion.1
index 4acded61a..3f4589333 100644
--- a/deps/npm/man/man1/completion.1
+++ b/deps/npm/man/man1/completion.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-COMPLETION" "1" "March 2012" "" ""
+.TH "NPM\-COMPLETION" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-completion\fR \-\- Tab Completion for npm
diff --git a/deps/npm/man/man1/config.1 b/deps/npm/man/man1/config.1
index f1ed9949d..f39d7ff70 100644
--- a/deps/npm/man/man1/config.1
+++ b/deps/npm/man/man1/config.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-CONFIG" "1" "March 2012" "" ""
+.TH "NPM\-CONFIG" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-config\fR \-\- Manage the npm configuration file
@@ -603,6 +603,19 @@ Type: url
.P
A proxy to use for outgoing https requests\.
.
+.SS "user\-agent"
+.
+.IP "\(bu" 4
+Default: npm/{npm\.version} node/{process\.version}
+.
+.IP "\(bu" 4
+Type: String
+.
+.IP "" 0
+.
+.P
+Sets a User\-Agent to the request header
+.
.SS "ignore"
.
.IP "\(bu" 4
diff --git a/deps/npm/man/man1/deprecate.1 b/deps/npm/man/man1/deprecate.1
index 46670bcd0..918fd2324 100644
--- a/deps/npm/man/man1/deprecate.1
+++ b/deps/npm/man/man1/deprecate.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-DEPRECATE" "1" "March 2012" "" ""
+.TH "NPM\-DEPRECATE" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-deprecate\fR \-\- Deprecate a version of a package
diff --git a/deps/npm/man/man1/developers.1 b/deps/npm/man/man1/developers.1
index 465b03812..9d2e75941 100644
--- a/deps/npm/man/man1/developers.1
+++ b/deps/npm/man/man1/developers.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-DEVELOPERS" "1" "March 2012" "" ""
+.TH "NPM\-DEVELOPERS" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-developers\fR \-\- Developer Guide
diff --git a/deps/npm/man/man1/disputes.1 b/deps/npm/man/man1/disputes.1
index eb1427644..b74865f10 100644
--- a/deps/npm/man/man1/disputes.1
+++ b/deps/npm/man/man1/disputes.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-DISPUTES" "1" "March 2012" "" ""
+.TH "NPM\-DISPUTES" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-disputes\fR \-\- Handling Module Name Disputes
diff --git a/deps/npm/man/man1/docs.1 b/deps/npm/man/man1/docs.1
index 292042dcf..00fa39153 100644
--- a/deps/npm/man/man1/docs.1
+++ b/deps/npm/man/man1/docs.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-DOCS" "1" "March 2012" "" ""
+.TH "NPM\-DOCS" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-docs\fR \-\- Docs for a package in a web browser maybe
diff --git a/deps/npm/man/man1/edit.1 b/deps/npm/man/man1/edit.1
index b64f80af8..742353d9a 100644
--- a/deps/npm/man/man1/edit.1
+++ b/deps/npm/man/man1/edit.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-EDIT" "1" "March 2012" "" ""
+.TH "NPM\-EDIT" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-edit\fR \-\- Edit an installed package
diff --git a/deps/npm/man/man1/explore.1 b/deps/npm/man/man1/explore.1
index 8aa212cb2..8b24eea66 100644
--- a/deps/npm/man/man1/explore.1
+++ b/deps/npm/man/man1/explore.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-EXPLORE" "1" "March 2012" "" ""
+.TH "NPM\-EXPLORE" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-explore\fR \-\- Browse an installed package
diff --git a/deps/npm/man/man1/faq.1 b/deps/npm/man/man1/faq.1
index 1443fd784..1d68c0496 100644
--- a/deps/npm/man/man1/faq.1
+++ b/deps/npm/man/man1/faq.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-FAQ" "1" "March 2012" "" ""
+.TH "NPM\-FAQ" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-faq\fR \-\- Frequently Asked Questions
diff --git a/deps/npm/man/man1/folders.1 b/deps/npm/man/man1/folders.1
index f043ce287..bebd033ed 100644
--- a/deps/npm/man/man1/folders.1
+++ b/deps/npm/man/man1/folders.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-FOLDERS" "1" "March 2012" "" ""
+.TH "NPM\-FOLDERS" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-folders\fR \-\- Folder Structures Used by npm
diff --git a/deps/npm/man/man1/help-search.1 b/deps/npm/man/man1/help-search.1
index 2dbc63416..da5889bc8 100644
--- a/deps/npm/man/man1/help-search.1
+++ b/deps/npm/man/man1/help-search.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-HELP\-SEARCH" "1" "March 2012" "" ""
+.TH "NPM\-HELP\-SEARCH" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-help-search\fR \-\- Search npm help documentation
diff --git a/deps/npm/man/man1/help.1 b/deps/npm/man/man1/help.1
index ce2dd995d..247122183 100644
--- a/deps/npm/man/man1/help.1
+++ b/deps/npm/man/man1/help.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-HELP" "1" "March 2012" "" ""
+.TH "NPM\-HELP" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-help\fR \-\- Get help on npm
diff --git a/deps/npm/man/man1/index.1 b/deps/npm/man/man1/index.1
index 5dc7acbe0..419652ced 100644
--- a/deps/npm/man/man1/index.1
+++ b/deps/npm/man/man1/index.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-INDEX" "1" "March 2012" "" ""
+.TH "NPM\-INDEX" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-index\fR \-\- Index of all npm documentation
diff --git a/deps/npm/man/man1/init.1 b/deps/npm/man/man1/init.1
index c7c3e211b..ff4d537cb 100644
--- a/deps/npm/man/man1/init.1
+++ b/deps/npm/man/man1/init.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-INIT" "1" "March 2012" "" ""
+.TH "NPM\-INIT" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-init\fR \-\- Interactively create a package\.json file
diff --git a/deps/npm/man/man1/install.1 b/deps/npm/man/man1/install.1
index c0069f230..054172efc 100644
--- a/deps/npm/man/man1/install.1
+++ b/deps/npm/man/man1/install.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-INSTALL" "1" "March 2012" "" ""
+.TH "NPM\-INSTALL" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-install\fR \-\- Install a package
diff --git a/deps/npm/man/man1/json.1 b/deps/npm/man/man1/json.1
index 7d242a4f4..a2384ac33 100644
--- a/deps/npm/man/man1/json.1
+++ b/deps/npm/man/man1/json.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-JSON" "1" "March 2012" "" ""
+.TH "NPM\-JSON" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-json\fR \-\- Specifics of npm\'s package\.json handling
@@ -708,7 +708,7 @@ to publish it\.
.P
This is a way to prevent accidental publication of private repositories\.
If you would like to ensure that a given package is only ever published
-to a speciic registry (for example, an internal registry),
+to a specific registry (for example, an internal registry),
then use the \fBpublishConfig\fR hash described below
to override the \fBregistry\fR config param at publish\-time\.
.
diff --git a/deps/npm/man/man1/link.1 b/deps/npm/man/man1/link.1
index 374d5a853..1e4ac176f 100644
--- a/deps/npm/man/man1/link.1
+++ b/deps/npm/man/man1/link.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-LINK" "1" "March 2012" "" ""
+.TH "NPM\-LINK" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-link\fR \-\- Symlink a package folder
diff --git a/deps/npm/man/man1/list.1 b/deps/npm/man/man1/list.1
index df6aae0ae..a629f7eef 100644
--- a/deps/npm/man/man1/list.1
+++ b/deps/npm/man/man1/list.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-LS" "1" "March 2012" "" ""
+.TH "NPM\-LS" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-ls\fR \-\- List installed packages
diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1
index f3718f4ec..9c5669303 100644
--- a/deps/npm/man/man1/npm.1
+++ b/deps/npm/man/man1/npm.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM" "1" "March 2012" "" ""
+.TH "NPM" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm\fR \-\- node package manager
@@ -14,7 +14,7 @@ npm <command> [args]
.fi
.
.SH "VERSION"
-1.1.12
+1.1.16
.
.SH "DESCRIPTION"
npm is the package manager for the Node JavaScript platform\. It puts
diff --git a/deps/npm/man/man1/outdated.1 b/deps/npm/man/man1/outdated.1
index b693c7ece..a30dce9a1 100644
--- a/deps/npm/man/man1/outdated.1
+++ b/deps/npm/man/man1/outdated.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-OUTDATED" "1" "March 2012" "" ""
+.TH "NPM\-OUTDATED" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-outdated\fR \-\- Check for outdated packages
diff --git a/deps/npm/man/man1/owner.1 b/deps/npm/man/man1/owner.1
index 017e0b77c..b91d38231 100644
--- a/deps/npm/man/man1/owner.1
+++ b/deps/npm/man/man1/owner.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-OWNER" "1" "March 2012" "" ""
+.TH "NPM\-OWNER" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-owner\fR \-\- Manage package owners
diff --git a/deps/npm/man/man1/pack.1 b/deps/npm/man/man1/pack.1
index 77928f9d6..56eb667a8 100644
--- a/deps/npm/man/man1/pack.1
+++ b/deps/npm/man/man1/pack.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-PACK" "1" "March 2012" "" ""
+.TH "NPM\-PACK" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-pack\fR \-\- Create a tarball from a package
diff --git a/deps/npm/man/man1/prefix.1 b/deps/npm/man/man1/prefix.1
index c8989a5a8..6284d683c 100644
--- a/deps/npm/man/man1/prefix.1
+++ b/deps/npm/man/man1/prefix.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-PREFIX" "1" "March 2012" "" ""
+.TH "NPM\-PREFIX" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-prefix\fR \-\- Display prefix
diff --git a/deps/npm/man/man1/prune.1 b/deps/npm/man/man1/prune.1
index adcc29df1..53fa1aeba 100644
--- a/deps/npm/man/man1/prune.1
+++ b/deps/npm/man/man1/prune.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-PRUNE" "1" "March 2012" "" ""
+.TH "NPM\-PRUNE" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-prune\fR \-\- Remove extraneous packages
diff --git a/deps/npm/man/man1/publish.1 b/deps/npm/man/man1/publish.1
index 8b16883c4..ef16486f5 100644
--- a/deps/npm/man/man1/publish.1
+++ b/deps/npm/man/man1/publish.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-PUBLISH" "1" "March 2012" "" ""
+.TH "NPM\-PUBLISH" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-publish\fR \-\- Publish a package
diff --git a/deps/npm/man/man1/rebuild.1 b/deps/npm/man/man1/rebuild.1
index fe3fe77b1..4824951c4 100644
--- a/deps/npm/man/man1/rebuild.1
+++ b/deps/npm/man/man1/rebuild.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-REBUILD" "1" "March 2012" "" ""
+.TH "NPM\-REBUILD" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-rebuild\fR \-\- Rebuild a package
diff --git a/deps/npm/man/man1/registry.1 b/deps/npm/man/man1/registry.1
index 92324896c..757cd4748 100644
--- a/deps/npm/man/man1/registry.1
+++ b/deps/npm/man/man1/registry.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-REGISTRY" "1" "March 2012" "" ""
+.TH "NPM\-REGISTRY" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-registry\fR \-\- The JavaScript Package Registry
diff --git a/deps/npm/man/man1/removing-npm.1 b/deps/npm/man/man1/removing-npm.1
index 9d855060d..ff8412a9e 100644
--- a/deps/npm/man/man1/removing-npm.1
+++ b/deps/npm/man/man1/removing-npm.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-REMOVAL" "1" "March 2012" "" ""
+.TH "NPM\-REMOVAL" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-removal\fR \-\- Cleaning the Slate
diff --git a/deps/npm/man/man1/restart.1 b/deps/npm/man/man1/restart.1
index cd5d11e88..804593c5c 100644
--- a/deps/npm/man/man1/restart.1
+++ b/deps/npm/man/man1/restart.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-RESTART" "1" "March 2012" "" ""
+.TH "NPM\-RESTART" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-restart\fR \-\- Start a package
diff --git a/deps/npm/man/man1/root.1 b/deps/npm/man/man1/root.1
index 28fbc5271..25ba27e7a 100644
--- a/deps/npm/man/man1/root.1
+++ b/deps/npm/man/man1/root.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-ROOT" "1" "March 2012" "" ""
+.TH "NPM\-ROOT" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-root\fR \-\- Display npm root
diff --git a/deps/npm/man/man1/run-script.1 b/deps/npm/man/man1/run-script.1
index 747461026..041b7018e 100644
--- a/deps/npm/man/man1/run-script.1
+++ b/deps/npm/man/man1/run-script.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-RUN\-SCRIPT" "1" "March 2012" "" ""
+.TH "NPM\-RUN\-SCRIPT" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-run-script\fR \-\- Run arbitrary package scripts
diff --git a/deps/npm/man/man1/scripts.1 b/deps/npm/man/man1/scripts.1
index d8c5b66b0..4f0b38516 100644
--- a/deps/npm/man/man1/scripts.1
+++ b/deps/npm/man/man1/scripts.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-SCRIPTS" "1" "March 2012" "" ""
+.TH "NPM\-SCRIPTS" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-scripts\fR \-\- How npm handles the "scripts" field
diff --git a/deps/npm/man/man1/search.1 b/deps/npm/man/man1/search.1
index 815452c60..c2015ed6f 100644
--- a/deps/npm/man/man1/search.1
+++ b/deps/npm/man/man1/search.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-SEARCH" "1" "March 2012" "" ""
+.TH "NPM\-SEARCH" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-search\fR \-\- Search for packages
diff --git a/deps/npm/man/man1/semver.1 b/deps/npm/man/man1/semver.1
index 3cd98ff2c..6cb1be072 100644
--- a/deps/npm/man/man1/semver.1
+++ b/deps/npm/man/man1/semver.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-SEMVER" "1" "March 2012" "" ""
+.TH "NPM\-SEMVER" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-semver\fR \-\- The semantic versioner for npm
diff --git a/deps/npm/man/man1/shrinkwrap.1 b/deps/npm/man/man1/shrinkwrap.1
index 37630d9ee..7dab32420 100644
--- a/deps/npm/man/man1/shrinkwrap.1
+++ b/deps/npm/man/man1/shrinkwrap.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-SHRINKWRAP" "1" "March 2012" "" ""
+.TH "NPM\-SHRINKWRAP" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-shrinkwrap\fR \-\- Lock down dependency versions
diff --git a/deps/npm/man/man1/star.1 b/deps/npm/man/man1/star.1
index cd9204e36..9dd32b7fb 100644
--- a/deps/npm/man/man1/star.1
+++ b/deps/npm/man/man1/star.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-STAR" "1" "March 2012" "" ""
+.TH "NPM\-STAR" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-star\fR \-\- Mark your favorite packages
diff --git a/deps/npm/man/man1/start.1 b/deps/npm/man/man1/start.1
index 13077070b..83b075100 100644
--- a/deps/npm/man/man1/start.1
+++ b/deps/npm/man/man1/start.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-START" "1" "March 2012" "" ""
+.TH "NPM\-START" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-start\fR \-\- Start a package
diff --git a/deps/npm/man/man1/stop.1 b/deps/npm/man/man1/stop.1
index 188af6749..aace69a70 100644
--- a/deps/npm/man/man1/stop.1
+++ b/deps/npm/man/man1/stop.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-STOP" "1" "March 2012" "" ""
+.TH "NPM\-STOP" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-stop\fR \-\- Stop a package
diff --git a/deps/npm/man/man1/submodule.1 b/deps/npm/man/man1/submodule.1
index cee5f334e..26a1bd350 100644
--- a/deps/npm/man/man1/submodule.1
+++ b/deps/npm/man/man1/submodule.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-SUBMODULE" "1" "March 2012" "" ""
+.TH "NPM\-SUBMODULE" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-submodule\fR \-\- Add a package as a git submodule
diff --git a/deps/npm/man/man1/tag.1 b/deps/npm/man/man1/tag.1
index e5ac51922..48e23d4d1 100644
--- a/deps/npm/man/man1/tag.1
+++ b/deps/npm/man/man1/tag.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-TAG" "1" "March 2012" "" ""
+.TH "NPM\-TAG" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-tag\fR \-\- Tag a published version
diff --git a/deps/npm/man/man1/test.1 b/deps/npm/man/man1/test.1
index a24e2d0dd..c09f456dd 100644
--- a/deps/npm/man/man1/test.1
+++ b/deps/npm/man/man1/test.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-TEST" "1" "March 2012" "" ""
+.TH "NPM\-TEST" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-test\fR \-\- Test a package
diff --git a/deps/npm/man/man1/uninstall.1 b/deps/npm/man/man1/uninstall.1
index 7005ba1e3..d779b0bf4 100644
--- a/deps/npm/man/man1/uninstall.1
+++ b/deps/npm/man/man1/uninstall.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-RM" "1" "March 2012" "" ""
+.TH "NPM\-RM" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-rm\fR \-\- Remove a package
diff --git a/deps/npm/man/man1/unpublish.1 b/deps/npm/man/man1/unpublish.1
index 4b8bc86df..4a7b96e89 100644
--- a/deps/npm/man/man1/unpublish.1
+++ b/deps/npm/man/man1/unpublish.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-UNPUBLISH" "1" "March 2012" "" ""
+.TH "NPM\-UNPUBLISH" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-unpublish\fR \-\- Remove a package from the registry
diff --git a/deps/npm/man/man1/update.1 b/deps/npm/man/man1/update.1
index ba3e8b653..bdb703633 100644
--- a/deps/npm/man/man1/update.1
+++ b/deps/npm/man/man1/update.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-UPDATE" "1" "March 2012" "" ""
+.TH "NPM\-UPDATE" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-update\fR \-\- Update a package
diff --git a/deps/npm/man/man1/version.1 b/deps/npm/man/man1/version.1
index 139559191..80acf696f 100644
--- a/deps/npm/man/man1/version.1
+++ b/deps/npm/man/man1/version.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-VERSION" "1" "March 2012" "" ""
+.TH "NPM\-VERSION" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-version\fR \-\- Bump a package version
diff --git a/deps/npm/man/man1/view.1 b/deps/npm/man/man1/view.1
index c874ff47f..0ecd6da51 100644
--- a/deps/npm/man/man1/view.1
+++ b/deps/npm/man/man1/view.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-VIEW" "1" "March 2012" "" ""
+.TH "NPM\-VIEW" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-view\fR \-\- View registry info
diff --git a/deps/npm/man/man1/whoami.1 b/deps/npm/man/man1/whoami.1
index 06d221d03..f47a0e84a 100644
--- a/deps/npm/man/man1/whoami.1
+++ b/deps/npm/man/man1/whoami.1
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-WHOAMI" "1" "March 2012" "" ""
+.TH "NPM\-WHOAMI" "1" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-whoami\fR \-\- Display npm username
diff --git a/deps/npm/man/man3/bin.3 b/deps/npm/man/man3/bin.3
index 7aaa11b2a..268f75e6e 100644
--- a/deps/npm/man/man3/bin.3
+++ b/deps/npm/man/man3/bin.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-BIN" "3" "March 2012" "" ""
+.TH "NPM\-BIN" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-bin\fR \-\- Display npm bin folder
diff --git a/deps/npm/man/man3/bugs.3 b/deps/npm/man/man3/bugs.3
index 6d61dcd46..38ee6a1ca 100644
--- a/deps/npm/man/man3/bugs.3
+++ b/deps/npm/man/man3/bugs.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-BUGS" "3" "March 2012" "" ""
+.TH "NPM\-BUGS" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-bugs\fR \-\- Bugs for a package in a web browser maybe
diff --git a/deps/npm/man/man3/commands.3 b/deps/npm/man/man3/commands.3
index c23016df3..e8b8260e6 100644
--- a/deps/npm/man/man3/commands.3
+++ b/deps/npm/man/man3/commands.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-COMMANDS" "3" "March 2012" "" ""
+.TH "NPM\-COMMANDS" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-commands\fR \-\- npm commands
diff --git a/deps/npm/man/man3/config.3 b/deps/npm/man/man3/config.3
index d18739b50..6debd412e 100644
--- a/deps/npm/man/man3/config.3
+++ b/deps/npm/man/man3/config.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-CONFIG" "3" "March 2012" "" ""
+.TH "NPM\-CONFIG" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-config\fR \-\- Manage the npm configuration files
diff --git a/deps/npm/man/man3/deprecate.3 b/deps/npm/man/man3/deprecate.3
index 2448ab3c7..b4b91612e 100644
--- a/deps/npm/man/man3/deprecate.3
+++ b/deps/npm/man/man3/deprecate.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-DEPRECATE" "3" "March 2012" "" ""
+.TH "NPM\-DEPRECATE" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-deprecate\fR \-\- Deprecate a version of a package
diff --git a/deps/npm/man/man3/docs.3 b/deps/npm/man/man3/docs.3
index 8373f6d05..a61b0df6c 100644
--- a/deps/npm/man/man3/docs.3
+++ b/deps/npm/man/man3/docs.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-DOCS" "3" "March 2012" "" ""
+.TH "NPM\-DOCS" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-docs\fR \-\- Docs for a package in a web browser maybe
diff --git a/deps/npm/man/man3/edit.3 b/deps/npm/man/man3/edit.3
index 3f790229e..dc4b183e9 100644
--- a/deps/npm/man/man3/edit.3
+++ b/deps/npm/man/man3/edit.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-EDIT" "3" "March 2012" "" ""
+.TH "NPM\-EDIT" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-edit\fR \-\- Edit an installed package
diff --git a/deps/npm/man/man3/explore.3 b/deps/npm/man/man3/explore.3
index 0d4ee62fe..8817ce008 100644
--- a/deps/npm/man/man3/explore.3
+++ b/deps/npm/man/man3/explore.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-EXPLORE" "3" "March 2012" "" ""
+.TH "NPM\-EXPLORE" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-explore\fR \-\- Browse an installed package
diff --git a/deps/npm/man/man3/help-search.3 b/deps/npm/man/man3/help-search.3
index 291037a1c..d42d68e55 100644
--- a/deps/npm/man/man3/help-search.3
+++ b/deps/npm/man/man3/help-search.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-HELP\-SEARCH" "3" "March 2012" "" ""
+.TH "NPM\-HELP\-SEARCH" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-help-search\fR \-\- Search the help pages
diff --git a/deps/npm/man/man3/init.3 b/deps/npm/man/man3/init.3
index 3a4434c50..f751030a6 100644
--- a/deps/npm/man/man3/init.3
+++ b/deps/npm/man/man3/init.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "INIT" "3" "March 2012" "" ""
+.TH "INIT" "3" "April 2012" "" ""
.
.SH "NAME"
\fBinit\fR \-\- Interactively create a package\.json file
diff --git a/deps/npm/man/man3/install.3 b/deps/npm/man/man3/install.3
index 0c0ee9769..6a9cea4f1 100644
--- a/deps/npm/man/man3/install.3
+++ b/deps/npm/man/man3/install.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-INSTALL" "3" "March 2012" "" ""
+.TH "NPM\-INSTALL" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-install\fR \-\- install a package programmatically
diff --git a/deps/npm/man/man3/link.3 b/deps/npm/man/man3/link.3
index 45c15dc23..edc3905a9 100644
--- a/deps/npm/man/man3/link.3
+++ b/deps/npm/man/man3/link.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-LINK" "3" "March 2012" "" ""
+.TH "NPM\-LINK" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-link\fR \-\- Symlink a package folder
diff --git a/deps/npm/man/man3/load.3 b/deps/npm/man/man3/load.3
index 9d9df2c3a..c44d9f116 100644
--- a/deps/npm/man/man3/load.3
+++ b/deps/npm/man/man3/load.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-LOAD" "3" "March 2012" "" ""
+.TH "NPM\-LOAD" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-load\fR \-\- Load config settings
diff --git a/deps/npm/man/man3/ls.3 b/deps/npm/man/man3/ls.3
index 74736d453..2d45dde31 100644
--- a/deps/npm/man/man3/ls.3
+++ b/deps/npm/man/man3/ls.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-LS" "3" "March 2012" "" ""
+.TH "NPM\-LS" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-ls\fR \-\- List installed packages
diff --git a/deps/npm/man/man3/npm.3 b/deps/npm/man/man3/npm.3
index 257b87618..5cc2a3efa 100644
--- a/deps/npm/man/man3/npm.3
+++ b/deps/npm/man/man3/npm.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM" "3" "March 2012" "" ""
+.TH "NPM" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm\fR \-\- node package manager
@@ -21,7 +21,7 @@ npm\.load(configObject, function (er, npm) {
.fi
.
.SH "VERSION"
-1.1.12
+1.1.16
.
.SH "DESCRIPTION"
This is the API documentation for npm\.
diff --git a/deps/npm/man/man3/outdated.3 b/deps/npm/man/man3/outdated.3
index 258db10e7..4c0bd4dbe 100644
--- a/deps/npm/man/man3/outdated.3
+++ b/deps/npm/man/man3/outdated.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-OUTDATED" "3" "March 2012" "" ""
+.TH "NPM\-OUTDATED" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-outdated\fR \-\- Check for outdated packages
diff --git a/deps/npm/man/man3/owner.3 b/deps/npm/man/man3/owner.3
index edb734ece..922769f76 100644
--- a/deps/npm/man/man3/owner.3
+++ b/deps/npm/man/man3/owner.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-OWNER" "3" "March 2012" "" ""
+.TH "NPM\-OWNER" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-owner\fR \-\- Manage package owners
diff --git a/deps/npm/man/man3/pack.3 b/deps/npm/man/man3/pack.3
index e279d6171..5c0547996 100644
--- a/deps/npm/man/man3/pack.3
+++ b/deps/npm/man/man3/pack.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-PACK" "3" "March 2012" "" ""
+.TH "NPM\-PACK" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-pack\fR \-\- Create a tarball from a package
diff --git a/deps/npm/man/man3/prefix.3 b/deps/npm/man/man3/prefix.3
index 8a01d637e..3ba398aa3 100644
--- a/deps/npm/man/man3/prefix.3
+++ b/deps/npm/man/man3/prefix.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-PREFIX" "3" "March 2012" "" ""
+.TH "NPM\-PREFIX" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-prefix\fR \-\- Display prefix
diff --git a/deps/npm/man/man3/prune.3 b/deps/npm/man/man3/prune.3
index 1aec7d763..566f57e8a 100644
--- a/deps/npm/man/man3/prune.3
+++ b/deps/npm/man/man3/prune.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-PRUNE" "3" "March 2012" "" ""
+.TH "NPM\-PRUNE" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-prune\fR \-\- Remove extraneous packages
diff --git a/deps/npm/man/man3/publish.3 b/deps/npm/man/man3/publish.3
index 060c31ebc..edddf21b9 100644
--- a/deps/npm/man/man3/publish.3
+++ b/deps/npm/man/man3/publish.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-PUBLISH" "3" "March 2012" "" ""
+.TH "NPM\-PUBLISH" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-publish\fR \-\- Publish a package
diff --git a/deps/npm/man/man3/rebuild.3 b/deps/npm/man/man3/rebuild.3
index 7cacbe9a6..a20d55ced 100644
--- a/deps/npm/man/man3/rebuild.3
+++ b/deps/npm/man/man3/rebuild.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-REBUILD" "3" "March 2012" "" ""
+.TH "NPM\-REBUILD" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-rebuild\fR \-\- Rebuild a package
diff --git a/deps/npm/man/man3/restart.3 b/deps/npm/man/man3/restart.3
index 2032a7c95..3530cf919 100644
--- a/deps/npm/man/man3/restart.3
+++ b/deps/npm/man/man3/restart.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-RESTART" "3" "March 2012" "" ""
+.TH "NPM\-RESTART" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-restart\fR \-\- Start a package
diff --git a/deps/npm/man/man3/root.3 b/deps/npm/man/man3/root.3
index a1d629559..8fa00a0f7 100644
--- a/deps/npm/man/man3/root.3
+++ b/deps/npm/man/man3/root.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-ROOT" "3" "March 2012" "" ""
+.TH "NPM\-ROOT" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-root\fR \-\- Display npm root
diff --git a/deps/npm/man/man3/run-script.3 b/deps/npm/man/man3/run-script.3
index 597f7d9a1..4ace64ed5 100644
--- a/deps/npm/man/man3/run-script.3
+++ b/deps/npm/man/man3/run-script.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-RUN\-SCRIPT" "3" "March 2012" "" ""
+.TH "NPM\-RUN\-SCRIPT" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-run-script\fR \-\- Run arbitrary package scripts
diff --git a/deps/npm/man/man3/search.3 b/deps/npm/man/man3/search.3
index 7626321ff..9afb739b7 100644
--- a/deps/npm/man/man3/search.3
+++ b/deps/npm/man/man3/search.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-SEARCH" "3" "March 2012" "" ""
+.TH "NPM\-SEARCH" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-search\fR \-\- Search for packages
diff --git a/deps/npm/man/man3/shrinkwrap.3 b/deps/npm/man/man3/shrinkwrap.3
index 10354ed31..647e4a430 100644
--- a/deps/npm/man/man3/shrinkwrap.3
+++ b/deps/npm/man/man3/shrinkwrap.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-SHRINKWRAP" "3" "March 2012" "" ""
+.TH "NPM\-SHRINKWRAP" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-shrinkwrap\fR \-\- programmatically generate package shrinkwrap file
diff --git a/deps/npm/man/man3/start.3 b/deps/npm/man/man3/start.3
index 531dfa2c4..1d05cdee8 100644
--- a/deps/npm/man/man3/start.3
+++ b/deps/npm/man/man3/start.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-START" "3" "March 2012" "" ""
+.TH "NPM\-START" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-start\fR \-\- Start a package
diff --git a/deps/npm/man/man3/stop.3 b/deps/npm/man/man3/stop.3
index e139ee9a7..5514b4ee3 100644
--- a/deps/npm/man/man3/stop.3
+++ b/deps/npm/man/man3/stop.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-STOP" "3" "March 2012" "" ""
+.TH "NPM\-STOP" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-stop\fR \-\- Stop a package
diff --git a/deps/npm/man/man3/submodule.3 b/deps/npm/man/man3/submodule.3
index d691b7c63..24f4c14d4 100644
--- a/deps/npm/man/man3/submodule.3
+++ b/deps/npm/man/man3/submodule.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-SUBMODULE" "3" "March 2012" "" ""
+.TH "NPM\-SUBMODULE" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-submodule\fR \-\- Add a package as a git submodule
diff --git a/deps/npm/man/man3/tag.3 b/deps/npm/man/man3/tag.3
index 855c174e3..e3f7e4916 100644
--- a/deps/npm/man/man3/tag.3
+++ b/deps/npm/man/man3/tag.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-TAG" "3" "March 2012" "" ""
+.TH "NPM\-TAG" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-tag\fR \-\- Tag a published version
diff --git a/deps/npm/man/man3/test.3 b/deps/npm/man/man3/test.3
index 07be78228..9614b92e8 100644
--- a/deps/npm/man/man3/test.3
+++ b/deps/npm/man/man3/test.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-TEST" "3" "March 2012" "" ""
+.TH "NPM\-TEST" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-test\fR \-\- Test a package
diff --git a/deps/npm/man/man3/uninstall.3 b/deps/npm/man/man3/uninstall.3
index 756ddad40..acc26cde1 100644
--- a/deps/npm/man/man3/uninstall.3
+++ b/deps/npm/man/man3/uninstall.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-UNINSTALL" "3" "March 2012" "" ""
+.TH "NPM\-UNINSTALL" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-uninstall\fR \-\- uninstall a package programmatically
diff --git a/deps/npm/man/man3/unpublish.3 b/deps/npm/man/man3/unpublish.3
index d3e3a75bf..ac35cb83a 100644
--- a/deps/npm/man/man3/unpublish.3
+++ b/deps/npm/man/man3/unpublish.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-UNPUBLISH" "3" "March 2012" "" ""
+.TH "NPM\-UNPUBLISH" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-unpublish\fR \-\- Remove a package from the registry
diff --git a/deps/npm/man/man3/update.3 b/deps/npm/man/man3/update.3
index d8a096aba..ded33bd86 100644
--- a/deps/npm/man/man3/update.3
+++ b/deps/npm/man/man3/update.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-UPDATE" "3" "March 2012" "" ""
+.TH "NPM\-UPDATE" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-update\fR \-\- Update a package
diff --git a/deps/npm/man/man3/version.3 b/deps/npm/man/man3/version.3
index 20ee41507..b9015ebed 100644
--- a/deps/npm/man/man3/version.3
+++ b/deps/npm/man/man3/version.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-VERSION" "3" "March 2012" "" ""
+.TH "NPM\-VERSION" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-version\fR \-\- Bump a package version
diff --git a/deps/npm/man/man3/view.3 b/deps/npm/man/man3/view.3
index f9c253b23..3e8e4a60f 100644
--- a/deps/npm/man/man3/view.3
+++ b/deps/npm/man/man3/view.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-VIEW" "3" "March 2012" "" ""
+.TH "NPM\-VIEW" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-view\fR \-\- View registry info
diff --git a/deps/npm/man/man3/whoami.3 b/deps/npm/man/man3/whoami.3
index fd2ee1c7f..d4beb9ce4 100644
--- a/deps/npm/man/man3/whoami.3
+++ b/deps/npm/man/man3/whoami.3
@@ -1,7 +1,7 @@
.\" Generated with Ronnjs/v0.1
.\" http://github.com/kapouer/ronnjs/
.
-.TH "NPM\-WHOAMI" "3" "March 2012" "" ""
+.TH "NPM\-WHOAMI" "3" "April 2012" "" ""
.
.SH "NAME"
\fBnpm-whoami\fR \-\- Display npm username
diff --git a/deps/npm/node_modules/archy/README.markdown b/deps/npm/node_modules/archy/README.markdown
new file mode 100644
index 000000000..deaba0fd1
--- /dev/null
+++ b/deps/npm/node_modules/archy/README.markdown
@@ -0,0 +1,92 @@
+archy
+=====
+
+Render nested hierarchies `npm ls` style with unicode pipes.
+
+[![build status](https://secure.travis-ci.org/substack/node-archy.png)](http://travis-ci.org/substack/node-archy)
+
+example
+=======
+
+``` js
+var archy = require('archy');
+var s = archy({
+ label : 'beep',
+ nodes : [
+ 'ity',
+ {
+ label : 'boop',
+ nodes : [
+ {
+ label : 'o_O',
+ nodes : [
+ {
+ label : 'oh',
+ nodes : [ 'hello', 'puny' ]
+ },
+ 'human'
+ ]
+ },
+ 'party\ntime!'
+ ]
+ }
+ ]
+});
+console.log(s);
+```
+
+output
+
+```
+beep
+├── ity
+└─┬ boop
+ ├─┬ o_O
+ │ ├─┬ oh
+ │ │ ├── hello
+ │ │ └── puny
+ │ └── human
+ └── party
+ time!
+```
+
+methods
+=======
+
+var archy = require('archy')
+
+archy(obj, prefix='', opts={})
+------------------------------
+
+Return a string representation of `obj` with unicode pipe characters like how
+`npm ls` looks.
+
+`obj` should be a tree of nested objects with `'label'` and `'nodes'` fields.
+`'label'` is a string of text to display at a node level and `'nodes'` is an
+array of the descendents of the current node.
+
+If a node is a string, that string will be used as the `'label'` and an empty
+array of `'nodes'` will be used.
+
+`prefix` gets prepended to all the lines and is used by the algorithm to
+recursively update.
+
+If `'label'` has newlines they will be indented at the present indentation level
+with the current prefix.
+
+To disable unicode results in favor of all-ansi output set `opts.unicode` to
+`false`.
+
+install
+=======
+
+With [npm](http://npmjs.org) do:
+
+```
+npm install archy
+```
+
+license
+=======
+
+MIT/X11
diff --git a/deps/npm/node_modules/archy/index.js b/deps/npm/node_modules/archy/index.js
new file mode 100644
index 000000000..869d64e65
--- /dev/null
+++ b/deps/npm/node_modules/archy/index.js
@@ -0,0 +1,35 @@
+module.exports = function archy (obj, prefix, opts) {
+ if (prefix === undefined) prefix = '';
+ if (!opts) opts = {};
+ var chr = function (s) {
+ var chars = {
+ '│' : '|',
+ 'â””' : '`',
+ '├' : '+',
+ '─' : '-',
+ '┬' : '-'
+ };
+ return opts.unicode === false ? chars[s] : s;
+ };
+
+ if (typeof obj === 'string') obj = { label : obj };
+
+ var nodes = obj.nodes || [];
+ var lines = (obj.label || '').split('\n');
+ var splitter = '\n' + prefix + (nodes.length ? chr('│') : ' ') + ' ';
+
+ return prefix
+ + lines.join(splitter) + '\n'
+ + nodes.map(function (node, ix) {
+ var last = ix === nodes.length - 1;
+ var more = node.nodes && node.nodes.length;
+ var prefix_ = prefix + (last ? ' ' : chr('│')) + ' ';
+
+ return prefix
+ + (last ? chr('└') : chr('├')) + chr('─')
+ + (more ? chr('┬') : chr('─')) + ' '
+ + archy(node, prefix_, opts).slice(prefix.length + 2)
+ ;
+ }).join('')
+ ;
+};
diff --git a/deps/npm/node_modules/archy/package.json b/deps/npm/node_modules/archy/package.json
new file mode 100644
index 000000000..81c3e2669
--- /dev/null
+++ b/deps/npm/node_modules/archy/package.json
@@ -0,0 +1,52 @@
+{
+ "name": "archy",
+ "version": "0.0.2",
+ "description": "render nested hierarchies `npm ls` style with unicode pipes",
+ "main": "index.js",
+ "directories": {
+ "lib": ".",
+ "example": "example",
+ "test": "test"
+ },
+ "devDependencies": {
+ "tap": "~0.2.3"
+ },
+ "scripts": {
+ "test": "tap test"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/substack/node-archy.git"
+ },
+ "keywords": [
+ "hierarchy",
+ "npm ls",
+ "unicode",
+ "pretty",
+ "print"
+ ],
+ "author": {
+ "name": "James Halliday",
+ "email": "mail@substack.net",
+ "url": "http://substack.net"
+ },
+ "license": "MIT/X11",
+ "engine": {
+ "node": ">=0.4"
+ },
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "_id": "archy@0.0.2",
+ "dependencies": {},
+ "optionalDependencies": {},
+ "engines": {
+ "node": "*"
+ },
+ "_engineSupported": true,
+ "_npmVersion": "1.1.13",
+ "_nodeVersion": "v0.7.7-pre",
+ "_defaultsLoaded": true,
+ "_from": "archy@0.0.2"
+}
diff --git a/deps/npm/node_modules/chownr/README.md b/deps/npm/node_modules/chownr/README.md
new file mode 100644
index 000000000..70e9a54a3
--- /dev/null
+++ b/deps/npm/node_modules/chownr/README.md
@@ -0,0 +1,3 @@
+Like `chown -R`.
+
+Takes the same arguments as `fs.chown()`
diff --git a/deps/npm/node_modules/chownr/chownr.js b/deps/npm/node_modules/chownr/chownr.js
new file mode 100644
index 000000000..598b8f844
--- /dev/null
+++ b/deps/npm/node_modules/chownr/chownr.js
@@ -0,0 +1,41 @@
+module.exports = chownr
+chownr.sync = chownrSync
+
+var fs = require("fs")
+, path = require("path")
+
+function chownr (p, uid, gid, cb) {
+ fs.readdir(p, function (er, children) {
+ // any error other than ENOTDIR means it's not readable, or
+ // doesn't exist. give up.
+ if (er && er.code !== "ENOTDIR") return cb(er)
+ if (er || !children.length) return fs.chown(p, uid, gid, cb)
+
+ var len = children.length
+ , errState = null
+ children.forEach(function (child) {
+ chownr(path.resolve(p, child), uid, gid, then)
+ })
+ function then (er) {
+ if (errState) return
+ if (er) return cb(errState = er)
+ if (-- len === 0) return fs.chown(p, uid, gid, cb)
+ }
+ })
+}
+
+function chownrSync (p, uid, gid) {
+ var children
+ try {
+ children = fs.readdirSync(p)
+ } catch (er) {
+ if (er && er.code === "ENOTDIR") return fs.chownSync(p, uid, gid)
+ throw er
+ }
+ if (!children.length) return fs.chownSync(p, uid, gid)
+
+ children.forEach(function (child) {
+ chownrSync(path.resolve(p, child), uid, gid)
+ })
+ return fs.chownSync(p, uid, gid)
+}
diff --git a/deps/npm/node_modules/chownr/package.json b/deps/npm/node_modules/chownr/package.json
new file mode 100644
index 000000000..10e52c4dc
--- /dev/null
+++ b/deps/npm/node_modules/chownr/package.json
@@ -0,0 +1,38 @@
+{
+ "author": {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me",
+ "url": "http://blog.izs.me/"
+ },
+ "name": "chownr",
+ "description": "like `chown -R`",
+ "version": "0.0.1",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/isaacs/chownr.git"
+ },
+ "main": "chownr.js",
+ "devDependencies": {
+ "tap": "0.2",
+ "mkdirp": "0.3",
+ "rimraf": ""
+ },
+ "scripts": {
+ "test": "tap test/*.js"
+ },
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "_id": "chownr@0.0.1",
+ "dependencies": {},
+ "optionalDependencies": {},
+ "engines": {
+ "node": "*"
+ },
+ "_engineSupported": true,
+ "_npmVersion": "1.1.13",
+ "_nodeVersion": "v0.7.7-pre",
+ "_defaultsLoaded": true,
+ "_from": "chownr"
+}
diff --git a/deps/npm/node_modules/fstream-npm/.npmignore b/deps/npm/node_modules/fstream-npm/.npmignore
new file mode 100644
index 000000000..06aea6917
--- /dev/null
+++ b/deps/npm/node_modules/fstream-npm/.npmignore
@@ -0,0 +1,2 @@
+# ignore the output junk from the example scripts
+example/output
diff --git a/deps/npm/node_modules/fstream-npm/README.md b/deps/npm/node_modules/fstream-npm/README.md
new file mode 100644
index 000000000..2c01e9073
--- /dev/null
+++ b/deps/npm/node_modules/fstream-npm/README.md
@@ -0,0 +1,18 @@
+# fstream-npm
+
+This is an fstream DirReader class that will read a directory and filter
+things according to the semantics of what goes in an npm package.
+
+For example:
+
+```javascript
+// This will print out all the files that would be included
+// by 'npm publish' or 'npm install' of this directory.
+
+var FN = require("fstream-npm")
+FN({ path: "./" })
+ .on("child", function (e) {
+ console.error(e.path.substr(e.root.path.length + 1))
+ })
+```
+
diff --git a/deps/npm/node_modules/fstream-npm/fstream-npm.js b/deps/npm/node_modules/fstream-npm/fstream-npm.js
new file mode 100644
index 000000000..4ad001253
--- /dev/null
+++ b/deps/npm/node_modules/fstream-npm/fstream-npm.js
@@ -0,0 +1,302 @@
+var Ignore = require("fstream-ignore")
+, inherits = require("inherits")
+, path = require("path")
+, fs = require("fs")
+
+module.exports = Packer
+
+inherits(Packer, Ignore)
+
+function Packer (props) {
+ if (!(this instanceof Packer)) {
+ return new Packer(props)
+ }
+
+ if (typeof props === "string") {
+ props = { path: props }
+ }
+
+ props.ignoreFiles = [ ".npmignore",
+ ".gitignore",
+ "package.json" ]
+
+ Ignore.call(this, props)
+
+ this.bundled = props.bundled
+ this.bundleLinks = props.bundleLinks
+ this.package = props.package
+
+ // in a node_modules folder, resolve symbolic links to
+ // bundled dependencies when creating the package.
+ props.follow = this.follow = this.basename === "node_modules"
+ // console.error("follow?", this.path, props.follow)
+
+ if (this === this.root ||
+ this.parent &&
+ this.parent.basename === "node_modules" &&
+ this.basename.charAt(0) !== ".") {
+ this.readBundledLinks()
+ }
+
+
+ this.on("entryStat", function (entry, props) {
+ // files should *always* get into tarballs
+ // in a user-writable state, even if they're
+ // being installed from some wackey vm-mounted
+ // read-only filesystem.
+ entry.mode = props.mode = props.mode | 0200
+ })
+}
+
+Packer.prototype.readBundledLinks = function () {
+ if (this._paused) {
+ this.once("resume", this.addIgnoreFiles)
+ return
+ }
+
+ this.pause()
+ fs.readdir(this.path + "/node_modules", function (er, list) {
+ // no harm if there's no bundle
+ var l = list && list.length
+ if (er || l === 0) return this.resume()
+
+ var errState = null
+ , then = function then (er) {
+ if (errState) return
+ if (er) return errState = er, this.resume()
+ if (-- l === 0) return this.resume()
+ }.bind(this)
+
+ list.forEach(function (pkg) {
+ if (pkg.charAt(0) === ".") return then()
+ var pd = this.path + "/node_modules/" + pkg
+ fs.realpath(pd, function (er, rp) {
+ if (er) return then()
+ this.bundleLinks = this.bundleLinks || {}
+ this.bundleLinks[pkg] = rp
+ then()
+ }.bind(this))
+ }, this)
+ }.bind(this))
+}
+
+Packer.prototype.applyIgnores = function (entry, partial, entryObj) {
+ // package.json files can never be ignored.
+ if (entry === "package.json") return true
+
+ // special rules. see below.
+ if (entry === "node_modules") return true
+
+ // some files are *never* allowed under any circumstances
+ if (entry === ".git" ||
+ entry === ".lock-wscript" ||
+ entry.match(/^\.wafpickle-[0-9]+$/) ||
+ entry === "CVS" ||
+ entry === ".svn" ||
+ entry === ".hg" ||
+ entry.match(/^\..*\.swp$/) ||
+ entry === ".DS_Store" ||
+ entry.match(/^\._/) ||
+ entry === "npm-debug.log"
+ ) {
+ return false
+ }
+
+ // in a node_modules folder, we only include bundled dependencies
+ // also, prevent packages in node_modules from being affected
+ // by rules set in the containing package, so that
+ // bundles don't get busted.
+ // Also, once in a bundle, everything is installed as-is
+ // To prevent infinite cycles in the case of cyclic deps that are
+ // linked with npm link, even in a bundle, deps are only bundled
+ // if they're not already present at a higher level.
+ if (this.basename === "node_modules") {
+ // bubbling up. stop here and allow anything the bundled pkg allows
+ if (entry.indexOf("/") !== -1) return true
+
+ // never include the .bin. It's typically full of platform-specific
+ // stuff like symlinks and .cmd files anyway.
+ if (entry === ".bin") return false
+
+ var shouldBundle = false
+ // the package root.
+ var p = this.parent
+ // the package before this one.
+ var pp = p && p.parent
+
+ // if this entry has already been bundled, and is a symlink,
+ // and it is the *same* symlink as this one, then exclude it.
+ if (pp && pp.bundleLinks && this.bundleLinks &&
+ pp.bundleLinks[entry] === this.bundleLinks[entry]) {
+ return false
+ }
+
+ // since it's *not* a symbolic link, if we're *already* in a bundle,
+ // then we should include everything.
+ if (pp && pp.package) {
+ return true
+ }
+
+ // only include it at this point if it's a bundleDependency
+ var bd = this.package && this.package.bundleDependencies
+ var shouldBundle = bd && bd.indexOf(entry) !== -1
+ // if we're not going to bundle it, then it doesn't count as a bundleLink
+ // if (this.bundleLinks && !shouldBundle) delete this.bundleLinks[entry]
+ return shouldBundle
+ }
+ // if (this.bundled) return true
+
+ return Ignore.prototype.applyIgnores.call(this, entry, partial, entryObj)
+}
+
+Packer.prototype.addIgnoreFiles = function () {
+ var entries = this.entries
+ // if there's a .npmignore, then we do *not* want to
+ // read the .gitignore.
+ if (-1 !== entries.indexOf(".npmignore")) {
+ var i = entries.indexOf(".gitignore")
+ if (i !== -1) {
+ entries.splice(i, 1)
+ }
+ }
+
+ this.entries = entries
+
+ Ignore.prototype.addIgnoreFiles.call(this)
+}
+
+
+Packer.prototype.readRules = function (buf, e) {
+ if (e !== "package.json") {
+ return Ignore.prototype.readRules.call(this, buf, e)
+ }
+
+ var p = this.package = JSON.parse(buf.toString())
+
+ if (this === this.root) {
+ this.bundleLinks = this.bundleLinks || {}
+ this.bundleLinks[p.name] = this._path
+ }
+
+ this.packageRoot = true
+ this.emit("package", p)
+
+ // make bundle deps predictable
+ if (p.bundledDependencies && !p.bundleDependencies) {
+ p.bundleDependencies = p.bundledDependencies
+ delete p.bundledDependencies
+ }
+
+ if (!p.files || !Array.isArray(p.files)) return []
+
+ // ignore everything except what's in the files array.
+ return ["*"].concat(p.files.map(function (f) {
+ return "!" + f
+ })).concat(p.files.map(function (f) {
+ return "!" + f.replace(/\/+$/, "") + "/**"
+ }))
+}
+
+Packer.prototype.getChildProps = function (stat) {
+ var props = Ignore.prototype.getChildProps.call(this, stat)
+
+ props.package = this.package
+
+ props.bundled = this.bundled && this.bundled.slice(0)
+ props.bundleLinks = this.bundleLinks &&
+ Object.create(this.bundleLinks)
+
+ // Directories have to be read as Packers
+ // otherwise fstream.Reader will create a DirReader instead.
+ if (stat.isDirectory()) {
+ props.type = this.constructor
+ }
+
+ // only follow symbolic links directly in the node_modules folder.
+ props.follow = false
+ return props
+}
+
+
+var order =
+ [ "package.json"
+ , ".npmignore"
+ , ".gitignore"
+ , /^README(\.md)?$/
+ , "LICENCE"
+ , "LICENSE"
+ , /\.js$/ ]
+
+Packer.prototype.sort = function (a, b) {
+ for (var i = 0, l = order.length; i < l; i ++) {
+ var o = order[i]
+ if (typeof o === "string") {
+ if (a === o) return -1
+ if (b === o) return 1
+ } else {
+ if (a.match(o)) return -1
+ if (b.match(o)) return 1
+ }
+ }
+
+ // deps go in the back
+ if (a === "node_modules") return 1
+ if (b === "node_modules") return -1
+
+ return Ignore.prototype.sort.call(this, a, b)
+}
+
+
+
+Packer.prototype.emitEntry = function (entry) {
+ if (this._paused) {
+ this.once("resume", this.emitEntry.bind(this, entry))
+ return
+ }
+
+ // if there is a .gitignore, then we're going to
+ // rename it to .npmignore in the output.
+ if (entry.basename === ".gitignore") {
+ entry.basename = ".npmignore"
+ entry.path = path.resolve(entry.dirname, entry.basename)
+ }
+
+ // all *.gyp files are renamed to binding.gyp for node-gyp
+ if (entry.basename.match(/\.gyp$/)) {
+ entry.basename = "binding.gyp"
+ entry.path = path.resolve(entry.dirname, entry.basename)
+ }
+
+ // skip over symbolic links
+ if (entry.type === "SymbolicLink") {
+ entry.abort()
+ return
+ }
+
+ if (entry.type !== "Directory") {
+ // make it so that the folder in the tarball is named "package"
+ var h = path.dirname((entry.root || entry).path)
+ , t = entry.path.substr(h.length + 1).replace(/^[^\/\\]+/, "package")
+ , p = h + "/" + t
+
+ entry.path = p
+ entry.dirname = path.dirname(p)
+ return Ignore.prototype.emitEntry.call(this, entry)
+ }
+
+ // we don't want empty directories to show up in package
+ // tarballs.
+ // don't emit entry events for dirs, but still walk through
+ // and read them. This means that we need to proxy up their
+ // entry events so that those entries won't be missed, since
+ // .pipe() doesn't do anythign special with "child" events, on
+ // with "entry" events.
+ var me = this
+ entry.on("entry", function (e) {
+ if (e.parent === entry) {
+ e.parent = me
+ me.emit("entry", e)
+ }
+ })
+ entry.on("package", this.emit.bind(this, "package"))
+}
diff --git a/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/.npmignore b/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/.npmignore
new file mode 100644
index 000000000..a843dc44a
--- /dev/null
+++ b/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/.npmignore
@@ -0,0 +1 @@
+test/fixtures
diff --git a/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/README.md b/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/README.md
new file mode 100644
index 000000000..31170feae
--- /dev/null
+++ b/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/README.md
@@ -0,0 +1,22 @@
+# fstream-ignore
+
+A fstream DirReader that filters out files that match globs in `.ignore`
+files throughout the tree, like how git ignores files based on a
+`.gitignore` file.
+
+Here's an example:
+
+```javascript
+var Ignore = require("fstream-ignore")
+Ignore({ path: __dirname
+ , ignoreFiles: [".ignore", ".gitignore"]
+ })
+ .on("child", function (c) {
+ console.error(c.path.substr(c.root.path.length + 1))
+ })
+ .pipe(tar.Pack())
+ .pipe(fs.createWriteStream("foo.tar"))
+```
+
+This will tar up the files in __dirname into `foo.tar`, ignoring
+anything matched by the globs in any .iginore or .gitignore file.
diff --git a/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/ignore.js b/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/ignore.js
new file mode 100644
index 000000000..0728f7c8f
--- /dev/null
+++ b/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/ignore.js
@@ -0,0 +1,275 @@
+// Essentially, this is a fstream.DirReader class, but with a
+// bit of special logic to read the specified sort of ignore files,
+// and a filter that prevents it from picking up anything excluded
+// by those files.
+
+var Minimatch = require("minimatch").Minimatch
+, fstream = require("fstream")
+, DirReader = fstream.DirReader
+, inherits = require("inherits")
+, path = require("path")
+, fs = require("fs")
+
+module.exports = IgnoreReader
+
+inherits(IgnoreReader, DirReader)
+
+function IgnoreReader (props) {
+ if (!(this instanceof IgnoreReader)) {
+ return new IgnoreReader(props)
+ }
+
+ // must be a Directory type
+ if (typeof props === "string") {
+ props = { path: path.resolve(props) }
+ }
+
+ props.type = "Directory"
+ props.Directory = true
+
+ if (!props.ignoreFiles) props.ignoreFiles = [".ignore"]
+ this.ignoreFiles = props.ignoreFiles
+
+ this.ignoreRules = null
+
+ // ensure that .ignore files always show up at the top of the list
+ // that way, they can be read before proceeding to handle other
+ // entries in that same folder
+ if (props.sort) {
+ this._sort = props.sort === "alpha" ? alphasort : props.sort
+ props.sort = null
+ }
+
+ this.on("entries", function () {
+ // if there are any ignore files in the list, then
+ // pause and add them.
+ // then, filter the list based on our ignoreRules
+
+ var hasIg = this.entries.some(this.isIgnoreFile, this)
+
+ if (!hasIg) return this.filterEntries()
+
+ this.addIgnoreFiles()
+ })
+
+ // we filter entries before we know what they are.
+ // however, directories have to be re-tested against
+ // rules with a "/" appended, because "a/b/" will only
+ // match if "a/b" is a dir, and not otherwise.
+ this.on("_entryStat", function (entry, props) {
+ var t = entry.basename
+ if (!this.applyIgnores(entry.basename,
+ entry.type === "Directory",
+ entry)) {
+ entry.abort()
+ }
+ }.bind(this))
+
+ DirReader.call(this, props)
+}
+
+
+IgnoreReader.prototype.addIgnoreFiles = function () {
+ if (this._paused) {
+ this.once("resume", this.addIgnoreFiles)
+ return
+ }
+ if (this._ignoreFilesAdded) return
+ this._ignoreFilesAdded = true
+
+ var newIg = this.entries.filter(this.isIgnoreFile, this)
+ , count = newIg.length
+ , errState = null
+
+ if (!count) return
+
+ this.pause()
+
+ var then = function then (er) {
+ if (errState) return
+ if (er) return this.emit("error", errState = er)
+ if (-- count === 0) {
+ this.filterEntries()
+ this.resume()
+ }
+ }.bind(this)
+
+ newIg.forEach(function (ig) {
+ this.addIgnoreFile(ig, then)
+ }, this)
+}
+
+
+IgnoreReader.prototype.isIgnoreFile = function (e) {
+ return e !== "." &&
+ e !== ".." &&
+ -1 !== this.ignoreFiles.indexOf(e)
+}
+
+
+IgnoreReader.prototype.getChildProps = function (stat) {
+ var props = DirReader.prototype.getChildProps.call(this, stat)
+ props.ignoreFiles = this.ignoreFiles
+
+ // Directories have to be read as IgnoreReaders
+ // otherwise fstream.Reader will create a DirReader instead.
+ if (stat.isDirectory()) {
+ props.type = this.constructor
+ }
+ return props
+}
+
+
+IgnoreReader.prototype.addIgnoreFile = function (e, cb) {
+ // read the file, and then call addIgnoreRules
+ // if there's an error, then tell the cb about it.
+
+ var ig = path.resolve(this.path, e)
+ fs.readFile(ig, function (er, data) {
+ if (er) return cb(er)
+
+ this.emit("ignoreFile", e, data)
+ var rules = this.readRules(data, e)
+ this.addIgnoreRules(rules, e)
+ cb()
+ }.bind(this))
+}
+
+
+IgnoreReader.prototype.readRules = function (buf, e) {
+ return buf.toString().split(/\r?\n/)
+}
+
+
+// Override this to do fancier things, like read the
+// "files" array from a package.json file or something.
+IgnoreReader.prototype.addIgnoreRules = function (set, e) {
+ // filter out anything obvious
+ set = set.filter(function (s) {
+ s = s.trim()
+ return s && !s.match(/^#/)
+ })
+
+ // no rules to add!
+ if (!set.length) return
+
+ // now get a minimatch object for each one of these.
+ // Note that we need to allow dot files by default, and
+ // not switch the meaning of their exclusion
+ var mmopt = { matchBase: true, dot: true, flipNegate: true }
+ , mm = set.map(function (s) {
+ var m = new Minimatch(s, mmopt)
+ m.ignoreFile = e
+ return m
+ })
+
+ if (!this.ignoreRules) this.ignoreRules = []
+ this.ignoreRules.push.apply(this.ignoreRules, mm)
+}
+
+
+IgnoreReader.prototype.filterEntries = function () {
+ // this exclusion is at the point where we know the list of
+ // entries in the dir, but don't know what they are. since
+ // some of them *might* be directories, we have to run the
+ // match in dir-mode as well, so that we'll pick up partials
+ // of files that will be included later. Anything included
+ // at this point will be checked again later once we know
+ // what it is.
+ this.entries = this.entries.filter(function (entry) {
+ // at this point, we don't know if it's a dir or not.
+ return this.applyIgnores(entry) || this.applyIgnores(entry, true)
+ }, this)
+}
+
+
+IgnoreReader.prototype.applyIgnores = function (entry, partial, obj) {
+ var included = true
+
+ // this = /a/b/c
+ // entry = d
+ // parent /a/b sees c/d
+ if (this.parent && this.parent.applyIgnores) {
+ var pt = this.basename + "/" + entry
+ included = this.parent.applyIgnores(pt, partial)
+ }
+
+ // Negated Rules
+ // Since we're *ignoring* things here, negating means that a file
+ // is re-included, if it would have been excluded by a previous
+ // rule. So, negated rules are only relevant if the file
+ // has been excluded.
+ //
+ // Similarly, if a file has been excluded, then there's no point
+ // trying it against rules that have already been applied
+ //
+ // We're using the "flipnegate" flag here, which tells minimatch
+ // to set the "negate" for our information, but still report
+ // whether the core pattern was a hit or a miss.
+
+ if (!this.ignoreRules) {
+ return included
+ }
+
+ this.ignoreRules.forEach(function (rule) {
+ // negation means inclusion
+ if (rule.negate && included ||
+ !rule.negate && !included) {
+ // unnecessary
+ return
+ }
+
+ // first, match against /foo/bar
+ var match = rule.match("/" + entry)
+
+ if (!match) {
+ // try with the leading / trimmed off the test
+ // eg: foo/bar instead of /foo/bar
+ match = rule.match(entry)
+ }
+
+ // if the entry is a directory, then it will match
+ // with a trailing slash. eg: /foo/bar/ or foo/bar/
+ if (!match && partial) {
+ match = rule.match("/" + entry + "/") ||
+ rule.match(entry + "/")
+ }
+
+ // When including a file with a negated rule, it's
+ // relevant if a directory partially matches, since
+ // it may then match a file within it.
+ // Eg, if you ignore /a, but !/a/b/c
+ if (!match && rule.negate && partial) {
+ match = rule.match("/" + entry, true) ||
+ rule.match(entry, true)
+ }
+
+ if (match) {
+ included = rule.negate
+ }
+ }, this)
+
+ return included
+}
+
+
+IgnoreReader.prototype.sort = function (a, b) {
+ var aig = this.ignoreFiles.indexOf(a) !== -1
+ , big = this.ignoreFiles.indexOf(b) !== -1
+
+ if (aig && !big) return -1
+ if (big && !aig) return 1
+ return this._sort(a, b)
+}
+
+IgnoreReader.prototype._sort = function (a, b) {
+ return 0
+}
+
+function alphasort (a, b) {
+ return a === b ? 0
+ : a.toLowerCase() > b.toLowerCase() ? 1
+ : a.toLowerCase() < b.toLowerCase() ? -1
+ : a > b ? 1
+ : -1
+}
diff --git a/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/package.json b/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/package.json
new file mode 100644
index 000000000..cc8cde03f
--- /dev/null
+++ b/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/package.json
@@ -0,0 +1,42 @@
+{
+ "author": {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me",
+ "url": "http://blog.izs.me/"
+ },
+ "name": "fstream-ignore",
+ "description": "A thing for ignoring files based on globs",
+ "version": "0.0.5",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/isaacs/fstream-ignore.git"
+ },
+ "main": "ignore.js",
+ "scripts": {
+ "test": "tap test/*.js"
+ },
+ "dependencies": {
+ "minimatch": "~0.2.0",
+ "fstream": "~0.1.17",
+ "inherits": "~1.0.0"
+ },
+ "devDependencies": {
+ "tap": "",
+ "rimraf": "",
+ "mkdirp": ""
+ },
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "_id": "fstream-ignore@0.0.5",
+ "optionalDependencies": {},
+ "engines": {
+ "node": "*"
+ },
+ "_engineSupported": true,
+ "_npmVersion": "1.1.13",
+ "_nodeVersion": "v0.7.7-pre",
+ "_defaultsLoaded": true,
+ "_from": "fstream-ignore@~0.0.5"
+}
diff --git a/deps/npm/node_modules/fstream-npm/package.json b/deps/npm/node_modules/fstream-npm/package.json
new file mode 100644
index 000000000..66dc93290
--- /dev/null
+++ b/deps/npm/node_modules/fstream-npm/package.json
@@ -0,0 +1,34 @@
+{
+ "author": {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me",
+ "url": "http://blog.izs.me/"
+ },
+ "name": "fstream-npm",
+ "description": "fstream class for creating npm packages",
+ "version": "0.0.4",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/isaacs/fstream-npm.git"
+ },
+ "main": "./fstream-npm.js",
+ "dependencies": {
+ "fstream-ignore": "~0.0.5",
+ "inherits": ""
+ },
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "_id": "fstream-npm@0.0.4",
+ "devDependencies": {},
+ "optionalDependencies": {},
+ "engines": {
+ "node": "*"
+ },
+ "_engineSupported": true,
+ "_npmVersion": "1.1.13",
+ "_nodeVersion": "v0.7.7-pre",
+ "_defaultsLoaded": true,
+ "_from": "fstream-npm@0 >=0.0.3"
+}
diff --git a/deps/npm/node_modules/fstream/lib/abstract.js b/deps/npm/node_modules/fstream/lib/abstract.js
index add48b945..5675d4a1b 100644
--- a/deps/npm/node_modules/fstream/lib/abstract.js
+++ b/deps/npm/node_modules/fstream/lib/abstract.js
@@ -20,6 +20,11 @@ Abstract.prototype.on = function (ev, fn) {
return this
}
+Abstract.prototype.abort = function () {
+ this._aborted = true
+ this.emit("abort")
+}
+
Abstract.prototype.destroy = function () {}
Abstract.prototype.warn = function (msg, code) {
diff --git a/deps/npm/node_modules/fstream/lib/dir-reader.js b/deps/npm/node_modules/fstream/lib/dir-reader.js
index ab990d150..6a418c0bc 100644
--- a/deps/npm/node_modules/fstream/lib/dir-reader.js
+++ b/deps/npm/node_modules/fstream/lib/dir-reader.js
@@ -11,6 +11,7 @@ var fs = require("graceful-fs")
, mkdir = require("mkdirp")
, path = require("path")
, Reader = require("./reader.js")
+ , assert = require("assert").ok
inherits(DirReader, Reader)
@@ -24,25 +25,42 @@ function DirReader (props) {
throw new Error("Non-directory type "+ props.type)
}
- me._entries = null
+ me.entries = null
me._index = -1
me._paused = false
me._length = -1
+ if (props.sort) {
+ this.sort = props.sort
+ }
+
Reader.call(this, props)
}
DirReader.prototype._getEntries = function () {
var me = this
+
+ // race condition. might pause() before calling _getEntries,
+ // and then resume, and try to get them a second time.
+ if (me._gotEntries) return
+ me._gotEntries = true
+
fs.readdir(me._path, function (er, entries) {
if (er) return me.error(er)
- me._entries = entries
- me._length = entries.length
- // console.error("DR %s sort =", me.path, me.props.sort)
- if (typeof me.props.sort === "function") {
- me._entries.sort(me.props.sort)
+
+ me.entries = entries
+
+ me.emit("entries", entries)
+ if (me._paused) me.once("resume", processEntries)
+ else processEntries()
+
+ function processEntries () {
+ me._length = me.entries.length
+ if (typeof me.sort === "function") {
+ me.entries = me.entries.sort(me.sort.bind(me))
+ }
+ me._read()
}
- me._read()
})
}
@@ -50,7 +68,7 @@ DirReader.prototype._getEntries = function () {
DirReader.prototype._read = function () {
var me = this
- if (!me._entries) return me._getEntries()
+ if (!me.entries) return me._getEntries()
if (me._paused || me._currentEntry || me._aborted) {
// console.error("DR paused=%j, current=%j, aborted=%j", me._paused, !!me._currentEntry, me._aborted)
@@ -58,7 +76,7 @@ DirReader.prototype._read = function () {
}
me._index ++
- if (me._index >= me._length) {
+ if (me._index >= me.entries.length) {
if (!me._ended) {
me._ended = true
me.emit("end")
@@ -70,20 +88,26 @@ DirReader.prototype._read = function () {
// ok, handle this one, then.
// save creating a proxy, by stat'ing the thing now.
- var p = path.resolve(me._path, me._entries[me._index])
+ var p = path.resolve(me._path, me.entries[me._index])
+ assert(p !== me._path)
+ assert(me.entries[me._index])
+
// set this to prevent trying to _read() again in the stat time.
me._currentEntry = p
fs[ me.props.follow ? "stat" : "lstat" ](p, function (er, stat) {
if (er) return me.error(er)
- var entry = Reader({ path: p
- , depth: me.depth + 1
- , root: me.root || me._proxy || me
- , parent: me._proxy || me
- , follow: me.follow
- , filter: me.filter
- , sort: me.props.sort
- }, stat)
+ var who = me._proxy || me
+
+ stat.path = p
+ stat.basename = path.basename(p)
+ stat.dirname = path.dirname(p)
+ var childProps = me.getChildProps.call(who, stat)
+ childProps.path = p
+ childProps.basename = path.basename(p)
+ childProps.dirname = path.dirname(p)
+
+ var entry = Reader(childProps, stat)
// console.error("DR Entry", p, stat.size)
@@ -94,17 +118,25 @@ DirReader.prototype._read = function () {
// This nomenclature is not completely final.
entry.on("pause", function (who) {
- if (!me._paused) {
+ if (!me._paused && !entry._disowned) {
me.pause(who)
}
})
entry.on("resume", function (who) {
- if (me._paused) {
+ if (me._paused && !entry._disowned) {
me.resume(who)
}
})
+ entry.on("stat", function (props) {
+ me.emit("_entryStat", entry, props)
+ if (entry._aborted) return
+ if (entry._paused) entry.once("resume", function () {
+ me.emit("entryStat", entry, props)
+ })
+ })
+
entry.on("ready", function EMITCHILD () {
// console.error("DR emit child", entry._path)
if (me._paused) {
@@ -122,23 +154,25 @@ DirReader.prototype._read = function () {
if (entry.type === "Socket") {
me.emit("socket", entry)
} else {
- me.emit("entry", entry)
- me.emit("child", entry)
+ me.emitEntry(entry)
}
})
var ended = false
entry.on("close", onend)
+ entry.on("disown", onend)
function onend () {
if (ended) return
ended = true
me.emit("childEnd", entry)
me.emit("entryEnd", entry)
me._currentEntry = null
- me._read()
+ if (!me._paused) {
+ me._read()
+ }
}
- // XXX Make this work in node.
+ // XXX Remove this. Works in node as of 0.6.2 or so.
// Long filenames should not break stuff.
entry.on("error", function (er) {
if (entry._swallowErrors) {
@@ -160,6 +194,26 @@ DirReader.prototype._read = function () {
})
}
+DirReader.prototype.disown = function (entry) {
+ entry.emit("beforeDisown")
+ entry._disowned = true
+ entry.parent = entry.root = null
+ if (entry === this._currentEntry) {
+ this._currentEntry = null
+ }
+ entry.emit("disown")
+}
+
+DirReader.prototype.getChildProps = function (stat) {
+ return { depth: this.depth + 1
+ , root: this.root || this
+ , parent: this
+ , follow: this.follow
+ , filter: this.filter
+ , sort: this.props.sort
+ }
+}
+
DirReader.prototype.pause = function (who) {
var me = this
if (me._paused) return
@@ -185,8 +239,11 @@ DirReader.prototype.resume = function (who) {
}
if (me._currentEntry) {
- if (me._currentEntry.resume) {
- me._currentEntry.resume(who)
- }
+ if (me._currentEntry.resume) me._currentEntry.resume(who)
} else me._read()
}
+
+DirReader.prototype.emitEntry = function (entry) {
+ this.emit("entry", entry)
+ this.emit("child", entry)
+}
diff --git a/deps/npm/node_modules/fstream/lib/dir-writer.js b/deps/npm/node_modules/fstream/lib/dir-writer.js
index 26338bd99..7073b883e 100644
--- a/deps/npm/node_modules/fstream/lib/dir-writer.js
+++ b/deps/npm/node_modules/fstream/lib/dir-writer.js
@@ -100,7 +100,9 @@ DirWriter.prototype._process = function () {
// don't allow recursive copying
var p = entry
do {
- if (p._path === me.root._path || p._path === me._path) {
+ var pp = p._path || p.path
+ if (pp === me.root._path || pp === me._path ||
+ (pp && pp.indexOf(me._path) === 0)) {
// console.error("DW Exit (recursive)", entry.basename, me._path)
me._processing = false
if (entry._collected) entry.pipe()
diff --git a/deps/npm/node_modules/fstream/lib/link-writer.js b/deps/npm/node_modules/fstream/lib/link-writer.js
index 8a9816380..5c8f1e701 100644
--- a/deps/npm/node_modules/fstream/lib/link-writer.js
+++ b/deps/npm/node_modules/fstream/lib/link-writer.js
@@ -4,7 +4,6 @@ module.exports = LinkWriter
var fs = require("graceful-fs")
, Writer = require("./writer.js")
, inherits = require("inherits")
- , collect = require("./collect.js")
, path = require("path")
, rimraf = require("rimraf")
diff --git a/deps/npm/node_modules/fstream/lib/proxy-reader.js b/deps/npm/node_modules/fstream/lib/proxy-reader.js
index f5ddfc3f5..a0ece34a2 100644
--- a/deps/npm/node_modules/fstream/lib/proxy-reader.js
+++ b/deps/npm/node_modules/fstream/lib/proxy-reader.js
@@ -63,6 +63,7 @@ ProxyReader.prototype._addProxy = function (proxy) {
, "child"
, "childEnd"
, "warn"
+ , "stat"
].forEach(function (ev) {
// console.error("~~ proxy event", ev, me.path)
proxy.on(ev, me.emit.bind(me, ev))
diff --git a/deps/npm/node_modules/fstream/lib/reader.js b/deps/npm/node_modules/fstream/lib/reader.js
index 6aa67ada7..e4e1b482c 100644
--- a/deps/npm/node_modules/fstream/lib/reader.js
+++ b/deps/npm/node_modules/fstream/lib/reader.js
@@ -187,19 +187,38 @@ Reader.prototype._stat = function (currentStat) {
// if the filter doesn't pass, then just skip over this one.
// still have to emit end so that dir-walking can move on.
if (me.filter) {
+ var who = me._proxy || me
// special handling for ProxyReaders
- if (!me.filter.call(me._proxy || me)) {
- me._aborted = true
+ if (!me.filter.call(who, who, props)) {
+ if (!me._disowned) {
+ me.abort()
+ me.emit("end")
+ me.emit("close")
+ }
+ return
+ }
+ }
+
+ // last chance to abort or disown before the flow starts!
+ var events = ["_stat", "stat", "ready"]
+ var e = 0
+ ;(function go () {
+ if (me._aborted) {
me.emit("end")
me.emit("close")
return
}
- }
- me.emit("ready", props)
+ if (me._paused) {
+ me.once("resume", go)
+ return
+ }
- // if it's a directory, then we'll be emitting "entry" events.
- me._read()
+ var ev = events[e ++]
+ if (!ev) return me._read()
+ me.emit(ev, props)
+ go()
+ })()
}
}
diff --git a/deps/npm/node_modules/fstream/lib/writer.js b/deps/npm/node_modules/fstream/lib/writer.js
index b7cd261bf..243f6b64e 100644
--- a/deps/npm/node_modules/fstream/lib/writer.js
+++ b/deps/npm/node_modules/fstream/lib/writer.js
@@ -123,12 +123,13 @@ Writer.prototype._stat = function (current) {
var me = this
, props = me.props
, stat = props.follow ? "stat" : "lstat"
+ , who = me._proxy || me
if (current) statCb(null, current)
else fs[stat](me._path, statCb)
function statCb (er, current) {
- if (me.filter && !me.filter.call(me._proxy || me, current)) {
+ if (me.filter && !me.filter.call(who, who, current)) {
me._aborted = true
me.emit("end")
me.emit("close")
@@ -165,13 +166,83 @@ function create (me) {
// XXX Need to clobber non-dirs that are in the way,
// unless { clobber: false } in the props.
- mkdir(path.dirname(me._path), Writer.dirmode, function (er) {
+ mkdir(path.dirname(me._path), Writer.dirmode, function (er, made) {
// console.error("W created", path.dirname(me._path), er)
if (er) return me.error(er)
- me._create()
+
+ // later on, we have to set the mode and owner for these
+ me._madeDir = made
+ return me._create()
})
}
+function endChmod (me, want, current, path, cb) {
+ var wantMode = want.mode
+ , chmod = want.follow || me.type !== "SymbolicLink"
+ ? "chmod" : "lchmod"
+
+ if (!fs[chmod]) return cb()
+ if (typeof wantMode !== "number") return cb()
+
+ var curMode = current.mode & 0777
+ wantMode = wantMode & 0777
+ if (wantMode === curMode) return cb()
+
+ fs[chmod](path, wantMode, cb)
+}
+
+
+function endChown (me, want, current, path, cb) {
+ // Don't even try it unless root. Too easy to EPERM.
+ if (process.platform === "win32") return cb()
+ if (!process.getuid || !process.getuid() === 0) return cb()
+ if (typeof want.uid !== "number" &&
+ typeof want.gid !== "number" ) return cb()
+
+ if (current.uid === want.uid &&
+ current.gid === want.gid) return cb()
+
+ var chown = (me.props.follow || me.type !== "SymbolicLink")
+ ? "chown" : "lchown"
+ if (!fs[chown]) return cb()
+
+ if (typeof want.uid !== "number") want.uid = current.uid
+ if (typeof want.gid !== "number") want.gid = current.gid
+
+ fs[chown](path, want.uid, want.gid, cb)
+}
+
+function endUtimes (me, want, current, path, cb) {
+ if (!fs.utimes || process.platform === "win32") return cb()
+
+ var utimes = (want.follow || me.type !== "SymbolicLink")
+ ? "utimes" : "lutimes"
+
+ if (utimes === "lutimes" && !fs[utimes]) {
+ utimes = "utimes"
+ }
+
+ if (!fs[utimes]) return cb()
+
+ var curA = current.atime
+ , curM = current.mtime
+ , meA = want.atime
+ , meM = want.mtime
+
+ if (meA === undefined) meA = curA
+ if (meM === undefined) meM = curM
+
+ if (!isDate(meA)) meA = new Date(meA)
+ if (!isDate(meM)) meA = new Date(meM)
+
+ if (meA.getTime() === curA.getTime() &&
+ meM.getTime() === curM.getTime()) return cb()
+
+ fs[utimes](path, meA, meM, cb)
+}
+
+
+// XXX This function is beastly. Break it up!
Writer.prototype._finish = function () {
var me = this
@@ -219,88 +290,82 @@ Writer.prototype._finish = function () {
return
function setProps (current) {
- // console.error(" W setprops", me._path)
- // mode
- var wantMode = me.props.mode
- , chmod = me.props.follow || me.type !== "SymbolicLink"
- ? "chmod" : "lchmod"
-
- if (fs[chmod] && typeof wantMode === "number") {
- wantMode = wantMode & 0777
- todo ++
- // console.error(" W chmod", wantMode.toString(8), me.basename, "\r")
- fs[chmod](me._path, wantMode, next(chmod))
- }
+ endChmod(me, me.props, current, me._path, next("chmod"))
+ endChown(me, me.props, current, me._path, next("chown"))
+ endUtimes(me, me.props, current, me._path, next("chown"))
+ }
- // uid, gid
- // Don't even try it unless root. Too easy to EPERM.
- if (process.platform !== "win32" &&
- process.getuid && process.getuid() === 0 &&
- ( typeof me.props.uid === "number" ||
- typeof me.props.gid === "number" )) {
- var chown = (me.props.follow || me.type !== "SymbolicLink")
- ? "chown" : "lchown"
- if (fs[chown]) {
- if (typeof me.props.uid !== "number") me.props.uid = current.uid
- if (typeof me.props.gid !== "number") me.props.gid = current.gid
- if (me.props.uid !== current.uid || me.props.gid !== current.gid) {
- todo ++
- // console.error(" W chown", me.props.uid, me.props.gid, me.basename)
- fs[chown](me._path, me.props.uid, me.props.gid, next("chown"))
+ function next (what) {
+ todo ++
+ return function (er) {
+ // console.error(" W Finish", what, todo)
+ if (errState) return
+ if (er) {
+ er.fstream_finish_call = what
+ return me.error(errState = er)
+ }
+ if (--todo > 0) return
+ if (done) return
+ done = true
+
+ // we may still need to set the mode/etc. on some parent dirs
+ // that were created previously. delay end/close until then.
+ if (!me._madeDir) return end()
+ else endMadeDir(me, me._path, end)
+
+ function end (er) {
+ if (er) {
+ er.fstream_finish_call = "setupMadeDir"
+ return me.error(er)
}
+ // all the props have been set, so we're completely done.
+ me.emit("end")
+ me.emit("close")
}
}
+ }
+}
- // atime, mtime.
- if (fs.utimes && process.platform !== "win32") {
- var utimes = (me.props.follow || me.type !== "SymbolicLink")
- ? "utimes" : "lutimes"
-
- if (utimes === "lutimes" && !fs[utimes]) {
- utimes = "utimes"
- }
-
- var curA = current.atime
- , curM = current.mtime
- , meA = me.props.atime
- , meM = me.props.mtime
+function endMadeDir (me, p, cb) {
+ var made = me._madeDir
+ // everything *between* made and path.dirname(me._path)
+ // needs to be set up. Note that this may just be one dir.
+ var d = path.dirname(p)
- if (meA === undefined) meA = curA
- if (meM === undefined) meM = curM
+ endMadeDir_(me, d, function (er) {
+ if (er) return cb(er)
+ if (d === made) {
+ return cb()
+ }
+ endMadeDir(me, d, cb)
+ })
+}
- if (!isDate(meA)) meA = new Date(meA)
- if (!isDate(meM)) meA = new Date(meM)
+function endMadeDir_ (me, p, cb) {
+ var dirProps = {}
+ Object.keys(me.props).forEach(function (k) {
+ dirProps[k] = me.props[k]
- if (meA.getTime() !== curA.getTime() ||
- meM.getTime() !== curM.getTime()) {
- todo ++
- // console.error(" W utimes", meA, meM, me.basename)
- fs[utimes](me._path, meA, meM, next("utimes"))
- }
+ // only make non-readable dirs if explicitly requested.
+ if (k === "mode" && me.type !== "Directory") {
+ dirProps[k] = dirProps[k] | 0111
}
+ })
- // finally, handle the case if there was nothing to do.
- if (todo === 0) {
- // console.error(" W nothing to do", me.basename)
- next("nothing to do")()
- }
- }
+ var todo = 3
+ , errState = null
+ fs.stat(p, function (er, current) {
+ if (er) return cb(errState = er)
+ endChmod(me, dirProps, current, p, next)
+ endChown(me, dirProps, current, p, next)
+ endUtimes(me, dirProps, current, p, next)
+ })
- function next (what) { return function (er) {
- // console.error(" W Finish", what, todo)
+ function next (er) {
if (errState) return
- if (er) {
- er.fstream_finish_call = what
- return me.error(errState = er)
- }
- if (--todo > 0) return
- if (done) return
- done = true
-
- // all the props have been set, so we're completely done.
- me.emit("end")
- me.emit("close")
- }}
+ if (er) return cb(errState = er)
+ if (-- todo === 0) return cb()
+ }
}
Writer.prototype.pipe = function () {
diff --git a/deps/npm/node_modules/fstream/package.json b/deps/npm/node_modules/fstream/package.json
index 2ad0c6cba..2be498e09 100644
--- a/deps/npm/node_modules/fstream/package.json
+++ b/deps/npm/node_modules/fstream/package.json
@@ -6,7 +6,7 @@
},
"name": "fstream",
"description": "Advanced file system stream things",
- "version": "0.1.14",
+ "version": "0.1.18",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/fstream.git"
@@ -32,11 +32,11 @@
"name": "isaacs",
"email": "i@izs.me"
},
- "_id": "fstream@0.1.14",
+ "_id": "fstream@0.1.18",
"optionalDependencies": {},
"_engineSupported": true,
- "_npmVersion": "1.1.10",
+ "_npmVersion": "1.1.13",
"_nodeVersion": "v0.7.7-pre",
"_defaultsLoaded": true,
- "_from": "fstream@~0.1.13"
+ "_from": "fstream@~0.1.17"
}
diff --git a/deps/npm/node_modules/minimatch/README.md b/deps/npm/node_modules/minimatch/README.md
index d5f97234c..6fd07d2e9 100644
--- a/deps/npm/node_modules/minimatch/README.md
+++ b/deps/npm/node_modules/minimatch/README.md
@@ -60,11 +60,12 @@ thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but
`a/**b` will not. **Note that this is different from the way that `**` is
handled by ruby's `Dir` class.**
-If an escaped pattern has no matches, and the `null` flag is not set,
+If an escaped pattern has no matches, and the `nonull` flag is set,
then minimatch.match returns the pattern as-provided, rather than
interpreting the character escapes. For example,
`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than
-`"*a?"`.
+`"*a?"`. This is akin to setting the `nullglob` option in bash, except
+that it does not resolve escaped pattern characters.
If brace expansion is not disabled, then it is performed before any
other interpretation of the glob pattern. Thus, a pattern like
@@ -147,8 +148,8 @@ var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true}))
### minimatch.match(list, pattern, options)
Match against the list of
-files, in the style of fnmatch or glob. If nothing is matched, then
-return the pattern (unless `{ null: true }` in the options.)
+files, in the style of fnmatch or glob. If nothing is matched, and
+options.nonull is set, then return a list containing the pattern itself.
```javascript
var javascripts = minimatch.match(fileList, "*.js", {matchBase: true}))
@@ -210,3 +211,8 @@ comment.
### nonegate
Suppress the behavior of treating a leading `!` character as negation.
+
+### flipNegate
+
+Returns from negate expressions the same as if they were not negated.
+(Ie, true on a hit, false on a miss.)
diff --git a/deps/npm/node_modules/minimatch/minimatch.js b/deps/npm/node_modules/minimatch/minimatch.js
index 5ca6008f9..1ca08104e 100644
--- a/deps/npm/node_modules/minimatch/minimatch.js
+++ b/deps/npm/node_modules/minimatch/minimatch.js
@@ -4,7 +4,6 @@ minimatch.Minimatch = Minimatch
var LRU = require("lru-cache")
, cache = minimatch.cache = new LRU(100)
, GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}
- , pathSplit = process.platform === "win32" ? /\\|\// : "/"
var path = require("path")
// any single thing other than /
@@ -130,7 +129,7 @@ function make () {
this.parseNegate()
// step 2: expand braces
- var set = this.braceExpand()
+ var set = this.globSet = this.braceExpand()
if (options.debug) console.error(this.pattern, set)
@@ -139,7 +138,7 @@ function make () {
// These will be regexps, except in the case of "**", which is
// set to the GLOBSTAR object for globstar behavior,
// and will not contain any / characters
- set = set.map(function (s) {
+ set = this.globParts = set.map(function (s) {
return s.split(slashSplit)
})
@@ -159,36 +158,6 @@ function make () {
if (options.debug) console.error(this.pattern, set)
- // step 4: if we have a defined root, then patterns starting with ""
- // get attached to that. If we have a defined cwd, then patterns
- // *not* starting with "" get attached to that.
- // Exception 1: on windows, a pattern like //\?/c:/ or c:/ will
- // not get anything prefixed to it.
- // Exception 2: If matchBase is set, and it's just a filename,
- // then don't prefix anything onto it, since it'll only match
- // files with that basename anyhow.
- set = set.map(function (p) {
- if (process.platform === "win32" &&
- ( (p[0] === "" && p[1] === "" && p[2] === "\\?") // unc
- || (typeof p[0] === "string" && p[0].match(/^[a-zA-Z]:$/)) )) {
- return p
- }
- if (options.matchBase && p.length === 1) return p
- // do prefixing.
- if (options.root && p[0] === "") {
- var r = options.root.split(pathSplit)
- if (r[r.length - 1] === "") r.pop()
- r = r.concat(p.slice(1))
- r.absolute = true
- return r
- }
- if (options.cwd && p[0] !== "") {
- return options.cwd.split(pathSplit).concat(p)
- }
- return p
- })
-
-
this.set = set
}
@@ -549,7 +518,8 @@ function parse (pattern, isSub) {
patternListStack.push({ type: plType
, start: i - 1
, reStart: re.length })
- re += stateChar === "!" ? "(?!" : "(?:"
+ // negation is (?:(?!js)[^/]*)
+ re += stateChar === "!" ? "(?:(?!" : "(?:"
stateChar = false
continue
@@ -562,11 +532,15 @@ function parse (pattern, isSub) {
hasMagic = true
re += ")"
plType = patternListStack.pop().type
+ // negation is (?:(?!js)[^/]*)
+ // The others are (?:<pattern>)<type>
switch (plType) {
+ case "!":
+ re += "[^/]*?)"
+ break
case "?":
case "+":
case "*": re += plType
- case "!": // already handled by the start
case "@": break // the default anyway
}
continue
@@ -821,12 +795,14 @@ function match (f, partial) {
var pattern = set[i]
var hit = this.matchOne(f, pattern, partial)
if (hit) {
+ if (options.flipNegate) return true
return !this.negate
}
}
// didn't get any hits. this is success if it's a negative
// pattern, failure otherwise.
+ if (options.flipNegate) return false
return this.negate
}
diff --git a/deps/npm/node_modules/minimatch/package.json b/deps/npm/node_modules/minimatch/package.json
index 2816a8405..1bcb3d43e 100644
--- a/deps/npm/node_modules/minimatch/package.json
+++ b/deps/npm/node_modules/minimatch/package.json
@@ -1,8 +1,12 @@
{
- "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)",
+ "author": {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me",
+ "url": "http://blog.izs.me"
+ },
"name": "minimatch",
"description": "a glob matcher in javascript",
- "version": "0.1.5",
+ "version": "0.2.2",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/minimatch.git"
@@ -18,12 +22,23 @@
"lru-cache": "~1.0.5"
},
"devDependencies": {
- "tap": "~0.1.3"
+ "tap": ""
},
- "licenses" : [
+ "licenses": [
{
- "type" : "MIT",
- "url" : "http://github.com/isaacs/minimatch/raw/master/LICENSE"
+ "type": "MIT",
+ "url": "http://github.com/isaacs/minimatch/raw/master/LICENSE"
}
- ]
+ ],
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "_id": "minimatch@0.2.2",
+ "optionalDependencies": {},
+ "_engineSupported": true,
+ "_npmVersion": "1.1.12",
+ "_nodeVersion": "v0.7.7-pre",
+ "_defaultsLoaded": true,
+ "_from": "minimatch@0"
}
diff --git a/deps/npm/node_modules/mkdirp/index.js b/deps/npm/node_modules/mkdirp/index.js
index 25f43adfa..871488f63 100644
--- a/deps/npm/node_modules/mkdirp/index.js
+++ b/deps/npm/node_modules/mkdirp/index.js
@@ -8,18 +8,24 @@ function mkdirP (p, mode, f) {
f = mode;
mode = 0777 & (~process.umask());
}
-
+
+ // secret passalong argument.
+ var made = arguments[3] || null;
+
var cb = f || function () {};
if (typeof mode === 'string') mode = parseInt(mode, 8);
p = path.resolve(p);
fs.mkdir(p, mode, function (er) {
- if (!er) return cb();
+ if (!er) {
+ made = made || p;
+ return cb(null, made);
+ }
switch (er.code) {
case 'ENOENT':
- mkdirP(path.dirname(p), mode, function (er) {
- if (er) cb(er);
- else mkdirP(p, mode, cb);
+ mkdirP(path.dirname(p), mode, function (er, made) {
+ if (er) cb(er, made);
+ else mkdirP(p, mode, cb, made);
});
break;
@@ -27,13 +33,13 @@ function mkdirP (p, mode, f) {
fs.stat(p, function (er2, stat) {
// if the stat fails, then that's super weird.
// let the original EEXIST be the failure reason.
- if (er2 || !stat.isDirectory()) cb(er)
- else cb();
+ if (er2 || !stat.isDirectory()) cb(er, made)
+ else cb(null, made);
});
break;
default:
- cb(er);
+ cb(er, made);
break;
}
});
@@ -43,37 +49,39 @@ mkdirP.sync = function sync (p, mode) {
if (mode === undefined) {
mode = 0777 & (~process.umask());
}
-
+
+ // secret passalong argument
+ var made = arguments[2] || null;
+
if (typeof mode === 'string') mode = parseInt(mode, 8);
p = path.resolve(p);
-
+
try {
- fs.mkdirSync(p, mode)
+ fs.mkdirSync(p, mode);
+ made = made || p;
}
catch (err0) {
switch (err0.code) {
case 'ENOENT' :
- var err1 = sync(path.dirname(p), mode)
- if (err1) throw err1;
- else return sync(p, mode);
+ made = sync(path.dirname(p), mode, made);
+ sync(p, mode, made);
break;
-
+
case 'EEXIST' :
var stat;
try {
stat = fs.statSync(p);
}
catch (err1) {
- throw err0
+ throw err0;
}
if (!stat.isDirectory()) throw err0;
- else return null;
break;
default :
throw err0
break;
}
}
-
- return null;
+
+ return made;
};
diff --git a/deps/npm/node_modules/mkdirp/package.json b/deps/npm/node_modules/mkdirp/package.json
index 1bf9ac782..2a40503c5 100644
--- a/deps/npm/node_modules/mkdirp/package.json
+++ b/deps/npm/node_modules/mkdirp/package.json
@@ -1,23 +1,44 @@
{
- "name" : "mkdirp",
- "description" : "Recursively mkdir, like `mkdir -p`",
- "version" : "0.3.0",
- "author" : "James Halliday <mail@substack.net> (http://substack.net)",
- "main" : "./index",
- "keywords" : [
- "mkdir",
- "directory"
- ],
- "repository" : {
- "type" : "git",
- "url" : "http://github.com/substack/node-mkdirp.git"
- },
- "scripts" : {
- "test" : "tap test/*.js"
- },
- "devDependencies" : {
- "tap" : "0.0.x"
- },
- "license" : "MIT/X11",
- "engines": { "node": "*" }
+ "name": "mkdirp",
+ "description": "Recursively mkdir, like `mkdir -p`",
+ "version": "0.3.0",
+ "author": {
+ "name": "James Halliday",
+ "email": "mail@substack.net",
+ "url": "http://substack.net"
+ },
+ "main": "./index",
+ "keywords": [
+ "mkdir",
+ "directory"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/substack/node-mkdirp.git"
+ },
+ "scripts": {
+ "test": "tap test/*.js"
+ },
+ "devDependencies": {
+ "tap": "0.2"
+ },
+ "license": "MIT/X11",
+ "engines": {
+ "node": "*"
+ },
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "_id": "mkdirp@0.3.0",
+ "dependencies": {},
+ "optionalDependencies": {},
+ "_engineSupported": true,
+ "_npmVersion": "1.1.13",
+ "_nodeVersion": "v0.7.7-pre",
+ "_defaultsLoaded": true,
+ "dist": {
+ "shasum": "a3cc6816e78b84f570caf9d95cb7368dc5d0bab8"
+ },
+ "_from": "../mkdirp"
}
diff --git a/deps/npm/node_modules/node-gyp/README.md b/deps/npm/node_modules/node-gyp/README.md
index 32b22a097..e796e6982 100644
--- a/deps/npm/node_modules/node-gyp/README.md
+++ b/deps/npm/node_modules/node-gyp/README.md
@@ -83,10 +83,10 @@ building a node addon looks like:
``` json
{
- 'targets': [
+ "targets": [
{
- 'target_name': 'binding',
- 'sources': [ 'src/binding.cc' ]
+ "target_name": "binding",
+ "sources": [ "src/binding.cc" ]
}
]
}
diff --git a/deps/npm/node_modules/node-gyp/bin/node-gyp.js b/deps/npm/node_modules/node-gyp/bin/node-gyp.js
index 49c58c6c9..328e1a94e 100755
--- a/deps/npm/node_modules/node-gyp/bin/node-gyp.js
+++ b/deps/npm/node_modules/node-gyp/bin/node-gyp.js
@@ -10,7 +10,7 @@ process.title = 'node-gyp'
* Module dependencies.
*/
-var gyp = require('../lib/node-gyp')
+var gyp = require('../')
, inspect = require('util').inspect
, ansi = require('ansi')
, cursor = ansi(process.stderr)
diff --git a/deps/npm/node_modules/node-gyp/lib/install.js b/deps/npm/node_modules/node-gyp/lib/install.js
index e9328a9cd..8ad484d4e 100644
--- a/deps/npm/node_modules/node-gyp/lib/install.js
+++ b/deps/npm/node_modules/node-gyp/lib/install.js
@@ -109,10 +109,16 @@ function install (gyp, argv, callback) {
function download(url,onError) {
gyp.info('downloading:', url)
- requestOpts = { uri: url }
+ var requestOpts = {
+ uri: url
+ , onResponse: true
+ }
// basic support for a proxy server
- var proxyUrl = gyp.opts.proxy || process.env.http_proxy || process.env.HTTP_PROXY
+ var proxyUrl = gyp.opts.proxy
+ || process.env.http_proxy
+ || process.env.HTTP_PROXY
+ || process.env.npm_config_proxy
if (proxyUrl) {
gyp.verbose('using proxy:', proxyUrl)
requestOpts.proxy = proxyUrl
@@ -284,12 +290,10 @@ function install (gyp, argv, callback) {
function valid (file) {
// header files
- return minimatch(file, 'src/*.h')
- || minimatch(file, 'deps/**/*.h')
+ return minimatch(file, '*.h', { matchBase: true })
// non-legacy versions of node also extract the gyp build files
|| (!isLegacy &&
- (minimatch(file, '*.gypi')
- || minimatch(file, 'tools/*.gypi')
+ (minimatch(file, '*.gypi', { matchBase: true })
|| minimatch(file, 'tools/gyp_addon')
|| (minimatch(file, 'tools/gyp/**') && !minimatch(file, 'tools/gyp/test/**'))
)
diff --git a/deps/npm/node_modules/node-gyp/lib/remove.js b/deps/npm/node_modules/node-gyp/lib/remove.js
index e17279b59..a19404066 100644
--- a/deps/npm/node_modules/node-gyp/lib/remove.js
+++ b/deps/npm/node_modules/node-gyp/lib/remove.js
@@ -23,7 +23,7 @@ function remove (gyp, argv, callback) {
var v = argv[0] || gyp.opts.target
if (!v) {
- return callback(new Error('You must specify a version number to remove. Ex: "0.6.12"'))
+ return callback(new Error('You must specify a version number to remove. Ex: "' + process.version + '"'))
}
// parse the version to normalize and make sure it's valid
diff --git a/deps/npm/node_modules/node-gyp/node_modules/ansi/package.json b/deps/npm/node_modules/node-gyp/node_modules/ansi/package.json
index b6dfe6fda..259382f82 100644
--- a/deps/npm/node_modules/node-gyp/node_modules/ansi/package.json
+++ b/deps/npm/node_modules/node-gyp/node_modules/ansi/package.json
@@ -41,11 +41,8 @@
"dependencies": {},
"optionalDependencies": {},
"_engineSupported": true,
- "_npmVersion": "1.1.11",
+ "_npmVersion": "1.1.13",
"_nodeVersion": "v0.7.7-pre",
"_defaultsLoaded": true,
- "dist": {
- "shasum": "926ed94f0865d5732789819999b432c57bbed0ec"
- },
"_from": "ansi@0.0.x"
}
diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/.travis.yml b/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/.travis.yml
deleted file mode 100644
index f1d0f13c8..000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
- - 0.4
- - 0.6
diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/LICENSE b/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/LICENSE
deleted file mode 100644
index 05a401094..000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-Copyright 2009, 2010, 2011 Isaac Z. Schlueter.
-All rights reserved.
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/README.md b/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/README.md
deleted file mode 100644
index 6fd07d2e9..000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/README.md
+++ /dev/null
@@ -1,218 +0,0 @@
-# minimatch
-
-A minimal matching utility.
-
-[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch)
-
-
-This is the matching library used internally by npm.
-
-Eventually, it will replace the C binding in node-glob.
-
-It works by converting glob expressions into JavaScript `RegExp`
-objects.
-
-## Usage
-
-```javascript
-var minimatch = require("minimatch")
-
-minimatch("bar.foo", "*.foo") // true!
-minimatch("bar.foo", "*.bar") // false!
-```
-
-## Features
-
-Supports these glob features:
-
-* Brace Expansion
-* Extended glob matching
-* "Globstar" `**` matching
-
-See:
-
-* `man sh`
-* `man bash`
-* `man 3 fnmatch`
-* `man 5 gitignore`
-
-### Comparisons to other fnmatch/glob implementations
-
-While strict compliance with the existing standards is a worthwhile
-goal, some discrepancies exist between minimatch and other
-implementations, and are intentional.
-
-If the pattern starts with a `!` character, then it is negated. Set the
-`nonegate` flag to suppress this behavior, and treat leading `!`
-characters normally. This is perhaps relevant if you wish to start the
-pattern with a negative extglob pattern like `!(a|B)`. Multiple `!`
-characters at the start of a pattern will negate the pattern multiple
-times.
-
-If a pattern starts with `#`, then it is treated as a comment, and
-will not match anything. Use `\#` to match a literal `#` at the
-start of a line, or set the `nocomment` flag to suppress this behavior.
-
-The double-star character `**` is supported by default, unless the
-`noglobstar` flag is set. This is supported in the manner of bsdglob
-and bash 4.1, where `**` only has special significance if it is the only
-thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but
-`a/**b` will not. **Note that this is different from the way that `**` is
-handled by ruby's `Dir` class.**
-
-If an escaped pattern has no matches, and the `nonull` flag is set,
-then minimatch.match returns the pattern as-provided, rather than
-interpreting the character escapes. For example,
-`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than
-`"*a?"`. This is akin to setting the `nullglob` option in bash, except
-that it does not resolve escaped pattern characters.
-
-If brace expansion is not disabled, then it is performed before any
-other interpretation of the glob pattern. Thus, a pattern like
-`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded
-**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are
-checked for validity. Since those two are valid, matching proceeds.
-
-
-## Minimatch Class
-
-Create a minimatch object by instanting the `minimatch.Minimatch` class.
-
-```javascript
-var Minimatch = require("minimatch").Minimatch
-var mm = new Minimatch(pattern, options)
-```
-
-### Properties
-
-* `pattern` The original pattern the minimatch object represents.
-* `options` The options supplied to the constructor.
-* `set` A 2-dimensional array of regexp or string expressions.
- Each row in the
- array corresponds to a brace-expanded pattern. Each item in the row
- corresponds to a single path-part. For example, the pattern
- `{a,b/c}/d` would expand to a set of patterns like:
-
- [ [ a, d ]
- , [ b, c, d ] ]
-
- If a portion of the pattern doesn't have any "magic" in it
- (that is, it's something like `"foo"` rather than `fo*o?`), then it
- will be left as a string rather than converted to a regular
- expression.
-
-* `regexp` Created by the `makeRe` method. A single regular expression
- expressing the entire pattern. This is useful in cases where you wish
- to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled.
-* `negate` True if the pattern is negated.
-* `comment` True if the pattern is a comment.
-* `empty` True if the pattern is `""`.
-
-### Methods
-
-* `makeRe` Generate the `regexp` member if necessary, and return it.
- Will return `false` if the pattern is invalid.
-* `match(fname)` Return true if the filename matches the pattern, or
- false otherwise.
-* `matchOne(fileArray, patternArray, partial)` Take a `/`-split
- filename, and match it against a single row in the `regExpSet`. This
- method is mainly for internal use, but is exposed so that it can be
- used by a glob-walker that needs to avoid excessive filesystem calls.
-
-All other methods are internal, and will be called as necessary.
-
-## Functions
-
-The top-level exported function has a `cache` property, which is an LRU
-cache set to store 100 items. So, calling these methods repeatedly
-with the same pattern and options will use the same Minimatch object,
-saving the cost of parsing it multiple times.
-
-### minimatch(path, pattern, options)
-
-Main export. Tests a path against the pattern using the options.
-
-```javascript
-var isJS = minimatch(file, "*.js", { matchBase: true })
-```
-
-### minimatch.filter(pattern, options)
-
-Returns a function that tests its
-supplied argument, suitable for use with `Array.filter`. Example:
-
-```javascript
-var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true}))
-```
-
-### minimatch.match(list, pattern, options)
-
-Match against the list of
-files, in the style of fnmatch or glob. If nothing is matched, and
-options.nonull is set, then return a list containing the pattern itself.
-
-```javascript
-var javascripts = minimatch.match(fileList, "*.js", {matchBase: true}))
-```
-
-### minimatch.makeRe(pattern, options)
-
-Make a regular expression object from the pattern.
-
-## Options
-
-All options are `false` by default.
-
-### debug
-
-Dump a ton of stuff to stderr.
-
-### nobrace
-
-Do not expand `{a,b}` and `{1..3}` brace sets.
-
-### noglobstar
-
-Disable `**` matching against multiple folder names.
-
-### dot
-
-Allow patterns to match filenames starting with a period, even if
-the pattern does not explicitly have a period in that spot.
-
-Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot`
-is set.
-
-### noext
-
-Disable "extglob" style patterns like `+(a|b)`.
-
-### nocase
-
-Perform a case-insensitive match.
-
-### nonull
-
-When a match is not found by `minimatch.match`, return a list containing
-the pattern itself. When set, an empty list is returned if there are
-no matches.
-
-### matchBase
-
-If set, then patterns without slashes will be matched
-against the basename of the path if it contains slashes. For example,
-`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`.
-
-### nocomment
-
-Suppress the behavior of treating `#` at the start of a pattern as a
-comment.
-
-### nonegate
-
-Suppress the behavior of treating a leading `!` character as negation.
-
-### flipNegate
-
-Returns from negate expressions the same as if they were not negated.
-(Ie, true on a hit, false on a miss.)
diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/minimatch.js b/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/minimatch.js
deleted file mode 100644
index 1ca08104e..000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/minimatch.js
+++ /dev/null
@@ -1,986 +0,0 @@
-module.exports = minimatch
-minimatch.Minimatch = Minimatch
-
-var LRU = require("lru-cache")
- , cache = minimatch.cache = new LRU(100)
- , GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}
-
-var path = require("path")
- // any single thing other than /
- // don't need to escape / when using new RegExp()
- , qmark = "[^/]"
-
- // * => any number of characters
- , star = qmark + "*?"
-
- // ** when dots are allowed. Anything goes, except .. and .
- // not (^ or / followed by one or two dots followed by $ or /),
- // followed by anything, any number of times.
- , twoStarDot = "(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?"
-
- // not a ^ or / followed by a dot,
- // followed by anything, any number of times.
- , twoStarNoDot = "(?:(?!(?:\\\/|^)\\.).)*?"
-
- // characters that need to be escaped in RegExp.
- , reSpecials = charSet("().*{}+?[]^$\\!")
-
-// "abc" -> { a:true, b:true, c:true }
-function charSet (s) {
- return s.split("").reduce(function (set, c) {
- set[c] = true
- return set
- }, {})
-}
-
-// normalizes slashes.
-var slashSplit = /\/+/
-
-minimatch.monkeyPatch = monkeyPatch
-function monkeyPatch () {
- var desc = Object.getOwnPropertyDescriptor(String.prototype, "match")
- var orig = desc.value
- desc.value = function (p) {
- if (p instanceof Minimatch) return p.match(this)
- return orig.call(this, p)
- }
- Object.defineProperty(String.prototype, desc)
-}
-
-minimatch.filter = filter
-function filter (pattern, options) {
- options = options || {}
- return function (p, i, list) {
- return minimatch(p, pattern, options)
- }
-}
-
-function minimatch (p, pattern, options) {
- if (typeof pattern !== "string") {
- throw new TypeError("glob pattern string required")
- }
-
- if (!options) options = {}
-
- // shortcut: comments match nothing.
- if (!options.nocomment && pattern.charAt(0) === "#") {
- return false
- }
-
- // "" only matches ""
- if (pattern.trim() === "") return p === ""
-
- return new Minimatch(pattern, options).match(p)
-}
-
-function Minimatch (pattern, options) {
- if (!(this instanceof Minimatch)) {
- return new Minimatch(pattern, options, cache)
- }
-
- if (typeof pattern !== "string") {
- throw new TypeError("glob pattern string required")
- }
-
- if (!options) options = {}
- pattern = pattern.trim()
-
- // lru storage.
- // these things aren't particularly big, but walking down the string
- // and turning it into a regexp can get pretty costly.
- var cacheKey = pattern + "\n" + Object.keys(options).filter(function (k) {
- return options[k]
- }).join(":")
- var cached = minimatch.cache.get(cacheKey)
- if (cached) return cached
- minimatch.cache.set(cacheKey, this)
-
- this.options = options
- this.set = []
- this.pattern = pattern
- this.regexp = null
- this.negate = false
- this.comment = false
- this.empty = false
-
- // make the set of regexps etc.
- this.make()
-}
-
-Minimatch.prototype.make = make
-function make () {
- // don't do it more than once.
- if (this._made) return
-
- var pattern = this.pattern
- var options = this.options
-
- // empty patterns and comments match nothing.
- if (!options.nocomment && pattern.charAt(0) === "#") {
- this.comment = true
- return
- }
- if (!pattern) {
- this.empty = true
- return
- }
-
- // step 1: figure out negation, etc.
- this.parseNegate()
-
- // step 2: expand braces
- var set = this.globSet = this.braceExpand()
-
- if (options.debug) console.error(this.pattern, set)
-
- // step 3: now we have a set, so turn each one into a series of path-portion
- // matching patterns.
- // These will be regexps, except in the case of "**", which is
- // set to the GLOBSTAR object for globstar behavior,
- // and will not contain any / characters
- set = this.globParts = set.map(function (s) {
- return s.split(slashSplit)
- })
-
- if (options.debug) console.error(this.pattern, set)
-
- // glob --> regexps
- set = set.map(function (s, si, set) {
- return s.map(this.parse, this)
- }, this)
-
- if (options.debug) console.error(this.pattern, set)
-
- // filter out everything that didn't compile properly.
- set = set.filter(function (s) {
- return -1 === s.indexOf(false)
- })
-
- if (options.debug) console.error(this.pattern, set)
-
- this.set = set
-}
-
-Minimatch.prototype.parseNegate = parseNegate
-function parseNegate () {
- var pattern = this.pattern
- , negate = false
- , options = this.options
- , negateOffset = 0
-
- if (options.nonegate) return
-
- for ( var i = 0, l = pattern.length
- ; i < l && pattern.charAt(i) === "!"
- ; i ++) {
- negate = !negate
- negateOffset ++
- }
-
- if (negateOffset) this.pattern = pattern.substr(negateOffset)
- this.negate = negate
-}
-
-// Brace expansion:
-// a{b,c}d -> abd acd
-// a{b,}c -> abc ac
-// a{0..3}d -> a0d a1d a2d a3d
-// a{b,c{d,e}f}g -> abg acdfg acefg
-// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg
-//
-// Invalid sets are not expanded.
-// a{2..}b -> a{2..}b
-// a{b}c -> a{b}c
-minimatch.braceExpand = function (pattern, options) {
- return new Minimatch(pattern, options).braceExpand()
-}
-
-Minimatch.prototype.braceExpand = braceExpand
-function braceExpand (pattern, options) {
- options = options || this.options
- pattern = typeof pattern === "undefined"
- ? this.pattern : pattern
-
- if (typeof pattern === "undefined") {
- throw new Error("undefined pattern")
- }
-
- if (options.nobrace ||
- !pattern.match(/\{.*\}/)) {
- // shortcut. no need to expand.
- return [pattern]
- }
-
- var escaping = false
-
- // examples and comments refer to this crazy pattern:
- // a{b,c{d,e},{f,g}h}x{y,z}
- // expected:
- // abxy
- // abxz
- // acdxy
- // acdxz
- // acexy
- // acexz
- // afhxy
- // afhxz
- // aghxy
- // aghxz
-
- // everything before the first \{ is just a prefix.
- // So, we pluck that off, and work with the rest,
- // and then prepend it to everything we find.
- if (pattern.charAt(0) !== "{") {
- // console.error(pattern)
- var prefix = null
- for (var i = 0, l = pattern.length; i < l; i ++) {
- var c = pattern.charAt(i)
- // console.error(i, c)
- if (c === "\\") {
- escaping = !escaping
- } else if (c === "{" && !escaping) {
- prefix = pattern.substr(0, i)
- break
- }
- }
-
- // actually no sets, all { were escaped.
- if (prefix === null) {
- // console.error("no sets")
- return [pattern]
- }
-
- var tail = braceExpand(pattern.substr(i), options)
- return tail.map(function (t) {
- return prefix + t
- })
- }
-
- // now we have something like:
- // {b,c{d,e},{f,g}h}x{y,z}
- // walk through the set, expanding each part, until
- // the set ends. then, we'll expand the suffix.
- // If the set only has a single member, then'll put the {} back
-
- // first, handle numeric sets, since they're easier
- var numset = pattern.match(/^\{(-?[0-9]+)\.\.(-?[0-9]+)\}/)
- if (numset) {
- // console.error("numset", numset[1], numset[2])
- var suf = braceExpand(pattern.substr(numset[0].length), options)
- , start = +numset[1]
- , end = +numset[2]
- , inc = start > end ? -1 : 1
- , set = []
- for (var i = start; i != (end + inc); i += inc) {
- // append all the suffixes
- for (var ii = 0, ll = suf.length; ii < ll; ii ++) {
- set.push(i + suf[ii])
- }
- }
- return set
- }
-
- // ok, walk through the set
- // We hope, somewhat optimistically, that there
- // will be a } at the end.
- // If the closing brace isn't found, then the pattern is
- // interpreted as braceExpand("\\" + pattern) so that
- // the leading \{ will be interpreted literally.
- var i = 1 // skip the \{
- , depth = 1
- , set = []
- , member = ""
- , sawEnd = false
- , escaping = false
-
- function addMember () {
- set.push(member)
- member = ""
- }
-
- // console.error("Entering for")
- FOR: for (i = 1, l = pattern.length; i < l; i ++) {
- var c = pattern.charAt(i)
- // console.error("", i, c)
-
- if (escaping) {
- escaping = false
- member += "\\" + c
- } else {
- switch (c) {
- case "\\":
- escaping = true
- continue
-
- case "{":
- depth ++
- member += "{"
- continue
-
- case "}":
- depth --
- // if this closes the actual set, then we're done
- if (depth === 0) {
- addMember()
- // pluck off the close-brace
- i ++
- break FOR
- } else {
- member += c
- continue
- }
-
- case ",":
- if (depth === 1) {
- addMember()
- } else {
- member += c
- }
- continue
-
- default:
- member += c
- continue
- } // switch
- } // else
- } // for
-
- // now we've either finished the set, and the suffix is
- // pattern.substr(i), or we have *not* closed the set,
- // and need to escape the leading brace
- if (depth !== 0) {
- // console.error("didn't close", pattern)
- return braceExpand("\\" + pattern, options)
- }
-
- // x{y,z} -> ["xy", "xz"]
- // console.error("set", set)
- // console.error("suffix", pattern.substr(i))
- var suf = braceExpand(pattern.substr(i), options)
- // ["b", "c{d,e}","{f,g}h"] ->
- // [["b"], ["cd", "ce"], ["fh", "gh"]]
- var addBraces = set.length === 1
- // console.error("set pre-expanded", set)
- set = set.map(function (p) {
- return braceExpand(p, options)
- })
- // console.error("set expanded", set)
-
-
- // [["b"], ["cd", "ce"], ["fh", "gh"]] ->
- // ["b", "cd", "ce", "fh", "gh"]
- set = set.reduce(function (l, r) {
- return l.concat(r)
- })
-
- if (addBraces) {
- set = set.map(function (s) {
- return "{" + s + "}"
- })
- }
-
- // now attach the suffixes.
- var ret = []
- for (var i = 0, l = set.length; i < l; i ++) {
- for (var ii = 0, ll = suf.length; ii < ll; ii ++) {
- ret.push(set[i] + suf[ii])
- }
- }
- return ret
-}
-
-// parse a component of the expanded set.
-// At this point, no pattern may contain "/" in it
-// so we're going to return a 2d array, where each entry is the full
-// pattern, split on '/', and then turned into a regular expression.
-// A regexp is made at the end which joins each array with an
-// escaped /, and another full one which joins each regexp with |.
-//
-// Following the lead of Bash 4.1, note that "**" only has special meaning
-// when it is the *only* thing in a path portion. Otherwise, any series
-// of * is equivalent to a single *. Globstar behavior is enabled by
-// default, and can be disabled by setting options.noglobstar.
-Minimatch.prototype.parse = parse
-var SUBPARSE = {}
-function parse (pattern, isSub) {
- var options = this.options
-
- // shortcuts
- if (!options.noglobstar && pattern === "**") return GLOBSTAR
- if (pattern === "") return ""
-
- var re = ""
- , hasMagic = false
- , escaping = false
- // ? => one single character
- , patternListStack = []
- , plType
- , stateChar
- , inClass = false
- , reClassStart = -1
- , classStart = -1
- // . and .. never match anything that doesn't start with .,
- // even when options.dot is set.
- , patternStart = pattern.charAt(0) === "." ? "" // anything
- // not (start or / followed by . or .. followed by / or end)
- : options.dot ? "(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))"
- : "(?!\\.)"
-
- function clearStateChar () {
- if (stateChar) {
- // we had some state-tracking character
- // that wasn't consumed by this pass.
- switch (stateChar) {
- case "*":
- re += star
- hasMagic = true
- break
- case "?":
- re += qmark
- hasMagic = true
- break
- default:
- re += "\\"+stateChar
- break
- }
- stateChar = false
- }
- }
-
- for ( var i = 0, len = pattern.length, c
- ; (i < len) && (c = pattern.charAt(i))
- ; i ++ ) {
-
- if (options.debug) {
- console.error("%s\t%s %s %j", pattern, i, re, c)
- }
-
- // skip over any that are escaped.
- if (escaping && reSpecials[c]) {
- re += "\\" + c
- escaping = false
- continue
- }
-
- SWITCH: switch (c) {
- case "/":
- // completely not allowed, even escaped.
- // Should already be path-split by now.
- return false
-
- case "\\":
- clearStateChar()
- escaping = true
- continue
-
- // the various stateChar values
- // for the "extglob" stuff.
- case "?":
- case "*":
- case "+":
- case "@":
- case "!":
- if (options.debug) {
- console.error("%s\t%s %s %j <-- stateChar", pattern, i, re, c)
- }
-
- // all of those are literals inside a class, except that
- // the glob [!a] means [^a] in regexp
- if (inClass) {
- if (c === "!" && i === classStart + 1) c = "^"
- re += c
- continue
- }
-
- // if we already have a stateChar, then it means
- // that there was something like ** or +? in there.
- // Handle the stateChar, then proceed with this one.
- clearStateChar()
- stateChar = c
- // if extglob is disabled, then +(asdf|foo) isn't a thing.
- // just clear the statechar *now*, rather than even diving into
- // the patternList stuff.
- if (options.noext) clearStateChar()
- continue
-
- case "(":
- if (inClass) {
- re += "("
- continue
- }
-
- if (!stateChar) {
- re += "\\("
- continue
- }
-
- plType = stateChar
- patternListStack.push({ type: plType
- , start: i - 1
- , reStart: re.length })
- // negation is (?:(?!js)[^/]*)
- re += stateChar === "!" ? "(?:(?!" : "(?:"
- stateChar = false
- continue
-
- case ")":
- if (inClass || !patternListStack.length) {
- re += "\\)"
- continue
- }
-
- hasMagic = true
- re += ")"
- plType = patternListStack.pop().type
- // negation is (?:(?!js)[^/]*)
- // The others are (?:<pattern>)<type>
- switch (plType) {
- case "!":
- re += "[^/]*?)"
- break
- case "?":
- case "+":
- case "*": re += plType
- case "@": break // the default anyway
- }
- continue
-
- case "|":
- if (inClass || !patternListStack.length || escaping) {
- re += "\\|"
- escaping = false
- continue
- }
-
- re += "|"
- continue
-
- // these are mostly the same in regexp and glob
- case "[":
- // swallow any state-tracking char before the [
- clearStateChar()
-
- if (inClass) {
- re += "\\" + c
- continue
- }
-
- inClass = true
- classStart = i
- reClassStart = re.length
- re += c
- continue
-
- case "]":
- // a right bracket shall lose its special
- // meaning and represent itself in
- // a bracket expression if it occurs
- // first in the list. -- POSIX.2 2.8.3.2
- if (i === classStart + 1 || !inClass) {
- re += "\\" + c
- escaping = false
- continue
- }
-
- // finish up the class.
- hasMagic = true
- inClass = false
- re += c
- continue
-
- default:
- // swallow any state char that wasn't consumed
- clearStateChar()
-
- if (escaping) {
- // no need
- escaping = false
- } else if (reSpecials[c]
- && !(c === "^" && inClass)) {
- re += "\\"
- }
-
- re += c
-
- } // switch
- } // for
-
-
- // handle the case where we left a class open.
- // "[abc" is valid, equivalent to "\[abc"
- if (inClass) {
- // split where the last [ was, and escape it
- // this is a huge pita. We now have to re-walk
- // the contents of the would-be class to re-translate
- // any characters that were passed through as-is
- var cs = pattern.substr(classStart + 1)
- , sp = this.parse(cs, SUBPARSE)
- re = re.substr(0, reClassStart) + "\\[" + sp[0]
- hasMagic = hasMagic || sp[1]
- }
-
- // handle the case where we had a +( thing at the *end*
- // of the pattern.
- // each pattern list stack adds 3 chars, and we need to go through
- // and escape any | chars that were passed through as-is for the regexp.
- // Go through and escape them, taking care not to double-escape any
- // | chars that were already escaped.
- var pl
- while (pl = patternListStack.pop()) {
- var tail = re.slice(pl.reStart + 3)
- // maybe some even number of \, then maybe 1 \, followed by a |
- tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) {
- if (!$2) {
- // the | isn't already escaped, so escape it.
- $2 = "\\"
- }
-
- // need to escape all those slashes *again*, without escaping the
- // one that we need for escaping the | character. As it works out,
- // escaping an even number of slashes can be done by simply repeating
- // it exactly after itself. That's why this trick works.
- //
- // I am sorry that you have to see this.
- return $1 + $1 + $2 + "|"
- })
-
- // console.error("tail=%j\n %s", tail, tail)
- var t = pl.type === "*" ? star
- : pl.type === "?" ? qmark
- : "\\" + pl.type
-
- hasMagic = true
- re = re.slice(0, pl.reStart)
- + t + "\\("
- + tail
- }
-
- // handle trailing things that only matter at the very end.
- clearStateChar()
- if (escaping) {
- // trailing \\
- re += "\\\\"
- }
-
- // only need to apply the nodot start if the re starts with
- // something that could conceivably capture a dot
- var addPatternStart = false
- switch (re.charAt(0)) {
- case ".":
- case "[":
- case "(": addPatternStart = true
- }
-
- // if the re is not "" at this point, then we need to make sure
- // it doesn't match against an empty path part.
- // Otherwise a/* will match a/, which it should not.
- if (re !== "" && hasMagic) re = "(?=.)" + re
-
- if (addPatternStart) re = patternStart + re
-
- // parsing just a piece of a larger pattern.
- if (isSub === SUBPARSE) {
- return [ re, hasMagic ]
- }
-
- // skip the regexp for non-magical patterns
- // unescape anything in it, though, so that it'll be
- // an exact match against a file etc.
- if (!hasMagic) {
- return globUnescape(pattern)
- }
-
- var flags = options.nocase ? "i" : ""
- , regExp = new RegExp("^" + re + "$", flags)
-
- regExp._glob = pattern
- regExp._src = re
-
- return regExp
-}
-
-minimatch.makeRe = function (pattern, options) {
- return new Minimatch(pattern, options || {}).makeRe()
-}
-
-Minimatch.prototype.makeRe = makeRe
-function makeRe () {
- if (this.regexp || this.regexp === false) return this.regexp
-
- // at this point, this.set is a 2d array of partial
- // pattern strings, or "**".
- //
- // It's better to use .match(). This function shouldn't
- // be used, really, but it's pretty convenient sometimes,
- // when you just want to work with a regex.
- var set = this.set
-
- if (!set.length) return this.regexp = false
- var options = this.options
-
- var twoStar = options.noglobstar ? star
- : options.dot ? twoStarDot
- : twoStarNoDot
- , flags = options.nocase ? "i" : ""
-
- var re = set.map(function (pattern) {
- return pattern.map(function (p) {
- return (p === GLOBSTAR) ? twoStar
- : (typeof p === "string") ? regExpEscape(p)
- : p._src
- }).join("\\\/")
- }).join("|")
-
- // must match entire pattern
- // ending in a * or ** will make it less strict.
- re = "^" + re + "$"
-
- // can match anything, as long as it's not this.
- if (this.negate) re = "^(?!" + re + ").*$"
-
- try {
- return this.regexp = new RegExp(re, flags)
- } catch (ex) {
- return this.regexp = false
- }
-}
-
-minimatch.match = function (list, pattern, options) {
- var mm = new Minimatch(pattern, options)
- list = list.filter(function (f) {
- return mm.match(f)
- })
- if (options.nonull && !list.length) {
- list.push(pattern)
- }
- return list
-}
-
-Minimatch.prototype.match = match
-function match (f, partial) {
- // console.error("match", f, this.pattern)
- // short-circuit in the case of busted things.
- // comments, etc.
- if (this.comment) return false
- if (this.empty) return f === ""
-
- if (f === "/" && partial) return true
-
- var options = this.options
-
- // first, normalize any slash-separated path parts.
- // f = path.normalize(f)
-
- // windows: need to use /, not \
- // On other platforms, \ is a valid (albeit bad) filename char.
- if (process.platform === "win32") {
- f = f.split("\\").join("/")
- }
-
- // treat the test path as a set of pathparts.
- f = f.split(slashSplit)
- if (options.debug) {
- console.error(this.pattern, "split", f)
- }
-
- // just ONE of the pattern sets in this.set needs to match
- // in order for it to be valid. If negating, then just one
- // match means that we have failed.
- // Either way, return on the first hit.
-
- var set = this.set
- // console.error(this.pattern, "set", set)
-
- for (var i = 0, l = set.length; i < l; i ++) {
- var pattern = set[i]
- var hit = this.matchOne(f, pattern, partial)
- if (hit) {
- if (options.flipNegate) return true
- return !this.negate
- }
- }
-
- // didn't get any hits. this is success if it's a negative
- // pattern, failure otherwise.
- if (options.flipNegate) return false
- return this.negate
-}
-
-// set partial to true to test if, for example,
-// "/a/b" matches the start of "/*/b/*/d"
-// Partial means, if you run out of file before you run
-// out of pattern, then that's fine, as long as all
-// the parts match.
-Minimatch.prototype.matchOne = function (file, pattern, partial) {
- var options = this.options
-
- if (options.debug) {
- console.error("matchOne",
- { "this": this
- , file: file
- , pattern: pattern })
- }
-
- if (options.matchBase && pattern.length === 1) {
- file = path.basename(file.join("/")).split("/")
- }
-
- if (options.debug) {
- console.error("matchOne", file.length, pattern.length)
- }
-
- for ( var fi = 0
- , pi = 0
- , fl = file.length
- , pl = pattern.length
- ; (fi < fl) && (pi < pl)
- ; fi ++, pi ++ ) {
-
- if (options.debug) {
- console.error("matchOne loop")
- }
- var p = pattern[pi]
- , f = file[fi]
-
- if (options.debug) {
- console.error(pattern, p, f)
- }
-
- // should be impossible.
- // some invalid regexp stuff in the set.
- if (p === false) return false
-
- if (p === GLOBSTAR) {
- // "**"
- // a/**/b/**/c would match the following:
- // a/b/x/y/z/c
- // a/x/y/z/b/c
- // a/b/x/b/x/c
- // a/b/c
- // To do this, take the rest of the pattern after
- // the **, and see if it would match the file remainder.
- // If so, return success.
- // If not, the ** "swallows" a segment, and try again.
- // This is recursively awful.
- // a/b/x/y/z/c
- // - a matches a
- // - doublestar
- // - matchOne(b/x/y/z/c, b/**/c)
- // - b matches b
- // - doublestar
- // - matchOne(x/y/z/c, c) -> no
- // - matchOne(y/z/c, c) -> no
- // - matchOne(z/c, c) -> no
- // - matchOne(c, c) yes, hit
- var fr = fi
- , pr = pi + 1
- if (pr === pl) {
- // a ** at the end will just swallow the rest.
- // We have found a match.
- // however, it will not swallow /.x, unless
- // options.dot is set.
- // . and .. are *never* matched by **, for explosively
- // exponential reasons.
- for ( ; fi < fl; fi ++) {
- if (file[fi] === "." || file[fi] === ".." ||
- (!options.dot && file[fi].charAt(0) === ".")) return false
- }
- return true
- }
-
- // ok, let's see if we can swallow whatever we can.
- WHILE: while (fr < fl) {
- var swallowee = file[fr]
- if (swallowee === "." || swallowee === ".." ||
- (!options.dot && swallowee.charAt(0) === ".")) {
- // console.error("dot detected!")
- break WHILE
- }
-
- // XXX remove this slice. Just pass the start index.
- if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
- // found a match.
- return true
- } else {
- // ** swallows a segment, and continue.
- fr ++
- }
- }
- // no match was found.
- // However, in partial mode, we can't say this is necessarily over.
- // If there's more *pattern* left, then
- if (partial) {
- // ran out of file
- // console.error("\n>>> no match, partial?", file, fr, pattern, pr)
- if (fr === fl) return true
- }
- return false
- }
-
- // something other than **
- // non-magic patterns just have to match exactly
- // patterns with magic have been turned into regexps.
- var hit
- if (typeof p === "string") {
- if (options.nocase) {
- hit = f.toLowerCase() === p.toLowerCase()
- } else {
- hit = f === p
- }
- if (options.debug) {
- console.error("string match", p, f, hit)
- }
- } else {
- hit = f.match(p)
- if (options.debug) {
- console.error("pattern match", p, f, hit)
- }
- }
-
- if (!hit) return false
- }
-
- // Note: ending in / means that we'll get a final ""
- // at the end of the pattern. This can only match a
- // corresponding "" at the end of the file.
- // If the file ends in /, then it can only match a
- // a pattern that ends in /, unless the pattern just
- // doesn't have any more for it. But, a/b/ should *not*
- // match "a/b/*", even though "" matches against the
- // [^/]*? pattern, except in partial mode, where it might
- // simply not be reached yet.
- // However, a/b/ should still satisfy a/*
-
- // now either we fell off the end of the pattern, or we're done.
- if (fi === fl && pi === pl) {
- // ran out of pattern and filename at the same time.
- // an exact hit!
- return true
- } else if (fi === fl) {
- // ran out of file, but still had pattern left.
- // this is ok if we're doing the match as part of
- // a glob fs traversal.
- return partial
- } else if (pi === pl) {
- // ran out of pattern, still have file left.
- // this is only acceptable if we're on the very last
- // empty segment of a file with a trailing slash.
- // a/* should match a/b/
- var emptyFileEnd = (fi === fl - 1) && (file[fi] === "")
- return emptyFileEnd
- }
-
- // should be unreachable.
- throw new Error("wtf?")
-}
-
-
-// replace stuff like \* with *
-function globUnescape (s) {
- return s.replace(/\\(.)/g, "$1")
-}
-
-
-function regExpEscape (s) {
- return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")
-}
diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/package.json b/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/package.json
deleted file mode 100644
index 7ca0e02ba..000000000
--- a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me"
- },
- "name": "minimatch",
- "description": "a glob matcher in javascript",
- "version": "0.2.2",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/minimatch.git"
- },
- "main": "minimatch.js",
- "scripts": {
- "test": "tap test"
- },
- "engines": {
- "node": "*"
- },
- "dependencies": {
- "lru-cache": "~1.0.5"
- },
- "devDependencies": {
- "tap": ""
- },
- "licenses": [
- {
- "type": "MIT",
- "url": "http://github.com/isaacs/minimatch/raw/master/LICENSE"
- }
- ],
- "_npmUser": {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- "_id": "minimatch@0.2.2",
- "optionalDependencies": {},
- "_engineSupported": true,
- "_npmVersion": "1.1.11",
- "_nodeVersion": "v0.7.7-pre",
- "_defaultsLoaded": true,
- "_from": "minimatch@0.2"
-}
diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/package.json b/deps/npm/node_modules/node-gyp/node_modules/glob/package.json
index 5d8266db7..952ea1b95 100644
--- a/deps/npm/node_modules/node-gyp/node_modules/glob/package.json
+++ b/deps/npm/node_modules/node-gyp/node_modules/glob/package.json
@@ -36,7 +36,7 @@
"_id": "glob@3.1.9",
"optionalDependencies": {},
"_engineSupported": true,
- "_npmVersion": "1.1.11",
+ "_npmVersion": "1.1.13",
"_nodeVersion": "v0.7.7-pre",
"_defaultsLoaded": true,
"_from": "glob@3"
diff --git a/deps/npm/node_modules/node-gyp/package.json b/deps/npm/node_modules/node-gyp/package.json
index 956d38d16..3dc04578f 100644
--- a/deps/npm/node_modules/node-gyp/package.json
+++ b/deps/npm/node_modules/node-gyp/package.json
@@ -10,7 +10,7 @@
"bindings",
"gyp"
],
- "version": "0.3.7",
+ "version": "0.3.9",
"installVersion": 5,
"author": {
"name": "Nathan Rajlich",
@@ -31,7 +31,7 @@
"glob": "3",
"graceful-fs": "1",
"fstream": "~0.1.13",
- "minimatch": "~0.1.4",
+ "minimatch": "0.2.x",
"mkdirp": "0.3.0",
"nopt": "1",
"request": "2.9.x",
@@ -47,15 +47,15 @@
"name": "isaacs",
"email": "i@izs.me"
},
- "_id": "node-gyp@0.3.7",
+ "_id": "node-gyp@0.3.9",
"devDependencies": {},
"optionalDependencies": {},
"_engineSupported": true,
- "_npmVersion": "1.1.11",
+ "_npmVersion": "1.1.13",
"_nodeVersion": "v0.7.7-pre",
"_defaultsLoaded": true,
"dist": {
- "shasum": "0a83feb32683c828537eacd6deeae066d1dc01f1"
+ "shasum": "78c01d4b662c55607e7220b8c8e2a1f25390474a"
},
- "_from": "node-gyp@~0.3.4"
+ "_from": "node-gyp@~0.3.7"
}
diff --git a/deps/npm/node_modules/read/LICENCE b/deps/npm/node_modules/read/LICENCE
new file mode 100644
index 000000000..74489e2e2
--- /dev/null
+++ b/deps/npm/node_modules/read/LICENCE
@@ -0,0 +1,25 @@
+Copyright (c) Isaac Z. Schlueter
+All rights reserved.
+
+The BSD License
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/deps/npm/node_modules/read/lib/read.js b/deps/npm/node_modules/read/lib/read.js
index 246044bcd..ba2ef0ae7 100644
--- a/deps/npm/node_modules/read/lib/read.js
+++ b/deps/npm/node_modules/read/lib/read.js
@@ -5,6 +5,14 @@ var buffer = ""
, tty = require("tty")
, StringDecoder = require("string_decoder").StringDecoder
+function raw (mode) {
+ try {
+ process.stdin.setRawMode(mode)
+ } catch (e) {
+ tty.setRawMode(mode)
+ }
+}
+
function read (opts, cb) {
if (!cb) cb = opts, opts = {}
@@ -25,7 +33,7 @@ function read (opts, cb) {
cb = (function (cb) {
var called = false
var t = setTimeout(function () {
- tty.setRawMode(false)
+ raw(false)
process.stdout.write("\n")
if (def) done(null, def)
else done(new Error("timeout"))
@@ -109,7 +117,7 @@ function rawRead (def, timeout, delim, silent, num, cb) {
, val = ""
, decoder = new StringDecoder
- tty.setRawMode(true)
+ raw(true)
stdin.resume()
stdin.on("error", cb)
stdin.on("data", function D (c) {
@@ -122,7 +130,7 @@ function rawRead (def, timeout, delim, silent, num, cb) {
case "\u0004": // EOF
case delim:
- tty.setRawMode(false)
+ raw(false)
stdin.removeListener("data", D)
stdin.removeListener("error", cb)
val = val.trim() || def
@@ -131,7 +139,7 @@ function rawRead (def, timeout, delim, silent, num, cb) {
return cb(null, val)
case "\u0003": case "\0": // ^C or other signal abort
- tty.setRawMode(false)
+ raw(false)
stdin.removeListener("data", D)
stdin.removeListener("error", cb)
stdin.pause()
diff --git a/deps/npm/node_modules/read/package.json b/deps/npm/node_modules/read/package.json
index bc05577aa..f206a719b 100644
--- a/deps/npm/node_modules/read/package.json
+++ b/deps/npm/node_modules/read/package.json
@@ -1,16 +1,28 @@
{
"name": "read",
- "version": "0.0.1",
+ "version": "0.0.2",
"main": "lib/read.js",
"dependencies": {},
"devDependencies": {},
"engines": {
"node": ">=0.6"
},
- "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
+ "author": {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me",
+ "url": "http://blog.izs.me/"
+ },
"description": "read(1) for node programs",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/read.git"
- }
+ },
+ "license": "BSD",
+ "_id": "read@0.0.2",
+ "optionalDependencies": {},
+ "_engineSupported": true,
+ "_npmVersion": "1.1.15",
+ "_nodeVersion": "v0.7.7",
+ "_defaultsLoaded": true,
+ "_from": "read@0"
}
diff --git a/deps/npm/node_modules/uid-number/README.md b/deps/npm/node_modules/uid-number/README.md
new file mode 100644
index 000000000..81166753a
--- /dev/null
+++ b/deps/npm/node_modules/uid-number/README.md
@@ -0,0 +1,17 @@
+Use this module to convert a username/groupname to a uid/gid number.
+
+Usage:
+
+```
+npm install uid-number
+```
+
+Then, in your node program:
+
+```javascript
+var uidNumber = require("uid-number")
+uidNumber("isaacs", function (er, uid, gid) {
+ // gid is null because we didn't ask for a group name
+ // uid === 24561 because that's my number.
+})
+```
diff --git a/deps/npm/bin/npm-get-uid-gid.js b/deps/npm/node_modules/uid-number/get-uid-gid.js
index 390e0f2fc..0b391748a 100755
--- a/deps/npm/bin/npm-get-uid-gid.js
+++ b/deps/npm/node_modules/uid-number/get-uid-gid.js
@@ -1,3 +1,11 @@
+if (module !== require.main) {
+ throw new Error("This file should not be loaded with require()")
+}
+
+if (!process.getuid || !process.getgid) {
+ throw new Error("this file should not be called without uid/gid support")
+}
+
var argv = process.argv.slice(2)
, user = argv[0] || process.getuid()
, group = argv[1] || process.getgid()
diff --git a/deps/npm/node_modules/uid-number/package.json b/deps/npm/node_modules/uid-number/package.json
new file mode 100644
index 000000000..3c0592cb6
--- /dev/null
+++ b/deps/npm/node_modules/uid-number/package.json
@@ -0,0 +1,34 @@
+{
+ "author": {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me",
+ "url": "http://blog.izs.me/"
+ },
+ "name": "uid-number",
+ "description": "Convert a username/group name to a uid/gid number",
+ "version": "0.0.3",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/isaacs/uid-number.git"
+ },
+ "main": "uid-number.js",
+ "dependencies": {},
+ "devDependencies": {},
+ "optionalDependencies": {},
+ "engines": {
+ "node": "*"
+ },
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "_id": "uid-number@0.0.3",
+ "_engineSupported": true,
+ "_npmVersion": "1.1.12",
+ "_nodeVersion": "v0.7.7-pre",
+ "_defaultsLoaded": true,
+ "dist": {
+ "shasum": "be40aeab1db6ba45d2344d4ed6015109fc9d98d4"
+ },
+ "_from": "uid-number@0.0.3"
+}
diff --git a/deps/npm/node_modules/uid-number/uid-number.js b/deps/npm/node_modules/uid-number/uid-number.js
new file mode 100644
index 000000000..93f372bb9
--- /dev/null
+++ b/deps/npm/node_modules/uid-number/uid-number.js
@@ -0,0 +1,54 @@
+module.exports = uidNumber
+
+// This module calls into get-uid-gid.js, which sets the
+// uid and gid to the supplied argument, in order to find out their
+// numeric value. This can't be done in the main node process,
+// because otherwise node would be running as that user from this
+// point on.
+
+var child_process = require("child_process")
+ , path = require("path")
+ , uidSupport = process.getuid && process.setuid
+ , uidCache = {}
+ , gidCache = {}
+
+function uidNumber (uid, gid, cb) {
+ if (!uidSupport) return cb()
+ if (typeof cb !== "function") cb = gid, gid = null
+ if (typeof cb !== "function") cb = uid, uid = null
+ if (gid == null) gid = process.getgid()
+ if (uid == null) uid = process.getuid()
+ if (!isNaN(gid)) gid = uidCache[gid] = +gid
+ if (!isNaN(uid)) uid = uidCache[uid] = +uid
+
+ if (uidCache.hasOwnProperty(uid)) uid = uidCache[uid]
+ if (gidCache.hasOwnProperty(gid)) gid = gidCache[gid]
+
+ if (typeof gid === "number" && typeof uid === "number") {
+ return process.nextTick(cb.bind(null, null, uid, gid))
+ }
+
+ var getter = require.resolve("./get-uid-gid.js")
+
+ child_process.execFile( process.execPath
+ , [getter, uid, gid]
+ , function (code, out, err) {
+ if (er) return cb(new Error("could not get uid/gid\n" + err))
+ try {
+ out = JSON.parse(out+"")
+ } catch (ex) {
+ return cb(ex)
+ }
+
+ if (out.error) {
+ var er = new Error(out.error)
+ er.errno = out.errno
+ return cb(er)
+ }
+
+ if (isNaN(out.uid) || isNaN(out.gid)) return cb(new Error(
+ "Could not get uid/gid: "+JSON.stringify(out)))
+
+ cb(null, uidCache[uid] = +out.uid, uidCache[gid] = +out.gid)
+ })
+}
diff --git a/deps/npm/package.json b/deps/npm/package.json
index e619575c9..68a494227 100644
--- a/deps/npm/package.json
+++ b/deps/npm/package.json
@@ -10,7 +10,7 @@
"install",
"package.json"
],
- "version": "1.1.12",
+ "version": "1.1.16",
"preferGlobal": true,
"config": {
"publishtest": false
@@ -39,7 +39,7 @@
"slide": "1",
"abbrev": "1",
"graceful-fs": "~1.1.1",
- "minimatch": "0",
+ "minimatch": "~0.2",
"nopt": "1",
"node-uuid": "~1.3",
"proto-list": "1",
@@ -47,13 +47,17 @@
"request": "~2.9",
"which": "1",
"tar": "~0.1.12",
- "fstream": "~0.1.13",
+ "fstream": "~0.1.17",
"block-stream": "*",
"inherits": "1",
"mkdirp": "0.3",
"read": "0",
"lru-cache": "1",
- "node-gyp": "~0.3.4"
+ "node-gyp": "~0.3.7",
+ "fstream-npm": "0 >=0.0.4",
+ "uid-number": "0",
+ "archy": "0",
+ "chownr": "0"
},
"bundleDependencies": [
"slide",
@@ -76,7 +80,11 @@
"fast-list",
"read",
"lru-cache",
- "node-gyp"
+ "node-gyp",
+ "fstream-npm",
+ "uid-number",
+ "archy",
+ "chownr"
],
"devDependencies": {
"ronn": "https://github.com/isaacs/ronnjs/tarball/master"
diff --git a/deps/npm/scripts/index-build.js b/deps/npm/scripts/index-build.js
index b3c19a03a..551bb1d56 100755
--- a/deps/npm/scripts/index-build.js
+++ b/deps/npm/scripts/index-build.js
@@ -12,6 +12,7 @@ fs.readdir(api, done("api"))
function done (which) { return function (er, docs) {
if (er) throw er
+ docs.sort()
if (which === "api") apidocs = docs
else clidocs = docs