diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2011-12-16 13:57:36 -0800 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2011-12-16 13:57:36 -0800 |
commit | 1865b11dcb77b452ef84fac6970cc742b387dfab (patch) | |
tree | 4f7a6fd12041fc0598606188d68a1b036701bd70 /deps | |
parent | 67e12a0f84eb16bab804a6dde88154d66da9dba3 (diff) | |
parent | a599aeb2a8159c48eafbe066466ea5bc90d0c71c (diff) | |
download | node-new-1865b11dcb77b452ef84fac6970cc742b387dfab.tar.gz |
Merge remote branch 'origin/v0.6'
Conflicts:
wscript
Diffstat (limited to 'deps')
181 files changed, 1265 insertions, 621 deletions
diff --git a/deps/npm/.gitmodules b/deps/npm/.gitmodules index c705633663..169c87505c 100644 --- a/deps/npm/.gitmodules +++ b/deps/npm/.gitmodules @@ -36,19 +36,25 @@ url = https://github.com/mikeal/request.git [submodule "node_modules/tar"] path = node_modules/tar - url = git://github.com/isaacs/node-tar.git + url = https://github.com/isaacs/node-tar.git [submodule "node_modules/fstream"] path = node_modules/fstream - url = git://github.com/isaacs/fstream.git + url = https://github.com/isaacs/fstream.git [submodule "node_modules/inherits"] path = node_modules/inherits - url = git://github.com/isaacs/inherits.git + url = https://github.com/isaacs/inherits.git [submodule "node_modules/block-stream"] path = node_modules/block-stream - url = git://github.com/isaacs/block-stream.git + url = https://github.com/isaacs/block-stream.git [submodule "node_modules/mkdirp"] path = node_modules/mkdirp - url = git://github.com/isaacs/node-mkdirp.git + url = https://github.com/isaacs/node-mkdirp.git [submodule "node_modules/fast-list"] path = node_modules/fast-list - url = git://github.com/isaacs/fast-list.git + url = https://github.com/isaacs/fast-list.git +[submodule "node_modules/read"] + path = node_modules/read + url = https://github.com/isaacs/read.git +[submodule "node_modules/lru-cache"] + path = node_modules/lru-cache + url = https://github.com/isaacs/node-lru-cache.git diff --git a/deps/npm/.travis.yml b/deps/npm/.travis.yml new file mode 100644 index 0000000000..698bc9abdf --- /dev/null +++ b/deps/npm/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +before_install: "make &>out || cat out; rm out" +node_js: + - 0.6 diff --git a/deps/npm/Makefile b/deps/npm/Makefile index e10381baf7..20686da009 100644 --- a/deps/npm/Makefile +++ b/deps/npm/Makefile @@ -110,7 +110,7 @@ version: link publish: link git tag -s -m v$(shell npm -v) v$(shell npm -v) &&\ - git push origin master --tags &&\ + git push origin --tags &&\ npm publish &&\ make doc-publish diff --git a/deps/npm/bin/npm-cli.js b/deps/npm/bin/npm-cli.js index db6db2fbd2..e0b9f20bb8 100755 --- a/deps/npm/bin/npm-cli.js +++ b/deps/npm/bin/npm-cli.js @@ -12,6 +12,9 @@ if (typeof WScript !== "undefined") { return } + +process.title = "npm" + var log = require("../lib/utils/log.js") log.waitForConfig() log.info("ok", "it worked if it ends with") diff --git a/deps/npm/doc/cli/config.md b/deps/npm/doc/cli/config.md index e380e65eff..e70acc258a 100644 --- a/deps/npm/doc/cli/config.md +++ b/deps/npm/doc/cli/config.md @@ -225,6 +225,14 @@ The location of npm's cache directory. See `npm-cache(1)` If false, never shows colors. If `"always"` then always shows colors. If true, then only prints color codes for tty file descriptors. +### coverage + +* Default: false +* Type: Boolean + +A flag to tell test-harness to run with their coverage options enabled, +if they respond to the `npm_config_coverage` environment variable. + ### depth * Default: Infinity @@ -379,13 +387,16 @@ The location to write log output. ### loglevel -* Default: "warn" +* Default: "http" * Type: String -* Values: "silent", "win", "error", "warn", "info", "verbose", "silly" +* Values: "silent", "win", "error", "warn", "http", "info", "verbose", "silly" What level of logs to report. On failure, *all* logs are written to `npm-debug.log` in the current working directory. +Any logs of a higher level than the setting are shown. +The default is "http", which shows http, warn, and error output. + ### logprefix * Default: true on Posix, false on Windows @@ -537,6 +548,16 @@ Space-separated options that are always passed to search. Space-separated options that limit the results from search. +### searchsort + +* Default: "name" +* Type: String +* Values: "name", "-name", "date", "-date", "description", + "-description", "keywords", "-keywords" + +Indication of which field to sort search results by. Prefix with a `-` +character to indicate reverse sort. + ### shell * Default: SHELL environment variable, or "bash" on Posix, or "cmd" on diff --git a/deps/npm/doc/cli/developers.md b/deps/npm/doc/cli/developers.md index 0f0f94c588..9123f35a33 100644 --- a/deps/npm/doc/cli/developers.md +++ b/deps/npm/doc/cli/developers.md @@ -150,8 +150,8 @@ You can give publish a url to a tarball, or a filename of a tarball, or a path to a folder. Note that pretty much **everything in that folder will be exposed** -by default. So, if you have secret stuff in there, use a `.npminclude` -or `.npmignore` file to list out the globs to include/ignore, or publish +by default. So, if you have secret stuff in there, use a +`.npmignore` file to list out the globs to ignore, or publish from a fresh checkout. ## Brag about it diff --git a/deps/npm/doc/cli/search.md b/deps/npm/doc/cli/search.md index 3b15e9b073..e9e408c677 100644 --- a/deps/npm/doc/cli/search.md +++ b/deps/npm/doc/cli/search.md @@ -9,28 +9,9 @@ npm-search(1) -- Search for packages Search the registry for packages matching the search terms. -## CONFIGURATION - -### description - -* Default: true -* Type: Boolean - -Show the description in `npm search` - -### searchopts - -* Default: "" -* Type: String - -Space-separated options that are always passed to search. - -### searchexclude - -* Default: "" -* Type: String - -Space-separated options that limit the results from search. +If a term starts with `/`, then it's interpreted as a regular expression. +A trailing `/` will be ignored in this case. (Note that many regular +expression characters must be escaped or quoted in most shells.) ## SEE ALSO diff --git a/deps/npm/html/api/bin.html b/deps/npm/html/api/bin.html index accd17cc85..599096912c 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 — npm@1.1.0-alpha-6</p> +<p id="footer">bin — npm@1.1.0-beta-4</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 71f7da204e..b5828c3ddf 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 — npm@1.1.0-alpha-6</p> +<p id="footer">bugs — npm@1.1.0-beta-4</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 7102efdd14..d6c6615007 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-<command></code> for programmatic usage.</p> <ul><li><a href="../doc/index.html">index(1)</a></li></ul> </div> -<p id="footer">commands — npm@1.1.0-alpha-6</p> +<p id="footer">commands — npm@1.1.0-beta-4</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 f91ef57a2f..88c015dcb2 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 — npm@1.1.0-alpha-6</p> +<p id="footer">config — npm@1.1.0-beta-4</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 0e77dbad48..b1da74ebd1 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 — npm@1.1.0-alpha-6</p> +<p id="footer">deprecate — npm@1.1.0-beta-4</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 b2a5ca2693..e973071e45 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 — npm@1.1.0-alpha-6</p> +<p id="footer">docs — npm@1.1.0-beta-4</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 52c4830853..441c70d587 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 — npm@1.1.0-alpha-6</p> +<p id="footer">edit — npm@1.1.0-beta-4</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 bc052c55ce..b709dba409 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 <pkg></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 — npm@1.1.0-alpha-6</p> +<p id="footer">explore — npm@1.1.0-beta-4</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 a603fe53f4..5d38243cae 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 — npm@1.1.0-alpha-6</p> +<p id="footer">help-search — npm@1.1.0-beta-4</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 e693070be3..dc92ab518b 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 — npm@1.1.0-alpha-6</p> +<p id="footer">init — npm@1.1.0-beta-4</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 135ac35575..6b1d32d35f 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 — npm@1.1.0-alpha-6</p> +<p id="footer">install — npm@1.1.0-beta-4</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 70cb2adf4a..10e1850172 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 — npm@1.1.0-alpha-6</p> +<p id="footer">link — npm@1.1.0-beta-4</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 985f8795ff..7ec5544ae5 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 — npm@1.1.0-alpha-6</p> +<p id="footer">load — npm@1.1.0-beta-4</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 3842221ce3..742459ea15 100644 --- a/deps/npm/html/api/ls.html +++ b/deps/npm/html/api/ls.html @@ -53,7 +53,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 — npm@1.1.0-alpha-6</p> +<p id="footer">ls — npm@1.1.0-beta-4</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 7121387d0a..2d6719322d 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.0-alpha-6</p> +<p>1.1.0-beta-4</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 — npm@1.1.0-alpha-6</p> +<p id="footer">npm — npm@1.1.0-beta-4</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 08258050b3..e6aa1db809 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 — npm@1.1.0-alpha-6</p> +<p id="footer">outdated — npm@1.1.0-beta-4</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 dc5408dccb..1b7596f48a 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 — npm@1.1.0-alpha-6</p> +<p id="footer">owner — npm@1.1.0-beta-4</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 d3a315998e..b35f889f3f 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 — npm@1.1.0-alpha-6</p> +<p id="footer">pack — npm@1.1.0-beta-4</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 c184ea64fe..bbcf5f6222 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 — npm@1.1.0-alpha-6</p> +<p id="footer">prefix — npm@1.1.0-beta-4</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 9358fb46e9..5bc4bcd29b 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 — npm@1.1.0-alpha-6</p> +<p id="footer">prune — npm@1.1.0-beta-4</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 81e25707ee..4223f1e070 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 — npm@1.1.0-alpha-6</p> +<p id="footer">publish — npm@1.1.0-beta-4</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 05932ebcf5..57d11fef08 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 — npm@1.1.0-alpha-6</p> +<p id="footer">rebuild — npm@1.1.0-beta-4</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 f51bd12e16..de2844f2bc 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 — npm@1.1.0-alpha-6</p> +<p id="footer">restart — npm@1.1.0-beta-4</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 b8ed4cd9d5..9326c87324 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 — npm@1.1.0-alpha-6</p> +<p id="footer">root — npm@1.1.0-beta-4</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 9afd96da95..a81eabc4ad 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 — npm@1.1.0-alpha-6</p> +<p id="footer">run-script — npm@1.1.0-beta-4</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 3cf9710bce..1cb3de19ce 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 — npm@1.1.0-alpha-6</p> +<p id="footer">search — npm@1.1.0-beta-4</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 8a6a2c6709..f9ec1c5460 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 — npm@1.1.0-alpha-6</p> +<p id="footer">start — npm@1.1.0-beta-4</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 a1a59313f7..5aa5f79903 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 — npm@1.1.0-alpha-6</p> +<p id="footer">stop — npm@1.1.0-beta-4</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 6ba9e46715..bd02214a9e 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 — npm@1.1.0-alpha-6</p> +<p id="footer">submodule — npm@1.1.0-beta-4</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 2921500ea0..937979e367 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 — npm@1.1.0-alpha-6</p> +<p id="footer">tag — npm@1.1.0-beta-4</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 e1d1e6c771..979a93f3c1 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 — npm@1.1.0-alpha-6</p> +<p id="footer">test — npm@1.1.0-beta-4</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 3508abb31b..e92806b2fa 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 — npm@1.1.0-alpha-6</p> +<p id="footer">uninstall — npm@1.1.0-beta-4</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 186eed8a56..2637ef13d6 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 — npm@1.1.0-alpha-6</p> +<p id="footer">unpublish — npm@1.1.0-beta-4</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 c1f4c14b4e..4730b5f846 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 — npm@1.1.0-alpha-6</p> +<p id="footer">update — npm@1.1.0-beta-4</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 174ec680d2..b7ad219d72 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 — npm@1.1.0-alpha-6</p> +<p id="footer">version — npm@1.1.0-beta-4</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 5da1895485..6a76f0159a 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 — npm@1.1.0-alpha-6</p> +<p id="footer">view — npm@1.1.0-beta-4</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 937ee8907c..baea7fbcf2 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 — npm@1.1.0-alpha-6</p> +<p id="footer">whoami — npm@1.1.0-beta-4</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 2abe255459..e87af9ef31 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> — npm@1.1.0-alpha-6</p> +<p id="footer"><a href="../doc/README.html">README</a> — npm@1.1.0-beta-4</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 2eefce6788..ad79fd8806 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 — npm@1.1.0-alpha-6</p> +<p id="footer">adduser — npm@1.1.0-beta-4</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 313f2fb036..1191a3834b 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 — npm@1.1.0-alpha-6</p> +<p id="footer">bin — npm@1.1.0-beta-4</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 4770f5f284..5d28622587 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 — npm@1.1.0-alpha-6</p> +<p id="footer">bugs — npm@1.1.0-beta-4</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 2217e88a36..a3c50791eb 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 — npm@1.1.0-alpha-6</p> +<p id="footer">build — npm@1.1.0-beta-4</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 a582db8016..651d17252d 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 — npm@1.1.0-alpha-6</p> +<p id="footer">bundle — npm@1.1.0-beta-4</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 f815ba3f6a..767657cd04 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 — npm@1.1.0-alpha-6</p> +<p id="footer">cache — npm@1.1.0-beta-4</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 dbaabca1bb..1279a1a126 100644 --- a/deps/npm/html/doc/changelog.html +++ b/deps/npm/html/doc/changelog.html @@ -34,7 +34,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 — npm@1.1.0-alpha-6</p> +<p id="footer">changelog — npm@1.1.0-beta-4</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 99e7254dfb..5617e16819 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 — npm@1.1.0-alpha-6</p> +<p id="footer">coding-style — npm@1.1.0-beta-4</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 c0f2089803..0ba3d3c510 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 — npm@1.1.0-alpha-6</p> +<p id="footer">completion — npm@1.1.0-beta-4</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 724d4498cb..04f4a4a30a 100644 --- a/deps/npm/html/doc/config.html +++ b/deps/npm/html/doc/config.html @@ -207,6 +207,13 @@ to trust only that specific signing authority.</p> <p>If false, never shows colors. If <code>"always"</code> then always shows colors. If true, then only prints color codes for tty file descriptors.</p> +<h3 id="coverage">coverage</h3> + +<ul><li>Default: false</li><li>Type: Boolean</li></ul> + +<p>A flag to tell test-harness to run with their coverage options enabled, +if they respond to the <code>npm_config_coverage</code> environment variable.</p> + <h3 id="depth">depth</h3> <ul><li>Default: Infinity</li><li>Type: Number</li></ul> @@ -338,11 +345,14 @@ being installed locally.</li></ul> <h3 id="loglevel">loglevel</h3> -<ul><li>Default: "warn"</li><li>Type: String</li><li>Values: "silent", "win", "error", "warn", "info", "verbose", "silly"</li></ul> +<ul><li>Default: "http"</li><li>Type: String</li><li>Values: "silent", "win", "error", "warn", "http", "info", "verbose", "silly"</li></ul> <p>What level of logs to report. On failure, <em>all</em> logs are written to <code>npm-debug.log</code> in the current working directory.</p> +<p>Any logs of a higher level than the setting are shown. +The default is "http", which shows http, warn, and error output.</p> + <h3 id="logprefix">logprefix</h3> <ul><li>Default: true on Posix, false on Windows</li><li>Type: Boolean</li></ul> @@ -474,6 +484,14 @@ this as true.</p> <p>Space-separated options that limit the results from search.</p> +<h3 id="searchsort">searchsort</h3> + +<ul><li>Default: "name"</li><li>Type: String</li><li>Values: "name", "-name", "date", "-date", "description", +"-description", "keywords", "-keywords"</li></ul> + +<p>Indication of which field to sort search results by. Prefix with a <code>-</code> +character to indicate reverse sort.</p> + <h3 id="shell">shell</h3> <ul><li>Default: SHELL environment variable, or "bash" on Posix, or "cmd" on @@ -597,7 +615,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 — npm@1.1.0-alpha-6</p> +<p id="footer">config — npm@1.1.0-beta-4</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 65af3e7869..69e5ad9129 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 — npm@1.1.0-alpha-6</p> +<p id="footer">deprecate — npm@1.1.0-beta-4</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 9d48bbde0a..a69e36b923 100644 --- a/deps/npm/html/doc/developers.html +++ b/deps/npm/html/doc/developers.html @@ -136,8 +136,8 @@ bring in your module's main module.</p> or a path to a folder.</p> <p>Note that pretty much <strong>everything in that folder will be exposed</strong> -by default. So, if you have secret stuff in there, use a <code>.npminclude</code> -or <code>.npmignore</code> file to list out the globs to include/ignore, or publish +by default. So, if you have secret stuff in there, use a +<code>.npmignore</code> file to list out the globs to ignore, or publish from a fresh checkout.</p> <h2 id="Brag-about-it">Brag about it</h2> @@ -150,7 +150,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 — npm@1.1.0-alpha-6</p> +<p id="footer">developers — npm@1.1.0-beta-4</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 6e600c6a03..a0f01c66f8 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 — npm@1.1.0-alpha-6</p> +<p id="footer">docs — npm@1.1.0-beta-4</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 c40072736c..2e8bbc9acb 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 — npm@1.1.0-alpha-6</p> +<p id="footer">edit — npm@1.1.0-beta-4</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 36b1aeb641..99727b2a37 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 — npm@1.1.0-alpha-6</p> +<p id="footer">explore — npm@1.1.0-beta-4</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 883f0df771..f256923e78 100644 --- a/deps/npm/html/doc/faq.html +++ b/deps/npm/html/doc/faq.html @@ -215,7 +215,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 — npm@1.1.0-alpha-6</p> +<p id="footer">faq — npm@1.1.0-beta-4</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 a5cff405e6..499593decc 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 — npm@1.1.0-alpha-6</p> +<p id="footer">folders — npm@1.1.0-beta-4</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 3fa0d77710..34b32beee5 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 — npm@1.1.0-alpha-6</p> +<p id="footer">help-search — npm@1.1.0-beta-4</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 c79bfdb622..c88b9edf5d 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 — npm@1.1.0-alpha-6</p> +<p id="footer">help — npm@1.1.0-beta-4</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 84a5554337..a5c92210ac 100644 --- a/deps/npm/html/doc/index.html +++ b/deps/npm/html/doc/index.html @@ -372,7 +372,7 @@ <p> Display npm username</p> </div> -<p id="footer">index — npm@1.1.0-alpha-6</p> +<p id="footer">index — npm@1.1.0-beta-4</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 3f9dbb1b91..bb01cf1277 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 — npm@1.1.0-alpha-6</p> +<p id="footer">init — npm@1.1.0-beta-4</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 2aac71547f..714d9fe61a 100644 --- a/deps/npm/html/doc/install.html +++ b/deps/npm/html/doc/install.html @@ -134,7 +134,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></ul> </div> -<p id="footer">install — npm@1.1.0-alpha-6</p> +<p id="footer">install — npm@1.1.0-beta-4</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 3e360b791d..cb5b841f89 100644 --- a/deps/npm/html/doc/json.html +++ b/deps/npm/html/doc/json.html @@ -436,7 +436,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 — npm@1.1.0-alpha-6</p> +<p id="footer">json — npm@1.1.0-beta-4</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 eafeb22ff6..96dabc862a 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 — npm@1.1.0-alpha-6</p> +<p id="footer">link — npm@1.1.0-beta-4</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 56d0e9fa70..18b6af8338 100644 --- a/deps/npm/html/doc/list.html +++ b/deps/npm/html/doc/list.html @@ -52,7 +52,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 — npm@1.1.0-alpha-6</p> +<p id="footer">list — npm@1.1.0-beta-4</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 f83e3c008a..3b9cd6e4a1 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.0-alpha-6</p> +<p>1.1.0-beta-4</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 — npm@1.1.0-alpha-6</p> +<p id="footer">npm — npm@1.1.0-beta-4</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 d451098d9a..2d052bc1d1 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 — npm@1.1.0-alpha-6</p> +<p id="footer">outdated — npm@1.1.0-beta-4</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 399a9d4d2d..d6b757e886 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></ul> </div> -<p id="footer">owner — npm@1.1.0-alpha-6</p> +<p id="footer">owner — npm@1.1.0-beta-4</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 72cdeae742..fbe39c6e07 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 — npm@1.1.0-alpha-6</p> +<p id="footer">pack — npm@1.1.0-beta-4</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 c17b7e195e..d081d011a7 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 — npm@1.1.0-alpha-6</p> +<p id="footer">prefix — npm@1.1.0-beta-4</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 710a84d542..ad7ccf8bb2 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 — npm@1.1.0-alpha-6</p> +<p id="footer">prune — npm@1.1.0-beta-4</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 b6046cd3b0..dfa0cb6902 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 — npm@1.1.0-alpha-6</p> +<p id="footer">publish — npm@1.1.0-beta-4</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 6cf2e5390e..4727860785 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 — npm@1.1.0-alpha-6</p> +<p id="footer">rebuild — npm@1.1.0-beta-4</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 c53c2343b3..a4fd408af0 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></ul> </div> -<p id="footer">registry — npm@1.1.0-alpha-6</p> +<p id="footer">registry — npm@1.1.0-beta-4</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 095fbca628..7a084186f3 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 — npm@1.1.0-alpha-6</p> +<p id="footer">removing-npm — npm@1.1.0-beta-4</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 3eb4fd3a93..3bbbedd6fd 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 — npm@1.1.0-alpha-6</p> +<p id="footer">restart — npm@1.1.0-beta-4</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 c3d2610604..04e5e339ff 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 — npm@1.1.0-alpha-6</p> +<p id="footer">root — npm@1.1.0-beta-4</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 d2e018aa89..811c6c5d66 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 — npm@1.1.0-alpha-6</p> +<p id="footer">run-script — npm@1.1.0-beta-4</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 759cca5a89..0230330689 100644 --- a/deps/npm/html/doc/scripts.html +++ b/deps/npm/html/doc/scripts.html @@ -164,7 +164,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 — npm@1.1.0-alpha-6</p> +<p id="footer">scripts — npm@1.1.0-beta-4</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 c042d1e4d2..2ec8bfb9af 100644 --- a/deps/npm/html/doc/search.html +++ b/deps/npm/html/doc/search.html @@ -16,31 +16,15 @@ <p>Search the registry for packages matching the search terms.</p> -<h2 id="CONFIGURATION">CONFIGURATION</h2> - -<h3 id="description">description</h3> - -<ul><li>Default: true</li><li>Type: Boolean</li></ul> - -<p>Show the description in <code>npm search</code></p> - -<h3 id="searchopts">searchopts</h3> - -<ul><li>Default: ""</li><li>Type: String</li></ul> - -<p>Space-separated options that are always passed to search.</p> - -<h3 id="searchexclude">searchexclude</h3> - -<ul><li>Default: ""</li><li>Type: String</li></ul> - -<p>Space-separated options that limit the results from search.</p> +<p>If a term starts with <code>/</code>, then it's interpreted as a regular expression. +A trailing <code>/</code> will be ignored in this case. (Note that many regular +expression characters must be escaped or quoted in most shells.)</p> <h2 id="SEE-ALSO">SEE ALSO</h2> <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 — npm@1.1.0-alpha-6</p> +<p id="footer">search — npm@1.1.0-beta-4</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 3bd1954929..2d0a33aa11 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 — npm@1.1.0-alpha-6</p> +<p id="footer">semver — npm@1.1.0-beta-4</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 dd3b07451e..fafcecfb02 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 — npm@1.1.0-alpha-6</p> +<p id="footer">star — npm@1.1.0-beta-4</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 dae9352e7d..8bf98ef759 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 — npm@1.1.0-alpha-6</p> +<p id="footer">start — npm@1.1.0-beta-4</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 13c2c9fb17..4fae4454ca 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 — npm@1.1.0-alpha-6</p> +<p id="footer">stop — npm@1.1.0-beta-4</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 bc61746c67..2bc43a192c 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 — npm@1.1.0-alpha-6</p> +<p id="footer">submodule — npm@1.1.0-beta-4</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 4662c1da34..700d7e6654 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 — npm@1.1.0-alpha-6</p> +<p id="footer">tag — npm@1.1.0-beta-4</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 e415cef390..cdc1c7f72b 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 — npm@1.1.0-alpha-6</p> +<p id="footer">test — npm@1.1.0-beta-4</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 d262cfc1ea..7f199cfecd 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 — npm@1.1.0-alpha-6</p> +<p id="footer">uninstall — npm@1.1.0-beta-4</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 89b312ccca..cf4dd4896e 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 — npm@1.1.0-alpha-6</p> +<p id="footer">unpublish — npm@1.1.0-beta-4</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 b5e9d007c0..7a55fcddf4 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 — npm@1.1.0-alpha-6</p> +<p id="footer">update — npm@1.1.0-beta-4</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 9bc3ce49c6..7208deb13e 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 — npm@1.1.0-alpha-6</p> +<p id="footer">version — npm@1.1.0-beta-4</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 f1ed5c4d29..4441f9d87a 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 — npm@1.1.0-alpha-6</p> +<p id="footer">view — npm@1.1.0-beta-4</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 30826d3846..e3f4ce9d0e 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 — npm@1.1.0-alpha-6</p> +<p id="footer">whoami — npm@1.1.0-beta-4</p> <script> ;(function () { var wrapper = document.getElementById("wrapper") diff --git a/deps/npm/lib/adduser.js b/deps/npm/lib/adduser.js index b6d08ed760..d65eed5952 100644 --- a/deps/npm/lib/adduser.js +++ b/deps/npm/lib/adduser.js @@ -5,7 +5,7 @@ var registry = require("./utils/npm-registry-client/index.js") , ini = require("./utils/ini.js") , log = require("./utils/log.js") , npm = require("./npm.js") - , prompt = require("./utils/prompt.js") + , read = require("read") , promiseChain = require("./utils/promise-chain.js") , crypto @@ -26,15 +26,15 @@ function adduser (args, cb) { , changed = false promiseChain(cb) - (prompt, ["Username: ", u.u], function (un) { + (read, [{prompt: "Username: ", default: u.u}], function (un) { changed = u.u !== un u.u = un }) (function (cb) { if (u.p && !changed) return cb(null, u.p) - prompt("Password: ", u.p, true, cb) + read({prompt: "Password: ", default: u.p, silent: true}, cb) }, [], function (pw) { u.p = pw }) - (prompt, ["Email: ", u.e], function (em) { u.e = em }) + (read, [{prompt: "Email: ", default: u.e}], function (em) { u.e = em }) (function (cb) { if (changed) npm.config.del("_auth") registry.adduser(u.u, u.p, u.e, function (er) { diff --git a/deps/npm/lib/bugs.js b/deps/npm/lib/bugs.js index 1c52ffda0e..a3a017cc02 100644 --- a/deps/npm/lib/bugs.js +++ b/deps/npm/lib/bugs.js @@ -23,8 +23,8 @@ function bugs (args, cb) { var bugs = d.bugs , repo = d.repository || d.repositories if (bugs) { - if (typeof bugs === "string") return open(bugs, cb) - if (bugs.url) return open(bugs.url, cb) + if (typeof bugs === "string") return open(bugs, cb) + if (bugs.url) return open(bugs.url, cb) } if (repo) { if (Array.isArray(repo)) repo = repo.shift() diff --git a/deps/npm/lib/cache.js b/deps/npm/lib/cache.js index 7260ab61a3..a73a874621 100644 --- a/deps/npm/lib/cache.js +++ b/deps/npm/lib/cache.js @@ -105,9 +105,7 @@ function read (name, ver, forceBypass, cb) { return cb(er, data) } - if (forceBypass - && (npm.config.get("force") - || process.platform === "cygwin")) { + if (forceBypass && npm.config.get("force")) { log.verbose(true, "force found, skipping cache") return addNamed(name, ver, c) } @@ -335,7 +333,7 @@ function addRemoteGit (u, parsed, name, cb_) { // name@blah thing. var inFlightNames = {} function addNamed (name, x, cb_) { - log.info([name, x], "addNamed") + log.verbose([name, x], "addNamed") var k = name + "@" + x if (!inFlightNames[k]) inFlightNames[k] = [] var iF = inFlightNames[k] @@ -368,10 +366,11 @@ function addNameTag (name, tag, cb) { engineFilter(data) if (data["dist-tags"] && data["dist-tags"][tag] && data.versions[data["dist-tags"][tag]]) { - return addNameVersion(name, data["dist-tags"][tag], cb) + var ver = data["dist-tags"][tag] + return addNameVersion(name, ver, data.versions[ver], cb) } if (!explicit && Object.keys(data.versions).length) { - return addNameRange(name, "*", cb) + return addNameRange(name, "*", data, cb) } return cb(installTargetsError(tag, data)) }) @@ -393,24 +392,84 @@ function engineFilter (data) { }) } -function addNameRange (name, range, cb) { +function addNameRange (name, range, data, cb) { + if (typeof cb !== "function") cb = data, data = null + range = semver.validRange(range) if (range === null) return cb(new Error( "Invalid version range: "+range)) - registry.get(name, function (er, data, json, response) { + + log.silly([name, range, !!data], "name, range, hasData") + + if (data) return next() + registry.get(name, function (er, d, json, response) { if (er) return cb(er) + data = d + next() + }) + + function next () { + log.silly([name, range, !!data], "name, range, hasData 2") engineFilter(data) + + if (npm.config.get("registry")) return next_() + + cachedFilter(data, range, function (er) { + if (er) return cb(er) + if (Object.keys(data.versions).length === 0) { + return cb(new Error( "Can't fetch, and not cached: " + + data.name + "@" + range)) + } + next_() + }) + } + + function next_ () { + log.silly([data.name, Object.keys(data.versions)], "versions") // if the tagged version satisfies, then use that. var tagged = data["dist-tags"][npm.config.get("tag")] if (tagged && data.versions[tagged] && semver.satisfies(tagged, range)) { - return addNameVersion(name, tagged, cb) + return addNameVersion(name, tagged, data.versions[tagged], cb) } + // find the max satisfying version. var ms = semver.maxSatisfying(Object.keys(data.versions || {}), range) if (!ms) { return cb(installTargetsError(range, data)) } - addNameVersion(name, ms, cb) + + // if we don't have a registry connection, try to see if + // there's a cached copy that will be ok. + addNameVersion(name, ms, data.versions[ms], cb) + } +} + +// filter the versions down based on what's already in cache. +function cachedFilter (data, range, cb) { + log.silly(data.name, "cachedFilter") + ls_(data.name, 1, function (er, files) { + if (er) return log.er(cb, "Not in cache, can't fetch: "+data.name)(er) + files = files.map(function (f) { + return path.basename(f.replace(/(\\|\/)$/, "")) + }).filter(function (f) { + return semver.valid(f) && semver.satisfies(f, range) + }) + + if (files.length === 0) { + return cb(new Error("Not in cache, can't fetch: "+data.name+"@"+range)) + } + + log.silly([data.name, files], "cached") + Object.keys(data.versions).forEach(function (v) { + if (files.indexOf(v) === -1) delete data.versions[v] + }) + + if (Object.keys(data.versions).length === 0) { + return log.er(cb, "Not in cache, can't fetch: "+data.name)(er) + } + + log.silly([data.name, Object.keys(data.versions)], "filtered") + cb(null, data) }) } @@ -430,11 +489,26 @@ function installTargetsError (requested, data) { + requested + "\n" + targets) } -function addNameVersion (name, ver, cb) { +function addNameVersion (name, ver, data, cb) { + if (typeof cb !== "function") cb = data, data = null + ver = semver.valid(ver) if (ver === null) return cb(new Error("Invalid version: "+ver)) - registry.get(name, ver, function (er, data, json, response) { + + var response + + if (data) { + response = null + return next() + } + registry.get(name, ver, function (er, d, json, resp) { if (er) return cb(er) + data = d + response = resp + next() + }) + + function next () { deprCheck(data) var dist = data.dist @@ -452,8 +526,7 @@ function addNameVersion (name, ver, cb) { if (!dist.tarball) return cb(new Error( "No dist.tarball in " + data._id + " package")) - if (response.statusCode !== 304 || npm.config.get("force") - || process.platform === "cygwin") { + if ((response && response.statusCode !== 304) || npm.config.get("force")) { return fetchit() } @@ -469,6 +542,10 @@ function addNameVersion (name, ver, cb) { }) function fetchit () { + if (!npm.config.get("registry")) { + return cb(new Error("Cannot fetch: "+dist.tarball)) + } + // use the same protocol as the registry. // https registry --> https tarballs. var tb = url.parse(dist.tarball) @@ -480,7 +557,7 @@ function addNameVersion (name, ver, cb) { , name+"-"+ver , cb ) } - }) + } } function addLocal (p, name, cb_) { diff --git a/deps/npm/lib/init.js b/deps/npm/lib/init.js index 950cb45885..ee7e8773af 100644 --- a/deps/npm/lib/init.js +++ b/deps/npm/lib/init.js @@ -3,7 +3,7 @@ module.exports = init -var prompt = require("./utils/prompt.js") +var read = require("read") , path = require("path") , readJson = require("./utils/read-json.js") , fs = require("graceful-fs") @@ -66,24 +66,26 @@ function init_ (data, folder, cb) { ,"" ].join("\n")) promiseChain(cb) - ( prompt - , ["Package name: ", defaultName(folder, data)] + ( read + , [{prompt: "Package name: ", default: defaultName(folder, data)}] , function (n) { data.name = n } ) - ( prompt - , ["Description: ", data.description] + ( read + , [{prompt: "Description: ", default: data.description}] , function (d) { data.description = d } ) ( defaultVersion, [folder, data], function (v) { data.version = v } ) (function (cb) { - prompt("Package version: ", data.version, function (er, v) { + read( { prompt: "Package version: ", default: data.version } + , function (er, v) { if (er) return cb(er) data.version = v cb() }) }, []) - ( prompt - , ["Project homepage: ", data.homepage || data.url || "none"] + ( read + , [ { prompt: "Project homepage: " + , default: data.homepage || data.url || "none" } ] , function (u) { if (u === "none") return data.homepage = u @@ -92,40 +94,42 @@ function init_ (data, folder, cb) { ) ( defaultRepo, [folder, data], function (r) { data.repository = r } ) (function (cb) { - prompt( "Project git repository: " - , data.repository && data.repository.url || "none" - , function (er, r) { - if (er) return cb(er) - if (r !== "none") { - data.repository = (data.repository || {}).url = r - } - cb() + read( { prompt: "Project git repository: " + , default: data.repository && data.repository.url || "none" } + , function (er, r) { + if (er) return cb(er) + if (r !== "none") { + data.repository = (data.repository || {}).url = r } - ) + cb() + } + ) }, []) - ( prompt - , ["Author name: ", data.author && data.author.name] + ( read + , [{ prompt: "Author name: ", default: data.author && data.author.name }] , function (n) { if (!n) return (data.author = data.author || {}).name = n } ) - ( prompt - , ["Author email: ", data.author && data.author.email || "none"] + ( read + , [ { prompt: "Author email: " + , default: data.author && data.author.email || "none" } ] , function (n) { if (n === "none") return (data.author = data.author || {}).email = n } ) - ( prompt - , ["Author url: ", data.author && data.author.url || "none"] + ( read + , [ { prompt: "Author url: " + , default: data.author && data.author.url || "none" } ] , function (n) { if (n === "none") return (data.author = data.author || {}).url = n } ) - ( prompt - , ["Main module/entry point: ", data.main || "none"] + ( read + , [ { prompt: "Main module/entry point: ", default: data.main || "none" } ] , function (m) { if (m === "none") { delete data.main @@ -134,18 +138,17 @@ function init_ (data, folder, cb) { data.main = m } ) - ( prompt - , ["Test command: ", data.scripts && data.scripts.test || "none"] + ( read + , [ { prompt: "Test command: " + , default: data.scripts && data.scripts.test || "none" } ] , function (t) { if (t === "none") return (data.scripts = data.scripts || {}).test = t } ) - ( prompt - , [ "What versions of node does it run on? " - , data.engines && data.engines.node - || (eng) - ] + ( read + , [ { prompt: "What versions of node does it run on? " + , default: data.engines && data.engines.node || (eng) } ] , function (nodever) { (data.engines = data.engines || {}).node = nodever } @@ -167,7 +170,7 @@ function init_ (data, folder, cb) { output.write(msg, cb) }) (function (cb) { - prompt("\nIs this ok? ", "yes", function (er, ok) { + read({ prompt: "\nIs this ok? ", default: "yes" }, function (er, ok) { if (er) return cb(er) if (ok.toLowerCase().charAt(0) !== "y") { return cb(new Error("cancelled")) diff --git a/deps/npm/lib/install.js b/deps/npm/lib/install.js index 4d71b9a512..ca54585e03 100644 --- a/deps/npm/lib/install.js +++ b/deps/npm/lib/install.js @@ -565,7 +565,7 @@ function write (target, targetFolder, family, ancestors, cb_) { // cache.unpack returns the data object, and all we care about // is the list of installed packages from that last thing. if (!er) return cb_(er, data) - log.error(er, "error installing "+target._id) + log.error(target._id,"error installing") if (false === npm.config.get("rollback")) return cb_(er) npm.commands.unbuild([targetFolder], function (er2) { if (er2) log.error(er2, "error rolling back "+target._id) diff --git a/deps/npm/lib/npm.js b/deps/npm/lib/npm.js index 51f7d64b88..44a687f99d 100644 --- a/deps/npm/lib/npm.js +++ b/deps/npm/lib/npm.js @@ -11,9 +11,6 @@ if (typeof WScript !== "undefined") { } -process.title = "npm" - - // FIXME there really ought to be a path.split in node core require("path").SPLIT_CHAR = process.platform === "win32" ? "\\" : "/" @@ -166,6 +163,7 @@ var commandCache = {} , plumbing = [ "build" , "unbuild" , "xmas" + , "substack" ] , fullList = npm.fullList = cmdList.concat(aliasNames).filter(function (c) { return plumbing.indexOf(c) === -1 diff --git a/deps/npm/lib/rebuild.js b/deps/npm/lib/rebuild.js index f3f7596204..fc5f96825d 100644 --- a/deps/npm/lib/rebuild.js +++ b/deps/npm/lib/rebuild.js @@ -7,6 +7,9 @@ var readInstalled = require("./utils/read-installed.js") , path = require("path") , npm = require("./npm.js") , output = require("./utils/output.js") + , asyncMap = require("slide").asyncMap + , fs = require("graceful-fs") + , exec = require("./utils/exec.js") rebuild.usage = "npm rebuild [<name>[@<version>] [name[@<version>] ...]]" @@ -22,6 +25,33 @@ function rebuild (args, cb) { }) if (!folders.length) return cb() log.silly(folders, "rebuild set") + cleanBuild(folders, set, cb) + }) +} + +function cleanBuild (folders, set, cb) { + // https://github.com/isaacs/npm/issues/1872 + // If there's a makefile, try 'make clean' + // If there's a wscript, try 'node-waf clean' + // But don't die on either of those if they fail. + // Just a best-effort kind of deal. + asyncMap(folders, function (f, cb) { + fs.readdir(f, function (er, files) { + // everything should be a dir. + if (er) return cb(er) + if (files.indexOf("wscript") !== -1) { + exec("node-waf", ["clean"], null, false, f, thenBuild) + } else if (files.indexOf("Makefile") !== -1) { + exec("make", ["clean"], null, false, f, thenBuild) + } else thenBuild() + }) + function thenBuild (er) { + // ignore error, just continue + // it could be that it's not configured yet or whatever. + cb() + } + }, function (er) { + if (er) return cb(er) npm.commands.build(folders, function (er) { if (er) return cb(er) output.write(folders.map(function (f) { diff --git a/deps/npm/lib/search.js b/deps/npm/lib/search.js index 45e436a0c1..92f4319f58 100644 --- a/deps/npm/lib/search.js +++ b/deps/npm/lib/search.js @@ -82,13 +82,19 @@ function filter (data, args, notArgs) { } function stripData (data) { - return { name:data.name - , description:npm.config.get("description") ? data.description : "" - , maintainers:(data.maintainers || []).map(function (m) { + return { name: data.name + , description: npm.config.get("description") ? data.description : "" + , maintainers: (data.maintainers || []).map(function (m) { return "=" + m.name }) - , url:!Object.keys(data.versions || {}).length ? data.url : null - , keywords:data.keywords || [] + , url: !Object.keys(data.versions || {}).length ? data.url : null + , keywords: data.keywords || [] + , time: data.time + && data.time.modified + && (new Date(data.time.modified).toISOString() + .split("T").join(" ") + .replace(/:[0-9]{2}\.[0-9]{3}Z$/, "")) + || "(prehistoric)" } } @@ -108,16 +114,23 @@ function getWords (data) { function filterWords (data, args, notArgs) { var words = data.words for (var i = 0, l = args.length; i < l; i ++) { - if (words.indexOf(args[i]) === -1) { - return false - } + if (!match(words, args[i])) return false } for (var i = 0, l = notArgs.length; i < l; i ++) { - if (words.indexOf(notArgs[i]) !== -1) return false + if (match(words, notArgs[i])) return false } return true } +function match (words, arg) { + if (arg.charAt(0) === "/") { + arg = arg.replace(/\/$/, "") + arg = new RegExp(arg.substr(1, arg.length - 1)) + return words.match(arg) + } + return words.indexOf(arg) !== -1 +} + function prettify (data, args) { try { var tty = require("tty") @@ -130,14 +143,24 @@ function prettify (data, args) { // name, desc, author, keywords var longest = [] , spaces - , maxLen = [20, 60, 20, Infinity] - , headings = ["NAME", "DESCRIPTION", "AUTHOR", "KEYWORDS"] + , maxLen = npm.config.get("description") + ? [20, 60, 20, 20, Infinity] + : [20, 20, 20, Infinity] + , headings = npm.config.get("description") + ? ["NAME", "DESCRIPTION", "AUTHOR", "DATE", "KEYWORDS"] + : ["NAME", "AUTHOR", "DATE", "KEYWORDS"] , lines + , searchsort = (npm.config.get("searchsort") || "NAME").toLowerCase() + , sortFields = { name: 0 + , description: 1 + , author: 2 + , date: 3 + , keywords: 4 } + , searchRev = searchsort.charAt(0) === "-" + , sortField = sortFields[searchsort.replace(/^\-+/, "")] lines = Object.keys(data).map(function (d) { return data[d] - }).filter(function (data) { - return data.name }).map(function (data) { // turn a pkg data into a string // [name,who,desc,targets,keywords] tuple @@ -149,6 +172,7 @@ function prettify (data, args) { var l = [ data.name , data.description || "" , data.maintainers.join(" ") + , data.time , (data.keywords || []).join(" ") ] l.forEach(function (s, i) { @@ -162,6 +186,13 @@ function prettify (data, args) { l[i] = l[i].replace(/\s+/g, " ") }) return l + }).sort(function (a, b) { + // a and b are "line" objects of [name, desc, maint, time, kw] + var aa = a[sortField].toLowerCase() + , bb = b[sortField].toLowerCase() + return aa === bb ? 0 + : aa < bb ? (searchRev ? 1 : -1) + : (searchRev ? -1 : 1) }).map(function (line) { return line.map(function (s, i) { spaces = spaces || longest.map(function (n) { @@ -173,8 +204,6 @@ function prettify (data, args) { } return s + spaces[i].substr(len) }).join(" ").substr(0, cols).trim() - }).sort(function (a, b) { - return a === b ? 0 : a > b ? 1 : -1 }).map(function (line) { // colorize! args.forEach(function (arg, i) { @@ -201,8 +230,18 @@ function addColorMarker (str, arg, i) { var m = i % cl + 1 , markStart = String.fromCharCode(m) , markEnd = String.fromCharCode(0) - , pieces = str.toLowerCase().split(arg.toLowerCase()) + + if (arg.charAt(0) === "/") { + //arg = arg.replace(/\/$/, "") + return str.replace( new RegExp(arg.substr(1, arg.length - 1), "gi") + , function (bit) { return markStart + bit + markEnd } ) + + } + + // just a normal string, do the split/map thing + var pieces = str.toLowerCase().split(arg.toLowerCase()) , p = 0 + return pieces.map(function (piece, i) { piece = str.substr(p, piece.length) var mark = markStart @@ -211,8 +250,8 @@ function addColorMarker (str, arg, i) { p += piece.length + arg.length return piece + mark }).join("") - return str.split(arg).join(mark) } + function colorize (line) { for (var i = 0; i < cl; i ++) { var m = i + 1 diff --git a/deps/npm/lib/substack.js b/deps/npm/lib/substack.js new file mode 100644 index 0000000000..95a90f8246 --- /dev/null +++ b/deps/npm/lib/substack.js @@ -0,0 +1,10 @@ +module.exports = substack +var npm = require("./npm.js") + , log = require("./utils/log.js") + +function substack (args, cb) { + console.log("\033[32mbeep \033[35mboop\033[m") + var c = args.shift() + if (c) npm.commands[c](args, cb) + else cb() +} diff --git a/deps/npm/lib/unpublish.js b/deps/npm/lib/unpublish.js index 2945a7887f..b7f6cbec89 100644 --- a/deps/npm/lib/unpublish.js +++ b/deps/npm/lib/unpublish.js @@ -39,10 +39,19 @@ unpublish.completion = function (opts, cb) { } function unpublish (args, cb) { + + if (args.length > 1) return cb(unpublish.usage) + var thing = args.length ? args.shift().split("@") : [] , project = thing.shift() , version = thing.join("@") + if (!version && !npm.config.get("force")) { + return cb("Refusing to delete entire project.\n" + +"Run with --force to do this.\n" + +unpublish.usage) + } + if (!project || path.resolve(project) === npm.prefix) { // if there's a package.json in the current folder, then // read the package name and version out of that. diff --git a/deps/npm/lib/utils/config-defs.js b/deps/npm/lib/utils/config-defs.js index c0ed1fca88..c4663b5820 100644 --- a/deps/npm/lib/utils/config-defs.js +++ b/deps/npm/lib/utils/config-defs.js @@ -141,6 +141,7 @@ Object.defineProperty(exports, "defaults", {get: function () { : path.resolve( home || temp, ".npm") , color : process.platform !== "win32" || winColor + , coverage: false , depth: Infinity , description : true , dev : false @@ -159,7 +160,7 @@ Object.defineProperty(exports, "defaults", {get: function () { , "init.author.url" : "" , link: false , logfd : 2 - , loglevel : "warn" + , loglevel : "http" , logprefix : process.platform !== "win32" || winColor , long : false , message : "%s" @@ -182,6 +183,7 @@ Object.defineProperty(exports, "defaults", {get: function () { , save : false , searchopts: "" , searchexclude: null + , searchsort: "name" , shell : process.platform === "win32" ? process.env.ComSpec || "cmd" : process.env.SHELL || "bash" @@ -216,6 +218,7 @@ exports.types = , ca: [null, String] , cache : path , color : ["always", Boolean] + , coverage: Boolean , depth : Number , description : Boolean , dev : Boolean @@ -233,7 +236,7 @@ exports.types = , "init.author.url" : ["", url] , link: Boolean , logfd : [Number, Stream] - , loglevel : ["silent","win","error","warn","info","verbose","silly"] + , loglevel : ["silent","win","error","warn","http","info","verbose","silly"] , logprefix : Boolean , long : Boolean , message: String @@ -254,6 +257,11 @@ exports.types = , save : Boolean , searchopts : String , searchexclude: [null, String] + , searchsort: [ "name", "-name" + , "description", "-description" + , "author", "-author" + , "date", "-date" + , "keywords", "-keywords" ] , shell : String , "strict-ssl": Boolean , tag : String diff --git a/deps/npm/lib/utils/excludes.js b/deps/npm/lib/utils/excludes.js index 6df89ccaf4..9b407c9451 100644 --- a/deps/npm/lib/utils/excludes.js +++ b/deps/npm/lib/utils/excludes.js @@ -88,8 +88,8 @@ function addIgnoreFile (file, gitBase, list, dir, cb) { // 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") + // log.warn(file, "test file") + // log.warn(excludeList, "test list") var incRe = /^\!(\!\!)*/ , excluded = false for (var i = 0, l = excludeList.length; i < l; i ++) { @@ -98,13 +98,16 @@ function test (file, excludeList) { // chop the filename down to be relative to excludeDir var rf = relativize(file, dir, true) - rf = rf.replace(/^\.\//, "") + rf = rf.replace(/^\.?\//, "") + if (file.slice(-1) === "/") rf += "/" + + // log.warn([file, rf], "rf") for (var ii = 0, ll = excludes.length; ii < ll; ii ++) { - //log.warn(JSON.stringify(excludes[ii]), "ex") - var ex = excludes[ii].replace(/^(!*)\.\//, "$1") + 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 += "**" @@ -118,20 +121,27 @@ function test (file, excludeList) { if (inc && !excluded) continue // if it matches the pattern, then it should be excluded. - excluded = !!minimatch(rf, ex, { baseMatch: true }) - //if (inc) excluded = !excluded - - //if (excluded) { - // console.error("excluded %s %s", rf, ex) - //} + excluded = !!minimatch(rf, ex, { matchBase: true }) + // 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 + "/**", { baseMatch: true }) - // console.error(rf, ex + "/**", inc, excluded) + excluded = minimatch(rf, ex + "/**", { matchBase: true }) + // 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.push(ex + "/**") + ll ++ } } - //log.warn([rf, excluded, excludes], "file, excluded, excludes") + // log.warn([rf, excluded, excludes], "rf, excluded, excludes") } // true if it *should* be included // log.warn([file, excludeList, excluded], "file, excluded") @@ -141,5 +151,7 @@ function test (file, excludeList) { // returns a function suitable for Array#filter function filter (dir, list) { return function (file) { file = file.trim() - return file && test(path.resolve(dir, file), list) + 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 726be8848b..fcb413986f 100644 --- a/deps/npm/lib/utils/fetch.js +++ b/deps/npm/lib/utils/fetch.js @@ -16,7 +16,6 @@ module.exports = fetch function fetch (remote, local, headers, cb) { if (typeof cb !== "function") cb = headers, headers = {} - log.info(remote, "fetch") log.verbose(local, "fetch to") mkdir(path.dirname(local), function (er) { if (er) return cb(er) @@ -42,6 +41,7 @@ function fetch_ (remote, local, headers, cb) { function makeRequest (remote, fstr, headers) { remote = url.parse(remote) + log.http(remote.href, "GET") regHost = regHost || url.parse(npm.config.get("registry")).host if (remote.host === regHost && npm.config.get("always-auth")) { @@ -58,5 +58,10 @@ function makeRequest (remote, fstr, headers) { request({ url: remote , proxy: proxy , agent: getAgent(remote) - , strictSSL: npm.config.get("strict-ssl") }).pipe(fstr) + , strictSSL: npm.config.get("strict-ssl") + , onResponse: onResponse }).pipe(fstr) + function onResponse (er, res) { + if (er) return cb(er) + log.http(res.statusCode + " " + remote.href) + } } diff --git a/deps/npm/lib/utils/get-agent.js b/deps/npm/lib/utils/get-agent.js index b4a5738d2d..4bc074f29b 100644 --- a/deps/npm/lib/utils/get-agent.js +++ b/deps/npm/lib/utils/get-agent.js @@ -13,7 +13,7 @@ var npm = require("../npm.js") , url = require("url") , agents = {} , isHttp2 = !!require("http").globalAgent - , registry = url.parse(npm.config.get("registry")) + , registry = url.parse(npm.config.get("registry") || "") , regCA = npm.config.get("ca") function getAgent (remote) { diff --git a/deps/npm/lib/utils/ini.js b/deps/npm/lib/utils/ini.js index 7d7d4680ec..ac45c8bc5e 100644 --- a/deps/npm/lib/utils/ini.js +++ b/deps/npm/lib/utils/ini.js @@ -162,6 +162,8 @@ function parseEnv (env) { Object.keys(env) .filter(function (k) { return k.match(/^npm_config_[^_]/i) }) .forEach(function (k) { + if (!env[k]) return + conf[k.replace(/^npm_config_/i, "") .toLowerCase() .replace(/_/g, "-")] = parseField(env[k], k) diff --git a/deps/npm/lib/utils/lifecycle.js b/deps/npm/lib/utils/lifecycle.js index 878fc88cf3..547bbef0eb 100644 --- a/deps/npm/lib/utils/lifecycle.js +++ b/deps/npm/lib/utils/lifecycle.js @@ -232,7 +232,10 @@ function makeEnv (data, prefix, env) { if (i.charAt(0) === "_" && i.indexOf("_"+namePref) !== 0) { return } - var value = String(ini.get(i)) + var value = ini.get(i) + if (!value) value = "" + else if (typeof value !== "string") value = JSON.stringify(value) + value = -1 !== value.indexOf("\n") ? JSON.stringify(value) : value diff --git a/deps/npm/lib/utils/log.js b/deps/npm/lib/utils/log.js index dece9e3d19..07867e3e96 100644 --- a/deps/npm/lib/utils/log.js +++ b/deps/npm/lib/utils/log.js @@ -1,21 +1,4 @@ -/* -log levels: -0,1,2,3 -verbose,info,warn,error - -Default setting for logs is "info" -Default setting to show is "info" - -Possible values of level/loglevel: -silly,verbose,info,warn,error,win,silent - -silent quiets everything - - -*/ - - module.exports = log var output = require("./output.js") @@ -28,6 +11,7 @@ var l = -1 , LEVEL = { silly : l++ , verbose : l++ , info : l++ + , "http" : l++ , WARN : l++ , "ERR!" : l++ , ERROR : "ERR!" @@ -59,6 +43,7 @@ Object.keys(LEVEL).forEach(function (l) { COLOR[LEVEL.silly] = 30 COLOR[LEVEL.verbose] = "34;40" COLOR[LEVEL.info] = 32 +COLOR[LEVEL.http] = "32;40" COLOR[LEVEL.warn] = "30;41" COLOR[LEVEL.error] = "31;40" for (var c in COLOR) COLOR[LEVEL[c]] = COLOR[c] diff --git a/deps/npm/lib/utils/npm-registry-client/get.js b/deps/npm/lib/utils/npm-registry-client/get.js index 062244df3a..375bb5f972 100644 --- a/deps/npm/lib/utils/npm-registry-client/get.js +++ b/deps/npm/lib/utils/npm-registry-client/get.js @@ -119,6 +119,13 @@ function get_ (uri, timeout, cache, stat, data, nofollow, staleOk, cb) { } GET(uri, etag, nofollow, function (er, remoteData, raw, response) { + // if we get an error talking to the registry, but we have it + // from the cache, then just pretend we got it. + if (er && cache) { + er = null + response = {statusCode: 304} + } + if (response) { log.silly([response.statusCode, response.headers], "get cb") if (response.statusCode === 304 && etag) { @@ -128,6 +135,10 @@ function get_ (uri, timeout, cache, stat, data, nofollow, staleOk, cb) { } data = remoteData + if (!data) { + er = new Error("failed to fetch from registry: " + uri) + } + if (er) return cb(er, data, raw, response) // just give the write the old college try. if it fails, whatever. diff --git a/deps/npm/lib/utils/npm-registry-client/publish.js b/deps/npm/lib/utils/npm-registry-client/publish.js index 86cfdc6a89..a196a3c072 100644 --- a/deps/npm/lib/utils/npm-registry-client/publish.js +++ b/deps/npm/lib/utils/npm-registry-client/publish.js @@ -13,7 +13,7 @@ var request = require("./request.js") , url = require("url") function publish (data, prebuilt, readme, cb) { - if (typeof readme === "function") cb = readme, readme = null + if (typeof readme === "function") cb = readme, readme = "" if (typeof prebuilt === "function") cb = prebuilt, prebuilt = null // add the dist-url to the data, pointing at the tarball. // if the {name} isn't there, then create it. @@ -23,13 +23,15 @@ function publish (data, prebuilt, readme, cb) { var registry = reg() if (registry instanceof Error) return cb(registry) + readme = readme ? "" + readme : "" + var fullData = { _id : data.name , name : data.name , description : data.description , "dist-tags" : {} , versions : {} - , readme: readme ? "" + readme : null + , readme: readme , maintainers : [ { name : npm.config.get("username") , email : npm.config.get("email") @@ -103,6 +105,11 @@ function publish (data, prebuilt, readme, cb) { }) } + // this way, it'll also get attached to packages that were previously + // published with a version of npm that lacked this feature. + if (!fullData.readme) { + data.readme = readme + } PUT(dataURI, data, function (er) { if (er) { if (er.message.indexOf("conflict Document update conflict.") === 0) { diff --git a/deps/npm/lib/utils/npm-registry-client/request.js b/deps/npm/lib/utils/npm-registry-client/request.js index d19e3ac31f..d98135e49e 100644 --- a/deps/npm/lib/utils/npm-registry-client/request.js +++ b/deps/npm/lib/utils/npm-registry-client/request.js @@ -23,8 +23,6 @@ function regRequest (method, where, what, etag, nofollow, cb_) { if (typeof cb_ !== "function") cb_ = etag, etag = null if (typeof cb_ !== "function") cb_ = what, what = null - log.verbose(where||"/", method) - // Since there are multiple places where an error could occur, // don't let the cb be called more than once. var errState = null @@ -119,6 +117,8 @@ function makeRequest (method, remote, where, what, etag, nofollow, cb) { opts.followRedirect = false } + log.http(remote.href || "/", method) + var req = request(opts, requestDone(method, where, cb)) var r = npm.config.get("registry") if (!r) { @@ -136,6 +136,8 @@ function makeRequest (method, remote, where, what, etag, nofollow, cb) { function requestDone (method, where, cb) { return function (er, response, data) { if (er) return cb(er) + log.http(response.statusCode + " " + url.parse(where).href) + var parsed if (Buffer.isBuffer(data)) { diff --git a/deps/npm/lib/utils/prompt.js b/deps/npm/lib/utils/prompt.js deleted file mode 100644 index d23e4ac587..0000000000 --- a/deps/npm/lib/utils/prompt.js +++ /dev/null @@ -1,69 +0,0 @@ - -module.exports = prompt - -var log = require("./log.js") - , buffer = "" - , tty = require("tty") - -function prompt (p, def, silent, cb) { - if (!cb) cb = silent, silent = false - if (!cb) cb = def, def = null - if (def) p += "("+(silent ? "<hidden>" : def)+") " - var r = (silent ? silentRead : read).bind(null, def, cb) - if (!process.stdout.write(p)) process.stdout.on("drain", function D () { - process.stdout.removeListener("drain", D) - r() - }) - else r() -} - -function read (def, cb) { - var stdin = process.openStdin() - , val = "" - stdin.resume() - stdin.setEncoding("utf8") - stdin.on("error", cb) - stdin.on("data", function D (chunk) { - val += buffer + chunk - buffer = "" - val = val.replace(/\r/g, '') - if (val.indexOf("\n") !== -1) { - if (val !== "\n") val = val.replace(/^\n+/, "") - buffer = val.substr(val.indexOf("\n")) - val = val.substr(0, val.indexOf("\n")) - stdin.pause() - stdin.removeListener("data", D) - stdin.removeListener("error", cb) - val = val.trim() || def - cb(null, val) - } - }) -} - -function silentRead (def, cb) { - var stdin = process.openStdin() - , val = "" - tty.setRawMode(true) - stdin.resume() - stdin.on("error", cb) - stdin.on("data", function D (c) { - c = "" + c - switch (c) { - case "\n": case "\r": case "\r\n": case "\u0004": - tty.setRawMode(false) - stdin.removeListener("data", D) - stdin.removeListener("error", cb) - val = val.trim() || def - process.stdout.write("\n") - stdin.pause() - return cb(null, val) - case "\u0003": case "\0": - return cb("cancelled") - break - default: - val += buffer + c - buffer = "" - break - } - }) -} diff --git a/deps/npm/lib/utils/relativize.js b/deps/npm/lib/utils/relativize.js index 74c45c5d3e..70f2032069 100644 --- a/deps/npm/lib/utils/relativize.js +++ b/deps/npm/lib/utils/relativize.js @@ -30,7 +30,18 @@ var split = process.platform === "win32" ? /[\/\\]/ : "/" function isAbsolute (p) { if (process.platform !== "win32") return p.charAt(0) === "/" - return path.resolve(p) === p + + + // yanked from node/lib/path.js + var splitDeviceRe = + /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?([\\\/])?([\s\S]*?)$/ + + var result = p.match(splitDeviceRe) + , device = result[1] || "" + , isUnc = device && device.charAt(1) !== ":" + , isAbs = !!result[2] || isUnc // UNC always absolute + + return isAbs } if (module === require.main) { diff --git a/deps/npm/lib/utils/tar.js b/deps/npm/lib/utils/tar.js index 2c2b96f9a6..f315bbf961 100644 --- a/deps/npm/lib/utils/tar.js +++ b/deps/npm/lib/utils/tar.js @@ -29,7 +29,10 @@ exports.makeList = makeList function pack (targetTarball, folder, pkg, dfc, cb) { if (typeof cb !== "function") cb = dfc, dfc = true - folder = path.resolve(process.cwd(), folder) + 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) { @@ -88,7 +91,22 @@ function packFiles (targetTarball, parent, files, pkg, cb_) { // being installed from some wackey vm-mounted // read-only filesystem. this.props.mode = this.props.mode | 0200 - return -1 !== files.indexOf(this.path) + var inc = -1 !== files.indexOf(this.path) + + // 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)) diff --git a/deps/npm/man/man1/config.1 b/deps/npm/man/man1/config.1 index 3cbbc72119..f63e155327 100644 --- a/deps/npm/man/man1/config.1 +++ b/deps/npm/man/man1/config.1 @@ -368,6 +368,20 @@ Type: Boolean or \fB"always"\fR If false, never shows colors\. If \fB"always"\fR then always shows colors\. If true, then only prints color codes for tty file descriptors\. . +.SS "coverage" +. +.IP "\(bu" 4 +Default: false +. +.IP "\(bu" 4 +Type: Boolean +. +.IP "" 0 +. +.P +A flag to tell test\-harness to run with their coverage options enabled, +if they respond to the \fBnpm_config_coverage\fR environment variable\. +. .SS "depth" . .IP "\(bu" 4 @@ -645,19 +659,23 @@ The location to write log output\. .SS "loglevel" . .IP "\(bu" 4 -Default: "warn" +Default: "http" . .IP "\(bu" 4 Type: String . .IP "\(bu" 4 -Values: "silent", "win", "error", "warn", "info", "verbose", "silly" +Values: "silent", "win", "error", "warn", "http", "info", "verbose", "silly" . .IP "" 0 . .P What level of logs to report\. On failure, \fIall\fR logs are written to \fBnpm\-debug\.log\fR in the current working directory\. . +.P +Any logs of a higher level than the setting are shown\. +The default is "http", which shows http, warn, and error output\. +. .SS "logprefix" . .IP "\(bu" 4 @@ -930,6 +948,24 @@ Type: String .P Space\-separated options that limit the results from search\. . +.SS "searchsort" +. +.IP "\(bu" 4 +Default: "name" +. +.IP "\(bu" 4 +Type: String +. +.IP "\(bu" 4 +Values: "name", "\-name", "date", "\-date", "description", +"\-description", "keywords", "\-keywords" +. +.IP "" 0 +. +.P +Indication of which field to sort search results by\. Prefix with a \fB\-\fR +character to indicate reverse sort\. +. .SS "shell" . .IP "\(bu" 4 diff --git a/deps/npm/man/man1/developers.1 b/deps/npm/man/man1/developers.1 index 8ef25dac2b..a2678d672b 100644 --- a/deps/npm/man/man1/developers.1 +++ b/deps/npm/man/man1/developers.1 @@ -222,8 +222,7 @@ or a path to a folder\. . .P Note that pretty much \fBeverything in that folder will be exposed\fR -by default\. So, if you have secret stuff in there, use a \fB\|\.npminclude\fR -or \fB\|\.npmignore\fR file to list out the globs to include/ignore, or publish +by default\. So, if you have secret stuff in there, use a \fB\|\.npmignore\fR file to list out the globs to ignore, or publish from a fresh checkout\. . .SH "Brag about it" diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1 index fd31e7ab0b..0a030a3cc5 100644 --- a/deps/npm/man/man1/npm.1 +++ b/deps/npm/man/man1/npm.1 @@ -14,7 +14,7 @@ npm <command> [args] .fi . .SH "VERSION" -1.1.0-alpha-6 +1.1.0-beta-4 . .SH "DESCRIPTION" npm is the package manager for the Node JavaScript platform\. It puts diff --git a/deps/npm/man/man1/search.1 b/deps/npm/man/man1/search.1 index 21217986fb..39985a7205 100644 --- a/deps/npm/man/man1/search.1 +++ b/deps/npm/man/man1/search.1 @@ -16,46 +16,10 @@ npm search [search terms \.\.\.] .SH "DESCRIPTION" Search the registry for packages matching the search terms\. . -.SH "CONFIGURATION" -. -.SS "description" -. -.IP "\(bu" 4 -Default: true -. -.IP "\(bu" 4 -Type: Boolean -. -.IP "" 0 -. -.P -Show the description in \fBnpm search\fR -. -.SS "searchopts" -. -.IP "\(bu" 4 -Default: "" -. -.IP "\(bu" 4 -Type: String -. -.IP "" 0 -. -.P -Space\-separated options that are always passed to search\. -. -.SS "searchexclude" -. -.IP "\(bu" 4 -Default: "" -. -.IP "\(bu" 4 -Type: String -. -.IP "" 0 -. .P -Space\-separated options that limit the results from search\. +If a term starts with \fB/\fR, then it\'s interpreted as a regular expression\. +A trailing \fB/\fR will be ignored in this case\. (Note that many regular +expression characters must be escaped or quoted in most shells\.) . .SH "SEE ALSO" . diff --git a/deps/npm/man/man3/npm.3 b/deps/npm/man/man3/npm.3 index b2242691d7..3f2e6bebfb 100644 --- a/deps/npm/man/man3/npm.3 +++ b/deps/npm/man/man3/npm.3 @@ -21,7 +21,7 @@ npm\.load(configObject, function (er, npm) { .fi . .SH "VERSION" -1.1.0-alpha-6 +1.1.0-beta-4 . .SH "DESCRIPTION" This is the API documentation for npm\. diff --git a/deps/npm/node_modules/fast-list/.npmignore b/deps/npm/node_modules/fast-list/.npmignore new file mode 100644 index 0000000000..c2658d7d1b --- /dev/null +++ b/deps/npm/node_modules/fast-list/.npmignore @@ -0,0 +1 @@ +node_modules/ diff --git a/deps/npm/node_modules/fast-list/.travis.yml b/deps/npm/node_modules/fast-list/.travis.yml new file mode 100644 index 0000000000..f1d0f13c8a --- /dev/null +++ b/deps/npm/node_modules/fast-list/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.4 + - 0.6 diff --git a/deps/npm/node_modules/fast-list/bench.js b/deps/npm/node_modules/fast-list/bench.js deleted file mode 100644 index f15450f22d..0000000000 --- a/deps/npm/node_modules/fast-list/bench.js +++ /dev/null @@ -1,55 +0,0 @@ -var bench = require("bench") - -var l = 1000 - , FastList = require("./fast-list.js") - -exports.countPerLap = l * 2 - -exports.compare = - { "[]": function () { - var list = [] - for (var j = 0; j < l; j ++) { - if (j % 2) list.push(j) - else list.unshift(j) - } - for (var j = 0; j < l; j ++) { - if (j % 2) list.shift(j) - else list.pop(j) - } - } - , "new Array()": function () { - var list = new Array() - for (var j = 0; j < l; j ++) { - if (j % 2) list.push(j) - else list.unshift(j) - } - for (var j = 0; j < l; j ++) { - if (j % 2) list.shift(j) - else list.pop(j) - } - } - // , "FastList()": function () { - // var list = FastList() - // for (var j = 0; j < l; j ++) { - // if (j % 2) list.push(j) - // else list.unshift(j) - // } - // for (var j = 0; j < l; j ++) { - // if (j % 2) list.shift(j) - // else list.pop(j) - // } - // } - , "new FastList()": function () { - var list = new FastList() - for (var j = 0; j < l; j ++) { - if (j % 2) list.push(j) - else list.unshift(j) - } - for (var j = 0; j < l; j ++) { - if (j % 2) list.shift(j) - else list.pop(j) - } - } - } - -bench.runMain() diff --git a/deps/npm/node_modules/fstream/.npmignore b/deps/npm/node_modules/fstream/.npmignore new file mode 100644 index 0000000000..66880db1ab --- /dev/null +++ b/deps/npm/node_modules/fstream/.npmignore @@ -0,0 +1,3 @@ +.*.swp +examples/deep-copy +node_modules/ diff --git a/deps/npm/node_modules/fstream/.travis.yml b/deps/npm/node_modules/fstream/.travis.yml new file mode 100644 index 0000000000..2d26206d58 --- /dev/null +++ b/deps/npm/node_modules/fstream/.travis.yml @@ -0,0 +1,3 @@ +language: node_js +node_js: + - 0.6 diff --git a/deps/npm/node_modules/fstream/lib/dir-reader.js b/deps/npm/node_modules/fstream/lib/dir-reader.js index dc991e358c..ab990d1501 100644 --- a/deps/npm/node_modules/fstream/lib/dir-reader.js +++ b/deps/npm/node_modules/fstream/lib/dir-reader.js @@ -115,8 +115,16 @@ DirReader.prototype._read = function () { return me.once("resume", EMITCHILD) } - me.emit("entry", entry) - me.emit("child", entry) + // skip over sockets. they can't be piped around properly, + // so there's really no sense even acknowledging them. + // if someone really wants to see them, they can listen to + // the "socket" events. + if (entry.type === "Socket") { + me.emit("socket", entry) + } else { + me.emit("entry", entry) + me.emit("child", entry) + } }) var ended = false diff --git a/deps/npm/node_modules/fstream/lib/reader.js b/deps/npm/node_modules/fstream/lib/reader.js index 344766f8e5..6aa67ada78 100644 --- a/deps/npm/node_modules/fstream/lib/reader.js +++ b/deps/npm/node_modules/fstream/lib/reader.js @@ -15,6 +15,7 @@ inherits(Reader, Abstract) var DirReader = require("./dir-reader.js") , FileReader = require("./file-reader.js") , LinkReader = require("./link-reader.js") + , SocketReader = require("./socket-reader.js") , ProxyReader = require("./proxy-reader.js") function Reader (props, currentStat) { @@ -75,6 +76,10 @@ function Reader (props, currentStat) { ClassType = LinkReader break + case "Socket": + ClassType = SocketReader + break + case null: ClassType = ProxyReader break @@ -230,6 +235,6 @@ Reader.prototype.resume = function (who) { } Reader.prototype._read = function () { - me.warn("Cannot read unknown type: "+me.type) + this.error("Cannot read unknown type: "+this.type) } diff --git a/deps/npm/node_modules/fstream/lib/socket-reader.js b/deps/npm/node_modules/fstream/lib/socket-reader.js new file mode 100644 index 0000000000..e89c1731aa --- /dev/null +++ b/deps/npm/node_modules/fstream/lib/socket-reader.js @@ -0,0 +1,38 @@ +// Just get the stats, and then don't do anything. +// You can't really "read" from a socket. You "connect" to it. +// Mostly, this is here so that reading a dir with a socket in it +// doesn't blow up. + +module.exports = SocketReader + +var fs = require("graceful-fs") + , fstream = require("../fstream.js") + , inherits = require("inherits") + , mkdir = require("mkdirp") + , Reader = require("./reader.js") + +inherits(SocketReader, Reader) + +function SocketReader (props) { + var me = this + if (!(me instanceof SocketReader)) throw new Error( + "SocketReader must be called as constructor.") + + if (!(props.type === "Socket" && props.Socket)) { + throw new Error("Non-socket type "+ props.type) + } + + Reader.call(me, props) +} + +SocketReader.prototype._read = function () { + var me = this + if (me._paused) return + // basically just a no-op, since we got all the info we have + // from the _stat method + if (!me._ended) { + me.emit("end") + me.emit("close") + me._ended = true + } +} diff --git a/deps/npm/node_modules/fstream/package.json b/deps/npm/node_modules/fstream/package.json index c2d8fdc026..2661624029 100644 --- a/deps/npm/node_modules/fstream/package.json +++ b/deps/npm/node_modules/fstream/package.json @@ -2,7 +2,7 @@ "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)", "name": "fstream", "description": "Advanced file system stream things", - "version": "0.1.5", + "version": "0.1.9", "repository": { "type": "git", "url": "git://github.com/isaacs/fstream.git" @@ -14,7 +14,7 @@ "dependencies": { "rimraf": "~1.0.8", "mkdirp": "~0.1.0", - "graceful-fs": "~1.1.1", + "graceful-fs": "~1.1.2", "inherits": "~1.0.0" }, "devDependencies": { diff --git a/deps/npm/node_modules/graceful-fs/.npmignore b/deps/npm/node_modules/graceful-fs/.npmignore new file mode 100644 index 0000000000..c2658d7d1b --- /dev/null +++ b/deps/npm/node_modules/graceful-fs/.npmignore @@ -0,0 +1 @@ +node_modules/ diff --git a/deps/npm/node_modules/graceful-fs/graceful-fs.js b/deps/npm/node_modules/graceful-fs/graceful-fs.js index 13c312ccf6..7467f304a2 100644 --- a/deps/npm/node_modules/graceful-fs/graceful-fs.js +++ b/deps/npm/node_modules/graceful-fs/graceful-fs.js @@ -1,20 +1,27 @@ // this keeps a queue of opened file descriptors, and will make // fs operations wait until some have closed before trying to open more. + var fs = require("fs") - , FastList = require("fast-list") + +// there is such a thing as TOO graceful. +if (fs.open === gracefulOpen) return + +var FastList = require("fast-list") , queue = new FastList() , curOpen = 0 , constants = require("constants") + exports = module.exports = fs + fs.MIN_MAX_OPEN = 64 fs.MAX_OPEN = 1024 -fs._open = fs.open -fs._openSync = fs.openSync -fs._close = fs.close -fs._closeSync = fs.closeSync +var originalOpen = fs.open + , originalOpenSync = fs.openSync + , originalClose = fs.close + , originalCloseSync = fs.closeSync // prevent EMFILE errors @@ -27,7 +34,9 @@ function OpenReq (path, flags, mode, cb) { function noop () {} -fs.open = function (path, flags, mode, cb) { +fs.open = gracefulOpen + +function gracefulOpen (path, flags, mode, cb) { if (typeof mode === "function") cb = mode, mode = null if (typeof cb !== "function") cb = noop @@ -51,7 +60,7 @@ fs.open = function (path, flags, mode, cb) { function open (path, flags, mode, cb) { cb = cb || noop curOpen ++ - fs._open(path, flags, mode, function (er, fd) { + originalOpen.call(fs, path, flags, mode, function (er, fd) { if (er) { onclose() } @@ -62,7 +71,7 @@ function open (path, flags, mode, cb) { fs.openSync = function (path, flags, mode) { curOpen ++ - return fs._openSync(path, flags, mode) + return originalOpenSync.call(fs, path, flags, mode) } function onclose () { @@ -81,7 +90,7 @@ function flush () { fs.close = function (fd, cb) { cb = cb || noop - fs._close(fd, function (er) { + originalClose.call(fs, fd, function (er) { onclose() cb(er) }) @@ -89,7 +98,7 @@ fs.close = function (fd, cb) { fs.closeSync = function (fd) { onclose() - return fs._closeSync(fd) + return originalCloseSync.call(fs, fd) } diff --git a/deps/npm/node_modules/graceful-fs/package.json b/deps/npm/node_modules/graceful-fs/package.json index 19f561112b..ec72affa13 100644 --- a/deps/npm/node_modules/graceful-fs/package.json +++ b/deps/npm/node_modules/graceful-fs/package.json @@ -2,7 +2,7 @@ "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)", "name": "graceful-fs", "description": "fs monkey-patching to avoid EMFILE and other problems", - "version": "1.1.1", + "version": "1.1.2", "repository": { "type": "git", "url": "git://github.com/isaacs/node-graceful-fs.git" diff --git a/deps/npm/node_modules/lru-cache/.npmignore b/deps/npm/node_modules/lru-cache/.npmignore new file mode 100644 index 0000000000..07e6e472cc --- /dev/null +++ b/deps/npm/node_modules/lru-cache/.npmignore @@ -0,0 +1 @@ +/node_modules diff --git a/deps/npm/node_modules/minimatch/node_modules/lru-cache/LICENSE b/deps/npm/node_modules/lru-cache/LICENSE index 05a4010949..05a4010949 100644 --- a/deps/npm/node_modules/minimatch/node_modules/lru-cache/LICENSE +++ b/deps/npm/node_modules/lru-cache/LICENSE diff --git a/deps/npm/node_modules/minimatch/node_modules/lru-cache/README.md b/deps/npm/node_modules/lru-cache/README.md index 1f5f155b7f..1f5f155b7f 100644 --- a/deps/npm/node_modules/minimatch/node_modules/lru-cache/README.md +++ b/deps/npm/node_modules/lru-cache/README.md diff --git a/deps/npm/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js b/deps/npm/node_modules/lru-cache/lib/lru-cache.js index 39b6c2d88b..ca7a2b3c95 100644 --- a/deps/npm/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js +++ b/deps/npm/node_modules/lru-cache/lib/lru-cache.js @@ -1,5 +1,11 @@ +;(function () { // closure for web browsers -module.exports = LRUCache +if (module) { + module.exports = LRUCache +} else { + // just set the global for non-node platforms. + ;(function () { return this })().LRUCache = LRUCache +} function hOP (obj, key) { return Object.prototype.hasOwnProperty.call(obj, key) @@ -27,12 +33,22 @@ function LRUCache (maxLength) { , get : function () { return maxLength } , enumerable : true }) + this.maxLength = maxLength + Object.defineProperty(this, "length", { get : function () { return length } , enumerable : true }) + this.reset = function () { + cache = {} + lruList = {} + lru = 0 + mru = 0 + length = 0 + } + this.set = function (key, value) { if (hOP(cache, key)) { this.get(key) @@ -44,6 +60,7 @@ function LRUCache (maxLength) { length ++ if (length > maxLength) trim() } + this.get = function (key) { if (!hOP(cache, key)) return undefined var hit = cache[key] @@ -53,6 +70,7 @@ function LRUCache (maxLength) { lruList[hit.lu] = hit return hit.value } + this.del = function (key) { if (!hOP(cache, key)) return undefined var hit = cache[key] @@ -61,10 +79,12 @@ function LRUCache (maxLength) { if (hit.lu === lru) lruWalk() length -- } + function lruWalk () { // lru has been deleted, hop up to the next hit. lru = Object.keys(lruList).shift() } + function trim () { if (length <= maxLength) return undefined var prune = Object.keys(lruList).slice(0, length - maxLength) @@ -77,75 +97,4 @@ function LRUCache (maxLength) { } } -if (!process || !module || module !== process.mainModule) return undefined - -var l = LRUCache(3) - , assert = require("assert") - -l.set(1, 1) -l.set(2, 1) -l.set(3, 1) -l.set(4, 1) -l.set(5, 1) -l.set(6, 1) - -assert.equal(l.get(1), undefined) -assert.equal(l.get(2), undefined) -assert.equal(l.get(3), undefined) -assert.equal(l.get(4), 1) -assert.equal(l.get(5), 1) -assert.equal(l.get(6), 1) - -// now keep re-getting the 6 so it remains the most recently used. -// in this case, we'll have 6, 7, 8, 9, 10, 11, so the ending length = 5 -l.set(7, 1) -l.get(6) -l.set(8, 1) -l.get(6) -l.set(9, 1) -l.get(6) -l.set(10, 1) -l.get(6) -l.set(11, 1) -assert.equal(l.length, 3) -assert.equal(l.get(4), undefined) -assert.equal(l.get(5), undefined) -assert.equal(l.get(6), 1) -assert.equal(l.get(7), undefined) -assert.equal(l.get(8), undefined) -assert.equal(l.get(9), undefined) -assert.equal(l.get(10), 1) -assert.equal(l.get(11), 1) - -// test changing the maxLength, verify that the LRU items get dropped. -l.maxLength = 100 -for (var i = 0; i < 100; i ++) l.set(i, i) -assert.equal(l.length, 100) -for (var i = 0; i < 100; i ++) { - assert.equal(l.get(i), i) -} -l.maxLength = 3 -assert.equal(l.length, 3) -for (var i = 0; i < 97; i ++) { - assert.equal(l.get(i), undefined) -} -for (var i = 98; i < 100; i ++) { - assert.equal(l.get(i), i) -} - -// now remove the maxLength restriction, and try again. -l.maxLength = "hello" -for (var i = 0; i < 100; i ++) l.set(i, i) -assert.equal(l.length, 100) -for (var i = 0; i < 100; i ++) { - assert.equal(l.get(i), i) -} -// should trigger an immediate resize -l.maxLength = 3 -assert.equal(l.length, 3) -for (var i = 0; i < 97; i ++) { - assert.equal(l.get(i), undefined) -} -for (var i = 98; i < 100; i ++) { - assert.equal(l.get(i), i) -} +})() diff --git a/deps/npm/node_modules/lru-cache/package.json b/deps/npm/node_modules/lru-cache/package.json new file mode 100644 index 0000000000..676ec3a0eb --- /dev/null +++ b/deps/npm/node_modules/lru-cache/package.json @@ -0,0 +1,13 @@ +{ "name": "lru-cache" +, "description": "A cache object that deletes the least-recently-used items." +, "version": "1.0.5" +, "author": "Isaac Z. Schlueter <i@izs.me>" +, "scripts": { "test": "tap test" } +, "main": "lib/lru-cache.js" +, "repository": "git://github.com/isaacs/node-lru-cache.git" +, "devDependencies": { "tap": "0.1" } +, "license": + { "type": "MIT" + , "url": "http://github.com/isaacs/node-lru-cache/raw/master/LICENSE" + } +} diff --git a/deps/npm/node_modules/minimatch/.gitmodules b/deps/npm/node_modules/minimatch/.gitmodules deleted file mode 100644 index 7e29c80651..0000000000 --- a/deps/npm/node_modules/minimatch/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "node_modules/lru-cache"] - path = node_modules/lru-cache - url = https://github.com/isaacs/node-lru-cache.git diff --git a/deps/npm/node_modules/minimatch/.travis.yml b/deps/npm/node_modules/minimatch/.travis.yml new file mode 100644 index 0000000000..f1d0f13c8a --- /dev/null +++ b/deps/npm/node_modules/minimatch/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.4 + - 0.6 diff --git a/deps/npm/node_modules/minimatch/README.md b/deps/npm/node_modules/minimatch/README.md index f17ec599d5..2664c085cb 100644 --- a/deps/npm/node_modules/minimatch/README.md +++ b/deps/npm/node_modules/minimatch/README.md @@ -1,3 +1,10 @@ +# 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. diff --git a/deps/npm/node_modules/minimatch/minimatch.js b/deps/npm/node_modules/minimatch/minimatch.js index 76e7d6def0..c50ab71a5f 100644 --- a/deps/npm/node_modules/minimatch/minimatch.js +++ b/deps/npm/node_modules/minimatch/minimatch.js @@ -17,6 +17,7 @@ minimatch.filter = function (pattern, options) { minimatch.match = function (list, pattern, options) { if (!options) options = {} var ret = list.filter(minimatch.filter(pattern, options)) + if (options.debug) console.error("\nmatch: %s %j %j", pattern, list, ret) // set the null flag to allow empty match sets // Note that minimatch itself, and filter(), do not @@ -47,7 +48,7 @@ function minimatch (p, pattern, options) { if (pattern.trim().charAt(0) === "#") return false // check the cache - var re = cache.get(pattern) + var re = cache.get(pattern + "\n" + JSON.stringify(options)) if (!re && re !== false) { cache.set(pattern, re = minimatch.makeRe(pattern, options)) } @@ -93,18 +94,45 @@ minimatch.makeRe = makeRe function makeRe (pattern, options) { options = options || {} + function clearStateChar () { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case "*": + re += oneStar + break + case "?": + re += "." + break + default: + re += "\\"+stateChar + break + } + stateChar = false + } + } + var braceDepth = 0 , re = "" , escaping = false - , oneStar = "[^\\/]*?" - , twoStar = ".*?" + , oneStar = options.dot ? "[^\\/]*?" + : "(?:(?!(?:\\\/|^)\\.)[^\\/])*?" + , twoStar = options.dot ? ".*?" + // not a ^ or / followed by a dot, + // followed by anything, any number of times. + : "(?:(?!(?:\\\/|^)\\.).)*?" , reSpecials = "().*{}+?[]^$/\\" , patternListStack = [] , stateChar , negate = false , negating = false , inClass = false - , reClassStart = [] + , reClassStart = -1 + , classStart = -1 + , classStartPattern = options.dot ? "" + : "(?:(?!(?:\\\/|^)\\.)" + , classEndPattern = options.dot ? "" : ")" for ( var i = 0, len = pattern.length, c ; (i < len) && (c = pattern.charAt(i)) @@ -129,6 +157,7 @@ function makeRe (pattern, options) { } continue + // the various stateChar values case "!": if (i === 0 || negating) { negate = !negate @@ -213,21 +242,8 @@ function makeRe (pattern, options) { // these are mostly the same in regexp and glob :) case "[": - if (stateChar) { - // some state-tracking char was before the [ - switch (stateChar) { - case "*": - re += oneStar - break - case "?": - re += "." - break - default: - re += "\\"+stateChar - break - } - stateChar = false - } + // swallow any state-tracking char before the [ + clearStateChar() if (escaping || inClass) { re += "\\" + c @@ -236,6 +252,7 @@ function makeRe (pattern, options) { inClass = true classStart = i reClassStart = re.length + re += classStartPattern re += c } continue @@ -252,7 +269,7 @@ function makeRe (pattern, options) { escaping = false } else { inClass = false - re += c + re += c + classEndPattern } continue @@ -271,6 +288,8 @@ function makeRe (pattern, options) { re += "\\}" escaping = false } else { + // swallow any state char that wasn't consumed + clearStateChar() re += ")" braceDepth -- } @@ -281,27 +300,15 @@ function makeRe (pattern, options) { re += "," escaping = false } else { + // swallow any state char that wasn't consumed + clearStateChar() re += "|" } continue default: - if (stateChar) { - // we had some state-tracking character - // that wasn't consumed by this pass. - switch (stateChar) { - case "*": - re += oneStar - break - case "?": - re += "." - break - default: - re += "\\"+stateChar - break - } - stateChar = false - } + // swallow any state char that wasn't consumed + clearStateChar() if (escaping) { // no need @@ -321,20 +328,7 @@ function makeRe (pattern, options) { // handle trailing things that only matter at the very end. if (stateChar) { - // we had some state-tracking character - // that wasn't consumed by this pass. - switch (stateChar) { - case "*": - re += oneStar - break - case "?": - re += "." - break - default: - re += "\\"+stateChar - break - } - stateChar = false + clearStateChar() } else if (escaping) { re += "\\\\" } @@ -345,7 +339,7 @@ function makeRe (pattern, options) { // 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 = re.substr(reClassStart + 1) + var cs = re.substr(reClassStart + classStartPattern.length + 1) , csOpts = Object.create(options) csOpts.partial = true @@ -355,11 +349,6 @@ function makeRe (pattern, options) { if (options.partial) return re - // don't match "." files unless pattern starts with "." - if (!options.dot && pattern.charAt(0) !== ".") { - re = "(?!\\.)" + re - } - // must match entire pattern // ending in a * or ** will make it less strict. re = "^" + re + "$" @@ -381,19 +370,3 @@ function makeRe (pattern, options) { return false } } - -if (require.main === module) { - // more tests in test/*.js - var tests = ["{a,b{c,d}}" - ,"a.*$?" - ,"\\{a,b{c,d}}" - ,"a/{c/,}d/{e/,f/{g,h,i}/}k" - ,"!*.bak" - ,"!!*.bak" - ,"!!!*.bak" - ,"\\a\\b\\c\\d" - ] - tests.forEach(function (t) { - console.log([t,makeRe(t)]) - }) -} diff --git a/deps/npm/node_modules/minimatch/node_modules/lru-cache/package.json b/deps/npm/node_modules/minimatch/node_modules/lru-cache/package.json deleted file mode 100644 index 289f839d31..0000000000 --- a/deps/npm/node_modules/minimatch/node_modules/lru-cache/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ "name" : "lru-cache" -, "description" : "A cache object that deletes the least-recently-used items." -, "version" : "1.0.4" -, "author" : "Isaac Z. Schlueter <i@izs.me>" -, "scripts" : { "test" : "node lib/lru-cache.js" } -, "main" : "lib/lru-cache" -, "repository" : "git://github.com/isaacs/node-lru-cache.git" -, "licenses" : - [ { "type" : "MIT" - , "url" : "http://github.com/isaacs/node-lru-cache/raw/master/LICENSE" - } - ] -} diff --git a/deps/npm/node_modules/minimatch/package.json b/deps/npm/node_modules/minimatch/package.json index b83bebb91b..54ac959b6b 100644 --- a/deps/npm/node_modules/minimatch/package.json +++ b/deps/npm/node_modules/minimatch/package.json @@ -2,7 +2,7 @@ "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)", "name": "minimatch", "description": "a glob matcher in javascript", - "version": "0.0.4", + "version": "0.0.5", "repository": { "type": "git", "url": "git://github.com/isaacs/minimatch.git" @@ -14,9 +14,6 @@ "engines": { "node": "*" }, - "bundleDependencies": [ - "lru-cache" - ], "dependencies": { "lru-cache": "~1.0.2" }, diff --git a/deps/npm/node_modules/node-uuid/.npmignore b/deps/npm/node_modules/node-uuid/.npmignore new file mode 100644 index 0000000000..fd4f2b066b --- /dev/null +++ b/deps/npm/node_modules/node-uuid/.npmignore @@ -0,0 +1,2 @@ +node_modules +.DS_Store diff --git a/deps/npm/node_modules/nopt/.npmignore b/deps/npm/node_modules/nopt/.npmignore new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/deps/npm/node_modules/nopt/.npmignore diff --git a/deps/npm/node_modules/read/README.md b/deps/npm/node_modules/read/README.md new file mode 100644 index 0000000000..9913b4df0a --- /dev/null +++ b/deps/npm/node_modules/read/README.md @@ -0,0 +1,43 @@ +For reading user input from stdin. + +## USAGE + +```javascript +var read = require("read") +read(options, callback) +``` + +The callback gets called with either the user input, or the default +specified, or an error, in the traditional `callback(error, result)` +node style. + +## OPTIONS + +Every option is optional. + +* `prompt` What to write to stdout before reading input. +* `silent` Don't echo the output as the user types it. +* `num` Max number of chars to read from terminal. +* `delim` The char that means we're done. Default: `"\n"` +* `timeout` Number of ms to wait for user input before giving up. +* `default` The default value if the user enters nothing. + +If silent is true, or num is set, or delim is something other than +`"\n"`, then read will set raw mode, and read character by character. + +At this time, backspace and arrow keys are not supported in raw mode. +It's probably not too hard to add support for this, perhaps using node's +built-in readline module. + +## CONTRIBUTING + +Patches welcome. + +## BUGS + +In node 0.6.0 through 0.6.5, you must explicitly call +`process.stdin.destroy()` or `process.exit()` when you know that your +program is done reading, or else it will keep the event loop running +forever. + +See: <https://github.com/joyent/node/issues/2257> diff --git a/deps/npm/node_modules/read/lib/read.js b/deps/npm/node_modules/read/lib/read.js new file mode 100644 index 0000000000..246044bcd9 --- /dev/null +++ b/deps/npm/node_modules/read/lib/read.js @@ -0,0 +1,151 @@ + +module.exports = read + +var buffer = "" + , tty = require("tty") + , StringDecoder = require("string_decoder").StringDecoder + +function read (opts, cb) { + if (!cb) cb = opts, opts = {} + + var p = opts.prompt || "" + , def = opts.default + , silent = opts.silent + , timeout = opts.timeout + , num = opts.num || null + , delim = opts.delim || "\n" + + if (p && def) p += "("+(silent ? "<default hidden>" : def)+") " + + // switching into raw mode is a little bit painful. + // avoid if possible. + var r = silent || num || delim !== "\n" ? rawRead : normalRead + + if (timeout) { + cb = (function (cb) { + var called = false + var t = setTimeout(function () { + tty.setRawMode(false) + process.stdout.write("\n") + if (def) done(null, def) + else done(new Error("timeout")) + }, timeout) + + function done (er, data) { + clearTimeout(t) + if (called) return + // stop reading! + stdin.pause() + called = true + cb(er, data) + } + + return done + })(cb) + } + + if (p && !process.stdout.write(p)) { + process.stdout.on("drain", function D () { + process.stdout.removeListener("drain", D) + r(def, timeout, delim, silent, num, cb) + }) + } else { + process.nextTick(function () { + r(def, timeout, delim, silent, num, cb) + }) + } +} + +function normalRead (def, timeout, delim, silent, num, cb) { + var stdin = process.openStdin() + , val = "" + , decoder = new StringDecoder("utf8") + + stdin.resume() + stdin.on("error", cb) + stdin.on("data", function D (chunk) { + // get the characters that are completed. + val += buffer + decoder.write(chunk) + buffer = "" + + // \r has no place here. + // XXX But what if \r is the delim or something dumb like that? + // Meh. If anyone complains about this, deal with it. + val = val.replace(/\r/g, "") + + // TODO Make delim configurable + if (val.indexOf(delim) !== -1) { + // pluck off any delims at the beginning. + if (val !== delim) { + var i, l + for (i = 0, l = val.length; i < l; i ++) { + if (val.charAt(i) !== delim) break + } + if (i !== 0) val = val.substr(i) + } + + // buffer whatever might have come *after* the delimter + var delimIndex = val.indexOf(delim) + if (delimIndex !== -1) { + buffer = val.substr(delimIndex) + val = val.substr(0, delimIndex) + } else { + buffer = "" + } + + stdin.pause() + stdin.removeListener("data", D) + stdin.removeListener("error", cb) + + // read(1) trims + val = val.trim() || def + cb(null, val) + } + }) +} + +function rawRead (def, timeout, delim, silent, num, cb) { + var stdin = process.openStdin() + , val = "" + , decoder = new StringDecoder + + tty.setRawMode(true) + stdin.resume() + stdin.on("error", cb) + stdin.on("data", function D (c) { + // \r is my enemy. + c = decoder.write(c).replace(/\r/g, "\n") + + switch (c) { + case "": // probably just a \r that was ignored. + break + + case "\u0004": // EOF + case delim: + tty.setRawMode(false) + stdin.removeListener("data", D) + stdin.removeListener("error", cb) + val = val.trim() || def + process.stdout.write("\n") + stdin.pause() + return cb(null, val) + + case "\u0003": case "\0": // ^C or other signal abort + tty.setRawMode(false) + stdin.removeListener("data", D) + stdin.removeListener("error", cb) + stdin.pause() + return cb(new Error("cancelled")) + break + + default: // just a normal char + val += buffer + c + buffer = "" + if (!silent) process.stdout.write(c) + + // explicitly process a delim if we have enough chars. + if (num && val.length >= num) D(delim) + break + } + }) +} diff --git a/deps/npm/node_modules/read/package.json b/deps/npm/node_modules/read/package.json new file mode 100644 index 0000000000..bc05577aac --- /dev/null +++ b/deps/npm/node_modules/read/package.json @@ -0,0 +1,16 @@ +{ + "name": "read", + "version": "0.0.1", + "main": "lib/read.js", + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": ">=0.6" + }, + "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)", + "description": "read(1) for node programs", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/read.git" + } +} diff --git a/deps/npm/node_modules/tar/.npmignore b/deps/npm/node_modules/tar/.npmignore new file mode 100644 index 0000000000..856407ebed --- /dev/null +++ b/deps/npm/node_modules/tar/.npmignore @@ -0,0 +1,5 @@ +.*.swp +node_modules +examples/extract/ +test/tmp/ +test/fixtures/symlink diff --git a/deps/npm/node_modules/tar/.travis.yml b/deps/npm/node_modules/tar/.travis.yml new file mode 100644 index 0000000000..2d26206d58 --- /dev/null +++ b/deps/npm/node_modules/tar/.travis.yml @@ -0,0 +1,3 @@ +language: node_js +node_js: + - 0.6 diff --git a/deps/npm/node_modules/tar/lib/pack.js b/deps/npm/node_modules/tar/lib/pack.js index 0de7c16b04..c713c57c75 100644 --- a/deps/npm/node_modules/tar/lib/pack.js +++ b/deps/npm/node_modules/tar/lib/pack.js @@ -148,6 +148,10 @@ Pack.prototype._process = function () { } switch (wprops.type) { + // sockets not supported + case "Socket": + return + case "Directory": wprops.path += "/" wprops.size = 0 diff --git a/deps/npm/node_modules/tar/package.json b/deps/npm/node_modules/tar/package.json index a736fe770b..6877cf27ca 100644 --- a/deps/npm/node_modules/tar/package.json +++ b/deps/npm/node_modules/tar/package.json @@ -2,7 +2,7 @@ "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)", "name": "tar", "description": "tar for node", - "version": "0.1.7", + "version": "0.1.9", "repository": { "type": "git", "url": "git://github.com/isaacs/node-tar.git" @@ -17,7 +17,7 @@ "dependencies": { "inherits": "1.x", "block-stream": "*", - "fstream": "~0.1.5" + "fstream": "~0.1.8" }, "devDependencies": { "tap": "0.x", diff --git a/deps/npm/package.json b/deps/npm/package.json index f1e6fd6934..3d2f4bc603 100644 --- a/deps/npm/package.json +++ b/deps/npm/package.json @@ -2,7 +2,7 @@ , "publishConfig": { "tag": "alpha", "proprietary-attribs": false } , "description": "A package manager for node" , "keywords": [ "package manager", "modules", "install", "package.json" ] -, "version": "1.1.0-alpha-6" +, "version": "1.1.0-beta-4" , "preferGlobal": true , "config": { "publishtest": false } , "homepage": "http://npmjs.org/" @@ -24,6 +24,7 @@ , "bin": { "npm": "./bin/npm-cli.js" , "npm_g": "./bin/npm-cli.js" , "npm-g": "./bin/npm-cli.js" } + , "dependencies": { "semver": "1" , "ini": "1" @@ -43,7 +44,10 @@ , "inherits": "1" , "mkdirp": "0.1" , "fast-list": "~1.0.1" + , "read": "0" + , "lru-cache": "1" } + , "bundleDependencies": [ "slide" , "ini" @@ -63,9 +67,13 @@ , "inherits" , "mkdirp" , "fast-list" + , "read" + , "lru-cache" ] + , "devDependencies": { "ronn": "https://github.com/isaacs/ronnjs/tarball/master" } + , "engines": { "node": "0.6 || 0.7 || 0.8", "npm": "1" } , "scripts": { "test": "./test/run" , "prepublish": "make -j4 doc" diff --git a/deps/npm/scripts/clean-old.sh b/deps/npm/scripts/clean-old.sh index cda80f2f48..cda80f2f48 100644..100755 --- a/deps/npm/scripts/clean-old.sh +++ b/deps/npm/scripts/clean-old.sh diff --git a/deps/npm/scripts/index-build.js b/deps/npm/scripts/index-build.js index b3c19a03a1..b3c19a03a1 100644..100755 --- a/deps/npm/scripts/index-build.js +++ b/deps/npm/scripts/index-build.js diff --git a/deps/npm/scripts/install.sh b/deps/npm/scripts/install.sh index 16fbfe618b..16fbfe618b 100644..100755 --- a/deps/npm/scripts/install.sh +++ b/deps/npm/scripts/install.sh diff --git a/deps/npm/test/common.js b/deps/npm/test/common.js new file mode 100644 index 0000000000..2755056b1b --- /dev/null +++ b/deps/npm/test/common.js @@ -0,0 +1,7 @@ + +// whatever, it's just tests. +;["util","assert"].forEach(function (thing) { + thing = require("thing") + for (var i in thing) global[i] = thing[i] +} + diff --git a/deps/npm/test/packages/npm-test-blerg/package.json b/deps/npm/test/packages/npm-test-blerg/package.json new file mode 100644 index 0000000000..374b4432b2 --- /dev/null +++ b/deps/npm/test/packages/npm-test-blerg/package.json @@ -0,0 +1,4 @@ +{ "name":"npm-test-blerg" +, "version" : "0.0.0" +, "scripts" : { "test" : "node test.js" } +} diff --git a/deps/npm/test/packages/npm-test-blerg/test.js b/deps/npm/test/packages/npm-test-blerg/test.js new file mode 100644 index 0000000000..f548458ac0 --- /dev/null +++ b/deps/npm/test/packages/npm-test-blerg/test.js @@ -0,0 +1,5 @@ + +var assert = require("assert") +assert.equal(undefined, process.env.npm_config__password, "password exposed!") +assert.equal(undefined, process.env.npm_config__auth, "auth exposed!") +assert.equal(undefined, process.env.npm_config__authCrypt, "authCrypt exposed!") diff --git a/deps/npm/test/packages/npm-test-env-reader/package.json b/deps/npm/test/packages/npm-test-env-reader/package.json new file mode 100644 index 0000000000..ddd5c91abd --- /dev/null +++ b/deps/npm/test/packages/npm-test-env-reader/package.json @@ -0,0 +1,14 @@ +{ "name":"npm-test-env-reader" +, "version" : "1.2.3" +, "scripts" : + { "install" : "./test.sh" + , "preinstall" : "./test.sh" + , "preuninstall" : "./test.sh" + , "postuninstall" : "./test.sh" + , "test" : "./test.sh" + , "stop" : "./test.sh" + , "start" : "./test.sh" + , "restart" : "./test.sh" + , "foo" : "./test.sh" + } +} diff --git a/deps/npm/test/packages/npm-test-env-reader/test.sh b/deps/npm/test/packages/npm-test-env-reader/test.sh new file mode 100755 index 0000000000..b4ca4374ed --- /dev/null +++ b/deps/npm/test/packages/npm-test-env-reader/test.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env sh +env | grep npm | sort | uniq +echo PATH=$PATH diff --git a/deps/npm/test/packages/npm-test-ignore/.npmignore b/deps/npm/test/packages/npm-test-ignore/.npmignore new file mode 100644 index 0000000000..c7d927d0a2 --- /dev/null +++ b/deps/npm/test/packages/npm-test-ignore/.npmignore @@ -0,0 +1,7 @@ +/sub/ignore1 +./sub/include2 +ignore3 +./include4 +ignoredir1 +ignoredir2/ +*.tgz diff --git a/deps/npm/test/packages/npm-test-ignore/include4 b/deps/npm/test/packages/npm-test-ignore/include4 new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/deps/npm/test/packages/npm-test-ignore/include4 diff --git a/deps/npm/test/packages/npm-test-ignore/package.json b/deps/npm/test/packages/npm-test-ignore/package.json new file mode 100644 index 0000000000..6d492de780 --- /dev/null +++ b/deps/npm/test/packages/npm-test-ignore/package.json @@ -0,0 +1,3 @@ +{ "name":"npm-test-ignore" +, "version":"1.2.5" +, "scripts":{"test":"bash test.sh"}} diff --git a/deps/npm/test/packages/npm-test-ignore/sub/include b/deps/npm/test/packages/npm-test-ignore/sub/include new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/deps/npm/test/packages/npm-test-ignore/sub/include diff --git a/deps/npm/test/packages/npm-test-ignore/sub/include2 b/deps/npm/test/packages/npm-test-ignore/sub/include2 new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/deps/npm/test/packages/npm-test-ignore/sub/include2 diff --git a/deps/npm/test/packages/npm-test-ignore/sub/include4 b/deps/npm/test/packages/npm-test-ignore/sub/include4 new file mode 100644 index 0000000000..d16969cd18 --- /dev/null +++ b/deps/npm/test/packages/npm-test-ignore/sub/include4 @@ -0,0 +1 @@ +This file should be in the package. diff --git a/deps/npm/test/packages/npm-test-ignore/test.sh b/deps/npm/test/packages/npm-test-ignore/test.sh new file mode 100644 index 0000000000..cdf47f211a --- /dev/null +++ b/deps/npm/test/packages/npm-test-ignore/test.sh @@ -0,0 +1,27 @@ +x=`find . | grep ignore | grep -v npmignore` +if [ "$x" != "" ]; then + echo "ignored files included: $x" + exit 1 +fi + +x=`find . | grep -v ignore | sort` +y=". +./include4 +./package.json +./sub +./sub/include +./sub/include2 +./sub/include4 +./test.sh" +if [ "$x" != "$y" ]; then + echo "missing included files" + echo "got:" + echo "===" + echo "$x" + echo "===" + echo "wanted:" + echo "===" + echo "$y" + echo "===" + exit 1 +fi diff --git a/deps/npm/test/packages/npm-test-missing-bindir/package.json b/deps/npm/test/packages/npm-test-missing-bindir/package.json new file mode 100644 index 0000000000..49e26742df --- /dev/null +++ b/deps/npm/test/packages/npm-test-missing-bindir/package.json @@ -0,0 +1,4 @@ +{ "name":"npm-test-missing-bindir" +, "version" : "0.0.0" +, "scripts" : { "test" : "node test.js" } +, "directories": { "bin" : "./not-found" } } diff --git a/deps/npm/test/packages/npm-test-missing-bindir/test.js b/deps/npm/test/packages/npm-test-missing-bindir/test.js new file mode 100644 index 0000000000..f548458ac0 --- /dev/null +++ b/deps/npm/test/packages/npm-test-missing-bindir/test.js @@ -0,0 +1,5 @@ + +var assert = require("assert") +assert.equal(undefined, process.env.npm_config__password, "password exposed!") +assert.equal(undefined, process.env.npm_config__auth, "auth exposed!") +assert.equal(undefined, process.env.npm_config__authCrypt, "authCrypt exposed!") diff --git a/deps/npm/test/packages/npm-test-private/package.json b/deps/npm/test/packages/npm-test-private/package.json new file mode 100644 index 0000000000..3d95a37af1 --- /dev/null +++ b/deps/npm/test/packages/npm-test-private/package.json @@ -0,0 +1,4 @@ +{"name":"npm-test-private" +,"version":"9.9.9-9" +,"homepage":"http://www.youtube.com/watch?v=1MLry6Cn_D4" +,"private":"true"} diff --git a/deps/npm/test/packages/npm-test-test-package/package.json b/deps/npm/test/packages/npm-test-test-package/package.json new file mode 100644 index 0000000000..c5c5aeabc1 --- /dev/null +++ b/deps/npm/test/packages/npm-test-test-package/package.json @@ -0,0 +1,5 @@ +{ "name":"npm-test-test-package" +, "author" : "Testy McMock" +, "version" : "1.2.3-99-b" +, "description" : "This is a test package used for debugging. It has some random data and that's all." +} diff --git a/deps/npm/test/packages/npm-test-url-dep/package.json b/deps/npm/test/packages/npm-test-url-dep/package.json new file mode 100644 index 0000000000..72a139e547 --- /dev/null +++ b/deps/npm/test/packages/npm-test-url-dep/package.json @@ -0,0 +1,4 @@ +{ "name":"npm-test-url-dep" +, "version" : "1.2.3" +, "dependencies" : + { "dnode" : "https://github.com/substack/dnode/tarball/master" } } diff --git a/deps/npm/test/run b/deps/npm/test/run new file mode 100755 index 0000000000..09e6e4aee7 --- /dev/null +++ b/deps/npm/test/run @@ -0,0 +1,138 @@ +#!/bin/bash + +if [ "$DEBUG" != "" ]; then + set -x +fi + + +# the "npm" command is set to a custom function here so that we can +# test the code in this repo, rather than whichever version of npm +# happens to be installed. + +main () { + # setup + FAILURES=0 + + cd "$TESTDIR" + + npm config ls + + # install + npm install "$NPMPKG" || exit 1 + + # used in test later + npm config set package-config:foo boo || exit 1 + + npm install $( ls packages | awk '{print "packages/" $1 }' ) || exit 1 + (ls packages | while read pkg; do + npm test "$pkg" + done) || exit 1 + if [ "$FAILURES" == "0" ]; then + npm rm $(ls packages) npm || exit 1 + fi + cleanup + + if ! [ "$npm_package_config_publishtest" == "true" ]; then + echo_err "To test publishing: npm config set npm:publishtest true" + else + # attempt to publish and unpublish each of them. + npm install "$NPMPKG" || exit 1 + + (ls packages | grep -v 'npm-test-private' | while read pkg; do + npm publish packages/$pkg || exit 1 + npm install $pkg || exit 1 + npm unpublish $pkg --force || exit 1 + done) || exit 1 + + # verify that the private package can't be published + # bypass the test-harness npm function. + "$NPMCLI" publish packages/npm-test-private && ( + npm unpublish npm-test-private --force + exit 1000 + ) + if [ $? -eq 1000 ]; then + fail "Private package shouldn't be publishable" >&2 + fi + + if [ "$FAILURES" == "0" ]; then + npm rm $(ls packages) npm || exit 1 + fi + cleanup + + fi + + if [ $FAILURES -eq 0 ]; then + echo_err "ok" + rm -rf $TMP + else + echo_err "FAILED: $FAILURES" + fi + exit $FAILURES +} + + + +#################### +# Test Harness below + +# fake functions +npm () { + echo -e "npm $@" + "$NPMCLI" "$@" \ + || fail npm "$@" +} + +# get the absolute path of the executable +SELF_PATH="$0" +if [ "${SELF_PATH:0:1}" != "." ] && [ "${SELF_PATH:0:1}" != "/" ]; then + SELF_PATH=./"$SELF_PATH" +fi +SELF_PATH=$( cd -P -- "$(dirname -- "$SELF_PATH")" \ + && pwd -P \ + ) && SELF_PATH=$SELF_PATH/$(basename -- "$0") +# resolve symlinks +while [ -h "$SELF_PATH" ]; do + DIR=$(dirname -- "$SELF_PATH") + SYM=$(readlink -- "$SELF_PATH") + SELF_PATH=$( cd -- "$DIR" \ + && cd -- $(dirname -- "$SYM") \ + && pwd \ + )/$(basename -- "$SYM") +done +NPMPKG="$(dirname -- "$(dirname -- "$SELF_PATH")")" +NPMCLI="$NPMPKG/cli.js" +TESTDIR="$NPMPKG/test/" +TMP=${TMPDIR:-/tmp} +rm -rf $TMP/npm* +TMP=$TMP/npm-test-$$ +echo "Testing in $TMP ..." +ROOTDIR="$TMP/root" + +cleanup () { + if [ "$FAILURES" != "0" ] && [ "$FAILURES" != "" ]; then + return + fi + [ -d "$ROOTDIR" ] && rm -rf -- "$ROOTDIR" + mkdir -p -- "$ROOTDIR" +} + +export npm_config_prefix="$ROOTDIR" +export npm_config_color="always" +export npm_config_global=true +# have to set this to false, or it'll try to test itself forever +export npm_config_npat=false +export PATH="$PATH":"$ROOTDIR/bin":"$ROOTDIR/node_modules/.bin" +export NODE_PATH="$ROOTDIR/node_modules" + +echo_err () { + echo "$@" >&2 +} +fail () { + let 'FAILURES += 1' + echo_err "" + echo_err -e "\033[33mFailure: $@\033[m" + exit 1 +} + +cleanup +main diff --git a/deps/npm/test/update-test.sh b/deps/npm/test/update-test.sh new file mode 100755 index 0000000000..f72c90dd98 --- /dev/null +++ b/deps/npm/test/update-test.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +SELF_PATH="$0" +if [ "${SELF_PATH:0:1}" != "." ] && [ "${SELF_PATH:0:1}" != "/" ]; then + SELF_PATH=./"$SELF_PATH" +fi +SELF_PATH=$( cd -P -- "$(dirname -- "$SELF_PATH")" \ + && pwd -P \ + ) && SELF_PATH=$SELF_PATH/$(basename -- "$0") + +# resolve symlinks +while [ -h "$SELF_PATH" ]; do + DIR=$(dirname -- "$SELF_PATH") + SYM=$(readlink -- "$SELF_PATH") + SELF_PATH=$( cd -- "$DIR" \ + && cd -- $(dirname -- "$SYM") \ + && pwd \ + )/$(basename -- "$SYM") +done +DIR=$( dirname -- "$SELF_PATH" ) + +export npm_config_root=$DIR/root +export npm_config_binroot=$DIR/bin + +rm -rf $DIR/{root,bin} +mkdir -p $DIR/root +mkdir -p $DIR/bin +npm ls installed 2>/dev/null | grep -v npm | awk '{print $1}' | xargs npm rm &>/dev/null +npm install \ + base64@1.0.0 \ + eyes@0.1.1 \ + vows@0.2.5 \ + websocket-server@1.0.5 &>/dev/null +npm install ./test/packages/blerg &>/dev/null +npm install vows@0.3.0 &>/dev/null + +echo "" +echo "##" +echo "## starting update" +echo "##" +echo "" + +npm update + +echo "" +echo "##" +echo "## update done, all should be 'latest'" +echo "##" +echo "" + +list=$( npm ls installed remote 2>/dev/null ) +echo "$list" +notlatest=$( echo "$list" | grep -v latest ) +if [ "$notlatest" != "" ]; then + echo "Failed: not latest" + echo $notlatest +else + echo "ok" +fi |