Browse Source

npm: Upgrade to 1.1.33

Support for parallel use of the cache folder
Retry on registry timeouts or network failures
Reduce 'engines' failures to a warning
Use new zsh completion if aviailable
v0.8.7-release
isaacs 13 years ago
parent
commit
c721604d25
  1. 22
      deps/npm/.npmignore
  2. 62
      deps/npm/doc/cli/config.md
  3. 19
      deps/npm/doc/cli/json.md
  4. 2
      deps/npm/html/api/bin.html
  5. 2
      deps/npm/html/api/bugs.html
  6. 2
      deps/npm/html/api/commands.html
  7. 2
      deps/npm/html/api/config.html
  8. 2
      deps/npm/html/api/deprecate.html
  9. 2
      deps/npm/html/api/docs.html
  10. 2
      deps/npm/html/api/edit.html
  11. 2
      deps/npm/html/api/explore.html
  12. 2
      deps/npm/html/api/help-search.html
  13. 2
      deps/npm/html/api/init.html
  14. 2
      deps/npm/html/api/install.html
  15. 2
      deps/npm/html/api/link.html
  16. 2
      deps/npm/html/api/load.html
  17. 2
      deps/npm/html/api/ls.html
  18. 4
      deps/npm/html/api/npm.html
  19. 2
      deps/npm/html/api/outdated.html
  20. 2
      deps/npm/html/api/owner.html
  21. 2
      deps/npm/html/api/pack.html
  22. 2
      deps/npm/html/api/prefix.html
  23. 2
      deps/npm/html/api/prune.html
  24. 2
      deps/npm/html/api/publish.html
  25. 2
      deps/npm/html/api/rebuild.html
  26. 2
      deps/npm/html/api/restart.html
  27. 2
      deps/npm/html/api/root.html
  28. 2
      deps/npm/html/api/run-script.html
  29. 2
      deps/npm/html/api/search.html
  30. 2
      deps/npm/html/api/shrinkwrap.html
  31. 2
      deps/npm/html/api/start.html
  32. 2
      deps/npm/html/api/stop.html
  33. 2
      deps/npm/html/api/submodule.html
  34. 2
      deps/npm/html/api/tag.html
  35. 2
      deps/npm/html/api/test.html
  36. 2
      deps/npm/html/api/uninstall.html
  37. 2
      deps/npm/html/api/unpublish.html
  38. 2
      deps/npm/html/api/update.html
  39. 2
      deps/npm/html/api/version.html
  40. 2
      deps/npm/html/api/view.html
  41. 2
      deps/npm/html/api/whoami.html
  42. 2
      deps/npm/html/doc/README.html
  43. 2
      deps/npm/html/doc/adduser.html
  44. 2
      deps/npm/html/doc/bin.html
  45. 2
      deps/npm/html/doc/bugs.html
  46. 2
      deps/npm/html/doc/build.html
  47. 2
      deps/npm/html/doc/bundle.html
  48. 2
      deps/npm/html/doc/cache.html
  49. 2
      deps/npm/html/doc/changelog.html
  50. 2
      deps/npm/html/doc/coding-style.html
  51. 2
      deps/npm/html/doc/completion.html
  52. 56
      deps/npm/html/doc/config.html
  53. 2
      deps/npm/html/doc/deprecate.html
  54. 2
      deps/npm/html/doc/developers.html
  55. 2
      deps/npm/html/doc/disputes.html
  56. 2
      deps/npm/html/doc/docs.html
  57. 2
      deps/npm/html/doc/edit.html
  58. 2
      deps/npm/html/doc/explore.html
  59. 2
      deps/npm/html/doc/faq.html
  60. 2
      deps/npm/html/doc/folders.html
  61. 2
      deps/npm/html/doc/help-search.html
  62. 2
      deps/npm/html/doc/help.html
  63. 2
      deps/npm/html/doc/index.html
  64. 2
      deps/npm/html/doc/init.html
  65. 2
      deps/npm/html/doc/install.html
  66. 21
      deps/npm/html/doc/json.html
  67. 2
      deps/npm/html/doc/link.html
  68. 2
      deps/npm/html/doc/list.html
  69. 4
      deps/npm/html/doc/npm.html
  70. 2
      deps/npm/html/doc/outdated.html
  71. 2
      deps/npm/html/doc/owner.html
  72. 2
      deps/npm/html/doc/pack.html
  73. 2
      deps/npm/html/doc/prefix.html
  74. 2
      deps/npm/html/doc/prune.html
  75. 2
      deps/npm/html/doc/publish.html
  76. 2
      deps/npm/html/doc/rebuild.html
  77. 2
      deps/npm/html/doc/registry.html
  78. 2
      deps/npm/html/doc/removing-npm.html
  79. 2
      deps/npm/html/doc/restart.html
  80. 2
      deps/npm/html/doc/root.html
  81. 2
      deps/npm/html/doc/run-script.html
  82. 2
      deps/npm/html/doc/scripts.html
  83. 2
      deps/npm/html/doc/search.html
  84. 2
      deps/npm/html/doc/semver.html
  85. 2
      deps/npm/html/doc/shrinkwrap.html
  86. 2
      deps/npm/html/doc/star.html
  87. 2
      deps/npm/html/doc/start.html
  88. 2
      deps/npm/html/doc/stop.html
  89. 2
      deps/npm/html/doc/submodule.html
  90. 2
      deps/npm/html/doc/tag.html
  91. 2
      deps/npm/html/doc/test.html
  92. 2
      deps/npm/html/doc/uninstall.html
  93. 2
      deps/npm/html/doc/unpublish.html
  94. 2
      deps/npm/html/doc/update.html
  95. 2
      deps/npm/html/doc/version.html
  96. 2
      deps/npm/html/doc/view.html
  97. 2
      deps/npm/html/doc/whoami.html
  98. 274
      deps/npm/lib/cache.js
  99. 16
      deps/npm/lib/install.js
  100. 21
      deps/npm/lib/npm.js

22
deps/npm/.npmignore

@ -1,16 +1,16 @@
*.swp *.swp
test/bin
test/output.log
test/packages/*/node_modules
test/packages/npm-test-depends-on-spark/which-spark.log
test/packages/test-package/random-data.txt
test/root
node_modules/ronn
node_modules/.bin
npm-debug.log npm-debug.log
./npmrc /test/bin
.gitignore /test/output.log
release/ /test/packages/*/node_modules
/test/packages/npm-test-depends-on-spark/which-spark.log
/test/packages/test-package/random-data.txt
/test/root
/node_modules/ronn
/node_modules/tap
/node_modules/.bin
/npmrc
/release/
# don't need these in the npm package. # don't need these in the npm package.
html/*.png html/*.png

62
deps/npm/doc/cli/config.md

@ -195,6 +195,27 @@ See also the `strict-ssl` config.
The location of npm's cache directory. See `npm-cache(1)` The location of npm's cache directory. See `npm-cache(1)`
### cache-lock-stale
* Default: 60000 (1 minute)
* Type: Number
The number of ms before cache folder lockfiles are considered stale.
### cache-lock-retries
* Default: 10
* Type: Number
Number of times to retry to acquire a lock on cache folder lockfiles.
### cache-lock-wait
* Default: 10000 (10 seconds)
* Type: Number
Number of ms to wait for cache lock files to expire.
### cache-max ### cache-max
* Default: Infinity * Default: Infinity
@ -266,6 +287,15 @@ set.
The command to run for `npm edit` or `npm config edit`. The command to run for `npm edit` or `npm config edit`.
### engine-strict
* Default: false
* Type: Boolean
If set to true, then npm will stubbornly refuse to install (or even
consider installing) any package that claims to not be compatible with
the current Node.js version.
### force ### force
* Default: false * Default: false
@ -278,6 +308,38 @@ Makes various commands more forceful.
* skips cache when requesting from the registry. * skips cache when requesting from the registry.
* prevents checks against clobbering non-npm files. * prevents checks against clobbering non-npm files.
### fetch-retries
* Default: 2
* Type: Number
The "retries" config for the `retry` module to use when fetching
packages from the registry.
### fetch-retry-factor
* Default: 10
* Type: Number
The "factor" config for the `retry` module to use when fetching
packages.
### fetch-retry-mintimeout
* Default: 10000 (10 seconds)
* Type: Number
The "minTimeout" config for the `retry` module to use when fetching
packages.
### fetch-retry-maxtimeout
* Default: 60000 (1 minute)
* Type: Number
The "maxTimeout" config for the `retry` module to use when fetching
packages.
### git ### git
* Default: `"git"` * Default: `"git"`

19
deps/npm/doc/cli/json.md

@ -453,8 +453,7 @@ Entries in `optionalDependencies` will override entries of the same name in
## engines ## engines
You can specify the version of You can specify the version of node that your stuff works on:
node that your stuff works on:
{ "engines" : { "node" : ">=0.1.27 <0.1.30" } } { "engines" : { "node" : ">=0.1.27 <0.1.30" } }
@ -470,6 +469,22 @@ are capable of properly installing your program. For example:
{ "engines" : { "npm" : "~1.0.20" } } { "engines" : { "npm" : "~1.0.20" } }
Note that, unless the user has set the `engine-strict` config flag, this
field is advisory only.
## engineStrict
If you are sure that your module will *definitely not* run properly on
versions of Node/npm other than those specified in the `engines` hash,
then you can set `"engineStrict": true` in your package.json file.
This will override the user's `engine-strict` config setting.
Please do not do this unless you are really very very sure. If your
engines hash is something overly restrictive, you can quite easily and
inadvertently lock yourself into obscurity and prevent your users from
updating to new versions of Node. Consider this choice carefully. If
people abuse it, it will be removed in a future version of npm.
## os ## os
You can specify which operating systems your You can specify which operating systems your

2
deps/npm/html/api/bin.html

@ -19,7 +19,7 @@
<p>This function should not be used programmatically. Instead, just refer <p>This function should not be used programmatically. Instead, just refer
to the <code>npm.bin</code> member.</p> to the <code>npm.bin</code> member.</p>
</div> </div>
<p id="footer">bin &mdash; npm@1.1.32</p> <p id="footer">bin &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/bugs.html

@ -25,7 +25,7 @@ optional version number.</p>
<p>This command will launch a browser, so this command may not be the most <p>This command will launch a browser, so this command may not be the most
friendly for programmatic use.</p> friendly for programmatic use.</p>
</div> </div>
<p id="footer">bugs &mdash; npm@1.1.32</p> <p id="footer">bugs &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/commands.html

@ -28,7 +28,7 @@ usage, or <code>man 3 npm-&lt;command&gt;</code> for programmatic usage.</p>
<ul><li><a href="../doc/index.html">index(1)</a></li></ul> <ul><li><a href="../doc/index.html">index(1)</a></li></ul>
</div> </div>
<p id="footer">commands &mdash; npm@1.1.32</p> <p id="footer">commands &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/config.html

@ -33,7 +33,7 @@ functions instead.</p>
<ul><li><a href="../api/npm.html">npm(3)</a></li></ul> <ul><li><a href="../api/npm.html">npm(3)</a></li></ul>
</div> </div>
<p id="footer">config &mdash; npm@1.1.32</p> <p id="footer">config &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/deprecate.html

@ -30,7 +30,7 @@ install the package.</p></li></ul>
<ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../api/unpublish.html">unpublish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul> <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> </div>
<p id="footer">deprecate &mdash; npm@1.1.32</p> <p id="footer">deprecate &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/docs.html

@ -25,7 +25,7 @@ optional version number.</p>
<p>This command will launch a browser, so this command may not be the most <p>This command will launch a browser, so this command may not be the most
friendly for programmatic use.</p> friendly for programmatic use.</p>
</div> </div>
<p id="footer">docs &mdash; npm@1.1.32</p> <p id="footer">docs &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/edit.html

@ -30,7 +30,7 @@ to open. The package can optionally have a version number attached.</p>
<p>Since this command opens an editor in a new process, be careful about where <p>Since this command opens an editor in a new process, be careful about where
and how this is used.</p> and how this is used.</p>
</div> </div>
<p id="footer">edit &mdash; npm@1.1.32</p> <p id="footer">edit &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/explore.html

@ -24,7 +24,7 @@ sure to use <code>npm rebuild &lt;pkg&gt;</code> if you make any changes.</p>
<p>The first element in the 'args' parameter must be a package name. After that is the optional command, which can be any number of strings. All of the strings will be combined into one, space-delimited command.</p> <p>The first element in the 'args' parameter must be a package name. After that is the optional command, which can be any number of strings. All of the strings will be combined into one, space-delimited command.</p>
</div> </div>
<p id="footer">explore &mdash; npm@1.1.32</p> <p id="footer">explore &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/help-search.html

@ -32,7 +32,7 @@ Name of the file that matched</li></ul>
<p>The silent parameter is not neccessary not used, but it may in the future.</p> <p>The silent parameter is not neccessary not used, but it may in the future.</p>
</div> </div>
<p id="footer">help-search &mdash; npm@1.1.32</p> <p id="footer">help-search &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/init.html

@ -35,7 +35,7 @@ then go ahead and use this programmatically.</p>
<p><a href="../doc/json.html">json(1)</a></p> <p><a href="../doc/json.html">json(1)</a></p>
</div> </div>
<p id="footer">init &mdash; npm@1.1.32</p> <p id="footer">init &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/install.html

@ -25,7 +25,7 @@ the name of a package to be installed.</p>
<p>Finally, 'callback' is a function that will be called when all packages have been <p>Finally, 'callback' is a function that will be called when all packages have been
installed or when an error has been encountered.</p> installed or when an error has been encountered.</p>
</div> </div>
<p id="footer">install &mdash; npm@1.1.32</p> <p id="footer">install &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/link.html

@ -39,7 +39,7 @@ npm.commands.link('redis', cb) # link-install the package</code></pre>
<p>Now, any changes to the redis package will be reflected in <p>Now, any changes to the redis package will be reflected in
the package in the current working directory</p> the package in the current working directory</p>
</div> </div>
<p id="footer">link &mdash; npm@1.1.32</p> <p id="footer">link &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/load.html

@ -32,7 +32,7 @@ config object.</p>
<p>For a list of all the available command-line configs, see <code>npm help config</code></p> <p>For a list of all the available command-line configs, see <code>npm help config</code></p>
</div> </div>
<p id="footer">load &mdash; npm@1.1.32</p> <p id="footer">load &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/ls.html

@ -59,7 +59,7 @@ project.</p>
This means that if a submodule a same dependency as a parent module, then the This means that if a submodule a same dependency as a parent module, then the
dependency will only be output once.</p> dependency will only be output once.</p>
</div> </div>
<p id="footer">ls &mdash; npm@1.1.32</p> <p id="footer">ls &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

4
deps/npm/html/api/npm.html

@ -24,7 +24,7 @@ npm.load(configObject, function (er, npm) {
<h2 id="VERSION">VERSION</h2> <h2 id="VERSION">VERSION</h2>
<p>1.1.32</p> <p>1.1.33</p>
<h2 id="DESCRIPTION">DESCRIPTION</h2> <h2 id="DESCRIPTION">DESCRIPTION</h2>
@ -91,7 +91,7 @@ method names. Use the <code>npm.deref</code> method to find the real name.</p>
<pre><code>var cmd = npm.deref("unp") // cmd === "unpublish"</code></pre> <pre><code>var cmd = npm.deref("unp") // cmd === "unpublish"</code></pre>
</div> </div>
<p id="footer">npm &mdash; npm@1.1.32</p> <p id="footer">npm &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/outdated.html

@ -19,7 +19,7 @@ currently outdated.</p>
<p>If the 'packages' parameter is left out, npm will check all packages.</p> <p>If the 'packages' parameter is left out, npm will check all packages.</p>
</div> </div>
<p id="footer">outdated &mdash; npm@1.1.32</p> <p id="footer">outdated &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/owner.html

@ -34,7 +34,7 @@ that is not implemented at this time.</p>
<ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul> <ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
</div> </div>
<p id="footer">owner &mdash; npm@1.1.32</p> <p id="footer">owner &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/pack.html

@ -25,7 +25,7 @@ overwritten the second time.</p>
<p>If no arguments are supplied, then npm packs the current package folder.</p> <p>If no arguments are supplied, then npm packs the current package folder.</p>
</div> </div>
<p id="footer">pack &mdash; npm@1.1.32</p> <p id="footer">pack &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/prefix.html

@ -21,7 +21,7 @@
<p>This function is not useful programmatically</p> <p>This function is not useful programmatically</p>
</div> </div>
<p id="footer">prefix &mdash; npm@1.1.32</p> <p id="footer">prefix &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/prune.html

@ -23,7 +23,7 @@
<p>Extraneous packages are packages that are not listed on the parent <p>Extraneous packages are packages that are not listed on the parent
package's dependencies list.</p> package's dependencies list.</p>
</div> </div>
<p id="footer">prune &mdash; npm@1.1.32</p> <p id="footer">prune &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/publish.html

@ -32,7 +32,7 @@ the registry. Overwrites when the "force" environment variable is set.</p>
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../api/owner.html">owner(3)</a></li></ul> <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> </div>
<p id="footer">publish &mdash; npm@1.1.32</p> <p id="footer">publish &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/rebuild.html

@ -22,7 +22,7 @@ the new binary. If no 'packages' parameter is specify, every package will be reb
<p>See <code>npm help build</code></p> <p>See <code>npm help build</code></p>
</div> </div>
<p id="footer">rebuild &mdash; npm@1.1.32</p> <p id="footer">rebuild &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/restart.html

@ -27,7 +27,7 @@ in the <code>packages</code> parameter.</p>
<ul><li><a href="../api/start.html">start(3)</a></li><li><a href="../api/stop.html">stop(3)</a></li></ul> <ul><li><a href="../api/start.html">start(3)</a></li><li><a href="../api/stop.html">stop(3)</a></li></ul>
</div> </div>
<p id="footer">restart &mdash; npm@1.1.32</p> <p id="footer">restart &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/root.html

@ -21,7 +21,7 @@
<p>This function is not useful programmatically.</p> <p>This function is not useful programmatically.</p>
</div> </div>
<p id="footer">root &mdash; npm@1.1.32</p> <p id="footer">root &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/run-script.html

@ -29,7 +29,7 @@ assumed to be the command to run. All other elements are ignored.</p>
<ul><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../api/test.html">test(3)</a></li><li><a href="../api/start.html">start(3)</a></li><li><a href="../api/restart.html">restart(3)</a></li><li><a href="../api/stop.html">stop(3)</a></li></ul> <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> </div>
<p id="footer">run-script &mdash; npm@1.1.32</p> <p id="footer">run-script &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/search.html

@ -32,7 +32,7 @@ excluded term (the "searchexclude" config). The search is case insensitive
and doesn't try to read your mind (it doesn't do any verb tense matching or the and doesn't try to read your mind (it doesn't do any verb tense matching or the
like).</p> like).</p>
</div> </div>
<p id="footer">search &mdash; npm@1.1.32</p> <p id="footer">search &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/shrinkwrap.html

@ -26,7 +26,7 @@ but the shrinkwrap file will still be written.</p>
<p>Finally, 'callback' is a function that will be called when the shrinkwrap has <p>Finally, 'callback' is a function that will be called when the shrinkwrap has
been saved.</p> been saved.</p>
</div> </div>
<p id="footer">shrinkwrap &mdash; npm@1.1.32</p> <p id="footer">shrinkwrap &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/start.html

@ -19,7 +19,7 @@
<p>npm can run tests on multiple packages. Just specify multiple packages <p>npm can run tests on multiple packages. Just specify multiple packages
in the <code>packages</code> parameter.</p> in the <code>packages</code> parameter.</p>
</div> </div>
<p id="footer">start &mdash; npm@1.1.32</p> <p id="footer">start &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/stop.html

@ -19,7 +19,7 @@
<p>npm can run stop on multiple packages. Just specify multiple packages <p>npm can run stop on multiple packages. Just specify multiple packages
in the <code>packages</code> parameter.</p> in the <code>packages</code> parameter.</p>
</div> </div>
<p id="footer">stop &mdash; npm@1.1.32</p> <p id="footer">stop &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/submodule.html

@ -33,7 +33,7 @@ dependencies into the submodule folder.</p>
<ul><li>npm help json</li><li>git help submodule</li></ul> <ul><li>npm help json</li><li>git help submodule</li></ul>
</div> </div>
<p id="footer">submodule &mdash; npm@1.1.32</p> <p id="footer">submodule &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/tag.html

@ -29,7 +29,7 @@ parameter is missing or falsey (empty), the default froom the config will be
used. For more information about how to set this config, check 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> <code>man 3 npm-config</code> for programmatic usage or <code>man npm-config</code> for cli usage.</p>
</div> </div>
<p id="footer">tag &mdash; npm@1.1.32</p> <p id="footer">tag &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/test.html

@ -22,7 +22,7 @@ true.</p>
<p>npm can run tests on multiple packages. Just specify multiple packages <p>npm can run tests on multiple packages. Just specify multiple packages
in the <code>packages</code> parameter.</p> in the <code>packages</code> parameter.</p>
</div> </div>
<p id="footer">test &mdash; npm@1.1.32</p> <p id="footer">test &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/uninstall.html

@ -22,7 +22,7 @@ the name of a package to be uninstalled.</p>
<p>Finally, 'callback' is a function that will be called when all packages have been <p>Finally, 'callback' is a function that will be called when all packages have been
uninstalled or when an error has been encountered.</p> uninstalled or when an error has been encountered.</p>
</div> </div>
<p id="footer">uninstall &mdash; npm@1.1.32</p> <p id="footer">uninstall &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/unpublish.html

@ -26,7 +26,7 @@ is what is meant.</p>
<p>If no version is specified, or if all versions are removed then <p>If no version is specified, or if all versions are removed then
the root package entry is removed from the registry entirely.</p> the root package entry is removed from the registry entirely.</p>
</div> </div>
<p id="footer">unpublish &mdash; npm@1.1.32</p> <p id="footer">unpublish &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/update.html

@ -18,7 +18,7 @@
<p>The 'packages' argument is an array of packages to update. The 'callback' parameter will be called when done or when an error occurs.</p> <p>The 'packages' argument is an array of packages to update. The 'callback' parameter will be called when done or when an error occurs.</p>
</div> </div>
<p id="footer">update &mdash; npm@1.1.32</p> <p id="footer">update &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/version.html

@ -24,7 +24,7 @@ fail if the repo is not clean.</p>
parameter. The difference, however, is this function will fail if it does 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> not have exactly one element. The only element should be a version number.</p>
</div> </div>
<p id="footer">version &mdash; npm@1.1.32</p> <p id="footer">version &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/view.html

@ -99,7 +99,7 @@ the field name.</p>
<p>corresponding to the list of fields selected.</p> <p>corresponding to the list of fields selected.</p>
</div> </div>
<p id="footer">view &mdash; npm@1.1.32</p> <p id="footer">view &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/api/whoami.html

@ -21,7 +21,7 @@
<p>This function is not useful programmatically</p> <p>This function is not useful programmatically</p>
</div> </div>
<p id="footer">whoami &mdash; npm@1.1.32</p> <p id="footer">whoami &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/README.html

@ -261,7 +261,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> <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> </div>
<p id="footer"><a href="../doc/README.html">README</a> &mdash; npm@1.1.32</p> <p id="footer"><a href="../doc/README.html">README</a> &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/adduser.html

@ -39,7 +39,7 @@ authorize on a new machine.</p>
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li><li><a href="../doc/whoami.html">whoami(1)</a></li></ul> <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> </div>
<p id="footer">adduser &mdash; npm@1.1.32</p> <p id="footer">adduser &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/bin.html

@ -20,7 +20,7 @@
<ul><li><a href="../doc/prefix.html">prefix(1)</a></li><li><a href="../doc/root.html">root(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> <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> </div>
<p id="footer">bin &mdash; npm@1.1.32</p> <p id="footer">bin &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/bugs.html

@ -36,7 +36,7 @@ config param.</p>
<ul><li><a href="../doc/docs.html">docs(1)</a></li><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul> <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> </div>
<p id="footer">bugs &mdash; npm@1.1.32</p> <p id="footer">bugs &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/build.html

@ -25,7 +25,7 @@ A folder containing a <code>package.json</code> file in its root.</li></ul>
<ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul> <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> </div>
<p id="footer">build &mdash; npm@1.1.32</p> <p id="footer">build &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/bundle.html

@ -20,7 +20,7 @@ install packages into the local space.</p>
<ul><li><a href="../doc/install.html">install(1)</a></li></ul> <ul><li><a href="../doc/install.html">install(1)</a></li></ul>
</div> </div>
<p id="footer">bundle &mdash; npm@1.1.32</p> <p id="footer">bundle &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/cache.html

@ -66,7 +66,7 @@ they do not make an HTTP request to the registry.</p>
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/pack.html">pack(1)</a></li></ul> <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> </div>
<p id="footer">cache &mdash; npm@1.1.32</p> <p id="footer">cache &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/changelog.html

@ -65,7 +65,7 @@
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li></ul> <ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li></ul>
</div> </div>
<p id="footer">changelog &mdash; npm@1.1.32</p> <p id="footer">changelog &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/coding-style.html

@ -180,7 +180,7 @@ set to anything."</p>
<ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul> <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> </div>
<p id="footer">coding-style &mdash; npm@1.1.32</p> <p id="footer">coding-style &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/completion.html

@ -33,7 +33,7 @@ completions based on the arguments.</p>
<ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul> <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> </div>
<p id="footer">completion &mdash; npm@1.1.32</p> <p id="footer">completion &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

56
deps/npm/html/doc/config.html

@ -176,6 +176,24 @@ to trust only that specific signing authority.</p>
<p>The location of npm's cache directory. See <code><a href="../doc/cache.html">cache(1)</a></code></p> <p>The location of npm's cache directory. See <code><a href="../doc/cache.html">cache(1)</a></code></p>
<h3 id="cache-lock-stale">cache-lock-stale</h3>
<ul><li>Default: 60000 (1 minute)</li><li>Type: Number</li></ul>
<p>The number of ms before cache folder lockfiles are considered stale.</p>
<h3 id="cache-lock-retries">cache-lock-retries</h3>
<ul><li>Default: 10</li><li>Type: Number</li></ul>
<p>Number of times to retry to acquire a lock on cache folder lockfiles.</p>
<h3 id="cache-lock-wait">cache-lock-wait</h3>
<ul><li>Default: 10000 (10 seconds)</li><li>Type: Number</li></ul>
<p>Number of ms to wait for cache lock files to expire.</p>
<h3 id="cache-max">cache-max</h3> <h3 id="cache-max">cache-max</h3>
<ul><li>Default: Infinity</li><li>Type: Number</li></ul> <ul><li>Default: Infinity</li><li>Type: Number</li></ul>
@ -239,6 +257,14 @@ or <code>"notepad"</code> on Windows.</li><li>Type: path</li></ul>
<p>The command to run for <code>npm edit</code> or <code>npm config edit</code>.</p> <p>The command to run for <code>npm edit</code> or <code>npm config edit</code>.</p>
<h3 id="engine-strict">engine-strict</h3>
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
<p>If set to true, then npm will stubbornly refuse to install (or even
consider installing) any package that claims to not be compatible with
the current Node.js version.</p>
<h3 id="force">force</h3> <h3 id="force">force</h3>
<ul><li>Default: false</li><li>Type: Boolean</li></ul> <ul><li>Default: false</li><li>Type: Boolean</li></ul>
@ -247,6 +273,34 @@ or <code>"notepad"</code> on Windows.</li><li>Type: path</li></ul>
<ul><li>lifecycle script failure does not block progress.</li><li>publishing clobbers previously published versions.</li><li>skips cache when requesting from the registry.</li><li>prevents checks against clobbering non-npm files.</li></ul> <ul><li>lifecycle script failure does not block progress.</li><li>publishing clobbers previously published versions.</li><li>skips cache when requesting from the registry.</li><li>prevents checks against clobbering non-npm files.</li></ul>
<h3 id="fetch-retries">fetch-retries</h3>
<ul><li>Default: 2</li><li>Type: Number</li></ul>
<p>The "retries" config for the <code>retry</code> module to use when fetching
packages from the registry.</p>
<h3 id="fetch-retry-factor">fetch-retry-factor</h3>
<ul><li>Default: 10</li><li>Type: Number</li></ul>
<p>The "factor" config for the <code>retry</code> module to use when fetching
packages.</p>
<h3 id="fetch-retry-mintimeout">fetch-retry-mintimeout</h3>
<ul><li>Default: 10000 (10 seconds)</li><li>Type: Number</li></ul>
<p>The "minTimeout" config for the <code>retry</code> module to use when fetching
packages.</p>
<h3 id="fetch-retry-maxtimeout">fetch-retry-maxtimeout</h3>
<ul><li>Default: 60000 (1 minute)</li><li>Type: Number</li></ul>
<p>The "maxTimeout" config for the <code>retry</code> module to use when fetching
packages.</p>
<h3 id="git">git</h3> <h3 id="git">git</h3>
<ul><li>Default: <code>"git"</code></li><li>Type: String</li></ul> <ul><li>Default: <code>"git"</code></li><li>Type: String</li></ul>
@ -681,7 +735,7 @@ then answer "no" to any prompt.</p>
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul> <ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul>
</div> </div>
<p id="footer">config &mdash; npm@1.1.32</p> <p id="footer">config &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/deprecate.html

@ -29,7 +29,7 @@ something like this:</p>
<ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul> <ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
</div> </div>
<p id="footer">deprecate &mdash; npm@1.1.32</p> <p id="footer">deprecate &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/developers.html

@ -160,7 +160,7 @@ from a fresh checkout.</p>
<ul><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul> <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> </div>
<p id="footer">developers &mdash; npm@1.1.32</p> <p id="footer">developers &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/disputes.html

@ -80,7 +80,7 @@ license statement)</li><li>Illegal content.</li></ol>
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li></ul> <ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li></ul>
</div> </div>
<p id="footer">disputes &mdash; npm@1.1.32</p> <p id="footer">disputes &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/docs.html

@ -37,7 +37,7 @@ config param.</p>
<ul><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul> <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> </div>
<p id="footer">docs &mdash; npm@1.1.32</p> <p id="footer">docs &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/edit.html

@ -37,7 +37,7 @@ or <code>"notepad"</code> on Windows.</li><li>Type: path</li></ul>
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/explore.html">explore(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> <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> </div>
<p id="footer">edit &mdash; npm@1.1.32</p> <p id="footer">edit &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/explore.html

@ -40,7 +40,7 @@ Windows</li><li>Type: path</li></ul>
<ul><li><a href="../doc/submodule.html">submodule(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/edit.html">edit(1)</a></li><li><a href="../doc/rebuild.html">rebuild(1)</a></li><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul> <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> </div>
<p id="footer">explore &mdash; npm@1.1.32</p> <p id="footer">explore &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/faq.html

@ -241,7 +241,7 @@ We'll have someone kick it or something.</p>
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li></ul> <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> </div>
<p id="footer">faq &mdash; npm@1.1.32</p> <p id="footer">faq &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/folders.html

@ -205,7 +205,7 @@ cannot be found elsewhere. See <code><a href="../doc/json.html">json(1)</a></co
<ul><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/pack.html">pack(1)</a></li><li><a href="../doc/cache.html">cache(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li></ul> <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> </div>
<p id="footer">folders &mdash; npm@1.1.32</p> <p id="footer">folders &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/help-search.html

@ -38,7 +38,7 @@ where the terms were found in the documentation.</p>
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/help.html">help(1)</a></li></ul> <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> </div>
<p id="footer">help-search &mdash; npm@1.1.32</p> <p id="footer">help-search &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/help.html

@ -36,7 +36,7 @@ matches are equivalent to specifying a topic name.</p>
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/README.html">README</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/help-search.html">help-search(1)</a></li><li><a href="../doc/index.html">index(1)</a></li></ul> <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> </div>
<p id="footer">help &mdash; npm@1.1.32</p> <p id="footer">help &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/index.html

@ -384,7 +384,7 @@
<p> Display npm username</p> <p> Display npm username</p>
</div> </div>
<p id="footer">index &mdash; npm@1.1.32</p> <p id="footer">index &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/init.html

@ -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> <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> </div>
<p id="footer">init &mdash; npm@1.1.32</p> <p id="footer">init &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/install.html

@ -133,7 +133,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> <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> </div>
<p id="footer">install &mdash; npm@1.1.32</p> <p id="footer">install &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

21
deps/npm/html/doc/json.html

@ -425,8 +425,7 @@ if (foo) {
<h2 id="engines">engines</h2> <h2 id="engines">engines</h2>
<p>You can specify the version of <p>You can specify the version of node that your stuff works on:</p>
node that your stuff works on:</p>
<pre><code>{ "engines" : { "node" : "&gt;=0.1.27 &lt;0.1.30" } }</code></pre> <pre><code>{ "engines" : { "node" : "&gt;=0.1.27 &lt;0.1.30" } }</code></pre>
@ -442,6 +441,22 @@ are capable of properly installing your program. For example:</p>
<pre><code>{ "engines" : { "npm" : "~1.0.20" } }</code></pre> <pre><code>{ "engines" : { "npm" : "~1.0.20" } }</code></pre>
<p>Note that, unless the user has set the <code>engine-strict</code> config flag, this
field is advisory only.</p>
<h2 id="engineStrict">engineStrict</h2>
<p>If you are sure that your module will <em>definitely not</em> run properly on
versions of Node/npm other than those specified in the <code>engines</code> hash,
then you can set <code>"engineStrict": true</code> in your package.json file.
This will override the user's <code>engine-strict</code> config setting.</p>
<p>Please do not do this unless you are really very very sure. If your
engines hash is something overly restrictive, you can quite easily and
inadvertently lock yourself into obscurity and prevent your users from
updating to new versions of Node. Consider this choice carefully. If
people abuse it, it will be removed in a future version of npm.</p>
<h2 id="os">os</h2> <h2 id="os">os</h2>
<p>You can specify which operating systems your <p>You can specify which operating systems your
@ -509,7 +524,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> <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> </div>
<p id="footer">json &mdash; npm@1.1.32</p> <p id="footer">json &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/link.html

@ -58,7 +58,7 @@ installation target into your project's <code>node_modules</code> folder.</p>
<ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> <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> </div>
<p id="footer">link &mdash; npm@1.1.32</p> <p id="footer">link &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/list.html

@ -58,7 +58,7 @@ project.</p>
<ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/prune.html">prune(1)</a></li><li><a href="../doc/outdated.html">outdated(1)</a></li><li><a href="../doc/update.html">update(1)</a></li></ul> <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> </div>
<p id="footer">list &mdash; npm@1.1.32</p> <p id="footer">list &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

4
deps/npm/html/doc/npm.html

@ -14,7 +14,7 @@
<h2 id="VERSION">VERSION</h2> <h2 id="VERSION">VERSION</h2>
<p>1.1.32</p> <p>1.1.33</p>
<h2 id="DESCRIPTION">DESCRIPTION</h2> <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> <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> </div>
<p id="footer">npm &mdash; npm@1.1.32</p> <p id="footer">npm &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/outdated.html

@ -21,7 +21,7 @@ packages are currently outdated.</p>
<ul><li><a href="../doc/update.html">update(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li></ul> <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> </div>
<p id="footer">outdated &mdash; npm@1.1.32</p> <p id="footer">outdated &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/owner.html

@ -34,7 +34,7 @@ that is not implemented at this time.</p>
<ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/disputes.html">disputes(1)</a></li></ul> <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> </div>
<p id="footer">owner &mdash; npm@1.1.32</p> <p id="footer">owner &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/pack.html

@ -29,7 +29,7 @@ overwritten the second time.</p>
<ul><li><a href="../doc/cache.html">cache(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> <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> </div>
<p id="footer">pack &mdash; npm@1.1.32</p> <p id="footer">pack &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/prefix.html

@ -20,7 +20,7 @@
<ul><li><a href="../doc/root.html">root(1)</a></li><li><a href="../doc/bin.html">bin(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> <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> </div>
<p id="footer">prefix &mdash; npm@1.1.32</p> <p id="footer">prefix &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/prune.html

@ -25,7 +25,7 @@ package's dependencies list.</p>
<ul><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul> <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> </div>
<p id="footer">prune &mdash; npm@1.1.32</p> <p id="footer">prune &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/publish.html

@ -29,7 +29,7 @@ the registry. Overwrites when the "--force" flag is set.</p>
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li><li><a href="../doc/deprecate.html">deprecate(1)</a></li><li><a href="../doc/tag.html">tag(1)</a></li></ul> <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> </div>
<p id="footer">publish &mdash; npm@1.1.32</p> <p id="footer">publish &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/rebuild.html

@ -25,7 +25,7 @@ the new binary.</p>
<ul><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul> <ul><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul>
</div> </div>
<p id="footer">rebuild &mdash; npm@1.1.32</p> <p id="footer">rebuild &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/registry.html

@ -97,7 +97,7 @@ ask for help on the <a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com
<ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/disputes.html">disputes(1)</a></li></ul> <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> </div>
<p id="footer">registry &mdash; npm@1.1.32</p> <p id="footer">registry &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/removing-npm.html

@ -58,7 +58,7 @@ modules. To track those down, you can do the following:</p>
<ul><li><a href="../doc/README.html">README</a></li><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/prune.html">prune(1)</a></li></ul> <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> </div>
<p id="footer">removing-npm &mdash; npm@1.1.32</p> <p id="footer">removing-npm &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/restart.html

@ -24,7 +24,7 @@ the "start" script.</p>
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul> <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> </div>
<p id="footer">restart &mdash; npm@1.1.32</p> <p id="footer">restart &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/root.html

@ -20,7 +20,7 @@
<ul><li><a href="../doc/prefix.html">prefix(1)</a></li><li><a href="../doc/bin.html">bin(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> <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> </div>
<p id="footer">root &mdash; npm@1.1.32</p> <p id="footer">root &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/run-script.html

@ -23,7 +23,7 @@ called directly, as well.</p>
<ul><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul> <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> </div>
<p id="footer">run-script &mdash; npm@1.1.32</p> <p id="footer">run-script &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/scripts.html

@ -177,7 +177,7 @@ will sudo the npm command in question.</li></ul>
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul> <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> </div>
<p id="footer">scripts &mdash; npm@1.1.32</p> <p id="footer">scripts &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/search.html

@ -24,7 +24,7 @@ expression characters must be escaped or quoted in most shells.)</p>
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/view.html">view(1)</a></li></ul> <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> </div>
<p id="footer">search &mdash; npm@1.1.32</p> <p id="footer">search &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/semver.html

@ -104,7 +104,7 @@ that satisfies the range, or null if none of them do.</li></ul>
<ul><li><a href="../doc/json.html">json(1)</a></li></ul> <ul><li><a href="../doc/json.html">json(1)</a></li></ul>
</div> </div>
<p id="footer">semver &mdash; npm@1.1.32</p> <p id="footer">semver &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/shrinkwrap.html

@ -169,7 +169,7 @@ versions.</p>
<ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul> <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> </div>
<p id="footer">shrinkwrap &mdash; npm@1.1.32</p> <p id="footer">shrinkwrap &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/star.html

@ -26,7 +26,7 @@ a vaguely positive way to show that you care.</p>
<ul><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/whoami.html">whoami(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li></ul> <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> </div>
<p id="footer">star &mdash; npm@1.1.32</p> <p id="footer">star &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/start.html

@ -20,7 +20,7 @@
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul> <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> </div>
<p id="footer">start &mdash; npm@1.1.32</p> <p id="footer">start &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/stop.html

@ -20,7 +20,7 @@
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li></ul> <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> </div>
<p id="footer">stop &mdash; npm@1.1.32</p> <p id="footer">stop &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/submodule.html

@ -33,7 +33,7 @@ dependencies into the submodule folder.</p>
<ul><li><a href="../doc/json.html">json(1)</a></li><li>git help submodule</li></ul> <ul><li><a href="../doc/json.html">json(1)</a></li><li>git help submodule</li></ul>
</div> </div>
<p id="footer">submodule &mdash; npm@1.1.32</p> <p id="footer">submodule &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/tag.html

@ -21,7 +21,7 @@
<ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> <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> </div>
<p id="footer">tag &mdash; npm@1.1.32</p> <p id="footer">tag &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/test.html

@ -23,7 +23,7 @@ true.</p>
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul> <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> </div>
<p id="footer">test &mdash; npm@1.1.32</p> <p id="footer">test &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/uninstall.html

@ -22,7 +22,7 @@ on its behalf.</p>
<ul><li><a href="../doc/prune.html">prune(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul> <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> </div>
<p id="footer">uninstall &mdash; npm@1.1.32</p> <p id="footer">uninstall &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/unpublish.html

@ -34,7 +34,7 @@ the root package entry is removed from the registry entirely.</p>
<ul><li><a href="../doc/deprecate.html">deprecate(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li></ul> <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> </div>
<p id="footer">unpublish &mdash; npm@1.1.32</p> <p id="footer">unpublish &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/update.html

@ -23,7 +23,7 @@
<ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/outdated.html">outdated(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul> <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> </div>
<p id="footer">update &mdash; npm@1.1.32</p> <p id="footer">update &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/version.html

@ -31,7 +31,7 @@ will use it as a commit message when creating a version commit.</p>
<ul><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/semver.html">semver(1)</a></li></ul> <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> </div>
<p id="footer">version &mdash; npm@1.1.32</p> <p id="footer">version &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/view.html

@ -88,7 +88,7 @@ the field name.</p>
<ul><li><a href="../doc/search.html">search(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/docs.html">docs(1)</a></li></ul> <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> </div>
<p id="footer">view &mdash; npm@1.1.32</p> <p id="footer">view &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

2
deps/npm/html/doc/whoami.html

@ -20,7 +20,7 @@
<ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li></ul> <ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li></ul>
</div> </div>
<p id="footer">whoami &mdash; npm@1.1.32</p> <p id="footer">whoami &mdash; npm@1.1.33</p>
<script> <script>
;(function () { ;(function () {
var wrapper = document.getElementById("wrapper") var wrapper = document.getElementById("wrapper")

274
deps/npm/lib/cache.js

@ -1,6 +1,30 @@
// XXX lib/utils/tar.js and this file need to be rewritten. // XXX lib/utils/tar.js and this file need to be rewritten.
// URL-to-cache folder mapping:
// : -> !
// @ -> _
// http://registry.npmjs.org/foo/version -> cache/http!/...
//
/* /*
fetching a url:
1. Check for url in inFlightUrls. If present, add cb, and return.
2. create inFlightURL list
3. Acquire lock at {cache}/{sha(url)}.lock
retries = {cache-lock-retries, def=3}
stale = {cache-lock-stale, def=30000}
wait = {cache-lock-wait, def=100}
4. if lock can't be acquired, then fail
5. fetch url, clear lock, call cbs
cache folders:
1. urls: http!/server.com/path/to/thing
2. c:\path\to\thing: file!/c!/path/to/thing
3. /path/to/thing: file!/path/to/thing
4. git@ private: git_github.com!isaacs/npm
5. git://public: git!/github.com/isaacs/npm
6. git+blah:// git-blah!/server.com/foo/bar
adding a folder: adding a folder:
1. tar into tmp/random/package.tgz 1. tar into tmp/random/package.tgz
2. untar into tmp/random/contents/package, stripping one dir piece 2. untar into tmp/random/contents/package, stripping one dir piece
@ -49,6 +73,9 @@ var mkdir = require("mkdirp")
, fileCompletion = require("./utils/completion/file-completion.js") , fileCompletion = require("./utils/completion/file-completion.js")
, url = require("url") , url = require("url")
, chownr = require("chownr") , chownr = require("chownr")
, lockFile = require("lockfile")
, crypto = require("crypto")
, retry = require("retry")
cache.usage = "npm cache add <tarball file>" cache.usage = "npm cache add <tarball file>"
+ "\nnpm cache add <folder>" + "\nnpm cache add <folder>"
@ -238,10 +265,26 @@ function add (args, cb) {
default: default:
// if we have a name and a spec, then try name@spec // if we have a name and a spec, then try name@spec
// if not, then try just spec (which may try name@"" if not found) // if not, then try just spec (which may try name@"" if not found)
return name ? addNamed(name, spec, cb) : addLocal(spec, cb) if (name) {
addNamed(name, spec, cb)
} else {
addLocal(spec, cb)
}
} }
} }
function fetchAndShaCheck (u, tmp, shasum, cb) {
fetch(u, tmp, function (er, response) {
if (er) {
log.error("fetch failed", u)
return cb(er, response)
}
if (!shasum) return cb()
// validate that the url we just downloaded matches the expected shasum.
sha.check(tmp, shasum, cb)
})
}
// Only have a single download action at once for a given url // Only have a single download action at once for a given url
// additional calls stack the callbacks. // additional calls stack the callbacks.
var inFlightURLs = {} var inFlightURLs = {}
@ -255,29 +298,48 @@ function addRemoteTarball (u, shasum, name, cb_) {
if (iF.length > 1) return if (iF.length > 1) return
function cb (er, data) { function cb (er, data) {
var c unlock(u, function () {
while (c = iF.shift()) c(er, data) var c
delete inFlightURLs[u] while (c = iF.shift()) c(er, data)
delete inFlightURLs[u]
})
} }
log.verbose("addRemoteTarball", [u, shasum]) lock(u, function (er) {
var tmp = path.join(npm.tmp, Date.now()+"-"+Math.random(), "tmp.tgz")
mkdir(path.dirname(tmp), function (er) {
if (er) return cb(er) if (er) return cb(er)
fetch(u, tmp, function (er) {
if (er) { log.verbose("addRemoteTarball", [u, shasum])
log.error("fetch failed", u) var tmp = path.join(npm.tmp, Date.now()+"-"+Math.random(), "tmp.tgz")
return cb(er) mkdir(path.dirname(tmp), function (er) {
} if (er) return cb(er)
if (!shasum) return done() // Tuned to spread 3 attempts over about a minute.
// validate that the url we just downloaded matches the expected shasum. // See formula at <https://github.com/tim-kos/node-retry>.
sha.check(tmp, shasum, done) var operation = retry.operation
( { retries: npm.config.get("fetch-retries")
, factor: npm.config.get("fetch-retry-factor")
, minTimeout: npm.config.get("fetch-retry-mintimeout")
, maxTimeout: npm.config.get("fetch-retry-maxtimeout") })
operation.attempt(function (currentAttempt) {
log.info("retry", "fetch attempt " + currentAttempt
+ " at " + (new Date()).toLocaleTimeString())
fetchAndShaCheck(u, tmp, shasum, function (er, response) {
// Only retry on 408, 5xx or no `response`.
var statusCode = response && response.statusCode
var statusRetry = !statusCode || (statusCode === 408 || statusCode >= 500)
if (er && statusRetry && operation.retry(er)) {
log.info("retry", "will retry, error on last attempt: " + er)
return
}
done(er)
})
})
}) })
function done (er) {
if (er) return cb(er)
addLocalTarball(tmp, name, cb)
}
}) })
function done (er) {
if (er) return cb(er)
addLocalTarball(tmp, name, cb)
}
} }
// For now, this is kind of dumb. Just basically treat git as // For now, this is kind of dumb. Just basically treat git as
@ -292,48 +354,54 @@ function addRemoteGit (u, parsed, name, cb_) {
if (iF.length > 1) return if (iF.length > 1) return
function cb (er, data) { function cb (er, data) {
var c unlock(u, function () {
while (c = iF.shift()) c(er, data) var c
delete inFlightURLs[u] while (c = iF.shift()) c(er, data)
delete inFlightURLs[u]
})
} }
// figure out what we should check out. lock(u, function (er) {
var co = parsed.hash && parsed.hash.substr(1) || "master" if (er) return cb(er)
// git is so tricky!
// if the path is like ssh://foo:22/some/path then it works, but
// it needs the ssh://
// If the path is like ssh://foo:some/path then it works, but
// only if you remove the ssh://
u = u.replace(/^git\+/, "")
.replace(/#.*$/, "")
// ssh paths that are scp-style urls don't need the ssh://
if (parsed.pathname.match(/^\/?:/)) {
u = u.replace(/^ssh:\/\//, "")
}
log.verbose("addRemoteGit", [u, co]) // figure out what we should check out.
var co = parsed.hash && parsed.hash.substr(1) || "master"
// git is so tricky!
// if the path is like ssh://foo:22/some/path then it works, but
// it needs the ssh://
// If the path is like ssh://foo:some/path then it works, but
// only if you remove the ssh://
u = u.replace(/^git\+/, "")
.replace(/#.*$/, "")
// ssh paths that are scp-style urls don't need the ssh://
if (parsed.pathname.match(/^\/?:/)) {
u = u.replace(/^ssh:\/\//, "")
}
var tmp = path.join(npm.tmp, Date.now()+"-"+Math.random()) log.verbose("addRemoteGit", [u, co])
mkdir(path.dirname(tmp), function (er) {
if (er) return cb(er) var tmp = path.join(npm.tmp, Date.now()+"-"+Math.random())
exec( npm.config.get("git"), ["clone", u, tmp], null, false mkdir(path.dirname(tmp), function (er) {
, function (er, code, stdout, stderr) { if (er) return cb(er)
stdout = (stdout + "\n" + stderr).trim() exec( npm.config.get("git"), ["clone", u, tmp], null, false
if (er) {
log.error("git clone " + u, stdout)
return cb(er)
}
log.verbose("git clone "+u, stdout)
exec( npm.config.get("git"), ["checkout", co], null, false, tmp
, function (er, code, stdout, stderr) { , function (er, code, stdout, stderr) {
stdout = (stdout + "\n" + stderr).trim() stdout = (stdout + "\n" + stderr).trim()
if (er) { if (er) {
log.error("git checkout " + co, stdout) log.error("git clone " + u, stdout)
return cb(er) return cb(er)
} }
log.verbose("git checkout " + co, stdout) log.verbose("git clone "+u, stdout)
addLocalDirectory(tmp, cb) exec( npm.config.get("git"), ["checkout", co], null, false, tmp
, function (er, code, stdout, stderr) {
stdout = (stdout + "\n" + stderr).trim()
if (er) {
log.error("git checkout " + co, stdout)
return cb(er)
}
log.verbose("git checkout " + co, stdout)
addLocalDirectory(tmp, cb)
})
}) })
}) })
}) })
@ -343,8 +411,10 @@ function addRemoteGit (u, parsed, name, cb_) {
// only have one request in flight for a given // only have one request in flight for a given
// name@blah thing. // name@blah thing.
var inFlightNames = {} var inFlightNames = {}
function addNamed (name, x, cb_) { function addNamed (name, x, data, cb_) {
if (typeof cb_ !== "function") cb_ = data, data = null
log.verbose("addNamed", [name, x]) log.verbose("addNamed", [name, x])
var k = name + "@" + x var k = name + "@" + x
if (!inFlightNames[k]) inFlightNames[k] = [] if (!inFlightNames[k]) inFlightNames[k] = []
var iF = inFlightNames[k] var iF = inFlightNames[k]
@ -352,19 +422,27 @@ function addNamed (name, x, cb_) {
if (iF.length > 1) return if (iF.length > 1) return
function cb (er, data) { function cb (er, data) {
var c unlock(k, function () {
while (c = iF.shift()) c(er, data) var c
delete inFlightNames[k] while (c = iF.shift()) c(er, data)
delete inFlightNames[k]
})
} }
log.verbose("addNamed", [semver.valid(x), semver.validRange(x)]) log.verbose("addNamed", [semver.valid(x), semver.validRange(x)])
return ( null !== semver.valid(x) ? addNameVersion lock(k, function (er, fd) {
: null !== semver.validRange(x) ? addNameRange if (er) return cb(er)
: addNameTag
)(name, x, cb) var fn = ( null !== semver.valid(x) ? addNameVersion
: null !== semver.validRange(x) ? addNameRange
: addNameTag
)
fn(name, x, data, cb)
})
} }
function addNameTag (name, tag, cb) { function addNameTag (name, tag, data, cb) {
if (typeof cb !== "function") cb = data, data = null
log.info("addNameTag", [name, tag]) log.info("addNameTag", [name, tag])
var explicit = true var explicit = true
if (!tag) { if (!tag) {
@ -378,10 +456,10 @@ function addNameTag (name, tag, cb) {
if (data["dist-tags"] && data["dist-tags"][tag] if (data["dist-tags"] && data["dist-tags"][tag]
&& data.versions[data["dist-tags"][tag]]) { && data.versions[data["dist-tags"][tag]]) {
var ver = data["dist-tags"][tag] var ver = data["dist-tags"][tag]
return addNameVersion(name, ver, data.versions[ver], cb) return addNamed(name, ver, data.versions[ver], cb)
} }
if (!explicit && Object.keys(data.versions).length) { if (!explicit && Object.keys(data.versions).length) {
return addNameRange(name, "*", data, cb) return addNamed(name, "*", data, cb)
} }
return cb(installTargetsError(tag, data)) return cb(installTargetsError(tag, data))
}) })
@ -390,12 +468,14 @@ function addNameTag (name, tag, cb) {
function engineFilter (data) { function engineFilter (data) {
var npmv = npm.version var npmv = npm.version
, nodev = npm.config.get("node-version") , nodev = npm.config.get("node-version")
, strict = npm.config.get("engine-strict")
if (!nodev || npm.config.get("force")) return data if (!nodev || npm.config.get("force")) return data
Object.keys(data.versions || {}).forEach(function (v) { Object.keys(data.versions || {}).forEach(function (v) {
var eng = data.versions[v].engines var eng = data.versions[v].engines
if (!eng) return if (!eng) return
if (!strict && !data.versions[v].engineStrict) return
if (eng.node && !semver.satisfies(nodev, eng.node) if (eng.node && !semver.satisfies(nodev, eng.node)
|| eng.npm && !semver.satisfies(npmv, eng.npm)) { || eng.npm && !semver.satisfies(npmv, eng.npm)) {
delete data.versions[v] delete data.versions[v]
@ -438,12 +518,12 @@ function addNameRange (name, range, data, cb) {
function next_ () { function next_ () {
log.silly("addNameRange", "versions" log.silly("addNameRange", "versions"
, [data.name, Object.keys(data.versions)]) , [data.name, Object.keys(data.versions || {})])
// if the tagged version satisfies, then use that. // if the tagged version satisfies, then use that.
var tagged = data["dist-tags"][npm.config.get("tag")] var tagged = data["dist-tags"][npm.config.get("tag")]
if (tagged && data.versions[tagged] && semver.satisfies(tagged, range)) { if (tagged && data.versions[tagged] && semver.satisfies(tagged, range)) {
return addNameVersion(name, tagged, data.versions[tagged], cb) return addNamed(name, tagged, data.versions[tagged], cb)
} }
// find the max satisfying version. // find the max satisfying version.
@ -454,7 +534,7 @@ function addNameRange (name, range, data, cb) {
// if we don't have a registry connection, try to see if // if we don't have a registry connection, try to see if
// there's a cached copy that will be ok. // there's a cached copy that will be ok.
addNameVersion(name, ms, data.versions[ms], cb) addNamed(name, ms, data.versions[ms], cb)
} }
} }
@ -573,24 +653,29 @@ function addLocal (p, name, cb_) {
if (typeof cb_ !== "function") cb_ = name, name = "" if (typeof cb_ !== "function") cb_ = name, name = ""
function cb (er, data) { function cb (er, data) {
if (er) { unlock(p, function () {
// if it doesn't have a / in it, it might be a if (er) {
// remote thing. // if it doesn't have a / in it, it might be a
if (p.indexOf("/") === -1 && p.charAt(0) !== "." // remote thing.
&& (process.platform !== "win32" || p.indexOf("\\") === -1)) { if (p.indexOf("/") === -1 && p.charAt(0) !== "."
return addNamed(p, "", cb_) && (process.platform !== "win32" || p.indexOf("\\") === -1)) {
return addNamed(p, "", cb_)
}
log.error("addLocal", "Could not install %s", p)
return cb_(er)
} }
log.error("addLocal", "Could not install %s", p) return cb_(er, data)
return cb_(er) })
}
return cb_(er, data)
} }
// figure out if this is a folder or file. lock(p, function (er) {
fs.stat(p, function (er, s) {
if (er) return cb(er) if (er) return cb(er)
if (s.isDirectory()) addLocalDirectory(p, name, cb) // figure out if this is a folder or file.
else addLocalTarball(p, name, cb) fs.stat(p, function (er, s) {
if (er) return cb(er)
if (s.isDirectory()) addLocalDirectory(p, name, cb)
else addLocalTarball(p, name, cb)
})
}) })
} }
@ -847,3 +932,32 @@ function deprCheck (data) {
log.warn("deprecated", "%s: %s", data._id, data.deprecated) log.warn("deprecated", "%s: %s", data._id, data.deprecated)
} }
} }
function lockFileName (u) {
var c = u.replace(/[^a-zA-Z0-9]+/g, '-')
, h = crypto.createHash("sha1").update(u).digest("hex")
return path.resolve(npm.config.get("cache"), h + "-" + c + ".lock")
}
var madeCache = false
function lock (u, cb) {
// the cache dir needs to exist already for this.
if (madeCache) then()
else mkdir(npm.config.get("cache"), function (er) {
if (er) return cb(er)
madeCache = true
then()
})
function then () {
var opts = { stale: npm.config.get("cache-lock-stale")
, retries: npm.config.get("cache-lock-retries")
, wait: npm.config.get("cache-lock-wait") }
var lf = lockFileName(u)
log.verbose("lock", u, lf)
lockFile.lock(lf, opts, cb)
}
}
function unlock (u, cb) {
lockFile.unlock(lockFileName(u), cb)
}

16
deps/npm/lib/install.js

@ -710,15 +710,21 @@ function checkEngine (target, cb) {
var npmv = npm.version var npmv = npm.version
, force = npm.config.get("force") , force = npm.config.get("force")
, nodev = force ? null : npm.config.get("node-version") , nodev = force ? null : npm.config.get("node-version")
, strict = npm.config.get("engine-strict") || target.engineStrict
, eng = target.engines , eng = target.engines
if (!eng) return cb() if (!eng) return cb()
if (nodev && eng.node && !semver.satisfies(nodev, eng.node) if (nodev && eng.node && !semver.satisfies(nodev, eng.node)
|| eng.npm && !semver.satisfies(npmv, eng.npm)) { || eng.npm && !semver.satisfies(npmv, eng.npm)) {
var er = new Error("Unsupported") if (strict) {
er.code = "ENOTSUP" var er = new Error("Unsupported")
er.required = eng er.code = "ENOTSUP"
er.pkgid = target._id er.required = eng
return cb(er) er.pkgid = target._id
return cb(er)
} else {
log.warn( "engine", "%s: wanted: %j (current: %j)"
, target._id, eng, {node: nodev, npm: npm.version} )
}
} }
return cb() return cb()
} }

21
deps/npm/lib/npm.js

@ -57,13 +57,13 @@ try {
npm.version = j.version npm.version = j.version
npm.nodeVersionRequired = j.engines.node npm.nodeVersionRequired = j.engines.node
if (!semver.satisfies(process.version, j.engines.node)) { if (!semver.satisfies(process.version, j.engines.node)) {
log.error("unsupported version", ["" log.warn("unsupported version", [""
,"npm requires node version: "+j.engines.node ,"npm requires node version: "+j.engines.node
,"And you have: "+process.version ,"And you have: "+process.version
,"which is not satisfactory." ,"which is not satisfactory."
,"" ,""
,"Bad things will likely happen. You have been warned." ,"Bad things will likely happen. You have been warned."
,""].join("\n")) ,""].join("\n"))
} }
} catch (ex) { } catch (ex) {
try { try {
@ -98,6 +98,7 @@ var commandCache = {}
, "apihelp" : "help" , "apihelp" : "help"
, "login": "adduser" , "login": "adduser"
, "add-user": "adduser" , "add-user": "adduser"
, "tst": "test"
} }
, aliasNames = Object.keys(aliases) , aliasNames = Object.keys(aliases)
@ -287,6 +288,10 @@ function load (npm, conf, cb) {
, E404: npm.E404 , E404: npm.E404
, EPUBLISHCONFLICT: npm.EPUBLISHCONFLICT , EPUBLISHCONFLICT: npm.EPUBLISHCONFLICT
, log: log , log: log
, retries: npm.config.get("fetch-retries")
, retryFactor: npm.config.get("fetch-retry-factor")
, retryMinTimeout: npm.config.get("fetch-retry-mintimeout")
, retryMaxTimeout: npm.config.get("fetch-retry-maxtimeout")
}) })
var umask = parseInt(conf.umask, 8) var umask = parseInt(conf.umask, 8)
@ -443,7 +448,7 @@ Object.defineProperty(npm, "cache",
var tmpFolder var tmpFolder
Object.defineProperty(npm, "tmp", Object.defineProperty(npm, "tmp",
{ get : function () { { get : function () {
if (!tmpFolder) tmpFolder = "npm-"+Date.now() if (!tmpFolder) tmpFolder = "npm-" + process.pid
return path.resolve(npm.config.get("tmp"), tmpFolder) return path.resolve(npm.config.get("tmp"), tmpFolder)
} }
, enumerable : true , enumerable : true

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save