npm: Update to 1.2.14
authorisaacs <i@izs.me>
Wed, 6 Mar 2013 23:41:06 +0000 (15:41 -0800)
committerisaacs <i@izs.me>
Wed, 6 Mar 2013 23:41:06 +0000 (15:41 -0800)
229 files changed:
deps/npm/README.md
deps/npm/html/api/bin.html
deps/npm/html/api/bugs.html
deps/npm/html/api/commands.html
deps/npm/html/api/config.html
deps/npm/html/api/deprecate.html
deps/npm/html/api/docs.html
deps/npm/html/api/edit.html
deps/npm/html/api/explore.html
deps/npm/html/api/help-search.html
deps/npm/html/api/init.html
deps/npm/html/api/install.html
deps/npm/html/api/link.html
deps/npm/html/api/load.html
deps/npm/html/api/ls.html
deps/npm/html/api/npm.html
deps/npm/html/api/outdated.html
deps/npm/html/api/owner.html
deps/npm/html/api/pack.html
deps/npm/html/api/prefix.html
deps/npm/html/api/prune.html
deps/npm/html/api/publish.html
deps/npm/html/api/rebuild.html
deps/npm/html/api/restart.html
deps/npm/html/api/root.html
deps/npm/html/api/run-script.html
deps/npm/html/api/search.html
deps/npm/html/api/shrinkwrap.html
deps/npm/html/api/start.html
deps/npm/html/api/stop.html
deps/npm/html/api/submodule.html
deps/npm/html/api/tag.html
deps/npm/html/api/test.html
deps/npm/html/api/uninstall.html
deps/npm/html/api/unpublish.html
deps/npm/html/api/update.html
deps/npm/html/api/version.html
deps/npm/html/api/view.html
deps/npm/html/api/whoami.html
deps/npm/html/doc/README.html
deps/npm/html/doc/adduser.html
deps/npm/html/doc/bin.html
deps/npm/html/doc/bugs.html
deps/npm/html/doc/build.html
deps/npm/html/doc/bundle.html
deps/npm/html/doc/cache.html
deps/npm/html/doc/changelog.html
deps/npm/html/doc/coding-style.html
deps/npm/html/doc/completion.html
deps/npm/html/doc/config.html
deps/npm/html/doc/dedupe.html
deps/npm/html/doc/deprecate.html
deps/npm/html/doc/developers.html
deps/npm/html/doc/disputes.html
deps/npm/html/doc/docs.html
deps/npm/html/doc/edit.html
deps/npm/html/doc/explore.html
deps/npm/html/doc/faq.html
deps/npm/html/doc/folders.html
deps/npm/html/doc/global.html
deps/npm/html/doc/help-search.html
deps/npm/html/doc/help.html
deps/npm/html/doc/index.html
deps/npm/html/doc/init.html
deps/npm/html/doc/install.html
deps/npm/html/doc/json.html
deps/npm/html/doc/link.html
deps/npm/html/doc/ls.html
deps/npm/html/doc/npm.html
deps/npm/html/doc/outdated.html
deps/npm/html/doc/owner.html
deps/npm/html/doc/pack.html
deps/npm/html/doc/prefix.html
deps/npm/html/doc/prune.html
deps/npm/html/doc/publish.html
deps/npm/html/doc/rebuild.html
deps/npm/html/doc/registry.html
deps/npm/html/doc/removing-npm.html
deps/npm/html/doc/restart.html
deps/npm/html/doc/rm.html
deps/npm/html/doc/root.html
deps/npm/html/doc/run-script.html
deps/npm/html/doc/scripts.html
deps/npm/html/doc/search.html
deps/npm/html/doc/semver.html
deps/npm/html/doc/shrinkwrap.html
deps/npm/html/doc/star.html
deps/npm/html/doc/stars.html
deps/npm/html/doc/start.html
deps/npm/html/doc/stop.html
deps/npm/html/doc/submodule.html
deps/npm/html/doc/tag.html
deps/npm/html/doc/test.html
deps/npm/html/doc/uninstall.html
deps/npm/html/doc/unpublish.html
deps/npm/html/doc/update.html
deps/npm/html/doc/version.html
deps/npm/html/doc/view.html
deps/npm/html/doc/whoami.html
deps/npm/lib/cache.js
deps/npm/man/man1/README.1
deps/npm/man/man1/adduser.1
deps/npm/man/man1/bin.1
deps/npm/man/man1/bugs.1
deps/npm/man/man1/build.1
deps/npm/man/man1/bundle.1
deps/npm/man/man1/cache.1
deps/npm/man/man1/changelog.1
deps/npm/man/man1/coding-style.1
deps/npm/man/man1/completion.1
deps/npm/man/man1/config.1
deps/npm/man/man1/dedupe.1
deps/npm/man/man1/deprecate.1
deps/npm/man/man1/developers.1
deps/npm/man/man1/disputes.1
deps/npm/man/man1/docs.1
deps/npm/man/man1/edit.1
deps/npm/man/man1/explore.1
deps/npm/man/man1/faq.1
deps/npm/man/man1/folders.1
deps/npm/man/man1/global.1
deps/npm/man/man1/help-search.1
deps/npm/man/man1/help.1
deps/npm/man/man1/index.1
deps/npm/man/man1/init.1
deps/npm/man/man1/install.1
deps/npm/man/man1/json.1
deps/npm/man/man1/link.1
deps/npm/man/man1/ls.1
deps/npm/man/man1/npm.1
deps/npm/man/man1/outdated.1
deps/npm/man/man1/owner.1
deps/npm/man/man1/pack.1
deps/npm/man/man1/prefix.1
deps/npm/man/man1/prune.1
deps/npm/man/man1/publish.1
deps/npm/man/man1/rebuild.1
deps/npm/man/man1/registry.1
deps/npm/man/man1/removing-npm.1
deps/npm/man/man1/restart.1
deps/npm/man/man1/rm.1
deps/npm/man/man1/root.1
deps/npm/man/man1/run-script.1
deps/npm/man/man1/scripts.1
deps/npm/man/man1/search.1
deps/npm/man/man1/semver.1
deps/npm/man/man1/shrinkwrap.1
deps/npm/man/man1/star.1
deps/npm/man/man1/stars.1
deps/npm/man/man1/start.1
deps/npm/man/man1/stop.1
deps/npm/man/man1/submodule.1
deps/npm/man/man1/tag.1
deps/npm/man/man1/test.1
deps/npm/man/man1/uninstall.1
deps/npm/man/man1/unpublish.1
deps/npm/man/man1/update.1
deps/npm/man/man1/version.1
deps/npm/man/man1/view.1
deps/npm/man/man1/whoami.1
deps/npm/man/man3/bin.3
deps/npm/man/man3/bugs.3
deps/npm/man/man3/commands.3
deps/npm/man/man3/config.3
deps/npm/man/man3/deprecate.3
deps/npm/man/man3/docs.3
deps/npm/man/man3/edit.3
deps/npm/man/man3/explore.3
deps/npm/man/man3/help-search.3
deps/npm/man/man3/init.3
deps/npm/man/man3/install.3
deps/npm/man/man3/link.3
deps/npm/man/man3/load.3
deps/npm/man/man3/ls.3
deps/npm/man/man3/npm.3
deps/npm/man/man3/outdated.3
deps/npm/man/man3/owner.3
deps/npm/man/man3/pack.3
deps/npm/man/man3/prefix.3
deps/npm/man/man3/prune.3
deps/npm/man/man3/publish.3
deps/npm/man/man3/rebuild.3
deps/npm/man/man3/restart.3
deps/npm/man/man3/root.3
deps/npm/man/man3/run-script.3
deps/npm/man/man3/search.3
deps/npm/man/man3/shrinkwrap.3
deps/npm/man/man3/start.3
deps/npm/man/man3/stop.3
deps/npm/man/man3/submodule.3
deps/npm/man/man3/tag.3
deps/npm/man/man3/test.3
deps/npm/man/man3/uninstall.3
deps/npm/man/man3/unpublish.3
deps/npm/man/man3/update.3
deps/npm/man/man3/version.3
deps/npm/man/man3/view.3
deps/npm/man/man3/whoami.3
deps/npm/node_modules/chmodr/LICENSE [new file with mode: 0644]
deps/npm/node_modules/chmodr/README.md [new file with mode: 0644]
deps/npm/node_modules/chmodr/chmodr.js [new file with mode: 0644]
deps/npm/node_modules/chmodr/package.json [new file with mode: 0644]
deps/npm/node_modules/chmodr/test/basic.js [new file with mode: 0644]
deps/npm/node_modules/chmodr/test/sync.js [new file with mode: 0644]
deps/npm/node_modules/glob/package.json
deps/npm/node_modules/glob/test/bash-results.json
deps/npm/node_modules/glob/test/nocase-nomagic.js [new file with mode: 0644]
deps/npm/node_modules/lru-cache/README.md
deps/npm/node_modules/lru-cache/lib/lru-cache.js
deps/npm/node_modules/lru-cache/package.json
deps/npm/node_modules/lru-cache/test/basic.js
deps/npm/node_modules/lru-cache/test/foreach.js [new file with mode: 0644]
deps/npm/node_modules/lru-cache/test/memory-leak.js [new file with mode: 0644]
deps/npm/node_modules/minimatch/minimatch.js
deps/npm/node_modules/minimatch/package.json
deps/npm/node_modules/mkdirp/.travis.yml
deps/npm/node_modules/mkdirp/README.markdown
deps/npm/node_modules/mkdirp/package.json
deps/npm/node_modules/node-gyp/lib/build.js
deps/npm/node_modules/node-gyp/package.json
deps/npm/node_modules/npm-registry-client/lib/publish.js
deps/npm/node_modules/npm-registry-client/package.json
deps/npm/node_modules/read-package-json/package.json
deps/npm/node_modules/read-package-json/read-json.js
deps/npm/node_modules/semver/package.json
deps/npm/node_modules/semver/semver.js
deps/npm/node_modules/semver/test.js
deps/npm/package.json
deps/npm/test/packages/npm-test-peer-deps/test.js

index d3e361c..c8b7afc 100644 (file)
@@ -42,11 +42,11 @@ There's a pretty robust install script at
 
 You can set any npm configuration params with that script:
 
-npm_config_prefix=/some/path sh install.sh
+    npm_config_prefix=/some/path sh install.sh
 
 Or, you can run it in uber-debuggery mode:
 
-npm_debug=1 sh install.sh
+    npm_debug=1 sh install.sh
 
 ### Even Fancier
 
index 762ed89..7aa186c 100644 (file)
@@ -19,7 +19,7 @@
 <p>This function should not be used programmatically.  Instead, just refer
 to the <code>npm.bin</code> member.</p>
 </div>
-<p id="footer">bin &mdash; npm@1.2.11</p>
+<p id="footer">bin &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index d7b615f..62ebbe4 100644 (file)
@@ -25,7 +25,7 @@ optional version number.</p>
 <p>This command will launch a browser, so this command may not be the most
 friendly for programmatic use.</p>
 </div>
-<p id="footer">bugs &mdash; npm@1.2.11</p>
+<p id="footer">bugs &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index ee98554..003ac48 100644 (file)
@@ -28,7 +28,7 @@ usage, or <code>man 3 npm-&lt;command&gt;</code> for programmatic usage.</p>
 
 <ul><li><a href="../doc/index.html">index(1)</a></li></ul>
 </div>
-<p id="footer">commands &mdash; npm@1.2.11</p>
+<p id="footer">commands &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index facb4ee..11869b3 100644 (file)
@@ -33,7 +33,7 @@ functions instead.</p>
 
 <ul><li><a href="../api/npm.html">npm(3)</a></li></ul>
 </div>
-<p id="footer">config &mdash; npm@1.2.11</p>
+<p id="footer">config &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index ab671f2..a0fdbd5 100644 (file)
@@ -32,7 +32,7 @@ install the package.</p></li></ul>
 
 <ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../api/unpublish.html">unpublish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
 </div>
-<p id="footer">deprecate &mdash; npm@1.2.11</p>
+<p id="footer">deprecate &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 1b3d0c8..4035df0 100644 (file)
@@ -25,7 +25,7 @@ optional version number.</p>
 <p>This command will launch a browser, so this command may not be the most
 friendly for programmatic use.</p>
 </div>
-<p id="footer">docs &mdash; npm@1.2.11</p>
+<p id="footer">docs &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 85acc08..18075e6 100644 (file)
@@ -30,7 +30,7 @@ to open. The package can optionally have a version number attached.</p>
 <p>Since this command opens an editor in a new process, be careful about where
 and how this is used.</p>
 </div>
-<p id="footer">edit &mdash; npm@1.2.11</p>
+<p id="footer">edit &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index ddf38e7..3478c19 100644 (file)
@@ -24,7 +24,7 @@ sure to use <code>npm rebuild &lt;pkg&gt;</code> if you make any changes.</p>
 
 <p>The first element in the &#39;args&#39; parameter must be a package name.  After that is the optional command, which can be any number of strings. All of the strings will be combined into one, space-delimited command.</p>
 </div>
-<p id="footer">explore &mdash; npm@1.2.11</p>
+<p id="footer">explore &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 3615e7e..25d3362 100644 (file)
@@ -32,7 +32,7 @@ Name of the file that matched</li></ul>
 
 <p>The silent parameter is not neccessary not used, but it may in the future.</p>
 </div>
-<p id="footer">help-search &mdash; npm@1.2.11</p>
+<p id="footer">help-search &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index a8a62a6..0fea7b2 100644 (file)
@@ -35,7 +35,7 @@ then go ahead and use this programmatically.</p>
 
 <p><a href="../doc/json.html">json(1)</a></p>
 </div>
-<p id="footer">init &mdash; npm@1.2.11</p>
+<p id="footer">init &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index a2a7666..d372eee 100644 (file)
@@ -25,7 +25,7 @@ the name of a package to be installed.</p>
 <p>Finally, &#39;callback&#39; is a function that will be called when all packages have been
 installed or when an error has been encountered.</p>
 </div>
-<p id="footer">install &mdash; npm@1.2.11</p>
+<p id="footer">install &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index f843262..8ed7a24 100644 (file)
@@ -39,7 +39,7 @@ npm.commands.link(&#39;redis&#39;, cb)  # link-install the package</code></pre>
 <p>Now, any changes to the redis package will be reflected in
 the package in the current working directory</p>
 </div>
-<p id="footer">link &mdash; npm@1.2.11</p>
+<p id="footer">link &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index cea0c3f..400fa9e 100644 (file)
@@ -32,7 +32,7 @@ config object.</p>
 
 <p>For a list of all the available command-line configs, see <code>npm help config</code></p>
 </div>
-<p id="footer">load &mdash; npm@1.2.11</p>
+<p id="footer">load &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 5e5671a..0eadc89 100644 (file)
@@ -59,7 +59,7 @@ project.</p>
 This means that if a submodule a same dependency as a parent module, then the
 dependency will only be output once.</p>
 </div>
-<p id="footer">ls &mdash; npm@1.2.11</p>
+<p id="footer">ls &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 26e133c..cef8772 100644 (file)
@@ -24,7 +24,7 @@ npm.load([configObject,] function (er, npm) {
 
 <h2 id="VERSION">VERSION</h2>
 
-<p>1.2.11</p>
+<p>1.2.14</p>
 
 <h2 id="DESCRIPTION">DESCRIPTION</h2>
 
@@ -92,7 +92,7 @@ method names.  Use the <code>npm.deref</code> method to find the real name.</p>
 
 <pre><code>var cmd = npm.deref(&quot;unp&quot;) // cmd === &quot;unpublish&quot;</code></pre>
 </div>
-<p id="footer">npm &mdash; npm@1.2.11</p>
+<p id="footer">npm &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 7a693e0..437fae7 100644 (file)
@@ -19,7 +19,7 @@ currently outdated.</p>
 
 <p>If the &#39;packages&#39; parameter is left out, npm will check all packages.</p>
 </div>
-<p id="footer">outdated &mdash; npm@1.2.11</p>
+<p id="footer">outdated &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 10263d8..703ecb6 100644 (file)
@@ -34,7 +34,7 @@ that is not implemented at this time.</p>
 
 <ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
 </div>
-<p id="footer">owner &mdash; npm@1.2.11</p>
+<p id="footer">owner &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 75bfb97..0a33a08 100644 (file)
@@ -25,7 +25,7 @@ overwritten the second time.</p>
 
 <p>If no arguments are supplied, then npm packs the current package folder.</p>
 </div>
-<p id="footer">pack &mdash; npm@1.2.11</p>
+<p id="footer">pack &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 14056f2..cecde76 100644 (file)
@@ -21,7 +21,7 @@
 
 <p>This function is not useful programmatically</p>
 </div>
-<p id="footer">prefix &mdash; npm@1.2.11</p>
+<p id="footer">prefix &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index adefa17..4fa189b 100644 (file)
@@ -23,7 +23,7 @@
 <p>Extraneous packages are packages that are not listed on the parent
 package&#39;s dependencies list.</p>
 </div>
-<p id="footer">prune &mdash; npm@1.2.11</p>
+<p id="footer">prune &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 3b50a9e..f7804ab 100644 (file)
@@ -32,7 +32,7 @@ the registry.  Overwrites when the &quot;force&quot; environment variable is set
 
 <ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../api/owner.html">owner(3)</a></li></ul>
 </div>
-<p id="footer">publish &mdash; npm@1.2.11</p>
+<p id="footer">publish &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index c9e805c..c6d80ad 100644 (file)
@@ -22,7 +22,7 @@ the new binary. If no &#39;packages&#39; parameter is specify, every package wil
 
 <p>See <code>npm help build</code></p>
 </div>
-<p id="footer">rebuild &mdash; npm@1.2.11</p>
+<p id="footer">rebuild &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 0378b94..9dc9063 100644 (file)
@@ -27,7 +27,7 @@ in the <code>packages</code> parameter.</p>
 
 <ul><li><a href="../api/start.html">start(3)</a></li><li><a href="../api/stop.html">stop(3)</a></li></ul>
 </div>
-<p id="footer">restart &mdash; npm@1.2.11</p>
+<p id="footer">restart &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index d2f6aab..c788442 100644 (file)
@@ -21,7 +21,7 @@
 
 <p>This function is not useful programmatically.</p>
 </div>
-<p id="footer">root &mdash; npm@1.2.11</p>
+<p id="footer">root &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 5d93e41..1d3ee56 100644 (file)
@@ -29,7 +29,7 @@ assumed to be the command to run. All other elements are ignored.</p>
 
 <ul><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../api/test.html">test(3)</a></li><li><a href="../api/start.html">start(3)</a></li><li><a href="../api/restart.html">restart(3)</a></li><li><a href="../api/stop.html">stop(3)</a></li></ul>
 </div>
-<p id="footer">run-script &mdash; npm@1.2.11</p>
+<p id="footer">run-script &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index fefbed5..612b965 100644 (file)
@@ -32,7 +32,7 @@ excluded term (the &quot;searchexclude&quot; config). The search is case insensi
 and doesn&#39;t try to read your mind (it doesn&#39;t do any verb tense matching or the
 like).</p>
 </div>
-<p id="footer">search &mdash; npm@1.2.11</p>
+<p id="footer">search &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 50ca198..3ac034f 100644 (file)
@@ -26,7 +26,7 @@ but the shrinkwrap file will still be written.</p>
 <p>Finally, &#39;callback&#39; is a function that will be called when the shrinkwrap has
 been saved.</p>
 </div>
-<p id="footer">shrinkwrap &mdash; npm@1.2.11</p>
+<p id="footer">shrinkwrap &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 5dbbcb7..c8635a8 100644 (file)
@@ -19,7 +19,7 @@
 <p>npm can run tests on multiple packages. Just specify multiple packages
 in the <code>packages</code> parameter.</p>
 </div>
-<p id="footer">start &mdash; npm@1.2.11</p>
+<p id="footer">start &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 733a1e2..85313fa 100644 (file)
@@ -19,7 +19,7 @@
 <p>npm can run stop on multiple packages. Just specify multiple packages
 in the <code>packages</code> parameter.</p>
 </div>
-<p id="footer">stop &mdash; npm@1.2.11</p>
+<p id="footer">stop &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index b655c41..2041d4f 100644 (file)
@@ -33,7 +33,7 @@ dependencies into the submodule folder.</p>
 
 <ul><li>npm help json</li><li>git help submodule</li></ul>
 </div>
-<p id="footer">submodule &mdash; npm@1.2.11</p>
+<p id="footer">submodule &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index cee4719..056b20b 100644 (file)
@@ -29,7 +29,7 @@ parameter is missing or falsey (empty), the default froom the config will be
 used. For more information about how to set this config, check
 <code>man 3 npm-config</code> for programmatic usage or <code>man npm-config</code> for cli usage.</p>
 </div>
-<p id="footer">tag &mdash; npm@1.2.11</p>
+<p id="footer">tag &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 8086289..a85c6bf 100644 (file)
@@ -22,7 +22,7 @@ true.</p>
 <p>npm can run tests on multiple packages. Just specify multiple packages
 in the <code>packages</code> parameter.</p>
 </div>
-<p id="footer">test &mdash; npm@1.2.11</p>
+<p id="footer">test &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 1aac296..79dda45 100644 (file)
@@ -22,7 +22,7 @@ the name of a package to be uninstalled.</p>
 <p>Finally, &#39;callback&#39; is a function that will be called when all packages have been
 uninstalled or when an error has been encountered.</p>
 </div>
-<p id="footer">uninstall &mdash; npm@1.2.11</p>
+<p id="footer">uninstall &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 43aadee..4da7260 100644 (file)
@@ -26,7 +26,7 @@ is what is meant.</p>
 <p>If no version is specified, or if all versions are removed then
 the root package entry is removed from the registry entirely.</p>
 </div>
-<p id="footer">unpublish &mdash; npm@1.2.11</p>
+<p id="footer">unpublish &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 3aa2780..2d26414 100644 (file)
@@ -18,7 +18,7 @@
 
 <p>The &#39;packages&#39; argument is an array of packages to update. The &#39;callback&#39; parameter will be called when done or when an error occurs.</p>
 </div>
-<p id="footer">update &mdash; npm@1.2.11</p>
+<p id="footer">update &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 44dc04b..155487d 100644 (file)
@@ -24,7 +24,7 @@ fail if the repo is not clean.</p>
 parameter. The difference, however, is this function will fail if it does
 not have exactly one element. The only element should be a version number.</p>
 </div>
-<p id="footer">version &mdash; npm@1.2.11</p>
+<p id="footer">version &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 5d3318c..1e27b82 100644 (file)
@@ -99,7 +99,7 @@ the field name.</p>
 
 <p>corresponding to the list of fields selected.</p>
 </div>
-<p id="footer">view &mdash; npm@1.2.11</p>
+<p id="footer">view &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 8a6bb17..fc5df0d 100644 (file)
@@ -21,7 +21,7 @@
 
 <p>This function is not useful programmatically</p>
 </div>
-<p id="footer">whoami &mdash; npm@1.2.11</p>
+<p id="footer">whoami &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 6a006e8..d46e3c5 100644 (file)
@@ -49,11 +49,11 @@ paths, etc.) then read on.</p>
 
 <p>You can set any npm configuration params with that script:</p>
 
-<p>npm<em>config</em>prefix=/some/path sh install.sh</p>
+<pre><code>npm_config_prefix=/some/path sh install.sh</code></pre>
 
 <p>Or, you can run it in uber-debuggery mode:</p>
 
-<p>npm_debug=1 sh install.sh</p>
+<pre><code>npm_debug=1 sh install.sh</code></pre>
 
 <h3 id="Even-Fancier">Even Fancier</h3>
 
@@ -240,7 +240,7 @@ will no doubt tell you to put the output in a gist or email.</p>
 
 <ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/index.html">index(1)</a></li></ul>
 </div>
-<p id="footer"><a href="../doc/README.html">README</a> &mdash; npm@1.2.11</p>
+<p id="footer"><a href="../doc/README.html">README</a> &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index b0d9e5e..d79b53d 100644 (file)
@@ -39,7 +39,7 @@ authorize on a new machine.</p>
 
 <ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li><li><a href="../doc/whoami.html">whoami(1)</a></li></ul>
 </div>
-<p id="footer">adduser &mdash; npm@1.2.11</p>
+<p id="footer">adduser &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 45e3004..4845ea6 100644 (file)
@@ -20,7 +20,7 @@
 
 <ul><li><a href="../doc/prefix.html">prefix(1)</a></li><li><a href="../doc/root.html">root(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
 </div>
-<p id="footer">bin &mdash; npm@1.2.11</p>
+<p id="footer">bin &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index dd98bad..ef1947e 100644 (file)
@@ -36,7 +36,7 @@ config param.</p>
 
 <ul><li><a href="../doc/docs.html">docs(1)</a></li><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul>
 </div>
-<p id="footer">bugs &mdash; npm@1.2.11</p>
+<p id="footer">bugs &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 05ff474..7573186 100644 (file)
@@ -25,7 +25,7 @@ A folder containing a <code>package.json</code> file in its root.</li></ul>
 
 <ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul>
 </div>
-<p id="footer">build &mdash; npm@1.2.11</p>
+<p id="footer">build &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index bdb98c2..7fa6241 100644 (file)
@@ -20,7 +20,7 @@ install packages into the local space.</p>
 
 <ul><li><a href="../doc/install.html">install(1)</a></li></ul>
 </div>
-<p id="footer">bundle &mdash; npm@1.2.11</p>
+<p id="footer">bundle &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index da99303..1a60c87 100644 (file)
@@ -66,7 +66,7 @@ they do not make an HTTP request to the registry.</p>
 
 <ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/pack.html">pack(1)</a></li></ul>
 </div>
-<p id="footer">cache &mdash; npm@1.2.11</p>
+<p id="footer">cache &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index cae5b2b..5e1bbb8 100644 (file)
@@ -65,7 +65,7 @@
 
 <ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li></ul>
 </div>
-<p id="footer">changelog &mdash; npm@1.2.11</p>
+<p id="footer">changelog &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index a595d40..3327856 100644 (file)
@@ -182,7 +182,7 @@ set to anything.&quot;</p>
 
 <ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul>
 </div>
-<p id="footer">coding-style &mdash; npm@1.2.11</p>
+<p id="footer">coding-style &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index cb8f57e..df02879 100644 (file)
@@ -33,7 +33,7 @@ completions based on the arguments.</p>
 
 <ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul>
 </div>
-<p id="footer">completion &mdash; npm@1.2.11</p>
+<p id="footer">completion &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 7a15988..54228a0 100644 (file)
@@ -771,7 +771,7 @@ then answer &quot;no&quot; to any prompt.</p>
 
 <ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul>
 </div>
-<p id="footer">config &mdash; npm@1.2.11</p>
+<p id="footer">config &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 019e656..f26ef09 100644 (file)
@@ -57,7 +57,7 @@ registry.</p>
 
 <ul><li><a href="../doc/ls.html">ls(1)</a></li><li><a href="../doc/update.html">update(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul>
 </div>
-<p id="footer">dedupe &mdash; npm@1.2.11</p>
+<p id="footer">dedupe &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index eab223d..11ad8a6 100644 (file)
@@ -31,7 +31,7 @@ something like this:</p>
 
 <ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
 </div>
-<p id="footer">deprecate &mdash; npm@1.2.11</p>
+<p id="footer">deprecate &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 14eee84..12bef24 100644 (file)
@@ -160,7 +160,7 @@ from a fresh checkout.</p>
 
 <ul><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
 </div>
-<p id="footer">developers &mdash; npm@1.2.11</p>
+<p id="footer">developers &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index b363efb..3c8b251 100644 (file)
@@ -86,7 +86,7 @@ an empty tarball, you&#39;re going to be evicted.</li></ol>
 
 <ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li></ul>
 </div>
-<p id="footer">disputes &mdash; npm@1.2.11</p>
+<p id="footer">disputes &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index ba79884..a2a7e53 100644 (file)
@@ -37,7 +37,7 @@ config param.</p>
 
 <ul><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul>
 </div>
-<p id="footer">docs &mdash; npm@1.2.11</p>
+<p id="footer">docs &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 293a66a..8546efa 100644 (file)
@@ -37,7 +37,7 @@ or <code>&quot;notepad&quot;</code> on Windows.</li><li>Type: path</li></ul>
 
 <ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/explore.html">explore(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
 </div>
-<p id="footer">edit &mdash; npm@1.2.11</p>
+<p id="footer">edit &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 5577e85..00c7ca5 100644 (file)
@@ -40,7 +40,7 @@ Windows</li><li>Type: path</li></ul>
 
 <ul><li><a href="../doc/submodule.html">submodule(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/edit.html">edit(1)</a></li><li><a href="../doc/rebuild.html">rebuild(1)</a></li><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul>
 </div>
-<p id="footer">explore &mdash; npm@1.2.11</p>
+<p id="footer">explore &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 81852a0..e19ec48 100644 (file)
@@ -296,7 +296,7 @@ There is not sufficient need to impose namespace rules on everyone.</p>
 
 <ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li></ul>
 </div>
-<p id="footer">faq &mdash; npm@1.2.11</p>
+<p id="footer">faq &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 7870b3f..66e1955 100644 (file)
@@ -205,7 +205,7 @@ cannot be found elsewhere.  See <code><a href="../doc/json.html">json(1)</a></co
 
 <ul><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/pack.html">pack(1)</a></li><li><a href="../doc/cache.html">cache(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li></ul>
 </div>
-<p id="footer">folders &mdash; npm@1.2.11</p>
+<p id="footer">folders &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 9bdd61b..d1006e6 100644 (file)
@@ -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">global &mdash; npm@1.2.11</p>
+<p id="footer">global &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 6343d4a..48ea7ea 100644 (file)
@@ -38,7 +38,7 @@ where the terms were found in the documentation.</p>
 
 <ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/help.html">help(1)</a></li></ul>
 </div>
-<p id="footer">help-search &mdash; npm@1.2.11</p>
+<p id="footer">help-search &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 623bce6..9f6b848 100644 (file)
@@ -36,7 +36,7 @@ matches are equivalent to specifying a topic name.</p>
 
 <ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/README.html">README</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/help-search.html">help-search(1)</a></li><li><a href="../doc/index.html">index(1)</a></li></ul>
 </div>
-<p id="footer">help &mdash; npm@1.2.11</p>
+<p id="footer">help &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index c7e6af0..d036a43 100644 (file)
 
 <p> Display npm username</p>
 </div>
-<p id="footer">index &mdash; npm@1.2.11</p>
+<p id="footer">index &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index b5ebffb..a9e31f5 100644 (file)
@@ -29,7 +29,7 @@ without a really good reason to do so.</p>
 
 <ul><li><a href="https://github.com/isaacs/init-package-json">https://github.com/isaacs/init-package-json</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/version.html">version(1)</a></li></ul>
 </div>
-<p id="footer">init &mdash; npm@1.2.11</p>
+<p id="footer">init &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 1a16807..e225cac 100644 (file)
@@ -136,7 +136,7 @@ affects a real use-case, it will be investigated.</p>
 
 <ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/update.html">update(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/rebuild.html">rebuild(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/tag.html">tag(1)</a></li><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/shrinkwrap.html">shrinkwrap(1)</a></li></ul>
 </div>
-<p id="footer">install &mdash; npm@1.2.11</p>
+<p id="footer">install &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 5970718..9e6c8ac 100644 (file)
@@ -525,7 +525,7 @@ overridden.</p>
 
 <ul><li><a href="../doc/semver.html">semver(1)</a></li><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/version.html">version(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/rm.html">rm(1)</a></li></ul>
 </div>
-<p id="footer">json &mdash; npm@1.2.11</p>
+<p id="footer">json &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 7249113..fa596c9 100644 (file)
@@ -58,7 +58,7 @@ installation target into your project&#39;s <code>node_modules</code> folder.</p
 
 <ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
 </div>
-<p id="footer">link &mdash; npm@1.2.11</p>
+<p id="footer">link &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index bdd6323..085fafa 100644 (file)
@@ -25,7 +25,7 @@ limit the results to only the paths to the packages named.  Note that
 nested packages will <em>also</em> show the paths to the specified packages.
 For example, running <code>npm ls promzard</code> in npm&#39;s source tree will show:</p>
 
-<pre><code>npm@1.2.11 /path/to/npm
+<pre><code>npm@1.2.14 /path/to/npm
 â””─┬ init-package-json@0.0.4
   â””── promzard@0.1.5</code></pre>
 
@@ -64,7 +64,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">ls &mdash; npm@1.2.11</p>
+<p id="footer">ls &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 09ff19a..2685721 100644 (file)
@@ -14,7 +14,7 @@
 
 <h2 id="VERSION">VERSION</h2>
 
-<p>1.2.11</p>
+<p>1.2.14</p>
 
 <h2 id="DESCRIPTION">DESCRIPTION</h2>
 
@@ -135,7 +135,7 @@ will no doubt tell you to put the output in a gist or email.</p>
 
 <ul><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/README.html">README</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/index.html">index(1)</a></li><li><a href="../api/npm.html">npm(3)</a></li></ul>
 </div>
-<p id="footer">npm &mdash; npm@1.2.11</p>
+<p id="footer">npm &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index b00991b..776e539 100644 (file)
@@ -21,7 +21,7 @@ packages are currently outdated.</p>
 
 <ul><li><a href="../doc/update.html">update(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li></ul>
 </div>
-<p id="footer">outdated &mdash; npm@1.2.11</p>
+<p id="footer">outdated &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 105dd16..0c7ac99 100644 (file)
@@ -34,7 +34,7 @@ that is not implemented at this time.</p>
 
 <ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/disputes.html">disputes(1)</a></li></ul>
 </div>
-<p id="footer">owner &mdash; npm@1.2.11</p>
+<p id="footer">owner &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index d386b81..e4820dc 100644 (file)
@@ -29,7 +29,7 @@ overwritten the second time.</p>
 
 <ul><li><a href="../doc/cache.html">cache(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
 </div>
-<p id="footer">pack &mdash; npm@1.2.11</p>
+<p id="footer">pack &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 49aff1a..a63053f 100644 (file)
@@ -20,7 +20,7 @@
 
 <ul><li><a href="../doc/root.html">root(1)</a></li><li><a href="../doc/bin.html">bin(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
 </div>
-<p id="footer">prefix &mdash; npm@1.2.11</p>
+<p id="footer">prefix &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index e633dcf..749bcf1 100644 (file)
@@ -25,7 +25,7 @@ package&#39;s dependencies list.</p>
 
 <ul><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul>
 </div>
-<p id="footer">prune &mdash; npm@1.2.11</p>
+<p id="footer">prune &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 2fbc9ce..39ff4ef 100644 (file)
@@ -29,7 +29,7 @@ the registry.  Overwrites when the &quot;--force&quot; flag is set.</p>
 
 <ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li><li><a href="../doc/deprecate.html">deprecate(1)</a></li><li><a href="../doc/tag.html">tag(1)</a></li></ul>
 </div>
-<p id="footer">publish &mdash; npm@1.2.11</p>
+<p id="footer">publish &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 3f62305..9ba4422 100644 (file)
@@ -25,7 +25,7 @@ the new binary.</p>
 
 <ul><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul>
 </div>
-<p id="footer">rebuild &mdash; npm@1.2.11</p>
+<p id="footer">rebuild &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index de04169..6860690 100644 (file)
@@ -95,7 +95,7 @@ ask for help on the <a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com
 
 <ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/disputes.html">disputes(1)</a></li></ul>
 </div>
-<p id="footer">registry &mdash; npm@1.2.11</p>
+<p id="footer">registry &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index e575a94..147ec98 100644 (file)
@@ -58,7 +58,7 @@ modules.  To track those down, you can do the following:</p>
 
 <ul><li><a href="../doc/README.html">README</a></li><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/prune.html">prune(1)</a></li></ul>
 </div>
-<p id="footer">removing-npm &mdash; npm@1.2.11</p>
+<p id="footer">removing-npm &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index b9b83d7..c96cfe5 100644 (file)
@@ -24,7 +24,7 @@ the &quot;start&quot; script.</p>
 
 <ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul>
 </div>
-<p id="footer">restart &mdash; npm@1.2.11</p>
+<p id="footer">restart &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 97331bf..1eff400 100644 (file)
@@ -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">rm &mdash; npm@1.2.11</p>
+<p id="footer">rm &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 165e337..8af398c 100644 (file)
@@ -20,7 +20,7 @@
 
 <ul><li><a href="../doc/prefix.html">prefix(1)</a></li><li><a href="../doc/bin.html">bin(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
 </div>
-<p id="footer">root &mdash; npm@1.2.11</p>
+<p id="footer">root &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 0d9548d..ceaa261 100644 (file)
@@ -23,7 +23,7 @@ called directly, as well.</p>
 
 <ul><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul>
 </div>
-<p id="footer">run-script &mdash; npm@1.2.11</p>
+<p id="footer">run-script &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index aade7cf..50cec97 100644 (file)
@@ -218,7 +218,7 @@ will sudo the npm command in question.</li></ul>
 
 <ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul>
 </div>
-<p id="footer">scripts &mdash; npm@1.2.11</p>
+<p id="footer">scripts &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 8a201ae..5cd5cf1 100644 (file)
@@ -24,7 +24,7 @@ expression characters must be escaped or quoted in most shells.)</p>
 
 <ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/view.html">view(1)</a></li></ul>
 </div>
-<p id="footer">search &mdash; npm@1.2.11</p>
+<p id="footer">search &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 410695d..bed1e22 100644 (file)
@@ -104,7 +104,7 @@ that satisfies the range, or null if none of them do.</li></ul>
 
 <ul><li><a href="../doc/json.html">json(1)</a></li></ul>
 </div>
-<p id="footer">semver &mdash; npm@1.2.11</p>
+<p id="footer">semver &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index efed371..bc2fcb2 100644 (file)
@@ -169,7 +169,7 @@ versions.</p>
 
 <ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul>
 </div>
-<p id="footer">shrinkwrap &mdash; npm@1.2.11</p>
+<p id="footer">shrinkwrap &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 7f7cb78..e78d192 100644 (file)
@@ -26,7 +26,7 @@ a vaguely positive way to show that you care.</p>
 
 <ul><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/whoami.html">whoami(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li></ul>
 </div>
-<p id="footer">star &mdash; npm@1.2.11</p>
+<p id="footer">star &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index a3204e6..14ab445 100644 (file)
@@ -25,7 +25,7 @@ you will most certainly enjoy this command.</p>
 
 <ul><li><a href="../doc/star.html">star(1)</a></li><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">stars &mdash; npm@1.2.11</p>
+<p id="footer">stars &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 4a42ee1..e4ec2ba 100644 (file)
@@ -20,7 +20,7 @@
 
 <ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul>
 </div>
-<p id="footer">start &mdash; npm@1.2.11</p>
+<p id="footer">start &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 98a4b5c..5d6863d 100644 (file)
@@ -20,7 +20,7 @@
 
 <ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li></ul>
 </div>
-<p id="footer">stop &mdash; npm@1.2.11</p>
+<p id="footer">stop &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index fdb7797..4950103 100644 (file)
@@ -33,7 +33,7 @@ dependencies into the submodule folder.</p>
 
 <ul><li><a href="../doc/json.html">json(1)</a></li><li>git help submodule</li></ul>
 </div>
-<p id="footer">submodule &mdash; npm@1.2.11</p>
+<p id="footer">submodule &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index a7290ca..7507e86 100644 (file)
@@ -21,7 +21,7 @@
 
 <ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
 </div>
-<p id="footer">tag &mdash; npm@1.2.11</p>
+<p id="footer">tag &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 297062f..23a78e6 100644 (file)
@@ -23,7 +23,7 @@ true.</p>
 
 <ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul>
 </div>
-<p id="footer">test &mdash; npm@1.2.11</p>
+<p id="footer">test &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 1632ff2..74f3cdd 100644 (file)
@@ -22,7 +22,7 @@ on its behalf.</p>
 
 <ul><li><a href="../doc/prune.html">prune(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
 </div>
-<p id="footer">uninstall &mdash; npm@1.2.11</p>
+<p id="footer">uninstall &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 92636e1..01f5085 100644 (file)
@@ -34,7 +34,7 @@ the root package entry is removed from the registry entirely.</p>
 
 <ul><li><a href="../doc/deprecate.html">deprecate(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li></ul>
 </div>
-<p id="footer">unpublish &mdash; npm@1.2.11</p>
+<p id="footer">unpublish &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 9652a53..e7ec872 100644 (file)
@@ -26,7 +26,7 @@ If no package name is specified, all packages in the specified location (global
 
 <ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/outdated.html">outdated(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul>
 </div>
-<p id="footer">update &mdash; npm@1.2.11</p>
+<p id="footer">update &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 953db5e..bbbe9a2 100644 (file)
@@ -49,7 +49,7 @@ Enter passphrase:</code></pre>
 
 <ul><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/semver.html">semver(1)</a></li></ul>
 </div>
-<p id="footer">version &mdash; npm@1.2.11</p>
+<p id="footer">version &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 1a36e11..80f250c 100644 (file)
@@ -90,7 +90,7 @@ the field name.</p>
 
 <ul><li><a href="../doc/search.html">search(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/docs.html">docs(1)</a></li></ul>
 </div>
-<p id="footer">view &mdash; npm@1.2.11</p>
+<p id="footer">view &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index 0b07228..82b7725 100644 (file)
@@ -20,7 +20,7 @@
 
 <ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li></ul>
 </div>
-<p id="footer">whoami &mdash; npm@1.2.11</p>
+<p id="footer">whoami &mdash; npm@1.2.14</p>
 <script>
 ;(function () {
 var wrapper = document.getElementById("wrapper")
index a7a7a42..7cb92af 100644 (file)
@@ -80,6 +80,7 @@ var mkdir = require("mkdirp")
   , crypto = require("crypto")
   , retry = require("retry")
   , zlib = require("zlib")
+  , chmodr = require("chmodr")
 
 cache.usage = "npm cache add <tarball file>"
             + "\nnpm cache add <folder>"
@@ -408,7 +409,12 @@ function addRemoteGit (u, parsed, name, cb_) {
 
     p = path.join(npm.config.get("cache"), "_git-remotes", v)
 
-    checkGitDir(p, u, co, origUrl, cb)
+    checkGitDir(p, u, co, origUrl, function(er, data) {
+      chmodr(p, npm.modes.file, function(erChmod) {
+        if (er) return cb(er, data)
+        return cb(erChmod, data)
+      })
+    })
   })
 }
 
@@ -471,33 +477,30 @@ function archiveGitRemote (p, u, co, origUrl, cb) {
     stdout = (stdout + "\n" + stderr).trim()
     if (er) {
       log.error("git fetch -a origin ("+u+")", stdout)
-      return next(er)
+      return cb(er)
     }
     log.verbose("git fetch -a origin ("+u+")", stdout)
     tmp = path.join(npm.tmp, Date.now()+"-"+Math.random(), "tmp.tgz")
-    next()
-  })
-
-  exec(git, resolve, env, false, p, function (er, code, stdout, stderr) {
-    stdout = (stdout + "\n" + stderr).trim()
-    if (er) {
-      log.error("Failed resolving git HEAD (" + u + ")", stderr)
-      return next(er)
-    }
-    log.verbose("git rev-list -n1 " + co, stdout)
-    var parsed = url.parse(origUrl)
-    parsed.hash = stdout
-    resolved = url.format(parsed)
-    log.verbose('resolved git url', resolved)
-    next()
+    resolveHead()
   })
 
-  function next (er) {
-    if (errState) return
-    if (er) return cb(errState = er)
-
-    if (++n < 2) return
+  function resolveHead () {
+    exec(git, resolve, env, false, p, function (er, code, stdout, stderr) {
+      stdout = (stdout + "\n" + stderr).trim()
+      if (er) {
+        log.error("Failed resolving git HEAD (" + u + ")", stderr)
+        return cb(er)
+      }
+      log.verbose("git rev-list -n1 " + co, stdout)
+      var parsed = url.parse(origUrl)
+      parsed.hash = stdout
+      resolved = url.format(parsed)
+      log.verbose('resolved git url', resolved)
+      next()
+    })
+  }
 
+  function next () {
     mkdir(path.dirname(tmp), function (er) {
       if (er) return cb(er)
       var gzip = zlib.createGzip({ level: 9 })
@@ -739,7 +742,7 @@ function addNameVersion (name, ver, data, cb) {
       // only add non-shasum'ed packages if --forced.
       // only ancient things would lack this for good reasons nowadays.
       if (!dist.shasum && !npm.config.get("force")) {
-        return cb(new Error("package lacks shasum"))
+        return cb(new Error("package lacks shasum: " + data._id))
       }
       return addRemoteTarball( tb
                              , dist.shasum
index 49724d6..471c77c 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM" "1" "February 2013" "" ""
+.TH "NPM" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm\fR \-\- node package manager
@@ -41,15 +41,27 @@ There\'s a pretty robust install script at \fIhttps://npmjs\.org/install\.sh\fR\
 .SS "Slightly Fancier"
 You can set any npm configuration params with that script:
 .
-.P
-npm\fIconfig\fRprefix=/some/path sh install\.sh
+.IP "" 4
+.
+.nf
+npm_config_prefix=/some/path sh install\.sh
+.
+.fi
+.
+.IP "" 0
 .
 .P
 Or, you can run it in uber\-debuggery mode:
 .
-.P
+.IP "" 4
+.
+.nf
 npm_debug=1 sh install\.sh
 .
+.fi
+.
+.IP "" 0
+.
 .SS "Even Fancier"
 Get the code with git\.  Use \fBmake\fR to build the docs and do other stuff\.
 If you plan on hacking on npm, \fBmake link\fR is your friend\.
index d6cbd3b..13c9d82 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-ADDUSER" "1" "February 2013" "" ""
+.TH "NPM\-ADDUSER" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-adduser\fR \-\- Add a registry user account
index b979cb6..4fde23c 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-BIN" "1" "February 2013" "" ""
+.TH "NPM\-BIN" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-bin\fR \-\- Display npm bin folder
index 498afd4..2fc9945 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-BUGS" "1" "February 2013" "" ""
+.TH "NPM\-BUGS" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-bugs\fR \-\- Bugs for a package in a web browser maybe
index 6d134ef..c1c7f1d 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-BUILD" "1" "February 2013" "" ""
+.TH "NPM\-BUILD" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-build\fR \-\- Build a package
index dc37939..0d0bec5 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-BUNDLE" "1" "February 2013" "" ""
+.TH "NPM\-BUNDLE" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-bundle\fR \-\- REMOVED
index d671d88..d41bf45 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-CACHE" "1" "February 2013" "" ""
+.TH "NPM\-CACHE" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-cache\fR \-\- Manipulates packages cache
index 97ecbb6..74e8077 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-CHANGELOG" "1" "February 2013" "" ""
+.TH "NPM\-CHANGELOG" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-changelog\fR \-\- Changes
index 9bf22ea..a479214 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-CODING\-STYLE" "1" "February 2013" "" ""
+.TH "NPM\-CODING\-STYLE" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-coding-style\fR \-\- npm\'s "funny" coding style
index edc41c9..ea40adb 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-COMPLETION" "1" "February 2013" "" ""
+.TH "NPM\-COMPLETION" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-completion\fR \-\- Tab Completion for npm
index df6167b..2e75683 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-CONFIG" "1" "February 2013" "" ""
+.TH "NPM\-CONFIG" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-config\fR \-\- Manage the npm configuration file
index d9efaed..3c384d1 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-DEDUPE" "1" "February 2013" "" ""
+.TH "NPM\-DEDUPE" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-dedupe\fR \-\- Reduce duplication
index 64d290d..4cbe43d 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-DEPRECATE" "1" "February 2013" "" ""
+.TH "NPM\-DEPRECATE" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-deprecate\fR \-\- Deprecate a version of a package
index c3dcb24..e54632a 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-DEVELOPERS" "1" "February 2013" "" ""
+.TH "NPM\-DEVELOPERS" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-developers\fR \-\- Developer Guide
index a94f9a6..e5e2f19 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-DISPUTES" "1" "February 2013" "" ""
+.TH "NPM\-DISPUTES" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-disputes\fR \-\- Handling Module Name Disputes
index b84a569..5b9ea63 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-DOCS" "1" "February 2013" "" ""
+.TH "NPM\-DOCS" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-docs\fR \-\- Docs for a package in a web browser maybe
index cd5c7af..38c6280 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-EDIT" "1" "February 2013" "" ""
+.TH "NPM\-EDIT" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-edit\fR \-\- Edit an installed package
index df6e249..e3af446 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-EXPLORE" "1" "February 2013" "" ""
+.TH "NPM\-EXPLORE" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-explore\fR \-\- Browse an installed package
index bc31a41..e0cb85f 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-FAQ" "1" "February 2013" "" ""
+.TH "NPM\-FAQ" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-faq\fR \-\- Frequently Asked Questions
index 0780dfd..0010d59 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-FOLDERS" "1" "February 2013" "" ""
+.TH "NPM\-FOLDERS" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-folders\fR \-\- Folder Structures Used by npm
index 0780dfd..0010d59 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-FOLDERS" "1" "February 2013" "" ""
+.TH "NPM\-FOLDERS" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-folders\fR \-\- Folder Structures Used by npm
index 2cd9869..398ab69 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-HELP\-SEARCH" "1" "February 2013" "" ""
+.TH "NPM\-HELP\-SEARCH" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-help-search\fR \-\- Search npm help documentation
index 81bd96a..bf1ecf3 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-HELP" "1" "February 2013" "" ""
+.TH "NPM\-HELP" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-help\fR \-\- Get help on npm
index ed6f1d9..c1c5012 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-INDEX" "1" "February 2013" "" ""
+.TH "NPM\-INDEX" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-index\fR \-\- Index of all npm documentation
index 2019f80..3cf5b99 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-INIT" "1" "February 2013" "" ""
+.TH "NPM\-INIT" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-init\fR \-\- Interactively create a package\.json file
index 248f301..67d7a61 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-INSTALL" "1" "February 2013" "" ""
+.TH "NPM\-INSTALL" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-install\fR \-\- Install a package
index 4e0a24a..3a79167 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-JSON" "1" "February 2013" "" ""
+.TH "NPM\-JSON" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-json\fR \-\- Specifics of npm\'s package\.json handling
index 597611b..a497cd1 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-LINK" "1" "February 2013" "" ""
+.TH "NPM\-LINK" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-link\fR \-\- Symlink a package folder
index fadb701..557aa5a 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-LS" "1" "February 2013" "" ""
+.TH "NPM\-LS" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-ls\fR \-\- List installed packages
@@ -29,7 +29,7 @@ For example, running \fBnpm ls promzard\fR in npm\'s source tree will show:
 .IP "" 4
 .
 .nf
-npm@1.2.11 /path/to/npm
+npm@1.2.14 /path/to/npm
 â””─┬ init\-package\-json@0\.0\.4
   â””── promzard@0\.1\.5
 .
index b0bc36d..e7871ea 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM" "1" "February 2013" "" ""
+.TH "NPM" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm\fR \-\- node package manager
@@ -14,7 +14,7 @@ npm <command> [args]
 .fi
 .
 .SH "VERSION"
-1.2.11
+1.2.14
 .
 .SH "DESCRIPTION"
 npm is the package manager for the Node JavaScript platform\.  It puts
index e39d5fb..e323838 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-OUTDATED" "1" "February 2013" "" ""
+.TH "NPM\-OUTDATED" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-outdated\fR \-\- Check for outdated packages
index 8e7ec69..6d2c48b 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-OWNER" "1" "February 2013" "" ""
+.TH "NPM\-OWNER" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-owner\fR \-\- Manage package owners
index 548a91f..5b9d50c 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-PACK" "1" "February 2013" "" ""
+.TH "NPM\-PACK" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-pack\fR \-\- Create a tarball from a package
index 1f7504a..899102b 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-PREFIX" "1" "February 2013" "" ""
+.TH "NPM\-PREFIX" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-prefix\fR \-\- Display prefix
index 0af35f9..ff1db26 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-PRUNE" "1" "February 2013" "" ""
+.TH "NPM\-PRUNE" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-prune\fR \-\- Remove extraneous packages
index e34b091..418664e 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-PUBLISH" "1" "February 2013" "" ""
+.TH "NPM\-PUBLISH" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-publish\fR \-\- Publish a package
index 0c62ec4..cbb5a7b 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-REBUILD" "1" "February 2013" "" ""
+.TH "NPM\-REBUILD" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-rebuild\fR \-\- Rebuild a package
index 678f06d..6335342 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-REGISTRY" "1" "February 2013" "" ""
+.TH "NPM\-REGISTRY" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-registry\fR \-\- The JavaScript Package Registry
index ed06f6a..ca23ef6 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-REMOVAL" "1" "February 2013" "" ""
+.TH "NPM\-REMOVAL" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-removal\fR \-\- Cleaning the Slate
index 8676312..1c8980e 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-RESTART" "1" "February 2013" "" ""
+.TH "NPM\-RESTART" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-restart\fR \-\- Start a package
index 14006f6..7bfd5f3 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-RM" "1" "February 2013" "" ""
+.TH "NPM\-RM" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-rm\fR \-\- Remove a package
index 68fe89f..d181d93 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-ROOT" "1" "February 2013" "" ""
+.TH "NPM\-ROOT" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-root\fR \-\- Display npm root
index 84a23f1..00f1194 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-RUN\-SCRIPT" "1" "February 2013" "" ""
+.TH "NPM\-RUN\-SCRIPT" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-run-script\fR \-\- Run arbitrary package scripts
index 60b36ca..3535935 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-SCRIPTS" "1" "February 2013" "" ""
+.TH "NPM\-SCRIPTS" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-scripts\fR \-\- How npm handles the "scripts" field
index 9817c84..a2d581d 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-SEARCH" "1" "February 2013" "" ""
+.TH "NPM\-SEARCH" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-search\fR \-\- Search for packages
index ab65fa0..3e4735e 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-SEMVER" "1" "February 2013" "" ""
+.TH "NPM\-SEMVER" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-semver\fR \-\- The semantic versioner for npm
index d767100..c989d38 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-SHRINKWRAP" "1" "February 2013" "" ""
+.TH "NPM\-SHRINKWRAP" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-shrinkwrap\fR \-\- Lock down dependency versions
index f8b1404..e7d12f7 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-STAR" "1" "February 2013" "" ""
+.TH "NPM\-STAR" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-star\fR \-\- Mark your favorite packages
index fe0095d..bd8b0e5 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-STARS" "1" "February 2013" "" ""
+.TH "NPM\-STARS" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-stars\fR \-\- View packages marked as favorites
index d86236c..c5fb51b 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-START" "1" "February 2013" "" ""
+.TH "NPM\-START" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-start\fR \-\- Start a package
index 642f0df..58e7c5e 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-STOP" "1" "February 2013" "" ""
+.TH "NPM\-STOP" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-stop\fR \-\- Stop a package
index 64e17d8..99f7098 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-SUBMODULE" "1" "February 2013" "" ""
+.TH "NPM\-SUBMODULE" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-submodule\fR \-\- Add a package as a git submodule
index 7c397d3..f408f27 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-TAG" "1" "February 2013" "" ""
+.TH "NPM\-TAG" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-tag\fR \-\- Tag a published version
index c32a714..00bd221 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-TEST" "1" "February 2013" "" ""
+.TH "NPM\-TEST" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-test\fR \-\- Test a package
index 14006f6..7bfd5f3 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-RM" "1" "February 2013" "" ""
+.TH "NPM\-RM" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-rm\fR \-\- Remove a package
index 3420d5e..a1f041f 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-UNPUBLISH" "1" "February 2013" "" ""
+.TH "NPM\-UNPUBLISH" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-unpublish\fR \-\- Remove a package from the registry
index e935863..95d2966 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-UPDATE" "1" "February 2013" "" ""
+.TH "NPM\-UPDATE" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-update\fR \-\- Update a package
index 85dd384..c141e3c 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-VERSION" "1" "February 2013" "" ""
+.TH "NPM\-VERSION" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-version\fR \-\- Bump a package version
index 2da98f4..347f6c1 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-VIEW" "1" "February 2013" "" ""
+.TH "NPM\-VIEW" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-view\fR \-\- View registry info
index d68996a..8d80d79 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-WHOAMI" "1" "February 2013" "" ""
+.TH "NPM\-WHOAMI" "1" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-whoami\fR \-\- Display npm username
index 62ea4f7..67b4ec0 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-BIN" "3" "February 2013" "" ""
+.TH "NPM\-BIN" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-bin\fR \-\- Display npm bin folder
index 7cd6ecd..b8b8a70 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-BUGS" "3" "February 2013" "" ""
+.TH "NPM\-BUGS" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-bugs\fR \-\- Bugs for a package in a web browser maybe
index 58fd72e..d448c48 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-COMMANDS" "3" "February 2013" "" ""
+.TH "NPM\-COMMANDS" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-commands\fR \-\- npm commands
index 71ab767..069337f 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-CONFIG" "3" "February 2013" "" ""
+.TH "NPM\-CONFIG" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-config\fR \-\- Manage the npm configuration files
index fa9bc86..a767fd9 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-DEPRECATE" "3" "February 2013" "" ""
+.TH "NPM\-DEPRECATE" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-deprecate\fR \-\- Deprecate a version of a package
index 7192761..480f7c0 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-DOCS" "3" "February 2013" "" ""
+.TH "NPM\-DOCS" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-docs\fR \-\- Docs for a package in a web browser maybe
index e5d416b..2f741cb 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-EDIT" "3" "February 2013" "" ""
+.TH "NPM\-EDIT" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-edit\fR \-\- Edit an installed package
index fb9a3ec..4297400 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-EXPLORE" "3" "February 2013" "" ""
+.TH "NPM\-EXPLORE" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-explore\fR \-\- Browse an installed package
index fcee327..2735d11 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-HELP\-SEARCH" "3" "February 2013" "" ""
+.TH "NPM\-HELP\-SEARCH" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-help-search\fR \-\- Search the help pages
index 577a8c4..bd7f34e 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "INIT" "3" "February 2013" "" ""
+.TH "INIT" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBinit\fR \-\- Interactively create a package\.json file
index 3e064e5..0415b6c 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-INSTALL" "3" "February 2013" "" ""
+.TH "NPM\-INSTALL" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-install\fR \-\- install a package programmatically
index 77a1950..8b0dadb 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-LINK" "3" "February 2013" "" ""
+.TH "NPM\-LINK" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-link\fR \-\- Symlink a package folder
index 0df78c7..f11157c 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-LOAD" "3" "February 2013" "" ""
+.TH "NPM\-LOAD" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-load\fR \-\- Load config settings
index 58f6ee8..494c2f2 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-LS" "3" "February 2013" "" ""
+.TH "NPM\-LS" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-ls\fR \-\- List installed packages
index 06d0090..ca908fd 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM" "3" "February 2013" "" ""
+.TH "NPM" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm\fR \-\- node package manager
@@ -21,7 +21,7 @@ npm\.load([configObject,] function (er, npm) {
 .fi
 .
 .SH "VERSION"
-1.2.11
+1.2.14
 .
 .SH "DESCRIPTION"
 This is the API documentation for npm\.
index 47dc1a4..31214a0 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-OUTDATED" "3" "February 2013" "" ""
+.TH "NPM\-OUTDATED" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-outdated\fR \-\- Check for outdated packages
index 4b93094..a9b44fe 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-OWNER" "3" "February 2013" "" ""
+.TH "NPM\-OWNER" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-owner\fR \-\- Manage package owners
index 775fcfc..91e7550 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-PACK" "3" "February 2013" "" ""
+.TH "NPM\-PACK" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-pack\fR \-\- Create a tarball from a package
index 2d25b5e..f586d80 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-PREFIX" "3" "February 2013" "" ""
+.TH "NPM\-PREFIX" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-prefix\fR \-\- Display prefix
index 72f335c..21b6e21 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-PRUNE" "3" "February 2013" "" ""
+.TH "NPM\-PRUNE" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-prune\fR \-\- Remove extraneous packages
index 4bf2fd0..d67f1bc 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-PUBLISH" "3" "February 2013" "" ""
+.TH "NPM\-PUBLISH" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-publish\fR \-\- Publish a package
index 97b5d97..f9325db 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-REBUILD" "3" "February 2013" "" ""
+.TH "NPM\-REBUILD" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-rebuild\fR \-\- Rebuild a package
index f11867d..c08bc29 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-RESTART" "3" "February 2013" "" ""
+.TH "NPM\-RESTART" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-restart\fR \-\- Start a package
index 741484a..b53cb1c 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-ROOT" "3" "February 2013" "" ""
+.TH "NPM\-ROOT" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-root\fR \-\- Display npm root
index 3a9fb15..be8a488 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-RUN\-SCRIPT" "3" "February 2013" "" ""
+.TH "NPM\-RUN\-SCRIPT" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-run-script\fR \-\- Run arbitrary package scripts
index 07dd8d6..1dcaea9 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-SEARCH" "3" "February 2013" "" ""
+.TH "NPM\-SEARCH" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-search\fR \-\- Search for packages
index ea70223..0c63865 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-SHRINKWRAP" "3" "February 2013" "" ""
+.TH "NPM\-SHRINKWRAP" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-shrinkwrap\fR \-\- programmatically generate package shrinkwrap file
index 63504a5..df46be0 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-START" "3" "February 2013" "" ""
+.TH "NPM\-START" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-start\fR \-\- Start a package
index 11bdc11..3c594cf 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-STOP" "3" "February 2013" "" ""
+.TH "NPM\-STOP" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-stop\fR \-\- Stop a package
index ef4afc4..4035d50 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-SUBMODULE" "3" "February 2013" "" ""
+.TH "NPM\-SUBMODULE" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-submodule\fR \-\- Add a package as a git submodule
index 7425ffe..0fcbd0a 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-TAG" "3" "February 2013" "" ""
+.TH "NPM\-TAG" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-tag\fR \-\- Tag a published version
index 79e0ae8..adcdfa9 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-TEST" "3" "February 2013" "" ""
+.TH "NPM\-TEST" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-test\fR \-\- Test a package
index 119d61c..94ffc67 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-UNINSTALL" "3" "February 2013" "" ""
+.TH "NPM\-UNINSTALL" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-uninstall\fR \-\- uninstall a package programmatically
index a6ba030..2549df5 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-UNPUBLISH" "3" "February 2013" "" ""
+.TH "NPM\-UNPUBLISH" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-unpublish\fR \-\- Remove a package from the registry
index 063c634..3089d62 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-UPDATE" "3" "February 2013" "" ""
+.TH "NPM\-UPDATE" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-update\fR \-\- Update a package
index c7b80ae..64720be 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-VERSION" "3" "February 2013" "" ""
+.TH "NPM\-VERSION" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-version\fR \-\- Bump a package version
index 384c524..ca55923 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-VIEW" "3" "February 2013" "" ""
+.TH "NPM\-VIEW" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-view\fR \-\- View registry info
index 4bb5b33..dd682cd 100644 (file)
@@ -1,7 +1,7 @@
 .\" Generated with Ronnjs 0.3.8
 .\" http://github.com/kapouer/ronnjs/
 .
-.TH "NPM\-WHOAMI" "3" "February 2013" "" ""
+.TH "NPM\-WHOAMI" "3" "March 2013" "" ""
 .
 .SH "NAME"
 \fBnpm-whoami\fR \-\- Display npm username
diff --git a/deps/npm/node_modules/chmodr/LICENSE b/deps/npm/node_modules/chmodr/LICENSE
new file mode 100644 (file)
index 0000000..0c44ae7
--- /dev/null
@@ -0,0 +1,27 @@
+Copyright (c) Isaac Z. Schlueter ("Author")
+All rights reserved.
+
+The BSD License
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/deps/npm/node_modules/chmodr/README.md b/deps/npm/node_modules/chmodr/README.md
new file mode 100644 (file)
index 0000000..e3e9313
--- /dev/null
@@ -0,0 +1,3 @@
+Like `chmod -R`.
+
+Takes the same arguments as `fs.chmod()`
diff --git a/deps/npm/node_modules/chmodr/chmodr.js b/deps/npm/node_modules/chmodr/chmodr.js
new file mode 100644 (file)
index 0000000..9edaa7f
--- /dev/null
@@ -0,0 +1,54 @@
+module.exports = chmodr
+chmodr.sync = chmodrSync
+
+var fs = require("fs")
+, path = require("path")
+
+function chmodr (p, mode, cb) {
+  fs.readdir(p, function (er, children) {
+    // any error other than ENOTDIR means it's not readable, or
+    // doesn't exist.  give up.
+    if (er && er.code !== "ENOTDIR")
+      return cb(er)
+    var isDir = !er
+    var m = isDir ? dirMode(mode) : mode
+    if (er || !children.length)
+      return fs.chmod(p, m, cb)
+
+    var len = children.length
+    var errState = null
+    children.forEach(function (child) {
+      chmodr(path.resolve(p, child), mode, then)
+    })
+    function then (er) {
+      if (errState) return
+      if (er) return cb(errState = er)
+      if (-- len === 0) return fs.chmod(p, dirMode(mode), cb)
+    }
+  })
+}
+
+function chmodrSync (p, mode) {
+  var children
+  try {
+    children = fs.readdirSync(p)
+  } catch (er) {
+    if (er && er.code === "ENOTDIR") return fs.chmodSync(p, mode)
+    throw er
+  }
+  if (!children.length) return fs.chmodSync(p, dirMode(mode))
+
+  children.forEach(function (child) {
+    chmodrSync(path.resolve(p, child), mode)
+  })
+  return fs.chmodSync(p, dirMode(mode))
+}
+
+// If a party has r, add x
+// so that dirs are listable
+function dirMode(mode) {
+  if (mode & 0400) mode |= 0100
+  if (mode & 040) mode |= 010
+  if (mode & 04) mode |= 01
+  return mode
+}
diff --git a/deps/npm/node_modules/chmodr/package.json b/deps/npm/node_modules/chmodr/package.json
new file mode 100644 (file)
index 0000000..67334ae
--- /dev/null
@@ -0,0 +1,28 @@
+{
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "name": "chmodr",
+  "description": "like `chmod -R`",
+  "version": "0.1.0",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/chmodr.git"
+  },
+  "main": "chmodr.js",
+  "devDependencies": {
+    "tap": "0.2",
+    "mkdirp": "0.3",
+    "rimraf": ""
+  },
+  "scripts": {
+    "test": "tap test/*.js"
+  },
+  "license": "BSD",
+  "readme": "Like `chmod -R`.\n\nTakes the same arguments as `fs.chmod()`\n",
+  "readmeFilename": "README.md",
+  "_id": "chmodr@0.1.0",
+  "_from": "chmodr@latest"
+}
diff --git a/deps/npm/node_modules/chmodr/test/basic.js b/deps/npm/node_modules/chmodr/test/basic.js
new file mode 100644 (file)
index 0000000..aba1cd3
--- /dev/null
@@ -0,0 +1,63 @@
+var chmodr = require("../")
+, test = require("tap").test
+, mkdirp = require("mkdirp")
+, rimraf = require("rimraf")
+, fs = require("fs")
+, dirs = []
+
+rimraf("/tmp/chmodr", function (er) {
+  if (er) throw er
+  var cnt = 5
+  for (var i = 0; i < 5; i ++) {
+    mkdirp(getDir(), then)
+  }
+  function then (er) {
+    if (er) throw er
+    if (-- cnt === 0) {
+      runTest()
+    }
+  }
+})
+
+function getDir () {
+  var dir = "/tmp/chmodr"
+
+  dir += "/" + Math.floor(Math.random() * Math.pow(16,4)).toString(16)
+  dirs.push(dir)
+  dir += "/" + Math.floor(Math.random() * Math.pow(16,4)).toString(16)
+  dirs.push(dir)
+  dir += "/" + Math.floor(Math.random() * Math.pow(16,4)).toString(16)
+  dirs.push(dir)
+  return dir
+}
+
+function runTest () {
+  test("should complete successfully", function (t) {
+    console.error("calling chmodr 0700")
+    chmodr("/tmp/chmodr", 0700, function (er) {
+      t.ifError(er)
+      t.end()
+    })
+  })
+
+  dirs.forEach(function (dir) {
+    test("verify "+dir, function (t) {
+      fs.stat(dir, function (er, st) {
+        if (er) {
+          t.ifError(er)
+          return t.end()
+        }
+        t.equal(st.mode & 0777, 0700, "mode should be 0700")
+        t.end()
+      })
+    })
+  })
+
+  test("cleanup", function (t) {
+    rimraf("/tmp/chmodr/", function (er) {
+      t.ifError(er)
+      t.end()
+    })
+  })
+}
+
diff --git a/deps/npm/node_modules/chmodr/test/sync.js b/deps/npm/node_modules/chmodr/test/sync.js
new file mode 100644 (file)
index 0000000..71f90cd
--- /dev/null
@@ -0,0 +1,58 @@
+var chmodr = require("../")
+, test = require("tap").test
+, mkdirp = require("mkdirp")
+, rimraf = require("rimraf")
+, fs = require("fs")
+, dirs = []
+
+rimraf("/tmp/chmodr", function (er) {
+  if (er) throw er
+  var cnt = 5
+  for (var i = 0; i < 5; i ++) {
+    mkdirp(getDir(), then)
+  }
+  function then (er) {
+    if (er) throw er
+    if (-- cnt === 0) {
+      runTest()
+    }
+  }
+})
+
+function getDir () {
+  var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+  var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+  var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+  var dir = "/tmp/chmodr/" + [x,y,z].join("/")
+  dirs.push(dir)
+  return dir
+}
+
+function runTest () {
+  test("should complete successfully", function (t) {
+    console.error("calling chmodr 0700")
+    chmodr.sync("/tmp/chmodr", 0700)
+    t.end()
+  })
+
+  dirs.forEach(function (dir) {
+    test("verify "+dir, function (t) {
+      fs.stat(dir, function (er, st) {
+        if (er) {
+          t.ifError(er)
+          return t.end()
+        }
+        t.equal(st.mode & 0777, 0700, "uid should be 0700")
+        t.end()
+      })
+    })
+  })
+
+  test("cleanup", function (t) {
+    rimraf("/tmp/chmodr", function (er) {
+      t.ifError(er)
+      t.end()
+    })
+  })
+}
+
index c4b0d3b..2322fff 100644 (file)
@@ -6,7 +6,7 @@
   },
   "name": "glob",
   "description": "a little globber",
-  "version": "3.1.20",
+  "version": "3.1.21",
   "repository": {
     "type": "git",
     "url": "git://github.com/isaacs/node-glob.git"
@@ -16,7 +16,7 @@
     "node": "*"
   },
   "dependencies": {
-    "minimatch": "0.2",
+    "minimatch": "~0.2.11",
     "graceful-fs": "~1.2.0",
     "inherits": "1"
   },
   "license": "BSD",
   "readme": "# Glob\n\nThis is a glob implementation in JavaScript.  It uses the `minimatch`\nlibrary to do its matching.\n\n## Attention: node-glob users!\n\nThe API has changed dramatically between 2.x and 3.x. This library is\nnow 100% JavaScript, and the integer flags have been replaced with an\noptions object.\n\nAlso, there's an event emitter class, proper tests, and all the other\nthings you've come to expect from node modules.\n\nAnd best of all, no compilation!\n\n## Usage\n\n```javascript\nvar glob = require(\"glob\")\n\n// options is optional\nglob(\"**/*.js\", options, function (er, files) {\n  // files is an array of filenames.\n  // If the `nonull` option is set, and nothing\n  // was found, then files is [\"**/*.js\"]\n  // er is an error object or null.\n})\n```\n\n## Features\n\nPlease see the [minimatch\ndocumentation](https://github.com/isaacs/minimatch) for more details.\n\nSupports these glob features:\n\n* Brace Expansion\n* Extended glob matching\n* \"Globstar\" `**` matching\n\nSee:\n\n* `man sh`\n* `man bash`\n* `man 3 fnmatch`\n* `man 5 gitignore`\n* [minimatch documentation](https://github.com/isaacs/minimatch)\n\n## glob(pattern, [options], cb)\n\n* `pattern` {String} Pattern to be matched\n* `options` {Object}\n* `cb` {Function}\n  * `err` {Error | null}\n  * `matches` {Array<String>} filenames found matching the pattern\n\nPerform an asynchronous glob search.\n\n## glob.sync(pattern, [options]\n\n* `pattern` {String} Pattern to be matched\n* `options` {Object}\n* return: {Array<String>} filenames found matching the pattern\n\nPerform a synchronous glob search.\n\n## Class: glob.Glob\n\nCreate a Glob object by instanting the `glob.Glob` class.\n\n```javascript\nvar Glob = require(\"glob\").Glob\nvar mg = new Glob(pattern, options, cb)\n```\n\nIt's an EventEmitter, and starts walking the filesystem to find matches\nimmediately.\n\n### new glob.Glob(pattern, [options], [cb])\n\n* `pattern` {String} pattern to search for\n* `options` {Object}\n* `cb` {Function} Called when an error occurs, or matches are found\n  * `err` {Error | null}\n  * `matches` {Array<String>} filenames found matching the pattern\n\nNote that if the `sync` flag is set in the options, then matches will\nbe immediately available on the `g.found` member.\n\n### Properties\n\n* `minimatch` The minimatch object that the glob uses.\n* `options` The options object passed in.\n* `error` The error encountered.  When an error is encountered, the\n  glob object is in an undefined state, and should be discarded.\n* `aborted` Boolean which is set to true when calling `abort()`.  There\n  is no way at this time to continue a glob search after aborting, but\n  you can re-use the statCache to avoid having to duplicate syscalls.\n\n### Events\n\n* `end` When the matching is finished, this is emitted with all the\n  matches found.  If the `nonull` option is set, and no match was found,\n  then the `matches` list contains the original pattern.  The matches\n  are sorted, unless the `nosort` flag is set.\n* `match` Every time a match is found, this is emitted with the matched.\n* `error` Emitted when an unexpected error is encountered, or whenever\n  any fs error occurs if `options.strict` is set.\n* `abort` When `abort()` is called, this event is raised.\n\n### Methods\n\n* `abort` Stop the search.\n\n### Options\n\nAll the options that can be passed to Minimatch can also be passed to\nGlob to change pattern matching behavior.  Also, some have been added,\nor have glob-specific ramifications.\n\nAll options are false by default, unless otherwise noted.\n\nAll options are added to the glob object, as well.\n\n* `cwd` The current working directory in which to search.  Defaults\n  to `process.cwd()`.\n* `root` The place where patterns starting with `/` will be mounted\n  onto.  Defaults to `path.resolve(options.cwd, \"/\")` (`/` on Unix\n  systems, and `C:\\` or some such on Windows.)\n* `nomount` By default, a pattern starting with a forward-slash will be\n  \"mounted\" onto the root setting, so that a valid filesystem path is\n  returned.  Set this flag to disable that behavior.\n* `mark` Add a `/` character to directory matches.  Note that this\n  requires additional stat calls.\n* `nosort` Don't sort the results.\n* `stat` Set to true to stat *all* results.  This reduces performance\n  somewhat, and is completely unnecessary, unless `readdir` is presumed\n  to be an untrustworthy indicator of file existence.  It will cause\n  ELOOP to be triggered one level sooner in the case of cyclical\n  symbolic links.\n* `silent` When an unusual error is encountered\n  when attempting to read a directory, a warning will be printed to\n  stderr.  Set the `silent` option to true to suppress these warnings.\n* `strict` When an unusual error is encountered\n  when attempting to read a directory, the process will just continue on\n  in search of other matches.  Set the `strict` option to raise an error\n  in these cases.\n* `statCache` A cache of results of filesystem information, to prevent\n  unnecessary stat calls.  While it should not normally be necessary to\n  set this, you may pass the statCache from one glob() call to the\n  options object of another, if you know that the filesystem will not\n  change between calls.  (See \"Race Conditions\" below.)\n* `sync` Perform a synchronous glob search.\n* `nounique` In some cases, brace-expanded patterns can result in the\n  same file showing up multiple times in the result set.  By default,\n  this implementation prevents duplicates in the result set.\n  Set this flag to disable that behavior.\n* `nonull` Set to never return an empty set, instead returning a set\n  containing the pattern itself.  This is the default in glob(3).\n* `nocase` Perform a case-insensitive match.  Note that case-insensitive\n  filesystems will sometimes result in glob returning results that are\n  case-insensitively matched anyway, since readdir and stat will not\n  raise an error.\n* `debug` Set to enable debug logging in minimatch and glob.\n* `globDebug` Set to enable debug logging in glob, but not minimatch.\n\n## Comparisons to other fnmatch/glob implementations\n\nWhile strict compliance with the existing standards is a worthwhile\ngoal, some discrepancies exist between node-glob and other\nimplementations, and are intentional.\n\nIf the pattern starts with a `!` character, then it is negated.  Set the\n`nonegate` flag to suppress this behavior, and treat leading `!`\ncharacters normally.  This is perhaps relevant if you wish to start the\npattern with a negative extglob pattern like `!(a|B)`.  Multiple `!`\ncharacters at the start of a pattern will negate the pattern multiple\ntimes.\n\nIf a pattern starts with `#`, then it is treated as a comment, and\nwill not match anything.  Use `\\#` to match a literal `#` at the\nstart of a line, or set the `nocomment` flag to suppress this behavior.\n\nThe double-star character `**` is supported by default, unless the\n`noglobstar` flag is set.  This is supported in the manner of bsdglob\nand bash 4.1, where `**` only has special significance if it is the only\nthing in a path part.  That is, `a/**/b` will match `a/x/y/b`, but\n`a/**b` will not.  **Note that this is different from the way that `**` is\nhandled by ruby's `Dir` class.**\n\nIf an escaped pattern has no matches, and the `nonull` flag is set,\nthen glob returns the pattern as-provided, rather than\ninterpreting the character escapes.  For example,\n`glob.match([], \"\\\\*a\\\\?\")` will return `\"\\\\*a\\\\?\"` rather than\n`\"*a?\"`.  This is akin to setting the `nullglob` option in bash, except\nthat it does not resolve escaped pattern characters.\n\nIf brace expansion is not disabled, then it is performed before any\nother interpretation of the glob pattern.  Thus, a pattern like\n`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded\n**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are\nchecked for validity.  Since those two are valid, matching proceeds.\n\n## Windows\n\n**Please only use forward-slashes in glob expressions.**\n\nThough windows uses either `/` or `\\` as its path separator, only `/`\ncharacters are used by this glob implementation.  You must use\nforward-slashes **only** in glob expressions.  Back-slashes will always\nbe interpreted as escape characters, not path separators.\n\nResults from absolute patterns such as `/foo/*` are mounted onto the\nroot setting using `path.join`.  On windows, this will by default result\nin `/foo/*` matching `C:\\foo\\bar.txt`.\n\n## Race Conditions\n\nGlob searching, by its very nature, is susceptible to race conditions,\nsince it relies on directory walking and such.\n\nAs a result, it is possible that a file that exists when glob looks for\nit may have been deleted or modified by the time it returns the result.\n\nAs part of its internal implementation, this program caches all stat\nand readdir calls that it makes, in order to cut down on system\noverhead.  However, this also makes it even more susceptible to races,\nespecially if the statCache object is reused between glob calls.\n\nUsers are thus advised not to use a glob result as a\nguarantee of filesystem state in the face of rapid changes.\nFor the vast majority of operations, this is never a problem.\n",
   "readmeFilename": "README.md",
-  "_id": "glob@3.1.20",
-  "dist": {
-    "shasum": "aeaba910c176cd1c90e200eefe4bb66f5b3763e7"
-  },
-  "_from": "glob@latest",
-  "_resolved": "https://registry.npmjs.org/glob/-/glob-3.1.20.tgz"
+  "_id": "glob@3.1.21",
+  "_from": "glob@latest"
 }
index 8c341db..c227449 100644 (file)
     "./test/bash-results.json",
     "./test/cwd-test.js",
     "./test/mark.js",
+    "./test/nocase-nomagic.js",
     "./test/pause-resume.js",
     "./test/root-nomount.js",
     "./test/root.js",
diff --git a/deps/npm/node_modules/glob/test/nocase-nomagic.js b/deps/npm/node_modules/glob/test/nocase-nomagic.js
new file mode 100644 (file)
index 0000000..d862970
--- /dev/null
@@ -0,0 +1,113 @@
+var fs = require('graceful-fs');
+var test = require('tap').test;
+var glob = require('../');
+
+test('mock fs', function(t) {
+  var stat = fs.stat
+  var statSync = fs.statSync
+  var readdir = fs.readdir
+  var readdirSync = fs.readdirSync
+
+  function fakeStat(path) {
+    var ret
+    switch (path.toLowerCase()) {
+      case '/tmp': case '/tmp/':
+        ret = { isDirectory: function() { return true } }
+        break
+      case '/tmp/a':
+        ret = { isDirectory: function() { return false } }
+        break
+    }
+    return ret
+  }
+
+  fs.stat = function(path, cb) {
+    var f = fakeStat(path);
+    if (f) {
+      process.nextTick(function() {
+        cb(null, f)
+      })
+    } else {
+      stat.call(fs, path, cb)
+    }
+  }
+
+  fs.statSync = function(path) {
+    return fakeStat(path) || statSync.call(fs, path)
+  }
+
+  function fakeReaddir(path) {
+    var ret
+    switch (path.toLowerCase()) {
+      case '/tmp': case '/tmp/':
+        ret = [ 'a', 'A' ]
+        break
+      case '/':
+        ret = ['tmp', 'tMp', 'tMP', 'TMP']
+    }
+    return ret
+  }
+
+  fs.readdir = function(path, cb) {
+    var f = fakeReaddir(path)
+    if (f)
+      process.nextTick(function() {
+        cb(null, f)
+      })
+    else
+      readdir.call(fs, path, cb)
+  }
+
+  fs.readdirSync = function(path) {
+    return fakeReaddir(path) || readdirSync.call(fs, path)
+  }
+
+  t.pass('mocked')
+  t.end()
+})
+
+test('nocase, nomagic', function(t) {
+  var n = 2
+  var want = [ '/TMP/A',
+               '/TMP/a',
+               '/tMP/A',
+               '/tMP/a',
+               '/tMp/A',
+               '/tMp/a',
+               '/tmp/A',
+               '/tmp/a' ]
+  glob('/tmp/a', { nocase: true }, function(er, res) {
+    if (er)
+      throw er
+    t.same(res.sort(), want)
+    if (--n === 0) t.end()
+  })
+  glob('/tmp/A', { nocase: true }, function(er, res) {
+    if (er)
+      throw er
+    t.same(res.sort(), want)
+    if (--n === 0) t.end()
+  })
+})
+
+test('nocase, with some magic', function(t) {
+  t.plan(2)
+  var want = [ '/TMP/A',
+               '/TMP/a',
+               '/tMP/A',
+               '/tMP/a',
+               '/tMp/A',
+               '/tMp/a',
+               '/tmp/A',
+               '/tmp/a' ]
+  glob('/tmp/*', { nocase: true }, function(er, res) {
+    if (er)
+      throw er
+    t.same(res.sort(), want)
+  })
+  glob('/tmp/*', { nocase: true }, function(er, res) {
+    if (er)
+      throw er
+    t.same(res.sort(), want)
+  })
+})
index 8ea0dd9..ac48e49 100644 (file)
@@ -44,3 +44,44 @@ away.
   actually removing the item from the internal cache, so if you want
   to immediately put it back in, you'll have to do that in a
   `nextTick` or `setTimeout` callback or it won't do anything.
+* `stale` By default, if you set a `maxAge`, it'll only actually pull
+  stale items out of the cache when you `get(key)`.  (That is, it's
+  not pre-emptively doing a `setTimeout` or anything.)  If you set
+  `stale:true`, it'll return the stale value before deleting it.  If
+  you don't set this, then it'll return `undefined` when you try to
+  get a stale entry, as if it had already been deleted.
+
+## API
+
+* `set(key, value)`
+* `get(key) => value`
+
+    Both of these will update the "recently used"-ness of the key.
+    They do what you think.
+
+* `del(key)`
+
+    Deletes a key out of the cache.
+
+* `reset()`
+
+    Clear the cache entirely, throwing away all values.
+
+* `has(key)`
+
+    Check if a key is in the cache, without updating the recent-ness
+    or deleting it for being stale.
+
+* `forEach(function(value,key,cache), [thisp])`
+
+    Just like `Array.prototype.forEach`.  Iterates over all the keys
+    in the cache, in order of recent-ness.  (Ie, more recently used
+    items are iterated over first.)
+
+* `keys()`
+
+    Return an array of the keys in the cache.
+
+* `values()`
+
+    Return an array of the values in the cache.
index 4bec3e2..b8fd860 100644 (file)
@@ -23,20 +23,24 @@ function LRUCache (options) {
     max = options
     options = { max: max }
   }
-  max = options.max
 
   if (!options) options = {}
 
+  max = options.max
+
   var lengthCalculator = options.length || naiveLength
 
   if (typeof lengthCalculator !== "function") {
     lengthCalculator = naiveLength
   }
+
   if (!max || !(typeof max === "number") || max <= 0 ) {
     // a little bit silly.  maybe this should throw?
     max = Infinity
   }
 
+  var allowStale = options.stale || false
+
   var maxAge = options.maxAge || null
 
   var dispose = options.dispose
@@ -96,6 +100,36 @@ function LRUCache (options) {
     , enumerable : true
     })
 
+  this.forEach = function (fn, thisp) {
+    thisp = thisp || this
+    var i = 0;
+    for (var k = mru - 1; k >= 0 && i < itemCount; k--) if (lruList[k]) {
+      i++
+      var hit = lruList[k]
+      fn.call(thisp, hit.value, hit.key, this)
+    }
+  }
+
+  this.keys = function () {
+    var keys = new Array(itemCount)
+    var i = 0
+    for (var k = mru - 1; k >= 0 && i < itemCount; k--) if (lruList[k]) {
+      var hit = lruList[k]
+      keys[i++] = hit.key
+    }
+    return keys
+  }
+
+  this.values = function () {
+    var values = new Array(itemCount)
+    var i = 0
+    for (var k = mru - 1; k >= 0 && i < itemCount; k--) if (lruList[k]) {
+      var hit = lruList[k]
+      values[i++] = hit.value
+    }
+    return values
+  }
+
   this.reset = function () {
     if (dispose) {
       for (var k in cache) {
@@ -115,6 +149,10 @@ function LRUCache (options) {
     return cache
   }
 
+  this.dumpLru = function () {
+    return lruList
+  }
+
   this.set = function (key, value) {
     if (hOP(cache, key)) {
       // dispose of the old one before overwriting
@@ -143,12 +181,21 @@ function LRUCache (options) {
     return true
   }
 
+  this.has = function (key) {
+    if (!hOP(cache, key)) return false
+    var hit = cache[key]
+    if (maxAge && (Date.now() - hit.now > maxAge)) {
+      return false
+    }
+    return true
+  }
+
   this.get = function (key) {
     if (!hOP(cache, key)) return
     var hit = cache[key]
     if (maxAge && (Date.now() - hit.now > maxAge)) {
       this.del(key)
-      return
+      return allowStale ? hit.value : undefined
     }
     delete lruList[hit.lu]
     hit.lu = mru ++
@@ -173,6 +220,7 @@ function LRUCache (options) {
       var hit = lruList[k]
       if (dispose) dispose(hit.key, hit.value)
       length -= hit.length
+      itemCount --
       delete cache[ hit.key ]
       delete lruList[k]
     }
index d62dda3..b0ee3f9 100644 (file)
@@ -1,13 +1,13 @@
 {
   "name": "lru-cache",
   "description": "A cache object that deletes the least-recently-used items.",
-  "version": "2.0.4",
+  "version": "2.2.2",
   "author": {
     "name": "Isaac Z. Schlueter",
     "email": "i@izs.me"
   },
   "scripts": {
-    "test": "tap test"
+    "test": "tap test --gc"
   },
   "main": "lib/lru-cache.js",
   "repository": {
@@ -51,7 +51,8 @@
       "email": "jesse.dailey@gmail.com"
     }
   ],
-  "readme": "# lru cache\n\nA cache object that deletes the least-recently-used items.\n\n## Usage:\n\n```javascript\nvar LRU = require(\"lru-cache\")\n  , options = { max: 500\n              , length: function (n) { return n * 2 }\n              , dispose: function (key, n) { n.close() }\n              , maxAge: 1000 * 60 * 60 }\n  , cache = LRU(options)\n  , otherCache = LRU(50) // sets just the max size\n\ncache.set(\"key\", \"value\")\ncache.get(\"key\") // \"value\"\n\ncache.reset()    // empty the cache\n```\n\nIf you put more stuff in it, then items will fall out.\n\nIf you try to put an oversized thing in it, then it'll fall out right\naway.\n\n## Options\n\n* `max` The maximum number of items.  Not setting this is kind of\n  silly, since that's the whole purpose of this lib, but it defaults\n  to `Infinity`.\n* `maxAge` Maximum age in ms.  Items are not pro-actively pruned out\n  as they age, but if you try to get an item that is too old, it'll\n  drop it and return undefined instead of giving it to you.\n* `length` Function that is used to calculate the length of stored\n  items.  If you're storing strings or buffers, then you probably want\n  to do something like `function(n){return n.length}`.  The default is\n  `function(n){return 1}`, which is fine if you want to store `n`\n  like-sized things.\n* `dispose` Function that is called on items when they are dropped\n  from the cache.  This can be handy if you want to close file\n  descriptors or do other cleanup tasks when items are no longer\n  accessible.  Called with `key, value`.  It's called *before*\n  actually removing the item from the internal cache, so if you want\n  to immediately put it back in, you'll have to do that in a\n  `nextTick` or `setTimeout` callback or it won't do anything.\n",
-  "_id": "lru-cache@2.0.4",
-  "_from": "lru-cache@~2.0.0"
+  "readme": "# lru cache\n\nA cache object that deletes the least-recently-used items.\n\n## Usage:\n\n```javascript\nvar LRU = require(\"lru-cache\")\n  , options = { max: 500\n              , length: function (n) { return n * 2 }\n              , dispose: function (key, n) { n.close() }\n              , maxAge: 1000 * 60 * 60 }\n  , cache = LRU(options)\n  , otherCache = LRU(50) // sets just the max size\n\ncache.set(\"key\", \"value\")\ncache.get(\"key\") // \"value\"\n\ncache.reset()    // empty the cache\n```\n\nIf you put more stuff in it, then items will fall out.\n\nIf you try to put an oversized thing in it, then it'll fall out right\naway.\n\n## Options\n\n* `max` The maximum number of items.  Not setting this is kind of\n  silly, since that's the whole purpose of this lib, but it defaults\n  to `Infinity`.\n* `maxAge` Maximum age in ms.  Items are not pro-actively pruned out\n  as they age, but if you try to get an item that is too old, it'll\n  drop it and return undefined instead of giving it to you.\n* `length` Function that is used to calculate the length of stored\n  items.  If you're storing strings or buffers, then you probably want\n  to do something like `function(n){return n.length}`.  The default is\n  `function(n){return 1}`, which is fine if you want to store `n`\n  like-sized things.\n* `dispose` Function that is called on items when they are dropped\n  from the cache.  This can be handy if you want to close file\n  descriptors or do other cleanup tasks when items are no longer\n  accessible.  Called with `key, value`.  It's called *before*\n  actually removing the item from the internal cache, so if you want\n  to immediately put it back in, you'll have to do that in a\n  `nextTick` or `setTimeout` callback or it won't do anything.\n* `stale` By default, if you set a `maxAge`, it'll only actually pull\n  stale items out of the cache when you `get(key)`.  (That is, it's\n  not pre-emptively doing a `setTimeout` or anything.)  If you set\n  `stale:true`, it'll return the stale value before deleting it.  If\n  you don't set this, then it'll return `undefined` when you try to\n  get a stale entry, as if it had already been deleted.\n\n## API\n\n* `set(key, value)`\n* `get(key) => value`\n\n    Both of these will update the \"recently used\"-ness of the key.\n    They do what you think.\n\n* `del(key)`\n\n    Deletes a key out of the cache.\n\n* `reset()`\n\n    Clear the cache entirely, throwing away all values.\n\n* `has(key)`\n\n    Check if a key is in the cache, without updating the recent-ness\n    or deleting it for being stale.\n\n* `forEach(function(value,key,cache), [thisp])`\n\n    Just like `Array.prototype.forEach`.  Iterates over all the keys\n    in the cache, in order of recent-ness.  (Ie, more recently used\n    items are iterated over first.)\n\n* `keys()`\n\n    Return an array of the keys in the cache.\n\n* `values()`\n\n    Return an array of the values in the cache.\n",
+  "readmeFilename": "README.md",
+  "_id": "lru-cache@2.2.2",
+  "_from": "lru-cache@latest"
 }
index 4200272..dad13a8 100644 (file)
@@ -265,3 +265,37 @@ test("disposal function on too big of item", function(t) {
   t.equal(disposed, obj)
   t.end()
 })
+
+test("has()", function(t) {
+  var cache = new LRU({
+    max: 1,
+    maxAge: 10
+  })
+
+  cache.set('foo', 'bar')
+  t.equal(cache.has('foo'), true)
+  cache.set('blu', 'baz')
+  t.equal(cache.has('foo'), false)
+  t.equal(cache.has('blu'), true)
+  setTimeout(function() {
+    t.equal(cache.has('blu'), false)
+    t.end()
+  }, 15)
+})
+
+test("stale", function(t) {
+  var cache = new LRU({
+    maxAge: 10,
+    stale: true
+  })
+
+  cache.set('foo', 'bar')
+  t.equal(cache.get('foo'), 'bar')
+  t.equal(cache.has('foo'), true)
+  setTimeout(function() {
+    t.equal(cache.has('foo'), false)
+    t.equal(cache.get('foo'), 'bar')
+    t.equal(cache.get('foo'), undefined)
+    t.end()
+  }, 15)
+})
diff --git a/deps/npm/node_modules/lru-cache/test/foreach.js b/deps/npm/node_modules/lru-cache/test/foreach.js
new file mode 100644 (file)
index 0000000..eefb80d
--- /dev/null
@@ -0,0 +1,52 @@
+var test = require('tap').test
+var LRU = require('../')
+
+test('forEach', function (t) {
+  var l = new LRU(5)
+  for (var i = 0; i < 10; i ++) {
+    l.set(i.toString(), i.toString(2))
+  }
+
+  var i = 9
+  l.forEach(function (val, key, cache) {
+    t.equal(cache, l)
+    t.equal(key, i.toString())
+    t.equal(val, i.toString(2))
+    i -= 1
+  })
+
+  // get in order of most recently used
+  l.get(6)
+  l.get(8)
+
+  var order = [ 8, 6, 9, 7, 5 ]
+  var i = 0
+
+  l.forEach(function (val, key, cache) {
+    var j = order[i ++]
+    t.equal(cache, l)
+    t.equal(key, j.toString())
+    t.equal(val, j.toString(2))
+  })
+
+  t.end()
+})
+
+test('keys() and values()', function (t) {
+  var l = new LRU(5)
+  for (var i = 0; i < 10; i ++) {
+    l.set(i.toString(), i.toString(2))
+  }
+
+  t.similar(l.keys(), ['9', '8', '7', '6', '5'])
+  t.similar(l.values(), ['1001', '1000', '111', '110', '101'])
+
+  // get in order of most recently used
+  l.get(6)
+  l.get(8)
+
+  t.similar(l.keys(), ['8', '6', '9', '7', '5'])
+  t.similar(l.values(), ['1000', '110', '1001', '111', '101'])
+
+  t.end()
+})
diff --git a/deps/npm/node_modules/lru-cache/test/memory-leak.js b/deps/npm/node_modules/lru-cache/test/memory-leak.js
new file mode 100644 (file)
index 0000000..7af45b0
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/env node --expose_gc
+
+var weak = require('weak');
+var test = require('tap').test
+var LRU = require('../')
+var l = new LRU({ max: 10 })
+var refs = 0
+function X() {
+  refs ++
+  weak(this, deref)
+}
+
+function deref() {
+  refs --
+}
+
+test('no leaks', function (t) {
+  // fill up the cache
+  for (var i = 0; i < 100; i++) {
+    l.set(i, new X);
+    // throw some gets in there, too.
+    if (i % 2 === 0)
+      l.get(i / 2)
+  }
+
+  gc()
+
+  var start = process.memoryUsage()
+
+  // capture the memory
+  var startRefs = refs
+
+  // do it again, but more
+  for (var i = 0; i < 10000; i++) {
+    l.set(i, new X);
+    // throw some gets in there, too.
+    if (i % 2 === 0)
+      l.get(i / 2)
+  }
+
+  gc()
+
+  var end = process.memoryUsage()
+  t.equal(refs, startRefs, 'no leaky refs')
+
+  console.error('start: %j\n' +
+                'end:   %j', start, end);
+  t.pass();
+  t.end();
+})
index 5841be1..6f0096c 100644 (file)
@@ -481,7 +481,7 @@ function parse (pattern, isSub) {
   if (pattern === "") return ""
 
   var re = ""
-    , hasMagic = false
+    , hasMagic = !!options.nocase
     , escaping = false
     // ? => one single character
     , patternListStack = []
index f6a214e..017f60e 100644 (file)
@@ -6,7 +6,7 @@
   },
   "name": "minimatch",
   "description": "a glob matcher in javascript",
-  "version": "0.2.9",
+  "version": "0.2.11",
   "repository": {
     "type": "git",
     "url": "git://github.com/isaacs/minimatch.git"
@@ -19,7 +19,7 @@
     "node": "*"
   },
   "dependencies": {
-    "lru-cache": "~2.0.0",
+    "lru-cache": "2",
     "sigmund": "~1.0.0"
   },
   "devDependencies": {
@@ -31,6 +31,6 @@
   },
   "readme": "# minimatch\n\nA minimal matching utility.\n\n[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch)\n\n\nThis is the matching library used internally by npm.\n\nEventually, it will replace the C binding in node-glob.\n\nIt works by converting glob expressions into JavaScript `RegExp`\nobjects.\n\n## Usage\n\n```javascript\nvar minimatch = require(\"minimatch\")\n\nminimatch(\"bar.foo\", \"*.foo\") // true!\nminimatch(\"bar.foo\", \"*.bar\") // false!\n```\n\n## Features\n\nSupports these glob features:\n\n* Brace Expansion\n* Extended glob matching\n* \"Globstar\" `**` matching\n\nSee:\n\n* `man sh`\n* `man bash`\n* `man 3 fnmatch`\n* `man 5 gitignore`\n\n### Comparisons to other fnmatch/glob implementations\n\nWhile strict compliance with the existing standards is a worthwhile\ngoal, some discrepancies exist between minimatch and other\nimplementations, and are intentional.\n\nIf the pattern starts with a `!` character, then it is negated.  Set the\n`nonegate` flag to suppress this behavior, and treat leading `!`\ncharacters normally.  This is perhaps relevant if you wish to start the\npattern with a negative extglob pattern like `!(a|B)`.  Multiple `!`\ncharacters at the start of a pattern will negate the pattern multiple\ntimes.\n\nIf a pattern starts with `#`, then it is treated as a comment, and\nwill not match anything.  Use `\\#` to match a literal `#` at the\nstart of a line, or set the `nocomment` flag to suppress this behavior.\n\nThe double-star character `**` is supported by default, unless the\n`noglobstar` flag is set.  This is supported in the manner of bsdglob\nand bash 4.1, where `**` only has special significance if it is the only\nthing in a path part.  That is, `a/**/b` will match `a/x/y/b`, but\n`a/**b` will not.  **Note that this is different from the way that `**` is\nhandled by ruby's `Dir` class.**\n\nIf an escaped pattern has no matches, and the `nonull` flag is set,\nthen minimatch.match returns the pattern as-provided, rather than\ninterpreting the character escapes.  For example,\n`minimatch.match([], \"\\\\*a\\\\?\")` will return `\"\\\\*a\\\\?\"` rather than\n`\"*a?\"`.  This is akin to setting the `nullglob` option in bash, except\nthat it does not resolve escaped pattern characters.\n\nIf brace expansion is not disabled, then it is performed before any\nother interpretation of the glob pattern.  Thus, a pattern like\n`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded\n**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are\nchecked for validity.  Since those two are valid, matching proceeds.\n\n\n## Minimatch Class\n\nCreate a minimatch object by instanting the `minimatch.Minimatch` class.\n\n```javascript\nvar Minimatch = require(\"minimatch\").Minimatch\nvar mm = new Minimatch(pattern, options)\n```\n\n### Properties\n\n* `pattern` The original pattern the minimatch object represents.\n* `options` The options supplied to the constructor.\n* `set` A 2-dimensional array of regexp or string expressions.\n  Each row in the\n  array corresponds to a brace-expanded pattern.  Each item in the row\n  corresponds to a single path-part.  For example, the pattern\n  `{a,b/c}/d` would expand to a set of patterns like:\n\n        [ [ a, d ]\n        , [ b, c, d ] ]\n\n    If a portion of the pattern doesn't have any \"magic\" in it\n    (that is, it's something like `\"foo\"` rather than `fo*o?`), then it\n    will be left as a string rather than converted to a regular\n    expression.\n\n* `regexp` Created by the `makeRe` method.  A single regular expression\n  expressing the entire pattern.  This is useful in cases where you wish\n  to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled.\n* `negate` True if the pattern is negated.\n* `comment` True if the pattern is a comment.\n* `empty` True if the pattern is `\"\"`.\n\n### Methods\n\n* `makeRe` Generate the `regexp` member if necessary, and return it.\n  Will return `false` if the pattern is invalid.\n* `match(fname)` Return true if the filename matches the pattern, or\n  false otherwise.\n* `matchOne(fileArray, patternArray, partial)` Take a `/`-split\n  filename, and match it against a single row in the `regExpSet`.  This\n  method is mainly for internal use, but is exposed so that it can be\n  used by a glob-walker that needs to avoid excessive filesystem calls.\n\nAll other methods are internal, and will be called as necessary.\n\n## Functions\n\nThe top-level exported function has a `cache` property, which is an LRU\ncache set to store 100 items.  So, calling these methods repeatedly\nwith the same pattern and options will use the same Minimatch object,\nsaving the cost of parsing it multiple times.\n\n### minimatch(path, pattern, options)\n\nMain export.  Tests a path against the pattern using the options.\n\n```javascript\nvar isJS = minimatch(file, \"*.js\", { matchBase: true })\n```\n\n### minimatch.filter(pattern, options)\n\nReturns a function that tests its\nsupplied argument, suitable for use with `Array.filter`.  Example:\n\n```javascript\nvar javascripts = fileList.filter(minimatch.filter(\"*.js\", {matchBase: true}))\n```\n\n### minimatch.match(list, pattern, options)\n\nMatch against the list of\nfiles, in the style of fnmatch or glob.  If nothing is matched, and\noptions.nonull is set, then return a list containing the pattern itself.\n\n```javascript\nvar javascripts = minimatch.match(fileList, \"*.js\", {matchBase: true}))\n```\n\n### minimatch.makeRe(pattern, options)\n\nMake a regular expression object from the pattern.\n\n## Options\n\nAll options are `false` by default.\n\n### debug\n\nDump a ton of stuff to stderr.\n\n### nobrace\n\nDo not expand `{a,b}` and `{1..3}` brace sets.\n\n### noglobstar\n\nDisable `**` matching against multiple folder names.\n\n### dot\n\nAllow patterns to match filenames starting with a period, even if\nthe pattern does not explicitly have a period in that spot.\n\nNote that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot`\nis set.\n\n### noext\n\nDisable \"extglob\" style patterns like `+(a|b)`.\n\n### nocase\n\nPerform a case-insensitive match.\n\n### nonull\n\nWhen a match is not found by `minimatch.match`, return a list containing\nthe pattern itself.  When set, an empty list is returned if there are\nno matches.\n\n### matchBase\n\nIf set, then patterns without slashes will be matched\nagainst the basename of the path if it contains slashes.  For example,\n`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`.\n\n### nocomment\n\nSuppress the behavior of treating `#` at the start of a pattern as a\ncomment.\n\n### nonegate\n\nSuppress the behavior of treating a leading `!` character as negation.\n\n### flipNegate\n\nReturns from negate expressions the same as if they were not negated.\n(Ie, true on a hit, false on a miss.)\n",
   "readmeFilename": "README.md",
-  "_id": "minimatch@0.2.9",
-  "_from": "minimatch@~0.2.8"
+  "_id": "minimatch@0.2.11",
+  "_from": "minimatch@latest"
 }
index f1d0f13..84fd7ca 100644 (file)
@@ -1,4 +1,5 @@
 language: node_js
 node_js:
-  - 0.4
   - 0.6
+  - 0.8
+  - 0.9
index 40de04f..83b0216 100644 (file)
@@ -1,34 +1,37 @@
-mkdirp
-======
+# mkdirp
 
 Like `mkdir -p`, but in node.js!
 
 [![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)
 
-example
-=======
+# example
 
-pow.js
-------
-    var mkdirp = require('mkdirp');
+## pow.js
+
+```js
+var mkdirp = require('mkdirp');
     
-    mkdirp('/tmp/foo/bar/baz', function (err) {
-        if (err) console.error(err)
-        else console.log('pow!')
-    });
+mkdirp('/tmp/foo/bar/baz', function (err) {
+    if (err) console.error(err)
+    else console.log('pow!')
+});
+```
 
 Output
-    pow!
+
+```
+pow!
+```
 
 And now /tmp/foo/bar/baz exists, huzzah!
 
-methods
-=======
+# methods
 
+```js
 var mkdirp = require('mkdirp');
+```
 
-mkdirp(dir, mode, cb)
----------------------
+## mkdirp(dir, mode, cb)
 
 Create a new directory and any necessary subdirectories at `dir` with octal
 permission string `mode`.
@@ -38,8 +41,7 @@ If `mode` isn't specified, it defaults to `0777 & (~process.umask())`.
 `cb(err, made)` fires with the error or the first directory `made`
 that had to be created, if any.
 
-mkdirp.sync(dir, mode)
-----------------------
+## mkdirp.sync(dir, mode)
 
 Synchronously create a new directory and any necessary subdirectories at `dir`
 with octal permission string `mode`.
@@ -48,14 +50,14 @@ If `mode` isn't specified, it defaults to `0777 & (~process.umask())`.
 
 Returns the first directory that had to be created, if any.
 
-install
-=======
+# install
 
 With [npm](http://npmjs.org) do:
 
-    npm install mkdirp
+```
+npm install mkdirp
+```
 
-license
-=======
+# license
 
-MIT/X11
+MIT
index 0d1eb98..54cd699 100644 (file)
@@ -1,7 +1,7 @@
 {
   "name": "mkdirp",
   "description": "Recursively mkdir, like `mkdir -p`",
-  "version": "0.3.4",
+  "version": "0.3.5",
   "author": {
     "name": "James Halliday",
     "email": "mail@substack.net",
     "test": "tap test/*.js"
   },
   "devDependencies": {
-    "tap": "~0.2.4"
+    "tap": "~0.4.0"
   },
-  "license": "MIT/X11",
-  "engines": {
-    "node": "*"
+  "license": "MIT",
+  "readme": "# mkdirp\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\n# example\n\n## pow.js\n\n```js\nvar mkdirp = require('mkdirp');\n    \nmkdirp('/tmp/foo/bar/baz', function (err) {\n    if (err) console.error(err)\n    else console.log('pow!')\n});\n```\n\nOutput\n\n```\npow!\n```\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\n# methods\n\n```js\nvar mkdirp = require('mkdirp');\n```\n\n## mkdirp(dir, mode, cb)\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\n## mkdirp.sync(dir, mode)\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install mkdirp\n```\n\n# license\n\nMIT\n",
+  "readmeFilename": "readme.markdown",
+  "_id": "mkdirp@0.3.5",
+  "dist": {
+    "shasum": "35715a113218b4fa49dc9b69326afcf7f9b2948e"
   },
-  "readme": "mkdirp\n======\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\nexample\n=======\n\npow.js\n------\n    var mkdirp = require('mkdirp');\n    \n    mkdirp('/tmp/foo/bar/baz', function (err) {\n        if (err) console.error(err)\n        else console.log('pow!')\n    });\n\nOutput\n    pow!\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\nmethods\n=======\n\nvar mkdirp = require('mkdirp');\n\nmkdirp(dir, mode, cb)\n---------------------\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\nmkdirp.sync(dir, mode)\n----------------------\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\ninstall\n=======\n\nWith [npm](http://npmjs.org) do:\n\n    npm install mkdirp\n\nlicense\n=======\n\nMIT/X11\n",
-  "_id": "mkdirp@0.3.4",
-  "_from": "mkdirp@~0.3.3"
+  "_from": "mkdirp@0.3.5",
+  "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz"
 }
index 450f313..ec3b9e0 100644 (file)
@@ -139,6 +139,7 @@ function build (gyp, argv, callback) {
         return (x.version < y.version ? -1 : 1)
       })
       ;(function verifyMsbuild () {
+        if (!msbuilds.length) return callback(notfoundErr);
         msbuildPath = path.resolve(msbuilds.pop().path, 'msbuild.exe')
         fs.stat(msbuildPath, function (err, stat) {
           if (err) {
index 8ddfe91..97fd17c 100644 (file)
@@ -10,7 +10,7 @@
     "bindings",
     "gyp"
   ],
-  "version": "0.8.4",
+  "version": "0.8.5",
   "installVersion": 9,
   "author": {
     "name": "Nathan Rajlich",
   },
   "readme": "node-gyp\n=========\n### Node.js native addon build tool\n\n`node-gyp` is a cross-platform command-line tool written in Node.js for compiling\nnative addon modules for Node.js, which takes away the pain of dealing with the\nvarious differences in build platforms. It is the replacement to the `node-waf`\nprogram which is removed for node `v0.8`. If you have a native addon for node that\nstill has a `wscript` file, then you should definitely add a `binding.gyp` file\nto support the latest versions of node.\n\nMultiple target versions of node are supported (i.e. `0.6`, `0.7`,..., `1.0`,\netc.), regardless of what version of node is actually installed on your system\n(`node-gyp` downloads the necessary development files for the target version).\n\n#### Features:\n\n * Easy to use, consistent interface\n * Same commands to build your module on every platform\n * Supports multiple target versions of Node\n\n\nInstallation\n------------\n\nYou can install with `npm`:\n\n``` bash\n$ npm install -g node-gyp\n```\n\nYou will also need to install:\n\n  * On Unix:\n    * `python`\n    * `make`\n    * A proper C/C++ compiler toolchain, like GCC\n  * On Windows:\n    * [Python][windows-python] ([`v2.7.3`][windows-python-v2.7.3] recommended, `v3.x.x` is __*not*__ supported)\n    * Windows XP/Vista/7:\n      * Microsoft Visual Studio C++ 2010 ([Express][msvc2010] version works well)\n      * For 64-bit builds of node and native modules you will _**also**_ need the [Windows 7 64-bit SDK][win7sdk]\n        * If the install fails, try uninstalling any C++ 2010 x64&x86 Redistributable that you have installed first.\n      * If you get errors that the 64-bit compilers are not installed you may also need the [compiler update for the Windows SDK 7.1]\n    * Windows 8:\n      * Microsoft Visual Studio C++ 2012 for Windows Desktop ([Express][msvc2012] version works well)\n\nNote that OS X is just a flavour of Unix and so needs `python`, `make`, and C/C++.\nAn easy way to obtain these is to install XCode from Apple,\nand then use it to install the command line tools (under Preferences -> Downloads).\n\nHow to Use\n----------\n\nTo compile your native addon, first go to its root directory:\n\n``` bash\n$ cd my_node_addon\n```\n\nThe next step is to generate the appropriate project build files for the current\nplatform. Use `configure` for that:\n\n``` bash\n$ node-gyp configure\n```\n\n__Note__: The `configure` step looks for the `binding.gyp` file in the current\ndirectory to processs. See below for instructions on creating the `binding.gyp` file.\n\nNow you will have either a `Makefile` (on Unix platforms) or a `vcxproj` file\n(on Windows) in the `build/` directory. Next invoke the `build` command:\n\n``` bash\n$ node-gyp build\n```\n\nNow you have your compiled `.node` bindings file! The compiled bindings end up\nin `build/Debug/` or `build/Release/`, depending on the build mode. At this point\nyou can require the `.node` file with Node and run your tests!\n\n__Note:__ To create a _Debug_ build of the bindings file, pass the `--debug` (or\n`-d`) switch when running the either `configure` or `build` command.\n\n\nThe \"binding.gyp\" file\n----------------------\n\nPreviously when node had `node-waf` you had to write a `wscript` file. The\nreplacement for that is the `binding.gyp` file, which describes the configuration\nto build your module in a JSON-like format. This file gets placed in the root of\nyour package, alongside the `package.json` file.\n\nA barebones `gyp` file appropriate for building a node addon looks like:\n\n``` json\n{\n  \"targets\": [\n    {\n      \"target_name\": \"binding\",\n      \"sources\": [ \"src/binding.cc\" ]\n    }\n  ]\n}\n```\n\nSome additional resources for writing `gyp` files:\n\n * [\"Hello World\" node addon example](https://github.com/joyent/node/tree/master/test/addons/hello-world)\n * [gyp user documentation](http://code.google.com/p/gyp/wiki/GypUserDocumentation)\n * [gyp input format reference](http://code.google.com/p/gyp/wiki/InputFormatReference)\n * [*\"binding.gyp\" files out in the wild* wiki page](https://github.com/TooTallNate/node-gyp/wiki/%22binding.gyp%22-files-out-in-the-wild)\n\n\nCommands\n--------\n\n`node-gyp` responds to the following commands:\n\n| **Command**   | **Description**\n|:--------------|:---------------------------------------------------------------\n| `build`       | Invokes `make`/`msbuild.exe` and builds the native addon\n| `clean`       | Removes any the `build` dir if it exists\n| `configure`   | Generates project build files for the current platform\n| `rebuild`     | Runs \"clean\", \"configure\" and \"build\" all in a row\n| `install`     | Installs node development header files for the given version\n| `list`        | Lists the currently installed node development file versions\n| `remove`      | Removes the node development header files for the given version\n\n\nLicense\n-------\n\n(The MIT License)\n\nCopyright (c) 2012 Nathan Rajlich &lt;nathan@tootallnate.net&gt;\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n[windows-python]: http://www.python.org/getit/windows\n[windows-python-v2.7.3]: http://www.python.org/download/releases/2.7.3#download\n[msvc2010]: http://go.microsoft.com/?linkid=9709949\n[msvc2012]: http://go.microsoft.com/?linkid=9816758\n[win7sdk]: http://www.microsoft.com/en-us/download/details.aspx?id=8279\n[compiler update for the Windows SDK 7.1]: http://www.microsoft.com/en-us/download/details.aspx?id=4422\n",
   "readmeFilename": "README.md",
-  "_id": "node-gyp@0.8.4",
-  "dist": {
-    "shasum": "018dce69cd55f6bc5bf370c2aff3c869ddde8a30"
-  },
-  "_from": "node-gyp@0.8.4",
-  "_resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-0.8.4.tgz"
+  "_id": "node-gyp@0.8.5",
+  "_from": "node-gyp@latest"
 }
index b44b801..d6a7496 100644 (file)
@@ -72,22 +72,23 @@ function publish (data, tarball, cb) {
     this.request("GET", data.name, function (er, fullData) {
       if (er) return cb(er)
 
+      function handle(er) {
+        if (er.message.indexOf("conflict Document update conflict.") === 0) {
+          return cb(conflictError.call(this, data._id));
+        }
+        this.log.error("publish", "Error uploading package");
+        return cb(er)
+      }
+
       var exists = fullData.versions && fullData.versions[data.version]
       if (exists) return cb(conflictError.call(this, data._id))
 
-      this.request("PUT", dataURI, data, function (er) {
-        if (er) {
-          if (er.message.indexOf("conflict Document update conflict.") === 0) {
-            return cb(conflictError.call(this, data._id))
-          }
-          this.log.error("publish", "Error sending version data")
-          return cb(er)
-        }
-
-        this.log.verbose("publish", "attach 2", [data.name, tarball, tbName])
-        attach.call(this, data.name, tarball, tbName, function (er) {
-          this.log.verbose("publish", "attach 3"
-                          ,[er, data.name])
+      var rev = fullData._rev;
+      attach.call(this, data.name, tarball, tbName, rev, function (er) {
+        if (er) return handle.call(this, er)
+        this.log.verbose("publish", "attached", [data.name, tarball, tbName])
+        this.request("PUT", dataURI, data, function (er) {
+          if (er) return handle.call(this, er)
           return cb(er)
         }.bind(this))
       }.bind(this))
@@ -102,15 +103,10 @@ function conflictError (pkgid) {
   return e
 }
 
-function attach (doc, file, filename, cb) {
+function attach (doc, file, filename, rev, cb) {
   doc = encodeURIComponent(doc)
-  this.request("GET", doc, function (er, d) {
-    if (er) return cb(er)
-    if (!d) return cb(new Error(
-      "Attempting to upload to invalid doc "+doc))
-    var rev = "-rev/"+d._rev
-      , attURI = doc + "/-/" + encodeURIComponent(filename) + "/" + rev
-    this.log.verbose("uploading", [attURI, file])
-    this.upload(attURI, file, cb)
-  }.bind(this))
+  var revu = "-rev/"+rev
+    , attURI = doc + "/-/" + encodeURIComponent(filename) + "/" + revu
+  this.log.verbose("uploading", [attURI, file])
+  this.upload(attURI, file, cb)
 }
index 5b23a9e..87f0bbb 100644 (file)
@@ -6,7 +6,7 @@
   },
   "name": "npm-registry-client",
   "description": "Client for the npm registry",
-  "version": "0.2.16",
+  "version": "0.2.18",
   "repository": {
     "url": "git://github.com/isaacs/npm-registry-client"
   },
@@ -35,6 +35,6 @@
   "license": "BSD",
   "readme": "# npm-registry-client\n\nThe code that npm uses to talk to the registry.\n\nIt handles all the caching and HTTP calls.\n\n## Usage\n\n```javascript\nvar RegClient = require('npm-registry-client')\nvar client = new RegClient(config)\n\nclient.get(\"npm\", \"latest\", 1000, function (er, data, raw, res) {\n  // error is an error if there was a problem.\n  // data is the parsed data object\n  // raw is the json string\n  // res is the response from couch\n})\n```\n\n# Configuration\n\nThis program is designed to work with\n[npmconf](https://npmjs.org/package/npmconf), but you can also pass in\na plain-jane object with the appropriate configs, and it'll shim it\nfor you.  Any configuration thingie that has get/set/del methods will\nalso be accepted.\n\n* `registry` **Required** {String} URL to the registry\n* `cache` **Required** {String} Path to the cache folder\n* `always-auth` {Boolean} Auth even for GET requests.\n* `auth` {String} A base64-encoded `username:password`\n* `email` {String} User's email address\n* `tag` {String} The default tag to use when publishing new packages.\n  Default = `\"latest\"`\n* `ca` {String} Cerficate signing authority certificates to trust.\n* `strict-ssl` {Boolean} Whether or not to be strict with SSL\n  certificates.  Default = `true`\n* `user-agent` {String} User agent header to send.  Default =\n  `\"node/{process.version} {process.platform} {process.arch}\"`\n* `log` {Object} The logger to use.  Defaults to `require(\"npmlog\")` if\n  that works, otherwise logs are disabled.\n* `fetch-retries` {Number} Number of times to retry on GET failures.\n  Default=2\n* `fetch-retry-factor` {Number} `factor` setting for `node-retry`. Default=10\n* `fetch-retry-mintimeout` {Number} `minTimeout` setting for `node-retry`.\n  Default=10000 (10 seconds)\n* `fetch-retry-maxtimeout` {Number} `maxTimeout` setting for `node-retry`.\n  Default=60000 (60 seconds)\n* `proxy` {URL} The url to proxy requests through.\n* `https-proxy` {URL} The url to proxy https requests through.\n  Defaults to be the same as `proxy` if unset.\n* `_auth` {String} The base64-encoded authorization header.\n* `username` `_password` {String} Username/password to use to generate\n  `_auth` if not supplied.\n* `_token` {Object} A token for use with\n  [couch-login](https://npmjs.org/package/couch-login)\n\n# client.request(method, where, [what], [etag], [nofollow], cb)\n\n* `method` {String} HTTP method\n* `where` {String} Path to request on the server\n* `what` {Stream | Buffer | String | Object} The request body.  Objects\n  that are not Buffers or Streams are encoded as JSON.\n* `etag` {String} The cached ETag\n* `nofollow` {Boolean} Prevent following 302/301 responses\n* `cb` {Function}\n  * `error` {Error | null}\n  * `data` {Object} the parsed data object\n  * `raw` {String} the json\n  * `res` {Response Object} response from couch\n\nMake a request to the registry.  All the other methods are wrappers\naround this. one.\n\n# client.adduser(username, password, email, cb)\n\n* `username` {String}\n* `password` {String}\n* `email` {String}\n* `cb` {Function}\n\nAdd a user account to the registry, or verify the credentials.\n\n# client.get(url, [timeout], [nofollow], [staleOk], cb)\n\n* `url` {String} The url path to fetch\n* `timeout` {Number} Number of seconds old that a cached copy must be\n  before a new request will be made.\n* `nofollow` {Boolean} Do not follow 301/302 responses\n* `staleOk` {Boolean} If there's cached data available, then return that\n  to the callback quickly, and update the cache the background.\n\nFetches data from the registry via a GET request, saving it in\nthe cache folder with the ETag.\n\n# client.publish(data, tarball, [readme], cb)\n\n* `data` {Object} Package data\n* `tarball` {String | Stream} Filename or stream of the package tarball\n* `readme` {String} Contents of the README markdown file\n* `cb` {Function}\n\nPublish a package to the registry.\n\nNote that this does not create the tarball from a folder.  However, it\ncan accept a gzipped tar stream or a filename to a tarball.\n\n# client.star(package, starred, cb)\n\n* `package` {String} Name of the package to star\n* `starred` {Boolean} True to star the package, false to unstar it.\n* `cb` {Function}\n\nStar or unstar a package.\n\nNote that the user does not have to be the package owner to star or\nunstar a package, though other writes do require that the user be the\npackage owner.\n\n# client.stars(username, cb)\n\n* `username` {String} Name of user to fetch starred packages for.\n* `cb` {Function}\n\nView your own or another user's starred packages.\n\n# client.tag(project, version, tag, cb)\n\n* `project` {String} Project name\n* `version` {String} Version to tag\n* `tag` {String} Tag name to apply\n* `cb` {Function}\n\nMark a version in the `dist-tags` hash, so that `pkg@tag`\nwill fetch the specified version.\n\n# client.unpublish(name, [ver], cb)\n\n* `name` {String} package name\n* `ver` {String} version to unpublish. Leave blank to unpublish all\n  versions.\n* `cb` {Function}\n\nRemove a version of a package (or all versions) from the registry.  When\nthe last version us unpublished, the entire document is removed from the\ndatabase.\n\n# client.upload(where, file, [etag], [nofollow], cb)\n\n* `where` {String} URL path to upload to\n* `file` {String | Stream} Either the filename or a readable stream\n* `etag` {String} Cache ETag\n* `nofollow` {Boolean} Do not follow 301/302 responses\n* `cb` {Function}\n\nUpload an attachment.  Mostly used by `client.publish()`.\n",
   "readmeFilename": "README.md",
-  "_id": "npm-registry-client@0.2.16",
+  "_id": "npm-registry-client@0.2.18",
   "_from": "npm-registry-client@latest"
 }
index 648f4ca..1a98e5b 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "read-package-json",
-  "version": "0.2.0",
+  "version": "0.2.2",
   "author": {
     "name": "Isaac Z. Schlueter",
     "email": "i@izs.me",
@@ -17,7 +17,7 @@
   },
   "dependencies": {
     "glob": "~3.1.9",
-    "lru-cache": "~2.0.0",
+    "lru-cache": "2",
     "semver": "1.x",
     "slide": "~1.1.3",
     "npmlog": "0",
@@ -32,6 +32,6 @@
   },
   "readme": "# read-package-json\n\nThis is the thing that npm uses to read package.json files.  It\nvalidates some stuff, and loads some default things.\n\nIt keeps a cache of the files you've read, so that you don't end\nup reading the same package.json file multiple times.\n\nNote that if you just want to see what's literally in the package.json\nfile, you can usually do `var data = require('some-module/package.json')`.\n\nThis module is basically only needed by npm, but it's handy to see what\nnpm will see when it looks at your package.\n\n## Usage\n\n```javascript\nvar readJson = require('read-package-json')\n\nreadJson('/path/to/package.json', function (er, data) {\n  if (er) {\n    console.error(\"There was an error reading the file\")\n    return\n  }\n\n  console.error('the package data is', data)\n}\n```\n\n## readJson(file, cb)\n\n* `file` {String} The path to the package.json file\n* `cb` {Function}\n\nReads the JSON file and does the things.\n\n## `package.json` Fields\n\nSee `man 5 package.json` or `npm help json`.\n\n## readJson.log\n\nBy default this is a reference to the `npmlog` module.  But if that\nmodule can't be found, then it'll be set to just a dummy thing that does\nnothing.\n\nReplace with your own `{log,warn,error}` object for fun loggy time.\n\n## readJson.extras(file, data, cb)\n\nRun all the extra stuff relative to the file, with the parsed data.\n\nModifies the data as it does stuff.  Calls the cb when it's done.\n\n## readJson.extraSet = [fn, fn, ...]\n\nArray of functions that are called by `extras`.  Each one receives the\narguments `fn(file, data, cb)` and is expected to call `cb(er, data)`\nwhen done or when an error occurs.\n\nOrder is indeterminate, so each function should be completely\nindependent.\n\nMix and match!\n\n## readJson.cache\n\nThe `lru-cache` object that readJson uses to not read the same file over\nand over again.  See\n[lru-cache](https://github.com/isaacs/node-lru-cache) for details.\n\n## Other Relevant Files Besides `package.json`\n\nSome other files have an effect on the resulting data object, in the\nfollowing ways:\n\n### `README?(.*)`\n\nIf there is a `README` or `README.*` file present, then npm will attach\na `readme` field to the data with the contents of this file.\n\nOwing to the fact that roughly 100% of existing node modules have\nMarkdown README files, it will generally be assumed to be Markdown,\nregardless of the extension.  Please plan accordingly.\n\n### `server.js`\n\nIf there is a `server.js` file, and there is not already a\n`scripts.start` field, then `scripts.start` will be set to `node\nserver.js`.\n\n### `AUTHORS`\n\nIf there is not already a `contributors` field, then the `contributors`\nfield will be set to the contents of the `AUTHORS` file, split by lines,\nand parsed.\n\n### `bindings.gyp`\n\nIf a bindings.gyp file exists, and there is not already a\n`scripts.install` field, then the `scripts.install` field will be set to\n`node-gyp rebuild`.\n\n### `wscript`\n\nIf a wscript file exists, and there is not already a `scripts.install`\nfield, then the `scripts.install` field will be set to `node-waf clean ;\nnode-waf configure build`.\n\nNote that the `bindings.gyp` file supercedes this, since node-waf has\nbeen deprecated in favor of node-gyp.\n\n### `index.js`\n\nIf the json file does not exist, but there is a `index.js` file\npresent instead, and that file has a package comment, then it will try\nto parse the package comment, and use that as the data instead.\n\nA package comment looks like this:\n\n```javascript\n/**package\n * { \"name\": \"my-bare-module\"\n * , \"version\": \"1.2.3\"\n * , \"description\": \"etc....\" }\n **/\n\n// or...\n\n/**package\n{ \"name\": \"my-bare-module\"\n, \"version\": \"1.2.3\"\n, \"description\": \"etc....\" }\n**/\n```\n\nThe important thing is that it starts with `/**package`, and ends with\n`**/`.  If the package.json file exists, then the index.js is not\nparsed.\n\n### `{directories.man}/*.[0-9]`\n\nIf there is not already a `man` field defined as an array of files or a\nsingle file, and\nthere is a `directories.man` field defined, then that directory will\nbe searched for manpages.\n\nAny valid manpages found in that directory will be assigned to the `man`\narray, and installed in the appropriate man directory at package install\ntime, when installed globally on a Unix system.\n\n### `{directories.bin}/*`\n\nIf there is not already a `bin` field defined as a string filename or a\nhash of `<name> : <filename>` pairs, then the `directories.bin`\ndirectory will be searched and all the files within it will be linked as\nexecutables at install time.\n\nWhen installing locally, npm links bins into `node_modules/.bin`, which\nis in the `PATH` environ when npm runs scripts.  When\ninstalling globally, they are linked into `{prefix}/bin`, which is\npresumably in the `PATH` environment variable.\n",
   "readmeFilename": "README.md",
-  "_id": "read-package-json@0.2.0",
+  "_id": "read-package-json@0.2.2",
   "_from": "read-package-json@latest"
 }
index 6b8c29a..d0b5ff0 100644 (file)
@@ -301,7 +301,7 @@ function bins (file, data, cb) {
                 })
 }
 function bins_ (file, data, bins, cb) {
-                var m = data.directories && data.directories.bin
+                var m = data.directories && data.directories.bin || '.'
                 data.bin = bins.reduce(function (acc, mf) {
                                 if (mf && mf.charAt(0) !== '.') {
                                                 var f = path.basename(mf)
index 1f4ec58..abbfb21 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "semver",
-  "version": "1.1.3",
+  "version": "1.1.4",
   "description": "The semantic version parser used by npm.",
   "main": "semver.js",
   "scripts": {
@@ -22,6 +22,6 @@
   },
   "readme": "semver(1) -- The semantic versioner for npm\n===========================================\n\n## Usage\n\n    $ npm install semver\n\n    semver.valid('1.2.3') // '1.2.3'\n    semver.valid('a.b.c') // null\n    semver.clean('  =v1.2.3   ') // '1.2.3'\n    semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true\n    semver.gt('1.2.3', '9.8.7') // false\n    semver.lt('1.2.3', '9.8.7') // true\n\nAs a command-line utility:\n\n    $ semver -h\n\n    Usage: semver -v <version> [-r <range>]\n    Test if version(s) satisfy the supplied range(s),\n    and sort them.\n\n    Multiple versions or ranges may be supplied.\n\n    Program exits successfully if any valid version satisfies\n    all supplied ranges, and prints all satisfying versions.\n\n    If no versions are valid, or ranges are not satisfied,\n    then exits failure.\n\n    Versions are printed in ascending order, so supplying\n    multiple versions to the utility will just sort them.\n\n## Versions\n\nA version is the following things, in this order:\n\n* a number (Major)\n* a period\n* a number (minor)\n* a period\n* a number (patch)\n* OPTIONAL: a hyphen, followed by a number (build)\n* OPTIONAL: a collection of pretty much any non-whitespace characters\n  (tag)\n\nA leading `\"=\"` or `\"v\"` character is stripped off and ignored.\n\n## Comparisons\n\nThe ordering of versions is done using the following algorithm, given\ntwo versions and asked to find the greater of the two:\n\n* If the majors are numerically different, then take the one\n  with a bigger major number. `2.3.4 > 1.3.4`\n* If the minors are numerically different, then take the one\n  with the bigger minor number. `2.3.4 > 2.2.4`\n* If the patches are numerically different, then take the one with the\n  bigger patch number. `2.3.4 > 2.3.3`\n* If only one of them has a build number, then take the one with the\n  build number.  `2.3.4-0 > 2.3.4`\n* If they both have build numbers, and the build numbers are numerically\n  different, then take the one with the bigger build number.\n  `2.3.4-10 > 2.3.4-9`\n* If only one of them has a tag, then take the one without the tag.\n  `2.3.4 > 2.3.4-beta`\n* If they both have tags, then take the one with the lexicographically\n  larger tag.  `2.3.4-beta > 2.3.4-alpha`\n* At this point, they're equal.\n\n## Ranges\n\nThe following range styles are supported:\n\n* `>1.2.3` Greater than a specific version.\n* `<1.2.3` Less than\n* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`\n* `~1.2.3` := `>=1.2.3 <1.3.0`\n* `~1.2` := `>=1.2.0 <1.3.0`\n* `~1` := `>=1.0.0 <2.0.0`\n* `1.2.x` := `>=1.2.0 <1.3.0`\n* `1.x` := `>=1.0.0 <2.0.0`\n\nRanges can be joined with either a space (which implies \"and\") or a\n`||` (which implies \"or\").\n\n## Functions\n\n* valid(v): Return the parsed version, or null if it's not valid.\n* inc(v, release): Return the version incremented by the release type\n  (major, minor, patch, or build), or null if it's not valid.\n\n### Comparison\n\n* gt(v1, v2): `v1 > v2`\n* gte(v1, v2): `v1 >= v2`\n* lt(v1, v2): `v1 < v2`\n* lte(v1, v2): `v1 <= v2`\n* eq(v1, v2): `v1 == v2` This is true if they're logically equivalent,\n  even if they're not the exact same string.  You already know how to\n  compare strings.\n* neq(v1, v2): `v1 != v2` The opposite of eq.\n* cmp(v1, comparator, v2): Pass in a comparison string, and it'll call\n  the corresponding function above.  `\"===\"` and `\"!==\"` do simple\n  string comparison, but are included for completeness.  Throws if an\n  invalid comparison string is provided.\n* compare(v1, v2): Return 0 if v1 == v2, or 1 if v1 is greater, or -1 if\n  v2 is greater.  Sorts in ascending order if passed to Array.sort().\n* rcompare(v1, v2): The reverse of compare.  Sorts an array of versions\n  in descending order when passed to Array.sort().\n\n\n### Ranges\n\n* validRange(range): Return the valid range or null if it's not valid\n* satisfies(version, range): Return true if the version satisfies the\n  range.\n* maxSatisfying(versions, range): Return the highest version in the list\n  that satisfies the range, or null if none of them do.\n",
   "readmeFilename": "README.md",
-  "_id": "semver@1.1.3",
-  "_from": "semver@~1.1.2"
+  "_id": "semver@1.1.4",
+  "_from": "semver@1.1.4"
 }
index 01fb1c1..cebfe6f 100644 (file)
@@ -15,7 +15,8 @@ var semver = "\\s*[v=]*\\s*([0-9]+)"        // major
                 + "(?:\\.([0-9]+|x|X|\\*)"
                 + "([a-zA-Z-][a-zA-Z0-9-\.:]*)?)?)?"
   , xRange = "((?:<|>)=?)?\\s*" + xRangePlain
-  , exprSpermy = "(?:~>?)"+xRange
+  , exprLoneSpermy = "(?:~>?)"
+  , exprSpermy = exprLoneSpermy + xRange
   , expressions = exports.expressions =
     { parse : new RegExp("^\\s*"+semver+"\\s*$")
     , parsePackage : new RegExp("^\\s*([^\/]+)[-@](" +semver+")\\s*$")
@@ -97,6 +98,7 @@ function toComparators (range) {
     .split("||")
     .map(function (orchunk) {
       return orchunk
+        .replace(new RegExp("(" + exprLoneSpermy + ")\\s+"), "$1")
         .split(" ")
         .map(replaceXRanges)
         .map(replaceSpermies)
index bc3952c..475b77b 100644 (file)
@@ -171,6 +171,7 @@ test("\nrange tests", function (t) {
   , ["~> 1", "1.2.3"]
   , ["~1.0", "1.0.2"] // >=1.0.0 <1.1.0
   , ["~ 1.0", "1.0.2"]
+  , ["~ 1.0.3", "1.0.12"]
   , [">=1", "1.0.0"]
   , [">= 1", "1.0.0"]
   , ["<1.2", "1.1.1"]
@@ -417,6 +418,8 @@ test("\ncomparators test", function (t) {
   , ["~> 1", [[">=1.0.0-", "<2.0.0-"]] ]
   , ["~1.0", [[">=1.0.0-", "<1.1.0-"]] ]
   , ["~ 1.0", [[">=1.0.0-", "<1.1.0-"]] ]
+  , ["~ 1.0.3", [[">=1.0.3-", "<1.1.0-"]] ]
+  , ["~> 1.0.3", [[">=1.0.3-", "<1.1.0-"]] ]
   , ["<1", [["<1.0.0-"]] ]
   , ["< 1", [["<1.0.0-"]] ]
   , [">=1", [[">=1.0.0-"]] ]
index 517cac5..8bd830e 100644 (file)
@@ -1,5 +1,5 @@
 {
-  "version": "1.2.11",
+  "version": "1.2.14",
   "name": "npm",
   "publishConfig": {
     "proprietary-attribs": false
@@ -39,7 +39,7 @@
     "slide": "1",
     "abbrev": "~1.0.4",
     "graceful-fs": "~1.2.0",
-    "minimatch": "~0.2.8",
+    "minimatch": "~0.2.11",
     "nopt": "~2.1.1",
     "rimraf": "2",
     "request": "~2.9",
     "inherits": "1",
     "mkdirp": "~0.3.3",
     "read": "~1.0.4",
-    "lru-cache": "~2.0.0",
-    "node-gyp": "~0.8.1",
+    "lru-cache": "~2.2.2",
+    "node-gyp": "~0.8.5",
     "fstream-npm": "~0.1.3",
     "uid-number": "0",
     "archy": "0",
     "chownr": "0",
     "npmlog": "0",
     "ansi": "~0.1.2",
-    "npm-registry-client": "~0.2.13",
-    "read-package-json": "~0.2.0",
+    "npm-registry-client": "~0.2.18",
+    "read-package-json": "~0.2.2",
     "read-installed": "0",
-    "glob": "~3.1.18",
+    "glob": "~3.1.21",
     "init-package-json": "0.0.6",
     "osenv": "0",
     "lockfile": "~0.3.0",
     "retry": "~0.6.0",
     "once": "~1.1.1",
     "npmconf": "0",
-    "opener": "~1.3.0"
+    "opener": "~1.3.0",
+    "chmodr": "~0.1.0"
   },
   "bundleDependencies": [
     "semver",
     "retry",
     "once",
     "npmconf",
-    "opener"
+    "opener",
+    "chmodr"
   ],
   "devDependencies": {
     "ronn": "~0.3.6",
index 519528a..2cf9b97 100644 (file)
@@ -17,11 +17,20 @@ require("child_process").execFile(process.execPath, [npm, "ls", "--json"], {
   var expected = require("./npm-ls.json")
 
   // resolved url doesn't matter
-  delete actual.dict.resolved
-  delete expected.dict.resolved
+  clean(actual)
+  clean(expected)
 
   console.error(JSON.stringify(actual, null, 2))
   console.error(JSON.stringify(expected, null, 2))
 
   assert.deepEqual(actual, expected)
 })
+
+function clean (obj) {
+  for (var i in obj) {
+    if (i === "from" || i === "resolved")
+      delete obj[i]
+    else if (typeof obj[i] === "object" && obj[i])
+      clean(obj[i])
+  }
+}