From 6a11bfe74bcbb4fbafb8877322c847fc2e2befc2 Mon Sep 17 00:00:00 2001
From: Timothy J Fontaine If you have a complaint about a package in the public npm registry,
and cannot resolve it with the package
owner, please email
-support@npmjs.com and explain the situation.Legal Stuff
Any data published to The npm Registry (including user account information) may be removed or modified at the sole discretion of the npm server administrators.
@@ -161,7 +161,7 @@Be sure to include all of the output from the npm command that didn't work
as expected. The npm-debug.log
file is also helpful to provide.
1.4.21
+1.4.23
This is the API documentation for npm. To find documentation of the command line @@ -110,5 +110,5 @@
npm ls promzard
in npm's source tree will show:
-npm@1.4.21 /path/to/npm
+npm@1.4.23 /path/to/npm
└─┬ init-package-json@0.0.4
└── promzard@0.1.5
It will print out extraneous, missing, and invalid packages.
@@ -85,5 +85,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-outdated.html b/deps/npm/html/doc/cli/npm-outdated.html
index 8edc9e68352ee4..e5324f171af685 100644
--- a/deps/npm/html/doc/cli/npm-outdated.html
+++ b/deps/npm/html/doc/cli/npm-outdated.html
@@ -67,5 +67,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-owner.html b/deps/npm/html/doc/cli/npm-owner.html
index a658369376c759..732a1903d9a152 100644
--- a/deps/npm/html/doc/cli/npm-owner.html
+++ b/deps/npm/html/doc/cli/npm-owner.html
@@ -49,5 +49,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-pack.html b/deps/npm/html/doc/cli/npm-pack.html
index 5c378be96df06c..8e49a639be5283 100644
--- a/deps/npm/html/doc/cli/npm-pack.html
+++ b/deps/npm/html/doc/cli/npm-pack.html
@@ -41,5 +41,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-prefix.html b/deps/npm/html/doc/cli/npm-prefix.html
index 691016503c5ba2..0ed694f38de5a9 100644
--- a/deps/npm/html/doc/cli/npm-prefix.html
+++ b/deps/npm/html/doc/cli/npm-prefix.html
@@ -35,5 +35,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-prune.html b/deps/npm/html/doc/cli/npm-prune.html
index 121f7b3919f0a2..bc0bb193afb286 100644
--- a/deps/npm/html/doc/cli/npm-prune.html
+++ b/deps/npm/html/doc/cli/npm-prune.html
@@ -39,5 +39,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-publish.html b/deps/npm/html/doc/cli/npm-publish.html
index ea8a4947ea2838..e78f18852b51ea 100644
--- a/deps/npm/html/doc/cli/npm-publish.html
+++ b/deps/npm/html/doc/cli/npm-publish.html
@@ -54,5 +54,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-rebuild.html b/deps/npm/html/doc/cli/npm-rebuild.html
index 0138ae35368092..349ada1ff6014e 100644
--- a/deps/npm/html/doc/cli/npm-rebuild.html
+++ b/deps/npm/html/doc/cli/npm-rebuild.html
@@ -38,5 +38,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-repo.html b/deps/npm/html/doc/cli/npm-repo.html
index ae61e2258e1fcf..4868a6e8580b5e 100644
--- a/deps/npm/html/doc/cli/npm-repo.html
+++ b/deps/npm/html/doc/cli/npm-repo.html
@@ -42,5 +42,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-restart.html b/deps/npm/html/doc/cli/npm-restart.html
index f1d59d010ca8be..377b00a346681b 100644
--- a/deps/npm/html/doc/cli/npm-restart.html
+++ b/deps/npm/html/doc/cli/npm-restart.html
@@ -37,5 +37,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-rm.html b/deps/npm/html/doc/cli/npm-rm.html
index f5c9641abcf0ae..8f21ca205911f7 100644
--- a/deps/npm/html/doc/cli/npm-rm.html
+++ b/deps/npm/html/doc/cli/npm-rm.html
@@ -39,5 +39,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-root.html b/deps/npm/html/doc/cli/npm-root.html
index b0d635a2b7ba22..f96202315da469 100644
--- a/deps/npm/html/doc/cli/npm-root.html
+++ b/deps/npm/html/doc/cli/npm-root.html
@@ -35,5 +35,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-run-script.html b/deps/npm/html/doc/cli/npm-run-script.html
index 2b9e3ee4998398..75824e1b38955b 100644
--- a/deps/npm/html/doc/cli/npm-run-script.html
+++ b/deps/npm/html/doc/cli/npm-run-script.html
@@ -40,5 +40,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-search.html b/deps/npm/html/doc/cli/npm-search.html
index 509243b721cfd6..d4e4ec56de87de 100644
--- a/deps/npm/html/doc/cli/npm-search.html
+++ b/deps/npm/html/doc/cli/npm-search.html
@@ -49,5 +49,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-shrinkwrap.html b/deps/npm/html/doc/cli/npm-shrinkwrap.html
index 294d0bfb5df0b1..1ada6275aa1cc3 100644
--- a/deps/npm/html/doc/cli/npm-shrinkwrap.html
+++ b/deps/npm/html/doc/cli/npm-shrinkwrap.html
@@ -164,5 +164,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-star.html b/deps/npm/html/doc/cli/npm-star.html
index af18980d3b95e4..73fd449f50439f 100644
--- a/deps/npm/html/doc/cli/npm-star.html
+++ b/deps/npm/html/doc/cli/npm-star.html
@@ -36,5 +36,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-stars.html b/deps/npm/html/doc/cli/npm-stars.html
index 27fb258310e838..6dfa98d102e6ff 100644
--- a/deps/npm/html/doc/cli/npm-stars.html
+++ b/deps/npm/html/doc/cli/npm-stars.html
@@ -37,5 +37,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-start.html b/deps/npm/html/doc/cli/npm-start.html
index d531b236364bc5..13d8b4117b4697 100644
--- a/deps/npm/html/doc/cli/npm-start.html
+++ b/deps/npm/html/doc/cli/npm-start.html
@@ -34,5 +34,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-stop.html b/deps/npm/html/doc/cli/npm-stop.html
index 11a6dc595026f7..acc13a192098c1 100644
--- a/deps/npm/html/doc/cli/npm-stop.html
+++ b/deps/npm/html/doc/cli/npm-stop.html
@@ -34,5 +34,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-submodule.html b/deps/npm/html/doc/cli/npm-submodule.html
index c8d70362bde413..61828b32b87f4a 100644
--- a/deps/npm/html/doc/cli/npm-submodule.html
+++ b/deps/npm/html/doc/cli/npm-submodule.html
@@ -42,5 +42,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-tag.html b/deps/npm/html/doc/cli/npm-tag.html
index dcd2b2a518ef63..390f27b3c0122a 100644
--- a/deps/npm/html/doc/cli/npm-tag.html
+++ b/deps/npm/html/doc/cli/npm-tag.html
@@ -44,5 +44,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-test.html b/deps/npm/html/doc/cli/npm-test.html
index 10b8d38db8d173..d12e325838b89d 100644
--- a/deps/npm/html/doc/cli/npm-test.html
+++ b/deps/npm/html/doc/cli/npm-test.html
@@ -37,5 +37,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-uninstall.html b/deps/npm/html/doc/cli/npm-uninstall.html
index a06dcda9ee6fa2..9fcd72b8dd8ae5 100644
--- a/deps/npm/html/doc/cli/npm-uninstall.html
+++ b/deps/npm/html/doc/cli/npm-uninstall.html
@@ -55,5 +55,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/cli/npm-unpublish.html b/deps/npm/html/doc/cli/npm-unpublish.html
index 5d8710a4e6998c..76cc1d4177c43e 100644
--- a/deps/npm/html/doc/cli/npm-unpublish.html
+++ b/deps/npm/html/doc/cli/npm-unpublish.html
@@ -46,5 +46,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-update.html b/deps/npm/html/doc/cli/npm-update.html
index 8fd280d2cac7c8..ce37d0f2a45856 100644
--- a/deps/npm/html/doc/cli/npm-update.html
+++ b/deps/npm/html/doc/cli/npm-update.html
@@ -38,5 +38,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-version.html b/deps/npm/html/doc/cli/npm-version.html
index 16081d8f6beb42..ed5c47e6d6141c 100644
--- a/deps/npm/html/doc/cli/npm-version.html
+++ b/deps/npm/html/doc/cli/npm-version.html
@@ -55,5 +55,5 @@ SYNOPSIS
-
+
diff --git a/deps/npm/html/doc/cli/npm-view.html b/deps/npm/html/doc/cli/npm-view.html
index ef0d82c8f60e70..f14b1caced30f9 100644
--- a/deps/npm/html/doc/cli/npm-view.html
+++ b/deps/npm/html/doc/cli/npm-view.html
@@ -82,5 +82,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm-whoami.html b/deps/npm/html/doc/cli/npm-whoami.html
index 7c977a6f039118..4789c2f2540366 100644
--- a/deps/npm/html/doc/cli/npm-whoami.html
+++ b/deps/npm/html/doc/cli/npm-whoami.html
@@ -33,5 +33,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/cli/npm.html b/deps/npm/html/doc/cli/npm.html
index a2d5eebf9e791d..f28eb532354a2f 100644
--- a/deps/npm/html/doc/cli/npm.html
+++ b/deps/npm/html/doc/cli/npm.html
@@ -13,7 +13,7 @@ npm
node package manager
SYNOPSIS
npm <command> [args]
VERSION
-1.4.21
+1.4.23
DESCRIPTION
npm is the package manager for the Node JavaScript platform. It puts
modules in place so that node can find them, and manages dependency
@@ -110,7 +110,7 @@
CONTRIBUTIONS
the issues list or ask on the mailing list.
BUGS
When you find issues, please report them:
@@ -118,7 +118,7 @@ BUGS
web:
http://github.com/npm/npm/issues
email:
-npm-@googlegroups.com
+npm-@googlegroups.com
Be sure to include all of the output from the npm command that didn't work
as expected. The npm-debug.log
file is also helpful to provide.
@@ -128,7 +128,7 @@ AUTHOR
Isaac Z. Schlueter ::
isaacs ::
@izs ::
-i@izs.me
+i@izs.me
SEE ALSO
- npm-help(1)
@@ -154,5 +154,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/files/npm-folders.html b/deps/npm/html/doc/files/npm-folders.html
index e0c81bc1036815..fb351e684b3bde 100644
--- a/deps/npm/html/doc/files/npm-folders.html
+++ b/deps/npm/html/doc/files/npm-folders.html
@@ -179,5 +179,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/files/npm-global.html b/deps/npm/html/doc/files/npm-global.html
index e0c81bc1036815..fb351e684b3bde 100644
--- a/deps/npm/html/doc/files/npm-global.html
+++ b/deps/npm/html/doc/files/npm-global.html
@@ -179,5 +179,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/files/npm-json.html b/deps/npm/html/doc/files/npm-json.html
index d5fcc037f4021c..98147f09839730 100644
--- a/deps/npm/html/doc/files/npm-json.html
+++ b/deps/npm/html/doc/files/npm-json.html
@@ -459,5 +459,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/files/npmrc.html b/deps/npm/html/doc/files/npmrc.html
index 359ae4fd5ddc6a..73a537bc8f66f5 100644
--- a/deps/npm/html/doc/files/npmrc.html
+++ b/deps/npm/html/doc/files/npmrc.html
@@ -73,5 +73,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/files/package.json.html b/deps/npm/html/doc/files/package.json.html
index d5fcc037f4021c..98147f09839730 100644
--- a/deps/npm/html/doc/files/package.json.html
+++ b/deps/npm/html/doc/files/package.json.html
@@ -459,5 +459,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/index.html b/deps/npm/html/doc/index.html
index ba39cf80299406..036cbeab1f61b6 100644
--- a/deps/npm/html/doc/index.html
+++ b/deps/npm/html/doc/index.html
@@ -228,5 +228,5 @@ semver(7)
-
+
diff --git a/deps/npm/html/doc/misc/npm-coding-style.html b/deps/npm/html/doc/misc/npm-coding-style.html
index 73f25ae97dc1d1..5a0e3dce314e56 100644
--- a/deps/npm/html/doc/misc/npm-coding-style.html
+++ b/deps/npm/html/doc/misc/npm-coding-style.html
@@ -147,5 +147,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/npm-config.html b/deps/npm/html/doc/misc/npm-config.html
index 06afe1cfbc1ed6..96328e12d10b52 100644
--- a/deps/npm/html/doc/misc/npm-config.html
+++ b/deps/npm/html/doc/misc/npm-config.html
@@ -749,5 +749,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/npm-developers.html b/deps/npm/html/doc/misc/npm-developers.html
index fa1d7f3b495a94..845431594b351a 100644
--- a/deps/npm/html/doc/misc/npm-developers.html
+++ b/deps/npm/html/doc/misc/npm-developers.html
@@ -181,5 +181,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/npm-disputes.html b/deps/npm/html/doc/misc/npm-disputes.html
index 07fa9bf5d579bc..679b65ec8094db 100644
--- a/deps/npm/html/doc/misc/npm-disputes.html
+++ b/deps/npm/html/doc/misc/npm-disputes.html
@@ -13,7 +13,7 @@ npm-disputes
Handling Module
SYNOPSIS
- Get the author email with
npm owner ls <pkgname>
-- Email the author, CC support@npmjs.com
+- Email the author, CC support@npmjs.com
- After a few weeks, if there's no resolution, we'll sort it out.
Don't squat on package names. Publish code or move out of the way.
@@ -51,12 +51,12 @@ DESCRIPTION
owner (Bob).
- Joe emails Bob, explaining the situation as respectfully as
possible, and what he would like to do with the module name. He
-adds the npm support staff support@npmjs.com to the CC list of
+adds the npm support staff support@npmjs.com to the CC list of
the email. Mention in the email that Bob can run
npm owner add
joe foo
to add Joe as an owner of the foo
package.
- After a reasonable amount of time, if Bob has not responded, or if
Bob and Joe can't come to any sort of resolution, email support
-support@npmjs.com and we'll sort it out. ("Reasonable" is
+support@npmjs.com and we'll sort it out. ("Reasonable" is
usually at least 4 weeks, but extra time is allowed around common
holidays.)
@@ -112,5 +112,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/npm-faq.html b/deps/npm/html/doc/misc/npm-faq.html
index 52c5ce34980573..959892125e2d85 100644
--- a/deps/npm/html/doc/misc/npm-faq.html
+++ b/deps/npm/html/doc/misc/npm-faq.html
@@ -237,7 +237,7 @@ I get ECONNREFUSED a lot. What'
To check if the registry is down, open up
https://registry.npmjs.org/ in a web browser. This will also tell
you if you are just unable to access the internet for some reason.
-If the registry IS down, let us know by emailing support@npmjs.com
+
If the registry IS down, let us know by emailing support@npmjs.com
or posting an issue at https://github.com/npm/npm/issues. If it's
down for the world (and not just on your local network) then we're
probably already being pinged about it.
@@ -285,5 +285,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/npm-index.html b/deps/npm/html/doc/misc/npm-index.html
index 57cfe99cd9b337..fe7c951d30770c 100644
--- a/deps/npm/html/doc/misc/npm-index.html
+++ b/deps/npm/html/doc/misc/npm-index.html
@@ -228,5 +228,5 @@ semver(7)
-
+
diff --git a/deps/npm/html/doc/misc/npm-registry.html b/deps/npm/html/doc/misc/npm-registry.html
index 3f8eb098933ead..fe1c6cc5389c07 100644
--- a/deps/npm/html/doc/misc/npm-registry.html
+++ b/deps/npm/html/doc/misc/npm-registry.html
@@ -71,5 +71,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/npm-scripts.html b/deps/npm/html/doc/misc/npm-scripts.html
index 1f02b17474ba6b..62c1f804360061 100644
--- a/deps/npm/html/doc/misc/npm-scripts.html
+++ b/deps/npm/html/doc/misc/npm-scripts.html
@@ -218,5 +218,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/removing-npm.html b/deps/npm/html/doc/misc/removing-npm.html
index 888c6f0b08bfe2..cb3b85e1d01525 100644
--- a/deps/npm/html/doc/misc/removing-npm.html
+++ b/deps/npm/html/doc/misc/removing-npm.html
@@ -57,5 +57,5 @@ SEE ALSO
-
+
diff --git a/deps/npm/html/doc/misc/semver.html b/deps/npm/html/doc/misc/semver.html
index 1119bcc52becfe..84f04d273f031e 100644
--- a/deps/npm/html/doc/misc/semver.html
+++ b/deps/npm/html/doc/misc/semver.html
@@ -165,5 +165,5 @@ Ranges
-
+
diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1
index 40656d0bce9835..0d8d8537006ebe 100644
--- a/deps/npm/man/man1/npm-ls.1
+++ b/deps/npm/man/man1/npm-ls.1
@@ -29,7 +29,7 @@ For example, running \fBnpm ls promzard\fR in npm\'s source tree will show:
.IP "" 4
.
.nf
-npm@1.4.21 /path/to/npm
+npm@1.4.23 /path/to/npm
└─┬ init\-package\-json@0\.0\.4
└── promzard@0\.1\.5
.
diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1
index e68e4806c2ac84..32800a2bb411db 100644
--- a/deps/npm/man/man1/npm.1
+++ b/deps/npm/man/man1/npm.1
@@ -14,7 +14,7 @@ npm [args]
.fi
.
.SH "VERSION"
-1.4.21
+1.4.23
.
.SH "DESCRIPTION"
npm is the package manager for the Node JavaScript platform\. It puts
diff --git a/deps/npm/man/man3/npm.3 b/deps/npm/man/man3/npm.3
index 2c1c59d98a3f40..5509d0ed4c06c7 100644
--- a/deps/npm/man/man3/npm.3
+++ b/deps/npm/man/man3/npm.3
@@ -21,7 +21,7 @@ npm\.load([configObject, ]function (er, npm) {
.fi
.
.SH "VERSION"
-1.4.21
+1.4.23
.
.SH "DESCRIPTION"
This is the API documentation for npm\.
diff --git a/deps/npm/node_modules/cmd-shim/README.md b/deps/npm/node_modules/cmd-shim/README.md
index fb997d5db2e91a..5c6bfa06306290 100644
--- a/deps/npm/node_modules/cmd-shim/README.md
+++ b/deps/npm/node_modules/cmd-shim/README.md
@@ -5,7 +5,9 @@ since symlinks are not suitable for this purpose there.
On Unix systems, you should use a symbolic link instead.
-[![Build Status](https://travis-ci.org/ForbesLindesay/cmd-shim.png?branch=master)](https://travis-ci.org/ForbesLindesay/cmd-shim) [![Dependency Status](https://gemnasium.com/ForbesLindesay/cmd-shim.png)](https://gemnasium.com/ForbesLindesay/cmd-shim)
+[![Build Status](https://img.shields.io/travis/ForbesLindesay/cmd-shim/master.svg)](https://travis-ci.org/ForbesLindesay/cmd-shim)
+[![Dependency Status](https://img.shields.io/gemnasium/ForbesLindesay/cmd-shim.svg)](https://gemnasium.com/ForbesLindesay/cmd-shim)
+[![NPM version](https://img.shields.io/npm/v/cmd-shim.svg)](http://badge.fury.io/js/cmd-shim)
## Installation
diff --git a/deps/npm/node_modules/cmd-shim/index.js b/deps/npm/node_modules/cmd-shim/index.js
index 1cfd24edc553b6..12452e3a78fe91 100644
--- a/deps/npm/node_modules/cmd-shim/index.js
+++ b/deps/npm/node_modules/cmd-shim/index.js
@@ -99,6 +99,8 @@ function writeShim_ (from, to, prog, args, cb) {
// @IF EXIST "%~dp0\node.exe" (
// "%~dp0\node.exe" "%~dp0\.\node_modules\npm\bin\npm-cli.js" %*
// ) ELSE (
+ // SETLOCAL
+ // SET PATHEXT=%PATHEXT:;.JS;=;%
// node "%~dp0\.\node_modules\npm\bin\npm-cli.js" %*
// )
var cmd
@@ -106,6 +108,8 @@ function writeShim_ (from, to, prog, args, cb) {
cmd = "@IF EXIST " + longProg + " (\r\n"
+ " " + longProg + " " + args + " " + target + " %*\r\n"
+ ") ELSE (\r\n"
+ + " @SETLOCAL\r\n"
+ + " @SET PATHEXT=%PATHEXT:;.JS;=;%\r\n"
+ " " + prog + " " + args + " " + target + " %*\r\n"
+ ")"
} else {
diff --git a/deps/npm/node_modules/cmd-shim/package.json b/deps/npm/node_modules/cmd-shim/package.json
index 32e80606f119d2..eebd59ecbce8fe 100644
--- a/deps/npm/node_modules/cmd-shim/package.json
+++ b/deps/npm/node_modules/cmd-shim/package.json
@@ -1,6 +1,6 @@
{
"name": "cmd-shim",
- "version": "1.1.1",
+ "version": "1.1.2",
"description": "Used in npm for command line application support",
"scripts": {
"test": "tap test/*.js"
@@ -11,25 +11,39 @@
},
"license": "BSD",
"optionalDependencies": {
- "graceful-fs": "2 || 3"
+ "graceful-fs": "2"
},
"dependencies": {
- "mkdirp": "~0.3.3",
+ "mkdirp": "~0.5.0",
"graceful-fs": "2"
},
"devDependencies": {
- "tap": "~0.4.1",
- "rimraf": "~2.1.4"
+ "tap": "~0.4.11",
+ "rimraf": "~2.2.8"
},
- "readme": "# cmd-shim\r\n\r\nThe cmd-shim used in npm to create executable scripts on Windows,\r\nsince symlinks are not suitable for this purpose there.\r\n\r\nOn Unix systems, you should use a symbolic link instead.\r\n\r\n[![Build Status](https://travis-ci.org/ForbesLindesay/cmd-shim.png?branch=master)](https://travis-ci.org/ForbesLindesay/cmd-shim) [![Dependency Status](https://gemnasium.com/ForbesLindesay/cmd-shim.png)](https://gemnasium.com/ForbesLindesay/cmd-shim)\r\n\r\n## Installation\r\n\r\n```\r\nnpm install cmd-shim\r\n```\r\n\r\n## API\r\n\r\n### cmdShim(from, to, cb)\r\n\r\nCreate a cmd shim at `to` for the command line program at `from`.\r\ne.g.\r\n\r\n```javascript\r\nvar cmdShim = require('cmd-shim');\r\ncmdShim(__dirname + '/cli.js', '/usr/bin/command-name', function (err) {\r\n if (err) throw err;\r\n});\r\n```\r\n\r\n### cmdShim.ifExists(from, to, cb)\r\n\r\nThe same as above, but will just continue if the file does not exist.\r\nSource:\r\n\r\n```javascript\r\nfunction cmdShimIfExists (from, to, cb) {\r\n fs.stat(from, function (er) {\r\n if (er) return cb()\r\n cmdShim(from, to, cb)\r\n })\r\n}\r\n```\r\n",
- "readmeFilename": "README.md",
"bugs": {
"url": "https://github.com/ForbesLindesay/cmd-shim/issues"
},
- "_id": "cmd-shim@1.1.1",
+ "homepage": "https://github.com/ForbesLindesay/cmd-shim",
+ "_id": "cmd-shim@1.1.2",
"dist": {
- "shasum": "87741e2a8b6307ea1ea8bf1f65287cb4a9ca977a"
+ "shasum": "e4f9198802e361e8eb43b591959ef4dc6cdb6754",
+ "tarball": "http://registry.npmjs.org/cmd-shim/-/cmd-shim-1.1.2.tgz"
+ },
+ "_from": "cmd-shim@~1.1.1",
+ "_npmVersion": "1.4.3",
+ "_npmUser": {
+ "name": "forbeslindesay",
+ "email": "forbes@lindeay.co.uk"
},
- "_from": "cmd-shim@latest",
- "_resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-1.1.1.tgz"
+ "maintainers": [
+ {
+ "name": "forbeslindesay",
+ "email": "forbes@lindesay.co.uk"
+ }
+ ],
+ "directories": {},
+ "_shasum": "e4f9198802e361e8eb43b591959ef4dc6cdb6754",
+ "_resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-1.1.2.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/cmd-shim/test/basic.js b/deps/npm/node_modules/cmd-shim/test/basic.js
index 93da5ea26eb69b..004bf9d5c35181 100644
--- a/deps/npm/node_modules/cmd-shim/test/basic.js
+++ b/deps/npm/node_modules/cmd-shim/test/basic.js
@@ -50,6 +50,8 @@ test('env shebang', function (t) {
"@IF EXIST \"%~dp0\\node.exe\" (\r"+
"\n \"%~dp0\\node.exe\" \"%~dp0\\from.env\" %*\r"+
"\n) ELSE (\r"+
+ "\n @SETLOCAL\r"+
+ "\n @SET PATHEXT=%PATHEXT:;.JS;=;%\r"+
"\n node \"%~dp0\\from.env\" %*\r"+
"\n)")
t.end()
@@ -86,6 +88,8 @@ test('env shebang with args', function (t) {
"@IF EXIST \"%~dp0\\node.exe\" (\r"+
"\n \"%~dp0\\node.exe\" --expose_gc \"%~dp0\\from.env.args\" %*\r"+
"\n) ELSE (\r"+
+ "\n @SETLOCAL\r"+
+ "\n @SET PATHEXT=%PATHEXT:;.JS;=;%\r"+
"\n node --expose_gc \"%~dp0\\from.env.args\" %*\r"+
"\n)")
t.end()
@@ -123,6 +127,8 @@ test('explicit shebang', function (t) {
"@IF EXIST \"%~dp0\\/usr/bin/sh.exe\" (\r" +
"\n \"%~dp0\\/usr/bin/sh.exe\" \"%~dp0\\from.sh\" %*\r" +
"\n) ELSE (\r" +
+ "\n @SETLOCAL\r"+
+ "\n @SET PATHEXT=%PATHEXT:;.JS;=;%\r"+
"\n /usr/bin/sh \"%~dp0\\from.sh\" %*\r" +
"\n)")
t.end()
@@ -160,6 +166,8 @@ test('explicit shebang with args', function (t) {
"@IF EXIST \"%~dp0\\/usr/bin/sh.exe\" (\r" +
"\n \"%~dp0\\/usr/bin/sh.exe\" -x \"%~dp0\\from.sh.args\" %*\r" +
"\n) ELSE (\r" +
+ "\n @SETLOCAL\r"+
+ "\n @SET PATHEXT=%PATHEXT:;.JS;=;%\r"+
"\n /usr/bin/sh -x \"%~dp0\\from.sh.args\" %*\r" +
"\n)")
t.end()
diff --git a/deps/npm/node_modules/fstream-npm/LICENCE b/deps/npm/node_modules/fstream-npm/LICENCE
deleted file mode 100644
index 74489e2e2658e7..00000000000000
--- a/deps/npm/node_modules/fstream-npm/LICENCE
+++ /dev/null
@@ -1,25 +0,0 @@
-Copyright (c) Isaac Z. Schlueter
-All rights reserved.
-
-The BSD License
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
-``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/deps/npm/node_modules/fstream-npm/LICENSE b/deps/npm/node_modules/fstream-npm/LICENSE
new file mode 100644
index 00000000000000..19129e315fe593
--- /dev/null
+++ b/deps/npm/node_modules/fstream-npm/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/LICENSE b/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/LICENSE
index 0c44ae716db8f3..19129e315fe593 100644
--- a/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/LICENSE
+++ b/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/LICENSE
@@ -1,27 +1,15 @@
-Copyright (c) Isaac Z. Schlueter ("Author")
-All rights reserved.
+The ISC License
-The BSD License
+Copyright (c) Isaac Z. Schlueter and Contributors
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/ignore.js b/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/ignore.js
index 0728f7c8f14867..212fc7bdea9835 100644
--- a/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/ignore.js
+++ b/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/ignore.js
@@ -85,18 +85,18 @@ IgnoreReader.prototype.addIgnoreFiles = function () {
this.pause()
- var then = function then (er) {
+ var then = function (er) {
if (errState) return
if (er) return this.emit("error", errState = er)
if (-- count === 0) {
this.filterEntries()
this.resume()
+ } else {
+ this.addIgnoreFile(newIg[newIg.length - count], then)
}
}.bind(this)
- newIg.forEach(function (ig) {
- this.addIgnoreFile(ig, then)
- }, this)
+ this.addIgnoreFile(newIg[0], then)
}
diff --git a/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/package.json b/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/package.json
index a4794004c3e3f8..558d3dc9095003 100644
--- a/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/package.json
+++ b/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/package.json
@@ -6,7 +6,7 @@
},
"name": "fstream-ignore",
"description": "A thing for ignoring files based on globs",
- "version": "0.0.8",
+ "version": "1.0.1",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/fstream-ignore.git"
@@ -16,40 +16,24 @@
"test": "tap test/*.js"
},
"dependencies": {
- "fstream": "~0.1.17",
+ "fstream": "^1.0.0",
"inherits": "2",
- "minimatch": "^0.3.0"
+ "minimatch": "^1.0.0"
},
"devDependencies": {
"tap": "",
"rimraf": "",
"mkdirp": ""
},
- "license": "BSD",
- "gitHead": "8dfc936e8b2d25c0d82042b73a22c659e6e69a1e",
+ "license": "ISC",
+ "readme": "# fstream-ignore\n\nA fstream DirReader that filters out files that match globs in `.ignore`\nfiles throughout the tree, like how git ignores files based on a\n`.gitignore` file.\n\nHere's an example:\n\n```javascript\nvar Ignore = require(\"fstream-ignore\")\nIgnore({ path: __dirname\n , ignoreFiles: [\".ignore\", \".gitignore\"]\n })\n .on(\"child\", function (c) {\n console.error(c.path.substr(c.root.path.length + 1))\n })\n .pipe(tar.Pack())\n .pipe(fs.createWriteStream(\"foo.tar\"))\n```\n\nThis will tar up the files in __dirname into `foo.tar`, ignoring\nanything matched by the globs in any .iginore or .gitignore file.\n",
+ "readmeFilename": "README.md",
+ "gitHead": "290f2b621fa4f8fe3eec97307d22527fa2065375",
"bugs": {
"url": "https://github.com/isaacs/fstream-ignore/issues"
},
"homepage": "https://github.com/isaacs/fstream-ignore",
- "_id": "fstream-ignore@0.0.8",
- "_shasum": "cc4830fb9963178be5d9eb37569a4a0785cf9e53",
- "_from": "fstream-ignore@~0.0",
- "_npmVersion": "1.4.10",
- "_npmUser": {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "dist": {
- "shasum": "cc4830fb9963178be5d9eb37569a4a0785cf9e53",
- "tarball": "http://registry.npmjs.org/fstream-ignore/-/fstream-ignore-0.0.8.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-0.0.8.tgz",
- "readme": "ERROR: No README data found!"
+ "_id": "fstream-ignore@1.0.1",
+ "_shasum": "153df36c4fa2cb006fb915dc71ac9d75f6a17c82",
+ "_from": "fstream-ignore@^1.0.0"
}
diff --git a/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/test/read-file-order.js b/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/test/read-file-order.js
new file mode 100644
index 00000000000000..0d851164f2f2ca
--- /dev/null
+++ b/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/test/read-file-order.js
@@ -0,0 +1,81 @@
+var IgnoreFile = require("../")
+, fs = require('fs')
+
+// set the ignores just for this test
+var c = require("./common.js")
+c.ignores({ ".gitignore": ["a/b/c/abc"] })
+c.ignores({ ".ignore": ["*", "!a/b/c/abc"] })
+
+// the only files we expect to see
+var expected =
+ [ "/a"
+ , "/a/b"
+ , "/a/b/c"
+ , "/a/b/c/abc" ]
+
+var originalReadFile = fs.readFile
+, parallelCount = 0
+, firstCall
+
+// Overwrite fs.readFile so that when .gitignore and .ignore are read in
+// parallel, .ignore will always be read first.
+fs.readFile = function (filename, options, callback) {
+ if (typeof options === 'function') {
+ callback = options
+ options = false
+ }
+
+ parallelCount++
+
+ process.nextTick(function () {
+ if (parallelCount > 1) {
+ if (!firstCall) {
+ return firstCall = function (cb) {
+ originalReadFile(filename, options, function (err, data) {
+ callback(err, data)
+ if (cb) cb()
+ })
+ }
+ }
+
+ if (filename.indexOf('.gitignore') !== -1) {
+ firstCall(function () {
+ originalReadFile(filename, options, callback)
+ })
+ } else {
+ originalReadFile(filename, options, function (err, data) {
+ callback(err, data)
+ firstCall()
+ })
+ }
+ } else {
+ originalReadFile(filename, options, callback)
+ parallelCount = 0
+ }
+ })
+}
+
+require("tap").test("read file order", function (t) {
+ t.pass("start")
+
+ IgnoreFile({ path: __dirname + "/fixtures"
+ , ignoreFiles: [".gitignore", ".ignore"] })
+ .on("ignoreFile", function (e) {
+ console.error("ignore file!", e)
+ })
+ .on("child", function (e) {
+ var p = e.path.substr(e.root.path.length)
+ var i = expected.indexOf(p)
+ if (i === -1) {
+ t.fail("unexpected file found", {f: p})
+ } else {
+ t.pass(p)
+ expected.splice(i, 1)
+ }
+ })
+ .on("close", function () {
+ fs.readFile = originalReadFile
+ t.notOk(expected.length, "all expected files should be seen")
+ t.end()
+ })
+})
diff --git a/deps/npm/node_modules/fstream-npm/package.json b/deps/npm/node_modules/fstream-npm/package.json
index 299148af50eb13..31a5af5d364e71 100644
--- a/deps/npm/node_modules/fstream-npm/package.json
+++ b/deps/npm/node_modules/fstream-npm/package.json
@@ -6,26 +6,26 @@
},
"name": "fstream-npm",
"description": "fstream class for creating npm packages",
- "version": "0.1.7",
+ "version": "1.0.0",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/fstream-npm.git"
},
"main": "./fstream-npm.js",
"dependencies": {
- "fstream-ignore": "~0.0",
+ "fstream-ignore": "^1.0.0",
"inherits": "2"
},
- "license": "BSD",
+ "license": "ISC",
"readme": "# fstream-npm\n\nThis is an fstream DirReader class that will read a directory and filter\nthings according to the semantics of what goes in an npm package.\n\nFor example:\n\n```javascript\n// This will print out all the files that would be included\n// by 'npm publish' or 'npm install' of this directory.\n\nvar FN = require(\"fstream-npm\")\nFN({ path: \"./\" })\n .on(\"child\", function (e) {\n console.error(e.path.substr(e.root.path.length + 1))\n })\n```\n\n",
"readmeFilename": "README.md",
- "gitHead": "13839c9be784f2addc9352d525b35835fba01151",
+ "gitHead": "807e0a8653ab793dc2e1b3b798e6256d09f972e7",
"bugs": {
"url": "https://github.com/isaacs/fstream-npm/issues"
},
"homepage": "https://github.com/isaacs/fstream-npm",
- "_id": "fstream-npm@0.1.7",
+ "_id": "fstream-npm@1.0.0",
"scripts": {},
- "_shasum": "423dc5d1d1fcb7d878501f43c7e11a33292bd55f",
+ "_shasum": "0262c95c771d393e7cf59fcfeabce621703f3d27",
"_from": "fstream-npm@latest"
}
diff --git a/deps/npm/node_modules/fstream/lib/file-writer.js b/deps/npm/node_modules/fstream/lib/file-writer.js
index 681146258d3526..5e9902a6316f02 100644
--- a/deps/npm/node_modules/fstream/lib/file-writer.js
+++ b/deps/npm/node_modules/fstream/lib/file-writer.js
@@ -72,7 +72,11 @@ FileWriter.prototype.write = function (c) {
// allow 2 buffered writes, because otherwise there's just too
// much stop and go bs.
- return ret || (me._stream._queue && me._stream._queue.length <= 2)
+ if (ret === false && me._stream._queue) {
+ return me._stream._queue.length <= 2;
+ } else {
+ return ret;
+ }
}
FileWriter.prototype.end = function (c) {
diff --git a/deps/npm/node_modules/fstream/package.json b/deps/npm/node_modules/fstream/package.json
index fcdda9c65b0b21..59de9ebe58b51a 100644
--- a/deps/npm/node_modules/fstream/package.json
+++ b/deps/npm/node_modules/fstream/package.json
@@ -6,7 +6,7 @@
},
"name": "fstream",
"description": "Advanced file system stream things",
- "version": "0.1.28",
+ "version": "1.0.0",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/fstream.git"
@@ -16,9 +16,9 @@
"node": ">=0.6"
},
"dependencies": {
- "graceful-fs": "~3.0.2",
+ "graceful-fs": "^3.0.2",
"inherits": "~2.0.0",
- "mkdirp": "0.3",
+ "mkdirp": "^0.5.0",
"rimraf": "2"
},
"devDependencies": {
@@ -30,12 +30,12 @@
"license": "BSD",
"readme": "Like FS streams, but with stat on them, and supporting directories and\nsymbolic links, as well as normal files. Also, you can use this to set\nthe stats on a file, even if you don't change its contents, or to create\na symlink, etc.\n\nSo, for example, you can \"write\" a directory, and it'll call `mkdir`. You\ncan specify a uid and gid, and it'll call `chown`. You can specify a\n`mtime` and `atime`, and it'll call `utimes`. You can call it a symlink\nand provide a `linkpath` and it'll call `symlink`.\n\nNote that it won't automatically resolve symbolic links. So, if you\ncall `fstream.Reader('/some/symlink')` then you'll get an object\nthat stats and then ends immediately (since it has no data). To follow\nsymbolic links, do this: `fstream.Reader({path:'/some/symlink', follow:\ntrue })`.\n\nThere are various checks to make sure that the bytes emitted are the\nsame as the intended size, if the size is set.\n\n## Examples\n\n```javascript\nfstream\n .Writer({ path: \"path/to/file\"\n , mode: 0755\n , size: 6\n })\n .write(\"hello\\n\")\n .end()\n```\n\nThis will create the directories if they're missing, and then write\n`hello\\n` into the file, chmod it to 0755, and assert that 6 bytes have\nbeen written when it's done.\n\n```javascript\nfstream\n .Writer({ path: \"path/to/file\"\n , mode: 0755\n , size: 6\n , flags: \"a\"\n })\n .write(\"hello\\n\")\n .end()\n```\n\nYou can pass flags in, if you want to append to a file.\n\n```javascript\nfstream\n .Writer({ path: \"path/to/symlink\"\n , linkpath: \"./file\"\n , SymbolicLink: true\n , mode: \"0755\" // octal strings supported\n })\n .end()\n```\n\nIf isSymbolicLink is a function, it'll be called, and if it returns\ntrue, then it'll treat it as a symlink. If it's not a function, then\nany truish value will make a symlink, or you can set `type:\n'SymbolicLink'`, which does the same thing.\n\nNote that the linkpath is relative to the symbolic link location, not\nthe parent dir or cwd.\n\n```javascript\nfstream\n .Reader(\"path/to/dir\")\n .pipe(fstream.Writer(\"path/to/other/dir\"))\n```\n\nThis will do like `cp -Rp path/to/dir path/to/other/dir`. If the other\ndir exists and isn't a directory, then it'll emit an error. It'll also\nset the uid, gid, mode, etc. to be identical. In this way, it's more\nlike `rsync -a` than simply a copy.\n",
"readmeFilename": "README.md",
- "gitHead": "f757159eb6a5198a9ebc6cde1c4c1b9ae8e0d7b2",
+ "gitHead": "1468b5b583646cd4f5c535e6b53c8896a4fed40f",
"bugs": {
"url": "https://github.com/isaacs/fstream/issues"
},
"homepage": "https://github.com/isaacs/fstream",
- "_id": "fstream@0.1.28",
- "_shasum": "2b9286f3a646e30075efd0354729361c4b762a29",
- "_from": "fstream@~0.1.27"
+ "_id": "fstream@1.0.0",
+ "_shasum": "7feb8b42ebc588485bf3676a00bd048d4a2e1c28",
+ "_from": "fstream@latest"
}
diff --git a/deps/npm/node_modules/github-url-from-git/History.md b/deps/npm/node_modules/github-url-from-git/History.md
deleted file mode 100644
index fcb296bc68a384..00000000000000
--- a/deps/npm/node_modules/github-url-from-git/History.md
+++ /dev/null
@@ -1,10 +0,0 @@
-
-1.1.1 / 2013-04-23
-==================
-
- * package.json: Move test stuff to devDeps
-
-1.1.0 / 2013-04-19
-==================
-
- * Add support for gist urls
diff --git a/deps/npm/node_modules/github-url-from-git/LICENSE b/deps/npm/node_modules/github-url-from-git/LICENSE
new file mode 100644
index 00000000000000..b7409302c44e35
--- /dev/null
+++ b/deps/npm/node_modules/github-url-from-git/LICENSE
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2013 TJ Holowaychuk
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/deps/npm/node_modules/github-url-from-git/Readme.md b/deps/npm/node_modules/github-url-from-git/Readme.md
index d027e8ec66be2f..0525e44ec45448 100644
--- a/deps/npm/node_modules/github-url-from-git/Readme.md
+++ b/deps/npm/node_modules/github-url-from-git/Readme.md
@@ -28,6 +28,23 @@ describe('parse(url)', function(){
assert(null == parse(url));
})
+ it('should parse git@github.com:bcoe/thumbd.git', function() {
+ var url = 'git@github.com:bcoe/thumbd.git';
+ parse(url).should.eql('https://github.com/bcoe/thumbd');
+ })
+
+ it('should parse git@github.com:bcoe/thumbd.git#2.7.0', function() {
+ var url = 'git@github.com:bcoe/thumbd.git#2.7.0';
+ parse(url).should.eql('https://github.com/bcoe/thumbd');
+ })
+
+ it('should parse https://EastCloud@github.com/EastCloud/node-websockets.git', function() {
+ var url = 'https://EastCloud@github.com/EastCloud/node-websockets.git';
+ parse(url).should.eql('https://github.com/EastCloud/node-websockets');
+ })
+
+ // gist urls.
+
it('should parse git@gist urls', function() {
var url = 'git@gist.github.com:3135914.git';
parse(url).should.equal('https://gist.github.com/3135914')
@@ -37,5 +54,29 @@ describe('parse(url)', function(){
var url = 'https://gist.github.com/3135914.git';
parse(url).should.equal('https://gist.github.com/3135914')
})
+
+ // Handle arbitrary GitHub Enterprise domains.
+
+ it('should parse parse extra GHE urls provided', function() {
+ var url = 'git://github.example.com/treygriffith/cellar.git';
+ parse(
+ url, {extraBaseUrls: ['github.example.com']}
+ ).should.equal('https://github.example.com/treygriffith/cellar');
+ });
+
+ it('should parse GHE urls with multiple subdomains', function() {
+ var url = 'git://github.internal.example.com/treygriffith/cellar.git';
+ parse(
+ url, {extraBaseUrls: ['github.internal.example.com']}
+ ).should.equal('https://github.internal.example.com/treygriffith/cellar');
+ });
+})
+
+describe('re', function() {
+ it('should expose GitHub url parsing regex', function() {
+ parse.re.source.should.equal(
+ /^(?:https?:\/\/|git:\/\/)?(?:[^@]+@)?(gist.github.com|github.com)[:\/]([^\/]+\/[^\/]+?|[0-9]+)$/.source
+ )
+ });
})
```
diff --git a/deps/npm/node_modules/github-url-from-git/index.js b/deps/npm/node_modules/github-url-from-git/index.js
index 9ccc215f00a9eb..f1ec85ed30ac06 100644
--- a/deps/npm/node_modules/github-url-from-git/index.js
+++ b/deps/npm/node_modules/github-url-from-git/index.js
@@ -1,8 +1,9 @@
-var re = /^(?:https?:\/\/|git:\/\/)?(?:[^@]+@)?(gist.github.com|github.com)[:\/]([^\/]+\/[^\/]+?|[0-9]+)$/
-
-module.exports = function(url){
+// convert git:// form url to github URL, e.g.,
+// git://github.com/bcoe/foo.git
+// https://github.com/bcoe/foo.
+function githubUrlFromGit(url, opts){
try {
- var m = re.exec(url.replace(/\.git$/, ''));
+ var m = re(opts).exec(url.replace(/\.git(#.*)?$/, ''));
var host = m[1];
var path = m[2];
return 'https://' + host + '/' + path;
@@ -10,3 +11,22 @@ module.exports = function(url){
// ignore
}
};
+
+// generate the git:// parsing regex
+// with options, e.g., the ability
+// to specify multiple GHE domains.
+function re(opts) {
+ opts = opts || {};
+ // whitelist of URLs that should be treated as GitHub repos.
+ var baseUrls = ['gist.github.com', 'github.com'].concat(opts.extraBaseUrls || []);
+ // build regex from whitelist.
+ return new RegExp(
+ /^(?:https?:\/\/|git:\/\/)?(?:[^@]+@)?/.source +
+ '(' + baseUrls.join('|') + ')' +
+ /[:\/]([^\/]+\/[^\/]+?|[0-9]+)$/.source
+ );
+}
+
+githubUrlFromGit.re = re();
+
+module.exports = githubUrlFromGit;
diff --git a/deps/npm/node_modules/github-url-from-git/package.json b/deps/npm/node_modules/github-url-from-git/package.json
index 5673fb98957622..fb396bf95eb248 100644
--- a/deps/npm/node_modules/github-url-from-git/package.json
+++ b/deps/npm/node_modules/github-url-from-git/package.json
@@ -1,31 +1,58 @@
{
"name": "github-url-from-git",
- "version": "1.1.1",
+ "version": "1.3.0",
"description": "Parse a github git url and return the github repo url",
"main": "index.js",
"scripts": {
"test": "mocha test.js --reporter spec --require should"
},
- "repository": "",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/visionmedia/node-github-url-from-git.git"
+ },
"keywords": [
"github",
"git",
"url",
"parser"
],
- "author": "",
+ "author": {
+ "name": "TJ Holowaychuk"
+ },
"license": "MIT",
"devDependencies": {
"better-assert": "~1.0.0",
"mocha": "~1.9.0",
"should": "~1.2.2"
},
- "readme": "\n# github-url-from-git\n\n```js\ndescribe('parse(url)', function(){\n it('should support git://*', function(){\n var url = 'git://github.com/jamesor/mongoose-versioner';\n parse(url).should.equal('https://github.com/jamesor/mongoose-versioner');\n })\n\n it('should support git://*.git', function(){\n var url = 'git://github.com/treygriffith/cellar.git';\n parse(url).should.equal('https://github.com/treygriffith/cellar');\n })\n\n it('should support https://*', function(){\n var url = 'https://github.com/Empeeric/i18n-node';\n parse(url).should.equal('https://github.com/Empeeric/i18n-node');\n })\n\n it('should support https://*.git', function(){\n var url = 'https://jpillora@github.com/banchee/tranquil.git';\n parse(url).should.equal('https://github.com/banchee/tranquil');\n })\n\n it('should return undefined on failure', function(){\n var url = 'git://github.com/justgord/.git';\n assert(null == parse(url));\n })\n\n it('should parse git@gist urls', function() {\n var url = 'git@gist.github.com:3135914.git';\n parse(url).should.equal('https://gist.github.com/3135914')\n })\n\n it('should parse https://gist urls', function() {\n var url = 'https://gist.github.com/3135914.git';\n parse(url).should.equal('https://gist.github.com/3135914')\n })\n})\n```\n",
- "readmeFilename": "Readme.md",
- "_id": "github-url-from-git@1.1.1",
+ "gitHead": "d92a033d7e769264f17ae8ef4409e6a31e0cd016",
+ "bugs": {
+ "url": "https://github.com/visionmedia/node-github-url-from-git/issues"
+ },
+ "homepage": "https://github.com/visionmedia/node-github-url-from-git",
+ "_id": "github-url-from-git@1.3.0",
+ "_shasum": "6e79d9779632ca78aa645c67bb419f70e51d69f7",
+ "_from": "github-url-from-git@latest",
+ "_npmVersion": "1.5.0-alpha-4",
+ "_npmUser": {
+ "name": "bcoe",
+ "email": "bencoe@gmail.com"
+ },
+ "maintainers": [
+ {
+ "name": "tjholowaychuk",
+ "email": "tj@vision-media.ca"
+ },
+ {
+ "name": "bcoe",
+ "email": "bencoe@gmail.com"
+ }
+ ],
"dist": {
- "shasum": "a14903bccbd30c91ea41765ae68ba1b27a53c4d1"
+ "shasum": "6e79d9779632ca78aa645c67bb419f70e51d69f7",
+ "tarball": "http://registry.npmjs.org/github-url-from-git/-/github-url-from-git-1.3.0.tgz"
},
- "_from": "github-url-from-git@1.1.1",
- "_resolved": "https://registry.npmjs.org/github-url-from-git/-/github-url-from-git-1.1.1.tgz"
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/github-url-from-git/-/github-url-from-git-1.3.0.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/github-url-from-git/test.js b/deps/npm/node_modules/github-url-from-git/test.js
index e472302a00b3cf..f0675283f539fe 100644
--- a/deps/npm/node_modules/github-url-from-git/test.js
+++ b/deps/npm/node_modules/github-url-from-git/test.js
@@ -1,4 +1,3 @@
-
var parse = require('./');
var assert = require('better-assert');
@@ -28,6 +27,23 @@ describe('parse(url)', function(){
assert(null == parse(url));
})
+ it('should parse git@github.com:bcoe/thumbd.git', function() {
+ var url = 'git@github.com:bcoe/thumbd.git';
+ parse(url).should.eql('https://github.com/bcoe/thumbd');
+ })
+
+ it('should parse git@github.com:bcoe/thumbd.git#2.7.0', function() {
+ var url = 'git@github.com:bcoe/thumbd.git#2.7.0';
+ parse(url).should.eql('https://github.com/bcoe/thumbd');
+ })
+
+ it('should parse https://EastCloud@github.com/EastCloud/node-websockets.git', function() {
+ var url = 'https://EastCloud@github.com/EastCloud/node-websockets.git';
+ parse(url).should.eql('https://github.com/EastCloud/node-websockets');
+ })
+
+ // gist urls.
+
it('should parse git@gist urls', function() {
var url = 'git@gist.github.com:3135914.git';
parse(url).should.equal('https://gist.github.com/3135914')
@@ -37,4 +53,28 @@ describe('parse(url)', function(){
var url = 'https://gist.github.com/3135914.git';
parse(url).should.equal('https://gist.github.com/3135914')
})
+
+ // Handle arbitrary GitHub Enterprise domains.
+
+ it('should parse parse extra GHE urls provided', function() {
+ var url = 'git://github.example.com/treygriffith/cellar.git';
+ parse(
+ url, {extraBaseUrls: ['github.example.com']}
+ ).should.equal('https://github.example.com/treygriffith/cellar');
+ });
+
+ it('should parse GHE urls with multiple subdomains', function() {
+ var url = 'git://github.internal.example.com/treygriffith/cellar.git';
+ parse(
+ url, {extraBaseUrls: ['github.internal.example.com']}
+ ).should.equal('https://github.internal.example.com/treygriffith/cellar');
+ });
+})
+
+describe('re', function() {
+ it('should expose GitHub url parsing regex', function() {
+ parse.re.source.should.equal(
+ /^(?:https?:\/\/|git:\/\/)?(?:[^@]+@)?(gist.github.com|github.com)[:\/]([^\/]+\/[^\/]+?|[0-9]+)$/.source
+ )
+ });
})
diff --git a/deps/npm/node_modules/glob/.npmignore b/deps/npm/node_modules/glob/.npmignore
index 2af4b71c936234..c34fdd597ee0c7 100644
--- a/deps/npm/node_modules/glob/.npmignore
+++ b/deps/npm/node_modules/glob/.npmignore
@@ -1,2 +1,3 @@
.*.swp
test/a/
+node_modules/*
diff --git a/deps/npm/node_modules/glob/LICENSE b/deps/npm/node_modules/glob/LICENSE
index 0c44ae716db8f3..19129e315fe593 100644
--- a/deps/npm/node_modules/glob/LICENSE
+++ b/deps/npm/node_modules/glob/LICENSE
@@ -1,27 +1,15 @@
-Copyright (c) Isaac Z. Schlueter ("Author")
-All rights reserved.
+The ISC License
-The BSD License
+Copyright (c) Isaac Z. Schlueter and Contributors
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/deps/npm/node_modules/glob/glob.js b/deps/npm/node_modules/glob/glob.js
index 36bbba84cf6ad8..6941fc7cf1388f 100644
--- a/deps/npm/node_modules/glob/glob.js
+++ b/deps/npm/node_modules/glob/glob.js
@@ -331,34 +331,34 @@ Glob.prototype._processEmitQueue = function (m) {
this.log("peq: _stat, then next")
this._stat(m, next)
}
+ }
+ done = true
- function next(exists, isDir) {
- this.log("next", m, exists, isDir)
- var ev = m === this.EOF ? "end" : "match"
-
- // "end" can only happen once.
- assert(!this._endEmitted)
- if (ev === "end")
- this._endEmitted = true
-
- if (exists) {
- // Doesn't mean it necessarily doesn't exist, it's possible
- // we just didn't check because we don't care that much, or
- // this is EOF anyway.
- if (isDir && !m.match(/\/$/)) {
- m = m + "/"
- } else if (!isDir && m.match(/\/$/)) {
- m = m.replace(/\/+$/, "")
- }
+ function next(exists, isDir) {
+ this.log("next", m, exists, isDir)
+ var ev = m === this.EOF ? "end" : "match"
+
+ // "end" can only happen once.
+ assert(!this._endEmitted)
+ if (ev === "end")
+ this._endEmitted = true
+
+ if (exists) {
+ // Doesn't mean it necessarily doesn't exist, it's possible
+ // we just didn't check because we don't care that much, or
+ // this is EOF anyway.
+ if (isDir && !m.match(/\/$/)) {
+ m = m + "/"
+ } else if (!isDir && m.match(/\/$/)) {
+ m = m.replace(/\/+$/, "")
}
- this.log("emit", ev, m)
- this.emit(ev, m)
- this._processingEmitQueue = false
- if (done && m !== this.EOF && !this.paused)
- this._processEmitQueue()
}
+ this.log("emit", ev, m)
+ this.emit(ev, m)
+ this._processingEmitQueue = false
+ if (done && m !== this.EOF && !this.paused)
+ this._processEmitQueue()
}
- done = true
}
Glob.prototype._process = function (pattern, depth, index, cb_) {
@@ -503,12 +503,20 @@ Glob.prototype._process = function (pattern, depth, index, cb_) {
// It will only match dot entries if it starts with a dot, or if
// dot is set. Stuff like @(.foo|.bar) isn't allowed.
var pn = pattern[n]
+ var negate = !!this.minimatch.negate;
var rawGlob = pattern[n]._glob
, dotOk = this.dot || rawGlob.charAt(0) === "."
entries = entries.filter(function (e) {
- return (e.charAt(0) !== "." || dotOk) &&
- e.match(pattern[n])
+ if (e.charAt(0) !== "." || dotOk) {
+ if (negate && n === 0) {
+ return !e.match(pattern[n]);
+ } else {
+ return e.match(pattern[n]);
+ }
+ }
+
+ return null;
})
// If n === pattern.length - 1, then there's no need for the extra stat
diff --git a/deps/npm/node_modules/glob/package.json b/deps/npm/node_modules/glob/package.json
index f479f06eb159d7..5905b40cd4f57c 100644
--- a/deps/npm/node_modules/glob/package.json
+++ b/deps/npm/node_modules/glob/package.json
@@ -6,7 +6,7 @@
},
"name": "glob",
"description": "a little globber",
- "version": "4.0.3",
+ "version": "4.0.5",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/node-glob.git"
@@ -20,7 +20,7 @@
},
"dependencies": {
"inherits": "2",
- "minimatch": "^0.3.0",
+ "minimatch": "^1.0.0",
"once": "^1.3.0",
"graceful-fs": "^3.0.2"
},
@@ -33,15 +33,30 @@
"test": "tap test/*.js",
"test-regen": "TEST_REGEN=1 node test/00-setup.js"
},
- "license": "BSD",
- "readme": "# Glob\n\nMatch files using the patterns the shell uses, like stars and stuff.\n\nThis is a glob implementation in JavaScript. It uses the `minimatch`\nlibrary to do its matching.\n\n## Attention: node-glob users!\n\nThe API has changed dramatically between 2.x and 3.x. This library is\nnow 100% JavaScript, and the integer flags have been replaced with an\noptions object.\n\nAlso, there's an event emitter class, proper tests, and all the other\nthings you've come to expect from node modules.\n\nAnd best of all, no compilation!\n\n## Usage\n\n```javascript\nvar glob = require(\"glob\")\n\n// options is optional\nglob(\"**/*.js\", options, function (er, files) {\n // files is an array of filenames.\n // If the `nonull` option is set, and nothing\n // was found, then files is [\"**/*.js\"]\n // er is an error object or null.\n})\n```\n\n## Features\n\nPlease see the [minimatch\ndocumentation](https://github.com/isaacs/minimatch) for more details.\n\nSupports these glob features:\n\n* Brace Expansion\n* Extended glob matching\n* \"Globstar\" `**` matching\n\nSee:\n\n* `man sh`\n* `man bash`\n* `man 3 fnmatch`\n* `man 5 gitignore`\n* [minimatch documentation](https://github.com/isaacs/minimatch)\n\n## glob(pattern, [options], cb)\n\n* `pattern` {String} Pattern to be matched\n* `options` {Object}\n* `cb` {Function}\n * `err` {Error | null}\n * `matches` {Array} filenames found matching the pattern\n\nPerform an asynchronous glob search.\n\n## glob.sync(pattern, [options])\n\n* `pattern` {String} Pattern to be matched\n* `options` {Object}\n* return: {Array} filenames found matching the pattern\n\nPerform a synchronous glob search.\n\n## Class: glob.Glob\n\nCreate a Glob object by instanting the `glob.Glob` class.\n\n```javascript\nvar Glob = require(\"glob\").Glob\nvar mg = new Glob(pattern, options, cb)\n```\n\nIt's an EventEmitter, and starts walking the filesystem to find matches\nimmediately.\n\n### new glob.Glob(pattern, [options], [cb])\n\n* `pattern` {String} pattern to search for\n* `options` {Object}\n* `cb` {Function} Called when an error occurs, or matches are found\n * `err` {Error | null}\n * `matches` {Array} filenames found matching the pattern\n\nNote that if the `sync` flag is set in the options, then matches will\nbe immediately available on the `g.found` member.\n\n### Properties\n\n* `minimatch` The minimatch object that the glob uses.\n* `options` The options object passed in.\n* `error` The error encountered. When an error is encountered, the\n glob object is in an undefined state, and should be discarded.\n* `aborted` Boolean which is set to true when calling `abort()`. There\n is no way at this time to continue a glob search after aborting, but\n you can re-use the statCache to avoid having to duplicate syscalls.\n* `statCache` Collection of all the stat results the glob search\n performed.\n* `cache` Convenience object. Each field has the following possible\n values:\n * `false` - Path does not exist\n * `true` - Path exists\n * `1` - Path exists, and is not a directory\n * `2` - Path exists, and is a directory\n * `[file, entries, ...]` - Path exists, is a directory, and the\n array value is the results of `fs.readdir`\n\n### Events\n\n* `end` When the matching is finished, this is emitted with all the\n matches found. If the `nonull` option is set, and no match was found,\n then the `matches` list contains the original pattern. The matches\n are sorted, unless the `nosort` flag is set.\n* `match` Every time a match is found, this is emitted with the matched.\n* `error` Emitted when an unexpected error is encountered, or whenever\n any fs error occurs if `options.strict` is set.\n* `abort` When `abort()` is called, this event is raised.\n\n### Methods\n\n* `abort` Stop the search.\n\n### Options\n\nAll the options that can be passed to Minimatch can also be passed to\nGlob to change pattern matching behavior. Also, some have been added,\nor have glob-specific ramifications.\n\nAll options are false by default, unless otherwise noted.\n\nAll options are added to the glob object, as well.\n\n* `cwd` The current working directory in which to search. Defaults\n to `process.cwd()`.\n* `root` The place where patterns starting with `/` will be mounted\n onto. Defaults to `path.resolve(options.cwd, \"/\")` (`/` on Unix\n systems, and `C:\\` or some such on Windows.)\n* `dot` Include `.dot` files in normal matches and `globstar` matches.\n Note that an explicit dot in a portion of the pattern will always\n match dot files.\n* `nomount` By default, a pattern starting with a forward-slash will be\n \"mounted\" onto the root setting, so that a valid filesystem path is\n returned. Set this flag to disable that behavior.\n* `mark` Add a `/` character to directory matches. Note that this\n requires additional stat calls.\n* `nosort` Don't sort the results.\n* `stat` Set to true to stat *all* results. This reduces performance\n somewhat, and is completely unnecessary, unless `readdir` is presumed\n to be an untrustworthy indicator of file existence. It will cause\n ELOOP to be triggered one level sooner in the case of cyclical\n symbolic links.\n* `silent` When an unusual error is encountered\n when attempting to read a directory, a warning will be printed to\n stderr. Set the `silent` option to true to suppress these warnings.\n* `strict` When an unusual error is encountered\n when attempting to read a directory, the process will just continue on\n in search of other matches. Set the `strict` option to raise an error\n in these cases.\n* `cache` See `cache` property above. Pass in a previously generated\n cache object to save some fs calls.\n* `statCache` A cache of results of filesystem information, to prevent\n unnecessary stat calls. While it should not normally be necessary to\n set this, you may pass the statCache from one glob() call to the\n options object of another, if you know that the filesystem will not\n change between calls. (See \"Race Conditions\" below.)\n* `sync` Perform a synchronous glob search.\n* `nounique` In some cases, brace-expanded patterns can result in the\n same file showing up multiple times in the result set. By default,\n this implementation prevents duplicates in the result set.\n Set this flag to disable that behavior.\n* `nonull` Set to never return an empty set, instead returning a set\n containing the pattern itself. This is the default in glob(3).\n* `nocase` Perform a case-insensitive match. Note that case-insensitive\n filesystems will sometimes result in glob returning results that are\n case-insensitively matched anyway, since readdir and stat will not\n raise an error.\n* `debug` Set to enable debug logging in minimatch and glob.\n* `globDebug` Set to enable debug logging in glob, but not minimatch.\n\n## Comparisons to other fnmatch/glob implementations\n\nWhile strict compliance with the existing standards is a worthwhile\ngoal, some discrepancies exist between node-glob and other\nimplementations, and are intentional.\n\nIf the pattern starts with a `!` character, then it is negated. Set the\n`nonegate` flag to suppress this behavior, and treat leading `!`\ncharacters normally. This is perhaps relevant if you wish to start the\npattern with a negative extglob pattern like `!(a|B)`. Multiple `!`\ncharacters at the start of a pattern will negate the pattern multiple\ntimes.\n\nIf a pattern starts with `#`, then it is treated as a comment, and\nwill not match anything. Use `\\#` to match a literal `#` at the\nstart of a line, or set the `nocomment` flag to suppress this behavior.\n\nThe double-star character `**` is supported by default, unless the\n`noglobstar` flag is set. This is supported in the manner of bsdglob\nand bash 4.1, where `**` only has special significance if it is the only\nthing in a path part. That is, `a/**/b` will match `a/x/y/b`, but\n`a/**b` will not.\n\nIf an escaped pattern has no matches, and the `nonull` flag is set,\nthen glob returns the pattern as-provided, rather than\ninterpreting the character escapes. For example,\n`glob.match([], \"\\\\*a\\\\?\")` will return `\"\\\\*a\\\\?\"` rather than\n`\"*a?\"`. This is akin to setting the `nullglob` option in bash, except\nthat it does not resolve escaped pattern characters.\n\nIf brace expansion is not disabled, then it is performed before any\nother interpretation of the glob pattern. Thus, a pattern like\n`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded\n**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are\nchecked for validity. Since those two are valid, matching proceeds.\n\n## Windows\n\n**Please only use forward-slashes in glob expressions.**\n\nThough windows uses either `/` or `\\` as its path separator, only `/`\ncharacters are used by this glob implementation. You must use\nforward-slashes **only** in glob expressions. Back-slashes will always\nbe interpreted as escape characters, not path separators.\n\nResults from absolute patterns such as `/foo/*` are mounted onto the\nroot setting using `path.join`. On windows, this will by default result\nin `/foo/*` matching `C:\\foo\\bar.txt`.\n\n## Race Conditions\n\nGlob searching, by its very nature, is susceptible to race conditions,\nsince it relies on directory walking and such.\n\nAs a result, it is possible that a file that exists when glob looks for\nit may have been deleted or modified by the time it returns the result.\n\nAs part of its internal implementation, this program caches all stat\nand readdir calls that it makes, in order to cut down on system\noverhead. However, this also makes it even more susceptible to races,\nespecially if the cache or statCache objects are reused between glob\ncalls.\n\nUsers are thus advised not to use a glob result as a guarantee of\nfilesystem state in the face of rapid changes. For the vast majority\nof operations, this is never a problem.\n",
- "readmeFilename": "README.md",
- "gitHead": "3e6881cb2c584f540c814476629b5bbdfccf36f2",
+ "license": "ISC",
+ "gitHead": "a7d85acf4e89fa26d17396ab022ef98fbe1f8a4b",
"bugs": {
"url": "https://github.com/isaacs/node-glob/issues"
},
"homepage": "https://github.com/isaacs/node-glob",
- "_id": "glob@4.0.3",
- "_shasum": "cb30c860359801cb7d56436976888fc4a09a35db",
- "_from": "glob@latest"
+ "_id": "glob@4.0.5",
+ "_shasum": "95e42c9efdb3ab1f4788fd7793dfded4a3378063",
+ "_from": "glob@latest",
+ "_npmVersion": "1.4.21",
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "maintainers": [
+ {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ }
+ ],
+ "dist": {
+ "shasum": "95e42c9efdb3ab1f4788fd7793dfded4a3378063",
+ "tarball": "http://registry.npmjs.org/glob/-/glob-4.0.5.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/glob/-/glob-4.0.5.tgz"
}
diff --git a/deps/npm/node_modules/glob/test/bash-results.json b/deps/npm/node_modules/glob/test/bash-results.json
index 9b5796d6c52bb2..8223d0675b52f6 100644
--- a/deps/npm/node_modules/glob/test/bash-results.json
+++ b/deps/npm/node_modules/glob/test/bash-results.json
@@ -299,6 +299,7 @@
"./test/error-callback.js",
"./test/globstar-match.js",
"./test/mark.js",
+ "./test/negation-test.js",
"./test/new-glob-optional-options.js",
"./test/nocase-nomagic.js",
"./test/pause-resume.js",
diff --git a/deps/npm/node_modules/glob/test/error-callback.js b/deps/npm/node_modules/glob/test/error-callback.js
index 629eb28434e1f2..60d3ba1b5fd4e1 100644
--- a/deps/npm/node_modules/glob/test/error-callback.js
+++ b/deps/npm/node_modules/glob/test/error-callback.js
@@ -1,6 +1,5 @@
var fs
try { fs = require('graceful-fs') } catch (e) { fs = require('fs') }
-var fs = require('graceful-fs')
var test = require('tap').test
var glob = require('../')
diff --git a/deps/npm/node_modules/init-package-json/default-input.js b/deps/npm/node_modules/init-package-json/default-input.js
index 0cbd85b810b83f..8b335f967405e2 100644
--- a/deps/npm/node_modules/init-package-json/default-input.js
+++ b/deps/npm/node_modules/init-package-json/default-input.js
@@ -40,7 +40,7 @@ function readDeps (test) { return function (cb) {
exports.name = prompt('name', package.name || basename)
-exports.version = prompt('version', package.version || '0.0.0')
+exports.version = prompt('version', package.version || config.get('init.version') || '1.0.0')
if (!package.description) {
exports.description = prompt('description')
}
diff --git a/deps/npm/node_modules/init-package-json/node_modules/promzard/package.json b/deps/npm/node_modules/init-package-json/node_modules/promzard/package.json
index 1f1bfc6d42c0c1..bba3057d99a755 100644
--- a/deps/npm/node_modules/init-package-json/node_modules/promzard/package.json
+++ b/deps/npm/node_modules/init-package-json/node_modules/promzard/package.json
@@ -44,5 +44,6 @@
"tarball": "http://registry.npmjs.org/promzard/-/promzard-0.2.2.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/promzard/-/promzard-0.2.2.tgz"
+ "_resolved": "https://registry.npmjs.org/promzard/-/promzard-0.2.2.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/init-package-json/package.json b/deps/npm/node_modules/init-package-json/package.json
index a03182a126fbbc..ff9f926fc979f6 100644
--- a/deps/npm/node_modules/init-package-json/package.json
+++ b/deps/npm/node_modules/init-package-json/package.json
@@ -1,6 +1,6 @@
{
"name": "init-package-json",
- "version": "0.1.0",
+ "version": "1.0.0",
"main": "init-package-json.js",
"scripts": {
"test": "tap test/*.js"
@@ -21,7 +21,7 @@
"promzard": "~0.2.0",
"read": "~1.0.1",
"read-package-json": "1",
- "semver": "2.x"
+ "semver": "2.x || 3.x"
},
"devDependencies": {
"tap": "~0.2.5",
@@ -37,14 +37,29 @@
"prompt",
"start"
],
- "readme": "# init-package-json\n\nA node module to get your node module started.\n\n## Usage\n\n```javascript\nvar init = require('init-package-json')\nvar path = require('path')\n\n// a path to a promzard module. In the event that this file is\n// not found, one will be provided for you.\nvar initFile = path.resolve(process.env.HOME, '.npm-init')\n\n// the dir where we're doin stuff.\nvar dir = process.cwd()\n\n// extra stuff that gets put into the PromZard module's context.\n// In npm, this is the resolved config object. Exposed as 'config'\n// Optional.\nvar configData = { some: 'extra stuff' }\n\n// Any existing stuff from the package.json file is also exposed in the\n// PromZard module as the `package` object. There will also be free\n// vars for:\n// * `filename` path to the package.json file\n// * `basename` the tip of the package dir\n// * `dirname` the parent of the package dir\n\ninit(dir, initFile, configData, function (er, data) {\n // the data's already been written to {dir}/package.json\n // now you can do stuff with it\n})\n```\n\nOr from the command line:\n\n```\n$ npm-init\n```\n\nSee [PromZard](https://github.com/isaacs/promzard) for details about\nwhat can go in the config file.\n",
- "readmeFilename": "README.md",
- "gitHead": "378bf828106a56e340d3017258ae372a12f0efe7",
+ "gitHead": "e8c42e4be8877195e0ef2cd0b50d806afd2eec08",
"bugs": {
"url": "https://github.com/isaacs/init-package-json/issues"
},
"homepage": "https://github.com/isaacs/init-package-json",
- "_id": "init-package-json@0.1.0",
- "_shasum": "249c982759a102556f294f2592c14a2dad855f52",
- "_from": "init-package-json@latest"
+ "_id": "init-package-json@1.0.0",
+ "_shasum": "8985a99ef11589695d6d3a5d03300b1eab0dd47a",
+ "_from": "init-package-json@1.0.0",
+ "_npmVersion": "1.4.21",
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "maintainers": [
+ {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ }
+ ],
+ "dist": {
+ "shasum": "8985a99ef11589695d6d3a5d03300b1eab0dd47a",
+ "tarball": "http://registry.npmjs.org/init-package-json/-/init-package-json-1.0.0.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-1.0.0.tgz"
}
diff --git a/deps/npm/node_modules/minimatch/.travis.yml b/deps/npm/node_modules/minimatch/.travis.yml
new file mode 100644
index 00000000000000..fca8ef019405d5
--- /dev/null
+++ b/deps/npm/node_modules/minimatch/.travis.yml
@@ -0,0 +1,4 @@
+language: node_js
+node_js:
+ - 0.10
+ - 0.11
diff --git a/deps/npm/node_modules/minimatch/minimatch.js b/deps/npm/node_modules/minimatch/minimatch.js
index 4539678949eeda..47617868b99902 100644
--- a/deps/npm/node_modules/minimatch/minimatch.js
+++ b/deps/npm/node_modules/minimatch/minimatch.js
@@ -260,6 +260,13 @@ minimatch.braceExpand = function (pattern, options) {
}
Minimatch.prototype.braceExpand = braceExpand
+
+function pad(n, width, z) {
+ z = z || '0';
+ n = n + '';
+ return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
+}
+
function braceExpand (pattern, options) {
options = options || this.options
pattern = typeof pattern === "undefined"
@@ -332,13 +339,18 @@ function braceExpand (pattern, options) {
this.debug("numset", numset[1], numset[2])
var suf = braceExpand.call(this, pattern.substr(numset[0].length), options)
, start = +numset[1]
+ , needPadding = numset[1][0] === '0'
+ , startWidth = numset[1].length
+ , padded
, end = +numset[2]
, inc = start > end ? -1 : 1
, set = []
+
for (var i = start; i != (end + inc); i += inc) {
+ padded = needPadding ? pad(i, startWidth) : i + ''
// append all the suffixes
for (var ii = 0, ll = suf.length; ii < ll; ii ++) {
- set.push(i + suf[ii])
+ set.push(padded + suf[ii])
}
}
return set
diff --git a/deps/npm/node_modules/minimatch/node_modules/sigmund/package.json b/deps/npm/node_modules/minimatch/node_modules/sigmund/package.json
index 6d0305d0d3e3a4..a1f755a7c755af 100644
--- a/deps/npm/node_modules/minimatch/node_modules/sigmund/package.json
+++ b/deps/npm/node_modules/minimatch/node_modules/sigmund/package.json
@@ -50,5 +50,9 @@
],
"_shasum": "66a2b3a749ae8b5fb89efd4fcc01dc94fbe02296",
"_from": "sigmund@~1.0.0",
- "_resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.0.tgz"
+ "_resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.0.tgz",
+ "bugs": {
+ "url": "https://github.com/isaacs/sigmund/issues"
+ },
+ "homepage": "https://github.com/isaacs/sigmund"
}
diff --git a/deps/npm/node_modules/minimatch/package.json b/deps/npm/node_modules/minimatch/package.json
index 36d7df35d4dc70..d96e1d36fc7c4e 100644
--- a/deps/npm/node_modules/minimatch/package.json
+++ b/deps/npm/node_modules/minimatch/package.json
@@ -6,7 +6,7 @@
},
"name": "minimatch",
"description": "a glob matcher in javascript",
- "version": "0.3.0",
+ "version": "1.0.0",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/minimatch.git"
@@ -29,14 +29,15 @@
"type": "MIT",
"url": "http://github.com/isaacs/minimatch/raw/master/LICENSE"
},
+ "gitHead": "b374a643976eb55cdc19c60b6dd51ebe9bcc607a",
"bugs": {
"url": "https://github.com/isaacs/minimatch/issues"
},
"homepage": "https://github.com/isaacs/minimatch",
- "_id": "minimatch@0.3.0",
- "_shasum": "275d8edaac4f1bb3326472089e7949c8394699dd",
+ "_id": "minimatch@1.0.0",
+ "_shasum": "e0dd2120b49e1b724ce8d714c520822a9438576d",
"_from": "minimatch@latest",
- "_npmVersion": "1.4.10",
+ "_npmVersion": "1.4.21",
"_npmUser": {
"name": "isaacs",
"email": "i@izs.me"
@@ -48,9 +49,10 @@
}
],
"dist": {
- "shasum": "275d8edaac4f1bb3326472089e7949c8394699dd",
- "tarball": "http://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz"
+ "shasum": "e0dd2120b49e1b724ce8d714c520822a9438576d",
+ "tarball": "http://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz"
},
"directories": {},
- "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz"
+ "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/minimatch/test/brace-expand.js b/deps/npm/node_modules/minimatch/test/brace-expand.js
index 7ee278a274d3e4..e63d3f60c80e82 100644
--- a/deps/npm/node_modules/minimatch/test/brace-expand.js
+++ b/deps/npm/node_modules/minimatch/test/brace-expand.js
@@ -21,6 +21,13 @@ tap.test("brace expansion", function (t) {
, "a4b"
, "a5b" ] ]
, [ "a{b}c", ["a{b}c"] ]
+ , [ "a{00..05}b"
+ , ["a00b"
+ ,"a01b"
+ ,"a02b"
+ ,"a03b"
+ ,"a04b"
+ ,"a05b" ] ]
].forEach(function (tc) {
var p = tc[0]
, expect = tc[1]
diff --git a/deps/npm/node_modules/mkdirp/.travis.yml b/deps/npm/node_modules/mkdirp/.travis.yml
index 84fd7ca248abca..c693a939df9809 100644
--- a/deps/npm/node_modules/mkdirp/.travis.yml
+++ b/deps/npm/node_modules/mkdirp/.travis.yml
@@ -2,4 +2,4 @@ language: node_js
node_js:
- 0.6
- 0.8
- - 0.9
+ - "0.10"
diff --git a/deps/npm/node_modules/mkdirp/README.markdown b/deps/npm/node_modules/mkdirp/README.markdown
index 83b0216ab59484..3cc13153851162 100644
--- a/deps/npm/node_modules/mkdirp/README.markdown
+++ b/deps/npm/node_modules/mkdirp/README.markdown
@@ -31,25 +31,54 @@ And now /tmp/foo/bar/baz exists, huzzah!
var mkdirp = require('mkdirp');
```
-## mkdirp(dir, mode, cb)
+## mkdirp(dir, opts, cb)
Create a new directory and any necessary subdirectories at `dir` with octal
-permission string `mode`.
+permission string `opts.mode`. If `opts` is a non-object, it will be treated as
+the `opts.mode`.
-If `mode` isn't specified, it defaults to `0777 & (~process.umask())`.
+If `opts.mode` isn't specified, it defaults to `0777 & (~process.umask())`.
`cb(err, made)` fires with the error or the first directory `made`
that had to be created, if any.
-## mkdirp.sync(dir, mode)
+You can optionally pass in an alternate `fs` implementation by passing in
+`opts.fs`. Your implementation should have `opts.fs.mkdir(path, mode, cb)` and
+`opts.fs.stat(path, cb)`.
+
+## mkdirp.sync(dir, opts)
Synchronously create a new directory and any necessary subdirectories at `dir`
-with octal permission string `mode`.
+with octal permission string `opts.mode`. If `opts` is a non-object, it will be
+treated as the `opts.mode`.
-If `mode` isn't specified, it defaults to `0777 & (~process.umask())`.
+If `opts.mode` isn't specified, it defaults to `0777 & (~process.umask())`.
Returns the first directory that had to be created, if any.
+You can optionally pass in an alternate `fs` implementation by passing in
+`opts.fs`. Your implementation should have `opts.fs.mkdirSync(path, mode)` and
+`opts.fs.statSync(path)`.
+
+# usage
+
+This package also ships with a `mkdirp` command.
+
+```
+usage: mkdirp [DIR1,DIR2..] {OPTIONS}
+
+ Create each supplied directory including any necessary parent directories that
+ don't yet exist.
+
+ If the directory already exists, do nothing.
+
+OPTIONS are:
+
+ -m, --mode If a directory needs to be created, set the mode as an octal
+ permission string.
+
+```
+
# install
With [npm](http://npmjs.org) do:
@@ -58,6 +87,14 @@ With [npm](http://npmjs.org) do:
npm install mkdirp
```
+to get the library, or
+
+```
+npm install -g mkdirp
+```
+
+to get the command.
+
# license
MIT
diff --git a/deps/npm/node_modules/mkdirp/bin/cmd.js b/deps/npm/node_modules/mkdirp/bin/cmd.js
new file mode 100755
index 00000000000000..d95de15ae9743f
--- /dev/null
+++ b/deps/npm/node_modules/mkdirp/bin/cmd.js
@@ -0,0 +1,33 @@
+#!/usr/bin/env node
+
+var mkdirp = require('../');
+var minimist = require('minimist');
+var fs = require('fs');
+
+var argv = minimist(process.argv.slice(2), {
+ alias: { m: 'mode', h: 'help' },
+ string: [ 'mode' ]
+});
+if (argv.help) {
+ fs.createReadStream(__dirname + '/usage.txt').pipe(process.stdout);
+ return;
+}
+
+var paths = argv._.slice();
+var mode = argv.mode ? parseInt(argv.mode, 8) : undefined;
+
+(function next () {
+ if (paths.length === 0) return;
+ var p = paths.shift();
+
+ if (mode === undefined) mkdirp(p, cb)
+ else mkdirp(p, mode, cb)
+
+ function cb (err) {
+ if (err) {
+ console.error(err.message);
+ process.exit(1);
+ }
+ else next();
+ }
+})();
diff --git a/deps/npm/node_modules/mkdirp/bin/usage.txt b/deps/npm/node_modules/mkdirp/bin/usage.txt
new file mode 100644
index 00000000000000..f952aa2c7a979e
--- /dev/null
+++ b/deps/npm/node_modules/mkdirp/bin/usage.txt
@@ -0,0 +1,12 @@
+usage: mkdirp [DIR1,DIR2..] {OPTIONS}
+
+ Create each supplied directory including any necessary parent directories that
+ don't yet exist.
+
+ If the directory already exists, do nothing.
+
+OPTIONS are:
+
+ -m, --mode If a directory needs to be created, set the mode as an octal
+ permission string.
+
diff --git a/deps/npm/node_modules/mkdirp/index.js b/deps/npm/node_modules/mkdirp/index.js
index fda6de8a2c2313..a1742b20694fe3 100644
--- a/deps/npm/node_modules/mkdirp/index.js
+++ b/deps/npm/node_modules/mkdirp/index.js
@@ -3,27 +3,36 @@ var fs = require('fs');
module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;
-function mkdirP (p, mode, f, made) {
- if (typeof mode === 'function' || mode === undefined) {
- f = mode;
+function mkdirP (p, opts, f, made) {
+ if (typeof opts === 'function') {
+ f = opts;
+ opts = {};
+ }
+ else if (!opts || typeof opts !== 'object') {
+ opts = { mode: opts };
+ }
+
+ var mode = opts.mode;
+ var xfs = opts.fs || fs;
+
+ if (mode === undefined) {
mode = 0777 & (~process.umask());
}
if (!made) made = null;
-
+
var cb = f || function () {};
- if (typeof mode === 'string') mode = parseInt(mode, 8);
p = path.resolve(p);
-
- fs.mkdir(p, mode, function (er) {
+
+ xfs.mkdir(p, mode, function (er) {
if (!er) {
made = made || p;
return cb(null, made);
}
switch (er.code) {
case 'ENOENT':
- mkdirP(path.dirname(p), mode, function (er, made) {
+ mkdirP(path.dirname(p), opts, function (er, made) {
if (er) cb(er, made);
- else mkdirP(p, mode, cb, made);
+ else mkdirP(p, opts, cb, made);
});
break;
@@ -31,7 +40,7 @@ function mkdirP (p, mode, f, made) {
// there already. If so, then hooray! If not, then something
// is borked.
default:
- fs.stat(p, function (er2, stat) {
+ xfs.stat(p, function (er2, stat) {
// if the stat fails, then that's super weird.
// let the original error be the failure reason.
if (er2 || !stat.isDirectory()) cb(er, made)
@@ -42,24 +51,30 @@ function mkdirP (p, mode, f, made) {
});
}
-mkdirP.sync = function sync (p, mode, made) {
+mkdirP.sync = function sync (p, opts, made) {
+ if (!opts || typeof opts !== 'object') {
+ opts = { mode: opts };
+ }
+
+ var mode = opts.mode;
+ var xfs = opts.fs || fs;
+
if (mode === undefined) {
mode = 0777 & (~process.umask());
}
if (!made) made = null;
- if (typeof mode === 'string') mode = parseInt(mode, 8);
p = path.resolve(p);
try {
- fs.mkdirSync(p, mode);
+ xfs.mkdirSync(p, mode);
made = made || p;
}
catch (err0) {
switch (err0.code) {
case 'ENOENT' :
- made = sync(path.dirname(p), mode, made);
- sync(p, mode, made);
+ made = sync(path.dirname(p), opts, made);
+ sync(p, opts, made);
break;
// In the case of any other error, just see if there's a dir
@@ -68,7 +83,7 @@ mkdirP.sync = function sync (p, mode, made) {
default:
var stat;
try {
- stat = fs.statSync(p);
+ stat = xfs.statSync(p);
}
catch (err1) {
throw err0;
diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/.travis.yml b/deps/npm/node_modules/mkdirp/node_modules/minimist/.travis.yml
new file mode 100644
index 00000000000000..cc4dba29d959a2
--- /dev/null
+++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/.travis.yml
@@ -0,0 +1,4 @@
+language: node_js
+node_js:
+ - "0.8"
+ - "0.10"
diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/LICENSE b/deps/npm/node_modules/mkdirp/node_modules/minimist/LICENSE
new file mode 100644
index 00000000000000..ee27ba4b4412b0
--- /dev/null
+++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/LICENSE
@@ -0,0 +1,18 @@
+This software is released under the MIT license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/example/parse.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/example/parse.js
new file mode 100644
index 00000000000000..abff3e8ee8f5ef
--- /dev/null
+++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/example/parse.js
@@ -0,0 +1,2 @@
+var argv = require('../')(process.argv.slice(2));
+console.dir(argv);
diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/index.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/index.js
new file mode 100644
index 00000000000000..584f551a6da734
--- /dev/null
+++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/index.js
@@ -0,0 +1,187 @@
+module.exports = function (args, opts) {
+ if (!opts) opts = {};
+
+ var flags = { bools : {}, strings : {} };
+
+ [].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
+ flags.bools[key] = true;
+ });
+
+ [].concat(opts.string).filter(Boolean).forEach(function (key) {
+ flags.strings[key] = true;
+ });
+
+ var aliases = {};
+ Object.keys(opts.alias || {}).forEach(function (key) {
+ aliases[key] = [].concat(opts.alias[key]);
+ aliases[key].forEach(function (x) {
+ aliases[x] = [key].concat(aliases[key].filter(function (y) {
+ return x !== y;
+ }));
+ });
+ });
+
+ var defaults = opts['default'] || {};
+
+ var argv = { _ : [] };
+ Object.keys(flags.bools).forEach(function (key) {
+ setArg(key, defaults[key] === undefined ? false : defaults[key]);
+ });
+
+ var notFlags = [];
+
+ if (args.indexOf('--') !== -1) {
+ notFlags = args.slice(args.indexOf('--')+1);
+ args = args.slice(0, args.indexOf('--'));
+ }
+
+ function setArg (key, val) {
+ var value = !flags.strings[key] && isNumber(val)
+ ? Number(val) : val
+ ;
+ setKey(argv, key.split('.'), value);
+
+ (aliases[key] || []).forEach(function (x) {
+ setKey(argv, x.split('.'), value);
+ });
+ }
+
+ for (var i = 0; i < args.length; i++) {
+ var arg = args[i];
+
+ if (/^--.+=/.test(arg)) {
+ // Using [\s\S] instead of . because js doesn't support the
+ // 'dotall' regex modifier. See:
+ // http://stackoverflow.com/a/1068308/13216
+ var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
+ setArg(m[1], m[2]);
+ }
+ else if (/^--no-.+/.test(arg)) {
+ var key = arg.match(/^--no-(.+)/)[1];
+ setArg(key, false);
+ }
+ else if (/^--.+/.test(arg)) {
+ var key = arg.match(/^--(.+)/)[1];
+ var next = args[i + 1];
+ if (next !== undefined && !/^-/.test(next)
+ && !flags.bools[key]
+ && (aliases[key] ? !flags.bools[aliases[key]] : true)) {
+ setArg(key, next);
+ i++;
+ }
+ else if (/^(true|false)$/.test(next)) {
+ setArg(key, next === 'true');
+ i++;
+ }
+ else {
+ setArg(key, flags.strings[key] ? '' : true);
+ }
+ }
+ else if (/^-[^-]+/.test(arg)) {
+ var letters = arg.slice(1,-1).split('');
+
+ var broken = false;
+ for (var j = 0; j < letters.length; j++) {
+ var next = arg.slice(j+2);
+
+ if (next === '-') {
+ setArg(letters[j], next)
+ continue;
+ }
+
+ if (/[A-Za-z]/.test(letters[j])
+ && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
+ setArg(letters[j], next);
+ broken = true;
+ break;
+ }
+
+ if (letters[j+1] && letters[j+1].match(/\W/)) {
+ setArg(letters[j], arg.slice(j+2));
+ broken = true;
+ break;
+ }
+ else {
+ setArg(letters[j], flags.strings[letters[j]] ? '' : true);
+ }
+ }
+
+ var key = arg.slice(-1)[0];
+ if (!broken && key !== '-') {
+ if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])
+ && !flags.bools[key]
+ && (aliases[key] ? !flags.bools[aliases[key]] : true)) {
+ setArg(key, args[i+1]);
+ i++;
+ }
+ else if (args[i+1] && /true|false/.test(args[i+1])) {
+ setArg(key, args[i+1] === 'true');
+ i++;
+ }
+ else {
+ setArg(key, flags.strings[key] ? '' : true);
+ }
+ }
+ }
+ else {
+ argv._.push(
+ flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
+ );
+ }
+ }
+
+ Object.keys(defaults).forEach(function (key) {
+ if (!hasKey(argv, key.split('.'))) {
+ setKey(argv, key.split('.'), defaults[key]);
+
+ (aliases[key] || []).forEach(function (x) {
+ setKey(argv, x.split('.'), defaults[key]);
+ });
+ }
+ });
+
+ notFlags.forEach(function(key) {
+ argv._.push(key);
+ });
+
+ return argv;
+};
+
+function hasKey (obj, keys) {
+ var o = obj;
+ keys.slice(0,-1).forEach(function (key) {
+ o = (o[key] || {});
+ });
+
+ var key = keys[keys.length - 1];
+ return key in o;
+}
+
+function setKey (obj, keys, value) {
+ var o = obj;
+ keys.slice(0,-1).forEach(function (key) {
+ if (o[key] === undefined) o[key] = {};
+ o = o[key];
+ });
+
+ var key = keys[keys.length - 1];
+ if (o[key] === undefined || typeof o[key] === 'boolean') {
+ o[key] = value;
+ }
+ else if (Array.isArray(o[key])) {
+ o[key].push(value);
+ }
+ else {
+ o[key] = [ o[key], value ];
+ }
+}
+
+function isNumber (x) {
+ if (typeof x === 'number') return true;
+ if (/^0x[0-9a-f]+$/i.test(x)) return true;
+ return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
+}
+
+function longest (xs) {
+ return Math.max.apply(null, xs.map(function (x) { return x.length }));
+}
diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/package.json b/deps/npm/node_modules/mkdirp/node_modules/minimist/package.json
new file mode 100644
index 00000000000000..09e9ec44107f63
--- /dev/null
+++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/package.json
@@ -0,0 +1,67 @@
+{
+ "name": "minimist",
+ "version": "0.0.8",
+ "description": "parse argument options",
+ "main": "index.js",
+ "devDependencies": {
+ "tape": "~1.0.4",
+ "tap": "~0.4.0"
+ },
+ "scripts": {
+ "test": "tap test/*.js"
+ },
+ "testling": {
+ "files": "test/*.js",
+ "browsers": [
+ "ie/6..latest",
+ "ff/5",
+ "firefox/latest",
+ "chrome/10",
+ "chrome/latest",
+ "safari/5.1",
+ "safari/latest",
+ "opera/12"
+ ]
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/substack/minimist.git"
+ },
+ "homepage": "https://github.com/substack/minimist",
+ "keywords": [
+ "argv",
+ "getopt",
+ "parser",
+ "optimist"
+ ],
+ "author": {
+ "name": "James Halliday",
+ "email": "mail@substack.net",
+ "url": "http://substack.net"
+ },
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/substack/minimist/issues"
+ },
+ "_id": "minimist@0.0.8",
+ "dist": {
+ "shasum": "857fcabfc3397d2625b8228262e86aa7a011b05d",
+ "tarball": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
+ },
+ "_from": "minimist@0.0.8",
+ "_npmVersion": "1.4.3",
+ "_npmUser": {
+ "name": "substack",
+ "email": "mail@substack.net"
+ },
+ "maintainers": [
+ {
+ "name": "substack",
+ "email": "mail@substack.net"
+ }
+ ],
+ "directories": {},
+ "_shasum": "857fcabfc3397d2625b8228262e86aa7a011b05d",
+ "_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/readme.markdown b/deps/npm/node_modules/mkdirp/node_modules/minimist/readme.markdown
new file mode 100644
index 00000000000000..c25635323e1661
--- /dev/null
+++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/readme.markdown
@@ -0,0 +1,73 @@
+# minimist
+
+parse argument options
+
+This module is the guts of optimist's argument parser without all the
+fanciful decoration.
+
+[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)
+
+[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)
+
+# example
+
+``` js
+var argv = require('minimist')(process.argv.slice(2));
+console.dir(argv);
+```
+
+```
+$ node example/parse.js -a beep -b boop
+{ _: [], a: 'beep', b: 'boop' }
+```
+
+```
+$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz
+{ _: [ 'foo', 'bar', 'baz' ],
+ x: 3,
+ y: 4,
+ n: 5,
+ a: true,
+ b: true,
+ c: true,
+ beep: 'boop' }
+```
+
+# methods
+
+``` js
+var parseArgs = require('minimist')
+```
+
+## var argv = parseArgs(args, opts={})
+
+Return an argument object `argv` populated with the array arguments from `args`.
+
+`argv._` contains all the arguments that didn't have an option associated with
+them.
+
+Numeric-looking arguments will be returned as numbers unless `opts.string` or
+`opts.boolean` is set for that argument name.
+
+Any arguments after `'--'` will not be parsed and will end up in `argv._`.
+
+options can be:
+
+* `opts.string` - a string or array of strings argument names to always treat as
+strings
+* `opts.boolean` - a string or array of strings to always treat as booleans
+* `opts.alias` - an object mapping string names to strings or arrays of string
+argument names to use as aliases
+* `opts.default` - an object mapping string argument names to default values
+
+# install
+
+With [npm](https://npmjs.org) do:
+
+```
+npm install minimist
+```
+
+# license
+
+MIT
diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/test/dash.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/dash.js
new file mode 100644
index 00000000000000..8b034b99a9eace
--- /dev/null
+++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/dash.js
@@ -0,0 +1,24 @@
+var parse = require('../');
+var test = require('tape');
+
+test('-', function (t) {
+ t.plan(5);
+ t.deepEqual(parse([ '-n', '-' ]), { n: '-', _: [] });
+ t.deepEqual(parse([ '-' ]), { _: [ '-' ] });
+ t.deepEqual(parse([ '-f-' ]), { f: '-', _: [] });
+ t.deepEqual(
+ parse([ '-b', '-' ], { boolean: 'b' }),
+ { b: true, _: [ '-' ] }
+ );
+ t.deepEqual(
+ parse([ '-s', '-' ], { string: 's' }),
+ { s: '-', _: [] }
+ );
+});
+
+test('-a -- b', function (t) {
+ t.plan(3);
+ t.deepEqual(parse([ '-a', '--', 'b' ]), { a: true, _: [ 'b' ] });
+ t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
+ t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
+});
diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/test/default_bool.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/default_bool.js
new file mode 100644
index 00000000000000..f0041ee40cd05f
--- /dev/null
+++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/default_bool.js
@@ -0,0 +1,20 @@
+var test = require('tape');
+var parse = require('../');
+
+test('boolean default true', function (t) {
+ var argv = parse([], {
+ boolean: 'sometrue',
+ default: { sometrue: true }
+ });
+ t.equal(argv.sometrue, true);
+ t.end();
+});
+
+test('boolean default false', function (t) {
+ var argv = parse([], {
+ boolean: 'somefalse',
+ default: { somefalse: false }
+ });
+ t.equal(argv.somefalse, false);
+ t.end();
+});
diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/test/dotted.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/dotted.js
new file mode 100644
index 00000000000000..ef0ae349bf3bf5
--- /dev/null
+++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/dotted.js
@@ -0,0 +1,16 @@
+var parse = require('../');
+var test = require('tape');
+
+test('dotted alias', function (t) {
+ var argv = parse(['--a.b', '22'], {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
+ t.equal(argv.a.b, 22);
+ t.equal(argv.aa.bb, 22);
+ t.end();
+});
+
+test('dotted default', function (t) {
+ var argv = parse('', {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
+ t.equal(argv.a.b, 11);
+ t.equal(argv.aa.bb, 11);
+ t.end();
+});
diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/test/long.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/long.js
new file mode 100644
index 00000000000000..5d3a1e09d3b64c
--- /dev/null
+++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/long.js
@@ -0,0 +1,31 @@
+var test = require('tape');
+var parse = require('../');
+
+test('long opts', function (t) {
+ t.deepEqual(
+ parse([ '--bool' ]),
+ { bool : true, _ : [] },
+ 'long boolean'
+ );
+ t.deepEqual(
+ parse([ '--pow', 'xixxle' ]),
+ { pow : 'xixxle', _ : [] },
+ 'long capture sp'
+ );
+ t.deepEqual(
+ parse([ '--pow=xixxle' ]),
+ { pow : 'xixxle', _ : [] },
+ 'long capture eq'
+ );
+ t.deepEqual(
+ parse([ '--host', 'localhost', '--port', '555' ]),
+ { host : 'localhost', port : 555, _ : [] },
+ 'long captures sp'
+ );
+ t.deepEqual(
+ parse([ '--host=localhost', '--port=555' ]),
+ { host : 'localhost', port : 555, _ : [] },
+ 'long captures eq'
+ );
+ t.end();
+});
diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/test/parse.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/parse.js
new file mode 100644
index 00000000000000..8a90646696628e
--- /dev/null
+++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/parse.js
@@ -0,0 +1,318 @@
+var parse = require('../');
+var test = require('tape');
+
+test('parse args', function (t) {
+ t.deepEqual(
+ parse([ '--no-moo' ]),
+ { moo : false, _ : [] },
+ 'no'
+ );
+ t.deepEqual(
+ parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]),
+ { v : ['a','b','c'], _ : [] },
+ 'multi'
+ );
+ t.end();
+});
+
+test('comprehensive', function (t) {
+ t.deepEqual(
+ parse([
+ '--name=meowmers', 'bare', '-cats', 'woo',
+ '-h', 'awesome', '--multi=quux',
+ '--key', 'value',
+ '-b', '--bool', '--no-meep', '--multi=baz',
+ '--', '--not-a-flag', 'eek'
+ ]),
+ {
+ c : true,
+ a : true,
+ t : true,
+ s : 'woo',
+ h : 'awesome',
+ b : true,
+ bool : true,
+ key : 'value',
+ multi : [ 'quux', 'baz' ],
+ meep : false,
+ name : 'meowmers',
+ _ : [ 'bare', '--not-a-flag', 'eek' ]
+ }
+ );
+ t.end();
+});
+
+test('nums', function (t) {
+ var argv = parse([
+ '-x', '1234',
+ '-y', '5.67',
+ '-z', '1e7',
+ '-w', '10f',
+ '--hex', '0xdeadbeef',
+ '789'
+ ]);
+ t.deepEqual(argv, {
+ x : 1234,
+ y : 5.67,
+ z : 1e7,
+ w : '10f',
+ hex : 0xdeadbeef,
+ _ : [ 789 ]
+ });
+ t.deepEqual(typeof argv.x, 'number');
+ t.deepEqual(typeof argv.y, 'number');
+ t.deepEqual(typeof argv.z, 'number');
+ t.deepEqual(typeof argv.w, 'string');
+ t.deepEqual(typeof argv.hex, 'number');
+ t.deepEqual(typeof argv._[0], 'number');
+ t.end();
+});
+
+test('flag boolean', function (t) {
+ var argv = parse([ '-t', 'moo' ], { boolean: 't' });
+ t.deepEqual(argv, { t : true, _ : [ 'moo' ] });
+ t.deepEqual(typeof argv.t, 'boolean');
+ t.end();
+});
+
+test('flag boolean value', function (t) {
+ var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], {
+ boolean: [ 't', 'verbose' ],
+ default: { verbose: true }
+ });
+
+ t.deepEqual(argv, {
+ verbose: false,
+ t: true,
+ _: ['moo']
+ });
+
+ t.deepEqual(typeof argv.verbose, 'boolean');
+ t.deepEqual(typeof argv.t, 'boolean');
+ t.end();
+});
+
+test('flag boolean default false', function (t) {
+ var argv = parse(['moo'], {
+ boolean: ['t', 'verbose'],
+ default: { verbose: false, t: false }
+ });
+
+ t.deepEqual(argv, {
+ verbose: false,
+ t: false,
+ _: ['moo']
+ });
+
+ t.deepEqual(typeof argv.verbose, 'boolean');
+ t.deepEqual(typeof argv.t, 'boolean');
+ t.end();
+
+});
+
+test('boolean groups', function (t) {
+ var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], {
+ boolean: ['x','y','z']
+ });
+
+ t.deepEqual(argv, {
+ x : true,
+ y : false,
+ z : true,
+ _ : [ 'one', 'two', 'three' ]
+ });
+
+ t.deepEqual(typeof argv.x, 'boolean');
+ t.deepEqual(typeof argv.y, 'boolean');
+ t.deepEqual(typeof argv.z, 'boolean');
+ t.end();
+});
+
+test('newlines in params' , function (t) {
+ var args = parse([ '-s', "X\nX" ])
+ t.deepEqual(args, { _ : [], s : "X\nX" });
+
+ // reproduce in bash:
+ // VALUE="new
+ // line"
+ // node program.js --s="$VALUE"
+ args = parse([ "--s=X\nX" ])
+ t.deepEqual(args, { _ : [], s : "X\nX" });
+ t.end();
+});
+
+test('strings' , function (t) {
+ var s = parse([ '-s', '0001234' ], { string: 's' }).s;
+ t.equal(s, '0001234');
+ t.equal(typeof s, 'string');
+
+ var x = parse([ '-x', '56' ], { string: 'x' }).x;
+ t.equal(x, '56');
+ t.equal(typeof x, 'string');
+ t.end();
+});
+
+test('stringArgs', function (t) {
+ var s = parse([ ' ', ' ' ], { string: '_' })._;
+ t.same(s.length, 2);
+ t.same(typeof s[0], 'string');
+ t.same(s[0], ' ');
+ t.same(typeof s[1], 'string');
+ t.same(s[1], ' ');
+ t.end();
+});
+
+test('empty strings', function(t) {
+ var s = parse([ '-s' ], { string: 's' }).s;
+ t.equal(s, '');
+ t.equal(typeof s, 'string');
+
+ var str = parse([ '--str' ], { string: 'str' }).str;
+ t.equal(str, '');
+ t.equal(typeof str, 'string');
+
+ var letters = parse([ '-art' ], {
+ string: [ 'a', 't' ]
+ });
+
+ t.equal(letters.a, '');
+ t.equal(letters.r, true);
+ t.equal(letters.t, '');
+
+ t.end();
+});
+
+
+test('slashBreak', function (t) {
+ t.same(
+ parse([ '-I/foo/bar/baz' ]),
+ { I : '/foo/bar/baz', _ : [] }
+ );
+ t.same(
+ parse([ '-xyz/foo/bar/baz' ]),
+ { x : true, y : true, z : '/foo/bar/baz', _ : [] }
+ );
+ t.end();
+});
+
+test('alias', function (t) {
+ var argv = parse([ '-f', '11', '--zoom', '55' ], {
+ alias: { z: 'zoom' }
+ });
+ t.equal(argv.zoom, 55);
+ t.equal(argv.z, argv.zoom);
+ t.equal(argv.f, 11);
+ t.end();
+});
+
+test('multiAlias', function (t) {
+ var argv = parse([ '-f', '11', '--zoom', '55' ], {
+ alias: { z: [ 'zm', 'zoom' ] }
+ });
+ t.equal(argv.zoom, 55);
+ t.equal(argv.z, argv.zoom);
+ t.equal(argv.z, argv.zm);
+ t.equal(argv.f, 11);
+ t.end();
+});
+
+test('nested dotted objects', function (t) {
+ var argv = parse([
+ '--foo.bar', '3', '--foo.baz', '4',
+ '--foo.quux.quibble', '5', '--foo.quux.o_O',
+ '--beep.boop'
+ ]);
+
+ t.same(argv.foo, {
+ bar : 3,
+ baz : 4,
+ quux : {
+ quibble : 5,
+ o_O : true
+ }
+ });
+ t.same(argv.beep, { boop : true });
+ t.end();
+});
+
+test('boolean and alias with chainable api', function (t) {
+ var aliased = [ '-h', 'derp' ];
+ var regular = [ '--herp', 'derp' ];
+ var opts = {
+ herp: { alias: 'h', boolean: true }
+ };
+ var aliasedArgv = parse(aliased, {
+ boolean: 'herp',
+ alias: { h: 'herp' }
+ });
+ var propertyArgv = parse(regular, {
+ boolean: 'herp',
+ alias: { h: 'herp' }
+ });
+ var expected = {
+ herp: true,
+ h: true,
+ '_': [ 'derp' ]
+ };
+
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+ t.end();
+});
+
+test('boolean and alias with options hash', function (t) {
+ var aliased = [ '-h', 'derp' ];
+ var regular = [ '--herp', 'derp' ];
+ var opts = {
+ alias: { 'h': 'herp' },
+ boolean: 'herp'
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+ var expected = {
+ herp: true,
+ h: true,
+ '_': [ 'derp' ]
+ };
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+ t.end();
+});
+
+test('boolean and alias using explicit true', function (t) {
+ var aliased = [ '-h', 'true' ];
+ var regular = [ '--herp', 'true' ];
+ var opts = {
+ alias: { h: 'herp' },
+ boolean: 'h'
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+ var expected = {
+ herp: true,
+ h: true,
+ '_': [ ]
+ };
+
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+ t.end();
+});
+
+// regression, see https://github.com/substack/node-optimist/issues/71
+test('boolean and --x=true', function(t) {
+ var parsed = parse(['--boool', '--other=true'], {
+ boolean: 'boool'
+ });
+
+ t.same(parsed.boool, true);
+ t.same(parsed.other, 'true');
+
+ parsed = parse(['--boool', '--other=false'], {
+ boolean: 'boool'
+ });
+
+ t.same(parsed.boool, true);
+ t.same(parsed.other, 'false');
+ t.end();
+});
diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js
new file mode 100644
index 00000000000000..21851b036ee6d9
--- /dev/null
+++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js
@@ -0,0 +1,9 @@
+var parse = require('../');
+var test = require('tape');
+
+test('parse with modifier functions' , function (t) {
+ t.plan(1);
+
+ var argv = parse([ '-b', '123' ], { boolean: 'b' });
+ t.deepEqual(argv, { b: true, _: ['123'] });
+});
diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/test/short.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/short.js
new file mode 100644
index 00000000000000..d513a1c2529095
--- /dev/null
+++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/short.js
@@ -0,0 +1,67 @@
+var parse = require('../');
+var test = require('tape');
+
+test('numeric short args', function (t) {
+ t.plan(2);
+ t.deepEqual(parse([ '-n123' ]), { n: 123, _: [] });
+ t.deepEqual(
+ parse([ '-123', '456' ]),
+ { 1: true, 2: true, 3: 456, _: [] }
+ );
+});
+
+test('short', function (t) {
+ t.deepEqual(
+ parse([ '-b' ]),
+ { b : true, _ : [] },
+ 'short boolean'
+ );
+ t.deepEqual(
+ parse([ 'foo', 'bar', 'baz' ]),
+ { _ : [ 'foo', 'bar', 'baz' ] },
+ 'bare'
+ );
+ t.deepEqual(
+ parse([ '-cats' ]),
+ { c : true, a : true, t : true, s : true, _ : [] },
+ 'group'
+ );
+ t.deepEqual(
+ parse([ '-cats', 'meow' ]),
+ { c : true, a : true, t : true, s : 'meow', _ : [] },
+ 'short group next'
+ );
+ t.deepEqual(
+ parse([ '-h', 'localhost' ]),
+ { h : 'localhost', _ : [] },
+ 'short capture'
+ );
+ t.deepEqual(
+ parse([ '-h', 'localhost', '-p', '555' ]),
+ { h : 'localhost', p : 555, _ : [] },
+ 'short captures'
+ );
+ t.end();
+});
+
+test('mixed short bool and capture', function (t) {
+ t.same(
+ parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
+ {
+ f : true, p : 555, h : 'localhost',
+ _ : [ 'script.js' ]
+ }
+ );
+ t.end();
+});
+
+test('short and long', function (t) {
+ t.deepEqual(
+ parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
+ {
+ f : true, p : 555, h : 'localhost',
+ _ : [ 'script.js' ]
+ }
+ );
+ t.end();
+});
diff --git a/deps/npm/node_modules/mkdirp/node_modules/minimist/test/whitespace.js b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/whitespace.js
new file mode 100644
index 00000000000000..8a52a58cecfd7a
--- /dev/null
+++ b/deps/npm/node_modules/mkdirp/node_modules/minimist/test/whitespace.js
@@ -0,0 +1,8 @@
+var parse = require('../');
+var test = require('tape');
+
+test('whitespace should be whitespace' , function (t) {
+ t.plan(1);
+ var x = parse([ '-x', '\t' ]).x;
+ t.equal(x, '\t');
+});
diff --git a/deps/npm/node_modules/mkdirp/package.json b/deps/npm/node_modules/mkdirp/package.json
index aea8cb4971ad0a..adb67f6a671866 100644
--- a/deps/npm/node_modules/mkdirp/package.json
+++ b/deps/npm/node_modules/mkdirp/package.json
@@ -1,7 +1,7 @@
{
"name": "mkdirp",
"description": "Recursively mkdir, like `mkdir -p`",
- "version": "0.3.5",
+ "version": "0.5.0",
"author": {
"name": "James Halliday",
"email": "mail@substack.net",
@@ -14,20 +14,45 @@
],
"repository": {
"type": "git",
- "url": "http://github.com/substack/node-mkdirp.git"
+ "url": "https://github.com/substack/node-mkdirp.git"
},
"scripts": {
"test": "tap test/*.js"
},
+ "dependencies": {
+ "minimist": "0.0.8"
+ },
"devDependencies": {
- "tap": "~0.4.0"
+ "tap": "~0.4.0",
+ "mock-fs": "~2.2.0"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
},
"license": "MIT",
- "readme": "# mkdirp\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\n# example\n\n## pow.js\n\n```js\nvar mkdirp = require('mkdirp');\n \nmkdirp('/tmp/foo/bar/baz', function (err) {\n if (err) console.error(err)\n else console.log('pow!')\n});\n```\n\nOutput\n\n```\npow!\n```\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\n# methods\n\n```js\nvar mkdirp = require('mkdirp');\n```\n\n## mkdirp(dir, mode, cb)\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\n## mkdirp.sync(dir, mode)\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install mkdirp\n```\n\n# license\n\nMIT\n",
- "readmeFilename": "readme.markdown",
"bugs": {
"url": "https://github.com/substack/node-mkdirp/issues"
},
- "_id": "mkdirp@0.3.5",
- "_from": "mkdirp@latest"
+ "homepage": "https://github.com/substack/node-mkdirp",
+ "_id": "mkdirp@0.5.0",
+ "dist": {
+ "shasum": "1d73076a6df986cd9344e15e71fcc05a4c9abf12",
+ "tarball": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz"
+ },
+ "_from": "mkdirp@latest",
+ "_npmVersion": "1.4.3",
+ "_npmUser": {
+ "name": "substack",
+ "email": "mail@substack.net"
+ },
+ "maintainers": [
+ {
+ "name": "substack",
+ "email": "mail@substack.net"
+ }
+ ],
+ "directories": {},
+ "_shasum": "1d73076a6df986cd9344e15e71fcc05a4c9abf12",
+ "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/node_modules/mkdirp/test/mkdirp.js b/deps/npm/node_modules/mkdirp/test/mkdirp.js
index b07cd70c109fa6..3b624ddbeb0db8 100644
--- a/deps/npm/node_modules/mkdirp/test/mkdirp.js
+++ b/deps/npm/node_modules/mkdirp/test/mkdirp.js
@@ -1,10 +1,11 @@
var mkdirp = require('../');
var path = require('path');
var fs = require('fs');
+var exists = fs.exists || path.exists;
var test = require('tap').test;
test('woo', function (t) {
- t.plan(2);
+ t.plan(5);
var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
@@ -12,16 +13,13 @@ test('woo', function (t) {
var file = '/tmp/' + [x,y,z].join('/');
mkdirp(file, 0755, function (err) {
- if (err) t.fail(err);
- else path.exists(file, function (ex) {
- if (!ex) t.fail('file not created')
- else fs.stat(file, function (err, stat) {
- if (err) t.fail(err)
- else {
- t.equal(stat.mode & 0777, 0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- t.end();
- }
+ t.ifError(err);
+ exists(file, function (ex) {
+ t.ok(ex, 'file created');
+ fs.stat(file, function (err, stat) {
+ t.ifError(err);
+ t.equal(stat.mode & 0777, 0755);
+ t.ok(stat.isDirectory(), 'target not a directory');
})
})
});
diff --git a/deps/npm/node_modules/mkdirp/test/opts_fs.js b/deps/npm/node_modules/mkdirp/test/opts_fs.js
new file mode 100644
index 00000000000000..f1fbeca146d128
--- /dev/null
+++ b/deps/npm/node_modules/mkdirp/test/opts_fs.js
@@ -0,0 +1,27 @@
+var mkdirp = require('../');
+var path = require('path');
+var test = require('tap').test;
+var mockfs = require('mock-fs');
+
+test('opts.fs', function (t) {
+ t.plan(5);
+
+ var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+ var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+ var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+
+ var file = '/beep/boop/' + [x,y,z].join('/');
+ var xfs = mockfs.fs();
+
+ mkdirp(file, { fs: xfs, mode: 0755 }, function (err) {
+ t.ifError(err);
+ xfs.exists(file, function (ex) {
+ t.ok(ex, 'created file');
+ xfs.stat(file, function (err, stat) {
+ t.ifError(err);
+ t.equal(stat.mode & 0777, 0755);
+ t.ok(stat.isDirectory(), 'target not a directory');
+ });
+ });
+ });
+});
diff --git a/deps/npm/node_modules/mkdirp/test/opts_fs_sync.js b/deps/npm/node_modules/mkdirp/test/opts_fs_sync.js
new file mode 100644
index 00000000000000..224b50642feafd
--- /dev/null
+++ b/deps/npm/node_modules/mkdirp/test/opts_fs_sync.js
@@ -0,0 +1,25 @@
+var mkdirp = require('../');
+var path = require('path');
+var test = require('tap').test;
+var mockfs = require('mock-fs');
+
+test('opts.fs sync', function (t) {
+ t.plan(4);
+
+ var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+ var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+ var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
+
+ var file = '/beep/boop/' + [x,y,z].join('/');
+ var xfs = mockfs.fs();
+
+ mkdirp.sync(file, { fs: xfs, mode: 0755 });
+ xfs.exists(file, function (ex) {
+ t.ok(ex, 'created file');
+ xfs.stat(file, function (err, stat) {
+ t.ifError(err);
+ t.equal(stat.mode & 0777, 0755);
+ t.ok(stat.isDirectory(), 'target not a directory');
+ });
+ });
+});
diff --git a/deps/npm/node_modules/mkdirp/test/perm.js b/deps/npm/node_modules/mkdirp/test/perm.js
index 23a7abbd232e43..2c975905204646 100644
--- a/deps/npm/node_modules/mkdirp/test/perm.js
+++ b/deps/npm/node_modules/mkdirp/test/perm.js
@@ -1,23 +1,21 @@
var mkdirp = require('../');
var path = require('path');
var fs = require('fs');
+var exists = fs.exists || path.exists;
var test = require('tap').test;
test('async perm', function (t) {
- t.plan(2);
+ t.plan(5);
var file = '/tmp/' + (Math.random() * (1<<30)).toString(16);
mkdirp(file, 0755, function (err) {
- if (err) t.fail(err);
- else path.exists(file, function (ex) {
- if (!ex) t.fail('file not created')
- else fs.stat(file, function (err, stat) {
- if (err) t.fail(err)
- else {
- t.equal(stat.mode & 0777, 0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- t.end();
- }
+ t.ifError(err);
+ exists(file, function (ex) {
+ t.ok(ex, 'file created');
+ fs.stat(file, function (err, stat) {
+ t.ifError(err);
+ t.equal(stat.mode & 0777, 0755);
+ t.ok(stat.isDirectory(), 'target not a directory');
})
})
});
diff --git a/deps/npm/node_modules/mkdirp/test/perm_sync.js b/deps/npm/node_modules/mkdirp/test/perm_sync.js
index f685f60906929e..327e54b2e951f2 100644
--- a/deps/npm/node_modules/mkdirp/test/perm_sync.js
+++ b/deps/npm/node_modules/mkdirp/test/perm_sync.js
@@ -1,39 +1,34 @@
var mkdirp = require('../');
var path = require('path');
var fs = require('fs');
+var exists = fs.exists || path.exists;
var test = require('tap').test;
test('sync perm', function (t) {
- t.plan(2);
+ t.plan(4);
var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json';
mkdirp.sync(file, 0755);
- path.exists(file, function (ex) {
- if (!ex) t.fail('file not created')
- else fs.stat(file, function (err, stat) {
- if (err) t.fail(err)
- else {
- t.equal(stat.mode & 0777, 0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- t.end();
- }
- })
+ exists(file, function (ex) {
+ t.ok(ex, 'file created');
+ fs.stat(file, function (err, stat) {
+ t.ifError(err);
+ t.equal(stat.mode & 0777, 0755);
+ t.ok(stat.isDirectory(), 'target not a directory');
+ });
});
});
test('sync root perm', function (t) {
- t.plan(1);
+ t.plan(3);
var file = '/tmp';
mkdirp.sync(file, 0755);
- path.exists(file, function (ex) {
- if (!ex) t.fail('file not created')
- else fs.stat(file, function (err, stat) {
- if (err) t.fail(err)
- else {
- t.ok(stat.isDirectory(), 'target not a directory');
- t.end();
- }
+ exists(file, function (ex) {
+ t.ok(ex, 'file created');
+ fs.stat(file, function (err, stat) {
+ t.ifError(err);
+ t.ok(stat.isDirectory(), 'target not a directory');
})
});
});
diff --git a/deps/npm/node_modules/mkdirp/test/race.js b/deps/npm/node_modules/mkdirp/test/race.js
index 96a04476365e36..7c295f410de2cc 100644
--- a/deps/npm/node_modules/mkdirp/test/race.js
+++ b/deps/npm/node_modules/mkdirp/test/race.js
@@ -1,10 +1,11 @@
var mkdirp = require('../').mkdirp;
var path = require('path');
var fs = require('fs');
+var exists = fs.exists || path.exists;
var test = require('tap').test;
test('race', function (t) {
- t.plan(4);
+ t.plan(6);
var ps = [ '', 'tmp' ];
for (var i = 0; i < 25; i++) {
@@ -24,17 +25,15 @@ test('race', function (t) {
function mk (file, cb) {
mkdirp(file, 0755, function (err) {
- if (err) t.fail(err);
- else path.exists(file, function (ex) {
- if (!ex) t.fail('file not created')
- else fs.stat(file, function (err, stat) {
- if (err) t.fail(err)
- else {
- t.equal(stat.mode & 0777, 0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- if (cb) cb();
- }
- })
+ t.ifError(err);
+ exists(file, function (ex) {
+ t.ok(ex, 'file created');
+ fs.stat(file, function (err, stat) {
+ t.ifError(err);
+ t.equal(stat.mode & 0777, 0755);
+ t.ok(stat.isDirectory(), 'target not a directory');
+ if (cb) cb();
+ });
})
});
}
diff --git a/deps/npm/node_modules/mkdirp/test/rel.js b/deps/npm/node_modules/mkdirp/test/rel.js
index 79858243ab97d0..d1f175c2406543 100644
--- a/deps/npm/node_modules/mkdirp/test/rel.js
+++ b/deps/npm/node_modules/mkdirp/test/rel.js
@@ -1,10 +1,11 @@
var mkdirp = require('../');
var path = require('path');
var fs = require('fs');
+var exists = fs.exists || path.exists;
var test = require('tap').test;
test('rel', function (t) {
- t.plan(2);
+ t.plan(5);
var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
@@ -15,17 +16,14 @@ test('rel', function (t) {
var file = [x,y,z].join('/');
mkdirp(file, 0755, function (err) {
- if (err) t.fail(err);
- else path.exists(file, function (ex) {
- if (!ex) t.fail('file not created')
- else fs.stat(file, function (err, stat) {
- if (err) t.fail(err)
- else {
- process.chdir(cwd);
- t.equal(stat.mode & 0777, 0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- t.end();
- }
+ t.ifError(err);
+ exists(file, function (ex) {
+ t.ok(ex, 'file created');
+ fs.stat(file, function (err, stat) {
+ t.ifError(err);
+ process.chdir(cwd);
+ t.equal(stat.mode & 0777, 0755);
+ t.ok(stat.isDirectory(), 'target not a directory');
})
})
});
diff --git a/deps/npm/node_modules/mkdirp/test/sync.js b/deps/npm/node_modules/mkdirp/test/sync.js
index 7530cada84c7af..88fa4324ee1901 100644
--- a/deps/npm/node_modules/mkdirp/test/sync.js
+++ b/deps/npm/node_modules/mkdirp/test/sync.js
@@ -1,10 +1,11 @@
var mkdirp = require('../');
var path = require('path');
var fs = require('fs');
+var exists = fs.exists || path.exists;
var test = require('tap').test;
test('sync', function (t) {
- t.plan(2);
+ t.plan(4);
var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
@@ -18,15 +19,12 @@ test('sync', function (t) {
return t.end();
}
- path.exists(file, function (ex) {
- if (!ex) t.fail('file not created')
- else fs.stat(file, function (err, stat) {
- if (err) t.fail(err)
- else {
- t.equal(stat.mode & 0777, 0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- t.end();
- }
+ exists(file, function (ex) {
+ t.ok(ex, 'file created');
+ fs.stat(file, function (err, stat) {
+ t.ifError(err);
+ t.equal(stat.mode & 0777, 0755);
+ t.ok(stat.isDirectory(), 'target not a directory');
});
});
});
diff --git a/deps/npm/node_modules/mkdirp/test/umask.js b/deps/npm/node_modules/mkdirp/test/umask.js
index 64ccafe22bc71f..82c393a006a8f5 100644
--- a/deps/npm/node_modules/mkdirp/test/umask.js
+++ b/deps/npm/node_modules/mkdirp/test/umask.js
@@ -1,10 +1,11 @@
var mkdirp = require('../');
var path = require('path');
var fs = require('fs');
+var exists = fs.exists || path.exists;
var test = require('tap').test;
test('implicit mode from umask', function (t) {
- t.plan(2);
+ t.plan(5);
var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
@@ -12,17 +13,14 @@ test('implicit mode from umask', function (t) {
var file = '/tmp/' + [x,y,z].join('/');
mkdirp(file, function (err) {
- if (err) t.fail(err);
- else path.exists(file, function (ex) {
- if (!ex) t.fail('file not created')
- else fs.stat(file, function (err, stat) {
- if (err) t.fail(err)
- else {
- t.equal(stat.mode & 0777, 0777 & (~process.umask()));
- t.ok(stat.isDirectory(), 'target not a directory');
- t.end();
- }
- })
+ t.ifError(err);
+ exists(file, function (ex) {
+ t.ok(ex, 'file created');
+ fs.stat(file, function (err, stat) {
+ t.ifError(err);
+ t.equal(stat.mode & 0777, 0777 & (~process.umask()));
+ t.ok(stat.isDirectory(), 'target not a directory');
+ });
})
});
});
diff --git a/deps/npm/node_modules/mkdirp/test/umask_sync.js b/deps/npm/node_modules/mkdirp/test/umask_sync.js
index 35bd5cbbf415bb..e537fbe4beebc2 100644
--- a/deps/npm/node_modules/mkdirp/test/umask_sync.js
+++ b/deps/npm/node_modules/mkdirp/test/umask_sync.js
@@ -1,10 +1,11 @@
var mkdirp = require('../');
var path = require('path');
var fs = require('fs');
+var exists = fs.exists || path.exists;
var test = require('tap').test;
test('umask sync modes', function (t) {
- t.plan(2);
+ t.plan(4);
var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
@@ -18,15 +19,12 @@ test('umask sync modes', function (t) {
return t.end();
}
- path.exists(file, function (ex) {
- if (!ex) t.fail('file not created')
- else fs.stat(file, function (err, stat) {
- if (err) t.fail(err)
- else {
- t.equal(stat.mode & 0777, (0777 & (~process.umask())));
- t.ok(stat.isDirectory(), 'target not a directory');
- t.end();
- }
+ exists(file, function (ex) {
+ t.ok(ex, 'file created');
+ fs.stat(file, function (err, stat) {
+ t.ifError(err);
+ t.equal(stat.mode & 0777, (0777 & (~process.umask())));
+ t.ok(stat.isDirectory(), 'target not a directory');
});
});
});
diff --git a/deps/npm/node_modules/node-gyp/README.md b/deps/npm/node_modules/node-gyp/README.md
index cba646e71d2b67..8d2d4951272e73 100644
--- a/deps/npm/node_modules/node-gyp/README.md
+++ b/deps/npm/node_modules/node-gyp/README.md
@@ -3,7 +3,8 @@ node-gyp
### Node.js native addon build tool
`node-gyp` is a cross-platform command-line tool written in Node.js for compiling
-native addon modules for Node.js, which takes away the pain of dealing with the
+native addon modules for Node.js. It bundles the [gyp](https://code.google.com/p/gyp/)
+project used by the Chromium team and takes away the pain of dealing with the
various differences in build platforms. It is the replacement to the `node-waf`
program which is removed for node `v0.8`. If you have a native addon for node that
still has a `wscript` file, then you should definitely add a `binding.gyp` file
diff --git a/deps/npm/node_modules/node-gyp/lib/install.js b/deps/npm/node_modules/node-gyp/lib/install.js
index a9a18bcc7ddad3..6f72e6a93d6cf8 100644
--- a/deps/npm/node_modules/node-gyp/lib/install.js
+++ b/deps/npm/node_modules/node-gyp/lib/install.js
@@ -72,6 +72,9 @@ function install (gyp, argv, callback) {
version = version.version
log.verbose('install', 'installing version: %s', version)
+ // distributions starting with 0.10.0 contain sha256 checksums
+ var checksumAlgo = semver.gte(version, '0.10.0') ? 'sha256' : 'sha1'
+
// the directory where the dev files will be installed
var devDir = path.resolve(gyp.devDir, version)
@@ -153,7 +156,7 @@ function install (gyp, argv, callback) {
}
function getContentSha(res, callback) {
- var shasum = crypto.createHash('sha1')
+ var shasum = crypto.createHash(checksumAlgo)
res.on('data', function (chunk) {
shasum.update(chunk)
}).on('end', function () {
@@ -243,11 +246,11 @@ function install (gyp, argv, callback) {
cb(new Error(res.statusCode + ' status code downloading tarball'))
return
}
- // content sha1
- getContentSha(res, function (_, sha1) {
+ // content checksum
+ getContentSha(res, function (_, checksum) {
var filename = path.basename(tarballUrl).trim()
- contentShasums[filename] = sha1
- log.verbose('content sha1', filename, sha1)
+ contentShasums[filename] = checksum
+ log.verbose('content checksum', filename, checksum)
})
// start unzipping and untaring
@@ -288,12 +291,12 @@ function install (gyp, argv, callback) {
async--
if (!async) {
- log.verbose('download contents shasums', JSON.stringify(contentShasums))
+ log.verbose('download contents checksum', JSON.stringify(contentShasums))
// check content shasums
for (var k in contentShasums) {
- log.verbose('validating download shasum for ' + k, '(%s == %s)', contentShasums[k], expectShasums[k])
+ log.verbose('validating download checksum for ' + k, '(%s == %s)', contentShasums[k], expectShasums[k])
if (contentShasums[k] !== expectShasums[k]) {
- cb(new Error(k + ' local sha1 ' + contentShasums[k] + ' not match remote ' + expectShasums[k]))
+ cb(new Error(k + ' local checksum ' + contentShasums[k] + ' not match remote ' + expectShasums[k]))
return
}
}
@@ -303,17 +306,18 @@ function install (gyp, argv, callback) {
}
function downloadShasums(done) {
- log.verbose('check download content sha1, need to download `SHASUMS.txt`...')
- var shasumsPath = path.resolve(devDir, 'SHASUMS.txt')
- , shasumsUrl = distUrl + '/v' + version + '/SHASUMS.txt'
+ var shasumsFile = (checksumAlgo === 'sha256') ? 'SHASUMS256.txt' : 'SHASUMS.txt'
+ log.verbose('check download content checksum, need to download `' + shasumsFile + '`...')
+ var shasumsPath = path.resolve(devDir, shasumsFile)
+ , shasumsUrl = distUrl + '/v' + version + '/' + shasumsFile
- log.verbose('`SHASUMS.txt` url', shasumsUrl)
+ log.verbose('checksum url', shasumsUrl)
var req = download(shasumsUrl)
if (!req) return
req.on('error', done)
req.on('response', function (res) {
if (res.statusCode !== 200) {
- done(new Error(res.statusCode + ' status code downloading SHASUMS.txt'))
+ done(new Error(res.statusCode + ' status code downloading checksum'))
return
}
@@ -332,7 +336,7 @@ function install (gyp, argv, callback) {
expectShasums[name] = items[0]
})
- log.verbose('`SHASUMS.txt` data', JSON.stringify(expectShasums))
+ log.verbose('checksum data', JSON.stringify(expectShasums))
done()
})
})
@@ -366,9 +370,9 @@ function install (gyp, argv, callback) {
return
}
- getContentSha(res, function (_, sha1) {
- contentShasums['node.lib'] = sha1
- log.verbose('content sha1', 'node.lib', sha1)
+ getContentSha(res, function (_, checksum) {
+ contentShasums['node.lib'] = checksum
+ log.verbose('content checksum', 'node.lib', checksum)
})
var ws = fs.createWriteStream(nodeLibPath32)
@@ -392,9 +396,9 @@ function install (gyp, argv, callback) {
return
}
- getContentSha(res, function (_, sha1) {
- contentShasums['x64/node.lib'] = sha1
- log.verbose('content sha1', 'x64/node.lib', sha1)
+ getContentSha(res, function (_, checksum) {
+ contentShasums['x64/node.lib'] = checksum
+ log.verbose('content checksum', 'x64/node.lib', checksum)
})
var ws = fs.createWriteStream(nodeLibPath64)
diff --git a/deps/npm/node_modules/node-gyp/package.json b/deps/npm/node_modules/node-gyp/package.json
index 88ba331fae6b2d..8ee98695186728 100644
--- a/deps/npm/node_modules/node-gyp/package.json
+++ b/deps/npm/node_modules/node-gyp/package.json
@@ -10,7 +10,7 @@
"bindings",
"gyp"
],
- "version": "0.13.1",
+ "version": "1.0.1",
"installVersion": 9,
"author": {
"name": "Nathan Rajlich",
@@ -27,50 +27,32 @@
},
"main": "./lib/node-gyp.js",
"dependencies": {
+ "fstream": "^1.0.0",
"glob": "3 || 4",
- "graceful-fs": "2||3",
- "fstream": "0",
- "minimatch": "0",
- "mkdirp": "0",
+ "graceful-fs": "3",
+ "minimatch": "1",
+ "mkdirp": "^0.5.0",
"nopt": "2 || 3",
"npmlog": "0",
"osenv": "0",
"request": "2",
"rimraf": "2",
- "semver": "2",
- "tar": "0",
+ "semver": "2.x || 3.x",
+ "tar": "^1.0.0",
"which": "1"
},
"engines": {
"node": ">= 0.8.0"
},
+ "readme": "node-gyp\n=========\n### Node.js native addon build tool\n\n`node-gyp` is a cross-platform command-line tool written in Node.js for compiling\nnative addon modules for Node.js. It bundles the [gyp](https://code.google.com/p/gyp/)\nproject used by the Chromium team and takes away the pain of dealing with the\nvarious differences in build platforms. It is the replacement to the `node-waf`\nprogram which is removed for node `v0.8`. If you have a native addon for node that\nstill has a `wscript` file, then you should definitely add a `binding.gyp` file\nto support the latest versions of node.\n\nMultiple target versions of node are supported (i.e. `0.8`, `0.9`, `0.10`, ..., `1.0`,\netc.), regardless of what version of node is actually installed on your system\n(`node-gyp` downloads the necessary development files for the target version).\n\n#### Features:\n\n * Easy to use, consistent interface\n * Same commands to build your module on every platform\n * Supports multiple target versions of Node\n\n\nInstallation\n------------\n\nYou can install with `npm`:\n\n``` bash\n$ npm install -g node-gyp\n```\n\nYou will also need to install:\n\n * On Unix:\n * `python` (`v2.7` recommended, `v3.x.x` is __*not*__ supported)\n * `make`\n * A proper C/C++ compiler toolchain, like GCC\n * On Windows:\n * [Python][windows-python] ([`v2.7.3`][windows-python-v2.7.3] recommended, `v3.x.x` is __*not*__ supported)\n * Windows XP/Vista/7:\n * Microsoft Visual Studio C++ 2010 ([Express][msvc2010] version works well)\n * For 64-bit builds of node and native modules you will _**also**_ need the [Windows 7 64-bit SDK][win7sdk]\n * If the install fails, try uninstalling any C++ 2010 x64&x86 Redistributable that you have installed first.\n * If you get errors that the 64-bit compilers are not installed you may also need the [compiler update for the Windows SDK 7.1]\n * Windows 7/8:\n * Microsoft Visual Studio C++ 2012 for Windows Desktop ([Express][msvc2012] version works well)\n\nIf you have multiple Python versions installed, you can identify which Python\nversion `node-gyp` uses by setting the '--python' variable:\n\n``` bash\n$ node-gyp --python /path/to/python2.7\n```\n\nIf `node-gyp` is called by way of `npm` *and* you have multiple versions of\nPython installed, then you can set `npm`'s 'python' config key to the appropriate\nvalue:\n\n``` bash\n$ npm config set python /path/to/executable/python2.7\n```\n\nNote that OS X is just a flavour of Unix and so needs `python`, `make`, and C/C++.\nAn easy way to obtain these is to install XCode from Apple,\nand then use it to install the command line tools (under Preferences -> Downloads).\n\nHow to Use\n----------\n\nTo compile your native addon, first go to its root directory:\n\n``` bash\n$ cd my_node_addon\n```\n\nThe next step is to generate the appropriate project build files for the current\nplatform. Use `configure` for that:\n\n``` bash\n$ node-gyp configure\n```\n\n__Note__: The `configure` step looks for the `binding.gyp` file in the current\ndirectory to processs. See below for instructions on creating the `binding.gyp` file.\n\nNow you will have either a `Makefile` (on Unix platforms) or a `vcxproj` file\n(on Windows) in the `build/` directory. Next invoke the `build` command:\n\n``` bash\n$ node-gyp build\n```\n\nNow you have your compiled `.node` bindings file! The compiled bindings end up\nin `build/Debug/` or `build/Release/`, depending on the build mode. At this point\nyou can require the `.node` file with Node and run your tests!\n\n__Note:__ To create a _Debug_ build of the bindings file, pass the `--debug` (or\n`-d`) switch when running the either `configure` or `build` command.\n\n\nThe \"binding.gyp\" file\n----------------------\n\nPreviously when node had `node-waf` you had to write a `wscript` file. The\nreplacement for that is the `binding.gyp` file, which describes the configuration\nto build your module in a JSON-like format. This file gets placed in the root of\nyour package, alongside the `package.json` file.\n\nA barebones `gyp` file appropriate for building a node addon looks like:\n\n``` python\n{\n \"targets\": [\n {\n \"target_name\": \"binding\",\n \"sources\": [ \"src/binding.cc\" ]\n }\n ]\n}\n```\n\nSome additional resources for writing `gyp` files:\n\n * [\"Hello World\" node addon example](https://github.com/joyent/node/tree/master/test/addons/hello-world)\n * [gyp user documentation](http://code.google.com/p/gyp/wiki/GypUserDocumentation)\n * [gyp input format reference](http://code.google.com/p/gyp/wiki/InputFormatReference)\n * [*\"binding.gyp\" files out in the wild* wiki page](https://github.com/TooTallNate/node-gyp/wiki/%22binding.gyp%22-files-out-in-the-wild)\n\n\nCommands\n--------\n\n`node-gyp` responds to the following commands:\n\n| **Command** | **Description**\n|:--------------|:---------------------------------------------------------------\n| `build` | Invokes `make`/`msbuild.exe` and builds the native addon\n| `clean` | Removes any the `build` dir if it exists\n| `configure` | Generates project build files for the current platform\n| `rebuild` | Runs \"clean\", \"configure\" and \"build\" all in a row\n| `install` | Installs node development header files for the given version\n| `list` | Lists the currently installed node development file versions\n| `remove` | Removes the node development header files for the given version\n\n\nLicense\n-------\n\n(The MIT License)\n\nCopyright (c) 2012 Nathan Rajlich <nathan@tootallnate.net>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n[windows-python]: http://www.python.org/getit/windows\n[windows-python-v2.7.3]: http://www.python.org/download/releases/2.7.3#download\n[msvc2010]: http://go.microsoft.com/?linkid=9709949\n[msvc2012]: http://go.microsoft.com/?linkid=9816758\n[win7sdk]: http://www.microsoft.com/en-us/download/details.aspx?id=8279\n[compiler update for the Windows SDK 7.1]: http://www.microsoft.com/en-us/download/details.aspx?id=4422\n",
+ "readmeFilename": "README.md",
+ "gitHead": "b2abd70377c356483c98509b14a01d71f1eaa17f",
"bugs": {
"url": "https://github.com/TooTallNate/node-gyp/issues"
},
"homepage": "https://github.com/TooTallNate/node-gyp",
- "_id": "node-gyp@0.13.1",
- "_shasum": "5a484dd2dc13d5b894a8fe781a250c07eae7bffa",
- "_from": "node-gyp@~0.13.0",
- "_npmVersion": "1.4.9",
- "_npmUser": {
- "name": "tootallnate",
- "email": "nathan@tootallnate.net"
- },
- "maintainers": [
- {
- "name": "TooTallNate",
- "email": "nathan@tootallnate.net"
- },
- {
- "name": "tootallnate",
- "email": "nathan@tootallnate.net"
- }
- ],
- "dist": {
- "shasum": "5a484dd2dc13d5b894a8fe781a250c07eae7bffa",
- "tarball": "http://registry.npmjs.org/node-gyp/-/node-gyp-0.13.1.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-0.13.1.tgz",
- "readme": "ERROR: No README data found!"
+ "_id": "node-gyp@1.0.1",
+ "scripts": {},
+ "_shasum": "d5e364145ff10b259be9986855c83b5a76a2d975",
+ "_from": "node-gyp@latest"
}
diff --git a/deps/npm/node_modules/npm-registry-client/LICENSE b/deps/npm/node_modules/npm-registry-client/LICENSE
index 0c44ae716db8f3..19129e315fe593 100644
--- a/deps/npm/node_modules/npm-registry-client/LICENSE
+++ b/deps/npm/node_modules/npm-registry-client/LICENSE
@@ -1,27 +1,15 @@
-Copyright (c) Isaac Z. Schlueter ("Author")
-All rights reserved.
+The ISC License
-The BSD License
+Copyright (c) Isaac Z. Schlueter and Contributors
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/deps/npm/node_modules/npm-registry-client/package.json b/deps/npm/node_modules/npm-registry-client/package.json
index b377643037d53e..bb7c5b55446bc5 100644
--- a/deps/npm/node_modules/npm-registry-client/package.json
+++ b/deps/npm/node_modules/npm-registry-client/package.json
@@ -6,7 +6,7 @@
},
"name": "npm-registry-client",
"description": "Client for the npm registry",
- "version": "2.0.3",
+ "version": "2.0.4",
"repository": {
"url": "git://github.com/isaacs/npm-registry-client"
},
@@ -17,7 +17,7 @@
"dependencies": {
"chownr": "0",
"graceful-fs": "^3.0.0",
- "mkdirp": "~0.3.3",
+ "mkdirp": "^0.5.0",
"npm-cache-filename": "^1.0.0",
"request": "2 >=2.25.0",
"retry": "0.6.0",
@@ -32,15 +32,34 @@
"optionalDependencies": {
"npmlog": ""
},
- "license": "BSD",
- "readme": "# npm-registry-client\n\nThe code that npm uses to talk to the registry.\n\nIt handles all the caching and HTTP calls.\n\n## Usage\n\n```javascript\nvar RegClient = require('npm-registry-client')\nvar client = new RegClient(config)\nvar uri = \"npm://registry.npmjs.org/npm\"\nvar options = {timeout: 1000}\n\nclient.get(uri, options, function (error, data, raw, res) {\n // error is an error if there was a problem.\n // data is the parsed data object\n // raw is the json string\n // res is the response from couch\n})\n```\n\n# Registry URLs\n\nThe registry calls take either a full URL pointing to a resource in the\nregistry, or a base URL for the registry as a whole (for the base URL, any path\nwill be ignored). In addition to `http` and `https`, `npm` URLs are allowed.\n`npm` URLs are `https` URLs with the additional restrictions that they will\nalways include authorization credentials, and the response is always registry\nmetadata (and not tarballs or other attachments).\n\n# Configuration\n\nThis program is designed to work with\n[npmconf](https://npmjs.org/package/npmconf), but you can also pass in\na plain-jane object with the appropriate configs, and it'll shim it\nfor you. Any configuration thingie that has get/set/del methods will\nalso be accepted.\n\n* `cache` **Required** {String} Path to the cache folder\n* `always-auth` {Boolean} Auth even for GET requests.\n* `auth` {String} A base64-encoded `username:password`\n* `email` {String} User's email address\n* `tag` {String} The default tag to use when publishing new packages.\n Default = `\"latest\"`\n* `ca` {String} Cerficate signing authority certificates to trust.\n* `cert` {String} Client certificate (PEM encoded). Enable access\n to servers that require client certificates\n* `key` {String} Private key (PEM encoded) for client certificate 'cert'\n* `strict-ssl` {Boolean} Whether or not to be strict with SSL\n certificates. Default = `true`\n* `user-agent` {String} User agent header to send. Default =\n `\"node/{process.version} {process.platform} {process.arch}\"`\n* `log` {Object} The logger to use. Defaults to `require(\"npmlog\")` if\n that works, otherwise logs are disabled.\n* `fetch-retries` {Number} Number of times to retry on GET failures.\n Default=2\n* `fetch-retry-factor` {Number} `factor` setting for `node-retry`. Default=10\n* `fetch-retry-mintimeout` {Number} `minTimeout` setting for `node-retry`.\n Default=10000 (10 seconds)\n* `fetch-retry-maxtimeout` {Number} `maxTimeout` setting for `node-retry`.\n Default=60000 (60 seconds)\n* `proxy` {URL} The url to proxy requests through.\n* `https-proxy` {URL} The url to proxy https requests through.\n Defaults to be the same as `proxy` if unset.\n* `_auth` {String} The base64-encoded authorization header.\n* `username` `_password` {String} Username/password to use to generate\n `_auth` if not supplied.\n* `_token` {Object} A token for use with\n [couch-login](https://npmjs.org/package/couch-login)\n\n# client.request(method, uri, options, cb)\n\n* `method` {String} HTTP method\n* `uri` {String} URI pointing to the resource to request\n* `options` {Object} Object containing optional per-request properties.\n * `what` {Stream | Buffer | String | Object} The request body. Objects\n that are not Buffers or Streams are encoded as JSON.\n * `etag` {String} The cached ETag\n * `follow` {Boolean} Follow 302/301 responses (defaults to true)\n* `cb` {Function}\n * `error` {Error | null}\n * `data` {Object} the parsed data object\n * `raw` {String} the json\n * `res` {Response Object} response from couch\n\nMake a request to the registry. All the other methods are wrappers around\n`request`.\n\n# client.adduser(base, username, password, email, cb)\n\n* `base` {String} Base registry URL\n* `username` {String}\n* `password` {String}\n* `email` {String}\n* `cb` {Function}\n\nAdd a user account to the registry, or verify the credentials.\n\n# client.deprecate(uri, version, message, cb)\n\n* `uri` {String} Full registry URI for the deprecated package\n* `version` {String} Semver version range\n* `message` {String} The message to use as a deprecation warning\n* `cb` {Function}\n\nDeprecate a version of a package in the registry.\n\n# client.bugs(uri, cb)\n\n* `uri` {String} Full registry URI for the package\n* `cb` {Function}\n\nGet the url for bugs of a package\n\n# client.get(uri, options, cb)\n\n* `uri` {String} The complete registry URI to fetch\n* `options` {Object} Object containing optional per-request properties.\n * `timeout` {Number} Duration before the request times out.\n * `follow` {Boolean} Follow 302/301 responses (defaults to true)\n * `staleOk` {Boolean} If there's cached data available, then return that\n to the callback quickly, and update the cache the background.\n\nFetches data from the registry via a GET request, saving it in the cache folder\nwith the ETag.\n\n# client.publish(uri, data, tarball, cb)\n\n* `uri` {String} The registry URI to publish to\n* `data` {Object} Package data\n* `tarball` {String | Stream} Filename or stream of the package tarball\n* `cb` {Function}\n\nPublish a package to the registry.\n\nNote that this does not create the tarball from a folder. However, it can\naccept a gzipped tar stream or a filename to a tarball.\n\n# client.star(uri, starred, cb)\n\n* `uri` {String} The complete registry URI to star\n* `starred` {Boolean} True to star the package, false to unstar it.\n* `cb` {Function}\n\nStar or unstar a package.\n\nNote that the user does not have to be the package owner to star or unstar a\npackage, though other writes do require that the user be the package owner.\n\n# client.stars(base, username, cb)\n\n* `base` {String} The base URL for the registry\n* `username` {String} Name of user to fetch starred packages for.\n* `cb` {Function}\n\nView your own or another user's starred packages.\n\n# client.tag(uri, version, tag, cb)\n\n* `uri` {String} The complete registry URI to tag\n* `version` {String} Version to tag\n* `tag` {String} Tag name to apply\n* `cb` {Function}\n\nMark a version in the `dist-tags` hash, so that `pkg@tag` will fetch the\nspecified version.\n\n# client.unpublish(uri, [ver], cb)\n\n* `uri` {String} The complete registry URI to unpublish\n* `ver` {String} version to unpublish. Leave blank to unpublish all\n versions.\n* `cb` {Function}\n\nRemove a version of a package (or all versions) from the registry. When the\nlast version us unpublished, the entire document is removed from the database.\n\n# client.upload(uri, file, [etag], [nofollow], cb)\n\n* `uri` {String} The complete registry URI to upload to\n* `file` {String | Stream} Either the filename or a readable stream\n* `etag` {String} Cache ETag\n* `nofollow` {Boolean} Do not follow 301/302 responses\n* `cb` {Function}\n\nUpload an attachment. Mostly used by `client.publish()`.\n",
- "readmeFilename": "README.md",
- "gitHead": "2578fb9a807d77417554ba235ba8fac39405e832",
+ "license": "ISC",
+ "gitHead": "a10f621d9cdc813b9d3092a14b661f65bfa6d40d",
"bugs": {
"url": "https://github.com/isaacs/npm-registry-client/issues"
},
"homepage": "https://github.com/isaacs/npm-registry-client",
- "_id": "npm-registry-client@2.0.3",
- "_shasum": "93dad3d9a162c99404badb71739c622c0f3b9a72",
- "_from": "npm-registry-client@2.0.3"
+ "_id": "npm-registry-client@2.0.4",
+ "_shasum": "528e08900d7655c12096d1637d1c3a7a5b451019",
+ "_from": "npm-registry-client@2.0.4",
+ "_npmVersion": "1.4.22",
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "maintainers": [
+ {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ {
+ "name": "othiym23",
+ "email": "ogd@aoaioxxysz.net"
+ }
+ ],
+ "dist": {
+ "shasum": "528e08900d7655c12096d1637d1c3a7a5b451019",
+ "tarball": "http://registry.npmjs.org/npm-registry-client/-/npm-registry-client-2.0.4.tgz"
+ },
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-2.0.4.tgz"
}
diff --git a/deps/npm/node_modules/npmconf/LICENSE b/deps/npm/node_modules/npmconf/LICENSE
index 0c44ae716db8f3..19129e315fe593 100644
--- a/deps/npm/node_modules/npmconf/LICENSE
+++ b/deps/npm/node_modules/npmconf/LICENSE
@@ -1,27 +1,15 @@
-Copyright (c) Isaac Z. Schlueter ("Author")
-All rights reserved.
+The ISC License
-The BSD License
+Copyright (c) Isaac Z. Schlueter and Contributors
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/deps/npm/node_modules/npmconf/package.json b/deps/npm/node_modules/npmconf/package.json
index a0e1bbbd774def..b62bde8d0c7b77 100644
--- a/deps/npm/node_modules/npmconf/package.json
+++ b/deps/npm/node_modules/npmconf/package.json
@@ -1,6 +1,6 @@
{
"name": "npmconf",
- "version": "1.1.4",
+ "version": "1.1.5",
"description": "The config thing npm uses",
"main": "npmconf.js",
"directories": {
@@ -10,7 +10,7 @@
"config-chain": "~1.1.8",
"inherits": "~2.0.0",
"ini": "^1.2.0",
- "mkdirp": "~0.3.3",
+ "mkdirp": "^0.5.0",
"nopt": "~3.0.1",
"once": "~1.3.0",
"osenv": "^0.1.0",
@@ -39,15 +39,33 @@
"email": "i@izs.me",
"url": "http://blog.izs.me"
},
- "license": "BSD",
- "readme": "# npmconf\n\nThe config thing npm uses\n\nIf you are interested in interacting with the config settings that npm\nuses, then use this module.\n\nHowever, if you are writing a new Node.js program, and want\nconfiguration functionality similar to what npm has, but for your\nown thing, then I'd recommend using [rc](https://github.com/dominictarr/rc),\nwhich is probably what you want.\n\nIf I were to do it all over again, that's what I'd do for npm. But,\nalas, there are many systems depending on many of the particulars of\nnpm's configuration setup, so it's not worth the cost of changing.\n\n## USAGE\n\n```javascript\nvar npmconf = require('npmconf')\n\n// pass in the cli options that you read from the cli\n// or whatever top-level configs you want npm to use for now.\nnpmconf.load({some:'configs'}, function (er, conf) {\n // do stuff with conf\n conf.get('some', 'cli') // 'configs'\n conf.get('username') // 'joebobwhatevers'\n conf.set('foo', 'bar', 'user')\n conf.save('user', function (er) {\n // foo = bar is now saved to ~/.npmrc or wherever\n })\n})\n```\n",
- "readmeFilename": "README.md",
- "gitHead": "3662624af0834159c35843fcf850469c09e0873c",
+ "license": "ISC",
+ "gitHead": "73f125b2961d550bd9884d8945e653a9fe8066c6",
"bugs": {
"url": "https://github.com/isaacs/npmconf/issues"
},
"homepage": "https://github.com/isaacs/npmconf",
- "_id": "npmconf@1.1.4",
- "_shasum": "2ac5d080206d4bfb9abc01bd34f083f93ae1603c",
- "_from": "npmconf@latest"
+ "_id": "npmconf@1.1.5",
+ "_shasum": "07777bea48d78eed75a4258962a09f3dc7b6b916",
+ "_from": "npmconf@1.1.5",
+ "_npmVersion": "1.4.22",
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "maintainers": [
+ {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ {
+ "name": "othiym23",
+ "email": "ogd@aoaioxxysz.net"
+ }
+ ],
+ "dist": {
+ "shasum": "07777bea48d78eed75a4258962a09f3dc7b6b916",
+ "tarball": "http://registry.npmjs.org/npmconf/-/npmconf-1.1.5.tgz"
+ },
+ "_resolved": "https://registry.npmjs.org/npmconf/-/npmconf-1.1.5.tgz"
}
diff --git a/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/fixer.js b/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/fixer.js
index cc560f30e4086c..72836002feafa8 100644
--- a/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/fixer.js
+++ b/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/lib/fixer.js
@@ -290,10 +290,25 @@ var fixer = module.exports = {
}
}
+function isValidScopedPackageName(spec) {
+ if (spec.charAt(0) !== '@') return false
+
+ var rest = spec.slice(1).split('/')
+ if (rest.length !== 2) return false
+
+ return rest[0] && rest[1] &&
+ rest[0] === encodeURIComponent(rest[0]) &&
+ rest[1] === encodeURIComponent(rest[1])
+}
+
+function isCorrectlyEncodedName(spec) {
+ return !spec.match(/[\/@\s\+%:]/) &&
+ spec === encodeURIComponent(spec)
+}
+
function ensureValidName (name, strict) {
if (name.charAt(0) === "." ||
- name.match(/[\/@\s\+%:]/) ||
- name !== encodeURIComponent(name) ||
+ !(isValidScopedPackageName(name) || isCorrectlyEncodedName(name)) ||
(strict && name !== name.toLowerCase()) ||
name.toLowerCase() === "node_modules" ||
name.toLowerCase() === "favicon.ico") {
diff --git a/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/package.json b/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/package.json
index d368d4af534006..2c7e76c19dfcc3 100644
--- a/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/package.json
+++ b/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/package.json
@@ -1,6 +1,6 @@
{
"name": "normalize-package-data",
- "version": "0.3.0",
+ "version": "1.0.0",
"author": {
"name": "Meryn Stol",
"email": "merynstol@gmail.com"
@@ -15,9 +15,9 @@
"test": "tap test/*.js"
},
"dependencies": {
- "github-url-from-git": "~1.1.1",
+ "github-url-from-git": "^1.3.0",
"github-url-from-username-repo": "^0.2.0",
- "semver": "2"
+ "semver": "2 || 3"
},
"devDependencies": {
"tap": "~0.2.5",
@@ -38,33 +38,14 @@
"email": "rok@kowalski.gd"
}
],
- "gitHead": "f4d4268894a23d6f37a335d4ae28bd90b14e4ef9",
+ "readme": "# normalize-package-data [![Build Status](https://travis-ci.org/meryn/normalize-package-data.png?branch=master)](https://travis-ci.org/meryn/normalize-package-data)\n\nnormalize-package data exports a function that normalizes package metadata. This data is typically found in a package.json file, but in principle could come from any source - for example the npm registry.\n\nnormalize-package-data is used by [read-package-json](https://npmjs.org/package/read-package-json) to normalize the data it reads from a package.json file. In turn, read-package-json is used by [npm](https://npmjs.org/package/npm) and various npm-related tools.\n\n## Installation\n\n```\nnpm install normalize-package-data\n```\n\n## Usage\n\nBasic usage is really simple. You call the function that normalize-package-data exports. Let's call it `normalizeData`.\n\n```javascript\nnormalizeData = require('normalize-package-data')\npackageData = fs.readfileSync(\"package.json\")\nnormalizeData(packageData)\n// packageData is now normalized\n```\n\n#### Strict mode\n\nYou may activate strict validation by passing true as the second argument.\n\n```javascript\nnormalizeData = require('normalize-package-data')\npackageData = fs.readfileSync(\"package.json\")\nwarnFn = function(msg) { console.error(msg) }\nnormalizeData(packageData, true)\n// packageData is now normalized\n```\n\nIf strict mode is activated, only Semver 2.0 version strings are accepted. Otherwise, Semver 1.0 strings are accepted as well. Packages must have a name, and the name field must not have contain leading or trailing whitespace.\n\n#### Warnings\n\nOptionally, you may pass a \"warning\" function. It gets called whenever the `normalizeData` function encounters something that doesn't look right. It indicates less than perfect input data.\n\n```javascript\nnormalizeData = require('normalize-package-data')\npackageData = fs.readfileSync(\"package.json\")\nwarnFn = function(msg) { console.error(msg) }\nnormalizeData(packageData, warnFn)\n// packageData is now normalized. Any number of warnings may have been logged.\n```\n\nYou may combine strict validation with warnings by passing `true` as the second argument, and `warnFn` as third.\n\nWhen `private` field is set to `true`, warnings will be suppressed.\n\n### Potential exceptions\n\nIf the supplied data has an invalid name or version vield, `normalizeData` will throw an error. Depending on where you call `normalizeData`, you may want to catch these errors so can pass them to a callback.\n\n## What normalization (currently) entails\n\n* The value of `name` field gets trimmed (unless in strict mode).\n* The value of the `version` field gets cleaned by `semver.clean`. See [documentation for the semver module](https://github.com/isaacs/node-semver).\n* If `name` and/or `version` fields are missing, they are set to empty strings.\n* If `files` field is not an array, it will be removed.\n* If `bin` field is a string, then `bin` field will become an object with `name` set to the value of the `name` field, and `bin` set to the original string value.\n* If `man` field is a string, it will become an array with the original string as its sole member.\n* If `keywords` field is string, it is considered to be a list of keywords separated by one or more white-space characters. It gets converted to an array by splitting on `\\s+`.\n* All people fields (`author`, `maintainers`, `contributors`) get converted into objects with name, email and url properties.\n* If `bundledDependencies` field (a typo) exists and `bundleDependencies` field does not, `bundledDependencies` will get renamed to `bundleDependencies`.\n* If the value of any of the dependencies fields (`dependencies`, `devDependencies`, `optionalDependencies`) is a string, it gets converted into an object with familiar `name=>value` pairs.\n* The values in `optionalDependencies` get added to `dependencies`. The `optionalDependencies` array is left untouched.\n* If `description` field does not exists, but `readme` field does, then (more or less) the first paragraph of text that's found in the readme is taken as value for `description`.\n* If `repository` field is a string, it will become an object with `url` set to the original string value, and `type` set to `\"git\"`.\n* If `repository.url` is not a valid url, but in the style of \"[owner-name]/[repo-name]\", `repository.url` will be set to git://github.com/[owner-name]/[repo-name]\n* If `bugs` field is a string, the value of `bugs` field is changed into an object with `url` set to the original string value.\n* If `bugs` field does not exist, but `repository` field points to a repository hosted on GitHub, the value of the `bugs` field gets set to an url in the form of https://github.com/[owner-name]/[repo-name]/issues . If the repository field points to a GitHub Gist repo url, the associated http url is chosen.\n* If `bugs` field is an object, the resulting value only has email and url properties. If email and url properties are not strings, they are ignored. If no valid values for either email or url is found, bugs field will be removed.\n* If `homepage` field is not a string, it will be removed.\n* If the url in the `homepage` field does not specify a protocol, then http is assumed. For example, `myproject.org` will be changed to `http://myproject.org`.\n* If `homepage` field does not exist, but `repository` field points to a repository hosted on GitHub, the value of the `homepage` field gets set to an url in the form of https://github.com/[owner-name]/[repo-name]/ . If the repository field points to a GitHub Gist repo url, the associated http url is chosen.\n\n### Rules for name field\n\nIf `name` field is given, the value of the name field must be a string. The string may not:\n\n* start with a period.\n* contain the following characters: `/@\\s+%`\n* contain and characters that would need to be encoded for use in urls.\n* resemble the word `node_modules` or `favicon.ico` (case doesn't matter).\n\n### Rules for version field\n\nIf `version` field is given, the value of the version field must be a valid *semver* string, as determined by the `semver.valid` method. See [documentation for the semver module](https://github.com/isaacs/node-semver).\n\n## Credits\n\nThis package contains code based on read-package-json written by Isaac Z. Schlueter. Used with permisson.\n\n## License\n\nnormalize-package-data is released under the [BSD 2-Clause License](http://opensource.org/licenses/MIT). \nCopyright (c) 2013 Meryn Stol ",
+ "readmeFilename": "README.md",
+ "gitHead": "976920445743c647bd2c8f579764f2060c649db9",
"bugs": {
"url": "https://github.com/meryn/normalize-package-data/issues"
},
"homepage": "https://github.com/meryn/normalize-package-data",
- "_id": "normalize-package-data@0.3.0",
- "_shasum": "70ea9e5b6caf69faa9d83e42f71489642372d815",
- "_from": "normalize-package-data@^0.3.0",
- "_npmVersion": "1.4.14",
- "_npmUser": {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- "maintainers": [
- {
- "name": "meryn",
- "email": "merynstol@gmail.com"
- },
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "dist": {
- "shasum": "70ea9e5b6caf69faa9d83e42f71489642372d815",
- "tarball": "http://registry.npmjs.org/normalize-package-data/-/normalize-package-data-0.3.0.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-0.3.0.tgz"
+ "_id": "normalize-package-data@1.0.0",
+ "_shasum": "5239d9921791a8ad027607f580a74c76166623c8",
+ "_from": "normalize-package-data@^1.0.0"
}
diff --git a/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/test/github-urls.js b/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/test/github-urls.js
index fd68d76e2acafb..da78160a00ecf9 100644
--- a/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/test/github-urls.js
+++ b/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/test/github-urls.js
@@ -1,25 +1,23 @@
var tap = require("tap")
var normalize = require("../lib/normalize")
-var path = require("path")
var fs = require("fs")
-var _ = require("underscore")
var async = require("async")
-var data, clonedData
+var data
var warn
tap.test("consistent normalization", function(t) {
- entries = [
+ var entries = [
'read-package-json.json',
'http-server.json',
"movefile.json",
"node-module_exist.json"
]
- verifyConsistency = function(entryName, next) {
- warn = function(msg) {
+ var verifyConsistency = function(entryName, next) {
+ warn = function(msg) {
// t.equal("",msg) // uncomment to have some kind of logging of warnings
}
- filename = __dirname + "/fixtures/" + entryName
+ var filename = __dirname + "/fixtures/" + entryName
fs.readFile(filename, function(err, contents) {
if (err) return next(err)
data = JSON.parse(contents.toString())
@@ -43,4 +41,4 @@ tap.test("consistent normalization", function(t) {
if (err) throw err
t.end()
})
-}) // tap.test
\ No newline at end of file
+}) // tap.test
diff --git a/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/test/scoped.js b/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/test/scoped.js
new file mode 100644
index 00000000000000..31bbf4f7fc5376
--- /dev/null
+++ b/deps/npm/node_modules/read-package-json/node_modules/normalize-package-data/test/scoped.js
@@ -0,0 +1,51 @@
+var test = require("tap").test
+
+var fixNameField = require("../lib/fixer.js").fixNameField
+
+test("a simple scoped module has a valid name", function (t) {
+ var data = {name : "@org/package"}
+ fixNameField(data, false)
+ t.equal(data.name, "@org/package", "name was unchanged")
+
+ t.end()
+})
+
+test("'org@package' is not a valid name", function (t) {
+ t.throws(function () {
+ fixNameField({name : "org@package"}, false)
+ }, "blows up as expected")
+
+ t.end()
+})
+
+test("'org=package' is not a valid name", function (t) {
+ t.throws(function () {
+ fixNameField({name : "org=package"}, false)
+ }, "blows up as expected")
+
+ t.end()
+})
+
+test("'@org=sub/package' is not a valid name", function (t) {
+ t.throws(function () {
+ fixNameField({name : "@org=sub/package"}, false)
+ }, "blows up as expected")
+
+ t.end()
+})
+
+test("'@org/' is not a valid name", function (t) {
+ t.throws(function () {
+ fixNameField({name : "@org/"}, false)
+ }, "blows up as expected")
+
+ t.end()
+})
+
+test("'@/package' is not a valid name", function (t) {
+ t.throws(function () {
+ fixNameField({name : "@/package"}, false)
+ }, "blows up as expected")
+
+ t.end()
+})
diff --git a/deps/npm/node_modules/read-package-json/package.json b/deps/npm/node_modules/read-package-json/package.json
index 5d64ff0e3815bc..3247b6b7654eee 100644
--- a/deps/npm/node_modules/read-package-json/package.json
+++ b/deps/npm/node_modules/read-package-json/package.json
@@ -1,6 +1,6 @@
{
"name": "read-package-json",
- "version": "1.2.2",
+ "version": "1.2.6",
"author": {
"name": "Isaac Z. Schlueter",
"email": "i@izs.me",
@@ -16,9 +16,10 @@
"test": "tap test/*.js"
},
"dependencies": {
+ "github-url-from-git": "^1.3.0",
"glob": "^4.0.2",
"lru-cache": "2",
- "normalize-package-data": "^0.3.0",
+ "normalize-package-data": "^1.0.0",
"graceful-fs": "2 || 3"
},
"devDependencies": {
@@ -30,12 +31,12 @@
"license": "ISC",
"readme": "# read-package-json\n\nThis is the thing that npm uses to read package.json files. It\nvalidates some stuff, and loads some default things.\n\nIt keeps a cache of the files you've read, so that you don't end\nup reading the same package.json file multiple times.\n\nNote that if you just want to see what's literally in the package.json\nfile, you can usually do `var data = require('some-module/package.json')`.\n\nThis module is basically only needed by npm, but it's handy to see what\nnpm will see when it looks at your package.\n\n## Usage\n\n```javascript\nvar readJson = require('read-package-json')\n\n// readJson(filename, [logFunction=noop], [strict=false], cb)\nreadJson('/path/to/package.json', console.error, false, function (er, data) {\n if (er) {\n console.error(\"There was an error reading the file\")\n return\n }\n\n console.error('the package data is', data)\n});\n```\n\n## readJson(file, [logFn = noop], [strict = false], cb)\n\n* `file` {String} The path to the package.json file\n* `logFn` {Function} Function to handle logging. Defaults to a noop.\n* `strict` {Boolean} True to enforce SemVer 2.0 version strings, and\n other strict requirements.\n* `cb` {Function} Gets called with `(er, data)`, as is The Node Way.\n\nReads the JSON file and does the things.\n\n## `package.json` Fields\n\nSee `man 5 package.json` or `npm help json`.\n\n## readJson.log\n\nBy default this is a reference to the `npmlog` module. But if that\nmodule can't be found, then it'll be set to just a dummy thing that does\nnothing.\n\nReplace with your own `{log,warn,error}` object for fun loggy time.\n\n## readJson.extras(file, data, cb)\n\nRun all the extra stuff relative to the file, with the parsed data.\n\nModifies the data as it does stuff. Calls the cb when it's done.\n\n## readJson.extraSet = [fn, fn, ...]\n\nArray of functions that are called by `extras`. Each one receives the\narguments `fn(file, data, cb)` and is expected to call `cb(er, data)`\nwhen done or when an error occurs.\n\nOrder is indeterminate, so each function should be completely\nindependent.\n\nMix and match!\n\n## readJson.cache\n\nThe `lru-cache` object that readJson uses to not read the same file over\nand over again. See\n[lru-cache](https://github.com/isaacs/node-lru-cache) for details.\n\n## Other Relevant Files Besides `package.json`\n\nSome other files have an effect on the resulting data object, in the\nfollowing ways:\n\n### `README?(.*)`\n\nIf there is a `README` or `README.*` file present, then npm will attach\na `readme` field to the data with the contents of this file.\n\nOwing to the fact that roughly 100% of existing node modules have\nMarkdown README files, it will generally be assumed to be Markdown,\nregardless of the extension. Please plan accordingly.\n\n### `server.js`\n\nIf there is a `server.js` file, and there is not already a\n`scripts.start` field, then `scripts.start` will be set to `node\nserver.js`.\n\n### `AUTHORS`\n\nIf there is not already a `contributors` field, then the `contributors`\nfield will be set to the contents of the `AUTHORS` file, split by lines,\nand parsed.\n\n### `bindings.gyp`\n\nIf a bindings.gyp file exists, and there is not already a\n`scripts.install` field, then the `scripts.install` field will be set to\n`node-gyp rebuild`.\n\n### `wscript`\n\nIf a wscript file exists, and there is not already a `scripts.install`\nfield, then the `scripts.install` field will be set to `node-waf clean ;\nnode-waf configure build`.\n\nNote that the `bindings.gyp` file supercedes this, since node-waf has\nbeen deprecated in favor of node-gyp.\n\n### `index.js`\n\nIf the json file does not exist, but there is a `index.js` file\npresent instead, and that file has a package comment, then it will try\nto parse the package comment, and use that as the data instead.\n\nA package comment looks like this:\n\n```javascript\n/**package\n * { \"name\": \"my-bare-module\"\n * , \"version\": \"1.2.3\"\n * , \"description\": \"etc....\" }\n **/\n\n// or...\n\n/**package\n{ \"name\": \"my-bare-module\"\n, \"version\": \"1.2.3\"\n, \"description\": \"etc....\" }\n**/\n```\n\nThe important thing is that it starts with `/**package`, and ends with\n`**/`. If the package.json file exists, then the index.js is not\nparsed.\n\n### `{directories.man}/*.[0-9]`\n\nIf there is not already a `man` field defined as an array of files or a\nsingle file, and\nthere is a `directories.man` field defined, then that directory will\nbe searched for manpages.\n\nAny valid manpages found in that directory will be assigned to the `man`\narray, and installed in the appropriate man directory at package install\ntime, when installed globally on a Unix system.\n\n### `{directories.bin}/*`\n\nIf there is not already a `bin` field defined as a string filename or a\nhash of ` : ` pairs, then the `directories.bin`\ndirectory will be searched and all the files within it will be linked as\nexecutables at install time.\n\nWhen installing locally, npm links bins into `node_modules/.bin`, which\nis in the `PATH` environ when npm runs scripts. When\ninstalling globally, they are linked into `{prefix}/bin`, which is\npresumably in the `PATH` environment variable.\n",
"readmeFilename": "README.md",
- "gitHead": "ed8df916a4432b3317e4d3c7154aac2a790844cb",
+ "gitHead": "a6390214436eea17043130d7c7d961ae85786e4c",
"bugs": {
"url": "https://github.com/isaacs/read-package-json/issues"
},
"homepage": "https://github.com/isaacs/read-package-json",
- "_id": "read-package-json@1.2.2",
- "_shasum": "545fc9044d135bf5fe0a67c6eab368c3186cbafe",
+ "_id": "read-package-json@1.2.6",
+ "_shasum": "eedcc11ba25a94f80e5941fdbccff4a21d8ab13a",
"_from": "read-package-json@latest"
}
diff --git a/deps/npm/node_modules/tar/package.json b/deps/npm/node_modules/tar/package.json
index 2f261b890d78b1..89ac65cf53b8e2 100644
--- a/deps/npm/node_modules/tar/package.json
+++ b/deps/npm/node_modules/tar/package.json
@@ -6,7 +6,7 @@
},
"name": "tar",
"description": "tar for node",
- "version": "0.1.20",
+ "version": "1.0.0",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/node-tar.git"
@@ -17,7 +17,7 @@
},
"dependencies": {
"block-stream": "*",
- "fstream": "~0.1.28",
+ "fstream": "^1.0.0",
"inherits": "2"
},
"devDependencies": {
@@ -27,12 +27,12 @@
"license": "BSD",
"readme": "# node-tar\n\nTar for Node.js.\n\n[![NPM](https://nodei.co/npm/tar.png)](https://nodei.co/npm/tar/)\n\n## API\n\nSee `examples/` for usage examples.\n\n### var tar = require('tar')\n\nReturns an object with `.Pack`, `.Extract` and `.Parse` methods.\n\n### tar.Pack([properties])\n\nReturns a through stream. Use\n[fstream](https://npmjs.org/package/fstream) to write files into the\npack stream and you will receive tar archive data from the pack\nstream.\n\nThis only works with directories, it does not work with individual files.\n\nThe optional `properties` object are used to set properties in the tar\n'Global Extended Header'.\n\n### tar.Extract([options])\n\nReturns a through stream. Write tar data to the stream and the files\nin the tarball will be extracted onto the filesystem.\n\n`options` can be:\n\n```js\n{\n path: '/path/to/extract/tar/into',\n strip: 0, // how many path segments to strip from the root when extracting\n}\n```\n\n`options` also get passed to the `fstream.Writer` instance that `tar`\nuses internally.\n\n### tar.Parse()\n\nReturns a writable stream. Write tar data to it and it will emit\n`entry` events for each entry parsed from the tarball. This is used by\n`tar.Extract`.\n",
"readmeFilename": "README.md",
- "gitHead": "b5931010907cd1ef5a186bc947954391050cbcce",
+ "gitHead": "49979621a55c73c3f668d8e01830eba1ea9df862",
"bugs": {
"url": "https://github.com/isaacs/node-tar/issues"
},
"homepage": "https://github.com/isaacs/node-tar",
- "_id": "tar@0.1.20",
- "_shasum": "42940bae5b5f22c74483699126f9f3f27449cb13",
- "_from": "tar@~0.1.19"
+ "_id": "tar@1.0.0",
+ "_shasum": "36636d76e8ae12b4bc11a940ac606b5ca8a5fe1f",
+ "_from": "tar@latest"
}
diff --git a/deps/npm/package.json b/deps/npm/package.json
index e4eba9bd5b4e06..aad92d45abfc3a 100644
--- a/deps/npm/package.json
+++ b/deps/npm/package.json
@@ -1,5 +1,5 @@
{
- "version": "1.4.21",
+ "version": "1.4.23",
"name": "npm",
"description": "A package manager for node",
"keywords": [
@@ -41,27 +41,27 @@
"child-process-close": "~0.1.1",
"chmodr": "~0.1.0",
"chownr": "0",
- "cmd-shim": "~1.1.1",
+ "cmd-shim": "~1.1.2",
"columnify": "~1.1.0",
"editor": "~0.1.0",
- "fstream": "~0.1.28",
- "fstream-npm": "~0.1.7",
- "github-url-from-git": "1.1.1",
+ "fstream": "~1.0.0",
+ "fstream-npm": "~1.0.0",
+ "github-url-from-git": "~1.3.0",
"github-url-from-username-repo": "~0.2.0",
- "glob": "~4.0.3",
+ "glob": "~4.0.5",
"graceful-fs": "~3.0.0",
"inflight": "~1.0.1",
"ini": "~1.2.0",
- "init-package-json": "~0.1.0",
+ "init-package-json": "~1.0.0",
"lockfile": "~0.4.0",
"lru-cache": "~2.5.0",
- "minimatch": "~0.3.0",
- "mkdirp": "~0.3.5",
- "node-gyp": "~0.13.0",
+ "minimatch": "~1.0.0",
+ "mkdirp": "~0.5.0",
+ "node-gyp": "~1.0.1",
"nopt": "~3.0.1",
"npm-cache-filename": "~1.0.1",
"npm-install-checks": "~1.0.2",
- "npm-registry-client": "~2.0.3",
+ "npm-registry-client": "~2.0.4",
"npm-user-validate": "~0.1.0",
"npmconf": "~1.1.4",
"npmlog": "~0.1.1",
@@ -71,7 +71,7 @@
"path-is-inside": "~1.0.0",
"read": "~1.0.4",
"read-installed": "~2.0.5",
- "read-package-json": "~1.2.2",
+ "read-package-json": "~1.2.6",
"request": "~2.30.0",
"retry": "~0.6.0",
"rimraf": "~2.2.8",
@@ -79,7 +79,7 @@
"sha": "~1.2.1",
"slide": "~1.1.5",
"sorted-object": "~1.0.0",
- "tar": "~0.1.20",
+ "tar": "~1.0.0",
"text-table": "~0.2.0",
"uid-number": "0.0.5",
"which": "1"