diff --git a/deps/npm/.npmrc b/deps/npm/.npmrc deleted file mode 100644 index ca0bc48dd552..000000000000 --- a/deps/npm/.npmrc +++ /dev/null @@ -1,2 +0,0 @@ -save-prefix = ~ -proprietary-attribs = false diff --git a/deps/npm/.travis.yml b/deps/npm/.travis.yml index d555682984fa..8bea904862c3 100644 --- a/deps/npm/.travis.yml +++ b/deps/npm/.travis.yml @@ -1,5 +1,7 @@ language: node_js node_js: + - "4.1" + - "4.0" - iojs - "0.12" - "0.10" diff --git a/deps/npm/AUTHORS b/deps/npm/AUTHORS index 5e822a9f8d53..704b7110f4d0 100644 --- a/deps/npm/AUTHORS +++ b/deps/npm/AUTHORS @@ -302,3 +302,14 @@ Steve Klabnik Andrew Murray Stephan Bönnemann Kyle M. Tarplee +Derek Peterson +Greg Whiteley +murgatroid99 +Marcin Cieslak +João Reis +Matthew Hasbach +Anna Henningsen +Jon Hall +James Hartig +snopeks +Jason Kurian diff --git a/deps/npm/CHANGELOG.md b/deps/npm/CHANGELOG.md index 90141a67c7ad..54c6e317589f 100644 --- a/deps/npm/CHANGELOG.md +++ b/deps/npm/CHANGELOG.md @@ -1,3 +1,591 @@ +### v2.14.9 (2015-10-29): + +There's still life in `npm@2`, but for now, enjoy these dependency upgrades! +Also, [@othiym23](https://github.com/othiym23) says hi! _waves_ +[@zkat](https://github.com/zkat) has her hands full, and +[@iarna](https://github.com/iarna)'s handling `npm@3`, so I'm dealing with +`npm@2` and the totally nonexistent weird bridge `npm@1.4` LTS release that may +or may not be happening this week. + +#### CAN'T STOP WON'T STOP UPDATING THOSE DEPENDENCIES + +* [`f52f0cb`](https://github.com/npm/npm/commit/f52f0cb51526314197e9d67619feebbd82a397b7) + [#10150](https://github.com/npm/npm/issues/10150) `chmodr@1.0.2`: Use + `fs.lstat()` to check if an entry is a directory, making `chmodr()` work + properly with NFS mounts on Windows. ([@sheerun](https://github.com/sheerun)) +* [`f7011d7`](https://github.com/npm/npm/commit/f7011d7b3b1d9148a6cd8f7b8359d6fe3269a912) + [#10150](https://github.com/npm/npm/issues/10150) `which@1.2.0`: Additional + command-line parameters, which is nice but not used by npm. + ([@isaacs](https://github.com/isaacs)) +* [`ebcc0d8`](https://github.com/npm/npm/commit/ebcc0d8629388da0b849bbbad590382cd7268f51) + [#10150](https://github.com/npm/npm/issues/10150) `minimatch@3.0.0`: Don't + package browser version. ([@isaacs](https://github.com/isaacs)) +* [`8c98dce`](https://github.com/npm/npm/commit/8c98dce5ffe242bafbe92b849e73e8de1803e256) + [#10150](https://github.com/npm/npm/issues/10150) `fstream-ignore@1.0.3`: + Upgrade to use `minimatch@3` (for deduping purposes). + ([@othiym23](https://github.com/othiym23)) +* [`db9ef33`](https://github.com/npm/npm/commit/db9ef337c253ecf21c921055bf8742e10d1cb3bb) + [#10150](https://github.com/npm/npm/issues/10150) `request@2.65.0`: + Dependency upgrades and a few bug fixes, mostly related to cookie handling. + ([@simov](https://github.com/simov)) + +#### DEVDEPENDENCIES TOO, I GUESS, IT'S COOL + +* [`dfbf621`](https://github.com/npm/npm/commit/dfbf621afa09c46991249b4f9a995d1823ea7ede) + [#10150](https://github.com/npm/npm/issues/10150) `tap@2.2.0`: Better + handling of test order handling (including some test fixes for npm). + ([@isaacs](https://github.com/isaacs)) +* [`cf5ad5a`](https://github.com/npm/npm/commit/cf5ad5a8c88bfd72e30ef8a8d1d3c5508e0b3c23) + [#10150](https://github.com/npm/npm/issues/10150) `nock@2.16.0`: More + expectations, documentation, and bug fixes. + ([@pgte](https://github.com/pgte)) + +### v2.14.8 (2015-10-08): + +#### SLOWLY RECOVERING FROM FEELINGS + +OS&F is definitely my favorite convention I've gone to. Y'all should check it +out next year! Rebecca and Kat are back, although Forrest is out at +[&yet conf](http://andyetconf.com/). + +This week sees another tiny LTS release with non-code-related patches -- just +CI/release things. + +Meanwhile, have you heard? `npm@3` is much faster now! Go upgrade with `npm +install -g npm@latest` and give it a whirl if you haven't already! + +#### IF YOU CHANGE CASING ON A FILE, YOU ARE NOT MY FRIEND + +Seriously. I love me some case-sensitive filesystems, but a lot of us have to +deal with `git` and its funky support for case normalizing systems. Have mercy +and just don't bother if all you're changing is casing, please? Otherwise, I +have to do this little dance to prevent horrible conflicts. + +* [`c3a7b61`](https://github.com/npm/npm/commit/c3a7b619786650a45653c8b55b8741fc7bb5cfda) + [#9804](https://github.com/npm/npm/pulls/9804) Remove the readme file with + weird casing. + ([@zkat](https://github.com/zkat)) +* [`f3f619e`](https://github.com/npm/npm/commit/f3f619e06e4be1378dbf286f897b50e9c69c9557) + [#9804](https://github.com/npm/npm/pulls/9804) Add the readme file back in, + with desired casing. + ([@zkat](https://github.com/zkat)) + +#### IDK. OUR CI DOESN'T EVEN FULLY WORK YET BUT SURE + +Either way, it's nice to make sure we're running stuff on the latest Node. `4.2` +is getting released very soon, though (this week?), and that'll be the first +official LTS release! + +* [`bd0b9ab`](https://github.com/npm/npm/commit/bd0b9ab6e60a31448794bbd88f94672572c3cb55) + [#9827](https://github.com/npm/npm/pulls/9827) Add node `4.0` and `4.1` to + TravisCI + ([@JaKXz](https://github.com/JaKXz)) + +### v2.14.7 (2015-10-01): + +#### MORE RELEASE STAGGERING?! + +Hi all, and greetings from [Open Source & Feelings](http://osfeels.com)! + +So we're switching gears a little with how we handle our weekly releases: from +now on, we're going to stagger release weeks between dependency bumps and +regular patches. So, this week, aside from a doc change, we'll be doing only +version bumps. Expect actual patches next week! + +#### TOTALLY FOLLOWING THE RULES ALREADY + +So I snuck this in, because it's our own [@snopeks](https://github.com/snopeks)' +first contribution to the main `npm` repo. She's been helping with building +support documents for Orgs, and contributed her general intro guide to the new +feature so you can read it with `npm help orgs` right in your terminal! + +* [`8324ea0`](https://github.com/npm/npm/commit/8324ea023ace4e08b6b8959ad199e2457af9f9cf) + [#9761](https://github.com/npm/npm/pull/9761) Added general user guide for + Orgs. + ([@snopeks](https://github.com/snopeks)) + +#### JUST. ONE. MORE. + +* [`9a502ca`](https://github.com/npm/npm/commit/9a502ca96e2d43ec75a8f684c9ca33af7e910f0a) + Use unique package name in tests to work around weird test-state-based + failures. + ([@iarna](https://github.com/iarna)) + +#### OKAY ACTUALLY THE THING I WAS SUPPOSED TO DO + +Anyway -- here's your version bump! :) + +* [`4aeb94c`](https://github.com/npm/npm/commit/4aeb94c9f0df3f41802cf2e0397a998f3b527c25) + `request@2.64.0`: No longer defaulting to `application/json` for `json` + requests. Also some minor doc and packaging patches. + ([@simov](https://github.com/simov)) +* [`a18b213`](https://github.com/npm/npm/commit/a18b213e6945a8f5faf882927829ac95f844e2aa) + `glob@5.0.15`: Upgraded `minimatch` dependency. + ([@isaacs](https://github.com/isaacs)) +* [`9eb64d4`](https://github.com/npm/npm/commit/9eb64e44509519ca9d788502edb2eba4cea5c86b) + `nock@2.13.0` + ([@pgte](https://github.com/pgte)) + +### v2.14.6 (2015-09-24): + +#### `¯\_(ツ)_/¯` + +Since `2.x` is LTS now, you can expect a slowdown in overall release sizes. On +top of that, we had our all-company-npm-internal-conf thing on Monday and +Tuesday so there wasn't really time to do much at all. + +Still, we're bringing you a couple of tiny little changes this week! + +* [`7b7da13`](https://github.com/npm/npm/commit/7b7da13c6cdf5eae53c20d5c69afc4c16e6f715d) + [#9471](https://github.com/npm/npm/pull/9471) When the port for a tarball is + different than the registry it's in, but the hostname is the same, the + protocol is now allowed to change, too. + ([@fastest963](https://github.com/fastest963)) +* [`6643ada`](https://github.com/npm/npm/commit/6643adaf9f37f08893e3ad28b797c55a36b2a152) + `request@2.63.0`: Use `application/json` as the default content type when + making `json` requests. + ([@simov](https://github.com/simov)) + +### v2.14.5 (2015-09-17): + +#### NPM IS DEAD. LONG LIVE NPM + +That's right folks. As of this week, `npm@latest` is `npm@3`! There's some +really great shiny new things over there, and you should really take a look. + +Many kudos to [@iarna](https://github.com/iarna) for her hard work on `npm@3`! + +Don't worry, we'll keep `2.x` around for a while (as LTS), but you won't see +many, if any, new features on this end. From now on, we're going to use +`latest-2` and `next-2` as the dist tags for the `npm@2` branch. + +#### OKAY THAT'S FINE CAN I DEPRECATE THINGS NOW? + +Yes! Specially if you're using scoped packages. Apparently, deprecating them +never worked, but that should be better now. :) + +* [`eca7b24`](https://github.com/npm/npm/commit/eca7b24de9a0090da02a93a69726f5e70ab80543) + [#9558](https://github.com/npm/npm/issues/9558) Add tests for npm deprecate. + ([@zkat](https://github.com/zkat)) +* [`648fe16`](https://github.com/npm/npm/commit/648fe16157ef0db22395ae056d1dd4b4c1605bf4) + [#9558](https://github.com/npm/npm/issues/9558) `npm-registry-client@7.0.7`: + Fixes `npm deprecate` so you can actually deprecate scoped modules now (it + never worked). + ([@zkat](https://github.com/zkat)) + +#### WTF IS `node-waf` + +idk. Some old thing. We don't talk about it anymore. + +* [`cf1b39f`](https://github.com/npm/npm/commit/cf1b39fc95a9ffad7fba4c2fee705c53b19d1d16) + [#9584](https://github.com/npm/npm/issues/9584) Fix ancient references to + `node-waf` in the docs to refer to the `node-gyp` version of things. + ([@KenanY](https://github.com/KenanY)) + +#### THE `graceful-fs` AND `node-gyp` SAGA CONTINUES + +Last week had some sweeping `graceful-fs` upgrades, and this takes care of one +of the stragglers, as well as bumping `node-gyp`. `node@4` users might be +excited about this, or even `node@<4` users who previously had to cherry-pick a +bunch of patches to get the latest npm working. + +* [`e07354f`](https://github.com/npm/npm/commit/e07354f3ff3a6be568fe950f1f825897f72912d8) + `sha@2.0.1`: Upgraded graceful-fs! + ([@ForbesLindesay](https://github.com/ForbesLindesay)) +* [`83cb6ee`](https://github.com/npm/npm/commit/83cb6ee4045b85e565e9678ca1878877e1dc75bd) + `node-gyp@3.0.3` + ([@rvagg](https://github.com/rvagg)) + +#### DEPS! DEPS! MORE DEPS! OK STOP DEPS + +* [`0d60888`](https://github.com/npm/npm/commit/0d608889615a1cb63f5f852337e955053f201aeb) + `normalize-package-data@2.3.4`: Use an external package to check for built-in + node modules. + ([@sindresorhus](https://github.com/sindresorhus)) +* [`79b4dac`](https://github.com/npm/npm/commit/79b4dac11f1c2d8ad5489fc3104734e1c10d4793) + `retry@0.8.0` + ([@tim-kos](https://github.com/tim-kos)) +* [`c164941`](https://github.com/npm/npm/commit/c164941d3c792904d5b126a4fd36eefbe0699f52) + `request@2.62.0`: node 4 added to build targets. Option initialization issues + fixed. + ([@simov](https://github.com/simov)) +* [`0fd878a`](https://github.com/npm/npm/commit/0fd878a44d5ae303325808d1f00df4dce7549d50) + `lru-cache@2.7.0`: Cache serialization support and fixes a cache length bug. + ([@isaacs](https://github.com/isaacs)) +* [`6a7a114`](https://github.com/npm/npm/commit/6a7a114a45b4699995d6e09164fdfd0fa1274591) + `nock@2.12.0` + ([@pgte](https://github.com/pgte)) +* [`6b25e6d`](https://github.com/npm/npm/commit/6b25e6d2235c11f4444104db4545cb42a0267666) + `semver@5.0.3`: Removed uglify-js dead code. + ([@isaacs](https://github.com/isaacs)) + +### v2.14.4 (2015-09-10): + +#### THE GREAT NODEv4 SAGA + +So [Node 4 is out now](https://nodejs.org/en/blog/release/v4.0.0/) and that's +going to involve a number of things over in npm land. Most importantly, it's the +last major release that will include the `2.x` branch of npm. That also means +that `2.x` is going to go into LTS mode in the coming weeks -- once `npm@3` +becomes our official `latest` release. You can most likely expect Node 5 to +include `npm@3` by default, whenever that happens. We'll go into more detail +about LTS at that point, as well, so keep your eyes peeled for announcements! + +#### NODE IS DEAD. LONG LIVE NODE! + +Node 4 being released means that a few things that used to be floating patches +are finally making it right into npm proper. This week, we've got two such +updates, both to dependencies: + +* [`505d9e4`](https://github.com/npm/npm/commit/505d9e40c13b8b0bb3f70ee9886f7b73ba569407) + `node-gyp@3.0.1`: Support for node nightlies and compilation for both node and + io.js without extra patching + ([@rvagg](https://github.com/rvagg)) + +[@thefourtheye](https://github.com/thefourtheye) was kind enough to submit a +*bunch* of PRs to npm's dependencies updating them to `graceful-fs@4.1.2`, which +mainly makes it so we're no longer monkey-patching `fs`. The following are all +updates related to this: + +* [`10cb189`](https://github.com/npm/npm/commit/10cb189c773fef804214018d57509cc7a943184b) + `write-file-atomic@1.1.3` + ([@thefourtheye](https://github.com/thefourtheye)) +* [`edfb80b`](https://github.com/npm/npm/commit/edfb80b39f8cfce9a993f139eb98248001198e09) + `tar@2.2.1` + ([@thefourtheye](https://github.com/thefourtheye)) +* [`aa6e1ee`](https://github.com/npm/npm/commit/aa6e1eede7d71fa69d7256afdfbaa3406bc39a5b) + `read-package-json@2.0.1` + ([@thefourtheye](https://github.com/thefourtheye)) +* [`18971a3`](https://github.com/npm/npm/commit/18971a361635ed3958ecd39b63930ae1e56f8612) + `read-installed@4.0.3` + ([@thefourtheye](https://github.com/thefourtheye)) +* [`a4cba71`](https://github.com/npm/npm/commit/a4cba71bd2532236fda7385bf55e8790cafd4f0a) + `fstream@1.0.8` + ([@thefourtheye](https://github.com/thefourtheye)) +* [`70a38e2`](https://github.com/npm/npm/commit/70a38e29418951ac61ab6cf269d188074fe8ac3a) + `fs-write-stream-atomic@1.0.4` + ([@thefourtheye](https://github.com/thefourtheye)) +* [`9cbd20f`](https://github.com/npm/npm/commit/9cbd20f691e37960e4ba12d401abd1069657cb47) + `fs-vacuum@1.2.7` + ([@thefourtheye](https://github.com/thefourtheye)) + +#### OTHER PATCHES + +* [`c4dd521`](https://github.com/npm/npm/commit/c4dd5213b2f3283ea0392845e5f78cac4573529e) + [#9506](https://github.com/npm/npm/issues/9506) Make `npm link` work on + Windows when using node pre-release/RC releases. + ([@jon-hall](https://github.com/jon-hall)) +* [`b6bc29c`](https://github.com/npm/npm/commit/b6bc29c1401b3d6b570c09cbef1866bdb0436b59) + [#9544](https://github.com/npm/npm/issues/9549) `process.binding` is being + deprecated, so our only direct usage has been removed. + ([@ChALkeR](https://github.com/ChALkeR)) + +#### MORE DEPENDENCIES! + +* [`d940594`](https://github.com/npm/npm/commit/d940594e479a7f012b6dd6952e8ef985ba2a6216) + `tap@1.4.1` + ([@isaacs](https://github.com/isaacs)) +* [`ee38486`](https://github.com/npm/npm/commit/ee3848669331fd98879a3175789d963543f67ce3) + `which@1.1.2`: Added tests for Windows-related dead code that was previously + helping a silent failure happen. Travis stuff, too. + ([@isaacs](https://github.com/isaacs)) + +#### DOC UPDATES + +* [`475daf5`](https://github.com/npm/npm/commit/475daf54ad07777938d1d7ee1a3e576961e84510) + [#9492](https://github.com/npm/npm/issues/9492) Clarify how `.npmignore` and + `.gitignore` are found and used by npm. + ([@addaleax](https://github.com/addaleax)) +* [`b2c391d`](https://github.com/npm/npm/commit/b2c391d7833249626a6d7650363a83bcc778717a) + `nopt@3.0.4`: Minor clarifications to docs about how array and errors work. + ([@zkat](https://github.com/zkat)) + +### v2.14.3 (2015-09-03): + +#### TEAMS AND ORGS STILL BETA. CLI CODE STILL SOLID. + +Our closed beta for Teens and Orcs is happening! The web team is hard at work +making sure everything looks pretty and usable and such. Once we fix things +stemming from that beta, you can expect the feature to be available publicly. +Some time after that, it'll even be available for free for FOSS orgs. It'll Be +Done When It's Done™. + +#### OH GOOD, I CAN ACTUALLY UPSTREAM NOW + +Looks like last week's release foiled our own test suite when trying to upstream +it to Node! Just a friendly reminder that no, `.npmrc` is no longer included +then you pack/release a package! [@othiym23](https://github.com/othiym23) and +[@isaacs](https://github.com/isaacs) managed to suss the really strange test +failures resulting from that, and we've patched it in this release. + +* [`01a3428`](https://github.com/npm/npm/commit/01a3428534b754dca89a56fd1e49f55cb22f6f25) + [#9476](https://github.com/npm/npm/issues/9476) test: Recreate missing + `.npmrc` files when missing so downstream packagers can run tests on packed + npm. + ([@othiym23](https://github.com/othiym23)) + +#### TALKING ABOUT THE CHANGELOG IN THE CHANGELOG IS LIKE, POMO OR SOMETHING + +* [`c1e7a83`](https://github.com/npm/npm/commit/c1e7a83c0ae7aadf01aecc57cf8a0ae2009d4da8) + [#9431](https://github.com/npm/npm/issues/9431) CHANGELOG: clarify + windows-related nature of patch + ([@saper](https://github.com/saper)) + +#### devDependencies UPDATED + +No actual dep updates this week, but we're bumping a couple of devDeps: + +* [`8454835`](https://github.com/npm/npm/commit/84548351bfd63e3e305d195abbcad24c6b7c3e8e) + `tap@1.4.0`: Add `t.contains()` as alias to `t.match()` + ([@isaacs](https://github.com/isaacs)) +* [`13d2216`](https://github.com/npm/npm/commit/13d22161bcdeb6e1ed095d5ba2f77e6abfffa5eb) + `deep-equal@1.0.1`: Make `null == undefined` in non-strict mode + ([@isaacs](https://github.com/isaacs)) + +### v2.14.2 (2015-08-27): + +#### GETTING THAT PESKY `preferGlobal` WARNING RIGHT + +So apparently the `preferGlobal` option hasn't quite been warning correctly for +some time. But now it should be all better! tl;dr: if you try and install a +dependency with `preferGlobal: true`, and it's _not already_ in your +`package.json`, you'll get a warning that the author would really rather you +install it with `--global`. This should prevent Windows PowerShell from thinking +npm has failed just because of a benign warning. + +* [`bbb25f3`](https://github.com/npm/npm/commit/bbb25f30d582f8979168c79233a9f8f840974f90) + [#8841](https://github.com/npm/npm/issues/8841) + [#9409](https://github.com/npm/npm/issues/9409) The `preferGlobal` + warning shouldn't happen if the dependency being installed is listed in + `devDependencies`. ([@saper](https://github.com/saper)) +* [`222fcec`](https://github.com/npm/npm/commit/222fcec85ccd30d35899e5037079fb14625af4e2) + [#9409](https://github.com/npm/npm/issues/9409) `preferGlobal` now prints a + warning when there are no dependencies for the current package. + ([@zkat](https://github.com/zkat)) +* [`5cfed6d`](https://github.com/npm/npm/commit/5cfed6d7a1a5f2731688cfc8293b5e43a6355393) + [#9409](https://github.com/npm/npm/issues/9409) Verify that + `preferGlobal` is warning as expected (when a `preferGlobal` dependency is + installed, but isn't listed in either `dependencies` or `devDependencies`). + ([@zkat](https://github.com/zkat)) + +#### BUMP +1 + +* [`eeafce2`](https://github.com/npm/npm/commit/eeafce2d06883c0f51bf403415b6bc5f2647eba3) + `validate-npm-package-license@3.0.1`: Include additional metadata in parsed license object, + useful for license checkers. ([@kemitchell](https://github.com/kemitchell)) +* [`1502a28`](https://github.com/npm/npm/commit/1502a285f84aa548806b3eafc8889e6288e810f3) + `normalise-package-data@2.3.2`: Updated to use `validate-npm-package-license@3.0.1`. + ([@othiym23](https://github.com/othiym23)) +* [`cbde823`](https://github.com/npm/npm/commit/cbde8233436bf0ea62a4740869b4990322c20659) + `init-package-json@1.9.1`: Add a `silent` option to suppress output on writing the + generated `package.json`. Also, updated to use `validate-npm-package-license@3.0.1`. + ([@zkat](https://github.com/zkat)) +* [`08fda46`](https://github.com/npm/npm/commit/08fda465452b4d77f1ced8050ee3a35a77fc30a5) + `tar@2.2.0`: Minor improvements. ([@othiym23](https://github.com/othiym23)) +* [`dc2f20b`](https://github.com/npm/npm/commit/dc2f20b53fff77203139c863b48da0e959df2ac9) + `rimraf@2.4.3`: `EPERM` now triggers a delay / retry loop (since Windows throws + this when things still hold a handle). ([@isaacs](https://github.com/isaacs)) +* [`e8acb27`](https://github.com/npm/npm/commit/e8acb273aa67ee0394d0431650e1b2a7d09c8554) + `read@1.0.7`: Fix licensing ambiguity. ([@isaacs](https://github.com/isaacs)) + +#### OTHER STUFF THAT'S RELEVANT + +* [`73a1ee0`](https://github.com/npm/npm/commit/73a1ee0be90fa1928521b63f28bef83b8ffab61d) + [#9386](https://github.com/npm/npm/issues/9386) Include additional unignorable files in + documentation. + ([@mjhasbach](https://github.com/mjhasbach)) +* [`0313e40`](https://github.com/npm/npm/commit/0313e40ee0f757fce8861be590ad668c23d7be53) + [#9396](https://github.com/npm/npm/issues/9396) Improve the `EISDIR` error + message returned by npm's error-handling code to give users a better hint of + what's most likely going on. Usually, error reports with this error code are + about people trying to install things without a `package.json`. + ([@KenanY](https://github.com/KenanY)) +* [`2677457`](https://github.com/npm/npm/commit/26774579c739c5951351e58263cf4d6ea3d66ec8) + [#9360](https://github.com/npm/npm/issues/9360) Make it easier to run + only _some_ of npm tests with lifecycle scripts via `npm tap test/tap/testname.js`. + ([@iarna](https://github.com/iarna)) + +### v2.14.1 (2015-08-20): + +#### SECURITY FIX + +There are patches for two information leaks of moderate severity in `npm@2.14.1`: + +1. In some cases, npm was leaking sensitive credential information into the + child environment when running package and lifecycle scripts. This could + lead to packages being published with files (most notably `config.gypi`, a + file created by `node-gyp` that is a cache of environmental information + regenerated on every run) containing the bearer tokens used to authenticate + users to the registry. Users with affected packages have been notified (and + the affected tokens invalidated), and now npm has been modified to not + upload files that could contain this information, as well as scrubbing the + sensitive information out of the environment passed to child scripts. +2. Per-package `.npmrc` files are used by some maintainers as a way to scope + those packages to a specific registry and its credentials. This is a + reasonable use case, but by default `.npmrc` was packed into packages, + leaking those credentials. npm will no longer include `.npmrc` when packing + tarballs. + +If you maintain packages and believe you may be affected by either +of the above scenarios (especially if you've received a security +notification from npm recently), please upgrade to `npm@2.14.1` as +soon as possible. If you believe you may have inadvertently leaked +your credentials, upgrade to `npm@2.14.1` on the affected machine, +and run `npm logout` and then `npm login`. Your access tokens will be +invalidated, which will eliminate any risk posed by tokens inadvertently +included in published packages. We apologize for the inconvenience this +causes, as well as the oversight that led to the existence of this issue +in the first place. + +Huge thanks to [@ChALkeR](https://github.com/ChALkeR) for bringing these +issues to our attention, and for helping us identify affected packages +and maintainers. Thanks also to the Node.js security working group for +their coördination with the team in our response to this issue. We +appreciate everybody's patience and understanding tremendously. + +* [`b9474a8`](https://github.com/npm/npm/commit/b9474a843ca55b7c5fac6da33989e8eb39aff8b1) + `fstream-npm@1.0.5`: Stop publishing build cruft (`config.gypi`) and per-project + `.npmrc` files to keep local configuration out of published packages. + ([@othiym23](https://github.com/othiym23)) +* [`13c286d`](https://github.com/npm/npm/commit/13c286dbdc3fa8fec4cb79fc4d1ee505c8a41b2e) + [#9348](https://github.com/npm/npm/issues/9348) Filter "private" + (underscore-prefixed, even when scoped to a registry) configuration values + out of child environments. ([@othiym23](https://github.com/othiym23)) + +#### BETTER WINDOWS INTEGRATION, ONE STEP AT A TIME + +* [`e40e71f`](https://github.com/npm/npm/commit/e40e71f2f838a8a42392f44e3eeec04e323ab743) + [#6412](https://github.com/npm/npm/issues/6412) Improve the search strategy + used by the npm shims for Windows to prioritize your own local npm installs. + npm has really needed this tweak for a long time, so hammer on it and let us + know if you run into issues, but with luck it will Just Work. + ([@joaocgreis](https://github.com/joaocgreis)) +* [`204ebbb`](https://github.com/npm/npm/commit/204ebbb3e0cab696a429a878ceeb4a7e78ec2b94) + [#8751](https://github.com/npm/npm/issues/8751) + [#7333](https://github.com/npm/npm/issues/7333) Keep [autorun + scripts](https://technet.microsoft.com/en-us/sysinternals/bb963902.aspx) from + interfering with npm package and lifecycle script execution on Windows by + adding `/d` and `/s` when invoking `cmd.exe`. + ([@saper](https://github.com/saper)) + +#### IT SEEMED LIKE AN IDEA AT THE TIME + +* [`286f3d9`](https://github.com/npm/npm/commit/286f3d97103812f0fd84b70352addbe899e258f9) + [#9201](https://github.com/npm/npm/pull/9201) For a while npm was building + HTML partials for use on [`docs.npmjs.com`](https://docs.npmjs.com), but we + weren't actually using them. Stop building them, which makes running the full + test suite and installation process around a third faster. + ([@isaacs](https://github.com/isaacs)) + +#### A SINGLE LONELY DEPENDENCY UPGRADE + +* [`b343b95`](https://github.com/npm/npm/commit/b343b956ef777e321e4251ddc96ec6d80827d9e2) + `request@2.61.0`: Bug fixes and keep-alive tweaks. + ([@simov](https://github.com/simov)) + +### v2.14.0 (2015-08-13): + +#### IT'S HERE! KINDA! + +This release adds support for teens and orcs (err, teams and organizations) to +the npm CLI! Note that the web site and registry-side features of this are +still not ready for public consumption. + +A beta should be starting in the next couple of weeks, and the features +themselves will become public once all that's done. Keep an eye out for more +news! + +All of these changes were done under [`#9011`](https://github.com/npm/npm/pull/9011): + +* [`6424170`](https://github.com/npm/npm/commit/6424170fc17c666a6efc090370ec691e0cab1792) + Added new `npm team` command and subcommands. + ([@zkat](https://github.com/zkat)) +* [`52220d1`](https://github.com/npm/npm/commit/52220d146d474ec29b683bd99c06f75cbd46a9f4) + Added documentation for new `npm team` command. + ([@zkat](https://github.com/zkat)) +* [`4e66830`](https://github.com/npm/npm/commit/4e668304850d02df8eb27a779fda76fe5de645e7) + Updated `npm access` to support teams and organizations. + ([@zkat](https://github.com/zkat)) +* [`ea3eb87`](https://github.com/npm/npm/commit/ea3eb8733d9fa09ce34106b1b19fb1a8f95844a5) + Gussied up docs for `npm access` with new commands. + ([@zkat](https://github.com/zkat)) +* [`6e0b431`](https://github.com/npm/npm/commit/6e0b431c1de5e329c86e57d097aa88ebfedea864) + Fix up `npm whoami` to make the underlying API usable elsewhere. + ([@zkat](https://github.com/zkat)) +* [`f29c931`](https://github.com/npm/npm/commit/f29c931012ce5ccd69c29d83548f27e443bf7e62) + `npm-registry-client@7.0.1`: Upgrade `npm-registry-client` API to support + `team` and `access` calls against the registry. + ([@zkat](https://github.com/zkat)) + +#### A FEW EXTRA VERSION BUMPS + +* [`c977e12`](https://github.com/npm/npm/commit/c977e12cbfa50c2f52fc807f5cc19ba1cc1b39bf) + `init-package-json@1.8.0`: Checks for some `npm@3` metadata. + ([@iarna](https://github.com/iarna)) +* [`5c8c9e5`](https://github.com/npm/npm/commit/5c8c9e5ae177ba7d0d298cfa42f3fc7f0271e4ec) + `columnify@1.5.2`: Updated some dependencies. + ([@timoxley](https://github.com/timoxley)) +* [`5d56742`](https://github.com/npm/npm/commit/5d567425768b75aeab402c817a53d8b2bc60d8de) + `chownr@1.0.1`: Tests, docs, and minor style nits. + ([@isaacs](https://github.com/isaacs)) + +#### ALSO A DOC FIX + +* [`846fcc7`](https://github.com/npm/npm/commit/846fcc79b86984b109a97366b0422f995a45f8bf) + [`#9200`](https://github.com/npm/npm/pull/9200) Remove single quotes + around semver range, thus making it valid semver. + ([@KenanY](https://github.com/KenanY)) + +### v2.13.5 (2015-08-07): + +This is another quiet week for the `npm@2` release. +[@zkat](https://github.com/zkat) has been working hard on polishing the CLI +bits of the registry's new feature to support direct management of teams and +organizations, and [@iarna](https://github.com/iarna) continues to work through +the list of issues blocking the general release of `npm@3`, which is looking +more and more solid all the time. + +[@othiym23](https://github.com/othiym23) and [@zkat](https://github.com/zkat) +have also been at this week's Node.js / io.js [collaborator +summit](https://github.com/nodejs/summit/tree/master), both as facilitators and +participants. This is a valuable opportunity to get some face time with other +contributors and to work through a bunch of important discussions, but it does +leave us feeling kind of sleepy. Running meetings is hard! + +What does that leave for this release? A few of the more tricky bug fixes that +have been sitting around for a little while now, and a couple dependency +upgrades. Nothing too fancy, but most of these were contributed by developers +like _you_, which we think is swell. Thanks! + +#### BUG FIXES + +* [`d7271b8`](https://github.com/npm/npm/commit/d7271b8226712479cdd339bf85faf7e394923e0d) + [#4530](https://github.com/npm/npm/issues/4530) The bash completion script + for npm no longer alters global completion behavior around word breaks. + ([@whitty](https://github.com/whitty)) +* [`c9ce294`](https://github.com/npm/npm/commit/c9ce29415a0a8fc610690b6e9d91b64d6e36cfcc) + [#7198](https://github.com/npm/npm/issues/7198) When setting up dependencies + to be shared via `npm link `, only run the lifecycle scripts during + the original link, not when running `npm link ` or `npm install + --link` against them. ([@murgatroid99](https://github.com/murgatroid99)) +* [`422da66`](https://github.com/npm/npm/commit/422da664bd3ce71313da447f170507faf5aac46a) + [#9108](https://github.com/npm/npm/issues/9108) Clear up minor confusion + around wording in `bundledDependencies` section of `package.json` docs. + ([@derekpeterson](https://github.com/derekpeterson)) +* [`6b42d99`](https://github.com/npm/npm/commit/6b42d99460885e715772d3487b1c548d2bc8a738) + [#9146](https://github.com/npm/npm/issues/9146) Include scripts that run for + `preversion`, `version`, and `postversion` in the section for lifecycle + scripts rather than the generic `npm run-script` output. + ([@othiym23](https://github.com/othiym23)) + +#### NOPE, NOT DONE WITH DEPENDENCY UPDATES + +* [`91a48bb`](https://github.com/npm/npm/commit/91a48bb5ef5a990781c86f8b69b8a32cf4fac2d9) + `chmodr@1.0.1`: Ignore symbolic links when recursively changing mode, just + like the Unix command. ([@isaacs](https://github.com/isaacs)) +* [`4bbc86e`](https://github.com/npm/npm/commit/4bbc86e3825e2eee9a8758ba26bdea0cb6a2581e) + `nock@2.10.0` ([@pgte](https://github.com/pgte)) + ### v2.13.4 (2015-07-30): #### JULY ENDS ON A FAIRLY QUIET NOTE @@ -16,7 +604,7 @@ of you there. :) So here it is. The patch. Hope it helps. (Thanks, [@ktarplee](https://github.com/ktarplee)!) -* [`3e58c48`](https://github.com/npm/npm/commit/3e58c4819e3cafe4ae23ab7f4a520fe09258cfd7) +* [`2e58c48`](https://github.com/npm/npm/commit/2e58c4819e3cafe4ae23ab7f4a520fe09258cfd7) [#9033](https://github.com/npm/npm/pull/9033) `npm version` now works on git submodules ([@ktarplee](https://github.com/ktarplee)) diff --git a/deps/npm/Makefile b/deps/npm/Makefile index d935edfefe6d..34e40624b5ae 100644 --- a/deps/npm/Makefile +++ b/deps/npm/Makefile @@ -31,28 +31,6 @@ misc_mandocs = $(shell find doc/misc -name '*.md' \ |sed 's|doc/misc/|man/man7/|g' ) \ man/man7/npm-index.7 - -cli_partdocs = $(shell find doc/cli -name '*.md' \ - |sed 's|.md|.html|g' \ - |sed 's|doc/cli/|html/partial/doc/cli/|g' ) \ - html/partial/doc/README.html - -api_partdocs = $(shell find doc/api -name '*.md' \ - |sed 's|.md|.html|g' \ - |sed 's|doc/api/|html/partial/doc/api/|g' ) - -files_partdocs = $(shell find doc/files -name '*.md' \ - |sed 's|.md|.html|g' \ - |sed 's|doc/files/|html/partial/doc/files/|g' ) \ - html/partial/doc/files/npm-json.html \ - html/partial/doc/files/npm-global.html - -misc_partdocs = $(shell find doc/misc -name '*.md' \ - |sed 's|.md|.html|g' \ - |sed 's|doc/misc/|html/partial/doc/misc/|g' ) \ - html/partial/doc/index.html - - cli_htmldocs = $(shell find doc/cli -name '*.md' \ |sed 's|.md|.html|g' \ |sed 's|doc/cli/|html/doc/cli/|g' ) \ @@ -75,8 +53,6 @@ misc_htmldocs = $(shell find doc/misc -name '*.md' \ mandocs = $(api_mandocs) $(cli_mandocs) $(files_mandocs) $(misc_mandocs) -partdocs = $(api_partdocs) $(cli_partdocs) $(files_partdocs) $(misc_partdocs) - htmldocs = $(api_htmldocs) $(cli_htmldocs) $(files_htmldocs) $(misc_htmldocs) all: doc @@ -103,7 +79,7 @@ clean: markedclean marked-manclean doc-clean uninstall uninstall: node cli.js rm npm -g -f -doc: $(mandocs) $(htmldocs) $(partdocs) +doc: $(mandocs) $(htmldocs) markedclean: rm -rf node_modules/marked node_modules/.bin/marked .building_marked @@ -143,73 +119,43 @@ man/man5/%.5: doc/files/%.md scripts/doc-build.sh package.json @[ -d man/man5 ] || mkdir -p man/man5 scripts/doc-build.sh $< $@ -man/man7/%.7: doc/misc/%.md scripts/doc-build.sh package.json - @[ -d man/man7 ] || mkdir -p man/man7 - scripts/doc-build.sh $< $@ - - doc/misc/npm-index.md: scripts/index-build.js package.json node scripts/index-build.js > $@ - -# html/doc depends on html/partial/doc -html/doc/%.html: html/partial/doc/%.html - @[ -d html/doc ] || mkdir -p html/doc - scripts/doc-build.sh $< $@ - -html/doc/README.html: html/partial/doc/README.html +html/doc/index.html: doc/misc/npm-index.md $(html_docdeps) @[ -d html/doc ] || mkdir -p html/doc scripts/doc-build.sh $< $@ -html/doc/cli/%.html: html/partial/doc/cli/%.html - @[ -d html/doc/cli ] || mkdir -p html/doc/cli +man/man7/%.7: doc/misc/%.md scripts/doc-build.sh package.json + @[ -d man/man7 ] || mkdir -p man/man7 scripts/doc-build.sh $< $@ -html/doc/misc/%.html: html/partial/doc/misc/%.html - @[ -d html/doc/misc ] || mkdir -p html/doc/misc +html/doc/README.html: README.md $(html_docdeps) + @[ -d html/doc ] || mkdir -p html/doc scripts/doc-build.sh $< $@ -html/doc/files/%.html: html/partial/doc/files/%.html - @[ -d html/doc/files ] || mkdir -p html/doc/files +html/doc/cli/%.html: doc/cli/%.md $(html_docdeps) + @[ -d html/doc/cli ] || mkdir -p html/doc/cli scripts/doc-build.sh $< $@ -html/doc/api/%.html: html/partial/doc/api/%.html +html/doc/api/%.html: doc/api/%.md $(html_docdeps) @[ -d html/doc/api ] || mkdir -p html/doc/api scripts/doc-build.sh $< $@ - -html/partial/doc/index.html: doc/misc/npm-index.md $(html_docdeps) - @[ -d html/partial/doc ] || mkdir -p html/partial/doc - scripts/doc-build.sh $< $@ - -html/partial/doc/README.html: README.md $(html_docdeps) - @[ -d html/partial/doc ] || mkdir -p html/partial/doc - scripts/doc-build.sh $< $@ - -html/partial/doc/cli/%.html: doc/cli/%.md $(html_docdeps) - @[ -d html/partial/doc/cli ] || mkdir -p html/partial/doc/cli - scripts/doc-build.sh $< $@ - -html/partial/doc/api/%.html: doc/api/%.md $(html_docdeps) - @[ -d html/partial/doc/api ] || mkdir -p html/partial/doc/api - scripts/doc-build.sh $< $@ - -html/partial/doc/files/npm-json.html: html/partial/doc/files/package.json.html +html/doc/files/npm-json.html: html/doc/files/package.json.html cp $< $@ -html/partial/doc/files/npm-global.html: html/partial/doc/files/npm-folders.html +html/doc/files/npm-global.html: html/doc/files/npm-folders.html cp $< $@ -html/partial/doc/files/%.html: doc/files/%.md $(html_docdeps) - @[ -d html/partial/doc/files ] || mkdir -p html/partial/doc/files +html/doc/files/%.html: doc/files/%.md $(html_docdeps) + @[ -d html/doc/files ] || mkdir -p html/doc/files scripts/doc-build.sh $< $@ -html/partial/doc/misc/%.html: doc/misc/%.md $(html_docdeps) - @[ -d html/partial/doc/misc ] || mkdir -p html/partial/doc/misc +html/doc/misc/%.html: doc/misc/%.md $(html_docdeps) + @[ -d html/doc/misc ] || mkdir -p html/doc/misc scripts/doc-build.sh $< $@ - - marked: node_modules/.bin/marked node_modules/.bin/marked: diff --git a/deps/npm/README.md b/deps/npm/README.md index dcd06b50dbc5..ceaefb8f6c34 100644 --- a/deps/npm/README.md +++ b/deps/npm/README.md @@ -16,7 +16,7 @@ and prior, clone the git repo and dig through the old tags and branches. ## Super Easy Install -npm comes with [node](http://nodejs.org/download/) now. +npm is bundled with [node](http://nodejs.org/download/). ### Windows Computers diff --git a/deps/npm/bin/npm b/deps/npm/bin/npm index d020ccfe7cba..45e8e41031cd 100755 --- a/deps/npm/bin/npm +++ b/deps/npm/bin/npm @@ -7,8 +7,21 @@ case `uname` in *CYGWIN*) basedir=`cygpath -w "$basedir"`;; esac -if [ -x "$basedir/node.exe" ]; then - "$basedir/node.exe" "$basedir/node_modules/npm/bin/npm-cli.js" "$@" -else - node "$basedir/node_modules/npm/bin/npm-cli.js" "$@" +NODE_EXE="$basedir/node.exe" +if ! [ -x "$NODE_EXE" ]; then + NODE_EXE=node fi + +NPM_CLI_JS="$basedir/node_modules/npm/bin/npm-cli.js" + +case `uname` in + *CYGWIN*) + NPM_PREFIX=`"$NODE_EXE" "$NPM_CLI_JS" prefix -g` + NPM_PREFIX_NPM_CLI_JS="$NPM_PREFIX/node_modules/npm/bin/npm-cli.js" + if [ -f "$NPM_PREFIX_NPM_CLI_JS" ]; then + NPM_CLI_JS="$NPM_PREFIX_NPM_CLI_JS" + fi + ;; +esac + +"$NODE_EXE" "$NPM_CLI_JS" "$@" diff --git a/deps/npm/bin/npm.cmd b/deps/npm/bin/npm.cmd index 7720e20529cc..880554dcdd68 100644 --- a/deps/npm/bin/npm.cmd +++ b/deps/npm/bin/npm.cmd @@ -1,6 +1,19 @@ -:: Created by npm, please don't edit manually. -@IF EXIST "%~dp0\node.exe" ( - "%~dp0\node.exe" "%~dp0\.\node_modules\npm\bin\npm-cli.js" %* -) ELSE ( - node "%~dp0\.\node_modules\npm\bin\npm-cli.js" %* -) +:: Created by npm, please don't edit manually. +@ECHO OFF + +SETLOCAL + +SET "NODE_EXE=%~dp0\node.exe" +IF NOT EXIST "%NODE_EXE%" ( + SET "NODE_EXE=node" +) + +SET "NPM_CLI_JS=%~dp0\node_modules\npm\bin\npm-cli.js" +FOR /F "delims=" %%F IN ('CALL "%NODE_EXE%" "%NPM_CLI_JS%" prefix -g') DO ( + SET "NPM_PREFIX_NPM_CLI_JS=%%F\node_modules\npm\bin\npm-cli.js" +) +IF EXIST "%NPM_PREFIX_NPM_CLI_JS%" ( + SET "NPM_CLI_JS=%NPM_PREFIX_NPM_CLI_JS%" +) + +"%NODE_EXE%" "%NPM_CLI_JS%" %* diff --git a/deps/npm/doc/api/npm-view.md b/deps/npm/doc/api/npm-view.md index fd0076c96748..0c110f52ed1c 100644 --- a/deps/npm/doc/api/npm-view.md +++ b/deps/npm/doc/api/npm-view.md @@ -65,7 +65,7 @@ If a version range is provided, then data will be printed for every matching version of the package. This will show which version of jsdom was required by each matching version of yui3: - npm.commands.view(["yui3@'>0.5.4'", "dependencies.jsdom"], callback) + npm.commands.view(["yui3@>0.5.4", "dependencies.jsdom"], callback) ## OUTPUT diff --git a/deps/npm/doc/cli/npm-access.md b/deps/npm/doc/cli/npm-access.md index 85db7e654186..aabdbe03ca01 100644 --- a/deps/npm/doc/cli/npm-access.md +++ b/deps/npm/doc/cli/npm-access.md @@ -6,10 +6,11 @@ npm-access(1) -- Set access level on published packages npm access public [] npm access restricted [] - npm access add [] - npm access rm [] + npm access grant [] + npm access revoke [] - npm access ls [] + npm access ls-packages [||] + npm access ls-collaborators [ []] npm access edit [] ## DESCRIPTION @@ -23,13 +24,20 @@ subcommand. * public / restricted: Set a package to be either publicly accessible or restricted. -* add / rm: +* grant / revoke: Add or remove the ability of users and teams to have read-only or read-write access to a package. -* ls: +* ls-packages: + + Show all of the packages a user or a team is able to access, along with the + access level, except for read-only public packages (it won't print the whole + registry listing) + +* ls-collaborators: Show all of the access privileges for a package. Will only show permissions - for packages to which you have at least read access. + for packages to which you have at least read access. If `` is passed in, + the list is filtered only to teams _that_ user happens to belong to. * edit: Set the access privileges for a package at once using `$EDITOR`. @@ -56,8 +64,11 @@ If your account is not paid, then attempts to publish scoped packages will fail with an HTTP 402 status code (logically enough), unless you use `--access=public`. +Management of teams and team memberships is done with the `npm team` command. + ## SEE ALSO +* npm-team(1) * npm-publish(1) * npm-config(7) * npm-registry(7) diff --git a/deps/npm/doc/cli/npm-team.md b/deps/npm/doc/cli/npm-team.md new file mode 100644 index 000000000000..2ed9b367b56d --- /dev/null +++ b/deps/npm/doc/cli/npm-team.md @@ -0,0 +1,55 @@ +npm-team(1) -- Manage organization teams and team memberships +============================================================= + +## SYNOPSIS + + npm team create + npm team destroy + + npm team add + npm team rm + + npm team ls | + + npm team edit + +## DESCRIPTION + +Used to manage teams in organizations, and change team memberships. Does not +handle permissions for packages. + +Teams must always be fully qualified with the organization/scope they belond to +when operating on them, separated by a colon (`:`). That is, if you have a +`developers` team on a `foo` organization, you must always refer to that team as +`developers:foo` in these commands. + +* create / destroy: + Create a new team, or destroy an existing one. + +* add / rm: + Add a user to an existing team, or remove a user from a team they belong to. + +* ls: + If performed on an organization name, will return a list of existing teams + under that organization. If performed on a team, it will instead return a list + of all users belonging to that particular team. + +## DETAILS + +`npm team` always operates directly on the current registry, configurable from +the command line using `--registry=`. + +In order to create teams and manage team membership, you must be a *team admin* +under the given organization. Listing teams and team memberships may be done by +any member of the organizations. + +Organization creation and management of team admins and *organization* members +is done through the website, not the npm CLI. + +To use teams to manage permissions on packages belonging to your organization, +use the `npm access` command to grant or revoke the appropriate permissions. + +## SEE ALSO + +* npm-access(1) +* npm-registr(7) diff --git a/deps/npm/doc/files/package.json.md b/deps/npm/doc/files/package.json.md index b0d86d9492f0..91064b58b961 100644 --- a/deps/npm/doc/files/package.json.md +++ b/deps/npm/doc/files/package.json.md @@ -178,10 +178,10 @@ The "files" field is an array of files to include in your project. If you name a folder in the array, then it will also include the files inside that folder. (Unless they would be ignored by another rule.) -You can also provide a ".npmignore" file in the root of your package, -which will keep files from being included, even if they would be picked -up by the files array. The ".npmignore" file works just like a -".gitignore". +You can also provide a ".npmignore" file in the root of your package or +in subdirectories, which will keep files from being included, even +if they would be picked up by the files array. The `.npmignore` file +works just like a `.gitignore`. Certain files are always included, regardless of settings: @@ -571,7 +571,7 @@ this. If you depend on features introduced in 1.5.2, use `">= 1.5.2 < 2"`. Array of package names that will be bundled when publishing the package. -If this is spelled `"bundleDependencies"`, then that is also honorable. +If this is spelled `"bundleDependencies"`, then that is also honored. ## optionalDependencies diff --git a/deps/npm/doc/misc/npm-developers.md b/deps/npm/doc/misc/npm-developers.md index 2b025034f851..2ef900b34936 100644 --- a/deps/npm/doc/misc/npm-developers.md +++ b/deps/npm/doc/misc/npm-developers.md @@ -100,7 +100,9 @@ Use a `.npmignore` file to keep stuff out of your package. If there's no `.npmignore` file, but there *is* a `.gitignore` file, then npm will ignore the stuff matched by the `.gitignore` file. If you *want* to include something that is excluded by your `.gitignore` file, you can -create an empty `.npmignore` file to override it. +create an empty `.npmignore` file to override it. Like `git`, `npm` looks +for `.npmignore` and `.gitignore` files in all subdirectories of your +package, not only the root directory. `.npmignore` files follow the [same pattern rules](http://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository#Ignoring-Files) as `.gitignore` files: @@ -118,9 +120,11 @@ need to add them to `.npmignore` explicitly: * `.DS_Store` * `.git` * `.hg` +* `.npmrc` * `.lock-wscript` * `.svn` * `.wafpickle-*` +* `config.gypi` * `CVS` * `npm-debug.log` @@ -132,7 +136,9 @@ The following paths and files are never ignored, so adding them to `.npmignore` is pointless: * `package.json` -* `README.*` +* `README` (and its variants) +* `CHANGELOG` (and its variants) +* `LICENSE` / `LICENCE` ## Link Packages diff --git a/deps/npm/doc/misc/npm-index.md b/deps/npm/doc/misc/npm-index.md index 837ef26ba018..4efcb92af356 100644 --- a/deps/npm/doc/misc/npm-index.md +++ b/deps/npm/doc/misc/npm-index.md @@ -181,6 +181,10 @@ Stop a package Tag a published version +### npm-team(1) + +Manage organization teams and team memberships + ### npm-test(1) Test a package @@ -417,6 +421,10 @@ Frequently Asked Questions Index of all npm documentation +### npm-orgs(7) + +Working with Teams & Orgs + ### npm-registry(7) The JavaScript Package Registry diff --git a/deps/npm/doc/misc/npm-orgs.md b/deps/npm/doc/misc/npm-orgs.md new file mode 100644 index 000000000000..1f9977eaddf4 --- /dev/null +++ b/deps/npm/doc/misc/npm-orgs.md @@ -0,0 +1,90 @@ +npm-orgs(7) -- Working with Teams & Orgs +======================================== + +## DESCRIPTION + +There are three levels of org users: + +1. Super admin, controls billing & adding people to the org. +2. Team admin, manages team membership & package access. +3. Developer, works on packages they are given access to. + +The super admin is the only person who can add users to the org because it impacts the monthly bill. The super admin will use the website to manage membership. Every org has a `developers` team that all users are automatically added to. + +The team admin is the person who manages team creation, team membership, and package access for teams. The team admin grants package access to teams, not individuals. + +The developer will be able to access packages based on the teams they are on. Access is either read-write or read-only. + +There are two main commands: + +1. `npm team` see npm-access(1) for more details +2. `npm access` see npm-team(1) for more details + +## Team Admins create teams + +* Check who you’ve added to your org: + +``` +npm team ls :developers +``` + +* Each org is automatically given a `developers` team, so you can see the whole list of team members in your org. This team automatically gets read-write access to all packages, but you can change that with the `access` command. + +* Create a new team: + +``` +npm team create +``` + +* Add members to that team: + +``` +npm team add +``` + +## Publish a package and adjust package access + +* In package directory, run + +``` +npm init --scope= +``` +to scope it for your org & publish as usual + +* Grant access: + +``` +npm access grant [] +``` + +* Revoke access: + +``` +npm access revoke [] +``` + +## Monitor your package access + +* See what org packages a team member can access: + +``` +npm access ls-packages +``` + +* See packages available to a specific team: + +``` +npm access ls-packages +``` + +* Check which teams are collaborating on a package: + +``` +npm access ls-collaborators +``` + +## SEE ALSO + +* npm-team(1) +* npm-access(1) +* npm-scope(7) diff --git a/deps/npm/doc/misc/npm-scripts.md b/deps/npm/doc/misc/npm-scripts.md index 1594d3c41322..12c7f23167d4 100644 --- a/deps/npm/doc/misc/npm-scripts.md +++ b/deps/npm/doc/misc/npm-scripts.md @@ -69,10 +69,10 @@ npm will default some script values based on package contents. If there is a `server.js` file in the root of your package, then npm will default the `start` command to `node server.js`. -* `"preinstall": "node-waf clean || true; node-waf configure build"`: +* `"install": "node-gyp rebuild"`: - If there is a `wscript` file in the root of your package, npm will - default the `preinstall` command to compile using node-waf. + If there is a `bindings.gyp` file in the root of your package, npm will + default the `install` command to compile using node-gyp. ## USER diff --git a/deps/npm/html/doc/README.html b/deps/npm/html/doc/README.html index e3793baeb9a6..b4249d78ce31 100644 --- a/deps/npm/html/doc/README.html +++ b/deps/npm/html/doc/README.html @@ -19,7 +19,7 @@

IMPORTANT

To install an old and unsupported version of npm that works on node 0.3 and prior, clone the git repo and dig through the old tags and branches.

Super Easy Install

-

npm comes with node now.

+

npm is bundled with node.

Windows Computers

Get the MSI. npm is in it.

Apple Macintosh Computers

@@ -140,7 +140,7 @@

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.

+support@npmjs.com and explain the situation.

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.

@@ -166,10 +166,10 @@

BUGS

will no doubt tell you to put the output in a gist or email.

SEE ALSO

@@ -183,5 +183,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/api/npm-bin.html b/deps/npm/html/doc/api/npm-bin.html index d4d5b5f6f1d3..2e27c4c0e815 100644 --- a/deps/npm/html/doc/api/npm-bin.html +++ b/deps/npm/html/doc/api/npm-bin.html @@ -28,5 +28,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-bugs.html b/deps/npm/html/doc/api/npm-bugs.html index be307612d6bf..87c2a2255f1e 100644 --- a/deps/npm/html/doc/api/npm-bugs.html +++ b/deps/npm/html/doc/api/npm-bugs.html @@ -33,5 +33,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-cache.html b/deps/npm/html/doc/api/npm-cache.html index e05d3a4ccfa8..cdc9ff184b56 100644 --- a/deps/npm/html/doc/api/npm-cache.html +++ b/deps/npm/html/doc/api/npm-cache.html @@ -18,7 +18,7 @@

SYNOPSIS

npm.commands.cache.add([args], callback) npm.commands.cache.read(name, version, forceBypass, callback)

DESCRIPTION

-

This acts much the same ways as the npm-cache(1) command line +

This acts much the same ways as the npm-cache(1) command line functionality.

The callback is called with the package.json data of the thing that is eventually added to or read from the cache.

@@ -42,5 +42,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-commands.html b/deps/npm/html/doc/api/npm-commands.html index ccc10e3ff974..3ecd94316325 100644 --- a/deps/npm/html/doc/api/npm-commands.html +++ b/deps/npm/html/doc/api/npm-commands.html @@ -22,7 +22,7 @@

SYNOPSIS

usage, or man 3 npm-<command> for programmatic usage.

SEE ALSO

@@ -36,5 +36,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/api/npm-config.html b/deps/npm/html/doc/api/npm-config.html index 411d4643d8a7..83569216d96d 100644 --- a/deps/npm/html/doc/api/npm-config.html +++ b/deps/npm/html/doc/api/npm-config.html @@ -43,7 +43,7 @@

SYNOPSIS

functions instead.

SEE ALSO

@@ -57,5 +57,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/api/npm-deprecate.html b/deps/npm/html/doc/api/npm-deprecate.html index 3ce4287aa59a..924a874b44f5 100644 --- a/deps/npm/html/doc/api/npm-deprecate.html +++ b/deps/npm/html/doc/api/npm-deprecate.html @@ -31,9 +31,9 @@

SYNOPSIS

To un-deprecate a package, specify an empty string ("") for the message argument.

SEE ALSO

@@ -47,5 +47,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/api/npm-docs.html b/deps/npm/html/doc/api/npm-docs.html index a06e8beadaba..dc48ff80f25e 100644 --- a/deps/npm/html/doc/api/npm-docs.html +++ b/deps/npm/html/doc/api/npm-docs.html @@ -33,5 +33,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-edit.html b/deps/npm/html/doc/api/npm-edit.html index 8c7471939771..b58777bae8c9 100644 --- a/deps/npm/html/doc/api/npm-edit.html +++ b/deps/npm/html/doc/api/npm-edit.html @@ -36,5 +36,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-explore.html b/deps/npm/html/doc/api/npm-explore.html index e3468bfc9d8d..fd22d462db89 100644 --- a/deps/npm/html/doc/api/npm-explore.html +++ b/deps/npm/html/doc/api/npm-explore.html @@ -31,5 +31,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-help-search.html b/deps/npm/html/doc/api/npm-help-search.html index b6d53b8d16fc..04ffd3efd155 100644 --- a/deps/npm/html/doc/api/npm-help-search.html +++ b/deps/npm/html/doc/api/npm-help-search.html @@ -44,5 +44,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-init.html b/deps/npm/html/doc/api/npm-init.html index b403b17d1804..f48ca0bfc00f 100644 --- a/deps/npm/html/doc/api/npm-init.html +++ b/deps/npm/html/doc/api/npm-init.html @@ -26,7 +26,7 @@

SYNOPSIS

preferred method. If you're sure you want to handle command-line prompting, then go ahead and use this programmatically.

SEE ALSO

-

package.json(5)

+

package.json(5)

@@ -39,5 +39,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/api/npm-install.html b/deps/npm/html/doc/api/npm-install.html index ad049be29892..cf25335abd25 100644 --- a/deps/npm/html/doc/api/npm-install.html +++ b/deps/npm/html/doc/api/npm-install.html @@ -32,5 +32,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-link.html b/deps/npm/html/doc/api/npm-link.html index a2bd29edc60d..f64b3f2f9bd8 100644 --- a/deps/npm/html/doc/api/npm-link.html +++ b/deps/npm/html/doc/api/npm-link.html @@ -42,5 +42,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-load.html b/deps/npm/html/doc/api/npm-load.html index 137a129d975a..7c7cdff97b11 100644 --- a/deps/npm/html/doc/api/npm-load.html +++ b/deps/npm/html/doc/api/npm-load.html @@ -37,5 +37,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-ls.html b/deps/npm/html/doc/api/npm-ls.html index 5c6abb144a68..6ac33428ed71 100644 --- a/deps/npm/html/doc/api/npm-ls.html +++ b/deps/npm/html/doc/api/npm-ls.html @@ -63,5 +63,5 @@

global

       - + diff --git a/deps/npm/html/doc/api/npm-outdated.html b/deps/npm/html/doc/api/npm-outdated.html index 624a9eeb6ae0..93bdecac20f5 100644 --- a/deps/npm/html/doc/api/npm-outdated.html +++ b/deps/npm/html/doc/api/npm-outdated.html @@ -28,5 +28,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-owner.html b/deps/npm/html/doc/api/npm-owner.html index 65e54decac36..31aa147b39b8 100644 --- a/deps/npm/html/doc/api/npm-owner.html +++ b/deps/npm/html/doc/api/npm-owner.html @@ -32,8 +32,8 @@

SYNOPSIS

that is not implemented at this time.

SEE ALSO

@@ -47,5 +47,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/api/npm-pack.html b/deps/npm/html/doc/api/npm-pack.html index 2a453c9deb2d..25fad25908f8 100644 --- a/deps/npm/html/doc/api/npm-pack.html +++ b/deps/npm/html/doc/api/npm-pack.html @@ -33,5 +33,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-ping.html b/deps/npm/html/doc/api/npm-ping.html index b2339fc6ac48..5e6ece448a93 100644 --- a/deps/npm/html/doc/api/npm-ping.html +++ b/deps/npm/html/doc/api/npm-ping.html @@ -29,4 +29,4 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-prefix.html b/deps/npm/html/doc/api/npm-prefix.html index c99917bd979a..dff2476fe2cd 100644 --- a/deps/npm/html/doc/api/npm-prefix.html +++ b/deps/npm/html/doc/api/npm-prefix.html @@ -29,5 +29,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-prune.html b/deps/npm/html/doc/api/npm-prune.html index c9d07c131c90..26952fb9963b 100644 --- a/deps/npm/html/doc/api/npm-prune.html +++ b/deps/npm/html/doc/api/npm-prune.html @@ -30,5 +30,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-publish.html b/deps/npm/html/doc/api/npm-publish.html index 0a399d928e44..1d3c4ed41a27 100644 --- a/deps/npm/html/doc/api/npm-publish.html +++ b/deps/npm/html/doc/api/npm-publish.html @@ -30,9 +30,9 @@

SYNOPSIS

the registry. Overwrites when the "force" environment variable is set.

SEE ALSO

@@ -46,5 +46,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/api/npm-rebuild.html b/deps/npm/html/doc/api/npm-rebuild.html index fea1c4be888b..206f905ac004 100644 --- a/deps/npm/html/doc/api/npm-rebuild.html +++ b/deps/npm/html/doc/api/npm-rebuild.html @@ -30,5 +30,5 @@

CONFIGURATION

       - + diff --git a/deps/npm/html/doc/api/npm-repo.html b/deps/npm/html/doc/api/npm-repo.html index e3e21e1ea668..f27172b15b07 100644 --- a/deps/npm/html/doc/api/npm-repo.html +++ b/deps/npm/html/doc/api/npm-repo.html @@ -33,5 +33,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-restart.html b/deps/npm/html/doc/api/npm-restart.html index 3ac4e68084e4..f4bd2b3580b3 100644 --- a/deps/npm/html/doc/api/npm-restart.html +++ b/deps/npm/html/doc/api/npm-restart.html @@ -37,8 +37,8 @@

NOTE

behavior will be accompanied by an increase in major version number

SEE ALSO

@@ -52,5 +52,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/api/npm-root.html b/deps/npm/html/doc/api/npm-root.html index 33aa59806ba4..e4ef5f6886dd 100644 --- a/deps/npm/html/doc/api/npm-root.html +++ b/deps/npm/html/doc/api/npm-root.html @@ -29,5 +29,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-run-script.html b/deps/npm/html/doc/api/npm-run-script.html index 9ddeaadac1be..defea6f7ef93 100644 --- a/deps/npm/html/doc/api/npm-run-script.html +++ b/deps/npm/html/doc/api/npm-run-script.html @@ -23,11 +23,11 @@

SYNOPSIS

assumed to be the command to run. All other elements are ignored.

SEE ALSO

@@ -41,5 +41,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/api/npm-search.html b/deps/npm/html/doc/api/npm-search.html index f4d94707949f..0a66ae6a57a2 100644 --- a/deps/npm/html/doc/api/npm-search.html +++ b/deps/npm/html/doc/api/npm-search.html @@ -53,5 +53,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-shrinkwrap.html b/deps/npm/html/doc/api/npm-shrinkwrap.html index d8fff65cce90..8babd614b3cb 100644 --- a/deps/npm/html/doc/api/npm-shrinkwrap.html +++ b/deps/npm/html/doc/api/npm-shrinkwrap.html @@ -33,5 +33,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-start.html b/deps/npm/html/doc/api/npm-start.html index e2543098e6ec..f1cb9cd3d37c 100644 --- a/deps/npm/html/doc/api/npm-start.html +++ b/deps/npm/html/doc/api/npm-start.html @@ -28,5 +28,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-stop.html b/deps/npm/html/doc/api/npm-stop.html index 4b8e84558c5c..dc36c9a47af3 100644 --- a/deps/npm/html/doc/api/npm-stop.html +++ b/deps/npm/html/doc/api/npm-stop.html @@ -28,5 +28,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-submodule.html b/deps/npm/html/doc/api/npm-submodule.html new file mode 100644 index 000000000000..157d6d398a48 --- /dev/null +++ b/deps/npm/html/doc/api/npm-submodule.html @@ -0,0 +1,45 @@ + + + npm-submodule + + + + + + +
+ +

npm-submodule

Add a package as a git submodule

+

SYNOPSIS

+
npm.commands.submodule(packages, callback)
+

DESCRIPTION

+

For each package specified, npm will check if it has a git repository url +in its package.json description then add it as a git submodule at +node_modules/<pkg name>.

+

This is a convenience only. From then on, it's up to you to manage +updates by using the appropriate git commands. npm will stubbornly +refuse to update, modify, or remove anything with a .git subfolder +in it.

+

This command also does not install missing dependencies, if the package +does not include them in its git repository. If npm ls reports that +things are missing, you can either install, link, or submodule them yourself, +or you can do npm explore <pkgname> -- npm install to install the +dependencies into the submodule folder.

+

SEE ALSO

+
    +
  • npm help json
  • +
  • git help submodule
  • +
+ +
+ + + + + + + + + + + diff --git a/deps/npm/html/doc/api/npm-tag.html b/deps/npm/html/doc/api/npm-tag.html index 2152ad8c2ade..b6abe2cd19a8 100644 --- a/deps/npm/html/doc/api/npm-tag.html +++ b/deps/npm/html/doc/api/npm-tag.html @@ -36,5 +36,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-test.html b/deps/npm/html/doc/api/npm-test.html index 721cbdf8cbdd..f427b29e343e 100644 --- a/deps/npm/html/doc/api/npm-test.html +++ b/deps/npm/html/doc/api/npm-test.html @@ -30,5 +30,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-uninstall.html b/deps/npm/html/doc/api/npm-uninstall.html index 918b4d6fa33a..6f8e48fa27aa 100644 --- a/deps/npm/html/doc/api/npm-uninstall.html +++ b/deps/npm/html/doc/api/npm-uninstall.html @@ -30,5 +30,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-unpublish.html b/deps/npm/html/doc/api/npm-unpublish.html index 7f3c35215222..c5fc0d800997 100644 --- a/deps/npm/html/doc/api/npm-unpublish.html +++ b/deps/npm/html/doc/api/npm-unpublish.html @@ -33,5 +33,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-update.html b/deps/npm/html/doc/api/npm-update.html index 8decece1d2d9..076bbf4fe87a 100644 --- a/deps/npm/html/doc/api/npm-update.html +++ b/deps/npm/html/doc/api/npm-update.html @@ -19,7 +19,7 @@

SYNOPSIS

parameter will be called when done or when an error occurs.

SEE ALSO

@@ -33,5 +33,5 @@

SEE ALSO

       - + diff --git a/deps/npm/html/doc/api/npm-version.html b/deps/npm/html/doc/api/npm-version.html index 78751e2b838d..cc28b07d2077 100644 --- a/deps/npm/html/doc/api/npm-version.html +++ b/deps/npm/html/doc/api/npm-version.html @@ -32,5 +32,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm-view.html b/deps/npm/html/doc/api/npm-view.html index 32f91575424f..c8312fb3b733 100644 --- a/deps/npm/html/doc/api/npm-view.html +++ b/deps/npm/html/doc/api/npm-view.html @@ -52,7 +52,7 @@

SYNOPSIS

If a version range is provided, then data will be printed for every matching version of the package. This will show which version of jsdom was required by each matching version of yui3:

-
npm.commands.view(["yui3@'>0.5.4'", "dependencies.jsdom"], callback)
+
npm.commands.view(["yui3@>0.5.4", "dependencies.jsdom"], callback)
 

OUTPUT

If only a single string field for a single version is output, then it will not be colorized or quoted, so as to enable piping the output to @@ -81,5 +81,5 @@

RETURN VALUE

       - + diff --git a/deps/npm/html/doc/api/npm-whoami.html b/deps/npm/html/doc/api/npm-whoami.html index 4991423652f7..6682b3d57b0b 100644 --- a/deps/npm/html/doc/api/npm-whoami.html +++ b/deps/npm/html/doc/api/npm-whoami.html @@ -29,5 +29,5 @@

SYNOPSIS

       - + diff --git a/deps/npm/html/doc/api/npm.html b/deps/npm/html/doc/api/npm.html index ccdf3e1d883c..b2c9d1f99505 100644 --- a/deps/npm/html/doc/api/npm.html +++ b/deps/npm/html/doc/api/npm.html @@ -23,19 +23,19 @@

SYNOPSIS

npm.commands.install(["package"], cb) })

VERSION

-

2.13.4

+

2.14.9

DESCRIPTION

This is the API documentation for npm. To find documentation of the command line -client, see npm(1).

+client, see npm(1).

Prior to using npm's commands, npm.load() must be called. If you provide configObject as an object map of top-level configs, they override the values stored in the various config locations. In the npm command line client, this set of configs is parsed from the command line options. Additional configuration params are loaded from two configuration files. See -npm-config(1), npm-config(7), and npmrc(5) for more information.

+npm-config(1), npm-config(7), and npmrc(5) for more information.

After that, each of the functions are accessible in the -commands object: npm.commands.<cmd>. See npm-index(7) for a list of +commands object: npm.commands.<cmd>. See npm-index(7) for a list of all possible commands.

All commands on the command object take an array of positional argument strings. The last argument to any function is a callback. Some @@ -109,5 +109,5 @@

ABBREVS

       - + diff --git a/deps/npm/html/doc/cli/npm-access.html b/deps/npm/html/doc/cli/npm-access.html index a80586b0ee23..d79035461075 100644 --- a/deps/npm/html/doc/cli/npm-access.html +++ b/deps/npm/html/doc/cli/npm-access.html @@ -14,10 +14,11 @@

SYNOPSIS

npm access public [<package>]
 npm access restricted [<package>]
 
-npm access add <read-only|read-write> <entity> [<package>]
-npm access rm <entity> [<package>]
+npm access grant <read-only|read-write> <scope:team> [<package>]
+npm access revoke <scope:team> [<package>]
 
-npm access ls [<package>]
+npm access ls-packages [<user>|<scope>|<scope:team>]
+npm access ls-collaborators [<package> [<user>]]
 npm access edit [<package>]
 

DESCRIPTION

Used to set access controls on private packages.

@@ -28,13 +29,19 @@

SYNOPSIS

  • public / restricted: Set a package to be either publicly accessible or restricted.

  • -
  • add / rm: +

  • grant / revoke: Add or remove the ability of users and teams to have read-only or read-write access to a package.

  • -
  • ls: +

  • ls-packages:

    +

    Show all of the packages a user or a team is able to access, along with the +access level, except for read-only public packages (it won't print the whole +registry listing)

    +
  • +
  • ls-collaborators: Show all of the access privileges for a package. Will only show permissions -for packages to which you have at least read access.

    +for packages to which you have at least read access. If <user> is passed in, +the list is filtered only to teams that user happens to belong to.

  • edit: Set the access privileges for a package at once using $EDITOR.

    @@ -57,11 +64,13 @@

    DETAILS

    If your account is not paid, then attempts to publish scoped packages will fail with an HTTP 402 status code (logically enough), unless you use --access=public.

    +

    Management of teams and team memberships is done with the npm team command.

    SEE ALSO

    @@ -75,5 +84,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-adduser.html b/deps/npm/html/doc/cli/npm-adduser.html index bbf8b056ac59..92ecfc07e71b 100644 --- a/deps/npm/html/doc/cli/npm-adduser.html +++ b/deps/npm/html/doc/cli/npm-adduser.html @@ -15,7 +15,7 @@

    SYNOPSIS

    DESCRIPTION

    Create or verify a user named <username> in the specified registry, and save the credentials to the .npmrc file. If no registry is specified, -the default registry will be used (see npm-config(7)).

    +the default registry will be used (see npm-config(7)).

    The username, password, and email are read in from prompts.

    To reset your password, go to https://www.npmjs.com/forgot

    To change your email address, go to https://www.npmjs.com/email-edit

    @@ -28,11 +28,11 @@

    CONFIGURATION

    registry

    Default: http://registry.npmjs.org/

    The base URL of the npm package registry. If scope is also specified, -this registry will only be used for packages with that scope. See npm-scope(7).

    +this registry will only be used for packages with that scope. See npm-scope(7).

    scope

    Default: none

    If specified, the user and login credentials given will be associated -with the specified scope. See npm-scope(7). You can use both at the same time, +with the specified scope. See npm-scope(7). You can use both at the same time, e.g.

    npm adduser --registry=http://myregistry.example.com --scope=@myco
     

    This will set a registry for the given scope and login or create a user for @@ -44,17 +44,17 @@

    always-auth

    registries. Can be used with --registry and / or --scope, e.g.

    npm adduser --registry=http://private-registry.example.com --always-auth
     

    This will ensure that all requests to that registry (including for tarballs) -include an authorization header. See always-auth in npm-config(7) for more +include an authorization header. See always-auth in npm-config(7) for more details on always-auth. Registry-specific configuration of always-auth takes precedence over any global configuration.

    SEE ALSO

    @@ -68,5 +68,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-bin.html b/deps/npm/html/doc/cli/npm-bin.html index 9143460bc6ec..a9886ba3f8cc 100644 --- a/deps/npm/html/doc/cli/npm-bin.html +++ b/deps/npm/html/doc/cli/npm-bin.html @@ -16,12 +16,12 @@

    SYNOPSIS

    Print the folder where npm will install executables.

    SEE ALSO

    @@ -35,5 +35,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-bugs.html b/deps/npm/html/doc/cli/npm-bugs.html index d830cfe27191..2ea48478fc34 100644 --- a/deps/npm/html/doc/cli/npm-bugs.html +++ b/deps/npm/html/doc/cli/npm-bugs.html @@ -33,14 +33,14 @@

    registry

    The base URL of the npm package registry.

    SEE ALSO

    @@ -54,5 +54,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-build.html b/deps/npm/html/doc/cli/npm-build.html index f518b72130c9..361ebf00e655 100644 --- a/deps/npm/html/doc/cli/npm-build.html +++ b/deps/npm/html/doc/cli/npm-build.html @@ -23,10 +23,10 @@

    DESCRIPTION

    npm run-script build
     

    SEE ALSO

    @@ -40,5 +40,5 @@

    DESCRIPTION

           - + diff --git a/deps/npm/html/doc/cli/npm-bundle.html b/deps/npm/html/doc/cli/npm-bundle.html index ad63952abb50..981f64613a3d 100644 --- a/deps/npm/html/doc/cli/npm-bundle.html +++ b/deps/npm/html/doc/cli/npm-bundle.html @@ -17,7 +17,7 @@

    DESCRIPTION

    Just use npm install now to do what npm bundle used to do.

    SEE ALSO

    @@ -31,5 +31,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-cache.html b/deps/npm/html/doc/cli/npm-cache.html index 3d700b8d056c..de89f3e20609 100644 --- a/deps/npm/html/doc/cli/npm-cache.html +++ b/deps/npm/html/doc/cli/npm-cache.html @@ -61,13 +61,13 @@

    cache

    The root cache folder.

    SEE ALSO

    @@ -81,5 +81,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-completion.html b/deps/npm/html/doc/cli/npm-completion.html index edaceb31671e..bbb3653049ba 100644 --- a/deps/npm/html/doc/cli/npm-completion.html +++ b/deps/npm/html/doc/cli/npm-completion.html @@ -26,9 +26,9 @@

    SYNOPSIS

    completions based on the arguments.

    SEE ALSO

    @@ -42,5 +42,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-config.html b/deps/npm/html/doc/cli/npm-config.html index 27e133e7d8c8..eef6bbf3652e 100644 --- a/deps/npm/html/doc/cli/npm-config.html +++ b/deps/npm/html/doc/cli/npm-config.html @@ -22,8 +22,8 @@

    SYNOPSIS

    DESCRIPTION

    npm gets its config settings from the command line, environment variables, npmrc files, and in some cases, the package.json file.

    -

    See npmrc(5) for more information about the npmrc files.

    -

    See npm-config(7) for a more thorough discussion of the mechanisms +

    See npmrc(5) for more information about the npmrc files.

    +

    See npm-config(7) for a more thorough discussion of the mechanisms involved.

    The npm config command can be used to update and edit the contents of the user and global npmrc files.

    @@ -48,11 +48,11 @@

    edit

    global config.

    SEE ALSO

    @@ -66,5 +66,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-dedupe.html b/deps/npm/html/doc/cli/npm-dedupe.html index 17063f778d77..6ae2a78591f0 100644 --- a/deps/npm/html/doc/cli/npm-dedupe.html +++ b/deps/npm/html/doc/cli/npm-dedupe.html @@ -23,7 +23,7 @@

    SYNOPSIS

    | `-- c@1.0.3 `-- d <-- depends on c@~1.0.9 `-- c@1.0.10 -

    In this case, npm-dedupe(1) will transform the tree to:

    +

    In this case, npm-dedupe(1) will transform the tree to:

    a
     +-- b
     +-- d
    @@ -47,9 +47,9 @@ 

    SYNOPSIS

    versions.

    SEE ALSO

    @@ -63,5 +63,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-deprecate.html b/deps/npm/html/doc/cli/npm-deprecate.html index 47b5f97c6ddd..0ea284c4ada8 100644 --- a/deps/npm/html/doc/cli/npm-deprecate.html +++ b/deps/npm/html/doc/cli/npm-deprecate.html @@ -23,8 +23,8 @@

    SYNOPSIS

    To un-deprecate a package, specify an empty string ("") for the message argument.

    SEE ALSO

    @@ -38,5 +38,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-dist-tag.html b/deps/npm/html/doc/cli/npm-dist-tag.html index 3389bdc65ca6..afab72adfe9b 100644 --- a/deps/npm/html/doc/cli/npm-dist-tag.html +++ b/deps/npm/html/doc/cli/npm-dist-tag.html @@ -55,15 +55,15 @@

    CAVEATS

    begin with a number or the letter v.

    SEE ALSO

    @@ -77,5 +77,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-docs.html b/deps/npm/html/doc/cli/npm-docs.html index 4a63982a0bba..0cfb6804de85 100644 --- a/deps/npm/html/doc/cli/npm-docs.html +++ b/deps/npm/html/doc/cli/npm-docs.html @@ -36,13 +36,13 @@

    registry

    The base URL of the npm package registry.

    SEE ALSO

    @@ -56,5 +56,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-edit.html b/deps/npm/html/doc/cli/npm-edit.html index eeca7b287408..dfcceda4f033 100644 --- a/deps/npm/html/doc/cli/npm-edit.html +++ b/deps/npm/html/doc/cli/npm-edit.html @@ -14,7 +14,7 @@

    SYNOPSIS

    npm edit <name>[@<version>]
     

    DESCRIPTION

    Opens the package folder in the default editor (or whatever you've -configured as the npm editor config -- see npm-config(7).)

    +configured as the npm editor config -- see npm-config(7).)

    After it has been edited, the package is rebuilt so as to pick up any changes in compiled packages.

    For instance, you can do npm install connect to install connect @@ -30,12 +30,12 @@

    editor

    The command to run for npm edit or npm config edit.

    SEE ALSO

    @@ -49,5 +49,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-explore.html b/deps/npm/html/doc/cli/npm-explore.html index 357d7b6dcd73..ee906dd2c991 100644 --- a/deps/npm/html/doc/cli/npm-explore.html +++ b/deps/npm/html/doc/cli/npm-explore.html @@ -31,11 +31,11 @@

    shell

    The shell to run for the npm explore command.

    SEE ALSO

    @@ -49,5 +49,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-help-search.html b/deps/npm/html/doc/cli/npm-help-search.html index 221d45619943..9b653cf0360f 100644 --- a/deps/npm/html/doc/cli/npm-help-search.html +++ b/deps/npm/html/doc/cli/npm-help-search.html @@ -30,9 +30,9 @@

    long

    If false, then help-search will just list out the help topics found.

    SEE ALSO

    @@ -46,5 +46,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-help.html b/deps/npm/html/doc/cli/npm-help.html index c815150a83f3..2bc9c151a212 100644 --- a/deps/npm/html/doc/cli/npm-help.html +++ b/deps/npm/html/doc/cli/npm-help.html @@ -29,16 +29,16 @@

    viewer

    Set to "browser" to view html help content in the default web browser.

    SEE ALSO

    @@ -52,5 +52,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-init.html b/deps/npm/html/doc/cli/npm-init.html index 357f29dbd83b..f750889d811c 100644 --- a/deps/npm/html/doc/cli/npm-init.html +++ b/deps/npm/html/doc/cli/npm-init.html @@ -32,9 +32,9 @@

    scope

    SEE ALSO

    @@ -48,5 +48,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/cli/npm-install-test.html b/deps/npm/html/doc/cli/npm-install-test.html new file mode 100644 index 000000000000..77fa62baa017 --- /dev/null +++ b/deps/npm/html/doc/cli/npm-install-test.html @@ -0,0 +1,45 @@ + + + npm-install-test + + + + + + +
    + +

    npm install-test

    Install package(s) and run tests

    +

    SYNOPSIS

    +
    npm install-test (with no args, in package dir)
    +npm install-test [<@scope>/]<name>
    +npm install-test [<@scope>/]<name>@<tag>
    +npm install-test [<@scope>/]<name>@<version>
    +npm install-test [<@scope>/]<name>@<version range>
    +npm install-test <tarball file>
    +npm install-test <tarball url>
    +npm install-test <folder>
    +
    +alias: npm it
    +common options: [--save|--save-dev|--save-optional] [--save-exact] [--dry-run]
    +

    DESCRIPTION

    +

    This command runs an npm install followed immediately by an npm test. It +takes exactly the same arguments as npm install.

    +

    SEE ALSO

    + + +
    + + + + + + + + + + + diff --git a/deps/npm/html/doc/cli/npm-install.html b/deps/npm/html/doc/cli/npm-install.html index 13d00cac3a04..c78787b01bc2 100644 --- a/deps/npm/html/doc/cli/npm-install.html +++ b/deps/npm/html/doc/cli/npm-install.html @@ -23,13 +23,13 @@

    SYNOPSIS

    DESCRIPTION

    This command installs a package, and any packages that it depends on. If the package has a shrinkwrap file, the installation of dependencies will be driven -by that. See npm-shrinkwrap(1).

    +by that. See npm-shrinkwrap(1).

    A package is:

    • a) a folder containing a program described by a package.json file
    • b) a gzipped tarball containing (a)
    • c) a url that resolves to (b)
    • -
    • d) a <name>@<version> that is published on the registry (see npm-registry(7)) with (c)
    • +
    • d) a <name>@<version> that is published on the registry (see npm-registry(7)) with (c)
    • e) a <name>@<tag> that points to (d)
    • f) a <name> that has a "latest" tag satisfying (e)
    • g) a <git remote url> that resolves to (b)
    • @@ -67,7 +67,7 @@

      SYNOPSIS

    • npm install [@<scope>/]<name> [--save|--save-dev|--save-optional]:

      Do a <name>@<tag> install, where <tag> is the "tag" config. (See - npm-config(7).)

      + npm-config(7).)

      In most cases, this will install the latest version of the module published on npm.

      Example:

      @@ -88,7 +88,7 @@

      SYNOPSIS

      operator.

      <scope> is optional. The package will be downloaded from the registry associated with the specified scope. If no registry is associated with -the given scope the default registry is assumed. See npm-scope(7).

      +the given scope the default registry is assumed. See npm-scope(7).

      Note: if you do not include the @-symbol on your scope name, npm will interpret this as a GitHub repository instead, see below. Scopes names must also be followed by a slash.

      @@ -124,7 +124,7 @@

      SYNOPSIS

    • npm install [@<scope>/]<name>@<version range>:

      Install a version of the package matching the specified version range. This - will follow the same rules for resolving dependencies described in package.json(5).

      + will follow the same rules for resolving dependencies described in package.json(5).

      Note that most version ranges must be put in quotes so that your shell will treat it as a single argument.

      Example:

      @@ -199,7 +199,7 @@

      SYNOPSIS

      local copy exists on disk.

      npm install sax --force
       

      The --global argument will cause npm to install the package globally -rather than locally. See npm-folders(5).

      +rather than locally. See npm-folders(5).

      The --link argument will cause npm to link global installs into the local space in some cases.

      The --no-bin-links argument will prevent npm from creating symlinks for @@ -210,7 +210,7 @@

      SYNOPSIS

      shrinkwrap file and use the package.json instead.

      The --nodedir=/path/to/node/source argument will allow npm to find the node source code so that npm can compile native modules.

      -

      See npm-config(7). Many of the configuration params have some +

      See npm-config(7). Many of the configuration params have some effect on installation, since that's most of what npm does.

      ALGORITHM

      To install a package, npm uses the following algorithm:

      @@ -231,7 +231,7 @@

      ALGORITHM

      `-- D

      That is, the dependency from B to C is satisfied by the fact that A already caused C to be installed at a higher level.

      -

      See npm-folders(5) for a more detailed description of the specific +

      See npm-folders(5) for a more detailed description of the specific folder structures that npm creates.

      Limitations of npm's Install Algorithm

      There are some very rare and pathological edge-cases where a cycle can @@ -251,19 +251,19 @@

      Limitations of npm's Install affects a real use-case, it will be investigated.

      SEE ALSO

      @@ -277,5 +277,5 @@

      SEE ALSO

             - + diff --git a/deps/npm/html/doc/cli/npm-link.html b/deps/npm/html/doc/cli/npm-link.html index 398b0fe1d9ec..60215e725479 100644 --- a/deps/npm/html/doc/cli/npm-link.html +++ b/deps/npm/html/doc/cli/npm-link.html @@ -18,12 +18,12 @@

      SYNOPSIS

      Package linking is a two-step process.

      First, npm link in a package folder will create a globally-installed symbolic link from prefix/package-name to the current folder (see -npm-config(7) for the value of prefix).

      +npm-config(7) for the value of prefix).

      Next, in some other location, npm link package-name will create a symlink from the local node_modules folder to the global symlink.

      Note that package-name is taken from package.json, not from directory name.

      -

      The package name can be optionally prefixed with a scope. See npm-scope(7). +

      The package name can be optionally prefixed with a scope. See npm-scope(7). The scope must be preceded by an @-symbol and followed by a slash.

      When creating tarballs for npm publish, the linked packages are "snapshotted" to their current state by resolving the symbolic links.

      @@ -46,19 +46,19 @@

      SYNOPSIS

      npm link node-redis

      That is, it first creates a global link, and then links the global installation target into your project's node_modules folder.

      -

      If your linked package is scoped (see npm-scope(7)) your link command must +

      If your linked package is scoped (see npm-scope(7)) your link command must include that scope, e.g.

      npm link @myorg/privatepackage
       

      SEE ALSO

      @@ -72,5 +72,5 @@

      SYNOPSIS

             - + diff --git a/deps/npm/html/doc/cli/npm-logout.html b/deps/npm/html/doc/cli/npm-logout.html index 6262d13a76aa..846874152059 100644 --- a/deps/npm/html/doc/cli/npm-logout.html +++ b/deps/npm/html/doc/cli/npm-logout.html @@ -29,19 +29,19 @@

      registry

      scope

      Default: none

      If specified, the user and login credentials given will be associated -with the specified scope. See npm-scope(7). You can use both at the same time, +with the specified scope. See npm-scope(7). You can use both at the same time, e.g.

      npm adduser --registry=http://myregistry.example.com --scope=@myco
       

      This will set a registry for the given scope and login or create a user for that registry at the same time.

      SEE ALSO

      @@ -55,5 +55,5 @@

      SEE ALSO

             - + diff --git a/deps/npm/html/doc/cli/npm-ls.html b/deps/npm/html/doc/cli/npm-ls.html index 4de901b68a6a..35686c49916c 100644 --- a/deps/npm/html/doc/cli/npm-ls.html +++ b/deps/npm/html/doc/cli/npm-ls.html @@ -22,7 +22,7 @@

      SYNOPSIS

      limit the results to only the paths to the packages named. Note that nested packages will also show the paths to the specified packages. For example, running npm ls promzard in npm's source tree will show:

      -
      npm@2.13.4 /path/to/npm
      +
      npm@2.14.9 /path/to/npm
       └─┬ init-package-json@0.0.4
         └── promzard@0.1.5
       

      It will print out extraneous, missing, and invalid packages.

      @@ -75,15 +75,15 @@

      dev

      Display only the dependency tree for packages in devDependencies.

      SEE ALSO

      @@ -97,5 +97,5 @@

      SEE ALSO

             - + diff --git a/deps/npm/html/doc/cli/npm-outdated.html b/deps/npm/html/doc/cli/npm-outdated.html index 130680af335a..4b5508e88ba9 100644 --- a/deps/npm/html/doc/cli/npm-outdated.html +++ b/deps/npm/html/doc/cli/npm-outdated.html @@ -51,9 +51,9 @@

      depth

      Max depth for checking dependency tree.

      SEE ALSO

      @@ -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 3829433275b9..ac3233fc17f4 100644 --- a/deps/npm/html/doc/cli/npm-owner.html +++ b/deps/npm/html/doc/cli/npm-owner.html @@ -32,10 +32,10 @@

      SYNOPSIS

      that is not implemented at this time.

      SEE ALSO

      @@ -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 68d85d08d46f..8ea2bbddade6 100644 --- a/deps/npm/html/doc/cli/npm-pack.html +++ b/deps/npm/html/doc/cli/npm-pack.html @@ -23,11 +23,11 @@

      SYNOPSIS

      If no arguments are supplied, then npm packs the current package folder.

      SEE ALSO

      @@ -41,5 +41,5 @@

      SEE ALSO

             - + diff --git a/deps/npm/html/doc/cli/npm-ping.html b/deps/npm/html/doc/cli/npm-ping.html index a441ebdbff91..72ff39432e4e 100644 --- a/deps/npm/html/doc/cli/npm-ping.html +++ b/deps/npm/html/doc/cli/npm-ping.html @@ -16,9 +16,9 @@

      SYNOPSIS

      Ping the configured or given npm registry and verify authentication.

      SEE ALSO

      @@ -32,4 +32,4 @@

      SEE ALSO

             - + diff --git a/deps/npm/html/doc/cli/npm-prefix.html b/deps/npm/html/doc/cli/npm-prefix.html index 7e10292cdf5e..d1a1632771c8 100644 --- a/deps/npm/html/doc/cli/npm-prefix.html +++ b/deps/npm/html/doc/cli/npm-prefix.html @@ -16,15 +16,15 @@

      SYNOPSIS

      Print the local prefix to standard out. This is the closest parent directory to contain a package.json file unless -g is also specified.

      If -g is specified, this will be the value of the global prefix. See -npm-config(7) for more detail.

      +npm-config(7) for more detail.

      SEE ALSO

      @@ -38,5 +38,5 @@

      SEE ALSO

             - + diff --git a/deps/npm/html/doc/cli/npm-prune.html b/deps/npm/html/doc/cli/npm-prune.html index 96bae39a1656..fe1f821526b3 100644 --- a/deps/npm/html/doc/cli/npm-prune.html +++ b/deps/npm/html/doc/cli/npm-prune.html @@ -25,9 +25,9 @@

      SYNOPSIS

      negate NODE_ENV being set to production.

      SEE ALSO

      @@ -41,5 +41,5 @@

      SEE ALSO

             - + diff --git a/deps/npm/html/doc/cli/npm-publish.html b/deps/npm/html/doc/cli/npm-publish.html index a29b247dd676..41037dab5e66 100644 --- a/deps/npm/html/doc/cli/npm-publish.html +++ b/deps/npm/html/doc/cli/npm-publish.html @@ -15,11 +15,11 @@

      SYNOPSIS

      npm publish <folder> [--tag <tag>] [--access <public|restricted>]

      DESCRIPTION

      Publishes a package to the registry so that it can be installed by name. See -npm-developers(7) for details on what's included in the published package, as +npm-developers(7) for details on what's included in the published package, as well as details on how the package is built.

      By default npm will publish to the public registry. This can be overridden by -specifying a different default registry or using a npm-scope(7) in the name -(see package.json(5)).

      +specifying a different default registry or using a npm-scope(7) in the name +(see package.json(5)).

      • <folder>: A folder containing a package.json file

        @@ -44,15 +44,15 @@

        SYNOPSIS

        the specified registry.

        Once a package is published with a given name and version, that specific name and version combination can never be used again, even if -it is removed with npm-unpublish(1).

        +it is removed with npm-unpublish(1).

        SEE ALSO

        @@ -66,5 +66,5 @@

        SEE ALSO

               - + diff --git a/deps/npm/html/doc/cli/npm-rebuild.html b/deps/npm/html/doc/cli/npm-rebuild.html index c6176df61bc6..91f90bd29067 100644 --- a/deps/npm/html/doc/cli/npm-rebuild.html +++ b/deps/npm/html/doc/cli/npm-rebuild.html @@ -23,8 +23,8 @@

        DESCRIPTION

        the new binary.

        SEE ALSO

        @@ -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 372bb717042f..2b142768e3e8 100644 --- a/deps/npm/html/doc/cli/npm-repo.html +++ b/deps/npm/html/doc/cli/npm-repo.html @@ -27,8 +27,8 @@

        browser

        The browser that is called by the npm repo command to open websites.

        SEE ALSO

        @@ -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 1ce1cbe6b4dd..a02f8500389e 100644 --- a/deps/npm/html/doc/cli/npm-restart.html +++ b/deps/npm/html/doc/cli/npm-restart.html @@ -34,12 +34,12 @@

        NOTE

        behavior will be accompanied by an increase in major version number

        SEE ALSO

        @@ -53,5 +53,5 @@

        SEE ALSO

               - + diff --git a/deps/npm/html/doc/cli/npm-rm.html b/deps/npm/html/doc/cli/npm-rm.html index 018aa4d3f220..02caf3b55903 100644 --- a/deps/npm/html/doc/cli/npm-rm.html +++ b/deps/npm/html/doc/cli/npm-rm.html @@ -20,12 +20,12 @@

        SYNOPSIS

        on its behalf.

        SEE ALSO

        @@ -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 0ae95fb9b7e7..371e0ba46491 100644 --- a/deps/npm/html/doc/cli/npm-root.html +++ b/deps/npm/html/doc/cli/npm-root.html @@ -16,12 +16,12 @@

        SYNOPSIS

        Print the effective node_modules folder to standard out.

        SEE ALSO

        @@ -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 1635c415b6de..44ff6f256c37 100644 --- a/deps/npm/html/doc/cli/npm-run-script.html +++ b/deps/npm/html/doc/cli/npm-run-script.html @@ -39,11 +39,11 @@

        SYNOPSIS

        instead of "scripts": {"test": "node_modules/.bin/tap test/\*.js"} to run your tests.

        SEE ALSO

        @@ -57,5 +57,5 @@

        SEE ALSO

               - + diff --git a/deps/npm/html/doc/cli/npm-search.html b/deps/npm/html/doc/cli/npm-search.html index 8c7a2d5a777c..6b3aea23a99e 100644 --- a/deps/npm/html/doc/cli/npm-search.html +++ b/deps/npm/html/doc/cli/npm-search.html @@ -31,11 +31,11 @@

        long

        fall on multiple lines.

        SEE ALSO

        @@ -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 fe2e91b76aab..67307c817d63 100644 --- a/deps/npm/html/doc/cli/npm-shrinkwrap.html +++ b/deps/npm/html/doc/cli/npm-shrinkwrap.html @@ -120,7 +120,7 @@

        Building shrinkwrapped packages

      • Run npm shrinkwrap, commit the new npm-shrinkwrap.json, and publish your package.
      • -

        You can use npm-outdated(1) to view dependencies with newer versions +

        You can use npm-outdated(1) to view dependencies with newer versions available.

        Other Notes

        A shrinkwrap file must be consistent with the package's package.json @@ -148,9 +148,9 @@

        Caveats

        contents rather than versions.

        SEE ALSO

        @@ -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 39245e05cdb4..e684a203e616 100644 --- a/deps/npm/html/doc/cli/npm-star.html +++ b/deps/npm/html/doc/cli/npm-star.html @@ -20,9 +20,9 @@

        SYNOPSIS

        It's a boolean thing. Starring repeatedly has no additional effect.

        SEE ALSO

        @@ -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 10207445fcc7..f52932a25d2f 100644 --- a/deps/npm/html/doc/cli/npm-stars.html +++ b/deps/npm/html/doc/cli/npm-stars.html @@ -20,10 +20,10 @@

        SYNOPSIS

        you will most certainly enjoy this command.

        SEE ALSO

        @@ -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 68779a395a82..1449c5f1d5d5 100644 --- a/deps/npm/html/doc/cli/npm-start.html +++ b/deps/npm/html/doc/cli/npm-start.html @@ -16,11 +16,11 @@

        SYNOPSIS

        This runs a package's "start" script, if one was provided.

        SEE ALSO

        @@ -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 122c0bce8c50..44d9b294fffc 100644 --- a/deps/npm/html/doc/cli/npm-stop.html +++ b/deps/npm/html/doc/cli/npm-stop.html @@ -16,11 +16,11 @@

        SYNOPSIS

        This runs a package's "stop" script, if one was provided.

        SEE ALSO

        @@ -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 new file mode 100644 index 000000000000..ec7f6e0b1fc5 --- /dev/null +++ b/deps/npm/html/doc/cli/npm-submodule.html @@ -0,0 +1,45 @@ + + + npm-submodule + + + + + + +
        + +

        npm-submodule

        Add a package as a git submodule

        +

        SYNOPSIS

        +
        npm submodule <pkg>
        +

        DESCRIPTION

        +

        If the specified package has a git repository url in its package.json +description, then this command will add it as a git submodule at +node_modules/<pkg name>.

        +

        This is a convenience only. From then on, it's up to you to manage +updates by using the appropriate git commands. npm will stubbornly +refuse to update, modify, or remove anything with a .git subfolder +in it.

        +

        This command also does not install missing dependencies, if the package +does not include them in its git repository. If npm ls reports that +things are missing, you can either install, link, or submodule them yourself, +or you can do npm explore <pkgname> -- npm install to install the +dependencies into the submodule folder.

        +

        SEE ALSO

        + + +
        + + + + + + + + + + + diff --git a/deps/npm/html/doc/cli/npm-tag.html b/deps/npm/html/doc/cli/npm-tag.html index a2b3c68acd95..db8bbf3b2eb6 100644 --- a/deps/npm/html/doc/cli/npm-tag.html +++ b/deps/npm/html/doc/cli/npm-tag.html @@ -13,7 +13,7 @@

        npm-tag

        Tag a published version

        SYNOPSIS
        npm tag <name>@<version> [<tag>]
         

        DESCRIPTION

        -

        THIS COMMAND IS DEPRECATED. See npm-dist-tag(1) for details.

        +

        THIS COMMAND IS DEPRECATED. See npm-dist-tag(1) for details.

        Tags the specified version of the package with the specified tag, or the --tag config if not specified.

        A tag can be used when installing packages as a reference to a version instead @@ -41,14 +41,14 @@

        CAVEATS

        that do not begin with a number or the letter v.

        SEE ALSO

        @@ -62,5 +62,5 @@

        SEE ALSO

               - + diff --git a/deps/npm/html/doc/cli/npm-team.html b/deps/npm/html/doc/cli/npm-team.html new file mode 100644 index 000000000000..cde1d76c5135 --- /dev/null +++ b/deps/npm/html/doc/cli/npm-team.html @@ -0,0 +1,70 @@ + + + npm-team + + + + + + +
        + +

        npm-team

        Manage organization teams and team memberships

        +

        SYNOPSIS

        +
        npm team create <scope:team>
        +npm team destroy <scope:team>
        +
        +npm team add <scope:team> <user>
        +npm team rm <scope:team> <user>
        +
        +npm team ls <scope>|<scope:team>
        +
        +npm team edit <scope:team>
        +

        DESCRIPTION

        +

        Used to manage teams in organizations, and change team memberships. Does not +handle permissions for packages.

        +

        Teams must always be fully qualified with the organization/scope they belond to +when operating on them, separated by a colon (:). That is, if you have a +developers team on a foo organization, you must always refer to that team as +developers:foo in these commands.

        +
          +
        • create / destroy: +Create a new team, or destroy an existing one.

          +
        • +
        • add / rm: +Add a user to an existing team, or remove a user from a team they belong to.

          +
        • +
        • ls: +If performed on an organization name, will return a list of existing teams +under that organization. If performed on a team, it will instead return a list +of all users belonging to that particular team.

          +
        • +
        +

        DETAILS

        +

        npm team always operates directly on the current registry, configurable from +the command line using --registry=<registry url>.

        +

        In order to create teams and manage team membership, you must be a team admin +under the given organization. Listing teams and team memberships may be done by +any member of the organizations.

        +

        Organization creation and management of team admins and organization members +is done through the website, not the npm CLI.

        +

        To use teams to manage permissions on packages belonging to your organization, +use the npm access command to grant or revoke the appropriate permissions.

        +

        SEE ALSO

        + + +
        + + + + + + + + + + + diff --git a/deps/npm/html/doc/cli/npm-test.html b/deps/npm/html/doc/cli/npm-test.html index 8b50bb79007c..251c6b9da69d 100644 --- a/deps/npm/html/doc/cli/npm-test.html +++ b/deps/npm/html/doc/cli/npm-test.html @@ -19,11 +19,11 @@

        SYNOPSIS

        true.

        SEE ALSO

        @@ -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 467244144558..594f74e18bbc 100644 --- a/deps/npm/html/doc/cli/npm-uninstall.html +++ b/deps/npm/html/doc/cli/npm-uninstall.html @@ -30,7 +30,7 @@

        SYNOPSIS

      • --save-optional: Package will be removed from your optionalDependencies.

      -

      Scope is optional and follows the usual rules for npm-scope(7).

      +

      Scope is optional and follows the usual rules for npm-scope(7).

      Examples:

      npm uninstall sax --save
       npm uninstall @myorg/privatepackage --save
      @@ -38,12 +38,12 @@ 

      SYNOPSIS

      npm uninstall dtrace-provider --save-optional

      SEE ALSO

      @@ -57,5 +57,5 @@

      SYNOPSIS

             - + diff --git a/deps/npm/html/doc/cli/npm-unpublish.html b/deps/npm/html/doc/cli/npm-unpublish.html index 6cc3f2d3fdc9..27f91481b3a6 100644 --- a/deps/npm/html/doc/cli/npm-unpublish.html +++ b/deps/npm/html/doc/cli/npm-unpublish.html @@ -26,14 +26,14 @@

      DESCRIPTION

      Even if a package version is unpublished, that specific name and version combination can never be reused. In order to publish the package again, a new version number must be used.

      -

      The scope is optional and follows the usual rules for npm-scope(7).

      +

      The scope is optional and follows the usual rules for npm-scope(7).

      SEE ALSO

      @@ -47,5 +47,5 @@

      SEE ALSO

             - + diff --git a/deps/npm/html/doc/cli/npm-update.html b/deps/npm/html/doc/cli/npm-update.html index 4989cf5d9e29..fa2880507c1e 100644 --- a/deps/npm/html/doc/cli/npm-update.html +++ b/deps/npm/html/doc/cli/npm-update.html @@ -100,12 +100,12 @@

      Updating Globally-Installed Packag be downgraded.

      SEE ALSO

      @@ -119,5 +119,5 @@

      SEE ALSO

             - + diff --git a/deps/npm/html/doc/cli/npm-version.html b/deps/npm/html/doc/cli/npm-version.html index 172eb65f6f4c..dfcc1a6ec20a 100644 --- a/deps/npm/html/doc/cli/npm-version.html +++ b/deps/npm/html/doc/cli/npm-version.html @@ -76,12 +76,12 @@

      git-tag-version

      Commit and tag the version change.

      SEE ALSO

      @@ -95,5 +95,5 @@

      SEE ALSO

             - + diff --git a/deps/npm/html/doc/cli/npm-view.html b/deps/npm/html/doc/cli/npm-view.html index e3eb6ec8c60e..d6d14628dc51 100644 --- a/deps/npm/html/doc/cli/npm-view.html +++ b/deps/npm/html/doc/cli/npm-view.html @@ -46,7 +46,7 @@

      SYNOPSIS

      npm view express contributors.name contributors.email
       

      "Person" fields are shown as a string if they would be shown as an object. So, for example, this will show the list of npm contributors in -the shortened string format. (See package.json(5) for more on this.)

      +the shortened string format. (See package.json(5) for more on this.)

      npm view npm contributors
       

      If a version range is provided, then data will be printed for every matching version of the package. This will show which version of jsdom @@ -63,12 +63,12 @@

      SYNOPSIS

      the field name.

      SEE ALSO

      @@ -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 fe003c533e2b..0d1361b4970d 100644 --- a/deps/npm/html/doc/cli/npm-whoami.html +++ b/deps/npm/html/doc/cli/npm-whoami.html @@ -16,10 +16,10 @@

      SYNOPSIS

      Print the username config to standard output.

      SEE ALSO

      @@ -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 8251fccc519d..dfdc8270a7b4 100644 --- a/deps/npm/html/doc/cli/npm.html +++ b/deps/npm/html/doc/cli/npm.html @@ -13,7 +13,7 @@

      npm

      javascript package manager

      SYNOPSIS

      npm <command> [args]
       

      VERSION

      -

      2.13.4

      +

      2.14.9

      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 @@ -25,7 +25,7 @@

      DESCRIPTION

      INTRODUCTION

      You probably got npm because you want to install stuff.

      Use npm install blerg to install the latest version of "blerg". Check out -npm-install(1) for more info. It can do a lot of stuff.

      +npm-install(1) for more info. It can do a lot of stuff.

      Use the npm search command to show everything that's available. Use npm ls to show everything you've installed.

      DEPENDENCIES

      @@ -42,7 +42,7 @@

      DEPENDENCIES

      the node-gyp repository and the node-gyp Wiki.

      DIRECTORIES

      -

      See npm-folders(5) to learn about where npm puts stuff.

      +

      See npm-folders(5) to learn about where npm puts stuff.

      In particular, npm has two modes of operation:

      • global mode:
        npm installs packages into the install prefix at @@ -58,7 +58,7 @@

        DEVELOPER USAGE

        following help topics:

        • json: -Make a package.json file. See package.json(5).
        • +Make a package.json file. See package.json(5).
        • link: For linking your current working code into Node's path, so that you don't have to reinstall every time you make a change. Use @@ -93,12 +93,12 @@

          CONFIGURATION

        • Defaults:
          npm's default configuration options are defined in lib/utils/config-defs.js. These must not be changed.
        -

        See npm-config(7) for much much more information.

        +

        See npm-config(7) for much much more information.

        CONTRIBUTIONS

        Patches welcome!

        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,19 +128,19 @@

        AUTHOR

        Isaac Z. Schlueter :: isaacs :: @izs :: -i@izs.me

        +i@izs.me

        SEE ALSO

        @@ -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 6a2d1c21205f..2fbe542ca277 100644 --- a/deps/npm/html/doc/files/npm-folders.html +++ b/deps/npm/html/doc/files/npm-folders.html @@ -44,7 +44,7 @@

        Node Modules

        Scoped packages are installed the same way, except they are grouped together in a sub-folder of the relevant node_modules folder with the name of that scope prefix by the @ symbol, e.g. npm install @myorg/package would place -the package in {prefix}/node_modules/@myorg/package. See scopes(7) for +the package in {prefix}/node_modules/@myorg/package. See scopes(7) for more details.

        If you wish to require() a package, then install it locally.

        Executables

        @@ -59,7 +59,7 @@

        Man Pages

        When in local mode, man pages are not installed.

        Man pages are not installed on Windows systems.

        Cache

        -

        See npm-cache(1). Cache files are stored in ~/.npm on Posix, or +

        See npm-cache(1). Cache files are stored in ~/.npm on Posix, or ~/npm-cache on Windows.

        This is controlled by the cache configuration param.

        Temp Files

        @@ -159,18 +159,18 @@

        Publishing

        not be included in the package tarball.

        This allows a package maintainer to install all of their dependencies (and dev dependencies) locally, but only re-publish those items that -cannot be found elsewhere. See package.json(5) for more information.

        +cannot be found elsewhere. See package.json(5) for more information.

        SEE ALSO

        @@ -184,5 +184,5 @@

        SEE ALSO

               - + diff --git a/deps/npm/html/doc/files/npm-global.html b/deps/npm/html/doc/files/npm-global.html index cf0bce767716..2fbe542ca277 100644 --- a/deps/npm/html/doc/files/npm-global.html +++ b/deps/npm/html/doc/files/npm-global.html @@ -1,9 +1,9 @@ - npm-global + npm-folders - + @@ -44,7 +44,7 @@

        Node Modules

        Scoped packages are installed the same way, except they are grouped together in a sub-folder of the relevant node_modules folder with the name of that scope prefix by the @ symbol, e.g. npm install @myorg/package would place -the package in {prefix}/node_modules/@myorg/package. See scopes(7) for +the package in {prefix}/node_modules/@myorg/package. See scopes(7) for more details.

        If you wish to require() a package, then install it locally.

        Executables

        @@ -59,7 +59,7 @@

        Man Pages

        When in local mode, man pages are not installed.

        Man pages are not installed on Windows systems.

        Cache

        -

        See npm-cache(1). Cache files are stored in ~/.npm on Posix, or +

        See npm-cache(1). Cache files are stored in ~/.npm on Posix, or ~/npm-cache on Windows.

        This is controlled by the cache configuration param.

        Temp Files

        @@ -159,18 +159,18 @@

        Publishing

        not be included in the package tarball.

        This allows a package maintainer to install all of their dependencies (and dev dependencies) locally, but only re-publish those items that -cannot be found elsewhere. See package.json(5) for more information.

        +cannot be found elsewhere. See package.json(5) for more information.

        SEE ALSO

        @@ -184,5 +184,5 @@

        SEE ALSO

               - + diff --git a/deps/npm/html/doc/files/npm-json.html b/deps/npm/html/doc/files/npm-json.html index 8c128ef3483b..2984bf46fbc2 100644 --- a/deps/npm/html/doc/files/npm-json.html +++ b/deps/npm/html/doc/files/npm-json.html @@ -1,9 +1,9 @@ - npm-json + package.json - + @@ -14,7 +14,7 @@

        DESCRIPTION

        This document is all you need to know about what's required in your package.json file. It must be actual JSON, not just a JavaScript object literal.

        A lot of the behavior described in this document is affected by the config -settings described in npm-config(7).

        +settings described in npm-config(7).

        name

        The most important things in your package.json are the name and version fields. Those are actually required, and your package won't install without @@ -43,7 +43,7 @@

        name

        already, before you get too attached to it. https://www.npmjs.com/

      A name can be optionally prefixed by a scope, e.g. @myorg/mypackage. See -npm-scope(7) for more detail.

      +npm-scope(7) for more detail.

      version

      The most important things in your package.json are the name and version fields. Those are actually required, and your package won't install without @@ -53,7 +53,7 @@

      version

      Version must be parseable by node-semver, which is bundled with npm as a dependency. (npm install semver to use it yourself.)

      -

      More on version numbers and ranges at semver(7).

      +

      More on version numbers and ranges at semver(7).

      description

      Put a description in it. It's a string. This helps people discover your package, as it's listed in npm search.

      @@ -136,14 +136,14 @@

      files

      The "files" field is an array of files to include in your project. If you name a folder in the array, then it will also include the files inside that folder. (Unless they would be ignored by another rule.)

      -

      You can also provide a ".npmignore" file in the root of your package, -which will keep files from being included, even if they would be picked -up by the files array. The ".npmignore" file works just like a -".gitignore".

      +

      You can also provide a ".npmignore" file in the root of your package or +in subdirectories, which will keep files from being included, even +if they would be picked up by the files array. The .npmignore file +works just like a .gitignore.

      Certain files are always included, regardless of settings:

      • package.json
      • -
      • README (and its variants)
      • +
      • README (and its variants)
      • CHANGELOG (and its variants)
      • LICENSE / LICENCE
      @@ -272,7 +272,7 @@

      repository

      The "scripts" property is a dictionary containing script commands that are run at various times in the lifecycle of your package. The key is the lifecycle event, and the value is the command to run at that point.

      -

      See npm-scripts(7) to find out more about writing package scripts.

      +

      See npm-scripts(7) to find out more about writing package scripts.

      config

      A "config" object can be used to set configuration parameters used in package scripts that persist across upgrades. For instance, if a package had the @@ -282,7 +282,7 @@

      config

      and then had a "start" command that then referenced the npm_package_config_port environment variable, then the user could override that by doing npm config set foo:port 8001.

      -

      See npm-config(7) and npm-scripts(7) for more on package +

      See npm-config(7) and npm-scripts(7) for more on package configs.

      dependencies

      Dependencies are specified in a simple object that maps a package name to a @@ -291,15 +291,15 @@

      dependencies

      tarball or git URL.

      Please do not put test harnesses or transpilers in your dependencies object. See devDependencies, below.

      -

      See semver(7) for more details about specifying version ranges.

      +

      See semver(7) for more details about specifying version ranges.

      • version Must match version exactly
      • >version Must be greater than version
      • >=version etc
      • <version
      • <=version
      • -
      • ~version "Approximately equivalent to version" See semver(7)
      • -
      • ^version "Compatible with version" See semver(7)
      • +
      • ~version "Approximately equivalent to version" See semver(7)
      • +
      • ^version "Compatible with version" See semver(7)
      • 1.2.x 1.2.0, 1.2.1, etc., but not 1.3.0
      • http://... See 'URLs as Dependencies' below
      • * Matches any version
      • @@ -308,7 +308,7 @@

        dependencies

      • range1 || range2 Passes if either range1 or range2 are satisfied.
      • git... See 'Git URLs as Dependencies' below
      • user/repo See 'GitHub URLs' below
      • -
      • tag A specific version tagged and published as tag See npm-tag(1)
      • +
      • tag A specific version tagged and published as tag See npm-tag(1)
      • path/path/path See Local Paths below

      For example, these are all valid:

      @@ -380,7 +380,7 @@

      devDependencies

      object.

      These things will be installed when doing npm link or npm install from the root of a package, and can be managed like any other npm -configuration param. See npm-config(7) for more on the topic.

      +configuration param. See npm-config(7) for more on the topic.

      For build steps that are not platform-specific, such as compiling CoffeeScript or other languages to JavaScript, use the prepublish script to do this, and make the required package a devDependency.

      @@ -433,7 +433,7 @@

      peerDependencies

      this. If you depend on features introduced in 1.5.2, use ">= 1.5.2 < 2".

      bundledDependencies

      Array of package names that will be bundled when publishing the package.

      -

      If this is spelled "bundleDependencies", then that is also honorable.

      +

      If this is spelled "bundleDependencies", then that is also honored.

      optionalDependencies

      If a dependency can be used, but you would like npm to proceed if it cannot be found or fails to install, then you may put it in the optionalDependencies @@ -520,7 +520,7 @@

      publishConfig

      to the global public registry or that a scoped module is private by default.

      Any config values can be overridden, but of course only "tag", "registry" and "access" probably matter for the purposes of publishing.

      -

      See npm-config(7) to see the list of config options that can be +

      See npm-config(7) to see the list of config options that can be overridden.

      DEFAULT VALUES

      npm will default some values based on package contents.

      @@ -542,16 +542,16 @@

      DEFAULT VALUES

    SEE ALSO

    @@ -565,5 +565,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/files/npmrc.html b/deps/npm/html/doc/files/npmrc.html index 28edc36c20f2..adac20f09ce1 100644 --- a/deps/npm/html/doc/files/npmrc.html +++ b/deps/npm/html/doc/files/npmrc.html @@ -15,7 +15,7 @@

    DESCRIPTION

    variables, and npmrc files.

    The npm config command can be used to update and edit the contents of the user and global npmrc files.

    -

    For a list of available configuration options, see npm-config(7).

    +

    For a list of available configuration options, see npm-config(7).

    FILES

    The four relevant files are:

      @@ -65,11 +65,11 @@

      Built-in config file

      manner.

      SEE ALSO

      @@ -83,5 +83,5 @@

      SEE ALSO

             - + diff --git a/deps/npm/html/doc/files/package.json.html b/deps/npm/html/doc/files/package.json.html index cec160bd40a6..2984bf46fbc2 100644 --- a/deps/npm/html/doc/files/package.json.html +++ b/deps/npm/html/doc/files/package.json.html @@ -14,7 +14,7 @@

      DESCRIPTION

      This document is all you need to know about what's required in your package.json file. It must be actual JSON, not just a JavaScript object literal.

      A lot of the behavior described in this document is affected by the config -settings described in npm-config(7).

      +settings described in npm-config(7).

      name

      The most important things in your package.json are the name and version fields. Those are actually required, and your package won't install without @@ -43,7 +43,7 @@

      name

      already, before you get too attached to it. https://www.npmjs.com/

    A name can be optionally prefixed by a scope, e.g. @myorg/mypackage. See -npm-scope(7) for more detail.

    +npm-scope(7) for more detail.

    version

    The most important things in your package.json are the name and version fields. Those are actually required, and your package won't install without @@ -53,7 +53,7 @@

    version

    Version must be parseable by node-semver, which is bundled with npm as a dependency. (npm install semver to use it yourself.)

    -

    More on version numbers and ranges at semver(7).

    +

    More on version numbers and ranges at semver(7).

    description

    Put a description in it. It's a string. This helps people discover your package, as it's listed in npm search.

    @@ -136,14 +136,14 @@

    files

    The "files" field is an array of files to include in your project. If you name a folder in the array, then it will also include the files inside that folder. (Unless they would be ignored by another rule.)

    -

    You can also provide a ".npmignore" file in the root of your package, -which will keep files from being included, even if they would be picked -up by the files array. The ".npmignore" file works just like a -".gitignore".

    +

    You can also provide a ".npmignore" file in the root of your package or +in subdirectories, which will keep files from being included, even +if they would be picked up by the files array. The .npmignore file +works just like a .gitignore.

    Certain files are always included, regardless of settings:

    • package.json
    • -
    • README (and its variants)
    • +
    • README (and its variants)
    • CHANGELOG (and its variants)
    • LICENSE / LICENCE
    @@ -272,7 +272,7 @@

    repository

    The "scripts" property is a dictionary containing script commands that are run at various times in the lifecycle of your package. The key is the lifecycle event, and the value is the command to run at that point.

    -

    See npm-scripts(7) to find out more about writing package scripts.

    +

    See npm-scripts(7) to find out more about writing package scripts.

    config

    A "config" object can be used to set configuration parameters used in package scripts that persist across upgrades. For instance, if a package had the @@ -282,7 +282,7 @@

    config

    and then had a "start" command that then referenced the npm_package_config_port environment variable, then the user could override that by doing npm config set foo:port 8001.

    -

    See npm-config(7) and npm-scripts(7) for more on package +

    See npm-config(7) and npm-scripts(7) for more on package configs.

    dependencies

    Dependencies are specified in a simple object that maps a package name to a @@ -291,15 +291,15 @@

    dependencies

    tarball or git URL.

    Please do not put test harnesses or transpilers in your dependencies object. See devDependencies, below.

    -

    See semver(7) for more details about specifying version ranges.

    +

    See semver(7) for more details about specifying version ranges.

    • version Must match version exactly
    • >version Must be greater than version
    • >=version etc
    • <version
    • <=version
    • -
    • ~version "Approximately equivalent to version" See semver(7)
    • -
    • ^version "Compatible with version" See semver(7)
    • +
    • ~version "Approximately equivalent to version" See semver(7)
    • +
    • ^version "Compatible with version" See semver(7)
    • 1.2.x 1.2.0, 1.2.1, etc., but not 1.3.0
    • http://... See 'URLs as Dependencies' below
    • * Matches any version
    • @@ -308,7 +308,7 @@

      dependencies

    • range1 || range2 Passes if either range1 or range2 are satisfied.
    • git... See 'Git URLs as Dependencies' below
    • user/repo See 'GitHub URLs' below
    • -
    • tag A specific version tagged and published as tag See npm-tag(1)
    • +
    • tag A specific version tagged and published as tag See npm-tag(1)
    • path/path/path See Local Paths below

    For example, these are all valid:

    @@ -380,7 +380,7 @@

    devDependencies

    object.

    These things will be installed when doing npm link or npm install from the root of a package, and can be managed like any other npm -configuration param. See npm-config(7) for more on the topic.

    +configuration param. See npm-config(7) for more on the topic.

    For build steps that are not platform-specific, such as compiling CoffeeScript or other languages to JavaScript, use the prepublish script to do this, and make the required package a devDependency.

    @@ -433,7 +433,7 @@

    peerDependencies

    this. If you depend on features introduced in 1.5.2, use ">= 1.5.2 < 2".

    bundledDependencies

    Array of package names that will be bundled when publishing the package.

    -

    If this is spelled "bundleDependencies", then that is also honorable.

    +

    If this is spelled "bundleDependencies", then that is also honored.

    optionalDependencies

    If a dependency can be used, but you would like npm to proceed if it cannot be found or fails to install, then you may put it in the optionalDependencies @@ -520,7 +520,7 @@

    publishConfig

    to the global public registry or that a scoped module is private by default.

    Any config values can be overridden, but of course only "tag", "registry" and "access" probably matter for the purposes of publishing.

    -

    See npm-config(7) to see the list of config options that can be +

    See npm-config(7) to see the list of config options that can be overridden.

    DEFAULT VALUES

    npm will default some values based on package contents.

    @@ -542,16 +542,16 @@

    DEFAULT VALUES

    SEE ALSO

    @@ -565,5 +565,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/index.html b/deps/npm/html/doc/index.html index ea04d091f65e..90f9619d2b7c 100644 --- a/deps/npm/html/doc/index.html +++ b/deps/npm/html/doc/index.html @@ -1,6 +1,6 @@ - index + npm-index @@ -10,223 +10,227 @@

    npm-index

    Index of all npm documentation

    -

    README

    +

    README

    a JavaScript package manager

    Command Line Documentation

    Using npm on the command line

    -

    npm(1)

    +

    npm(1)

    javascript package manager

    -

    npm-access(1)

    +

    npm-access(1)

    Set access level on published packages

    -

    npm-adduser(1)

    +

    npm-adduser(1)

    Add a registry user account

    -

    npm-bin(1)

    +

    npm-bin(1)

    Display npm bin folder

    -

    npm-bugs(1)

    +

    npm-bugs(1)

    Bugs for a package in a web browser maybe

    -

    npm-build(1)

    +

    npm-build(1)

    Build a package

    -

    npm-bundle(1)

    +

    npm-bundle(1)

    REMOVED

    -

    npm-cache(1)

    +

    npm-cache(1)

    Manipulates packages cache

    -

    npm-completion(1)

    +

    npm-completion(1)

    Tab Completion for npm

    -

    npm-config(1)

    +

    npm-config(1)

    Manage the npm configuration files

    -

    npm-dedupe(1)

    +

    npm-dedupe(1)

    Reduce duplication

    -

    npm-deprecate(1)

    +

    npm-deprecate(1)

    Deprecate a version of a package

    -

    npm-dist-tag(1)

    +

    npm-dist-tag(1)

    Modify package distribution tags

    -

    npm-docs(1)

    +

    npm-docs(1)

    Docs for a package in a web browser maybe

    -

    npm-edit(1)

    +

    npm-edit(1)

    Edit an installed package

    -

    npm-explore(1)

    +

    npm-explore(1)

    Browse an installed package

    -

    npm-help-search(1)

    +

    npm-help-search(1)

    Search npm help documentation

    -

    npm-help(1)

    +

    npm-help(1)

    Get help on npm

    -

    npm-init(1)

    +

    npm-init(1)

    Interactively create a package.json file

    -

    npm-install(1)

    +

    npm-install(1)

    Install a package

    - +

    Symlink a package folder

    -

    npm-logout(1)

    +

    npm-logout(1)

    Log out of the registry

    -

    npm-ls(1)

    +

    npm-ls(1)

    List installed packages

    -

    npm-outdated(1)

    +

    npm-outdated(1)

    Check for outdated packages

    -

    npm-owner(1)

    +

    npm-owner(1)

    Manage package owners

    -

    npm-pack(1)

    +

    npm-pack(1)

    Create a tarball from a package

    -

    npm-ping(1)

    +

    npm-ping(1)

    Ping npm registry

    -

    npm-prefix(1)

    +

    npm-prefix(1)

    Display prefix

    -

    npm-prune(1)

    +

    npm-prune(1)

    Remove extraneous packages

    -

    npm-publish(1)

    +

    npm-publish(1)

    Publish a package

    -

    npm-rebuild(1)

    +

    npm-rebuild(1)

    Rebuild a package

    -

    npm-repo(1)

    +

    npm-repo(1)

    Open package repository page in the browser

    -

    npm-restart(1)

    +

    npm-restart(1)

    Restart a package

    -

    npm-rm(1)

    +

    npm-rm(1)

    Remove a package

    -

    npm-root(1)

    +

    npm-root(1)

    Display npm root

    -

    npm-run-script(1)

    +

    npm-run-script(1)

    Run arbitrary package scripts

    -

    npm-search(1)

    +

    npm-search(1)

    Search for packages

    -

    npm-shrinkwrap(1)

    +

    npm-shrinkwrap(1)

    Lock down dependency versions

    -

    npm-star(1)

    +

    npm-star(1)

    Mark your favorite packages

    -

    npm-stars(1)

    +

    npm-stars(1)

    View packages marked as favorites

    -

    npm-start(1)

    +

    npm-start(1)

    Start a package

    -

    npm-stop(1)

    +

    npm-stop(1)

    Stop a package

    -

    npm-tag(1)

    +

    npm-tag(1)

    Tag a published version

    -

    npm-test(1)

    +

    npm-team(1)

    +

    Manage organization teams and team memberships

    +

    npm-test(1)

    Test a package

    -

    npm-uninstall(1)

    +

    npm-uninstall(1)

    Remove a package

    -

    npm-unpublish(1)

    +

    npm-unpublish(1)

    Remove a package from the registry

    -

    npm-update(1)

    +

    npm-update(1)

    Update a package

    -

    npm-version(1)

    +

    npm-version(1)

    Bump a package version

    -

    npm-view(1)

    +

    npm-view(1)

    View registry info

    -

    npm-whoami(1)

    +

    npm-whoami(1)

    Display npm username

    API Documentation

    Using npm in your Node programs

    -

    npm(3)

    +

    npm(3)

    javascript package manager

    -

    npm-bin(3)

    +

    npm-bin(3)

    Display npm bin folder

    -

    npm-bugs(3)

    +

    npm-bugs(3)

    Bugs for a package in a web browser maybe

    -

    npm-cache(3)

    +

    npm-cache(3)

    manage the npm cache programmatically

    -

    npm-commands(3)

    +

    npm-commands(3)

    npm commands

    -

    npm-config(3)

    +

    npm-config(3)

    Manage the npm configuration files

    -

    npm-deprecate(3)

    +

    npm-deprecate(3)

    Deprecate a version of a package

    -

    npm-docs(3)

    +

    npm-docs(3)

    Docs for a package in a web browser maybe

    -

    npm-edit(3)

    +

    npm-edit(3)

    Edit an installed package

    -

    npm-explore(3)

    +

    npm-explore(3)

    Browse an installed package

    -

    npm-help-search(3)

    +

    npm-help-search(3)

    Search the help pages

    -

    npm-init(3)

    +

    npm-init(3)

    Interactively create a package.json file

    -

    npm-install(3)

    +

    npm-install(3)

    install a package programmatically

    - +

    Symlink a package folder

    -

    npm-load(3)

    +

    npm-load(3)

    Load config settings

    -

    npm-ls(3)

    +

    npm-ls(3)

    List installed packages

    -

    npm-outdated(3)

    +

    npm-outdated(3)

    Check for outdated packages

    -

    npm-owner(3)

    +

    npm-owner(3)

    Manage package owners

    -

    npm-pack(3)

    +

    npm-pack(3)

    Create a tarball from a package

    -

    npm-ping(3)

    +

    npm-ping(3)

    Ping npm registry

    -

    npm-prefix(3)

    +

    npm-prefix(3)

    Display prefix

    -

    npm-prune(3)

    +

    npm-prune(3)

    Remove extraneous packages

    -

    npm-publish(3)

    +

    npm-publish(3)

    Publish a package

    -

    npm-rebuild(3)

    +

    npm-rebuild(3)

    Rebuild a package

    -

    npm-repo(3)

    +

    npm-repo(3)

    Open package repository page in the browser

    -

    npm-restart(3)

    +

    npm-restart(3)

    Restart a package

    -

    npm-root(3)

    +

    npm-root(3)

    Display npm root

    -

    npm-run-script(3)

    +

    npm-run-script(3)

    Run arbitrary package scripts

    -

    npm-search(3)

    +

    npm-search(3)

    Search for packages

    -

    npm-shrinkwrap(3)

    +

    npm-shrinkwrap(3)

    programmatically generate package shrinkwrap file

    -

    npm-start(3)

    +

    npm-start(3)

    Start a package

    -

    npm-stop(3)

    +

    npm-stop(3)

    Stop a package

    -

    npm-tag(3)

    +

    npm-tag(3)

    Tag a published version

    -

    npm-test(3)

    +

    npm-test(3)

    Test a package

    -

    npm-uninstall(3)

    +

    npm-uninstall(3)

    uninstall a package programmatically

    -

    npm-unpublish(3)

    +

    npm-unpublish(3)

    Remove a package from the registry

    -

    npm-update(3)

    +

    npm-update(3)

    Update a package

    -

    npm-version(3)

    +

    npm-version(3)

    Bump a package version

    -

    npm-view(3)

    +

    npm-view(3)

    View registry info

    -

    npm-whoami(3)

    +

    npm-whoami(3)

    Display npm username

    Files

    File system structures npm uses

    -

    npm-folders(5)

    +

    npm-folders(5)

    Folder Structures Used by npm

    -

    npmrc(5)

    +

    npmrc(5)

    The npm config files

    -

    package.json(5)

    +

    package.json(5)

    Specifics of npm's package.json handling

    Misc

    Various other bits and bobs

    -

    npm-coding-style(7)

    +

    npm-coding-style(7)

    npm's "funny" coding style

    -

    npm-config(7)

    +

    npm-config(7)

    More than you probably want to know about npm configuration

    -

    npm-developers(7)

    +

    npm-developers(7)

    Developer Guide

    -

    npm-disputes(7)

    +

    npm-disputes(7)

    Handling Module Name Disputes

    -

    npm-faq(7)

    +

    npm-faq(7)

    Frequently Asked Questions

    -

    npm-index(7)

    +

    npm-index(7)

    Index of all npm documentation

    -

    npm-registry(7)

    +

    npm-orgs(7)

    +

    Working with Teams & Orgs

    +

    npm-registry(7)

    The JavaScript Package Registry

    -

    npm-scope(7)

    +

    npm-scope(7)

    Scoped packages

    -

    npm-scripts(7)

    +

    npm-scripts(7)

    How npm handles the "scripts" field

    -

    removing-npm(7)

    +

    removing-npm(7)

    Cleaning the Slate

    -

    semver(7)

    +

    semver(7)

    The semantic versioner for npm

    @@ -240,5 +244,5 @@

    semver(        - + diff --git a/deps/npm/html/doc/misc/npm-coding-style.html b/deps/npm/html/doc/misc/npm-coding-style.html index db41c5b98220..4efacc596612 100644 --- a/deps/npm/html/doc/misc/npm-coding-style.html +++ b/deps/npm/html/doc/misc/npm-coding-style.html @@ -109,7 +109,7 @@

    Logging

    logging the same object over and over again is not helpful. Logs should report what's happening so that it's easier to track down where a fault occurs.

    -

    Use appropriate log levels. See npm-config(7) and search for +

    Use appropriate log levels. See npm-config(7) and search for "loglevel".

    Case, naming, etc.

    Use lowerCamelCase for multiword identifiers when they refer to objects, @@ -131,9 +131,9 @@

    null, undefined, false, 0

    Boolean objects are verboten.

    SEE ALSO

    @@ -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 4ed4156cff45..ad729803388d 100644 --- a/deps/npm/html/doc/misc/npm-config.html +++ b/deps/npm/html/doc/misc/npm-config.html @@ -33,7 +33,7 @@

    npmrc Files

  • global config file ($PREFIX/npmrc)
  • npm builtin config file (/path/to/npm/npmrc)
  • -

    See npmrc(5) for more details.

    +

    See npmrc(5) for more details.

    Default Configs

    A set of configuration parameters that are internal to npm, and are defaults if nothing else is specified.

    @@ -78,7 +78,7 @@

    Shorthands and Other CLI Niceties

    Per-Package Config Settings

    -

    When running scripts (see npm-scripts(7)) the package.json "config" +

    When running scripts (see npm-scripts(7)) the package.json "config" keys are overwritten in the environment if there is a config param of <name>[@<version>]:<key>. For example, if the package.json has this:

    @@ -89,7 +89,7 @@

    Shorthands and Other CLI Niceties

    http.createServer(...).listen(process.env.npm_package_config_port)

    then the user could change the behavior by doing:

    npm config set foo:port 80
    -

    See package.json(5) for more information.

    +

    See package.json(5) for more information.

    Config Settings

    access

      @@ -151,7 +151,7 @@

      cache

    • Default: Windows: %AppData%\npm-cache, Posix: ~/.npm
    • Type: path
    -

    The location of npm's cache directory. See npm-cache(1)

    +

    The location of npm's cache directory. See npm-cache(1)

    cache-lock-stale

    • Default: 60000 (1 minute)
    • @@ -302,7 +302,7 @@

      global

    Operates in "global" mode, so that packages are installed into the prefix folder instead of the current working directory. See -npm-folders(5) for more on the differences in behavior.

    +npm-folders(5) for more on the differences in behavior.

    SEE ALSO

    @@ -207,5 +207,5 @@

    SEE ALSO

           - + diff --git a/deps/npm/html/doc/misc/removing-npm.html b/deps/npm/html/doc/misc/removing-npm.html index c1f8b86008a0..991fdeaa8268 100644 --- a/deps/npm/html/doc/misc/removing-npm.html +++ b/deps/npm/html/doc/misc/removing-npm.html @@ -38,12 +38,12 @@

    SYNOPSIS

    Prior to version 0.3, npm used shim files for executables and node modules. To track those down, you can do the following:

    find /usr/local/{lib/node,bin} -exec grep -l npm \{\} \; ;
    -

    (This is also in the README file.)

    +

    (This is also in the README file.)

    SEE ALSO

    @@ -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 a2fd948d56f5..c8e113d62e70 100644 --- a/deps/npm/html/doc/misc/semver.html +++ b/deps/npm/html/doc/misc/semver.html @@ -282,5 +282,5 @@

    Ranges

           - + diff --git a/deps/npm/html/partial/doc/README.html b/deps/npm/html/partial/doc/README.html deleted file mode 100644 index 98896e62869f..000000000000 --- a/deps/npm/html/partial/doc/README.html +++ /dev/null @@ -1,163 +0,0 @@ -

    npm

    a JavaScript package manager

    -

    Build Status

    -

    SYNOPSIS

    -

    This is just enough info to get you up and running.

    -

    Much more info available via npm help once it's installed.

    -

    IMPORTANT

    -

    You need node v0.8 or higher to run this program.

    -

    To install an old and unsupported version of npm that works on node 0.3 -and prior, clone the git repo and dig through the old tags and branches.

    -

    Super Easy Install

    -

    npm comes with node now.

    -

    Windows Computers

    -

    Get the MSI. npm is in it.

    -

    Apple Macintosh Computers

    -

    Get the pkg. npm is in it.

    -

    Other Sorts of Unices

    -

    Run make install. npm will be installed with node.

    -

    If you want a more fancy pants install (a different version, customized -paths, etc.) then read on.

    -

    Fancy Install (Unix)

    -

    There's a pretty robust install script at -https://www.npmjs.com/install.sh. You can download that and run it.

    -

    Here's an example using curl:

    -
    curl -L https://www.npmjs.com/install.sh | sh
    -
    -

    Slightly Fancier

    -

    You can set any npm configuration params with that script:

    -
    npm_config_prefix=/some/path sh install.sh
    -
    -

    Or, you can run it in uber-debuggery mode:

    -
    npm_debug=1 sh install.sh
    -
    -

    Even Fancier

    -

    Get the code with git. Use make to build the docs and do other stuff. -If you plan on hacking on npm, make link is your friend.

    -

    If you've got the npm source code, you can also semi-permanently set -arbitrary config keys using the ./configure --key=val ..., and then -run npm commands by doing node cli.js <cmd> <args>. (This is helpful -for testing, or running stuff without actually installing npm itself.)

    -

    Windows Install or Upgrade

    -

    You can download a zip file from https://github.com/npm/npm/releases, and -unpack it in the node_modules\npm\ folder inside node's installation folder.

    -

    To upgrade to npm 2, follow the Windows upgrade instructions in -the npm Troubleshooting Guide:

    -

    https://github.com/npm/npm/wiki/Troubleshooting#upgrading-on-windows

    -

    If that's not fancy enough for you, then you can fetch the code with -git, and mess with it directly.

    -

    Installing on Cygwin

    -

    No.

    -

    Uninstalling

    -

    So sad to see you go.

    -
    sudo npm uninstall npm -g
    -
    -

    Or, if that fails,

    -
    sudo make uninstall
    -
    -

    More Severe Uninstalling

    -

    Usually, the above instructions are sufficient. That will remove -npm, but leave behind anything you've installed.

    -

    If you would like to remove all the packages that you have installed, -then you can use the npm ls command to find them, and then npm rm to -remove them.

    -

    To remove cruft left behind by npm 0.x, you can use the included -clean-old.sh script file. You can run it conveniently like this:

    -
    npm explore npm -g -- sh scripts/clean-old.sh
    -
    -

    npm uses two configuration files, one for per-user configs, and another -for global (every-user) configs. You can view them by doing:

    -
    npm config get userconfig   # defaults to ~/.npmrc
    -npm config get globalconfig # defaults to /usr/local/etc/npmrc
    -
    -

    Uninstalling npm does not remove configuration files by default. You -must remove them yourself manually if you want them gone. Note that -this means that future npm installs will not remember the settings that -you have chosen.

    -

    Using npm Programmatically

    -

    Although npm can be used programmatically, its API is meant for use by the CLI -only, and no guarantees are made regarding its fitness for any other purpose. -If you want to use npm to reliably perform some task, the safest thing to do is -to invoke the desired npm command with appropriate arguments.

    -

    The semantic version of npm refers to the CLI itself, rather than the -underlying API. The internal API is not guaranteed to remain stable even when -npm's version indicates no breaking changes have been made according to -semver.

    -

    If you still would like to use npm programmatically, it's possible. The API -isn't very well documented, but it is rather simple.

    -

    Eventually, npm will be just a thin CLI wrapper around the modules that it -depends on, but for now, there are some things that only the CLI can do. You -should try using one of npm's dependencies first, and only use the API if what -you're trying to do is only supported by npm itself.

    -
    var npm = require("npm")
    -npm.load(myConfigObject, function (er) {
    -  if (er) return handlError(er)
    -  npm.commands.install(["some", "args"], function (er, data) {
    -    if (er) return commandFailed(er)
    -    // command succeeded, and data might have some info
    -  })
    -  npm.registry.log.on("log", function (message) { .... })
    -})
    -
    -

    The load function takes an object hash of the command-line configs. -The various npm.commands.<cmd> functions take an array of -positional argument strings. The last argument to any -npm.commands.<cmd> function is a callback. Some commands take other -optional arguments. Read the source.

    -

    You cannot set configs individually for any single npm function at this -time. Since npm is a singleton, any call to npm.config.set will -change the value for all npm commands in that process.

    -

    See ./bin/npm-cli.js for an example of pulling config values off of the -command line arguments using nopt. You may also want to check out npm -help config to learn about all the options you can set there.

    -

    More Docs

    -

    Check out the docs, -especially the faq.

    -

    You can use the npm help command to read any of them.

    -

    If you're a developer, and you want to use npm to publish your program, -you should read this

    - -

    "npm" and "The npm Registry" are owned by npm, Inc. -All rights reserved. See the included LICENSE file for more details.

    -

    "Node.js" and "node" are trademarks owned by Joyent, Inc.

    -

    Modules published on the npm registry are not officially endorsed by -npm, Inc. or the Node.js project.

    -

    Data published to the npm registry is not part of npm itself, and is -the sole property of the publisher. While every effort is made to -ensure accountability, there is absolutely no guarantee, warranty, or -assertion expressed or implied as to the quality, fitness for a -specific purpose, or lack of malice in any given npm package.

    -

    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.

    -

    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.

    -

    In plainer english

    -

    npm is the property of npm, Inc.

    -

    If you publish something, it's yours, and you are solely accountable -for it.

    -

    If other people publish something, it's theirs.

    -

    Users can publish Bad Stuff. It will be removed promptly if reported. -But there is no vetting process for published modules, and you use -them at your own risk. Please inspect the source.

    -

    If you publish Bad Stuff, we may delete it from the registry, or even -ban your account in extreme cases. So don't do that.

    -

    BUGS

    -

    When you find issues, please report them:

    - -

    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.

    -

    You can also look for isaacs in #node.js on irc://irc.freenode.net. He -will no doubt tell you to put the output in a gist or email.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/api/npm-bin.html b/deps/npm/html/partial/doc/api/npm-bin.html deleted file mode 100644 index 54f895518ab1..000000000000 --- a/deps/npm/html/partial/doc/api/npm-bin.html +++ /dev/null @@ -1,8 +0,0 @@ -

    npm-bin

    Display npm bin folder

    -

    SYNOPSIS

    -
    npm.commands.bin(args, cb)
    -

    DESCRIPTION

    -

    Print the folder where npm will install executables.

    -

    This function should not be used programmatically. Instead, just refer -to the npm.bin property.

    - diff --git a/deps/npm/html/partial/doc/api/npm-bugs.html b/deps/npm/html/partial/doc/api/npm-bugs.html deleted file mode 100644 index e9ff2a58aa5e..000000000000 --- a/deps/npm/html/partial/doc/api/npm-bugs.html +++ /dev/null @@ -1,13 +0,0 @@ -

    npm-bugs

    Bugs for a package in a web browser maybe

    -

    SYNOPSIS

    -
    npm.commands.bugs(package, callback)
    -

    DESCRIPTION

    -

    This command tries to guess at the likely location of a package's -bug tracker URL, and then tries to open it using the --browser -config param.

    -

    Like other commands, the first parameter is an array. This command only -uses the first element, which is expected to be a package name with an -optional version number.

    -

    This command will launch a browser, so this command may not be the most -friendly for programmatic use.

    - diff --git a/deps/npm/html/partial/doc/api/npm-cache.html b/deps/npm/html/partial/doc/api/npm-cache.html deleted file mode 100644 index b837a6886954..000000000000 --- a/deps/npm/html/partial/doc/api/npm-cache.html +++ /dev/null @@ -1,22 +0,0 @@ -

    npm-cache

    manage the npm cache programmatically

    -

    SYNOPSIS

    -
    npm.commands.cache([args], callback)
    -
    -// helpers
    -npm.commands.cache.clean([args], callback)
    -npm.commands.cache.add([args], callback)
    -npm.commands.cache.read(name, version, forceBypass, callback)
    -

    DESCRIPTION

    -

    This acts much the same ways as the npm-cache(1) command line -functionality.

    -

    The callback is called with the package.json data of the thing that is -eventually added to or read from the cache.

    -

    The top level npm.commands.cache(...) functionality is a public -interface, and like all commands on the npm.commands object, it will -match the command line behavior exactly.

    -

    However, the cache folder structure and the cache helper functions are -considered internal API surface, and as such, may change in future -releases of npm, potentially without warning or significant version -incrementation.

    -

    Use at your own risk.

    - diff --git a/deps/npm/html/partial/doc/api/npm-commands.html b/deps/npm/html/partial/doc/api/npm-commands.html deleted file mode 100644 index eaf57af4af03..000000000000 --- a/deps/npm/html/partial/doc/api/npm-commands.html +++ /dev/null @@ -1,16 +0,0 @@ -

    npm-commands

    npm commands

    -

    SYNOPSIS

    -
    npm.commands[<command>](args, callback)
    -

    DESCRIPTION

    -

    npm comes with a full set of commands, and each of the commands takes a -similar set of arguments.

    -

    In general, all commands on the command object take an array of positional -argument strings. The last argument to any function is a callback. Some -commands are special and take other optional arguments.

    -

    All commands have their own man page. See man npm-<command> for command-line -usage, or man 3 npm-<command> for programmatic usage.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/api/npm-config.html b/deps/npm/html/partial/doc/api/npm-config.html deleted file mode 100644 index b34c02182d3e..000000000000 --- a/deps/npm/html/partial/doc/api/npm-config.html +++ /dev/null @@ -1,37 +0,0 @@ -

    npm-config

    Manage the npm configuration files

    -

    SYNOPSIS

    -
    npm.commands.config(args, callback)
    -var val = npm.config.get(key)
    -npm.config.set(key, val)
    -

    DESCRIPTION

    -

    This function acts much the same way as the command-line version. The first -element in the array tells config what to do. Possible values are:

    -
      -
    • set

      -

      Sets a config parameter. The second element in args is interpreted as the - key, and the third element is interpreted as the value.

      -
    • -
    • get

      -

      Gets the value of a config parameter. The second element in args is the - key to get the value of.

      -
    • -
    • delete (rm or del)

      -

      Deletes a parameter from the config. The second element in args is the - key to delete.

      -
    • -
    • list (ls)

      -

      Show all configs that aren't secret. No parameters necessary.

      -
    • -
    • edit:

      -

      Opens the config file in the default editor. This command isn't very useful - programmatically, but it is made available.

      -
    • -
    -

    To programmatically access npm configuration settings, or set them for -the duration of a program, use the npm.config.set and npm.config.get -functions instead.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/api/npm-deprecate.html b/deps/npm/html/partial/doc/api/npm-deprecate.html deleted file mode 100644 index f0ef298b2a25..000000000000 --- a/deps/npm/html/partial/doc/api/npm-deprecate.html +++ /dev/null @@ -1,27 +0,0 @@ -

    npm-deprecate

    Deprecate a version of a package

    -

    SYNOPSIS

    -
    npm.commands.deprecate(args, callback)
    -

    DESCRIPTION

    -

    This command will update the npm registry entry for a package, providing -a deprecation warning to all who attempt to install it.

    -

    The 'args' parameter must have exactly two elements:

    -
      -
    • package[@version]

      -

      The version portion is optional, and may be either a range, or a - specific version, or a tag.

      -
    • -
    • message

      -

      The warning message that will be printed whenever a user attempts to - install the package.

      -
    • -
    -

    Note that you must be the package owner to deprecate something. See the -owner and adduser help topics.

    -

    To un-deprecate a package, specify an empty string ("") for the message argument.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/api/npm-docs.html b/deps/npm/html/partial/doc/api/npm-docs.html deleted file mode 100644 index dde38920fd10..000000000000 --- a/deps/npm/html/partial/doc/api/npm-docs.html +++ /dev/null @@ -1,13 +0,0 @@ -

    npm-docs

    Docs for a package in a web browser maybe

    -

    SYNOPSIS

    -
    npm.commands.docs(package, callback)
    -

    DESCRIPTION

    -

    This command tries to guess at the likely location of a package's -documentation URL, and then tries to open it using the --browser -config param.

    -

    Like other commands, the first parameter is an array. This command only -uses the first element, which is expected to be a package name with an -optional version number.

    -

    This command will launch a browser, so this command may not be the most -friendly for programmatic use.

    - diff --git a/deps/npm/html/partial/doc/api/npm-edit.html b/deps/npm/html/partial/doc/api/npm-edit.html deleted file mode 100644 index ef49f94e14eb..000000000000 --- a/deps/npm/html/partial/doc/api/npm-edit.html +++ /dev/null @@ -1,16 +0,0 @@ -

    npm-edit

    Edit an installed package

    -

    SYNOPSIS

    -
    npm.commands.edit(package, callback)
    -

    DESCRIPTION

    -

    Opens the package folder in the default editor (or whatever you've -configured as the npm editor config -- see npm help config.)

    -

    After it has been edited, the package is rebuilt so as to pick up any -changes in compiled packages.

    -

    For instance, you can do npm install connect to install connect -into your package, and then npm.commands.edit(["connect"], callback) -to make a few changes to your locally installed copy.

    -

    The first parameter is a string array with a single element, the package -to open. The package can optionally have a version number attached.

    -

    Since this command opens an editor in a new process, be careful about where -and how this is used.

    - diff --git a/deps/npm/html/partial/doc/api/npm-explore.html b/deps/npm/html/partial/doc/api/npm-explore.html deleted file mode 100644 index 60f3ac178027..000000000000 --- a/deps/npm/html/partial/doc/api/npm-explore.html +++ /dev/null @@ -1,11 +0,0 @@ -

    npm-explore

    Browse an installed package

    -

    SYNOPSIS

    -
    npm.commands.explore(args, callback)
    -

    DESCRIPTION

    -

    Spawn a subshell in the directory of the installed package specified.

    -

    If a command is specified, then it is run in the subshell, which then -immediately terminates.

    -

    Note that the package is not automatically rebuilt afterwards, so be -sure to use npm rebuild <pkg> if you make any changes.

    -

    The first element in the 'args' parameter must be a package name. After that is the optional command, which can be any number of strings. All of the strings will be combined into one, space-delimited command.

    - diff --git a/deps/npm/html/partial/doc/api/npm-help-search.html b/deps/npm/html/partial/doc/api/npm-help-search.html deleted file mode 100644 index 7818b6b1e74c..000000000000 --- a/deps/npm/html/partial/doc/api/npm-help-search.html +++ /dev/null @@ -1,24 +0,0 @@ -

    npm-help-search

    Search the help pages

    -

    SYNOPSIS

    -
    npm.commands.helpSearch(args, [silent,] callback)
    -

    DESCRIPTION

    -

    This command is rarely useful, but it exists in the rare case that it is.

    -

    This command takes an array of search terms and returns the help pages that -match in order of best match.

    -

    If there is only one match, then npm displays that help section. If there -are multiple results, the results are printed to the screen formatted and the -array of results is returned. Each result is an object with these properties:

    -
      -
    • hits: -A map of args to number of hits on that arg. For example, {"npm": 3}
    • -
    • found: -Total number of unique args that matched.
    • -
    • totalHits: -Total number of hits.
    • -
    • lines: -An array of all matching lines (and some adjacent lines).
    • -
    • file: -Name of the file that matched
    • -
    -

    The silent parameter is not necessary not used, but it may in the future.

    - diff --git a/deps/npm/html/partial/doc/api/npm-init.html b/deps/npm/html/partial/doc/api/npm-init.html deleted file mode 100644 index 723fbdebedb2..000000000000 --- a/deps/npm/html/partial/doc/api/npm-init.html +++ /dev/null @@ -1,19 +0,0 @@ -

    npm init

    Interactively create a package.json file

    -

    SYNOPSIS

    -
    npm.commands.init(args, callback)
    -

    DESCRIPTION

    -

    This will ask you a bunch of questions, and then write a package.json for you.

    -

    It attempts to make reasonable guesses about what you want things to be set to, -and then writes a package.json file with the options you've selected.

    -

    If you already have a package.json file, it'll read that first, and default to -the options in there.

    -

    It is strictly additive, so it does not delete options from your package.json -without a really good reason to do so.

    -

    Since this function expects to be run on the command-line, it doesn't work very -well as a programmatically. The best option is to roll your own, and since -JavaScript makes it stupid simple to output formatted JSON, that is the -preferred method. If you're sure you want to handle command-line prompting, -then go ahead and use this programmatically.

    -

    SEE ALSO

    -

    package.json(5)

    - diff --git a/deps/npm/html/partial/doc/api/npm-install.html b/deps/npm/html/partial/doc/api/npm-install.html deleted file mode 100644 index bfbd5668877b..000000000000 --- a/deps/npm/html/partial/doc/api/npm-install.html +++ /dev/null @@ -1,12 +0,0 @@ -

    npm-install

    install a package programmatically

    -

    SYNOPSIS

    -
    npm.commands.install([where,] packages, callback)
    -

    DESCRIPTION

    -

    This acts much the same ways as installing on the command-line.

    -

    The 'where' parameter is optional and only used internally, and it specifies -where the packages should be installed to.

    -

    The 'packages' parameter is an array of strings. Each element in the array is -the name of a package to be installed.

    -

    Finally, 'callback' is a function that will be called when all packages have been -installed or when an error has been encountered.

    - diff --git a/deps/npm/html/partial/doc/api/npm-link.html b/deps/npm/html/partial/doc/api/npm-link.html deleted file mode 100644 index e2efe3ebc1fe..000000000000 --- a/deps/npm/html/partial/doc/api/npm-link.html +++ /dev/null @@ -1,22 +0,0 @@ -

    npm-link

    Symlink a package folder

    -

    SYNOPSIS

    -
    npm.commands.link(callback)
    -npm.commands.link(packages, callback)
    -

    DESCRIPTION

    -

    Package linking is a two-step process.

    -

    Without parameters, link will create a globally-installed -symbolic link from prefix/package-name to the current folder.

    -

    With a parameters, link will create a symlink from the local node_modules -folder to the global symlink.

    -

    When creating tarballs for npm publish, the linked packages are -"snapshotted" to their current state by resolving the symbolic links.

    -

    This is -handy for installing your own stuff, so that you can work on it and test it -iteratively without having to continually rebuild.

    -

    For example:

    -
    npm.commands.link(cb)           # creates global link from the cwd
    -                                # (say redis package)
    -npm.commands.link('redis', cb)  # link-install the package
    -

    Now, any changes to the redis package will be reflected in -the package in the current working directory

    - diff --git a/deps/npm/html/partial/doc/api/npm-load.html b/deps/npm/html/partial/doc/api/npm-load.html deleted file mode 100644 index 0796cacdab6c..000000000000 --- a/deps/npm/html/partial/doc/api/npm-load.html +++ /dev/null @@ -1,17 +0,0 @@ -

    npm-load

    Load config settings

    -

    SYNOPSIS

    -
    npm.load(conf, cb)
    -

    DESCRIPTION

    -

    npm.load() must be called before any other function call. Both parameters are -optional, but the second is recommended.

    -

    The first parameter is an object containing command-line config params, and the -second parameter is a callback that will be called when npm is loaded and ready -to serve.

    -

    The first parameter should follow a similar structure as the package.json -config object.

    -

    For example, to emulate the --dev flag, pass an object that looks like this:

    -
    {
    -  "dev": true
    -}
    -

    For a list of all the available command-line configs, see npm help config

    - diff --git a/deps/npm/html/partial/doc/api/npm-ls.html b/deps/npm/html/partial/doc/api/npm-ls.html deleted file mode 100644 index 850955b83612..000000000000 --- a/deps/npm/html/partial/doc/api/npm-ls.html +++ /dev/null @@ -1,43 +0,0 @@ -

    npm-ls

    List installed packages

    -

    SYNOPSIS

    -
    npm.commands.ls(args, [silent,] callback)
    -

    DESCRIPTION

    -

    This command will print to stdout all the versions of packages that are -installed, as well as their dependencies, in a tree-structure. It will also -return that data using the callback.

    -

    This command does not take any arguments, but args must be defined. -Beyond that, if any arguments are passed in, npm will politely warn that it -does not take positional arguments, though you may set config flags -like with any other command, such as global to list global packages.

    -

    It will print out extraneous, missing, and invalid packages.

    -

    If the silent parameter is set to true, nothing will be output to the screen, -but the data will still be returned.

    -

    Callback is provided an error if one occurred, the full data about which -packages are installed and which dependencies they will receive, and a -"lite" data object which just shows which versions are installed where. -Note that the full data object is a circular structure, so care must be -taken if it is serialized to JSON.

    -

    CONFIGURATION

    -

    long

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Show extended information.

    -

    parseable

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Show parseable output instead of tree view.

    -

    global

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    List packages in the global install prefix instead of in the current -project.

    -

    Note, if parseable is set or long isn't set, then duplicates will be trimmed. -This means that if a submodule has the same dependency as a parent module, then the -dependency will only be output once.

    - diff --git a/deps/npm/html/partial/doc/api/npm-outdated.html b/deps/npm/html/partial/doc/api/npm-outdated.html deleted file mode 100644 index 16d3150d3f71..000000000000 --- a/deps/npm/html/partial/doc/api/npm-outdated.html +++ /dev/null @@ -1,8 +0,0 @@ -

    npm-outdated

    Check for outdated packages

    -

    SYNOPSIS

    -
    npm.commands.outdated([packages,] callback)
    -

    DESCRIPTION

    -

    This command will check the registry to see if the specified packages are -currently outdated.

    -

    If the 'packages' parameter is left out, npm will check all packages.

    - diff --git a/deps/npm/html/partial/doc/api/npm-owner.html b/deps/npm/html/partial/doc/api/npm-owner.html deleted file mode 100644 index 20e8b6840e4e..000000000000 --- a/deps/npm/html/partial/doc/api/npm-owner.html +++ /dev/null @@ -1,27 +0,0 @@ -

    npm-owner

    Manage package owners

    -

    SYNOPSIS

    -
    npm.commands.owner(args, callback)
    -

    DESCRIPTION

    -

    The first element of the 'args' parameter defines what to do, and the subsequent -elements depend on the action. Possible values for the action are (order of -parameters are given in parenthesis):

    -
      -
    • ls (package): -List all the users who have access to modify a package and push new versions. -Handy when you need to know who to bug for help.
    • -
    • add (user, package): -Add a new user as a maintainer of a package. This user is enabled to modify -metadata, publish new versions, and add other owners.
    • -
    • rm (user, package): -Remove a user from the package owner list. This immediately revokes their -privileges.
    • -
    -

    Note that there is only one level of access. Either you can modify a package, -or you can't. Future versions may contain more fine-grained access levels, but -that is not implemented at this time.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/api/npm-pack.html b/deps/npm/html/partial/doc/api/npm-pack.html deleted file mode 100644 index 6417688673c4..000000000000 --- a/deps/npm/html/partial/doc/api/npm-pack.html +++ /dev/null @@ -1,13 +0,0 @@ -

    npm-pack

    Create a tarball from a package

    -

    SYNOPSIS

    -
    npm.commands.pack([packages,] callback)
    -

    DESCRIPTION

    -

    For anything that's installable (that is, a package folder, tarball, -tarball url, name@tag, name@version, or name), this command will fetch -it to the cache, and then copy the tarball to the current working -directory as <name>-<version>.tgz, and then write the filenames out to -stdout.

    -

    If the same package is specified multiple times, then the file will be -overwritten the second time.

    -

    If no arguments are supplied, then npm packs the current package folder.

    - diff --git a/deps/npm/html/partial/doc/api/npm-ping.html b/deps/npm/html/partial/doc/api/npm-ping.html deleted file mode 100644 index ac8a29e185c6..000000000000 --- a/deps/npm/html/partial/doc/api/npm-ping.html +++ /dev/null @@ -1,8 +0,0 @@ -

    npm-ping

    Ping npm registry

    -

    SYNOPSIS

    -
    npm.registry.ping(registry, options, function (er, pong))
    -

    DESCRIPTION

    -

    Attempts to connect to the given registry, returning a pong -object with various metadata if it succeeds.

    -

    This function is primarily useful for debugging connection issues -to npm registries.

    diff --git a/deps/npm/html/partial/doc/api/npm-prefix.html b/deps/npm/html/partial/doc/api/npm-prefix.html deleted file mode 100644 index e9904b18d9f0..000000000000 --- a/deps/npm/html/partial/doc/api/npm-prefix.html +++ /dev/null @@ -1,9 +0,0 @@ -

    npm-prefix

    Display prefix

    -

    SYNOPSIS

    -
    npm.commands.prefix(args, callback)
    -

    DESCRIPTION

    -

    Print the prefix to standard out.

    -

    'args' is never used and callback is never called with data. -'args' must be present or things will break.

    -

    This function is not useful programmatically

    - diff --git a/deps/npm/html/partial/doc/api/npm-prune.html b/deps/npm/html/partial/doc/api/npm-prune.html deleted file mode 100644 index 5835a9b6a792..000000000000 --- a/deps/npm/html/partial/doc/api/npm-prune.html +++ /dev/null @@ -1,10 +0,0 @@ -

    npm-prune

    Remove extraneous packages

    -

    SYNOPSIS

    -
    npm.commands.prune([packages,] callback)
    -

    DESCRIPTION

    -

    This command removes "extraneous" packages.

    -

    The first parameter is optional, and it specifies packages to be removed.

    -

    No packages are specified, then all packages will be checked.

    -

    Extraneous packages are packages that are not listed on the parent -package's dependencies list.

    - diff --git a/deps/npm/html/partial/doc/api/npm-publish.html b/deps/npm/html/partial/doc/api/npm-publish.html deleted file mode 100644 index f0e5da91ba3d..000000000000 --- a/deps/npm/html/partial/doc/api/npm-publish.html +++ /dev/null @@ -1,26 +0,0 @@ -

    npm-publish

    Publish a package

    -

    SYNOPSIS

    -
    npm.commands.publish([packages,] callback)
    -

    DESCRIPTION

    -

    Publishes a package to the registry so that it can be installed by name. -Possible values in the 'packages' array are:

    -
      -
    • <folder>: -A folder containing a package.json file

      -
    • -
    • <tarball>: -A url or file path to a gzipped tar archive containing a single folder -with a package.json file inside.

      -
    • -
    -

    If the package array is empty, npm will try to publish something in the -current working directory.

    -

    This command could fails if one of the packages specified already exists in -the registry. Overwrites when the "force" environment variable is set.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/api/npm-rebuild.html b/deps/npm/html/partial/doc/api/npm-rebuild.html deleted file mode 100644 index e428728a6177..000000000000 --- a/deps/npm/html/partial/doc/api/npm-rebuild.html +++ /dev/null @@ -1,10 +0,0 @@ -

    npm-rebuild

    Rebuild a package

    -

    SYNOPSIS

    -
    npm.commands.rebuild([packages,] callback)
    -

    DESCRIPTION

    -

    This command runs the npm build command on each of the matched packages. This is useful -when you install a new version of node, and must recompile all your C++ addons with -the new binary. If no 'packages' parameter is specify, every package will be rebuilt.

    -

    CONFIGURATION

    -

    See npm help build

    - diff --git a/deps/npm/html/partial/doc/api/npm-repo.html b/deps/npm/html/partial/doc/api/npm-repo.html deleted file mode 100644 index 9a18976cd416..000000000000 --- a/deps/npm/html/partial/doc/api/npm-repo.html +++ /dev/null @@ -1,13 +0,0 @@ -

    npm-repo

    Open package repository page in the browser

    -

    SYNOPSIS

    -
    npm.commands.repo(package, callback)
    -

    DESCRIPTION

    -

    This command tries to guess at the likely location of a package's -repository URL, and then tries to open it using the --browser -config param.

    -

    Like other commands, the first parameter is an array. This command only -uses the first element, which is expected to be a package name with an -optional version number.

    -

    This command will launch a browser, so this command may not be the most -friendly for programmatic use.

    - diff --git a/deps/npm/html/partial/doc/api/npm-restart.html b/deps/npm/html/partial/doc/api/npm-restart.html deleted file mode 100644 index f0de7504a5b9..000000000000 --- a/deps/npm/html/partial/doc/api/npm-restart.html +++ /dev/null @@ -1,32 +0,0 @@ -

    npm-restart

    Restart a package

    -

    SYNOPSIS

    -
    npm.commands.restart(packages, callback)
    -

    DESCRIPTION

    -

    This restarts a package (or multiple packages).

    -

    This runs a package's "stop", "restart", and "start" scripts, and associated -pre- and post- scripts, in the order given below:

    -
      -
    1. prerestart
    2. -
    3. prestop
    4. -
    5. stop
    6. -
    7. poststop
    8. -
    9. restart
    10. -
    11. prestart
    12. -
    13. start
    14. -
    15. poststart
    16. -
    17. postrestart
    18. -
    -

    If no version is specified, then it restarts the "active" version.

    -

    npm can restart multiple packages. Just specify multiple packages in -the packages parameter.

    -

    NOTE

    -

    Note that the "restart" script is run in addition to the "stop" -and "start" scripts, not instead of them.

    -

    This is the behavior as of npm major version 2. A change in this -behavior will be accompanied by an increase in major version number

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/api/npm-root.html b/deps/npm/html/partial/doc/api/npm-root.html deleted file mode 100644 index 1549515122ed..000000000000 --- a/deps/npm/html/partial/doc/api/npm-root.html +++ /dev/null @@ -1,9 +0,0 @@ -

    npm-root

    Display npm root

    -

    SYNOPSIS

    -
    npm.commands.root(args, callback)
    -

    DESCRIPTION

    -

    Print the effective node_modules folder to standard out.

    -

    'args' is never used and callback is never called with data. -'args' must be present or things will break.

    -

    This function is not useful programmatically.

    - diff --git a/deps/npm/html/partial/doc/api/npm-run-script.html b/deps/npm/html/partial/doc/api/npm-run-script.html deleted file mode 100644 index 7cc42b601adb..000000000000 --- a/deps/npm/html/partial/doc/api/npm-run-script.html +++ /dev/null @@ -1,21 +0,0 @@ -

    npm-run-script

    Run arbitrary package scripts

    -

    SYNOPSIS

    -
    npm.commands.run-script(args, callback)
    -

    DESCRIPTION

    -

    This runs an arbitrary command from a package's "scripts" object.

    -

    It is used by the test, start, restart, and stop commands, but can be -called directly, as well.

    -

    The 'args' parameter is an array of strings. Behavior depends on the number -of elements. If there is only one element, npm assumes that the element -represents a command to be run on the local repository. If there is more than -one element, then the first is assumed to be the package and the second is -assumed to be the command to run. All other elements are ignored.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/api/npm-search.html b/deps/npm/html/partial/doc/api/npm-search.html deleted file mode 100644 index 13cceb3d3216..000000000000 --- a/deps/npm/html/partial/doc/api/npm-search.html +++ /dev/null @@ -1,33 +0,0 @@ -

    npm-search

    Search for packages

    -

    SYNOPSIS

    -
    npm.commands.search(searchTerms, [silent,] [staleness,] callback)
    -

    DESCRIPTION

    -

    Search the registry for packages matching the search terms. The available parameters are:

    -
      -
    • searchTerms: -Array of search terms. These terms are case-insensitive.
    • -
    • silent: -If true, npm will not log anything to the console.
    • -
    • staleness: -This is the threshold for stale packages. "Fresh" packages are not refreshed -from the registry. This value is measured in seconds.
    • -
    • callback: -Returns an object where each key is the name of a package, and the value -is information about that package along with a 'words' property, which is -a space-delimited string of all of the interesting words in that package. -The only properties included are those that are searched, which generally include:

      -
        -
      • name
      • -
      • description
      • -
      • maintainers
      • -
      • url
      • -
      • keywords
      • -
      -
    • -
    -

    A search on the registry excludes any result that does not match all of the -search terms. It also removes any items from the results that contain an -excluded term (the "searchexclude" config). The search is case insensitive -and doesn't try to read your mind (it doesn't do any verb tense matching or the -like).

    - diff --git a/deps/npm/html/partial/doc/api/npm-shrinkwrap.html b/deps/npm/html/partial/doc/api/npm-shrinkwrap.html deleted file mode 100644 index b5f33599989c..000000000000 --- a/deps/npm/html/partial/doc/api/npm-shrinkwrap.html +++ /dev/null @@ -1,13 +0,0 @@ -

    npm-shrinkwrap

    programmatically generate package shrinkwrap file

    -

    SYNOPSIS

    -
    npm.commands.shrinkwrap(args, [silent,] callback)
    -

    DESCRIPTION

    -

    This acts much the same ways as shrinkwrapping on the command-line.

    -

    This command does not take any arguments, but 'args' must be defined. -Beyond that, if any arguments are passed in, npm will politely warn that it -does not take positional arguments.

    -

    If the 'silent' parameter is set to true, nothing will be output to the screen, -but the shrinkwrap file will still be written.

    -

    Finally, 'callback' is a function that will be called when the shrinkwrap has -been saved.

    - diff --git a/deps/npm/html/partial/doc/api/npm-start.html b/deps/npm/html/partial/doc/api/npm-start.html deleted file mode 100644 index 98bd41f6b24d..000000000000 --- a/deps/npm/html/partial/doc/api/npm-start.html +++ /dev/null @@ -1,8 +0,0 @@ -

    npm-start

    Start a package

    -

    SYNOPSIS

    -
    npm.commands.start(packages, callback)
    -

    DESCRIPTION

    -

    This runs a package's "start" script, if one was provided.

    -

    npm can start multiple packages. Just specify multiple packages in the -packages parameter.

    - diff --git a/deps/npm/html/partial/doc/api/npm-stop.html b/deps/npm/html/partial/doc/api/npm-stop.html deleted file mode 100644 index 5b58289ed840..000000000000 --- a/deps/npm/html/partial/doc/api/npm-stop.html +++ /dev/null @@ -1,8 +0,0 @@ -

    npm-stop

    Stop a package

    -

    SYNOPSIS

    -
    npm.commands.stop(packages, callback)
    -

    DESCRIPTION

    -

    This runs a package's "stop" script, if one was provided.

    -

    npm can run stop on multiple packages. Just specify multiple packages -in the packages parameter.

    - diff --git a/deps/npm/html/partial/doc/api/npm-tag.html b/deps/npm/html/partial/doc/api/npm-tag.html deleted file mode 100644 index 227c91b46ca3..000000000000 --- a/deps/npm/html/partial/doc/api/npm-tag.html +++ /dev/null @@ -1,16 +0,0 @@ -

    npm-tag

    Tag a published version

    -

    SYNOPSIS

    -
    npm.commands.tag(package@version, tag, callback)
    -

    DESCRIPTION

    -

    Tags the specified version of the package with the specified tag, or the ---tag config if not specified.

    -

    The 'package@version' is an array of strings, but only the first two elements are -currently used.

    -

    The first element must be in the form package@version, where package -is the package name and version is the version number (much like installing a -specific version).

    -

    The second element is the name of the tag to tag this version with. If this -parameter is missing or falsey (empty), the default from the config will be -used. For more information about how to set this config, check -man 3 npm-config for programmatic usage or man npm-config for cli usage.

    - diff --git a/deps/npm/html/partial/doc/api/npm-test.html b/deps/npm/html/partial/doc/api/npm-test.html deleted file mode 100644 index 9c35bdcfdb80..000000000000 --- a/deps/npm/html/partial/doc/api/npm-test.html +++ /dev/null @@ -1,10 +0,0 @@ -

    npm-test

    Test a package

    -

    SYNOPSIS

    -
      npm.commands.test(packages, callback)
    -

    DESCRIPTION

    -

    This runs a package's "test" script, if one was provided.

    -

    To run tests as a condition of installation, set the npat config to -true.

    -

    npm can run tests on multiple packages. Just specify multiple packages -in the packages parameter.

    - diff --git a/deps/npm/html/partial/doc/api/npm-uninstall.html b/deps/npm/html/partial/doc/api/npm-uninstall.html deleted file mode 100644 index 62369e4c7c66..000000000000 --- a/deps/npm/html/partial/doc/api/npm-uninstall.html +++ /dev/null @@ -1,10 +0,0 @@ -

    npm-uninstall

    uninstall a package programmatically

    -

    SYNOPSIS

    -
    npm.commands.uninstall(packages, callback)
    -

    DESCRIPTION

    -

    This acts much the same ways as uninstalling on the command-line.

    -

    The 'packages' parameter is an array of strings. Each element in the array is -the name of a package to be uninstalled.

    -

    Finally, 'callback' is a function that will be called when all packages have been -uninstalled or when an error has been encountered.

    - diff --git a/deps/npm/html/partial/doc/api/npm-unpublish.html b/deps/npm/html/partial/doc/api/npm-unpublish.html deleted file mode 100644 index ed9948cd8497..000000000000 --- a/deps/npm/html/partial/doc/api/npm-unpublish.html +++ /dev/null @@ -1,13 +0,0 @@ -

    npm-unpublish

    Remove a package from the registry

    -

    SYNOPSIS

    -
    npm.commands.unpublish(package, callback)
    -

    DESCRIPTION

    -

    This removes a package version from the registry, deleting its -entry and removing the tarball.

    -

    The package parameter must be defined.

    -

    Only the first element in the package parameter is used. If there is no first -element, then npm assumes that the package at the current working directory -is what is meant.

    -

    If no version is specified, or if all versions are removed then -the root package entry is removed from the registry entirely.

    - diff --git a/deps/npm/html/partial/doc/api/npm-update.html b/deps/npm/html/partial/doc/api/npm-update.html deleted file mode 100644 index 5d48bc0d8ec8..000000000000 --- a/deps/npm/html/partial/doc/api/npm-update.html +++ /dev/null @@ -1,13 +0,0 @@ -

    npm-update

    Update a package

    -

    SYNOPSIS

    -
    npm.commands.update(packages, callback)
    -

    DESCRIPTION

    -

    Updates a package, upgrading it to the latest version. It also installs any -missing packages.

    -

    The packages argument is an array of packages to update. The callback -parameter will be called when done or when an error occurs.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/api/npm-version.html b/deps/npm/html/partial/doc/api/npm-version.html deleted file mode 100644 index c2b8d5eb8b91..000000000000 --- a/deps/npm/html/partial/doc/api/npm-version.html +++ /dev/null @@ -1,12 +0,0 @@ -

    npm-version

    Bump a package version

    -

    SYNOPSIS

    -
    npm.commands.version(newversion, callback)
    -

    DESCRIPTION

    -

    Run this in a package directory to bump the version and write the new -data back to the package.json file.

    -

    If run in a git repo, it will also create a version commit and tag, and -fail if the repo is not clean.

    -

    Like all other commands, this function takes a string array as its first -parameter. The difference, however, is this function will fail if it does -not have exactly one element. The only element should be a version number.

    - diff --git a/deps/npm/html/partial/doc/api/npm-view.html b/deps/npm/html/partial/doc/api/npm-view.html deleted file mode 100644 index 4f5acf624394..000000000000 --- a/deps/npm/html/partial/doc/api/npm-view.html +++ /dev/null @@ -1,61 +0,0 @@ -

    npm-view

    View registry info

    -

    SYNOPSIS

    -
    npm.commands.view(args, [silent,] callback)
    -

    DESCRIPTION

    -

    This command shows data about a package and prints it to the stream -referenced by the outfd config, which defaults to stdout.

    -

    The "args" parameter is an ordered list that closely resembles the command-line -usage. The elements should be ordered such that the first element is -the package and version (package@version). The version is optional. After that, -the rest of the parameters are fields with optional subfields ("field.subfield") -which can be used to get only the information desired from the registry.

    -

    The callback will be passed all of the data returned by the query.

    -

    For example, to get the package registry entry for the connect package, -you can do this:

    -
    npm.commands.view(["connect"], callback)
    -

    If no version is specified, "latest" is assumed.

    -

    Field names can be specified after the package descriptor. -For example, to show the dependencies of the ronn package at version -0.3.5, you could do the following:

    -
    npm.commands.view(["ronn@0.3.5", "dependencies"], callback)
    -

    You can view child field by separating them with a period. -To view the git repository URL for the latest version of npm, you could -do this:

    -
    npm.commands.view(["npm", "repository.url"], callback)
    -

    For fields that are arrays, requesting a non-numeric field will return -all of the values from the objects in the list. For example, to get all -the contributor names for the "express" project, you can do this:

    -
    npm.commands.view(["express", "contributors.email"], callback)
    -

    You may also use numeric indices in square braces to specifically select -an item in an array field. To just get the email address of the first -contributor in the list, you can do this:

    -
    npm.commands.view(["express", "contributors[0].email"], callback)
    -

    Multiple fields may be specified, and will be printed one after another. -For exampls, to get all the contributor names and email addresses, you -can do this:

    -
    npm.commands.view(["express", "contributors.name", "contributors.email"], callback)
    -

    "Person" fields are shown as a string if they would be shown as an -object. So, for example, this will show the list of npm contributors in -the shortened string format. (See npm help json for more on this.)

    -
    npm.commands.view(["npm", "contributors"], callback)
    -

    If a version range is provided, then data will be printed for every -matching version of the package. This will show which version of jsdom -was required by each matching version of yui3:

    -
    npm.commands.view(["yui3@'>0.5.4'", "dependencies.jsdom"], callback)
    -

    OUTPUT

    -

    If only a single string field for a single version is output, then it -will not be colorized or quoted, so as to enable piping the output to -another command.

    -

    If the version range matches multiple versions, than each printed value -will be prefixed with the version it applies to.

    -

    If multiple fields are requested, than each of them are prefixed with -the field name.

    -

    Console output can be disabled by setting the 'silent' parameter to true.

    -

    RETURN VALUE

    -

    The data returned will be an object in this formation:

    -
    { <version>:
    -  { <field>: <value>
    -  , ... }
    -, ... }
    -

    corresponding to the list of fields selected.

    - diff --git a/deps/npm/html/partial/doc/api/npm-whoami.html b/deps/npm/html/partial/doc/api/npm-whoami.html deleted file mode 100644 index 3428a9e76777..000000000000 --- a/deps/npm/html/partial/doc/api/npm-whoami.html +++ /dev/null @@ -1,9 +0,0 @@ -

    npm-whoami

    Display npm username

    -

    SYNOPSIS

    -
    npm.commands.whoami(args, callback)
    -

    DESCRIPTION

    -

    Print the username config to standard output.

    -

    'args' is never used and callback is never called with data. -'args' must be present or things will break.

    -

    This function is not useful programmatically

    - diff --git a/deps/npm/html/partial/doc/api/npm.html b/deps/npm/html/partial/doc/api/npm.html deleted file mode 100644 index 330af55335ca..000000000000 --- a/deps/npm/html/partial/doc/api/npm.html +++ /dev/null @@ -1,89 +0,0 @@ -

    npm

    javascript package manager

    -

    SYNOPSIS

    -
    var npm = require("npm")
    -npm.load([configObject, ]function (er, npm) {
    -  // use the npm object, now that it's loaded.
    -
    -  npm.config.set(key, val)
    -  val = npm.config.get(key)
    -
    -  console.log("prefix = %s", npm.prefix)
    -
    -  npm.commands.install(["package"], cb)
    -})
    -

    VERSION

    -

    2.13.4

    -

    DESCRIPTION

    -

    This is the API documentation for npm. -To find documentation of the command line -client, see npm(1).

    -

    Prior to using npm's commands, npm.load() must be called. If you provide -configObject as an object map of top-level configs, they override the values -stored in the various config locations. In the npm command line client, this -set of configs is parsed from the command line options. Additional -configuration params are loaded from two configuration files. See -npm-config(1), npm-config(7), and npmrc(5) for more information.

    -

    After that, each of the functions are accessible in the -commands object: npm.commands.<cmd>. See npm-index(7) for a list of -all possible commands.

    -

    All commands on the command object take an array of positional argument -strings. The last argument to any function is a callback. Some -commands take other optional arguments.

    -

    Configs cannot currently be set on a per function basis, as each call to -npm.config.set will change the value for all npm commands in that process.

    -

    To find API documentation for a specific command, run the npm apihelp -command.

    -

    METHODS AND PROPERTIES

    -
      -
    • npm.load(configs, cb)

      -

      Load the configuration params, and call the cb function once the - globalconfig and userconfig files have been loaded as well, or on - nextTick if they've already been loaded.

      -
    • -
    • npm.config

      -

      An object for accessing npm configuration parameters.

      -
        -
      • npm.config.get(key)
      • -
      • npm.config.set(key, val)
      • -
      • npm.config.del(key)
      • -
      -
    • -
    • npm.dir or npm.root

      -

      The node_modules directory where npm will operate.

      -
    • -
    • npm.prefix

      -

      The prefix where npm is operating. (Most often the current working - directory.)

      -
    • -
    • npm.cache

      -

      The place where npm keeps JSON and tarballs it fetches from the - registry (or uploads to the registry).

      -
    • -
    • npm.tmp

      -

      npm's temporary working directory.

      -
    • -
    • npm.deref

      -

      Get the "real" name for a command that has either an alias or - abbreviation.

      -
    • -
    -

    MAGIC

    -

    For each of the methods in the npm.commands object, a method is added to the -npm object, which takes a set of positional string arguments rather than an -array and a callback.

    -

    If the last argument is a callback, then it will use the supplied -callback. However, if no callback is provided, then it will print out -the error or results.

    -

    For example, this would work in a node repl:

    -
    > npm = require("npm")
    -> npm.load()  // wait a sec...
    -> npm.install("dnode", "express")
    -

    Note that that won't work in a node program, since the install -method will get called before the configuration load is completed.

    -

    ABBREVS

    -

    In order to support npm ins foo instead of npm install foo, the -npm.commands object has a set of abbreviations as well as the full -method names. Use the npm.deref method to find the real name.

    -

    For example:

    -
    var cmd = npm.deref("unp") // cmd === "unpublish"
    -
    diff --git a/deps/npm/html/partial/doc/cli/npm-access.html b/deps/npm/html/partial/doc/cli/npm-access.html deleted file mode 100644 index 9d84e6db958e..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-access.html +++ /dev/null @@ -1,55 +0,0 @@ -

    npm-access

    Set access level on published packages

    -

    SYNOPSIS

    -
    npm access public [<package>]
    -npm access restricted [<package>]
    -
    -npm access add <read-only|read-write> <entity> [<package>]
    -npm access rm <entity> [<package>]
    -
    -npm access ls [<package>]
    -npm access edit [<package>]
    -

    DESCRIPTION

    -

    Used to set access controls on private packages.

    -

    For all of the subcommands, npm access will perform actions on the packages -in the current working directory if no package name is passed to the -subcommand.

    -
      -
    • public / restricted: -Set a package to be either publicly accessible or restricted.

      -
    • -
    • add / rm: -Add or remove the ability of users and teams to have read-only or read-write -access to a package.

      -
    • -
    • ls: -Show all of the access privileges for a package. Will only show permissions -for packages to which you have at least read access.

      -
    • -
    • edit: -Set the access privileges for a package at once using $EDITOR.

      -
    • -
    -

    DETAILS

    -

    npm access always operates directly on the current registry, configurable -from the command line using --registry=<registry url>.

    -

    Unscoped packages are always public.

    -

    Scoped packages default to restricted, but you can either publish them as -public using npm publish --access=public, or set their access as public using -npm access public after the initial publish.

    -

    You must have privileges to set the access of a package:

    -
      -
    • You are an owner of an unscoped or scoped package.
    • -
    • You are a member of the team that owns a scope.
    • -
    • You have been given read-write privileges for a package, either as a member -of a team or directly as an owner.
    • -
    -

    If your account is not paid, then attempts to publish scoped packages will fail -with an HTTP 402 status code (logically enough), unless you use ---access=public.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-adduser.html b/deps/npm/html/partial/doc/cli/npm-adduser.html deleted file mode 100644 index ce2c5dcce6f3..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-adduser.html +++ /dev/null @@ -1,48 +0,0 @@ -

    npm-adduser

    Add a registry user account

    -

    SYNOPSIS

    -
    npm adduser [--registry=url] [--scope=@orgname] [--always-auth]
    -

    DESCRIPTION

    -

    Create or verify a user named <username> in the specified registry, and -save the credentials to the .npmrc file. If no registry is specified, -the default registry will be used (see npm-config(7)).

    -

    The username, password, and email are read in from prompts.

    -

    To reset your password, go to https://www.npmjs.com/forgot

    -

    To change your email address, go to https://www.npmjs.com/email-edit

    -

    You may use this command multiple times with the same user account to -authorize on a new machine. When authenticating on a new machine, -the username, password and email address must all match with -your existing record.

    -

    npm login is an alias to adduser and behaves exactly the same way.

    -

    CONFIGURATION

    -

    registry

    -

    Default: http://registry.npmjs.org/

    -

    The base URL of the npm package registry. If scope is also specified, -this registry will only be used for packages with that scope. See npm-scope(7).

    -

    scope

    -

    Default: none

    -

    If specified, the user and login credentials given will be associated -with the specified scope. See npm-scope(7). You can use both at the same time, -e.g.

    -
    npm adduser --registry=http://myregistry.example.com --scope=@myco
    -

    This will set a registry for the given scope and login or create a user for -that registry at the same time.

    -

    always-auth

    -

    Default: false

    -

    If specified, save configuration indicating that all requests to the given -registry should include authorization information. Useful for private -registries. Can be used with --registry and / or --scope, e.g.

    -
    npm adduser --registry=http://private-registry.example.com --always-auth
    -

    This will ensure that all requests to that registry (including for tarballs) -include an authorization header. See always-auth in npm-config(7) for more -details on always-auth. Registry-specific configuration of always-auth takes -precedence over any global configuration.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-bin.html b/deps/npm/html/partial/doc/cli/npm-bin.html deleted file mode 100644 index 1485681b5f67..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-bin.html +++ /dev/null @@ -1,15 +0,0 @@ -

    npm-bin

    Display npm bin folder

    -

    SYNOPSIS

    -
    npm bin
    -

    DESCRIPTION

    -

    Print the folder where npm will install executables.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-bugs.html b/deps/npm/html/partial/doc/cli/npm-bugs.html deleted file mode 100644 index d40152e38840..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-bugs.html +++ /dev/null @@ -1,34 +0,0 @@ -

    npm-bugs

    Bugs for a package in a web browser maybe

    -

    SYNOPSIS

    -
    npm bugs <pkgname>
    -npm bugs (with no args in a package dir)
    -

    DESCRIPTION

    -

    This command tries to guess at the likely location of a package's -bug tracker URL, and then tries to open it using the --browser -config param. If no package name is provided, it will search for -a package.json in the current folder and use the name property.

    -

    CONFIGURATION

    -

    browser

    -
      -
    • Default: OS X: "open", Windows: "start", Others: "xdg-open"
    • -
    • Type: String
    • -
    -

    The browser that is called by the npm bugs command to open websites.

    -

    registry

    - -

    The base URL of the npm package registry.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-build.html b/deps/npm/html/partial/doc/cli/npm-build.html deleted file mode 100644 index 11ba89b11f8c..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-build.html +++ /dev/null @@ -1,20 +0,0 @@ -

    npm-build

    Build a package

    -

    SYNOPSIS

    -
    npm build <package-folder>
    -
      -
    • <package-folder>: -A folder containing a package.json file in its root.
    • -
    -

    DESCRIPTION

    -

    This is the plumbing command called by npm link and npm install.

    -

    It should generally be called during installation, but if you need to run it -directly, run:

    -
    npm run-script build
    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-bundle.html b/deps/npm/html/partial/doc/cli/npm-bundle.html deleted file mode 100644 index 38bbdd83e38d..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-bundle.html +++ /dev/null @@ -1,11 +0,0 @@ -

    npm-bundle

    REMOVED

    -

    DESCRIPTION

    -

    The npm bundle command has been removed in 1.0, for the simple reason -that it is no longer necessary, as the default behavior is now to -install packages into the local space.

    -

    Just use npm install now to do what npm bundle used to do.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-cache.html b/deps/npm/html/partial/doc/cli/npm-cache.html deleted file mode 100644 index f1a3b1896439..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-cache.html +++ /dev/null @@ -1,61 +0,0 @@ -

    npm-cache

    Manipulates packages cache

    -

    SYNOPSIS

    -
    npm cache add <tarball file>
    -npm cache add <folder>
    -npm cache add <tarball url>
    -npm cache add <name>@<version>
    -
    -npm cache ls [<path>]
    -
    -npm cache clean [<path>]
    -

    DESCRIPTION

    -

    Used to add, list, or clear the npm cache folder.

    -
      -
    • add: -Add the specified package to the local cache. This command is primarily -intended to be used internally by npm, but it can provide a way to -add data to the local installation cache explicitly.

      -
    • -
    • ls: -Show the data in the cache. Argument is a path to show in the cache -folder. Works a bit like the find program, but limited by the -depth config.

      -
    • -
    • clean: -Delete data out of the cache folder. If an argument is provided, then -it specifies a subpath to delete. If no argument is provided, then -the entire cache is cleared.

      -
    • -
    -

    DETAILS

    -

    npm stores cache data in the directory specified in npm config get cache. -For each package that is added to the cache, three pieces of information are -stored in {cache}/{name}/{version}:

    -
      -
    • .../package/package.json: -The package.json file, as npm sees it.
    • -
    • .../package.tgz: -The tarball for that version.
    • -
    -

    Additionally, whenever a registry request is made, a .cache.json file -is placed at the corresponding URI, to store the ETag and the requested -data. This is stored in {cache}/{hostname}/{path}/.cache.json.

    -

    Commands that make non-essential registry requests (such as search and -view, or the completion scripts) generally specify a minimum timeout. -If the .cache.json file is younger than the specified timeout, then -they do not make an HTTP request to the registry.

    -

    CONFIGURATION

    -

    cache

    -

    Default: ~/.npm on Posix, or %AppData%/npm-cache on Windows.

    -

    The root cache folder.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-completion.html b/deps/npm/html/partial/doc/cli/npm-completion.html deleted file mode 100644 index 1c9879337a54..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-completion.html +++ /dev/null @@ -1,22 +0,0 @@ -

    npm-completion

    Tab Completion for npm

    -

    SYNOPSIS

    -
    . <(npm completion)
    -

    DESCRIPTION

    -

    Enables tab-completion in all npm commands.

    -

    The synopsis above -loads the completions into your current shell. Adding it to -your ~/.bashrc or ~/.zshrc will make the completions available -everywhere.

    -

    You may of course also pipe the output of npm completion to a file -such as /usr/local/etc/bash_completion.d/npm if you have a system -that will read that file for you.

    -

    When COMP_CWORD, COMP_LINE, and COMP_POINT are defined in the -environment, npm completion acts in "plumbing mode", and outputs -completions based on the arguments.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-config.html b/deps/npm/html/partial/doc/cli/npm-config.html deleted file mode 100644 index 3fee266c1c0e..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-config.html +++ /dev/null @@ -1,46 +0,0 @@ -

    npm-config

    Manage the npm configuration files

    -

    SYNOPSIS

    -
    npm config set <key> <value> [--global]
    -npm config get <key>
    -npm config delete <key>
    -npm config list
    -npm config edit
    -npm c [set|get|delete|list]
    -npm get <key>
    -npm set <key> <value> [--global]
    -

    DESCRIPTION

    -

    npm gets its config settings from the command line, environment -variables, npmrc files, and in some cases, the package.json file.

    -

    See npmrc(5) for more information about the npmrc files.

    -

    See npm-config(7) for a more thorough discussion of the mechanisms -involved.

    -

    The npm config command can be used to update and edit the contents -of the user and global npmrc files.

    -

    Sub-commands

    -

    Config supports the following sub-commands:

    -

    set

    -
    npm config set key value
    -

    Sets the config key to the value.

    -

    If value is omitted, then it sets it to "true".

    -

    get

    -
    npm config get key
    -

    Echo the config value to stdout.

    -

    list

    -
    npm config list
    -

    Show all the config settings.

    -

    delete

    -
    npm config delete key
    -

    Deletes the key from all configuration files.

    -

    edit

    -
    npm config edit
    -

    Opens the config file in an editor. Use the --global flag to edit the -global config.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-dedupe.html b/deps/npm/html/partial/doc/cli/npm-dedupe.html deleted file mode 100644 index 56a37c32db00..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-dedupe.html +++ /dev/null @@ -1,43 +0,0 @@ -

    npm-dedupe

    Reduce duplication

    -

    SYNOPSIS

    -
    npm dedupe [package names...]
    -npm ddp [package names...]
    -

    DESCRIPTION

    -

    Searches the local package tree and attempts to simplify the overall -structure by moving dependencies further up the tree, where they can -be more effectively shared by multiple dependent packages.

    -

    For example, consider this dependency graph:

    -
    a
    -+-- b <-- depends on c@1.0.x
    -|   `-- c@1.0.3
    -`-- d <-- depends on c@~1.0.9
    -    `-- c@1.0.10
    -

    In this case, npm-dedupe(1) will transform the tree to:

    -
    a
    -+-- b
    -+-- d
    -`-- c@1.0.10
    -

    Because of the hierarchical nature of node's module lookup, b and d -will both get their dependency met by the single c package at the root -level of the tree.

    -

    If a suitable version exists at the target location in the tree -already, then it will be left untouched, but the other duplicates will -be deleted.

    -

    If no suitable version can be found, then a warning is printed, and -nothing is done.

    -

    If any arguments are supplied, then they are filters, and only the -named packages will be touched.

    -

    Note that this operation transforms the dependency tree, and may -result in packages getting updated versions, perhaps from the npm -registry.

    -

    This feature is experimental, and may change in future versions.

    -

    The --tag argument will apply to all of the affected dependencies. If a -tag with the given name exists, the tagged version is preferred over newer -versions.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-deprecate.html b/deps/npm/html/partial/doc/cli/npm-deprecate.html deleted file mode 100644 index 0657facd8ef6..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-deprecate.html +++ /dev/null @@ -1,18 +0,0 @@ -

    npm-deprecate

    Deprecate a version of a package

    -

    SYNOPSIS

    -
    npm deprecate <name>[@<version>] <message>
    -

    DESCRIPTION

    -

    This command will update the npm registry entry for a package, providing -a deprecation warning to all who attempt to install it.

    -

    It works on version ranges as well as specific versions, so you can do -something like this:

    -
    npm deprecate my-thing@"< 0.2.3" "critical bug fixed in v0.2.3"
    -

    Note that you must be the package owner to deprecate something. See the -owner and adduser help topics.

    -

    To un-deprecate a package, specify an empty string ("") for the message argument.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-dist-tag.html b/deps/npm/html/partial/doc/cli/npm-dist-tag.html deleted file mode 100644 index e99e059aee43..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-dist-tag.html +++ /dev/null @@ -1,57 +0,0 @@ -

    npm-dist-tag

    Modify package distribution tags

    -

    SYNOPSIS

    -
    npm dist-tag add <pkg>@<version> [<tag>]
    -npm dist-tag rm <pkg> <tag>
    -npm dist-tag ls [<pkg>]
    -

    DESCRIPTION

    -

    Add, remove, and enumerate distribution tags on a package:

    -
      -
    • add: -Tags the specified version of the package with the specified tag, or the ---tag config if not specified.

      -
    • -
    • rm: -Clear a tag that is no longer in use from the package.

      -
    • -
    • ls: -Show all of the dist-tags for a package, defaulting to the package in -the current prefix.

      -
    • -
    -

    A tag can be used when installing packages as a reference to a version instead -of using a specific version number:

    -
    npm install <name>@<tag>
    -

    When installing dependencies, a preferred tagged version may be specified:

    -
    npm install --tag <tag>
    -

    This also applies to npm dedupe.

    -

    Publishing a package sets the "latest" tag to the published version unless the ---tag option is used. For example, npm publish --tag=beta.

    -

    PURPOSE

    -

    Tags can be used to provide an alias instead of version numbers. For -example, npm currently uses the tag "next" to identify the upcoming -version, and the tag "latest" to identify the current version.

    -

    A project might choose to have multiple streams of development, e.g., -"stable", "canary".

    -

    CAVEATS

    -

    This command used to be known as npm tag, which only created new tags, and so -had a different syntax.

    -

    Tags must share a namespace with version numbers, because they are specified in -the same slot: npm install <pkg>@<version> vs npm install <pkg>@<tag>.

    -

    Tags that can be interpreted as valid semver ranges will be rejected. For -example, v1.4 cannot be used as a tag, because it is interpreted by semver as ->=1.4.0 <1.5.0. See https://github.com/npm/npm/issues/6082.

    -

    The simplest way to avoid semver problems with tags is to use tags that do not -begin with a number or the letter v.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-docs.html b/deps/npm/html/partial/doc/cli/npm-docs.html deleted file mode 100644 index 3866ff1a0a40..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-docs.html +++ /dev/null @@ -1,36 +0,0 @@ -

    npm-docs

    Docs for a package in a web browser maybe

    -

    SYNOPSIS

    -
    npm docs [<pkgname> [<pkgname> ...]]
    -npm docs (with no args in a package dir)
    -npm home [<pkgname> [<pkgname> ...]]
    -npm home (with no args in a package dir)
    -

    DESCRIPTION

    -

    This command tries to guess at the likely location of a package's -documentation URL, and then tries to open it using the --browser -config param. You can pass multiple package names at once. If no -package name is provided, it will search for a package.json in -the current folder and use the name property.

    -

    CONFIGURATION

    -

    browser

    -
      -
    • Default: OS X: "open", Windows: "start", Others: "xdg-open"
    • -
    • Type: String
    • -
    -

    The browser that is called by the npm docs command to open websites.

    -

    registry

    - -

    The base URL of the npm package registry.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-edit.html b/deps/npm/html/partial/doc/cli/npm-edit.html deleted file mode 100644 index 82b75ad7f3c1..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-edit.html +++ /dev/null @@ -1,29 +0,0 @@ -

    npm-edit

    Edit an installed package

    -

    SYNOPSIS

    -
    npm edit <name>[@<version>]
    -

    DESCRIPTION

    -

    Opens the package folder in the default editor (or whatever you've -configured as the npm editor config -- see npm-config(7).)

    -

    After it has been edited, the package is rebuilt so as to pick up any -changes in compiled packages.

    -

    For instance, you can do npm install connect to install connect -into your package, and then npm edit connect to make a few -changes to your locally installed copy.

    -

    CONFIGURATION

    -

    editor

    -
      -
    • Default: EDITOR environment variable if set, or "vi" on Posix, -or "notepad" on Windows.
    • -
    • Type: path
    • -
    -

    The command to run for npm edit or npm config edit.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-explore.html b/deps/npm/html/partial/doc/cli/npm-explore.html deleted file mode 100644 index fe2fbd494cae..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-explore.html +++ /dev/null @@ -1,29 +0,0 @@ -

    npm-explore

    Browse an installed package

    -

    SYNOPSIS

    -
    npm explore <name> [ -- <cmd>]
    -

    DESCRIPTION

    -

    Spawn a subshell in the directory of the installed package specified.

    -

    If a command is specified, then it is run in the subshell, which then -immediately terminates.

    -

    This is particularly handy in the case of git submodules in the -node_modules folder:

    -
    npm explore some-dependency -- git pull origin master
    -

    Note that the package is not automatically rebuilt afterwards, so be -sure to use npm rebuild <pkg> if you make any changes.

    -

    CONFIGURATION

    -

    shell

    -
      -
    • Default: SHELL environment variable, or "bash" on Posix, or "cmd" on -Windows
    • -
    • Type: path
    • -
    -

    The shell to run for the npm explore command.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-help-search.html b/deps/npm/html/partial/doc/cli/npm-help-search.html deleted file mode 100644 index afd8fb473137..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-help-search.html +++ /dev/null @@ -1,26 +0,0 @@ -

    npm-help-search

    Search npm help documentation

    -

    SYNOPSIS

    -
    npm help-search some search terms
    -

    DESCRIPTION

    -

    This command will search the npm markdown documentation files for the -terms provided, and then list the results, sorted by relevance.

    -

    If only one result is found, then it will show that help topic.

    -

    If the argument to npm help is not a known help topic, then it will -call help-search. It is rarely if ever necessary to call this -command directly.

    -

    CONFIGURATION

    -

    long

    -
      -
    • Type: Boolean
    • -
    • Default false
    • -
    -

    If true, the "long" flag will cause help-search to output context around -where the terms were found in the documentation.

    -

    If false, then help-search will just list out the help topics found.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-help.html b/deps/npm/html/partial/doc/cli/npm-help.html deleted file mode 100644 index 4217b8447c50..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-help.html +++ /dev/null @@ -1,32 +0,0 @@ -

    npm-help

    Get help on npm

    -

    SYNOPSIS

    -
    npm help <topic>
    -npm help some search terms
    -

    DESCRIPTION

    -

    If supplied a topic, then show the appropriate documentation page.

    -

    If the topic does not exist, or if multiple terms are provided, then run -the help-search command to find a match. Note that, if help-search -finds a single subject, then it will run help on that topic, so unique -matches are equivalent to specifying a topic name.

    -

    CONFIGURATION

    -

    viewer

    -
      -
    • Default: "man" on Posix, "browser" on Windows
    • -
    • Type: path
    • -
    -

    The program to use to view help content.

    -

    Set to "browser" to view html help content in the default web browser.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-init.html b/deps/npm/html/partial/doc/cli/npm-init.html deleted file mode 100644 index ff363fab1a69..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-init.html +++ /dev/null @@ -1,28 +0,0 @@ -

    npm-init

    Interactively create a package.json file

    -

    SYNOPSIS

    -
    npm init [-f|--force|-y|--yes]
    -

    DESCRIPTION

    -

    This will ask you a bunch of questions, and then write a package.json for you.

    -

    It attempts to make reasonable guesses about what you want things to be set to, -and then writes a package.json file with the options you've selected.

    -

    If you already have a package.json file, it'll read that first, and default to -the options in there.

    -

    It is strictly additive, so it does not delete options from your package.json -without a really good reason to do so.

    -

    If you invoke it with -f, --force, -y, or --yes, it will use only -defaults and not prompt you for any options.

    -

    CONFIGURATION

    -

    scope

    -
      -
    • Default: none
    • -
    • Type: String
    • -
    -

    The scope under which the new module should be created.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-install.html b/deps/npm/html/partial/doc/cli/npm-install.html deleted file mode 100644 index 98dadcc9135b..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-install.html +++ /dev/null @@ -1,257 +0,0 @@ -

    npm-install

    Install a package

    -

    SYNOPSIS

    -
    npm install (with no args in a package dir)
    -npm install <tarball file>
    -npm install <tarball url>
    -npm install <folder>
    -npm install [@<scope>/]<name> [--save|--save-dev|--save-optional] [--save-exact]
    -npm install [@<scope>/]<name>@<tag>
    -npm install [@<scope>/]<name>@<version>
    -npm install [@<scope>/]<name>@<version range>
    -npm i (with any of the previous argument usage)
    -

    DESCRIPTION

    -

    This command installs a package, and any packages that it depends on. If the -package has a shrinkwrap file, the installation of dependencies will be driven -by that. See npm-shrinkwrap(1).

    -

    A package is:

    -
      -
    • a) a folder containing a program described by a package.json file
    • -
    • b) a gzipped tarball containing (a)
    • -
    • c) a url that resolves to (b)
    • -
    • d) a <name>@<version> that is published on the registry (see npm-registry(7)) with (c)
    • -
    • e) a <name>@<tag> that points to (d)
    • -
    • f) a <name> that has a "latest" tag satisfying (e)
    • -
    • g) a <git remote url> that resolves to (b)
    • -
    -

    Even if you never publish your package, you can still get a lot of -benefits of using npm if you just want to write a node program (a), and -perhaps if you also want to be able to easily install it elsewhere -after packing it up into a tarball (b).

    -
      -
    • npm install (in package directory, no arguments):

      -

      Install the dependencies in the local node_modules folder.

      -

      In global mode (ie, with -g or --global appended to the command), - it installs the current package context (ie, the current working - directory) as a global package.

      -

      By default, npm install will install all modules listed as dependencies. - With the --production flag (or when the NODE_ENV environment variable - is set to production), npm will not install modules listed in - devDependencies.

      -
    • -
    • npm install <folder>:

      -

      Install a package that is sitting in a folder on the filesystem.

      -
    • -
    • npm install <tarball file>:

      -

      Install a package that is sitting on the filesystem. Note: if you just want - to link a dev directory into your npm root, you can do this more easily by - using npm link.

      -

      Example:

      -
          npm install ./package.tgz
      -
    • -
    • npm install <tarball url>:

      -

      Fetch the tarball url, and then install it. In order to distinguish between - this and other options, the argument must start with "http://" or "https://"

      -

      Example:

      -
          npm install https://github.com/indexzero/forever/tarball/v0.5.6
      -
    • -
    • npm install [@<scope>/]<name> [--save|--save-dev|--save-optional]:

      -

      Do a <name>@<tag> install, where <tag> is the "tag" config. (See - npm-config(7).)

      -

      In most cases, this will install the latest version - of the module published on npm.

      -

      Example:

      -
          npm install sax
      -

      npm install takes 3 exclusive, optional flags which save or update - the package version in your main package.json:

      -
        -
      • --save: Package will appear in your dependencies.

        -
      • -
      • --save-dev: Package will appear in your devDependencies.

        -
      • -
      • --save-optional: Package will appear in your optionalDependencies.

        -

        When using any of the above options to save dependencies to your -package.json, there is an additional, optional flag:

        -
      • -
      • --save-exact: Saved dependencies will be configured with an -exact version rather than using npm's default semver range -operator.

        -

        <scope> is optional. The package will be downloaded from the registry -associated with the specified scope. If no registry is associated with -the given scope the default registry is assumed. See npm-scope(7).

        -

        Note: if you do not include the @-symbol on your scope name, npm will -interpret this as a GitHub repository instead, see below. Scopes names -must also be followed by a slash.

        -

        Examples:

        -
        npm install sax --save
        -npm install githubname/reponame
        -npm install @myorg/privatepackage
        -npm install node-tap --save-dev
        -npm install dtrace-provider --save-optional
        -npm install readable-stream --save --save-exact
        -
      • -
      -
    • -
    -
    **Note**: If there is a file or folder named `<name>` in the current
    -working directory, then it will try to install that, and only try to
    -fetch the package by name if it is not valid.
    -
      -
    • npm install [@<scope>/]<name>@<tag>:

      -

      Install the version of the package that is referenced by the specified tag. - If the tag does not exist in the registry data for that package, then this - will fail.

      -

      Example:

      -
          npm install sax@latest
      -    npm install @myorg/mypackage@latest
      -
    • -
    • npm install [@<scope>/]<name>@<version>:

      -

      Install the specified version of the package. This will fail if the - version has not been published to the registry.

      -

      Example:

      -
          npm install sax@0.1.1
      -    npm install @myorg/privatepackage@1.5.0
      -
    • -
    • npm install [@<scope>/]<name>@<version range>:

      -

      Install a version of the package matching the specified version range. This - will follow the same rules for resolving dependencies described in package.json(5).

      -

      Note that most version ranges must be put in quotes so that your shell will - treat it as a single argument.

      -

      Example:

      -
          npm install sax@">=0.1.0 <0.2.0"
      -    npm install @myorg/privatepackage@">=0.1.0 <0.2.0"
      -
    • -
    • npm install <git remote url>:

      -

      Install a package by cloning a git remote url. The format of the git - url is:

      -
          <protocol>://[<user>[:<password>]@]<hostname>[:<port>][:/]<path>[#<commit-ish>]
      -

      <protocol> is one of git, git+ssh, git+http, or - git+https. If no <commit-ish> is specified, then master is - used.

      -

      The following git environment variables are recognized by npm and will be added - to the environment when running git:

      -
        -
      • GIT_ASKPASS
      • -
      • GIT_PROXY_COMMAND
      • -
      • GIT_SSH
      • -
      • GIT_SSH_COMMAND
      • -
      • GIT_SSL_CAINFO
      • -
      • GIT_SSL_NO_VERIFY

        -

        See the git man page for details.

        -

        Examples:

        -
        npm install git+ssh://git@github.com:npm/npm.git#v1.0.27
        -npm install git+https://isaacs@github.com/npm/npm.git
        -npm install git://github.com/npm/npm.git#v1.0.27
        -GIT_SSH_COMMAND='ssh -i ~/.ssh/custom_ident' npm install git+ssh://git@github.com:npm/npm.git
        -
      • -
      -
    • -
    • npm install <githubname>/<githubrepo>[#<commit-ish>]:

      -
    • -
    • npm install github:<githubname>/<githubrepo>[#<commit-ish>]:

      -

      Install the package at https://github.com/githubname/githubrepo by - attempting to clone it using git.

      -

      If you don't specify a commit-ish then master will be used.

      -

      Examples:

      -
          npm install mygithubuser/myproject
      -    npm install github:mygithubuser/myproject
      -
    • -
    • npm install gist:[<githubname>/]<gistID>[#<commit-ish>]:

      -

      Install the package at https://gist.github.com/gistID by attempting to - clone it using git. The GitHub username associated with the gist is - optional and will not be saved in package.json if --save is used.

      -

      If you don't specify a commit-ish then master will be used.

      -

      Example:

      -
          npm install gist:101a11beef
      -
    • -
    • npm install bitbucket:<bitbucketname>/<bitbucketrepo>[#<commit-ish>]:

      -

      Install the package at https://bitbucket.org/bitbucketname/bitbucketrepo - by attempting to clone it using git.

      -

      If you don't specify a commit-ish then master will be used.

      -

      Example:

      -
          npm install bitbucket:mybitbucketuser/myproject
      -
    • -
    • npm install gitlab:<gitlabname>/<gitlabrepo>[#<commit-ish>]:

      -

      Install the package at https://gitlab.com/gitlabname/gitlabrepo - by attempting to clone it using git.

      -

      If you don't specify a commit-ish then master will be used.

      -

      Example:

      -
          npm install gitlab:mygitlabuser/myproject
      -
    • -
    -

    You may combine multiple arguments, and even multiple types of arguments. -For example:

    -
    npm install sax@">=0.1.0 <0.2.0" bench supervisor
    -

    The --tag argument will apply to all of the specified install targets. If a -tag with the given name exists, the tagged version is preferred over newer -versions.

    -

    The --force argument will force npm to fetch remote resources even if a -local copy exists on disk.

    -
    npm install sax --force
    -

    The --global argument will cause npm to install the package globally -rather than locally. See npm-folders(5).

    -

    The --link argument will cause npm to link global installs into the -local space in some cases.

    -

    The --no-bin-links argument will prevent npm from creating symlinks for -any binaries the package might contain.

    -

    The --no-optional argument will prevent optional dependencies from -being installed.

    -

    The --no-shrinkwrap argument, which will ignore an available -shrinkwrap file and use the package.json instead.

    -

    The --nodedir=/path/to/node/source argument will allow npm to find the -node source code so that npm can compile native modules.

    -

    See npm-config(7). Many of the configuration params have some -effect on installation, since that's most of what npm does.

    -

    ALGORITHM

    -

    To install a package, npm uses the following algorithm:

    -
    install(where, what, family, ancestors)
    -fetch what, unpack to <where>/node_modules/<what>
    -for each dep in what.dependencies
    -  resolve dep to precise version
    -for each dep@version in what.dependencies
    -    not in <where>/node_modules/<what>/node_modules/*
    -    and not in <family>
    -  add precise version deps to <family>
    -  install(<where>/node_modules/<what>, dep, family)
    -

    For this package{dep} structure: A{B,C}, B{C}, C{D}, -this algorithm produces:

    -
    A
    -+-- B
    -`-- C
    -    `-- D
    -

    That is, the dependency from B to C is satisfied by the fact that A -already caused C to be installed at a higher level.

    -

    See npm-folders(5) for a more detailed description of the specific -folder structures that npm creates.

    -

    Limitations of npm's Install Algorithm

    -

    There are some very rare and pathological edge-cases where a cycle can -cause npm to try to install a never-ending tree of packages. Here is -the simplest case:

    -
    A -> B -> A' -> B' -> A -> B -> A' -> B' -> A -> ...
    -

    where A is some version of a package, and A' is a different version -of the same package. Because B depends on a different version of A -than the one that is already in the tree, it must install a separate -copy. The same is true of A', which must install B'. Because B' -depends on the original version of A, which has been overridden, the -cycle falls into infinite regress.

    -

    To avoid this situation, npm flat-out refuses to install any -name@version that is already present anywhere in the tree of package -folder ancestors. A more correct, but more complex, solution would be -to symlink the existing version into the new location. If this ever -affects a real use-case, it will be investigated.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-link.html b/deps/npm/html/partial/doc/cli/npm-link.html deleted file mode 100644 index d25a64005b18..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-link.html +++ /dev/null @@ -1,52 +0,0 @@ -

    npm-link

    Symlink a package folder

    -

    SYNOPSIS

    -
    npm link (in package folder)
    -npm link [@<scope>/]<pkgname>
    -npm ln (with any of the previous argument usage)
    -

    DESCRIPTION

    -

    Package linking is a two-step process.

    -

    First, npm link in a package folder will create a globally-installed -symbolic link from prefix/package-name to the current folder (see -npm-config(7) for the value of prefix).

    -

    Next, in some other location, npm link package-name will create a -symlink from the local node_modules folder to the global symlink.

    -

    Note that package-name is taken from package.json, -not from directory name.

    -

    The package name can be optionally prefixed with a scope. See npm-scope(7). -The scope must be preceded by an @-symbol and followed by a slash.

    -

    When creating tarballs for npm publish, the linked packages are -"snapshotted" to their current state by resolving the symbolic links.

    -

    This is handy for installing your own stuff, so that you can work on it and -test it iteratively without having to continually rebuild.

    -

    For example:

    -
    cd ~/projects/node-redis    # go into the package directory
    -npm link                    # creates global link
    -cd ~/projects/node-bloggy   # go into some other package directory.
    -npm link redis              # link-install the package
    -

    Now, any changes to ~/projects/node-redis will be reflected in -~/projects/node-bloggy/node_modules/node-redis/. Note that the link should -be to the package name, not the directory name for that package.

    -

    You may also shortcut the two steps in one. For example, to do the -above use-case in a shorter way:

    -
    cd ~/projects/node-bloggy  # go into the dir of your main project
    -npm link ../node-redis     # link the dir of your dependency
    -

    The second line is the equivalent of doing:

    -
    (cd ../node-redis; npm link)
    -npm link node-redis
    -

    That is, it first creates a global link, and then links the global -installation target into your project's node_modules folder.

    -

    If your linked package is scoped (see npm-scope(7)) your link command must -include that scope, e.g.

    -
    npm link @myorg/privatepackage
    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-logout.html b/deps/npm/html/partial/doc/cli/npm-logout.html deleted file mode 100644 index 63c28a3d7ca7..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-logout.html +++ /dev/null @@ -1,35 +0,0 @@ -

    npm-logout

    Log out of the registry

    -

    SYNOPSIS

    -
    npm logout [--registry=url] [--scope=@orgname]
    -

    DESCRIPTION

    -

    When logged into a registry that supports token-based authentication, tell the -server to end this token's session. This will invalidate the token everywhere -you're using it, not just for the current environment.

    -

    When logged into a legacy registry that uses username and password authentication, this will -clear the credentials in your user configuration. In this case, it will only affect -the current environment.

    -

    If --scope is provided, this will find the credentials for the registry -connected to that scope, if set.

    -

    CONFIGURATION

    -

    registry

    -

    Default: http://registry.npmjs.org/

    -

    The base URL of the npm package registry. If scope is also specified, -it takes precedence.

    -

    scope

    -

    Default: none

    -

    If specified, the user and login credentials given will be associated -with the specified scope. See npm-scope(7). You can use both at the same time, -e.g.

    -
    npm adduser --registry=http://myregistry.example.com --scope=@myco
    -

    This will set a registry for the given scope and login or create a user for -that registry at the same time.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-ls.html b/deps/npm/html/partial/doc/cli/npm-ls.html deleted file mode 100644 index f97fb22243f5..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-ls.html +++ /dev/null @@ -1,77 +0,0 @@ -

    npm-ls

    List installed packages

    -

    SYNOPSIS

    -
    npm list [[@<scope>/]<pkg> ...]
    -npm ls [[@<scope>/]<pkg> ...]
    -npm la [[@<scope>/]<pkg> ...]
    -npm ll [[@<scope>/]<pkg> ...]
    -

    DESCRIPTION

    -

    This command will print to stdout all the versions of packages that are -installed, as well as their dependencies, in a tree-structure.

    -

    Positional arguments are name@version-range identifiers, which will -limit the results to only the paths to the packages named. Note that -nested packages will also show the paths to the specified packages. -For example, running npm ls promzard in npm's source tree will show:

    -
    npm@2.13.4 /path/to/npm
    -└─┬ init-package-json@0.0.4
    -  └── promzard@0.1.5
    -

    It will print out extraneous, missing, and invalid packages.

    -

    If a project specifies git urls for dependencies these are shown -in parentheses after the name@version to make it easier for users to -recognize potential forks of a project.

    -

    When run as ll or la, it shows extended information by default.

    -

    CONFIGURATION

    -

    json

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Show information in JSON format.

    -

    long

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Show extended information.

    -

    parseable

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Show parseable output instead of tree view.

    -

    global

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    List packages in the global install prefix instead of in the current -project.

    -

    depth

    -
      -
    • Type: Int
    • -
    -

    Max display depth of the dependency tree.

    -

    prod / production

    -
      -
    • Type: Boolean
    • -
    • Default: false
    • -
    -

    Display only the dependency tree for packages in dependencies.

    -

    dev

    -
      -
    • Type: Boolean
    • -
    • Default: false
    • -
    -

    Display only the dependency tree for packages in devDependencies.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-outdated.html b/deps/npm/html/partial/doc/cli/npm-outdated.html deleted file mode 100644 index ea07e01c1ce8..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-outdated.html +++ /dev/null @@ -1,47 +0,0 @@ -

    npm-outdated

    Check for outdated packages

    -

    SYNOPSIS

    -
    npm outdated [<name> [<name> ...]]
    -

    DESCRIPTION

    -

    This command will check the registry to see if any (or, specific) installed -packages are currently outdated.

    -

    The resulting field 'wanted' shows the latest version according to the -version specified in the package.json, the field 'latest' the very latest -version of the package.

    -

    CONFIGURATION

    -

    json

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Show information in JSON format.

    -

    long

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Show extended information.

    -

    parseable

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Show parseable output instead of tree view.

    -

    global

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Check packages in the global install prefix instead of in the current -project.

    -

    depth

    -
      -
    • Type: Int
    • -
    -

    Max depth for checking dependency tree.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-owner.html b/deps/npm/html/partial/doc/cli/npm-owner.html deleted file mode 100644 index 0e0dc92e4168..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-owner.html +++ /dev/null @@ -1,29 +0,0 @@ -

    npm-owner

    Manage package owners

    -

    SYNOPSIS

    -
    npm owner ls <package name>
    -npm owner add <user> <package name>
    -npm owner rm <user> <package name>
    -

    DESCRIPTION

    -

    Manage ownership of published packages.

    -
      -
    • ls: -List all the users who have access to modify a package and push new versions. -Handy when you need to know who to bug for help.
    • -
    • add: -Add a new user as a maintainer of a package. This user is enabled to modify -metadata, publish new versions, and add other owners.
    • -
    • rm: -Remove a user from the package owner list. This immediately revokes their -privileges.
    • -
    -

    Note that there is only one level of access. Either you can modify a package, -or you can't. Future versions may contain more fine-grained access levels, but -that is not implemented at this time.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-pack.html b/deps/npm/html/partial/doc/cli/npm-pack.html deleted file mode 100644 index 865f14afd468..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-pack.html +++ /dev/null @@ -1,21 +0,0 @@ -

    npm-pack

    Create a tarball from a package

    -

    SYNOPSIS

    -
    npm pack [<pkg> [<pkg> ...]]
    -

    DESCRIPTION

    -

    For anything that's installable (that is, a package folder, tarball, -tarball url, name@tag, name@version, or name), this command will fetch -it to the cache, and then copy the tarball to the current working -directory as <name>-<version>.tgz, and then write the filenames out to -stdout.

    -

    If the same package is specified multiple times, then the file will be -overwritten the second time.

    -

    If no arguments are supplied, then npm packs the current package folder.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-ping.html b/deps/npm/html/partial/doc/cli/npm-ping.html deleted file mode 100644 index c71423d5eee4..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-ping.html +++ /dev/null @@ -1,11 +0,0 @@ -

    npm-ping

    Ping npm registry

    -

    SYNOPSIS

    -
    npm ping [--registry <registry>]
    -

    DESCRIPTION

    -

    Ping the configured or given npm registry and verify authentication.

    -

    SEE ALSO

    - diff --git a/deps/npm/html/partial/doc/cli/npm-prefix.html b/deps/npm/html/partial/doc/cli/npm-prefix.html deleted file mode 100644 index bca3f6689c7b..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-prefix.html +++ /dev/null @@ -1,18 +0,0 @@ -

    npm-prefix

    Display prefix

    -

    SYNOPSIS

    -
    npm prefix [-g]
    -

    DESCRIPTION

    -

    Print the local prefix to standard out. This is the closest parent directory -to contain a package.json file unless -g is also specified.

    -

    If -g is specified, this will be the value of the global prefix. See -npm-config(7) for more detail.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-prune.html b/deps/npm/html/partial/doc/cli/npm-prune.html deleted file mode 100644 index 8bb16677da18..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-prune.html +++ /dev/null @@ -1,21 +0,0 @@ -

    npm-prune

    Remove extraneous packages

    -

    SYNOPSIS

    -
    npm prune [<name> [<name ...]]
    -npm prune [<name> [<name ...]] [--production]
    -

    DESCRIPTION

    -

    This command removes "extraneous" packages. If a package name is -provided, then only packages matching one of the supplied names are -removed.

    -

    Extraneous packages are packages that are not listed on the parent -package's dependencies list.

    -

    If the --production flag is specified or the NODE_ENV environment -variable is set to production, this command will remove the packages -specified in your devDependencies. Setting --production=false will -negate NODE_ENV being set to production.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-publish.html b/deps/npm/html/partial/doc/cli/npm-publish.html deleted file mode 100644 index 8d9321292a43..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-publish.html +++ /dev/null @@ -1,46 +0,0 @@ -

    npm-publish

    Publish a package

    -

    SYNOPSIS

    -
    npm publish <tarball> [--tag <tag>] [--access <public|restricted>]
    -npm publish <folder> [--tag <tag>] [--access <public|restricted>]
    -

    DESCRIPTION

    -

    Publishes a package to the registry so that it can be installed by name. See -npm-developers(7) for details on what's included in the published package, as -well as details on how the package is built.

    -

    By default npm will publish to the public registry. This can be overridden by -specifying a different default registry or using a npm-scope(7) in the name -(see package.json(5)).

    -
      -
    • <folder>: -A folder containing a package.json file

      -
    • -
    • <tarball>: -A url or file path to a gzipped tar archive containing a single folder -with a package.json file inside.

      -
    • -
    • [--tag <tag>] -Registers the published package with the given tag, such that npm install -<name>@<tag> will install this version. By default, npm publish updates -and npm install installs the latest tag.

      -
    • -
    • [--access <public|restricted>] -Tells the registry whether this package should be published as public or -restricted. Only applies to scoped packages, which default to restricted. -If you don't have a paid account, you must publish with --access public -to publish scoped packages.

      -
    • -
    -

    Fails if the package name and version combination already exists in -the specified registry.

    -

    Once a package is published with a given name and version, that -specific name and version combination can never be used again, even if -it is removed with npm-unpublish(1).

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-rebuild.html b/deps/npm/html/partial/doc/cli/npm-rebuild.html deleted file mode 100644 index b06f0705e3ea..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-rebuild.html +++ /dev/null @@ -1,18 +0,0 @@ -

    npm-rebuild

    Rebuild a package

    -

    SYNOPSIS

    -
    npm rebuild [<name> [<name> ...]]
    -npm rb [<name> [<name> ...]]
    -
      -
    • <name>: -The package to rebuild
    • -
    -

    DESCRIPTION

    -

    This command runs the npm build command on the matched folders. This is useful -when you install a new version of node, and must recompile all your C++ addons with -the new binary.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-repo.html b/deps/npm/html/partial/doc/cli/npm-repo.html deleted file mode 100644 index 55fcb5f4c965..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-repo.html +++ /dev/null @@ -1,22 +0,0 @@ -

    npm-repo

    Open package repository page in the browser

    -

    SYNOPSIS

    -
    npm repo <pkgname>
    -npm repo (with no args in a package dir)
    -

    DESCRIPTION

    -

    This command tries to guess at the likely location of a package's -repository URL, and then tries to open it using the --browser -config param. If no package name is provided, it will search for -a package.json in the current folder and use the name property.

    -

    CONFIGURATION

    -

    browser

    -
      -
    • Default: OS X: "open", Windows: "start", Others: "xdg-open"
    • -
    • Type: String
    • -
    -

    The browser that is called by the npm repo command to open websites.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-restart.html b/deps/npm/html/partial/doc/cli/npm-restart.html deleted file mode 100644 index 2186473373c5..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-restart.html +++ /dev/null @@ -1,33 +0,0 @@ -

    npm-restart

    Restart a package

    -

    SYNOPSIS

    -
    npm restart [-- <args>]
    -

    DESCRIPTION

    -

    This restarts a package.

    -

    This runs a package's "stop", "restart", and "start" scripts, and associated -pre- and post- scripts, in the order given below:

    -
      -
    1. prerestart
    2. -
    3. prestop
    4. -
    5. stop
    6. -
    7. poststop
    8. -
    9. restart
    10. -
    11. prestart
    12. -
    13. start
    14. -
    15. poststart
    16. -
    17. postrestart
    18. -
    -

    NOTE

    -

    Note that the "restart" script is run in addition to the "stop" -and "start" scripts, not instead of them.

    -

    This is the behavior as of npm major version 2. A change in this -behavior will be accompanied by an increase in major version number

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-rm.html b/deps/npm/html/partial/doc/cli/npm-rm.html deleted file mode 100644 index 24cd07eeecd8..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-rm.html +++ /dev/null @@ -1,19 +0,0 @@ -

    npm-rm

    Remove a package

    -

    SYNOPSIS

    -
    npm rm <name>
    -npm r <name>
    -npm uninstall <name>
    -npm un <name>
    -

    DESCRIPTION

    -

    This uninstalls a package, completely removing everything npm installed -on its behalf.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-root.html b/deps/npm/html/partial/doc/cli/npm-root.html deleted file mode 100644 index e9b5ad0df8c2..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-root.html +++ /dev/null @@ -1,15 +0,0 @@ -

    npm-root

    Display npm root

    -

    SYNOPSIS

    -
    npm root
    -

    DESCRIPTION

    -

    Print the effective node_modules folder to standard out.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-run-script.html b/deps/npm/html/partial/doc/cli/npm-run-script.html deleted file mode 100644 index e79376870e69..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-run-script.html +++ /dev/null @@ -1,37 +0,0 @@ -

    npm-run-script

    Run arbitrary package scripts

    -

    SYNOPSIS

    -
    npm run-script [command] [-- <args>]
    -npm run [command] [-- <args>]
    -

    DESCRIPTION

    -

    This runs an arbitrary command from a package's "scripts" object. If no -"command" is provided, it will list the available scripts. run[-script] is -used by the test, start, restart, and stop commands, but can be called -directly, as well. When the scripts in the package are printed out, they're -separated into lifecycle (test, start, restart) and directly-run scripts.

    -

    As of npm@2.0.0, you can -use custom arguments when executing scripts. The special option -- is used by -getopt to delimit the end of the options. npm will pass -all the arguments after the -- directly to your script:

    -
    npm run test -- --grep="pattern"
    -

    The arguments will only be passed to the script specified after npm run -and not to any pre or post script.

    -

    The env script is a special built-in command that can be used to list -environment variables that will be available to the script at runtime. If an -"env" command is defined in your package it will take precedence over the -built-in.

    -

    In addition to the shell's pre-existing PATH, npm run adds -node_modules/.bin to the PATH provided to scripts. Any binaries provided by -locally-installed dependencies can be used without the node_modules/.bin -prefix. For example, if there is a devDependency on tap in your package, -you should write:

    -
    "scripts": {"test": "tap test/\*.js"}
    -

    instead of "scripts": {"test": "node_modules/.bin/tap test/\*.js"} to run your tests.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-search.html b/deps/npm/html/partial/doc/cli/npm-search.html deleted file mode 100644 index ae66e47ead1c..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-search.html +++ /dev/null @@ -1,29 +0,0 @@ -

    npm-search

    Search for packages

    -

    SYNOPSIS

    -
    npm search [--long] [search terms ...]
    -npm s [search terms ...]
    -npm se [search terms ...]
    -

    DESCRIPTION

    -

    Search the registry for packages matching the search terms.

    -

    If a term starts with /, then it's interpreted as a regular expression. -A trailing / will be ignored in this case. (Note that many regular -expression characters must be escaped or quoted in most shells.)

    -

    CONFIGURATION

    -

    long

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Display full package descriptions and other long text across multiple -lines. When disabled (default) search results are truncated to fit -neatly on a single line. Modules with extremely long names will -fall on multiple lines.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-shrinkwrap.html b/deps/npm/html/partial/doc/cli/npm-shrinkwrap.html deleted file mode 100644 index 8ac97fc3eed8..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-shrinkwrap.html +++ /dev/null @@ -1,144 +0,0 @@ -

    npm-shrinkwrap

    Lock down dependency versions

    -

    SYNOPSIS

    -
    npm shrinkwrap
    -

    DESCRIPTION

    -

    This command locks down the versions of a package's dependencies so -that you can control exactly which versions of each dependency will be -used when your package is installed. The package.json file is still -required if you want to use npm install.

    -

    By default, npm install recursively installs the target's -dependencies (as specified in package.json), choosing the latest -available version that satisfies the dependency's semver pattern. In -some situations, particularly when shipping software where each change -is tightly managed, it's desirable to fully specify each version of -each dependency recursively so that subsequent builds and deploys do -not inadvertently pick up newer versions of a dependency that satisfy -the semver pattern. Specifying specific semver patterns in each -dependency's package.json would facilitate this, but that's not always -possible or desirable, as when another author owns the npm package. -It's also possible to check dependencies directly into source control, -but that may be undesirable for other reasons.

    -

    As an example, consider package A:

    -
    {
    -  "name": "A",
    -  "version": "0.1.0",
    -  "dependencies": {
    -    "B": "<0.1.0"
    -  }
    -}
    -

    package B:

    -
    {
    -  "name": "B",
    -  "version": "0.0.1",
    -  "dependencies": {
    -    "C": "<0.1.0"
    -  }
    -}
    -

    and package C:

    -
    {
    -  "name": "C",
    -  "version": "0.0.1"
    -}
    -

    If these are the only versions of A, B, and C available in the -registry, then a normal npm install A will install:

    -
    A@0.1.0
    -`-- B@0.0.1
    -    `-- C@0.0.1
    -

    However, if B@0.0.2 is published, then a fresh npm install A will -install:

    -
    A@0.1.0
    -`-- B@0.0.2
    -    `-- C@0.0.1
    -

    assuming the new version did not modify B's dependencies. Of course, -the new version of B could include a new version of C and any number -of new dependencies. If such changes are undesirable, the author of A -could specify a dependency on B@0.0.1. However, if A's author and B's -author are not the same person, there's no way for A's author to say -that he or she does not want to pull in newly published versions of C -when B hasn't changed at all.

    -

    In this case, A's author can run

    -
    npm shrinkwrap
    -

    This generates npm-shrinkwrap.json, which will look something like this:

    -
    {
    -  "name": "A",
    -  "version": "0.1.0",
    -  "dependencies": {
    -    "B": {
    -      "version": "0.0.1",
    -      "dependencies": {
    -        "C": {
    -          "version": "0.0.1"
    -        }
    -      }
    -    }
    -  }
    -}
    -

    The shrinkwrap command has locked down the dependencies based on -what's currently installed in node_modules. When npm install -installs a package with an npm-shrinkwrap.json in the package -root, the shrinkwrap file (rather than package.json files) completely -drives the installation of that package and all of its dependencies -(recursively). So now the author publishes A@0.1.0, and subsequent -installs of this package will use B@0.0.1 and C@0.0.1, regardless the -dependencies and versions listed in A's, B's, and C's package.json -files.

    -

    Using shrinkwrapped packages

    -

    Using a shrinkwrapped package is no different than using any other -package: you can npm install it by hand, or add a dependency to your -package.json file and npm install it.

    -

    Building shrinkwrapped packages

    -

    To shrinkwrap an existing package:

    -
      -
    1. Run npm install in the package root to install the current -versions of all dependencies.
    2. -
    3. Validate that the package works as expected with these versions.
    4. -
    5. Run npm shrinkwrap, add npm-shrinkwrap.json to git, and publish -your package.
    6. -
    -

    To add or update a dependency in a shrinkwrapped package:

    -
      -
    1. Run npm install in the package root to install the current -versions of all dependencies.
    2. -
    3. Add or update dependencies. npm install each new or updated -package individually and then update package.json. Note that they -must be explicitly named in order to be installed: running npm -install with no arguments will merely reproduce the existing -shrinkwrap.
    4. -
    5. Validate that the package works as expected with the new -dependencies.
    6. -
    7. Run npm shrinkwrap, commit the new npm-shrinkwrap.json, and -publish your package.
    8. -
    -

    You can use npm-outdated(1) to view dependencies with newer versions -available.

    -

    Other Notes

    -

    A shrinkwrap file must be consistent with the package's package.json -file. npm shrinkwrap will fail if required dependencies are not -already installed, since that would result in a shrinkwrap that -wouldn't actually work. Similarly, the command will fail if there are -extraneous packages (not referenced by package.json), since that would -indicate that package.json is not correct.

    -

    Since npm shrinkwrap is intended to lock down your dependencies for -production use, devDependencies will not be included unless you -explicitly set the --dev flag when you run npm shrinkwrap. If -installed devDependencies are excluded, then npm will print a -warning. If you want them to be installed with your module by -default, please consider adding them to dependencies instead.

    -

    If shrinkwrapped package A depends on shrinkwrapped package B, B's -shrinkwrap will not be used as part of the installation of A. However, -because A's shrinkwrap is constructed from a valid installation of B -and recursively specifies all dependencies, the contents of B's -shrinkwrap will implicitly be included in A's shrinkwrap.

    -

    Caveats

    -

    If you wish to lock down the specific bytes included in a package, for -example to have 100% confidence in being able to reproduce a -deployment or build, then you ought to check your dependencies into -source control, or pursue some other mechanism that can verify -contents rather than versions.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-star.html b/deps/npm/html/partial/doc/cli/npm-star.html deleted file mode 100644 index 7377d9bc5ddb..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-star.html +++ /dev/null @@ -1,16 +0,0 @@ -

    npm-star

    Mark your favorite packages

    -

    SYNOPSIS

    -
    npm star <pkgname> [<pkg>, ...]
    -npm unstar <pkgname> [<pkg>, ...]
    -

    DESCRIPTION

    -

    "Starring" a package means that you have some interest in it. It's -a vaguely positive way to show that you care.

    -

    "Unstarring" is the same thing, but in reverse.

    -

    It's a boolean thing. Starring repeatedly has no additional effect.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-stars.html b/deps/npm/html/partial/doc/cli/npm-stars.html deleted file mode 100644 index 6ffda95b8386..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-stars.html +++ /dev/null @@ -1,17 +0,0 @@ -

    npm-stars

    View packages marked as favorites

    -

    SYNOPSIS

    -
    npm stars
    -npm stars [username]
    -

    DESCRIPTION

    -

    If you have starred a lot of neat things and want to find them again -quickly this command lets you do just that.

    -

    You may also want to see your friend's favorite packages, in this case -you will most certainly enjoy this command.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-start.html b/deps/npm/html/partial/doc/cli/npm-start.html deleted file mode 100644 index bfd673ca26b5..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-start.html +++ /dev/null @@ -1,14 +0,0 @@ -

    npm-start

    Start a package

    -

    SYNOPSIS

    -
    npm start [-- <args>]
    -

    DESCRIPTION

    -

    This runs a package's "start" script, if one was provided.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-stop.html b/deps/npm/html/partial/doc/cli/npm-stop.html deleted file mode 100644 index 3b974c46a1e2..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-stop.html +++ /dev/null @@ -1,14 +0,0 @@ -

    npm-stop

    Stop a package

    -

    SYNOPSIS

    -
    npm stop [-- <args>]
    -

    DESCRIPTION

    -

    This runs a package's "stop" script, if one was provided.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-tag.html b/deps/npm/html/partial/doc/cli/npm-tag.html deleted file mode 100644 index b12d5de7a4c6..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-tag.html +++ /dev/null @@ -1,42 +0,0 @@ -

    npm-tag

    Tag a published version

    -

    SYNOPSIS

    -
    npm tag <name>@<version> [<tag>]
    -

    DESCRIPTION

    -

    THIS COMMAND IS DEPRECATED. See npm-dist-tag(1) for details.

    -

    Tags the specified version of the package with the specified tag, or the ---tag config if not specified.

    -

    A tag can be used when installing packages as a reference to a version instead -of using a specific version number:

    -
    npm install <name>@<tag>
    -

    When installing dependencies, a preferred tagged version may be specified:

    -
    npm install --tag <tag>
    -

    This also applies to npm dedupe.

    -

    Publishing a package always sets the "latest" tag to the published version.

    -

    PURPOSE

    -

    Tags can be used to provide an alias instead of version numbers. For -example, npm currently uses the tag "next" to identify the upcoming -version, and the tag "latest" to identify the current version.

    -

    A project might choose to have multiple streams of development, e.g., -"stable", "canary".

    -

    CAVEATS

    -

    Tags must share a namespace with version numbers, because they are -specified in the same slot: npm install <pkg>@<version> vs npm -install <pkg>@<tag>.

    -

    Tags that can be interpreted as valid semver ranges will be -rejected. For example, v1.4 cannot be used as a tag, because it is -interpreted by semver as >=1.4.0 <1.5.0. See -https://github.com/npm/npm/issues/6082.

    -

    The simplest way to avoid semver problems with tags is to use tags -that do not begin with a number or the letter v.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-test.html b/deps/npm/html/partial/doc/cli/npm-test.html deleted file mode 100644 index 4a48e657d922..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-test.html +++ /dev/null @@ -1,17 +0,0 @@ -

    npm-test

    Test a package

    -

    SYNOPSIS

    -
      npm test [-- <args>]
    -  npm tst [-- <args>]
    -

    DESCRIPTION

    -

    This runs a package's "test" script, if one was provided.

    -

    To run tests as a condition of installation, set the npat config to -true.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-uninstall.html b/deps/npm/html/partial/doc/cli/npm-uninstall.html deleted file mode 100644 index 5b247402bdc8..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-uninstall.html +++ /dev/null @@ -1,37 +0,0 @@ -

    npm-rm

    Remove a package

    -

    SYNOPSIS

    -
    npm uninstall [@<scope>/]<package> [--save|--save-dev|--save-optional]
    -npm rm (with any of the previous argument usage)
    -

    DESCRIPTION

    -

    This uninstalls a package, completely removing everything npm installed -on its behalf.

    -

    Example:

    -
    npm uninstall sax
    -

    In global mode (ie, with -g or --global appended to the command), -it uninstalls the current package context as a global package.

    -

    npm uninstall takes 3 exclusive, optional flags which save or update -the package version in your main package.json:

    -
      -
    • --save: Package will be removed from your dependencies.

      -
    • -
    • --save-dev: Package will be removed from your devDependencies.

      -
    • -
    • --save-optional: Package will be removed from your optionalDependencies.

      -
    • -
    -

    Scope is optional and follows the usual rules for npm-scope(7).

    -

    Examples:

    -
    npm uninstall sax --save
    -npm uninstall @myorg/privatepackage --save
    -npm uninstall node-tap --save-dev
    -npm uninstall dtrace-provider --save-optional
    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-unpublish.html b/deps/npm/html/partial/doc/cli/npm-unpublish.html deleted file mode 100644 index 9790cd432745..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-unpublish.html +++ /dev/null @@ -1,27 +0,0 @@ -

    npm-unpublish

    Remove a package from the registry

    -

    SYNOPSIS

    -
    npm unpublish [@<scope>/]<name>[@<version>]
    -

    WARNING

    -

    It is generally considered bad behavior to remove versions of a library -that others are depending on!

    -

    Consider using the deprecate command -instead, if your intent is to encourage users to upgrade.

    -

    There is plenty of room on the registry.

    -

    DESCRIPTION

    -

    This removes a package version from the registry, deleting its -entry and removing the tarball.

    -

    If no version is specified, or if all versions are removed then -the root package entry is removed from the registry entirely.

    -

    Even if a package version is unpublished, that specific name and -version combination can never be reused. In order to publish the -package again, a new version number must be used.

    -

    The scope is optional and follows the usual rules for npm-scope(7).

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-update.html b/deps/npm/html/partial/doc/cli/npm-update.html deleted file mode 100644 index ecc6640f21dd..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-update.html +++ /dev/null @@ -1,99 +0,0 @@ -

    npm-update

    Update a package

    -

    SYNOPSIS

    -
    npm update [-g] [<name> [<name> ...]]
    -

    DESCRIPTION

    -

    This command will update all the packages listed to the latest version -(specified by the tag config), respecting semver.

    -

    It will also install missing packages. As with all commands that install -packages, the --dev flag will cause devDependencies to be processed -as well.

    -

    If the -g flag is specified, this command will update globally installed -packages.

    -

    If no package name is specified, all packages in the specified location (global -or local) will be updated.

    -

    As of npm@2.6.1, the npm update will only inspect top-level packages. -Prior versions of npm would also recursively inspect all dependencies. -To get the old behavior, use npm --depth 9999 update, but be warned that -simultaneous asynchronous update of all packages, including npm itself -and packages that npm depends on, often causes problems up to and including -the uninstallation of npm itself.

    -

    To restore a missing npm, use the command:

    -
    curl -L https://npmjs.com/install.sh | sh
    -

    EXAMPLES

    -

    IMPORTANT VERSION NOTE: these examples assume npm@2.6.1 or later. For -older versions of npm, you must specify --depth 0 to get the behavior -described below.

    -

    For the examples below, assume that the current package is app and it depends -on dependencies, dep1 (dep2, .. etc.). The published versions of dep1 are:

    -
    {
    -  dist-tags: { latest: "1.2.2" },
    -  versions: { "1.2.2",
    -              "1.2.1",
    -              "1.2.0",
    -              "1.1.2",
    -              "1.1.1",
    -              "1.0.0",
    -              "0.4.1",
    -              "0.4.0",
    -              "0.2.0"
    -  }
    -}
    -

    Caret Dependencies

    -

    If app's package.json contains:

    -
    dependencies: {
    -  dep1: "^1.1.1"
    -}
    -

    Then npm update will install dep1@1.2.2, because 1.2.2 is latest and -1.2.2 satisfies ^1.1.1.

    -

    Tilde Dependencies

    -

    However, if app's package.json contains:

    -
    dependencies: {
    -  dep1: "~1.1.1"
    -}
    -

    In this case, running npm update will install dep1@1.1.2. Even though the latest -tag points to 1.2.2, this version does not satisfy ~1.1.1, which is equivalent -to >=1.1.1 <1.2.0. So the highest-sorting version that satisfies ~1.1.1 is used, -which is 1.1.2.

    -

    Caret Dependencies below 1.0.0

    -

    Suppose app has a caret dependency on a version below 1.0.0, for example:

    -
    dependencies: {
    -  dep1: "^0.2.0"
    -}
    -

    npm update will install dep1@0.2.0, because there are no other -versions which satisfy ^0.2.0.

    -

    If the dependence were on ^0.4.0:

    -
    dependencies: {
    -  dep1: "^0.4.0"
    -}
    -

    Then npm update will install dep1@0.4.1, because that is the highest-sorting -version that satisfies ^0.4.0 (>= 0.4.0 <0.5.0)

    -

    Recording Updates with --save

    -

    When you want to update a package and save the new version as -the minimum required dependency in package.json, you can use -npm update --save. For example if package.json contains

    -
    dependencies: {
    -  dep1: "^1.1.1"
    -}
    -

    Then npm update --save will install dep1@1.2.2 (i.e., latest), -and package.json will be modified:

    -
    dependencies: {
    -  dep1: "^1.2.2"
    -}
    -

    Note that npm will only write an updated version to package.json -if it installs a new package.

    -

    Updating Globally-Installed Packages

    -

    npm update -g will apply the update action to each globally- installed -package that is outdated -- that is, has a version that is different from -latest.

    -

    NOTE: If a package has been upgraded to a version newer than latest, it will -be downgraded.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-version.html b/deps/npm/html/partial/doc/cli/npm-version.html deleted file mode 100644 index 1beda3d2884a..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-version.html +++ /dev/null @@ -1,75 +0,0 @@ -

    npm-version

    Bump a package version

    -

    SYNOPSIS

    -
    npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease]
    -

    DESCRIPTION

    -

    Run this in a package directory to bump the version and write the new -data back to package.json and, if present, npm-shrinkwrap.json.

    -

    The newversion argument should be a valid semver string, or a -valid second argument to semver.inc (one of patch, minor, major, -prepatch, preminor, premajor, prerelease). In the second case, -the existing version will be incremented by 1 in the specified field.

    -

    If run in a git repo, it will also create a version commit and tag. -This behavior is controlled by git-tag-version (see below), and can -be disabled on the command line by running npm --no-git-tag-version version. -It will fail if the working directory is not clean, unless the --force -flag is set.

    -

    If supplied with --message (shorthand: -m) config option, npm will -use it as a commit message when creating a version commit. If the -message config contains %s then that will be replaced with the -resulting version number. For example:

    -
    npm version patch -m "Upgrade to %s for reasons"
    -

    If the sign-git-tag config is set, then the tag will be signed using -the -s flag to git. Note that you must have a default GPG key set up -in your git config for this to work properly. For example:

    -
    $ npm config set sign-git-tag true
    -$ npm version patch
    -
    -You need a passphrase to unlock the secret key for
    -user: "isaacs (http://blog.izs.me/) <i@izs.me>"
    -2048-bit RSA key, ID 6C481CF6, created 2010-08-31
    -
    -Enter passphrase:
    -

    If preversion, version, or postversion are in the scripts property of -the package.json, they will be executed as part of running npm version.

    -

    The exact order of execution is as follows:

    -
      -
    1. Check to make sure the git working directory is clean before we get started. -Your scripts may add files to the commit in future steps. -This step is skipped if the --force flag is set.
    2. -
    3. Run the preversion script. These scripts have access to the old version in package.json. -A typical use would be running your full test suite before deploying. -Any files you want added to the commit should be explicitly added using git add.
    4. -
    5. Bump version in package.json as requested (patch, minor, major, etc).
    6. -
    7. Run the version script. These scripts have access to the new version in package.json -(so they can incorporate it into file headers in generated files for example). -Again, scripts should explicitly add generated files to the commit using git add.
    8. -
    9. Commit and tag.
    10. -
    11. Run the postversion script. Use it to clean up the file system or automatically push -the commit and/or tag.
    12. -
    -

    Take the following example:

    -
    "scripts": {
    -  "preversion": "npm test",
    -  "version": "npm run build && git add -A dist",
    -  "postversion": "git push && git push --tags && rm -rf build/temp"
    -}
    -

    This runs all your tests, and proceeds only if they pass. Then runs your build script, and -adds everything in the dist directory to the commit. After the commit, it pushes the new commit -and tag up to the server, and deletes the build/temp directory.

    -

    CONFIGURATION

    -

    git-tag-version

    -
      -
    • Default: true
    • -
    • Type: Boolean
    • -
    -

    Commit and tag the version change.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-view.html b/deps/npm/html/partial/doc/cli/npm-view.html deleted file mode 100644 index dcd41693e7e4..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-view.html +++ /dev/null @@ -1,62 +0,0 @@ -

    npm-view

    View registry info

    -

    SYNOPSIS

    -
    npm view [@<scope>/]<name>[@<version>] [<field>[.<subfield>]...]
    -npm v [@<scope>/]<name>[@<version>] [<field>[.<subfield>]...]
    -

    DESCRIPTION

    -

    This command shows data about a package and prints it to the stream -referenced by the outfd config, which defaults to stdout.

    -

    To show the package registry entry for the connect package, you can do -this:

    -
    npm view connect
    -

    The default version is "latest" if unspecified.

    -

    Field names can be specified after the package descriptor. -For example, to show the dependencies of the ronn package at version -0.3.5, you could do the following:

    -
    npm view ronn@0.3.5 dependencies
    -

    You can view child fields by separating them with a period. -To view the git repository URL for the latest version of npm, you could -do this:

    -
    npm view npm repository.url
    -

    This makes it easy to view information about a dependency with a bit of -shell scripting. For example, to view all the data about the version of -opts that ronn depends on, you can do this:

    -
    npm view opts@$(npm view ronn dependencies.opts)
    -

    For fields that are arrays, requesting a non-numeric field will return -all of the values from the objects in the list. For example, to get all -the contributor names for the "express" project, you can do this:

    -
    npm view express contributors.email
    -

    You may also use numeric indices in square braces to specifically select -an item in an array field. To just get the email address of the first -contributor in the list, you can do this:

    -
    npm view express contributors[0].email
    -

    Multiple fields may be specified, and will be printed one after another. -For exampls, to get all the contributor names and email addresses, you -can do this:

    -
    npm view express contributors.name contributors.email
    -

    "Person" fields are shown as a string if they would be shown as an -object. So, for example, this will show the list of npm contributors in -the shortened string format. (See package.json(5) for more on this.)

    -
    npm view npm contributors
    -

    If a version range is provided, then data will be printed for every -matching version of the package. This will show which version of jsdom -was required by each matching version of yui3:

    -
    npm view yui3@'>0.5.4' dependencies.jsdom
    -

    OUTPUT

    -

    If only a single string field for a single version is output, then it -will not be colorized or quoted, so as to enable piping the output to -another command. If the field is an object, it will be output as a JavaScript object literal.

    -

    If the --json flag is given, the outputted fields will be JSON.

    -

    If the version range matches multiple versions, than each printed value -will be prefixed with the version it applies to.

    -

    If multiple fields are requested, than each of them are prefixed with -the field name.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm-whoami.html b/deps/npm/html/partial/doc/cli/npm-whoami.html deleted file mode 100644 index a0c0dd4cd82f..000000000000 --- a/deps/npm/html/partial/doc/cli/npm-whoami.html +++ /dev/null @@ -1,13 +0,0 @@ -

    npm-whoami

    Display npm username

    -

    SYNOPSIS

    -
    npm whoami
    -

    DESCRIPTION

    -

    Print the username config to standard output.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/cli/npm.html b/deps/npm/html/partial/doc/cli/npm.html deleted file mode 100644 index e147a18e8602..000000000000 --- a/deps/npm/html/partial/doc/cli/npm.html +++ /dev/null @@ -1,134 +0,0 @@ -

    npm

    javascript package manager

    -

    SYNOPSIS

    -
    npm <command> [args]
    -

    VERSION

    -

    2.13.4

    -

    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 -conflicts intelligently.

    -

    It is extremely configurable to support a wide variety of use cases. -Most commonly, it is used to publish, discover, install, and develop node -programs.

    -

    Run npm help to get a list of available commands.

    -

    INTRODUCTION

    -

    You probably got npm because you want to install stuff.

    -

    Use npm install blerg to install the latest version of "blerg". Check out -npm-install(1) for more info. It can do a lot of stuff.

    -

    Use the npm search command to show everything that's available. -Use npm ls to show everything you've installed.

    -

    DEPENDENCIES

    -

    If a package references to another package with a git URL, npm depends -on a preinstalled git.

    -

    If one of the packages npm tries to install is a native node module and -requires compiling of C++ Code, npm will use -node-gyp for that task. -For a Unix system, node-gyp -needs Python, make and a buildchain like GCC. On Windows, -Python and Microsoft Visual Studio C++ is needed. Python 3 is -not supported by node-gyp. -For more information visit -the node-gyp repository and -the node-gyp Wiki.

    -

    DIRECTORIES

    -

    See npm-folders(5) to learn about where npm puts stuff.

    -

    In particular, npm has two modes of operation:

    -
      -
    • global mode:
      npm installs packages into the install prefix at -prefix/lib/node_modules and bins are installed in prefix/bin.
    • -
    • local mode:
      npm installs packages into the current project directory, which -defaults to the current working directory. Packages are installed to -./node_modules, and bins are installed to ./node_modules/.bin.
    • -
    -

    Local mode is the default. Use --global or -g on any command to -operate in global mode instead.

    -

    DEVELOPER USAGE

    -

    If you're using npm to develop and publish your code, check out the -following help topics:

    -
      -
    • json: -Make a package.json file. See package.json(5).
    • -
    • link: -For linking your current working code into Node's path, so that you -don't have to reinstall every time you make a change. Use -npm link to do this.
    • -
    • install: -It's a good idea to install things if you don't need the symbolic link. -Especially, installing other peoples code from the registry is done via -npm install
    • -
    • adduser: -Create an account or log in. Credentials are stored in the -user config file.
    • -
    • publish: -Use the npm publish command to upload your code to the registry.
    • -
    -

    CONFIGURATION

    -

    npm is extremely configurable. It reads its configuration options from -5 places.

    -
      -
    • Command line switches:
      Set a config with --key val. All keys take a value, even if they -are booleans (the config parser doesn't know what the options are at -the time of parsing.) If no value is provided, then the option is set -to boolean true.
    • -
    • Environment Variables:
      Set any config by prefixing the name in an environment variable with -npm_config_. For example, export npm_config_key=val.
    • -
    • User Configs:
      The file at $HOME/.npmrc is an ini-formatted list of configs. If -present, it is parsed. If the userconfig option is set in the cli -or env, then that will be used instead.
    • -
    • Global Configs:
      The file found at ../etc/npmrc (from the node executable, by default -this resolves to /usr/local/etc/npmrc) will be parsed if it is found. -If the globalconfig option is set in the cli, env, or user config, -then that file is parsed instead.
    • -
    • Defaults:
      npm's default configuration options are defined in -lib/utils/config-defs.js. These must not be changed.
    • -
    -

    See npm-config(7) for much much more information.

    -

    CONTRIBUTIONS

    -

    Patches welcome!

    -
      -
    • code: -Read through npm-coding-style(7) if you plan to submit code. -You don't have to agree with it, but you do have to follow it.
    • -
    • docs: -If you find an error in the documentation, edit the appropriate markdown -file in the "doc" folder. (Don't worry about generating the man page.)
    • -
    -

    Contributors are listed in npm's package.json file. You can view them -easily by doing npm view npm contributors.

    -

    If you would like to contribute, but don't know what to work on, check -the issues list or ask on the mailing list.

    - -

    BUGS

    -

    When you find issues, please report them:

    - -

    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.

    -

    You can also look for isaacs in #node.js on irc://irc.freenode.net. He -will no doubt tell you to put the output in a gist or email.

    -

    AUTHOR

    -

    Isaac Z. Schlueter :: -isaacs :: -@izs :: -i@izs.me

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/files/npm-folders.html b/deps/npm/html/partial/doc/files/npm-folders.html deleted file mode 100644 index 08ea7ed13aa9..000000000000 --- a/deps/npm/html/partial/doc/files/npm-folders.html +++ /dev/null @@ -1,164 +0,0 @@ -

    npm-folders

    Folder Structures Used by npm

    -

    DESCRIPTION

    -

    npm puts various things on your computer. That's its job.

    -

    This document will tell you what it puts where.

    -

    tl;dr

    -
      -
    • Local install (default): puts stuff in ./node_modules of the current -package root.
    • -
    • Global install (with -g): puts stuff in /usr/local or wherever node -is installed.
    • -
    • Install it locally if you're going to require() it.
    • -
    • Install it globally if you're going to run it on the command line.
    • -
    • If you need both, then install it in both places, or use npm link.
    • -
    -

    prefix Configuration

    -

    The prefix config defaults to the location where node is installed. -On most systems, this is /usr/local, and most of the time is the same -as node's process.installPrefix.

    -

    On windows, this is the exact location of the node.exe binary. On Unix -systems, it's one level up, since node is typically installed at -{prefix}/bin/node rather than {prefix}/node.exe.

    -

    When the global flag is set, npm installs things into this prefix. -When it is not set, it uses the root of the current package, or the -current working directory if not in a package already.

    -

    Node Modules

    -

    Packages are dropped into the node_modules folder under the prefix. -When installing locally, this means that you can -require("packagename") to load its main module, or -require("packagename/lib/path/to/sub/module") to load other modules.

    -

    Global installs on Unix systems go to {prefix}/lib/node_modules. -Global installs on Windows go to {prefix}/node_modules (that is, no -lib folder.)

    -

    Scoped packages are installed the same way, except they are grouped together -in a sub-folder of the relevant node_modules folder with the name of that -scope prefix by the @ symbol, e.g. npm install @myorg/package would place -the package in {prefix}/node_modules/@myorg/package. See scopes(7) for -more details.

    -

    If you wish to require() a package, then install it locally.

    -

    Executables

    -

    When in global mode, executables are linked into {prefix}/bin on Unix, -or directly into {prefix} on Windows.

    -

    When in local mode, executables are linked into -./node_modules/.bin so that they can be made available to scripts run -through npm. (For example, so that a test runner will be in the path -when you run npm test.)

    -

    Man Pages

    -

    When in global mode, man pages are linked into {prefix}/share/man.

    -

    When in local mode, man pages are not installed.

    -

    Man pages are not installed on Windows systems.

    -

    Cache

    -

    See npm-cache(1). Cache files are stored in ~/.npm on Posix, or -~/npm-cache on Windows.

    -

    This is controlled by the cache configuration param.

    -

    Temp Files

    -

    Temporary files are stored by default in the folder specified by the -tmp config, which defaults to the TMPDIR, TMP, or TEMP environment -variables, or /tmp on Unix and c:\windows\temp on Windows.

    -

    Temp files are given a unique folder under this root for each run of the -program, and are deleted upon successful exit.

    -

    More Information

    -

    When installing locally, npm first tries to find an appropriate -prefix folder. This is so that npm install foo@1.2.3 will install -to the sensible root of your package, even if you happen to have cded -into some other folder.

    -

    Starting at the $PWD, npm will walk up the folder tree checking for a -folder that contains either a package.json file, or a node_modules -folder. If such a thing is found, then that is treated as the effective -"current directory" for the purpose of running npm commands. (This -behavior is inspired by and similar to git's .git-folder seeking -logic when running git commands in a working dir.)

    -

    If no package root is found, then the current folder is used.

    -

    When you run npm install foo@1.2.3, then the package is loaded into -the cache, and then unpacked into ./node_modules/foo. Then, any of -foo's dependencies are similarly unpacked into -./node_modules/foo/node_modules/....

    -

    Any bin files are symlinked to ./node_modules/.bin/, so that they may -be found by npm scripts when necessary.

    -

    Global Installation

    -

    If the global configuration is set to true, then npm will -install packages "globally".

    -

    For global installation, packages are installed roughly the same way, -but using the folders described above.

    -

    Cycles, Conflicts, and Folder Parsimony

    -

    Cycles are handled using the property of node's module system that it -walks up the directories looking for node_modules folders. So, at every -stage, if a package is already installed in an ancestor node_modules -folder, then it is not installed at the current location.

    -

    Consider the case above, where foo -> bar -> baz. Imagine if, in -addition to that, baz depended on bar, so you'd have: -foo -> bar -> baz -> bar -> baz .... However, since the folder -structure is: foo/node_modules/bar/node_modules/baz, there's no need to -put another copy of bar into .../baz/node_modules, since when it calls -require("bar"), it will get the copy that is installed in -foo/node_modules/bar.

    -

    This shortcut is only used if the exact same -version would be installed in multiple nested node_modules folders. It -is still possible to have a/node_modules/b/node_modules/a if the two -"a" packages are different versions. However, without repeating the -exact same package multiple times, an infinite regress will always be -prevented.

    -

    Another optimization can be made by installing dependencies at the -highest level possible, below the localized "target" folder.

    -

    Example

    -

    Consider this dependency graph:

    -
    foo
    -+-- blerg@1.2.5
    -+-- bar@1.2.3
    -|   +-- blerg@1.x (latest=1.3.7)
    -|   +-- baz@2.x
    -|   |   `-- quux@3.x
    -|   |       `-- bar@1.2.3 (cycle)
    -|   `-- asdf@*
    -`-- baz@1.2.3
    -    `-- quux@3.x
    -        `-- bar
    -

    In this case, we might expect a folder structure like this:

    -
    foo
    -+-- node_modules
    -    +-- blerg (1.2.5) <---[A]
    -    +-- bar (1.2.3) <---[B]
    -    |   `-- node_modules
    -    |       +-- baz (2.0.2) <---[C]
    -    |       |   `-- node_modules
    -    |       |       `-- quux (3.2.0)
    -    |       `-- asdf (2.3.4)
    -    `-- baz (1.2.3) <---[D]
    -        `-- node_modules
    -            `-- quux (3.2.0) <---[E]
    -

    Since foo depends directly on bar@1.2.3 and baz@1.2.3, those are -installed in foo's node_modules folder.

    -

    Even though the latest copy of blerg is 1.3.7, foo has a specific -dependency on version 1.2.5. So, that gets installed at [A]. Since the -parent installation of blerg satisfies bar's dependency on blerg@1.x, -it does not install another copy under [B].

    -

    Bar [B] also has dependencies on baz and asdf, so those are installed in -bar's node_modules folder. Because it depends on baz@2.x, it cannot -re-use the baz@1.2.3 installed in the parent node_modules folder [D], -and must install its own copy [C].

    -

    Underneath bar, the baz -> quux -> bar dependency creates a cycle. -However, because bar is already in quux's ancestry [B], it does not -unpack another copy of bar into that folder.

    -

    Underneath foo -> baz [D], quux's [E] folder tree is empty, because its -dependency on bar is satisfied by the parent folder copy installed at [B].

    -

    For a graphical breakdown of what is installed where, use npm ls.

    -

    Publishing

    -

    Upon publishing, npm will look in the node_modules folder. If any of -the items there are not in the bundledDependencies array, then they will -not be included in the package tarball.

    -

    This allows a package maintainer to install all of their dependencies -(and dev dependencies) locally, but only re-publish those items that -cannot be found elsewhere. See package.json(5) for more information.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/files/npm-global.html b/deps/npm/html/partial/doc/files/npm-global.html deleted file mode 100644 index 08ea7ed13aa9..000000000000 --- a/deps/npm/html/partial/doc/files/npm-global.html +++ /dev/null @@ -1,164 +0,0 @@ -

    npm-folders

    Folder Structures Used by npm

    -

    DESCRIPTION

    -

    npm puts various things on your computer. That's its job.

    -

    This document will tell you what it puts where.

    -

    tl;dr

    -
      -
    • Local install (default): puts stuff in ./node_modules of the current -package root.
    • -
    • Global install (with -g): puts stuff in /usr/local or wherever node -is installed.
    • -
    • Install it locally if you're going to require() it.
    • -
    • Install it globally if you're going to run it on the command line.
    • -
    • If you need both, then install it in both places, or use npm link.
    • -
    -

    prefix Configuration

    -

    The prefix config defaults to the location where node is installed. -On most systems, this is /usr/local, and most of the time is the same -as node's process.installPrefix.

    -

    On windows, this is the exact location of the node.exe binary. On Unix -systems, it's one level up, since node is typically installed at -{prefix}/bin/node rather than {prefix}/node.exe.

    -

    When the global flag is set, npm installs things into this prefix. -When it is not set, it uses the root of the current package, or the -current working directory if not in a package already.

    -

    Node Modules

    -

    Packages are dropped into the node_modules folder under the prefix. -When installing locally, this means that you can -require("packagename") to load its main module, or -require("packagename/lib/path/to/sub/module") to load other modules.

    -

    Global installs on Unix systems go to {prefix}/lib/node_modules. -Global installs on Windows go to {prefix}/node_modules (that is, no -lib folder.)

    -

    Scoped packages are installed the same way, except they are grouped together -in a sub-folder of the relevant node_modules folder with the name of that -scope prefix by the @ symbol, e.g. npm install @myorg/package would place -the package in {prefix}/node_modules/@myorg/package. See scopes(7) for -more details.

    -

    If you wish to require() a package, then install it locally.

    -

    Executables

    -

    When in global mode, executables are linked into {prefix}/bin on Unix, -or directly into {prefix} on Windows.

    -

    When in local mode, executables are linked into -./node_modules/.bin so that they can be made available to scripts run -through npm. (For example, so that a test runner will be in the path -when you run npm test.)

    -

    Man Pages

    -

    When in global mode, man pages are linked into {prefix}/share/man.

    -

    When in local mode, man pages are not installed.

    -

    Man pages are not installed on Windows systems.

    -

    Cache

    -

    See npm-cache(1). Cache files are stored in ~/.npm on Posix, or -~/npm-cache on Windows.

    -

    This is controlled by the cache configuration param.

    -

    Temp Files

    -

    Temporary files are stored by default in the folder specified by the -tmp config, which defaults to the TMPDIR, TMP, or TEMP environment -variables, or /tmp on Unix and c:\windows\temp on Windows.

    -

    Temp files are given a unique folder under this root for each run of the -program, and are deleted upon successful exit.

    -

    More Information

    -

    When installing locally, npm first tries to find an appropriate -prefix folder. This is so that npm install foo@1.2.3 will install -to the sensible root of your package, even if you happen to have cded -into some other folder.

    -

    Starting at the $PWD, npm will walk up the folder tree checking for a -folder that contains either a package.json file, or a node_modules -folder. If such a thing is found, then that is treated as the effective -"current directory" for the purpose of running npm commands. (This -behavior is inspired by and similar to git's .git-folder seeking -logic when running git commands in a working dir.)

    -

    If no package root is found, then the current folder is used.

    -

    When you run npm install foo@1.2.3, then the package is loaded into -the cache, and then unpacked into ./node_modules/foo. Then, any of -foo's dependencies are similarly unpacked into -./node_modules/foo/node_modules/....

    -

    Any bin files are symlinked to ./node_modules/.bin/, so that they may -be found by npm scripts when necessary.

    -

    Global Installation

    -

    If the global configuration is set to true, then npm will -install packages "globally".

    -

    For global installation, packages are installed roughly the same way, -but using the folders described above.

    -

    Cycles, Conflicts, and Folder Parsimony

    -

    Cycles are handled using the property of node's module system that it -walks up the directories looking for node_modules folders. So, at every -stage, if a package is already installed in an ancestor node_modules -folder, then it is not installed at the current location.

    -

    Consider the case above, where foo -> bar -> baz. Imagine if, in -addition to that, baz depended on bar, so you'd have: -foo -> bar -> baz -> bar -> baz .... However, since the folder -structure is: foo/node_modules/bar/node_modules/baz, there's no need to -put another copy of bar into .../baz/node_modules, since when it calls -require("bar"), it will get the copy that is installed in -foo/node_modules/bar.

    -

    This shortcut is only used if the exact same -version would be installed in multiple nested node_modules folders. It -is still possible to have a/node_modules/b/node_modules/a if the two -"a" packages are different versions. However, without repeating the -exact same package multiple times, an infinite regress will always be -prevented.

    -

    Another optimization can be made by installing dependencies at the -highest level possible, below the localized "target" folder.

    -

    Example

    -

    Consider this dependency graph:

    -
    foo
    -+-- blerg@1.2.5
    -+-- bar@1.2.3
    -|   +-- blerg@1.x (latest=1.3.7)
    -|   +-- baz@2.x
    -|   |   `-- quux@3.x
    -|   |       `-- bar@1.2.3 (cycle)
    -|   `-- asdf@*
    -`-- baz@1.2.3
    -    `-- quux@3.x
    -        `-- bar
    -

    In this case, we might expect a folder structure like this:

    -
    foo
    -+-- node_modules
    -    +-- blerg (1.2.5) <---[A]
    -    +-- bar (1.2.3) <---[B]
    -    |   `-- node_modules
    -    |       +-- baz (2.0.2) <---[C]
    -    |       |   `-- node_modules
    -    |       |       `-- quux (3.2.0)
    -    |       `-- asdf (2.3.4)
    -    `-- baz (1.2.3) <---[D]
    -        `-- node_modules
    -            `-- quux (3.2.0) <---[E]
    -

    Since foo depends directly on bar@1.2.3 and baz@1.2.3, those are -installed in foo's node_modules folder.

    -

    Even though the latest copy of blerg is 1.3.7, foo has a specific -dependency on version 1.2.5. So, that gets installed at [A]. Since the -parent installation of blerg satisfies bar's dependency on blerg@1.x, -it does not install another copy under [B].

    -

    Bar [B] also has dependencies on baz and asdf, so those are installed in -bar's node_modules folder. Because it depends on baz@2.x, it cannot -re-use the baz@1.2.3 installed in the parent node_modules folder [D], -and must install its own copy [C].

    -

    Underneath bar, the baz -> quux -> bar dependency creates a cycle. -However, because bar is already in quux's ancestry [B], it does not -unpack another copy of bar into that folder.

    -

    Underneath foo -> baz [D], quux's [E] folder tree is empty, because its -dependency on bar is satisfied by the parent folder copy installed at [B].

    -

    For a graphical breakdown of what is installed where, use npm ls.

    -

    Publishing

    -

    Upon publishing, npm will look in the node_modules folder. If any of -the items there are not in the bundledDependencies array, then they will -not be included in the package tarball.

    -

    This allows a package maintainer to install all of their dependencies -(and dev dependencies) locally, but only re-publish those items that -cannot be found elsewhere. See package.json(5) for more information.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/files/npm-json.html b/deps/npm/html/partial/doc/files/npm-json.html deleted file mode 100644 index b2e54ba742ed..000000000000 --- a/deps/npm/html/partial/doc/files/npm-json.html +++ /dev/null @@ -1,545 +0,0 @@ -

    package.json

    Specifics of npm's package.json handling

    -

    DESCRIPTION

    -

    This document is all you need to know about what's required in your package.json -file. It must be actual JSON, not just a JavaScript object literal.

    -

    A lot of the behavior described in this document is affected by the config -settings described in npm-config(7).

    -

    name

    -

    The most important things in your package.json are the name and version fields. -Those are actually required, and your package won't install without -them. The name and version together form an identifier that is assumed -to be completely unique. Changes to the package should come along with -changes to the version.

    -

    The name is what your thing is called.

    -

    Some rules:

    -
      -
    • The name must be shorter than 214 characters. This includes the scope for -scoped packages.
    • -
    • The name can't start with a dot or an underscore.
    • -
    • New packages must not have uppercase letters in the name.
    • -
    • The name ends up being part of a URL, an argument on the command line, and a -folder name. Therefore, the name can't contain any non-URL-safe characters.
    • -
    -

    Some tips:

    -
      -
    • Don't use the same name as a core Node module.
    • -
    • Don't put "js" or "node" in the name. It's assumed that it's js, since you're -writing a package.json file, and you can specify the engine using the "engines" -field. (See below.)
    • -
    • The name will probably be passed as an argument to require(), so it should -be something short, but also reasonably descriptive.
    • -
    • You may want to check the npm registry to see if there's something by that name -already, before you get too attached to it. https://www.npmjs.com/
    • -
    -

    A name can be optionally prefixed by a scope, e.g. @myorg/mypackage. See -npm-scope(7) for more detail.

    -

    version

    -

    The most important things in your package.json are the name and version fields. -Those are actually required, and your package won't install without -them. The name and version together form an identifier that is assumed -to be completely unique. Changes to the package should come along with -changes to the version.

    -

    Version must be parseable by -node-semver, which is bundled -with npm as a dependency. (npm install semver to use it yourself.)

    -

    More on version numbers and ranges at semver(7).

    -

    description

    -

    Put a description in it. It's a string. This helps people discover your -package, as it's listed in npm search.

    -

    keywords

    -

    Put keywords in it. It's an array of strings. This helps people -discover your package as it's listed in npm search.

    -

    homepage

    -

    The url to the project homepage.

    -

    NOTE: This is not the same as "url". If you put a "url" field, -then the registry will think it's a redirection to your package that has -been published somewhere else, and spit at you.

    -

    Literally. Spit. I'm so not kidding.

    -

    bugs

    -

    The url to your project's issue tracker and / or the email address to which -issues should be reported. These are helpful for people who encounter issues -with your package.

    -

    It should look like this:

    -
    { "url" : "https://github.com/owner/project/issues"
    -, "email" : "project@hostname.com"
    -}
    -

    You can specify either one or both values. If you want to provide only a url, -you can specify the value for "bugs" as a simple string instead of an object.

    -

    If a url is provided, it will be used by the npm bugs command.

    -

    license

    -

    You should specify a license for your package so that people know how they are -permitted to use it, and any restrictions you're placing on it.

    -

    If you're using a common license such as BSD-2-Clause or MIT, add a -current SPDX license identifier for the license you're using, like this:

    -
    { "license" : "BSD-3-Clause" }
    -

    You can check the full list of SPDX license IDs. -Ideally you should pick one that is -OSI approved.

    -

    If your package is licensed under multiple common licenses, use an SPDX license -expression syntax version 2.0 string, like this:

    -
    { "license" : "(ISC OR GPL-3.0)" }
    -

    If you are using a license that hasn't been assigned an SPDX identifier, or if -you are using a custom license, use the following valid SPDX expression:

    -
    { "license" : "SEE LICENSE IN <filename>" }
    -

    Then include a file named <filename> at the top level of the package.

    -

    Some old packages used license objects or a "licenses" property containing an -array of license objects:

    -
    // Not valid metadata
    -{ "license" :
    -  { "type" : "ISC"
    -  , "url" : "http://opensource.org/licenses/ISC"
    -  }
    -}
    -
    -// Not valid metadata
    -{ "licenses" :
    -  [
    -    { "type": "MIT"
    -    , "url": "http://www.opensource.org/licenses/mit-license.php"
    -    }
    -  , { "type": "Apache-2.0"
    -    , "url": "http://opensource.org/licenses/apache2.0.php"
    -    }
    -  ]
    -}
    -

    Those styles are now deprecated. Instead, use SPDX expressions, like this:

    -
    { "license": "ISC" }
    -
    -{ "license": "(MIT OR Apache-2.0)" }
    -

    Finally, if you do not wish to grant others the right to use a private or -unpublished package under any terms:

    -
    { "license": "UNLICENSED"}
    -

    Consider also setting "private": true to prevent accidental publication.

    -

    people fields: author, contributors

    -

    The "author" is one person. "contributors" is an array of people. A "person" -is an object with a "name" field and optionally "url" and "email", like this:

    -
    { "name" : "Barney Rubble"
    -, "email" : "b@rubble.com"
    -, "url" : "http://barnyrubble.tumblr.com/"
    -}
    -

    Or you can shorten that all into a single string, and npm will parse it for you:

    -
    "Barney Rubble <b@rubble.com> (http://barnyrubble.tumblr.com/)"
    -

    Both email and url are optional either way.

    -

    npm also sets a top-level "maintainers" field with your npm user info.

    -

    files

    -

    The "files" field is an array of files to include in your project. If -you name a folder in the array, then it will also include the files -inside that folder. (Unless they would be ignored by another rule.)

    -

    You can also provide a ".npmignore" file in the root of your package, -which will keep files from being included, even if they would be picked -up by the files array. The ".npmignore" file works just like a -".gitignore".

    -

    Certain files are always included, regardless of settings:

    -
      -
    • package.json
    • -
    • README (and its variants)
    • -
    • CHANGELOG (and its variants)
    • -
    • LICENSE / LICENCE
    • -
    -

    Conversely, some files are always ignored:

    -
      -
    • .git
    • -
    • CVS
    • -
    • .svn
    • -
    • .hg
    • -
    • .lock-wscript
    • -
    • .wafpickle-N
    • -
    • *.swp
    • -
    • .DS_Store
    • -
    • ._*
    • -
    • npm-debug.log
    • -
    -

    main

    -

    The main field is a module ID that is the primary entry point to your program. -That is, if your package is named foo, and a user installs it, and then does -require("foo"), then your main module's exports object will be returned.

    -

    This should be a module ID relative to the root of your package folder.

    -

    For most modules, it makes the most sense to have a main script and often not -much else.

    -

    bin

    -

    A lot of packages have one or more executable files that they'd like to -install into the PATH. npm makes this pretty easy (in fact, it uses this -feature to install the "npm" executable.)

    -

    To use this, supply a bin field in your package.json which is a map of -command name to local file name. On install, npm will symlink that file into -prefix/bin for global installs, or ./node_modules/.bin/ for local -installs.

    -

    For example, myapp could have this:

    -
    { "bin" : { "myapp" : "./cli.js" } }
    -

    So, when you install myapp, it'll create a symlink from the cli.js script to -/usr/local/bin/myapp.

    -

    If you have a single executable, and its name should be the name -of the package, then you can just supply it as a string. For example:

    -
    { "name": "my-program"
    -, "version": "1.2.5"
    -, "bin": "./path/to/program" }
    -

    would be the same as this:

    -
    { "name": "my-program"
    -, "version": "1.2.5"
    -, "bin" : { "my-program" : "./path/to/program" } }
    -

    man

    -

    Specify either a single file or an array of filenames to put in place for the -man program to find.

    -

    If only a single file is provided, then it's installed such that it is the -result from man <pkgname>, regardless of its actual filename. For example:

    -
    { "name" : "foo"
    -, "version" : "1.2.3"
    -, "description" : "A packaged foo fooer for fooing foos"
    -, "main" : "foo.js"
    -, "man" : "./man/doc.1"
    -}
    -

    would link the ./man/doc.1 file in such that it is the target for man foo

    -

    If the filename doesn't start with the package name, then it's prefixed. -So, this:

    -
    { "name" : "foo"
    -, "version" : "1.2.3"
    -, "description" : "A packaged foo fooer for fooing foos"
    -, "main" : "foo.js"
    -, "man" : [ "./man/foo.1", "./man/bar.1" ]
    -}
    -

    will create files to do man foo and man foo-bar.

    -

    Man files must end with a number, and optionally a .gz suffix if they are -compressed. The number dictates which man section the file is installed into.

    -
    { "name" : "foo"
    -, "version" : "1.2.3"
    -, "description" : "A packaged foo fooer for fooing foos"
    -, "main" : "foo.js"
    -, "man" : [ "./man/foo.1", "./man/foo.2" ]
    -}
    -

    will create entries for man foo and man 2 foo

    -

    directories

    -

    The CommonJS Packages spec details a -few ways that you can indicate the structure of your package using a directories -object. If you look at npm's package.json, -you'll see that it has directories for doc, lib, and man.

    -

    In the future, this information may be used in other creative ways.

    -

    directories.lib

    -

    Tell people where the bulk of your library is. Nothing special is done -with the lib folder in any way, but it's useful meta info.

    -

    directories.bin

    -

    If you specify a bin directory in directories.bin, all the files in -that folder will be added.

    -

    Because of the way the bin directive works, specifying both a -bin path and setting directories.bin is an error. If you want to -specify individual files, use bin, and for all the files in an -existing bin directory, use directories.bin.

    -

    directories.man

    -

    A folder that is full of man pages. Sugar to generate a "man" array by -walking the folder.

    -

    directories.doc

    -

    Put markdown files in here. Eventually, these will be displayed nicely, -maybe, someday.

    -

    directories.example

    -

    Put example scripts in here. Someday, it might be exposed in some clever way.

    -

    repository

    -

    Specify the place where your code lives. This is helpful for people who -want to contribute. If the git repo is on GitHub, then the npm docs -command will be able to find you.

    -

    Do it like this:

    -
    "repository" :
    -  { "type" : "git"
    -  , "url" : "https://github.com/npm/npm.git"
    -  }
    -
    -"repository" :
    -  { "type" : "svn"
    -  , "url" : "https://v8.googlecode.com/svn/trunk/"
    -  }
    -

    The URL should be a publicly available (perhaps read-only) url that can be handed -directly to a VCS program without any modification. It should not be a url to an -html project page that you put in your browser. It's for computers.

    -

    For GitHub, GitHub gist, Bitbucket, or GitLab repositories you can use the same -shortcut syntax you use for npm install:

    -
    "repository": "npm/npm"
    -
    -"repository": "gist:11081aaa281"
    -
    -"repository": "bitbucket:example/repo"
    -
    -"repository": "gitlab:another/repo"
    -

    scripts

    -

    The "scripts" property is a dictionary containing script commands that are run -at various times in the lifecycle of your package. The key is the lifecycle -event, and the value is the command to run at that point.

    -

    See npm-scripts(7) to find out more about writing package scripts.

    -

    config

    -

    A "config" object can be used to set configuration parameters used in package -scripts that persist across upgrades. For instance, if a package had the -following:

    -
    { "name" : "foo"
    -, "config" : { "port" : "8080" } }
    -

    and then had a "start" command that then referenced the -npm_package_config_port environment variable, then the user could -override that by doing npm config set foo:port 8001.

    -

    See npm-config(7) and npm-scripts(7) for more on package -configs.

    -

    dependencies

    -

    Dependencies are specified in a simple object that maps a package name to a -version range. The version range is a string which has one or more -space-separated descriptors. Dependencies can also be identified with a -tarball or git URL.

    -

    Please do not put test harnesses or transpilers in your -dependencies object. See devDependencies, below.

    -

    See semver(7) for more details about specifying version ranges.

    -
      -
    • version Must match version exactly
    • -
    • >version Must be greater than version
    • -
    • >=version etc
    • -
    • <version
    • -
    • <=version
    • -
    • ~version "Approximately equivalent to version" See semver(7)
    • -
    • ^version "Compatible with version" See semver(7)
    • -
    • 1.2.x 1.2.0, 1.2.1, etc., but not 1.3.0
    • -
    • http://... See 'URLs as Dependencies' below
    • -
    • * Matches any version
    • -
    • "" (just an empty string) Same as *
    • -
    • version1 - version2 Same as >=version1 <=version2.
    • -
    • range1 || range2 Passes if either range1 or range2 are satisfied.
    • -
    • git... See 'Git URLs as Dependencies' below
    • -
    • user/repo See 'GitHub URLs' below
    • -
    • tag A specific version tagged and published as tag See npm-tag(1)
    • -
    • path/path/path See Local Paths below
    • -
    -

    For example, these are all valid:

    -
    { "dependencies" :
    -  { "foo" : "1.0.0 - 2.9999.9999"
    -  , "bar" : ">=1.0.2 <2.1.2"
    -  , "baz" : ">1.0.2 <=2.3.4"
    -  , "boo" : "2.0.1"
    -  , "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"
    -  , "asd" : "http://asdf.com/asdf.tar.gz"
    -  , "til" : "~1.2"
    -  , "elf" : "~1.2.3"
    -  , "two" : "2.x"
    -  , "thr" : "3.3.x"
    -  , "lat" : "latest"
    -  , "dyl" : "file:../dyl"
    -  }
    -}
    -

    URLs as Dependencies

    -

    You may specify a tarball URL in place of a version range.

    -

    This tarball will be downloaded and installed locally to your package at -install time.

    -

    Git URLs as Dependencies

    -

    Git urls can be of the form:

    -
    git://github.com/user/project.git#commit-ish
    -git+ssh://user@hostname:project.git#commit-ish
    -git+ssh://user@hostname/project.git#commit-ish
    -git+http://user@hostname/project/blah.git#commit-ish
    -git+https://user@hostname/project/blah.git#commit-ish
    -

    The commit-ish can be any tag, sha, or branch which can be supplied as -an argument to git checkout. The default is master.

    -

    GitHub URLs

    -

    As of version 1.1.65, you can refer to GitHub urls as just "foo": -"user/foo-project". Just as with git URLs, a commit-ish suffix can be -included. For example:

    -
    {
    -  "name": "foo",
    -  "version": "0.0.0",
    -  "dependencies": {
    -    "express": "visionmedia/express",
    -    "mocha": "visionmedia/mocha#4727d357ea"
    -  }
    -}
    -

    Local Paths

    -

    As of version 2.0.0 you can provide a path to a local directory that contains a -package. Local paths can be saved using npm install --save, using any of -these forms:

    -
    ../foo/bar
    -~/foo/bar
    -./foo/bar
    -/foo/bar
    -

    in which case they will be normalized to a relative path and added to your -package.json. For example:

    -
    {
    -  "name": "baz",
    -  "dependencies": {
    -    "bar": "file:../foo/bar"
    -  }
    -}
    -

    This feature is helpful for local offline development and creating -tests that require npm installing where you don't want to hit an -external server, but should not be used when publishing packages -to the public registry.

    -

    devDependencies

    -

    If someone is planning on downloading and using your module in their -program, then they probably don't want or need to download and build -the external test or documentation framework that you use.

    -

    In this case, it's best to map these additional items in a devDependencies -object.

    -

    These things will be installed when doing npm link or npm install -from the root of a package, and can be managed like any other npm -configuration param. See npm-config(7) for more on the topic.

    -

    For build steps that are not platform-specific, such as compiling -CoffeeScript or other languages to JavaScript, use the prepublish -script to do this, and make the required package a devDependency.

    -

    For example:

    -
    { "name": "ethopia-waza",
    -  "description": "a delightfully fruity coffee varietal",
    -  "version": "1.2.3",
    -  "devDependencies": {
    -    "coffee-script": "~1.6.3"
    -  },
    -  "scripts": {
    -    "prepublish": "coffee -o lib/ -c src/waza.coffee"
    -  },
    -  "main": "lib/waza.js"
    -}
    -

    The prepublish script will be run before publishing, so that users -can consume the functionality without requiring them to compile it -themselves. In dev mode (ie, locally running npm install), it'll -run this script as well, so that you can test it easily.

    -

    peerDependencies

    -

    In some cases, you want to express the compatibility of your package with a -host tool or library, while not necessarily doing a require of this host. -This is usually referred to as a plugin. Notably, your module may be exposing -a specific interface, expected and specified by the host documentation.

    -

    For example:

    -
    {
    -  "name": "tea-latte",
    -  "version": "1.3.5",
    -  "peerDependencies": {
    -    "tea": "2.x"
    -  }
    -}
    -

    This ensures your package tea-latte can be installed along with the second -major version of the host package tea only. npm install tea-latte could -possibly yield the following dependency graph:

    -
    ├── tea-latte@1.3.5
    -└── tea@2.2.0
    -

    NOTE: npm versions 1 and 2 will automatically install peerDependencies if -they are not explicitly depended upon higher in the dependency tree. In the -next major version of npm (npm@3), this will no longer be the case. You will -receive a warning that the peerDependency is not installed instead. The -behavior in npms 1 & 2 was frequently confusing and could easily put you into -dependency hell, a situation that npm is designed to avoid as much as possible.

    -

    Trying to install another plugin with a conflicting requirement will cause an -error. For this reason, make sure your plugin requirement is as broad as -possible, and not to lock it down to specific patch versions.

    -

    Assuming the host complies with semver, only changes in -the host package's major version will break your plugin. Thus, if you've worked -with every 1.x version of the host package, use "^1.0" or "1.x" to express -this. If you depend on features introduced in 1.5.2, use ">= 1.5.2 < 2".

    -

    bundledDependencies

    -

    Array of package names that will be bundled when publishing the package.

    -

    If this is spelled "bundleDependencies", then that is also honorable.

    -

    optionalDependencies

    -

    If a dependency can be used, but you would like npm to proceed if it cannot be -found or fails to install, then you may put it in the optionalDependencies -object. This is a map of package name to version or url, just like the -dependencies object. The difference is that build failures do not cause -installation to fail.

    -

    It is still your program's responsibility to handle the lack of the -dependency. For example, something like this:

    -
    try {
    -  var foo = require('foo')
    -  var fooVersion = require('foo/package.json').version
    -} catch (er) {
    -  foo = null
    -}
    -if ( notGoodFooVersion(fooVersion) ) {
    -  foo = null
    -}
    -
    -// .. then later in your program ..
    -
    -if (foo) {
    -  foo.doFooThings()
    -}
    -

    Entries in optionalDependencies will override entries of the same name in -dependencies, so it's usually best to only put in one place.

    -

    engines

    -

    You can specify the version of node that your stuff works on:

    -
    { "engines" : { "node" : ">=0.10.3 <0.12" } }
    -

    And, like with dependencies, if you don't specify the version (or if you -specify "*" as the version), then any version of node will do.

    -

    If you specify an "engines" field, then npm will require that "node" be -somewhere on that list. If "engines" is omitted, then npm will just assume -that it works on node.

    -

    You can also use the "engines" field to specify which versions of npm -are capable of properly installing your program. For example:

    -
    { "engines" : { "npm" : "~1.0.20" } }
    -

    Note that, unless the user has set the engine-strict config flag, this -field is advisory only.

    -

    engineStrict

    -

    NOTE: This feature is deprecated and will be removed in npm 3.0.0.

    -

    If you are sure that your module will definitely not run properly on -versions of Node/npm other than those specified in the engines object, -then you can set "engineStrict": true in your package.json file. -This will override the user's engine-strict config setting.

    -

    Please do not do this unless you are really very very sure. If your -engines object is something overly restrictive, you can quite easily and -inadvertently lock yourself into obscurity and prevent your users from -updating to new versions of Node. Consider this choice carefully.

    -

    os

    -

    You can specify which operating systems your -module will run on:

    -
    "os" : [ "darwin", "linux" ]
    -

    You can also blacklist instead of whitelist operating systems, -just prepend the blacklisted os with a '!':

    -
    "os" : [ "!win32" ]
    -

    The host operating system is determined by process.platform

    -

    It is allowed to both blacklist, and whitelist, although there isn't any -good reason to do this.

    -

    cpu

    -

    If your code only runs on certain cpu architectures, -you can specify which ones.

    -
    "cpu" : [ "x64", "ia32" ]
    -

    Like the os option, you can also blacklist architectures:

    -
    "cpu" : [ "!arm", "!mips" ]
    -

    The host architecture is determined by process.arch

    -

    preferGlobal

    -

    If your package is primarily a command-line application that should be -installed globally, then set this value to true to provide a warning -if it is installed locally.

    -

    It doesn't actually prevent users from installing it locally, but it -does help prevent some confusion if it doesn't work as expected.

    -

    private

    -

    If you set "private": true in your package.json, then npm will refuse -to publish it.

    -

    This is a way to prevent accidental publication of private repositories. If -you would like to ensure that a given package is only ever published to a -specific registry (for example, an internal registry), then use the -publishConfig dictionary described below to override the registry config -param at publish-time.

    -

    publishConfig

    -

    This is a set of config values that will be used at publish-time. It's -especially handy if you want to set the tag, registry or access, so that -you can ensure that a given package is not tagged with "latest", published -to the global public registry or that a scoped module is private by default.

    -

    Any config values can be overridden, but of course only "tag", "registry" and -"access" probably matter for the purposes of publishing.

    -

    See npm-config(7) to see the list of config options that can be -overridden.

    -

    DEFAULT VALUES

    -

    npm will default some values based on package contents.

    -
      -
    • "scripts": {"start": "node server.js"}

      -

      If there is a server.js file in the root of your package, then npm -will default the start command to node server.js.

      -
    • -
    • "scripts":{"preinstall": "node-gyp rebuild"}

      -

      If there is a binding.gyp file in the root of your package, npm will -default the preinstall command to compile using node-gyp.

      -
    • -
    • "contributors": [...]

      -

      If there is an AUTHORS file in the root of your package, npm will -treat each line as a Name <email> (url) format, where email and url -are optional. Lines which start with a # or are blank, will be -ignored.

      -
    • -
    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/files/npmrc.html b/deps/npm/html/partial/doc/files/npmrc.html deleted file mode 100644 index ed1eb0295fa5..000000000000 --- a/deps/npm/html/partial/doc/files/npmrc.html +++ /dev/null @@ -1,63 +0,0 @@ -

    npmrc

    The npm config files

    -

    DESCRIPTION

    -

    npm gets its config settings from the command line, environment -variables, and npmrc files.

    -

    The npm config command can be used to update and edit the contents -of the user and global npmrc files.

    -

    For a list of available configuration options, see npm-config(7).

    -

    FILES

    -

    The four relevant files are:

    -
      -
    • per-project config file (/path/to/my/project/.npmrc)
    • -
    • per-user config file (~/.npmrc)
    • -
    • global config file ($PREFIX/etc/npmrc)
    • -
    • npm builtin config file (/path/to/npm/npmrc)
    • -
    -

    All npm config files are an ini-formatted list of key = value -parameters. Environment variables can be replaced using -${VARIABLE_NAME}. For example:

    -
    prefix = ${HOME}/.npm-packages
    -

    Each of these files is loaded, and config options are resolved in -priority order. For example, a setting in the userconfig file would -override the setting in the globalconfig file.

    -

    Array values are specified by adding "[]" after the key name. For -example:

    -
    key[] = "first value"
    -key[] = "second value"
    -

    NOTE: Because local (per-project or per-user) .npmrc files can contain -sensitive credentials, they must be readable and writable only by your user -account (i.e. must have a mode of 0600), otherwise they will be ignored by -npm!

    -

    Per-project config file

    -

    When working locally in a project, a .npmrc file in the root of the -project (ie, a sibling of node_modules and package.json) will set -config values specific to this project.

    -

    Note that this only applies to the root of the project that you're -running npm in. It has no effect when your module is published. For -example, you can't publish a module that forces itself to install -globally, or in a different location.

    -

    Additionally, this file is not read in global mode, such as when running -npm install -g.

    -

    Per-user config file

    -

    $HOME/.npmrc (or the userconfig param, if set in the environment -or on the command line)

    -

    Global config file

    -

    $PREFIX/etc/npmrc (or the globalconfig param, if set above): -This file is an ini-file formatted list of key = value parameters. -Environment variables can be replaced as above.

    -

    Built-in config file

    -

    path/to/npm/itself/npmrc

    -

    This is an unchangeable "builtin" configuration file that npm keeps -consistent across updates. Set fields in here using the ./configure -script that comes with npm. This is primarily for distribution -maintainers to override default configs in a standard and consistent -manner.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/files/package.json.html b/deps/npm/html/partial/doc/files/package.json.html deleted file mode 100644 index b2e54ba742ed..000000000000 --- a/deps/npm/html/partial/doc/files/package.json.html +++ /dev/null @@ -1,545 +0,0 @@ -

    package.json

    Specifics of npm's package.json handling

    -

    DESCRIPTION

    -

    This document is all you need to know about what's required in your package.json -file. It must be actual JSON, not just a JavaScript object literal.

    -

    A lot of the behavior described in this document is affected by the config -settings described in npm-config(7).

    -

    name

    -

    The most important things in your package.json are the name and version fields. -Those are actually required, and your package won't install without -them. The name and version together form an identifier that is assumed -to be completely unique. Changes to the package should come along with -changes to the version.

    -

    The name is what your thing is called.

    -

    Some rules:

    -
      -
    • The name must be shorter than 214 characters. This includes the scope for -scoped packages.
    • -
    • The name can't start with a dot or an underscore.
    • -
    • New packages must not have uppercase letters in the name.
    • -
    • The name ends up being part of a URL, an argument on the command line, and a -folder name. Therefore, the name can't contain any non-URL-safe characters.
    • -
    -

    Some tips:

    -
      -
    • Don't use the same name as a core Node module.
    • -
    • Don't put "js" or "node" in the name. It's assumed that it's js, since you're -writing a package.json file, and you can specify the engine using the "engines" -field. (See below.)
    • -
    • The name will probably be passed as an argument to require(), so it should -be something short, but also reasonably descriptive.
    • -
    • You may want to check the npm registry to see if there's something by that name -already, before you get too attached to it. https://www.npmjs.com/
    • -
    -

    A name can be optionally prefixed by a scope, e.g. @myorg/mypackage. See -npm-scope(7) for more detail.

    -

    version

    -

    The most important things in your package.json are the name and version fields. -Those are actually required, and your package won't install without -them. The name and version together form an identifier that is assumed -to be completely unique. Changes to the package should come along with -changes to the version.

    -

    Version must be parseable by -node-semver, which is bundled -with npm as a dependency. (npm install semver to use it yourself.)

    -

    More on version numbers and ranges at semver(7).

    -

    description

    -

    Put a description in it. It's a string. This helps people discover your -package, as it's listed in npm search.

    -

    keywords

    -

    Put keywords in it. It's an array of strings. This helps people -discover your package as it's listed in npm search.

    -

    homepage

    -

    The url to the project homepage.

    -

    NOTE: This is not the same as "url". If you put a "url" field, -then the registry will think it's a redirection to your package that has -been published somewhere else, and spit at you.

    -

    Literally. Spit. I'm so not kidding.

    -

    bugs

    -

    The url to your project's issue tracker and / or the email address to which -issues should be reported. These are helpful for people who encounter issues -with your package.

    -

    It should look like this:

    -
    { "url" : "https://github.com/owner/project/issues"
    -, "email" : "project@hostname.com"
    -}
    -

    You can specify either one or both values. If you want to provide only a url, -you can specify the value for "bugs" as a simple string instead of an object.

    -

    If a url is provided, it will be used by the npm bugs command.

    -

    license

    -

    You should specify a license for your package so that people know how they are -permitted to use it, and any restrictions you're placing on it.

    -

    If you're using a common license such as BSD-2-Clause or MIT, add a -current SPDX license identifier for the license you're using, like this:

    -
    { "license" : "BSD-3-Clause" }
    -

    You can check the full list of SPDX license IDs. -Ideally you should pick one that is -OSI approved.

    -

    If your package is licensed under multiple common licenses, use an SPDX license -expression syntax version 2.0 string, like this:

    -
    { "license" : "(ISC OR GPL-3.0)" }
    -

    If you are using a license that hasn't been assigned an SPDX identifier, or if -you are using a custom license, use the following valid SPDX expression:

    -
    { "license" : "SEE LICENSE IN <filename>" }
    -

    Then include a file named <filename> at the top level of the package.

    -

    Some old packages used license objects or a "licenses" property containing an -array of license objects:

    -
    // Not valid metadata
    -{ "license" :
    -  { "type" : "ISC"
    -  , "url" : "http://opensource.org/licenses/ISC"
    -  }
    -}
    -
    -// Not valid metadata
    -{ "licenses" :
    -  [
    -    { "type": "MIT"
    -    , "url": "http://www.opensource.org/licenses/mit-license.php"
    -    }
    -  , { "type": "Apache-2.0"
    -    , "url": "http://opensource.org/licenses/apache2.0.php"
    -    }
    -  ]
    -}
    -

    Those styles are now deprecated. Instead, use SPDX expressions, like this:

    -
    { "license": "ISC" }
    -
    -{ "license": "(MIT OR Apache-2.0)" }
    -

    Finally, if you do not wish to grant others the right to use a private or -unpublished package under any terms:

    -
    { "license": "UNLICENSED"}
    -

    Consider also setting "private": true to prevent accidental publication.

    -

    people fields: author, contributors

    -

    The "author" is one person. "contributors" is an array of people. A "person" -is an object with a "name" field and optionally "url" and "email", like this:

    -
    { "name" : "Barney Rubble"
    -, "email" : "b@rubble.com"
    -, "url" : "http://barnyrubble.tumblr.com/"
    -}
    -

    Or you can shorten that all into a single string, and npm will parse it for you:

    -
    "Barney Rubble <b@rubble.com> (http://barnyrubble.tumblr.com/)"
    -

    Both email and url are optional either way.

    -

    npm also sets a top-level "maintainers" field with your npm user info.

    -

    files

    -

    The "files" field is an array of files to include in your project. If -you name a folder in the array, then it will also include the files -inside that folder. (Unless they would be ignored by another rule.)

    -

    You can also provide a ".npmignore" file in the root of your package, -which will keep files from being included, even if they would be picked -up by the files array. The ".npmignore" file works just like a -".gitignore".

    -

    Certain files are always included, regardless of settings:

    -
      -
    • package.json
    • -
    • README (and its variants)
    • -
    • CHANGELOG (and its variants)
    • -
    • LICENSE / LICENCE
    • -
    -

    Conversely, some files are always ignored:

    -
      -
    • .git
    • -
    • CVS
    • -
    • .svn
    • -
    • .hg
    • -
    • .lock-wscript
    • -
    • .wafpickle-N
    • -
    • *.swp
    • -
    • .DS_Store
    • -
    • ._*
    • -
    • npm-debug.log
    • -
    -

    main

    -

    The main field is a module ID that is the primary entry point to your program. -That is, if your package is named foo, and a user installs it, and then does -require("foo"), then your main module's exports object will be returned.

    -

    This should be a module ID relative to the root of your package folder.

    -

    For most modules, it makes the most sense to have a main script and often not -much else.

    -

    bin

    -

    A lot of packages have one or more executable files that they'd like to -install into the PATH. npm makes this pretty easy (in fact, it uses this -feature to install the "npm" executable.)

    -

    To use this, supply a bin field in your package.json which is a map of -command name to local file name. On install, npm will symlink that file into -prefix/bin for global installs, or ./node_modules/.bin/ for local -installs.

    -

    For example, myapp could have this:

    -
    { "bin" : { "myapp" : "./cli.js" } }
    -

    So, when you install myapp, it'll create a symlink from the cli.js script to -/usr/local/bin/myapp.

    -

    If you have a single executable, and its name should be the name -of the package, then you can just supply it as a string. For example:

    -
    { "name": "my-program"
    -, "version": "1.2.5"
    -, "bin": "./path/to/program" }
    -

    would be the same as this:

    -
    { "name": "my-program"
    -, "version": "1.2.5"
    -, "bin" : { "my-program" : "./path/to/program" } }
    -

    man

    -

    Specify either a single file or an array of filenames to put in place for the -man program to find.

    -

    If only a single file is provided, then it's installed such that it is the -result from man <pkgname>, regardless of its actual filename. For example:

    -
    { "name" : "foo"
    -, "version" : "1.2.3"
    -, "description" : "A packaged foo fooer for fooing foos"
    -, "main" : "foo.js"
    -, "man" : "./man/doc.1"
    -}
    -

    would link the ./man/doc.1 file in such that it is the target for man foo

    -

    If the filename doesn't start with the package name, then it's prefixed. -So, this:

    -
    { "name" : "foo"
    -, "version" : "1.2.3"
    -, "description" : "A packaged foo fooer for fooing foos"
    -, "main" : "foo.js"
    -, "man" : [ "./man/foo.1", "./man/bar.1" ]
    -}
    -

    will create files to do man foo and man foo-bar.

    -

    Man files must end with a number, and optionally a .gz suffix if they are -compressed. The number dictates which man section the file is installed into.

    -
    { "name" : "foo"
    -, "version" : "1.2.3"
    -, "description" : "A packaged foo fooer for fooing foos"
    -, "main" : "foo.js"
    -, "man" : [ "./man/foo.1", "./man/foo.2" ]
    -}
    -

    will create entries for man foo and man 2 foo

    -

    directories

    -

    The CommonJS Packages spec details a -few ways that you can indicate the structure of your package using a directories -object. If you look at npm's package.json, -you'll see that it has directories for doc, lib, and man.

    -

    In the future, this information may be used in other creative ways.

    -

    directories.lib

    -

    Tell people where the bulk of your library is. Nothing special is done -with the lib folder in any way, but it's useful meta info.

    -

    directories.bin

    -

    If you specify a bin directory in directories.bin, all the files in -that folder will be added.

    -

    Because of the way the bin directive works, specifying both a -bin path and setting directories.bin is an error. If you want to -specify individual files, use bin, and for all the files in an -existing bin directory, use directories.bin.

    -

    directories.man

    -

    A folder that is full of man pages. Sugar to generate a "man" array by -walking the folder.

    -

    directories.doc

    -

    Put markdown files in here. Eventually, these will be displayed nicely, -maybe, someday.

    -

    directories.example

    -

    Put example scripts in here. Someday, it might be exposed in some clever way.

    -

    repository

    -

    Specify the place where your code lives. This is helpful for people who -want to contribute. If the git repo is on GitHub, then the npm docs -command will be able to find you.

    -

    Do it like this:

    -
    "repository" :
    -  { "type" : "git"
    -  , "url" : "https://github.com/npm/npm.git"
    -  }
    -
    -"repository" :
    -  { "type" : "svn"
    -  , "url" : "https://v8.googlecode.com/svn/trunk/"
    -  }
    -

    The URL should be a publicly available (perhaps read-only) url that can be handed -directly to a VCS program without any modification. It should not be a url to an -html project page that you put in your browser. It's for computers.

    -

    For GitHub, GitHub gist, Bitbucket, or GitLab repositories you can use the same -shortcut syntax you use for npm install:

    -
    "repository": "npm/npm"
    -
    -"repository": "gist:11081aaa281"
    -
    -"repository": "bitbucket:example/repo"
    -
    -"repository": "gitlab:another/repo"
    -

    scripts

    -

    The "scripts" property is a dictionary containing script commands that are run -at various times in the lifecycle of your package. The key is the lifecycle -event, and the value is the command to run at that point.

    -

    See npm-scripts(7) to find out more about writing package scripts.

    -

    config

    -

    A "config" object can be used to set configuration parameters used in package -scripts that persist across upgrades. For instance, if a package had the -following:

    -
    { "name" : "foo"
    -, "config" : { "port" : "8080" } }
    -

    and then had a "start" command that then referenced the -npm_package_config_port environment variable, then the user could -override that by doing npm config set foo:port 8001.

    -

    See npm-config(7) and npm-scripts(7) for more on package -configs.

    -

    dependencies

    -

    Dependencies are specified in a simple object that maps a package name to a -version range. The version range is a string which has one or more -space-separated descriptors. Dependencies can also be identified with a -tarball or git URL.

    -

    Please do not put test harnesses or transpilers in your -dependencies object. See devDependencies, below.

    -

    See semver(7) for more details about specifying version ranges.

    -
      -
    • version Must match version exactly
    • -
    • >version Must be greater than version
    • -
    • >=version etc
    • -
    • <version
    • -
    • <=version
    • -
    • ~version "Approximately equivalent to version" See semver(7)
    • -
    • ^version "Compatible with version" See semver(7)
    • -
    • 1.2.x 1.2.0, 1.2.1, etc., but not 1.3.0
    • -
    • http://... See 'URLs as Dependencies' below
    • -
    • * Matches any version
    • -
    • "" (just an empty string) Same as *
    • -
    • version1 - version2 Same as >=version1 <=version2.
    • -
    • range1 || range2 Passes if either range1 or range2 are satisfied.
    • -
    • git... See 'Git URLs as Dependencies' below
    • -
    • user/repo See 'GitHub URLs' below
    • -
    • tag A specific version tagged and published as tag See npm-tag(1)
    • -
    • path/path/path See Local Paths below
    • -
    -

    For example, these are all valid:

    -
    { "dependencies" :
    -  { "foo" : "1.0.0 - 2.9999.9999"
    -  , "bar" : ">=1.0.2 <2.1.2"
    -  , "baz" : ">1.0.2 <=2.3.4"
    -  , "boo" : "2.0.1"
    -  , "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"
    -  , "asd" : "http://asdf.com/asdf.tar.gz"
    -  , "til" : "~1.2"
    -  , "elf" : "~1.2.3"
    -  , "two" : "2.x"
    -  , "thr" : "3.3.x"
    -  , "lat" : "latest"
    -  , "dyl" : "file:../dyl"
    -  }
    -}
    -

    URLs as Dependencies

    -

    You may specify a tarball URL in place of a version range.

    -

    This tarball will be downloaded and installed locally to your package at -install time.

    -

    Git URLs as Dependencies

    -

    Git urls can be of the form:

    -
    git://github.com/user/project.git#commit-ish
    -git+ssh://user@hostname:project.git#commit-ish
    -git+ssh://user@hostname/project.git#commit-ish
    -git+http://user@hostname/project/blah.git#commit-ish
    -git+https://user@hostname/project/blah.git#commit-ish
    -

    The commit-ish can be any tag, sha, or branch which can be supplied as -an argument to git checkout. The default is master.

    -

    GitHub URLs

    -

    As of version 1.1.65, you can refer to GitHub urls as just "foo": -"user/foo-project". Just as with git URLs, a commit-ish suffix can be -included. For example:

    -
    {
    -  "name": "foo",
    -  "version": "0.0.0",
    -  "dependencies": {
    -    "express": "visionmedia/express",
    -    "mocha": "visionmedia/mocha#4727d357ea"
    -  }
    -}
    -

    Local Paths

    -

    As of version 2.0.0 you can provide a path to a local directory that contains a -package. Local paths can be saved using npm install --save, using any of -these forms:

    -
    ../foo/bar
    -~/foo/bar
    -./foo/bar
    -/foo/bar
    -

    in which case they will be normalized to a relative path and added to your -package.json. For example:

    -
    {
    -  "name": "baz",
    -  "dependencies": {
    -    "bar": "file:../foo/bar"
    -  }
    -}
    -

    This feature is helpful for local offline development and creating -tests that require npm installing where you don't want to hit an -external server, but should not be used when publishing packages -to the public registry.

    -

    devDependencies

    -

    If someone is planning on downloading and using your module in their -program, then they probably don't want or need to download and build -the external test or documentation framework that you use.

    -

    In this case, it's best to map these additional items in a devDependencies -object.

    -

    These things will be installed when doing npm link or npm install -from the root of a package, and can be managed like any other npm -configuration param. See npm-config(7) for more on the topic.

    -

    For build steps that are not platform-specific, such as compiling -CoffeeScript or other languages to JavaScript, use the prepublish -script to do this, and make the required package a devDependency.

    -

    For example:

    -
    { "name": "ethopia-waza",
    -  "description": "a delightfully fruity coffee varietal",
    -  "version": "1.2.3",
    -  "devDependencies": {
    -    "coffee-script": "~1.6.3"
    -  },
    -  "scripts": {
    -    "prepublish": "coffee -o lib/ -c src/waza.coffee"
    -  },
    -  "main": "lib/waza.js"
    -}
    -

    The prepublish script will be run before publishing, so that users -can consume the functionality without requiring them to compile it -themselves. In dev mode (ie, locally running npm install), it'll -run this script as well, so that you can test it easily.

    -

    peerDependencies

    -

    In some cases, you want to express the compatibility of your package with a -host tool or library, while not necessarily doing a require of this host. -This is usually referred to as a plugin. Notably, your module may be exposing -a specific interface, expected and specified by the host documentation.

    -

    For example:

    -
    {
    -  "name": "tea-latte",
    -  "version": "1.3.5",
    -  "peerDependencies": {
    -    "tea": "2.x"
    -  }
    -}
    -

    This ensures your package tea-latte can be installed along with the second -major version of the host package tea only. npm install tea-latte could -possibly yield the following dependency graph:

    -
    ├── tea-latte@1.3.5
    -└── tea@2.2.0
    -

    NOTE: npm versions 1 and 2 will automatically install peerDependencies if -they are not explicitly depended upon higher in the dependency tree. In the -next major version of npm (npm@3), this will no longer be the case. You will -receive a warning that the peerDependency is not installed instead. The -behavior in npms 1 & 2 was frequently confusing and could easily put you into -dependency hell, a situation that npm is designed to avoid as much as possible.

    -

    Trying to install another plugin with a conflicting requirement will cause an -error. For this reason, make sure your plugin requirement is as broad as -possible, and not to lock it down to specific patch versions.

    -

    Assuming the host complies with semver, only changes in -the host package's major version will break your plugin. Thus, if you've worked -with every 1.x version of the host package, use "^1.0" or "1.x" to express -this. If you depend on features introduced in 1.5.2, use ">= 1.5.2 < 2".

    -

    bundledDependencies

    -

    Array of package names that will be bundled when publishing the package.

    -

    If this is spelled "bundleDependencies", then that is also honorable.

    -

    optionalDependencies

    -

    If a dependency can be used, but you would like npm to proceed if it cannot be -found or fails to install, then you may put it in the optionalDependencies -object. This is a map of package name to version or url, just like the -dependencies object. The difference is that build failures do not cause -installation to fail.

    -

    It is still your program's responsibility to handle the lack of the -dependency. For example, something like this:

    -
    try {
    -  var foo = require('foo')
    -  var fooVersion = require('foo/package.json').version
    -} catch (er) {
    -  foo = null
    -}
    -if ( notGoodFooVersion(fooVersion) ) {
    -  foo = null
    -}
    -
    -// .. then later in your program ..
    -
    -if (foo) {
    -  foo.doFooThings()
    -}
    -

    Entries in optionalDependencies will override entries of the same name in -dependencies, so it's usually best to only put in one place.

    -

    engines

    -

    You can specify the version of node that your stuff works on:

    -
    { "engines" : { "node" : ">=0.10.3 <0.12" } }
    -

    And, like with dependencies, if you don't specify the version (or if you -specify "*" as the version), then any version of node will do.

    -

    If you specify an "engines" field, then npm will require that "node" be -somewhere on that list. If "engines" is omitted, then npm will just assume -that it works on node.

    -

    You can also use the "engines" field to specify which versions of npm -are capable of properly installing your program. For example:

    -
    { "engines" : { "npm" : "~1.0.20" } }
    -

    Note that, unless the user has set the engine-strict config flag, this -field is advisory only.

    -

    engineStrict

    -

    NOTE: This feature is deprecated and will be removed in npm 3.0.0.

    -

    If you are sure that your module will definitely not run properly on -versions of Node/npm other than those specified in the engines object, -then you can set "engineStrict": true in your package.json file. -This will override the user's engine-strict config setting.

    -

    Please do not do this unless you are really very very sure. If your -engines object is something overly restrictive, you can quite easily and -inadvertently lock yourself into obscurity and prevent your users from -updating to new versions of Node. Consider this choice carefully.

    -

    os

    -

    You can specify which operating systems your -module will run on:

    -
    "os" : [ "darwin", "linux" ]
    -

    You can also blacklist instead of whitelist operating systems, -just prepend the blacklisted os with a '!':

    -
    "os" : [ "!win32" ]
    -

    The host operating system is determined by process.platform

    -

    It is allowed to both blacklist, and whitelist, although there isn't any -good reason to do this.

    -

    cpu

    -

    If your code only runs on certain cpu architectures, -you can specify which ones.

    -
    "cpu" : [ "x64", "ia32" ]
    -

    Like the os option, you can also blacklist architectures:

    -
    "cpu" : [ "!arm", "!mips" ]
    -

    The host architecture is determined by process.arch

    -

    preferGlobal

    -

    If your package is primarily a command-line application that should be -installed globally, then set this value to true to provide a warning -if it is installed locally.

    -

    It doesn't actually prevent users from installing it locally, but it -does help prevent some confusion if it doesn't work as expected.

    -

    private

    -

    If you set "private": true in your package.json, then npm will refuse -to publish it.

    -

    This is a way to prevent accidental publication of private repositories. If -you would like to ensure that a given package is only ever published to a -specific registry (for example, an internal registry), then use the -publishConfig dictionary described below to override the registry config -param at publish-time.

    -

    publishConfig

    -

    This is a set of config values that will be used at publish-time. It's -especially handy if you want to set the tag, registry or access, so that -you can ensure that a given package is not tagged with "latest", published -to the global public registry or that a scoped module is private by default.

    -

    Any config values can be overridden, but of course only "tag", "registry" and -"access" probably matter for the purposes of publishing.

    -

    See npm-config(7) to see the list of config options that can be -overridden.

    -

    DEFAULT VALUES

    -

    npm will default some values based on package contents.

    -
      -
    • "scripts": {"start": "node server.js"}

      -

      If there is a server.js file in the root of your package, then npm -will default the start command to node server.js.

      -
    • -
    • "scripts":{"preinstall": "node-gyp rebuild"}

      -

      If there is a binding.gyp file in the root of your package, npm will -default the preinstall command to compile using node-gyp.

      -
    • -
    • "contributors": [...]

      -

      If there is an AUTHORS file in the root of your package, npm will -treat each line as a Name <email> (url) format, where email and url -are optional. Lines which start with a # or are blank, will be -ignored.

      -
    • -
    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/index.html b/deps/npm/html/partial/doc/index.html deleted file mode 100644 index d074d9127bb6..000000000000 --- a/deps/npm/html/partial/doc/index.html +++ /dev/null @@ -1,220 +0,0 @@ -

    npm-index

    Index of all npm documentation

    -

    README

    -

    a JavaScript package manager

    -

    Command Line Documentation

    -

    Using npm on the command line

    -

    npm(1)

    -

    javascript package manager

    -

    npm-access(1)

    -

    Set access level on published packages

    -

    npm-adduser(1)

    -

    Add a registry user account

    -

    npm-bin(1)

    -

    Display npm bin folder

    -

    npm-bugs(1)

    -

    Bugs for a package in a web browser maybe

    -

    npm-build(1)

    -

    Build a package

    -

    npm-bundle(1)

    -

    REMOVED

    -

    npm-cache(1)

    -

    Manipulates packages cache

    -

    npm-completion(1)

    -

    Tab Completion for npm

    -

    npm-config(1)

    -

    Manage the npm configuration files

    -

    npm-dedupe(1)

    -

    Reduce duplication

    -

    npm-deprecate(1)

    -

    Deprecate a version of a package

    -

    npm-dist-tag(1)

    -

    Modify package distribution tags

    -

    npm-docs(1)

    -

    Docs for a package in a web browser maybe

    -

    npm-edit(1)

    -

    Edit an installed package

    -

    npm-explore(1)

    -

    Browse an installed package

    -

    npm-help-search(1)

    -

    Search npm help documentation

    -

    npm-help(1)

    -

    Get help on npm

    -

    npm-init(1)

    -

    Interactively create a package.json file

    -

    npm-install(1)

    -

    Install a package

    - -

    Symlink a package folder

    -

    npm-logout(1)

    -

    Log out of the registry

    -

    npm-ls(1)

    -

    List installed packages

    -

    npm-outdated(1)

    -

    Check for outdated packages

    -

    npm-owner(1)

    -

    Manage package owners

    -

    npm-pack(1)

    -

    Create a tarball from a package

    -

    npm-ping(1)

    -

    Ping npm registry

    -

    npm-prefix(1)

    -

    Display prefix

    -

    npm-prune(1)

    -

    Remove extraneous packages

    -

    npm-publish(1)

    -

    Publish a package

    -

    npm-rebuild(1)

    -

    Rebuild a package

    -

    npm-repo(1)

    -

    Open package repository page in the browser

    -

    npm-restart(1)

    -

    Restart a package

    -

    npm-rm(1)

    -

    Remove a package

    -

    npm-root(1)

    -

    Display npm root

    -

    npm-run-script(1)

    -

    Run arbitrary package scripts

    -

    npm-search(1)

    -

    Search for packages

    -

    npm-shrinkwrap(1)

    -

    Lock down dependency versions

    -

    npm-star(1)

    -

    Mark your favorite packages

    -

    npm-stars(1)

    -

    View packages marked as favorites

    -

    npm-start(1)

    -

    Start a package

    -

    npm-stop(1)

    -

    Stop a package

    -

    npm-tag(1)

    -

    Tag a published version

    -

    npm-test(1)

    -

    Test a package

    -

    npm-uninstall(1)

    -

    Remove a package

    -

    npm-unpublish(1)

    -

    Remove a package from the registry

    -

    npm-update(1)

    -

    Update a package

    -

    npm-version(1)

    -

    Bump a package version

    -

    npm-view(1)

    -

    View registry info

    -

    npm-whoami(1)

    -

    Display npm username

    -

    API Documentation

    -

    Using npm in your Node programs

    -

    npm(3)

    -

    javascript package manager

    -

    npm-bin(3)

    -

    Display npm bin folder

    -

    npm-bugs(3)

    -

    Bugs for a package in a web browser maybe

    -

    npm-cache(3)

    -

    manage the npm cache programmatically

    -

    npm-commands(3)

    -

    npm commands

    -

    npm-config(3)

    -

    Manage the npm configuration files

    -

    npm-deprecate(3)

    -

    Deprecate a version of a package

    -

    npm-docs(3)

    -

    Docs for a package in a web browser maybe

    -

    npm-edit(3)

    -

    Edit an installed package

    -

    npm-explore(3)

    -

    Browse an installed package

    -

    npm-help-search(3)

    -

    Search the help pages

    -

    npm-init(3)

    -

    Interactively create a package.json file

    -

    npm-install(3)

    -

    install a package programmatically

    - -

    Symlink a package folder

    -

    npm-load(3)

    -

    Load config settings

    -

    npm-ls(3)

    -

    List installed packages

    -

    npm-outdated(3)

    -

    Check for outdated packages

    -

    npm-owner(3)

    -

    Manage package owners

    -

    npm-pack(3)

    -

    Create a tarball from a package

    -

    npm-ping(3)

    -

    Ping npm registry

    -

    npm-prefix(3)

    -

    Display prefix

    -

    npm-prune(3)

    -

    Remove extraneous packages

    -

    npm-publish(3)

    -

    Publish a package

    -

    npm-rebuild(3)

    -

    Rebuild a package

    -

    npm-repo(3)

    -

    Open package repository page in the browser

    -

    npm-restart(3)

    -

    Restart a package

    -

    npm-root(3)

    -

    Display npm root

    -

    npm-run-script(3)

    -

    Run arbitrary package scripts

    -

    npm-search(3)

    -

    Search for packages

    -

    npm-shrinkwrap(3)

    -

    programmatically generate package shrinkwrap file

    -

    npm-start(3)

    -

    Start a package

    -

    npm-stop(3)

    -

    Stop a package

    -

    npm-tag(3)

    -

    Tag a published version

    -

    npm-test(3)

    -

    Test a package

    -

    npm-uninstall(3)

    -

    uninstall a package programmatically

    -

    npm-unpublish(3)

    -

    Remove a package from the registry

    -

    npm-update(3)

    -

    Update a package

    -

    npm-version(3)

    -

    Bump a package version

    -

    npm-view(3)

    -

    View registry info

    -

    npm-whoami(3)

    -

    Display npm username

    -

    Files

    -

    File system structures npm uses

    -

    npm-folders(5)

    -

    Folder Structures Used by npm

    -

    npmrc(5)

    -

    The npm config files

    -

    package.json(5)

    -

    Specifics of npm's package.json handling

    -

    Misc

    -

    Various other bits and bobs

    -

    npm-coding-style(7)

    -

    npm's "funny" coding style

    -

    npm-config(7)

    -

    More than you probably want to know about npm configuration

    -

    npm-developers(7)

    -

    Developer Guide

    -

    npm-disputes(7)

    -

    Handling Module Name Disputes

    -

    npm-faq(7)

    -

    Frequently Asked Questions

    -

    npm-index(7)

    -

    Index of all npm documentation

    -

    npm-registry(7)

    -

    The JavaScript Package Registry

    -

    npm-scope(7)

    -

    Scoped packages

    -

    npm-scripts(7)

    -

    How npm handles the "scripts" field

    -

    removing-npm(7)

    -

    Cleaning the Slate

    -

    semver(7)

    -

    The semantic versioner for npm

    - diff --git a/deps/npm/html/partial/doc/misc/npm-coding-style.html b/deps/npm/html/partial/doc/misc/npm-coding-style.html deleted file mode 100644 index b50b95f27f7e..000000000000 --- a/deps/npm/html/partial/doc/misc/npm-coding-style.html +++ /dev/null @@ -1,127 +0,0 @@ -

    npm-coding-style

    npm's "funny" coding style

    -

    DESCRIPTION

    -

    npm's coding style is a bit unconventional. It is not different for -difference's sake, but rather a carefully crafted style that is -designed to reduce visual clutter and make bugs more apparent.

    -

    If you want to contribute to npm (which is very encouraged), you should -make your code conform to npm's style.

    -

    Note: this concerns npm's code not the specific packages that you can download from the npm registry.

    -

    Line Length

    -

    Keep lines shorter than 80 characters. It's better for lines to be -too short than to be too long. Break up long lists, objects, and other -statements onto multiple lines.

    -

    Indentation

    -

    Two-spaces. Tabs are better, but they look like hell in web browsers -(and on GitHub), and node uses 2 spaces, so that's that.

    -

    Configure your editor appropriately.

    -

    Curly braces

    -

    Curly braces belong on the same line as the thing that necessitates them.

    -

    Bad:

    -
    function ()
    -{
    -

    Good:

    -
    function () {
    -

    If a block needs to wrap to the next line, use a curly brace. Don't -use it if it doesn't.

    -

    Bad:

    -
    if (foo) { bar() }
    -while (foo)
    -  bar()
    -

    Good:

    -
    if (foo) bar()
    -while (foo) {
    -  bar()
    -}
    -

    Semicolons

    -

    Don't use them except in four situations:

    -
      -
    • for (;;) loops. They're actually required.
    • -
    • null loops like: while (something) ; (But you'd better have a good -reason for doing that.)
    • -
    • case "foo": doSomething(); break
    • -
    • In front of a leading ( or [ at the start of the line. -This prevents the expression from being interpreted -as a function call or property access, respectively.
    • -
    -

    Some examples of good semicolon usage:

    -
    ;(x || y).doSomething()
    -;[a, b, c].forEach(doSomething)
    -for (var i = 0; i < 10; i ++) {
    -  switch (state) {
    -    case "begin": start(); continue
    -    case "end": finish(); break
    -    default: throw new Error("unknown state")
    -  }
    -  end()
    -}
    -

    Note that starting lines with - and + also should be prefixed -with a semicolon, but this is much less common.

    -

    Comma First

    -

    If there is a list of things separated by commas, and it wraps -across multiple lines, put the comma at the start of the next -line, directly below the token that starts the list. Put the -final token in the list on a line by itself. For example:

    -
    var magicWords = [ "abracadabra"
    -                 , "gesundheit"
    -                 , "ventrilo"
    -                 ]
    -  , spells = { "fireball" : function () { setOnFire() }
    -             , "water" : function () { putOut() }
    -             }
    -  , a = 1
    -  , b = "abc"
    -  , etc
    -  , somethingElse
    -

    Whitespace

    -

    Put a single space in front of ( for anything other than a function call. -Also use a single space wherever it makes things more readable.

    -

    Don't leave trailing whitespace at the end of lines. Don't indent empty -lines. Don't use more spaces than are helpful.

    -

    Functions

    -

    Use named functions. They make stack traces a lot easier to read.

    -

    Callbacks, Sync/async Style

    -

    Use the asynchronous/non-blocking versions of things as much as possible. -It might make more sense for npm to use the synchronous fs APIs, but this -way, the fs and http and child process stuff all uses the same callback-passing -methodology.

    -

    The callback should always be the last argument in the list. Its first -argument is the Error or null.

    -

    Be very careful never to ever ever throw anything. It's worse than useless. -Just send the error message back as the first argument to the callback.

    -

    Errors

    -

    Always create a new Error object with your message. Don't just return a -string message to the callback. Stack traces are handy.

    -

    Logging

    -

    Logging is done using the npmlog -utility.

    -

    Please clean up logs when they are no longer helpful. In particular, -logging the same object over and over again is not helpful. Logs should -report what's happening so that it's easier to track down where a fault -occurs.

    -

    Use appropriate log levels. See npm-config(7) and search for -"loglevel".

    -

    Case, naming, etc.

    -

    Use lowerCamelCase for multiword identifiers when they refer to objects, -functions, methods, properties, or anything not specified in this section.

    -

    Use UpperCamelCase for class names (things that you'd pass to "new").

    -

    Use all-lower-hyphen-css-case for multiword filenames and config keys.

    -

    Use named functions. They make stack traces easier to follow.

    -

    Use CAPS_SNAKE_CASE for constants, things that should never change -and are rarely used.

    -

    Use a single uppercase letter for function names where the function -would normally be anonymous, but needs to call itself recursively. It -makes it clear that it's a "throwaway" function.

    -

    null, undefined, false, 0

    -

    Boolean variables and functions should always be either true or -false. Don't set it to 0 unless it's supposed to be a number.

    -

    When something is intentionally missing or removed, set it to null.

    -

    Don't set things to undefined. Reserve that value to mean "not yet -set to anything."

    -

    Boolean objects are verboten.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/misc/npm-config.html b/deps/npm/html/partial/doc/misc/npm-config.html deleted file mode 100644 index 2694cb8b2d6e..000000000000 --- a/deps/npm/html/partial/doc/misc/npm-config.html +++ /dev/null @@ -1,779 +0,0 @@ -

    npm-config

    More than you probably want to know about npm configuration

    -

    DESCRIPTION

    -

    npm gets its configuration values from the following sources, sorted by priority:

    -

    Command Line Flags

    -

    Putting --foo bar on the command line sets the foo configuration -parameter to "bar". A -- argument tells the cli parser to stop -reading flags. A --flag parameter that is at the end of the -command will be given the value of true.

    -

    Environment Variables

    -

    Any environment variables that start with npm_config_ will be -interpreted as a configuration parameter. For example, putting -npm_config_foo=bar in your environment will set the foo -configuration parameter to bar. Any environment configurations that -are not given a value will be given the value of true. Config -values are case-insensitive, so NPM_CONFIG_FOO=bar will work the -same.

    -

    npmrc Files

    -

    The four relevant files are:

    -
      -
    • per-project config file (/path/to/my/project/.npmrc)
    • -
    • per-user config file (~/.npmrc)
    • -
    • global config file ($PREFIX/npmrc)
    • -
    • npm builtin config file (/path/to/npm/npmrc)
    • -
    -

    See npmrc(5) for more details.

    -

    Default Configs

    -

    A set of configuration parameters that are internal to npm, and are -defaults if nothing else is specified.

    -

    Shorthands and Other CLI Niceties

    -

    The following shorthands are parsed on the command-line:

    -
      -
    • -v: --version
    • -
    • -h, -?, --help, -H: --usage
    • -
    • -s, --silent: --loglevel silent
    • -
    • -q, --quiet: --loglevel warn
    • -
    • -d: --loglevel info
    • -
    • -dd, --verbose: --loglevel verbose
    • -
    • -ddd: --loglevel silly
    • -
    • -g: --global
    • -
    • -C: --prefix
    • -
    • -l: --long
    • -
    • -m: --message
    • -
    • -p, --porcelain: --parseable
    • -
    • -reg: --registry
    • -
    • -f: --force
    • -
    • -desc: --description
    • -
    • -S: --save
    • -
    • -D: --save-dev
    • -
    • -O: --save-optional
    • -
    • -B: --save-bundle
    • -
    • -E: --save-exact
    • -
    • -y: --yes
    • -
    • -n: --yes false
    • -
    • ll and la commands: ls --long
    • -
    -

    If the specified configuration param resolves unambiguously to a known -configuration parameter, then it is expanded to that configuration -parameter. For example:

    -
    npm ls --par
    -# same as:
    -npm ls --parseable
    -

    If multiple single-character shorthands are strung together, and the -resulting combination is unambiguously not some other configuration -param, then it is expanded to its various component pieces. For -example:

    -
    npm ls -gpld
    -# same as:
    -npm ls --global --parseable --long --loglevel info
    -

    Per-Package Config Settings

    -

    When running scripts (see npm-scripts(7)) the package.json "config" -keys are overwritten in the environment if there is a config param of -<name>[@<version>]:<key>. For example, if the package.json has -this:

    -
    { "name" : "foo"
    -, "config" : { "port" : "8080" }
    -, "scripts" : { "start" : "node server.js" } }
    -

    and the server.js is this:

    -
    http.createServer(...).listen(process.env.npm_package_config_port)
    -

    then the user could change the behavior by doing:

    -
    npm config set foo:port 80
    -

    See package.json(5) for more information.

    -

    Config Settings

    -

    access

    -
      -
    • Default: restricted
    • -
    • Type: Access
    • -
    -

    When publishing scoped packages, the access level defaults to restricted. If -you want your scoped package to be publicly viewable (and installable) set ---access=public. The only valid values for access are public and -restricted. Unscoped packages always have an access level of public.

    -

    always-auth

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Force npm to always require authentication when accessing the registry, -even for GET requests.

    - -
      -
    • Default: true
    • -
    • Type: Boolean
    • -
    -

    Tells npm to create symlinks (or .cmd shims on Windows) for package -executables.

    -

    Set to false to have it not do this. This can be used to work around -the fact that some file systems don't support symlinks, even on -ostensibly Unix systems.

    -

    browser

    -
      -
    • Default: OS X: "open", Windows: "start", Others: "xdg-open"
    • -
    • Type: String
    • -
    -

    The browser that is called by the npm docs command to open websites.

    -

    ca

    -
      -
    • Default: The npm CA certificate
    • -
    • Type: String, Array or null
    • -
    -

    The Certificate Authority signing certificate that is trusted for SSL -connections to the registry. Values should be in PEM format with newlines -replaced by the string "\n". For example:

    -
    ca="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----"
    -

    Set to null to only allow "known" registrars, or to a specific CA cert -to trust only that specific signing authority.

    -

    Multiple CAs can be trusted by specifying an array of certificates:

    -
    ca[]="..."
    -ca[]="..."
    -

    See also the strict-ssl config.

    -

    cafile

    -
      -
    • Default: null
    • -
    • Type: path
    • -
    -

    A path to a file containing one or multiple Certificate Authority signing -certificates. Similar to the ca setting, but allows for multiple CA's, as -well as for the CA information to be stored in a file on disk.

    -

    cache

    -
      -
    • Default: Windows: %AppData%\npm-cache, Posix: ~/.npm
    • -
    • Type: path
    • -
    -

    The location of npm's cache directory. See npm-cache(1)

    -

    cache-lock-stale

    -
      -
    • Default: 60000 (1 minute)
    • -
    • Type: Number
    • -
    -

    The number of ms before cache folder lockfiles are considered stale.

    -

    cache-lock-retries

    -
      -
    • Default: 10
    • -
    • Type: Number
    • -
    -

    Number of times to retry to acquire a lock on cache folder lockfiles.

    -

    cache-lock-wait

    -
      -
    • Default: 10000 (10 seconds)
    • -
    • Type: Number
    • -
    -

    Number of ms to wait for cache lock files to expire.

    -

    cache-max

    -
      -
    • Default: Infinity
    • -
    • Type: Number
    • -
    -

    The maximum time (in seconds) to keep items in the registry cache before -re-checking against the registry.

    -

    Note that no purging is done unless the npm cache clean command is -explicitly used, and that only GET requests use the cache.

    -

    cache-min

    -
      -
    • Default: 10
    • -
    • Type: Number
    • -
    -

    The minimum time (in seconds) to keep items in the registry cache before -re-checking against the registry.

    -

    Note that no purging is done unless the npm cache clean command is -explicitly used, and that only GET requests use the cache.

    -

    cert

    -
      -
    • Default: null
    • -
    • Type: String
    • -
    -

    A client certificate to pass when accessing the registry.

    -

    color

    -
      -
    • Default: true on Posix, false on Windows
    • -
    • Type: Boolean or "always"
    • -
    -

    If false, never shows colors. If "always" then always shows colors. -If true, then only prints color codes for tty file descriptors.

    -

    depth

    -
      -
    • Default: Infinity
    • -
    • Type: Number
    • -
    -

    The depth to go when recursing directories for npm ls, -npm cache ls, and npm outdated.

    -

    For npm outdated, a setting of Infinity will be treated as 0 -since that gives more useful information. To show the outdated status -of all packages and dependents, use a large integer value, -e.g., npm outdated --depth 9999

    -

    description

    -
      -
    • Default: true
    • -
    • Type: Boolean
    • -
    -

    Show the description in npm search

    -

    dev

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Install dev-dependencies along with packages.

    -

    Note that dev-dependencies are also installed if the npat flag is -set.

    -

    editor

    -
      -
    • Default: EDITOR environment variable if set, or "vi" on Posix, -or "notepad" on Windows.
    • -
    • Type: path
    • -
    -

    The command to run for npm edit or npm config edit.

    -

    engine-strict

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    If set to true, then npm will stubbornly refuse to install (or even -consider installing) any package that claims to not be compatible with -the current Node.js version.

    -

    force

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Makes various commands more forceful.

    -
      -
    • lifecycle script failure does not block progress.
    • -
    • publishing clobbers previously published versions.
    • -
    • skips cache when requesting from the registry.
    • -
    • prevents checks against clobbering non-npm files.
    • -
    -

    fetch-retries

    -
      -
    • Default: 2
    • -
    • Type: Number
    • -
    -

    The "retries" config for the retry module to use when fetching -packages from the registry.

    -

    fetch-retry-factor

    -
      -
    • Default: 10
    • -
    • Type: Number
    • -
    -

    The "factor" config for the retry module to use when fetching -packages.

    -

    fetch-retry-mintimeout

    -
      -
    • Default: 10000 (10 seconds)
    • -
    • Type: Number
    • -
    -

    The "minTimeout" config for the retry module to use when fetching -packages.

    -

    fetch-retry-maxtimeout

    -
      -
    • Default: 60000 (1 minute)
    • -
    • Type: Number
    • -
    -

    The "maxTimeout" config for the retry module to use when fetching -packages.

    -

    git

    -
      -
    • Default: "git"
    • -
    • Type: String
    • -
    -

    The command to use for git commands. If git is installed on the -computer, but is not in the PATH, then set this to the full path to -the git binary.

    -

    git-tag-version

    -
      -
    • Default: true
    • -
    • Type: Boolean
    • -
    -

    Tag the commit when using the npm version command.

    -

    global

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Operates in "global" mode, so that packages are installed into the -prefix folder instead of the current working directory. See -npm-folders(5) for more on the differences in behavior.

    -
      -
    • packages are installed into the {prefix}/lib/node_modules folder, instead of the -current working directory.
    • -
    • bin files are linked to {prefix}/bin
    • -
    • man pages are linked to {prefix}/share/man
    • -
    -

    globalconfig

    -
      -
    • Default: {prefix}/etc/npmrc
    • -
    • Type: path
    • -
    -

    The config file to read for global config options.

    -

    group

    -
      -
    • Default: GID of the current process
    • -
    • Type: String or Number
    • -
    -

    The group to use when running package scripts in global mode as the root -user.

    -

    heading

    -
      -
    • Default: "npm"
    • -
    • Type: String
    • -
    -

    The string that starts all the debugging log output.

    -

    https-proxy

    -
      -
    • Default: null
    • -
    • Type: url
    • -
    -

    A proxy to use for outgoing https requests. If the HTTPS_PROXY or -https_proxy or HTTP_PROXY or http_proxy environment variables are set, -proxy settings will be honored by the underlying request library.

    -

    if-present

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    If true, npm will not exit with an error code when run-script is invoked for -a script that isn't defined in the scripts section of package.json. This -option can be used when it's desirable to optionally run a script when it's -present and fail if the script fails. This is useful, for example, when running -scripts that may only apply for some builds in an otherwise generic CI setup.

    -

    ignore-scripts

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    If true, npm does not run scripts specified in package.json files.

    -

    init-module

    -
      -
    • Default: ~/.npm-init.js
    • -
    • Type: path
    • -
    -

    A module that will be loaded by the npm init command. See the -documentation for the -init-package-json module -for more information, or npm-init(1).

    -

    init-author-name

    -
      -
    • Default: ""
    • -
    • Type: String
    • -
    -

    The value npm init should use by default for the package author's name.

    -

    init-author-email

    -
      -
    • Default: ""
    • -
    • Type: String
    • -
    -

    The value npm init should use by default for the package author's email.

    -

    init-author-url

    -
      -
    • Default: ""
    • -
    • Type: String
    • -
    -

    The value npm init should use by default for the package author's homepage.

    -

    init-license

    -
      -
    • Default: "ISC"
    • -
    • Type: String
    • -
    -

    The value npm init should use by default for the package license.

    -

    init-version

    -
      -
    • Default: "1.0.0"
    • -
    • Type: semver
    • -
    -

    The value that npm init should use by default for the package -version number, if not already set in package.json.

    -

    json

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Whether or not to output JSON data, rather than the normal output.

    -

    This feature is currently experimental, and the output data structures -for many commands is either not implemented in JSON yet, or subject to -change. Only the output from npm ls --json is currently valid.

    -

    key

    -
      -
    • Default: null
    • -
    • Type: String
    • -
    -

    A client key to pass when accessing the registry.

    - -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    If true, then local installs will link if there is a suitable globally -installed package.

    -

    Note that this means that local installs can cause things to be -installed into the global space at the same time. The link is only done -if one of the two conditions are met:

    -
      -
    • The package is not already installed globally, or
    • -
    • the globally installed version is identical to the version that is -being installed locally.
    • -
    -

    local-address

    -
      -
    • Default: undefined
    • -
    • Type: IP Address
    • -
    -

    The IP address of the local interface to use when making connections -to the npm registry. Must be IPv4 in versions of Node prior to 0.12.

    -

    loglevel

    -
      -
    • Default: "warn"
    • -
    • Type: String
    • -
    • Values: "silent", "error", "warn", "http", "info", "verbose", "silly"
    • -
    -

    What level of logs to report. On failure, all logs are written to -npm-debug.log in the current working directory.

    -

    Any logs of a higher level than the setting are shown. -The default is "warn", which shows warn and error output.

    -

    logstream

    -
      -
    • Default: process.stderr
    • -
    • Type: Stream
    • -
    -

    This is the stream that is passed to the -npmlog module at run time.

    -

    It cannot be set from the command line, but if you are using npm -programmatically, you may wish to send logs to somewhere other than -stderr.

    -

    If the color config is set to true, then this stream will receive -colored output if it is a TTY.

    -

    long

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Show extended information in npm ls and npm search.

    -

    message

    -
      -
    • Default: "%s"
    • -
    • Type: String
    • -
    -

    Commit message which is used by npm version when creating version commit.

    -

    Any "%s" in the message will be replaced with the version number.

    -

    node-version

    -
      -
    • Default: process.version
    • -
    • Type: semver or false
    • -
    -

    The node version to use when checking a package's engines map.

    -

    npat

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Run tests on installation.

    -

    onload-script

    -
      -
    • Default: false
    • -
    • Type: path
    • -
    -

    A node module to require() when npm loads. Useful for programmatic -usage.

    -

    optional

    -
      -
    • Default: true
    • -
    • Type: Boolean
    • -
    -

    Attempt to install packages in the optionalDependencies object. Note -that if these packages fail to install, the overall installation -process is not aborted.

    -

    parseable

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Output parseable results from commands that write to -standard output.

    -

    prefix

    - -

    The location to install global items. If set on the command line, then -it forces non-global commands to run in the specified folder.

    -

    production

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Set to true to run in "production" mode.

    -
      -
    1. devDependencies are not installed at the topmost level when running -local npm install without any arguments.
    2. -
    3. Set the NODE_ENV="production" for lifecycle scripts.
    4. -
    -

    proprietary-attribs

    -
      -
    • Default: true
    • -
    • Type: Boolean
    • -
    -

    Whether or not to include proprietary extended attributes in the -tarballs created by npm.

    -

    Unless you are expecting to unpack package tarballs with something other -than npm -- particularly a very outdated tar implementation -- leave -this as true.

    -

    proxy

    -
      -
    • Default: null
    • -
    • Type: url
    • -
    -

    A proxy to use for outgoing http requests. If the HTTP_PROXY or -http_proxy environment variables are set, proxy settings will be -honored by the underlying request library.

    -

    rebuild-bundle

    -
      -
    • Default: true
    • -
    • Type: Boolean
    • -
    -

    Rebuild bundled dependencies after installation.

    -

    registry

    - -

    The base URL of the npm package registry.

    -

    rollback

    -
      -
    • Default: true
    • -
    • Type: Boolean
    • -
    -

    Remove failed installs.

    -

    save

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Save installed packages to a package.json file as dependencies.

    -

    When used with the npm rm command, it removes it from the dependencies -object.

    -

    Only works if there is already a package.json file present.

    -

    save-bundle

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    If a package would be saved at install time by the use of --save, ---save-dev, or --save-optional, then also put it in the -bundleDependencies list.

    -

    When used with the npm rm command, it removes it from the -bundledDependencies list.

    -

    save-dev

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Save installed packages to a package.json file as devDependencies.

    -

    When used with the npm rm command, it removes it from the -devDependencies object.

    -

    Only works if there is already a package.json file present.

    -

    save-exact

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Dependencies saved to package.json using --save, --save-dev or ---save-optional will be configured with an exact version rather than -using npm's default semver range operator.

    -

    save-optional

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Save installed packages to a package.json file as -optionalDependencies.

    -

    When used with the npm rm command, it removes it from the -devDependencies object.

    -

    Only works if there is already a package.json file present.

    -

    save-prefix

    -
      -
    • Default: '^'
    • -
    • Type: String
    • -
    -

    Configure how versions of packages installed to a package.json file via ---save or --save-dev get prefixed.

    -

    For example if a package has version 1.2.3, by default its version is -set to ^1.2.3 which allows minor upgrades for that package, but after -npm config set save-prefix='~' it would be set to ~1.2.3 which only allows -patch upgrades.

    -

    scope

    -
      -
    • Default: ""
    • -
    • Type: String
    • -
    -

    Associate an operation with a scope for a scoped registry. Useful when logging -in to a private registry for the first time: -npm login --scope=@organization --registry=registry.organization.com, which -will cause @organization to be mapped to the registry for future installation -of packages specified according to the pattern @organization/package.

    -

    searchopts

    -
      -
    • Default: ""
    • -
    • Type: String
    • -
    -

    Space-separated options that are always passed to search.

    -

    searchexclude

    -
      -
    • Default: ""
    • -
    • Type: String
    • -
    -

    Space-separated options that limit the results from search.

    -

    searchsort

    -
      -
    • Default: "name"
    • -
    • Type: String
    • -
    • Values: "name", "-name", "date", "-date", "description", -"-description", "keywords", "-keywords"
    • -
    -

    Indication of which field to sort search results by. Prefix with a - -character to indicate reverse sort.

    -

    shell

    -
      -
    • Default: SHELL environment variable, or "bash" on Posix, or "cmd" on -Windows
    • -
    • Type: path
    • -
    -

    The shell to run for the npm explore command.

    -

    shrinkwrap

    -
      -
    • Default: true
    • -
    • Type: Boolean
    • -
    -

    If set to false, then ignore npm-shrinkwrap.json files when -installing.

    -

    sign-git-tag

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    If set to true, then the npm version command will tag the version -using -s to add a signature.

    -

    Note that git requires you to have set up GPG keys in your git configs -for this to work properly.

    -

    spin

    -
      -
    • Default: true
    • -
    • Type: Boolean or "always"
    • -
    -

    When set to true, npm will display an ascii spinner while it is doing -things, if process.stderr is a TTY.

    -

    Set to false to suppress the spinner, or set to always to output -the spinner even for non-TTY outputs.

    -

    strict-ssl

    -
      -
    • Default: true
    • -
    • Type: Boolean
    • -
    -

    Whether or not to do SSL key validation when making requests to the -registry via https.

    -

    See also the ca config.

    -

    tag

    -
      -
    • Default: latest
    • -
    • Type: String
    • -
    -

    If you ask npm to install a package and don't tell it a specific version, then -it will install the specified tag.

    -

    Also the tag that is added to the package@version specified by the npm -tag command, if no explicit tag is given.

    -

    tag-version-prefix

    -
      -
    • Default: "v"
    • -
    • Type: String
    • -
    -

    If set, alters the prefix used when tagging a new version when performing a -version increment using npm-version. To remove the prefix altogether, set it -to the empty string: "".

    -

    Because other tools may rely on the convention that npm version tags look like -v1.0.0, only use this property if it is absolutely necessary. In -particular, use care when overriding this setting for public packages.

    -

    tmp

    -
      -
    • Default: TMPDIR environment variable, or "/tmp"
    • -
    • Type: path
    • -
    -

    Where to store temporary files and folders. All temp files are deleted -on success, but left behind on failure for forensic purposes.

    -

    unicode

    -
      -
    • Default: true
    • -
    • Type: Boolean
    • -
    -

    When set to true, npm uses unicode characters in the tree output. When -false, it uses ascii characters to draw trees.

    -

    unsafe-perm

    -
      -
    • Default: false if running as root, true otherwise
    • -
    • Type: Boolean
    • -
    -

    Set to true to suppress the UID/GID switching when running package -scripts. If set explicitly to false, then installing as a non-root user -will fail.

    -

    usage

    -
      -
    • Default: false
    • -
    • Type: Boolean
    • -
    -

    Set to show short usage output (like the -H output) -instead of complete help when doing npm-help(1).

    -

    user

    -
      -
    • Default: "nobody"
    • -
    • Type: String or Number
    • -
    -

    The UID to set to when running package scripts as root.

    -

    userconfig

    -
      -
    • Default: ~/.npmrc
    • -
    • Type: path
    • -
    -

    The location of user-level configuration settings.

    -

    umask

    -
      -
    • Default: 022
    • -
    • Type: Octal numeric string in range 0000..0777 (0..511)
    • -
    -

    The "umask" value to use when setting the file creation mode on files -and folders.

    -

    Folders and executables are given a mode which is 0777 masked against -this value. Other files are given a mode which is 0666 masked against -this value. Thus, the defaults are 0755 and 0644 respectively.

    -

    user-agent

    -
      -
    • Default: node/{process.version} {process.platform} {process.arch}
    • -
    • Type: String
    • -
    -

    Sets a User-Agent to the request header

    -

    version

    -
      -
    • Default: false
    • -
    • Type: boolean
    • -
    -

    If true, output the npm version and exit successfully.

    -

    Only relevant when specified explicitly on the command line.

    -

    versions

    -
      -
    • Default: false
    • -
    • Type: boolean
    • -
    -

    If true, output the npm version as well as node's process.versions map, and -exit successfully.

    -

    Only relevant when specified explicitly on the command line.

    -

    viewer

    -
      -
    • Default: "man" on Posix, "browser" on Windows
    • -
    • Type: path
    • -
    -

    The program to use to view help content.

    -

    Set to "browser" to view html help content in the default web browser.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/misc/npm-developers.html b/deps/npm/html/partial/doc/misc/npm-developers.html deleted file mode 100644 index 10d0cd89198a..000000000000 --- a/deps/npm/html/partial/doc/misc/npm-developers.html +++ /dev/null @@ -1,169 +0,0 @@ -

    npm-developers

    Developer Guide

    -

    DESCRIPTION

    -

    So, you've decided to use npm to develop (and maybe publish/deploy) -your project.

    -

    Fantastic!

    -

    There are a few things that you need to do above the simple steps -that your users will do to install your program.

    -

    About These Documents

    -

    These are man pages. If you install npm, you should be able to -then do man npm-thing to get the documentation on a particular -topic, or npm help thing to see the same information.

    -

    What is a package

    -

    A package is:

    -
      -
    • a) a folder containing a program described by a package.json file
    • -
    • b) a gzipped tarball containing (a)
    • -
    • c) a url that resolves to (b)
    • -
    • d) a <name>@<version> that is published on the registry with (c)
    • -
    • e) a <name>@<tag> that points to (d)
    • -
    • f) a <name> that has a "latest" tag satisfying (e)
    • -
    • g) a git url that, when cloned, results in (a).
    • -
    -

    Even if you never publish your package, you can still get a lot of -benefits of using npm if you just want to write a node program (a), and -perhaps if you also want to be able to easily install it elsewhere -after packing it up into a tarball (b).

    -

    Git urls can be of the form:

    -
    git://github.com/user/project.git#commit-ish
    -git+ssh://user@hostname:project.git#commit-ish
    -git+http://user@hostname/project/blah.git#commit-ish
    -git+https://user@hostname/project/blah.git#commit-ish
    -

    The commit-ish can be any tag, sha, or branch which can be supplied as -an argument to git checkout. The default is master.

    -

    The package.json File

    -

    You need to have a package.json file in the root of your project to do -much of anything with npm. That is basically the whole interface.

    -

    See package.json(5) for details about what goes in that file. At the very -least, you need:

    -
      -
    • name: -This should be a string that identifies your project. Please do not -use the name to specify that it runs on node, or is in JavaScript. -You can use the "engines" field to explicitly state the versions of -node (or whatever else) that your program requires, and it's pretty -well assumed that it's javascript.

      -

      It does not necessarily need to match your github repository name.

      -

      So, node-foo and bar-js are bad names. foo or bar are better.

      -
    • -
    • version: -A semver-compatible version.

      -
    • -
    • engines: -Specify the versions of node (or whatever else) that your program -runs on. The node API changes a lot, and there may be bugs or new -functionality that you depend on. Be explicit.

      -
    • -
    • author: -Take some credit.

      -
    • -
    • scripts: -If you have a special compilation or installation script, then you -should put it in the scripts object. You should definitely have at -least a basic smoke-test command as the "scripts.test" field. -See npm-scripts(7).

      -
    • -
    • main: -If you have a single module that serves as the entry point to your -program (like what the "foo" package gives you at require("foo")), -then you need to specify that in the "main" field.

      -
    • -
    • directories: -This is an object mapping names to folders. The best ones to include are -"lib" and "doc", but if you use "man" to specify a folder full of man pages, -they'll get installed just like these ones.

      -
    • -
    -

    You can use npm init in the root of your package in order to get you -started with a pretty basic package.json file. See npm-init(1) for -more info.

    -

    Keeping files out of your package

    -

    Use a .npmignore file to keep stuff out of your package. If there's -no .npmignore file, but there is a .gitignore file, then npm will -ignore the stuff matched by the .gitignore file. If you want to -include something that is excluded by your .gitignore file, you can -create an empty .npmignore file to override it.

    -

    .npmignore files follow the same pattern rules -as .gitignore files:

    -
      -
    • Blank lines or lines starting with # are ignored.
    • -
    • Standard glob patterns work.
    • -
    • You can end patterns with a forward slash / to specify a directory.
    • -
    • You can negate a pattern by starting it with an exclamation point !.
    • -
    -

    By default, the following paths and files are ignored, so there's no -need to add them to .npmignore explicitly:

    -
      -
    • .*.swp
    • -
    • ._*
    • -
    • .DS_Store
    • -
    • .git
    • -
    • .hg
    • -
    • .lock-wscript
    • -
    • .svn
    • -
    • .wafpickle-*
    • -
    • CVS
    • -
    • npm-debug.log
    • -
    -

    Additionally, everything in node_modules is ignored, except for -bundled dependencies. npm automatically handles this for you, so don't -bother adding node_modules to .npmignore.

    -

    The following paths and files are never ignored, so adding them to -.npmignore is pointless:

    - - -

    npm link is designed to install a development package and see the -changes in real time without having to keep re-installing it. (You do -need to either re-link or npm rebuild -g to update compiled packages, -of course.)

    -

    More info at npm-link(1).

    -

    Before Publishing: Make Sure Your Package Installs and Works

    -

    This is important.

    -

    If you can not install it locally, you'll have -problems trying to publish it. Or, worse yet, you'll be able to -publish it, but you'll be publishing a broken or pointless package. -So don't do that.

    -

    In the root of your package, do this:

    -
    npm install . -g
    -

    That'll show you that it's working. If you'd rather just create a symlink -package that points to your working directory, then do this:

    -
    npm link
    -

    Use npm ls -g to see if it's there.

    -

    To test a local install, go into some other folder, and then do:

    -
    cd ../some-other-folder
    -npm install ../my-package
    -

    to install it locally into the node_modules folder in that other place.

    -

    Then go into the node-repl, and try using require("my-thing") to -bring in your module's main module.

    -

    Create a User Account

    -

    Create a user with the adduser command. It works like this:

    -
    npm adduser
    -

    and then follow the prompts.

    -

    This is documented better in npm-adduser(1).

    -

    Publish your package

    -

    This part's easy. IN the root of your folder, do this:

    -
    npm publish
    -

    You can give publish a url to a tarball, or a filename of a tarball, -or a path to a folder.

    -

    Note that pretty much everything in that folder will be exposed -by default. So, if you have secret stuff in there, use a -.npmignore file to list out the globs to ignore, or publish -from a fresh checkout.

    -

    Brag about it

    -

    Send emails, write blogs, blab in IRC.

    -

    Tell the world how easy it is to install your program!

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/misc/npm-disputes.html b/deps/npm/html/partial/doc/misc/npm-disputes.html deleted file mode 100644 index ab49d1e3d18e..000000000000 --- a/deps/npm/html/partial/doc/misc/npm-disputes.html +++ /dev/null @@ -1,92 +0,0 @@ -

    npm-disputes

    Handling Module Name Disputes

    -

    SYNOPSIS

    -
      -
    1. Get the author email with npm owner ls <pkgname>
    2. -
    3. Email the author, CC support@npmjs.com
    4. -
    5. After a few weeks, if there's no resolution, we'll sort it out.
    6. -
    -

    Don't squat on package names. Publish code or move out of the way.

    -

    DESCRIPTION

    -

    There sometimes arise cases where a user publishes a module, and then -later, some other user wants to use that name. Here are some common -ways that happens (each of these is based on actual events.)

    -
      -
    1. Joe writes a JavaScript module foo, which is not node-specific. -Joe doesn't use node at all. Bob wants to use foo in node, so he -wraps it in an npm module. Some time later, Joe starts using node, -and wants to take over management of his program.
    2. -
    3. Bob writes an npm module foo, and publishes it. Perhaps much -later, Joe finds a bug in foo, and fixes it. He sends a pull -request to Bob, but Bob doesn't have the time to deal with it, -because he has a new job and a new baby and is focused on his new -erlang project, and kind of not involved with node any more. Joe -would like to publish a new foo, but can't, because the name is -taken.
    4. -
    5. Bob writes a 10-line flow-control library, and calls it foo, and -publishes it to the npm registry. Being a simple little thing, it -never really has to be updated. Joe works for Foo Inc, the makers -of the critically acclaimed and widely-marketed foo JavaScript -toolkit framework. They publish it to npm as foojs, but people are -routinely confused when npm install foo is some different thing.
    6. -
    7. Bob writes a parser for the widely-known foo file format, because -he needs it for work. Then, he gets a new job, and never updates the -prototype. Later on, Joe writes a much more complete foo parser, -but can't publish, because Bob's foo is in the way.
    8. -
    -

    The validity of Joe's claim in each situation can be debated. However, -Joe's appropriate course of action in each case is the same.

    -
      -
    1. npm owner ls foo. This will tell Joe the email address of the -owner (Bob).
    2. -
    3. 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 -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.
    4. -
    5. 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 -usually at least 4 weeks, but extra time is allowed around common -holidays.)
    6. -
    -

    REASONING

    -

    In almost every case so far, the parties involved have been able to reach -an amicable resolution without any major intervention. Most people -really do want to be reasonable, and are probably not even aware that -they're in your way.

    -

    Module ecosystems are most vibrant and powerful when they are as -self-directed as possible. If an admin one day deletes something you -had worked on, then that is going to make most people quite upset, -regardless of the justification. When humans solve their problems by -talking to other humans with respect, everyone has the chance to end up -feeling good about the interaction.

    -

    EXCEPTIONS

    -

    Some things are not allowed, and will be removed without discussion if -they are brought to the attention of the npm registry admins, including -but not limited to:

    -
      -
    1. Malware (that is, a package designed to exploit or harm the machine on -which it is installed).
    2. -
    3. Violations of copyright or licenses (for example, cloning an -MIT-licensed program, and then removing or changing the copyright and -license statement).
    4. -
    5. Illegal content.
    6. -
    7. "Squatting" on a package name that you plan to use, but aren't -actually using. Sorry, I don't care how great the name is, or how -perfect a fit it is for the thing that someday might happen. If -someone wants to use it today, and you're just taking up space with -an empty tarball, you're going to be evicted.
    8. -
    9. Putting empty packages in the registry. Packages must have SOME -functionality. It can be silly, but it can't be nothing. (See -also: squatting.)
    10. -
    11. Doing weird things with the registry, like using it as your own -personal application database or otherwise putting non-packagey -things into it.
    12. -
    -

    If you see bad behavior like this, please report it right away.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/misc/npm-faq.html b/deps/npm/html/partial/doc/misc/npm-faq.html deleted file mode 100644 index 435d438388de..000000000000 --- a/deps/npm/html/partial/doc/misc/npm-faq.html +++ /dev/null @@ -1,288 +0,0 @@ -

    npm-faq

    Frequently Asked Questions

    -

    Where can I find these docs in HTML?

    -

    https://docs.npmjs.com/, or run:

    -
    npm config set viewer browser
    -

    to open these documents in your default web browser rather than man.

    -

    It didn't work.

    -

    That's not really a question.

    -

    Why didn't it work?

    -

    I don't know yet.

    -

    Read the error output, and if you can't figure out what it means, -do what it says and post a bug with all the information it asks for.

    -

    Where does npm put stuff?

    -

    See npm-folders(5)

    -

    tl;dr:

    -
      -
    • Use the npm root command to see where modules go, and the npm bin -command to see where executables go
    • -
    • Global installs are different from local installs. If you install -something with the -g flag, then its executables go in npm bin -g -and its modules go in npm root -g.
    • -
    -

    How do I install something on my computer in a central location?

    -

    Install it globally by tacking -g or --global to the command. (This -is especially important for command line utilities that need to add -their bins to the global system PATH.)

    -

    I installed something globally, but I can't require() it

    -

    Install it locally.

    -

    The global install location is a place for command-line utilities -to put their bins in the system PATH. It's not for use with require().

    -

    If you require() a module in your code, then that means it's a -dependency, and a part of your program. You need to install it locally -in your program.

    -

    Why can't npm just put everything in one place, like other package managers?

    -

    Not every change is an improvement, but every improvement is a change. -This would be like asking git to do network IO for every commit. It's -not going to happen, because it's a terrible idea that causes more -problems than it solves.

    -

    It is much harder to avoid dependency conflicts without nesting -dependencies. This is fundamental to the way that npm works, and has -proven to be an extremely successful approach. See npm-folders(5) for -more details.

    -

    If you want a package to be installed in one place, and have all your -programs reference the same copy of it, then use the npm link command. -That's what it's for. Install it globally, then link it into each -program that uses it.

    -

    Whatever, I really want the old style 'everything global' style.

    -

    Write your own package manager. You could probably even wrap up npm -in a shell script if you really wanted to.

    -

    npm will not help you do something that is known to be a bad idea.

    -

    Should I check my node_modules folder into git?

    -

    Usually, no. Allow npm to resolve dependencies for your packages.

    -

    For packages you deploy, such as websites and apps, -you should use npm shrinkwrap to lock down your full dependency tree:

    -

    https://docs.npmjs.com/cli/shrinkwrap

    -

    If you are paranoid about depending on the npm ecosystem, -you should run a private npm mirror or a private cache.

    -

    If you want 100% confidence in being able to reproduce the specific bytes -included in a deployment, you should use an additional mechanism that can -verify contents rather than versions. For example, -Amazon machine images, DigitalOcean snapshots, Heroku slugs, or simple tarballs.

    -

    Is it 'npm' or 'NPM' or 'Npm'?

    -

    npm should never be capitalized unless it is being displayed in a -location that is customarily all-caps (such as the title of man pages.)

    -

    If 'npm' is an acronym, why is it never capitalized?

    -

    Contrary to the belief of many, "npm" is not in fact an abbreviation for -"Node Package Manager". It is a recursive bacronymic abbreviation for -"npm is not an acronym". (If it was "ninaa", then it would be an -acronym, and thus incorrectly named.)

    -

    "NPM", however, is an acronym (more precisely, a capitonym) for the -National Association of Pastoral Musicians. You can learn more -about them at http://npm.org/.

    -

    In software, "NPM" is a Non-Parametric Mapping utility written by -Chris Rorden. You can analyze pictures of brains with it. Learn more -about the (capitalized) NPM program at http://www.cabiatl.com/mricro/npm/.

    -

    The first seed that eventually grew into this flower was a bash utility -named "pm", which was a shortened descendent of "pkgmakeinst", a -bash function that was used to install various different things on different -platforms, most often using Yahoo's yinst. If npm was ever an -acronym for anything, it was node pm or maybe new pm.

    -

    So, in all seriousness, the "npm" project is named after its command-line -utility, which was organically selected to be easily typed by a right-handed -programmer using a US QWERTY keyboard layout, ending with the -right-ring-finger in a postition to type the - key for flags and -other command-line arguments. That command-line utility is always -lower-case, though it starts most sentences it is a part of.

    -

    How do I list installed packages?

    -

    npm ls

    -

    How do I search for packages?

    -

    npm search

    -

    Arguments are greps. npm search jsdom shows jsdom packages.

    -

    How do I update npm?

    -
    npm install npm -g
    -

    You can also update all outdated local packages by doing npm update without -any arguments, or global packages by doing npm update -g.

    -

    Occasionally, the version of npm will progress such that the current -version cannot be properly installed with the version that you have -installed already. (Consider, if there is ever a bug in the update -command.)

    -

    In those cases, you can do this:

    -
    curl https://www.npmjs.com/install.sh | sh
    -

    What is a package?

    -

    A package is:

    -
      -
    • a) a folder containing a program described by a package.json file
    • -
    • b) a gzipped tarball containing (a)
    • -
    • c) a url that resolves to (b)
    • -
    • d) a <name>@<version> that is published on the registry with (c)
    • -
    • e) a <name>@<tag> that points to (d)
    • -
    • f) a <name> that has a "latest" tag satisfying (e)
    • -
    • g) a git url that, when cloned, results in (a).
    • -
    -

    Even if you never publish your package, you can still get a lot of -benefits of using npm if you just want to write a node program (a), and -perhaps if you also want to be able to easily install it elsewhere -after packing it up into a tarball (b).

    -

    Git urls can be of the form:

    -
    git://github.com/user/project.git#commit-ish
    -git+ssh://user@hostname:project.git#commit-ish
    -git+http://user@hostname/project/blah.git#commit-ish
    -git+https://user@hostname/project/blah.git#commit-ish
    -

    The commit-ish can be any tag, sha, or branch which can be supplied as -an argument to git checkout. The default is master.

    -

    What is a module?

    -

    A module is anything that can be loaded with require() in a Node.js -program. The following things are all examples of things that can be -loaded as modules:

    -
      -
    • A folder with a package.json file containing a main field.
    • -
    • A folder with an index.js file in it.
    • -
    • A JavaScript file.
    • -
    -

    Most npm packages are modules, because they are libraries that you -load with require. However, there's no requirement that an npm -package be a module! Some only contain an executable command-line -interface, and don't provide a main field for use in Node programs.

    -

    Almost all npm packages (at least, those that are Node programs) -contain many modules within them (because every file they load with -require() is a module).

    -

    In the context of a Node program, the module is also the thing that -was loaded from a file. For example, in the following program:

    -
    var req = require('request')
    -

    we might say that "The variable req refers to the request module".

    -

    So, why is it the "node_modules" folder, but "package.json" file? Why not node_packages or module.json?

    -

    The package.json file defines the package. (See "What is a -package?" above.)

    -

    The node_modules folder is the place Node.js looks for modules. -(See "What is a module?" above.)

    -

    For example, if you create a file at node_modules/foo.js and then -had a program that did var f = require('foo.js') then it would load -the module. However, foo.js is not a "package" in this case, -because it does not have a package.json.

    -

    Alternatively, if you create a package which does not have an -index.js or a "main" field in the package.json file, then it is -not a module. Even if it's installed in node_modules, it can't be -an argument to require().

    -

    "node_modules" is the name of my deity's arch-rival, and a Forbidden Word in my religion. Can I configure npm to use a different folder?

    -

    No. This will never happen. This question comes up sometimes, -because it seems silly from the outside that npm couldn't just be -configured to put stuff somewhere else, and then npm could load them -from there. It's an arbitrary spelling choice, right? What's the big -deal?

    -

    At the time of this writing, the string 'node_modules' appears 151 -times in 53 separate files in npm and node core (excluding tests and -documentation).

    -

    Some of these references are in node's built-in module loader. Since -npm is not involved at all at run-time, node itself would have to -be configured to know where you've decided to stick stuff. Complexity -hurdle #1. Since the Node module system is locked, this cannot be -changed, and is enough to kill this request. But I'll continue, in -deference to your deity's delicate feelings regarding spelling.

    -

    Many of the others are in dependencies that npm uses, which are not -necessarily tightly coupled to npm (in the sense that they do not read -npm's configuration files, etc.) Each of these would have to be -configured to take the name of the node_modules folder as a -parameter. Complexity hurdle #2.

    -

    Furthermore, npm has the ability to "bundle" dependencies by adding -the dep names to the "bundledDependencies" list in package.json, -which causes the folder to be included in the package tarball. What -if the author of a module bundles its dependencies, and they use a -different spelling for node_modules? npm would have to rename the -folder at publish time, and then be smart enough to unpack it using -your locally configured name. Complexity hurdle #3.

    -

    Furthermore, what happens when you change this name? Fine, it's -easy enough the first time, just rename the node_modules folders to -./blergyblerp/ or whatever name you choose. But what about when you -change it again? npm doesn't currently track any state about past -configuration settings, so this would be rather difficult to do -properly. It would have to track every previous value for this -config, and always accept any of them, or else yesterday's install may -be broken tomorrow. Complexity hurdle #4.

    -

    Never going to happen. The folder is named node_modules. It is -written indelibly in the Node Way, handed down from the ancient times -of Node 0.3.

    -

    How do I install node with npm?

    -

    You don't. Try one of these node version managers:

    -

    Unix:

    - -

    Windows:

    - -

    How can I use npm for development?

    -

    See npm-developers(7) and package.json(5).

    -

    You'll most likely want to npm link your development folder. That's -awesomely handy.

    -

    To set up your own private registry, check out npm-registry(7).

    -

    Can I list a url as a dependency?

    -

    Yes. It should be a url to a gzipped tarball containing a single folder -that has a package.json in its root, or a git url. -(See "what is a package?" above.)

    - -

    See npm-link(1)

    -

    The package registry website. What is that exactly?

    -

    See npm-registry(7).

    -

    I forgot my password, and can't publish. How do I reset it?

    -

    Go to https://npmjs.com/forgot.

    -

    I get ECONNREFUSED a lot. What's up?

    -

    Either the registry is down, or node's DNS isn't able to reach out.

    -

    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 -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.

    -

    You can also often get a faster response by visiting the #npm channel -on Freenode IRC.

    -

    Why no namespaces?

    -

    npm has only one global namespace. If you want to namespace your own packages, -you may: simply use the - character to separate the names or use scoped -packages. npm is a mostly anarchic system. There is not sufficient need to -impose namespace rules on everyone.

    -

    As of 2.0, npm supports scoped packages, which allow you to publish a group of -related modules without worrying about name collisions.

    -

    Every npm user owns the scope associated with their username. For example, the -user named npm owns the scope @npm. Scoped packages are published inside a -scope by naming them as if they were files under the scope directory, e.g., by -setting name in package.json to @npm/npm.

    -

    Scoped packages are supported by the public npm registry. The npm client is -backwards-compatible with un-scoped registries, so it can be used to work with -scoped and un-scoped registries at the same time.

    -

    Unscoped packages can only depend on other unscoped packages. Scoped packages -can depend on packages from their own scope, a different scope, or the public -registry (unscoped).

    -

    For the current documentation of scoped packages, see -https://docs.npmjs.com/misc/scope

    -

    References:

    -
      -
    1. For the reasoning behind the "one global namespace", please see this -discussion: https://github.com/npm/npm/issues/798 (TL;DR: It doesn't -actually make things better, and can make them worse.)

      -
    2. -
    3. For the pre-implementation discussion of the scoped package feature, see -this discussion: https://github.com/npm/npm/issues/5239

      -
    4. -
    -

    Who does npm?

    -

    npm was originally written by Isaac Z. Schlueter, and many others have -contributed to it, some of them quite substantially.

    -

    The npm open source project, The npm Registry, and the community -website are maintained and operated by the -good folks at npm, Inc.

    -

    I have a question or request not addressed here. Where should I put it?

    -

    Post an issue on the github project:

    - -

    Why does npm hate me?

    -

    npm is not capable of hatred. It loves everyone, especially you.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/misc/npm-index.html b/deps/npm/html/partial/doc/misc/npm-index.html deleted file mode 100644 index a75c025771f8..000000000000 --- a/deps/npm/html/partial/doc/misc/npm-index.html +++ /dev/null @@ -1,220 +0,0 @@ -

    npm-index

    Index of all npm documentation

    -

    README

    -

    a JavaScript package manager

    -

    Command Line Documentation

    -

    Using npm on the command line

    -

    npm(1)

    -

    javascript package manager

    -

    npm-access(1)

    -

    Set access level on published packages

    -

    npm-adduser(1)

    -

    Add a registry user account

    -

    npm-bin(1)

    -

    Display npm bin folder

    -

    npm-bugs(1)

    -

    Bugs for a package in a web browser maybe

    -

    npm-build(1)

    -

    Build a package

    -

    npm-bundle(1)

    -

    REMOVED

    -

    npm-cache(1)

    -

    Manipulates packages cache

    -

    npm-completion(1)

    -

    Tab Completion for npm

    -

    npm-config(1)

    -

    Manage the npm configuration files

    -

    npm-dedupe(1)

    -

    Reduce duplication

    -

    npm-deprecate(1)

    -

    Deprecate a version of a package

    -

    npm-dist-tag(1)

    -

    Modify package distribution tags

    -

    npm-docs(1)

    -

    Docs for a package in a web browser maybe

    -

    npm-edit(1)

    -

    Edit an installed package

    -

    npm-explore(1)

    -

    Browse an installed package

    -

    npm-help-search(1)

    -

    Search npm help documentation

    -

    npm-help(1)

    -

    Get help on npm

    -

    npm-init(1)

    -

    Interactively create a package.json file

    -

    npm-install(1)

    -

    Install a package

    - -

    Symlink a package folder

    -

    npm-logout(1)

    -

    Log out of the registry

    -

    npm-ls(1)

    -

    List installed packages

    -

    npm-outdated(1)

    -

    Check for outdated packages

    -

    npm-owner(1)

    -

    Manage package owners

    -

    npm-pack(1)

    -

    Create a tarball from a package

    -

    npm-ping(1)

    -

    Ping npm registry

    -

    npm-prefix(1)

    -

    Display prefix

    -

    npm-prune(1)

    -

    Remove extraneous packages

    -

    npm-publish(1)

    -

    Publish a package

    -

    npm-rebuild(1)

    -

    Rebuild a package

    -

    npm-repo(1)

    -

    Open package repository page in the browser

    -

    npm-restart(1)

    -

    Restart a package

    -

    npm-rm(1)

    -

    Remove a package

    -

    npm-root(1)

    -

    Display npm root

    -

    npm-run-script(1)

    -

    Run arbitrary package scripts

    -

    npm-search(1)

    -

    Search for packages

    -

    npm-shrinkwrap(1)

    -

    Lock down dependency versions

    -

    npm-star(1)

    -

    Mark your favorite packages

    -

    npm-stars(1)

    -

    View packages marked as favorites

    -

    npm-start(1)

    -

    Start a package

    -

    npm-stop(1)

    -

    Stop a package

    -

    npm-tag(1)

    -

    Tag a published version

    -

    npm-test(1)

    -

    Test a package

    -

    npm-uninstall(1)

    -

    Remove a package

    -

    npm-unpublish(1)

    -

    Remove a package from the registry

    -

    npm-update(1)

    -

    Update a package

    -

    npm-version(1)

    -

    Bump a package version

    -

    npm-view(1)

    -

    View registry info

    -

    npm-whoami(1)

    -

    Display npm username

    -

    API Documentation

    -

    Using npm in your Node programs

    -

    npm(3)

    -

    javascript package manager

    -

    npm-bin(3)

    -

    Display npm bin folder

    -

    npm-bugs(3)

    -

    Bugs for a package in a web browser maybe

    -

    npm-cache(3)

    -

    manage the npm cache programmatically

    -

    npm-commands(3)

    -

    npm commands

    -

    npm-config(3)

    -

    Manage the npm configuration files

    -

    npm-deprecate(3)

    -

    Deprecate a version of a package

    -

    npm-docs(3)

    -

    Docs for a package in a web browser maybe

    -

    npm-edit(3)

    -

    Edit an installed package

    -

    npm-explore(3)

    -

    Browse an installed package

    -

    npm-help-search(3)

    -

    Search the help pages

    -

    npm-init(3)

    -

    Interactively create a package.json file

    -

    npm-install(3)

    -

    install a package programmatically

    - -

    Symlink a package folder

    -

    npm-load(3)

    -

    Load config settings

    -

    npm-ls(3)

    -

    List installed packages

    -

    npm-outdated(3)

    -

    Check for outdated packages

    -

    npm-owner(3)

    -

    Manage package owners

    -

    npm-pack(3)

    -

    Create a tarball from a package

    -

    npm-ping(3)

    -

    Ping npm registry

    -

    npm-prefix(3)

    -

    Display prefix

    -

    npm-prune(3)

    -

    Remove extraneous packages

    -

    npm-publish(3)

    -

    Publish a package

    -

    npm-rebuild(3)

    -

    Rebuild a package

    -

    npm-repo(3)

    -

    Open package repository page in the browser

    -

    npm-restart(3)

    -

    Restart a package

    -

    npm-root(3)

    -

    Display npm root

    -

    npm-run-script(3)

    -

    Run arbitrary package scripts

    -

    npm-search(3)

    -

    Search for packages

    -

    npm-shrinkwrap(3)

    -

    programmatically generate package shrinkwrap file

    -

    npm-start(3)

    -

    Start a package

    -

    npm-stop(3)

    -

    Stop a package

    -

    npm-tag(3)

    -

    Tag a published version

    -

    npm-test(3)

    -

    Test a package

    -

    npm-uninstall(3)

    -

    uninstall a package programmatically

    -

    npm-unpublish(3)

    -

    Remove a package from the registry

    -

    npm-update(3)

    -

    Update a package

    -

    npm-version(3)

    -

    Bump a package version

    -

    npm-view(3)

    -

    View registry info

    -

    npm-whoami(3)

    -

    Display npm username

    -

    Files

    -

    File system structures npm uses

    -

    npm-folders(5)

    -

    Folder Structures Used by npm

    -

    npmrc(5)

    -

    The npm config files

    -

    package.json(5)

    -

    Specifics of npm's package.json handling

    -

    Misc

    -

    Various other bits and bobs

    -

    npm-coding-style(7)

    -

    npm's "funny" coding style

    -

    npm-config(7)

    -

    More than you probably want to know about npm configuration

    -

    npm-developers(7)

    -

    Developer Guide

    -

    npm-disputes(7)

    -

    Handling Module Name Disputes

    -

    npm-faq(7)

    -

    Frequently Asked Questions

    -

    npm-index(7)

    -

    Index of all npm documentation

    -

    npm-registry(7)

    -

    The JavaScript Package Registry

    -

    npm-scope(7)

    -

    Scoped packages

    -

    npm-scripts(7)

    -

    How npm handles the "scripts" field

    -

    removing-npm(7)

    -

    Cleaning the Slate

    -

    semver(7)

    -

    The semantic versioner for npm

    - diff --git a/deps/npm/html/partial/doc/misc/npm-registry.html b/deps/npm/html/partial/doc/misc/npm-registry.html deleted file mode 100644 index 8dd80d4d25b2..000000000000 --- a/deps/npm/html/partial/doc/misc/npm-registry.html +++ /dev/null @@ -1,50 +0,0 @@ -

    npm-registry

    The JavaScript Package Registry

    -

    DESCRIPTION

    -

    To resolve packages by name and version, npm talks to a registry website -that implements the CommonJS Package Registry specification for reading -package info.

    -

    Additionally, npm's package registry implementation supports several -write APIs as well, to allow for publishing packages and managing user -account information.

    -

    The official public npm registry is at http://registry.npmjs.org/. It -is powered by a CouchDB database, of which there is a public mirror at -http://skimdb.npmjs.com/registry. The code for the couchapp is -available at http://github.com/npm/npm-registry-couchapp.

    -

    The registry URL used is determined by the scope of the package (see -npm-scope(7)). If no scope is specified, the default registry is used, which is -supplied by the registry config parameter. See npm-config(1), -npmrc(5), and npm-config(7) for more on managing npm's configuration.

    -

    Can I run my own private registry?

    -

    Yes!

    -

    The easiest way is to replicate the couch database, and use the same (or -similar) design doc to implement the APIs.

    -

    If you set up continuous replication from the official CouchDB, and then -set your internal CouchDB as the registry config, then you'll be able -to read any published packages, in addition to your private ones, and by -default will only publish internally.

    -

    If you then want to publish a package for the whole world to see, you can -simply override the --registry option for that publish command.

    -

    I don't want my package published in the official registry. It's private.

    -

    Set "private": true in your package.json to prevent it from being -published at all, or -"publishConfig":{"registry":"http://my-internal-registry.local"} -to force it to be published only to your internal registry.

    -

    See package.json(5) for more info on what goes in the package.json file.

    -

    Will you replicate from my registry into the public one?

    -

    No. If you want things to be public, then publish them into the public -registry using npm. What little security there is would be for nought -otherwise.

    -

    Do I have to use couchdb to build a registry that npm can talk to?

    -

    No, but it's way easier. Basically, yes, you do, or you have to -effectively implement the entire CouchDB API anyway.

    -

    Is there a website or something to see package docs and such?

    -

    Yes, head over to https://npmjs.com/

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/misc/npm-scope.html b/deps/npm/html/partial/doc/misc/npm-scope.html deleted file mode 100644 index f65c44036761..000000000000 --- a/deps/npm/html/partial/doc/misc/npm-scope.html +++ /dev/null @@ -1,71 +0,0 @@ -

    npm-scope

    Scoped packages

    -

    DESCRIPTION

    -

    All npm packages have a name. Some package names also have a scope. A scope -follows the usual rules for package names (url-safe characters, no leading dots -or underscores). When used in package names, preceded by an @-symbol and -followed by a slash, e.g.

    -
    @somescope/somepackagename
    -

    Scopes are a way of grouping related packages together, and also affect a few -things about the way npm treats the package.

    -

    Scoped packages are supported by the public npm registry. The npm -client is backwards-compatible with un-scoped registries, so it can be -used to work with scoped and un-scoped registries at the same time.

    -

    Installing scoped packages

    -

    Scoped packages are installed to a sub-folder of the regular installation -folder, e.g. if your other packages are installed in node_modules/packagename, -scoped modules will be in node_modules/@myorg/packagename. The scope folder -(@myorg) is simply the name of the scope preceded by an @-symbol, and can -contain any number of scoped packages.

    -

    A scoped package is installed by referencing it by name, preceded by an -@-symbol, in npm install:

    -
    npm install @myorg/mypackage
    -

    Or in package.json:

    -
    "dependencies": {
    -  "@myorg/mypackage": "^1.3.0"
    -}
    -

    Note that if the @-symbol is omitted in either case npm will instead attempt to -install from GitHub; see npm-install(1).

    -

    Requiring scoped packages

    -

    Because scoped packages are installed into a scope folder, you have to -include the name of the scope when requiring them in your code, e.g.

    -
    require('@myorg/mypackage')
    -

    There is nothing special about the way Node treats scope folders, this is -just specifying to require the module mypackage in the folder called @myorg.

    -

    Publishing scoped packages

    -

    Scoped packages can be published to any registry that supports them, including -the public npm registry.

    -

    (As of 2015-04-19, the public npm registry does support scoped packages)

    -

    If you wish, you may associate a scope with a registry; see below.

    -

    Publishing public scoped packages to the public npm registry

    -

    To publish a public scoped package, you must specify --access public with -the initial publication. This will publish the package and set access -to public as if you had run npm access public after publishing.

    -

    Publishing private scoped packages to the npm registry

    -

    To publish a private scoped package to the npm registry, you must have -an npm Private Modules -account.

    -

    You can then publish the module with npm publish or npm publish ---access restricted, and it will be present in the npm registry, with -restricted access. You can then change the access permissions, if -desired, with npm access or on the npmjs.com website.

    -

    Associating a scope with a registry

    -

    Scopes can be associated with a separate registry. This allows you to -seamlessly use a mix of packages from the public npm registry and one or more -private registries, such as npm Enterprise.

    -

    You can associate a scope with a registry at login, e.g.

    -
    npm login --registry=http://reg.example.com --scope=@myco
    -

    Scopes have a many-to-one relationship with registries: one registry can -host multiple scopes, but a scope only ever points to one registry.

    -

    You can also associate a scope with a registry using npm config:

    -
    npm config set @myco:registry http://reg.example.com
    -

    Once a scope is associated with a registry, any npm install for a package -with that scope will request packages from that registry instead. Any -npm publish for a package name that contains the scope will be published to -that registry instead.

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/misc/npm-scripts.html b/deps/npm/html/partial/doc/misc/npm-scripts.html deleted file mode 100644 index f4ce3221a3cd..000000000000 --- a/deps/npm/html/partial/doc/misc/npm-scripts.html +++ /dev/null @@ -1,187 +0,0 @@ -

    npm-scripts

    How npm handles the "scripts" field

    -

    DESCRIPTION

    -

    npm supports the "scripts" property of the package.json script, for the -following scripts:

    -
      -
    • prepublish: -Run BEFORE the package is published. (Also run on local npm -install without any arguments.)
    • -
    • publish, postpublish: -Run AFTER the package is published.
    • -
    • preinstall: -Run BEFORE the package is installed
    • -
    • install, postinstall: -Run AFTER the package is installed.
    • -
    • preuninstall, uninstall: -Run BEFORE the package is uninstalled.
    • -
    • postuninstall: -Run AFTER the package is uninstalled.
    • -
    • preversion, version: -Run BEFORE bump the package version.
    • -
    • postversion: -Run AFTER bump the package version.
    • -
    • pretest, test, posttest: -Run by the npm test command.
    • -
    • prestop, stop, poststop: -Run by the npm stop command.
    • -
    • prestart, start, poststart: -Run by the npm start command.
    • -
    • prerestart, restart, postrestart: -Run by the npm restart command. Note: npm restart will run the -stop and start scripts if no restart script is provided.
    • -
    -

    Additionally, arbitrary scripts can be executed by running npm -run-script <pkg> <stage>. Pre and post commands with matching -names will be run for those as well (e.g. premyscript, myscript, -postmyscript).

    -

    COMMON USES

    -

    If you need to perform operations on your package before it is used, in a way -that is not dependent on the operating system or architecture of the -target system, use a prepublish script. This includes -tasks such as:

    -
      -
    • Compiling CoffeeScript source code into JavaScript.
    • -
    • Creating minified versions of JavaScript source code.
    • -
    • Fetching remote resources that your package will use.
    • -
    -

    The advantage of doing these things at prepublish time is that they can be done once, in a -single place, thus reducing complexity and variability. -Additionally, this means that:

    -
      -
    • You can depend on coffee-script as a devDependency, and thus -your users don't need to have it installed.
    • -
    • You don't need to include minifiers in your package, reducing -the size for your users.
    • -
    • You don't need to rely on your users having curl or wget or -other system tools on the target machines.
    • -
    -

    DEFAULT VALUES

    -

    npm will default some script values based on package contents.

    -
      -
    • "start": "node server.js":

      -

      If there is a server.js file in the root of your package, then npm -will default the start command to node server.js.

      -
    • -
    • "preinstall": "node-waf clean || true; node-waf configure build":

      -

      If there is a wscript file in the root of your package, npm will -default the preinstall command to compile using node-waf.

      -
    • -
    -

    USER

    -

    If npm was invoked with root privileges, then it will change the uid -to the user account or uid specified by the user config, which -defaults to nobody. Set the unsafe-perm flag to run scripts with -root privileges.

    -

    ENVIRONMENT

    -

    Package scripts run in an environment where many pieces of information -are made available regarding the setup of npm and the current state of -the process.

    -

    path

    -

    If you depend on modules that define executable scripts, like test -suites, then those executables will be added to the PATH for -executing the scripts. So, if your package.json has this:

    -
    { "name" : "foo"
    -, "dependencies" : { "bar" : "0.1.x" }
    -, "scripts": { "start" : "bar ./test" } }
    -

    then you could run npm start to execute the bar script, which is -exported into the node_modules/.bin directory on npm install.

    -

    package.json vars

    -

    The package.json fields are tacked onto the npm_package_ prefix. So, -for instance, if you had {"name":"foo", "version":"1.2.5"} in your -package.json file, then your package scripts would have the -npm_package_name environment variable set to "foo", and the -npm_package_version set to "1.2.5"

    -

    configuration

    -

    Configuration parameters are put in the environment with the -npm_config_ prefix. For instance, you can view the effective root -config by checking the npm_config_root environment variable.

    -

    Special: package.json "config" object

    -

    The package.json "config" keys are overwritten in the environment if -there is a config param of <name>[@<version>]:<key>. For example, -if the package.json has this:

    -
    { "name" : "foo"
    -, "config" : { "port" : "8080" }
    -, "scripts" : { "start" : "node server.js" } }
    -

    and the server.js is this:

    -
    http.createServer(...).listen(process.env.npm_package_config_port)
    -

    then the user could change the behavior by doing:

    -
    npm config set foo:port 80
    -

    current lifecycle event

    -

    Lastly, the npm_lifecycle_event environment variable is set to -whichever stage of the cycle is being executed. So, you could have a -single script used for different parts of the process which switches -based on what's currently happening.

    -

    Objects are flattened following this format, so if you had -{"scripts":{"install":"foo.js"}} in your package.json, then you'd -see this in the script:

    -
    process.env.npm_package_scripts_install === "foo.js"
    -

    EXAMPLES

    -

    For example, if your package.json contains this:

    -
    { "scripts" :
    -  { "install" : "scripts/install.js"
    -  , "postinstall" : "scripts/install.js"
    -  , "uninstall" : "scripts/uninstall.js"
    -  }
    -}
    -

    then the scripts/install.js will be called for the install, -post-install, stages of the lifecycle, and the scripts/uninstall.js -would be called when the package is uninstalled. Since -scripts/install.js is running for three different phases, it would -be wise in this case to look at the npm_lifecycle_event environment -variable.

    -

    If you want to run a make command, you can do so. This works just -fine:

    -
    { "scripts" :
    -  { "preinstall" : "./configure"
    -  , "install" : "make && make install"
    -  , "test" : "make test"
    -  }
    -}
    -

    EXITING

    -

    Scripts are run by passing the line as a script argument to sh.

    -

    If the script exits with a code other than 0, then this will abort the -process.

    -

    Note that these script files don't have to be nodejs or even -javascript programs. They just have to be some kind of executable -file.

    -

    HOOK SCRIPTS

    -

    If you want to run a specific script at a specific lifecycle event for -ALL packages, then you can use a hook script.

    -

    Place an executable file at node_modules/.hooks/{eventname}, and -it'll get run for all packages when they are going through that point -in the package lifecycle for any packages installed in that root.

    -

    Hook scripts are run exactly the same way as package.json scripts. -That is, they are in a separate child process, with the env described -above.

    -

    BEST PRACTICES

    -
      -
    • Don't exit with a non-zero error code unless you really mean it. -Except for uninstall scripts, this will cause the npm action to -fail, and potentially be rolled back. If the failure is minor or -only will prevent some optional features, then it's better to just -print a warning and exit successfully.
    • -
    • Try not to use scripts to do what npm can do for you. Read through -package.json(5) to see all the things that you can specify and enable -by simply describing your package appropriately. In general, this -will lead to a more robust and consistent state.
    • -
    • Inspect the env to determine where to put things. For instance, if -the npm_config_binroot environ is set to /home/user/bin, then -don't try to install executables into /usr/local/bin. The user -probably set it up that way for a reason.
    • -
    • Don't prefix your script commands with "sudo". If root permissions -are required for some reason, then it'll fail with that error, and -the user will sudo the npm command in question.
    • -
    • Don't use install. Use a .gyp file for compilation, and prepublish -for anything else. You should almost never have to explicitly set a -preinstall or install script. If you are doing this, please consider if -there is another option. The only valid use of install or preinstall -scripts is for compilation which must be done on the target architecture.
    • -
    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/misc/removing-npm.html b/deps/npm/html/partial/doc/misc/removing-npm.html deleted file mode 100644 index 3b3968bfc012..000000000000 --- a/deps/npm/html/partial/doc/misc/removing-npm.html +++ /dev/null @@ -1,37 +0,0 @@ -

    npm-removal

    Cleaning the Slate

    -

    SYNOPSIS

    -

    So sad to see you go.

    -
    sudo npm uninstall npm -g
    -

    Or, if that fails, get the npm source code, and do:

    -
    sudo make uninstall
    -

    More Severe Uninstalling

    -

    Usually, the above instructions are sufficient. That will remove -npm, but leave behind anything you've installed.

    -

    If that doesn't work, or if you require more drastic measures, -continue reading.

    -

    Note that this is only necessary for globally-installed packages. Local -installs are completely contained within a project's node_modules -folder. Delete that folder, and everything is gone (unless a package's -install script is particularly ill-behaved).

    -

    This assumes that you installed node and npm in the default place. If -you configured node with a different --prefix, or installed npm with a -different prefix setting, then adjust the paths accordingly, replacing -/usr/local with your install prefix.

    -

    To remove everything npm-related manually:

    -
    rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/npm*
    -

    If you installed things with npm, then your best bet is to uninstall -them with npm first, and then install them again once you have a -proper install. This can help find any symlinks that are lying -around:

    -
    ls -laF /usr/local/{lib/node{,/.npm},bin,share/man} | grep npm
    -

    Prior to version 0.3, npm used shim files for executables and node -modules. To track those down, you can do the following:

    -
    find /usr/local/{lib/node,bin} -exec grep -l npm \{\} \; ;
    -

    (This is also in the README file.)

    -

    SEE ALSO

    - - diff --git a/deps/npm/html/partial/doc/misc/semver.html b/deps/npm/html/partial/doc/misc/semver.html deleted file mode 100644 index 9b763ed18caa..000000000000 --- a/deps/npm/html/partial/doc/misc/semver.html +++ /dev/null @@ -1,262 +0,0 @@ -

    semver

    The semantic versioner for npm

    -

    Usage

    -
    $ npm install semver
    -
    -semver.valid('1.2.3') // '1.2.3'
    -semver.valid('a.b.c') // null
    -semver.clean('  =v1.2.3   ') // '1.2.3'
    -semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
    -semver.gt('1.2.3', '9.8.7') // false
    -semver.lt('1.2.3', '9.8.7') // true
    -

    As a command-line utility:

    -
    $ semver -h
    -
    -Usage: semver <version> [<version> [...]] [-r <range> | -i <inc> | --preid <identifier> | -l | -rv]
    -Test if version(s) satisfy the supplied range(s), and sort them.
    -
    -Multiple versions or ranges may be supplied, unless increment
    -option is specified.  In that case, only a single version may
    -be used, and it is incremented by the specified level
    -
    -Program exits successfully if any valid version satisfies
    -all supplied ranges, and prints all satisfying versions.
    -
    -If no versions are valid, or ranges are not satisfied,
    -then exits failure.
    -
    -Versions are printed in ascending order, so supplying
    -multiple versions to the utility will just sort them.
    -

    Versions

    -

    A "version" is described by the v2.0.0 specification found at -http://semver.org/.

    -

    A leading "=" or "v" character is stripped off and ignored.

    -

    Ranges

    -

    A version range is a set of comparators which specify versions -that satisfy the range.

    -

    A comparator is composed of an operator and a version. The set -of primitive operators is:

    -
      -
    • < Less than
    • -
    • <= Less than or equal to
    • -
    • > Greater than
    • -
    • >= Greater than or equal to
    • -
    • = Equal. If no operator is specified, then equality is assumed, -so this operator is optional, but MAY be included.
    • -
    -

    For example, the comparator >=1.2.7 would match the versions -1.2.7, 1.2.8, 2.5.3, and 1.3.9, but not the versions 1.2.6 -or 1.1.0.

    -

    Comparators can be joined by whitespace to form a comparator set, -which is satisfied by the intersection of all of the comparators -it includes.

    -

    A range is composed of one or more comparator sets, joined by ||. A -version matches a range if and only if every comparator in at least -one of the ||-separated comparator sets is satisfied by the version.

    -

    For example, the range >=1.2.7 <1.3.0 would match the versions -1.2.7, 1.2.8, and 1.2.99, but not the versions 1.2.6, 1.3.0, -or 1.1.0.

    -

    The range 1.2.7 || >=1.2.9 <2.0.0 would match the versions 1.2.7, -1.2.9, and 1.4.6, but not the versions 1.2.8 or 2.0.0.

    -

    Prerelease Tags

    -

    If a version has a prerelease tag (for example, 1.2.3-alpha.3) then -it will only be allowed to satisfy comparator sets if at least one -comparator with the same [major, minor, patch] tuple also has a -prerelease tag.

    -

    For example, the range >1.2.3-alpha.3 would be allowed to match the -version 1.2.3-alpha.7, but it would not be satisfied by -3.4.5-alpha.9, even though 3.4.5-alpha.9 is technically "greater -than" 1.2.3-alpha.3 according to the SemVer sort rules. The version -range only accepts prerelease tags on the 1.2.3 version. The -version 3.4.5 would satisfy the range, because it does not have a -prerelease flag, and 3.4.5 is greater than 1.2.3-alpha.7.

    -

    The purpose for this behavior is twofold. First, prerelease versions -frequently are updated very quickly, and contain many breaking changes -that are (by the author's design) not yet fit for public consumption. -Therefore, by default, they are excluded from range matching -semantics.

    -

    Second, a user who has opted into using a prerelease version has -clearly indicated the intent to use that specific set of -alpha/beta/rc versions. By including a prerelease tag in the range, -the user is indicating that they are aware of the risk. However, it -is still not appropriate to assume that they have opted into taking a -similar risk on the next set of prerelease versions.

    -

    Prerelease Identifiers

    -

    The method .inc takes an additional identifier string argument that -will append the value of the string as a prerelease identifier:

    -
    > semver.inc('1.2.3', 'pre', 'beta')
    -'1.2.4-beta.0'
    -
    -

    command-line example:

    -
    $ semver 1.2.3 -i prerelease --preid beta
    -1.2.4-beta.0
    -
    -

    Which then can be used to increment further:

    -
    $ semver 1.2.4-beta.0 -i prerelease
    -1.2.4-beta.1
    -
    -

    Advanced Range Syntax

    -

    Advanced range syntax desugars to primitive comparators in -deterministic ways.

    -

    Advanced ranges may be combined in the same way as primitive -comparators using white space or ||.

    -

    Hyphen Ranges X.Y.Z - A.B.C

    -

    Specifies an inclusive set.

    -
      -
    • 1.2.3 - 2.3.4 := >=1.2.3 <=2.3.4
    • -
    -

    If a partial version is provided as the first version in the inclusive -range, then the missing pieces are replaced with zeroes.

    -
      -
    • 1.2 - 2.3.4 := >=1.2.0 <=2.3.4
    • -
    -

    If a partial version is provided as the second version in the -inclusive range, then all versions that start with the supplied parts -of the tuple are accepted, but nothing that would be greater than the -provided tuple parts.

    -
      -
    • 1.2.3 - 2.3 := >=1.2.3 <2.4.0
    • -
    • 1.2.3 - 2 := >=1.2.3 <3.0.0
    • -
    -

    X-Ranges 1.2.x 1.X 1.2.* *

    -

    Any of X, x, or * may be used to "stand in" for one of the -numeric values in the [major, minor, patch] tuple.

    -
      -
    • * := >=0.0.0 (Any version satisfies)
    • -
    • 1.x := >=1.0.0 <2.0.0 (Matching major version)
    • -
    • 1.2.x := >=1.2.0 <1.3.0 (Matching major and minor versions)
    • -
    -

    A partial version range is treated as an X-Range, so the special -character is in fact optional.

    -
      -
    • "" (empty string) := * := >=0.0.0
    • -
    • 1 := 1.x.x := >=1.0.0 <2.0.0
    • -
    • 1.2 := 1.2.x := >=1.2.0 <1.3.0
    • -
    -

    Tilde Ranges ~1.2.3 ~1.2 ~1

    -

    Allows patch-level changes if a minor version is specified on the -comparator. Allows minor-level changes if not.

    -
      -
    • ~1.2.3 := >=1.2.3 <1.(2+1).0 := >=1.2.3 <1.3.0
    • -
    • ~1.2 := >=1.2.0 <1.(2+1).0 := >=1.2.0 <1.3.0 (Same as 1.2.x)
    • -
    • ~1 := >=1.0.0 <(1+1).0.0 := >=1.0.0 <2.0.0 (Same as 1.x)
    • -
    • ~0.2.3 := >=0.2.3 <0.(2+1).0 := >=0.2.3 <0.3.0
    • -
    • ~0.2 := >=0.2.0 <0.(2+1).0 := >=0.2.0 <0.3.0 (Same as 0.2.x)
    • -
    • ~0 := >=0.0.0 <(0+1).0.0 := >=0.0.0 <1.0.0 (Same as 0.x)
    • -
    • ~1.2.3-beta.2 := >=1.2.3-beta.2 <1.3.0 Note that prereleases in -the 1.2.3 version will be allowed, if they are greater than or -equal to beta.2. So, 1.2.3-beta.4 would be allowed, but -1.2.4-beta.2 would not, because it is a prerelease of a -different [major, minor, patch] tuple.
    • -
    -

    Caret Ranges ^1.2.3 ^0.2.5 ^0.0.4

    -

    Allows changes that do not modify the left-most non-zero digit in the -[major, minor, patch] tuple. In other words, this allows patch and -minor updates for versions 1.0.0 and above, patch updates for -versions 0.X >=0.1.0, and no updates for versions 0.0.X.

    -

    Many authors treat a 0.x version as if the x were the major -"breaking-change" indicator.

    -

    Caret ranges are ideal when an author may make breaking changes -between 0.2.4 and 0.3.0 releases, which is a common practice. -However, it presumes that there will not be breaking changes between -0.2.4 and 0.2.5. It allows for changes that are presumed to be -additive (but non-breaking), according to commonly observed practices.

    -
      -
    • ^1.2.3 := >=1.2.3 <2.0.0
    • -
    • ^0.2.3 := >=0.2.3 <0.3.0
    • -
    • ^0.0.3 := >=0.0.3 <0.0.4
    • -
    • ^1.2.3-beta.2 := >=1.2.3-beta.2 <2.0.0 Note that prereleases in -the 1.2.3 version will be allowed, if they are greater than or -equal to beta.2. So, 1.2.3-beta.4 would be allowed, but -1.2.4-beta.2 would not, because it is a prerelease of a -different [major, minor, patch] tuple.
    • -
    • ^0.0.3-beta := >=0.0.3-beta <0.0.4 Note that prereleases in the -0.0.3 version only will be allowed, if they are greater than or -equal to beta. So, 0.0.3-pr.2 would be allowed.
    • -
    -

    When parsing caret ranges, a missing patch value desugars to the -number 0, but will allow flexibility within that value, even if the -major and minor versions are both 0.

    -
      -
    • ^1.2.x := >=1.2.0 <2.0.0
    • -
    • ^0.0.x := >=0.0.0 <0.1.0
    • -
    • ^0.0 := >=0.0.0 <0.1.0
    • -
    -

    A missing minor and patch values will desugar to zero, but also -allow flexibility within those values, even if the major version is -zero.

    -
      -
    • ^1.x := >=1.0.0 <2.0.0
    • -
    • ^0.x := >=0.0.0 <1.0.0
    • -
    -

    Functions

    -

    All methods and classes take a final loose boolean argument that, if -true, will be more forgiving about not-quite-valid semver strings. -The resulting output will always be 100% strict, of course.

    -

    Strict-mode Comparators and Ranges will be strict about the SemVer -strings that they parse.

    -
      -
    • valid(v): Return the parsed version, or null if it's not valid.
    • -
    • inc(v, release): Return the version incremented by the release -type (major, premajor, minor, preminor, patch, -prepatch, or prerelease), or null if it's not valid
        -
      • premajor in one call will bump the version up to the next major -version and down to a prerelease of that major version. -preminor, and prepatch work the same way.
      • -
      • If called from a non-prerelease version, the prerelease will work the -same as prepatch. It increments the patch version, then makes a -prerelease. If the input version is already a prerelease it simply -increments it.
      • -
      -
    • -
    • major(v): Return the major version number.
    • -
    • minor(v): Return the minor version number.
    • -
    • patch(v): Return the patch version number.
    • -
    -

    Comparison

    -
      -
    • gt(v1, v2): v1 > v2
    • -
    • gte(v1, v2): v1 >= v2
    • -
    • lt(v1, v2): v1 < v2
    • -
    • lte(v1, v2): v1 <= v2
    • -
    • eq(v1, v2): v1 == v2 This is true if they're logically equivalent, -even if they're not the exact same string. You already know how to -compare strings.
    • -
    • neq(v1, v2): v1 != v2 The opposite of eq.
    • -
    • cmp(v1, comparator, v2): Pass in a comparison string, and it'll call -the corresponding function above. "===" and "!==" do simple -string comparison, but are included for completeness. Throws if an -invalid comparison string is provided.
    • -
    • compare(v1, v2): Return 0 if v1 == v2, or 1 if v1 is greater, or -1 if -v2 is greater. Sorts in ascending order if passed to Array.sort().
    • -
    • rcompare(v1, v2): The reverse of compare. Sorts an array of versions -in descending order when passed to Array.sort().
    • -
    • diff(v1, v2): Returns difference between two versions by the release type -(major, premajor, minor, preminor, patch, prepatch, or prerelease), -or null if the versions are the same.
    • -
    -

    Ranges

    -
      -
    • validRange(range): Return the valid range or null if it's not valid
    • -
    • satisfies(version, range): Return true if the version satisfies the -range.
    • -
    • maxSatisfying(versions, range): Return the highest version in the list -that satisfies the range, or null if none of them do.
    • -
    • gtr(version, range): Return true if version is greater than all the -versions possible in the range.
    • -
    • ltr(version, range): Return true if version is less than all the -versions possible in the range.
    • -
    • outside(version, range, hilo): Return true if the version is outside -the bounds of the range in either the high or low direction. The -hilo argument must be either the string '>' or '<'. (This is -the function called by gtr and ltr.)
    • -
    -

    Note that, since ranges may be non-contiguous, a version might not be -greater than a range, less than a range, or satisfy a range! For -example, the range 1.2 <1.2.9 || >2.0.0 would have a hole from 1.2.9 -until 2.0.0, so the version 1.2.10 would not be greater than the -range (because 2.0.1 satisfies, which is higher), nor less than the -range (since 1.2.8 satisfies, which is lower), and it also does not -satisfy the range.

    -

    If you want to know if a version satisfies or does not satisfy a -range, use the satisfies(version, range) function.

    - diff --git a/deps/npm/lib/access.js b/deps/npm/lib/access.js index cf960a67d8b8..790a760cb722 100644 --- a/deps/npm/lib/access.js +++ b/deps/npm/lib/access.js @@ -1,123 +1,110 @@ -var assert = require("assert") -var resolve = require("path").resolve -var url = require("url") +'use strict' -var log = require("npmlog") -var readPackageJson = require("read-package-json") +var resolve = require('path').resolve -var mapToRegistry = require("./utils/map-to-registry.js") -var npa = require("npm-package-arg") -var npm = require("./npm.js") +var readPackageJson = require('read-package-json') +var mapToRegistry = require('./utils/map-to-registry.js') +var npm = require('./npm.js') + +var whoami = require('./whoami') module.exports = access -access.usage = "npm access public []" - + "\nnpm access restricted []" - + "\nnpm access add []" - + "\nnpm access rm []" - + "\nnpm access ls []" - + "\nnpm access edit []" +access.usage = + 'npm access public []\n' + + 'npm access restricted []\n' + + 'npm access grant []\n' + + 'npm access revoke []\n' + + 'npm access ls-packages [||]\n' + + 'npm access ls-collaborators [ []]\n' + + 'npm access edit []' + +access.subcommands = ['public', 'restricted', 'grant', 'revoke', + 'ls-packages', 'ls-collaborators', 'edit'] access.completion = function (opts, cb) { var argv = opts.conf.argv.remain if (argv.length === 2) { - return cb(null, ["public", "restricted", "add", "rm", "ls", "edit"]) + return cb(null, access.subcommands) } switch (argv[2]) { - case "public": - case "restricted": - case "ls": - case "edit": - return cb(new Error("unimplemented: packages you can change")) - case "add": - if (argv.length === 3) return cb(null, ["read-only", "read-write"]) - - return cb(new Error("unimplemented: entities and packages")) - case "rm": - return cb(new Error("unimplemented: entities and packages")) + case 'grant': + if (argv.length === 3) { + return cb(null, ['read-only', 'read-write']) + } else { + return cb(null, []) + } + case 'public': + case 'restricted': + case 'ls-packages': + case 'ls-collaborators': + case 'edit': + return cb(null, []) + case 'revoke': + return cb(null, []) default: - return cb(new Error(argv[2]+" not recognized")) + return cb(new Error(argv[2] + ' not recognized')) } } function access (args, cb) { var cmd = args.shift() - switch (cmd) { - case "public": case "restricted": return changeAccess(args, cmd, cb) - case "add": case "set": return add(args, cb) - case "rm": case "del": case "clear": return rm(args, cb) - case "list": case "sl": case "ls": return ls(args, cb) - case "edit": case "ed": return edit(args, cb) - default: return cb("Usage:\n"+access.usage) - } -} - -function changeAccess (args, level, cb) { - assert(Array.isArray(args), "changeAccess requires args be an array") - assert( - ["public", "restricted"].indexOf(level) !== -1, - "access level must be either 'public' or 'restricted'" - ) - assert(typeof cb === "function", "changeAccess requires a callback") - - var p = (args.shift() || "").trim() - if (!p) return getCurrentPackage(level, cb) - changeAccess_(p, level, cb) -} - -function getCurrentPackage (level, cb) { - var here = resolve(npm.prefix, "package.json") - log.verbose("setPackageLevel", "here", here) - - readPackageJson(here, function (er, data) { - if (er) return cb(er) - - if (!data.name) { - return cb(new Error("Package must be named")) - } - - changeAccess_(data.name, level, cb) + var params + return parseParams(cmd, args, function (err, p) { + if (err) { return cb(err) } + params = p + return mapToRegistry(params.package, npm.config, invokeCmd) }) -} -function changeAccess_ (name, level, cb) { - log.verbose("changeAccess", "name", name, "level", level) - mapToRegistry(name, npm.config, function (er, uri, auth, base) { - if (er) return cb(er) - - var data = npa(name) - if (!data.scope) { - var msg = "Sorry, you can't change the access level of unscoped packages." - log.error("access", msg) - return cb(new Error(msg)) + function invokeCmd (err, uri, auth, base) { + if (err) { return cb(err) } + params.auth = auth + try { + return npm.registry.access(cmd, uri, params, function (err, data) { + !err && data && console.log(JSON.stringify(data, undefined, 2)) + cb(err, data) + }) + } catch (e) { + cb(e.message + '\n\nUsage:\n' + access.usage) } + } +} - // name must be scoped, so escape separator - name = name.replace("/", "%2f") - // FIXME: mapToRegistry still isn't generic enough SIGH - uri = url.resolve(base, "-/package/"+name+"/access") - var params = { - level : level, - auth : auth +function parseParams (cmd, args, cb) { + var params = {} + if (cmd === 'grant') { + params.permissions = args.shift() + } + if (['grant', 'revoke', 'ls-packages'].indexOf(cmd) !== -1) { + var entity = (args.shift() || '').split(':') + params.scope = entity[0] + params.team = entity[1] + } + getPackage(args.shift(), function (err, pkg) { + if (err) { return cb(err) } + params.package = pkg + + if (!params.scope && cmd === 'ls-packages') { + whoami([], true, function (err, scope) { + params.scope = scope + cb(err, params) + }) + } else { + if (cmd === 'ls-collaborators') { + params.user = args.shift() + } + cb(null, params) } - - npm.registry.access(uri, params, cb) }) } -function add (args, cb) { - return cb(new Error("npm access add isn't implemented yet!")) -} - -function rm (args, cb) { - return cb(new Error("npm access rm isn't implemented yet!")) -} - -function ls (args, cb) { - return cb(new Error("npm access ls isn't implemented yet!")) -} - -function edit (args, cb) { - return cb(new Error("npm access edit isn't implemented yet!")) +function getPackage (name, cb) { + if (name && name.trim()) { + cb(null, name.trim()) + } else { + readPackageJson( + resolve(npm.prefix, 'package.json'), + function (err, data) { cb(err, data.name) }) + } } diff --git a/deps/npm/lib/adduser.js b/deps/npm/lib/adduser.js index f59372a296cc..367f3ba0d927 100644 --- a/deps/npm/lib/adduser.js +++ b/deps/npm/lib/adduser.js @@ -8,7 +8,7 @@ var log = require("npmlog") , crypto try { - crypto = process.binding("crypto") && require("crypto") + crypto = require("crypto") } catch (ex) {} adduser.usage = "npm adduser\nThen enter stuff at the prompts" diff --git a/deps/npm/lib/build.js b/deps/npm/lib/build.js index c5ee76e5c851..1f2d2efceb46 100644 --- a/deps/npm/lib/build.js +++ b/deps/npm/lib/build.js @@ -122,10 +122,10 @@ function shouldWarn(pkg, folder, global, cb) { // current searched package is the linked package on first call if (linkedPkg !== currentPkg) { - if (!topPkg.dependencies) return cb() - // don't generate a warning if it's listed in dependencies - if (Object.keys(topPkg.dependencies).indexOf(currentPkg) === -1) { + if (Object.keys(topPkg.dependencies || {}) + .concat(Object.keys(topPkg.devDependencies || {})) + .indexOf(currentPkg) === -1) { if (top && pkg.preferGlobal && !global) { log.warn("prefer global", pkg._id + " should be installed with -g") diff --git a/deps/npm/lib/cache/add-named.js b/deps/npm/lib/cache/add-named.js index 64a4670b0cd3..acc67bf9d26d 100644 --- a/deps/npm/lib/cache/add-named.js +++ b/deps/npm/lib/cache/add-named.js @@ -193,6 +193,12 @@ function addNameVersion (name, v, data, cb) { var rp = url.parse(ruri) if (tb.hostname === rp.hostname && tb.protocol !== rp.protocol) { tb.protocol = rp.protocol + // If a different port is associated with the other protocol + // we need to update that as well + if (rp.port !== tb.port) { + tb.port = rp.port + delete tb.host + } delete tb.href } tb = url.format(tb) diff --git a/deps/npm/lib/link.js b/deps/npm/lib/link.js index 916ebd6afeff..19c5dd062906 100644 --- a/deps/npm/lib/link.js +++ b/deps/npm/lib/link.js @@ -26,13 +26,13 @@ link.completion = function (opts, cb) { } function link (args, cb) { - if (process.platform === "win32") { - var semver = require("semver") - if (!semver.satisfies(process.version, ">=0.7.9")) { - var msg = "npm link not supported on windows prior to node 0.7.9" - , e = new Error(msg) - e.code = "ENOTSUP" - e.errno = require("constants").ENOTSUP + if (process.platform === 'win32') { + var semver = require('semver') + if (!semver.gte(process.version, '0.7.9')) { + var msg = 'npm link not supported on windows prior to node 0.7.9' + var e = new Error(msg) + e.code = 'ENOTSUP' + e.errno = require('constants').ENOTSUP return cb(e) } } @@ -97,14 +97,13 @@ function linkInstall (pkgs, cb) { function next () { chain - ( [ [npm.commands, "unbuild", [target]] - , [function (cb) { + ( [ [function (cb) { log.verbose("link", "symlinking %s to %s", pp, target) cb() }] , [symlink, pp, target] - // do run lifecycle scripts - full build here. - , rp && [build, [target]] + // do not run any scripts + , rp && [build, [target], npm.config.get("global"), build._noLC, true] , [ resultPrinter, pkg, pp, target, rp ] ] , cb ) } diff --git a/deps/npm/lib/npm.js b/deps/npm/lib/npm.js index 97cdad4de264..c049d95ba6e2 100644 --- a/deps/npm/lib/npm.js +++ b/deps/npm/lib/npm.js @@ -113,6 +113,7 @@ var commandCache = {} , "unpublish" , "owner" , "access" + , "team" , "deprecate" , "shrinkwrap" diff --git a/deps/npm/lib/run-script.js b/deps/npm/lib/run-script.js index 057af2bc69cb..2c805615a42e 100644 --- a/deps/npm/lib/run-script.js +++ b/deps/npm/lib/run-script.js @@ -62,7 +62,7 @@ function runScript (args, cb) { function list(cb) { var json = path.join(npm.localPrefix, "package.json") var cmdList = [ "publish", "install", "uninstall" - , "test", "stop", "start", "restart" + , "test", "stop", "start", "restart", "version" ].reduce(function (l, p) { return l.concat(["pre" + p, p, "post" + p]) }, []) diff --git a/deps/npm/lib/team.js b/deps/npm/lib/team.js new file mode 100644 index 000000000000..324d8df5e228 --- /dev/null +++ b/deps/npm/lib/team.js @@ -0,0 +1,54 @@ +var mapToRegistry = require('./utils/map-to-registry.js') +var npm = require('./npm') + +module.exports = team + +team.subcommands = ['create', 'destroy', 'add', 'rm', 'ls', 'edit'] + +team.usage = + 'npm team create \n' + + 'npm team destroy \n' + + 'npm team add \n' + + 'npm team rm \n' + + 'npm team ls |\n' + + 'npm team edit ' + +team.completion = function (opts, cb) { + var argv = opts.conf.argv.remain + if (argv.length === 2) { + return cb(null, team.subcommands) + } + switch (argv[2]) { + case 'ls': + case 'create': + case 'destroy': + case 'add': + case 'rm': + case 'edit': + return cb(null, []) + default: + return cb(new Error(argv[2] + ' not recognized')) + } +} + +function team (args, cb) { + // Entities are in the format : + var cmd = args.shift() + var entity = (args.shift() || '').split(':') + return mapToRegistry('/', npm.config, function (err, uri, auth) { + if (err) { return cb(err) } + try { + return npm.registry.team(cmd, uri, { + auth: auth, + scope: entity[0], + team: entity[1], + user: args.shift() + }, function (err, data) { + !err && data && console.log(JSON.stringify(data, undefined, 2)) + cb(err, data) + }) + } catch (e) { + cb(e.message + '\n\nUsage:\n' + team.usage) + } + }) +} diff --git a/deps/npm/lib/utils/completion.sh b/deps/npm/lib/utils/completion.sh index 3c7a3590d80f..25bef2c17b4b 100755 --- a/deps/npm/lib/utils/completion.sh +++ b/deps/npm/lib/utils/completion.sh @@ -7,17 +7,21 @@ # Or, maybe: npm completion > /usr/local/etc/bash_completion.d/npm # -COMP_WORDBREAKS=${COMP_WORDBREAKS/=/} -COMP_WORDBREAKS=${COMP_WORDBREAKS/@/} -export COMP_WORDBREAKS - if type complete &>/dev/null; then _npm_completion () { + local words cword + if type _get_comp_words_by_ref &>/dev/null; then + _get_comp_words_by_ref -n = -n @ -w words -i cword + else + cword="$COMP_CWORD" + words=("${COMP_WORDS[@]}") + fi + local si="$IFS" - IFS=$'\n' COMPREPLY=($(COMP_CWORD="$COMP_CWORD" \ + IFS=$'\n' COMPREPLY=($(COMP_CWORD="$cword" \ COMP_LINE="$COMP_LINE" \ COMP_POINT="$COMP_POINT" \ - npm completion -- "${COMP_WORDS[@]}" \ + npm completion -- "${words[@]}" \ 2>/dev/null)) || return $? IFS="$si" } diff --git a/deps/npm/lib/utils/error-handler.js b/deps/npm/lib/utils/error-handler.js index 6ffb2867e278..dac6a17f251c 100644 --- a/deps/npm/lib/utils/error-handler.js +++ b/deps/npm/lib/utils/error-handler.js @@ -366,6 +366,14 @@ function errorHandler (er) { ].join("\n")) break + case "EISDIR": + log.error("eisdir", [er.message + ,"This is most likely not a problem with npm itself" + ,"and is related to npm not being able to find a package.json in" + ,"a package you are trying to install." + ].join("\n")) + break + default: log.error("", er.message || er) log.error("", ["", "If you need help, you may report this error at:" diff --git a/deps/npm/lib/utils/lifecycle.js b/deps/npm/lib/utils/lifecycle.js index a6f2b98e88d2..9805a1c0c1dc 100644 --- a/deps/npm/lib/utils/lifecycle.js +++ b/deps/npm/lib/utils/lifecycle.js @@ -196,12 +196,12 @@ function runCmd_ (cmd, pkg, env, wd, stage, unsafe, uid, gid, cb_) { conf.gid = gid ^ 0 } - var sh = "sh" - var shFlag = "-c" + var sh = 'sh' + var shFlag = '-c' - if (process.platform === "win32") { - sh = process.env.comspec || "cmd" - shFlag = "/c" + if (process.platform === 'win32') { + sh = process.env.comspec || 'cmd' + shFlag = '/d /s /c' conf.windowsVerbatimArguments = true } @@ -313,7 +313,9 @@ function makeEnv (data, prefix, env) { , verPref = data.name + "@" + data.version + ":" keys.forEach(function (i) { - if (i.charAt(0) === "_" && i.indexOf("_"+namePref) !== 0) { + // in some rare cases (e.g. working with nerf darts), there are segmented + // "private" (underscore-prefixed) config names -- don't export + if (i.charAt(0) === '_' && i.indexOf('_' + namePref) !== 0 || i.match(/:_/)) { return } var value = npm.config.get(i) diff --git a/deps/npm/lib/whoami.js b/deps/npm/lib/whoami.js index d92a6574a181..bef0184a0065 100644 --- a/deps/npm/lib/whoami.js +++ b/deps/npm/lib/whoami.js @@ -40,7 +40,7 @@ function whoami (args, silent, cb) { // At this point, if they have a credentials object, it doesn't have a token // or auth in it. Probably just the default registry. var needAuth = new Error( - "'npm whoami' requires you to be logged in." + "this command requires you to be logged in." ) needAuth.code = 'ENEEDAUTH' process.nextTick(cb.bind(this, needAuth)) diff --git a/deps/npm/man/man1/npm-README.1 b/deps/npm/man/man1/npm-README.1 index 0f9a49903d7e..8254886adcdb 100644 --- a/deps/npm/man/man1/npm-README.1 +++ b/deps/npm/man/man1/npm-README.1 @@ -1,4 +1,4 @@ -.TH "NPM" "1" "August 2015" "" "" +.TH "NPM" "1" "November 2015" "" "" .SH "NAME" \fBnpm\fR \- a JavaScript package manager .P @@ -16,7 +16,7 @@ To install an old \fBand unsupported\fR version of npm that works on node 0\.3 and prior, clone the git repo and dig through the old tags and branches\. .SH Super Easy Install .P -npm comes with node \fIhttp://nodejs\.org/download/\fR now\. +npm is bundled with node \fIhttp://nodejs\.org/download/\fR\|\. .SS Windows Computers .P Get the MSI \fIhttp://nodejs\.org/download/\fR\|\. npm is in it\. diff --git a/deps/npm/man/man1/npm-access.1 b/deps/npm/man/man1/npm-access.1 index c0e4f0352cb9..f1b8bc0e316d 100644 --- a/deps/npm/man/man1/npm-access.1 +++ b/deps/npm/man/man1/npm-access.1 @@ -1,4 +1,4 @@ -.TH "NPM\-ACCESS" "1" "August 2015" "" "" +.TH "NPM\-ACCESS" "1" "November 2015" "" "" .SH "NAME" \fBnpm-access\fR \- Set access level on published packages .SH SYNOPSIS @@ -8,10 +8,11 @@ npm access public [] npm access restricted [] -npm access add [] -npm access rm [] +npm access grant [] +npm access revoke [] -npm access ls [] +npm access ls\-packages [||] +npm access ls\-collaborators [ []] npm access edit [] .fi .RE @@ -27,13 +28,19 @@ subcommand\. public / restricted: Set a package to be either publicly accessible or restricted\. .IP \(bu 2 -add / rm: +grant / revoke: Add or remove the ability of users and teams to have read\-only or read\-write access to a package\. .IP \(bu 2 -ls: +ls\-packages: +Show all of the packages a user or a team is able to access, along with the +access level, except for read\-only public packages (it won't print the whole +registry listing) +.IP \(bu 2 +ls\-collaborators: Show all of the access privileges for a package\. Will only show permissions -for packages to which you have at least read access\. +for packages to which you have at least read access\. If \fB\fP is passed in, +the list is filtered only to teams \fIthat\fR user happens to belong to\. .IP \(bu 2 edit: Set the access privileges for a package at once using \fB$EDITOR\fP\|\. @@ -65,9 +72,13 @@ of a team or directly as an owner\. If your account is not paid, then attempts to publish scoped packages will fail with an HTTP 402 status code (logically enough), unless you use \fB\-\-access=public\fP\|\. +.P +Management of teams and team memberships is done with the \fBnpm team\fP command\. .SH SEE ALSO .RS 0 .IP \(bu 2 +npm help team +.IP \(bu 2 npm help publish .IP \(bu 2 npm help 7 config diff --git a/deps/npm/man/man1/npm-adduser.1 b/deps/npm/man/man1/npm-adduser.1 index ca415540267c..f96eae96bce3 100644 --- a/deps/npm/man/man1/npm-adduser.1 +++ b/deps/npm/man/man1/npm-adduser.1 @@ -1,4 +1,4 @@ -.TH "NPM\-ADDUSER" "1" "August 2015" "" "" +.TH "NPM\-ADDUSER" "1" "November 2015" "" "" .SH "NAME" \fBnpm-adduser\fR \- Add a registry user account .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-bin.1 b/deps/npm/man/man1/npm-bin.1 index 56ee962802ac..fd8eee83bca7 100644 --- a/deps/npm/man/man1/npm-bin.1 +++ b/deps/npm/man/man1/npm-bin.1 @@ -1,4 +1,4 @@ -.TH "NPM\-BIN" "1" "August 2015" "" "" +.TH "NPM\-BIN" "1" "November 2015" "" "" .SH "NAME" \fBnpm-bin\fR \- Display npm bin folder .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-bugs.1 b/deps/npm/man/man1/npm-bugs.1 index c8ed16b78a62..7da5f012b272 100644 --- a/deps/npm/man/man1/npm-bugs.1 +++ b/deps/npm/man/man1/npm-bugs.1 @@ -1,4 +1,4 @@ -.TH "NPM\-BUGS" "1" "August 2015" "" "" +.TH "NPM\-BUGS" "1" "November 2015" "" "" .SH "NAME" \fBnpm-bugs\fR \- Bugs for a package in a web browser maybe .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-build.1 b/deps/npm/man/man1/npm-build.1 index 1d348eacf578..ae4a834a1064 100644 --- a/deps/npm/man/man1/npm-build.1 +++ b/deps/npm/man/man1/npm-build.1 @@ -1,4 +1,4 @@ -.TH "NPM\-BUILD" "1" "August 2015" "" "" +.TH "NPM\-BUILD" "1" "November 2015" "" "" .SH "NAME" \fBnpm-build\fR \- Build a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-bundle.1 b/deps/npm/man/man1/npm-bundle.1 index ccd6d821fd2a..fa54e083415a 100644 --- a/deps/npm/man/man1/npm-bundle.1 +++ b/deps/npm/man/man1/npm-bundle.1 @@ -1,4 +1,4 @@ -.TH "NPM\-BUNDLE" "1" "August 2015" "" "" +.TH "NPM\-BUNDLE" "1" "November 2015" "" "" .SH "NAME" \fBnpm-bundle\fR \- REMOVED .SH DESCRIPTION diff --git a/deps/npm/man/man1/npm-cache.1 b/deps/npm/man/man1/npm-cache.1 index 40e124e5ed52..c4bca767c449 100644 --- a/deps/npm/man/man1/npm-cache.1 +++ b/deps/npm/man/man1/npm-cache.1 @@ -1,4 +1,4 @@ -.TH "NPM\-CACHE" "1" "August 2015" "" "" +.TH "NPM\-CACHE" "1" "November 2015" "" "" .SH "NAME" \fBnpm-cache\fR \- Manipulates packages cache .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-completion.1 b/deps/npm/man/man1/npm-completion.1 index feb5e79d511a..2e17d6287e92 100644 --- a/deps/npm/man/man1/npm-completion.1 +++ b/deps/npm/man/man1/npm-completion.1 @@ -1,4 +1,4 @@ -.TH "NPM\-COMPLETION" "1" "August 2015" "" "" +.TH "NPM\-COMPLETION" "1" "November 2015" "" "" .SH "NAME" \fBnpm-completion\fR \- Tab Completion for npm .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-config.1 b/deps/npm/man/man1/npm-config.1 index 97a290c1bc69..764092fd13c4 100644 --- a/deps/npm/man/man1/npm-config.1 +++ b/deps/npm/man/man1/npm-config.1 @@ -1,4 +1,4 @@ -.TH "NPM\-CONFIG" "1" "August 2015" "" "" +.TH "NPM\-CONFIG" "1" "November 2015" "" "" .SH "NAME" \fBnpm-config\fR \- Manage the npm configuration files .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-dedupe.1 b/deps/npm/man/man1/npm-dedupe.1 index e567831f690a..cb50dddb4a7c 100644 --- a/deps/npm/man/man1/npm-dedupe.1 +++ b/deps/npm/man/man1/npm-dedupe.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DEDUPE" "1" "August 2015" "" "" +.TH "NPM\-DEDUPE" "1" "November 2015" "" "" .SH "NAME" \fBnpm-dedupe\fR \- Reduce duplication .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-deprecate.1 b/deps/npm/man/man1/npm-deprecate.1 index be91456a332f..6b51cbf6f42c 100644 --- a/deps/npm/man/man1/npm-deprecate.1 +++ b/deps/npm/man/man1/npm-deprecate.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DEPRECATE" "1" "August 2015" "" "" +.TH "NPM\-DEPRECATE" "1" "November 2015" "" "" .SH "NAME" \fBnpm-deprecate\fR \- Deprecate a version of a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-dist-tag.1 b/deps/npm/man/man1/npm-dist-tag.1 index b6abdb44b73e..8b30e986a4f7 100644 --- a/deps/npm/man/man1/npm-dist-tag.1 +++ b/deps/npm/man/man1/npm-dist-tag.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DIST\-TAG" "1" "August 2015" "" "" +.TH "NPM\-DIST\-TAG" "1" "November 2015" "" "" .SH "NAME" \fBnpm-dist-tag\fR \- Modify package distribution tags .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-docs.1 b/deps/npm/man/man1/npm-docs.1 index 2a221c644cb9..04e91d641e00 100644 --- a/deps/npm/man/man1/npm-docs.1 +++ b/deps/npm/man/man1/npm-docs.1 @@ -1,4 +1,4 @@ -.TH "NPM\-DOCS" "1" "August 2015" "" "" +.TH "NPM\-DOCS" "1" "November 2015" "" "" .SH "NAME" \fBnpm-docs\fR \- Docs for a package in a web browser maybe .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-edit.1 b/deps/npm/man/man1/npm-edit.1 index 1668bba248e8..e58e81d26cec 100644 --- a/deps/npm/man/man1/npm-edit.1 +++ b/deps/npm/man/man1/npm-edit.1 @@ -1,4 +1,4 @@ -.TH "NPM\-EDIT" "1" "August 2015" "" "" +.TH "NPM\-EDIT" "1" "November 2015" "" "" .SH "NAME" \fBnpm-edit\fR \- Edit an installed package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-explore.1 b/deps/npm/man/man1/npm-explore.1 index 73ca3b5ac430..a757dfd60c2f 100644 --- a/deps/npm/man/man1/npm-explore.1 +++ b/deps/npm/man/man1/npm-explore.1 @@ -1,4 +1,4 @@ -.TH "NPM\-EXPLORE" "1" "August 2015" "" "" +.TH "NPM\-EXPLORE" "1" "November 2015" "" "" .SH "NAME" \fBnpm-explore\fR \- Browse an installed package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-help-search.1 b/deps/npm/man/man1/npm-help-search.1 index 4f2ed84de2bb..612bfd2915fa 100644 --- a/deps/npm/man/man1/npm-help-search.1 +++ b/deps/npm/man/man1/npm-help-search.1 @@ -1,4 +1,4 @@ -.TH "NPM\-HELP\-SEARCH" "1" "August 2015" "" "" +.TH "NPM\-HELP\-SEARCH" "1" "November 2015" "" "" .SH "NAME" \fBnpm-help-search\fR \- Search npm help documentation .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-help.1 b/deps/npm/man/man1/npm-help.1 index c735cb7472d0..3691fca49d0d 100644 --- a/deps/npm/man/man1/npm-help.1 +++ b/deps/npm/man/man1/npm-help.1 @@ -1,4 +1,4 @@ -.TH "NPM\-HELP" "1" "August 2015" "" "" +.TH "NPM\-HELP" "1" "November 2015" "" "" .SH "NAME" \fBnpm-help\fR \- Get help on npm .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-init.1 b/deps/npm/man/man1/npm-init.1 index 712fd25faa12..8c6bf0397482 100644 --- a/deps/npm/man/man1/npm-init.1 +++ b/deps/npm/man/man1/npm-init.1 @@ -1,4 +1,4 @@ -.TH "NPM\-INIT" "1" "August 2015" "" "" +.TH "NPM\-INIT" "1" "November 2015" "" "" .SH "NAME" \fBnpm-init\fR \- Interactively create a package\.json file .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-install-test.1 b/deps/npm/man/man1/npm-install-test.1 new file mode 100644 index 000000000000..e2edecfc03a3 --- /dev/null +++ b/deps/npm/man/man1/npm-install-test.1 @@ -0,0 +1,32 @@ +.TH "NPM" "" "November 2015" "" "" +.SH "NAME" +\fBnpm\fR +.SH SYNOPSIS +.P +.RS 2 +.nf +npm install\-test (with no args, in package dir) +npm install\-test [<@scope>/] +npm install\-test [<@scope>/]@ +npm install\-test [<@scope>/]@ +npm install\-test [<@scope>/]@ +npm install\-test +npm install\-test +npm install\-test + +alias: npm it +common options: [\-\-save|\-\-save\-dev|\-\-save\-optional] [\-\-save\-exact] [\-\-dry\-run] +.fi +.RE +.SH DESCRIPTION +.P +This command runs an \fBnpm install\fP followed immediately by an \fBnpm test\fP\|\. It +takes exactly the same arguments as \fBnpm install\fP\|\. +.SH SEE ALSO +.RS 0 +.IP \(bu 2 +npm help install +.IP \(bu 2 +npm help test + +.RE diff --git a/deps/npm/man/man1/npm-install.1 b/deps/npm/man/man1/npm-install.1 index e4831263eb52..9b4290c0fde3 100644 --- a/deps/npm/man/man1/npm-install.1 +++ b/deps/npm/man/man1/npm-install.1 @@ -1,4 +1,4 @@ -.TH "NPM\-INSTALL" "1" "August 2015" "" "" +.TH "NPM\-INSTALL" "1" "November 2015" "" "" .SH "NAME" \fBnpm-install\fR \- Install a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-link.1 b/deps/npm/man/man1/npm-link.1 index 8063ef930e62..19492b21c082 100644 --- a/deps/npm/man/man1/npm-link.1 +++ b/deps/npm/man/man1/npm-link.1 @@ -1,4 +1,4 @@ -.TH "NPM\-LINK" "1" "August 2015" "" "" +.TH "NPM\-LINK" "1" "November 2015" "" "" .SH "NAME" \fBnpm-link\fR \- Symlink a package folder .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-logout.1 b/deps/npm/man/man1/npm-logout.1 index 6847fbf5983f..bf144bddc993 100644 --- a/deps/npm/man/man1/npm-logout.1 +++ b/deps/npm/man/man1/npm-logout.1 @@ -1,4 +1,4 @@ -.TH "NPM\-LOGOUT" "1" "August 2015" "" "" +.TH "NPM\-LOGOUT" "1" "November 2015" "" "" .SH "NAME" \fBnpm-logout\fR \- Log out of the registry .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1 index b24cc75fac87..bba1a27a2dfb 100644 --- a/deps/npm/man/man1/npm-ls.1 +++ b/deps/npm/man/man1/npm-ls.1 @@ -1,4 +1,4 @@ -.TH "NPM\-LS" "1" "August 2015" "" "" +.TH "NPM\-LS" "1" "November 2015" "" "" .SH "NAME" \fBnpm-ls\fR \- List installed packages .SH SYNOPSIS @@ -23,7 +23,7 @@ For example, running \fBnpm ls promzard\fP in npm's source tree will show: .P .RS 2 .nf -npm@2.13.4 /path/to/npm +npm@2.14.9 /path/to/npm └─┬ init\-package\-json@0\.0\.4 └── promzard@0\.1\.5 .fi diff --git a/deps/npm/man/man1/npm-outdated.1 b/deps/npm/man/man1/npm-outdated.1 index 6967f0a98b39..0f2ae4681ba1 100644 --- a/deps/npm/man/man1/npm-outdated.1 +++ b/deps/npm/man/man1/npm-outdated.1 @@ -1,4 +1,4 @@ -.TH "NPM\-OUTDATED" "1" "August 2015" "" "" +.TH "NPM\-OUTDATED" "1" "November 2015" "" "" .SH "NAME" \fBnpm-outdated\fR \- Check for outdated packages .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-owner.1 b/deps/npm/man/man1/npm-owner.1 index 216e832c49b4..1936ce029c23 100644 --- a/deps/npm/man/man1/npm-owner.1 +++ b/deps/npm/man/man1/npm-owner.1 @@ -1,4 +1,4 @@ -.TH "NPM\-OWNER" "1" "August 2015" "" "" +.TH "NPM\-OWNER" "1" "November 2015" "" "" .SH "NAME" \fBnpm-owner\fR \- Manage package owners .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-pack.1 b/deps/npm/man/man1/npm-pack.1 index 380ebac86694..a836493157d5 100644 --- a/deps/npm/man/man1/npm-pack.1 +++ b/deps/npm/man/man1/npm-pack.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PACK" "1" "August 2015" "" "" +.TH "NPM\-PACK" "1" "November 2015" "" "" .SH "NAME" \fBnpm-pack\fR \- Create a tarball from a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-ping.1 b/deps/npm/man/man1/npm-ping.1 index 8eb3faecab89..4d2b9a78bf0f 100644 --- a/deps/npm/man/man1/npm-ping.1 +++ b/deps/npm/man/man1/npm-ping.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PING" "1" "August 2015" "" "" +.TH "NPM\-PING" "1" "November 2015" "" "" .SH "NAME" \fBnpm-ping\fR \- Ping npm registry .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-prefix.1 b/deps/npm/man/man1/npm-prefix.1 index edfb6c1f265d..c6ea5f6fdfa7 100644 --- a/deps/npm/man/man1/npm-prefix.1 +++ b/deps/npm/man/man1/npm-prefix.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PREFIX" "1" "August 2015" "" "" +.TH "NPM\-PREFIX" "1" "November 2015" "" "" .SH "NAME" \fBnpm-prefix\fR \- Display prefix .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-prune.1 b/deps/npm/man/man1/npm-prune.1 index cdada7e0767e..3598ed1777c8 100644 --- a/deps/npm/man/man1/npm-prune.1 +++ b/deps/npm/man/man1/npm-prune.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PRUNE" "1" "August 2015" "" "" +.TH "NPM\-PRUNE" "1" "November 2015" "" "" .SH "NAME" \fBnpm-prune\fR \- Remove extraneous packages .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-publish.1 b/deps/npm/man/man1/npm-publish.1 index b02ff7d444f0..308d661511e3 100644 --- a/deps/npm/man/man1/npm-publish.1 +++ b/deps/npm/man/man1/npm-publish.1 @@ -1,4 +1,4 @@ -.TH "NPM\-PUBLISH" "1" "August 2015" "" "" +.TH "NPM\-PUBLISH" "1" "November 2015" "" "" .SH "NAME" \fBnpm-publish\fR \- Publish a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-rebuild.1 b/deps/npm/man/man1/npm-rebuild.1 index 5ad90138d49a..fd3a153ebded 100644 --- a/deps/npm/man/man1/npm-rebuild.1 +++ b/deps/npm/man/man1/npm-rebuild.1 @@ -1,4 +1,4 @@ -.TH "NPM\-REBUILD" "1" "August 2015" "" "" +.TH "NPM\-REBUILD" "1" "November 2015" "" "" .SH "NAME" \fBnpm-rebuild\fR \- Rebuild a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-repo.1 b/deps/npm/man/man1/npm-repo.1 index 9051863aa67a..d27b013fdeb3 100644 --- a/deps/npm/man/man1/npm-repo.1 +++ b/deps/npm/man/man1/npm-repo.1 @@ -1,4 +1,4 @@ -.TH "NPM\-REPO" "1" "August 2015" "" "" +.TH "NPM\-REPO" "1" "November 2015" "" "" .SH "NAME" \fBnpm-repo\fR \- Open package repository page in the browser .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-restart.1 b/deps/npm/man/man1/npm-restart.1 index 203fb24c46dc..0bc7541ccf80 100644 --- a/deps/npm/man/man1/npm-restart.1 +++ b/deps/npm/man/man1/npm-restart.1 @@ -1,4 +1,4 @@ -.TH "NPM\-RESTART" "1" "August 2015" "" "" +.TH "NPM\-RESTART" "1" "November 2015" "" "" .SH "NAME" \fBnpm-restart\fR \- Restart a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-rm.1 b/deps/npm/man/man1/npm-rm.1 index cd6b6b3ac9f8..edbd1fc6a70a 100644 --- a/deps/npm/man/man1/npm-rm.1 +++ b/deps/npm/man/man1/npm-rm.1 @@ -1,4 +1,4 @@ -.TH "NPM\-RM" "1" "August 2015" "" "" +.TH "NPM\-RM" "1" "November 2015" "" "" .SH "NAME" \fBnpm-rm\fR \- Remove a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-root.1 b/deps/npm/man/man1/npm-root.1 index 71666d0d1839..3418764c7cd6 100644 --- a/deps/npm/man/man1/npm-root.1 +++ b/deps/npm/man/man1/npm-root.1 @@ -1,4 +1,4 @@ -.TH "NPM\-ROOT" "1" "August 2015" "" "" +.TH "NPM\-ROOT" "1" "November 2015" "" "" .SH "NAME" \fBnpm-root\fR \- Display npm root .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-run-script.1 b/deps/npm/man/man1/npm-run-script.1 index 259aceb92f05..b06450214228 100644 --- a/deps/npm/man/man1/npm-run-script.1 +++ b/deps/npm/man/man1/npm-run-script.1 @@ -1,4 +1,4 @@ -.TH "NPM\-RUN\-SCRIPT" "1" "August 2015" "" "" +.TH "NPM\-RUN\-SCRIPT" "1" "November 2015" "" "" .SH "NAME" \fBnpm-run-script\fR \- Run arbitrary package scripts .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-search.1 b/deps/npm/man/man1/npm-search.1 index eef7c072ea53..f8699010f95c 100644 --- a/deps/npm/man/man1/npm-search.1 +++ b/deps/npm/man/man1/npm-search.1 @@ -1,4 +1,4 @@ -.TH "NPM\-SEARCH" "1" "August 2015" "" "" +.TH "NPM\-SEARCH" "1" "November 2015" "" "" .SH "NAME" \fBnpm-search\fR \- Search for packages .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-shrinkwrap.1 b/deps/npm/man/man1/npm-shrinkwrap.1 index 39d910b54593..811285af4886 100644 --- a/deps/npm/man/man1/npm-shrinkwrap.1 +++ b/deps/npm/man/man1/npm-shrinkwrap.1 @@ -1,4 +1,4 @@ -.TH "NPM\-SHRINKWRAP" "1" "August 2015" "" "" +.TH "NPM\-SHRINKWRAP" "1" "November 2015" "" "" .SH "NAME" \fBnpm-shrinkwrap\fR \- Lock down dependency versions .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-star.1 b/deps/npm/man/man1/npm-star.1 index f776e22b75e9..93d84af643bb 100644 --- a/deps/npm/man/man1/npm-star.1 +++ b/deps/npm/man/man1/npm-star.1 @@ -1,4 +1,4 @@ -.TH "NPM\-STAR" "1" "August 2015" "" "" +.TH "NPM\-STAR" "1" "November 2015" "" "" .SH "NAME" \fBnpm-star\fR \- Mark your favorite packages .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-stars.1 b/deps/npm/man/man1/npm-stars.1 index 070beaef6f51..2c4057ee2a2f 100644 --- a/deps/npm/man/man1/npm-stars.1 +++ b/deps/npm/man/man1/npm-stars.1 @@ -1,4 +1,4 @@ -.TH "NPM\-STARS" "1" "August 2015" "" "" +.TH "NPM\-STARS" "1" "November 2015" "" "" .SH "NAME" \fBnpm-stars\fR \- View packages marked as favorites .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-start.1 b/deps/npm/man/man1/npm-start.1 index ced564097ef3..9f027a9ffb9a 100644 --- a/deps/npm/man/man1/npm-start.1 +++ b/deps/npm/man/man1/npm-start.1 @@ -1,4 +1,4 @@ -.TH "NPM\-START" "1" "August 2015" "" "" +.TH "NPM\-START" "1" "November 2015" "" "" .SH "NAME" \fBnpm-start\fR \- Start a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-stop.1 b/deps/npm/man/man1/npm-stop.1 index 2a16fd59a997..044bbc066ac9 100644 --- a/deps/npm/man/man1/npm-stop.1 +++ b/deps/npm/man/man1/npm-stop.1 @@ -1,4 +1,4 @@ -.TH "NPM\-STOP" "1" "August 2015" "" "" +.TH "NPM\-STOP" "1" "November 2015" "" "" .SH "NAME" \fBnpm-stop\fR \- Stop a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-submodule.1 b/deps/npm/man/man1/npm-submodule.1 new file mode 100644 index 000000000000..79d0688edda5 --- /dev/null +++ b/deps/npm/man/man1/npm-submodule.1 @@ -0,0 +1,41 @@ +.\" Generated with Ronnjs 0.4.0 +.\" http://github.com/kapouer/ronnjs +. +.TH "NPM\-SUBMODULE" "1" "November 2015" "" "" +. +.SH "NAME" +\fBnpm-submodule\fR \-\- Add a package as a git submodule +. +.SH "SYNOPSIS" +. +.nf +npm submodule +. +.fi +. +.SH "DESCRIPTION" +If the specified package has a git repository url in its package\.json +description, then this command will add it as a git submodule at \fBnode_modules/\fR\|\. +. +.P +This is a convenience only\. From then on, it\'s up to you to manage +updates by using the appropriate git commands\. npm will stubbornly +refuse to update, modify, or remove anything with a \fB\|\.git\fR subfolder +in it\. +. +.P +This command also does not install missing dependencies, if the package +does not include them in its git repository\. If \fBnpm ls\fR reports that +things are missing, you can either install, link, or submodule them yourself, +or you can do \fBnpm explore \-\- npm install\fR to install the +dependencies into the submodule folder\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help 5 package\.json +. +.IP "\(bu" 4 +git help submodule +. +.IP "" 0 diff --git a/deps/npm/man/man1/npm-tag.1 b/deps/npm/man/man1/npm-tag.1 index d20ef40888c6..426751697b3f 100644 --- a/deps/npm/man/man1/npm-tag.1 +++ b/deps/npm/man/man1/npm-tag.1 @@ -1,4 +1,4 @@ -.TH "NPM\-TAG" "1" "August 2015" "" "" +.TH "NPM\-TAG" "1" "November 2015" "" "" .SH "NAME" \fBnpm-tag\fR \- Tag a published version .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-team.1 b/deps/npm/man/man1/npm-team.1 new file mode 100644 index 000000000000..2e88b97a7c1f --- /dev/null +++ b/deps/npm/man/man1/npm-team.1 @@ -0,0 +1,63 @@ +.TH "NPM\-TEAM" "1" "November 2015" "" "" +.SH "NAME" +\fBnpm-team\fR \- Manage organization teams and team memberships +.SH SYNOPSIS +.P +.RS 2 +.nf +npm team create +npm team destroy + +npm team add +npm team rm + +npm team ls | + +npm team edit +.fi +.RE +.SH DESCRIPTION +.P +Used to manage teams in organizations, and change team memberships\. Does not +handle permissions for packages\. +.P +Teams must always be fully qualified with the organization/scope they belond to +when operating on them, separated by a colon (\fB:\fP)\. That is, if you have a +\fBdevelopers\fP team on a \fBfoo\fP organization, you must always refer to that team as +\fBdevelopers:foo\fP in these commands\. +.RS 0 +.IP \(bu 2 +create / destroy: +Create a new team, or destroy an existing one\. +.IP \(bu 2 +add / rm: +Add a user to an existing team, or remove a user from a team they belong to\. +.IP \(bu 2 +ls: +If performed on an organization name, will return a list of existing teams +under that organization\. If performed on a team, it will instead return a list +of all users belonging to that particular team\. + +.RE +.SH DETAILS +.P +\fBnpm team\fP always operates directly on the current registry, configurable from +the command line using \fB\-\-registry=\fP\|\. +.P +In order to create teams and manage team membership, you must be a \fIteam admin\fR +under the given organization\. Listing teams and team memberships may be done by +any member of the organizations\. +.P +Organization creation and management of team admins and \fIorganization\fR members +is done through the website, not the npm CLI\. +.P +To use teams to manage permissions on packages belonging to your organization, +use the \fBnpm access\fP command to grant or revoke the appropriate permissions\. +.SH SEE ALSO +.RS 0 +.IP \(bu 2 +npm help access +.IP \(bu 2 +npm help 7 registr + +.RE diff --git a/deps/npm/man/man1/npm-test.1 b/deps/npm/man/man1/npm-test.1 index f6da31d6e065..c36e7f42adee 100644 --- a/deps/npm/man/man1/npm-test.1 +++ b/deps/npm/man/man1/npm-test.1 @@ -1,4 +1,4 @@ -.TH "NPM\-TEST" "1" "August 2015" "" "" +.TH "NPM\-TEST" "1" "November 2015" "" "" .SH "NAME" \fBnpm-test\fR \- Test a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-uninstall.1 b/deps/npm/man/man1/npm-uninstall.1 index 42aabe0aee4b..bbdf3360e512 100644 --- a/deps/npm/man/man1/npm-uninstall.1 +++ b/deps/npm/man/man1/npm-uninstall.1 @@ -1,4 +1,4 @@ -.TH "NPM\-RM" "1" "August 2015" "" "" +.TH "NPM\-RM" "1" "November 2015" "" "" .SH "NAME" \fBnpm-rm\fR \- Remove a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-unpublish.1 b/deps/npm/man/man1/npm-unpublish.1 index d773cde02401..830b240fb31f 100644 --- a/deps/npm/man/man1/npm-unpublish.1 +++ b/deps/npm/man/man1/npm-unpublish.1 @@ -1,4 +1,4 @@ -.TH "NPM\-UNPUBLISH" "1" "August 2015" "" "" +.TH "NPM\-UNPUBLISH" "1" "November 2015" "" "" .SH "NAME" \fBnpm-unpublish\fR \- Remove a package from the registry .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-update.1 b/deps/npm/man/man1/npm-update.1 index 5b41dce6bb84..3ded8282ceea 100644 --- a/deps/npm/man/man1/npm-update.1 +++ b/deps/npm/man/man1/npm-update.1 @@ -1,4 +1,4 @@ -.TH "NPM\-UPDATE" "1" "August 2015" "" "" +.TH "NPM\-UPDATE" "1" "November 2015" "" "" .SH "NAME" \fBnpm-update\fR \- Update a package .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-version.1 b/deps/npm/man/man1/npm-version.1 index 1cfe826186b6..f133aea501d3 100644 --- a/deps/npm/man/man1/npm-version.1 +++ b/deps/npm/man/man1/npm-version.1 @@ -1,4 +1,4 @@ -.TH "NPM\-VERSION" "1" "August 2015" "" "" +.TH "NPM\-VERSION" "1" "November 2015" "" "" .SH "NAME" \fBnpm-version\fR \- Bump a package version .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-view.1 b/deps/npm/man/man1/npm-view.1 index ef5daf4b58d9..395adb05b4e7 100644 --- a/deps/npm/man/man1/npm-view.1 +++ b/deps/npm/man/man1/npm-view.1 @@ -1,4 +1,4 @@ -.TH "NPM\-VIEW" "1" "August 2015" "" "" +.TH "NPM\-VIEW" "1" "November 2015" "" "" .SH "NAME" \fBnpm-view\fR \- View registry info .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm-whoami.1 b/deps/npm/man/man1/npm-whoami.1 index a8ab8dc749d8..459894ef68cd 100644 --- a/deps/npm/man/man1/npm-whoami.1 +++ b/deps/npm/man/man1/npm-whoami.1 @@ -1,4 +1,4 @@ -.TH "NPM\-WHOAMI" "1" "August 2015" "" "" +.TH "NPM\-WHOAMI" "1" "November 2015" "" "" .SH "NAME" \fBnpm-whoami\fR \- Display npm username .SH SYNOPSIS diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1 index 69f64f16f8b2..ec0a89985853 100644 --- a/deps/npm/man/man1/npm.1 +++ b/deps/npm/man/man1/npm.1 @@ -1,4 +1,4 @@ -.TH "NPM" "1" "August 2015" "" "" +.TH "NPM" "1" "November 2015" "" "" .SH "NAME" \fBnpm\fR \- javascript package manager .SH SYNOPSIS @@ -10,7 +10,7 @@ npm [args] .RE .SH VERSION .P -2.13.4 +2.14.9 .SH DESCRIPTION .P npm is the package manager for the Node JavaScript platform\. It puts diff --git a/deps/npm/man/man3/npm-bin.3 b/deps/npm/man/man3/npm-bin.3 index bfb93455d8a7..4ecc88c7716d 100644 --- a/deps/npm/man/man3/npm-bin.3 +++ b/deps/npm/man/man3/npm-bin.3 @@ -1,4 +1,4 @@ -.TH "NPM\-BIN" "3" "August 2015" "" "" +.TH "NPM\-BIN" "3" "November 2015" "" "" .SH "NAME" \fBnpm-bin\fR \- Display npm bin folder .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-bugs.3 b/deps/npm/man/man3/npm-bugs.3 index 2740034a58c7..e335380c6306 100644 --- a/deps/npm/man/man3/npm-bugs.3 +++ b/deps/npm/man/man3/npm-bugs.3 @@ -1,4 +1,4 @@ -.TH "NPM\-BUGS" "3" "August 2015" "" "" +.TH "NPM\-BUGS" "3" "November 2015" "" "" .SH "NAME" \fBnpm-bugs\fR \- Bugs for a package in a web browser maybe .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-cache.3 b/deps/npm/man/man3/npm-cache.3 index 50a6b7a38c0e..204513679c2f 100644 --- a/deps/npm/man/man3/npm-cache.3 +++ b/deps/npm/man/man3/npm-cache.3 @@ -1,4 +1,4 @@ -.TH "NPM\-CACHE" "3" "August 2015" "" "" +.TH "NPM\-CACHE" "3" "November 2015" "" "" .SH "NAME" \fBnpm-cache\fR \- manage the npm cache programmatically .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-commands.3 b/deps/npm/man/man3/npm-commands.3 index 03d0dc40bd19..09c221551e53 100644 --- a/deps/npm/man/man3/npm-commands.3 +++ b/deps/npm/man/man3/npm-commands.3 @@ -1,4 +1,4 @@ -.TH "NPM\-COMMANDS" "3" "August 2015" "" "" +.TH "NPM\-COMMANDS" "3" "November 2015" "" "" .SH "NAME" \fBnpm-commands\fR \- npm commands .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-config.3 b/deps/npm/man/man3/npm-config.3 index d2e57c26b575..284afac71665 100644 --- a/deps/npm/man/man3/npm-config.3 +++ b/deps/npm/man/man3/npm-config.3 @@ -1,4 +1,4 @@ -.TH "NPM\-CONFIG" "3" "August 2015" "" "" +.TH "NPM\-CONFIG" "3" "November 2015" "" "" .SH "NAME" \fBnpm-config\fR \- Manage the npm configuration files .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-deprecate.3 b/deps/npm/man/man3/npm-deprecate.3 index f0e35ab9d33f..7d570b41b92a 100644 --- a/deps/npm/man/man3/npm-deprecate.3 +++ b/deps/npm/man/man3/npm-deprecate.3 @@ -1,4 +1,4 @@ -.TH "NPM\-DEPRECATE" "3" "August 2015" "" "" +.TH "NPM\-DEPRECATE" "3" "November 2015" "" "" .SH "NAME" \fBnpm-deprecate\fR \- Deprecate a version of a package .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-docs.3 b/deps/npm/man/man3/npm-docs.3 index 4305dae16399..78c540d6cb9c 100644 --- a/deps/npm/man/man3/npm-docs.3 +++ b/deps/npm/man/man3/npm-docs.3 @@ -1,4 +1,4 @@ -.TH "NPM\-DOCS" "3" "August 2015" "" "" +.TH "NPM\-DOCS" "3" "November 2015" "" "" .SH "NAME" \fBnpm-docs\fR \- Docs for a package in a web browser maybe .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-edit.3 b/deps/npm/man/man3/npm-edit.3 index 27ccd879fac3..0a09f8344dad 100644 --- a/deps/npm/man/man3/npm-edit.3 +++ b/deps/npm/man/man3/npm-edit.3 @@ -1,4 +1,4 @@ -.TH "NPM\-EDIT" "3" "August 2015" "" "" +.TH "NPM\-EDIT" "3" "November 2015" "" "" .SH "NAME" \fBnpm-edit\fR \- Edit an installed package .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-explore.3 b/deps/npm/man/man3/npm-explore.3 index 9fb6e008aad2..e3c6c65fef01 100644 --- a/deps/npm/man/man3/npm-explore.3 +++ b/deps/npm/man/man3/npm-explore.3 @@ -1,4 +1,4 @@ -.TH "NPM\-EXPLORE" "3" "August 2015" "" "" +.TH "NPM\-EXPLORE" "3" "November 2015" "" "" .SH "NAME" \fBnpm-explore\fR \- Browse an installed package .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-help-search.3 b/deps/npm/man/man3/npm-help-search.3 index 243e5d2a28dc..6fe5427c4ad3 100644 --- a/deps/npm/man/man3/npm-help-search.3 +++ b/deps/npm/man/man3/npm-help-search.3 @@ -1,4 +1,4 @@ -.TH "NPM\-HELP\-SEARCH" "3" "August 2015" "" "" +.TH "NPM\-HELP\-SEARCH" "3" "November 2015" "" "" .SH "NAME" \fBnpm-help-search\fR \- Search the help pages .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-init.3 b/deps/npm/man/man3/npm-init.3 index 947398d7a864..9ab9ebe92846 100644 --- a/deps/npm/man/man3/npm-init.3 +++ b/deps/npm/man/man3/npm-init.3 @@ -1,4 +1,4 @@ -.TH "NPM" "" "August 2015" "" "" +.TH "NPM" "" "November 2015" "" "" .SH "NAME" \fBnpm\fR .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-install.3 b/deps/npm/man/man3/npm-install.3 index d2951dd0d45f..ef11bd432fab 100644 --- a/deps/npm/man/man3/npm-install.3 +++ b/deps/npm/man/man3/npm-install.3 @@ -1,4 +1,4 @@ -.TH "NPM\-INSTALL" "3" "August 2015" "" "" +.TH "NPM\-INSTALL" "3" "November 2015" "" "" .SH "NAME" \fBnpm-install\fR \- install a package programmatically .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-link.3 b/deps/npm/man/man3/npm-link.3 index 5877e03fbe8f..220fec23f04f 100644 --- a/deps/npm/man/man3/npm-link.3 +++ b/deps/npm/man/man3/npm-link.3 @@ -1,4 +1,4 @@ -.TH "NPM\-LINK" "3" "August 2015" "" "" +.TH "NPM\-LINK" "3" "November 2015" "" "" .SH "NAME" \fBnpm-link\fR \- Symlink a package folder .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-load.3 b/deps/npm/man/man3/npm-load.3 index ce409b6a5f66..d578958d381d 100644 --- a/deps/npm/man/man3/npm-load.3 +++ b/deps/npm/man/man3/npm-load.3 @@ -1,4 +1,4 @@ -.TH "NPM\-LOAD" "3" "August 2015" "" "" +.TH "NPM\-LOAD" "3" "November 2015" "" "" .SH "NAME" \fBnpm-load\fR \- Load config settings .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-ls.3 b/deps/npm/man/man3/npm-ls.3 index 4fc976f2ede0..7954a93d79cb 100644 --- a/deps/npm/man/man3/npm-ls.3 +++ b/deps/npm/man/man3/npm-ls.3 @@ -1,4 +1,4 @@ -.TH "NPM\-LS" "3" "August 2015" "" "" +.TH "NPM\-LS" "3" "November 2015" "" "" .SH "NAME" \fBnpm-ls\fR \- List installed packages .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-outdated.3 b/deps/npm/man/man3/npm-outdated.3 index f2fd1f73b70f..d9e7a6e165a5 100644 --- a/deps/npm/man/man3/npm-outdated.3 +++ b/deps/npm/man/man3/npm-outdated.3 @@ -1,4 +1,4 @@ -.TH "NPM\-OUTDATED" "3" "August 2015" "" "" +.TH "NPM\-OUTDATED" "3" "November 2015" "" "" .SH "NAME" \fBnpm-outdated\fR \- Check for outdated packages .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-owner.3 b/deps/npm/man/man3/npm-owner.3 index 16e2c5401967..91a50d13bf48 100644 --- a/deps/npm/man/man3/npm-owner.3 +++ b/deps/npm/man/man3/npm-owner.3 @@ -1,4 +1,4 @@ -.TH "NPM\-OWNER" "3" "August 2015" "" "" +.TH "NPM\-OWNER" "3" "November 2015" "" "" .SH "NAME" \fBnpm-owner\fR \- Manage package owners .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-pack.3 b/deps/npm/man/man3/npm-pack.3 index 037ec3c3467b..f1945fb12630 100644 --- a/deps/npm/man/man3/npm-pack.3 +++ b/deps/npm/man/man3/npm-pack.3 @@ -1,4 +1,4 @@ -.TH "NPM\-PACK" "3" "August 2015" "" "" +.TH "NPM\-PACK" "3" "November 2015" "" "" .SH "NAME" \fBnpm-pack\fR \- Create a tarball from a package .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-ping.3 b/deps/npm/man/man3/npm-ping.3 index 607fc8423e8d..c2b2fc65b162 100644 --- a/deps/npm/man/man3/npm-ping.3 +++ b/deps/npm/man/man3/npm-ping.3 @@ -1,4 +1,4 @@ -.TH "NPM\-PING" "3" "August 2015" "" "" +.TH "NPM\-PING" "3" "November 2015" "" "" .SH "NAME" \fBnpm-ping\fR \- Ping npm registry .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-prefix.3 b/deps/npm/man/man3/npm-prefix.3 index 5ca38b5ec214..239e1666fb65 100644 --- a/deps/npm/man/man3/npm-prefix.3 +++ b/deps/npm/man/man3/npm-prefix.3 @@ -1,4 +1,4 @@ -.TH "NPM\-PREFIX" "3" "August 2015" "" "" +.TH "NPM\-PREFIX" "3" "November 2015" "" "" .SH "NAME" \fBnpm-prefix\fR \- Display prefix .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-prune.3 b/deps/npm/man/man3/npm-prune.3 index 4bf3f28039ce..378ce5e40650 100644 --- a/deps/npm/man/man3/npm-prune.3 +++ b/deps/npm/man/man3/npm-prune.3 @@ -1,4 +1,4 @@ -.TH "NPM\-PRUNE" "3" "August 2015" "" "" +.TH "NPM\-PRUNE" "3" "November 2015" "" "" .SH "NAME" \fBnpm-prune\fR \- Remove extraneous packages .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-publish.3 b/deps/npm/man/man3/npm-publish.3 index 4a303370b0ed..eb28d2a66bcf 100644 --- a/deps/npm/man/man3/npm-publish.3 +++ b/deps/npm/man/man3/npm-publish.3 @@ -1,4 +1,4 @@ -.TH "NPM\-PUBLISH" "3" "August 2015" "" "" +.TH "NPM\-PUBLISH" "3" "November 2015" "" "" .SH "NAME" \fBnpm-publish\fR \- Publish a package .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-rebuild.3 b/deps/npm/man/man3/npm-rebuild.3 index b59df54005ac..36d806187a1d 100644 --- a/deps/npm/man/man3/npm-rebuild.3 +++ b/deps/npm/man/man3/npm-rebuild.3 @@ -1,4 +1,4 @@ -.TH "NPM\-REBUILD" "3" "August 2015" "" "" +.TH "NPM\-REBUILD" "3" "November 2015" "" "" .SH "NAME" \fBnpm-rebuild\fR \- Rebuild a package .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-repo.3 b/deps/npm/man/man3/npm-repo.3 index 53983bca9b94..16e4df2c0e7c 100644 --- a/deps/npm/man/man3/npm-repo.3 +++ b/deps/npm/man/man3/npm-repo.3 @@ -1,4 +1,4 @@ -.TH "NPM\-REPO" "3" "August 2015" "" "" +.TH "NPM\-REPO" "3" "November 2015" "" "" .SH "NAME" \fBnpm-repo\fR \- Open package repository page in the browser .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-restart.3 b/deps/npm/man/man3/npm-restart.3 index 478c2f5f30de..2eaa211b631e 100644 --- a/deps/npm/man/man3/npm-restart.3 +++ b/deps/npm/man/man3/npm-restart.3 @@ -1,4 +1,4 @@ -.TH "NPM\-RESTART" "3" "August 2015" "" "" +.TH "NPM\-RESTART" "3" "November 2015" "" "" .SH "NAME" \fBnpm-restart\fR \- Restart a package .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-root.3 b/deps/npm/man/man3/npm-root.3 index 8ade1a6826a6..e0d01e3ab252 100644 --- a/deps/npm/man/man3/npm-root.3 +++ b/deps/npm/man/man3/npm-root.3 @@ -1,4 +1,4 @@ -.TH "NPM\-ROOT" "3" "August 2015" "" "" +.TH "NPM\-ROOT" "3" "November 2015" "" "" .SH "NAME" \fBnpm-root\fR \- Display npm root .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-run-script.3 b/deps/npm/man/man3/npm-run-script.3 index 416f1ff79203..e9a53432744f 100644 --- a/deps/npm/man/man3/npm-run-script.3 +++ b/deps/npm/man/man3/npm-run-script.3 @@ -1,4 +1,4 @@ -.TH "NPM\-RUN\-SCRIPT" "3" "August 2015" "" "" +.TH "NPM\-RUN\-SCRIPT" "3" "November 2015" "" "" .SH "NAME" \fBnpm-run-script\fR \- Run arbitrary package scripts .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-search.3 b/deps/npm/man/man3/npm-search.3 index 823eff13b03c..dd7a022dd2ee 100644 --- a/deps/npm/man/man3/npm-search.3 +++ b/deps/npm/man/man3/npm-search.3 @@ -1,4 +1,4 @@ -.TH "NPM\-SEARCH" "3" "August 2015" "" "" +.TH "NPM\-SEARCH" "3" "November 2015" "" "" .SH "NAME" \fBnpm-search\fR \- Search for packages .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-shrinkwrap.3 b/deps/npm/man/man3/npm-shrinkwrap.3 index fa89d927ddbc..a5656e2b2f67 100644 --- a/deps/npm/man/man3/npm-shrinkwrap.3 +++ b/deps/npm/man/man3/npm-shrinkwrap.3 @@ -1,4 +1,4 @@ -.TH "NPM\-SHRINKWRAP" "3" "August 2015" "" "" +.TH "NPM\-SHRINKWRAP" "3" "November 2015" "" "" .SH "NAME" \fBnpm-shrinkwrap\fR \- programmatically generate package shrinkwrap file .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-start.3 b/deps/npm/man/man3/npm-start.3 index 050c108e818b..daa7502e72a4 100644 --- a/deps/npm/man/man3/npm-start.3 +++ b/deps/npm/man/man3/npm-start.3 @@ -1,4 +1,4 @@ -.TH "NPM\-START" "3" "August 2015" "" "" +.TH "NPM\-START" "3" "November 2015" "" "" .SH "NAME" \fBnpm-start\fR \- Start a package .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-stop.3 b/deps/npm/man/man3/npm-stop.3 index 9df3b4c69b85..d1aca3dec545 100644 --- a/deps/npm/man/man3/npm-stop.3 +++ b/deps/npm/man/man3/npm-stop.3 @@ -1,4 +1,4 @@ -.TH "NPM\-STOP" "3" "August 2015" "" "" +.TH "NPM\-STOP" "3" "November 2015" "" "" .SH "NAME" \fBnpm-stop\fR \- Stop a package .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-submodule.3 b/deps/npm/man/man3/npm-submodule.3 new file mode 100644 index 000000000000..70a160e10dad --- /dev/null +++ b/deps/npm/man/man3/npm-submodule.3 @@ -0,0 +1,41 @@ +.\" Generated with Ronnjs 0.4.0 +.\" http://github.com/kapouer/ronnjs +. +.TH "NPM\-SUBMODULE" "3" "November 2015" "" "" +. +.SH "NAME" +\fBnpm-submodule\fR \-\- Add a package as a git submodule +. +.SH "SYNOPSIS" +. +.nf +npm\.commands\.submodule(packages, callback) +. +.fi +. +.SH "DESCRIPTION" +For each package specified, npm will check if it has a git repository url +in its package\.json description then add it as a git submodule at \fBnode_modules/\fR\|\. +. +.P +This is a convenience only\. From then on, it\'s up to you to manage +updates by using the appropriate git commands\. npm will stubbornly +refuse to update, modify, or remove anything with a \fB\|\.git\fR subfolder +in it\. +. +.P +This command also does not install missing dependencies, if the package +does not include them in its git repository\. If \fBnpm ls\fR reports that +things are missing, you can either install, link, or submodule them yourself, +or you can do \fBnpm explore \-\- npm install\fR to install the +dependencies into the submodule folder\. +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help json +. +.IP "\(bu" 4 +git help submodule +. +.IP "" 0 diff --git a/deps/npm/man/man3/npm-tag.3 b/deps/npm/man/man3/npm-tag.3 index 5c3f35583091..dc7aaefda14a 100644 --- a/deps/npm/man/man3/npm-tag.3 +++ b/deps/npm/man/man3/npm-tag.3 @@ -1,4 +1,4 @@ -.TH "NPM\-TAG" "3" "August 2015" "" "" +.TH "NPM\-TAG" "3" "November 2015" "" "" .SH "NAME" \fBnpm-tag\fR \- Tag a published version .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-test.3 b/deps/npm/man/man3/npm-test.3 index f0a67f1241c0..b2184617e2d5 100644 --- a/deps/npm/man/man3/npm-test.3 +++ b/deps/npm/man/man3/npm-test.3 @@ -1,4 +1,4 @@ -.TH "NPM\-TEST" "3" "August 2015" "" "" +.TH "NPM\-TEST" "3" "November 2015" "" "" .SH "NAME" \fBnpm-test\fR \- Test a package .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-uninstall.3 b/deps/npm/man/man3/npm-uninstall.3 index fe9ebaaf1729..c02c62d6543e 100644 --- a/deps/npm/man/man3/npm-uninstall.3 +++ b/deps/npm/man/man3/npm-uninstall.3 @@ -1,4 +1,4 @@ -.TH "NPM\-UNINSTALL" "3" "August 2015" "" "" +.TH "NPM\-UNINSTALL" "3" "November 2015" "" "" .SH "NAME" \fBnpm-uninstall\fR \- uninstall a package programmatically .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-unpublish.3 b/deps/npm/man/man3/npm-unpublish.3 index 721bf206b558..d700a2cd8d64 100644 --- a/deps/npm/man/man3/npm-unpublish.3 +++ b/deps/npm/man/man3/npm-unpublish.3 @@ -1,4 +1,4 @@ -.TH "NPM\-UNPUBLISH" "3" "August 2015" "" "" +.TH "NPM\-UNPUBLISH" "3" "November 2015" "" "" .SH "NAME" \fBnpm-unpublish\fR \- Remove a package from the registry .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-update.3 b/deps/npm/man/man3/npm-update.3 index da780d598e81..0045e8facb02 100644 --- a/deps/npm/man/man3/npm-update.3 +++ b/deps/npm/man/man3/npm-update.3 @@ -1,4 +1,4 @@ -.TH "NPM\-UPDATE" "3" "August 2015" "" "" +.TH "NPM\-UPDATE" "3" "November 2015" "" "" .SH "NAME" \fBnpm-update\fR \- Update a package .SH SYNOPSIS @@ -8,7 +8,7 @@ npm\.commands\.update(packages, callback) .fi .RE -.TH "DESCRIPTION" "" "August 2015" "" "" +.TH "DESCRIPTION" "" "November 2015" "" "" .SH "NAME" \fBDESCRIPTION\fR .P diff --git a/deps/npm/man/man3/npm-version.3 b/deps/npm/man/man3/npm-version.3 index 7a13475c4336..1851cb50cbc0 100644 --- a/deps/npm/man/man3/npm-version.3 +++ b/deps/npm/man/man3/npm-version.3 @@ -1,4 +1,4 @@ -.TH "NPM\-VERSION" "3" "August 2015" "" "" +.TH "NPM\-VERSION" "3" "November 2015" "" "" .SH "NAME" \fBnpm-version\fR \- Bump a package version .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm-view.3 b/deps/npm/man/man3/npm-view.3 index 6921675a45cd..11f4d9253760 100644 --- a/deps/npm/man/man3/npm-view.3 +++ b/deps/npm/man/man3/npm-view.3 @@ -1,4 +1,4 @@ -.TH "NPM\-VIEW" "3" "August 2015" "" "" +.TH "NPM\-VIEW" "3" "November 2015" "" "" .SH "NAME" \fBnpm-view\fR \- View registry info .SH SYNOPSIS @@ -98,7 +98,7 @@ was required by each matching version of yui3: .P .RS 2 .nf -npm\.commands\.view(["yui3@'>0\.5\.4'", "dependencies\.jsdom"], callback) +npm\.commands\.view(["yui3@>0\.5\.4", "dependencies\.jsdom"], callback) .fi .RE .SH OUTPUT diff --git a/deps/npm/man/man3/npm-whoami.3 b/deps/npm/man/man3/npm-whoami.3 index 0c29cf748460..0f2e348e0b7d 100644 --- a/deps/npm/man/man3/npm-whoami.3 +++ b/deps/npm/man/man3/npm-whoami.3 @@ -1,4 +1,4 @@ -.TH "NPM\-WHOAMI" "3" "August 2015" "" "" +.TH "NPM\-WHOAMI" "3" "November 2015" "" "" .SH "NAME" \fBnpm-whoami\fR \- Display npm username .SH SYNOPSIS diff --git a/deps/npm/man/man3/npm.3 b/deps/npm/man/man3/npm.3 index 790675dd7aac..c57152b13bb6 100644 --- a/deps/npm/man/man3/npm.3 +++ b/deps/npm/man/man3/npm.3 @@ -1,4 +1,4 @@ -.TH "NPM" "3" "August 2015" "" "" +.TH "NPM" "3" "November 2015" "" "" .SH "NAME" \fBnpm\fR \- javascript package manager .SH SYNOPSIS @@ -20,7 +20,7 @@ npm\.load([configObject, ]function (er, npm) { .RE .SH VERSION .P -2.13.4 +2.14.9 .SH DESCRIPTION .P This is the API documentation for npm\. diff --git a/deps/npm/man/man5/npm-folders.5 b/deps/npm/man/man5/npm-folders.5 index 71a3c1574108..e52857ec548c 100644 --- a/deps/npm/man/man5/npm-folders.5 +++ b/deps/npm/man/man5/npm-folders.5 @@ -1,4 +1,4 @@ -.TH "NPM\-FOLDERS" "5" "August 2015" "" "" +.TH "NPM\-FOLDERS" "5" "November 2015" "" "" .SH "NAME" \fBnpm-folders\fR \- Folder Structures Used by npm .SH DESCRIPTION diff --git a/deps/npm/man/man5/npm-global.5 b/deps/npm/man/man5/npm-global.5 index 71a3c1574108..e52857ec548c 100644 --- a/deps/npm/man/man5/npm-global.5 +++ b/deps/npm/man/man5/npm-global.5 @@ -1,4 +1,4 @@ -.TH "NPM\-FOLDERS" "5" "August 2015" "" "" +.TH "NPM\-FOLDERS" "5" "November 2015" "" "" .SH "NAME" \fBnpm-folders\fR \- Folder Structures Used by npm .SH DESCRIPTION diff --git a/deps/npm/man/man5/npm-json.5 b/deps/npm/man/man5/npm-json.5 index f309144b511f..d8f5583d7a99 100644 --- a/deps/npm/man/man5/npm-json.5 +++ b/deps/npm/man/man5/npm-json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE\.JSON" "5" "August 2015" "" "" +.TH "PACKAGE\.JSON" "5" "November 2015" "" "" .SH "NAME" \fBpackage.json\fR \- Specifics of npm's package\.json handling .SH DESCRIPTION @@ -217,10 +217,10 @@ The "files" field is an array of files to include in your project\. If you name a folder in the array, then it will also include the files inside that folder\. (Unless they would be ignored by another rule\.) .P -You can also provide a "\.npmignore" file in the root of your package, -which will keep files from being included, even if they would be picked -up by the files array\. The "\.npmignore" file works just like a -"\.gitignore"\. +You can also provide a "\.npmignore" file in the root of your package or +in subdirectories, which will keep files from being included, even +if they would be picked up by the files array\. The \fB\|\.npmignore\fP file +works just like a \fB\|\.gitignore\fP\|\. .P Certain files are always included, regardless of settings: .RS 0 @@ -694,7 +694,7 @@ this\. If you depend on features introduced in 1\.5\.2, use \fB">= 1\.5\.2 < 2"\ .P Array of package names that will be bundled when publishing the package\. .P -If this is spelled \fB"bundleDependencies"\fP, then that is also honorable\. +If this is spelled \fB"bundleDependencies"\fP, then that is also honored\. .SH optionalDependencies .P If a dependency can be used, but you would like npm to proceed if it cannot be diff --git a/deps/npm/man/man5/npmrc.5 b/deps/npm/man/man5/npmrc.5 index 5088566d8e27..ed6ee372d336 100644 --- a/deps/npm/man/man5/npmrc.5 +++ b/deps/npm/man/man5/npmrc.5 @@ -1,4 +1,4 @@ -.TH "NPMRC" "5" "August 2015" "" "" +.TH "NPMRC" "5" "November 2015" "" "" .SH "NAME" \fBnpmrc\fR \- The npm config files .SH DESCRIPTION diff --git a/deps/npm/man/man5/package.json.5 b/deps/npm/man/man5/package.json.5 index f309144b511f..d8f5583d7a99 100644 --- a/deps/npm/man/man5/package.json.5 +++ b/deps/npm/man/man5/package.json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE\.JSON" "5" "August 2015" "" "" +.TH "PACKAGE\.JSON" "5" "November 2015" "" "" .SH "NAME" \fBpackage.json\fR \- Specifics of npm's package\.json handling .SH DESCRIPTION @@ -217,10 +217,10 @@ The "files" field is an array of files to include in your project\. If you name a folder in the array, then it will also include the files inside that folder\. (Unless they would be ignored by another rule\.) .P -You can also provide a "\.npmignore" file in the root of your package, -which will keep files from being included, even if they would be picked -up by the files array\. The "\.npmignore" file works just like a -"\.gitignore"\. +You can also provide a "\.npmignore" file in the root of your package or +in subdirectories, which will keep files from being included, even +if they would be picked up by the files array\. The \fB\|\.npmignore\fP file +works just like a \fB\|\.gitignore\fP\|\. .P Certain files are always included, regardless of settings: .RS 0 @@ -694,7 +694,7 @@ this\. If you depend on features introduced in 1\.5\.2, use \fB">= 1\.5\.2 < 2"\ .P Array of package names that will be bundled when publishing the package\. .P -If this is spelled \fB"bundleDependencies"\fP, then that is also honorable\. +If this is spelled \fB"bundleDependencies"\fP, then that is also honored\. .SH optionalDependencies .P If a dependency can be used, but you would like npm to proceed if it cannot be diff --git a/deps/npm/man/man7/npm-coding-style.7 b/deps/npm/man/man7/npm-coding-style.7 index e8487a91f0e9..a60a42ce5565 100644 --- a/deps/npm/man/man7/npm-coding-style.7 +++ b/deps/npm/man/man7/npm-coding-style.7 @@ -1,4 +1,4 @@ -.TH "NPM\-CODING\-STYLE" "7" "August 2015" "" "" +.TH "NPM\-CODING\-STYLE" "7" "November 2015" "" "" .SH "NAME" \fBnpm-coding-style\fR \- npm's "funny" coding style .SH DESCRIPTION diff --git a/deps/npm/man/man7/npm-config.7 b/deps/npm/man/man7/npm-config.7 index b99b699c53c5..7d6bede5d656 100644 --- a/deps/npm/man/man7/npm-config.7 +++ b/deps/npm/man/man7/npm-config.7 @@ -1,4 +1,4 @@ -.TH "NPM\-CONFIG" "7" "August 2015" "" "" +.TH "NPM\-CONFIG" "7" "November 2015" "" "" .SH "NAME" \fBnpm-config\fR \- More than you probably want to know about npm configuration .SH DESCRIPTION diff --git a/deps/npm/man/man7/npm-developers.7 b/deps/npm/man/man7/npm-developers.7 index eb31fc10efd7..703fac404cad 100644 --- a/deps/npm/man/man7/npm-developers.7 +++ b/deps/npm/man/man7/npm-developers.7 @@ -1,4 +1,4 @@ -.TH "NPM\-DEVELOPERS" "7" "August 2015" "" "" +.TH "NPM\-DEVELOPERS" "7" "November 2015" "" "" .SH "NAME" \fBnpm-developers\fR \- Developer Guide .SH DESCRIPTION @@ -110,7 +110,9 @@ Use a \fB\|\.npmignore\fP file to keep stuff out of your package\. If there's no \fB\|\.npmignore\fP file, but there \fIis\fR a \fB\|\.gitignore\fP file, then npm will ignore the stuff matched by the \fB\|\.gitignore\fP file\. If you \fIwant\fR to include something that is excluded by your \fB\|\.gitignore\fP file, you can -create an empty \fB\|\.npmignore\fP file to override it\. +create an empty \fB\|\.npmignore\fP file to override it\. Like \fBgit\fP, \fBnpm\fP looks +for \fB\|\.npmignore\fP and \fB\|\.gitignore\fP files in all subdirectories of your +package, not only the root directory\. .P \fB\|\.npmignore\fP files follow the same pattern rules \fIhttp://git\-scm\.com/book/en/v2/Git\-Basics\-Recording\-Changes\-to\-the\-Repository#Ignoring\-Files\fR as \fB\|\.gitignore\fP files: @@ -140,12 +142,16 @@ need to add them to \fB\|\.npmignore\fP explicitly: .IP \(bu 2 \fB\|\.hg\fP .IP \(bu 2 +\fB\|\.npmrc\fP +.IP \(bu 2 \fB\|\.lock\-wscript\fP .IP \(bu 2 \fB\|\.svn\fP .IP \(bu 2 \fB\|\.wafpickle\-*\fP .IP \(bu 2 +\fBconfig\.gypi\fP +.IP \(bu 2 \fBCVS\fP .IP \(bu 2 \fBnpm\-debug\.log\fP @@ -162,7 +168,11 @@ The following paths and files are never ignored, so adding them to .IP \(bu 2 \fBpackage\.json\fP .IP \(bu 2 -\fBREADME\.*\fP +\fBREADME\fP (and its variants) +.IP \(bu 2 +\fBCHANGELOG\fP (and its variants) +.IP \(bu 2 +\fBLICENSE\fP / \fBLICENCE\fP .RE .SH Link Packages diff --git a/deps/npm/man/man7/npm-disputes.7 b/deps/npm/man/man7/npm-disputes.7 index 77350cdc54ff..ae17206bcc6d 100644 --- a/deps/npm/man/man7/npm-disputes.7 +++ b/deps/npm/man/man7/npm-disputes.7 @@ -1,4 +1,4 @@ -.TH "NPM\-DISPUTES" "7" "August 2015" "" "" +.TH "NPM\-DISPUTES" "7" "November 2015" "" "" .SH "NAME" \fBnpm-disputes\fR \- Handling Module Name Disputes .SH SYNOPSIS diff --git a/deps/npm/man/man7/npm-faq.7 b/deps/npm/man/man7/npm-faq.7 index 651597a2b9a1..ad571b0c879d 100644 --- a/deps/npm/man/man7/npm-faq.7 +++ b/deps/npm/man/man7/npm-faq.7 @@ -1,4 +1,4 @@ -.TH "NPM\-FAQ" "7" "August 2015" "" "" +.TH "NPM\-FAQ" "7" "November 2015" "" "" .SH "NAME" \fBnpm-faq\fR \- Frequently Asked Questions .SH Where can I find these docs in HTML? diff --git a/deps/npm/man/man7/npm-index.7 b/deps/npm/man/man7/npm-index.7 index b67a68a46042..21e5539578ea 100644 --- a/deps/npm/man/man7/npm-index.7 +++ b/deps/npm/man/man7/npm-index.7 @@ -1,4 +1,4 @@ -.TH "NPM\-INDEX" "7" "August 2015" "" "" +.TH "NPM\-INDEX" "7" "November 2015" "" "" .SH "NAME" \fBnpm-index\fR \- Index of all npm documentation .SS npm help README @@ -136,6 +136,9 @@ Stop a package .SS npm help tag .P Tag a published version +.SS npm help team +.P +Manage organization teams and team memberships .SS npm help test .P Test a package @@ -313,6 +316,9 @@ Frequently Asked Questions .SS npm help 7 index .P Index of all npm documentation +.SS npm help 7 orgs +.P +Working with Teams & Orgs .SS npm help 7 registry .P The JavaScript Package Registry diff --git a/deps/npm/man/man7/npm-orgs.7 b/deps/npm/man/man7/npm-orgs.7 new file mode 100644 index 000000000000..503a6f35b007 --- /dev/null +++ b/deps/npm/man/man7/npm-orgs.7 @@ -0,0 +1,146 @@ +.TH "NPM\-ORGS" "7" "November 2015" "" "" +.SH "NAME" +\fBnpm-orgs\fR \- Working with Teams & Orgs +.SH DESCRIPTION +.P +There are three levels of org users: +.RS 0 +.IP 1. 3 +Super admin, controls billing & adding people to the org\. +.IP 2. 3 +Team admin, manages team membership & package access\. +.IP 3. 3 +Developer, works on packages they are given access to\. + +.RE +.P +The super admin is the only person who can add users to the org because it impacts the monthly bill\. The super admin will use the website to manage membership\. Every org has a \fBdevelopers\fP team that all users are automatically added to\. +.P +The team admin is the person who manages team creation, team membership, and package access for teams\. The team admin grants package access to teams, not individuals\. +.P +The developer will be able to access packages based on the teams they are on\. Access is either read\-write or read\-only\. +.P +There are two main commands: +.RS 0 +.IP 1. 3 +\fBnpm team\fP see npm help access for more details +.IP 2. 3 +\fBnpm access\fP see npm help team for more details + +.RE +.SH Team Admins create teams +.RS 0 +.IP \(bu 2 +Check who you’ve added to your org: + +.RE +.P +.RS 2 +.nf +npm team ls :developers +.fi +.RE +.RS 0 +.IP \(bu 2 +Each org is automatically given a \fBdevelopers\fP team, so you can see the whole list of team members in your org\. This team automatically gets read\-write access to all packages, but you can change that with the \fBaccess\fP command\. +.IP \(bu 2 +Create a new team: + +.RE +.P +.RS 2 +.nf +npm team create +.fi +.RE +.RS 0 +.IP \(bu 2 +Add members to that team: + +.RE +.P +.RS 2 +.nf +npm team add +.fi +.RE +.SH Publish a package and adjust package access +.RS 0 +.IP \(bu 2 +In package directory, run + +.RE +.P +.RS 2 +.nf +npm init \-\-scope= +.fi +.RE +.P +to scope it for your org & publish as usual +.RS 0 +.IP \(bu 2 +Grant access: + +.RE +.P +.RS 2 +.nf +npm access grant [] +.fi +.RE +.RS 0 +.IP \(bu 2 +Revoke access: + +.RE +.P +.RS 2 +.nf +npm access revoke [] +.fi +.RE +.SH Monitor your package access +.RS 0 +.IP \(bu 2 +See what org packages a team member can access: + +.RE +.P +.RS 2 +.nf +npm access ls\-packages +.fi +.RE +.RS 0 +.IP \(bu 2 +See packages available to a specific team: + +.RE +.P +.RS 2 +.nf +npm access ls\-packages +.fi +.RE +.RS 0 +.IP \(bu 2 +Check which teams are collaborating on a package: + +.RE +.P +.RS 2 +.nf +npm access ls\-collaborators +.fi +.RE +.SH SEE ALSO +.RS 0 +.IP \(bu 2 +npm help team +.IP \(bu 2 +npm help access +.IP \(bu 2 +npm help 7 scope + +.RE diff --git a/deps/npm/man/man7/npm-registry.7 b/deps/npm/man/man7/npm-registry.7 index 1cb4db20a699..71506a67719e 100644 --- a/deps/npm/man/man7/npm-registry.7 +++ b/deps/npm/man/man7/npm-registry.7 @@ -1,4 +1,4 @@ -.TH "NPM\-REGISTRY" "7" "August 2015" "" "" +.TH "NPM\-REGISTRY" "7" "November 2015" "" "" .SH "NAME" \fBnpm-registry\fR \- The JavaScript Package Registry .SH DESCRIPTION diff --git a/deps/npm/man/man7/npm-scope.7 b/deps/npm/man/man7/npm-scope.7 index 4bfe58c7f8d5..deadca7ba3a2 100644 --- a/deps/npm/man/man7/npm-scope.7 +++ b/deps/npm/man/man7/npm-scope.7 @@ -1,4 +1,4 @@ -.TH "NPM\-SCOPE" "7" "August 2015" "" "" +.TH "NPM\-SCOPE" "7" "November 2015" "" "" .SH "NAME" \fBnpm-scope\fR \- Scoped packages .SH DESCRIPTION diff --git a/deps/npm/man/man7/npm-scripts.7 b/deps/npm/man/man7/npm-scripts.7 index dd58324d86ce..d3a5ce9c5122 100644 --- a/deps/npm/man/man7/npm-scripts.7 +++ b/deps/npm/man/man7/npm-scripts.7 @@ -1,4 +1,4 @@ -.TH "NPM\-SCRIPTS" "7" "August 2015" "" "" +.TH "NPM\-SCRIPTS" "7" "November 2015" "" "" .SH "NAME" \fBnpm-scripts\fR \- How npm handles the "scripts" field .SH DESCRIPTION @@ -91,9 +91,9 @@ npm will default some script values based on package contents\. If there is a \fBserver\.js\fP file in the root of your package, then npm will default the \fBstart\fP command to \fBnode server\.js\fP\|\. .IP \(bu 2 -\fB"preinstall": "node\-waf clean || true; node\-waf configure build"\fP: -If there is a \fBwscript\fP file in the root of your package, npm will -default the \fBpreinstall\fP command to compile using node\-waf\. +\fB"install": "node\-gyp rebuild"\fP: +If there is a \fBbindings\.gyp\fP file in the root of your package, npm will +default the \fBinstall\fP command to compile using node\-gyp\. .RE .SH USER diff --git a/deps/npm/man/man7/removing-npm.7 b/deps/npm/man/man7/removing-npm.7 index ff6e7507def3..e26cab123819 100644 --- a/deps/npm/man/man7/removing-npm.7 +++ b/deps/npm/man/man7/removing-npm.7 @@ -1,4 +1,4 @@ -.TH "NPM\-REMOVAL" "1" "August 2015" "" "" +.TH "NPM\-REMOVAL" "1" "November 2015" "" "" .SH "NAME" \fBnpm-removal\fR \- Cleaning the Slate .SH SYNOPSIS diff --git a/deps/npm/man/man7/semver.7 b/deps/npm/man/man7/semver.7 index 24ce48b8f2fe..be2e6f0779c6 100644 --- a/deps/npm/man/man7/semver.7 +++ b/deps/npm/man/man7/semver.7 @@ -1,4 +1,4 @@ -.TH "SEMVER" "7" "August 2015" "" "" +.TH "SEMVER" "7" "November 2015" "" "" .SH "NAME" \fBsemver\fR \- The semantic versioner for npm .SH Usage diff --git a/deps/npm/node_modules/chmodr/chmodr.js b/deps/npm/node_modules/chmodr/chmodr.js index 9edaa7f02d7c..2f30d2f867b9 100644 --- a/deps/npm/node_modules/chmodr/chmodr.js +++ b/deps/npm/node_modules/chmodr/chmodr.js @@ -2,43 +2,62 @@ module.exports = chmodr chmodr.sync = chmodrSync var fs = require("fs") -, path = require("path") +var path = require("path") function chmodr (p, mode, cb) { + fs.lstat(p, function (er, stats) { + if (er) + return cb(er) + if (stats.isSymbolicLink()) + return cb() + if (stats.isDirectory()) + return chmodrDir(p, mode, cb) + return fs.chmod(p, mode, cb) + }) +} + +function chmodrDir (p, mode, cb) { fs.readdir(p, function (er, children) { - // any error other than ENOTDIR means it's not readable, or - // doesn't exist. give up. - if (er && er.code !== "ENOTDIR") + if (er) return cb(er) - var isDir = !er - var m = isDir ? dirMode(mode) : mode - if (er || !children.length) - return fs.chmod(p, m, cb) + + if (!children.length) + return fs.chmod(p, dirMode(mode), cb) var len = children.length var errState = null children.forEach(function (child) { chmodr(path.resolve(p, child), mode, then) }) + + // return first error, but not until all are finished, + // so we don't keep performing FS operations after the cb function then (er) { - if (errState) return - if (er) return cb(errState = er) - if (-- len === 0) return fs.chmod(p, dirMode(mode), cb) + len = len - 1 + if (er && !errState) + errState = er + if (len === 0) { + if (errState) + return cb(errState) + else + return fs.chmod(p, dirMode(mode), cb) + } } }) } function chmodrSync (p, mode) { - var children - try { - children = fs.readdirSync(p) - } catch (er) { - if (er && er.code === "ENOTDIR") return fs.chmodSync(p, mode) - throw er - } - if (!children.length) return fs.chmodSync(p, dirMode(mode)) - - children.forEach(function (child) { + var stats = fs.lstatSync(p) + if (stats.isSymbolicLink()) + return + if (stats.isDirectory()) + return chmodrDirSync(p, mode) + else + return fs.chmodSync(p, mode) +} + +function chmodrDirSync (p, mode) { + fs.readdirSync(p).forEach(function (child) { chmodrSync(path.resolve(p, child), mode) }) return fs.chmodSync(p, dirMode(mode)) @@ -47,8 +66,11 @@ function chmodrSync (p, mode) { // If a party has r, add x // so that dirs are listable function dirMode(mode) { - if (mode & 0400) mode |= 0100 - if (mode & 040) mode |= 010 - if (mode & 04) mode |= 01 + if (mode & 0400) + mode |= 0100 + if (mode & 040) + mode |= 010 + if (mode & 04) + mode |= 01 return mode } diff --git a/deps/npm/node_modules/chmodr/package.json b/deps/npm/node_modules/chmodr/package.json index e253434ef454..cd32ff52bbc3 100644 --- a/deps/npm/node_modules/chmodr/package.json +++ b/deps/npm/node_modules/chmodr/package.json @@ -6,38 +6,41 @@ }, "name": "chmodr", "description": "like `chmod -R`", - "version": "0.1.1", + "version": "1.0.2", "repository": { "type": "git", "url": "git://github.com/isaacs/chmodr.git" }, "main": "chmodr.js", "devDependencies": { - "tap": "0.2", "mkdirp": "0.3", - "rimraf": "" + "rimraf": "", + "tap": "^1.3.2" }, "scripts": { "test": "tap test/*.js" }, "license": "ISC", - "gitHead": "2f301476bc6fc93e47d2ba2e3ab0409f0d0c15ba", + "files": [ + "chmodr.js" + ], + "gitHead": "1eeeb38b3a4899714e11840fe28ea7fd93865f01", "bugs": { "url": "https://github.com/isaacs/chmodr/issues" }, "homepage": "https://github.com/isaacs/chmodr#readme", - "_id": "chmodr@0.1.1", - "_shasum": "115c8f9ec62be3ef019085782c9448e471560261", - "_from": "chmodr@0.1.1", - "_npmVersion": "2.10.0", - "_nodeVersion": "2.0.1", + "_id": "chmodr@1.0.2", + "_shasum": "04662b932d0f02ec66deaa2b0ea42811968e3eb9", + "_from": "chmodr@>=1.0.2 <1.1.0", + "_npmVersion": "3.3.2", + "_nodeVersion": "4.0.0", "_npmUser": { "name": "isaacs", "email": "isaacs@npmjs.com" }, "dist": { - "shasum": "115c8f9ec62be3ef019085782c9448e471560261", - "tarball": "http://registry.npmjs.org/chmodr/-/chmodr-0.1.1.tgz" + "shasum": "04662b932d0f02ec66deaa2b0ea42811968e3eb9", + "tarball": "http://registry.npmjs.org/chmodr/-/chmodr-1.0.2.tgz" }, "maintainers": [ { @@ -46,5 +49,5 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/chmodr/-/chmodr-0.1.1.tgz" + "_resolved": "https://registry.npmjs.org/chmodr/-/chmodr-1.0.2.tgz" } diff --git a/deps/npm/node_modules/chmodr/test/basic.js b/deps/npm/node_modules/chmodr/test/basic.js deleted file mode 100644 index aba1cd30a701..000000000000 --- a/deps/npm/node_modules/chmodr/test/basic.js +++ /dev/null @@ -1,63 +0,0 @@ -var chmodr = require("../") -, test = require("tap").test -, mkdirp = require("mkdirp") -, rimraf = require("rimraf") -, fs = require("fs") -, dirs = [] - -rimraf("/tmp/chmodr", function (er) { - if (er) throw er - var cnt = 5 - for (var i = 0; i < 5; i ++) { - mkdirp(getDir(), then) - } - function then (er) { - if (er) throw er - if (-- cnt === 0) { - runTest() - } - } -}) - -function getDir () { - var dir = "/tmp/chmodr" - - dir += "/" + Math.floor(Math.random() * Math.pow(16,4)).toString(16) - dirs.push(dir) - dir += "/" + Math.floor(Math.random() * Math.pow(16,4)).toString(16) - dirs.push(dir) - dir += "/" + Math.floor(Math.random() * Math.pow(16,4)).toString(16) - dirs.push(dir) - return dir -} - -function runTest () { - test("should complete successfully", function (t) { - console.error("calling chmodr 0700") - chmodr("/tmp/chmodr", 0700, function (er) { - t.ifError(er) - t.end() - }) - }) - - dirs.forEach(function (dir) { - test("verify "+dir, function (t) { - fs.stat(dir, function (er, st) { - if (er) { - t.ifError(er) - return t.end() - } - t.equal(st.mode & 0777, 0700, "mode should be 0700") - t.end() - }) - }) - }) - - test("cleanup", function (t) { - rimraf("/tmp/chmodr/", function (er) { - t.ifError(er) - t.end() - }) - }) -} - diff --git a/deps/npm/node_modules/chmodr/test/sync.js b/deps/npm/node_modules/chmodr/test/sync.js deleted file mode 100644 index 71f90cd1ee96..000000000000 --- a/deps/npm/node_modules/chmodr/test/sync.js +++ /dev/null @@ -1,58 +0,0 @@ -var chmodr = require("../") -, test = require("tap").test -, mkdirp = require("mkdirp") -, rimraf = require("rimraf") -, fs = require("fs") -, dirs = [] - -rimraf("/tmp/chmodr", function (er) { - if (er) throw er - var cnt = 5 - for (var i = 0; i < 5; i ++) { - mkdirp(getDir(), then) - } - function then (er) { - if (er) throw er - if (-- cnt === 0) { - runTest() - } - } -}) - -function getDir () { - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var dir = "/tmp/chmodr/" + [x,y,z].join("/") - dirs.push(dir) - return dir -} - -function runTest () { - test("should complete successfully", function (t) { - console.error("calling chmodr 0700") - chmodr.sync("/tmp/chmodr", 0700) - t.end() - }) - - dirs.forEach(function (dir) { - test("verify "+dir, function (t) { - fs.stat(dir, function (er, st) { - if (er) { - t.ifError(er) - return t.end() - } - t.equal(st.mode & 0777, 0700, "uid should be 0700") - t.end() - }) - }) - }) - - test("cleanup", function (t) { - rimraf("/tmp/chmodr", function (er) { - t.ifError(er) - t.end() - }) - }) -} - diff --git a/deps/npm/node_modules/chownr/LICENCE b/deps/npm/node_modules/chownr/LICENCE deleted file mode 100644 index 74489e2e2658..000000000000 --- a/deps/npm/node_modules/chownr/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/chownr/chownr.js b/deps/npm/node_modules/chownr/chownr.js index 598b8f844190..ecd7b452df57 100644 --- a/deps/npm/node_modules/chownr/chownr.js +++ b/deps/npm/node_modules/chownr/chownr.js @@ -14,7 +14,15 @@ function chownr (p, uid, gid, cb) { var len = children.length , errState = null children.forEach(function (child) { - chownr(path.resolve(p, child), uid, gid, then) + var pathChild = path.resolve(p, child); + fs.lstat(pathChild, function(er, stats) { + if (er) + return cb(er) + if (!stats.isSymbolicLink()) + chownr(pathChild, uid, gid, then) + else + then() + }) }) function then (er) { if (errState) return @@ -35,7 +43,10 @@ function chownrSync (p, uid, gid) { if (!children.length) return fs.chownSync(p, uid, gid) children.forEach(function (child) { - chownrSync(path.resolve(p, child), uid, gid) + var pathChild = path.resolve(p, child) + var stats = fs.lstatSync(pathChild) + if (!stats.isSymbolicLink()) + chownrSync(pathChild, uid, gid) }) return fs.chownSync(p, uid, gid) } diff --git a/deps/npm/node_modules/chownr/package.json b/deps/npm/node_modules/chownr/package.json index a551c869ec1a..fdd1dd23083e 100644 --- a/deps/npm/node_modules/chownr/package.json +++ b/deps/npm/node_modules/chownr/package.json @@ -6,38 +6,41 @@ }, "name": "chownr", "description": "like `chown -R`", - "version": "0.0.2", + "version": "1.0.1", "repository": { "type": "git", "url": "git://github.com/isaacs/chownr.git" }, "main": "chownr.js", + "files": [ + "chownr.js" + ], "devDependencies": { - "tap": "0.2", "mkdirp": "0.3", - "rimraf": "" + "rimraf": "", + "tap": "^1.2.0" }, "scripts": { "test": "tap test/*.js" }, "license": "ISC", - "gitHead": "3cafeb70b2c343e893f710750406b3909ec537cb", + "gitHead": "c6c43844e80d7c7045e737a72b9fbb1ba0579a26", "bugs": { "url": "https://github.com/isaacs/chownr/issues" }, "homepage": "https://github.com/isaacs/chownr#readme", - "_id": "chownr@0.0.2", - "_shasum": "2f9aebf746f90808ce00607b72ba73b41604c485", - "_from": "chownr@0.0.2", - "_npmVersion": "2.10.0", - "_nodeVersion": "2.0.1", + "_id": "chownr@1.0.1", + "_shasum": "e2a75042a9551908bebd25b8523d5f9769d79181", + "_from": "chownr@1.0.1", + "_npmVersion": "3.2.2", + "_nodeVersion": "2.2.1", "_npmUser": { "name": "isaacs", "email": "isaacs@npmjs.com" }, "dist": { - "shasum": "2f9aebf746f90808ce00607b72ba73b41604c485", - "tarball": "http://registry.npmjs.org/chownr/-/chownr-0.0.2.tgz" + "shasum": "e2a75042a9551908bebd25b8523d5f9769d79181", + "tarball": "http://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz" }, "maintainers": [ { @@ -46,5 +49,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/chownr/-/chownr-0.0.2.tgz" + "_resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/deps/npm/node_modules/chownr/test/basic.js b/deps/npm/node_modules/chownr/test/basic.js deleted file mode 100644 index 9e4f6bde0384..000000000000 --- a/deps/npm/node_modules/chownr/test/basic.js +++ /dev/null @@ -1,84 +0,0 @@ -if (!process.getuid || !process.getgid) { - throw new Error("Tests require getuid/getgid support") -} - -var curUid = +process.getuid() -, curGid = +process.getgid() -, chownr = require("../") -, test = require("tap").test -, mkdirp = require("mkdirp") -, rimraf = require("rimraf") -, fs = require("fs") - -// sniff the 'id' command for other groups that i can legally assign to -var exec = require("child_process").exec -, groups -, dirs = [] - -exec("id", function (code, output) { - if (code) throw new Error("failed to run 'id' command") - groups = output.trim().split("groups=")[1].split(",").map(function (s) { - return parseInt(s, 10) - }).filter(function (g) { - return g !== curGid - }) - - console.error([curUid, groups[0]], "uid, gid") - - rimraf("/tmp/chownr", function (er) { - if (er) throw er - var cnt = 5 - for (var i = 0; i < 5; i ++) { - mkdirp(getDir(), then) - } - function then (er) { - if (er) throw er - if (-- cnt === 0) { - runTest() - } - } - }) -}) - -function getDir () { - var dir = "/tmp/chownr" - - dir += "/" + Math.floor(Math.random() * Math.pow(16,4)).toString(16) - dirs.push(dir) - dir += "/" + Math.floor(Math.random() * Math.pow(16,4)).toString(16) - dirs.push(dir) - dir += "/" + Math.floor(Math.random() * Math.pow(16,4)).toString(16) - dirs.push(dir) - return dir -} - -function runTest () { - test("should complete successfully", function (t) { - console.error("calling chownr", curUid, groups[0], typeof curUid, typeof groups[0]) - chownr("/tmp/chownr", curUid, groups[0], function (er) { - t.ifError(er) - t.end() - }) - }) - - dirs.forEach(function (dir) { - test("verify "+dir, function (t) { - fs.stat(dir, function (er, st) { - if (er) { - t.ifError(er) - return t.end() - } - t.equal(st.uid, curUid, "uid should be " + curUid) - t.equal(st.gid, groups[0], "gid should be "+groups[0]) - t.end() - }) - }) - }) - - test("cleanup", function (t) { - rimraf("/tmp/chownr/", function (er) { - t.ifError(er) - t.end() - }) - }) -} diff --git a/deps/npm/node_modules/chownr/test/sync.js b/deps/npm/node_modules/chownr/test/sync.js deleted file mode 100644 index 2e26c56aafd2..000000000000 --- a/deps/npm/node_modules/chownr/test/sync.js +++ /dev/null @@ -1,79 +0,0 @@ -if (!process.getuid || !process.getgid) { - throw new Error("Tests require getuid/getgid support") -} - -var curUid = +process.getuid() -, curGid = +process.getgid() -, chownr = require("../") -, test = require("tap").test -, mkdirp = require("mkdirp") -, rimraf = require("rimraf") -, fs = require("fs") - -// sniff the 'id' command for other groups that i can legally assign to -var exec = require("child_process").exec -, groups -, dirs = [] - -exec("id", function (code, output) { - if (code) throw new Error("failed to run 'id' command") - groups = output.trim().split("groups=")[1].split(",").map(function (s) { - return parseInt(s, 10) - }).filter(function (g) { - return g !== curGid - }) - - console.error([curUid, groups[0]], "uid, gid") - - rimraf("/tmp/chownr", function (er) { - if (er) throw er - var cnt = 5 - for (var i = 0; i < 5; i ++) { - mkdirp(getDir(), then) - } - function then (er) { - if (er) throw er - if (-- cnt === 0) { - runTest() - } - } - }) -}) - -function getDir () { - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var dir = "/tmp/chownr/" + [x,y,z].join("/") - dirs.push(dir) - return dir -} - -function runTest () { - test("should complete successfully", function (t) { - console.error("calling chownr", curUid, groups[0], typeof curUid, typeof groups[0]) - chownr.sync("/tmp/chownr", curUid, groups[0]) - t.end() - }) - - dirs.forEach(function (dir) { - test("verify "+dir, function (t) { - fs.stat(dir, function (er, st) { - if (er) { - t.ifError(er) - return t.end() - } - t.equal(st.uid, curUid, "uid should be " + curUid) - t.equal(st.gid, groups[0], "gid should be "+groups[0]) - t.end() - }) - }) - }) - - test("cleanup", function (t) { - rimraf("/tmp/chownr/", function (er) { - t.ifError(er) - t.end() - }) - }) -} diff --git a/deps/npm/node_modules/columnify/columnify.js b/deps/npm/node_modules/columnify/columnify.js index db10a0118175..42b2089a3485 100644 --- a/deps/npm/node_modules/columnify/columnify.js +++ b/deps/npm/node_modules/columnify/columnify.js @@ -1,6 +1,4 @@ -'use strict'; - -var _toConsumableArray = function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }; +"use strict"; var wcwidth = require('./width'); @@ -35,7 +33,7 @@ var DEFAULTS = Object.freeze({ }); module.exports = function (items) { - var options = arguments[1] === undefined ? {} : arguments[1]; + var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; var columnConfigs = options.config || {}; delete options.config; // remove config so doesn't appear on every column. @@ -217,6 +215,7 @@ function createRows(items, columns, columnNames, paddingChr) { columnNames.forEach(function (columnName) { numLines = Math.max(numLines, item[columnName].length); }); + // combine matching lines of each rows var _loop = function (i) { row[i] = row[i] || []; @@ -227,7 +226,6 @@ function createRows(items, columns, columnNames, paddingChr) { }); }; - // combine matching lines of each rows for (var i = 0; i < numLines; i++) { _loop(i); } @@ -242,18 +240,13 @@ function createRows(items, columns, columnNames, paddingChr) { */ function mixin() { - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - if (Object.assign) { - return Object.assign.apply(Object, _toConsumableArray(args)); - }return ObjectAssign.apply(undefined, _toConsumableArray(args)); + if (Object.assign) return Object.assign.apply(Object, arguments); + return ObjectAssign.apply(undefined, arguments); } function ObjectAssign(target, firstSource) { - 'use strict'; - if (target === undefined || target === null) throw new TypeError('Cannot convert first argument to object'); + "use strict"; + if (target === undefined || target === null) throw new TypeError("Cannot convert first argument to object"); var to = Object(target); @@ -295,9 +288,8 @@ function endsWith(target, searchString, position) { } function toArray(items, columnNames) { - if (Array.isArray(items)) { - return items; - }var rows = []; + if (Array.isArray(items)) return items; + var rows = []; for (var key in items) { var item = {}; item[columnNames[0] || 'key'] = key; diff --git a/deps/npm/node_modules/columnify/node_modules/strip-ansi/cli.js b/deps/npm/node_modules/columnify/node_modules/strip-ansi/cli.js deleted file mode 100755 index b83f63b907e2..000000000000 --- a/deps/npm/node_modules/columnify/node_modules/strip-ansi/cli.js +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env node -'use strict'; -var fs = require('fs'); -var pkg = require('./package.json'); -var stripAnsi = require('./'); -var argv = process.argv.slice(2); -var input = argv[0]; - -function help() { - console.log([ - '', - ' ' + pkg.description, - '', - ' Usage', - ' strip-ansi > ', - ' cat | strip-ansi > ', - '', - ' Example', - ' strip-ansi unicorn.txt > unicorn-stripped.txt' - ].join('\n')); -} - -function init(data) { - process.stdout.write(stripAnsi(data)); -} - -if (argv.indexOf('--help') !== -1) { - help(); - return; -} - -if (argv.indexOf('--version') !== -1) { - console.log(pkg.version); - return; -} - -if (!input && process.stdin.isTTY) { - help(); - return; -} - -if (input) { - init(fs.readFileSync(input, 'utf8')); -} else { - process.stdin.setEncoding('utf8'); - process.stdin.on('data', init); -} diff --git a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/bluebird/LICENSE b/deps/npm/node_modules/columnify/node_modules/strip-ansi/license similarity index 86% rename from deps/npm/node_modules/request/node_modules/har-validator/node_modules/bluebird/LICENSE rename to deps/npm/node_modules/columnify/node_modules/strip-ansi/license index 8d4ca2802da2..654d0bfe9434 100644 --- a/deps/npm/node_modules/request/node_modules/har-validator/node_modules/bluebird/LICENSE +++ b/deps/npm/node_modules/columnify/node_modules/strip-ansi/license @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2014 Petka Antonov +Copyright (c) Sindre Sorhus (sindresorhus.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -14,7 +14,7 @@ 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 +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 diff --git a/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/index.js b/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/index.js index 2fcdd1e472f9..4906755bc935 100644 --- a/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/index.js +++ b/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/index.js @@ -1,4 +1,4 @@ 'use strict'; module.exports = function () { - return /(?:(?:\u001b\[)|\u009b)(?:(?:[0-9]{1,3})?(?:(?:;[0-9]{0,3})*)?[A-M|f-m])|\u001b[A-M]/g; + return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g; }; diff --git a/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/package.json b/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/package.json index da92c5d12e08..7fc07677a044 100644 --- a/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/package.json +++ b/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/package.json @@ -1,6 +1,6 @@ { "name": "ansi-regex", - "version": "1.1.1", + "version": "2.0.0", "description": "Regular expression for matching ANSI escape codes", "license": "MIT", "repository": { @@ -10,18 +10,16 @@ "author": { "name": "Sindre Sorhus", "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" + "url": "sindresorhus.com" }, "maintainers": [ { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" }, { - "name": "Joshua Appelman", - "email": "jappelman@xebia.com", - "url": "http://jbnicolai.com" + "name": "jbnicolai", + "email": "jappelman@xebia.com" } ], "engines": { @@ -64,14 +62,25 @@ "devDependencies": { "mocha": "*" }, - "readme": "# ansi-regex [![Build Status](https://travis-ci.org/sindresorhus/ansi-regex.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-regex)\n\n> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)\n\n\n## Install\n\n```sh\n$ npm install --save ansi-regex\n```\n\n\n## Usage\n\n```js\nvar ansiRegex = require('ansi-regex');\n\nansiRegex().test('\\u001b[4mcake\\u001b[0m');\n//=> true\n\nansiRegex().test('cake');\n//=> false\n\n'\\u001b[4mcake\\u001b[0m'.match(ansiRegex());\n//=> ['\\u001b[4m', '\\u001b[0m']\n```\n\n*It's a function so you can create multiple instances. Regexes with the global flag will have the `.lastIndex` property changed for each call to methods on the instance. Therefore reusing the instance with multiple calls will not work as expected for `.test()`.*\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", + "gitHead": "57c3f2941a73079fa8b081e02a522e3d29913e2f", "bugs": { "url": "https://github.com/sindresorhus/ansi-regex/issues" }, - "homepage": "https://github.com/sindresorhus/ansi-regex#readme", - "_id": "ansi-regex@1.1.1", - "_shasum": "41c847194646375e6a1a5d10c3ca054ef9fc980d", - "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz", - "_from": "ansi-regex@>=1.0.0 <2.0.0" + "homepage": "https://github.com/sindresorhus/ansi-regex", + "_id": "ansi-regex@2.0.0", + "_shasum": "c5061b6e0ef8a81775e50f5d66151bf6bf371107", + "_from": "ansi-regex@>=2.0.0 <3.0.0", + "_npmVersion": "2.11.2", + "_nodeVersion": "0.12.5", + "_npmUser": { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + "dist": { + "shasum": "c5061b6e0ef8a81775e50f5d66151bf6bf371107", + "tarball": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/readme.md b/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/readme.md index ae876e7292fe..1a4894ec1110 100644 --- a/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/readme.md +++ b/deps/npm/node_modules/columnify/node_modules/strip-ansi/node_modules/ansi-regex/readme.md @@ -5,7 +5,7 @@ ## Install -```sh +``` $ npm install --save ansi-regex ``` @@ -25,8 +25,6 @@ ansiRegex().test('cake'); //=> ['\u001b[4m', '\u001b[0m'] ``` -*It's a function so you can create multiple instances. Regexes with the global flag will have the `.lastIndex` property changed for each call to methods on the instance. Therefore reusing the instance with multiple calls will not work as expected for `.test()`.* - ## License diff --git a/deps/npm/node_modules/columnify/node_modules/strip-ansi/package.json b/deps/npm/node_modules/columnify/node_modules/strip-ansi/package.json index e43cfb5a5c4d..2871d037908d 100644 --- a/deps/npm/node_modules/columnify/node_modules/strip-ansi/package.json +++ b/deps/npm/node_modules/columnify/node_modules/strip-ansi/package.json @@ -1,6 +1,6 @@ { "name": "strip-ansi", - "version": "2.0.1", + "version": "3.0.0", "description": "Strip ANSI escape codes", "license": "MIT", "repository": { @@ -10,20 +10,26 @@ "author": { "name": "Sindre Sorhus", "email": "sindresorhus@gmail.com", - "url": "http://sindresorhus.com" - }, - "bin": { - "strip-ansi": "cli.js" + "url": "sindresorhus.com" }, + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + { + "name": "jbnicolai", + "email": "jappelman@xebia.com" + } + ], "engines": { "node": ">=0.10.0" }, "scripts": { - "test": "mocha" + "test": "node test.js" }, "files": [ - "index.js", - "cli.js" + "index.js" ], "keywords": [ "strip", @@ -36,7 +42,6 @@ "colors", "terminal", "console", - "cli", "string", "tty", "escape", @@ -51,19 +56,30 @@ "text" ], "dependencies": { - "ansi-regex": "^1.0.0" + "ansi-regex": "^2.0.0" }, "devDependencies": { - "mocha": "*" + "ava": "0.0.4" }, - "readme": "# strip-ansi [![Build Status](https://travis-ci.org/sindresorhus/strip-ansi.svg?branch=master)](https://travis-ci.org/sindresorhus/strip-ansi)\n\n> Strip [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)\n\n\n## Install\n\n```sh\n$ npm install --save strip-ansi\n```\n\n\n## Usage\n\n```js\nvar stripAnsi = require('strip-ansi');\n\nstripAnsi('\\u001b[4mcake\\u001b[0m');\n//=> 'cake'\n```\n\n\n## CLI\n\n```sh\n$ npm install --global strip-ansi\n```\n\n```sh\n$ strip-ansi --help\n\n Usage\n strip-ansi > \n cat | strip-ansi > \n\n Example\n strip-ansi unicorn.txt > unicorn-stripped.txt\n```\n\n\n## License\n\nMIT © [Sindre Sorhus](http://sindresorhus.com)\n", - "readmeFilename": "readme.md", + "gitHead": "3f05b9810e1438f946e2eb84ee854cc00b972e9e", "bugs": { "url": "https://github.com/sindresorhus/strip-ansi/issues" }, - "homepage": "https://github.com/sindresorhus/strip-ansi#readme", - "_id": "strip-ansi@2.0.1", - "_shasum": "df62c1aa94ed2f114e1d0f21fd1d50482b79a60e", - "_resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz", - "_from": "strip-ansi@>=2.0.1 <3.0.0" + "homepage": "https://github.com/sindresorhus/strip-ansi", + "_id": "strip-ansi@3.0.0", + "_shasum": "7510b665567ca914ccb5d7e072763ac968be3724", + "_from": "strip-ansi@>=3.0.0 <4.0.0", + "_npmVersion": "2.11.2", + "_nodeVersion": "0.12.5", + "_npmUser": { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + "dist": { + "shasum": "7510b665567ca914ccb5d7e072763ac968be3724", + "tarball": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/deps/npm/node_modules/columnify/node_modules/strip-ansi/readme.md b/deps/npm/node_modules/columnify/node_modules/strip-ansi/readme.md index 53ec26436ca5..76091512df5e 100644 --- a/deps/npm/node_modules/columnify/node_modules/strip-ansi/readme.md +++ b/deps/npm/node_modules/columnify/node_modules/strip-ansi/readme.md @@ -5,7 +5,7 @@ ## Install -```sh +``` $ npm install --save strip-ansi ``` @@ -20,22 +20,12 @@ stripAnsi('\u001b[4mcake\u001b[0m'); ``` -## CLI - -```sh -$ npm install --global strip-ansi -``` - -```sh -$ strip-ansi --help - - Usage - strip-ansi > - cat | strip-ansi > +## Related - Example - strip-ansi unicorn.txt > unicorn-stripped.txt -``` +- [strip-ansi-cli](https://github.com/sindresorhus/strip-ansi-cli) - CLI for this module +- [has-ansi](https://github.com/sindresorhus/has-ansi) - Check if a string has ANSI escape codes +- [ansi-regex](https://github.com/sindresorhus/ansi-regex) - Regular expression for matching ANSI escape codes +- [chalk](https://github.com/sindresorhus/chalk) - Terminal string styling done right ## License diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/package.json b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/package.json index dc56f3f191f7..bc8e878a54c3 100644 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/package.json +++ b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/node_modules/clone/package.json @@ -122,6 +122,5 @@ "tarball": "http://registry.npmjs.org/clone/-/clone-0.1.19.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/clone/-/clone-0.1.19.tgz", - "readme": "ERROR: No README data found!" + "_resolved": "https://registry.npmjs.org/clone/-/clone-0.1.19.tgz" } diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/package.json b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/package.json index eea2e9b0f60b..fdd074d0f4af 100644 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/package.json +++ b/deps/npm/node_modules/columnify/node_modules/wcwidth/node_modules/defaults/package.json @@ -49,6 +49,5 @@ "tarball": "http://registry.npmjs.org/defaults/-/defaults-1.0.2.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.2.tgz", - "readme": "ERROR: No README data found!" + "_resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.2.tgz" } diff --git a/deps/npm/node_modules/columnify/node_modules/wcwidth/package.json b/deps/npm/node_modules/columnify/node_modules/wcwidth/package.json index 49fc6f0408a7..4744d9dc3f7f 100644 --- a/deps/npm/node_modules/columnify/node_modules/wcwidth/package.json +++ b/deps/npm/node_modules/columnify/node_modules/wcwidth/package.json @@ -56,6 +56,5 @@ "shasum": "02d059ff7a8fc741e0f6b5da1e69b2b40daeca6f", "tarball": "http://registry.npmjs.org/wcwidth/-/wcwidth-1.0.0.tgz" }, - "_resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.0.tgz", - "readme": "ERROR: No README data found!" + "_resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.0.tgz" } diff --git a/deps/npm/node_modules/columnify/package.json b/deps/npm/node_modules/columnify/package.json index eaef8abcb89b..1dc803973c69 100644 --- a/deps/npm/node_modules/columnify/package.json +++ b/deps/npm/node_modules/columnify/package.json @@ -1,7 +1,7 @@ { "name": "columnify", - "version": "1.5.1", - "description": "Render data in text columns. supports in-column text-wrap.", + "version": "1.5.2", + "description": "Render data in text columns. Supports in-column text-wrap.", "main": "columnify.js", "scripts": { "pretest": "npm prune", @@ -14,10 +14,10 @@ }, "license": "MIT", "devDependencies": { - "babel": "^5.0.10", - "chalk": "^1.0.0", - "tap-spec": "^3.0.0", - "tape": "^4.0.0" + "babel": "^5.8.21", + "chalk": "^1.1.0", + "tap-spec": "^4.0.2", + "tape": "^4.0.3" }, "repository": { "type": "git", @@ -37,18 +37,18 @@ }, "homepage": "https://github.com/timoxley/columnify", "dependencies": { - "strip-ansi": "^2.0.1", + "strip-ansi": "^3.0.0", "wcwidth": "^1.0.0" }, "directories": { "test": "test" }, - "gitHead": "1e5f5ec9478d7dbd1e3d1d74343b552da7ae01ba", - "_id": "columnify@1.5.1", - "_shasum": "15fdda803a3875f87f9d302b3bc828932d664003", - "_from": "columnify@>=1.5.1 <1.6.0", - "_npmVersion": "2.7.6", - "_nodeVersion": "0.10.36", + "gitHead": "e7417b78091844ff2f3ba62551a4817c7ae217bd", + "_id": "columnify@1.5.2", + "_shasum": "6937930d47c22a9bfa20732a7fd619d47eaba65a", + "_from": "columnify@1.5.2", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", "_npmUser": { "name": "timoxley", "email": "secoif@gmail.com" @@ -60,9 +60,8 @@ } ], "dist": { - "shasum": "15fdda803a3875f87f9d302b3bc828932d664003", - "tarball": "http://registry.npmjs.org/columnify/-/columnify-1.5.1.tgz" + "shasum": "6937930d47c22a9bfa20732a7fd619d47eaba65a", + "tarball": "http://registry.npmjs.org/columnify/-/columnify-1.5.2.tgz" }, - "_resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.1.tgz", - "readme": "ERROR: No README data found!" + "_resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.2.tgz" } diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/.npmignore b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/.npmignore deleted file mode 100644 index c2658d7d1b31..000000000000 --- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/LICENSE b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/LICENSE deleted file mode 100644 index 19129e315fe5..000000000000 --- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -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/fs-vacuum/node_modules/graceful-fs/README.md b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/README.md deleted file mode 100644 index 13a2e86050a3..000000000000 --- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# graceful-fs - -graceful-fs functions as a drop-in replacement for the fs module, -making various improvements. - -The improvements are meant to normalize behavior across different -platforms and environments, and to make filesystem access more -resilient to errors. - -## Improvements over [fs module](http://api.nodejs.org/fs.html) - -graceful-fs: - -* Queues up `open` and `readdir` calls, and retries them once - something closes if there is an EMFILE error from too many file - descriptors. -* fixes `lchmod` for Node versions prior to 0.6.2. -* implements `fs.lutimes` if possible. Otherwise it becomes a noop. -* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or - `lchown` if the user isn't root. -* makes `lchmod` and `lchown` become noops, if not available. -* retries reading a file if `read` results in EAGAIN error. - -On Windows, it retries renaming a file for up to one second if `EACCESS` -or `EPERM` error occurs, likely because antivirus software has locked -the directory. - -## USAGE - -```javascript -// use just like fs -var fs = require('graceful-fs') - -// now go and do stuff with it... -fs.readFileSync('some-file-or-whatever') -``` diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/fs.js b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/fs.js deleted file mode 100644 index 64ad980232ec..000000000000 --- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/fs.js +++ /dev/null @@ -1,11 +0,0 @@ -// eeeeeevvvvviiiiiiillllll -// more evil than monkey-patching the native builtin? -// Not sure. - -var mod = require("module") -var pre = '(function (exports, require, module, __filename, __dirname) { ' -var post = '});' -var src = pre + process.binding('natives').fs + post -var vm = require('vm') -var fn = vm.runInThisContext(src) -fn(exports, require, module, __filename, __dirname) diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/graceful-fs.js b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/graceful-fs.js deleted file mode 100644 index fb206b83854a..000000000000 --- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/graceful-fs.js +++ /dev/null @@ -1,158 +0,0 @@ -// Monkey-patching the fs module. -// It's ugly, but there is simply no other way to do this. -var fs = module.exports = require('./fs.js') - -var assert = require('assert') - -// fix up some busted stuff, mostly on windows and old nodes -require('./polyfills.js') - -var util = require('util') - -function noop () {} - -var debug = noop -if (util.debuglog) - debug = util.debuglog('gfs') -else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) - debug = function() { - var m = util.format.apply(util, arguments) - m = 'GFS: ' + m.split(/\n/).join('\nGFS: ') - console.error(m) - } - -if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) { - process.on('exit', function() { - debug('fds', fds) - debug(queue) - assert.equal(queue.length, 0) - }) -} - - -var originalOpen = fs.open -fs.open = open - -function open(path, flags, mode, cb) { - if (typeof mode === "function") cb = mode, mode = null - if (typeof cb !== "function") cb = noop - new OpenReq(path, flags, mode, cb) -} - -function OpenReq(path, flags, mode, cb) { - this.path = path - this.flags = flags - this.mode = mode - this.cb = cb - Req.call(this) -} - -util.inherits(OpenReq, Req) - -OpenReq.prototype.process = function() { - originalOpen.call(fs, this.path, this.flags, this.mode, this.done) -} - -var fds = {} -OpenReq.prototype.done = function(er, fd) { - debug('open done', er, fd) - if (fd) - fds['fd' + fd] = this.path - Req.prototype.done.call(this, er, fd) -} - - -var originalReaddir = fs.readdir -fs.readdir = readdir - -function readdir(path, cb) { - if (typeof cb !== "function") cb = noop - new ReaddirReq(path, cb) -} - -function ReaddirReq(path, cb) { - this.path = path - this.cb = cb - Req.call(this) -} - -util.inherits(ReaddirReq, Req) - -ReaddirReq.prototype.process = function() { - originalReaddir.call(fs, this.path, this.done) -} - -ReaddirReq.prototype.done = function(er, files) { - if (files && files.sort) - files = files.sort() - Req.prototype.done.call(this, er, files) - onclose() -} - - -var originalClose = fs.close -fs.close = close - -function close (fd, cb) { - debug('close', fd) - if (typeof cb !== "function") cb = noop - delete fds['fd' + fd] - originalClose.call(fs, fd, function(er) { - onclose() - cb(er) - }) -} - - -var originalCloseSync = fs.closeSync -fs.closeSync = closeSync - -function closeSync (fd) { - try { - return originalCloseSync(fd) - } finally { - onclose() - } -} - - -// Req class -function Req () { - // start processing - this.done = this.done.bind(this) - this.failures = 0 - this.process() -} - -Req.prototype.done = function (er, result) { - var tryAgain = false - if (er) { - var code = er.code - var tryAgain = code === "EMFILE" || code === "ENFILE" - if (process.platform === "win32") - tryAgain = tryAgain || code === "OK" - } - - if (tryAgain) { - this.failures ++ - enqueue(this) - } else { - var cb = this.cb - cb(er, result) - } -} - -var queue = [] - -function enqueue(req) { - queue.push(req) - debug('enqueue %d %s', queue.length, req.constructor.name, req) -} - -function onclose() { - var req = queue.shift() - if (req) { - debug('process', req.constructor.name, req) - req.process() - } -} diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/package.json b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/package.json deleted file mode 100644 index 6aa482b61bbd..000000000000 --- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/package.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "_args": [ - [ - "graceful-fs@^3.0.2", - "/Users/isaacs/dev/npm/npm/node_modules/fs-vacuum" - ] - ], - "_from": "graceful-fs@>=3.0.2 <4.0.0", - "_id": "graceful-fs@3.0.8", - "_inCache": true, - "_location": "/fs-vacuum/graceful-fs", - "_nodeVersion": "2.0.1", - "_npmUser": { - "email": "isaacs@npmjs.com", - "name": "isaacs" - }, - "_npmVersion": "2.10.1", - "_phantomChildren": {}, - "_requested": { - "name": "graceful-fs", - "raw": "graceful-fs@^3.0.2", - "rawSpec": "^3.0.2", - "scope": null, - "spec": ">=3.0.2 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/fs-vacuum" - ], - "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", - "_shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22", - "_shrinkwrap": null, - "_spec": "graceful-fs@^3.0.2", - "_where": "/Users/isaacs/dev/npm/npm/node_modules/fs-vacuum", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me" - }, - "bugs": { - "url": "https://github.com/isaacs/node-graceful-fs/issues" - }, - "dependencies": {}, - "description": "A drop-in replacement for fs, making various improvements.", - "devDependencies": { - "mkdirp": "^0.5.0", - "rimraf": "^2.2.8", - "tap": "^1.2.0" - }, - "directories": { - "test": "test" - }, - "dist": { - "shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22", - "tarball": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" - }, - "engines": { - "node": ">=0.4.0" - }, - "gitHead": "45c57aa5e323c35a985a525de6f0c9a6ef59e1f8", - "homepage": "https://github.com/isaacs/node-graceful-fs#readme", - "keywords": [ - "EACCESS", - "EAGAIN", - "EINVAL", - "EMFILE", - "EPERM", - "error", - "errors", - "fs", - "handling", - "module", - "queue", - "reading", - "retries", - "retry" - ], - "license": "ISC", - "main": "graceful-fs.js", - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "name": "graceful-fs", - "optionalDependencies": {}, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-graceful-fs.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "version": "3.0.8" -} diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/polyfills.js b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/polyfills.js deleted file mode 100644 index 8ac5006e2da2..000000000000 --- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/polyfills.js +++ /dev/null @@ -1,254 +0,0 @@ -var fs = require('./fs.js') -var constants = require('constants') - -var origCwd = process.cwd -var cwd = null -process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process) - return cwd -} -var chdir = process.chdir -process.chdir = function(d) { - cwd = null - chdir.call(process, d) -} - -// (re-)implement some things that are known busted or missing. - -// lchmod, broken prior to 0.6.2 -// back-port the fix here. -if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - fs.lchmod = function (path, mode, callback) { - callback = callback || noop - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - callback(err || err2) - }) - }) - }) - } - - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var err, err2 - try { - var ret = fs.fchmodSync(fd, mode) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } -} - - -// lutimes implementation, or no-op -if (!fs.lutimes) { - if (constants.hasOwnProperty("O_SYMLINK")) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - cb = cb || noop - if (er) return cb(er) - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - return cb(er || er2) - }) - }) - }) - } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - , err - , err2 - , ret - - try { - var ret = fs.futimesSync(fd, at, mt) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } - - } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) { - // maybe utimensat will be bound soonish? - fs.lutimes = function (path, at, mt, cb) { - fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb) - } - - fs.lutimesSync = function (path, at, mt) { - return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW) - } - - } else { - fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) } - fs.lutimesSync = function () {} - } -} - - -// https://github.com/isaacs/node-graceful-fs/issues/4 -// Chown should not fail on einval or eperm if non-root. -// It should not fail on enosys ever, as this just indicates -// that a fs doesn't support the intended operation. - -fs.chown = chownFix(fs.chown) -fs.fchown = chownFix(fs.fchown) -fs.lchown = chownFix(fs.lchown) - -fs.chmod = chownFix(fs.chmod) -fs.fchmod = chownFix(fs.fchmod) -fs.lchmod = chownFix(fs.lchmod) - -fs.chownSync = chownFixSync(fs.chownSync) -fs.fchownSync = chownFixSync(fs.fchownSync) -fs.lchownSync = chownFixSync(fs.lchownSync) - -fs.chmodSync = chownFix(fs.chmodSync) -fs.fchmodSync = chownFix(fs.fchmodSync) -fs.lchmodSync = chownFix(fs.lchmodSync) - -function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er, res) { - if (chownErOk(er)) er = null - cb(er, res) - }) - } -} - -function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } -} - -// ENOSYS means that the fs doesn't support the op. Just ignore -// that, because it doesn't matter. -// -// if there's no getuid, or if getuid() is something other -// than 0, and the error is EINVAL or EPERM, then just ignore -// it. -// -// This specific case is a silent failure in cp, install, tar, -// and most other unix tools that manage permissions. -// -// When running as root, or if other types of errors are -// encountered, then it's strict. -function chownErOk (er) { - if (!er) - return true - - if (er.code === "ENOSYS") - return true - - var nonroot = !process.getuid || process.getuid() !== 0 - if (nonroot) { - if (er.code === "EINVAL" || er.code === "EPERM") - return true - } - - return false -} - - -// if lchmod/lchown do not exist, then make them no-ops -if (!fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - process.nextTick(cb) - } - fs.lchmodSync = function () {} -} -if (!fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - process.nextTick(cb) - } - fs.lchownSync = function () {} -} - - - -// on Windows, A/V software can lock the directory, causing this -// to fail with an EACCES or EPERM if the directory contains newly -// created files. Try again on failure, for up to 1 second. -if (process.platform === "win32") { - var rename_ = fs.rename - fs.rename = function rename (from, to, cb) { - var start = Date.now() - rename_(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM") - && Date.now() - start < 1000) { - return rename_(from, to, CB) - } - if(cb) cb(er) - }) - } -} - - -// if read() returns EAGAIN, then just try it again. -var read = fs.read -fs.read = function (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) - } - } - return read.call(fs, fd, buffer, offset, length, position, callback) -} - -var readSync = fs.readSync -fs.readSync = function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } -} diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/max-open.js b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/max-open.js deleted file mode 100644 index a6b9ba43d3a6..000000000000 --- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/max-open.js +++ /dev/null @@ -1,69 +0,0 @@ -var test = require('tap').test -var fs = require('../') - -test('open lots of stuff', function (t) { - // Get around EBADF from libuv by making sure that stderr is opened - // Otherwise Darwin will refuse to give us a FD for stderr! - process.stderr.write('') - - // How many parallel open()'s to do - var n = 1024 - var opens = 0 - var fds = [] - var going = true - var closing = false - var doneCalled = 0 - - for (var i = 0; i < n; i++) { - go() - } - - function go() { - opens++ - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fds.push(fd) - if (going) go() - }) - } - - // should hit ulimit pretty fast - setTimeout(function () { - going = false - t.equal(opens - fds.length, n) - done() - }, 100) - - - function done () { - if (closing) return - doneCalled++ - - if (fds.length === 0) { - console.error('done called %d times', doneCalled) - // First because of the timeout - // Then to close the fd's opened afterwards - // Then this time, to complete. - // Might take multiple passes, depending on CPU speed - // and ulimit, but at least 3 in every case. - t.ok(doneCalled >= 2) - return t.end() - } - - closing = true - setTimeout(function () { - // console.error('do closing again') - closing = false - done() - }, 100) - - // console.error('closing time') - var closes = fds.slice(0) - fds.length = 0 - closes.forEach(function (fd) { - fs.close(fd, function (er) { - if (er) throw er - }) - }) - } -}) diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/open.js b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/open.js deleted file mode 100644 index 85732f236b00..000000000000 --- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/open.js +++ /dev/null @@ -1,39 +0,0 @@ -var test = require('tap').test -var fs = require('../graceful-fs.js') - -test('graceful fs is monkeypatched fs', function (t) { - t.equal(fs, require('../fs.js')) - t.end() -}) - -test('open an existing file works', function (t) { - var fd = fs.openSync(__filename, 'r') - fs.closeSync(fd) - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fs.close(fd, function (er) { - if (er) throw er - t.pass('works') - t.end() - }) - }) -}) - -test('open a non-existing file throws', function (t) { - var er - try { - var fd = fs.openSync('this file does not exist', 'r') - } catch (x) { - er = x - } - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - - fs.open('neither does this file', 'r', function (er, fd) { - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - t.end() - }) -}) diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/readdir-sort.js b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/readdir-sort.js deleted file mode 100644 index cb63a6846ed7..000000000000 --- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/readdir-sort.js +++ /dev/null @@ -1,20 +0,0 @@ -var test = require("tap").test -var fs = require("../fs.js") - -var readdir = fs.readdir -fs.readdir = function(path, cb) { - process.nextTick(function() { - cb(null, ["b", "z", "a"]) - }) -} - -var g = require("../") - -test("readdir reorder", function (t) { - g.readdir("whatevers", function (er, files) { - if (er) - throw er - t.same(files, [ "a", "b", "z" ]) - t.end() - }) -}) diff --git a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/write-then-read.js b/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/write-then-read.js deleted file mode 100644 index 21e4c26bf6c9..000000000000 --- a/deps/npm/node_modules/fs-vacuum/node_modules/graceful-fs/test/write-then-read.js +++ /dev/null @@ -1,47 +0,0 @@ -var fs = require('../'); -var rimraf = require('rimraf'); -var mkdirp = require('mkdirp'); -var test = require('tap').test; -var p = require('path').resolve(__dirname, 'files'); - -process.chdir(__dirname) - -// Make sure to reserve the stderr fd -process.stderr.write(''); - -var num = 4097; -var paths = new Array(num); - -test('make files', function (t) { - rimraf.sync(p); - mkdirp.sync(p); - - for (var i = 0; i < num; ++i) { - paths[i] = 'files/file-' + i; - fs.writeFileSync(paths[i], 'content'); - } - - t.end(); -}) - -test('read files', function (t) { - // now read them - var done = 0; - for (var i = 0; i < num; ++i) { - fs.readFile(paths[i], function(err, data) { - if (err) - throw err; - - ++done; - if (done === num) { - t.pass('success'); - t.end() - } - }); - } -}); - -test('cleanup', function (t) { - rimraf.sync(p); - t.end(); -}); diff --git a/deps/npm/node_modules/fs-vacuum/package.json b/deps/npm/node_modules/fs-vacuum/package.json index 3b4935451812..c7d9895a924d 100644 --- a/deps/npm/node_modules/fs-vacuum/package.json +++ b/deps/npm/node_modules/fs-vacuum/package.json @@ -1,6 +1,6 @@ { "name": "fs-vacuum", - "version": "1.2.6", + "version": "1.2.7", "description": "recursively remove empty directories -- to a point", "main": "vacuum.js", "scripts": { @@ -30,30 +30,14 @@ "tmp": "0.0.24" }, "dependencies": { - "graceful-fs": "^3.0.2", + "graceful-fs": "^4.1.2", "path-is-inside": "^1.0.1", "rimraf": "^2.2.8" }, - "gitHead": "04b5093ac6fbcc4135835fb1c4ed990dfed5a04c", - "_id": "fs-vacuum@1.2.6", - "_shasum": "860c5e4b3e3aa2a6a3cbb327c57534f3a3bff642", - "_from": "fs-vacuum@>=1.2.5 <1.3.0", - "_npmVersion": "2.10.1", - "_nodeVersion": "2.0.2", - "_npmUser": { - "name": "othiym23", - "email": "ogd@aoaioxxysz.net" - }, - "dist": { - "shasum": "860c5e4b3e3aa2a6a3cbb327c57534f3a3bff642", - "tarball": "http://registry.npmjs.org/fs-vacuum/-/fs-vacuum-1.2.6.tgz" - }, - "maintainers": [ - { - "name": "othiym23", - "email": "ogd@aoaioxxysz.net" - } - ], - "directories": {}, - "_resolved": "https://registry.npmjs.org/fs-vacuum/-/fs-vacuum-1.2.6.tgz" + "readme": "# fs-vacuum\n\nRemove the empty branches of a directory tree, optionally up to (but not\nincluding) a specified base directory. Optionally nukes the leaf directory.\n\n## Usage\n\n```javascript\nvar logger = require(\"npmlog\");\nvar vacuum = require(\"fs-vacuum\");\n\nvar options = {\n base : \"/path/to/my/tree/root\",\n purge : true,\n log : logger.silly.bind(logger, \"myCleanup\")\n};\n\n/* Assuming there are no other files or directories in \"out\", \"to\", or \"my\",\n * the final path will just be \"/path/to/my/tree/root\".\n */\nvacuum(\"/path/to/my/tree/root/out/to/my/files\", function (error) {\n if (error) console.error(\"Unable to cleanly vacuum:\", error.message);\n});\n```\n# vacuum(directory, options, callback)\n\n* `directory` {String} Leaf node to remove. **Must be a directory, symlink, or file.**\n* `options` {Object}\n * `base` {String} No directories at or above this level of the filesystem will be removed.\n * `purge` {Boolean} If set, nuke the whole leaf directory, including its contents.\n * `log` {Function} A logging function that takes `npmlog`-compatible argument lists.\n* `callback` {Function} Function to call once vacuuming is complete.\n * `error` {Error} What went wrong along the way, if anything.\n", + "readmeFilename": "README.md", + "gitHead": "498a44d987ee11bc355fe1ec479d55a689fc37ef", + "_id": "fs-vacuum@1.2.7", + "_shasum": "75e501f9d2889ba2fe9fe12f936ba5dad50ca35a", + "_from": "fs-vacuum@1.2.7" } diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/.npmignore b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/.npmignore deleted file mode 100644 index c2658d7d1b31..000000000000 --- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/LICENSE b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/LICENSE deleted file mode 100644 index 19129e315fe5..000000000000 --- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -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/fs-write-stream-atomic/node_modules/graceful-fs/README.md b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/README.md deleted file mode 100644 index 13a2e86050a3..000000000000 --- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# graceful-fs - -graceful-fs functions as a drop-in replacement for the fs module, -making various improvements. - -The improvements are meant to normalize behavior across different -platforms and environments, and to make filesystem access more -resilient to errors. - -## Improvements over [fs module](http://api.nodejs.org/fs.html) - -graceful-fs: - -* Queues up `open` and `readdir` calls, and retries them once - something closes if there is an EMFILE error from too many file - descriptors. -* fixes `lchmod` for Node versions prior to 0.6.2. -* implements `fs.lutimes` if possible. Otherwise it becomes a noop. -* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or - `lchown` if the user isn't root. -* makes `lchmod` and `lchown` become noops, if not available. -* retries reading a file if `read` results in EAGAIN error. - -On Windows, it retries renaming a file for up to one second if `EACCESS` -or `EPERM` error occurs, likely because antivirus software has locked -the directory. - -## USAGE - -```javascript -// use just like fs -var fs = require('graceful-fs') - -// now go and do stuff with it... -fs.readFileSync('some-file-or-whatever') -``` diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/fs.js b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/fs.js deleted file mode 100644 index 64ad980232ec..000000000000 --- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/fs.js +++ /dev/null @@ -1,11 +0,0 @@ -// eeeeeevvvvviiiiiiillllll -// more evil than monkey-patching the native builtin? -// Not sure. - -var mod = require("module") -var pre = '(function (exports, require, module, __filename, __dirname) { ' -var post = '});' -var src = pre + process.binding('natives').fs + post -var vm = require('vm') -var fn = vm.runInThisContext(src) -fn(exports, require, module, __filename, __dirname) diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/graceful-fs.js b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/graceful-fs.js deleted file mode 100644 index fb206b83854a..000000000000 --- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/graceful-fs.js +++ /dev/null @@ -1,158 +0,0 @@ -// Monkey-patching the fs module. -// It's ugly, but there is simply no other way to do this. -var fs = module.exports = require('./fs.js') - -var assert = require('assert') - -// fix up some busted stuff, mostly on windows and old nodes -require('./polyfills.js') - -var util = require('util') - -function noop () {} - -var debug = noop -if (util.debuglog) - debug = util.debuglog('gfs') -else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) - debug = function() { - var m = util.format.apply(util, arguments) - m = 'GFS: ' + m.split(/\n/).join('\nGFS: ') - console.error(m) - } - -if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) { - process.on('exit', function() { - debug('fds', fds) - debug(queue) - assert.equal(queue.length, 0) - }) -} - - -var originalOpen = fs.open -fs.open = open - -function open(path, flags, mode, cb) { - if (typeof mode === "function") cb = mode, mode = null - if (typeof cb !== "function") cb = noop - new OpenReq(path, flags, mode, cb) -} - -function OpenReq(path, flags, mode, cb) { - this.path = path - this.flags = flags - this.mode = mode - this.cb = cb - Req.call(this) -} - -util.inherits(OpenReq, Req) - -OpenReq.prototype.process = function() { - originalOpen.call(fs, this.path, this.flags, this.mode, this.done) -} - -var fds = {} -OpenReq.prototype.done = function(er, fd) { - debug('open done', er, fd) - if (fd) - fds['fd' + fd] = this.path - Req.prototype.done.call(this, er, fd) -} - - -var originalReaddir = fs.readdir -fs.readdir = readdir - -function readdir(path, cb) { - if (typeof cb !== "function") cb = noop - new ReaddirReq(path, cb) -} - -function ReaddirReq(path, cb) { - this.path = path - this.cb = cb - Req.call(this) -} - -util.inherits(ReaddirReq, Req) - -ReaddirReq.prototype.process = function() { - originalReaddir.call(fs, this.path, this.done) -} - -ReaddirReq.prototype.done = function(er, files) { - if (files && files.sort) - files = files.sort() - Req.prototype.done.call(this, er, files) - onclose() -} - - -var originalClose = fs.close -fs.close = close - -function close (fd, cb) { - debug('close', fd) - if (typeof cb !== "function") cb = noop - delete fds['fd' + fd] - originalClose.call(fs, fd, function(er) { - onclose() - cb(er) - }) -} - - -var originalCloseSync = fs.closeSync -fs.closeSync = closeSync - -function closeSync (fd) { - try { - return originalCloseSync(fd) - } finally { - onclose() - } -} - - -// Req class -function Req () { - // start processing - this.done = this.done.bind(this) - this.failures = 0 - this.process() -} - -Req.prototype.done = function (er, result) { - var tryAgain = false - if (er) { - var code = er.code - var tryAgain = code === "EMFILE" || code === "ENFILE" - if (process.platform === "win32") - tryAgain = tryAgain || code === "OK" - } - - if (tryAgain) { - this.failures ++ - enqueue(this) - } else { - var cb = this.cb - cb(er, result) - } -} - -var queue = [] - -function enqueue(req) { - queue.push(req) - debug('enqueue %d %s', queue.length, req.constructor.name, req) -} - -function onclose() { - var req = queue.shift() - if (req) { - debug('process', req.constructor.name, req) - req.process() - } -} diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/package.json b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/package.json deleted file mode 100644 index 221f8b781db7..000000000000 --- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/package.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "_args": [ - [ - "graceful-fs@^3.0.2", - "/Users/isaacs/dev/npm/npm/node_modules/fs-write-stream-atomic" - ] - ], - "_from": "graceful-fs@>=3.0.2 <4.0.0", - "_id": "graceful-fs@3.0.8", - "_inCache": true, - "_location": "/fs-write-stream-atomic/graceful-fs", - "_nodeVersion": "2.0.1", - "_npmUser": { - "email": "isaacs@npmjs.com", - "name": "isaacs" - }, - "_npmVersion": "2.10.1", - "_phantomChildren": {}, - "_requested": { - "name": "graceful-fs", - "raw": "graceful-fs@^3.0.2", - "rawSpec": "^3.0.2", - "scope": null, - "spec": ">=3.0.2 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/fs-write-stream-atomic" - ], - "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", - "_shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22", - "_shrinkwrap": null, - "_spec": "graceful-fs@^3.0.2", - "_where": "/Users/isaacs/dev/npm/npm/node_modules/fs-write-stream-atomic", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me" - }, - "bugs": { - "url": "https://github.com/isaacs/node-graceful-fs/issues" - }, - "dependencies": {}, - "description": "A drop-in replacement for fs, making various improvements.", - "devDependencies": { - "mkdirp": "^0.5.0", - "rimraf": "^2.2.8", - "tap": "^1.2.0" - }, - "directories": { - "test": "test" - }, - "dist": { - "shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22", - "tarball": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" - }, - "engines": { - "node": ">=0.4.0" - }, - "gitHead": "45c57aa5e323c35a985a525de6f0c9a6ef59e1f8", - "homepage": "https://github.com/isaacs/node-graceful-fs#readme", - "keywords": [ - "EACCESS", - "EAGAIN", - "EINVAL", - "EMFILE", - "EPERM", - "error", - "errors", - "fs", - "handling", - "module", - "queue", - "reading", - "retries", - "retry" - ], - "license": "ISC", - "main": "graceful-fs.js", - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "name": "graceful-fs", - "optionalDependencies": {}, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-graceful-fs.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "version": "3.0.8" -} diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/polyfills.js b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/polyfills.js deleted file mode 100644 index 8ac5006e2da2..000000000000 --- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/polyfills.js +++ /dev/null @@ -1,254 +0,0 @@ -var fs = require('./fs.js') -var constants = require('constants') - -var origCwd = process.cwd -var cwd = null -process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process) - return cwd -} -var chdir = process.chdir -process.chdir = function(d) { - cwd = null - chdir.call(process, d) -} - -// (re-)implement some things that are known busted or missing. - -// lchmod, broken prior to 0.6.2 -// back-port the fix here. -if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - fs.lchmod = function (path, mode, callback) { - callback = callback || noop - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - callback(err || err2) - }) - }) - }) - } - - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var err, err2 - try { - var ret = fs.fchmodSync(fd, mode) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } -} - - -// lutimes implementation, or no-op -if (!fs.lutimes) { - if (constants.hasOwnProperty("O_SYMLINK")) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - cb = cb || noop - if (er) return cb(er) - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - return cb(er || er2) - }) - }) - }) - } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - , err - , err2 - , ret - - try { - var ret = fs.futimesSync(fd, at, mt) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } - - } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) { - // maybe utimensat will be bound soonish? - fs.lutimes = function (path, at, mt, cb) { - fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb) - } - - fs.lutimesSync = function (path, at, mt) { - return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW) - } - - } else { - fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) } - fs.lutimesSync = function () {} - } -} - - -// https://github.com/isaacs/node-graceful-fs/issues/4 -// Chown should not fail on einval or eperm if non-root. -// It should not fail on enosys ever, as this just indicates -// that a fs doesn't support the intended operation. - -fs.chown = chownFix(fs.chown) -fs.fchown = chownFix(fs.fchown) -fs.lchown = chownFix(fs.lchown) - -fs.chmod = chownFix(fs.chmod) -fs.fchmod = chownFix(fs.fchmod) -fs.lchmod = chownFix(fs.lchmod) - -fs.chownSync = chownFixSync(fs.chownSync) -fs.fchownSync = chownFixSync(fs.fchownSync) -fs.lchownSync = chownFixSync(fs.lchownSync) - -fs.chmodSync = chownFix(fs.chmodSync) -fs.fchmodSync = chownFix(fs.fchmodSync) -fs.lchmodSync = chownFix(fs.lchmodSync) - -function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er, res) { - if (chownErOk(er)) er = null - cb(er, res) - }) - } -} - -function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } -} - -// ENOSYS means that the fs doesn't support the op. Just ignore -// that, because it doesn't matter. -// -// if there's no getuid, or if getuid() is something other -// than 0, and the error is EINVAL or EPERM, then just ignore -// it. -// -// This specific case is a silent failure in cp, install, tar, -// and most other unix tools that manage permissions. -// -// When running as root, or if other types of errors are -// encountered, then it's strict. -function chownErOk (er) { - if (!er) - return true - - if (er.code === "ENOSYS") - return true - - var nonroot = !process.getuid || process.getuid() !== 0 - if (nonroot) { - if (er.code === "EINVAL" || er.code === "EPERM") - return true - } - - return false -} - - -// if lchmod/lchown do not exist, then make them no-ops -if (!fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - process.nextTick(cb) - } - fs.lchmodSync = function () {} -} -if (!fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - process.nextTick(cb) - } - fs.lchownSync = function () {} -} - - - -// on Windows, A/V software can lock the directory, causing this -// to fail with an EACCES or EPERM if the directory contains newly -// created files. Try again on failure, for up to 1 second. -if (process.platform === "win32") { - var rename_ = fs.rename - fs.rename = function rename (from, to, cb) { - var start = Date.now() - rename_(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM") - && Date.now() - start < 1000) { - return rename_(from, to, CB) - } - if(cb) cb(er) - }) - } -} - - -// if read() returns EAGAIN, then just try it again. -var read = fs.read -fs.read = function (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) - } - } - return read.call(fs, fd, buffer, offset, length, position, callback) -} - -var readSync = fs.readSync -fs.readSync = function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } -} diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/max-open.js b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/max-open.js deleted file mode 100644 index a6b9ba43d3a6..000000000000 --- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/max-open.js +++ /dev/null @@ -1,69 +0,0 @@ -var test = require('tap').test -var fs = require('../') - -test('open lots of stuff', function (t) { - // Get around EBADF from libuv by making sure that stderr is opened - // Otherwise Darwin will refuse to give us a FD for stderr! - process.stderr.write('') - - // How many parallel open()'s to do - var n = 1024 - var opens = 0 - var fds = [] - var going = true - var closing = false - var doneCalled = 0 - - for (var i = 0; i < n; i++) { - go() - } - - function go() { - opens++ - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fds.push(fd) - if (going) go() - }) - } - - // should hit ulimit pretty fast - setTimeout(function () { - going = false - t.equal(opens - fds.length, n) - done() - }, 100) - - - function done () { - if (closing) return - doneCalled++ - - if (fds.length === 0) { - console.error('done called %d times', doneCalled) - // First because of the timeout - // Then to close the fd's opened afterwards - // Then this time, to complete. - // Might take multiple passes, depending on CPU speed - // and ulimit, but at least 3 in every case. - t.ok(doneCalled >= 2) - return t.end() - } - - closing = true - setTimeout(function () { - // console.error('do closing again') - closing = false - done() - }, 100) - - // console.error('closing time') - var closes = fds.slice(0) - fds.length = 0 - closes.forEach(function (fd) { - fs.close(fd, function (er) { - if (er) throw er - }) - }) - } -}) diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/open.js b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/open.js deleted file mode 100644 index 85732f236b00..000000000000 --- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/open.js +++ /dev/null @@ -1,39 +0,0 @@ -var test = require('tap').test -var fs = require('../graceful-fs.js') - -test('graceful fs is monkeypatched fs', function (t) { - t.equal(fs, require('../fs.js')) - t.end() -}) - -test('open an existing file works', function (t) { - var fd = fs.openSync(__filename, 'r') - fs.closeSync(fd) - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fs.close(fd, function (er) { - if (er) throw er - t.pass('works') - t.end() - }) - }) -}) - -test('open a non-existing file throws', function (t) { - var er - try { - var fd = fs.openSync('this file does not exist', 'r') - } catch (x) { - er = x - } - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - - fs.open('neither does this file', 'r', function (er, fd) { - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - t.end() - }) -}) diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/readdir-sort.js b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/readdir-sort.js deleted file mode 100644 index cb63a6846ed7..000000000000 --- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/readdir-sort.js +++ /dev/null @@ -1,20 +0,0 @@ -var test = require("tap").test -var fs = require("../fs.js") - -var readdir = fs.readdir -fs.readdir = function(path, cb) { - process.nextTick(function() { - cb(null, ["b", "z", "a"]) - }) -} - -var g = require("../") - -test("readdir reorder", function (t) { - g.readdir("whatevers", function (er, files) { - if (er) - throw er - t.same(files, [ "a", "b", "z" ]) - t.end() - }) -}) diff --git a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/write-then-read.js b/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/write-then-read.js deleted file mode 100644 index 21e4c26bf6c9..000000000000 --- a/deps/npm/node_modules/fs-write-stream-atomic/node_modules/graceful-fs/test/write-then-read.js +++ /dev/null @@ -1,47 +0,0 @@ -var fs = require('../'); -var rimraf = require('rimraf'); -var mkdirp = require('mkdirp'); -var test = require('tap').test; -var p = require('path').resolve(__dirname, 'files'); - -process.chdir(__dirname) - -// Make sure to reserve the stderr fd -process.stderr.write(''); - -var num = 4097; -var paths = new Array(num); - -test('make files', function (t) { - rimraf.sync(p); - mkdirp.sync(p); - - for (var i = 0; i < num; ++i) { - paths[i] = 'files/file-' + i; - fs.writeFileSync(paths[i], 'content'); - } - - t.end(); -}) - -test('read files', function (t) { - // now read them - var done = 0; - for (var i = 0; i < num; ++i) { - fs.readFile(paths[i], function(err, data) { - if (err) - throw err; - - ++done; - if (done === num) { - t.pass('success'); - t.end() - } - }); - } -}); - -test('cleanup', function (t) { - rimraf.sync(p); - t.end(); -}); diff --git a/deps/npm/node_modules/fs-write-stream-atomic/package.json b/deps/npm/node_modules/fs-write-stream-atomic/package.json index c300228a5d33..a94785682a9f 100644 --- a/deps/npm/node_modules/fs-write-stream-atomic/package.json +++ b/deps/npm/node_modules/fs-write-stream-atomic/package.json @@ -1,23 +1,23 @@ { "name": "fs-write-stream-atomic", - "version": "1.0.3", + "version": "1.0.4", "description": "Like `fs.createWriteStream(...)`, but atomic.", "main": "index.js", "directories": { "test": "test" }, "dependencies": { - "graceful-fs": "^3.0.2" + "graceful-fs": "^4.1.2" }, "devDependencies": { - "tap": "^0.4.12" + "tap": "^1.2.0" }, "scripts": { "test": "tap test/*.js" }, "repository": { "type": "git", - "url": "https://github.com/npm/fs-write-stream-atomic" + "url": "git+https://github.com/npm/fs-write-stream-atomic.git" }, "author": { "name": "Isaac Z. Schlueter", @@ -29,29 +29,10 @@ "url": "https://github.com/npm/fs-write-stream-atomic/issues" }, "homepage": "https://github.com/npm/fs-write-stream-atomic", - "gitHead": "78573c09271f3ec672740862dad80be3d75e1963", - "_id": "fs-write-stream-atomic@1.0.3", - "_shasum": "c8fe17f66d7d3f50e9aee59195c358e7710372cc", - "_from": "fs-write-stream-atomic@1.0.3", - "_npmVersion": "2.7.6", - "_nodeVersion": "1.6.2", - "_npmUser": { - "name": "iarna", - "email": "me@re-becca.org" - }, - "dist": { - "shasum": "c8fe17f66d7d3f50e9aee59195c358e7710372cc", - "tarball": "http://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.3.tgz" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - }, - { - "name": "iarna", - "email": "me@re-becca.org" - } - ], - "_resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.3.tgz" + "readme": "# fs-write-stream-atomic\n\nLike `fs.createWriteStream(...)`, but atomic.\n\nWrites to a tmp file and does an atomic `fs.rename` to move it into\nplace when it's done.\n\nFirst rule of debugging: **It's always a race condition.**\n\n## USAGE\n\n```javascript\nvar fsWriteStreamAtomic = require('fs-write-stream-atomic')\n// options are optional.\nvar write = fsWriteStreamAtomic('output.txt', options)\nvar read = fs.createReadStream('input.txt')\nread.pipe(write)\n\n// When the write stream emits a 'finish' or 'close' event,\n// you can be sure that it is moved into place, and contains\n// all the bytes that were written to it, even if something else\n// was writing to `output.txt` at the same time.\n```\n\n### `fsWriteStreamAtomic(filename, [options])`\n\n* `filename` {String} The file we want to write to\n* `options` {Object}\n * `chown` {Object} User and group to set ownership after write\n * `uid` {Number}\n * `gid` {Number}\n * `encoding` {String} default = 'utf8'\n * `mode` {Number} default = `0666`\n * `flags` {String} default = `'w'`\n\n", + "readmeFilename": "README.md", + "gitHead": "6ca2651b913149543c5390c6c4f7d370bdca42b5", + "_id": "fs-write-stream-atomic@1.0.4", + "_shasum": "c1ea55889f036ceebdead7d1055edbad998fe5e9", + "_from": "fs-write-stream-atomic@1.0.4" } diff --git a/deps/npm/node_modules/fs-write-stream-atomic/test/toolong.js b/deps/npm/node_modules/fs-write-stream-atomic/test/toolong.js index e5b2b05b8c3a..a1e5b714a697 100644 --- a/deps/npm/node_modules/fs-write-stream-atomic/test/toolong.js +++ b/deps/npm/node_modules/fs-write-stream-atomic/test/toolong.js @@ -14,11 +14,15 @@ var target = path.resolve(__dirname, repeat(1000,'test')) test('name too long', function (t) { var stream = writeStream(target) + var hadError = false stream.on('error', function (er) { - t.is(er.code, 'ENAMETOOLONG', target.length + " character name results in ENAMETOOLONG") + if (!hadError) { + t.is(er.code, 'ENAMETOOLONG', target.length + " character name results in ENAMETOOLONG") + hadError = true + } }) stream.on('close', function () { t.end() }) stream.end() -}) \ No newline at end of file +}) diff --git a/deps/npm/node_modules/fstream-npm/.travis.yml b/deps/npm/node_modules/fstream-npm/.travis.yml new file mode 100644 index 000000000000..c225dd42746c --- /dev/null +++ b/deps/npm/node_modules/fstream-npm/.travis.yml @@ -0,0 +1,13 @@ +language: node_js +sudo: false +node_js: + - iojs + - "0.12" + - "0.10" + - "0.8" +before_install: + - "npm config set spin false" + - "npm install -g npm/npm#2.x" +script: "npm test" +notifications: + slack: npm-inc:kRqQjto7YbINqHPb1X6nS3g8 diff --git a/deps/npm/node_modules/fstream-npm/fstream-npm.js b/deps/npm/node_modules/fstream-npm/fstream-npm.js index ab528952c104..5541c3197191 100644 --- a/deps/npm/node_modules/fstream-npm/fstream-npm.js +++ b/deps/npm/node_modules/fstream-npm/fstream-npm.js @@ -109,16 +109,19 @@ Packer.prototype.applyIgnores = function (entry, partial, entryObj) { if (mainFile && path.resolve(this.path, entry) === path.resolve(this.path, mainFile)) return true // some files are *never* allowed under any circumstances + // (VCS folders, native build cruft, npm cruft, regular cruft) if (entry === '.git' || - entry === '.lock-wscript' || - entry.match(/^\.wafpickle-[0-9]+$/) || entry === 'CVS' || entry === '.svn' || entry === '.hg' || + entry === '.lock-wscript' || + entry.match(/^\.wafpickle-[0-9]+$/) || + entry === 'config.gypi' || + entry === 'npm-debug.log' || + entry === '.npmrc' || entry.match(/^\..*\.swp$/) || entry === '.DS_Store' || - entry.match(/^\._/) || - entry === 'npm-debug.log' + entry.match(/^\._/) ) { return false } 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 1a505bd4a2af..fd97e9002ba8 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": "1.0.2", + "version": "1.0.3", "repository": { "type": "git", "url": "git://github.com/isaacs/fstream-ignore.git" @@ -18,39 +18,22 @@ "dependencies": { "fstream": "^1.0.0", "inherits": "2", - "minimatch": "^2.0.1" + "minimatch": "^3.0.0" }, "devDependencies": { - "tap": "", + "mkdirp": "", "rimraf": "", - "mkdirp": "" + "tap": "^2.2.0" }, "license": "ISC", - "gitHead": "20363d39660671c0de746bd07a0d07de7090d085", + "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": "86c835eef61049496003f6b90c1e6c1236c92d6a", "bugs": { "url": "https://github.com/isaacs/fstream-ignore/issues" }, - "homepage": "https://github.com/isaacs/fstream-ignore", - "_id": "fstream-ignore@1.0.2", - "_shasum": "18c891db01b782a74a7bff936a0f24997741c7ab", - "_from": "fstream-ignore@>=1.0.0 <2.0.0", - "_npmVersion": "2.1.11", - "_nodeVersion": "0.10.16", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "dist": { - "shasum": "18c891db01b782a74a7bff936a0f24997741c7ab", - "tarball": "http://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.2.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.2.tgz", - "readme": "ERROR: No README data found!" + "homepage": "https://github.com/isaacs/fstream-ignore#readme", + "_id": "fstream-ignore@1.0.3", + "_shasum": "4c74d91fa88b22b42f4f86a18a2820dd79d8fcdd", + "_from": "fstream-ignore@>=1.0.0 <2.0.0" } diff --git a/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/test/common.js b/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/test/common.js index 0e6cd989c978..79470eba6173 100644 --- a/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/test/common.js +++ b/deps/npm/node_modules/fstream-npm/node_modules/fstream-ignore/test/common.js @@ -1,5 +1,5 @@ if (require.main === module) { - console.log("0..1") + console.log("1..1") console.log("ok 1 trivial pass") return } diff --git a/deps/npm/node_modules/fstream-npm/package.json b/deps/npm/node_modules/fstream-npm/package.json index e44a6dd92ba2..f3ab7b8faf1a 100644 --- a/deps/npm/node_modules/fstream-npm/package.json +++ b/deps/npm/node_modules/fstream-npm/package.json @@ -6,13 +6,13 @@ }, "name": "fstream-npm", "description": "fstream class for creating npm packages", - "version": "1.0.4", + "version": "1.0.5", "repository": { "type": "git", "url": "git://github.com/isaacs/fstream-npm.git" }, "scripts": { - "test": "standard" + "test": "standard && tap test/*.js" }, "main": "./fstream-npm.js", "dependencies": { @@ -20,17 +20,21 @@ "inherits": "2" }, "devDependencies": { - "standard": "^4.3.1" + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.1", + "rimraf": "^2.4.2", + "standard": "^4.3.1", + "tap": "^1.3.2" }, "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": "d4bec1d24e777b8cef64857d26af828cff1bba68", + "gitHead": "f6ec06b9c45d7330213a5b446fff424b5a74e197", "bugs": { "url": "https://github.com/isaacs/fstream-npm/issues" }, "homepage": "https://github.com/isaacs/fstream-npm#readme", - "_id": "fstream-npm@1.0.4", - "_shasum": "22196318b8fc2ab5ce15fd330fff931165e0305a", - "_from": "fstream-npm@>=1.0.3 <1.1.0" + "_id": "fstream-npm@1.0.5", + "_shasum": "4c1d1cbc6da95c745f8d2c52077a1d2e7b337206", + "_from": "fstream-npm@>=1.0.5 <1.1.0" } diff --git a/deps/npm/node_modules/fstream-npm/test/ignores.js b/deps/npm/node_modules/fstream-npm/test/ignores.js new file mode 100644 index 000000000000..fef5dcc222bc --- /dev/null +++ b/deps/npm/node_modules/fstream-npm/test/ignores.js @@ -0,0 +1,95 @@ +var fs = require('graceful-fs') +var join = require('path').join + +var mkdirp = require('mkdirp') +var rimraf = require('rimraf') +var test = require('tap').test + +var Packer = require('..') + +var pkg = join(__dirname, 'test-package') + +var gitDir = join(pkg, '.git') + +var elfJS = function () {/* +module.exports = function () { + console.log("i'm a elf") +} +*/}.toString().split('\n').slice(1, -1).join() + +var json = { + 'name': 'test-package', + 'version': '3.1.4', + 'main': 'elf.js' +} + +test('setup', function (t) { + setup() + t.end() +}) + +var included = [ + 'package.json', + 'elf.js' +] + +test('follows npm package ignoring rules', function (t) { + var subject = new Packer({ path: pkg, type: 'Directory', isDirectory: true }) + subject.on('entry', function (entry) { + t.equal(entry.type, 'File', 'only files in this package') + var filename = entry.basename + t.ok( + included.indexOf(filename) > -1, + filename + ' is included' + ) + }) + // need to do this so fstream doesn't explode when files are removed from + // under it + subject.on('end', function () { t.end() }) +}) + +test('cleanup', function (t) { + cleanup() + t.end() +}) + +function setup () { + cleanup() + mkdirp.sync(pkg) + fs.writeFileSync( + join(pkg, 'package.json'), + JSON.stringify(json, null, 2) + ) + + fs.writeFileSync( + join(pkg, 'elf.js'), + elfJS + ) + + fs.writeFileSync( + join(pkg, '.npmrc'), + 'packaged=false' + ) + + var build = join(pkg, 'build') + mkdirp.sync(build) + fs.writeFileSync( + join(build, 'config.gypi'), + "i_wont_be_included_by_fstream='with any luck'" + ) + + fs.writeFileSync( + join(build, 'npm-debug.log'), + '0 lol\n' + ) + + mkdirp.sync(gitDir) + fs.writeFileSync( + join(gitDir, 'gitstub'), + "won't fool git, also won't be included by fstream" + ) +} + +function cleanup () { + rimraf.sync(pkg) +} diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/.npmignore b/deps/npm/node_modules/fstream/node_modules/graceful-fs/.npmignore deleted file mode 100644 index c2658d7d1b31..000000000000 --- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/LICENSE b/deps/npm/node_modules/fstream/node_modules/graceful-fs/LICENSE deleted file mode 100644 index 19129e315fe5..000000000000 --- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -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/node_modules/graceful-fs/README.md b/deps/npm/node_modules/fstream/node_modules/graceful-fs/README.md deleted file mode 100644 index 13a2e86050a3..000000000000 --- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# graceful-fs - -graceful-fs functions as a drop-in replacement for the fs module, -making various improvements. - -The improvements are meant to normalize behavior across different -platforms and environments, and to make filesystem access more -resilient to errors. - -## Improvements over [fs module](http://api.nodejs.org/fs.html) - -graceful-fs: - -* Queues up `open` and `readdir` calls, and retries them once - something closes if there is an EMFILE error from too many file - descriptors. -* fixes `lchmod` for Node versions prior to 0.6.2. -* implements `fs.lutimes` if possible. Otherwise it becomes a noop. -* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or - `lchown` if the user isn't root. -* makes `lchmod` and `lchown` become noops, if not available. -* retries reading a file if `read` results in EAGAIN error. - -On Windows, it retries renaming a file for up to one second if `EACCESS` -or `EPERM` error occurs, likely because antivirus software has locked -the directory. - -## USAGE - -```javascript -// use just like fs -var fs = require('graceful-fs') - -// now go and do stuff with it... -fs.readFileSync('some-file-or-whatever') -``` diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/fs.js b/deps/npm/node_modules/fstream/node_modules/graceful-fs/fs.js deleted file mode 100644 index 64ad980232ec..000000000000 --- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/fs.js +++ /dev/null @@ -1,11 +0,0 @@ -// eeeeeevvvvviiiiiiillllll -// more evil than monkey-patching the native builtin? -// Not sure. - -var mod = require("module") -var pre = '(function (exports, require, module, __filename, __dirname) { ' -var post = '});' -var src = pre + process.binding('natives').fs + post -var vm = require('vm') -var fn = vm.runInThisContext(src) -fn(exports, require, module, __filename, __dirname) diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js b/deps/npm/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js deleted file mode 100644 index fb206b83854a..000000000000 --- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js +++ /dev/null @@ -1,158 +0,0 @@ -// Monkey-patching the fs module. -// It's ugly, but there is simply no other way to do this. -var fs = module.exports = require('./fs.js') - -var assert = require('assert') - -// fix up some busted stuff, mostly on windows and old nodes -require('./polyfills.js') - -var util = require('util') - -function noop () {} - -var debug = noop -if (util.debuglog) - debug = util.debuglog('gfs') -else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) - debug = function() { - var m = util.format.apply(util, arguments) - m = 'GFS: ' + m.split(/\n/).join('\nGFS: ') - console.error(m) - } - -if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) { - process.on('exit', function() { - debug('fds', fds) - debug(queue) - assert.equal(queue.length, 0) - }) -} - - -var originalOpen = fs.open -fs.open = open - -function open(path, flags, mode, cb) { - if (typeof mode === "function") cb = mode, mode = null - if (typeof cb !== "function") cb = noop - new OpenReq(path, flags, mode, cb) -} - -function OpenReq(path, flags, mode, cb) { - this.path = path - this.flags = flags - this.mode = mode - this.cb = cb - Req.call(this) -} - -util.inherits(OpenReq, Req) - -OpenReq.prototype.process = function() { - originalOpen.call(fs, this.path, this.flags, this.mode, this.done) -} - -var fds = {} -OpenReq.prototype.done = function(er, fd) { - debug('open done', er, fd) - if (fd) - fds['fd' + fd] = this.path - Req.prototype.done.call(this, er, fd) -} - - -var originalReaddir = fs.readdir -fs.readdir = readdir - -function readdir(path, cb) { - if (typeof cb !== "function") cb = noop - new ReaddirReq(path, cb) -} - -function ReaddirReq(path, cb) { - this.path = path - this.cb = cb - Req.call(this) -} - -util.inherits(ReaddirReq, Req) - -ReaddirReq.prototype.process = function() { - originalReaddir.call(fs, this.path, this.done) -} - -ReaddirReq.prototype.done = function(er, files) { - if (files && files.sort) - files = files.sort() - Req.prototype.done.call(this, er, files) - onclose() -} - - -var originalClose = fs.close -fs.close = close - -function close (fd, cb) { - debug('close', fd) - if (typeof cb !== "function") cb = noop - delete fds['fd' + fd] - originalClose.call(fs, fd, function(er) { - onclose() - cb(er) - }) -} - - -var originalCloseSync = fs.closeSync -fs.closeSync = closeSync - -function closeSync (fd) { - try { - return originalCloseSync(fd) - } finally { - onclose() - } -} - - -// Req class -function Req () { - // start processing - this.done = this.done.bind(this) - this.failures = 0 - this.process() -} - -Req.prototype.done = function (er, result) { - var tryAgain = false - if (er) { - var code = er.code - var tryAgain = code === "EMFILE" || code === "ENFILE" - if (process.platform === "win32") - tryAgain = tryAgain || code === "OK" - } - - if (tryAgain) { - this.failures ++ - enqueue(this) - } else { - var cb = this.cb - cb(er, result) - } -} - -var queue = [] - -function enqueue(req) { - queue.push(req) - debug('enqueue %d %s', queue.length, req.constructor.name, req) -} - -function onclose() { - var req = queue.shift() - if (req) { - debug('process', req.constructor.name, req) - req.process() - } -} diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/package.json b/deps/npm/node_modules/fstream/node_modules/graceful-fs/package.json deleted file mode 100644 index 458bb9538dbf..000000000000 --- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/package.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "_args": [ - [ - "graceful-fs@3", - "/Users/isaacs/dev/npm/npm/node_modules/fstream" - ] - ], - "_from": "graceful-fs@>=3.0.0 <4.0.0", - "_id": "graceful-fs@3.0.8", - "_inCache": true, - "_location": "/fstream/graceful-fs", - "_nodeVersion": "2.0.1", - "_npmUser": { - "email": "isaacs@npmjs.com", - "name": "isaacs" - }, - "_npmVersion": "2.10.1", - "_phantomChildren": {}, - "_requested": { - "name": "graceful-fs", - "raw": "graceful-fs@3", - "rawSpec": "3", - "scope": null, - "spec": ">=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/fstream" - ], - "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", - "_shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22", - "_shrinkwrap": null, - "_spec": "graceful-fs@3", - "_where": "/Users/isaacs/dev/npm/npm/node_modules/fstream", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me" - }, - "bugs": { - "url": "https://github.com/isaacs/node-graceful-fs/issues" - }, - "dependencies": {}, - "description": "A drop-in replacement for fs, making various improvements.", - "devDependencies": { - "mkdirp": "^0.5.0", - "rimraf": "^2.2.8", - "tap": "^1.2.0" - }, - "directories": { - "test": "test" - }, - "dist": { - "shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22", - "tarball": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" - }, - "engines": { - "node": ">=0.4.0" - }, - "gitHead": "45c57aa5e323c35a985a525de6f0c9a6ef59e1f8", - "homepage": "https://github.com/isaacs/node-graceful-fs#readme", - "keywords": [ - "EACCESS", - "EAGAIN", - "EINVAL", - "EMFILE", - "EPERM", - "error", - "errors", - "fs", - "handling", - "module", - "queue", - "reading", - "retries", - "retry" - ], - "license": "ISC", - "main": "graceful-fs.js", - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "name": "graceful-fs", - "optionalDependencies": {}, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-graceful-fs.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "version": "3.0.8" -} diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/polyfills.js b/deps/npm/node_modules/fstream/node_modules/graceful-fs/polyfills.js deleted file mode 100644 index 8ac5006e2da2..000000000000 --- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/polyfills.js +++ /dev/null @@ -1,254 +0,0 @@ -var fs = require('./fs.js') -var constants = require('constants') - -var origCwd = process.cwd -var cwd = null -process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process) - return cwd -} -var chdir = process.chdir -process.chdir = function(d) { - cwd = null - chdir.call(process, d) -} - -// (re-)implement some things that are known busted or missing. - -// lchmod, broken prior to 0.6.2 -// back-port the fix here. -if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - fs.lchmod = function (path, mode, callback) { - callback = callback || noop - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - callback(err || err2) - }) - }) - }) - } - - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var err, err2 - try { - var ret = fs.fchmodSync(fd, mode) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } -} - - -// lutimes implementation, or no-op -if (!fs.lutimes) { - if (constants.hasOwnProperty("O_SYMLINK")) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - cb = cb || noop - if (er) return cb(er) - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - return cb(er || er2) - }) - }) - }) - } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - , err - , err2 - , ret - - try { - var ret = fs.futimesSync(fd, at, mt) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } - - } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) { - // maybe utimensat will be bound soonish? - fs.lutimes = function (path, at, mt, cb) { - fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb) - } - - fs.lutimesSync = function (path, at, mt) { - return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW) - } - - } else { - fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) } - fs.lutimesSync = function () {} - } -} - - -// https://github.com/isaacs/node-graceful-fs/issues/4 -// Chown should not fail on einval or eperm if non-root. -// It should not fail on enosys ever, as this just indicates -// that a fs doesn't support the intended operation. - -fs.chown = chownFix(fs.chown) -fs.fchown = chownFix(fs.fchown) -fs.lchown = chownFix(fs.lchown) - -fs.chmod = chownFix(fs.chmod) -fs.fchmod = chownFix(fs.fchmod) -fs.lchmod = chownFix(fs.lchmod) - -fs.chownSync = chownFixSync(fs.chownSync) -fs.fchownSync = chownFixSync(fs.fchownSync) -fs.lchownSync = chownFixSync(fs.lchownSync) - -fs.chmodSync = chownFix(fs.chmodSync) -fs.fchmodSync = chownFix(fs.fchmodSync) -fs.lchmodSync = chownFix(fs.lchmodSync) - -function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er, res) { - if (chownErOk(er)) er = null - cb(er, res) - }) - } -} - -function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } -} - -// ENOSYS means that the fs doesn't support the op. Just ignore -// that, because it doesn't matter. -// -// if there's no getuid, or if getuid() is something other -// than 0, and the error is EINVAL or EPERM, then just ignore -// it. -// -// This specific case is a silent failure in cp, install, tar, -// and most other unix tools that manage permissions. -// -// When running as root, or if other types of errors are -// encountered, then it's strict. -function chownErOk (er) { - if (!er) - return true - - if (er.code === "ENOSYS") - return true - - var nonroot = !process.getuid || process.getuid() !== 0 - if (nonroot) { - if (er.code === "EINVAL" || er.code === "EPERM") - return true - } - - return false -} - - -// if lchmod/lchown do not exist, then make them no-ops -if (!fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - process.nextTick(cb) - } - fs.lchmodSync = function () {} -} -if (!fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - process.nextTick(cb) - } - fs.lchownSync = function () {} -} - - - -// on Windows, A/V software can lock the directory, causing this -// to fail with an EACCES or EPERM if the directory contains newly -// created files. Try again on failure, for up to 1 second. -if (process.platform === "win32") { - var rename_ = fs.rename - fs.rename = function rename (from, to, cb) { - var start = Date.now() - rename_(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM") - && Date.now() - start < 1000) { - return rename_(from, to, CB) - } - if(cb) cb(er) - }) - } -} - - -// if read() returns EAGAIN, then just try it again. -var read = fs.read -fs.read = function (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) - } - } - return read.call(fs, fd, buffer, offset, length, position, callback) -} - -var readSync = fs.readSync -fs.readSync = function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } -} diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/max-open.js b/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/max-open.js deleted file mode 100644 index a6b9ba43d3a6..000000000000 --- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/max-open.js +++ /dev/null @@ -1,69 +0,0 @@ -var test = require('tap').test -var fs = require('../') - -test('open lots of stuff', function (t) { - // Get around EBADF from libuv by making sure that stderr is opened - // Otherwise Darwin will refuse to give us a FD for stderr! - process.stderr.write('') - - // How many parallel open()'s to do - var n = 1024 - var opens = 0 - var fds = [] - var going = true - var closing = false - var doneCalled = 0 - - for (var i = 0; i < n; i++) { - go() - } - - function go() { - opens++ - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fds.push(fd) - if (going) go() - }) - } - - // should hit ulimit pretty fast - setTimeout(function () { - going = false - t.equal(opens - fds.length, n) - done() - }, 100) - - - function done () { - if (closing) return - doneCalled++ - - if (fds.length === 0) { - console.error('done called %d times', doneCalled) - // First because of the timeout - // Then to close the fd's opened afterwards - // Then this time, to complete. - // Might take multiple passes, depending on CPU speed - // and ulimit, but at least 3 in every case. - t.ok(doneCalled >= 2) - return t.end() - } - - closing = true - setTimeout(function () { - // console.error('do closing again') - closing = false - done() - }, 100) - - // console.error('closing time') - var closes = fds.slice(0) - fds.length = 0 - closes.forEach(function (fd) { - fs.close(fd, function (er) { - if (er) throw er - }) - }) - } -}) diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/open.js b/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/open.js deleted file mode 100644 index 85732f236b00..000000000000 --- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/open.js +++ /dev/null @@ -1,39 +0,0 @@ -var test = require('tap').test -var fs = require('../graceful-fs.js') - -test('graceful fs is monkeypatched fs', function (t) { - t.equal(fs, require('../fs.js')) - t.end() -}) - -test('open an existing file works', function (t) { - var fd = fs.openSync(__filename, 'r') - fs.closeSync(fd) - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fs.close(fd, function (er) { - if (er) throw er - t.pass('works') - t.end() - }) - }) -}) - -test('open a non-existing file throws', function (t) { - var er - try { - var fd = fs.openSync('this file does not exist', 'r') - } catch (x) { - er = x - } - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - - fs.open('neither does this file', 'r', function (er, fd) { - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - t.end() - }) -}) diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js b/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js deleted file mode 100644 index cb63a6846ed7..000000000000 --- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js +++ /dev/null @@ -1,20 +0,0 @@ -var test = require("tap").test -var fs = require("../fs.js") - -var readdir = fs.readdir -fs.readdir = function(path, cb) { - process.nextTick(function() { - cb(null, ["b", "z", "a"]) - }) -} - -var g = require("../") - -test("readdir reorder", function (t) { - g.readdir("whatevers", function (er, files) { - if (er) - throw er - t.same(files, [ "a", "b", "z" ]) - t.end() - }) -}) diff --git a/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/write-then-read.js b/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/write-then-read.js deleted file mode 100644 index 21e4c26bf6c9..000000000000 --- a/deps/npm/node_modules/fstream/node_modules/graceful-fs/test/write-then-read.js +++ /dev/null @@ -1,47 +0,0 @@ -var fs = require('../'); -var rimraf = require('rimraf'); -var mkdirp = require('mkdirp'); -var test = require('tap').test; -var p = require('path').resolve(__dirname, 'files'); - -process.chdir(__dirname) - -// Make sure to reserve the stderr fd -process.stderr.write(''); - -var num = 4097; -var paths = new Array(num); - -test('make files', function (t) { - rimraf.sync(p); - mkdirp.sync(p); - - for (var i = 0; i < num; ++i) { - paths[i] = 'files/file-' + i; - fs.writeFileSync(paths[i], 'content'); - } - - t.end(); -}) - -test('read files', function (t) { - // now read them - var done = 0; - for (var i = 0; i < num; ++i) { - fs.readFile(paths[i], function(err, data) { - if (err) - throw err; - - ++done; - if (done === num) { - t.pass('success'); - t.end() - } - }); - } -}); - -test('cleanup', function (t) { - rimraf.sync(p); - t.end(); -}); diff --git a/deps/npm/node_modules/fstream/package.json b/deps/npm/node_modules/fstream/package.json index 0109d940c27a..8c0081954428 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": "1.0.7", + "version": "1.0.8", "repository": { "type": "git", "url": "git://github.com/isaacs/fstream.git" @@ -16,7 +16,7 @@ "node": ">=0.6" }, "dependencies": { - "graceful-fs": "3", + "graceful-fs": "^4.1.2", "inherits": "~2.0.0", "mkdirp": ">=0.5 0", "rimraf": "2" @@ -31,12 +31,12 @@ "license": "ISC", "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": "586e8efc1cf77883f6c22fc32a7cb38f0eb88911", + "gitHead": "d9f81146c50e687f1df04c1a0e7e4c173eb3dae2", "bugs": { "url": "https://github.com/isaacs/fstream/issues" }, "homepage": "https://github.com/isaacs/fstream#readme", - "_id": "fstream@1.0.7", - "_shasum": "455a1aa1d46077668d95b6d27838e1b1daa78c78", - "_from": "fstream@>=1.0.7 <1.1.0" + "_id": "fstream@1.0.8", + "_shasum": "7e8d7a73abb3647ef36e4b8a15ca801dba03d038", + "_from": "fstream@1.0.8" } diff --git a/deps/npm/node_modules/glob/package.json b/deps/npm/node_modules/glob/package.json index e4c9fb00206f..2949b83be063 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": "5.0.14", + "version": "5.0.15", "repository": { "type": "git", "url": "git://github.com/isaacs/node-glob.git" @@ -23,7 +23,7 @@ "dependencies": { "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^2.0.1", + "minimatch": "2 || 3", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -43,23 +43,23 @@ "benchclean": "node benchclean.js" }, "license": "ISC", - "gitHead": "c47d4514f8f93f23b589afa18947306116bfe40f", + "gitHead": "3a7e71d453dd80e75b196fd262dd23ed54beeceb", "bugs": { "url": "https://github.com/isaacs/node-glob/issues" }, "homepage": "https://github.com/isaacs/node-glob#readme", - "_id": "glob@5.0.14", - "_shasum": "a811d507acb605441edd6cd2622a3c6f06cc00e1", - "_from": "glob@latest", - "_npmVersion": "3.1.0", - "_nodeVersion": "2.2.1", + "_id": "glob@5.0.15", + "_shasum": "1bc936b9e02f4a603fcc222ecf7633d30b8b93b1", + "_from": "glob@5.0.15", + "_npmVersion": "3.3.2", + "_nodeVersion": "4.0.0", "_npmUser": { "name": "isaacs", "email": "isaacs@npmjs.com" }, "dist": { - "shasum": "a811d507acb605441edd6cd2622a3c6f06cc00e1", - "tarball": "http://registry.npmjs.org/glob/-/glob-5.0.14.tgz" + "shasum": "1bc936b9e02f4a603fcc222ecf7633d30b8b93b1", + "tarball": "http://registry.npmjs.org/glob/-/glob-5.0.15.tgz" }, "maintainers": [ { @@ -68,5 +68,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/glob/-/glob-5.0.14.tgz" + "_resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "readme": "ERROR: No README data found!" } 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 ef5161e7926a..59f8fec6121a 100644 --- a/deps/npm/node_modules/init-package-json/default-input.js +++ b/deps/npm/node_modules/init-package-json/default-input.js @@ -32,6 +32,9 @@ function readDeps (test) { return function (cb) { try { p = JSON.parse(p) } catch (e) { return next() } if (!p.version) return next() + if (p._requiredBy) { + if (!p._requiredBy.some(function (req) { return req === '#USER' })) return next() + } deps[d] = config.get('save-exact') ? p.version : config.get('save-prefix') + p.version return next() }) diff --git a/deps/npm/node_modules/init-package-json/init-package-json.js b/deps/npm/node_modules/init-package-json/init-package-json.js index 5e50e712747a..87c72ccf948b 100644 --- a/deps/npm/node_modules/init-package-json/init-package-json.js +++ b/deps/npm/node_modules/init-package-json/init-package-json.js @@ -106,7 +106,9 @@ function init (dir, input, config, cb) { var d = JSON.stringify(pkg, null, 2) + '\n' function write (yes) { fs.writeFile(package, d, 'utf8', function (er) { - if (!er && yes) console.log('Wrote to %s:\n\n%s\n', package, d) + if (!er && yes && !config.get('silent')) { + console.log('Wrote to %s:\n\n%s\n', package, d) + } return cb(er, pkg) }) } diff --git a/deps/npm/node_modules/init-package-json/package.json b/deps/npm/node_modules/init-package-json/package.json index ad9fab899bfc..0cc543ece404 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": "1.7.1", + "version": "1.9.1", "main": "init-package-json.js", "scripts": { "test": "tap test/*.js" @@ -23,7 +23,7 @@ "read": "~1.0.1", "read-package-json": "1 || 2", "semver": "2.x || 3.x || 4 || 5", - "validate-npm-package-license": "^2.0.0", + "validate-npm-package-license": "^3.0.1", "validate-npm-package-name": "^2.0.1" }, "devDependencies": { @@ -41,14 +41,42 @@ "prompt", "start" ], - "readme": "# init-package-json\n\nA node module to get your node module started.\n\n[![Build Status](https://secure.travis-ci.org/npm/init-package-json.svg)](http://travis-ci.org/npm/init-package-json)\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": "443031e837c81bb10548212a7b3700b5dde94cfb", + "gitHead": "37c38b4e23189eb5645901fa6851f343fddd4b73", "bugs": { "url": "https://github.com/isaacs/init-package-json/issues" }, "homepage": "https://github.com/isaacs/init-package-json#readme", - "_id": "init-package-json@1.7.1", - "_shasum": "32a8643779c91732d901a6fdc7505de7119fb7ad", - "_from": "init-package-json@>=1.7.1 <1.8.0" + "_id": "init-package-json@1.9.1", + "_shasum": "a28e05b5baeb3363cd473df68d30d3a80523a31c", + "_from": "init-package-json@1.9.1", + "_npmVersion": "2.14.1", + "_nodeVersion": "2.2.2", + "_npmUser": { + "name": "zkat", + "email": "kat@sykosomatic.org" + }, + "dist": { + "shasum": "a28e05b5baeb3363cd473df68d30d3a80523a31c", + "tarball": "http://registry.npmjs.org/init-package-json/-/init-package-json-1.9.1.tgz" + }, + "maintainers": [ + { + "name": "isaacs", + "email": "isaacs@npmjs.com" + }, + { + "name": "othiym23", + "email": "ogd@aoaioxxysz.net" + }, + { + "name": "iarna", + "email": "me@re-becca.org" + }, + { + "name": "zkat", + "email": "kat@sykosomatic.org" + } + ], + "directories": {}, + "_resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-1.9.1.tgz" } diff --git a/deps/npm/node_modules/init-package-json/test/silent.js b/deps/npm/node_modules/init-package-json/test/silent.js new file mode 100644 index 000000000000..4937020562a3 --- /dev/null +++ b/deps/npm/node_modules/init-package-json/test/silent.js @@ -0,0 +1,23 @@ +var tap = require('tap') +var init = require('../') +var rimraf = require('rimraf') + +var log = console.log +var logged = false +console.log = function () { + logged = true +} + +tap.test('silent: true', function (t) { + init(__dirname, __dirname, {yes: 'yes', silent: true}, function (er, data) { + if (er) throw er + + t.false(logged, 'did not print anything') + t.end() + }) +}) + +tap.test('teardown', function (t) { + console.log = log + rimraf(__dirname + '/package.json', t.end.bind(t)) +}) diff --git a/deps/npm/node_modules/lru-cache/README.md b/deps/npm/node_modules/lru-cache/README.md index a8bba688f720..3fd6d0bcae47 100644 --- a/deps/npm/node_modules/lru-cache/README.md +++ b/deps/npm/node_modules/lru-cache/README.md @@ -36,7 +36,7 @@ away. * `length` Function that is used to calculate the length of stored items. If you're storing strings or buffers, then you probably want to do something like `function(n){return n.length}`. The default is - `function(n){return 1}`, which is fine if you want to store `n` + `function(n){return 1}`, which is fine if you want to store `max` like-sized things. * `dispose` Function that is called on items when they are dropped from the cache. This can be handy if you want to close file @@ -102,8 +102,18 @@ away. Return total length of objects in cache taking into account `length` options function. -* `itemCount()` +* `itemCount` Return total quantity of objects currently in cache. Note, that `stale` (see options) items are returned as part of this item count. + +* `dump()` + + Return an array of the cache entries ready for serialization and usage + with 'destinationCache.load(arr)`. + +* `load(cacheEntriesArray)` + + Loads another cache entries array, obtained with `sourceCache.dump()`, + into the cache. The destination cache is reset before loading new entries diff --git a/deps/npm/node_modules/lru-cache/lib/lru-cache.js b/deps/npm/node_modules/lru-cache/lib/lru-cache.js index d66e7a2382f1..32c2d2d90be1 100644 --- a/deps/npm/node_modules/lru-cache/lib/lru-cache.js +++ b/deps/npm/node_modules/lru-cache/lib/lru-cache.js @@ -137,10 +137,24 @@ LRUCache.prototype.reset = function () { this._itemCount = 0 } -// Provided for debugging/dev purposes only. No promises whatsoever that -// this API stays stable. LRUCache.prototype.dump = function () { - return this._cache + var arr = [] + var i = 0 + + for (var k = this._mru - 1; k >= 0 && i < this._itemCount; k--) if (this._lruList[k]) { + var hit = this._lruList[k] + if (!isStale(this, hit)) { + //Do not store staled hits + ++i + arr.push({ + k: hit.key, + v: hit.value, + e: hit.now + (hit.maxAge || 0) + }); + } + } + //arr has the most read first + return arr } LRUCache.prototype.dumpLru = function () { @@ -150,8 +164,13 @@ LRUCache.prototype.dumpLru = function () { LRUCache.prototype.set = function (key, value, maxAge) { maxAge = maxAge || this._maxAge var now = maxAge ? Date.now() : 0 + var len = this._lengthCalculator(value) if (hOP(this._cache, key)) { + if (len > this._max) { + del(this, this._cache[key]) + return false + } // dispose of the old one before overwriting if (this._dispose) this._dispose(key, this._cache[key].value) @@ -159,11 +178,16 @@ LRUCache.prototype.set = function (key, value, maxAge) { this._cache[key].now = now this._cache[key].maxAge = maxAge this._cache[key].value = value + this._length += (len - this._cache[key].length) + this._cache[key].length = len this.get(key) + + if (this._length > this._max) + trim(this) + return true } - var len = this._lengthCalculator(value) var hit = new Entry(key, value, this._mru++, len, now, maxAge) // oversized objects fall out of cache automatically. @@ -209,6 +233,26 @@ LRUCache.prototype.del = function (key) { del(this, this._cache[key]) } +LRUCache.prototype.load = function (arr) { + //reset the cache + this.reset(); + + var now = Date.now() + //A previous serialized cache has the most recent items first + for (var l = arr.length - 1; l >= 0; l-- ) { + var hit = arr[l] + var expiresAt = hit.e || 0 + if (expiresAt === 0) { + //the item was created without expiration in a non aged cache + this.set(hit.k, hit.v) + } else { + var maxAge = expiresAt - now + //dont add already expired items + if (maxAge > 0) this.set(hit.k, hit.v, maxAge) + } + } +} + function get (self, key, doUse) { var hit = self._cache[key] if (hit) { diff --git a/deps/npm/node_modules/lru-cache/package.json b/deps/npm/node_modules/lru-cache/package.json index 5d0f9a27a92a..5a9d76a1d5f4 100644 --- a/deps/npm/node_modules/lru-cache/package.json +++ b/deps/npm/node_modules/lru-cache/package.json @@ -1,7 +1,7 @@ { "name": "lru-cache", "description": "A cache object that deletes the least-recently-used items.", - "version": "2.6.5", + "version": "2.7.0", "author": { "name": "Isaac Z. Schlueter", "email": "i@izs.me" @@ -24,23 +24,23 @@ "weak": "" }, "license": "ISC", - "gitHead": "7062a0c891bfb80a294be9217e4de0f882e75776", + "gitHead": "fc6ee93093f4e463e5946736d4c48adc013724d1", "bugs": { "url": "https://github.com/isaacs/node-lru-cache/issues" }, "homepage": "https://github.com/isaacs/node-lru-cache#readme", - "_id": "lru-cache@2.6.5", - "_shasum": "e56d6354148ede8d7707b58d143220fd08df0fd5", - "_from": "lru-cache@2.6.5", - "_npmVersion": "3.0.0", - "_nodeVersion": "2.2.1", + "_id": "lru-cache@2.7.0", + "_shasum": "aaa376a4cd970f9cebf5ec1909566ec034f07ee6", + "_from": "lru-cache@2.7.0", + "_npmVersion": "3.3.2", + "_nodeVersion": "4.0.0", "_npmUser": { "name": "isaacs", "email": "isaacs@npmjs.com" }, "dist": { - "shasum": "e56d6354148ede8d7707b58d143220fd08df0fd5", - "tarball": "http://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz" + "shasum": "aaa376a4cd970f9cebf5ec1909566ec034f07ee6", + "tarball": "http://registry.npmjs.org/lru-cache/-/lru-cache-2.7.0.tgz" }, "maintainers": [ { @@ -53,5 +53,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz" + "_resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/deps/npm/node_modules/lru-cache/test/basic.js b/deps/npm/node_modules/lru-cache/test/basic.js index 949113e9ce8b..b47225f10989 100644 --- a/deps/npm/node_modules/lru-cache/test/basic.js +++ b/deps/npm/node_modules/lru-cache/test/basic.js @@ -93,31 +93,6 @@ test("reset", function (t) { }) -// Note: `.dump()` is a debugging tool only. No guarantees are made -// about the format/layout of the response. -test("dump", function (t) { - var cache = new LRU(10) - var d = cache.dump(); - t.equal(Object.keys(d).length, 0, "nothing in dump for empty cache") - cache.set("a", "A") - var d = cache.dump() // { a: { key: "a", value: "A", lu: 0 } } - t.ok(d.a) - t.equal(d.a.key, "a") - t.equal(d.a.value, "A") - t.equal(d.a.lu, 0) - - cache.set("b", "B") - cache.get("b") - d = cache.dump() - t.ok(d.b) - t.equal(d.b.key, "b") - t.equal(d.b.value, "B") - t.equal(d.b.lu, 2) - - t.end() -}) - - test("basic with weighed length", function (t) { var cache = new LRU({ max: 100, @@ -182,6 +157,32 @@ test("lru recently gotten with weighed length", function (t) { t.end() }) +test("lru recently updated with weighed length", function (t) { + var cache = new LRU({ + max: 8, + length: function (item) { return item.length } + }) + cache.set("a", "A") + cache.set("b", "BB") + cache.set("c", "CCC") + t.equal(cache.length, 6) //CCC BB A + cache.set("a", "+A") + t.equal(cache.length, 7) //+A CCC BB + cache.set("b", "++BB") + t.equal(cache.length, 6) //++BB +A + t.equal(cache.get("c"), undefined) + + cache.set("c", "oversized") + t.equal(cache.length, 6) //++BB +A + t.equal(cache.get("c"), undefined) + + cache.set("a", "oversized") + t.equal(cache.length, 4) //++BB + t.equal(cache.get("a"), undefined) + t.equal(cache.get("b"), "++BB") + t.end() +}) + test("set returns proper booleans", function(t) { var cache = new LRU({ max: 5, diff --git a/deps/npm/node_modules/lru-cache/test/serialize.js b/deps/npm/node_modules/lru-cache/test/serialize.js new file mode 100644 index 000000000000..5fe5dc3d371f --- /dev/null +++ b/deps/npm/node_modules/lru-cache/test/serialize.js @@ -0,0 +1,215 @@ +var test = require('tap').test +var LRU = require('../') + +test('dump', function (t) { + var cache = new LRU() + + t.equal(cache.dump().length, 0, "nothing in dump for empty cache") + + cache.set("a", "A") + cache.set("b", "B") + t.deepEqual(cache.dump(), [ + { k: "b", v: "B", e: 0 }, + { k: "a", v: "A", e: 0 } + ]) + + cache.set("a", "A"); + t.deepEqual(cache.dump(), [ + { k: "a", v: "A", e: 0 }, + { k: "b", v: "B", e: 0 } + ]) + + cache.get("b"); + t.deepEqual(cache.dump(), [ + { k: "b", v: "B", e: 0 }, + { k: "a", v: "A", e: 0 } + ]) + + cache.del("a"); + t.deepEqual(cache.dump(), [ + { k: "b", v: "B", e: 0 } + ]) + + t.end() +}) + +test("do not dump stale items", function(t) { + var cache = new LRU({ + max: 5, + maxAge: 50 + }) + + //expires at 50 + cache.set("a", "A") + + setTimeout(function () { + //expires at 75 + cache.set("b", "B") + var s = cache.dump() + t.equal(s.length, 2) + t.equal(s[0].k, "b") + t.equal(s[1].k, "a") + }, 25) + + setTimeout(function () { + //expires at 110 + cache.set("c", "C") + var s = cache.dump() + t.equal(s.length, 2) + t.equal(s[0].k, "c") + t.equal(s[1].k, "b") + }, 60) + + setTimeout(function () { + //expires at 130 + cache.set("d", "D", 40) + var s = cache.dump() + t.equal(s.length, 2) + t.equal(s[0].k, "d") + t.equal(s[1].k, "c") + }, 90) + + setTimeout(function () { + var s = cache.dump() + t.equal(s.length, 1) + t.equal(s[0].k, "d") + }, 120) + + setTimeout(function () { + var s = cache.dump() + t.deepEqual(s, []) + t.end() + }, 155) +}) + +test("load basic cache", function(t) { + var cache = new LRU(), + copy = new LRU() + + cache.set("a", "A") + cache.set("b", "B") + + copy.load(cache.dump()) + t.deepEquals(cache.dump(), copy.dump()) + + t.end() +}) + + +test("load staled cache", function(t) { + var cache = new LRU({maxAge: 50}), + copy = new LRU({maxAge: 50}), + arr + + //expires at 50 + cache.set("a", "A") + setTimeout(function () { + //expires at 80 + cache.set("b", "B") + arr = cache.dump() + t.equal(arr.length, 2) + }, 30) + + setTimeout(function () { + copy.load(arr) + t.equal(copy.get("a"), undefined) + t.equal(copy.get("b"), "B") + }, 60) + + setTimeout(function () { + t.equal(copy.get("b"), undefined) + t.end() + }, 90) +}) + +test("load to other size cache", function(t) { + var cache = new LRU({max: 2}), + copy = new LRU({max: 1}) + + cache.set("a", "A") + cache.set("b", "B") + + copy.load(cache.dump()) + t.equal(copy.get("a"), undefined) + t.equal(copy.get("b"), "B") + + //update the last read from original cache + cache.get("a") + copy.load(cache.dump()) + t.equal(copy.get("a"), "A") + t.equal(copy.get("b"), undefined) + + t.end() +}) + + +test("load to other age cache", function(t) { + var cache = new LRU({maxAge: 50}), + aged = new LRU({maxAge: 100}), + simple = new LRU(), + arr, + expired + + //created at 0 + //a would be valid till 0 + 50 + cache.set("a", "A") + setTimeout(function () { + //created at 20 + //b would be valid till 20 + 50 + cache.set("b", "B") + //b would be valid till 20 + 70 + cache.set("c", "C", 70) + arr = cache.dump() + t.equal(arr.length, 3) + }, 20) + + setTimeout(function () { + t.equal(cache.get("a"), undefined) + t.equal(cache.get("b"), "B") + t.equal(cache.get("c"), "C") + + aged.load(arr) + t.equal(aged.get("a"), undefined) + t.equal(aged.get("b"), "B") + t.equal(aged.get("c"), "C") + + simple.load(arr) + t.equal(simple.get("a"), undefined) + t.equal(simple.get("b"), "B") + t.equal(simple.get("c"), "C") + }, 60) + + setTimeout(function () { + t.equal(cache.get("a"), undefined) + t.equal(cache.get("b"), undefined) + t.equal(cache.get("c"), "C") + + aged.load(arr) + t.equal(aged.get("a"), undefined) + t.equal(aged.get("b"), undefined) + t.equal(aged.get("c"), "C") + + simple.load(arr) + t.equal(simple.get("a"), undefined) + t.equal(simple.get("b"), undefined) + t.equal(simple.get("c"), "C") + }, 80) + + setTimeout(function () { + t.equal(cache.get("a"), undefined) + t.equal(cache.get("b"), undefined) + t.equal(cache.get("c"), undefined) + + aged.load(arr) + t.equal(aged.get("a"), undefined) + t.equal(aged.get("b"), undefined) + t.equal(aged.get("c"), undefined) + + simple.load(arr) + t.equal(simple.get("a"), undefined) + t.equal(simple.get("b"), undefined) + t.equal(simple.get("c"), undefined) + t.end() + }, 100) + +}) diff --git a/deps/npm/node_modules/minimatch/browser.js b/deps/npm/node_modules/minimatch/browser.js deleted file mode 100644 index 7d0515920e5c..000000000000 --- a/deps/npm/node_modules/minimatch/browser.js +++ /dev/null @@ -1,1159 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.minimatch = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o any number of characters -var star = qmark + '*?' - -// ** when dots are allowed. Anything goes, except .. and . -// not (^ or / followed by one or two dots followed by $ or /), -// followed by anything, any number of times. -var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' - -// not a ^ or / followed by a dot, -// followed by anything, any number of times. -var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' - -// characters that need to be escaped in RegExp. -var reSpecials = charSet('().*{}+?[]^$\\!') - -// "abc" -> { a:true, b:true, c:true } -function charSet (s) { - return s.split('').reduce(function (set, c) { - set[c] = true - return set - }, {}) -} - -// normalizes slashes. -var slashSplit = /\/+/ - -minimatch.filter = filter -function filter (pattern, options) { - options = options || {} - return function (p, i, list) { - return minimatch(p, pattern, options) - } -} - -function ext (a, b) { - a = a || {} - b = b || {} - var t = {} - Object.keys(b).forEach(function (k) { - t[k] = b[k] - }) - Object.keys(a).forEach(function (k) { - t[k] = a[k] - }) - return t -} - -minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return minimatch - - var orig = minimatch - - var m = function minimatch (p, pattern, options) { - return orig.minimatch(p, pattern, ext(def, options)) - } - - m.Minimatch = function Minimatch (pattern, options) { - return new orig.Minimatch(pattern, ext(def, options)) - } - - return m -} - -Minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return Minimatch - return minimatch.defaults(def).Minimatch -} - -function minimatch (p, pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('glob pattern string required') - } - - if (!options) options = {} - - // shortcut: comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - return false - } - - // "" only matches "" - if (pattern.trim() === '') return p === '' - - return new Minimatch(pattern, options).match(p) -} - -function Minimatch (pattern, options) { - if (!(this instanceof Minimatch)) { - return new Minimatch(pattern, options) - } - - if (typeof pattern !== 'string') { - throw new TypeError('glob pattern string required') - } - - if (!options) options = {} - pattern = pattern.trim() - - // windows support: need to use /, not \ - if (path.sep !== '/') { - pattern = pattern.split(path.sep).join('/') - } - - this.options = options - this.set = [] - this.pattern = pattern - this.regexp = null - this.negate = false - this.comment = false - this.empty = false - - // make the set of regexps etc. - this.make() -} - -Minimatch.prototype.debug = function () {} - -Minimatch.prototype.make = make -function make () { - // don't do it more than once. - if (this._made) return - - var pattern = this.pattern - var options = this.options - - // empty patterns and comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - this.comment = true - return - } - if (!pattern) { - this.empty = true - return - } - - // step 1: figure out negation, etc. - this.parseNegate() - - // step 2: expand braces - var set = this.globSet = this.braceExpand() - - if (options.debug) this.debug = console.error - - this.debug(this.pattern, set) - - // step 3: now we have a set, so turn each one into a series of path-portion - // matching patterns. - // These will be regexps, except in the case of "**", which is - // set to the GLOBSTAR object for globstar behavior, - // and will not contain any / characters - set = this.globParts = set.map(function (s) { - return s.split(slashSplit) - }) - - this.debug(this.pattern, set) - - // glob --> regexps - set = set.map(function (s, si, set) { - return s.map(this.parse, this) - }, this) - - this.debug(this.pattern, set) - - // filter out everything that didn't compile properly. - set = set.filter(function (s) { - return s.indexOf(false) === -1 - }) - - this.debug(this.pattern, set) - - this.set = set -} - -Minimatch.prototype.parseNegate = parseNegate -function parseNegate () { - var pattern = this.pattern - var negate = false - var options = this.options - var negateOffset = 0 - - if (options.nonegate) return - - for (var i = 0, l = pattern.length - ; i < l && pattern.charAt(i) === '!' - ; i++) { - negate = !negate - negateOffset++ - } - - if (negateOffset) this.pattern = pattern.substr(negateOffset) - this.negate = negate -} - -// Brace expansion: -// a{b,c}d -> abd acd -// a{b,}c -> abc ac -// a{0..3}d -> a0d a1d a2d a3d -// a{b,c{d,e}f}g -> abg acdfg acefg -// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg -// -// Invalid sets are not expanded. -// a{2..}b -> a{2..}b -// a{b}c -> a{b}c -minimatch.braceExpand = function (pattern, options) { - return braceExpand(pattern, options) -} - -Minimatch.prototype.braceExpand = braceExpand - -function braceExpand (pattern, options) { - if (!options) { - if (this instanceof Minimatch) { - options = this.options - } else { - options = {} - } - } - - pattern = typeof pattern === 'undefined' - ? this.pattern : pattern - - if (typeof pattern === 'undefined') { - throw new Error('undefined pattern') - } - - if (options.nobrace || - !pattern.match(/\{.*\}/)) { - // shortcut. no need to expand. - return [pattern] - } - - return expand(pattern) -} - -// parse a component of the expanded set. -// At this point, no pattern may contain "/" in it -// so we're going to return a 2d array, where each entry is the full -// pattern, split on '/', and then turned into a regular expression. -// A regexp is made at the end which joins each array with an -// escaped /, and another full one which joins each regexp with |. -// -// Following the lead of Bash 4.1, note that "**" only has special meaning -// when it is the *only* thing in a path portion. Otherwise, any series -// of * is equivalent to a single *. Globstar behavior is enabled by -// default, and can be disabled by setting options.noglobstar. -Minimatch.prototype.parse = parse -var SUBPARSE = {} -function parse (pattern, isSub) { - var options = this.options - - // shortcuts - if (!options.noglobstar && pattern === '**') return GLOBSTAR - if (pattern === '') return '' - - var re = '' - var hasMagic = !!options.nocase - var escaping = false - // ? => one single character - var patternListStack = [] - var negativeLists = [] - var plType - var stateChar - var inClass = false - var reClassStart = -1 - var classStart = -1 - // . and .. never match anything that doesn't start with ., - // even when options.dot is set. - var patternStart = pattern.charAt(0) === '.' ? '' // anything - // not (start or / followed by . or .. followed by / or end) - : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' - : '(?!\\.)' - var self = this - - function clearStateChar () { - if (stateChar) { - // we had some state-tracking character - // that wasn't consumed by this pass. - switch (stateChar) { - case '*': - re += star - hasMagic = true - break - case '?': - re += qmark - hasMagic = true - break - default: - re += '\\' + stateChar - break - } - self.debug('clearStateChar %j %j', stateChar, re) - stateChar = false - } - } - - for (var i = 0, len = pattern.length, c - ; (i < len) && (c = pattern.charAt(i)) - ; i++) { - this.debug('%s\t%s %s %j', pattern, i, re, c) - - // skip over any that are escaped. - if (escaping && reSpecials[c]) { - re += '\\' + c - escaping = false - continue - } - - switch (c) { - case '/': - // completely not allowed, even escaped. - // Should already be path-split by now. - return false - - case '\\': - clearStateChar() - escaping = true - continue - - // the various stateChar values - // for the "extglob" stuff. - case '?': - case '*': - case '+': - case '@': - case '!': - this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) - - // all of those are literals inside a class, except that - // the glob [!a] means [^a] in regexp - if (inClass) { - this.debug(' in class') - if (c === '!' && i === classStart + 1) c = '^' - re += c - continue - } - - // if we already have a stateChar, then it means - // that there was something like ** or +? in there. - // Handle the stateChar, then proceed with this one. - self.debug('call clearStateChar %j', stateChar) - clearStateChar() - stateChar = c - // if extglob is disabled, then +(asdf|foo) isn't a thing. - // just clear the statechar *now*, rather than even diving into - // the patternList stuff. - if (options.noext) clearStateChar() - continue - - case '(': - if (inClass) { - re += '(' - continue - } - - if (!stateChar) { - re += '\\(' - continue - } - - plType = stateChar - patternListStack.push({ - type: plType, - start: i - 1, - reStart: re.length - }) - // negation is (?:(?!js)[^/]*) - re += stateChar === '!' ? '(?:(?!(?:' : '(?:' - this.debug('plType %j %j', stateChar, re) - stateChar = false - continue - - case ')': - if (inClass || !patternListStack.length) { - re += '\\)' - continue - } - - clearStateChar() - hasMagic = true - re += ')' - var pl = patternListStack.pop() - plType = pl.type - // negation is (?:(?!js)[^/]*) - // The others are (?:) - switch (plType) { - case '!': - negativeLists.push(pl) - re += ')[^/]*?)' - pl.reEnd = re.length - break - case '?': - case '+': - case '*': - re += plType - break - case '@': break // the default anyway - } - continue - - case '|': - if (inClass || !patternListStack.length || escaping) { - re += '\\|' - escaping = false - continue - } - - clearStateChar() - re += '|' - continue - - // these are mostly the same in regexp and glob - case '[': - // swallow any state-tracking char before the [ - clearStateChar() - - if (inClass) { - re += '\\' + c - continue - } - - inClass = true - classStart = i - reClassStart = re.length - re += c - continue - - case ']': - // a right bracket shall lose its special - // meaning and represent itself in - // a bracket expression if it occurs - // first in the list. -- POSIX.2 2.8.3.2 - if (i === classStart + 1 || !inClass) { - re += '\\' + c - escaping = false - continue - } - - // handle the case where we left a class open. - // "[z-a]" is valid, equivalent to "\[z-a\]" - if (inClass) { - // split where the last [ was, make sure we don't have - // an invalid re. if so, re-walk the contents of the - // would-be class to re-translate any characters that - // were passed through as-is - // TODO: It would probably be faster to determine this - // without a try/catch and a new RegExp, but it's tricky - // to do safely. For now, this is safe and works. - var cs = pattern.substring(classStart + 1, i) - try { - RegExp('[' + cs + ']') - } catch (er) { - // not a valid class! - var sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' - hasMagic = hasMagic || sp[1] - inClass = false - continue - } - } - - // finish up the class. - hasMagic = true - inClass = false - re += c - continue - - default: - // swallow any state char that wasn't consumed - clearStateChar() - - if (escaping) { - // no need - escaping = false - } else if (reSpecials[c] - && !(c === '^' && inClass)) { - re += '\\' - } - - re += c - - } // switch - } // for - - // handle the case where we left a class open. - // "[abc" is valid, equivalent to "\[abc" - if (inClass) { - // split where the last [ was, and escape it - // this is a huge pita. We now have to re-walk - // the contents of the would-be class to re-translate - // any characters that were passed through as-is - cs = pattern.substr(classStart + 1) - sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + '\\[' + sp[0] - hasMagic = hasMagic || sp[1] - } - - // handle the case where we had a +( thing at the *end* - // of the pattern. - // each pattern list stack adds 3 chars, and we need to go through - // and escape any | chars that were passed through as-is for the regexp. - // Go through and escape them, taking care not to double-escape any - // | chars that were already escaped. - for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { - var tail = re.slice(pl.reStart + 3) - // maybe some even number of \, then maybe 1 \, followed by a | - tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { - if (!$2) { - // the | isn't already escaped, so escape it. - $2 = '\\' - } - - // need to escape all those slashes *again*, without escaping the - // one that we need for escaping the | character. As it works out, - // escaping an even number of slashes can be done by simply repeating - // it exactly after itself. That's why this trick works. - // - // I am sorry that you have to see this. - return $1 + $1 + $2 + '|' - }) - - this.debug('tail=%j\n %s', tail, tail) - var t = pl.type === '*' ? star - : pl.type === '?' ? qmark - : '\\' + pl.type - - hasMagic = true - re = re.slice(0, pl.reStart) + t + '\\(' + tail - } - - // handle trailing things that only matter at the very end. - clearStateChar() - if (escaping) { - // trailing \\ - re += '\\\\' - } - - // only need to apply the nodot start if the re starts with - // something that could conceivably capture a dot - var addPatternStart = false - switch (re.charAt(0)) { - case '.': - case '[': - case '(': addPatternStart = true - } - - // Hack to work around lack of negative lookbehind in JS - // A pattern like: *.!(x).!(y|z) needs to ensure that a name - // like 'a.xyz.yz' doesn't match. So, the first negative - // lookahead, has to look ALL the way ahead, to the end of - // the pattern. - for (var n = negativeLists.length - 1; n > -1; n--) { - var nl = negativeLists[n] - - var nlBefore = re.slice(0, nl.reStart) - var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) - var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) - var nlAfter = re.slice(nl.reEnd) - - nlLast += nlAfter - - // Handle nested stuff like *(*.js|!(*.json)), where open parens - // mean that we should *not* include the ) in the bit that is considered - // "after" the negated section. - var openParensBefore = nlBefore.split('(').length - 1 - var cleanAfter = nlAfter - for (i = 0; i < openParensBefore; i++) { - cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') - } - nlAfter = cleanAfter - - var dollar = '' - if (nlAfter === '' && isSub !== SUBPARSE) { - dollar = '$' - } - var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast - re = newRe - } - - // if the re is not "" at this point, then we need to make sure - // it doesn't match against an empty path part. - // Otherwise a/* will match a/, which it should not. - if (re !== '' && hasMagic) { - re = '(?=.)' + re - } - - if (addPatternStart) { - re = patternStart + re - } - - // parsing just a piece of a larger pattern. - if (isSub === SUBPARSE) { - return [re, hasMagic] - } - - // skip the regexp for non-magical patterns - // unescape anything in it, though, so that it'll be - // an exact match against a file etc. - if (!hasMagic) { - return globUnescape(pattern) - } - - var flags = options.nocase ? 'i' : '' - var regExp = new RegExp('^' + re + '$', flags) - - regExp._glob = pattern - regExp._src = re - - return regExp -} - -minimatch.makeRe = function (pattern, options) { - return new Minimatch(pattern, options || {}).makeRe() -} - -Minimatch.prototype.makeRe = makeRe -function makeRe () { - if (this.regexp || this.regexp === false) return this.regexp - - // at this point, this.set is a 2d array of partial - // pattern strings, or "**". - // - // It's better to use .match(). This function shouldn't - // be used, really, but it's pretty convenient sometimes, - // when you just want to work with a regex. - var set = this.set - - if (!set.length) { - this.regexp = false - return this.regexp - } - var options = this.options - - var twoStar = options.noglobstar ? star - : options.dot ? twoStarDot - : twoStarNoDot - var flags = options.nocase ? 'i' : '' - - var re = set.map(function (pattern) { - return pattern.map(function (p) { - return (p === GLOBSTAR) ? twoStar - : (typeof p === 'string') ? regExpEscape(p) - : p._src - }).join('\\\/') - }).join('|') - - // must match entire pattern - // ending in a * or ** will make it less strict. - re = '^(?:' + re + ')$' - - // can match anything, as long as it's not this. - if (this.negate) re = '^(?!' + re + ').*$' - - try { - this.regexp = new RegExp(re, flags) - } catch (ex) { - this.regexp = false - } - return this.regexp -} - -minimatch.match = function (list, pattern, options) { - options = options || {} - var mm = new Minimatch(pattern, options) - list = list.filter(function (f) { - return mm.match(f) - }) - if (mm.options.nonull && !list.length) { - list.push(pattern) - } - return list -} - -Minimatch.prototype.match = match -function match (f, partial) { - this.debug('match', f, this.pattern) - // short-circuit in the case of busted things. - // comments, etc. - if (this.comment) return false - if (this.empty) return f === '' - - if (f === '/' && partial) return true - - var options = this.options - - // windows: need to use /, not \ - if (path.sep !== '/') { - f = f.split(path.sep).join('/') - } - - // treat the test path as a set of pathparts. - f = f.split(slashSplit) - this.debug(this.pattern, 'split', f) - - // just ONE of the pattern sets in this.set needs to match - // in order for it to be valid. If negating, then just one - // match means that we have failed. - // Either way, return on the first hit. - - var set = this.set - this.debug(this.pattern, 'set', set) - - // Find the basename of the path by looking for the last non-empty segment - var filename - var i - for (i = f.length - 1; i >= 0; i--) { - filename = f[i] - if (filename) break - } - - for (i = 0; i < set.length; i++) { - var pattern = set[i] - var file = f - if (options.matchBase && pattern.length === 1) { - file = [filename] - } - var hit = this.matchOne(file, pattern, partial) - if (hit) { - if (options.flipNegate) return true - return !this.negate - } - } - - // didn't get any hits. this is success if it's a negative - // pattern, failure otherwise. - if (options.flipNegate) return false - return this.negate -} - -// set partial to true to test if, for example, -// "/a/b" matches the start of "/*/b/*/d" -// Partial means, if you run out of file before you run -// out of pattern, then that's fine, as long as all -// the parts match. -Minimatch.prototype.matchOne = function (file, pattern, partial) { - var options = this.options - - this.debug('matchOne', - { 'this': this, file: file, pattern: pattern }) - - this.debug('matchOne', file.length, pattern.length) - - for (var fi = 0, - pi = 0, - fl = file.length, - pl = pattern.length - ; (fi < fl) && (pi < pl) - ; fi++, pi++) { - this.debug('matchOne loop') - var p = pattern[pi] - var f = file[fi] - - this.debug(pattern, p, f) - - // should be impossible. - // some invalid regexp stuff in the set. - if (p === false) return false - - if (p === GLOBSTAR) { - this.debug('GLOBSTAR', [pattern, p, f]) - - // "**" - // a/**/b/**/c would match the following: - // a/b/x/y/z/c - // a/x/y/z/b/c - // a/b/x/b/x/c - // a/b/c - // To do this, take the rest of the pattern after - // the **, and see if it would match the file remainder. - // If so, return success. - // If not, the ** "swallows" a segment, and try again. - // This is recursively awful. - // - // a/**/b/**/c matching a/b/x/y/z/c - // - a matches a - // - doublestar - // - matchOne(b/x/y/z/c, b/**/c) - // - b matches b - // - doublestar - // - matchOne(x/y/z/c, c) -> no - // - matchOne(y/z/c, c) -> no - // - matchOne(z/c, c) -> no - // - matchOne(c, c) yes, hit - var fr = fi - var pr = pi + 1 - if (pr === pl) { - this.debug('** at the end') - // a ** at the end will just swallow the rest. - // We have found a match. - // however, it will not swallow /.x, unless - // options.dot is set. - // . and .. are *never* matched by **, for explosively - // exponential reasons. - for (; fi < fl; fi++) { - if (file[fi] === '.' || file[fi] === '..' || - (!options.dot && file[fi].charAt(0) === '.')) return false - } - return true - } - - // ok, let's see if we can swallow whatever we can. - while (fr < fl) { - var swallowee = file[fr] - - this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) - - // XXX remove this slice. Just pass the start index. - if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { - this.debug('globstar found match!', fr, fl, swallowee) - // found a match. - return true - } else { - // can't swallow "." or ".." ever. - // can only swallow ".foo" when explicitly asked. - if (swallowee === '.' || swallowee === '..' || - (!options.dot && swallowee.charAt(0) === '.')) { - this.debug('dot detected!', file, fr, pattern, pr) - break - } - - // ** swallows a segment, and continue. - this.debug('globstar swallow a segment, and continue') - fr++ - } - } - - // no match was found. - // However, in partial mode, we can't say this is necessarily over. - // If there's more *pattern* left, then - if (partial) { - // ran out of file - this.debug('\n>>> no match, partial?', file, fr, pattern, pr) - if (fr === fl) return true - } - return false - } - - // something other than ** - // non-magic patterns just have to match exactly - // patterns with magic have been turned into regexps. - var hit - if (typeof p === 'string') { - if (options.nocase) { - hit = f.toLowerCase() === p.toLowerCase() - } else { - hit = f === p - } - this.debug('string match', p, f, hit) - } else { - hit = f.match(p) - this.debug('pattern match', p, f, hit) - } - - if (!hit) return false - } - - // Note: ending in / means that we'll get a final "" - // at the end of the pattern. This can only match a - // corresponding "" at the end of the file. - // If the file ends in /, then it can only match a - // a pattern that ends in /, unless the pattern just - // doesn't have any more for it. But, a/b/ should *not* - // match "a/b/*", even though "" matches against the - // [^/]*? pattern, except in partial mode, where it might - // simply not be reached yet. - // However, a/b/ should still satisfy a/* - - // now either we fell off the end of the pattern, or we're done. - if (fi === fl && pi === pl) { - // ran out of pattern and filename at the same time. - // an exact hit! - return true - } else if (fi === fl) { - // ran out of file, but still had pattern left. - // this is ok if we're doing the match as part of - // a glob fs traversal. - return partial - } else if (pi === pl) { - // ran out of pattern, still have file left. - // this is only acceptable if we're on the very last - // empty segment of a file with a trailing slash. - // a/* should match a/b/ - var emptyFileEnd = (fi === fl - 1) && (file[fi] === '') - return emptyFileEnd - } - - // should be unreachable. - throw new Error('wtf?') -} - -// replace stuff like \* with * -function globUnescape (s) { - return s.replace(/\\(.)/g, '$1') -} - -function regExpEscape (s) { - return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') -} - -},{"brace-expansion":2,"path":undefined}],2:[function(require,module,exports){ -var concatMap = require('concat-map'); -var balanced = require('balanced-match'); - -module.exports = expandTop; - -var escSlash = '\0SLASH'+Math.random()+'\0'; -var escOpen = '\0OPEN'+Math.random()+'\0'; -var escClose = '\0CLOSE'+Math.random()+'\0'; -var escComma = '\0COMMA'+Math.random()+'\0'; -var escPeriod = '\0PERIOD'+Math.random()+'\0'; - -function numeric(str) { - return parseInt(str, 10) == str - ? parseInt(str, 10) - : str.charCodeAt(0); -} - -function escapeBraces(str) { - return str.split('\\\\').join(escSlash) - .split('\\{').join(escOpen) - .split('\\}').join(escClose) - .split('\\,').join(escComma) - .split('\\.').join(escPeriod); -} - -function unescapeBraces(str) { - return str.split(escSlash).join('\\') - .split(escOpen).join('{') - .split(escClose).join('}') - .split(escComma).join(',') - .split(escPeriod).join('.'); -} - - -// Basically just str.split(","), but handling cases -// where we have nested braced sections, which should be -// treated as individual members, like {a,{b,c},d} -function parseCommaParts(str) { - if (!str) - return ['']; - - var parts = []; - var m = balanced('{', '}', str); - - if (!m) - return str.split(','); - - var pre = m.pre; - var body = m.body; - var post = m.post; - var p = pre.split(','); - - p[p.length-1] += '{' + body + '}'; - var postParts = parseCommaParts(post); - if (post.length) { - p[p.length-1] += postParts.shift(); - p.push.apply(p, postParts); - } - - parts.push.apply(parts, p); - - return parts; -} - -function expandTop(str) { - if (!str) - return []; - - var expansions = expand(escapeBraces(str)); - return expansions.filter(identity).map(unescapeBraces); -} - -function identity(e) { - return e; -} - -function embrace(str) { - return '{' + str + '}'; -} -function isPadded(el) { - return /^-?0\d/.test(el); -} - -function lte(i, y) { - return i <= y; -} -function gte(i, y) { - return i >= y; -} - -function expand(str) { - var expansions = []; - - var m = balanced('{', '}', str); - if (!m || /\$$/.test(m.pre)) return [str]; - - var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); - var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); - var isSequence = isNumericSequence || isAlphaSequence; - var isOptions = /^(.*,)+(.+)?$/.test(m.body); - if (!isSequence && !isOptions) { - // {a},b} - if (m.post.match(/,.*}/)) { - str = m.pre + '{' + m.body + escClose + m.post; - return expand(str); - } - return [str]; - } - - var n; - if (isSequence) { - n = m.body.split(/\.\./); - } else { - n = parseCommaParts(m.body); - if (n.length === 1) { - // x{{a,b}}y ==> x{a}y x{b}y - n = expand(n[0]).map(embrace); - if (n.length === 1) { - var post = m.post.length - ? expand(m.post) - : ['']; - return post.map(function(p) { - return m.pre + n[0] + p; - }); - } - } - } - - // at this point, n is the parts, and we know it's not a comma set - // with a single entry. - - // no need to expand pre, since it is guaranteed to be free of brace-sets - var pre = m.pre; - var post = m.post.length - ? expand(m.post) - : ['']; - - var N; - - if (isSequence) { - var x = numeric(n[0]); - var y = numeric(n[1]); - var width = Math.max(n[0].length, n[1].length) - var incr = n.length == 3 - ? Math.abs(numeric(n[2])) - : 1; - var test = lte; - var reverse = y < x; - if (reverse) { - incr *= -1; - test = gte; - } - var pad = n.some(isPadded); - - N = []; - - for (var i = x; test(i, y); i += incr) { - var c; - if (isAlphaSequence) { - c = String.fromCharCode(i); - if (c === '\\') - c = ''; - } else { - c = String(i); - if (pad) { - var need = width - c.length; - if (need > 0) { - var z = new Array(need + 1).join('0'); - if (i < 0) - c = '-' + z + c.slice(1); - else - c = z + c; - } - } - } - N.push(c); - } - } else { - N = concatMap(n, function(el) { return expand(el) }); - } - - for (var j = 0; j < N.length; j++) { - for (var k = 0; k < post.length; k++) { - expansions.push([pre, N[j], post[k]].join('')) - } - } - - return expansions; -} - - -},{"balanced-match":3,"concat-map":4}],3:[function(require,module,exports){ -module.exports = balanced; -function balanced(a, b, str) { - var bal = 0; - var m = {}; - var ended = false; - - for (var i = 0; i < str.length; i++) { - if (a == str.substr(i, a.length)) { - if (!('start' in m)) m.start = i; - bal++; - } - else if (b == str.substr(i, b.length) && 'start' in m) { - ended = true; - bal--; - if (!bal) { - m.end = i; - m.pre = str.substr(0, m.start); - m.body = (m.end - m.start > 1) - ? str.substring(m.start + a.length, m.end) - : ''; - m.post = str.slice(m.end + b.length); - return m; - } - } - } - - // if we opened more than we closed, find the one we closed - if (bal && ended) { - var start = m.start + a.length; - m = balanced(a, b, str.substr(start)); - if (m) { - m.start += start; - m.end += start; - m.pre = str.slice(0, start) + m.pre; - } - return m; - } -} - -},{}],4:[function(require,module,exports){ -module.exports = function (xs, fn) { - var res = []; - for (var i = 0; i < xs.length; i++) { - var x = fn(xs[i], i); - if (Array.isArray(x)) res.push.apply(res, x); - else res.push(x); - } - return res; -}; - -},{}]},{},[1])(1) -}); \ No newline at end of file diff --git a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/.npmignore b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/.npmignore index 249bc20eb557..353546af2368 100644 --- a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/.npmignore +++ b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/.npmignore @@ -1,2 +1,3 @@ -node_modules -*.sw* +test +.gitignore +.travis.yml diff --git a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/.travis.yml b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/.travis.yml deleted file mode 100644 index 6e5919de39a3..000000000000 --- a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - "0.10" diff --git a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/README.md b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/README.md index 62bc7bae3fed..179392978d30 100644 --- a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/README.md +++ b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/README.md @@ -4,6 +4,7 @@ as known from sh/bash, in JavaScript. [![build status](https://secure.travis-ci.org/juliangruber/brace-expansion.svg)](http://travis-ci.org/juliangruber/brace-expansion) +[![downloads](https://img.shields.io/npm/dm/brace-expansion.svg)](https://www.npmjs.org/package/brace-expansion) [![testling badge](https://ci.testling.com/juliangruber/brace-expansion.png)](https://ci.testling.com/juliangruber/brace-expansion) diff --git a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml index cc4dba29d959..6e5919de39a3 100644 --- a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +++ b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml @@ -1,4 +1,3 @@ language: node_js node_js: - - "0.8" - "0.10" diff --git a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md new file mode 100644 index 000000000000..2cdc8e4148cc --- /dev/null +++ b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md @@ -0,0 +1,21 @@ +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +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/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json index ede6efefa078..898644e114cc 100644 --- a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json +++ b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json @@ -1,7 +1,7 @@ { "name": "balanced-match", "description": "Match balanced character pairs, like \"{\" and \"}\"", - "version": "0.2.0", + "version": "0.2.1", "repository": { "type": "git", "url": "git://github.com/juliangruber/balanced-match.git" @@ -44,30 +44,29 @@ "android-browser/4.2..latest" ] }, - "gitHead": "ba40ed78e7114a4a67c51da768a100184dead39c", + "gitHead": "d743dd31d7376e0fcf99392a4be7227f2e99bf5d", "bugs": { "url": "https://github.com/juliangruber/balanced-match/issues" }, - "_id": "balanced-match@0.2.0", - "_shasum": "38f6730c03aab6d5edbb52bd934885e756d71674", + "_id": "balanced-match@0.2.1", + "_shasum": "7bc658b4bed61eee424ad74f75f5c3e2c4df3cc7", "_from": "balanced-match@>=0.2.0 <0.3.0", - "_npmVersion": "2.1.8", - "_nodeVersion": "0.10.32", + "_npmVersion": "2.14.7", + "_nodeVersion": "4.2.1", "_npmUser": { "name": "juliangruber", "email": "julian@juliangruber.com" }, + "dist": { + "shasum": "7bc658b4bed61eee424ad74f75f5c3e2c4df3cc7", + "tarball": "http://registry.npmjs.org/balanced-match/-/balanced-match-0.2.1.tgz" + }, "maintainers": [ { "name": "juliangruber", "email": "julian@juliangruber.com" } ], - "dist": { - "shasum": "38f6730c03aab6d5edbb52bd934885e756d71674", - "tarball": "http://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz" - }, "directories": {}, - "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz", - "readme": "ERROR: No README data found!" + "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.1.tgz" } diff --git a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json index 2f1bd3d5d241..b516138098fb 100644 --- a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json +++ b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json @@ -63,7 +63,7 @@ "_id": "concat-map@0.0.1", "dist": { "shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b", - "tarball": "https://registrytwo.npmjs.com/concat-map/-/concat-map-0.0.1.tgz" + "tarball": "http://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" }, "_from": "concat-map@0.0.1", "_npmVersion": "1.3.21", @@ -78,6 +78,6 @@ } ], "_shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b", - "_resolved": "https://registrytwo.npmjs.com/concat-map/-/concat-map-0.0.1.tgz", + "_resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "readme": "ERROR: No README data found!" } diff --git a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/package.json b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/package.json index 5f1866c8b5a2..4cb3e05d7ceb 100644 --- a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/package.json +++ b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/package.json @@ -1,7 +1,7 @@ { "name": "brace-expansion", "description": "Brace expansion as known from sh/bash", - "version": "1.1.0", + "version": "1.1.1", "repository": { "type": "git", "url": "git://github.com/juliangruber/brace-expansion.git" @@ -42,15 +42,15 @@ "android-browser/4.2..latest" ] }, - "gitHead": "b5fa3b1c74e5e2dba2d0efa19b28335641bc1164", + "gitHead": "f50da498166d76ea570cf3b30179f01f0f119612", "bugs": { "url": "https://github.com/juliangruber/brace-expansion/issues" }, - "_id": "brace-expansion@1.1.0", - "_shasum": "c9b7d03c03f37bc704be100e522b40db8f6cfcd9", + "_id": "brace-expansion@1.1.1", + "_shasum": "da5fb78aef4c44c9e4acf525064fb3208ebab045", "_from": "brace-expansion@>=1.0.0 <2.0.0", - "_npmVersion": "2.1.10", - "_nodeVersion": "0.10.32", + "_npmVersion": "2.6.1", + "_nodeVersion": "0.10.36", "_npmUser": { "name": "juliangruber", "email": "julian@juliangruber.com" @@ -66,10 +66,10 @@ } ], "dist": { - "shasum": "c9b7d03c03f37bc704be100e522b40db8f6cfcd9", - "tarball": "http://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz" + "shasum": "da5fb78aef4c44c9e4acf525064fb3208ebab045", + "tarball": "http://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.1.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", + "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.1.tgz", "readme": "ERROR: No README data found!" } diff --git a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js deleted file mode 100644 index 5fe2b8ad48cc..000000000000 --- a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js +++ /dev/null @@ -1,32 +0,0 @@ -var test = require('tape'); -var expand = require('..'); -var fs = require('fs'); -var resfile = __dirname + '/bash-results.txt'; -var cases = fs.readFileSync(resfile, 'utf8').split('><><><><'); - -// throw away the EOF marker -cases.pop() - -test('matches bash expansions', function(t) { - cases.forEach(function(testcase) { - var set = testcase.split('\n'); - var pattern = set.shift(); - var actual = expand(pattern); - - // If it expands to the empty string, then it's actually - // just nothing, but Bash is a singly typed language, so - // "nothing" is the same as "". - if (set.length === 1 && set[0] === '') { - set = [] - } else { - // otherwise, strip off the [] that were added so that - // "" expansions would be preserved properly. - set = set.map(function (s) { - return s.replace(/^\[|\]$/g, '') - }) - } - - t.same(actual, set, pattern); - }); - t.end(); -}) diff --git a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt deleted file mode 100644 index 958148d26aac..000000000000 --- a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt +++ /dev/null @@ -1,1075 +0,0 @@ -A{b,{d,e},{f,g}}Z -[AbZ] -[AdZ] -[AeZ] -[AfZ] -[AgZ]><><><><><><><\{a,b}{{a,b},a,b} -[{a,b}a] -[{a,b}b] -[{a,b}a] -[{a,b}b]><><><><{{a,b} -[{a] -[{b]><><><><{a,b}} -[a}] -[b}]><><><><{,} -><><><><><><><{,}b -[b] -[b]><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><{-01..5} -[-01] -[000] -[001] -[002] -[003] -[004] -[005]><><><><{-05..100..5} -[-05] -[000] -[005] -[010] -[015] -[020] -[025] -[030] -[035] -[040] -[045] -[050] -[055] -[060] -[065] -[070] -[075] -[080] -[085] -[090] -[095] -[100]><><><><{-05..100} -[-05] -[-04] -[-03] -[-02] -[-01] -[000] -[001] -[002] -[003] -[004] -[005] -[006] -[007] -[008] -[009] -[010] -[011] -[012] -[013] -[014] -[015] -[016] -[017] -[018] -[019] -[020] -[021] -[022] -[023] -[024] -[025] -[026] -[027] -[028] -[029] -[030] -[031] -[032] -[033] -[034] -[035] -[036] -[037] -[038] -[039] -[040] -[041] -[042] -[043] -[044] -[045] -[046] -[047] -[048] -[049] -[050] -[051] -[052] -[053] -[054] -[055] -[056] -[057] -[058] -[059] -[060] -[061] -[062] -[063] -[064] -[065] -[066] -[067] -[068] -[069] -[070] -[071] -[072] -[073] -[074] -[075] -[076] -[077] -[078] -[079] -[080] -[081] -[082] -[083] -[084] -[085] -[086] -[087] -[088] -[089] -[090] -[091] -[092] -[093] -[094] -[095] -[096] -[097] -[098] -[099] -[100]><><><><{0..5..2} -[0] -[2] -[4]><><><><{0001..05..2} -[0001] -[0003] -[0005]><><><><{0001..-5..2} -[0001] -[-001] -[-003] -[-005]><><><><{0001..-5..-2} -[0001] -[-001] -[-003] -[-005]><><><><{0001..5..-2} -[0001] -[0003] -[0005]><><><><{01..5} -[01] -[02] -[03] -[04] -[05]><><><><{1..05} -[01] -[02] -[03] -[04] -[05]><><><><{1..05..3} -[01] -[04]><><><><{05..100} -[005] -[006] -[007] -[008] -[009] -[010] -[011] -[012] -[013] -[014] -[015] -[016] -[017] -[018] -[019] -[020] -[021] -[022] -[023] -[024] -[025] -[026] -[027] -[028] -[029] -[030] -[031] -[032] -[033] -[034] -[035] -[036] -[037] -[038] -[039] -[040] -[041] -[042] -[043] -[044] -[045] -[046] -[047] -[048] -[049] -[050] -[051] -[052] -[053] -[054] -[055] -[056] -[057] -[058] -[059] -[060] -[061] -[062] -[063] -[064] -[065] -[066] -[067] -[068] -[069] -[070] -[071] -[072] -[073] -[074] -[075] -[076] -[077] -[078] -[079] -[080] -[081] -[082] -[083] -[084] -[085] -[086] -[087] -[088] -[089] -[090] -[091] -[092] -[093] -[094] -[095] -[096] -[097] -[098] -[099] -[100]><><><><{0a..0z} -[{0a..0z}]><><><><{a,b\}c,d} -[a] -[b}c] -[d]><><><><{a,b{c,d} -[{a,bc] -[{a,bd]><><><><{a,b}c,d} -[ac,d}] -[bc,d}]><><><><{a..F} -[a] -[`] -[_] -[^] -[]] -[] -[[] -[Z] -[Y] -[X] -[W] -[V] -[U] -[T] -[S] -[R] -[Q] -[P] -[O] -[N] -[M] -[L] -[K] -[J] -[I] -[H] -[G] -[F]><><><><{A..f} -[A] -[B] -[C] -[D] -[E] -[F] -[G] -[H] -[I] -[J] -[K] -[L] -[M] -[N] -[O] -[P] -[Q] -[R] -[S] -[T] -[U] -[V] -[W] -[X] -[Y] -[Z] -[[] -[] -[]] -[^] -[_] -[`] -[a] -[b] -[c] -[d] -[e] -[f]><><><><{a..Z} -[a] -[`] -[_] -[^] -[]] -[] -[[] -[Z]><><><><{A..z} -[A] -[B] -[C] -[D] -[E] -[F] -[G] -[H] -[I] -[J] -[K] -[L] -[M] -[N] -[O] -[P] -[Q] -[R] -[S] -[T] -[U] -[V] -[W] -[X] -[Y] -[Z] -[[] -[] -[]] -[^] -[_] -[`] -[a] -[b] -[c] -[d] -[e] -[f] -[g] -[h] -[i] -[j] -[k] -[l] -[m] -[n] -[o] -[p] -[q] -[r] -[s] -[t] -[u] -[v] -[w] -[x] -[y] -[z]><><><><{z..A} -[z] -[y] -[x] -[w] -[v] -[u] -[t] -[s] -[r] -[q] -[p] -[o] -[n] -[m] -[l] -[k] -[j] -[i] -[h] -[g] -[f] -[e] -[d] -[c] -[b] -[a] -[`] -[_] -[^] -[]] -[] -[[] -[Z] -[Y] -[X] -[W] -[V] -[U] -[T] -[S] -[R] -[Q] -[P] -[O] -[N] -[M] -[L] -[K] -[J] -[I] -[H] -[G] -[F] -[E] -[D] -[C] -[B] -[A]><><><><{Z..a} -[Z] -[[] -[] -[]] -[^] -[_] -[`] -[a]><><><><{a..F..2} -[a] -[_] -[]] -[[] -[Y] -[W] -[U] -[S] -[Q] -[O] -[M] -[K] -[I] -[G]><><><><{A..f..02} -[A] -[C] -[E] -[G] -[I] -[K] -[M] -[O] -[Q] -[S] -[U] -[W] -[Y] -[[] -[]] -[_] -[a] -[c] -[e]><><><><{a..Z..5} -[a] -[]><><><><><><><{A..z..10} -[A] -[K] -[U] -[_] -[i] -[s]><><><><{z..A..-2} -[z] -[x] -[v] -[t] -[r] -[p] -[n] -[l] -[j] -[h] -[f] -[d] -[b] -[`] -[^] -[] -[Z] -[X] -[V] -[T] -[R] -[P] -[N] -[L] -[J] -[H] -[F] -[D] -[B]><><><><{Z..a..20} -[Z]><><><><{a{,b} -[{a] -[{ab]><><><><{a},b} -[a}] -[b]><><><><{x,y{,}g} -[x] -[yg] -[yg]><><><><{x,y{}g} -[x] -[y{}g]><><><><{{a,b} -[{a] -[{b]><><><><{{a,b},c} -[a] -[b] -[c]><><><><{{a,b}c} -[{ac}] -[{bc}]><><><><{{a,b},} -[a] -[b]><><><><><><><{{a,b},}c -[ac] -[bc] -[c]><><><><{{a,b}.} -[{a.}] -[{b.}]><><><><{{a,b}} -[{a}] -[{b}]><><><><><><>< -><><><><{-10..00} -[-10] -[-09] -[-08] -[-07] -[-06] -[-05] -[-04] -[-03] -[-02] -[-01] -[000]><><><><{a,\\{a,b}c} -[a] -[\ac] -[\bc]><><><><{a,\{a,b}c} -[ac}] -[{ac}] -[bc}]><><><><><><><{-10.\.00} -[{-10..00}]><><><><><><><><><><{l,n,m}xyz -[lxyz] -[nxyz] -[mxyz]><><><><{abc\,def} -[{abc,def}]><><><><{abc} -[{abc}]><><><><{x\,y,\{abc\},trie} -[x,y] -[{abc}] -[trie]><><><><{} -[{}]><><><><} -[}]><><><><{ -[{]><><><><><><><{1..10} -[1] -[2] -[3] -[4] -[5] -[6] -[7] -[8] -[9] -[10]><><><><{0..10,braces} -[0..10] -[braces]><><><><{{0..10},braces} -[0] -[1] -[2] -[3] -[4] -[5] -[6] -[7] -[8] -[9] -[10] -[braces]><><><><><><><{3..3} -[3]><><><><><><><{10..1} -[10] -[9] -[8] -[7] -[6] -[5] -[4] -[3] -[2] -[1]><><><><{10..1}y -[10y] -[9y] -[8y] -[7y] -[6y] -[5y] -[4y] -[3y] -[2y] -[1y]><><><><><><><{a..f} -[a] -[b] -[c] -[d] -[e] -[f]><><><><{f..a} -[f] -[e] -[d] -[c] -[b] -[a]><><><><{a..A} -[a] -[`] -[_] -[^] -[]] -[] -[[] -[Z] -[Y] -[X] -[W] -[V] -[U] -[T] -[S] -[R] -[Q] -[P] -[O] -[N] -[M] -[L] -[K] -[J] -[I] -[H] -[G] -[F] -[E] -[D] -[C] -[B] -[A]><><><><{A..a} -[A] -[B] -[C] -[D] -[E] -[F] -[G] -[H] -[I] -[J] -[K] -[L] -[M] -[N] -[O] -[P] -[Q] -[R] -[S] -[T] -[U] -[V] -[W] -[X] -[Y] -[Z] -[[] -[] -[]] -[^] -[_] -[`] -[a]><><><><{f..f} -[f]><><><><{1..f} -[{1..f}]><><><><{f..1} -[{f..1}]><><><><{-1..-10} -[-1] -[-2] -[-3] -[-4] -[-5] -[-6] -[-7] -[-8] -[-9] -[-10]><><><><{-20..0} -[-20] -[-19] -[-18] -[-17] -[-16] -[-15] -[-14] -[-13] -[-12] -[-11] -[-10] -[-9] -[-8] -[-7] -[-6] -[-5] -[-4] -[-3] -[-2] -[-1] -[0]><><><><><><><><><><{klklkl}{1,2,3} -[{klklkl}1] -[{klklkl}2] -[{klklkl}3]><><><><{1..10..2} -[1] -[3] -[5] -[7] -[9]><><><><{-1..-10..2} -[-1] -[-3] -[-5] -[-7] -[-9]><><><><{-1..-10..-2} -[-1] -[-3] -[-5] -[-7] -[-9]><><><><{10..1..-2} -[10] -[8] -[6] -[4] -[2]><><><><{10..1..2} -[10] -[8] -[6] -[4] -[2]><><><><{1..20..2} -[1] -[3] -[5] -[7] -[9] -[11] -[13] -[15] -[17] -[19]><><><><{1..20..20} -[1]><><><><{100..0..5} -[100] -[95] -[90] -[85] -[80] -[75] -[70] -[65] -[60] -[55] -[50] -[45] -[40] -[35] -[30] -[25] -[20] -[15] -[10] -[5] -[0]><><><><{100..0..-5} -[100] -[95] -[90] -[85] -[80] -[75] -[70] -[65] -[60] -[55] -[50] -[45] -[40] -[35] -[30] -[25] -[20] -[15] -[10] -[5] -[0]><><><><{a..z} -[a] -[b] -[c] -[d] -[e] -[f] -[g] -[h] -[i] -[j] -[k] -[l] -[m] -[n] -[o] -[p] -[q] -[r] -[s] -[t] -[u] -[v] -[w] -[x] -[y] -[z]><><><><{a..z..2} -[a] -[c] -[e] -[g] -[i] -[k] -[m] -[o] -[q] -[s] -[u] -[w] -[y]><><><><{z..a..-2} -[z] -[x] -[v] -[t] -[r] -[p] -[n] -[l] -[j] -[h] -[f] -[d] -[b]><><><><{2147483645..2147483649} -[2147483645] -[2147483646] -[2147483647] -[2147483648] -[2147483649]><><><><{10..0..2} -[10] -[8] -[6] -[4] -[2] -[0]><><><><{10..0..-2} -[10] -[8] -[6] -[4] -[2] -[0]><><><><{-50..-0..5} -[-50] -[-45] -[-40] -[-35] -[-30] -[-25] -[-20] -[-15] -[-10] -[-5] -[0]><><><><{1..10.f} -[{1..10.f}]><><><><{1..ff} -[{1..ff}]><><><><{1..10..ff} -[{1..10..ff}]><><><><{1.20..2} -[{1.20..2}]><><><><{1..20..f2} -[{1..20..f2}]><><><><{1..20..2f} -[{1..20..2f}]><><><><{1..2f..2} -[{1..2f..2}]><><><><{1..ff..2} -[{1..ff..2}]><><><><{1..ff} -[{1..ff}]><><><><{1..f} -[{1..f}]><><><><{1..0f} -[{1..0f}]><><><><{1..10f} -[{1..10f}]><><><><{1..10.f} -[{1..10.f}]><><><><{1..10.f} -[{1..10.f}]><><><>< \ No newline at end of file diff --git a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt deleted file mode 100644 index e5161c3da869..000000000000 --- a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt +++ /dev/null @@ -1,182 +0,0 @@ -# skip quotes for now -# "{x,x}" -# {"x,x"} -# {x","x} -# '{a,b}{{a,b},a,b}' -A{b,{d,e},{f,g}}Z -PRE-{a,b}{{a,b},a,b}-POST -\\{a,b}{{a,b},a,b} -{{a,b} -{a,b}} -{,} -a{,} -{,}b -a{,}b -a{b}c -a{1..5}b -a{01..5}b -a{-01..5}b -a{-01..5..3}b -a{001..9}b -a{b,c{d,e},{f,g}h}x{y,z -a{b,c{d,e},{f,g}h}x{y,z\\} -a{b,c{d,e},{f,g}h}x{y,z} -a{b{c{d,e}f{x,y{{g}h -a{b{c{d,e}f{x,y{}g}h -a{b{c{d,e}f{x,y}}g}h -a{b{c{d,e}f}g}h -a{{x,y},z}b -f{x,y{g,z}}h -f{x,y{{g,z}}h -f{x,y{{g,z}}h} -f{x,y{{g}h -f{x,y{{g}}h -f{x,y{}g}h -z{a,b{,c}d -z{a,b},c}d -{-01..5} -{-05..100..5} -{-05..100} -{0..5..2} -{0001..05..2} -{0001..-5..2} -{0001..-5..-2} -{0001..5..-2} -{01..5} -{1..05} -{1..05..3} -{05..100} -{0a..0z} -{a,b\\}c,d} -{a,b{c,d} -{a,b}c,d} -{a..F} -{A..f} -{a..Z} -{A..z} -{z..A} -{Z..a} -{a..F..2} -{A..f..02} -{a..Z..5} -d{a..Z..5}b -{A..z..10} -{z..A..-2} -{Z..a..20} -{a{,b} -{a},b} -{x,y{,}g} -{x,y{}g} -{{a,b} -{{a,b},c} -{{a,b}c} -{{a,b},} -X{{a,b},}X -{{a,b},}c -{{a,b}.} -{{a,b}} -X{a..#}X -# this next one is an empty string - -{-10..00} -# Need to escape slashes in here for reasons i guess. -{a,\\\\{a,b}c} -{a,\\{a,b}c} -a,\\{b,c} -{-10.\\.00} -#### bash tests/braces.tests -# Note that some tests are edited out because some features of -# bash are intentionally not supported in this brace expander. -ff{c,b,a} -f{d,e,f}g -{l,n,m}xyz -{abc\\,def} -{abc} -{x\\,y,\\{abc\\},trie} -# not impementing back-ticks obviously -# XXXX\\{`echo a b c | tr ' ' ','`\\} -{} -# We only ever have to worry about parsing a single argument, -# not a command line, so spaces have a different meaning than bash. -# { } -} -{ -abcd{efgh -# spaces -# foo {1,2} bar -# not impementing back-ticks obviously -# `zecho foo {1,2} bar` -# $(zecho foo {1,2} bar) -# ${var} is not a variable here, like it is in bash. omit. -# foo{bar,${var}.} -# foo{bar,${var}} -# isaacs: skip quotes for now -# "${var}"{x,y} -# $var{x,y} -# ${var}{x,y} -# new sequence brace operators -{1..10} -# this doesn't work yet -{0..10,braces} -# but this does -{{0..10},braces} -x{{0..10},braces}y -{3..3} -x{3..3}y -{10..1} -{10..1}y -x{10..1}y -{a..f} -{f..a} -{a..A} -{A..a} -{f..f} -# mixes are incorrectly-formed brace expansions -{1..f} -{f..1} -# spaces -# 0{1..9} {10..20} -# do negative numbers work? -{-1..-10} -{-20..0} -# weirdly-formed brace expansions -- fixed in post-bash-3.1 -a-{b{d,e}}-c -a-{bdef-{g,i}-c -# isaacs: skip quotes for now -# {"klklkl"}{1,2,3} -# isaacs: this is a valid test, though -{klklkl}{1,2,3} -# {"x,x"} -{1..10..2} -{-1..-10..2} -{-1..-10..-2} -{10..1..-2} -{10..1..2} -{1..20..2} -{1..20..20} -{100..0..5} -{100..0..-5} -{a..z} -{a..z..2} -{z..a..-2} -# make sure brace expansion handles ints > 2**31 - 1 using intmax_t -{2147483645..2147483649} -# unwanted zero-padding -- fixed post-bash-4.0 -{10..0..2} -{10..0..-2} -{-50..-0..5} -# bad -{1..10.f} -{1..ff} -{1..10..ff} -{1.20..2} -{1..20..f2} -{1..20..2f} -{1..2f..2} -{1..ff..2} -{1..ff} -{1..f} -{1..0f} -{1..10f} -{1..10.f} -{1..10.f} diff --git a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js deleted file mode 100644 index 3fcc185a7d6d..000000000000 --- a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js +++ /dev/null @@ -1,9 +0,0 @@ -var test = require('tape'); -var expand = require('..'); - -test('ignores ${', function(t) { - t.deepEqual(expand('${1..3}'), ['${1..3}']); - t.deepEqual(expand('${a,b}${c,d}'), ['${a,b}${c,d}']); - t.deepEqual(expand('x${a,b}x${c,d}x'), ['x${a,b}x${c,d}x']); - t.end(); -}); diff --git a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js deleted file mode 100644 index e429121eab80..000000000000 --- a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js +++ /dev/null @@ -1,10 +0,0 @@ -var test = require('tape'); -var expand = require('..'); - -test('empty option', function(t) { - t.deepEqual(expand('-v{,,,,}'), [ - '-v', '-v', '-v', '-v', '-v' - ]); - t.end(); -}); - diff --git a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh deleted file mode 100644 index e040e664d9f8..000000000000 --- a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bash - -set -e - -# Bash 4.3 because of arbitrary need to pick a single standard. - -if [ "${BASH_VERSINFO[0]}" != "4" ] || [ "${BASH_VERSINFO[1]}" != "3" ]; then - echo "this script requires bash 4.3" >&2 - exit 1 -fi - -CDPATH= cd "$(dirname "$0")" - -js='require("./")(process.argv[1]).join(" ")' - -cat cases.txt | \ - while read case; do - if [ "${case:0:1}" = "#" ]; then - continue; - fi; - b="$($BASH -c 'for c in '"$case"'; do echo ["$c"]; done')" - echo "$case" - echo -n "$b><><><><"; - done > bash-results.txt diff --git a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js deleted file mode 100644 index 8d434c23d451..000000000000 --- a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js +++ /dev/null @@ -1,15 +0,0 @@ -var test = require('tape'); -var expand = require('..'); - -test('negative increment', function(t) { - t.deepEqual(expand('{3..1}'), ['3', '2', '1']); - t.deepEqual(expand('{10..8}'), ['10', '9', '8']); - t.deepEqual(expand('{10..08}'), ['10', '09', '08']); - t.deepEqual(expand('{c..a}'), ['c', 'b', 'a']); - - t.deepEqual(expand('{4..0..2}'), ['4', '2', '0']); - t.deepEqual(expand('{4..0..-2}'), ['4', '2', '0']); - t.deepEqual(expand('{e..a..2}'), ['e', 'c', 'a']); - - t.end(); -}); diff --git a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/nested.js b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/nested.js deleted file mode 100644 index 0862dc51f90a..000000000000 --- a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/nested.js +++ /dev/null @@ -1,16 +0,0 @@ -var test = require('tape'); -var expand = require('..'); - -test('nested', function(t) { - t.deepEqual(expand('{a,b{1..3},c}'), [ - 'a', 'b1', 'b2', 'b3', 'c' - ]); - t.deepEqual(expand('{{A..Z},{a..z}}'), - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('') - ); - t.deepEqual(expand('ppp{,config,oe{,conf}}'), [ - 'ppp', 'pppconfig', 'pppoe', 'pppoeconf' - ]); - t.end(); -}); - diff --git a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/order.js b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/order.js deleted file mode 100644 index c00ad155fe67..000000000000 --- a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/order.js +++ /dev/null @@ -1,10 +0,0 @@ -var test = require('tape'); -var expand = require('..'); - -test('order', function(t) { - t.deepEqual(expand('a{d,c,b}e'), [ - 'ade', 'ace', 'abe' - ]); - t.end(); -}); - diff --git a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/pad.js b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/pad.js deleted file mode 100644 index e4158775f1bd..000000000000 --- a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/pad.js +++ /dev/null @@ -1,13 +0,0 @@ -var test = require('tape'); -var expand = require('..'); - -test('pad', function(t) { - t.deepEqual(expand('{9..11}'), [ - '9', '10', '11' - ]); - t.deepEqual(expand('{09..11}'), [ - '09', '10', '11' - ]); - t.end(); -}); - diff --git a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js deleted file mode 100644 index 3038fba7416b..000000000000 --- a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js +++ /dev/null @@ -1,7 +0,0 @@ -var test = require('tape'); -var expand = require('..'); - -test('x and y of same type', function(t) { - t.deepEqual(expand('{a..9}'), ['{a..9}']); - t.end(); -}); diff --git a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js b/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js deleted file mode 100644 index f73a9579ab39..000000000000 --- a/deps/npm/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js +++ /dev/null @@ -1,50 +0,0 @@ -var test = require('tape'); -var expand = require('..'); - -test('numeric sequences', function(t) { - t.deepEqual(expand('a{1..2}b{2..3}c'), [ - 'a1b2c', 'a1b3c', 'a2b2c', 'a2b3c' - ]); - t.deepEqual(expand('{1..2}{2..3}'), [ - '12', '13', '22', '23' - ]); - t.end(); -}); - -test('numeric sequences with step count', function(t) { - t.deepEqual(expand('{0..8..2}'), [ - '0', '2', '4', '6', '8' - ]); - t.deepEqual(expand('{1..8..2}'), [ - '1', '3', '5', '7' - ]); - t.end(); -}); - -test('numeric sequence with negative x / y', function(t) { - t.deepEqual(expand('{3..-2}'), [ - '3', '2', '1', '0', '-1', '-2' - ]); - t.end(); -}); - -test('alphabetic sequences', function(t) { - t.deepEqual(expand('1{a..b}2{b..c}3'), [ - '1a2b3', '1a2c3', '1b2b3', '1b2c3' - ]); - t.deepEqual(expand('{a..b}{b..c}'), [ - 'ab', 'ac', 'bb', 'bc' - ]); - t.end(); -}); - -test('alphabetic sequences with step count', function(t) { - t.deepEqual(expand('{a..k..2}'), [ - 'a', 'c', 'e', 'g', 'i', 'k' - ]); - t.deepEqual(expand('{b..k..2}'), [ - 'b', 'd', 'f', 'h', 'j' - ]); - t.end(); -}); - diff --git a/deps/npm/node_modules/minimatch/package.json b/deps/npm/node_modules/minimatch/package.json index c7c9a089ceb4..66755da6ef12 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": "2.0.10", + "version": "3.0.0", "repository": { "type": "git", "url": "git://github.com/isaacs/minimatch.git" @@ -14,8 +14,7 @@ "main": "minimatch.js", "scripts": { "posttest": "standard minimatch.js test/*.js", - "test": "tap test/*.js", - "prepublish": "browserify -o browser.js -e minimatch.js -s minimatch --bare" + "test": "tap test/*.js" }, "engines": { "node": "*" @@ -24,32 +23,30 @@ "brace-expansion": "^1.0.0" }, "devDependencies": { - "browserify": "^9.0.3", "standard": "^3.7.2", "tap": "^1.2.0" }, "license": "ISC", "files": [ - "minimatch.js", - "browser.js" + "minimatch.js" ], - "gitHead": "6afb85f0c324b321f76a38df81891e562693e257", + "gitHead": "270dbea567f0af6918cb18103e98c612aa717a20", "bugs": { "url": "https://github.com/isaacs/minimatch/issues" }, "homepage": "https://github.com/isaacs/minimatch#readme", - "_id": "minimatch@2.0.10", - "_shasum": "8d087c39c6b38c001b97fca7ce6d0e1e80afbac7", - "_from": "minimatch@2.0.10", - "_npmVersion": "3.1.0", - "_nodeVersion": "2.2.1", + "_id": "minimatch@3.0.0", + "_shasum": "5236157a51e4f004c177fb3c527ff7dd78f0ef83", + "_from": "minimatch@>=3.0.0 <3.1.0", + "_npmVersion": "3.3.2", + "_nodeVersion": "4.0.0", "_npmUser": { "name": "isaacs", "email": "isaacs@npmjs.com" }, "dist": { - "shasum": "8d087c39c6b38c001b97fca7ce6d0e1e80afbac7", - "tarball": "http://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz" + "shasum": "5236157a51e4f004c177fb3c527ff7dd78f0ef83", + "tarball": "http://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz" }, "maintainers": [ { @@ -58,5 +55,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz" + "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/deps/npm/node_modules/node-gyp/.npmignore b/deps/npm/node_modules/node-gyp/.npmignore index b0b49bd62b64..674849201423 100644 --- a/deps/npm/node_modules/node-gyp/.npmignore +++ b/deps/npm/node_modules/node-gyp/.npmignore @@ -1 +1,3 @@ gyp/test +node_modules +test/.node-gyp diff --git a/deps/npm/node_modules/node-gyp/CHANGELOG.md b/deps/npm/node_modules/node-gyp/CHANGELOG.md new file mode 100644 index 000000000000..4c8cc3678144 --- /dev/null +++ b/deps/npm/node_modules/node-gyp/CHANGELOG.md @@ -0,0 +1,24 @@ +v3.0.3 2015-09-14 + +* [[`ad827cda30`](https://github.com/nodejs/node-gyp/commit/ad827cda30)] - tarballUrl global and && when checking for iojs (Lars-Magnus Skog) [#729](https://github.com/nodejs/node-gyp/pull/729) + +v3.0.2 2015-09-12 + +* [[`6e8c3bf3c6`](https://github.com/nodejs/node-gyp/commit/6e8c3bf3c6)] - add back support for passing additional cmdline args (Rod Vagg) [#723](https://github.com/nodejs/node-gyp/pull/723) +* [[`ff82f2f3b9`](https://github.com/nodejs/node-gyp/commit/ff82f2f3b9)] - fixed broken link in docs to Visual Studio 2013 download (simon-p-r) [#722](https://github.com/nodejs/node-gyp/pull/722) + +v3.0.1 2015-09-08 + +* [[`846337e36b`](https://github.com/nodejs/node-gyp/commit/846337e36b)] - normalise versions for target == this comparison (Rod Vagg) [#716](https://github.com/nodejs/node-gyp/pull/716) + +v3.0.0 2015-09-08 + +* [[`9720d0373c`](https://github.com/nodejs/node-gyp/commit/9720d0373c)] - remove node_modules from tree (Rod Vagg) [#711](https://github.com/nodejs/node-gyp/pull/711) +* [[`6dcf220db7`](https://github.com/nodejs/node-gyp/commit/6dcf220db7)] - test version major directly, don't use semver.satisfies() (Rod Vagg) [#711](https://github.com/nodejs/node-gyp/pull/711) +* [[`938dd18d1c`](https://github.com/nodejs/node-gyp/commit/938dd18d1c)] - refactor for clarity, fix dist-url, add env var dist-url functionality (Rod Vagg) [#711](https://github.com/nodejs/node-gyp/pull/711) +* [[`9e9df66a06`](https://github.com/nodejs/node-gyp/commit/9e9df66a06)] - use process.release, make aware of io.js & node v4 differences (Rod Vagg) [#711](https://github.com/nodejs/node-gyp/pull/711) +* [[`1ea7ed01f4`](https://github.com/nodejs/node-gyp/commit/1ea7ed01f4)] - **deps**: update graceful-fs dependency to the latest (Sakthipriyan Vairamani) [#714](https://github.com/nodejs/node-gyp/pull/714) +* [[`0fbc387b35`](https://github.com/nodejs/node-gyp/commit/0fbc387b35)] - Update repository URLs. (Ben Noordhuis) [#715](https://github.com/nodejs/node-gyp/pull/715) +* [[`bbedb8868b`](https://github.com/nodejs/node-gyp/commit/bbedb8868b)] - **(SEMVER-MAJOR)** **win**: enable delay-load hook by default (Jeremiah Senkpiel) [#708](https://github.com/nodejs/node-gyp/pull/708) +* [[`85ed107565`](https://github.com/nodejs/node-gyp/commit/85ed107565)] - Merge pull request #664 from othiym23/othiym23/allow-semver-5 (Nathan Rajlich) +* [[`0c720d234c`](https://github.com/nodejs/node-gyp/commit/0c720d234c)] - allow semver@5 (Forrest L Norvell) diff --git a/deps/npm/node_modules/node-gyp/README.md b/deps/npm/node_modules/node-gyp/README.md index edde1f6c39ab..779dc6adc271 100644 --- a/deps/npm/node_modules/node-gyp/README.md +++ b/deps/npm/node_modules/node-gyp/README.md @@ -139,7 +139,7 @@ Some additional resources for addons and writing `gyp` files: * ["Hello World" node addon example](https://github.com/joyent/node/tree/master/test/addons/hello-world) * [gyp user documentation](https://chromium.googlesource.com/external/gyp/+/master/docs/UserDocumentation.md) * [gyp input format reference](https://chromium.googlesource.com/external/gyp/+/master/docs/InputFormatReference.md) - * [*"binding.gyp" files out in the wild* wiki page](https://github.com/TooTallNate/node-gyp/wiki/%22binding.gyp%22-files-out-in-the-wild) + * [*"binding.gyp" files out in the wild* wiki page](https://github.com/nodejs/node-gyp/wiki/%22binding.gyp%22-files-out-in-the-wild) Commands @@ -187,6 +187,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. [windows-python]: http://www.python.org/getit/windows [windows-python-v2.7.3]: http://www.python.org/download/releases/2.7.3#download -[msvc2013]: http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs +[msvc2013]: http://www.microsoft.com/en-gb/download/details.aspx?id=44914 [win7sdk]: http://www.microsoft.com/en-us/download/details.aspx?id=8279 [compiler update for the Windows SDK 7.1]: http://www.microsoft.com/en-us/download/details.aspx?id=4422 diff --git a/deps/npm/node_modules/node-gyp/addon.gypi b/deps/npm/node_modules/node-gyp/addon.gypi index 337794242171..510b00c713f5 100644 --- a/deps/npm/node_modules/node-gyp/addon.gypi +++ b/deps/npm/node_modules/node-gyp/addon.gypi @@ -1,10 +1,11 @@ { 'target_defaults': { 'type': 'loadable_module', - 'win_delay_load_hook': 'false', + 'win_delay_load_hook': 'true', 'product_prefix': '', 'include_dirs': [ + '<(node_root_dir)/include/node', '<(node_root_dir)/src', '<(node_root_dir)/deps/uv/include', '<(node_root_dir)/deps/v8/include' @@ -78,7 +79,7 @@ '-luuid.lib', '-lodbc32.lib', '-lDelayImp.lib', - '-l"<(node_root_dir)/$(ConfigurationName)/node.lib"' + '-l"<(node_root_dir)/$(ConfigurationName)/<(node_lib_file)"' ], 'msvs_disabled_warnings': [ # warning C4251: 'node::ObjectWrap::handle_' : class 'v8::Persistent' diff --git a/deps/npm/node_modules/node-gyp/bin/node-gyp.js b/deps/npm/node_modules/node-gyp/bin/node-gyp.js index 4678260fd5b0..e44e73877c73 100755 --- a/deps/npm/node_modules/node-gyp/bin/node-gyp.js +++ b/deps/npm/node_modules/node-gyp/bin/node-gyp.js @@ -125,7 +125,7 @@ function issueMessage () { errorMessage() log.error('', [ 'This is a bug in `node-gyp`.' , 'Try to update node-gyp and file an Issue if it does not help:' - , ' ' + , ' ' ].join('\n')) } diff --git a/deps/npm/node_modules/node-gyp/lib/build.js b/deps/npm/node_modules/node-gyp/lib/build.js index eeeb60266e04..198017b262ad 100644 --- a/deps/npm/node_modules/node-gyp/lib/build.js +++ b/deps/npm/node_modules/node-gyp/lib/build.js @@ -13,13 +13,14 @@ var fs = require('graceful-fs') , which = require('which') , mkdirp = require('mkdirp') , exec = require('child_process').exec + , processRelease = require('./process-release') , win = process.platform == 'win32' exports.usage = 'Invokes `' + (win ? 'msbuild' : 'make') + '` and builds the module' function build (gyp, argv, callback) { - - var makeCommand = gyp.opts.make || process.env.MAKE + var release = processRelease(argv, gyp, process.version, process.release) + , makeCommand = gyp.opts.make || process.env.MAKE || (process.platform.indexOf('bsd') != -1 && process.platform.indexOf('kfreebsd') == -1 ? 'gmake' : 'make') , command = win ? 'msbuild' : makeCommand , buildDir = path.resolve('build') @@ -181,15 +182,15 @@ function build (gyp, argv, callback) { if (!win || !copyDevLib) return doBuild() var buildDir = path.resolve(nodeDir, buildType) - , archNodeLibPath = path.resolve(nodeDir, arch, 'node.lib') - , buildNodeLibPath = path.resolve(buildDir, 'node.lib') + , archNodeLibPath = path.resolve(nodeDir, arch, release.name + '.lib') + , buildNodeLibPath = path.resolve(buildDir, release.name + '.lib') mkdirp(buildDir, function (err, isNew) { if (err) return callback(err) log.verbose('"' + buildType + '" dir needed to be created?', isNew) var rs = fs.createReadStream(archNodeLibPath) , ws = fs.createWriteStream(buildNodeLibPath) - log.verbose('copying "node.lib" for ' + arch, buildNodeLibPath) + log.verbose('copying "' + release.name + '.lib" for ' + arch, buildNodeLibPath) rs.pipe(ws) rs.on('error', callback) ws.on('error', callback) diff --git a/deps/npm/node_modules/node-gyp/lib/configure.js b/deps/npm/node_modules/node-gyp/lib/configure.js index e8c2029b59a9..009935202af9 100644 --- a/deps/npm/node_modules/node-gyp/lib/configure.js +++ b/deps/npm/node_modules/node-gyp/lib/configure.js @@ -15,6 +15,7 @@ var fs = require('graceful-fs') , cp = require('child_process') , PathArray = require('path-array') , extend = require('util')._extend + , processRelease = require('./process-release') , spawn = cp.spawn , execFile = cp.execFile , win = process.platform == 'win32' @@ -28,6 +29,7 @@ function configure (gyp, argv, callback) { , configNames = [ 'config.gypi', 'common.gypi' ] , configs = [] , nodeDir + , release = processRelease(argv, gyp, process.version, process.release) checkPython() @@ -135,35 +137,25 @@ function configure (gyp, argv, callback) { } else { // if no --nodedir specified, ensure node dependencies are installed - var version - var versionStr - - if (gyp.opts.target) { + if ('v' + release.version !== process.version) { // if --target was given, then determine a target version to compile for - versionStr = gyp.opts.target - log.verbose('get node dir', 'compiling against --target node version: %s', versionStr) + log.verbose('get node dir', 'compiling against --target node version: %s', release.version) } else { // if no --target was specified then use the current host node version - versionStr = process.version - log.verbose('get node dir', 'no --target version specified, falling back to host node version: %s', versionStr) + log.verbose('get node dir', 'no --target version specified, falling back to host node version: %s', release.version) } - // make sure we have a valid version - try { - version = semver.parse(versionStr) - } catch (e) { - return callback(e) - } - if (!version) { - return callback(new Error('Invalid version number: ' + versionStr)) + if (!release.semver) { + // could not parse the version string with semver + return callback(new Error('Invalid version number: ' + release.version)) } // ensure that the target node version's dev files are installed gyp.opts.ensure = true - gyp.commands.install([ versionStr ], function (err, version) { + gyp.commands.install([ release.version ], function (err, version) { if (err) return callback(err) - log.verbose('get node dir', 'target node version installed:', version) - nodeDir = path.resolve(gyp.devDir, version) + log.verbose('get node dir', 'target node version installed:', release.versionDir) + nodeDir = path.resolve(gyp.devDir, release.versionDir) createBuildDir() }) } @@ -310,42 +302,48 @@ function configure (gyp, argv, callback) { // this logic ported from the old `gyp_addon` python file var gyp_script = path.resolve(__dirname, '..', 'gyp', 'gyp_main.py') var addon_gypi = path.resolve(__dirname, '..', 'addon.gypi') - var common_gypi = path.resolve(nodeDir, 'common.gypi') - var output_dir = 'build' - if (win) { - // Windows expects an absolute path - output_dir = buildDir - } - var nodeGypDir = path.resolve(__dirname, '..') + var common_gypi = path.resolve(nodeDir, 'include/node/common.gypi') + fs.stat(common_gypi, function (err, stat) { + if (err) + common_gypi = path.resolve(nodeDir, 'common.gypi') - argv.push('-I', addon_gypi) - argv.push('-I', common_gypi) - argv.push('-Dlibrary=shared_library') - argv.push('-Dvisibility=default') - argv.push('-Dnode_root_dir=' + nodeDir) - argv.push('-Dnode_gyp_dir=' + nodeGypDir) - argv.push('-Dmodule_root_dir=' + process.cwd()) - argv.push('--depth=.') - argv.push('--no-parallel') + var output_dir = 'build' + if (win) { + // Windows expects an absolute path + output_dir = buildDir + } + var nodeGypDir = path.resolve(__dirname, '..') - // tell gyp to write the Makefile/Solution files into output_dir - argv.push('--generator-output', output_dir) + argv.push('-I', addon_gypi) + argv.push('-I', common_gypi) + argv.push('-Dlibrary=shared_library') + argv.push('-Dvisibility=default') + argv.push('-Dnode_root_dir=' + nodeDir) + argv.push('-Dnode_gyp_dir=' + nodeGypDir) + argv.push('-Dnode_lib_file=' + release.name + '.lib') + argv.push('-Dmodule_root_dir=' + process.cwd()) + argv.push('--depth=.') + argv.push('--no-parallel') - // tell make to write its output into the same dir - argv.push('-Goutput_dir=.') + // tell gyp to write the Makefile/Solution files into output_dir + argv.push('--generator-output', output_dir) - // enforce use of the "binding.gyp" file - argv.unshift('binding.gyp') + // tell make to write its output into the same dir + argv.push('-Goutput_dir=.') - // execute `gyp` from the current target nodedir - argv.unshift(gyp_script) + // enforce use of the "binding.gyp" file + argv.unshift('binding.gyp') - // make sure python uses files that came with this particular node package - var pypath = new PathArray(process.env, 'PYTHONPATH') - pypath.unshift(path.join(__dirname, '..', 'gyp', 'pylib')) + // execute `gyp` from the current target nodedir + argv.unshift(gyp_script) - var cp = gyp.spawn(python, argv) - cp.on('exit', onCpExit) + // make sure python uses files that came with this particular node package + var pypath = new PathArray(process.env, 'PYTHONPATH') + pypath.unshift(path.join(__dirname, '..', 'gyp', 'pylib')) + + var cp = gyp.spawn(python, argv) + cp.on('exit', onCpExit) + }) } /** diff --git a/deps/npm/node_modules/node-gyp/lib/install.js b/deps/npm/node_modules/node-gyp/lib/install.js index 6cbcdb8f7ac4..ddad77ec2b95 100644 --- a/deps/npm/node_modules/node-gyp/lib/install.js +++ b/deps/npm/node_modules/node-gyp/lib/install.js @@ -20,10 +20,13 @@ var fs = require('graceful-fs') , request = require('request') , minimatch = require('minimatch') , mkdir = require('mkdirp') + , processRelease = require('./process-release') , win = process.platform == 'win32' function install (gyp, argv, callback) { + var release = processRelease(argv, gyp, process.version, process.release) + // ensure no double-callbacks happen function cb (err) { if (cb.done) return @@ -31,34 +34,29 @@ function install (gyp, argv, callback) { if (err) { log.warn('install', 'got an error, rolling back install') // roll-back the install if anything went wrong - gyp.commands.remove([ version ], function (err2) { + gyp.commands.remove([ release.versionDir ], function (err2) { callback(err) }) } else { - callback(null, version) + callback(null, release.version) } } - var distUrl = gyp.opts['dist-url'] || gyp.opts.disturl || 'https://nodejs.org/dist' - - // Determine which node dev files version we are installing - var versionStr = argv[0] || gyp.opts.target || process.version - log.verbose('install', 'input version string %j', versionStr) + log.verbose('install', 'input version string %j', release.version) - // parse the version to normalize and ensure it's valid - var version = semver.parse(versionStr) - if (!version) { - return callback(new Error('Invalid version number: ' + versionStr)) + if (!release.semver) { + // could not parse the version string with semver + return callback(new Error('Invalid version number: ' + release.version)) } - if (semver.lt(versionStr, '0.8.0')) { - return callback(new Error('Minimum target version is `0.8.0` or greater. Got: ' + versionStr)) + if (semver.lt(release.version, '0.8.0')) { + return callback(new Error('Minimum target version is `0.8.0` or greater. Got: ' + release.version)) } // 0.x.y-pre versions are not published yet and cannot be installed. Bail. - if (version.prerelease[0] === 'pre') { - log.verbose('detected "pre" node version', versionStr) + if (release.semver.prerelease[0] === 'pre') { + log.verbose('detected "pre" node version', release.version) if (gyp.opts.nodedir) { log.verbose('--nodedir flag was passed; skipping install', gyp.opts.nodedir) callback() @@ -69,14 +67,10 @@ function install (gyp, argv, callback) { } // flatten version into String - 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' + log.verbose('install', 'installing version: %s', release.versionDir) // the directory where the dev files will be installed - var devDir = path.resolve(gyp.devDir, version) + var devDir = path.resolve(gyp.devDir, release.versionDir) // If '--ensure' was passed, then don't *always* install the version; // check if it is already installed, and only install when needed @@ -85,7 +79,7 @@ function install (gyp, argv, callback) { fs.stat(devDir, function (err, stat) { if (err) { if (err.code == 'ENOENT') { - log.verbose('install', 'version not already installed, continuing with install', version) + log.verbose('install', 'version not already installed, continuing with install', release.version) go() } else if (err.code == 'EACCES') { eaccesFallback() @@ -142,7 +136,7 @@ function install (gyp, argv, callback) { } try { // The "request" constructor can throw sometimes apparently :( - // See: https://github.com/TooTallNate/node-gyp/issues/114 + // See: https://github.com/nodejs/node-gyp/issues/114 req = request(requestOpts) } catch (e) { cb(e) @@ -156,7 +150,7 @@ function install (gyp, argv, callback) { } function getContentSha(res, callback) { - var shasum = crypto.createHash(checksumAlgo) + var shasum = crypto.createHash('sha256') res.on('data', function (chunk) { shasum.update(chunk) }).on('end', function () { @@ -184,9 +178,8 @@ function install (gyp, argv, callback) { } // now download the node tarball - var tarPath = gyp.opts['tarball'] - var tarballUrl = tarPath ? tarPath : distUrl + '/v' + version + '/node-v' + version + '.tar.gz' - , badDownload = false + var tarPath = gyp.opts.tarball + var badDownload = false , extractCount = 0 , gunzip = zlib.createGunzip() , extracter = tar.Extract({ path: devDir, strip: 1, filter: isValid }) @@ -220,12 +213,12 @@ function install (gyp, argv, callback) { // download the tarball, gunzip and extract! if (tarPath) { - var input = fs.createReadStream(tarballUrl) + var input = fs.createReadStream(tarPath) input.pipe(gunzip).pipe(extracter) return } - var req = download(tarballUrl) + var req = download(release.tarballUrl) if (!req) return // something went wrong downloading the tarball? @@ -248,12 +241,12 @@ function install (gyp, argv, callback) { req.on('response', function (res) { if (res.statusCode !== 200) { badDownload = true - cb(new Error(res.statusCode + ' response downloading ' + tarballUrl)) + cb(new Error(res.statusCode + ' response downloading ' + release.tarballUrl)) return } // content checksum getContentSha(res, function (_, checksum) { - var filename = path.basename(tarballUrl).trim() + var filename = path.basename(release.tarballUrl).trim() contentShasums[filename] = checksum log.verbose('content checksum', filename, checksum) }) @@ -314,13 +307,11 @@ function install (gyp, argv, callback) { } function downloadShasums(done) { - 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('check download content checksum, need to download `SHASUMS256.txt`...') + var shasumsPath = path.resolve(devDir, 'SHASUMS256.txt') - log.verbose('checksum url', shasumsUrl) - var req = download(shasumsUrl) + log.verbose('checksum url', release.shasumsUrl) + var req = download(release.shasumsUrl) if (!req) return req.on('error', done) req.on('response', function (res) { @@ -351,39 +342,37 @@ function install (gyp, argv, callback) { } function downloadNodeLib (done) { - log.verbose('on Windows; need to download `node.lib`...') + log.verbose('on Windows; need to download `' + release.name + '.lib`...') var dir32 = path.resolve(devDir, 'ia32') , dir64 = path.resolve(devDir, 'x64') - , nodeLibPath32 = path.resolve(dir32, 'node.lib') - , nodeLibPath64 = path.resolve(dir64, 'node.lib') - , nodeLibUrl32 = distUrl + '/v' + version + '/node.lib' - , nodeLibUrl64 = distUrl + '/v' + version + '/x64/node.lib' + , libPath32 = path.resolve(dir32, release.name + '.lib') + , libPath64 = path.resolve(dir64, release.name + '.lib') - log.verbose('32-bit node.lib dir', dir32) - log.verbose('64-bit node.lib dir', dir64) - log.verbose('`node.lib` 32-bit url', nodeLibUrl32) - log.verbose('`node.lib` 64-bit url', nodeLibUrl64) + log.verbose('32-bit ' + release.name + '.lib dir', dir32) + log.verbose('64-bit ' + release.name + '.lib dir', dir64) + log.verbose('`' + release.name + '.lib` 32-bit url', release.libUrl32) + log.verbose('`' + release.name + '.lib` 64-bit url', release.libUrl64) var async = 2 mkdir(dir32, function (err) { if (err) return done(err) - log.verbose('streaming 32-bit node.lib to:', nodeLibPath32) + log.verbose('streaming 32-bit ' + release.name + '.lib to:', libPath32) - var req = download(nodeLibUrl32) + var req = download(release.libUrl32) if (!req) return req.on('error', done) req.on('response', function (res) { if (res.statusCode !== 200) { - done(new Error(res.statusCode + ' status code downloading 32-bit node.lib')) + done(new Error(res.statusCode + ' status code downloading 32-bit ' + release.name + '.lib')) return } getContentSha(res, function (_, checksum) { - contentShasums['node.lib'] = checksum - log.verbose('content checksum', 'node.lib', checksum) + contentShasums[release.libPath32] = checksum + log.verbose('content checksum', release.libPath32, checksum) }) - var ws = fs.createWriteStream(nodeLibPath32) + var ws = fs.createWriteStream(libPath32) ws.on('error', cb) req.pipe(ws) }) @@ -393,23 +382,23 @@ function install (gyp, argv, callback) { }) mkdir(dir64, function (err) { if (err) return done(err) - log.verbose('streaming 64-bit node.lib to:', nodeLibPath64) + log.verbose('streaming 64-bit ' + release.name + '.lib to:', libPath64) - var req = download(nodeLibUrl64) + var req = download(release.libUrl64) if (!req) return req.on('error', done) req.on('response', function (res) { if (res.statusCode !== 200) { - done(new Error(res.statusCode + ' status code downloading 64-bit node.lib')) + done(new Error(res.statusCode + ' status code downloading 64-bit ' + release.name + '.lib')) return } getContentSha(res, function (_, checksum) { - contentShasums['x64/node.lib'] = checksum - log.verbose('content checksum', 'x64/node.lib', checksum) + contentShasums[release.libPath64] = checksum + log.verbose('content checksum', release.libPath64, checksum) }) - var ws = fs.createWriteStream(nodeLibPath64) + var ws = fs.createWriteStream(libPath64) ws.on('error', cb) req.pipe(ws) }) diff --git a/deps/npm/node_modules/node-gyp/lib/node-gyp.js b/deps/npm/node_modules/node-gyp/lib/node-gyp.js index 6223d4b1943a..d6d6509a7a8b 100644 --- a/deps/npm/node_modules/node-gyp/lib/node-gyp.js +++ b/deps/npm/node_modules/node-gyp/lib/node-gyp.js @@ -48,7 +48,7 @@ function Gyp () { // set the dir where node-gyp dev files get installed // TODO: make this *more* configurable? - // see: https://github.com/TooTallNate/node-gyp/issues/21 + // see: https://github.com/nodejs/node-gyp/issues/21 var homeDir = process.env.HOME || process.env.USERPROFILE if (!homeDir) { throw new Error( diff --git a/deps/npm/node_modules/node-gyp/lib/process-release.js b/deps/npm/node_modules/node-gyp/lib/process-release.js new file mode 100644 index 000000000000..2a574f437e10 --- /dev/null +++ b/deps/npm/node_modules/node-gyp/lib/process-release.js @@ -0,0 +1,133 @@ +var semver = require('semver') + , url = require('url') + , path = require('path') + + , bitsre = /\/win-(x86|x64)\// + , bitsreV3 = /\/win-(x86|ia32|x64)\// // io.js v3.x.x shipped with "ia32" but should + // have been "x86" + +// Captures all the logic required to determine download URLs, local directory and +// file names. Inputs come from command-line switches (--target, --dist-url), +// `process.version` and `process.release` where it exists. +function processRelease (argv, gyp, defaultVersion, defaultRelease) { + var version = (semver.valid(argv[0]) && argv[0]) || gyp.opts.target || defaultVersion + , versionSemver = semver.parse(version) + , overrideDistUrl = gyp.opts['dist-url'] || gyp.opts.disturl + , isDefaultVersion + , isIojs + , name + , distBaseUrl + , baseUrl + , libUrl32 + , libUrl64 + , tarballUrl + + if (!versionSemver) { + // not a valid semver string, nothing we can do + return { version: version } + } + // flatten version into String + version = versionSemver.version + + // defaultVersion should come from process.version so ought to be valid semver + isDefaultVersion = version === semver.parse(defaultVersion).version + + // can't use process.release if we're using --target=x.y.z + if (!isDefaultVersion) + defaultRelease = null + + if (defaultRelease) { + // v3 onward, has process.release + name = defaultRelease.name.replace(/io\.js/, 'iojs') // remove the '.' for directory naming purposes + isIojs = name === 'iojs' + } else { + // old node or alternative --target= + // semver.satisfies() doesn't like prerelease tags so test major directly + isIojs = versionSemver.major >= 1 && versionSemver.major < 4 + name = isIojs ? 'iojs' : 'node' + } + + // check for the nvm.sh standard mirror env variables + if (!overrideDistUrl) { + if (isIojs && process.env.NVM_IOJS_ORG_MIRROR) + overrideDistUrl = process.env.NVM_IOJS_ORG_MIRROR + else if (process.env.NVM_NODEJS_ORG_MIRROR) + overrideDistUrl = process.env.NVM_NODEJS_ORG_MIRROR + } + + + if (overrideDistUrl) + distBaseUrl = overrideDistUrl.replace(/\/+$/, '') + else + distBaseUrl = isIojs ? 'https://iojs.org/download/release' : 'https://nodejs.org/dist' + distBaseUrl += '/v' + version + '/' + + // new style, based on process.release so we have a lot of the data we need + if (defaultRelease && defaultRelease.headersUrl && !overrideDistUrl) { + baseUrl = url.resolve(defaultRelease.headersUrl, './') + libUrl32 = resolveLibUrl(name, defaultRelease.libUrl || baseUrl || distBaseUrl, 'x86', versionSemver.major) + libUrl64 = resolveLibUrl(name, defaultRelease.libUrl || baseUrl || distBaseUrl, 'x64', versionSemver.major) + + return { + version: version, + semver: versionSemver, + name: name, + baseUrl: baseUrl, + tarballUrl: defaultRelease.headersUrl, + shasumsUrl: url.resolve(baseUrl, 'SHASUMS256.txt'), + versionDir: (name !== 'node' ? name + '-' : '') + version, + libUrl32: libUrl32, + libUrl64: libUrl64, + libPath32: normalizePath(path.relative(url.parse(baseUrl).path, url.parse(libUrl32).path)), + libPath64: normalizePath(path.relative(url.parse(baseUrl).path, url.parse(libUrl64).path)) + } + } + + // older versions without process.release are captured here and we have to make + // a lot of assumptions, additionally if you --target=x.y.z then we can't use the + // current process.release + + baseUrl = distBaseUrl + libUrl32 = resolveLibUrl(name, baseUrl, 'x86', versionSemver.major) + libUrl64 = resolveLibUrl(name, baseUrl, 'x64', versionSemver.major) + // making the bold assumption that anything with a version number >3.0.0 will + // have a *-headers.tar.gz file in its dist location, even some frankenstein + // custom version + tarballUrl = url.resolve(baseUrl, name + '-v' + version + (versionSemver.major >= 3 ? '-headers' : '') + '.tar.gz') + + return { + version: version, + semver: versionSemver, + name: name, + baseUrl: baseUrl, + tarballUrl: tarballUrl, + shasumsUrl: url.resolve(baseUrl, 'SHASUMS256.txt'), + versionDir: (name !== 'node' ? name + '-' : '') + version, + libUrl32: libUrl32, + libUrl64: libUrl64, + libPath32: normalizePath(path.relative(url.parse(baseUrl).path, url.parse(libUrl32).path)), + libPath64: normalizePath(path.relative(url.parse(baseUrl).path, url.parse(libUrl64).path)) + } +} + +function normalizePath (p) { + return path.normalize(p).replace(/\\/g, '/') +} + +function resolveLibUrl (name, defaultUrl, arch, versionMajor) { + var base = url.resolve(defaultUrl, './') + , hasLibUrl = bitsre.test(defaultUrl) || (versionMajor === 3 && bitsreV3.test(defaultUrl)) + + if (!hasLibUrl) { + // let's assume it's a baseUrl then + if (versionMajor >= 1) + return url.resolve(base, 'win-' + arch +'/' + name + '.lib') + // prior to io.js@1.0.0 32-bit node.lib lives in /, 64-bit lives in /x64/ + return url.resolve(base, (arch === 'x64' ? 'x64/' : '') + name + '.lib') + } + + // else we have a proper url to a .lib, just make sure it's the right arch + return defaultUrl.replace(versionMajor === 3 ? bitsreV3 : bitsre, '/win-' + arch + '/') +} + +module.exports = processRelease diff --git a/deps/npm/node_modules/node-gyp/lib/remove.js b/deps/npm/node_modules/node-gyp/lib/remove.js index 068d1e3892d0..eb80981b88fe 100644 --- a/deps/npm/node_modules/node-gyp/lib/remove.js +++ b/deps/npm/node_modules/node-gyp/lib/remove.js @@ -19,23 +19,19 @@ function remove (gyp, argv, callback) { log.verbose('remove', 'using node-gyp dir:', devDir) // get the user-specified version to remove - var v = argv[0] || gyp.opts.target - log.verbose('remove', 'removing target version:', v) + var version = argv[0] || gyp.opts.target + log.verbose('remove', 'removing target version:', version) - if (!v) { + if (!version) { return callback(new Error('You must specify a version number to remove. Ex: "' + process.version + '"')) } - // parse the version to normalize and make sure it's valid - var version = semver.parse(v) - - if (!version) { - return callback(new Error('Invalid version number: ' + v)) + var versionSemver = semver.parse(version) + if (versionSemver) { + // flatten the version Array into a String + version = versionSemver.version } - // flatten the version Array into a String - version = version.version - var versionPath = path.resolve(gyp.devDir, version) log.verbose('remove', 'removing development files for version:', version) diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/browser.js b/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/browser.js index 967b45c0d67e..7d0515920e5c 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/browser.js +++ b/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/browser.js @@ -1,4 +1,4 @@ -(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o one single character var patternListStack = [] + var negativeLists = [] var plType var stateChar var inClass = false @@ -373,9 +374,13 @@ function parse (pattern, isSub) { } plType = stateChar - patternListStack.push({ type: plType, start: i - 1, reStart: re.length }) + patternListStack.push({ + type: plType, + start: i - 1, + reStart: re.length + }) // negation is (?:(?!js)[^/]*) - re += stateChar === '!' ? '(?:(?!' : '(?:' + re += stateChar === '!' ? '(?:(?!(?:' : '(?:' this.debug('plType %j %j', stateChar, re) stateChar = false continue @@ -389,12 +394,15 @@ function parse (pattern, isSub) { clearStateChar() hasMagic = true re += ')' - plType = patternListStack.pop().type + var pl = patternListStack.pop() + plType = pl.type // negation is (?:(?!js)[^/]*) // The others are (?:) switch (plType) { case '!': - re += '[^/]*?)' + negativeLists.push(pl) + re += ')[^/]*?)' + pl.reEnd = re.length break case '?': case '+': @@ -508,7 +516,7 @@ function parse (pattern, isSub) { // and escape any | chars that were passed through as-is for the regexp. // Go through and escape them, taking care not to double-escape any // | chars that were already escaped. - for (var pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { + for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { var tail = re.slice(pl.reStart + 3) // maybe some even number of \, then maybe 1 \, followed by a | tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { @@ -551,12 +559,49 @@ function parse (pattern, isSub) { case '(': addPatternStart = true } + // Hack to work around lack of negative lookbehind in JS + // A pattern like: *.!(x).!(y|z) needs to ensure that a name + // like 'a.xyz.yz' doesn't match. So, the first negative + // lookahead, has to look ALL the way ahead, to the end of + // the pattern. + for (var n = negativeLists.length - 1; n > -1; n--) { + var nl = negativeLists[n] + + var nlBefore = re.slice(0, nl.reStart) + var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) + var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + var nlAfter = re.slice(nl.reEnd) + + nlLast += nlAfter + + // Handle nested stuff like *(*.js|!(*.json)), where open parens + // mean that we should *not* include the ) in the bit that is considered + // "after" the negated section. + var openParensBefore = nlBefore.split('(').length - 1 + var cleanAfter = nlAfter + for (i = 0; i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') + } + nlAfter = cleanAfter + + var dollar = '' + if (nlAfter === '' && isSub !== SUBPARSE) { + dollar = '$' + } + var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast + re = newRe + } + // if the re is not "" at this point, then we need to make sure // it doesn't match against an empty path part. // Otherwise a/* will match a/, which it should not. - if (re !== '' && hasMagic) re = '(?=.)' + re + if (re !== '' && hasMagic) { + re = '(?=.)' + re + } - if (addPatternStart) re = patternStart + re + if (addPatternStart) { + re = patternStart + re + } // parsing just a piece of a larger pattern. if (isSub === SUBPARSE) { @@ -1110,4 +1155,5 @@ module.exports = function (xs, fn) { return res; }; -},{}]},{},[1]); +},{}]},{},[1])(1) +}); \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/minimatch.js b/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/minimatch.js index 5e13d6d5b2e6..ec4c05c570c5 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/minimatch.js +++ b/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/minimatch.js @@ -272,6 +272,7 @@ function parse (pattern, isSub) { var escaping = false // ? => one single character var patternListStack = [] + var negativeLists = [] var plType var stateChar var inClass = false @@ -372,9 +373,13 @@ function parse (pattern, isSub) { } plType = stateChar - patternListStack.push({ type: plType, start: i - 1, reStart: re.length }) + patternListStack.push({ + type: plType, + start: i - 1, + reStart: re.length + }) // negation is (?:(?!js)[^/]*) - re += stateChar === '!' ? '(?:(?!' : '(?:' + re += stateChar === '!' ? '(?:(?!(?:' : '(?:' this.debug('plType %j %j', stateChar, re) stateChar = false continue @@ -388,12 +393,15 @@ function parse (pattern, isSub) { clearStateChar() hasMagic = true re += ')' - plType = patternListStack.pop().type + var pl = patternListStack.pop() + plType = pl.type // negation is (?:(?!js)[^/]*) // The others are (?:) switch (plType) { case '!': - re += '[^/]*?)' + negativeLists.push(pl) + re += ')[^/]*?)' + pl.reEnd = re.length break case '?': case '+': @@ -507,7 +515,7 @@ function parse (pattern, isSub) { // and escape any | chars that were passed through as-is for the regexp. // Go through and escape them, taking care not to double-escape any // | chars that were already escaped. - for (var pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { + for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { var tail = re.slice(pl.reStart + 3) // maybe some even number of \, then maybe 1 \, followed by a | tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { @@ -550,12 +558,49 @@ function parse (pattern, isSub) { case '(': addPatternStart = true } + // Hack to work around lack of negative lookbehind in JS + // A pattern like: *.!(x).!(y|z) needs to ensure that a name + // like 'a.xyz.yz' doesn't match. So, the first negative + // lookahead, has to look ALL the way ahead, to the end of + // the pattern. + for (var n = negativeLists.length - 1; n > -1; n--) { + var nl = negativeLists[n] + + var nlBefore = re.slice(0, nl.reStart) + var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) + var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + var nlAfter = re.slice(nl.reEnd) + + nlLast += nlAfter + + // Handle nested stuff like *(*.js|!(*.json)), where open parens + // mean that we should *not* include the ) in the bit that is considered + // "after" the negated section. + var openParensBefore = nlBefore.split('(').length - 1 + var cleanAfter = nlAfter + for (i = 0; i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') + } + nlAfter = cleanAfter + + var dollar = '' + if (nlAfter === '' && isSub !== SUBPARSE) { + dollar = '$' + } + var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast + re = newRe + } + // if the re is not "" at this point, then we need to make sure // it doesn't match against an empty path part. // Otherwise a/* will match a/, which it should not. - if (re !== '' && hasMagic) re = '(?=.)' + re + if (re !== '' && hasMagic) { + re = '(?=.)' + re + } - if (addPatternStart) re = patternStart + re + if (addPatternStart) { + re = patternStart + re + } // parsing just a piece of a larger pattern. if (isSub === SUBPARSE) { diff --git a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/package.json b/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/package.json index 986de93892ac..3dc6beb49f68 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/package.json +++ b/deps/npm/node_modules/node-gyp/node_modules/glob/node_modules/minimatch/package.json @@ -6,16 +6,16 @@ }, "name": "minimatch", "description": "a glob matcher in javascript", - "version": "2.0.8", + "version": "2.0.10", "repository": { "type": "git", "url": "git://github.com/isaacs/minimatch.git" }, "main": "minimatch.js", "scripts": { - "pretest": "standard minimatch.js test/*.js", + "posttest": "standard minimatch.js test/*.js", "test": "tap test/*.js", - "prepublish": "browserify -o browser.js -e minimatch.js --bare" + "prepublish": "browserify -o browser.js -e minimatch.js -s minimatch --bare" }, "engines": { "node": "*" @@ -26,30 +26,30 @@ "devDependencies": { "browserify": "^9.0.3", "standard": "^3.7.2", - "tap": "" + "tap": "^1.2.0" }, "license": "ISC", "files": [ "minimatch.js", "browser.js" ], - "gitHead": "0bc7d9c4b2bc816502184862b45bd090de3406a3", + "gitHead": "6afb85f0c324b321f76a38df81891e562693e257", "bugs": { "url": "https://github.com/isaacs/minimatch/issues" }, "homepage": "https://github.com/isaacs/minimatch#readme", - "_id": "minimatch@2.0.8", - "_shasum": "0bc20f6bf3570a698ef0ddff902063c6cabda6bf", + "_id": "minimatch@2.0.10", + "_shasum": "8d087c39c6b38c001b97fca7ce6d0e1e80afbac7", "_from": "minimatch@>=2.0.1 <3.0.0", - "_npmVersion": "2.10.0", - "_nodeVersion": "2.0.1", + "_npmVersion": "3.1.0", + "_nodeVersion": "2.2.1", "_npmUser": { "name": "isaacs", "email": "isaacs@npmjs.com" }, "dist": { - "shasum": "0bc20f6bf3570a698ef0ddff902063c6cabda6bf", - "tarball": "http://registry.npmjs.org/minimatch/-/minimatch-2.0.8.tgz" + "shasum": "8d087c39c6b38c001b97fca7ce6d0e1e80afbac7", + "tarball": "http://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz" }, "maintainers": [ { @@ -58,6 +58,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.8.tgz", + "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", "readme": "ERROR: No README data found!" } diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/.npmignore b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/.npmignore deleted file mode 100644 index c2658d7d1b31..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/LICENSE b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/LICENSE deleted file mode 100644 index 19129e315fe5..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -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/node-gyp/node_modules/graceful-fs/README.md b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/README.md deleted file mode 100644 index 13a2e86050a3..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# graceful-fs - -graceful-fs functions as a drop-in replacement for the fs module, -making various improvements. - -The improvements are meant to normalize behavior across different -platforms and environments, and to make filesystem access more -resilient to errors. - -## Improvements over [fs module](http://api.nodejs.org/fs.html) - -graceful-fs: - -* Queues up `open` and `readdir` calls, and retries them once - something closes if there is an EMFILE error from too many file - descriptors. -* fixes `lchmod` for Node versions prior to 0.6.2. -* implements `fs.lutimes` if possible. Otherwise it becomes a noop. -* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or - `lchown` if the user isn't root. -* makes `lchmod` and `lchown` become noops, if not available. -* retries reading a file if `read` results in EAGAIN error. - -On Windows, it retries renaming a file for up to one second if `EACCESS` -or `EPERM` error occurs, likely because antivirus software has locked -the directory. - -## USAGE - -```javascript -// use just like fs -var fs = require('graceful-fs') - -// now go and do stuff with it... -fs.readFileSync('some-file-or-whatever') -``` diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/fs.js b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/fs.js deleted file mode 100644 index 64ad980232ec..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/fs.js +++ /dev/null @@ -1,11 +0,0 @@ -// eeeeeevvvvviiiiiiillllll -// more evil than monkey-patching the native builtin? -// Not sure. - -var mod = require("module") -var pre = '(function (exports, require, module, __filename, __dirname) { ' -var post = '});' -var src = pre + process.binding('natives').fs + post -var vm = require('vm') -var fn = vm.runInThisContext(src) -fn(exports, require, module, __filename, __dirname) diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/graceful-fs.js b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/graceful-fs.js deleted file mode 100644 index fb206b83854a..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/graceful-fs.js +++ /dev/null @@ -1,158 +0,0 @@ -// Monkey-patching the fs module. -// It's ugly, but there is simply no other way to do this. -var fs = module.exports = require('./fs.js') - -var assert = require('assert') - -// fix up some busted stuff, mostly on windows and old nodes -require('./polyfills.js') - -var util = require('util') - -function noop () {} - -var debug = noop -if (util.debuglog) - debug = util.debuglog('gfs') -else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) - debug = function() { - var m = util.format.apply(util, arguments) - m = 'GFS: ' + m.split(/\n/).join('\nGFS: ') - console.error(m) - } - -if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) { - process.on('exit', function() { - debug('fds', fds) - debug(queue) - assert.equal(queue.length, 0) - }) -} - - -var originalOpen = fs.open -fs.open = open - -function open(path, flags, mode, cb) { - if (typeof mode === "function") cb = mode, mode = null - if (typeof cb !== "function") cb = noop - new OpenReq(path, flags, mode, cb) -} - -function OpenReq(path, flags, mode, cb) { - this.path = path - this.flags = flags - this.mode = mode - this.cb = cb - Req.call(this) -} - -util.inherits(OpenReq, Req) - -OpenReq.prototype.process = function() { - originalOpen.call(fs, this.path, this.flags, this.mode, this.done) -} - -var fds = {} -OpenReq.prototype.done = function(er, fd) { - debug('open done', er, fd) - if (fd) - fds['fd' + fd] = this.path - Req.prototype.done.call(this, er, fd) -} - - -var originalReaddir = fs.readdir -fs.readdir = readdir - -function readdir(path, cb) { - if (typeof cb !== "function") cb = noop - new ReaddirReq(path, cb) -} - -function ReaddirReq(path, cb) { - this.path = path - this.cb = cb - Req.call(this) -} - -util.inherits(ReaddirReq, Req) - -ReaddirReq.prototype.process = function() { - originalReaddir.call(fs, this.path, this.done) -} - -ReaddirReq.prototype.done = function(er, files) { - if (files && files.sort) - files = files.sort() - Req.prototype.done.call(this, er, files) - onclose() -} - - -var originalClose = fs.close -fs.close = close - -function close (fd, cb) { - debug('close', fd) - if (typeof cb !== "function") cb = noop - delete fds['fd' + fd] - originalClose.call(fs, fd, function(er) { - onclose() - cb(er) - }) -} - - -var originalCloseSync = fs.closeSync -fs.closeSync = closeSync - -function closeSync (fd) { - try { - return originalCloseSync(fd) - } finally { - onclose() - } -} - - -// Req class -function Req () { - // start processing - this.done = this.done.bind(this) - this.failures = 0 - this.process() -} - -Req.prototype.done = function (er, result) { - var tryAgain = false - if (er) { - var code = er.code - var tryAgain = code === "EMFILE" || code === "ENFILE" - if (process.platform === "win32") - tryAgain = tryAgain || code === "OK" - } - - if (tryAgain) { - this.failures ++ - enqueue(this) - } else { - var cb = this.cb - cb(er, result) - } -} - -var queue = [] - -function enqueue(req) { - queue.push(req) - debug('enqueue %d %s', queue.length, req.constructor.name, req) -} - -function onclose() { - var req = queue.shift() - if (req) { - debug('process', req.constructor.name, req) - req.process() - } -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/package.json b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/package.json deleted file mode 100644 index 9add3d355157..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/package.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "name": "graceful-fs", - "description": "A drop-in replacement for fs, making various improvements.", - "version": "3.0.8", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-graceful-fs.git" - }, - "main": "graceful-fs.js", - "engines": { - "node": ">=0.4.0" - }, - "directories": { - "test": "test" - }, - "scripts": { - "test": "tap test/*.js" - }, - "keywords": [ - "fs", - "module", - "reading", - "retry", - "retries", - "queue", - "error", - "errors", - "handling", - "EMFILE", - "EAGAIN", - "EINVAL", - "EPERM", - "EACCESS" - ], - "license": "ISC", - "devDependencies": { - "mkdirp": "^0.5.0", - "rimraf": "^2.2.8", - "tap": "^1.2.0" - }, - "gitHead": "45c57aa5e323c35a985a525de6f0c9a6ef59e1f8", - "bugs": { - "url": "https://github.com/isaacs/node-graceful-fs/issues" - }, - "homepage": "https://github.com/isaacs/node-graceful-fs#readme", - "_id": "graceful-fs@3.0.8", - "_shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22", - "_from": "graceful-fs@>=3.0.0 <4.0.0", - "_npmVersion": "2.10.1", - "_nodeVersion": "2.0.1", - "_npmUser": { - "name": "isaacs", - "email": "isaacs@npmjs.com" - }, - "dist": { - "shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22", - "tarball": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/polyfills.js b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/polyfills.js deleted file mode 100644 index 8ac5006e2da2..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/polyfills.js +++ /dev/null @@ -1,254 +0,0 @@ -var fs = require('./fs.js') -var constants = require('constants') - -var origCwd = process.cwd -var cwd = null -process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process) - return cwd -} -var chdir = process.chdir -process.chdir = function(d) { - cwd = null - chdir.call(process, d) -} - -// (re-)implement some things that are known busted or missing. - -// lchmod, broken prior to 0.6.2 -// back-port the fix here. -if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - fs.lchmod = function (path, mode, callback) { - callback = callback || noop - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - callback(err || err2) - }) - }) - }) - } - - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var err, err2 - try { - var ret = fs.fchmodSync(fd, mode) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } -} - - -// lutimes implementation, or no-op -if (!fs.lutimes) { - if (constants.hasOwnProperty("O_SYMLINK")) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - cb = cb || noop - if (er) return cb(er) - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - return cb(er || er2) - }) - }) - }) - } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - , err - , err2 - , ret - - try { - var ret = fs.futimesSync(fd, at, mt) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } - - } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) { - // maybe utimensat will be bound soonish? - fs.lutimes = function (path, at, mt, cb) { - fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb) - } - - fs.lutimesSync = function (path, at, mt) { - return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW) - } - - } else { - fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) } - fs.lutimesSync = function () {} - } -} - - -// https://github.com/isaacs/node-graceful-fs/issues/4 -// Chown should not fail on einval or eperm if non-root. -// It should not fail on enosys ever, as this just indicates -// that a fs doesn't support the intended operation. - -fs.chown = chownFix(fs.chown) -fs.fchown = chownFix(fs.fchown) -fs.lchown = chownFix(fs.lchown) - -fs.chmod = chownFix(fs.chmod) -fs.fchmod = chownFix(fs.fchmod) -fs.lchmod = chownFix(fs.lchmod) - -fs.chownSync = chownFixSync(fs.chownSync) -fs.fchownSync = chownFixSync(fs.fchownSync) -fs.lchownSync = chownFixSync(fs.lchownSync) - -fs.chmodSync = chownFix(fs.chmodSync) -fs.fchmodSync = chownFix(fs.fchmodSync) -fs.lchmodSync = chownFix(fs.lchmodSync) - -function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er, res) { - if (chownErOk(er)) er = null - cb(er, res) - }) - } -} - -function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } -} - -// ENOSYS means that the fs doesn't support the op. Just ignore -// that, because it doesn't matter. -// -// if there's no getuid, or if getuid() is something other -// than 0, and the error is EINVAL or EPERM, then just ignore -// it. -// -// This specific case is a silent failure in cp, install, tar, -// and most other unix tools that manage permissions. -// -// When running as root, or if other types of errors are -// encountered, then it's strict. -function chownErOk (er) { - if (!er) - return true - - if (er.code === "ENOSYS") - return true - - var nonroot = !process.getuid || process.getuid() !== 0 - if (nonroot) { - if (er.code === "EINVAL" || er.code === "EPERM") - return true - } - - return false -} - - -// if lchmod/lchown do not exist, then make them no-ops -if (!fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - process.nextTick(cb) - } - fs.lchmodSync = function () {} -} -if (!fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - process.nextTick(cb) - } - fs.lchownSync = function () {} -} - - - -// on Windows, A/V software can lock the directory, causing this -// to fail with an EACCES or EPERM if the directory contains newly -// created files. Try again on failure, for up to 1 second. -if (process.platform === "win32") { - var rename_ = fs.rename - fs.rename = function rename (from, to, cb) { - var start = Date.now() - rename_(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM") - && Date.now() - start < 1000) { - return rename_(from, to, CB) - } - if(cb) cb(er) - }) - } -} - - -// if read() returns EAGAIN, then just try it again. -var read = fs.read -fs.read = function (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) - } - } - return read.call(fs, fd, buffer, offset, length, position, callback) -} - -var readSync = fs.readSync -fs.readSync = function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/max-open.js b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/max-open.js deleted file mode 100644 index a6b9ba43d3a6..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/max-open.js +++ /dev/null @@ -1,69 +0,0 @@ -var test = require('tap').test -var fs = require('../') - -test('open lots of stuff', function (t) { - // Get around EBADF from libuv by making sure that stderr is opened - // Otherwise Darwin will refuse to give us a FD for stderr! - process.stderr.write('') - - // How many parallel open()'s to do - var n = 1024 - var opens = 0 - var fds = [] - var going = true - var closing = false - var doneCalled = 0 - - for (var i = 0; i < n; i++) { - go() - } - - function go() { - opens++ - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fds.push(fd) - if (going) go() - }) - } - - // should hit ulimit pretty fast - setTimeout(function () { - going = false - t.equal(opens - fds.length, n) - done() - }, 100) - - - function done () { - if (closing) return - doneCalled++ - - if (fds.length === 0) { - console.error('done called %d times', doneCalled) - // First because of the timeout - // Then to close the fd's opened afterwards - // Then this time, to complete. - // Might take multiple passes, depending on CPU speed - // and ulimit, but at least 3 in every case. - t.ok(doneCalled >= 2) - return t.end() - } - - closing = true - setTimeout(function () { - // console.error('do closing again') - closing = false - done() - }, 100) - - // console.error('closing time') - var closes = fds.slice(0) - fds.length = 0 - closes.forEach(function (fd) { - fs.close(fd, function (er) { - if (er) throw er - }) - }) - } -}) diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/open.js b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/open.js deleted file mode 100644 index 85732f236b00..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/open.js +++ /dev/null @@ -1,39 +0,0 @@ -var test = require('tap').test -var fs = require('../graceful-fs.js') - -test('graceful fs is monkeypatched fs', function (t) { - t.equal(fs, require('../fs.js')) - t.end() -}) - -test('open an existing file works', function (t) { - var fd = fs.openSync(__filename, 'r') - fs.closeSync(fd) - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fs.close(fd, function (er) { - if (er) throw er - t.pass('works') - t.end() - }) - }) -}) - -test('open a non-existing file throws', function (t) { - var er - try { - var fd = fs.openSync('this file does not exist', 'r') - } catch (x) { - er = x - } - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - - fs.open('neither does this file', 'r', function (er, fd) { - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - t.end() - }) -}) diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/readdir-sort.js b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/readdir-sort.js deleted file mode 100644 index cb63a6846ed7..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/readdir-sort.js +++ /dev/null @@ -1,20 +0,0 @@ -var test = require("tap").test -var fs = require("../fs.js") - -var readdir = fs.readdir -fs.readdir = function(path, cb) { - process.nextTick(function() { - cb(null, ["b", "z", "a"]) - }) -} - -var g = require("../") - -test("readdir reorder", function (t) { - g.readdir("whatevers", function (er, files) { - if (er) - throw er - t.same(files, [ "a", "b", "z" ]) - t.end() - }) -}) diff --git a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/write-then-read.js b/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/write-then-read.js deleted file mode 100644 index 21e4c26bf6c9..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/graceful-fs/test/write-then-read.js +++ /dev/null @@ -1,47 +0,0 @@ -var fs = require('../'); -var rimraf = require('rimraf'); -var mkdirp = require('mkdirp'); -var test = require('tap').test; -var p = require('path').resolve(__dirname, 'files'); - -process.chdir(__dirname) - -// Make sure to reserve the stderr fd -process.stderr.write(''); - -var num = 4097; -var paths = new Array(num); - -test('make files', function (t) { - rimraf.sync(p); - mkdirp.sync(p); - - for (var i = 0; i < num; ++i) { - paths[i] = 'files/file-' + i; - fs.writeFileSync(paths[i], 'content'); - } - - t.end(); -}) - -test('read files', function (t) { - // now read them - var done = 0; - for (var i = 0; i < num; ++i) { - fs.readFile(paths[i], function(err, data) { - if (err) - throw err; - - ++done; - if (done === num) { - t.pass('success'); - t.end() - } - }); - } -}); - -test('cleanup', function (t) { - rimraf.sync(p); - t.end(); -}); diff --git a/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/.jshintrc b/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/.jshintrc new file mode 100644 index 000000000000..182e34d07d78 --- /dev/null +++ b/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/.jshintrc @@ -0,0 +1,4 @@ +{ + "asi": true, + "laxcomma": true +} diff --git a/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/package.json b/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/package.json index 8ed83ab24364..6ba9df72c29b 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/package.json +++ b/deps/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/package.json @@ -53,5 +53,6 @@ "tarball": "http://registry.npmjs.org/array-index/-/array-index-0.1.1.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/array-index/-/array-index-0.1.1.tgz" + "_resolved": "https://registry.npmjs.org/array-index/-/array-index-0.1.1.tgz", + "readme": "ERROR: No README data found!" } diff --git a/deps/npm/node_modules/node-gyp/node_modules/path-array/package.json b/deps/npm/node_modules/node-gyp/node_modules/path-array/package.json index ad8edc9f83ee..41d25482b867 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/path-array/package.json +++ b/deps/npm/node_modules/node-gyp/node_modules/path-array/package.json @@ -51,5 +51,6 @@ "tarball": "http://registry.npmjs.org/path-array/-/path-array-1.0.0.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/path-array/-/path-array-1.0.0.tgz" + "_resolved": "https://registry.npmjs.org/path-array/-/path-array-1.0.0.tgz", + "readme": "ERROR: No README data found!" } diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/.npmignore b/deps/npm/node_modules/node-gyp/node_modules/semver/.npmignore deleted file mode 100644 index 534108e3f481..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/semver/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules/ -coverage/ -.nyc_output/ -nyc_output/ diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/LICENSE b/deps/npm/node_modules/node-gyp/node_modules/semver/LICENSE deleted file mode 100644 index 19129e315fe5..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/semver/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -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/node-gyp/node_modules/semver/Makefile b/deps/npm/node_modules/node-gyp/node_modules/semver/Makefile deleted file mode 100644 index 71af0e9750cd..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/semver/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -files = semver.browser.js \ - semver.min.js \ - semver.browser.js.gz \ - semver.min.js.gz - -all: $(files) - -clean: - rm -f $(files) - -semver.browser.js: head.js.txt semver.js foot.js.txt - ( cat head.js.txt; \ - cat semver.js | \ - egrep -v '^ *\/\* nomin \*\/' | \ - perl -pi -e 's/debug\([^\)]+\)//g'; \ - cat foot.js.txt ) > semver.browser.js - -semver.min.js: semver.browser.js - uglifyjs -m semver.min.js - -%.gz: % - gzip --stdout -9 <$< >$@ - -.PHONY: all clean diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/README.md b/deps/npm/node_modules/node-gyp/node_modules/semver/README.md deleted file mode 100644 index b5e35ff0b5bd..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/semver/README.md +++ /dev/null @@ -1,303 +0,0 @@ -semver(1) -- The semantic versioner for npm -=========================================== - -## Usage - - $ npm install semver - - semver.valid('1.2.3') // '1.2.3' - semver.valid('a.b.c') // null - semver.clean(' =v1.2.3 ') // '1.2.3' - semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true - semver.gt('1.2.3', '9.8.7') // false - semver.lt('1.2.3', '9.8.7') // true - -As a command-line utility: - - $ semver -h - - Usage: semver [ [...]] [-r | -i | --preid | -l | -rv] - Test if version(s) satisfy the supplied range(s), and sort them. - - Multiple versions or ranges may be supplied, unless increment - option is specified. In that case, only a single version may - be used, and it is incremented by the specified level - - Program exits successfully if any valid version satisfies - all supplied ranges, and prints all satisfying versions. - - If no versions are valid, or ranges are not satisfied, - then exits failure. - - Versions are printed in ascending order, so supplying - multiple versions to the utility will just sort them. - -## Versions - -A "version" is described by the `v2.0.0` specification found at -. - -A leading `"="` or `"v"` character is stripped off and ignored. - -## Ranges - -A `version range` is a set of `comparators` which specify versions -that satisfy the range. - -A `comparator` is composed of an `operator` and a `version`. The set -of primitive `operators` is: - -* `<` Less than -* `<=` Less than or equal to -* `>` Greater than -* `>=` Greater than or equal to -* `=` Equal. If no operator is specified, then equality is assumed, - so this operator is optional, but MAY be included. - -For example, the comparator `>=1.2.7` would match the versions -`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6` -or `1.1.0`. - -Comparators can be joined by whitespace to form a `comparator set`, -which is satisfied by the **intersection** of all of the comparators -it includes. - -A range is composed of one or more comparator sets, joined by `||`. A -version matches a range if and only if every comparator in at least -one of the `||`-separated comparator sets is satisfied by the version. - -For example, the range `>=1.2.7 <1.3.0` would match the versions -`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`, -or `1.1.0`. - -The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`, -`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`. - -### Prerelease Tags - -If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then -it will only be allowed to satisfy comparator sets if at least one -comparator with the same `[major, minor, patch]` tuple also has a -prerelease tag. - -For example, the range `>1.2.3-alpha.3` would be allowed to match the -version `1.2.3-alpha.7`, but it would *not* be satisfied by -`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater -than" `1.2.3-alpha.3` according to the SemVer sort rules. The version -range only accepts prerelease tags on the `1.2.3` version. The -version `3.4.5` *would* satisfy the range, because it does not have a -prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`. - -The purpose for this behavior is twofold. First, prerelease versions -frequently are updated very quickly, and contain many breaking changes -that are (by the author's design) not yet fit for public consumption. -Therefore, by default, they are excluded from range matching -semantics. - -Second, a user who has opted into using a prerelease version has -clearly indicated the intent to use *that specific* set of -alpha/beta/rc versions. By including a prerelease tag in the range, -the user is indicating that they are aware of the risk. However, it -is still not appropriate to assume that they have opted into taking a -similar risk on the *next* set of prerelease versions. - -#### Prerelease Identifiers - -The method `.inc` takes an additional `identifier` string argument that -will append the value of the string as a prerelease identifier: - -```javascript -> semver.inc('1.2.3', 'pre', 'beta') -'1.2.4-beta.0' -``` - -command-line example: - -```shell -$ semver 1.2.3 -i prerelease --preid beta -1.2.4-beta.0 -``` - -Which then can be used to increment further: - -```shell -$ semver 1.2.4-beta.0 -i prerelease -1.2.4-beta.1 -``` - -### Advanced Range Syntax - -Advanced range syntax desugars to primitive comparators in -deterministic ways. - -Advanced ranges may be combined in the same way as primitive -comparators using white space or `||`. - -#### Hyphen Ranges `X.Y.Z - A.B.C` - -Specifies an inclusive set. - -* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4` - -If a partial version is provided as the first version in the inclusive -range, then the missing pieces are replaced with zeroes. - -* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4` - -If a partial version is provided as the second version in the -inclusive range, then all versions that start with the supplied parts -of the tuple are accepted, but nothing that would be greater than the -provided tuple parts. - -* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0` -* `1.2.3 - 2` := `>=1.2.3 <3.0.0` - -#### X-Ranges `1.2.x` `1.X` `1.2.*` `*` - -Any of `X`, `x`, or `*` may be used to "stand in" for one of the -numeric values in the `[major, minor, patch]` tuple. - -* `*` := `>=0.0.0` (Any version satisfies) -* `1.x` := `>=1.0.0 <2.0.0` (Matching major version) -* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions) - -A partial version range is treated as an X-Range, so the special -character is in fact optional. - -* `""` (empty string) := `*` := `>=0.0.0` -* `1` := `1.x.x` := `>=1.0.0 <2.0.0` -* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0` - -#### Tilde Ranges `~1.2.3` `~1.2` `~1` - -Allows patch-level changes if a minor version is specified on the -comparator. Allows minor-level changes if not. - -* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0` -* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`) -* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`) -* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0` -* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`) -* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`) -* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in - the `1.2.3` version will be allowed, if they are greater than or - equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but - `1.2.4-beta.2` would not, because it is a prerelease of a - different `[major, minor, patch]` tuple. - -#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4` - -Allows changes that do not modify the left-most non-zero digit in the -`[major, minor, patch]` tuple. In other words, this allows patch and -minor updates for versions `1.0.0` and above, patch updates for -versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`. - -Many authors treat a `0.x` version as if the `x` were the major -"breaking-change" indicator. - -Caret ranges are ideal when an author may make breaking changes -between `0.2.4` and `0.3.0` releases, which is a common practice. -However, it presumes that there will *not* be breaking changes between -`0.2.4` and `0.2.5`. It allows for changes that are presumed to be -additive (but non-breaking), according to commonly observed practices. - -* `^1.2.3` := `>=1.2.3 <2.0.0` -* `^0.2.3` := `>=0.2.3 <0.3.0` -* `^0.0.3` := `>=0.0.3 <0.0.4` -* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in - the `1.2.3` version will be allowed, if they are greater than or - equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but - `1.2.4-beta.2` would not, because it is a prerelease of a - different `[major, minor, patch]` tuple. -* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4` Note that prereleases in the - `0.0.3` version *only* will be allowed, if they are greater than or - equal to `beta`. So, `0.0.3-pr.2` would be allowed. - -When parsing caret ranges, a missing `patch` value desugars to the -number `0`, but will allow flexibility within that value, even if the -major and minor versions are both `0`. - -* `^1.2.x` := `>=1.2.0 <2.0.0` -* `^0.0.x` := `>=0.0.0 <0.1.0` -* `^0.0` := `>=0.0.0 <0.1.0` - -A missing `minor` and `patch` values will desugar to zero, but also -allow flexibility within those values, even if the major version is -zero. - -* `^1.x` := `>=1.0.0 <2.0.0` -* `^0.x` := `>=0.0.0 <1.0.0` - -## Functions - -All methods and classes take a final `loose` boolean argument that, if -true, will be more forgiving about not-quite-valid semver strings. -The resulting output will always be 100% strict, of course. - -Strict-mode Comparators and Ranges will be strict about the SemVer -strings that they parse. - -* `valid(v)`: Return the parsed version, or null if it's not valid. -* `inc(v, release)`: Return the version incremented by the release - type (`major`, `premajor`, `minor`, `preminor`, `patch`, - `prepatch`, or `prerelease`), or null if it's not valid - * `premajor` in one call will bump the version up to the next major - version and down to a prerelease of that major version. - `preminor`, and `prepatch` work the same way. - * If called from a non-prerelease version, the `prerelease` will work the - same as `prepatch`. It increments the patch version, then makes a - prerelease. If the input version is already a prerelease it simply - increments it. -* `major(v)`: Return the major version number. -* `minor(v)`: Return the minor version number. -* `patch(v)`: Return the patch version number. - -### Comparison - -* `gt(v1, v2)`: `v1 > v2` -* `gte(v1, v2)`: `v1 >= v2` -* `lt(v1, v2)`: `v1 < v2` -* `lte(v1, v2)`: `v1 <= v2` -* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent, - even if they're not the exact same string. You already know how to - compare strings. -* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`. -* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call - the corresponding function above. `"==="` and `"!=="` do simple - string comparison, but are included for completeness. Throws if an - invalid comparison string is provided. -* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if - `v2` is greater. Sorts in ascending order if passed to `Array.sort()`. -* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions - in descending order when passed to `Array.sort()`. -* `diff(v1, v2)`: Returns difference between two versions by the release type - (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`), - or null if the versions are the same. - - -### Ranges - -* `validRange(range)`: Return the valid range or null if it's not valid -* `satisfies(version, range)`: Return true if the version satisfies the - range. -* `maxSatisfying(versions, range)`: Return the highest version in the list - that satisfies the range, or `null` if none of them do. -* `gtr(version, range)`: Return `true` if version is greater than all the - versions possible in the range. -* `ltr(version, range)`: Return `true` if version is less than all the - versions possible in the range. -* `outside(version, range, hilo)`: Return true if the version is outside - the bounds of the range in either the high or low direction. The - `hilo` argument must be either the string `'>'` or `'<'`. (This is - the function called by `gtr` and `ltr`.) - -Note that, since ranges may be non-contiguous, a version might not be -greater than a range, less than a range, *or* satisfy a range! For -example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9` -until `2.0.0`, so the version `1.2.10` would not be greater than the -range (because `2.0.1` satisfies, which is higher), nor less than the -range (since `1.2.8` satisfies, which is lower), and it also does not -satisfy the range. - -If you want to know if a version satisfies or does not satisfy a -range, use the `satisfies(version, range)` function. diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/bin/semver b/deps/npm/node_modules/node-gyp/node_modules/semver/bin/semver deleted file mode 100755 index c5f2e857e827..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/semver/bin/semver +++ /dev/null @@ -1,133 +0,0 @@ -#!/usr/bin/env node -// Standalone semver comparison program. -// Exits successfully and prints matching version(s) if -// any supplied version is valid and passes all tests. - -var argv = process.argv.slice(2) - , versions = [] - , range = [] - , gt = [] - , lt = [] - , eq = [] - , inc = null - , version = require("../package.json").version - , loose = false - , identifier = undefined - , semver = require("../semver") - , reverse = false - -main() - -function main () { - if (!argv.length) return help() - while (argv.length) { - var a = argv.shift() - var i = a.indexOf('=') - if (i !== -1) { - a = a.slice(0, i) - argv.unshift(a.slice(i + 1)) - } - switch (a) { - case "-rv": case "-rev": case "--rev": case "--reverse": - reverse = true - break - case "-l": case "--loose": - loose = true - break - case "-v": case "--version": - versions.push(argv.shift()) - break - case "-i": case "--inc": case "--increment": - switch (argv[0]) { - case "major": case "minor": case "patch": case "prerelease": - case "premajor": case "preminor": case "prepatch": - inc = argv.shift() - break - default: - inc = "patch" - break - } - break - case "--preid": - identifier = argv.shift() - break - case "-r": case "--range": - range.push(argv.shift()) - break - case "-h": case "--help": case "-?": - return help() - default: - versions.push(a) - break - } - } - - versions = versions.filter(function (v) { - return semver.valid(v, loose) - }) - if (!versions.length) return fail() - if (inc && (versions.length !== 1 || range.length)) - return failInc() - - for (var i = 0, l = range.length; i < l ; i ++) { - versions = versions.filter(function (v) { - return semver.satisfies(v, range[i], loose) - }) - if (!versions.length) return fail() - } - return success(versions) -} - -function failInc () { - console.error("--inc can only be used on a single version with no range") - fail() -} - -function fail () { process.exit(1) } - -function success () { - var compare = reverse ? "rcompare" : "compare" - versions.sort(function (a, b) { - return semver[compare](a, b, loose) - }).map(function (v) { - return semver.clean(v, loose) - }).map(function (v) { - return inc ? semver.inc(v, inc, loose, identifier) : v - }).forEach(function (v,i,_) { console.log(v) }) -} - -function help () { - console.log(["SemVer " + version - ,"" - ,"A JavaScript implementation of the http://semver.org/ specification" - ,"Copyright Isaac Z. Schlueter" - ,"" - ,"Usage: semver [options] [ [...]]" - ,"Prints valid versions sorted by SemVer precedence" - ,"" - ,"Options:" - ,"-r --range " - ," Print versions that match the specified range." - ,"" - ,"-i --increment []" - ," Increment a version by the specified level. Level can" - ," be one of: major, minor, patch, premajor, preminor," - ," prepatch, or prerelease. Default level is 'patch'." - ," Only one version may be specified." - ,"" - ,"--preid " - ," Identifier to be used to prefix premajor, preminor," - ," prepatch or prerelease version increments." - ,"" - ,"-l --loose" - ," Interpret versions and ranges loosely" - ,"" - ,"Program exits successfully if any valid version satisfies" - ,"all supplied ranges, and prints all satisfying versions." - ,"" - ,"If no satisfying versions are found, then exits failure." - ,"" - ,"Versions are printed in ascending order, so supplying" - ,"multiple versions to the utility will just sort them." - ].join("\n")) -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/foot.js.txt b/deps/npm/node_modules/node-gyp/node_modules/semver/foot.js.txt deleted file mode 100644 index 8f83c20f8ed5..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/semver/foot.js.txt +++ /dev/null @@ -1,6 +0,0 @@ - -})( - typeof exports === 'object' ? exports : - typeof define === 'function' && define.amd ? {} : - semver = {} -); diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/head.js.txt b/deps/npm/node_modules/node-gyp/node_modules/semver/head.js.txt deleted file mode 100644 index 591afab46f93..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/semver/head.js.txt +++ /dev/null @@ -1 +0,0 @@ -;(function(exports) { diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/package.json b/deps/npm/node_modules/node-gyp/node_modules/semver/package.json deleted file mode 100644 index e9b6abe3f7e0..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/semver/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "semver", - "version": "4.3.6", - "description": "The semantic version parser used by npm.", - "main": "semver.js", - "browser": "semver.browser.js", - "min": "semver.min.js", - "scripts": { - "test": "tap test/*.js", - "prepublish": "make" - }, - "devDependencies": { - "tap": "^1.2.0", - "uglify-js": "~2.3.6" - }, - "license": "ISC", - "repository": { - "type": "git", - "url": "git://github.com/npm/node-semver.git" - }, - "bin": { - "semver": "./bin/semver" - }, - "gitHead": "63c48296ca5da3ba6a88c743bb8c92effc789811", - "bugs": { - "url": "https://github.com/npm/node-semver/issues" - }, - "homepage": "https://github.com/npm/node-semver#readme", - "_id": "semver@4.3.6", - "_shasum": "300bc6e0e86374f7ba61068b5b1ecd57fc6532da", - "_from": "semver@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0||>=4.0.0 <5.0.0", - "_npmVersion": "2.10.1", - "_nodeVersion": "2.0.1", - "_npmUser": { - "name": "isaacs", - "email": "isaacs@npmjs.com" - }, - "dist": { - "shasum": "300bc6e0e86374f7ba61068b5b1ecd57fc6532da", - "tarball": "http://registry.npmjs.org/semver/-/semver-4.3.6.tgz" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "isaacs@npmjs.com" - }, - { - "name": "othiym23", - "email": "ogd@aoaioxxysz.net" - } - ], - "directories": {}, - "_resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/semver.browser.js b/deps/npm/node_modules/node-gyp/node_modules/semver/semver.browser.js deleted file mode 100644 index 4b0cfecf2c03..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/semver/semver.browser.js +++ /dev/null @@ -1,1201 +0,0 @@ -;(function(exports) { - -// export the class if we are in a Node-like system. -if (typeof module === 'object' && module.exports === exports) - exports = module.exports = SemVer; - -// The debug function is excluded entirely from the minified version. - -// Note: this is the semver.org version of the spec that it implements -// Not necessarily the package version of this code. -exports.SEMVER_SPEC_VERSION = '2.0.0'; - -var MAX_LENGTH = 256; -var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; - -// The actual regexps go on exports.re -var re = exports.re = []; -var src = exports.src = []; -var R = 0; - -// The following Regular Expressions can be used for tokenizing, -// validating, and parsing SemVer version strings. - -// ## Numeric Identifier -// A single `0`, or a non-zero digit followed by zero or more digits. - -var NUMERICIDENTIFIER = R++; -src[NUMERICIDENTIFIER] = '0|[1-9]\\d*'; -var NUMERICIDENTIFIERLOOSE = R++; -src[NUMERICIDENTIFIERLOOSE] = '[0-9]+'; - - -// ## Non-numeric Identifier -// Zero or more digits, followed by a letter or hyphen, and then zero or -// more letters, digits, or hyphens. - -var NONNUMERICIDENTIFIER = R++; -src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'; - - -// ## Main Version -// Three dot-separated numeric identifiers. - -var MAINVERSION = R++; -src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' + - '(' + src[NUMERICIDENTIFIER] + ')\\.' + - '(' + src[NUMERICIDENTIFIER] + ')'; - -var MAINVERSIONLOOSE = R++; -src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[NUMERICIDENTIFIERLOOSE] + ')'; - -// ## Pre-release Version Identifier -// A numeric identifier, or a non-numeric identifier. - -var PRERELEASEIDENTIFIER = R++; -src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] + - '|' + src[NONNUMERICIDENTIFIER] + ')'; - -var PRERELEASEIDENTIFIERLOOSE = R++; -src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] + - '|' + src[NONNUMERICIDENTIFIER] + ')'; - - -// ## Pre-release Version -// Hyphen, followed by one or more dot-separated pre-release version -// identifiers. - -var PRERELEASE = R++; -src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] + - '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))'; - -var PRERELEASELOOSE = R++; -src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] + - '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'; - -// ## Build Metadata Identifier -// Any combination of digits, letters, or hyphens. - -var BUILDIDENTIFIER = R++; -src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'; - -// ## Build Metadata -// Plus sign, followed by one or more period-separated build metadata -// identifiers. - -var BUILD = R++; -src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] + - '(?:\\.' + src[BUILDIDENTIFIER] + ')*))'; - - -// ## Full Version String -// A main version, followed optionally by a pre-release version and -// build metadata. - -// Note that the only major, minor, patch, and pre-release sections of -// the version string are capturing groups. The build metadata is not a -// capturing group, because it should not ever be used in version -// comparison. - -var FULL = R++; -var FULLPLAIN = 'v?' + src[MAINVERSION] + - src[PRERELEASE] + '?' + - src[BUILD] + '?'; - -src[FULL] = '^' + FULLPLAIN + '$'; - -// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. -// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty -// common in the npm registry. -var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] + - src[PRERELEASELOOSE] + '?' + - src[BUILD] + '?'; - -var LOOSE = R++; -src[LOOSE] = '^' + LOOSEPLAIN + '$'; - -var GTLT = R++; -src[GTLT] = '((?:<|>)?=?)'; - -// Something like "2.*" or "1.2.x". -// Note that "x.x" is a valid xRange identifer, meaning "any version" -// Only the first item is strictly required. -var XRANGEIDENTIFIERLOOSE = R++; -src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'; -var XRANGEIDENTIFIER = R++; -src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*'; - -var XRANGEPLAIN = R++; -src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + - '(?:' + src[PRERELEASE] + ')?' + - src[BUILD] + '?' + - ')?)?'; - -var XRANGEPLAINLOOSE = R++; -src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + - '(?:' + src[PRERELEASELOOSE] + ')?' + - src[BUILD] + '?' + - ')?)?'; - -var XRANGE = R++; -src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$'; -var XRANGELOOSE = R++; -src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$'; - -// Tilde ranges. -// Meaning is "reasonably at or greater than" -var LONETILDE = R++; -src[LONETILDE] = '(?:~>?)'; - -var TILDETRIM = R++; -src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+'; -re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g'); -var tildeTrimReplace = '$1~'; - -var TILDE = R++; -src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'; -var TILDELOOSE = R++; -src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'; - -// Caret ranges. -// Meaning is "at least and backwards compatible with" -var LONECARET = R++; -src[LONECARET] = '(?:\\^)'; - -var CARETTRIM = R++; -src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+'; -re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g'); -var caretTrimReplace = '$1^'; - -var CARET = R++; -src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'; -var CARETLOOSE = R++; -src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'; - -// A simple gt/lt/eq thing, or just "" to indicate "any version" -var COMPARATORLOOSE = R++; -src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$'; -var COMPARATOR = R++; -src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$'; - - -// An expression to strip any whitespace between the gtlt and the thing -// it modifies, so that `> 1.2.3` ==> `>1.2.3` -var COMPARATORTRIM = R++; -src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] + - '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'; - -// this one has to use the /g flag -re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g'); -var comparatorTrimReplace = '$1$2$3'; - - -// Something like `1.2.3 - 1.2.4` -// Note that these all use the loose form, because they'll be -// checked against either the strict or loose comparator form -// later. -var HYPHENRANGE = R++; -src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' + - '\\s+-\\s+' + - '(' + src[XRANGEPLAIN] + ')' + - '\\s*$'; - -var HYPHENRANGELOOSE = R++; -src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' + - '\\s+-\\s+' + - '(' + src[XRANGEPLAINLOOSE] + ')' + - '\\s*$'; - -// Star ranges basically just allow anything at all. -var STAR = R++; -src[STAR] = '(<|>)?=?\\s*\\*'; - -// Compile to actual regexp objects. -// All are flag-free, unless they were created above with a flag. -for (var i = 0; i < R; i++) { - ; - if (!re[i]) - re[i] = new RegExp(src[i]); -} - -exports.parse = parse; -function parse(version, loose) { - if (version instanceof SemVer) - return version; - - if (typeof version !== 'string') - return null; - - if (version.length > MAX_LENGTH) - return null; - - var r = loose ? re[LOOSE] : re[FULL]; - if (!r.test(version)) - return null; - - try { - return new SemVer(version, loose); - } catch (er) { - return null; - } -} - -exports.valid = valid; -function valid(version, loose) { - var v = parse(version, loose); - return v ? v.version : null; -} - - -exports.clean = clean; -function clean(version, loose) { - var s = parse(version.trim().replace(/^[=v]+/, ''), loose); - return s ? s.version : null; -} - -exports.SemVer = SemVer; - -function SemVer(version, loose) { - if (version instanceof SemVer) { - if (version.loose === loose) - return version; - else - version = version.version; - } else if (typeof version !== 'string') { - throw new TypeError('Invalid Version: ' + version); - } - - if (version.length > MAX_LENGTH) - throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') - - if (!(this instanceof SemVer)) - return new SemVer(version, loose); - - ; - this.loose = loose; - var m = version.trim().match(loose ? re[LOOSE] : re[FULL]); - - if (!m) - throw new TypeError('Invalid Version: ' + version); - - this.raw = version; - - // these are actually numbers - this.major = +m[1]; - this.minor = +m[2]; - this.patch = +m[3]; - - if (this.major > MAX_SAFE_INTEGER || this.major < 0) - throw new TypeError('Invalid major version') - - if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) - throw new TypeError('Invalid minor version') - - if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) - throw new TypeError('Invalid patch version') - - // numberify any prerelease numeric ids - if (!m[4]) - this.prerelease = []; - else - this.prerelease = m[4].split('.').map(function(id) { - if (/^[0-9]+$/.test(id)) { - var num = +id - if (num >= 0 && num < MAX_SAFE_INTEGER) - return num - } - return id; - }); - - this.build = m[5] ? m[5].split('.') : []; - this.format(); -} - -SemVer.prototype.format = function() { - this.version = this.major + '.' + this.minor + '.' + this.patch; - if (this.prerelease.length) - this.version += '-' + this.prerelease.join('.'); - return this.version; -}; - -SemVer.prototype.inspect = function() { - return ''; -}; - -SemVer.prototype.toString = function() { - return this.version; -}; - -SemVer.prototype.compare = function(other) { - ; - if (!(other instanceof SemVer)) - other = new SemVer(other, this.loose); - - return this.compareMain(other) || this.comparePre(other); -}; - -SemVer.prototype.compareMain = function(other) { - if (!(other instanceof SemVer)) - other = new SemVer(other, this.loose); - - return compareIdentifiers(this.major, other.major) || - compareIdentifiers(this.minor, other.minor) || - compareIdentifiers(this.patch, other.patch); -}; - -SemVer.prototype.comparePre = function(other) { - if (!(other instanceof SemVer)) - other = new SemVer(other, this.loose); - - // NOT having a prerelease is > having one - if (this.prerelease.length && !other.prerelease.length) - return -1; - else if (!this.prerelease.length && other.prerelease.length) - return 1; - else if (!this.prerelease.length && !other.prerelease.length) - return 0; - - var i = 0; - do { - var a = this.prerelease[i]; - var b = other.prerelease[i]; - ; - if (a === undefined && b === undefined) - return 0; - else if (b === undefined) - return 1; - else if (a === undefined) - return -1; - else if (a === b) - continue; - else - return compareIdentifiers(a, b); - } while (++i); -}; - -// preminor will bump the version up to the next minor release, and immediately -// down to pre-release. premajor and prepatch work the same way. -SemVer.prototype.inc = function(release, identifier) { - switch (release) { - case 'premajor': - this.prerelease.length = 0; - this.patch = 0; - this.minor = 0; - this.major++; - this.inc('pre', identifier); - break; - case 'preminor': - this.prerelease.length = 0; - this.patch = 0; - this.minor++; - this.inc('pre', identifier); - break; - case 'prepatch': - // If this is already a prerelease, it will bump to the next version - // drop any prereleases that might already exist, since they are not - // relevant at this point. - this.prerelease.length = 0; - this.inc('patch', identifier); - this.inc('pre', identifier); - break; - // If the input is a non-prerelease version, this acts the same as - // prepatch. - case 'prerelease': - if (this.prerelease.length === 0) - this.inc('patch', identifier); - this.inc('pre', identifier); - break; - - case 'major': - // If this is a pre-major version, bump up to the same major version. - // Otherwise increment major. - // 1.0.0-5 bumps to 1.0.0 - // 1.1.0 bumps to 2.0.0 - if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) - this.major++; - this.minor = 0; - this.patch = 0; - this.prerelease = []; - break; - case 'minor': - // If this is a pre-minor version, bump up to the same minor version. - // Otherwise increment minor. - // 1.2.0-5 bumps to 1.2.0 - // 1.2.1 bumps to 1.3.0 - if (this.patch !== 0 || this.prerelease.length === 0) - this.minor++; - this.patch = 0; - this.prerelease = []; - break; - case 'patch': - // If this is not a pre-release version, it will increment the patch. - // If it is a pre-release it will bump up to the same patch version. - // 1.2.0-5 patches to 1.2.0 - // 1.2.0 patches to 1.2.1 - if (this.prerelease.length === 0) - this.patch++; - this.prerelease = []; - break; - // This probably shouldn't be used publicly. - // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. - case 'pre': - if (this.prerelease.length === 0) - this.prerelease = [0]; - else { - var i = this.prerelease.length; - while (--i >= 0) { - if (typeof this.prerelease[i] === 'number') { - this.prerelease[i]++; - i = -2; - } - } - if (i === -1) // didn't increment anything - this.prerelease.push(0); - } - if (identifier) { - // 1.2.0-beta.1 bumps to 1.2.0-beta.2, - // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 - if (this.prerelease[0] === identifier) { - if (isNaN(this.prerelease[1])) - this.prerelease = [identifier, 0]; - } else - this.prerelease = [identifier, 0]; - } - break; - - default: - throw new Error('invalid increment argument: ' + release); - } - this.format(); - return this; -}; - -exports.inc = inc; -function inc(version, release, loose, identifier) { - if (typeof(loose) === 'string') { - identifier = loose; - loose = undefined; - } - - try { - return new SemVer(version, loose).inc(release, identifier).version; - } catch (er) { - return null; - } -} - -exports.diff = diff; -function diff(version1, version2) { - if (eq(version1, version2)) { - return null; - } else { - var v1 = parse(version1); - var v2 = parse(version2); - if (v1.prerelease.length || v2.prerelease.length) { - for (var key in v1) { - if (key === 'major' || key === 'minor' || key === 'patch') { - if (v1[key] !== v2[key]) { - return 'pre'+key; - } - } - } - return 'prerelease'; - } - for (var key in v1) { - if (key === 'major' || key === 'minor' || key === 'patch') { - if (v1[key] !== v2[key]) { - return key; - } - } - } - } -} - -exports.compareIdentifiers = compareIdentifiers; - -var numeric = /^[0-9]+$/; -function compareIdentifiers(a, b) { - var anum = numeric.test(a); - var bnum = numeric.test(b); - - if (anum && bnum) { - a = +a; - b = +b; - } - - return (anum && !bnum) ? -1 : - (bnum && !anum) ? 1 : - a < b ? -1 : - a > b ? 1 : - 0; -} - -exports.rcompareIdentifiers = rcompareIdentifiers; -function rcompareIdentifiers(a, b) { - return compareIdentifiers(b, a); -} - -exports.major = major; -function major(a, loose) { - return new SemVer(a, loose).major; -} - -exports.minor = minor; -function minor(a, loose) { - return new SemVer(a, loose).minor; -} - -exports.patch = patch; -function patch(a, loose) { - return new SemVer(a, loose).patch; -} - -exports.compare = compare; -function compare(a, b, loose) { - return new SemVer(a, loose).compare(b); -} - -exports.compareLoose = compareLoose; -function compareLoose(a, b) { - return compare(a, b, true); -} - -exports.rcompare = rcompare; -function rcompare(a, b, loose) { - return compare(b, a, loose); -} - -exports.sort = sort; -function sort(list, loose) { - return list.sort(function(a, b) { - return exports.compare(a, b, loose); - }); -} - -exports.rsort = rsort; -function rsort(list, loose) { - return list.sort(function(a, b) { - return exports.rcompare(a, b, loose); - }); -} - -exports.gt = gt; -function gt(a, b, loose) { - return compare(a, b, loose) > 0; -} - -exports.lt = lt; -function lt(a, b, loose) { - return compare(a, b, loose) < 0; -} - -exports.eq = eq; -function eq(a, b, loose) { - return compare(a, b, loose) === 0; -} - -exports.neq = neq; -function neq(a, b, loose) { - return compare(a, b, loose) !== 0; -} - -exports.gte = gte; -function gte(a, b, loose) { - return compare(a, b, loose) >= 0; -} - -exports.lte = lte; -function lte(a, b, loose) { - return compare(a, b, loose) <= 0; -} - -exports.cmp = cmp; -function cmp(a, op, b, loose) { - var ret; - switch (op) { - case '===': - if (typeof a === 'object') a = a.version; - if (typeof b === 'object') b = b.version; - ret = a === b; - break; - case '!==': - if (typeof a === 'object') a = a.version; - if (typeof b === 'object') b = b.version; - ret = a !== b; - break; - case '': case '=': case '==': ret = eq(a, b, loose); break; - case '!=': ret = neq(a, b, loose); break; - case '>': ret = gt(a, b, loose); break; - case '>=': ret = gte(a, b, loose); break; - case '<': ret = lt(a, b, loose); break; - case '<=': ret = lte(a, b, loose); break; - default: throw new TypeError('Invalid operator: ' + op); - } - return ret; -} - -exports.Comparator = Comparator; -function Comparator(comp, loose) { - if (comp instanceof Comparator) { - if (comp.loose === loose) - return comp; - else - comp = comp.value; - } - - if (!(this instanceof Comparator)) - return new Comparator(comp, loose); - - ; - this.loose = loose; - this.parse(comp); - - if (this.semver === ANY) - this.value = ''; - else - this.value = this.operator + this.semver.version; - - ; -} - -var ANY = {}; -Comparator.prototype.parse = function(comp) { - var r = this.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]; - var m = comp.match(r); - - if (!m) - throw new TypeError('Invalid comparator: ' + comp); - - this.operator = m[1]; - if (this.operator === '=') - this.operator = ''; - - // if it literally is just '>' or '' then allow anything. - if (!m[2]) - this.semver = ANY; - else - this.semver = new SemVer(m[2], this.loose); -}; - -Comparator.prototype.inspect = function() { - return ''; -}; - -Comparator.prototype.toString = function() { - return this.value; -}; - -Comparator.prototype.test = function(version) { - ; - - if (this.semver === ANY) - return true; - - if (typeof version === 'string') - version = new SemVer(version, this.loose); - - return cmp(version, this.operator, this.semver, this.loose); -}; - - -exports.Range = Range; -function Range(range, loose) { - if ((range instanceof Range) && range.loose === loose) - return range; - - if (!(this instanceof Range)) - return new Range(range, loose); - - this.loose = loose; - - // First, split based on boolean or || - this.raw = range; - this.set = range.split(/\s*\|\|\s*/).map(function(range) { - return this.parseRange(range.trim()); - }, this).filter(function(c) { - // throw out any that are not relevant for whatever reason - return c.length; - }); - - if (!this.set.length) { - throw new TypeError('Invalid SemVer Range: ' + range); - } - - this.format(); -} - -Range.prototype.inspect = function() { - return ''; -}; - -Range.prototype.format = function() { - this.range = this.set.map(function(comps) { - return comps.join(' ').trim(); - }).join('||').trim(); - return this.range; -}; - -Range.prototype.toString = function() { - return this.range; -}; - -Range.prototype.parseRange = function(range) { - var loose = this.loose; - range = range.trim(); - ; - // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` - var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE]; - range = range.replace(hr, hyphenReplace); - ; - // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` - range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace); - ; - - // `~ 1.2.3` => `~1.2.3` - range = range.replace(re[TILDETRIM], tildeTrimReplace); - - // `^ 1.2.3` => `^1.2.3` - range = range.replace(re[CARETTRIM], caretTrimReplace); - - // normalize spaces - range = range.split(/\s+/).join(' '); - - // At this point, the range is completely trimmed and - // ready to be split into comparators. - - var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR]; - var set = range.split(' ').map(function(comp) { - return parseComparator(comp, loose); - }).join(' ').split(/\s+/); - if (this.loose) { - // in loose mode, throw out any that are not valid comparators - set = set.filter(function(comp) { - return !!comp.match(compRe); - }); - } - set = set.map(function(comp) { - return new Comparator(comp, loose); - }); - - return set; -}; - -// Mostly just for testing and legacy API reasons -exports.toComparators = toComparators; -function toComparators(range, loose) { - return new Range(range, loose).set.map(function(comp) { - return comp.map(function(c) { - return c.value; - }).join(' ').trim().split(' '); - }); -} - -// comprised of xranges, tildes, stars, and gtlt's at this point. -// already replaced the hyphen ranges -// turn into a set of JUST comparators. -function parseComparator(comp, loose) { - ; - comp = replaceCarets(comp, loose); - ; - comp = replaceTildes(comp, loose); - ; - comp = replaceXRanges(comp, loose); - ; - comp = replaceStars(comp, loose); - ; - return comp; -} - -function isX(id) { - return !id || id.toLowerCase() === 'x' || id === '*'; -} - -// ~, ~> --> * (any, kinda silly) -// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 -// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 -// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 -// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 -// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 -function replaceTildes(comp, loose) { - return comp.trim().split(/\s+/).map(function(comp) { - return replaceTilde(comp, loose); - }).join(' '); -} - -function replaceTilde(comp, loose) { - var r = loose ? re[TILDELOOSE] : re[TILDE]; - return comp.replace(r, function(_, M, m, p, pr) { - ; - var ret; - - if (isX(M)) - ret = ''; - else if (isX(m)) - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - else if (isX(p)) - // ~1.2 == >=1.2.0- <1.3.0- - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - else if (pr) { - ; - if (pr.charAt(0) !== '-') - pr = '-' + pr; - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + (+m + 1) + '.0'; - } else - // ~1.2.3 == >=1.2.3 <1.3.0 - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0'; - - ; - return ret; - }); -} - -// ^ --> * (any, kinda silly) -// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 -// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 -// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 -// ^1.2.3 --> >=1.2.3 <2.0.0 -// ^1.2.0 --> >=1.2.0 <2.0.0 -function replaceCarets(comp, loose) { - return comp.trim().split(/\s+/).map(function(comp) { - return replaceCaret(comp, loose); - }).join(' '); -} - -function replaceCaret(comp, loose) { - ; - var r = loose ? re[CARETLOOSE] : re[CARET]; - return comp.replace(r, function(_, M, m, p, pr) { - ; - var ret; - - if (isX(M)) - ret = ''; - else if (isX(m)) - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - else if (isX(p)) { - if (M === '0') - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - else - ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'; - } else if (pr) { - ; - if (pr.charAt(0) !== '-') - pr = '-' + pr; - if (M === '0') { - if (m === '0') - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + m + '.' + (+p + 1); - else - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + (+m + 1) + '.0'; - } else - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + (+M + 1) + '.0.0'; - } else { - ; - if (M === '0') { - if (m === '0') - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + m + '.' + (+p + 1); - else - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0'; - } else - ret = '>=' + M + '.' + m + '.' + p + - ' <' + (+M + 1) + '.0.0'; - } - - ; - return ret; - }); -} - -function replaceXRanges(comp, loose) { - ; - return comp.split(/\s+/).map(function(comp) { - return replaceXRange(comp, loose); - }).join(' '); -} - -function replaceXRange(comp, loose) { - comp = comp.trim(); - var r = loose ? re[XRANGELOOSE] : re[XRANGE]; - return comp.replace(r, function(ret, gtlt, M, m, p, pr) { - ; - var xM = isX(M); - var xm = xM || isX(m); - var xp = xm || isX(p); - var anyX = xp; - - if (gtlt === '=' && anyX) - gtlt = ''; - - if (xM) { - if (gtlt === '>' || gtlt === '<') { - // nothing is allowed - ret = '<0.0.0'; - } else { - // nothing is forbidden - ret = '*'; - } - } else if (gtlt && anyX) { - // replace X with 0 - if (xm) - m = 0; - if (xp) - p = 0; - - if (gtlt === '>') { - // >1 => >=2.0.0 - // >1.2 => >=1.3.0 - // >1.2.3 => >= 1.2.4 - gtlt = '>='; - if (xm) { - M = +M + 1; - m = 0; - p = 0; - } else if (xp) { - m = +m + 1; - p = 0; - } - } else if (gtlt === '<=') { - // <=0.7.x is actually <0.8.0, since any 0.7.x should - // pass. Similarly, <=7.x is actually <8.0.0, etc. - gtlt = '<' - if (xm) - M = +M + 1 - else - m = +m + 1 - } - - ret = gtlt + M + '.' + m + '.' + p; - } else if (xm) { - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - } else if (xp) { - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - } - - ; - - return ret; - }); -} - -// Because * is AND-ed with everything else in the comparator, -// and '' means "any version", just remove the *s entirely. -function replaceStars(comp, loose) { - ; - // Looseness is ignored here. star is always as loose as it gets! - return comp.trim().replace(re[STAR], ''); -} - -// This function is passed to string.replace(re[HYPHENRANGE]) -// M, m, patch, prerelease, build -// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 -// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do -// 1.2 - 3.4 => >=1.2.0 <3.5.0 -function hyphenReplace($0, - from, fM, fm, fp, fpr, fb, - to, tM, tm, tp, tpr, tb) { - - if (isX(fM)) - from = ''; - else if (isX(fm)) - from = '>=' + fM + '.0.0'; - else if (isX(fp)) - from = '>=' + fM + '.' + fm + '.0'; - else - from = '>=' + from; - - if (isX(tM)) - to = ''; - else if (isX(tm)) - to = '<' + (+tM + 1) + '.0.0'; - else if (isX(tp)) - to = '<' + tM + '.' + (+tm + 1) + '.0'; - else if (tpr) - to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr; - else - to = '<=' + to; - - return (from + ' ' + to).trim(); -} - - -// if ANY of the sets match ALL of its comparators, then pass -Range.prototype.test = function(version) { - if (!version) - return false; - - if (typeof version === 'string') - version = new SemVer(version, this.loose); - - for (var i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version)) - return true; - } - return false; -}; - -function testSet(set, version) { - for (var i = 0; i < set.length; i++) { - if (!set[i].test(version)) - return false; - } - - if (version.prerelease.length) { - // Find the set of versions that are allowed to have prereleases - // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 - // That should allow `1.2.3-pr.2` to pass. - // However, `1.2.4-alpha.notready` should NOT be allowed, - // even though it's within the range set by the comparators. - for (var i = 0; i < set.length; i++) { - ; - if (set[i].semver === ANY) - continue; - - if (set[i].semver.prerelease.length > 0) { - var allowed = set[i].semver; - if (allowed.major === version.major && - allowed.minor === version.minor && - allowed.patch === version.patch) - return true; - } - } - - // Version has a -pre, but it's not one of the ones we like. - return false; - } - - return true; -} - -exports.satisfies = satisfies; -function satisfies(version, range, loose) { - try { - range = new Range(range, loose); - } catch (er) { - return false; - } - return range.test(version); -} - -exports.maxSatisfying = maxSatisfying; -function maxSatisfying(versions, range, loose) { - return versions.filter(function(version) { - return satisfies(version, range, loose); - }).sort(function(a, b) { - return rcompare(a, b, loose); - })[0] || null; -} - -exports.validRange = validRange; -function validRange(range, loose) { - try { - // Return '*' instead of '' so that truthiness works. - // This will throw if it's invalid anyway - return new Range(range, loose).range || '*'; - } catch (er) { - return null; - } -} - -// Determine if version is less than all the versions possible in the range -exports.ltr = ltr; -function ltr(version, range, loose) { - return outside(version, range, '<', loose); -} - -// Determine if version is greater than all the versions possible in the range. -exports.gtr = gtr; -function gtr(version, range, loose) { - return outside(version, range, '>', loose); -} - -exports.outside = outside; -function outside(version, range, hilo, loose) { - version = new SemVer(version, loose); - range = new Range(range, loose); - - var gtfn, ltefn, ltfn, comp, ecomp; - switch (hilo) { - case '>': - gtfn = gt; - ltefn = lte; - ltfn = lt; - comp = '>'; - ecomp = '>='; - break; - case '<': - gtfn = lt; - ltefn = gte; - ltfn = gt; - comp = '<'; - ecomp = '<='; - break; - default: - throw new TypeError('Must provide a hilo val of "<" or ">"'); - } - - // If it satisifes the range it is not outside - if (satisfies(version, range, loose)) { - return false; - } - - // From now on, variable terms are as if we're in "gtr" mode. - // but note that everything is flipped for the "ltr" function. - - for (var i = 0; i < range.set.length; ++i) { - var comparators = range.set[i]; - - var high = null; - var low = null; - - comparators.forEach(function(comparator) { - if (comparator.semver === ANY) { - comparator = new Comparator('>=0.0.0') - } - high = high || comparator; - low = low || comparator; - if (gtfn(comparator.semver, high.semver, loose)) { - high = comparator; - } else if (ltfn(comparator.semver, low.semver, loose)) { - low = comparator; - } - }); - - // If the edge version comparator has a operator then our version - // isn't outside it - if (high.operator === comp || high.operator === ecomp) { - return false; - } - - // If the lowest version comparator has an operator and our version - // is less than it then it isn't higher than the range - if ((!low.operator || low.operator === comp) && - ltefn(version, low.semver)) { - return false; - } else if (low.operator === ecomp && ltfn(version, low.semver)) { - return false; - } - } - return true; -} - -// Use the define() function if we're in AMD land -if (typeof define === 'function' && define.amd) - define(exports); - -})( - typeof exports === 'object' ? exports : - typeof define === 'function' && define.amd ? {} : - semver = {} -); diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/semver.browser.js.gz b/deps/npm/node_modules/node-gyp/node_modules/semver/semver.browser.js.gz deleted file mode 100644 index d67009d8ad2c..000000000000 Binary files a/deps/npm/node_modules/node-gyp/node_modules/semver/semver.browser.js.gz and /dev/null differ diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/semver.js b/deps/npm/node_modules/node-gyp/node_modules/semver/semver.js deleted file mode 100644 index cafcc006b06d..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/semver/semver.js +++ /dev/null @@ -1,1205 +0,0 @@ -// export the class if we are in a Node-like system. -if (typeof module === 'object' && module.exports === exports) - exports = module.exports = SemVer; - -// The debug function is excluded entirely from the minified version. -/* nomin */ var debug; -/* nomin */ if (typeof process === 'object' && - /* nomin */ process.env && - /* nomin */ process.env.NODE_DEBUG && - /* nomin */ /\bsemver\b/i.test(process.env.NODE_DEBUG)) - /* nomin */ debug = function() { - /* nomin */ var args = Array.prototype.slice.call(arguments, 0); - /* nomin */ args.unshift('SEMVER'); - /* nomin */ console.log.apply(console, args); - /* nomin */ }; -/* nomin */ else - /* nomin */ debug = function() {}; - -// Note: this is the semver.org version of the spec that it implements -// Not necessarily the package version of this code. -exports.SEMVER_SPEC_VERSION = '2.0.0'; - -var MAX_LENGTH = 256; -var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; - -// The actual regexps go on exports.re -var re = exports.re = []; -var src = exports.src = []; -var R = 0; - -// The following Regular Expressions can be used for tokenizing, -// validating, and parsing SemVer version strings. - -// ## Numeric Identifier -// A single `0`, or a non-zero digit followed by zero or more digits. - -var NUMERICIDENTIFIER = R++; -src[NUMERICIDENTIFIER] = '0|[1-9]\\d*'; -var NUMERICIDENTIFIERLOOSE = R++; -src[NUMERICIDENTIFIERLOOSE] = '[0-9]+'; - - -// ## Non-numeric Identifier -// Zero or more digits, followed by a letter or hyphen, and then zero or -// more letters, digits, or hyphens. - -var NONNUMERICIDENTIFIER = R++; -src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'; - - -// ## Main Version -// Three dot-separated numeric identifiers. - -var MAINVERSION = R++; -src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' + - '(' + src[NUMERICIDENTIFIER] + ')\\.' + - '(' + src[NUMERICIDENTIFIER] + ')'; - -var MAINVERSIONLOOSE = R++; -src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[NUMERICIDENTIFIERLOOSE] + ')'; - -// ## Pre-release Version Identifier -// A numeric identifier, or a non-numeric identifier. - -var PRERELEASEIDENTIFIER = R++; -src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] + - '|' + src[NONNUMERICIDENTIFIER] + ')'; - -var PRERELEASEIDENTIFIERLOOSE = R++; -src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] + - '|' + src[NONNUMERICIDENTIFIER] + ')'; - - -// ## Pre-release Version -// Hyphen, followed by one or more dot-separated pre-release version -// identifiers. - -var PRERELEASE = R++; -src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] + - '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))'; - -var PRERELEASELOOSE = R++; -src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] + - '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'; - -// ## Build Metadata Identifier -// Any combination of digits, letters, or hyphens. - -var BUILDIDENTIFIER = R++; -src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'; - -// ## Build Metadata -// Plus sign, followed by one or more period-separated build metadata -// identifiers. - -var BUILD = R++; -src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] + - '(?:\\.' + src[BUILDIDENTIFIER] + ')*))'; - - -// ## Full Version String -// A main version, followed optionally by a pre-release version and -// build metadata. - -// Note that the only major, minor, patch, and pre-release sections of -// the version string are capturing groups. The build metadata is not a -// capturing group, because it should not ever be used in version -// comparison. - -var FULL = R++; -var FULLPLAIN = 'v?' + src[MAINVERSION] + - src[PRERELEASE] + '?' + - src[BUILD] + '?'; - -src[FULL] = '^' + FULLPLAIN + '$'; - -// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. -// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty -// common in the npm registry. -var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] + - src[PRERELEASELOOSE] + '?' + - src[BUILD] + '?'; - -var LOOSE = R++; -src[LOOSE] = '^' + LOOSEPLAIN + '$'; - -var GTLT = R++; -src[GTLT] = '((?:<|>)?=?)'; - -// Something like "2.*" or "1.2.x". -// Note that "x.x" is a valid xRange identifer, meaning "any version" -// Only the first item is strictly required. -var XRANGEIDENTIFIERLOOSE = R++; -src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'; -var XRANGEIDENTIFIER = R++; -src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*'; - -var XRANGEPLAIN = R++; -src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + - '(?:' + src[PRERELEASE] + ')?' + - src[BUILD] + '?' + - ')?)?'; - -var XRANGEPLAINLOOSE = R++; -src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + - '(?:' + src[PRERELEASELOOSE] + ')?' + - src[BUILD] + '?' + - ')?)?'; - -var XRANGE = R++; -src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$'; -var XRANGELOOSE = R++; -src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$'; - -// Tilde ranges. -// Meaning is "reasonably at or greater than" -var LONETILDE = R++; -src[LONETILDE] = '(?:~>?)'; - -var TILDETRIM = R++; -src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+'; -re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g'); -var tildeTrimReplace = '$1~'; - -var TILDE = R++; -src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'; -var TILDELOOSE = R++; -src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'; - -// Caret ranges. -// Meaning is "at least and backwards compatible with" -var LONECARET = R++; -src[LONECARET] = '(?:\\^)'; - -var CARETTRIM = R++; -src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+'; -re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g'); -var caretTrimReplace = '$1^'; - -var CARET = R++; -src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'; -var CARETLOOSE = R++; -src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'; - -// A simple gt/lt/eq thing, or just "" to indicate "any version" -var COMPARATORLOOSE = R++; -src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$'; -var COMPARATOR = R++; -src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$'; - - -// An expression to strip any whitespace between the gtlt and the thing -// it modifies, so that `> 1.2.3` ==> `>1.2.3` -var COMPARATORTRIM = R++; -src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] + - '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'; - -// this one has to use the /g flag -re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g'); -var comparatorTrimReplace = '$1$2$3'; - - -// Something like `1.2.3 - 1.2.4` -// Note that these all use the loose form, because they'll be -// checked against either the strict or loose comparator form -// later. -var HYPHENRANGE = R++; -src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' + - '\\s+-\\s+' + - '(' + src[XRANGEPLAIN] + ')' + - '\\s*$'; - -var HYPHENRANGELOOSE = R++; -src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' + - '\\s+-\\s+' + - '(' + src[XRANGEPLAINLOOSE] + ')' + - '\\s*$'; - -// Star ranges basically just allow anything at all. -var STAR = R++; -src[STAR] = '(<|>)?=?\\s*\\*'; - -// Compile to actual regexp objects. -// All are flag-free, unless they were created above with a flag. -for (var i = 0; i < R; i++) { - debug(i, src[i]); - if (!re[i]) - re[i] = new RegExp(src[i]); -} - -exports.parse = parse; -function parse(version, loose) { - if (version instanceof SemVer) - return version; - - if (typeof version !== 'string') - return null; - - if (version.length > MAX_LENGTH) - return null; - - var r = loose ? re[LOOSE] : re[FULL]; - if (!r.test(version)) - return null; - - try { - return new SemVer(version, loose); - } catch (er) { - return null; - } -} - -exports.valid = valid; -function valid(version, loose) { - var v = parse(version, loose); - return v ? v.version : null; -} - - -exports.clean = clean; -function clean(version, loose) { - var s = parse(version.trim().replace(/^[=v]+/, ''), loose); - return s ? s.version : null; -} - -exports.SemVer = SemVer; - -function SemVer(version, loose) { - if (version instanceof SemVer) { - if (version.loose === loose) - return version; - else - version = version.version; - } else if (typeof version !== 'string') { - throw new TypeError('Invalid Version: ' + version); - } - - if (version.length > MAX_LENGTH) - throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') - - if (!(this instanceof SemVer)) - return new SemVer(version, loose); - - debug('SemVer', version, loose); - this.loose = loose; - var m = version.trim().match(loose ? re[LOOSE] : re[FULL]); - - if (!m) - throw new TypeError('Invalid Version: ' + version); - - this.raw = version; - - // these are actually numbers - this.major = +m[1]; - this.minor = +m[2]; - this.patch = +m[3]; - - if (this.major > MAX_SAFE_INTEGER || this.major < 0) - throw new TypeError('Invalid major version') - - if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) - throw new TypeError('Invalid minor version') - - if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) - throw new TypeError('Invalid patch version') - - // numberify any prerelease numeric ids - if (!m[4]) - this.prerelease = []; - else - this.prerelease = m[4].split('.').map(function(id) { - if (/^[0-9]+$/.test(id)) { - var num = +id - if (num >= 0 && num < MAX_SAFE_INTEGER) - return num - } - return id; - }); - - this.build = m[5] ? m[5].split('.') : []; - this.format(); -} - -SemVer.prototype.format = function() { - this.version = this.major + '.' + this.minor + '.' + this.patch; - if (this.prerelease.length) - this.version += '-' + this.prerelease.join('.'); - return this.version; -}; - -SemVer.prototype.inspect = function() { - return ''; -}; - -SemVer.prototype.toString = function() { - return this.version; -}; - -SemVer.prototype.compare = function(other) { - debug('SemVer.compare', this.version, this.loose, other); - if (!(other instanceof SemVer)) - other = new SemVer(other, this.loose); - - return this.compareMain(other) || this.comparePre(other); -}; - -SemVer.prototype.compareMain = function(other) { - if (!(other instanceof SemVer)) - other = new SemVer(other, this.loose); - - return compareIdentifiers(this.major, other.major) || - compareIdentifiers(this.minor, other.minor) || - compareIdentifiers(this.patch, other.patch); -}; - -SemVer.prototype.comparePre = function(other) { - if (!(other instanceof SemVer)) - other = new SemVer(other, this.loose); - - // NOT having a prerelease is > having one - if (this.prerelease.length && !other.prerelease.length) - return -1; - else if (!this.prerelease.length && other.prerelease.length) - return 1; - else if (!this.prerelease.length && !other.prerelease.length) - return 0; - - var i = 0; - do { - var a = this.prerelease[i]; - var b = other.prerelease[i]; - debug('prerelease compare', i, a, b); - if (a === undefined && b === undefined) - return 0; - else if (b === undefined) - return 1; - else if (a === undefined) - return -1; - else if (a === b) - continue; - else - return compareIdentifiers(a, b); - } while (++i); -}; - -// preminor will bump the version up to the next minor release, and immediately -// down to pre-release. premajor and prepatch work the same way. -SemVer.prototype.inc = function(release, identifier) { - switch (release) { - case 'premajor': - this.prerelease.length = 0; - this.patch = 0; - this.minor = 0; - this.major++; - this.inc('pre', identifier); - break; - case 'preminor': - this.prerelease.length = 0; - this.patch = 0; - this.minor++; - this.inc('pre', identifier); - break; - case 'prepatch': - // If this is already a prerelease, it will bump to the next version - // drop any prereleases that might already exist, since they are not - // relevant at this point. - this.prerelease.length = 0; - this.inc('patch', identifier); - this.inc('pre', identifier); - break; - // If the input is a non-prerelease version, this acts the same as - // prepatch. - case 'prerelease': - if (this.prerelease.length === 0) - this.inc('patch', identifier); - this.inc('pre', identifier); - break; - - case 'major': - // If this is a pre-major version, bump up to the same major version. - // Otherwise increment major. - // 1.0.0-5 bumps to 1.0.0 - // 1.1.0 bumps to 2.0.0 - if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) - this.major++; - this.minor = 0; - this.patch = 0; - this.prerelease = []; - break; - case 'minor': - // If this is a pre-minor version, bump up to the same minor version. - // Otherwise increment minor. - // 1.2.0-5 bumps to 1.2.0 - // 1.2.1 bumps to 1.3.0 - if (this.patch !== 0 || this.prerelease.length === 0) - this.minor++; - this.patch = 0; - this.prerelease = []; - break; - case 'patch': - // If this is not a pre-release version, it will increment the patch. - // If it is a pre-release it will bump up to the same patch version. - // 1.2.0-5 patches to 1.2.0 - // 1.2.0 patches to 1.2.1 - if (this.prerelease.length === 0) - this.patch++; - this.prerelease = []; - break; - // This probably shouldn't be used publicly. - // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. - case 'pre': - if (this.prerelease.length === 0) - this.prerelease = [0]; - else { - var i = this.prerelease.length; - while (--i >= 0) { - if (typeof this.prerelease[i] === 'number') { - this.prerelease[i]++; - i = -2; - } - } - if (i === -1) // didn't increment anything - this.prerelease.push(0); - } - if (identifier) { - // 1.2.0-beta.1 bumps to 1.2.0-beta.2, - // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 - if (this.prerelease[0] === identifier) { - if (isNaN(this.prerelease[1])) - this.prerelease = [identifier, 0]; - } else - this.prerelease = [identifier, 0]; - } - break; - - default: - throw new Error('invalid increment argument: ' + release); - } - this.format(); - return this; -}; - -exports.inc = inc; -function inc(version, release, loose, identifier) { - if (typeof(loose) === 'string') { - identifier = loose; - loose = undefined; - } - - try { - return new SemVer(version, loose).inc(release, identifier).version; - } catch (er) { - return null; - } -} - -exports.diff = diff; -function diff(version1, version2) { - if (eq(version1, version2)) { - return null; - } else { - var v1 = parse(version1); - var v2 = parse(version2); - if (v1.prerelease.length || v2.prerelease.length) { - for (var key in v1) { - if (key === 'major' || key === 'minor' || key === 'patch') { - if (v1[key] !== v2[key]) { - return 'pre'+key; - } - } - } - return 'prerelease'; - } - for (var key in v1) { - if (key === 'major' || key === 'minor' || key === 'patch') { - if (v1[key] !== v2[key]) { - return key; - } - } - } - } -} - -exports.compareIdentifiers = compareIdentifiers; - -var numeric = /^[0-9]+$/; -function compareIdentifiers(a, b) { - var anum = numeric.test(a); - var bnum = numeric.test(b); - - if (anum && bnum) { - a = +a; - b = +b; - } - - return (anum && !bnum) ? -1 : - (bnum && !anum) ? 1 : - a < b ? -1 : - a > b ? 1 : - 0; -} - -exports.rcompareIdentifiers = rcompareIdentifiers; -function rcompareIdentifiers(a, b) { - return compareIdentifiers(b, a); -} - -exports.major = major; -function major(a, loose) { - return new SemVer(a, loose).major; -} - -exports.minor = minor; -function minor(a, loose) { - return new SemVer(a, loose).minor; -} - -exports.patch = patch; -function patch(a, loose) { - return new SemVer(a, loose).patch; -} - -exports.compare = compare; -function compare(a, b, loose) { - return new SemVer(a, loose).compare(b); -} - -exports.compareLoose = compareLoose; -function compareLoose(a, b) { - return compare(a, b, true); -} - -exports.rcompare = rcompare; -function rcompare(a, b, loose) { - return compare(b, a, loose); -} - -exports.sort = sort; -function sort(list, loose) { - return list.sort(function(a, b) { - return exports.compare(a, b, loose); - }); -} - -exports.rsort = rsort; -function rsort(list, loose) { - return list.sort(function(a, b) { - return exports.rcompare(a, b, loose); - }); -} - -exports.gt = gt; -function gt(a, b, loose) { - return compare(a, b, loose) > 0; -} - -exports.lt = lt; -function lt(a, b, loose) { - return compare(a, b, loose) < 0; -} - -exports.eq = eq; -function eq(a, b, loose) { - return compare(a, b, loose) === 0; -} - -exports.neq = neq; -function neq(a, b, loose) { - return compare(a, b, loose) !== 0; -} - -exports.gte = gte; -function gte(a, b, loose) { - return compare(a, b, loose) >= 0; -} - -exports.lte = lte; -function lte(a, b, loose) { - return compare(a, b, loose) <= 0; -} - -exports.cmp = cmp; -function cmp(a, op, b, loose) { - var ret; - switch (op) { - case '===': - if (typeof a === 'object') a = a.version; - if (typeof b === 'object') b = b.version; - ret = a === b; - break; - case '!==': - if (typeof a === 'object') a = a.version; - if (typeof b === 'object') b = b.version; - ret = a !== b; - break; - case '': case '=': case '==': ret = eq(a, b, loose); break; - case '!=': ret = neq(a, b, loose); break; - case '>': ret = gt(a, b, loose); break; - case '>=': ret = gte(a, b, loose); break; - case '<': ret = lt(a, b, loose); break; - case '<=': ret = lte(a, b, loose); break; - default: throw new TypeError('Invalid operator: ' + op); - } - return ret; -} - -exports.Comparator = Comparator; -function Comparator(comp, loose) { - if (comp instanceof Comparator) { - if (comp.loose === loose) - return comp; - else - comp = comp.value; - } - - if (!(this instanceof Comparator)) - return new Comparator(comp, loose); - - debug('comparator', comp, loose); - this.loose = loose; - this.parse(comp); - - if (this.semver === ANY) - this.value = ''; - else - this.value = this.operator + this.semver.version; - - debug('comp', this); -} - -var ANY = {}; -Comparator.prototype.parse = function(comp) { - var r = this.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]; - var m = comp.match(r); - - if (!m) - throw new TypeError('Invalid comparator: ' + comp); - - this.operator = m[1]; - if (this.operator === '=') - this.operator = ''; - - // if it literally is just '>' or '' then allow anything. - if (!m[2]) - this.semver = ANY; - else - this.semver = new SemVer(m[2], this.loose); -}; - -Comparator.prototype.inspect = function() { - return ''; -}; - -Comparator.prototype.toString = function() { - return this.value; -}; - -Comparator.prototype.test = function(version) { - debug('Comparator.test', version, this.loose); - - if (this.semver === ANY) - return true; - - if (typeof version === 'string') - version = new SemVer(version, this.loose); - - return cmp(version, this.operator, this.semver, this.loose); -}; - - -exports.Range = Range; -function Range(range, loose) { - if ((range instanceof Range) && range.loose === loose) - return range; - - if (!(this instanceof Range)) - return new Range(range, loose); - - this.loose = loose; - - // First, split based on boolean or || - this.raw = range; - this.set = range.split(/\s*\|\|\s*/).map(function(range) { - return this.parseRange(range.trim()); - }, this).filter(function(c) { - // throw out any that are not relevant for whatever reason - return c.length; - }); - - if (!this.set.length) { - throw new TypeError('Invalid SemVer Range: ' + range); - } - - this.format(); -} - -Range.prototype.inspect = function() { - return ''; -}; - -Range.prototype.format = function() { - this.range = this.set.map(function(comps) { - return comps.join(' ').trim(); - }).join('||').trim(); - return this.range; -}; - -Range.prototype.toString = function() { - return this.range; -}; - -Range.prototype.parseRange = function(range) { - var loose = this.loose; - range = range.trim(); - debug('range', range, loose); - // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` - var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE]; - range = range.replace(hr, hyphenReplace); - debug('hyphen replace', range); - // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` - range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace); - debug('comparator trim', range, re[COMPARATORTRIM]); - - // `~ 1.2.3` => `~1.2.3` - range = range.replace(re[TILDETRIM], tildeTrimReplace); - - // `^ 1.2.3` => `^1.2.3` - range = range.replace(re[CARETTRIM], caretTrimReplace); - - // normalize spaces - range = range.split(/\s+/).join(' '); - - // At this point, the range is completely trimmed and - // ready to be split into comparators. - - var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR]; - var set = range.split(' ').map(function(comp) { - return parseComparator(comp, loose); - }).join(' ').split(/\s+/); - if (this.loose) { - // in loose mode, throw out any that are not valid comparators - set = set.filter(function(comp) { - return !!comp.match(compRe); - }); - } - set = set.map(function(comp) { - return new Comparator(comp, loose); - }); - - return set; -}; - -// Mostly just for testing and legacy API reasons -exports.toComparators = toComparators; -function toComparators(range, loose) { - return new Range(range, loose).set.map(function(comp) { - return comp.map(function(c) { - return c.value; - }).join(' ').trim().split(' '); - }); -} - -// comprised of xranges, tildes, stars, and gtlt's at this point. -// already replaced the hyphen ranges -// turn into a set of JUST comparators. -function parseComparator(comp, loose) { - debug('comp', comp); - comp = replaceCarets(comp, loose); - debug('caret', comp); - comp = replaceTildes(comp, loose); - debug('tildes', comp); - comp = replaceXRanges(comp, loose); - debug('xrange', comp); - comp = replaceStars(comp, loose); - debug('stars', comp); - return comp; -} - -function isX(id) { - return !id || id.toLowerCase() === 'x' || id === '*'; -} - -// ~, ~> --> * (any, kinda silly) -// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 -// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 -// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 -// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 -// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 -function replaceTildes(comp, loose) { - return comp.trim().split(/\s+/).map(function(comp) { - return replaceTilde(comp, loose); - }).join(' '); -} - -function replaceTilde(comp, loose) { - var r = loose ? re[TILDELOOSE] : re[TILDE]; - return comp.replace(r, function(_, M, m, p, pr) { - debug('tilde', comp, _, M, m, p, pr); - var ret; - - if (isX(M)) - ret = ''; - else if (isX(m)) - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - else if (isX(p)) - // ~1.2 == >=1.2.0- <1.3.0- - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - else if (pr) { - debug('replaceTilde pr', pr); - if (pr.charAt(0) !== '-') - pr = '-' + pr; - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + (+m + 1) + '.0'; - } else - // ~1.2.3 == >=1.2.3 <1.3.0 - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0'; - - debug('tilde return', ret); - return ret; - }); -} - -// ^ --> * (any, kinda silly) -// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 -// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 -// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 -// ^1.2.3 --> >=1.2.3 <2.0.0 -// ^1.2.0 --> >=1.2.0 <2.0.0 -function replaceCarets(comp, loose) { - return comp.trim().split(/\s+/).map(function(comp) { - return replaceCaret(comp, loose); - }).join(' '); -} - -function replaceCaret(comp, loose) { - debug('caret', comp, loose); - var r = loose ? re[CARETLOOSE] : re[CARET]; - return comp.replace(r, function(_, M, m, p, pr) { - debug('caret', comp, _, M, m, p, pr); - var ret; - - if (isX(M)) - ret = ''; - else if (isX(m)) - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - else if (isX(p)) { - if (M === '0') - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - else - ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'; - } else if (pr) { - debug('replaceCaret pr', pr); - if (pr.charAt(0) !== '-') - pr = '-' + pr; - if (M === '0') { - if (m === '0') - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + m + '.' + (+p + 1); - else - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + (+m + 1) + '.0'; - } else - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + (+M + 1) + '.0.0'; - } else { - debug('no pr'); - if (M === '0') { - if (m === '0') - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + m + '.' + (+p + 1); - else - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0'; - } else - ret = '>=' + M + '.' + m + '.' + p + - ' <' + (+M + 1) + '.0.0'; - } - - debug('caret return', ret); - return ret; - }); -} - -function replaceXRanges(comp, loose) { - debug('replaceXRanges', comp, loose); - return comp.split(/\s+/).map(function(comp) { - return replaceXRange(comp, loose); - }).join(' '); -} - -function replaceXRange(comp, loose) { - comp = comp.trim(); - var r = loose ? re[XRANGELOOSE] : re[XRANGE]; - return comp.replace(r, function(ret, gtlt, M, m, p, pr) { - debug('xRange', comp, ret, gtlt, M, m, p, pr); - var xM = isX(M); - var xm = xM || isX(m); - var xp = xm || isX(p); - var anyX = xp; - - if (gtlt === '=' && anyX) - gtlt = ''; - - if (xM) { - if (gtlt === '>' || gtlt === '<') { - // nothing is allowed - ret = '<0.0.0'; - } else { - // nothing is forbidden - ret = '*'; - } - } else if (gtlt && anyX) { - // replace X with 0 - if (xm) - m = 0; - if (xp) - p = 0; - - if (gtlt === '>') { - // >1 => >=2.0.0 - // >1.2 => >=1.3.0 - // >1.2.3 => >= 1.2.4 - gtlt = '>='; - if (xm) { - M = +M + 1; - m = 0; - p = 0; - } else if (xp) { - m = +m + 1; - p = 0; - } - } else if (gtlt === '<=') { - // <=0.7.x is actually <0.8.0, since any 0.7.x should - // pass. Similarly, <=7.x is actually <8.0.0, etc. - gtlt = '<' - if (xm) - M = +M + 1 - else - m = +m + 1 - } - - ret = gtlt + M + '.' + m + '.' + p; - } else if (xm) { - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - } else if (xp) { - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - } - - debug('xRange return', ret); - - return ret; - }); -} - -// Because * is AND-ed with everything else in the comparator, -// and '' means "any version", just remove the *s entirely. -function replaceStars(comp, loose) { - debug('replaceStars', comp, loose); - // Looseness is ignored here. star is always as loose as it gets! - return comp.trim().replace(re[STAR], ''); -} - -// This function is passed to string.replace(re[HYPHENRANGE]) -// M, m, patch, prerelease, build -// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 -// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do -// 1.2 - 3.4 => >=1.2.0 <3.5.0 -function hyphenReplace($0, - from, fM, fm, fp, fpr, fb, - to, tM, tm, tp, tpr, tb) { - - if (isX(fM)) - from = ''; - else if (isX(fm)) - from = '>=' + fM + '.0.0'; - else if (isX(fp)) - from = '>=' + fM + '.' + fm + '.0'; - else - from = '>=' + from; - - if (isX(tM)) - to = ''; - else if (isX(tm)) - to = '<' + (+tM + 1) + '.0.0'; - else if (isX(tp)) - to = '<' + tM + '.' + (+tm + 1) + '.0'; - else if (tpr) - to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr; - else - to = '<=' + to; - - return (from + ' ' + to).trim(); -} - - -// if ANY of the sets match ALL of its comparators, then pass -Range.prototype.test = function(version) { - if (!version) - return false; - - if (typeof version === 'string') - version = new SemVer(version, this.loose); - - for (var i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version)) - return true; - } - return false; -}; - -function testSet(set, version) { - for (var i = 0; i < set.length; i++) { - if (!set[i].test(version)) - return false; - } - - if (version.prerelease.length) { - // Find the set of versions that are allowed to have prereleases - // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 - // That should allow `1.2.3-pr.2` to pass. - // However, `1.2.4-alpha.notready` should NOT be allowed, - // even though it's within the range set by the comparators. - for (var i = 0; i < set.length; i++) { - debug(set[i].semver); - if (set[i].semver === ANY) - continue; - - if (set[i].semver.prerelease.length > 0) { - var allowed = set[i].semver; - if (allowed.major === version.major && - allowed.minor === version.minor && - allowed.patch === version.patch) - return true; - } - } - - // Version has a -pre, but it's not one of the ones we like. - return false; - } - - return true; -} - -exports.satisfies = satisfies; -function satisfies(version, range, loose) { - try { - range = new Range(range, loose); - } catch (er) { - return false; - } - return range.test(version); -} - -exports.maxSatisfying = maxSatisfying; -function maxSatisfying(versions, range, loose) { - return versions.filter(function(version) { - return satisfies(version, range, loose); - }).sort(function(a, b) { - return rcompare(a, b, loose); - })[0] || null; -} - -exports.validRange = validRange; -function validRange(range, loose) { - try { - // Return '*' instead of '' so that truthiness works. - // This will throw if it's invalid anyway - return new Range(range, loose).range || '*'; - } catch (er) { - return null; - } -} - -// Determine if version is less than all the versions possible in the range -exports.ltr = ltr; -function ltr(version, range, loose) { - return outside(version, range, '<', loose); -} - -// Determine if version is greater than all the versions possible in the range. -exports.gtr = gtr; -function gtr(version, range, loose) { - return outside(version, range, '>', loose); -} - -exports.outside = outside; -function outside(version, range, hilo, loose) { - version = new SemVer(version, loose); - range = new Range(range, loose); - - var gtfn, ltefn, ltfn, comp, ecomp; - switch (hilo) { - case '>': - gtfn = gt; - ltefn = lte; - ltfn = lt; - comp = '>'; - ecomp = '>='; - break; - case '<': - gtfn = lt; - ltefn = gte; - ltfn = gt; - comp = '<'; - ecomp = '<='; - break; - default: - throw new TypeError('Must provide a hilo val of "<" or ">"'); - } - - // If it satisifes the range it is not outside - if (satisfies(version, range, loose)) { - return false; - } - - // From now on, variable terms are as if we're in "gtr" mode. - // but note that everything is flipped for the "ltr" function. - - for (var i = 0; i < range.set.length; ++i) { - var comparators = range.set[i]; - - var high = null; - var low = null; - - comparators.forEach(function(comparator) { - if (comparator.semver === ANY) { - comparator = new Comparator('>=0.0.0') - } - high = high || comparator; - low = low || comparator; - if (gtfn(comparator.semver, high.semver, loose)) { - high = comparator; - } else if (ltfn(comparator.semver, low.semver, loose)) { - low = comparator; - } - }); - - // If the edge version comparator has a operator then our version - // isn't outside it - if (high.operator === comp || high.operator === ecomp) { - return false; - } - - // If the lowest version comparator has an operator and our version - // is less than it then it isn't higher than the range - if ((!low.operator || low.operator === comp) && - ltefn(version, low.semver)) { - return false; - } else if (low.operator === ecomp && ltfn(version, low.semver)) { - return false; - } - } - return true; -} - -// Use the define() function if we're in AMD land -if (typeof define === 'function' && define.amd) - define(exports); diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/semver.min.js b/deps/npm/node_modules/node-gyp/node_modules/semver/semver.min.js deleted file mode 100644 index dea027b11b8e..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/semver/semver.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(e){if(typeof module==="object"&&module.exports===e)e=module.exports=K;e.SEMVER_SPEC_VERSION="2.0.0";var r=256;var t=Number.MAX_SAFE_INTEGER||9007199254740991;var n=e.re=[];var i=e.src=[];var s=0;var o=s++;i[o]="0|[1-9]\\d*";var a=s++;i[a]="[0-9]+";var f=s++;i[f]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var u=s++;i[u]="("+i[o]+")\\."+"("+i[o]+")\\."+"("+i[o]+")";var l=s++;i[l]="("+i[a]+")\\."+"("+i[a]+")\\."+"("+i[a]+")";var p=s++;i[p]="(?:"+i[o]+"|"+i[f]+")";var c=s++;i[c]="(?:"+i[a]+"|"+i[f]+")";var h=s++;i[h]="(?:-("+i[p]+"(?:\\."+i[p]+")*))";var v=s++;i[v]="(?:-?("+i[c]+"(?:\\."+i[c]+")*))";var m=s++;i[m]="[0-9A-Za-z-]+";var g=s++;i[g]="(?:\\+("+i[m]+"(?:\\."+i[m]+")*))";var w=s++;var y="v?"+i[u]+i[h]+"?"+i[g]+"?";i[w]="^"+y+"$";var d="[v=\\s]*"+i[l]+i[v]+"?"+i[g]+"?";var j=s++;i[j]="^"+d+"$";var b=s++;i[b]="((?:<|>)?=?)";var E=s++;i[E]=i[a]+"|x|X|\\*";var $=s++;i[$]=i[o]+"|x|X|\\*";var k=s++;i[k]="[v=\\s]*("+i[$]+")"+"(?:\\.("+i[$]+")"+"(?:\\.("+i[$]+")"+"(?:"+i[h]+")?"+i[g]+"?"+")?)?";var R=s++;i[R]="[v=\\s]*("+i[E]+")"+"(?:\\.("+i[E]+")"+"(?:\\.("+i[E]+")"+"(?:"+i[v]+")?"+i[g]+"?"+")?)?";var S=s++;i[S]="^"+i[b]+"\\s*"+i[k]+"$";var x=s++;i[x]="^"+i[b]+"\\s*"+i[R]+"$";var I=s++;i[I]="(?:~>?)";var T=s++;i[T]="(\\s*)"+i[I]+"\\s+";n[T]=new RegExp(i[T],"g");var V="$1~";var A=s++;i[A]="^"+i[I]+i[k]+"$";var C=s++;i[C]="^"+i[I]+i[R]+"$";var M=s++;i[M]="(?:\\^)";var N=s++;i[N]="(\\s*)"+i[M]+"\\s+";n[N]=new RegExp(i[N],"g");var _="$1^";var z=s++;i[z]="^"+i[M]+i[k]+"$";var P=s++;i[P]="^"+i[M]+i[R]+"$";var X=s++;i[X]="^"+i[b]+"\\s*("+d+")$|^$";var Z=s++;i[Z]="^"+i[b]+"\\s*("+y+")$|^$";var q=s++;i[q]="(\\s*)"+i[b]+"\\s*("+d+"|"+i[k]+")";n[q]=new RegExp(i[q],"g");var L="$1$2$3";var F=s++;i[F]="^\\s*("+i[k]+")"+"\\s+-\\s+"+"("+i[k]+")"+"\\s*$";var G=s++;i[G]="^\\s*("+i[R]+")"+"\\s+-\\s+"+"("+i[R]+")"+"\\s*$";var O=s++;i[O]="(<|>)?=?\\s*\\*";for(var B=0;Br)return null;var i=t?n[j]:n[w];if(!i.test(e))return null;try{return new K(e,t)}catch(s){return null}}e.valid=H;function H(e,r){var t=D(e,r);return t?t.version:null}e.clean=J;function J(e,r){var t=D(e.trim().replace(/^[=v]+/,""),r);return t?t.version:null}e.SemVer=K;function K(e,i){if(e instanceof K){if(e.loose===i)return e;else e=e.version}else if(typeof e!=="string"){throw new TypeError("Invalid Version: "+e)}if(e.length>r)throw new TypeError("version is longer than "+r+" characters");if(!(this instanceof K))return new K(e,i);this.loose=i;var s=e.trim().match(i?n[j]:n[w]);if(!s)throw new TypeError("Invalid Version: "+e);this.raw=e;this.major=+s[1];this.minor=+s[2];this.patch=+s[3];if(this.major>t||this.major<0)throw new TypeError("Invalid major version");if(this.minor>t||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>t||this.patch<0)throw new TypeError("Invalid patch version");if(!s[4])this.prerelease=[];else this.prerelease=s[4].split(".").map(function(e){if(/^[0-9]+$/.test(e)){var r=+e;if(r>=0&&r'};K.prototype.toString=function(){return this.version};K.prototype.compare=function(e){if(!(e instanceof K))e=new K(e,this.loose);return this.compareMain(e)||this.comparePre(e)};K.prototype.compareMain=function(e){if(!(e instanceof K))e=new K(e,this.loose);return Y(this.major,e.major)||Y(this.minor,e.minor)||Y(this.patch,e.patch)};K.prototype.comparePre=function(e){if(!(e instanceof K))e=new K(e,this.loose);if(this.prerelease.length&&!e.prerelease.length)return-1;else if(!this.prerelease.length&&e.prerelease.length)return 1;else if(!this.prerelease.length&&!e.prerelease.length)return 0;var r=0;do{var t=this.prerelease[r];var n=e.prerelease[r];if(t===undefined&&n===undefined)return 0;else if(n===undefined)return 1;else if(t===undefined)return-1;else if(t===n)continue;else return Y(t,n)}while(++r)};K.prototype.inc=function(e,r){switch(e){case"premajor":this.prerelease.length=0;this.patch=0;this.minor=0;this.major++;this.inc("pre",r);break;case"preminor":this.prerelease.length=0;this.patch=0;this.minor++;this.inc("pre",r);break;case"prepatch":this.prerelease.length=0;this.inc("patch",r);this.inc("pre",r);break;case"prerelease":if(this.prerelease.length===0)this.inc("patch",r);this.inc("pre",r);break;case"major":if(this.minor!==0||this.patch!==0||this.prerelease.length===0)this.major++;this.minor=0;this.patch=0;this.prerelease=[];break;case"minor":if(this.patch!==0||this.prerelease.length===0)this.minor++;this.patch=0;this.prerelease=[];break;case"patch":if(this.prerelease.length===0)this.patch++;this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else{var t=this.prerelease.length;while(--t>=0){if(typeof this.prerelease[t]==="number"){this.prerelease[t]++;t=-2}}if(t===-1)this.prerelease.push(0)}if(r){if(this.prerelease[0]===r){if(isNaN(this.prerelease[1]))this.prerelease=[r,0]}else this.prerelease=[r,0]}break;default:throw new Error("invalid increment argument: "+e)}this.format();return this};e.inc=Q;function Q(e,r,t,n){if(typeof t==="string"){n=t;t=undefined}try{return new K(e,t).inc(r,n).version}catch(i){return null}}e.diff=U;function U(e,r){if(pr(e,r)){return null}else{var t=D(e);var n=D(r);if(t.prerelease.length||n.prerelease.length){for(var i in t){if(i==="major"||i==="minor"||i==="patch"){if(t[i]!==n[i]){return"pre"+i}}}return"prerelease"}for(var i in t){if(i==="major"||i==="minor"||i==="patch"){if(t[i]!==n[i]){return i}}}}}e.compareIdentifiers=Y;var W=/^[0-9]+$/;function Y(e,r){var t=W.test(e);var n=W.test(r);if(t&&n){e=+e;r=+r}return t&&!n?-1:n&&!t?1:er?1:0}e.rcompareIdentifiers=er;function er(e,r){return Y(r,e)}e.major=rr;function rr(e,r){return new K(e,r).major}e.minor=tr;function tr(e,r){return new K(e,r).minor}e.patch=nr;function nr(e,r){return new K(e,r).patch}e.compare=ir;function ir(e,r,t){return new K(e,t).compare(r)}e.compareLoose=sr;function sr(e,r){return ir(e,r,true)}e.rcompare=or;function or(e,r,t){return ir(r,e,t)}e.sort=ar;function ar(r,t){return r.sort(function(r,n){return e.compare(r,n,t)})}e.rsort=fr;function fr(r,t){return r.sort(function(r,n){return e.rcompare(r,n,t)})}e.gt=ur;function ur(e,r,t){return ir(e,r,t)>0}e.lt=lr;function lr(e,r,t){return ir(e,r,t)<0}e.eq=pr;function pr(e,r,t){return ir(e,r,t)===0}e.neq=cr;function cr(e,r,t){return ir(e,r,t)!==0}e.gte=hr;function hr(e,r,t){return ir(e,r,t)>=0}e.lte=vr;function vr(e,r,t){return ir(e,r,t)<=0}e.cmp=mr;function mr(e,r,t,n){var i;switch(r){case"===":if(typeof e==="object")e=e.version;if(typeof t==="object")t=t.version;i=e===t;break;case"!==":if(typeof e==="object")e=e.version;if(typeof t==="object")t=t.version;i=e!==t;break;case"":case"=":case"==":i=pr(e,t,n);break;case"!=":i=cr(e,t,n);break;case">":i=ur(e,t,n);break;case">=":i=hr(e,t,n);break;case"<":i=lr(e,t,n);break;case"<=":i=vr(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return i}e.Comparator=gr;function gr(e,r){if(e instanceof gr){if(e.loose===r)return e;else e=e.value}if(!(this instanceof gr))return new gr(e,r);this.loose=r;this.parse(e);if(this.semver===wr)this.value="";else this.value=this.operator+this.semver.version}var wr={};gr.prototype.parse=function(e){var r=this.loose?n[X]:n[Z];var t=e.match(r);if(!t)throw new TypeError("Invalid comparator: "+e);this.operator=t[1];if(this.operator==="=")this.operator="";if(!t[2])this.semver=wr;else this.semver=new K(t[2],this.loose)};gr.prototype.inspect=function(){return''};gr.prototype.toString=function(){return this.value};gr.prototype.test=function(e){if(this.semver===wr)return true;if(typeof e==="string")e=new K(e,this.loose);return mr(e,this.operator,this.semver,this.loose)};e.Range=yr;function yr(e,r){if(e instanceof yr&&e.loose===r)return e;if(!(this instanceof yr))return new yr(e,r);this.loose=r;this.raw=e;this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length});if(!this.set.length){throw new TypeError("Invalid SemVer Range: "+e)}this.format()}yr.prototype.inspect=function(){return''};yr.prototype.format=function(){this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim();return this.range};yr.prototype.toString=function(){return this.range};yr.prototype.parseRange=function(e){var r=this.loose;e=e.trim();var t=r?n[G]:n[F];e=e.replace(t,Tr);e=e.replace(n[q],L);e=e.replace(n[T],V);e=e.replace(n[N],_);e=e.split(/\s+/).join(" ");var i=r?n[X]:n[Z];var s=e.split(" ").map(function(e){return jr(e,r)}).join(" ").split(/\s+/);if(this.loose){s=s.filter(function(e){return!!e.match(i)})}s=s.map(function(e){return new gr(e,r)});return s};e.toComparators=dr;function dr(e,r){return new yr(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})}function jr(e,r){e=kr(e,r);e=Er(e,r);e=Sr(e,r);e=Ir(e,r);return e}function br(e){return!e||e.toLowerCase()==="x"||e==="*"}function Er(e,r){return e.trim().split(/\s+/).map(function(e){return $r(e,r)}).join(" ")}function $r(e,r){var t=r?n[C]:n[A];return e.replace(t,function(e,r,t,n,i){var s;if(br(r))s="";else if(br(t))s=">="+r+".0.0 <"+(+r+1)+".0.0";else if(br(n))s=">="+r+"."+t+".0 <"+r+"."+(+t+1)+".0";else if(i){if(i.charAt(0)!=="-")i="-"+i;s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+" <"+r+"."+(+t+1)+".0";return s})}function kr(e,r){return e.trim().split(/\s+/).map(function(e){return Rr(e,r)}).join(" ")}function Rr(e,r){var t=r?n[P]:n[z];return e.replace(t,function(e,r,t,n,i){var s;if(br(r))s="";else if(br(t))s=">="+r+".0.0 <"+(+r+1)+".0.0";else if(br(n)){if(r==="0")s=">="+r+"."+t+".0 <"+r+"."+(+t+1)+".0";else s=">="+r+"."+t+".0 <"+(+r+1)+".0.0"}else if(i){if(i.charAt(0)!=="-")i="-"+i;if(r==="0"){if(t==="0")s=">="+r+"."+t+"."+n+i+" <"+r+"."+t+"."+(+n+1);else s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+i+" <"+(+r+1)+".0.0"}else{if(r==="0"){if(t==="0")s=">="+r+"."+t+"."+n+" <"+r+"."+t+"."+(+n+1);else s=">="+r+"."+t+"."+n+" <"+r+"."+(+t+1)+".0"}else s=">="+r+"."+t+"."+n+" <"+(+r+1)+".0.0"}return s})}function Sr(e,r){return e.split(/\s+/).map(function(e){return xr(e,r)}).join(" ")}function xr(e,r){e=e.trim();var t=r?n[x]:n[S];return e.replace(t,function(e,r,t,n,i,s){var o=br(t);var a=o||br(n);var f=a||br(i);var u=f;if(r==="="&&u)r="";if(o){if(r===">"||r==="<"){e="<0.0.0"}else{e="*"}}else if(r&&u){if(a)n=0;if(f)i=0;if(r===">"){r=">=";if(a){t=+t+1;n=0;i=0}else if(f){n=+n+1;i=0}}else if(r==="<="){r="<";if(a)t=+t+1;else n=+n+1}e=r+t+"."+n+"."+i}else if(a){e=">="+t+".0.0 <"+(+t+1)+".0.0"}else if(f){e=">="+t+"."+n+".0 <"+t+"."+(+n+1)+".0"}return e})}function Ir(e,r){return e.trim().replace(n[O],"")}function Tr(e,r,t,n,i,s,o,a,f,u,l,p,c){if(br(t))r="";else if(br(n))r=">="+t+".0.0";else if(br(i))r=">="+t+"."+n+".0";else r=">="+r;if(br(f))a="";else if(br(u))a="<"+(+f+1)+".0.0";else if(br(l))a="<"+f+"."+(+u+1)+".0";else if(p)a="<="+f+"."+u+"."+l+"-"+p;else a="<="+a;return(r+" "+a).trim()}yr.prototype.test=function(e){if(!e)return false;if(typeof e==="string")e=new K(e,this.loose);for(var r=0;r0){var n=e[t].semver;if(n.major===r.major&&n.minor===r.minor&&n.patch===r.patch)return true}}return false}return true}e.satisfies=Ar;function Ar(e,r,t){try{r=new yr(r,t)}catch(n){return false}return r.test(e)}e.maxSatisfying=Cr;function Cr(e,r,t){return e.filter(function(e){return Ar(e,r,t)}).sort(function(e,r){return or(e,r,t)})[0]||null}e.validRange=Mr;function Mr(e,r){try{return new yr(e,r).range||"*"}catch(t){return null}}e.ltr=Nr;function Nr(e,r,t){return zr(e,r,"<",t)}e.gtr=_r;function _r(e,r,t){return zr(e,r,">",t)}e.outside=zr;function zr(e,r,t,n){e=new K(e,n);r=new yr(r,n);var i,s,o,a,f;switch(t){case">":i=ur;s=vr;o=lr;a=">";f=">=";break;case"<":i=lr;s=hr;o=ur;a="<";f="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Ar(e,r,n)){return false}for(var u=0;u=0.0.0")}p=p||e;c=c||e;if(i(e.semver,p.semver,n)){p=e}else if(o(e.semver,c.semver,n)){c=e}});if(p.operator===a||p.operator===f){return false}if((!c.operator||c.operator===a)&&s(e,c.semver)){return false}else if(c.operator===f&&o(e,c.semver)){return false}}return true}if(typeof define==="function"&&define.amd)define(e)})(typeof exports==="object"?exports:typeof define==="function"&&define.amd?{}:semver={}); \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/semver.min.js.gz b/deps/npm/node_modules/node-gyp/node_modules/semver/semver.min.js.gz deleted file mode 100644 index cbbc16188002..000000000000 Binary files a/deps/npm/node_modules/node-gyp/node_modules/semver/semver.min.js.gz and /dev/null differ diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/test/amd.js b/deps/npm/node_modules/node-gyp/node_modules/semver/test/amd.js deleted file mode 100644 index a6041341b37e..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/semver/test/amd.js +++ /dev/null @@ -1,15 +0,0 @@ -var tap = require('tap'); -var test = tap.test; - -test('amd', function(t) { - global.define = define; - define.amd = true; - var defined = null; - function define(stuff) { - defined = stuff; - } - var fromRequire = require('../'); - t.ok(defined, 'amd function called'); - t.equal(fromRequire, defined, 'amd stuff same as require stuff'); - t.end(); -}); diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/test/big-numbers.js b/deps/npm/node_modules/node-gyp/node_modules/semver/test/big-numbers.js deleted file mode 100644 index c051864bc978..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/semver/test/big-numbers.js +++ /dev/null @@ -1,31 +0,0 @@ -var test = require('tap').test -var semver = require('../') - -test('long version is too long', function (t) { - var v = '1.2.' + new Array(256).join('1') - t.throws(function () { - new semver.SemVer(v) - }) - t.equal(semver.valid(v, false), null) - t.equal(semver.valid(v, true), null) - t.equal(semver.inc(v, 'patch'), null) - t.end() -}) - -test('big number is like too long version', function (t) { - var v = '1.2.' + new Array(100).join('1') - t.throws(function () { - new semver.SemVer(v) - }) - t.equal(semver.valid(v, false), null) - t.equal(semver.valid(v, true), null) - t.equal(semver.inc(v, 'patch'), null) - t.end() -}) - -test('parsing null does not throw', function (t) { - t.equal(semver.parse(null), null) - t.equal(semver.parse({}), null) - t.equal(semver.parse(new semver.SemVer('1.2.3')).version, '1.2.3') - t.end() -}) diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/test/clean.js b/deps/npm/node_modules/node-gyp/node_modules/semver/test/clean.js deleted file mode 100644 index 9e268de950ce..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/semver/test/clean.js +++ /dev/null @@ -1,29 +0,0 @@ -var tap = require('tap'); -var test = tap.test; -var semver = require('../semver.js'); -var clean = semver.clean; - -test('\nclean tests', function(t) { - // [range, version] - // Version should be detectable despite extra characters - [ - ['1.2.3', '1.2.3'], - [' 1.2.3 ', '1.2.3'], - [' 1.2.3-4 ', '1.2.3-4'], - [' 1.2.3-pre ', '1.2.3-pre'], - [' =v1.2.3 ', '1.2.3'], - ['v1.2.3', '1.2.3'], - [' v1.2.3 ', '1.2.3'], - ['\t1.2.3', '1.2.3'], - ['>1.2.3', null], - ['~1.2.3', null], - ['<=1.2.3', null], - ['1.2.x', null] - ].forEach(function(tuple) { - var range = tuple[0]; - var version = tuple[1]; - var msg = 'clean(' + range + ') = ' + version; - t.equal(clean(range), version, msg); - }); - t.end(); -}); diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/test/gtr.js b/deps/npm/node_modules/node-gyp/node_modules/semver/test/gtr.js deleted file mode 100644 index bbb87896c64f..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/semver/test/gtr.js +++ /dev/null @@ -1,173 +0,0 @@ -var tap = require('tap'); -var test = tap.test; -var semver = require('../semver.js'); -var gtr = semver.gtr; - -test('\ngtr tests', function(t) { - // [range, version, loose] - // Version should be greater than range - [ - ['~1.2.2', '1.3.0'], - ['~0.6.1-1', '0.7.1-1'], - ['1.0.0 - 2.0.0', '2.0.1'], - ['1.0.0', '1.0.1-beta1'], - ['1.0.0', '2.0.0'], - ['<=2.0.0', '2.1.1'], - ['<=2.0.0', '3.2.9'], - ['<2.0.0', '2.0.0'], - ['0.1.20 || 1.2.4', '1.2.5'], - ['2.x.x', '3.0.0'], - ['1.2.x', '1.3.0'], - ['1.2.x || 2.x', '3.0.0'], - ['2.*.*', '5.0.1'], - ['1.2.*', '1.3.3'], - ['1.2.* || 2.*', '4.0.0'], - ['2', '3.0.0'], - ['2.3', '2.4.2'], - ['~2.4', '2.5.0'], // >=2.4.0 <2.5.0 - ['~2.4', '2.5.5'], - ['~>3.2.1', '3.3.0'], // >=3.2.1 <3.3.0 - ['~1', '2.2.3'], // >=1.0.0 <2.0.0 - ['~>1', '2.2.4'], - ['~> 1', '3.2.3'], - ['~1.0', '1.1.2'], // >=1.0.0 <1.1.0 - ['~ 1.0', '1.1.0'], - ['<1.2', '1.2.0'], - ['< 1.2', '1.2.1'], - ['1', '2.0.0beta', true], - ['~v0.5.4-pre', '0.6.0'], - ['~v0.5.4-pre', '0.6.1-pre'], - ['=0.7.x', '0.8.0'], - ['=0.7.x', '0.8.0-asdf'], - ['<0.7.x', '0.7.0'], - ['~1.2.2', '1.3.0'], - ['1.0.0 - 2.0.0', '2.2.3'], - ['1.0.0', '1.0.1'], - ['<=2.0.0', '3.0.0'], - ['<=2.0.0', '2.9999.9999'], - ['<=2.0.0', '2.2.9'], - ['<2.0.0', '2.9999.9999'], - ['<2.0.0', '2.2.9'], - ['2.x.x', '3.1.3'], - ['1.2.x', '1.3.3'], - ['1.2.x || 2.x', '3.1.3'], - ['2.*.*', '3.1.3'], - ['1.2.*', '1.3.3'], - ['1.2.* || 2.*', '3.1.3'], - ['2', '3.1.2'], - ['2.3', '2.4.1'], - ['~2.4', '2.5.0'], // >=2.4.0 <2.5.0 - ['~>3.2.1', '3.3.2'], // >=3.2.1 <3.3.0 - ['~1', '2.2.3'], // >=1.0.0 <2.0.0 - ['~>1', '2.2.3'], - ['~1.0', '1.1.0'], // >=1.0.0 <1.1.0 - ['<1', '1.0.0'], - ['1', '2.0.0beta', true], - ['<1', '1.0.0beta', true], - ['< 1', '1.0.0beta', true], - ['=0.7.x', '0.8.2'], - ['<0.7.x', '0.7.2'] - ].forEach(function(tuple) { - var range = tuple[0]; - var version = tuple[1]; - var loose = tuple[2] || false; - var msg = 'gtr(' + version + ', ' + range + ', ' + loose + ')'; - t.ok(gtr(version, range, loose), msg); - }); - t.end(); -}); - -test('\nnegative gtr tests', function(t) { - // [range, version, loose] - // Version should NOT be greater than range - [ - ['~0.6.1-1', '0.6.1-1'], - ['1.0.0 - 2.0.0', '1.2.3'], - ['1.0.0 - 2.0.0', '0.9.9'], - ['1.0.0', '1.0.0'], - ['>=*', '0.2.4'], - ['', '1.0.0', true], - ['*', '1.2.3'], - ['*', 'v1.2.3-foo'], - ['>=1.0.0', '1.0.0'], - ['>=1.0.0', '1.0.1'], - ['>=1.0.0', '1.1.0'], - ['>1.0.0', '1.0.1'], - ['>1.0.0', '1.1.0'], - ['<=2.0.0', '2.0.0'], - ['<=2.0.0', '1.9999.9999'], - ['<=2.0.0', '0.2.9'], - ['<2.0.0', '1.9999.9999'], - ['<2.0.0', '0.2.9'], - ['>= 1.0.0', '1.0.0'], - ['>= 1.0.0', '1.0.1'], - ['>= 1.0.0', '1.1.0'], - ['> 1.0.0', '1.0.1'], - ['> 1.0.0', '1.1.0'], - ['<= 2.0.0', '2.0.0'], - ['<= 2.0.0', '1.9999.9999'], - ['<= 2.0.0', '0.2.9'], - ['< 2.0.0', '1.9999.9999'], - ['<\t2.0.0', '0.2.9'], - ['>=0.1.97', 'v0.1.97'], - ['>=0.1.97', '0.1.97'], - ['0.1.20 || 1.2.4', '1.2.4'], - ['0.1.20 || >1.2.4', '1.2.4'], - ['0.1.20 || 1.2.4', '1.2.3'], - ['0.1.20 || 1.2.4', '0.1.20'], - ['>=0.2.3 || <0.0.1', '0.0.0'], - ['>=0.2.3 || <0.0.1', '0.2.3'], - ['>=0.2.3 || <0.0.1', '0.2.4'], - ['||', '1.3.4'], - ['2.x.x', '2.1.3'], - ['1.2.x', '1.2.3'], - ['1.2.x || 2.x', '2.1.3'], - ['1.2.x || 2.x', '1.2.3'], - ['x', '1.2.3'], - ['2.*.*', '2.1.3'], - ['1.2.*', '1.2.3'], - ['1.2.* || 2.*', '2.1.3'], - ['1.2.* || 2.*', '1.2.3'], - ['1.2.* || 2.*', '1.2.3'], - ['*', '1.2.3'], - ['2', '2.1.2'], - ['2.3', '2.3.1'], - ['~2.4', '2.4.0'], // >=2.4.0 <2.5.0 - ['~2.4', '2.4.5'], - ['~>3.2.1', '3.2.2'], // >=3.2.1 <3.3.0 - ['~1', '1.2.3'], // >=1.0.0 <2.0.0 - ['~>1', '1.2.3'], - ['~> 1', '1.2.3'], - ['~1.0', '1.0.2'], // >=1.0.0 <1.1.0 - ['~ 1.0', '1.0.2'], - ['>=1', '1.0.0'], - ['>= 1', '1.0.0'], - ['<1.2', '1.1.1'], - ['< 1.2', '1.1.1'], - ['1', '1.0.0beta', true], - ['~v0.5.4-pre', '0.5.5'], - ['~v0.5.4-pre', '0.5.4'], - ['=0.7.x', '0.7.2'], - ['>=0.7.x', '0.7.2'], - ['=0.7.x', '0.7.0-asdf'], - ['>=0.7.x', '0.7.0-asdf'], - ['<=0.7.x', '0.6.2'], - ['>0.2.3 >0.2.4 <=0.2.5', '0.2.5'], - ['>=0.2.3 <=0.2.4', '0.2.4'], - ['1.0.0 - 2.0.0', '2.0.0'], - ['^1', '0.0.0-0'], - ['^3.0.0', '2.0.0'], - ['^1.0.0 || ~2.0.1', '2.0.0'], - ['^0.1.0 || ~3.0.1 || 5.0.0', '3.2.0'], - ['^0.1.0 || ~3.0.1 || 5.0.0', '1.0.0beta', true], - ['^0.1.0 || ~3.0.1 || 5.0.0', '5.0.0-0', true], - ['^0.1.0 || ~3.0.1 || >4 <=5.0.0', '3.5.0'] - ].forEach(function(tuple) { - var range = tuple[0]; - var version = tuple[1]; - var loose = tuple[2] || false; - var msg = '!gtr(' + version + ', ' + range + ', ' + loose + ')'; - t.notOk(gtr(version, range, loose), msg); - }); - t.end(); -}); diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/test/index.js b/deps/npm/node_modules/node-gyp/node_modules/semver/test/index.js deleted file mode 100644 index c256c79479c1..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/semver/test/index.js +++ /dev/null @@ -1,685 +0,0 @@ -'use strict'; - -var tap = require('tap'); -var test = tap.test; -var semver = require('../semver.js'); -var eq = semver.eq; -var gt = semver.gt; -var lt = semver.lt; -var neq = semver.neq; -var cmp = semver.cmp; -var gte = semver.gte; -var lte = semver.lte; -var satisfies = semver.satisfies; -var validRange = semver.validRange; -var inc = semver.inc; -var diff = semver.diff; -var replaceStars = semver.replaceStars; -var toComparators = semver.toComparators; -var SemVer = semver.SemVer; -var Range = semver.Range; - -test('\ncomparison tests', function(t) { - // [version1, version2] - // version1 should be greater than version2 - [['0.0.0', '0.0.0-foo'], - ['0.0.1', '0.0.0'], - ['1.0.0', '0.9.9'], - ['0.10.0', '0.9.0'], - ['0.99.0', '0.10.0'], - ['2.0.0', '1.2.3'], - ['v0.0.0', '0.0.0-foo', true], - ['v0.0.1', '0.0.0', true], - ['v1.0.0', '0.9.9', true], - ['v0.10.0', '0.9.0', true], - ['v0.99.0', '0.10.0', true], - ['v2.0.0', '1.2.3', true], - ['0.0.0', 'v0.0.0-foo', true], - ['0.0.1', 'v0.0.0', true], - ['1.0.0', 'v0.9.9', true], - ['0.10.0', 'v0.9.0', true], - ['0.99.0', 'v0.10.0', true], - ['2.0.0', 'v1.2.3', true], - ['1.2.3', '1.2.3-asdf'], - ['1.2.3', '1.2.3-4'], - ['1.2.3', '1.2.3-4-foo'], - ['1.2.3-5-foo', '1.2.3-5'], - ['1.2.3-5', '1.2.3-4'], - ['1.2.3-5-foo', '1.2.3-5-Foo'], - ['3.0.0', '2.7.2+asdf'], - ['1.2.3-a.10', '1.2.3-a.5'], - ['1.2.3-a.b', '1.2.3-a.5'], - ['1.2.3-a.b', '1.2.3-a'], - ['1.2.3-a.b.c.10.d.5', '1.2.3-a.b.c.5.d.100'], - ['1.2.3-r2', '1.2.3-r100'], - ['1.2.3-r100', '1.2.3-R2'] - ].forEach(function(v) { - var v0 = v[0]; - var v1 = v[1]; - var loose = v[2]; - t.ok(gt(v0, v1, loose), "gt('" + v0 + "', '" + v1 + "')"); - t.ok(lt(v1, v0, loose), "lt('" + v1 + "', '" + v0 + "')"); - t.ok(!gt(v1, v0, loose), "!gt('" + v1 + "', '" + v0 + "')"); - t.ok(!lt(v0, v1, loose), "!lt('" + v0 + "', '" + v1 + "')"); - t.ok(eq(v0, v0, loose), "eq('" + v0 + "', '" + v0 + "')"); - t.ok(eq(v1, v1, loose), "eq('" + v1 + "', '" + v1 + "')"); - t.ok(neq(v0, v1, loose), "neq('" + v0 + "', '" + v1 + "')"); - t.ok(cmp(v1, '==', v1, loose), "cmp('" + v1 + "' == '" + v1 + "')"); - t.ok(cmp(v0, '>=', v1, loose), "cmp('" + v0 + "' >= '" + v1 + "')"); - t.ok(cmp(v1, '<=', v0, loose), "cmp('" + v1 + "' <= '" + v0 + "')"); - t.ok(cmp(v0, '!=', v1, loose), "cmp('" + v0 + "' != '" + v1 + "')"); - }); - t.end(); -}); - -test('\nequality tests', function(t) { - // [version1, version2] - // version1 should be equivalent to version2 - [['1.2.3', 'v1.2.3', true], - ['1.2.3', '=1.2.3', true], - ['1.2.3', 'v 1.2.3', true], - ['1.2.3', '= 1.2.3', true], - ['1.2.3', ' v1.2.3', true], - ['1.2.3', ' =1.2.3', true], - ['1.2.3', ' v 1.2.3', true], - ['1.2.3', ' = 1.2.3', true], - ['1.2.3-0', 'v1.2.3-0', true], - ['1.2.3-0', '=1.2.3-0', true], - ['1.2.3-0', 'v 1.2.3-0', true], - ['1.2.3-0', '= 1.2.3-0', true], - ['1.2.3-0', ' v1.2.3-0', true], - ['1.2.3-0', ' =1.2.3-0', true], - ['1.2.3-0', ' v 1.2.3-0', true], - ['1.2.3-0', ' = 1.2.3-0', true], - ['1.2.3-1', 'v1.2.3-1', true], - ['1.2.3-1', '=1.2.3-1', true], - ['1.2.3-1', 'v 1.2.3-1', true], - ['1.2.3-1', '= 1.2.3-1', true], - ['1.2.3-1', ' v1.2.3-1', true], - ['1.2.3-1', ' =1.2.3-1', true], - ['1.2.3-1', ' v 1.2.3-1', true], - ['1.2.3-1', ' = 1.2.3-1', true], - ['1.2.3-beta', 'v1.2.3-beta', true], - ['1.2.3-beta', '=1.2.3-beta', true], - ['1.2.3-beta', 'v 1.2.3-beta', true], - ['1.2.3-beta', '= 1.2.3-beta', true], - ['1.2.3-beta', ' v1.2.3-beta', true], - ['1.2.3-beta', ' =1.2.3-beta', true], - ['1.2.3-beta', ' v 1.2.3-beta', true], - ['1.2.3-beta', ' = 1.2.3-beta', true], - ['1.2.3-beta+build', ' = 1.2.3-beta+otherbuild', true], - ['1.2.3+build', ' = 1.2.3+otherbuild', true], - ['1.2.3-beta+build', '1.2.3-beta+otherbuild'], - ['1.2.3+build', '1.2.3+otherbuild'], - [' v1.2.3+build', '1.2.3+otherbuild'] - ].forEach(function(v) { - var v0 = v[0]; - var v1 = v[1]; - var loose = v[2]; - t.ok(eq(v0, v1, loose), "eq('" + v0 + "', '" + v1 + "')"); - t.ok(!neq(v0, v1, loose), "!neq('" + v0 + "', '" + v1 + "')"); - t.ok(cmp(v0, '==', v1, loose), 'cmp(' + v0 + '==' + v1 + ')'); - t.ok(!cmp(v0, '!=', v1, loose), '!cmp(' + v0 + '!=' + v1 + ')'); - t.ok(!cmp(v0, '===', v1, loose), '!cmp(' + v0 + '===' + v1 + ')'); - t.ok(cmp(v0, '!==', v1, loose), 'cmp(' + v0 + '!==' + v1 + ')'); - t.ok(!gt(v0, v1, loose), "!gt('" + v0 + "', '" + v1 + "')"); - t.ok(gte(v0, v1, loose), "gte('" + v0 + "', '" + v1 + "')"); - t.ok(!lt(v0, v1, loose), "!lt('" + v0 + "', '" + v1 + "')"); - t.ok(lte(v0, v1, loose), "lte('" + v0 + "', '" + v1 + "')"); - }); - t.end(); -}); - - -test('\nrange tests', function(t) { - // [range, version] - // version should be included by range - [['1.0.0 - 2.0.0', '1.2.3'], - ['^1.2.3+build', '1.2.3'], - ['^1.2.3+build', '1.3.0'], - ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '1.2.3'], - ['1.2.3pre+asdf - 2.4.3-pre+asdf', '1.2.3', true], - ['1.2.3-pre+asdf - 2.4.3pre+asdf', '1.2.3', true], - ['1.2.3pre+asdf - 2.4.3pre+asdf', '1.2.3', true], - ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '1.2.3-pre.2'], - ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '2.4.3-alpha'], - ['1.2.3+asdf - 2.4.3+asdf', '1.2.3'], - ['1.0.0', '1.0.0'], - ['>=*', '0.2.4'], - ['', '1.0.0'], - ['*', '1.2.3'], - ['*', 'v1.2.3', true], - ['>=1.0.0', '1.0.0'], - ['>=1.0.0', '1.0.1'], - ['>=1.0.0', '1.1.0'], - ['>1.0.0', '1.0.1'], - ['>1.0.0', '1.1.0'], - ['<=2.0.0', '2.0.0'], - ['<=2.0.0', '1.9999.9999'], - ['<=2.0.0', '0.2.9'], - ['<2.0.0', '1.9999.9999'], - ['<2.0.0', '0.2.9'], - ['>= 1.0.0', '1.0.0'], - ['>= 1.0.0', '1.0.1'], - ['>= 1.0.0', '1.1.0'], - ['> 1.0.0', '1.0.1'], - ['> 1.0.0', '1.1.0'], - ['<= 2.0.0', '2.0.0'], - ['<= 2.0.0', '1.9999.9999'], - ['<= 2.0.0', '0.2.9'], - ['< 2.0.0', '1.9999.9999'], - ['<\t2.0.0', '0.2.9'], - ['>=0.1.97', 'v0.1.97', true], - ['>=0.1.97', '0.1.97'], - ['0.1.20 || 1.2.4', '1.2.4'], - ['>=0.2.3 || <0.0.1', '0.0.0'], - ['>=0.2.3 || <0.0.1', '0.2.3'], - ['>=0.2.3 || <0.0.1', '0.2.4'], - ['||', '1.3.4'], - ['2.x.x', '2.1.3'], - ['1.2.x', '1.2.3'], - ['1.2.x || 2.x', '2.1.3'], - ['1.2.x || 2.x', '1.2.3'], - ['x', '1.2.3'], - ['2.*.*', '2.1.3'], - ['1.2.*', '1.2.3'], - ['1.2.* || 2.*', '2.1.3'], - ['1.2.* || 2.*', '1.2.3'], - ['*', '1.2.3'], - ['2', '2.1.2'], - ['2.3', '2.3.1'], - ['~2.4', '2.4.0'], // >=2.4.0 <2.5.0 - ['~2.4', '2.4.5'], - ['~>3.2.1', '3.2.2'], // >=3.2.1 <3.3.0, - ['~1', '1.2.3'], // >=1.0.0 <2.0.0 - ['~>1', '1.2.3'], - ['~> 1', '1.2.3'], - ['~1.0', '1.0.2'], // >=1.0.0 <1.1.0, - ['~ 1.0', '1.0.2'], - ['~ 1.0.3', '1.0.12'], - ['>=1', '1.0.0'], - ['>= 1', '1.0.0'], - ['<1.2', '1.1.1'], - ['< 1.2', '1.1.1'], - ['~v0.5.4-pre', '0.5.5'], - ['~v0.5.4-pre', '0.5.4'], - ['=0.7.x', '0.7.2'], - ['<=0.7.x', '0.7.2'], - ['>=0.7.x', '0.7.2'], - ['<=0.7.x', '0.6.2'], - ['~1.2.1 >=1.2.3', '1.2.3'], - ['~1.2.1 =1.2.3', '1.2.3'], - ['~1.2.1 1.2.3', '1.2.3'], - ['~1.2.1 >=1.2.3 1.2.3', '1.2.3'], - ['~1.2.1 1.2.3 >=1.2.3', '1.2.3'], - ['~1.2.1 1.2.3', '1.2.3'], - ['>=1.2.1 1.2.3', '1.2.3'], - ['1.2.3 >=1.2.1', '1.2.3'], - ['>=1.2.3 >=1.2.1', '1.2.3'], - ['>=1.2.1 >=1.2.3', '1.2.3'], - ['>=1.2', '1.2.8'], - ['^1.2.3', '1.8.1'], - ['^0.1.2', '0.1.2'], - ['^0.1', '0.1.2'], - ['^1.2', '1.4.2'], - ['^1.2 ^1', '1.4.2'], - ['^1.2.3-alpha', '1.2.3-pre'], - ['^1.2.0-alpha', '1.2.0-pre'], - ['^0.0.1-alpha', '0.0.1-beta'] - ].forEach(function(v) { - var range = v[0]; - var ver = v[1]; - var loose = v[2]; - t.ok(satisfies(ver, range, loose), range + ' satisfied by ' + ver); - }); - t.end(); -}); - -test('\nnegative range tests', function(t) { - // [range, version] - // version should not be included by range - [['1.0.0 - 2.0.0', '2.2.3'], - ['1.2.3+asdf - 2.4.3+asdf', '1.2.3-pre.2'], - ['1.2.3+asdf - 2.4.3+asdf', '2.4.3-alpha'], - ['^1.2.3+build', '2.0.0'], - ['^1.2.3+build', '1.2.0'], - ['^1.2.3', '1.2.3-pre'], - ['^1.2', '1.2.0-pre'], - ['>1.2', '1.3.0-beta'], - ['<=1.2.3', '1.2.3-beta'], - ['^1.2.3', '1.2.3-beta'], - ['=0.7.x', '0.7.0-asdf'], - ['>=0.7.x', '0.7.0-asdf'], - ['1', '1.0.0beta', true], - ['<1', '1.0.0beta', true], - ['< 1', '1.0.0beta', true], - ['1.0.0', '1.0.1'], - ['>=1.0.0', '0.0.0'], - ['>=1.0.0', '0.0.1'], - ['>=1.0.0', '0.1.0'], - ['>1.0.0', '0.0.1'], - ['>1.0.0', '0.1.0'], - ['<=2.0.0', '3.0.0'], - ['<=2.0.0', '2.9999.9999'], - ['<=2.0.0', '2.2.9'], - ['<2.0.0', '2.9999.9999'], - ['<2.0.0', '2.2.9'], - ['>=0.1.97', 'v0.1.93', true], - ['>=0.1.97', '0.1.93'], - ['0.1.20 || 1.2.4', '1.2.3'], - ['>=0.2.3 || <0.0.1', '0.0.3'], - ['>=0.2.3 || <0.0.1', '0.2.2'], - ['2.x.x', '1.1.3'], - ['2.x.x', '3.1.3'], - ['1.2.x', '1.3.3'], - ['1.2.x || 2.x', '3.1.3'], - ['1.2.x || 2.x', '1.1.3'], - ['2.*.*', '1.1.3'], - ['2.*.*', '3.1.3'], - ['1.2.*', '1.3.3'], - ['1.2.* || 2.*', '3.1.3'], - ['1.2.* || 2.*', '1.1.3'], - ['2', '1.1.2'], - ['2.3', '2.4.1'], - ['~2.4', '2.5.0'], // >=2.4.0 <2.5.0 - ['~2.4', '2.3.9'], - ['~>3.2.1', '3.3.2'], // >=3.2.1 <3.3.0 - ['~>3.2.1', '3.2.0'], // >=3.2.1 <3.3.0 - ['~1', '0.2.3'], // >=1.0.0 <2.0.0 - ['~>1', '2.2.3'], - ['~1.0', '1.1.0'], // >=1.0.0 <1.1.0 - ['<1', '1.0.0'], - ['>=1.2', '1.1.1'], - ['1', '2.0.0beta', true], - ['~v0.5.4-beta', '0.5.4-alpha'], - ['=0.7.x', '0.8.2'], - ['>=0.7.x', '0.6.2'], - ['<0.7.x', '0.7.2'], - ['<1.2.3', '1.2.3-beta'], - ['=1.2.3', '1.2.3-beta'], - ['>1.2', '1.2.8'], - ['^1.2.3', '2.0.0-alpha'], - ['^1.2.3', '1.2.2'], - ['^1.2', '1.1.9'], - ['*', 'v1.2.3-foo', true], - // invalid ranges never satisfied! - ['blerg', '1.2.3'], - ['git+https://user:password0123@github.com/foo', '123.0.0', true], - ['^1.2.3', '2.0.0-pre'] - ].forEach(function(v) { - var range = v[0]; - var ver = v[1]; - var loose = v[2]; - var found = satisfies(ver, range, loose); - t.ok(!found, ver + ' not satisfied by ' + range); - }); - t.end(); -}); - -test('\nincrement versions test', function(t) { -// [version, inc, result, identifier] -// inc(version, inc) -> result - [['1.2.3', 'major', '2.0.0'], - ['1.2.3', 'minor', '1.3.0'], - ['1.2.3', 'patch', '1.2.4'], - ['1.2.3tag', 'major', '2.0.0', true], - ['1.2.3-tag', 'major', '2.0.0'], - ['1.2.3', 'fake', null], - ['1.2.0-0', 'patch', '1.2.0'], - ['fake', 'major', null], - ['1.2.3-4', 'major', '2.0.0'], - ['1.2.3-4', 'minor', '1.3.0'], - ['1.2.3-4', 'patch', '1.2.3'], - ['1.2.3-alpha.0.beta', 'major', '2.0.0'], - ['1.2.3-alpha.0.beta', 'minor', '1.3.0'], - ['1.2.3-alpha.0.beta', 'patch', '1.2.3'], - ['1.2.4', 'prerelease', '1.2.5-0'], - ['1.2.3-0', 'prerelease', '1.2.3-1'], - ['1.2.3-alpha.0', 'prerelease', '1.2.3-alpha.1'], - ['1.2.3-alpha.1', 'prerelease', '1.2.3-alpha.2'], - ['1.2.3-alpha.2', 'prerelease', '1.2.3-alpha.3'], - ['1.2.3-alpha.0.beta', 'prerelease', '1.2.3-alpha.1.beta'], - ['1.2.3-alpha.1.beta', 'prerelease', '1.2.3-alpha.2.beta'], - ['1.2.3-alpha.2.beta', 'prerelease', '1.2.3-alpha.3.beta'], - ['1.2.3-alpha.10.0.beta', 'prerelease', '1.2.3-alpha.10.1.beta'], - ['1.2.3-alpha.10.1.beta', 'prerelease', '1.2.3-alpha.10.2.beta'], - ['1.2.3-alpha.10.2.beta', 'prerelease', '1.2.3-alpha.10.3.beta'], - ['1.2.3-alpha.10.beta.0', 'prerelease', '1.2.3-alpha.10.beta.1'], - ['1.2.3-alpha.10.beta.1', 'prerelease', '1.2.3-alpha.10.beta.2'], - ['1.2.3-alpha.10.beta.2', 'prerelease', '1.2.3-alpha.10.beta.3'], - ['1.2.3-alpha.9.beta', 'prerelease', '1.2.3-alpha.10.beta'], - ['1.2.3-alpha.10.beta', 'prerelease', '1.2.3-alpha.11.beta'], - ['1.2.3-alpha.11.beta', 'prerelease', '1.2.3-alpha.12.beta'], - ['1.2.0', 'prepatch', '1.2.1-0'], - ['1.2.0-1', 'prepatch', '1.2.1-0'], - ['1.2.0', 'preminor', '1.3.0-0'], - ['1.2.3-1', 'preminor', '1.3.0-0'], - ['1.2.0', 'premajor', '2.0.0-0'], - ['1.2.3-1', 'premajor', '2.0.0-0'], - ['1.2.0-1', 'minor', '1.2.0'], - ['1.0.0-1', 'major', '1.0.0'], - - ['1.2.3', 'major', '2.0.0', false, 'dev'], - ['1.2.3', 'minor', '1.3.0', false, 'dev'], - ['1.2.3', 'patch', '1.2.4', false, 'dev'], - ['1.2.3tag', 'major', '2.0.0', true, 'dev'], - ['1.2.3-tag', 'major', '2.0.0', false, 'dev'], - ['1.2.3', 'fake', null, false, 'dev'], - ['1.2.0-0', 'patch', '1.2.0', false, 'dev'], - ['fake', 'major', null, false, 'dev'], - ['1.2.3-4', 'major', '2.0.0', false, 'dev'], - ['1.2.3-4', 'minor', '1.3.0', false, 'dev'], - ['1.2.3-4', 'patch', '1.2.3', false, 'dev'], - ['1.2.3-alpha.0.beta', 'major', '2.0.0', false, 'dev'], - ['1.2.3-alpha.0.beta', 'minor', '1.3.0', false, 'dev'], - ['1.2.3-alpha.0.beta', 'patch', '1.2.3', false, 'dev'], - ['1.2.4', 'prerelease', '1.2.5-dev.0', false, 'dev'], - ['1.2.3-0', 'prerelease', '1.2.3-dev.0', false, 'dev'], - ['1.2.3-alpha.0', 'prerelease', '1.2.3-dev.0', false, 'dev'], - ['1.2.3-alpha.0', 'prerelease', '1.2.3-alpha.1', false, 'alpha'], - ['1.2.3-alpha.0.beta', 'prerelease', '1.2.3-dev.0', false, 'dev'], - ['1.2.3-alpha.0.beta', 'prerelease', '1.2.3-alpha.1.beta', false, 'alpha'], - ['1.2.3-alpha.10.0.beta', 'prerelease', '1.2.3-dev.0', false, 'dev'], - ['1.2.3-alpha.10.0.beta', 'prerelease', '1.2.3-alpha.10.1.beta', false, 'alpha'], - ['1.2.3-alpha.10.1.beta', 'prerelease', '1.2.3-alpha.10.2.beta', false, 'alpha'], - ['1.2.3-alpha.10.2.beta', 'prerelease', '1.2.3-alpha.10.3.beta', false, 'alpha'], - ['1.2.3-alpha.10.beta.0', 'prerelease', '1.2.3-dev.0', false, 'dev'], - ['1.2.3-alpha.10.beta.0', 'prerelease', '1.2.3-alpha.10.beta.1', false, 'alpha'], - ['1.2.3-alpha.10.beta.1', 'prerelease', '1.2.3-alpha.10.beta.2', false, 'alpha'], - ['1.2.3-alpha.10.beta.2', 'prerelease', '1.2.3-alpha.10.beta.3', false, 'alpha'], - ['1.2.3-alpha.9.beta', 'prerelease', '1.2.3-dev.0', false, 'dev'], - ['1.2.3-alpha.9.beta', 'prerelease', '1.2.3-alpha.10.beta', false, 'alpha'], - ['1.2.3-alpha.10.beta', 'prerelease', '1.2.3-alpha.11.beta', false, 'alpha'], - ['1.2.3-alpha.11.beta', 'prerelease', '1.2.3-alpha.12.beta', false, 'alpha'], - ['1.2.0', 'prepatch', '1.2.1-dev.0', 'dev'], - ['1.2.0-1', 'prepatch', '1.2.1-dev.0', 'dev'], - ['1.2.0', 'preminor', '1.3.0-dev.0', 'dev'], - ['1.2.3-1', 'preminor', '1.3.0-dev.0', 'dev'], - ['1.2.0', 'premajor', '2.0.0-dev.0', 'dev'], - ['1.2.3-1', 'premajor', '2.0.0-dev.0', 'dev'], - ['1.2.0-1', 'minor', '1.2.0', 'dev'], - ['1.0.0-1', 'major', '1.0.0', 'dev'], - ['1.2.3-dev.bar', 'prerelease', '1.2.3-dev.0', false, 'dev'] - - ].forEach(function(v) { - var pre = v[0]; - var what = v[1]; - var wanted = v[2]; - var loose = v[3]; - var id = v[4]; - var found = inc(pre, what, loose, id); - var cmd = 'inc(' + pre + ', ' + what + ', ' + id + ')'; - t.equal(found, wanted, cmd + ' === ' + wanted); - }); - - t.end(); -}); - -test('\ndiff versions test', function(t) { -// [version1, version2, result] -// diff(version1, version2) -> result - [['1.2.3', '0.2.3', 'major'], - ['1.4.5', '0.2.3', 'major'], - ['1.2.3', '2.0.0-pre', 'premajor'], - ['1.2.3', '1.3.3', 'minor'], - ['1.0.1', '1.1.0-pre', 'preminor'], - ['1.2.3', '1.2.4', 'patch'], - ['1.2.3', '1.2.4-pre', 'prepatch'], - ['0.0.1', '0.0.1-pre', 'prerelease'], - ['0.0.1', '0.0.1-pre-2', 'prerelease'], - ['1.1.0', '1.1.0-pre', 'prerelease'], - ['1.1.0-pre-1', '1.1.0-pre-2', 'prerelease'], - ['1.0.0', '1.0.0', null] - - ].forEach(function(v) { - var version1 = v[0]; - var version2 = v[1]; - var wanted = v[2]; - var found = diff(version1, version2); - var cmd = 'diff(' + version1 + ', ' + version2 + ')'; - t.equal(found, wanted, cmd + ' === ' + wanted); - }); - - t.end(); -}); - -test('\nvalid range test', function(t) { - // [range, result] - // validRange(range) -> result - // translate ranges into their canonical form - [['1.0.0 - 2.0.0', '>=1.0.0 <=2.0.0'], - ['1.0.0', '1.0.0'], - ['>=*', '*'], - ['', '*'], - ['*', '*'], - ['*', '*'], - ['>=1.0.0', '>=1.0.0'], - ['>1.0.0', '>1.0.0'], - ['<=2.0.0', '<=2.0.0'], - ['1', '>=1.0.0 <2.0.0'], - ['<=2.0.0', '<=2.0.0'], - ['<=2.0.0', '<=2.0.0'], - ['<2.0.0', '<2.0.0'], - ['<2.0.0', '<2.0.0'], - ['>= 1.0.0', '>=1.0.0'], - ['>= 1.0.0', '>=1.0.0'], - ['>= 1.0.0', '>=1.0.0'], - ['> 1.0.0', '>1.0.0'], - ['> 1.0.0', '>1.0.0'], - ['<= 2.0.0', '<=2.0.0'], - ['<= 2.0.0', '<=2.0.0'], - ['<= 2.0.0', '<=2.0.0'], - ['< 2.0.0', '<2.0.0'], - ['< 2.0.0', '<2.0.0'], - ['>=0.1.97', '>=0.1.97'], - ['>=0.1.97', '>=0.1.97'], - ['0.1.20 || 1.2.4', '0.1.20||1.2.4'], - ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1'], - ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1'], - ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1'], - ['||', '||'], - ['2.x.x', '>=2.0.0 <3.0.0'], - ['1.2.x', '>=1.2.0 <1.3.0'], - ['1.2.x || 2.x', '>=1.2.0 <1.3.0||>=2.0.0 <3.0.0'], - ['1.2.x || 2.x', '>=1.2.0 <1.3.0||>=2.0.0 <3.0.0'], - ['x', '*'], - ['2.*.*', '>=2.0.0 <3.0.0'], - ['1.2.*', '>=1.2.0 <1.3.0'], - ['1.2.* || 2.*', '>=1.2.0 <1.3.0||>=2.0.0 <3.0.0'], - ['*', '*'], - ['2', '>=2.0.0 <3.0.0'], - ['2.3', '>=2.3.0 <2.4.0'], - ['~2.4', '>=2.4.0 <2.5.0'], - ['~2.4', '>=2.4.0 <2.5.0'], - ['~>3.2.1', '>=3.2.1 <3.3.0'], - ['~1', '>=1.0.0 <2.0.0'], - ['~>1', '>=1.0.0 <2.0.0'], - ['~> 1', '>=1.0.0 <2.0.0'], - ['~1.0', '>=1.0.0 <1.1.0'], - ['~ 1.0', '>=1.0.0 <1.1.0'], - ['^0', '>=0.0.0 <1.0.0'], - ['^ 1', '>=1.0.0 <2.0.0'], - ['^0.1', '>=0.1.0 <0.2.0'], - ['^1.0', '>=1.0.0 <2.0.0'], - ['^1.2', '>=1.2.0 <2.0.0'], - ['^0.0.1', '>=0.0.1 <0.0.2'], - ['^0.0.1-beta', '>=0.0.1-beta <0.0.2'], - ['^0.1.2', '>=0.1.2 <0.2.0'], - ['^1.2.3', '>=1.2.3 <2.0.0'], - ['^1.2.3-beta.4', '>=1.2.3-beta.4 <2.0.0'], - ['<1', '<1.0.0'], - ['< 1', '<1.0.0'], - ['>=1', '>=1.0.0'], - ['>= 1', '>=1.0.0'], - ['<1.2', '<1.2.0'], - ['< 1.2', '<1.2.0'], - ['1', '>=1.0.0 <2.0.0'], - ['>01.02.03', '>1.2.3', true], - ['>01.02.03', null], - ['~1.2.3beta', '>=1.2.3-beta <1.3.0', true], - ['~1.2.3beta', null], - ['^ 1.2 ^ 1', '>=1.2.0 <2.0.0 >=1.0.0 <2.0.0'] - ].forEach(function(v) { - var pre = v[0]; - var wanted = v[1]; - var loose = v[2]; - var found = validRange(pre, loose); - - t.equal(found, wanted, 'validRange(' + pre + ') === ' + wanted); - }); - - t.end(); -}); - -test('\ncomparators test', function(t) { - // [range, comparators] - // turn range into a set of individual comparators - [['1.0.0 - 2.0.0', [['>=1.0.0', '<=2.0.0']]], - ['1.0.0', [['1.0.0']]], - ['>=*', [['']]], - ['', [['']]], - ['*', [['']]], - ['*', [['']]], - ['>=1.0.0', [['>=1.0.0']]], - ['>=1.0.0', [['>=1.0.0']]], - ['>=1.0.0', [['>=1.0.0']]], - ['>1.0.0', [['>1.0.0']]], - ['>1.0.0', [['>1.0.0']]], - ['<=2.0.0', [['<=2.0.0']]], - ['1', [['>=1.0.0', '<2.0.0']]], - ['<=2.0.0', [['<=2.0.0']]], - ['<=2.0.0', [['<=2.0.0']]], - ['<2.0.0', [['<2.0.0']]], - ['<2.0.0', [['<2.0.0']]], - ['>= 1.0.0', [['>=1.0.0']]], - ['>= 1.0.0', [['>=1.0.0']]], - ['>= 1.0.0', [['>=1.0.0']]], - ['> 1.0.0', [['>1.0.0']]], - ['> 1.0.0', [['>1.0.0']]], - ['<= 2.0.0', [['<=2.0.0']]], - ['<= 2.0.0', [['<=2.0.0']]], - ['<= 2.0.0', [['<=2.0.0']]], - ['< 2.0.0', [['<2.0.0']]], - ['<\t2.0.0', [['<2.0.0']]], - ['>=0.1.97', [['>=0.1.97']]], - ['>=0.1.97', [['>=0.1.97']]], - ['0.1.20 || 1.2.4', [['0.1.20'], ['1.2.4']]], - ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1']]], - ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1']]], - ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1']]], - ['||', [[''], ['']]], - ['2.x.x', [['>=2.0.0', '<3.0.0']]], - ['1.2.x', [['>=1.2.0', '<1.3.0']]], - ['1.2.x || 2.x', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]], - ['1.2.x || 2.x', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]], - ['x', [['']]], - ['2.*.*', [['>=2.0.0', '<3.0.0']]], - ['1.2.*', [['>=1.2.0', '<1.3.0']]], - ['1.2.* || 2.*', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]], - ['1.2.* || 2.*', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]], - ['*', [['']]], - ['2', [['>=2.0.0', '<3.0.0']]], - ['2.3', [['>=2.3.0', '<2.4.0']]], - ['~2.4', [['>=2.4.0', '<2.5.0']]], - ['~2.4', [['>=2.4.0', '<2.5.0']]], - ['~>3.2.1', [['>=3.2.1', '<3.3.0']]], - ['~1', [['>=1.0.0', '<2.0.0']]], - ['~>1', [['>=1.0.0', '<2.0.0']]], - ['~> 1', [['>=1.0.0', '<2.0.0']]], - ['~1.0', [['>=1.0.0', '<1.1.0']]], - ['~ 1.0', [['>=1.0.0', '<1.1.0']]], - ['~ 1.0.3', [['>=1.0.3', '<1.1.0']]], - ['~> 1.0.3', [['>=1.0.3', '<1.1.0']]], - ['<1', [['<1.0.0']]], - ['< 1', [['<1.0.0']]], - ['>=1', [['>=1.0.0']]], - ['>= 1', [['>=1.0.0']]], - ['<1.2', [['<1.2.0']]], - ['< 1.2', [['<1.2.0']]], - ['1', [['>=1.0.0', '<2.0.0']]], - ['1 2', [['>=1.0.0', '<2.0.0', '>=2.0.0', '<3.0.0']]], - ['1.2 - 3.4.5', [['>=1.2.0', '<=3.4.5']]], - ['1.2.3 - 3.4', [['>=1.2.3', '<3.5.0']]], - ['1.2.3 - 3', [['>=1.2.3', '<4.0.0']]], - ['>*', [['<0.0.0']]], - ['<*', [['<0.0.0']]] - ].forEach(function(v) { - var pre = v[0]; - var wanted = v[1]; - var found = toComparators(v[0]); - var jw = JSON.stringify(wanted); - t.equivalent(found, wanted, 'toComparators(' + pre + ') === ' + jw); - }); - - t.end(); -}); - -test('\ninvalid version numbers', function(t) { - ['1.2.3.4', - 'NOT VALID', - 1.2, - null, - 'Infinity.NaN.Infinity' - ].forEach(function(v) { - t.throws(function() { - new SemVer(v); - }, {name:'TypeError', message:'Invalid Version: ' + v}); - }); - - t.end(); -}); - -test('\nstrict vs loose version numbers', function(t) { - [['=1.2.3', '1.2.3'], - ['01.02.03', '1.2.3'], - ['1.2.3-beta.01', '1.2.3-beta.1'], - [' =1.2.3', '1.2.3'], - ['1.2.3foo', '1.2.3-foo'] - ].forEach(function(v) { - var loose = v[0]; - var strict = v[1]; - t.throws(function() { - new SemVer(loose); - }); - var lv = new SemVer(loose, true); - t.equal(lv.version, strict); - t.ok(eq(loose, strict, true)); - t.throws(function() { - eq(loose, strict); - }); - t.throws(function() { - new SemVer(strict).compare(loose); - }); - }); - t.end(); -}); - -test('\nstrict vs loose ranges', function(t) { - [['>=01.02.03', '>=1.2.3'], - ['~1.02.03beta', '>=1.2.3-beta <1.3.0'] - ].forEach(function(v) { - var loose = v[0]; - var comps = v[1]; - t.throws(function() { - new Range(loose); - }); - t.equal(new Range(loose, true).range, comps); - }); - t.end(); -}); - -test('\nmax satisfying', function(t) { - [[['1.2.3', '1.2.4'], '1.2', '1.2.4'], - [['1.2.4', '1.2.3'], '1.2', '1.2.4'], - [['1.2.3', '1.2.4', '1.2.5', '1.2.6'], '~1.2.3', '1.2.6'], - [['1.1.0', '1.2.0', '1.2.1', '1.3.0', '2.0.0b1', '2.0.0b2', '2.0.0b3', '2.0.0', '2.1.0'], '~2.0.0', '2.0.0', true] - ].forEach(function(v) { - var versions = v[0]; - var range = v[1]; - var expect = v[2]; - var loose = v[3]; - var actual = semver.maxSatisfying(versions, range, loose); - t.equal(actual, expect); - }); - t.end(); -}); diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/test/ltr.js b/deps/npm/node_modules/node-gyp/node_modules/semver/test/ltr.js deleted file mode 100644 index 0f7167d65892..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/semver/test/ltr.js +++ /dev/null @@ -1,181 +0,0 @@ -var tap = require('tap'); -var test = tap.test; -var semver = require('../semver.js'); -var ltr = semver.ltr; - -test('\nltr tests', function(t) { - // [range, version, loose] - // Version should be less than range - [ - ['~1.2.2', '1.2.1'], - ['~0.6.1-1', '0.6.1-0'], - ['1.0.0 - 2.0.0', '0.0.1'], - ['1.0.0-beta.2', '1.0.0-beta.1'], - ['1.0.0', '0.0.0'], - ['>=2.0.0', '1.1.1'], - ['>=2.0.0', '1.2.9'], - ['>2.0.0', '2.0.0'], - ['0.1.20 || 1.2.4', '0.1.5'], - ['2.x.x', '1.0.0'], - ['1.2.x', '1.1.0'], - ['1.2.x || 2.x', '1.0.0'], - ['2.*.*', '1.0.1'], - ['1.2.*', '1.1.3'], - ['1.2.* || 2.*', '1.1.9999'], - ['2', '1.0.0'], - ['2.3', '2.2.2'], - ['~2.4', '2.3.0'], // >=2.4.0 <2.5.0 - ['~2.4', '2.3.5'], - ['~>3.2.1', '3.2.0'], // >=3.2.1 <3.3.0 - ['~1', '0.2.3'], // >=1.0.0 <2.0.0 - ['~>1', '0.2.4'], - ['~> 1', '0.2.3'], - ['~1.0', '0.1.2'], // >=1.0.0 <1.1.0 - ['~ 1.0', '0.1.0'], - ['>1.2', '1.2.0'], - ['> 1.2', '1.2.1'], - ['1', '0.0.0beta', true], - ['~v0.5.4-pre', '0.5.4-alpha'], - ['~v0.5.4-pre', '0.5.4-alpha'], - ['=0.7.x', '0.6.0'], - ['=0.7.x', '0.6.0-asdf'], - ['>=0.7.x', '0.6.0'], - ['~1.2.2', '1.2.1'], - ['1.0.0 - 2.0.0', '0.2.3'], - ['1.0.0', '0.0.1'], - ['>=2.0.0', '1.0.0'], - ['>=2.0.0', '1.9999.9999'], - ['>=2.0.0', '1.2.9'], - ['>2.0.0', '2.0.0'], - ['>2.0.0', '1.2.9'], - ['2.x.x', '1.1.3'], - ['1.2.x', '1.1.3'], - ['1.2.x || 2.x', '1.1.3'], - ['2.*.*', '1.1.3'], - ['1.2.*', '1.1.3'], - ['1.2.* || 2.*', '1.1.3'], - ['2', '1.9999.9999'], - ['2.3', '2.2.1'], - ['~2.4', '2.3.0'], // >=2.4.0 <2.5.0 - ['~>3.2.1', '2.3.2'], // >=3.2.1 <3.3.0 - ['~1', '0.2.3'], // >=1.0.0 <2.0.0 - ['~>1', '0.2.3'], - ['~1.0', '0.0.0'], // >=1.0.0 <1.1.0 - ['>1', '1.0.0'], - ['2', '1.0.0beta', true], - ['>1', '1.0.0beta', true], - ['> 1', '1.0.0beta', true], - ['=0.7.x', '0.6.2'], - ['=0.7.x', '0.7.0-asdf'], - ['^1', '1.0.0-0'], - ['>=0.7.x', '0.7.0-asdf'], - ['1', '1.0.0beta', true], - ['>=0.7.x', '0.6.2'], - ['>1.2.3', '1.3.0-alpha'] - ].forEach(function(tuple) { - var range = tuple[0]; - var version = tuple[1]; - var loose = tuple[2] || false; - var msg = 'ltr(' + version + ', ' + range + ', ' + loose + ')'; - t.ok(ltr(version, range, loose), msg); - }); - t.end(); -}); - -test('\nnegative ltr tests', function(t) { - // [range, version, loose] - // Version should NOT be less than range - [ - ['~ 1.0', '1.1.0'], - ['~0.6.1-1', '0.6.1-1'], - ['1.0.0 - 2.0.0', '1.2.3'], - ['1.0.0 - 2.0.0', '2.9.9'], - ['1.0.0', '1.0.0'], - ['>=*', '0.2.4'], - ['', '1.0.0', true], - ['*', '1.2.3'], - ['>=1.0.0', '1.0.0'], - ['>=1.0.0', '1.0.1'], - ['>=1.0.0', '1.1.0'], - ['>1.0.0', '1.0.1'], - ['>1.0.0', '1.1.0'], - ['<=2.0.0', '2.0.0'], - ['<=2.0.0', '1.9999.9999'], - ['<=2.0.0', '0.2.9'], - ['<2.0.0', '1.9999.9999'], - ['<2.0.0', '0.2.9'], - ['>= 1.0.0', '1.0.0'], - ['>= 1.0.0', '1.0.1'], - ['>= 1.0.0', '1.1.0'], - ['> 1.0.0', '1.0.1'], - ['> 1.0.0', '1.1.0'], - ['<= 2.0.0', '2.0.0'], - ['<= 2.0.0', '1.9999.9999'], - ['<= 2.0.0', '0.2.9'], - ['< 2.0.0', '1.9999.9999'], - ['<\t2.0.0', '0.2.9'], - ['>=0.1.97', 'v0.1.97'], - ['>=0.1.97', '0.1.97'], - ['0.1.20 || 1.2.4', '1.2.4'], - ['0.1.20 || >1.2.4', '1.2.4'], - ['0.1.20 || 1.2.4', '1.2.3'], - ['0.1.20 || 1.2.4', '0.1.20'], - ['>=0.2.3 || <0.0.1', '0.0.0'], - ['>=0.2.3 || <0.0.1', '0.2.3'], - ['>=0.2.3 || <0.0.1', '0.2.4'], - ['||', '1.3.4'], - ['2.x.x', '2.1.3'], - ['1.2.x', '1.2.3'], - ['1.2.x || 2.x', '2.1.3'], - ['1.2.x || 2.x', '1.2.3'], - ['x', '1.2.3'], - ['2.*.*', '2.1.3'], - ['1.2.*', '1.2.3'], - ['1.2.* || 2.*', '2.1.3'], - ['1.2.* || 2.*', '1.2.3'], - ['1.2.* || 2.*', '1.2.3'], - ['*', '1.2.3'], - ['2', '2.1.2'], - ['2.3', '2.3.1'], - ['~2.4', '2.4.0'], // >=2.4.0 <2.5.0 - ['~2.4', '2.4.5'], - ['~>3.2.1', '3.2.2'], // >=3.2.1 <3.3.0 - ['~1', '1.2.3'], // >=1.0.0 <2.0.0 - ['~>1', '1.2.3'], - ['~> 1', '1.2.3'], - ['~1.0', '1.0.2'], // >=1.0.0 <1.1.0 - ['~ 1.0', '1.0.2'], - ['>=1', '1.0.0'], - ['>= 1', '1.0.0'], - ['<1.2', '1.1.1'], - ['< 1.2', '1.1.1'], - ['~v0.5.4-pre', '0.5.5'], - ['~v0.5.4-pre', '0.5.4'], - ['=0.7.x', '0.7.2'], - ['>=0.7.x', '0.7.2'], - ['<=0.7.x', '0.6.2'], - ['>0.2.3 >0.2.4 <=0.2.5', '0.2.5'], - ['>=0.2.3 <=0.2.4', '0.2.4'], - ['1.0.0 - 2.0.0', '2.0.0'], - ['^3.0.0', '4.0.0'], - ['^1.0.0 || ~2.0.1', '2.0.0'], - ['^0.1.0 || ~3.0.1 || 5.0.0', '3.2.0'], - ['^0.1.0 || ~3.0.1 || 5.0.0', '1.0.0beta', true], - ['^0.1.0 || ~3.0.1 || 5.0.0', '5.0.0-0', true], - ['^0.1.0 || ~3.0.1 || >4 <=5.0.0', '3.5.0'], - ['^1.0.0alpha', '1.0.0beta', true], - ['~1.0.0alpha', '1.0.0beta', true], - ['^1.0.0-alpha', '1.0.0beta', true], - ['~1.0.0-alpha', '1.0.0beta', true], - ['^1.0.0-alpha', '1.0.0-beta'], - ['~1.0.0-alpha', '1.0.0-beta'], - ['=0.1.0', '1.0.0'] - ].forEach(function(tuple) { - var range = tuple[0]; - var version = tuple[1]; - var loose = tuple[2] || false; - var msg = '!ltr(' + version + ', ' + range + ', ' + loose + ')'; - t.notOk(ltr(version, range, loose), msg); - }); - t.end(); -}); diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/test/major-minor-patch.js b/deps/npm/node_modules/node-gyp/node_modules/semver/test/major-minor-patch.js deleted file mode 100644 index e9d4039c8be6..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/semver/test/major-minor-patch.js +++ /dev/null @@ -1,72 +0,0 @@ -var tap = require('tap'); -var test = tap.test; -var semver = require('../semver.js'); - -test('\nmajor tests', function(t) { - // [range, version] - // Version should be detectable despite extra characters - [ - ['1.2.3', 1], - [' 1.2.3 ', 1], - [' 2.2.3-4 ', 2], - [' 3.2.3-pre ', 3], - ['v5.2.3', 5], - [' v8.2.3 ', 8], - ['\t13.2.3', 13], - ['=21.2.3', 21, true], - ['v=34.2.3', 34, true] - ].forEach(function(tuple) { - var range = tuple[0]; - var version = tuple[1]; - var loose = tuple[2] || false; - var msg = 'major(' + range + ') = ' + version; - t.equal(semver.major(range, loose), version, msg); - }); - t.end(); -}); - -test('\nminor tests', function(t) { - // [range, version] - // Version should be detectable despite extra characters - [ - ['1.1.3', 1], - [' 1.1.3 ', 1], - [' 1.2.3-4 ', 2], - [' 1.3.3-pre ', 3], - ['v1.5.3', 5], - [' v1.8.3 ', 8], - ['\t1.13.3', 13], - ['=1.21.3', 21, true], - ['v=1.34.3', 34, true] - ].forEach(function(tuple) { - var range = tuple[0]; - var version = tuple[1]; - var loose = tuple[2] || false; - var msg = 'minor(' + range + ') = ' + version; - t.equal(semver.minor(range, loose), version, msg); - }); - t.end(); -}); - -test('\npatch tests', function(t) { - // [range, version] - // Version should be detectable despite extra characters - [ - ['1.2.1', 1], - [' 1.2.1 ', 1], - [' 1.2.2-4 ', 2], - [' 1.2.3-pre ', 3], - ['v1.2.5', 5], - [' v1.2.8 ', 8], - ['\t1.2.13', 13], - ['=1.2.21', 21, true], - ['v=1.2.34', 34, true] - ].forEach(function(tuple) { - var range = tuple[0]; - var version = tuple[1]; - var loose = tuple[2] || false; - var msg = 'patch(' + range + ') = ' + version; - t.equal(semver.patch(range, loose), version, msg); - }); - t.end(); -}); diff --git a/deps/npm/node_modules/node-gyp/node_modules/semver/test/no-module.js b/deps/npm/node_modules/node-gyp/node_modules/semver/test/no-module.js deleted file mode 100644 index 274f63d1bbc8..000000000000 --- a/deps/npm/node_modules/node-gyp/node_modules/semver/test/no-module.js +++ /dev/null @@ -1,18 +0,0 @@ -var tap = require('tap'); -var test = tap.test; - -test('no module system', function(t) { - var fs = require('fs'); - var vm = require('vm'); - var head = fs.readFileSync(require.resolve('../head.js.txt'), 'utf8'); - var src = fs.readFileSync(require.resolve('../'), 'utf8'); - var foot = fs.readFileSync(require.resolve('../foot.js.txt'), 'utf8'); - vm.runInThisContext(head + src + foot, 'semver.js'); - - // just some basic poking to see if it did some stuff - t.type(global.semver, 'object'); - t.type(global.semver.SemVer, 'function'); - t.type(global.semver.Range, 'function'); - t.ok(global.semver.satisfies('1.2.3', '1.2')); - t.end(); -}); diff --git a/deps/npm/node_modules/node-gyp/node_modules/tar/package.json b/deps/npm/node_modules/node-gyp/node_modules/tar/package.json index 5aa78aec3010..7fab5394cd6e 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/tar/package.json +++ b/deps/npm/node_modules/node-gyp/node_modules/tar/package.json @@ -56,5 +56,6 @@ "tarball": "http://registry.npmjs.org/tar/-/tar-1.0.3.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/tar/-/tar-1.0.3.tgz" + "_resolved": "https://registry.npmjs.org/tar/-/tar-1.0.3.tgz", + "readme": "ERROR: No README data found!" } diff --git a/deps/npm/node_modules/node-gyp/package.json b/deps/npm/node_modules/node-gyp/package.json index 2191b9c55dab..76fc168f2d95 100644 --- a/deps/npm/node_modules/node-gyp/package.json +++ b/deps/npm/node_modules/node-gyp/package.json @@ -11,7 +11,7 @@ "bindings", "gyp" ], - "version": "2.0.2", + "version": "3.0.3", "installVersion": 9, "author": { "name": "Nathan Rajlich", @@ -20,7 +20,7 @@ }, "repository": { "type": "git", - "url": "git://github.com/TooTallNate/node-gyp.git" + "url": "git://github.com/nodejs/node-gyp.git" }, "preferGlobal": true, "bin": { @@ -30,7 +30,7 @@ "dependencies": { "fstream": "^1.0.0", "glob": "3 || 4", - "graceful-fs": "3", + "graceful-fs": "^4.1.2", "minimatch": "1", "mkdirp": "^0.5.0", "nopt": "2 || 3", @@ -39,27 +39,32 @@ "path-array": "^1.0.0", "request": "2", "rimraf": "2", - "semver": "2.x || 3.x || 4", + "semver": "2.x || 3.x || 4 || 5", "tar": "^1.0.0", "which": "1" }, "engines": { "node": ">= 0.8.0" }, - "gitHead": "f403e263b87f6a8ad130add248c90565d49427f7", + "devDependencies": { + "tape": "~4.2.0" + }, + "scripts": { + "test": "tape test/test-*" + }, + "gitHead": "d6b03851d366c7fa78e7d2f57c61bb074ea45ea3", "bugs": { - "url": "https://github.com/TooTallNate/node-gyp/issues" + "url": "https://github.com/nodejs/node-gyp/issues" }, - "homepage": "https://github.com/TooTallNate/node-gyp#readme", - "_id": "node-gyp@2.0.2", - "scripts": {}, - "_shasum": "6350760aaba74ba108fdc368afd8864e14b6ad91", - "_from": "node-gyp@latest", - "_npmVersion": "2.11.2", - "_nodeVersion": "0.12.6", + "homepage": "https://github.com/nodejs/node-gyp", + "_id": "node-gyp@3.0.3", + "_shasum": "9b004219f4fa9efbfd78c5fc674aa12e58fb8694", + "_from": "node-gyp@3.0.3", + "_npmVersion": "2.14.2", + "_nodeVersion": "4.0.0", "_npmUser": { - "name": "tootallnate", - "email": "nathan@tootallnate.net" + "name": "rvagg", + "email": "rod@vagg.org" }, "maintainers": [ { @@ -67,18 +72,27 @@ "email": "nathan@tootallnate.net" }, { - "name": "tootallnate", - "email": "nathan@tootallnate.net" + "name": "fishrock123", + "email": "fishrock123@rocketmail.com" }, { "name": "isaacs", - "email": "i@izs.me" + "email": "isaacs@npmjs.com" + }, + { + "name": "rvagg", + "email": "rod@vagg.org" + }, + { + "name": "tootallnate", + "email": "nathan@tootallnate.net" } ], "dist": { - "shasum": "6350760aaba74ba108fdc368afd8864e14b6ad91", - "tarball": "http://registry.npmjs.org/node-gyp/-/node-gyp-2.0.2.tgz" + "shasum": "9b004219f4fa9efbfd78c5fc674aa12e58fb8694", + "tarball": "http://registry.npmjs.org/node-gyp/-/node-gyp-3.0.3.tgz" }, "directories": {}, - "_resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-2.0.2.tgz" + "_resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.0.3.tgz", + "readme": "ERROR: No README data found!" } diff --git a/deps/npm/node_modules/node-gyp/test/docker.sh b/deps/npm/node_modules/node-gyp/test/docker.sh new file mode 100755 index 000000000000..b64b79a37691 --- /dev/null +++ b/deps/npm/node_modules/node-gyp/test/docker.sh @@ -0,0 +1,143 @@ +#!/bin/bash + +#set -e + +test_node_versions="0.8.28 0.10.40 0.12.7" +test_iojs_versions="1.8.4 2.4.0 3.3.0" + +__dirname="$(CDPATH= cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +dot_node_gyp=${__dirname}/.node-gyp/ + +# borrows from https://github.com/rvagg/dnt/ + +# Simple setup function for a container: +# setup_container(image id, base image, commands to run to set up) +setup_container() { + local container_id="$1" + local base_container="$2" + local run_cmd="$3" + + # Does this image exist? If yes, ignore + docker inspect "$container_id" &> /dev/null + if [[ $? -eq 0 ]]; then + echo "Found existing container [$container_id]" + else + # No such image, so make it + echo "Did not find container [$container_id], creating..." + docker run -i $base_container /bin/bash -c "$run_cmd" + sleep 2 + docker commit $(docker ps -l -q) $container_id + fi +} + +# Run tests inside each of the versioned containers, copy cwd into npm's copy of node-gyp +# so it'll be invoked by npm when a compile is needed +# run_tests(version, test-commands) +run_tests() { + local version="$1" + local run_cmd="$2" + + run_cmd="rsync -aAXx --delete --exclude .git --exclude build /node-gyp-src/ /usr/lib/node_modules/npm/node_modules/node-gyp/; + /bin/su -s /bin/bash node-gyp -c 'cd && ${run_cmd}'" + + rm -rf $dot_node_gyp + + docker run \ + --rm -i \ + -v ~/.npm/:/node-gyp/.npm/ \ + -v ${dot_node_gyp}:/node-gyp/.node-gyp/ \ + -v $(pwd):/node-gyp-src/:ro \ + node-gyp-test/${version} /bin/bash -c "${run_cmd}" +} + +# A base image with build tools and a user account +setup_container "node-gyp-test/base" "ubuntu:14.04" " + apt-get update && + apt-get install -y build-essential python git rsync curl && + adduser --gecos node-gyp --home /node-gyp/ --disabled-login node-gyp && + echo "node-gyp:node-gyp" | chpasswd +" + +# An image on top of the base containing clones of repos we want to use for testing +setup_container "node-gyp-test/clones" "node-gyp-test/base" " + cd /node-gyp/ && git clone https://github.com/justmoon/node-bignum.git && + cd /node-gyp/ && git clone https://github.com/bnoordhuis/node-buffertools.git && + chown -R node-gyp.node-gyp /node-gyp/ +" + +# An image for each of the node versions we want to test with that version installed and the latest npm +for v in $test_node_versions; do + setup_container "node-gyp-test/${v}" "node-gyp-test/clones" " + curl -sL https://nodejs.org/dist/v${v}/node-v${v}-linux-x64.tar.gz | tar -zxv --strip-components=1 -C /usr/ && + npm install npm@latest -g && + node -v && npm -v + " +done + +# An image for each of the io.js versions we want to test with that version installed and the latest npm +for v in $test_iojs_versions; do + setup_container "node-gyp-test/${v}" "node-gyp-test/clones" " + curl -sL https://iojs.org/dist/v${v}/iojs-v${v}-linux-x64.tar.gz | tar -zxv --strip-components=1 -C /usr/ && + npm install npm@latest -g && + node -v && npm -v + " +done + +# Run the tests for all of the test images we've created, +# we should see node-gyp doing its download, configure and run thing +# _NOTE: bignum doesn't compile on 0.8 currently so it'll fail for that version only_ +for v in $test_node_versions $test_iojs_versions; do + run_tests $v " + cd node-buffertools && npm install --loglevel=info && npm test && cd + " + # removed for now, too noisy: cd node-bignum && npm install --loglevel=info && npm test +done + +# Test use of --target=x.y.z to compile against alternate versions +test_download_node_version() { + local run_with_ver="$1" + local expected_dir="$2" + local expected_ver="$3" + run_tests $run_with_ver "cd node-buffertools && npm install --loglevel=info --target=${expected_ver}" + local node_ver=$(cat "${dot_node_gyp}${expected_dir}/node_version.h" | grep '#define NODE_\w*_VERSION [0-9]*$') + node_ver=$(echo $node_ver | sed 's/#define NODE_[A-Z]*_VERSION //g' | sed 's/ /./g') + if [ "X$(echo $node_ver)" != "X${expected_ver}" ]; then + echo "Did not download v${expected_ver} using --target, instead got: $(echo $node_ver)" + exit 1 + fi + echo "Verified correct download of [v${node_ver}]" +} + +test_download_node_version "0.12.7" "0.10.30/src" "0.10.30" +test_download_node_version "3.3.0" "iojs-1.8.4/src" "1.8.4" +# should download the headers file +test_download_node_version "3.3.0" "iojs-3.2.0/include/node" "3.2.0" + +# TODO: test --dist-url by starting up a localhost server and serving up tarballs + +# testing --dist-url, using simple-proxy.js to make localhost work as a distribution +# point for tarballs +# we can test whether it uses the proxy because after 2 connections the proxy will +# die and therefore should not be running at the end of the test, `nc` can tell us this +run_tests "3.3.0" " + (node /node-gyp-src/test/simple-proxy.js 8080 /foobar/ https://iojs.org/dist/ &) && + cd node-buffertools && + /node-gyp-src/bin/node-gyp.js --loglevel=info --dist-url=http://localhost:8080/foobar/ rebuild && + nc -z localhost 8080 && echo -e \"\\n\\n\\033[31mFAILED TO USE LOCAL PROXY\\033[39m\\n\\n\" +" + +run_tests "3.3.0" " + (node /node-gyp-src/test/simple-proxy.js 8080 /doobar/ https://iojs.org/dist/ &) && + cd node-buffertools && + NVM_IOJS_ORG_MIRROR=http://localhost:8080/doobar/ /node-gyp-src/bin/node-gyp.js --loglevel=info rebuild && + nc -z localhost 8080 && echo -e \"\\n\\n\\033[31mFAILED TO USE LOCAL PROXY\\033[39m\\n\\n\" +" + +run_tests "0.12.7" " + (node /node-gyp-src/test/simple-proxy.js 8080 /boombar/ https://nodejs.org/dist/ &) && + cd node-buffertools && + NVM_NODEJS_ORG_MIRROR=http://localhost:8080/boombar/ /node-gyp-src/bin/node-gyp.js --loglevel=info rebuild && + nc -z localhost 8080 && echo -e \"\\n\\n\\033[31mFAILED TO USE LOCAL PROXY\\033[39m\\n\\n\" +" + +rm -rf $dot_node_gyp diff --git a/deps/npm/node_modules/node-gyp/test/simple-proxy.js b/deps/npm/node_modules/node-gyp/test/simple-proxy.js new file mode 100644 index 000000000000..e55330c445bf --- /dev/null +++ b/deps/npm/node_modules/node-gyp/test/simple-proxy.js @@ -0,0 +1,24 @@ +var http = require('http') + , https = require('https') + , server = http.createServer(handler) + , port = +process.argv[2] + , prefix = process.argv[3] + , upstream = process.argv[4] + , calls = 0 + +server.listen(port) + +function handler (req, res) { + if (req.url.indexOf(prefix) != 0) + throw new Error('request url [' + req.url + '] does not start with [' + prefix + ']') + + var upstreamUrl = upstream + req.url.substring(prefix.length) + console.log(req.url + ' -> ' + upstreamUrl) + https.get(upstreamUrl, function (ures) { + ures.on('end', function () { + if (++calls == 2) + server.close() + }) + ures.pipe(res) + }) +} diff --git a/deps/npm/node_modules/node-gyp/test/test-process-release.js b/deps/npm/node_modules/node-gyp/test/test-process-release.js new file mode 100644 index 000000000000..33655ab726a5 --- /dev/null +++ b/deps/npm/node_modules/node-gyp/test/test-process-release.js @@ -0,0 +1,450 @@ +var test = require('tape') +var processRelease = require('../lib/process-release') + +test('test process release - process.version = 0.8.20', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v0.8.20', null) + + t.equal(release.semver.version, '0.8.20') + delete release.semver + + t.deepEqual(release, { + version: '0.8.20', + name: 'node', + baseUrl: 'https://nodejs.org/dist/v0.8.20/', + tarballUrl: 'https://nodejs.org/dist/v0.8.20/node-v0.8.20.tar.gz', + shasumsUrl: 'https://nodejs.org/dist/v0.8.20/SHASUMS256.txt', + versionDir: '0.8.20', + libUrl32: 'https://nodejs.org/dist/v0.8.20/node.lib', + libUrl64: 'https://nodejs.org/dist/v0.8.20/x64/node.lib', + libPath32: 'node.lib', + libPath64: 'x64/node.lib' + }) +}) + +test('test process release - process.version = 0.10.21', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v0.10.21', null) + + t.equal(release.semver.version, '0.10.21') + delete release.semver + + t.deepEqual(release, { + version: '0.10.21', + name: 'node', + baseUrl: 'https://nodejs.org/dist/v0.10.21/', + tarballUrl: 'https://nodejs.org/dist/v0.10.21/node-v0.10.21.tar.gz', + shasumsUrl: 'https://nodejs.org/dist/v0.10.21/SHASUMS256.txt', + versionDir: '0.10.21', + libUrl32: 'https://nodejs.org/dist/v0.10.21/node.lib', + libUrl64: 'https://nodejs.org/dist/v0.10.21/x64/node.lib', + libPath32: 'node.lib', + libPath64: 'x64/node.lib' + }) +}) + +test('test process release - process.version = 0.12.22', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v0.12.22', null) + + t.equal(release.semver.version, '0.12.22') + delete release.semver + + t.deepEqual(release, { + version: '0.12.22', + name: 'node', + baseUrl: 'https://nodejs.org/dist/v0.12.22/', + tarballUrl: 'https://nodejs.org/dist/v0.12.22/node-v0.12.22.tar.gz', + shasumsUrl: 'https://nodejs.org/dist/v0.12.22/SHASUMS256.txt', + versionDir: '0.12.22', + libUrl32: 'https://nodejs.org/dist/v0.12.22/node.lib', + libUrl64: 'https://nodejs.org/dist/v0.12.22/x64/node.lib', + libPath32: 'node.lib', + libPath64: 'x64/node.lib' + }) +}) + +test('test process release - process.release ~ node@4.1.23', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v4.1.23', { + name: 'node', + headersUrl: 'https://nodejs.org/dist/v4.1.23/node-v4.1.23-headers.tar.gz' + }) + + t.equal(release.semver.version, '4.1.23') + delete release.semver + + t.deepEqual(release, { + version: '4.1.23', + name: 'node', + baseUrl: 'https://nodejs.org/dist/v4.1.23/', + tarballUrl: 'https://nodejs.org/dist/v4.1.23/node-v4.1.23-headers.tar.gz', + shasumsUrl: 'https://nodejs.org/dist/v4.1.23/SHASUMS256.txt', + versionDir: '4.1.23', + libUrl32: 'https://nodejs.org/dist/v4.1.23/win-x86/node.lib', + libUrl64: 'https://nodejs.org/dist/v4.1.23/win-x64/node.lib', + libPath32: 'win-x86/node.lib', + libPath64: 'win-x64/node.lib' + }) +}) + +test('test process release - process.release ~ node@4.1.23 / corp build', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v4.1.23', { + name: 'node', + headersUrl: 'https://some.custom.location/node-v4.1.23-headers.tar.gz' + }) + + t.equal(release.semver.version, '4.1.23') + delete release.semver + + t.deepEqual(release, { + version: '4.1.23', + name: 'node', + baseUrl: 'https://some.custom.location/', + tarballUrl: 'https://some.custom.location/node-v4.1.23-headers.tar.gz', + shasumsUrl: 'https://some.custom.location/SHASUMS256.txt', + versionDir: '4.1.23', + libUrl32: 'https://some.custom.location/win-x86/node.lib', + libUrl64: 'https://some.custom.location/win-x64/node.lib', + libPath32: 'win-x86/node.lib', + libPath64: 'win-x64/node.lib' + }) +}) + +test('test process release - process.version = 1.8.4', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v1.8.4', null) + + t.equal(release.semver.version, '1.8.4') + delete release.semver + + t.deepEqual(release, { + version: '1.8.4', + name: 'iojs', + baseUrl: 'https://iojs.org/download/release/v1.8.4/', + tarballUrl: 'https://iojs.org/download/release/v1.8.4/iojs-v1.8.4.tar.gz', + shasumsUrl: 'https://iojs.org/download/release/v1.8.4/SHASUMS256.txt', + versionDir: 'iojs-1.8.4', + libUrl32: 'https://iojs.org/download/release/v1.8.4/win-x86/iojs.lib', + libUrl64: 'https://iojs.org/download/release/v1.8.4/win-x64/iojs.lib', + libPath32: 'win-x86/iojs.lib', + libPath64: 'win-x64/iojs.lib' + }) +}) + +test('test process release - process.release ~ iojs@3.2.24', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v3.2.24', { + name: 'io.js', + headersUrl: 'https://iojs.org/download/release/v3.2.24/iojs-v3.2.24-headers.tar.gz' + }) + + t.equal(release.semver.version, '3.2.24') + delete release.semver + + t.deepEqual(release, { + version: '3.2.24', + name: 'iojs', + baseUrl: 'https://iojs.org/download/release/v3.2.24/', + tarballUrl: 'https://iojs.org/download/release/v3.2.24/iojs-v3.2.24-headers.tar.gz', + shasumsUrl: 'https://iojs.org/download/release/v3.2.24/SHASUMS256.txt', + versionDir: 'iojs-3.2.24', + libUrl32: 'https://iojs.org/download/release/v3.2.24/win-x86/iojs.lib', + libUrl64: 'https://iojs.org/download/release/v3.2.24/win-x64/iojs.lib', + libPath32: 'win-x86/iojs.lib', + libPath64: 'win-x64/iojs.lib' + }) +}) + +test('test process release - process.release ~ iojs@3.2.11 +libUrl32', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v3.2.11', { + name: 'io.js', + headersUrl: 'https://iojs.org/download/release/v3.2.11/iojs-v3.2.11-headers.tar.gz', + libUrl: 'https://iojs.org/download/release/v3.2.11/win-x86/iojs.lib' // custom + }) + + t.equal(release.semver.version, '3.2.11') + delete release.semver + + t.deepEqual(release, { + version: '3.2.11', + name: 'iojs', + baseUrl: 'https://iojs.org/download/release/v3.2.11/', + tarballUrl: 'https://iojs.org/download/release/v3.2.11/iojs-v3.2.11-headers.tar.gz', + shasumsUrl: 'https://iojs.org/download/release/v3.2.11/SHASUMS256.txt', + versionDir: 'iojs-3.2.11', + libUrl32: 'https://iojs.org/download/release/v3.2.11/win-x86/iojs.lib', + libUrl64: 'https://iojs.org/download/release/v3.2.11/win-x64/iojs.lib', + libPath32: 'win-x86/iojs.lib', + libPath64: 'win-x64/iojs.lib' + }) +}) + +test('test process release - process.release ~ iojs@3.2.101 +libUrl64', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v3.2.101', { + name: 'io.js', + headersUrl: 'https://iojs.org/download/release/v3.2.101/iojs-v3.2.101-headers.tar.gz', + libUrl: 'https://iojs.org/download/release/v3.2.101/win-x64/iojs.lib' // custom + }) + + t.equal(release.semver.version, '3.2.101') + delete release.semver + + t.deepEqual(release, { + version: '3.2.101', + name: 'iojs', + baseUrl: 'https://iojs.org/download/release/v3.2.101/', + tarballUrl: 'https://iojs.org/download/release/v3.2.101/iojs-v3.2.101-headers.tar.gz', + shasumsUrl: 'https://iojs.org/download/release/v3.2.101/SHASUMS256.txt', + versionDir: 'iojs-3.2.101', + libUrl32: 'https://iojs.org/download/release/v3.2.101/win-x86/iojs.lib', + libUrl64: 'https://iojs.org/download/release/v3.2.101/win-x64/iojs.lib', + libPath32: 'win-x86/iojs.lib', + libPath64: 'win-x64/iojs.lib' + }) +}) + +test('test process release - process.release ~ iojs@3.3.0 - borked win-ia32', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v3.2.101', { + name: 'io.js', + headersUrl: 'https://iojs.org/download/release/v3.2.101/iojs-v3.2.101-headers.tar.gz', + libUrl: 'https://iojs.org/download/release/v3.2.101/win-ia32/iojs.lib' // custom + }) + + t.equal(release.semver.version, '3.2.101') + delete release.semver + + t.deepEqual(release, { + version: '3.2.101', + name: 'iojs', + baseUrl: 'https://iojs.org/download/release/v3.2.101/', + tarballUrl: 'https://iojs.org/download/release/v3.2.101/iojs-v3.2.101-headers.tar.gz', + shasumsUrl: 'https://iojs.org/download/release/v3.2.101/SHASUMS256.txt', + versionDir: 'iojs-3.2.101', + libUrl32: 'https://iojs.org/download/release/v3.2.101/win-x86/iojs.lib', + libUrl64: 'https://iojs.org/download/release/v3.2.101/win-x64/iojs.lib', + libPath32: 'win-x86/iojs.lib', + libPath64: 'win-x64/iojs.lib' + }) +}) + +test('test process release - process.release ~ node@4.1.23 --target=0.10.40', function (t) { + t.plan(2) + + var release = processRelease([], { opts: { target: '0.10.40' } }, 'v4.1.23', { + name: 'node', + headersUrl: 'https://nodejs.org/dist/v4.1.23/node-v4.1.23-headers.tar.gz' + }) + + t.equal(release.semver.version, '0.10.40') + delete release.semver + + t.deepEqual(release, { + version: '0.10.40', + name: 'node', + baseUrl: 'https://nodejs.org/dist/v0.10.40/', + tarballUrl: 'https://nodejs.org/dist/v0.10.40/node-v0.10.40.tar.gz', + shasumsUrl: 'https://nodejs.org/dist/v0.10.40/SHASUMS256.txt', + versionDir: '0.10.40', + libUrl32: 'https://nodejs.org/dist/v0.10.40/node.lib', + libUrl64: 'https://nodejs.org/dist/v0.10.40/x64/node.lib', + libPath32: 'node.lib', + libPath64: 'x64/node.lib' + }) +}) + +test('test process release - process.release ~ node@4.1.23 --target=1.8.4', function (t) { + t.plan(2) + + var release = processRelease([], { opts: { target: '1.8.4' } }, 'v4.1.23', { + name: 'node', + headersUrl: 'https://nodejs.org/dist/v4.1.23/node-v4.1.23-headers.tar.gz' + }) + + t.equal(release.semver.version, '1.8.4') + delete release.semver + + t.deepEqual(release, { + version: '1.8.4', + name: 'iojs', + baseUrl: 'https://iojs.org/download/release/v1.8.4/', + tarballUrl: 'https://iojs.org/download/release/v1.8.4/iojs-v1.8.4.tar.gz', + shasumsUrl: 'https://iojs.org/download/release/v1.8.4/SHASUMS256.txt', + versionDir: 'iojs-1.8.4', + libUrl32: 'https://iojs.org/download/release/v1.8.4/win-x86/iojs.lib', + libUrl64: 'https://iojs.org/download/release/v1.8.4/win-x64/iojs.lib', + libPath32: 'win-x86/iojs.lib', + libPath64: 'win-x64/iojs.lib' + }) +}) + +test('test process release - process.release ~ node@4.1.23 --dist-url=https://foo.bar/baz', function (t) { + t.plan(2) + + var release = processRelease([], { opts: { 'dist-url': 'https://foo.bar/baz' } }, 'v4.1.23', { + name: 'node', + headersUrl: 'https://nodejs.org/dist/v4.1.23/node-v4.1.23-headers.tar.gz' + }) + + t.equal(release.semver.version, '4.1.23') + delete release.semver + + t.deepEqual(release, { + version: '4.1.23', + name: 'node', + baseUrl: 'https://foo.bar/baz/v4.1.23/', + tarballUrl: 'https://foo.bar/baz/v4.1.23/node-v4.1.23-headers.tar.gz', + shasumsUrl: 'https://foo.bar/baz/v4.1.23/SHASUMS256.txt', + versionDir: '4.1.23', + libUrl32: 'https://foo.bar/baz/v4.1.23/win-x86/node.lib', + libUrl64: 'https://foo.bar/baz/v4.1.23/win-x64/node.lib', + libPath32: 'win-x86/node.lib', + libPath64: 'win-x64/node.lib' + }) +}) + +test('test process release - process.release ~ frankenstein@4.1.23', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v4.1.23', { + name: 'frankenstein', + headersUrl: 'https://frankensteinjs.org/dist/v4.1.23/frankenstein-v4.1.23-headers.tar.gz' + }) + + t.equal(release.semver.version, '4.1.23') + delete release.semver + + t.deepEqual(release, { + version: '4.1.23', + name: 'frankenstein', + baseUrl: 'https://frankensteinjs.org/dist/v4.1.23/', + tarballUrl: 'https://frankensteinjs.org/dist/v4.1.23/frankenstein-v4.1.23-headers.tar.gz', + shasumsUrl: 'https://frankensteinjs.org/dist/v4.1.23/SHASUMS256.txt', + versionDir: 'frankenstein-4.1.23', + libUrl32: 'https://frankensteinjs.org/dist/v4.1.23/win-x86/frankenstein.lib', + libUrl64: 'https://frankensteinjs.org/dist/v4.1.23/win-x64/frankenstein.lib', + libPath32: 'win-x86/frankenstein.lib', + libPath64: 'win-x64/frankenstein.lib' + }) +}) + + +test('test process release - process.release ~ frankenstein@4.1.23 --dist-url=http://foo.bar/baz/', function (t) { + t.plan(2) + + var release = processRelease([], { opts: { 'dist-url': 'http://foo.bar/baz/' } }, 'v4.1.23', { + name: 'frankenstein', + headersUrl: 'https://frankensteinjs.org/dist/v4.1.23/frankenstein-v4.1.23.tar.gz' + }) + + t.equal(release.semver.version, '4.1.23') + delete release.semver + + t.deepEqual(release, { + version: '4.1.23', + name: 'frankenstein', + baseUrl: 'http://foo.bar/baz/v4.1.23/', + tarballUrl: 'http://foo.bar/baz/v4.1.23/frankenstein-v4.1.23-headers.tar.gz', + shasumsUrl: 'http://foo.bar/baz/v4.1.23/SHASUMS256.txt', + versionDir: 'frankenstein-4.1.23', + libUrl32: 'http://foo.bar/baz/v4.1.23/win-x86/frankenstein.lib', + libUrl64: 'http://foo.bar/baz/v4.1.23/win-x64/frankenstein.lib', + libPath32: 'win-x86/frankenstein.lib', + libPath64: 'win-x64/frankenstein.lib' + }) +}) + +test('test process release - process.release ~ node@4.0.0-rc.4', function (t) { + t.plan(2) + + var release = processRelease([], { opts: {} }, 'v4.0.0-rc.4', { + name: 'node', + headersUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/node-v4.0.0-rc.4-headers.tar.gz' + }) + + t.equal(release.semver.version, '4.0.0-rc.4') + delete release.semver + + t.deepEqual(release, { + version: '4.0.0-rc.4', + name: 'node', + baseUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/', + tarballUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/node-v4.0.0-rc.4-headers.tar.gz', + shasumsUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/SHASUMS256.txt', + versionDir: '4.0.0-rc.4', + libUrl32: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-x86/node.lib', + libUrl64: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-x64/node.lib', + libPath32: 'win-x86/node.lib', + libPath64: 'win-x64/node.lib' + }) +}) + + +test('test process release - process.release ~ node@4.0.0-rc.4 passed as argv[0]', function (t) { + t.plan(2) + + // note the missing 'v' on the arg, it should normalise when checking + // whether we're on the default or not + var release = processRelease([ '4.0.0-rc.4' ], { opts: {} }, 'v4.0.0-rc.4', { + name: 'node', + headersUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/node-v4.0.0-rc.4-headers.tar.gz' + }) + + t.equal(release.semver.version, '4.0.0-rc.4') + delete release.semver + + t.deepEqual(release, { + version: '4.0.0-rc.4', + name: 'node', + baseUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/', + tarballUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/node-v4.0.0-rc.4-headers.tar.gz', + shasumsUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/SHASUMS256.txt', + versionDir: '4.0.0-rc.4', + libUrl32: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-x86/node.lib', + libUrl64: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-x64/node.lib', + libPath32: 'win-x86/node.lib', + libPath64: 'win-x64/node.lib' + }) +}) + + +test('test process release - process.release ~ node@4.0.0-rc.4 - bogus string passed as argv[0]', function (t) { + t.plan(2) + + // additional arguments can be passed in on the commandline that should be ignored if they + // are not specifying a valid version @ position 0 + var release = processRelease([ 'this is no version!' ], { opts: {} }, 'v4.0.0-rc.4', { + name: 'node', + headersUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/node-v4.0.0-rc.4-headers.tar.gz' + }) + + t.equal(release.semver.version, '4.0.0-rc.4') + delete release.semver + + t.deepEqual(release, { + version: '4.0.0-rc.4', + name: 'node', + baseUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/', + tarballUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/node-v4.0.0-rc.4-headers.tar.gz', + shasumsUrl: 'https://nodejs.org/download/rc/v4.0.0-rc.4/SHASUMS256.txt', + versionDir: '4.0.0-rc.4', + libUrl32: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-x86/node.lib', + libUrl64: 'https://nodejs.org/download/rc/v4.0.0-rc.4/win-x64/node.lib', + libPath32: 'win-x86/node.lib', + libPath64: 'win-x64/node.lib' + }) +}) diff --git a/deps/npm/node_modules/nopt/README.md b/deps/npm/node_modules/nopt/README.md index 22c50ec406eb..f21a4b31c5d4 100644 --- a/deps/npm/node_modules/nopt/README.md +++ b/deps/npm/node_modules/nopt/README.md @@ -29,7 +29,8 @@ nice option parser. , "bloo" : [ "big", "medium", "small" ] , "flag" : Boolean , "pick" : Boolean - , "many" : [String, Array] + , "many1" : [String, Array] + , "many2" : [path] } , shortHands = { "foofoo" : ["--foo", "Mr. Foo"] , "b7" : ["--bar", "7"] @@ -78,11 +79,11 @@ $ node my-program.js --baz b/a/z # known paths are resolved. # values, and will always be an array. The other types provided # specify what types are allowed in the list. -$ node my-program.js --many 1 --many null --many foo -{ many: ["1", "null", "foo"] } +$ node my-program.js --many1 5 --many1 null --many1 foo +{ many1: ["5", "null", "foo"] } -$ node my-program.js --many foo -{ many: ["foo"] } +$ node my-program.js --many2 foo --many2 bar +{ many2: ["/path/to/foo", "path/to/bar"] } ``` Read the tests at the bottom of `lib/nopt.js` for more examples of @@ -138,8 +139,8 @@ config object and remove its invalid properties. ## Error Handling -By default, nopt outputs a warning to standard error when invalid -options are found. You can change this behavior by assigning a method +By default, nopt outputs a warning to standard error when invalid values for +known options are found. You can change this behavior by assigning a method to `nopt.invalidHandler`. This method will be called with the offending `nopt.invalidHandler(key, val, types)`. diff --git a/deps/npm/node_modules/nopt/package.json b/deps/npm/node_modules/nopt/package.json index c44afa1a2695..618f93467e28 100644 --- a/deps/npm/node_modules/nopt/package.json +++ b/deps/npm/node_modules/nopt/package.json @@ -1,6 +1,6 @@ { "name": "nopt", - "version": "3.0.3", + "version": "3.0.4", "description": "Option parsing for Node, supporting types, shorthands, etc. Used by npm.", "author": { "name": "Isaac Z. Schlueter", @@ -25,30 +25,14 @@ "devDependencies": { "tap": "^1.2.0" }, - "gitHead": "f64a64cd48d9f2660dd4e59191ff46a26397d6b1", + "readme": "If you want to write an option parser, and have it be good, there are\ntwo ways to do it. The Right Way, and the Wrong Way.\n\nThe Wrong Way is to sit down and write an option parser. We've all done\nthat.\n\nThe Right Way is to write some complex configurable program with so many\noptions that you hit the limit of your frustration just trying to\nmanage them all, and defer it with duct-tape solutions until you see\nexactly to the core of the problem, and finally snap and write an\nawesome option parser.\n\nIf you want to write an option parser, don't write an option parser.\nWrite a package manager, or a source control system, or a service\nrestarter, or an operating system. You probably won't end up with a\ngood one of those, but if you don't give up, and you are relentless and\ndiligent enough in your procrastination, you may just end up with a very\nnice option parser.\n\n## USAGE\n\n // my-program.js\n var nopt = require(\"nopt\")\n , Stream = require(\"stream\").Stream\n , path = require(\"path\")\n , knownOpts = { \"foo\" : [String, null]\n , \"bar\" : [Stream, Number]\n , \"baz\" : path\n , \"bloo\" : [ \"big\", \"medium\", \"small\" ]\n , \"flag\" : Boolean\n , \"pick\" : Boolean\n , \"many1\" : [String, Array]\n , \"many2\" : [path]\n }\n , shortHands = { \"foofoo\" : [\"--foo\", \"Mr. Foo\"]\n , \"b7\" : [\"--bar\", \"7\"]\n , \"m\" : [\"--bloo\", \"medium\"]\n , \"p\" : [\"--pick\"]\n , \"f\" : [\"--flag\"]\n }\n // everything is optional.\n // knownOpts and shorthands default to {}\n // arg list defaults to process.argv\n // slice defaults to 2\n , parsed = nopt(knownOpts, shortHands, process.argv, 2)\n console.log(parsed)\n\nThis would give you support for any of the following:\n\n```bash\n$ node my-program.js --foo \"blerp\" --no-flag\n{ \"foo\" : \"blerp\", \"flag\" : false }\n\n$ node my-program.js ---bar 7 --foo \"Mr. Hand\" --flag\n{ bar: 7, foo: \"Mr. Hand\", flag: true }\n\n$ node my-program.js --foo \"blerp\" -f -----p\n{ foo: \"blerp\", flag: true, pick: true }\n\n$ node my-program.js -fp --foofoo\n{ foo: \"Mr. Foo\", flag: true, pick: true }\n\n$ node my-program.js --foofoo -- -fp # -- stops the flag parsing.\n{ foo: \"Mr. Foo\", argv: { remain: [\"-fp\"] } }\n\n$ node my-program.js --blatzk -fp # unknown opts are ok.\n{ blatzk: true, flag: true, pick: true }\n\n$ node my-program.js --blatzk=1000 -fp # but you need to use = if they have a value\n{ blatzk: 1000, flag: true, pick: true }\n\n$ node my-program.js --no-blatzk -fp # unless they start with \"no-\"\n{ blatzk: false, flag: true, pick: true }\n\n$ node my-program.js --baz b/a/z # known paths are resolved.\n{ baz: \"/Users/isaacs/b/a/z\" }\n\n# if Array is one of the types, then it can take many\n# values, and will always be an array. The other types provided\n# specify what types are allowed in the list.\n\n$ node my-program.js --many1 5 --many1 null --many1 foo\n{ many1: [\"5\", \"null\", \"foo\"] }\n\n$ node my-program.js --many2 foo --many2 bar\n{ many2: [\"/path/to/foo\", \"path/to/bar\"] }\n```\n\nRead the tests at the bottom of `lib/nopt.js` for more examples of\nwhat this puppy can do.\n\n## Types\n\nThe following types are supported, and defined on `nopt.typeDefs`\n\n* String: A normal string. No parsing is done.\n* path: A file system path. Gets resolved against cwd if not absolute.\n* url: A url. If it doesn't parse, it isn't accepted.\n* Number: Must be numeric.\n* Date: Must parse as a date. If it does, and `Date` is one of the options,\n then it will return a Date object, not a string.\n* Boolean: Must be either `true` or `false`. If an option is a boolean,\n then it does not need a value, and its presence will imply `true` as\n the value. To negate boolean flags, do `--no-whatever` or `--whatever\n false`\n* NaN: Means that the option is strictly not allowed. Any value will\n fail.\n* Stream: An object matching the \"Stream\" class in node. Valuable\n for use when validating programmatically. (npm uses this to let you\n supply any WriteStream on the `outfd` and `logfd` config options.)\n* Array: If `Array` is specified as one of the types, then the value\n will be parsed as a list of options. This means that multiple values\n can be specified, and that the value will always be an array.\n\nIf a type is an array of values not on this list, then those are\nconsidered valid values. For instance, in the example above, the\n`--bloo` option can only be one of `\"big\"`, `\"medium\"`, or `\"small\"`,\nand any other value will be rejected.\n\nWhen parsing unknown fields, `\"true\"`, `\"false\"`, and `\"null\"` will be\ninterpreted as their JavaScript equivalents.\n\nYou can also mix types and values, or multiple types, in a list. For\ninstance `{ blah: [Number, null] }` would allow a value to be set to\neither a Number or null. When types are ordered, this implies a\npreference, and the first type that can be used to properly interpret\nthe value will be used.\n\nTo define a new type, add it to `nopt.typeDefs`. Each item in that\nhash is an object with a `type` member and a `validate` method. The\n`type` member is an object that matches what goes in the type list. The\n`validate` method is a function that gets called with `validate(data,\nkey, val)`. Validate methods should assign `data[key]` to the valid\nvalue of `val` if it can be handled properly, or return boolean\n`false` if it cannot.\n\nYou can also call `nopt.clean(data, types, typeDefs)` to clean up a\nconfig object and remove its invalid properties.\n\n## Error Handling\n\nBy default, nopt outputs a warning to standard error when invalid values for\nknown options are found. You can change this behavior by assigning a method\nto `nopt.invalidHandler`. This method will be called with\nthe offending `nopt.invalidHandler(key, val, types)`.\n\nIf no `nopt.invalidHandler` is assigned, then it will console.error\nits whining. If it is assigned to boolean `false` then the warning is\nsuppressed.\n\n## Abbreviations\n\nYes, they are supported. If you define options like this:\n\n```javascript\n{ \"foolhardyelephants\" : Boolean\n, \"pileofmonkeys\" : Boolean }\n```\n\nThen this will work:\n\n```bash\nnode program.js --foolhar --pil\nnode program.js --no-f --pileofmon\n# etc.\n```\n\n## Shorthands\n\nShorthands are a hash of shorter option names to a snippet of args that\nthey expand to.\n\nIf multiple one-character shorthands are all combined, and the\ncombination does not unambiguously match any other option or shorthand,\nthen they will be broken up into their constituent parts. For example:\n\n```json\n{ \"s\" : [\"--loglevel\", \"silent\"]\n, \"g\" : \"--global\"\n, \"f\" : \"--force\"\n, \"p\" : \"--parseable\"\n, \"l\" : \"--long\"\n}\n```\n\n```bash\nnpm ls -sgflp\n# just like doing this:\nnpm ls --loglevel silent --global --force --long --parseable\n```\n\n## The Rest of the args\n\nThe config object returned by nopt is given a special member called\n`argv`, which is an object with the following fields:\n\n* `remain`: The remaining args after all the parsing has occurred.\n* `original`: The args as they originally appeared.\n* `cooked`: The args after flags and shorthands are expanded.\n\n## Slicing\n\nNode programs are called with more or less the exact argv as it appears\nin C land, after the v8 and node-specific options have been plucked off.\nAs such, `argv[0]` is always `node` and `argv[1]` is always the\nJavaScript program being run.\n\nThat's usually not very useful to you. So they're sliced off by\ndefault. If you want them, then you can pass in `0` as the last\nargument, or any other number that you'd like to slice off the start of\nthe list.\n", + "readmeFilename": "README.md", + "gitHead": "f52626631ea1afef5a6dd9acf23ddd1466831a08", "bugs": { "url": "https://github.com/isaacs/nopt/issues" }, "homepage": "https://github.com/isaacs/nopt#readme", - "_id": "nopt@3.0.3", - "_shasum": "0e9978f33016bae0b75e3748c03bbbb71da5c530", - "_from": "nopt@>=3.0.3 <3.1.0", - "_npmVersion": "2.12.0", - "_nodeVersion": "2.2.1", - "_npmUser": { - "name": "isaacs", - "email": "isaacs@npmjs.com" - }, - "dist": { - "shasum": "0e9978f33016bae0b75e3748c03bbbb71da5c530", - "tarball": "http://registry.npmjs.org/nopt/-/nopt-3.0.3.tgz" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, - "_resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.3.tgz" + "_id": "nopt@3.0.4", + "_shasum": "dd63bc9c72a6e4e85b85cdc0ca314598facede5e", + "_from": "nopt@3.0.4" } diff --git a/deps/npm/node_modules/normalize-package-data/README.md b/deps/npm/node_modules/normalize-package-data/README.md index da4d9f6519b6..9f412a0ac02f 100644 --- a/deps/npm/node_modules/normalize-package-data/README.md +++ b/deps/npm/node_modules/normalize-package-data/README.md @@ -72,7 +72,7 @@ If the supplied data has an invalid name or version vield, `normalizeData` will * As of v2: Dependencies that use shortcuts for hosted git providers (`org/proj`, `github:org/proj`, `bitbucket:org/proj`, `gitlab:org/proj`, `gist:docid`) will have the shortcut left in place. (In the case of github, the `org/proj` form will be expanded to `github:org/proj`.) THIS MARKS A BREAKING CHANGE FROM V1, where the shorcut was previously expanded to a URL. * If `description` field does not exist, 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`. * If `repository` field is a string, it will become an object with `url` set to the original string value, and `type` set to `"git"`. -* If `repository.url` is not a valid url, but in the style of "[owner-name]/[repo-name]", `repository.url` will be set to https://github.com/[owner-name]/[repo-name] +* If `repository.url` is not a valid url, but in the style of "[owner-name]/[repo-name]", `repository.url` will be set to git+https://github.com/[owner-name]/[repo-name].git * If `bugs` field is a string, the value of `bugs` field is changed into an object with `url` set to the original string value. * 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. * 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. diff --git a/deps/npm/node_modules/normalize-package-data/lib/core_module_names.json b/deps/npm/node_modules/normalize-package-data/lib/core_module_names.json deleted file mode 100644 index 637c2f07341c..000000000000 --- a/deps/npm/node_modules/normalize-package-data/lib/core_module_names.json +++ /dev/null @@ -1,29 +0,0 @@ -[ -"http", -"events", -"util", -"domain", -"cluster", -"buffer", -"stream", -"crypto", -"tls", -"fs", -"string_decoder", -"path", -"net", -"dgram", -"dns", -"https", -"url", -"punycode", -"readline", -"repl", -"vm", -"child_process", -"assert", -"zlib", -"tty", -"os", -"querystring" -] diff --git a/deps/npm/node_modules/normalize-package-data/lib/fixer.js b/deps/npm/node_modules/normalize-package-data/lib/fixer.js index c96f0bcc4f14..5f64f01d7216 100644 --- a/deps/npm/node_modules/normalize-package-data/lib/fixer.js +++ b/deps/npm/node_modules/normalize-package-data/lib/fixer.js @@ -1,11 +1,11 @@ var semver = require("semver") var validateLicense = require('validate-npm-package-license'); var hostedGitInfo = require("hosted-git-info") +var isBuiltinModule = require("is-builtin-module") var depTypes = ["dependencies","devDependencies","optionalDependencies"] var extractDescription = require("./extract_description") var url = require("url") var typos = require("./typos") -var coreModuleNames = require("./core_module_names") var fixer = module.exports = { // default warning function @@ -208,7 +208,7 @@ var fixer = module.exports = { if (!strict) data.name = data.name.trim() ensureValidName(data.name, strict, options.allowLegacyCase) - if (coreModuleNames.indexOf(data.name) !== -1) + if (isBuiltinModule(data.name)) this.warn("conflictingName", data.name) } diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/index.js b/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/index.js new file mode 100644 index 000000000000..b6cfa616ae85 --- /dev/null +++ b/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/index.js @@ -0,0 +1,10 @@ +'use strict'; +var builtinModules = require('builtin-modules'); + +module.exports = function (str) { + if (typeof str !== 'string') { + throw new TypeError('Expected a string'); + } + + return builtinModules.indexOf(str) !== -1; +}; diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/license b/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/license new file mode 100644 index 000000000000..654d0bfe9434 --- /dev/null +++ b/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +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/normalize-package-data/node_modules/is-builtin-module/node_modules/builtin-modules/builtin-modules.json b/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/node_modules/builtin-modules/builtin-modules.json new file mode 100644 index 000000000000..72670f6bf5cf --- /dev/null +++ b/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/node_modules/builtin-modules/builtin-modules.json @@ -0,0 +1,35 @@ +[ + "assert", + "buffer", + "child_process", + "cluster", + "console", + "constants", + "crypto", + "dgram", + "dns", + "domain", + "events", + "fs", + "http", + "https", + "module", + "net", + "os", + "path", + "process", + "punycode", + "querystring", + "readline", + "repl", + "stream", + "string_decoder", + "timers", + "tls", + "tty", + "url", + "util", + "v8", + "vm", + "zlib" +] diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/node_modules/builtin-modules/index.js b/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/node_modules/builtin-modules/index.js new file mode 100644 index 000000000000..df3474a10f3f --- /dev/null +++ b/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/node_modules/builtin-modules/index.js @@ -0,0 +1,10 @@ +'use strict'; + +var blacklist = [ + 'freelist', + 'sys' +]; + +module.exports = Object.keys(process.binding('natives')).filter(function (el) { + return !/^_|^internal/.test(el) && blacklist.indexOf(el) === -1; +}).sort(); diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/node_modules/builtin-modules/license b/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/node_modules/builtin-modules/license new file mode 100644 index 000000000000..654d0bfe9434 --- /dev/null +++ b/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/node_modules/builtin-modules/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +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/normalize-package-data/node_modules/is-builtin-module/node_modules/builtin-modules/package.json b/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/node_modules/builtin-modules/package.json new file mode 100644 index 000000000000..a6851b0e0592 --- /dev/null +++ b/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/node_modules/builtin-modules/package.json @@ -0,0 +1,69 @@ +{ + "name": "builtin-modules", + "version": "1.1.0", + "description": "List of the Node.js builtin modules", + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/sindresorhus/builtin-modules.git" + }, + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "xo && ava", + "make": "node make.js" + }, + "files": [ + "index.js", + "static.js", + "builtin-modules.json" + ], + "keywords": [ + "builtin", + "built-in", + "builtins", + "node", + "modules", + "core", + "bundled", + "list", + "array", + "names" + ], + "devDependencies": { + "ava": "*", + "xo": "*" + }, + "gitHead": "d317be16fab701f2ac73bc9aa771f60ec052ed66", + "bugs": { + "url": "https://github.com/sindresorhus/builtin-modules/issues" + }, + "homepage": "https://github.com/sindresorhus/builtin-modules#readme", + "_id": "builtin-modules@1.1.0", + "_shasum": "1053955fd994a5746e525e4ac717b81caf07491c", + "_from": "builtin-modules@>=1.0.0 <2.0.0", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + "dist": { + "shasum": "1053955fd994a5746e525e4ac717b81caf07491c", + "tarball": "http://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.0.tgz" + }, + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + } + ], + "directories": {}, + "_resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.0.tgz" +} diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/node_modules/builtin-modules/readme.md b/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/node_modules/builtin-modules/readme.md new file mode 100644 index 000000000000..f1894b189653 --- /dev/null +++ b/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/node_modules/builtin-modules/readme.md @@ -0,0 +1,41 @@ +# builtin-modules [![Build Status](https://travis-ci.org/sindresorhus/builtin-modules.svg?branch=master)](https://travis-ci.org/sindresorhus/builtin-modules) + +> List of the Node.js builtin modules + +The list is just a [JSON file](builtin-modules.json) and can be used wherever. + + +## Install + +``` +$ npm install --save builtin-modules +``` + + +## Usage + +```js +var builtinModules = require('builtin-modules'); + +console.log(builinModules); +//=> ['assert', 'buffer', ...] +``` + + +## API + +Returns an array of builtin modules fetched from the running Node.js version. + +### Static list + +This module also comes bundled with a static array of builtin modules generated from the latest Node.js version. You can get it with `require('builtin-modules/static');` + + +## Related + +- [is-builtin-module](https://github.com/sindresorhus/is-builtin-module) - Check if a string matches the name of a Node.js builtin module + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/node_modules/builtin-modules/static.js b/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/node_modules/builtin-modules/static.js new file mode 100644 index 000000000000..9508f8f4ec42 --- /dev/null +++ b/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/node_modules/builtin-modules/static.js @@ -0,0 +1,2 @@ +'use strict'; +module.exports = require('./builtin-modules.json'); diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/package.json b/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/package.json new file mode 100644 index 000000000000..58feefdfb888 --- /dev/null +++ b/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/package.json @@ -0,0 +1,72 @@ +{ + "name": "is-builtin-module", + "version": "1.0.0", + "description": "Check if a string matches the name of a Node.js builtin module", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/sindresorhus/is-builtin-module" + }, + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "node test.js" + }, + "files": [ + "index.js" + ], + "keywords": [ + "builtin", + "built-in", + "builtins", + "node", + "modules", + "core", + "bundled", + "list", + "array", + "names", + "is", + "detect", + "check", + "match" + ], + "dependencies": { + "builtin-modules": "^1.0.0" + }, + "devDependencies": { + "ava": "0.0.4" + }, + "gitHead": "da55ebf031f3864c5d309e25e49ed816957d70a2", + "bugs": { + "url": "https://github.com/sindresorhus/is-builtin-module/issues" + }, + "homepage": "https://github.com/sindresorhus/is-builtin-module", + "_id": "is-builtin-module@1.0.0", + "_shasum": "540572d34f7ac3119f8f76c30cbc1b1e037affbe", + "_from": "is-builtin-module@>=1.0.0 <2.0.0", + "_npmVersion": "2.7.4", + "_nodeVersion": "0.12.2", + "_npmUser": { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + }, + "dist": { + "shasum": "540572d34f7ac3119f8f76c30cbc1b1e037affbe", + "tarball": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz" + }, + "maintainers": [ + { + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" + } + ], + "directories": {}, + "_resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz" +} diff --git a/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/readme.md b/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/readme.md new file mode 100644 index 000000000000..798dcf437179 --- /dev/null +++ b/deps/npm/node_modules/normalize-package-data/node_modules/is-builtin-module/readme.md @@ -0,0 +1,33 @@ +# is-builtin-module [![Build Status](https://travis-ci.org/sindresorhus/is-builtin-module.svg?branch=master)](https://travis-ci.org/sindresorhus/is-builtin-module) + +> Check if a string matches the name of a Node.js builtin module + + +## Install + +``` +$ npm install --save is-builtin-module +``` + + +## Usage + +```js +var isBuiltinModule = require('is-builtin-module'); + +isBuiltinModule('fs'); +//=> true + +isBuiltinModule('unicorn'); +//=> false :( +``` + + +## Related + +- [builtin-modules](https://github.com/sindresorhus/builtin-modules) - List of the Node.js builtin modules + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/deps/npm/node_modules/normalize-package-data/package.json b/deps/npm/node_modules/normalize-package-data/package.json index 0ea7c5418084..464b00927693 100644 --- a/deps/npm/node_modules/normalize-package-data/package.json +++ b/deps/npm/node_modules/normalize-package-data/package.json @@ -1,6 +1,6 @@ { "name": "normalize-package-data", - "version": "2.3.1", + "version": "2.3.4", "author": { "name": "Meryn Stol", "email": "merynstol@gmail.com" @@ -17,8 +17,9 @@ }, "dependencies": { "hosted-git-info": "^2.0.2", + "is-builtin-module": "^1.0.0", "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^2.0.0" + "validate-npm-package-license": "^3.0.1" }, "devDependencies": { "async": "~0.9.0", @@ -39,14 +40,14 @@ "email": "rok@kowalski.gd" } ], - "readme": "# normalize-package-data [![Build Status](https://travis-ci.org/npm/normalize-package-data.png?branch=master)](https://travis-ci.org/npm/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* As of v2: Dependencies that point at known hosted git providers (currently: github, bitbucket, gitlab) will have their URLs canonicalized, but protocols will be preserved.\n* As of v2: Dependencies that use shortcuts for hosted git providers (`org/proj`, `github:org/proj`, `bitbucket:org/proj`, `gitlab:org/proj`, `gist:docid`) will have the shortcut left in place. (In the case of github, the `org/proj` form will be expanded to `github:org/proj`.) THIS MARKS A BREAKING CHANGE FROM V1, where the shorcut was previously expanded to a URL.\n* If `description` field does not exist, 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 https://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### Rules for license field\n\nThe `license` field should be a valid *SDPDX license expression* or one of the special values allowed by [validate-npm-package-license](https://npmjs.com/packages/validate-npm-package-license). See [documentation for the license field in package.json](https://docs.npmjs.com/files/package.json#license).\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 \n", + "readme": "# normalize-package-data [![Build Status](https://travis-ci.org/npm/normalize-package-data.png?branch=master)](https://travis-ci.org/npm/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* As of v2: Dependencies that point at known hosted git providers (currently: github, bitbucket, gitlab) will have their URLs canonicalized, but protocols will be preserved.\n* As of v2: Dependencies that use shortcuts for hosted git providers (`org/proj`, `github:org/proj`, `bitbucket:org/proj`, `gitlab:org/proj`, `gist:docid`) will have the shortcut left in place. (In the case of github, the `org/proj` form will be expanded to `github:org/proj`.) THIS MARKS A BREAKING CHANGE FROM V1, where the shorcut was previously expanded to a URL.\n* If `description` field does not exist, 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+https://github.com/[owner-name]/[repo-name].git\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### Rules for license field\n\nThe `license` field should be a valid *SDPDX license expression* or one of the special values allowed by [validate-npm-package-license](https://npmjs.com/packages/validate-npm-package-license). See [documentation for the license field in package.json](https://docs.npmjs.com/files/package.json#license).\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 \n", "readmeFilename": "README.md", - "gitHead": "43b844bd37aac28d204be7567b731d9c55025871", + "gitHead": "0aa15b23116f2dfd086f1ed6bf213cbb7e7490dd", "bugs": { "url": "https://github.com/npm/normalize-package-data/issues" }, "homepage": "https://github.com/npm/normalize-package-data#readme", - "_id": "normalize-package-data@2.3.1", - "_shasum": "e2d24a5ab38a90b22cd697753407d8564f49a890", - "_from": "normalize-package-data@>=2.3.1 <2.4.0" + "_id": "normalize-package-data@2.3.4", + "_shasum": "b92233ce6ef04fbd6bc0c05dead155af33a623e0", + "_from": "normalize-package-data@2.3.4" } diff --git a/deps/npm/node_modules/npm-registry-client/.travis.yml b/deps/npm/node_modules/npm-registry-client/.travis.yml index 686d9aecaf64..3669bc76e06c 100644 --- a/deps/npm/node_modules/npm-registry-client/.travis.yml +++ b/deps/npm/node_modules/npm-registry-client/.travis.yml @@ -2,9 +2,11 @@ language: node_js node_js: - "0.12" - "0.10" + - "0.8" - iojs -before_install: - - "npm install -g npm@^2" script: "npm test" +sudo: false +before_install: + - "npm install -g npm@latest" notifications: slack: npm-inc:kRqQjto7YbINqHPb1X6nS3g8 diff --git a/deps/npm/node_modules/npm-registry-client/lib/access.js b/deps/npm/node_modules/npm-registry-client/lib/access.js index b671f6b5f219..badb770ea49a 100644 --- a/deps/npm/node_modules/npm-registry-client/lib/access.js +++ b/deps/npm/node_modules/npm-registry-client/lib/access.js @@ -1,30 +1,153 @@ module.exports = access var assert = require('assert') +var url = require('url') +var npa = require('npm-package-arg') +var subcommands = {} -function access (uri, params, cb) { - assert(typeof uri === 'string', 'must pass registry URI to access') - assert(params && typeof params === 'object', 'must pass params to access') - assert(typeof cb === 'function', 'muss pass callback to access') - - assert(typeof params.level === 'string', 'must pass level to access') - assert( - ['public', 'restricted'].indexOf(params.level) !== -1, - "access level must be either 'public' or 'restricted'" - ) - assert( - params.auth && typeof params.auth === 'object', - 'must pass auth to access' - ) - - var body = { - access: params.level - } +function access (sub, uri, params, cb) { + accessAssertions(sub, uri, params, cb) + return subcommands[sub].call(this, uri, params, cb) +} + +subcommands.public = function (uri, params, cb) { + return setAccess.call(this, 'public', uri, params, cb) +} +subcommands.restricted = function (uri, params, cb) { + return setAccess.call(this, 'restricted', uri, params, cb) +} - var options = { +function setAccess (access, uri, params, cb) { + return this.request(apiUri(uri, 'package', params.package, 'access'), { method: 'POST', - body: JSON.stringify(body), + auth: params.auth, + body: JSON.stringify({ access: access }) + }, cb) +} + +subcommands.grant = function (uri, params, cb) { + var reqUri = apiUri(uri, 'team', params.scope, params.team, 'package') + return this.request(reqUri, { + method: 'PUT', + auth: params.auth, + body: JSON.stringify({ + permissions: params.permissions, + package: params.package + }) + }, cb) +} + +subcommands.revoke = function (uri, params, cb) { + var reqUri = apiUri(uri, 'team', params.scope, params.team, 'package') + return this.request(reqUri, { + method: 'DELETE', + auth: params.auth, + body: JSON.stringify({ + package: params.package + }) + }, cb) +} + +subcommands['ls-packages'] = function (uri, params, cb, type) { + type = type || (params.team ? 'team' : 'org') + var client = this + var uriParams = '?format=cli' + var reqUri = apiUri(uri, type, params.scope, params.team, 'package') + return client.request(reqUri + uriParams, { + method: 'GET', + auth: params.auth + }, function (err, perms) { + if (err && err.statusCode === 404 && type === 'org') { + subcommands['ls-packages'].call(client, uri, params, cb, 'user') + } else { + cb(err, perms && translatePermissions(perms)) + } + }) +} + +subcommands['ls-collaborators'] = function (uri, params, cb) { + var uriParams = '?format=cli' + if (params.user) { + uriParams += ('&user=' + encodeURIComponent(params.user)) + } + var reqUri = apiUri(uri, 'package', params.package, 'collaborators') + return this.request(reqUri + uriParams, { + method: 'GET', auth: params.auth + }, function (err, perms) { + cb(err, perms && translatePermissions(perms)) + }) +} + +subcommands.edit = function () { + throw new Error('edit subcommand is not implemented yet') +} + +function apiUri (registryUri) { + var path = Array.prototype.slice.call(arguments, 1) + .filter(function (x) { return x }) + .map(encodeURIComponent) + .join('/') + return url.resolve(registryUri, '-/' + path) +} + +function accessAssertions (subcommand, uri, params, cb) { + assert(subcommands.hasOwnProperty(subcommand), + 'access subcommand must be one of ' + + Object.keys(subcommands).join(', ')) + typeChecks({ + 'uri': [uri, 'string'], + 'params': [params, 'object'], + 'auth': [params.auth, 'object'], + 'callback': [cb, 'function'] + }) + if (contains([ + 'public', 'restricted', 'grant', 'revoke', 'ls-collaborators' + ], subcommand)) { + typeChecks({ 'package': [params.package, 'string']}) + assert(!!npa(params.package).scope, + 'access commands are only accessible for scoped packages') + } + if (contains(['grant', 'revoke', 'ls-packages'], subcommand)) { + typeChecks({ 'scope': [params.scope, 'string']}) + } + if (contains(['grant', 'revoke'], subcommand)) { + typeChecks({ 'team': [params.team, 'string']}) + } + if (subcommand === 'grant') { + typeChecks({ 'permissions': [params.permissions, 'string']}) + assert(params.permissions === 'read-only' || + params.permissions === 'read-write', + 'permissions must be either read-only or read-write') + } +} + +function typeChecks (specs) { + Object.keys(specs).forEach(function (key) { + var checks = specs[key] + assert(typeof checks[0] === checks[1], + key + ' is required and must be of type ' + checks[1]) + }) +} + +function contains (arr, item) { + return arr.indexOf(item) !== -1 +} + +function translatePermissions (perms) { + var newPerms = {} + for (var key in perms) { + if (perms.hasOwnProperty(key)) { + if (perms[key] === 'read') { + newPerms[key] = 'read-only' + } else if (perms[key] === 'write') { + newPerms[key] = 'read-write' + } else { + // This shouldn't happen, but let's not break things + // if the API starts returning different things. + newPerms[key] = perms[key] + } + } } - this.request(uri, options, cb) + return newPerms } diff --git a/deps/npm/node_modules/npm-registry-client/lib/deprecate.js b/deps/npm/node_modules/npm-registry-client/lib/deprecate.js index 04d311cc0c8b..5ff3a8891f5e 100644 --- a/deps/npm/node_modules/npm-registry-client/lib/deprecate.js +++ b/deps/npm/node_modules/npm-registry-client/lib/deprecate.js @@ -1,7 +1,6 @@ module.exports = deprecate var assert = require('assert') -var url = require('url') var semver = require('semver') function deprecate (uri, params, cb) { @@ -38,6 +37,6 @@ function deprecate (uri, params, cb) { body: data, auth: auth } - this.request(url.resolve(uri, data._id), options, cb) + this.request(uri, options, cb) }.bind(this)) } diff --git a/deps/npm/node_modules/npm-registry-client/lib/request.js b/deps/npm/node_modules/npm-registry-client/lib/request.js index 168a9d160af2..567fc8dbe42b 100644 --- a/deps/npm/node_modules/npm-registry-client/lib/request.js +++ b/deps/npm/node_modules/npm-registry-client/lib/request.js @@ -9,6 +9,7 @@ var assert = require('assert') var url = require('url') var zlib = require('zlib') var Stream = require('stream').Stream +var STATUS_CODES = require('http').STATUS_CODES var request = require('request') var once = require('once') @@ -63,6 +64,13 @@ function regRequest (uri, params, cb_) { var self = this this.attempt(function (operation) { makeRequest.call(self, uri, params, function (er, parsed, raw, response) { + if (response) { + self.log.verbose('headers', response.headers) + if (response.headers['npm-notice']) { + self.log.warn('notice', response.headers['npm-notice']) + } + } + if (!er || (er.message && er.message.match(/^SSL Error/))) { if (er) er.code = 'ESSL' return cb(er, parsed, raw, response) @@ -78,12 +86,6 @@ function regRequest (uri, params, cb_) { self.log.info('retry', 'will retry, error on last attempt: ' + er) return undefined } - if (response) { - self.log.verbose('headers', response.headers) - if (response.headers['npm-notice']) { - self.log.warn('notice', response.headers['npm-notice']) - } - } cb.apply(null, arguments) }) }) @@ -208,8 +210,9 @@ function requestDone (method, where, cb) { // expect data with any error codes if (!data && response.statusCode >= 400) { + var code = response.statusCode return cb( - response.statusCode + ' ' + require('http').STATUS_CODES[response.statusCode], + makeError(code + ' ' + STATUS_CODES[code], null, code), null, data, response @@ -236,22 +239,33 @@ function requestDone (method, where, cb) { } if (!parsed.error) { - er = new Error( + er = makeError( 'Registry returned ' + response.statusCode + ' for ' + method + - ' on ' + where + ' on ' + where, + name, + response.statusCode ) } else if (name && parsed.error === 'not_found') { - er = new Error('404 Not Found: ' + name) + er = makeError('404 Not Found: ' + name, name, response.statusCode) } else { - er = new Error( - parsed.error + ' ' + (parsed.reason || '') + ': ' + (name || w) + er = makeError( + parsed.error + ' ' + (parsed.reason || '') + ': ' + (name || w), + name, + response.statusCode ) } - if (name) er.pkgid = name - er.statusCode = response.statusCode - er.code = 'E' + er.statusCode } return cb(er, parsed, data, response) }.bind(this) } + +function makeError (message, name, code) { + var er = new Error(message) + if (name) er.pkgid = name + if (code) { + er.statusCode = code + er.code = 'E' + code + } + return er +} diff --git a/deps/npm/node_modules/npm-registry-client/lib/team.js b/deps/npm/node_modules/npm-registry-client/lib/team.js new file mode 100644 index 000000000000..3e3794e04776 --- /dev/null +++ b/deps/npm/node_modules/npm-registry-client/lib/team.js @@ -0,0 +1,105 @@ +module.exports = team + +var assert = require('assert') +var url = require('url') + +var subcommands = {} + +function team (sub, uri, params, cb) { + teamAssertions(sub, uri, params, cb) + return subcommands[sub].call(this, uri, params, cb) +} + +subcommands.create = function (uri, params, cb) { + return this.request(apiUri(uri, 'org', params.scope, 'team'), { + method: 'PUT', + auth: params.auth, + body: JSON.stringify({ + name: params.team + }) + }, cb) +} + +subcommands.destroy = function (uri, params, cb) { + return this.request(apiUri(uri, 'team', params.scope, params.team), { + method: 'DELETE', + auth: params.auth + }, cb) +} + +subcommands.add = function (uri, params, cb) { + return this.request(apiUri(uri, 'team', params.scope, params.team, 'user'), { + method: 'PUT', + auth: params.auth, + body: JSON.stringify({ + user: params.user + }) + }, cb) +} + +subcommands.rm = function (uri, params, cb) { + return this.request(apiUri(uri, 'team', params.scope, params.team, 'user'), { + method: 'DELETE', + auth: params.auth, + body: JSON.stringify({ + user: params.user + }) + }, cb) +} + +subcommands.ls = function (uri, params, cb) { + var uriParams = '?format=cli' + if (params.team) { + var reqUri = apiUri( + uri, 'team', params.scope, params.team, 'user') + uriParams + return this.request(reqUri, { + method: 'GET', + auth: params.auth + }, cb) + } else { + return this.request(apiUri(uri, 'org', params.scope, 'team') + uriParams, { + method: 'GET', + auth: params.auth + }, cb) + } +} + +// TODO - we punted this to v2 +// subcommands.edit = function (uri, params, cb) { +// return this.request(apiUri(uri, 'team', params.scope, params.team, 'user'), { +// method: 'POST', +// auth: params.auth, +// body: JSON.stringify({ +// users: params.users +// }) +// }, cb) +// } + +function apiUri (registryUri) { + var path = Array.prototype.slice.call(arguments, 1) + .map(encodeURIComponent) + .join('/') + return url.resolve(registryUri, '-/' + path) +} + +function teamAssertions (subcommand, uri, params, cb) { + assert(subcommand, 'subcommand is required') + assert(subcommands.hasOwnProperty(subcommand), + 'team subcommand must be one of ' + Object.keys(subcommands)) + assert(typeof uri === 'string', 'registry URI is required') + assert(typeof params === 'object', 'params are required') + assert(typeof params.auth === 'object', 'auth is required') + assert(typeof params.scope === 'string', 'scope is required') + assert(!cb || typeof cb === 'function', 'callback must be a function') + if (subcommand !== 'ls') { + assert(typeof params.team === 'string', 'team name is required') + } + if (subcommand === 'rm' || subcommand === 'add') { + assert(typeof params.user === 'string', 'user is required') + } + if (subcommand === 'edit') { + assert(typeof params.users === 'object' && + params.users.length != null, + 'users is required') + } +} diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json index b67333380c26..466dfdfe0139 100644 --- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json +++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json @@ -29,9 +29,25 @@ }, "readme": "# core-util-is\n\nThe `util.is*` functions introduced in Node v0.12.\n", "readmeFilename": "README.md", - "homepage": "https://github.com/isaacs/core-util-is#readme", + "homepage": "https://github.com/isaacs/core-util-is", "_id": "core-util-is@1.0.1", + "dist": { + "shasum": "6b07085aef9a3ccac6ee53bf9d3df0c1521a5538", + "tarball": "http://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "_from": "core-util-is@>=1.0.0 <1.1.0", + "_npmVersion": "1.3.23", + "_npmUser": { + "name": "isaacs", + "email": "i@izs.me" + }, + "maintainers": [ + { + "name": "isaacs", + "email": "i@izs.me" + } + ], + "directories": {}, "_shasum": "6b07085aef9a3ccac6ee53bf9d3df0c1521a5538", - "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", - "_from": "core-util-is@>=1.0.0 <1.1.0" + "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" } diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/package.json index fb1eb3786d81..19228ab6fdca 100644 --- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/package.json +++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/package.json @@ -26,13 +26,28 @@ "url": "http://juliangruber.com" }, "license": "MIT", - "readme": "\n# isarray\n\n`Array#isArray` for older browsers.\n\n## Usage\n\n```js\nvar isArray = require('isarray');\n\nconsole.log(isArray([])); // => true\nconsole.log(isArray({})); // => false\n```\n\n## Installation\n\nWith [npm](http://npmjs.org) do\n\n```bash\n$ npm install isarray\n```\n\nThen bundle for the browser with\n[browserify](https://github.com/substack/browserify).\n\nWith [component](http://component.io) do\n\n```bash\n$ component install juliangruber/isarray\n```\n\n## License\n\n(MIT)\n\nCopyright (c) 2013 Julian Gruber <julian@juliangruber.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/juliangruber/isarray/issues" - }, "_id": "isarray@0.0.1", + "dist": { + "shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", + "tarball": "http://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "_from": "isarray@0.0.1", + "_npmVersion": "1.2.18", + "_npmUser": { + "name": "juliangruber", + "email": "julian@juliangruber.com" + }, + "maintainers": [ + { + "name": "juliangruber", + "email": "julian@juliangruber.com" + } + ], + "directories": {}, "_shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", "_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "_from": "isarray@0.0.1" + "bugs": { + "url": "https://github.com/juliangruber/isarray/issues" + }, + "readme": "ERROR: No README data found!" } diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/index.js b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/index.js index 3eb2f33d0cee..049521cad7ba 100644 --- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/index.js +++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/index.js @@ -4,7 +4,7 @@ module.exports = nextTick; function nextTick(fn) { var args = new Array(arguments.length - 1); var i = 0; - while (i < arguments.length) { + while (i < args.length) { args[i++] = arguments[i]; } process.nextTick(function afterTick() { diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/license.md b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/license.md new file mode 100644 index 000000000000..c67e3532b542 --- /dev/null +++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/license.md @@ -0,0 +1,19 @@ +# Copyright (c) 2015 Calvin Metcalf + +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/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/package.json index 9be9ed5b5cf3..087586e8f8ce 100644 --- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/package.json +++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/package.json @@ -1,6 +1,6 @@ { "name": "process-nextick-args", - "version": "1.0.2", + "version": "1.0.3", "description": "process.nextTick but always with args", "main": "index.js", "scripts": { @@ -19,19 +19,19 @@ "devDependencies": { "tap": "~0.2.6" }, - "gitHead": "295707643b4ed6667c1afb71ffb6101669b5dac2", - "_id": "process-nextick-args@1.0.2", - "_shasum": "8b4d3fc586668bd5b6573e732edf2b71c1c1d8aa", + "gitHead": "e855846a69662b9489f1ad3dde1ebf2ccc4370b8", + "_id": "process-nextick-args@1.0.3", + "_shasum": "e272eed825d5e9f4ea74d8d73b1fe311c3beb630", "_from": "process-nextick-args@>=1.0.0 <1.1.0", - "_npmVersion": "2.11.1", - "_nodeVersion": "2.3.0", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.5.0", "_npmUser": { "name": "cwmma", "email": "calvin.metcalf@gmail.com" }, "dist": { - "shasum": "8b4d3fc586668bd5b6573e732edf2b71c1c1d8aa", - "tarball": "http://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.2.tgz" + "shasum": "e272eed825d5e9f4ea74d8d73b1fe311c3beb630", + "tarball": "http://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.3.tgz" }, "maintainers": [ { @@ -40,6 +40,6 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.2.tgz", + "_resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.3.tgz", "readme": "ERROR: No README data found!" } diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/test.js b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/test.js index 729f775ff509..ef15721584ac 100644 --- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/test.js +++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/test.js @@ -15,3 +15,10 @@ test('should work', function (t) { t.equals(c, 'profit'); }, 'step', 3, 'profit'); }); + +test('correct number of arguments', function (t) { + t.plan(1); + nextTick(function () { + t.equals(2, arguments.length, 'correct number'); + }, 1, 2); +}); diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json index ee7070235919..0364d54ba46a 100644 --- a/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json +++ b/deps/npm/node_modules/npm-registry-client/node_modules/concat-stream/node_modules/readable-stream/node_modules/string_decoder/package.json @@ -22,13 +22,33 @@ "browserify" ], "license": "MIT", - "readme": "**string_decoder.js** (`require('string_decoder')`) from Node.js core\n\nCopyright Joyent, Inc. and other Node contributors. See LICENCE file for details.\n\nVersion numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.**\n\nThe *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version.", - "readmeFilename": "README.md", + "gitHead": "d46d4fd87cf1d06e031c23f1ba170ca7d4ade9a0", "bugs": { "url": "https://github.com/rvagg/string_decoder/issues" }, "_id": "string_decoder@0.10.31", "_shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94", + "_from": "string_decoder@>=0.10.0 <0.11.0", + "_npmVersion": "1.4.23", + "_npmUser": { + "name": "rvagg", + "email": "rod@vagg.org" + }, + "maintainers": [ + { + "name": "substack", + "email": "mail@substack.net" + }, + { + "name": "rvagg", + "email": "rod@vagg.org" + } + ], + "dist": { + "shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94", + "tarball": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "directories": {}, "_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "_from": "string_decoder@>=0.10.0 <0.11.0" + "readme": "ERROR: No README data found!" } diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/.npmignore b/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/.npmignore deleted file mode 100644 index c2658d7d1b31..000000000000 --- a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/LICENSE b/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/LICENSE deleted file mode 100644 index 19129e315fe5..000000000000 --- a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -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/npm-registry-client/node_modules/graceful-fs/README.md b/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/README.md deleted file mode 100644 index 13a2e86050a3..000000000000 --- a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# graceful-fs - -graceful-fs functions as a drop-in replacement for the fs module, -making various improvements. - -The improvements are meant to normalize behavior across different -platforms and environments, and to make filesystem access more -resilient to errors. - -## Improvements over [fs module](http://api.nodejs.org/fs.html) - -graceful-fs: - -* Queues up `open` and `readdir` calls, and retries them once - something closes if there is an EMFILE error from too many file - descriptors. -* fixes `lchmod` for Node versions prior to 0.6.2. -* implements `fs.lutimes` if possible. Otherwise it becomes a noop. -* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or - `lchown` if the user isn't root. -* makes `lchmod` and `lchown` become noops, if not available. -* retries reading a file if `read` results in EAGAIN error. - -On Windows, it retries renaming a file for up to one second if `EACCESS` -or `EPERM` error occurs, likely because antivirus software has locked -the directory. - -## USAGE - -```javascript -// use just like fs -var fs = require('graceful-fs') - -// now go and do stuff with it... -fs.readFileSync('some-file-or-whatever') -``` diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/fs.js b/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/fs.js deleted file mode 100644 index 64ad980232ec..000000000000 --- a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/fs.js +++ /dev/null @@ -1,11 +0,0 @@ -// eeeeeevvvvviiiiiiillllll -// more evil than monkey-patching the native builtin? -// Not sure. - -var mod = require("module") -var pre = '(function (exports, require, module, __filename, __dirname) { ' -var post = '});' -var src = pre + process.binding('natives').fs + post -var vm = require('vm') -var fn = vm.runInThisContext(src) -fn(exports, require, module, __filename, __dirname) diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/graceful-fs.js b/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/graceful-fs.js deleted file mode 100644 index fb206b83854a..000000000000 --- a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/graceful-fs.js +++ /dev/null @@ -1,158 +0,0 @@ -// Monkey-patching the fs module. -// It's ugly, but there is simply no other way to do this. -var fs = module.exports = require('./fs.js') - -var assert = require('assert') - -// fix up some busted stuff, mostly on windows and old nodes -require('./polyfills.js') - -var util = require('util') - -function noop () {} - -var debug = noop -if (util.debuglog) - debug = util.debuglog('gfs') -else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) - debug = function() { - var m = util.format.apply(util, arguments) - m = 'GFS: ' + m.split(/\n/).join('\nGFS: ') - console.error(m) - } - -if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) { - process.on('exit', function() { - debug('fds', fds) - debug(queue) - assert.equal(queue.length, 0) - }) -} - - -var originalOpen = fs.open -fs.open = open - -function open(path, flags, mode, cb) { - if (typeof mode === "function") cb = mode, mode = null - if (typeof cb !== "function") cb = noop - new OpenReq(path, flags, mode, cb) -} - -function OpenReq(path, flags, mode, cb) { - this.path = path - this.flags = flags - this.mode = mode - this.cb = cb - Req.call(this) -} - -util.inherits(OpenReq, Req) - -OpenReq.prototype.process = function() { - originalOpen.call(fs, this.path, this.flags, this.mode, this.done) -} - -var fds = {} -OpenReq.prototype.done = function(er, fd) { - debug('open done', er, fd) - if (fd) - fds['fd' + fd] = this.path - Req.prototype.done.call(this, er, fd) -} - - -var originalReaddir = fs.readdir -fs.readdir = readdir - -function readdir(path, cb) { - if (typeof cb !== "function") cb = noop - new ReaddirReq(path, cb) -} - -function ReaddirReq(path, cb) { - this.path = path - this.cb = cb - Req.call(this) -} - -util.inherits(ReaddirReq, Req) - -ReaddirReq.prototype.process = function() { - originalReaddir.call(fs, this.path, this.done) -} - -ReaddirReq.prototype.done = function(er, files) { - if (files && files.sort) - files = files.sort() - Req.prototype.done.call(this, er, files) - onclose() -} - - -var originalClose = fs.close -fs.close = close - -function close (fd, cb) { - debug('close', fd) - if (typeof cb !== "function") cb = noop - delete fds['fd' + fd] - originalClose.call(fs, fd, function(er) { - onclose() - cb(er) - }) -} - - -var originalCloseSync = fs.closeSync -fs.closeSync = closeSync - -function closeSync (fd) { - try { - return originalCloseSync(fd) - } finally { - onclose() - } -} - - -// Req class -function Req () { - // start processing - this.done = this.done.bind(this) - this.failures = 0 - this.process() -} - -Req.prototype.done = function (er, result) { - var tryAgain = false - if (er) { - var code = er.code - var tryAgain = code === "EMFILE" || code === "ENFILE" - if (process.platform === "win32") - tryAgain = tryAgain || code === "OK" - } - - if (tryAgain) { - this.failures ++ - enqueue(this) - } else { - var cb = this.cb - cb(er, result) - } -} - -var queue = [] - -function enqueue(req) { - queue.push(req) - debug('enqueue %d %s', queue.length, req.constructor.name, req) -} - -function onclose() { - var req = queue.shift() - if (req) { - debug('process', req.constructor.name, req) - req.process() - } -} diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/package.json b/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/package.json deleted file mode 100644 index 9add3d355157..000000000000 --- a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/package.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "name": "graceful-fs", - "description": "A drop-in replacement for fs, making various improvements.", - "version": "3.0.8", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-graceful-fs.git" - }, - "main": "graceful-fs.js", - "engines": { - "node": ">=0.4.0" - }, - "directories": { - "test": "test" - }, - "scripts": { - "test": "tap test/*.js" - }, - "keywords": [ - "fs", - "module", - "reading", - "retry", - "retries", - "queue", - "error", - "errors", - "handling", - "EMFILE", - "EAGAIN", - "EINVAL", - "EPERM", - "EACCESS" - ], - "license": "ISC", - "devDependencies": { - "mkdirp": "^0.5.0", - "rimraf": "^2.2.8", - "tap": "^1.2.0" - }, - "gitHead": "45c57aa5e323c35a985a525de6f0c9a6ef59e1f8", - "bugs": { - "url": "https://github.com/isaacs/node-graceful-fs/issues" - }, - "homepage": "https://github.com/isaacs/node-graceful-fs#readme", - "_id": "graceful-fs@3.0.8", - "_shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22", - "_from": "graceful-fs@>=3.0.0 <4.0.0", - "_npmVersion": "2.10.1", - "_nodeVersion": "2.0.1", - "_npmUser": { - "name": "isaacs", - "email": "isaacs@npmjs.com" - }, - "dist": { - "shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22", - "tarball": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/polyfills.js b/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/polyfills.js deleted file mode 100644 index 8ac5006e2da2..000000000000 --- a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/polyfills.js +++ /dev/null @@ -1,254 +0,0 @@ -var fs = require('./fs.js') -var constants = require('constants') - -var origCwd = process.cwd -var cwd = null -process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process) - return cwd -} -var chdir = process.chdir -process.chdir = function(d) { - cwd = null - chdir.call(process, d) -} - -// (re-)implement some things that are known busted or missing. - -// lchmod, broken prior to 0.6.2 -// back-port the fix here. -if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - fs.lchmod = function (path, mode, callback) { - callback = callback || noop - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - callback(err || err2) - }) - }) - }) - } - - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var err, err2 - try { - var ret = fs.fchmodSync(fd, mode) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } -} - - -// lutimes implementation, or no-op -if (!fs.lutimes) { - if (constants.hasOwnProperty("O_SYMLINK")) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - cb = cb || noop - if (er) return cb(er) - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - return cb(er || er2) - }) - }) - }) - } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - , err - , err2 - , ret - - try { - var ret = fs.futimesSync(fd, at, mt) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } - - } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) { - // maybe utimensat will be bound soonish? - fs.lutimes = function (path, at, mt, cb) { - fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb) - } - - fs.lutimesSync = function (path, at, mt) { - return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW) - } - - } else { - fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) } - fs.lutimesSync = function () {} - } -} - - -// https://github.com/isaacs/node-graceful-fs/issues/4 -// Chown should not fail on einval or eperm if non-root. -// It should not fail on enosys ever, as this just indicates -// that a fs doesn't support the intended operation. - -fs.chown = chownFix(fs.chown) -fs.fchown = chownFix(fs.fchown) -fs.lchown = chownFix(fs.lchown) - -fs.chmod = chownFix(fs.chmod) -fs.fchmod = chownFix(fs.fchmod) -fs.lchmod = chownFix(fs.lchmod) - -fs.chownSync = chownFixSync(fs.chownSync) -fs.fchownSync = chownFixSync(fs.fchownSync) -fs.lchownSync = chownFixSync(fs.lchownSync) - -fs.chmodSync = chownFix(fs.chmodSync) -fs.fchmodSync = chownFix(fs.fchmodSync) -fs.lchmodSync = chownFix(fs.lchmodSync) - -function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er, res) { - if (chownErOk(er)) er = null - cb(er, res) - }) - } -} - -function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } -} - -// ENOSYS means that the fs doesn't support the op. Just ignore -// that, because it doesn't matter. -// -// if there's no getuid, or if getuid() is something other -// than 0, and the error is EINVAL or EPERM, then just ignore -// it. -// -// This specific case is a silent failure in cp, install, tar, -// and most other unix tools that manage permissions. -// -// When running as root, or if other types of errors are -// encountered, then it's strict. -function chownErOk (er) { - if (!er) - return true - - if (er.code === "ENOSYS") - return true - - var nonroot = !process.getuid || process.getuid() !== 0 - if (nonroot) { - if (er.code === "EINVAL" || er.code === "EPERM") - return true - } - - return false -} - - -// if lchmod/lchown do not exist, then make them no-ops -if (!fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - process.nextTick(cb) - } - fs.lchmodSync = function () {} -} -if (!fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - process.nextTick(cb) - } - fs.lchownSync = function () {} -} - - - -// on Windows, A/V software can lock the directory, causing this -// to fail with an EACCES or EPERM if the directory contains newly -// created files. Try again on failure, for up to 1 second. -if (process.platform === "win32") { - var rename_ = fs.rename - fs.rename = function rename (from, to, cb) { - var start = Date.now() - rename_(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM") - && Date.now() - start < 1000) { - return rename_(from, to, CB) - } - if(cb) cb(er) - }) - } -} - - -// if read() returns EAGAIN, then just try it again. -var read = fs.read -fs.read = function (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) - } - } - return read.call(fs, fd, buffer, offset, length, position, callback) -} - -var readSync = fs.readSync -fs.readSync = function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } -} diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/test/max-open.js b/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/test/max-open.js deleted file mode 100644 index a6b9ba43d3a6..000000000000 --- a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/test/max-open.js +++ /dev/null @@ -1,69 +0,0 @@ -var test = require('tap').test -var fs = require('../') - -test('open lots of stuff', function (t) { - // Get around EBADF from libuv by making sure that stderr is opened - // Otherwise Darwin will refuse to give us a FD for stderr! - process.stderr.write('') - - // How many parallel open()'s to do - var n = 1024 - var opens = 0 - var fds = [] - var going = true - var closing = false - var doneCalled = 0 - - for (var i = 0; i < n; i++) { - go() - } - - function go() { - opens++ - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fds.push(fd) - if (going) go() - }) - } - - // should hit ulimit pretty fast - setTimeout(function () { - going = false - t.equal(opens - fds.length, n) - done() - }, 100) - - - function done () { - if (closing) return - doneCalled++ - - if (fds.length === 0) { - console.error('done called %d times', doneCalled) - // First because of the timeout - // Then to close the fd's opened afterwards - // Then this time, to complete. - // Might take multiple passes, depending on CPU speed - // and ulimit, but at least 3 in every case. - t.ok(doneCalled >= 2) - return t.end() - } - - closing = true - setTimeout(function () { - // console.error('do closing again') - closing = false - done() - }, 100) - - // console.error('closing time') - var closes = fds.slice(0) - fds.length = 0 - closes.forEach(function (fd) { - fs.close(fd, function (er) { - if (er) throw er - }) - }) - } -}) diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/test/open.js b/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/test/open.js deleted file mode 100644 index 85732f236b00..000000000000 --- a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/test/open.js +++ /dev/null @@ -1,39 +0,0 @@ -var test = require('tap').test -var fs = require('../graceful-fs.js') - -test('graceful fs is monkeypatched fs', function (t) { - t.equal(fs, require('../fs.js')) - t.end() -}) - -test('open an existing file works', function (t) { - var fd = fs.openSync(__filename, 'r') - fs.closeSync(fd) - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fs.close(fd, function (er) { - if (er) throw er - t.pass('works') - t.end() - }) - }) -}) - -test('open a non-existing file throws', function (t) { - var er - try { - var fd = fs.openSync('this file does not exist', 'r') - } catch (x) { - er = x - } - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - - fs.open('neither does this file', 'r', function (er, fd) { - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - t.end() - }) -}) diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/test/readdir-sort.js b/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/test/readdir-sort.js deleted file mode 100644 index cb63a6846ed7..000000000000 --- a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/test/readdir-sort.js +++ /dev/null @@ -1,20 +0,0 @@ -var test = require("tap").test -var fs = require("../fs.js") - -var readdir = fs.readdir -fs.readdir = function(path, cb) { - process.nextTick(function() { - cb(null, ["b", "z", "a"]) - }) -} - -var g = require("../") - -test("readdir reorder", function (t) { - g.readdir("whatevers", function (er, files) { - if (er) - throw er - t.same(files, [ "a", "b", "z" ]) - t.end() - }) -}) diff --git a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/test/write-then-read.js b/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/test/write-then-read.js deleted file mode 100644 index 21e4c26bf6c9..000000000000 --- a/deps/npm/node_modules/npm-registry-client/node_modules/graceful-fs/test/write-then-read.js +++ /dev/null @@ -1,47 +0,0 @@ -var fs = require('../'); -var rimraf = require('rimraf'); -var mkdirp = require('mkdirp'); -var test = require('tap').test; -var p = require('path').resolve(__dirname, 'files'); - -process.chdir(__dirname) - -// Make sure to reserve the stderr fd -process.stderr.write(''); - -var num = 4097; -var paths = new Array(num); - -test('make files', function (t) { - rimraf.sync(p); - mkdirp.sync(p); - - for (var i = 0; i < num; ++i) { - paths[i] = 'files/file-' + i; - fs.writeFileSync(paths[i], 'content'); - } - - t.end(); -}) - -test('read files', function (t) { - // now read them - var done = 0; - for (var i = 0; i < num; ++i) { - fs.readFile(paths[i], function(err, data) { - if (err) - throw err; - - ++done; - if (done === num) { - t.pass('success'); - t.end() - } - }); - } -}); - -test('cleanup', function (t) { - rimraf.sync(p); - t.end(); -}); diff --git a/deps/npm/node_modules/npm-registry-client/package.json b/deps/npm/node_modules/npm-registry-client/package.json index ffcccd85dd33..ab9f763737ed 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": "6.5.1", + "version": "7.0.7", "repository": { "url": "git://github.com/isaacs/npm-registry-client.git" }, @@ -15,15 +15,15 @@ "test": "standard && tap test/*.js" }, "dependencies": { - "chownr": "0", + "chownr": "^1.0.1", "concat-stream": "^1.4.6", - "graceful-fs": "^3.0.0", + "graceful-fs": "^4.1.2", "mkdirp": "^0.5.0", "normalize-package-data": "~1.0.1 || ^2.0.0", "npm-package-arg": "^3.0.0 || ^4.0.0", "once": "^1.3.0", "request": "^2.47.0", - "retry": "^0.6.1", + "retry": "^0.8.0", "rimraf": "2", "semver": "2 >=2.2.1 || 3.x || 4 || 5", "slide": "^1.1.3", @@ -32,6 +32,7 @@ "devDependencies": { "negotiator": "^0.4.9", "nock": "^0.56.0", + "readable-stream": "^2.0.2", "standard": "^4.0.0", "tap": "^1.2.0" }, @@ -41,12 +42,12 @@ "license": "ISC", "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 = \"https://registry.npmjs.org/npm\"\nvar params = {timeout: 1000}\n\nclient.get(uri, params, 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 (including the registry\npath – but be sure to terminate the path with `/`). `http` and `https` URLs are\nthe only ones supported.\n\n## Using the client\n\nEvery call to the client follows the same pattern:\n\n* `uri` {String} The *fully-qualified* URI of the registry API method being\n invoked.\n* `params` {Object} Per-request parameters.\n* `callback` {Function} Callback to be invoked when the call is complete.\n\n### Credentials\n\nMany requests to the registry can by authenticated, and require credentials\nfor authorization. These credentials always look the same:\n\n* `username` {String}\n* `password` {String}\n* `email` {String}\n* `alwaysAuth` {Boolean} Whether calls to the target registry are always\n authed.\n\n**or**\n\n* `token` {String}\n* `alwaysAuth` {Boolean} Whether calls to the target registry are always\n authed.\n\n## API\n\n### client.access(uri, params, cb)\n\n* `uri` {String} Registry URL for the package's access API endpoint.\n Looks like `/-/package//access`.\n* `params` {Object} Object containing per-request properties.\n * `access` {String} New access level for the package. Can be either\n `public` or `restricted`. Registry will raise an error if trying\n to change the access level of an unscoped package.\n * `auth` {Credentials}\n\nSet the access level for scoped packages. For now, there are only two\naccess levels: \"public\" and \"restricted\".\n\n### client.adduser(uri, params, cb)\n\n* `uri` {String} Base registry URL.\n* `params` {Object} Object containing per-request properties.\n * `auth` {Credentials}\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\nAdd a user account to the registry, or verify the credentials.\n\n### client.deprecate(uri, params, cb)\n\n* `uri` {String} Full registry URI for the deprecated package.\n* `params` {Object} Object containing per-request properties.\n * `version` {String} Semver version range.\n * `message` {String} The message to use as a deprecation warning.\n * `auth` {Credentials}\n* `cb` {Function}\n\nDeprecate a version of a package in the registry.\n\n### client.distTags.fetch(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `auth` {Credentials}\n* `cb` {Function}\n\nFetch all of the `dist-tags` for the named package.\n\n### client.distTags.add(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTag` {String} Name of the new `dist-tag`.\n * `version` {String} Exact version to be mapped to the `dist-tag`.\n * `auth` {Credentials}\n* `cb` {Function}\n\nAdd (or replace) a single dist-tag onto the named package.\n\n### client.distTags.set(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTags` {Object} Object containing a map from tag names to package\n versions.\n * `auth` {Credentials}\n* `cb` {Function}\n\nSet all of the `dist-tags` for the named package at once, creating any\n`dist-tags` that do not already exit. Any `dist-tags` not included in the\n`distTags` map will be removed.\n\n### client.distTags.update(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTags` {Object} Object containing a map from tag names to package\n versions.\n * `auth` {Credentials}\n* `cb` {Function}\n\nUpdate the values of multiple `dist-tags`, creating any `dist-tags` that do\nnot already exist. Any pre-existing `dist-tags` not included in the `distTags`\nmap will be left alone.\n\n### client.distTags.rm(uri, params, cb)\n\n* `uri` {String} Base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `package` {String} Name of the package.\n * `distTag` {String} Name of the new `dist-tag`.\n * `auth` {Credentials}\n* `cb` {Function}\n\nRemove a single `dist-tag` from the named package.\n\n### client.get(uri, params, cb)\n\n* `uri` {String} The complete registry URI to fetch\n* `params` {Object} Object containing per-request properties.\n * `timeout` {Number} Duration before the request times out. Optional\n (default: never).\n * `follow` {Boolean} Follow 302/301 responses. Optional (default: true).\n * `staleOk` {Boolean} If there's cached data available, then return that to\n the callback quickly, and update the cache the background. Optional\n (default: false).\n * `auth` {Credentials} Optional.\n* `cb` {Function}\n\nFetches data from the registry via a GET request, saving it in the cache folder\nwith the ETag or the \"Last Modified\" timestamp.\n\n### client.publish(uri, params, cb)\n\n* `uri` {String} The registry URI for the package to publish.\n* `params` {Object} Object containing per-request properties.\n * `metadata` {Object} Package metadata.\n * `access` {String} Access for the package. Can be `public` or `restricted` (no default).\n * `body` {Stream} Stream of the package body / tarball.\n * `auth` {Credentials}\n* `cb` {Function}\n\nPublish a package to the registry.\n\nNote that this does not create the tarball from a folder.\n\n### client.star(uri, params, cb)\n\n* `uri` {String} The complete registry URI for the package to star.\n* `params` {Object} Object containing per-request properties.\n * `starred` {Boolean} True to star the package, false to unstar it. Optional\n (default: false).\n * `auth` {Credentials}\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(uri, params, cb)\n\n* `uri` {String} The base URL for the registry.\n* `params` {Object} Object containing per-request properties.\n * `username` {String} Name of user to fetch starred packages for. Optional\n (default: user in `auth`).\n * `auth` {Credentials} Optional (required if `username` is omitted).\n* `cb` {Function}\n\nView your own or another user's starred packages.\n\n### client.tag(uri, params, cb)\n\n* `uri` {String} The complete registry URI to tag\n* `params` {Object} Object containing per-request properties.\n * `version` {String} Version to tag.\n * `tag` {String} Tag name to apply.\n * `auth` {Credentials}\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, params, cb)\n\n* `uri` {String} The complete registry URI of the package to unpublish.\n* `params` {Object} Object containing per-request properties.\n * `version` {String} version to unpublish. Optional – omit to unpublish all\n versions.\n * `auth` {Credentials}\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.whoami(uri, params, cb)\n\n* `uri` {String} The base registry for the URI.\n* `params` {Object} Object containing per-request properties.\n * `auth` {Credentials}\n* `cb` {Function}\n\nSimple call to see who the registry thinks you are. Especially useful with\ntoken-based auth.\n\n\n## PLUMBING\n\nThe below are primarily intended for use by the rest of the API, or by the npm\ncaching logic directly.\n\n### client.request(uri, params, cb)\n\n* `uri` {String} URI pointing to the resource to request.\n* `params` {Object} Object containing per-request properties.\n * `method` {String} HTTP method. Optional (default: \"GET\").\n * `body` {Stream | Buffer | String | Object} The request body. Objects\n that are not Buffers or Streams are encoded as JSON. Optional – body\n only used for write operations.\n * `etag` {String} The cached ETag. Optional.\n * `lastModified` {String} The cached Last-Modified timestamp. Optional.\n * `follow` {Boolean} Follow 302/301 responses. Optional (default: true).\n * `auth` {Credentials} Optional.\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 generic request to the registry. All the other methods are wrappers\naround `client.request`.\n\n### client.fetch(uri, params, cb)\n\n* `uri` {String} The complete registry URI to upload to\n* `params` {Object} Object containing per-request properties.\n * `headers` {Stream} HTTP headers to be included with the request. Optional.\n * `auth` {Credentials} Optional.\n* `cb` {Function}\n\nFetch a package from a URL, with auth set appropriately if included. Used to\ncache remote tarballs as well as request package tarballs from the registry.\n\n# Configuration\n\nThe client uses its own configuration, which is just passed in as a simple\nnested object. The following are the supported values (with their defaults, if\nany):\n\n* `proxy.http` {URL} The URL to proxy HTTP requests through.\n* `proxy.https` {URL} The URL to proxy HTTPS requests through. Defaults to be\n the same as `proxy.http` if unset.\n* `proxy.localAddress` {IP} The local address to use on multi-homed systems.\n* `ssl.ca` {String} Certificate signing authority certificates to trust.\n* `ssl.certificate` {String} Client certificate (PEM encoded). Enable access\n to servers that require client certificates.\n* `ssl.key` {String} Private key (PEM encoded) for client certificate.\n* `ssl.strict` {Boolean} Whether or not to be strict with SSL certificates.\n Default = `true`\n* `retry.count` {Number} Number of times to retry on GET failures. Default = 2.\n* `retry.factor` {Number} `factor` setting for `node-retry`. Default = 10.\n* `retry.minTimeout` {Number} `minTimeout` setting for `node-retry`.\n Default = 10000 (10 seconds)\n* `retry.maxTimeout` {Number} `maxTimeout` setting for `node-retry`.\n Default = 60000 (60 seconds)\n* `userAgent` {String} User agent header to send. Default =\n `\"node/{process.version}\"`\n* `log` {Object} The logger to use. Defaults to `require(\"npmlog\")` if\n that works, otherwise logs are disabled.\n* `defaultTag` {String} The default tag to use when publishing new packages.\n Default = `\"latest\"`\n* `couchToken` {Object} A token for use with\n [couch-login](https://npmjs.org/package/couch-login).\n* `sessionToken` {string} A random identifier for this set of client requests.\n Default = 8 random hexadecimal bytes.\n", "readmeFilename": "README.md", - "gitHead": "dbb351ae906f40be03f21bbe28bd392a380dc7bb", + "gitHead": "06f188917bf575fe7dc7c2f6d1d4adbaa50bc423", "bugs": { "url": "https://github.com/isaacs/npm-registry-client/issues" }, "homepage": "https://github.com/isaacs/npm-registry-client#readme", - "_id": "npm-registry-client@6.5.1", - "_shasum": "328d2088252b69fa541c3dd9f7690288661592a1", - "_from": "npm-registry-client@>=6.5.1 <6.6.0" + "_id": "npm-registry-client@7.0.7", + "_shasum": "899d7c8fefe87b72a70d8c9e075fb874539e0d3e", + "_from": "npm-registry-client@7.0.7" } diff --git a/deps/npm/node_modules/npm-registry-client/test/access.js b/deps/npm/node_modules/npm-registry-client/test/access.js index 4081c329f7fb..c07b1bd6a332 100644 --- a/deps/npm/node_modules/npm-registry-client/test/access.js +++ b/deps/npm/node_modules/npm-registry-client/test/access.js @@ -6,91 +6,297 @@ var client = common.freshClient() function nop () {} -var URI = 'http://localhost:1337/-/package/underscore/access' -var TOKEN = 'foo' -var AUTH = { - token: TOKEN -} -var LEVEL = 'public' +var URI = 'http://localhost:1337' var PARAMS = { - level: LEVEL, - auth: AUTH + auth: { token: 'foo' }, + scope: 'myorg', + team: 'myteam', + package: '@foo/bar', + permissions: 'read-write' } -test('access call contract', function (t) { - t.throws(function () { - client.access(undefined, AUTH, nop) - }, 'requires a URI') - - t.throws(function () { - client.access([], PARAMS, nop) - }, 'requires URI to be a string') - - t.throws(function () { - client.access(URI, undefined, nop) - }, 'requires params object') +var commands = [ + 'public', 'restricted', 'grant', 'revoke', 'ls-packages', 'ls-collaborators' +] - t.throws(function () { - client.access(URI, '', nop) - }, 'params must be object') - - t.throws(function () { - client.access(URI, PARAMS, undefined) - }, 'requires callback') - - t.throws(function () { - client.access(URI, PARAMS, 'callback') - }, 'callback must be function') - - t.throws( - function () { - var params = { - auth: AUTH - } - client.access(URI, params, nop) - }, - { name: 'AssertionError', message: 'must pass level to access' }, - 'access must include level' - ) - - t.throws( - function () { - var params = { - level: LEVEL - } - client.access(URI, params, nop) - }, - { name: 'AssertionError', message: 'must pass auth to access' }, - 'access must include auth' - ) - - t.end() +test('access public', function (t) { + server.expect('POST', '/-/package/%40foo%2Fbar/access', function (req, res) { + t.equal(req.method, 'POST') + onJsonReq(req, function (json) { + t.deepEqual(json, { access: 'public' }) + res.statusCode = 200 + res.json({ accessChanged: true }) + }) + }) + var params = Object.create(PARAMS) + params.package = '@foo/bar' + client.access('public', URI, params, function (error, data) { + t.ifError(error, 'no errors') + t.ok(data.accessChanged, 'access level set') + t.end() + }) }) -test('set access level on a package', function (t) { - server.expect('POST', '/-/package/underscore/access', function (req, res) { +test('access restricted', function (t) { + server.expect('POST', '/-/package/%40foo%2Fbar/access', function (req, res) { t.equal(req.method, 'POST') - - var b = '' - req.setEncoding('utf8') - req.on('data', function (d) { - b += d + onJsonReq(req, function (json) { + t.deepEqual(json, { access: 'restricted' }) + res.statusCode = 200 + res.json({ accessChanged: true }) }) + }) + client.access('restricted', URI, PARAMS, function (error, data) { + t.ifError(error, 'no errors') + t.ok(data.accessChanged, 'access level set') + t.end() + }) +}) - req.on('end', function () { - var updated = JSON.parse(b) - - t.deepEqual(updated, { access: 'public' }) - +test('access grant basic', function (t) { + server.expect('PUT', '/-/team/myorg/myteam/package', function (req, res) { + t.equal(req.method, 'PUT') + onJsonReq(req, function (json) { + t.deepEqual(json, { + permissions: PARAMS.permissions, + package: PARAMS.package + }) res.statusCode = 201 res.json({ accessChanged: true }) }) }) + client.access('grant', URI, PARAMS, function (error, data) { + t.ifError(error, 'no errors') + t.ok(data.accessChanged, 'access level set') + t.end() + }) +}) - client.access(URI, PARAMS, function (error, data) { +test('access revoke basic', function (t) { + server.expect('DELETE', '/-/team/myorg/myteam/package', function (req, res) { + t.equal(req.method, 'DELETE') + onJsonReq(req, function (json) { + t.deepEqual(json, { + package: PARAMS.package + }) + res.statusCode = 200 + res.json({ accessChanged: true }) + }) + }) + client.access('revoke', URI, PARAMS, function (error, data) { t.ifError(error, 'no errors') t.ok(data.accessChanged, 'access level set') + t.end() + }) +}) +test('ls-packages on team', function (t) { + var serverPackages = { + '@foo/bar': 'write', + '@foo/util': 'read' + } + var clientPackages = { + '@foo/bar': 'read-write', + '@foo/util': 'read-only' + } + var uri = '/-/team/myorg/myteam/package?format=cli' + server.expect('GET', uri, function (req, res) { + t.equal(req.method, 'GET') + res.statusCode = 200 + res.json(serverPackages) + }) + client.access('ls-packages', URI, PARAMS, function (error, data) { + t.ifError(error, 'no errors') + t.same(data, clientPackages) t.end() }) }) + +test('ls-packages on org', function (t) { + var serverPackages = { + '@foo/bar': 'write', + '@foo/util': 'read' + } + var clientPackages = { + '@foo/bar': 'read-write', + '@foo/util': 'read-only' + } + var uri = '/-/org/myorg/package?format=cli' + server.expect('GET', uri, function (req, res) { + t.equal(req.method, 'GET') + res.statusCode = 200 + res.json(serverPackages) + }) + var params = Object.create(PARAMS) + params.team = null + client.access('ls-packages', URI, params, function (error, data) { + t.ifError(error, 'no errors') + t.same(data, clientPackages) + t.end() + }) +}) + +test('ls-packages on user', function (t) { + var serverPackages = { + '@foo/bar': 'write', + '@foo/util': 'read' + } + var clientPackages = { + '@foo/bar': 'read-write', + '@foo/util': 'read-only' + } + var firstUri = '/-/org/myorg/package?format=cli' + server.expect('GET', firstUri, function (req, res) { + t.equal(req.method, 'GET') + res.statusCode = 404 + res.json({error: 'not found'}) + }) + var secondUri = '/-/user/myorg/package?format=cli' + server.expect('GET', secondUri, function (req, res) { + t.equal(req.method, 'GET') + res.statusCode = 200 + res.json(serverPackages) + }) + var params = Object.create(PARAMS) + params.team = null + client.access('ls-packages', URI, params, function (error, data) { + t.ifError(error, 'no errors') + t.same(data, clientPackages) + t.end() + }) +}) + +test('ls-collaborators', function (t) { + var serverCollaborators = { + 'myorg:myteam': 'write', + 'myorg:anotherteam': 'read' + } + var clientCollaborators = { + 'myorg:myteam': 'read-write', + 'myorg:anotherteam': 'read-only' + } + var uri = '/-/package/%40foo%2Fbar/collaborators?format=cli' + server.expect('GET', uri, function (req, res) { + t.equal(req.method, 'GET') + res.statusCode = 200 + res.json(serverCollaborators) + }) + client.access('ls-collaborators', URI, PARAMS, function (error, data) { + t.ifError(error, 'no errors') + t.same(data, clientCollaborators) + t.end() + }) +}) + +test('ls-collaborators w/ scope', function (t) { + var serverCollaborators = { + 'myorg:myteam': 'write', + 'myorg:anotherteam': 'read' + } + var clientCollaborators = { + 'myorg:myteam': 'read-write', + 'myorg:anotherteam': 'read-only' + } + var uri = '/-/package/%40foo%2Fbar/collaborators?format=cli&user=zkat' + server.expect('GET', uri, function (req, res) { + t.equal(req.method, 'GET') + res.statusCode = 200 + res.json(serverCollaborators) + }) + var params = Object.create(PARAMS) + params.user = 'zkat' + client.access('ls-collaborators', URI, params, function (error, data) { + t.ifError(error, 'no errors') + t.same(data, clientCollaborators) + t.end() + }) +}) + +test('access command base validation', function (t) { + t.throws(function () { + client.access(undefined, URI, PARAMS, nop) + }, 'command is required') + t.throws(function () { + client.access('whoops', URI, PARAMS, nop) + }, 'command must be a valid subcommand') + commands.forEach(function (cmd) { + t.throws(function () { + client.access(cmd, undefined, PARAMS, nop) + }, 'registry URI is required') + t.throws(function () { + client.access(cmd, URI, undefined, nop) + }, 'params is required') + t.throws(function () { + client.access(cmd, URI, '', nop) + }, 'params must be an object') + t.throws(function () { + client.access(cmd, URI, {scope: 'o', team: 't'}, nop) + }, 'auth is required') + t.throws(function () { + client.access(cmd, URI, {auth: 5, scope: 'o', team: 't'}, nop) + }, 'auth must be an object') + t.throws(function () { + client.access(cmd, URI, PARAMS, {}) + }, 'callback must be a function') + t.throws(function () { + client.access(cmd, URI, PARAMS, undefined) + }, 'callback is required') + if (contains([ + 'public', 'restricted', 'grant', 'revoke', 'ls-collaborators' + ], cmd)) { + t.throws(function () { + var params = Object.create(PARAMS) + params.package = null + client.access(cmd, URI, params, nop) + }, 'package is required') + t.throws(function () { + var params = Object.create(PARAMS) + params.package = 'underscore' + client.access(cmd, URI, params, nop) + }, 'only scopes packages are allowed') + } + if (contains(['grant', 'revoke', 'ls-packages'], cmd)) { + t.throws(function () { + var params = Object.create(PARAMS) + params.scope = null + client.access(cmd, URI, params, nop) + }, 'scope is required') + } + if (contains(['grant', 'revoke'], cmd)) { + t.throws(function () { + var params = Object.create(PARAMS) + params.team = null + client.access(cmd, URI, params, nop) + }, 'team is required') + } + if (cmd === 'grant') { + t.throws(function () { + var params = Object.create(PARAMS) + params.permissions = null + client.access(cmd, URI, params, nop) + }, 'permissions are required') + t.throws(function () { + var params = Object.create(PARAMS) + params.permissions = 'idkwhat' + client.access(cmd, URI, params, nop) + }, 'permissions must be either read-only or read-write') + } + }) + t.end() +}) + +test('cleanup', function (t) { + server.close() + t.end() +}) + +function onJsonReq (req, cb) { + var buffer = '' + req.setEncoding('utf8') + req.on('data', function (data) { buffer += data }) + req.on('end', function () { cb(buffer ? JSON.parse(buffer) : undefined) }) +} + +function contains (arr, item) { + return arr.indexOf(item) !== -1 +} diff --git a/deps/npm/node_modules/npm-registry-client/test/adduser-new.js b/deps/npm/node_modules/npm-registry-client/test/adduser-new.js index d8c415bc5f65..a834841de408 100644 --- a/deps/npm/node_modules/npm-registry-client/test/adduser-new.js +++ b/deps/npm/node_modules/npm-registry-client/test/adduser-new.js @@ -51,6 +51,7 @@ tap.test('create new user account', function (t) { function (er, data) { if (er) throw er t.deepEqual(data, auth, 'received expected auth data') + server.close() t.end() } ) diff --git a/deps/npm/node_modules/npm-registry-client/test/adduser-update.js b/deps/npm/node_modules/npm-registry-client/test/adduser-update.js index 18aad3ebe4b9..03d5f468f18f 100644 --- a/deps/npm/node_modules/npm-registry-client/test/adduser-update.js +++ b/deps/npm/node_modules/npm-registry-client/test/adduser-update.js @@ -61,6 +61,7 @@ tap.test('update a user acct', function (t) { function (er, data) { if (er) throw er t.deepEqual(data, auth, 'got expected auth data') + server.close() t.end() } ) diff --git a/deps/npm/node_modules/npm-registry-client/test/deprecate.js b/deps/npm/node_modules/npm-registry-client/test/deprecate.js index d49f71215cf0..4407d7c97bd8 100644 --- a/deps/npm/node_modules/npm-registry-client/test/deprecate.js +++ b/deps/npm/node_modules/npm-registry-client/test/deprecate.js @@ -154,3 +154,63 @@ test('deprecate a package', function (t) { } ) }) + +test('deprecate a scoped package', function (t) { + server.expect('GET', '/@test%2funderscore?write=true', function (req, res) { + t.equal(req.method, 'GET') + + res.json(cache) + }) + + server.expect('PUT', '/@test%2funderscore', function (req, res) { + t.equal(req.method, 'PUT') + + var b = '' + req.setEncoding('utf8') + req.on('data', function (d) { + b += d + }) + + req.on('end', function () { + var updated = JSON.parse(b) + + var undeprecated = [ + '1.0.3', '1.0.4', '1.1.0', '1.1.1', '1.1.2', '1.1.3', '1.1.4', '1.1.5', '1.1.6', + '1.1.7', '1.2.0', '1.2.1', '1.2.2', '1.2.3', '1.2.4', '1.3.0', '1.3.1', '1.3.3' + ] + for (var i = 0; i < undeprecated.length; i++) { + var current = undeprecated[i] + t.notEqual( + updated.versions[current].deprecated, + MESSAGE, + current + ' not deprecated' + ) + } + + t.equal( + updated.versions[VERSION].deprecated, + MESSAGE, + VERSION + ' deprecated' + ) + res.statusCode = 201 + res.json({ deprecated: true }) + }) + }) + + client.deprecate( + common.registry + '/@test%2funderscore', + PARAMS, + function (er, data) { + t.ifError(er) + t.ok(data.deprecated, 'was deprecated') + + t.end() + } + ) +}) + +test('cleanup', function (t) { + server.close() + t.ok(true) + t.end() +}) diff --git a/deps/npm/node_modules/npm-registry-client/test/dist-tags-add.js b/deps/npm/node_modules/npm-registry-client/test/dist-tags-add.js index e66d80a3e329..00f43b0f2836 100644 --- a/deps/npm/node_modules/npm-registry-client/test/dist-tags-add.js +++ b/deps/npm/node_modules/npm-registry-client/test/dist-tags-add.js @@ -136,6 +136,7 @@ test('add a new dist-tag to a package', function (t) { t.ifError(error, 'no errors') t.ok(data.test, 'dist-tag added') + server.close() t.end() }) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/dist-tags-fetch.js b/deps/npm/node_modules/npm-registry-client/test/dist-tags-fetch.js index ef0901ea7fc5..cde338cf1838 100644 --- a/deps/npm/node_modules/npm-registry-client/test/dist-tags-fetch.js +++ b/deps/npm/node_modules/npm-registry-client/test/dist-tags-fetch.js @@ -93,6 +93,7 @@ test('fetch dist-tags for a package', function (t) { t.ifError(error, 'no errors') t.same(data, { a: '1.0.0', b: '2.0.0' }, 'etag filtered from response') + server.close() t.end() }) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/dist-tags-rm.js b/deps/npm/node_modules/npm-registry-client/test/dist-tags-rm.js index a035014dc679..2076eb931201 100644 --- a/deps/npm/node_modules/npm-registry-client/test/dist-tags-rm.js +++ b/deps/npm/node_modules/npm-registry-client/test/dist-tags-rm.js @@ -112,6 +112,7 @@ test('remove a dist-tag from a package', function (t) { t.ifError(error, 'no errors') t.notOk(data.test, 'dist-tag removed') + server.close() t.end() }) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/dist-tags-set.js b/deps/npm/node_modules/npm-registry-client/test/dist-tags-set.js index 691aef13ea11..cb595f6d21de 100644 --- a/deps/npm/node_modules/npm-registry-client/test/dist-tags-set.js +++ b/deps/npm/node_modules/npm-registry-client/test/dist-tags-set.js @@ -116,6 +116,7 @@ test('set dist-tags for a package', function (t) { t.ifError(error, 'no errors') t.ok(data.a && data.b, 'dist-tags set') + server.close() t.end() }) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/dist-tags-update.js b/deps/npm/node_modules/npm-registry-client/test/dist-tags-update.js index 4a829c85d185..37508fc074bf 100644 --- a/deps/npm/node_modules/npm-registry-client/test/dist-tags-update.js +++ b/deps/npm/node_modules/npm-registry-client/test/dist-tags-update.js @@ -107,6 +107,7 @@ test('update dist-tags for a package', function (t) { t.ifError(error, 'no errors') t.ok(data.a && data.b, 'dist-tags set') + server.close() t.end() }) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/fetch-404.js b/deps/npm/node_modules/npm-registry-client/test/fetch-404.js index e05e36f26cd8..fa400cd5cc80 100644 --- a/deps/npm/node_modules/npm-registry-client/test/fetch-404.js +++ b/deps/npm/node_modules/npm-registry-client/test/fetch-404.js @@ -1,9 +1,7 @@ var resolve = require('path').resolve var createReadStream = require('graceful-fs').createReadStream -var readFileSync = require('graceful-fs').readFileSync var tap = require('tap') -var cat = require('concat-stream') var server = require('./lib/server.js') var common = require('./lib/common.js') @@ -14,10 +12,7 @@ tap.test('fetch with a 404 response', function (t) { server.expect('/underscore/-/underscore-1.3.3.tgz', function (req, res) { t.equal(req.method, 'GET', 'got expected method') - res.writeHead(200, { - 'content-type': 'application/x-tar', - 'content-encoding': 'gzip' - }) + res.writeHead(404) createReadStream(tgz).pipe(res) }) @@ -27,19 +22,14 @@ tap.test('fetch with a 404 response', function (t) { client.fetch( 'http://localhost:1337/underscore/-/underscore-1.3.3.tgz', defaulted, - function (er, res) { - t.ifError(er, 'loaded successfully') - - var sink = cat(function (data) { - t.deepEqual(data, readFileSync(tgz)) - t.end() - }) - - res.on('error', function (error) { - t.ifError(error, 'no errors on stream') - }) - - res.pipe(sink) + function (err, res) { + t.equal( + err.message, + 'fetch failed with status code 404', + 'got expected error message' + ) + server.close() + t.end() } ) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/fetch-408.js b/deps/npm/node_modules/npm-registry-client/test/fetch-408.js index d49b149f6364..422376ef3d8e 100644 --- a/deps/npm/node_modules/npm-registry-client/test/fetch-408.js +++ b/deps/npm/node_modules/npm-registry-client/test/fetch-408.js @@ -40,6 +40,7 @@ tap.test('fetch with retry on timeout', function (t) { var sink = cat(function (data) { t.deepEqual(data, readFileSync(tgz)) + server.close() t.end() }) diff --git a/deps/npm/node_modules/npm-registry-client/test/fetch-503.js b/deps/npm/node_modules/npm-registry-client/test/fetch-503.js index 04f5901e8c82..6dff11558236 100644 --- a/deps/npm/node_modules/npm-registry-client/test/fetch-503.js +++ b/deps/npm/node_modules/npm-registry-client/test/fetch-503.js @@ -40,6 +40,7 @@ tap.test('fetch with retry on server error', function (t) { var sink = cat(function (data) { t.deepEqual(data, readFileSync(tgz)) + server.close() t.end() }) diff --git a/deps/npm/node_modules/npm-registry-client/test/fetch-authed.js b/deps/npm/node_modules/npm-registry-client/test/fetch-authed.js index ccfd4b77f204..d516deb379a0 100644 --- a/deps/npm/node_modules/npm-registry-client/test/fetch-authed.js +++ b/deps/npm/node_modules/npm-registry-client/test/fetch-authed.js @@ -44,6 +44,7 @@ tap.test('basic fetch with scoped always-auth enabled', function (t) { var sink = cat(function (data) { t.deepEqual(data, readFileSync(tgz)) + server.close() t.end() }) diff --git a/deps/npm/node_modules/npm-registry-client/test/fetch-basic.js b/deps/npm/node_modules/npm-registry-client/test/fetch-basic.js index 7bf4d1bd1a3d..31ad17edd5f7 100644 --- a/deps/npm/node_modules/npm-registry-client/test/fetch-basic.js +++ b/deps/npm/node_modules/npm-registry-client/test/fetch-basic.js @@ -79,6 +79,7 @@ test('basic fetch', function (t) { var sink = concat(function (data) { t.deepEqual(data, readFileSync(tgz)) + server.close() t.end() }) diff --git a/deps/npm/node_modules/npm-registry-client/test/fetch-github-api-json.js b/deps/npm/node_modules/npm-registry-client/test/fetch-github-api-json.js index 43f25f1ad7b8..688c91d2718f 100644 --- a/deps/npm/node_modules/npm-registry-client/test/fetch-github-api-json.js +++ b/deps/npm/node_modules/npm-registry-client/test/fetch-github-api-json.js @@ -54,6 +54,7 @@ tap.test("fetch accepts github api's json", function (t) { var sink = cat(function (data) { t.deepEqual(data, readFileSync(tgz)) + server.close() t.end() }) diff --git a/deps/npm/node_modules/npm-registry-client/test/fetch-not-authed.js b/deps/npm/node_modules/npm-registry-client/test/fetch-not-authed.js index 2fb92c2c207c..6a397cc5e9ba 100644 --- a/deps/npm/node_modules/npm-registry-client/test/fetch-not-authed.js +++ b/deps/npm/node_modules/npm-registry-client/test/fetch-not-authed.js @@ -40,6 +40,7 @@ tap.test('basic fetch with scoped always-auth disabled', function (t) { var sink = cat(function (data) { t.deepEqual(data, readFileSync(tgz)) + server.close() t.end() }) diff --git a/deps/npm/node_modules/npm-registry-client/test/fixtures/@npm/npm-registry-client/cache.json b/deps/npm/node_modules/npm-registry-client/test/fixtures/@npm/npm-registry-client/cache.json new file mode 100644 index 000000000000..4561db502b18 --- /dev/null +++ b/deps/npm/node_modules/npm-registry-client/test/fixtures/@npm/npm-registry-client/cache.json @@ -0,0 +1 @@ +{"_id":"@npm%2fnpm-registry-client","_rev":"213-0a1049cf56172b7d9a1184742c6477b9","name":"@npm/npm-registry-client","description":"Client for the npm registry","dist-tags":{"latest":"2.0.4","v2.0":"2.0.3"},"versions":{"0.0.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"@npm%2fnpm-registry-client@0.0.1","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.7.10-pre","_defaultsLoaded":true,"dist":{"shasum":"693a08f6d2faea22bbd2bf412508a63d3e6229a7","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.1.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"@npm%2fnpm-registry-client@0.0.2","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.7.10-pre","_defaultsLoaded":true,"dist":{"shasum":"b48c0ec5563c6a6fdc253454fc56d2c60c5a26f4","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.2.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"@npm%2fnpm-registry-client@0.0.3","_engineSupported":true,"_npmVersion":"1.1.24","_nodeVersion":"v0.7.10-pre","_defaultsLoaded":true,"dist":{"shasum":"ccc0254c2d59e3ea9b9050e2b16edef78df1a1e8","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.3.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_npmUser":{"name":"isaacs","email":"i@izs.me"},"_id":"@npm%2fnpm-registry-client@0.0.4","_engineSupported":true,"_npmVersion":"1.1.25","_nodeVersion":"v0.7.10-pre","_defaultsLoaded":true,"dist":{"shasum":"faabd25ef477521c74ac21e0f4cf3a2f66d18fb3","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.4.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.5":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.5","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_id":"@npm%2fnpm-registry-client@0.0.5","dist":{"shasum":"85219810c9d89ae8d28ea766e7cf74efbd9f1e52","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.5.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.6":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"The code that npm uses to talk to the registry","version":"0.0.6","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_id":"@npm%2fnpm-registry-client@0.0.6","dist":{"shasum":"cc6533b3b41df65e6e9db2601fbbf1a509a7e94c","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.6.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.7":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"The code that npm uses to talk to the registry","version":"0.0.7","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"engines":{"node":"*"},"_id":"@npm%2fnpm-registry-client@0.0.7","dist":{"shasum":"0cee1d1c61f1c8e483774fe1f7bbb81c4f394a3a","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.7.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.8":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.8","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.0.8","dist":{"shasum":"1b7411c3f7310ec2a96b055b00e7ca606e47bd07","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.8.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.9":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.9","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.0.9","dist":{"shasum":"6d5bfde431559ac9e2e52a7db85f5839b874f022","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.9.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.10":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.10","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.0.10","dist":{"shasum":"0c8b6a4615bce82aa6cc04a0d1f7dc89921f7a38","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.10.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.0.11":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.0.11","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.0.11","dist":{"shasum":"afab40be5bed1faa946d8e1827844698f2ec1db7","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.0.11.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.1.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.1.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.1.0","dist":{"shasum":"1077d6bbb5e432450239dc6622a59474953ffbea","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.1.0.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.1.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.1.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.1.1","dist":{"shasum":"759765361d09b715270f59cf50f10908e4e9c5fc","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.1.1.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.1.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.1.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.1.2","dist":{"shasum":"541ce93abb3d35f5c325545c718dd3bbeaaa9ff0","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.1.2.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.1.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.1.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.1.3","dist":{"shasum":"e9a40d7031e8f809af5fd85aa9aac979e17efc97","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.1.3.tgz"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.1.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.1.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.1.4","dist":{"shasum":"b211485b046191a1085362376530316f0cab0420","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.1.4.tgz"},"_npmVersion":"1.1.48","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.0","dist":{"shasum":"6508a4b4d96f31057d5200ca5779531bafd2b840","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.0.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"node-uuid":"~1.3.3","request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.1","dist":{"shasum":"1bc8c4576c368cd88253d8a52daf40c55b89bb1a","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.1.tgz"},"_npmVersion":"1.1.49","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.5":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.5","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.5","dist":{"shasum":"2f55d675dfb977403b1ad0d96874c1d30e8058d7","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.5.tgz"},"_npmVersion":"1.1.51","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.6":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.6","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.6","dist":{"shasum":"f05df6695360360ad220e6e13a6a7bace7165fbe","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.6.tgz"},"_npmVersion":"1.1.56","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.7":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.7","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.0.14","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.7","dist":{"shasum":"867bad8854cae82ed89ee3b7f1d391af59491671","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.7.tgz"},"_npmVersion":"1.1.59","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.8":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.8","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.6","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.8","dist":{"shasum":"ef194cdb70f1ea03a576cff2c97392fa96e36563","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.8.tgz"},"_npmVersion":"1.1.62","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.9":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.9","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.9","dist":{"shasum":"3cec10431dfed1594adaf99c50f482ee56ecf9e4","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.9.tgz"},"_npmVersion":"1.1.59","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.10":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.10","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2.0.1","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.10","dist":{"shasum":"1e69726dae0944e78562fd77243f839c6a2ced1e","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.10.tgz"},"_npmVersion":"1.1.64","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.11":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.11","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.11","dist":{"shasum":"d92f33c297eb1bbd57fd597c3d8f5f7e9340a0b5","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.11.tgz"},"_npmVersion":"1.1.70","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.12":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.12","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.1.8","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.12","dist":{"shasum":"3bfb6fc0e4b131d665580cd1481c341fe521bfd3","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.12.tgz"},"_from":".","_npmVersion":"1.2.2","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.13":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.13","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.13","dist":{"shasum":"e03f2a4340065511b7184a3e2862cd5d459ef027","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.13.tgz"},"_from":".","_npmVersion":"1.2.4","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.14":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.14","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.14","dist":{"shasum":"186874a7790417a340d582b1cd4a7c338087ee12","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.14.tgz"},"_from":".","_npmVersion":"1.2.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.15":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.15","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.15","dist":{"shasum":"f71f32b7185855f1f8b7a5ef49e49d2357c2c552","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.15.tgz"},"_from":".","_npmVersion":"1.2.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.16":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.16","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.16","dist":{"shasum":"3331323b5050fc5afdf77c3a35913c16f3e43964","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.16.tgz"},"_from":".","_npmVersion":"1.2.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.17":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.17","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.17","dist":{"shasum":"1df2bbecac6751f5d9600fb43722aef96d956773","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.17.tgz"},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.18":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.18","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.9.202","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.18","dist":{"shasum":"198c8d15ed9b1ed546faf6e431eb63a6b18193ad","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.18.tgz"},"_from":".","_npmVersion":"1.2.13","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.19":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.19","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.16","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.19","dist":{"shasum":"106da826f0d2007f6e081f2b68fb6f26fa951b20","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.19.tgz"},"_from":".","_npmVersion":"1.2.14","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.20":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.20","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.16","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","_id":"@npm%2fnpm-registry-client@0.2.20","dist":{"shasum":"3fff194331e26660be2cf8ebf45ddf7d36add5f6","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.20.tgz"},"_from":".","_npmVersion":"1.2.15","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.21":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.21","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.16","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.21","dist":{"shasum":"d85dd32525f193925c46ff9eb0e0f529dfd1b254","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.21.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.22":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.22","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"~2.20.0","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.22","dist":{"shasum":"caa22ff40a1ccd632a660b8b80c333c8f92d5a17","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.22.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.23":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.23","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.20.0","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.23","dist":{"shasum":"a320ab2b1d048b4f7b88e40bd86974ca322b4c24","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.23.tgz"},"_from":".","_npmVersion":"1.2.19","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.24":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.24","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.20.0","graceful-fs":"~1.2.0","semver":"~1.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.24","dist":{"shasum":"e12f644338619319ee7f233363a1714a87f3c72d","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.24.tgz"},"_from":".","_npmVersion":"1.2.22","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.25":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.25","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.20.0","graceful-fs":"~1.2.0","semver":"~2.0.5","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.25","dist":{"shasum":"c2caeb1dcf937d6fcc4a187765d401f5e2f54027","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.25.tgz"},"_from":".","_npmVersion":"1.2.32","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.26":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.26","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.20.0","graceful-fs":"~1.2.0","semver":"~2.0.5","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.26","dist":{"shasum":"4c5a2b3de946e383032f10fa497d0c15ee5f4c60","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.26.tgz"},"_from":".","_npmVersion":"1.3.1","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.27":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.27","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.20.0","graceful-fs":"~2.0.0","semver":"~2.0.5","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.15","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.27","dist":{"shasum":"8f338189d32769267886a07ad7b7fd2267446adf","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.27.tgz"},"_from":".","_npmVersion":"1.3.2","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.28":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.28","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"~2.1.0","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"_id":"@npm%2fnpm-registry-client@0.2.28","dist":{"shasum":"959141fc0180d7b1ad089e87015a8a2142a8bffc","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.28.tgz"},"_from":".","_npmVersion":"1.3.6","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.29":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.29","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.2.29","dist":{"shasum":"66ff2766f0c61d41e8a6139d3692d8833002c686","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.29.tgz"},"_from":".","_npmVersion":"1.3.12","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.30":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.30","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.2.30","dist":{"shasum":"f01cae5c51aa0a1c5dc2516cbad3ebde068d3eaa","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.30.tgz"},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.2.31":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.2.31","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.2.31","dist":{"shasum":"24a23e24e43246677cb485f8391829e9536563d4","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.2.31.tgz"},"_from":".","_npmVersion":"1.3.17","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.0","dist":{"shasum":"66eab02a69be67f232ac14023eddfb8308c2eccd","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.0.tgz"},"_from":".","_npmVersion":"1.3.18","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.1","dist":{"shasum":"16dba07cc304442edcece378218672d0a1258ef8","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.1.tgz"},"_from":".","_npmVersion":"1.3.18","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.2","dist":{"shasum":"ea3060bd0a87fb1d97b87433b50f38f7272b1686","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.2.tgz"},"_from":".","_npmVersion":"1.3.20","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.3","dist":{"shasum":"da08bb681fb24aa5c988ca71f8c10f27f09daf4a","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.3.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.4","dist":{"shasum":"25d771771590b1ca39277aea4506af234c5f4342","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.4.tgz"},"_from":".","_npmVersion":"1.3.25","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.5":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.5","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","couch-login":"~0.1.18","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.5","dist":{"shasum":"98ba1ac851a3939a3fb9917c28fa8da522dc635f","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.5.tgz"},"_from":".","_npmVersion":"1.3.25","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.3.6":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.3.6","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.3.6","dist":{"shasum":"c48a2a03643769acc49672860f7920ec6bffac6e","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.3.6.tgz"},"_from":".","_npmVersion":"1.3.26","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.0","dist":{"shasum":"30d0c178b7f2e54183a6a3fc9fe4071eb10290bf","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.0.tgz"},"_from":".","_npmVersion":"1.3.26","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.1","dist":{"shasum":"9c49b3e44558e2072158fb085be8a083c5f83537","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.1.tgz"},"_from":".","_npmVersion":"1.4.0","_npmUser":{"name":"npm-www","email":"npm@npmjs.com"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.2","dist":{"shasum":"d9568a9413bee14951201ce73f3b3992ec6658c0","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.2.tgz"},"_from":".","_npmVersion":"1.4.1","_npmUser":{"name":"npm-www","email":"npm@npmjs.com"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.3","dist":{"shasum":"aa188fc5067158e991a57f4697c54994108f5389","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.3.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.4","dist":{"shasum":"f9dbc383a49069d8c7f67755a3ff6e424aff584f","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.4.tgz"},"_from":".","_npmVersion":"1.4.2","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.5":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.5","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.5","dist":{"shasum":"7d6fdca46139470715f9477ddb5ad3e770d4de7b","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.5.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.6":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.6","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.6","_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"657f69a79543fc4cc264c3b2de958bd15f7140fe","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.6.tgz"},"directories":{}},"0.4.7":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.7","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.7","dist":{"shasum":"f4369b59890da7882527eb7c427dd95d43707afb","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.7.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"directories":{}},"0.4.8":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.8","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.8","_shasum":"a6685a161033101be6064b7af887ab440e8695d0","_from":".","_npmVersion":"1.4.8","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"a6685a161033101be6064b7af887ab440e8695d0","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.8.tgz"},"directories":{}},"0.4.9":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.9","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.9","_shasum":"304d3d4726a58e33d8cc965afdc9ed70b996580c","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"304d3d4726a58e33d8cc965afdc9ed70b996580c","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.9.tgz"},"directories":{}},"0.4.10":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.10","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"^2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.10","_shasum":"ab7bf1be3ba07d769eaf74dee3c9347e02283116","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"ab7bf1be3ba07d769eaf74dee3c9347e02283116","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.10.tgz"},"directories":{}},"0.4.11":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.11","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"2 >=2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.11","_shasum":"032e9b6b050ed052ee9441841a945a184ea6bc33","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"032e9b6b050ed052ee9441841a945a184ea6bc33","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.11.tgz"},"directories":{}},"0.4.12":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"0.4.12","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"request":"2 >=2.25.0","graceful-fs":"~2.0.0","semver":"2 >=2.2.1","slide":"~1.1.3","chownr":"0","mkdirp":"~0.3.3","rimraf":"~2","retry":"0.6.0","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@0.4.12","_shasum":"34303422f6a3da93ca3a387a2650d707c8595b99","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"34303422f6a3da93ca3a387a2650d707c8595b99","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-0.4.12.tgz"},"directories":{}},"1.0.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"1.0.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"~2.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@1.0.0","_shasum":"2a6f9dfdce5f8ebf4b9af4dbfd738384d25014e5","_from":".","_npmVersion":"1.4.10","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"2a6f9dfdce5f8ebf4b9af4dbfd738384d25014e5","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-1.0.0.tgz"},"directories":{}},"1.0.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"1.0.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"~2.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"98b1278c230cf6c159f189e2f8c69daffa727ab8","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@1.0.1","_shasum":"c5f6a87d285f2005a35d3f67d9c724bce551b0f1","_from":".","_npmVersion":"1.4.13","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"c5f6a87d285f2005a35d3f67d9c724bce551b0f1","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-1.0.1.tgz"},"directories":{}},"2.0.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"2.0.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"~2.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"47a98069b6a34e751cbd5b84ce92858cae5abe70","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@2.0.0","_shasum":"88810dac2d534c0df1d905c79e723392fcfc791a","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"}],"dist":{"shasum":"88810dac2d534c0df1d905c79e723392fcfc791a","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-2.0.0.tgz"},"directories":{}},"2.0.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"2.0.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"123e40131f83f7265f66ecd2a558cce44a3aea86","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@2.0.1","_shasum":"611c7cb7c8f7ff22be2ebc6398423b5de10db0e2","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"611c7cb7c8f7ff22be2ebc6398423b5de10db0e2","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-2.0.1.tgz"},"directories":{}},"2.0.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"2.0.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"6ecc311c9dd4890f2d9b6bae60447070a3321e12","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@2.0.2","_shasum":"a82b000354c7f830114fb18444764bc477d5740f","_from":".","_npmVersion":"1.4.15","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"a82b000354c7f830114fb18444764bc477d5740f","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-2.0.2.tgz"},"directories":{}},"3.0.0":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.0","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","normalize-package-data":"^0.4.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"6bb1aec1e85fa82ee075bd997d6fb9f2dbb7f643","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.0","_shasum":"4febc5cdb274e9fa06bc3008910e3fa1ec007994","_from":".","_npmVersion":"1.5.0-pre","_npmUser":{"name":"othiym23","email":"ogd@aoaioxxysz.net"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"4febc5cdb274e9fa06bc3008910e3fa1ec007994","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.0.tgz"},"directories":{}},"3.0.1":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.1","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","normalize-package-data":"^0.4.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"fe8382dde609ea1e3580fcdc5bc3d0bba119cfc6","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.1","_shasum":"5f3ee362ce5c237cfb798fce22c77875fc1a63c2","_from":".","_npmVersion":"1.5.0-alpha-1","_npmUser":{"name":"othiym23","email":"ogd@aoaioxxysz.net"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"5f3ee362ce5c237cfb798fce22c77875fc1a63c2","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.1.tgz"},"directories":{}},"2.0.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"2.0.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"2578fb9a807d77417554ba235ba8fac39405e832","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@2.0.3","_shasum":"93dad3d9a162c99404badb71739c622c0f3b9a72","_from":".","_npmVersion":"1.5.0-alpha-1","_npmUser":{"name":"othiym23","email":"ogd@aoaioxxysz.net"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"93dad3d9a162c99404badb71739c622c0f3b9a72","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-2.0.3.tgz"},"directories":{}},"3.0.2":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.2","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","normalize-package-data":"^0.4.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"15343019160ace0b9874cf0ec186b3425dbc7301","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.2","_shasum":"5dd0910157ce55f4286a1871d39f9a2128cd3c99","_from":".","_npmVersion":"1.5.0-alpha-2","_npmUser":{"name":"othiym23","email":"ogd@aoaioxxysz.net"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"5dd0910157ce55f4286a1871d39f9a2128cd3c99","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.2.tgz"},"directories":{}},"3.0.3":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.3","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.3.3","normalize-package-data":"^0.4.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1 || 3.x","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"b18a780d1185f27c06c27812147b83aba0d4a2f5","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.3","_shasum":"2377dc1cf69b4d374b3a95fb7feba8c804d8cb30","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"2377dc1cf69b4d374b3a95fb7feba8c804d8cb30","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.3.tgz"},"directories":{}},"3.0.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"~0.5.0","normalize-package-data":"^0.4.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1 || 3.x","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"54900fe4b2eb5b99ee6dfe173f145732fdfae80e","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.4","_shasum":"d4a177d1f25615cfaef9b6844fa366ffbf5f578a","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"d4a177d1f25615cfaef9b6844fa366ffbf5f578a","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.4.tgz"},"directories":{}},"3.0.5":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.5","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"0.5","normalize-package-data":"0.4","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"2","semver":"2 >=2.2.1 || 3.x","slide":"^1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"BSD","gitHead":"635db1654346bc86473df7b39626601425f46177","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.5","_shasum":"cdabaefa399b81ac8a86a48718aefd80e7b19ff3","_from":".","_npmVersion":"2.0.0-alpha-5","_npmUser":{"name":"isaacs","email":"i@izs.me"},"maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"dist":{"shasum":"cdabaefa399b81ac8a86a48718aefd80e7b19ff3","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.5.tgz"},"directories":{}},"3.0.6":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"3.0.6","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"^0.5.0","normalize-package-data":"0.4","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"2","semver":"2 >=2.2.1 || 3.x","slide":"^1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"ISC","gitHead":"eba30fadd724ed5cad1aec95ac3ee907a59b7317","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@3.0.6","_shasum":"14a17d9a60ed2a80b04edcbc596dbce0d96540ee","_from":".","_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":"14a17d9a60ed2a80b04edcbc596dbce0d96540ee","tarball":"http://registry.npmjs.org/@npm%2fnpm-registry-client/-/@npm%2fnpm-registry-client-3.0.6.tgz"},"directories":{}},"2.0.4":{"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"name":"@npm/npm-registry-client","description":"Client for the npm registry","version":"2.0.4","repository":{"url":"git://github.com/isaacs/npm-registry-client"},"main":"index.js","scripts":{"test":"tap test/*.js"},"dependencies":{"chownr":"0","graceful-fs":"^3.0.0","mkdirp":"^0.5.0","npm-cache-filename":"^1.0.0","request":"2 >=2.25.0","retry":"0.6.0","rimraf":"~2","semver":"2 >=2.2.1","slide":"~1.1.3","npmlog":""},"devDependencies":{"tap":""},"optionalDependencies":{"npmlog":""},"license":"ISC","gitHead":"a10f621d9cdc813b9d3092a14b661f65bfa6d40d","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"homepage":"https://github.com/isaacs/npm-registry-client","_id":"@npm%2fnpm-registry-client@2.0.4","_shasum":"528e08900d7655c12096d1637d1c3a7a5b451019","_from":".","_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%2fnpm-registry-client/-/@npm%2fnpm-registry-client-2.0.4.tgz"},"directories":{}}},"readme":"# npm-registry-client\u000a\u000aThe code that npm uses to talk to the registry.\u000a\u000aIt handles all the caching and HTTP calls.\u000a\u000a## Usage\u000a\u000a```javascript\u000avar RegClient = require('npm-registry-client')\u000avar client = new RegClient(config)\u000avar uri = \"npm://registry.npmjs.org/npm\"\u000avar options = {timeout: 1000}\u000a\u000aclient.get(uri, options, function (error, data, raw, res) {\u000a // error is an error if there was a problem.\u000a // data is the parsed data object\u000a // raw is the json string\u000a // res is the response from couch\u000a})\u000a```\u000a\u000a# Registry URLs\u000a\u000aThe registry calls take either a full URL pointing to a resource in the\u000aregistry, or a base URL for the registry as a whole (for the base URL, any path\u000awill be ignored). In addition to `http` and `https`, `npm` URLs are allowed.\u000a`npm` URLs are `https` URLs with the additional restrictions that they will\u000aalways include authorization credentials, and the response is always registry\u000ametadata (and not tarballs or other attachments).\u000a\u000a# Configuration\u000a\u000aThis program is designed to work with\u000a[npmconf](https://npmjs.org/package/npmconf), but you can also pass in\u000aa plain-jane object with the appropriate configs, and it'll shim it\u000afor you. Any configuration thingie that has get/set/del methods will\u000aalso be accepted.\u000a\u000a* `cache` **Required** {String} Path to the cache folder\u000a* `always-auth` {Boolean} Auth even for GET requests.\u000a* `auth` {String} A base64-encoded `username:password`\u000a* `email` {String} User's email address\u000a* `tag` {String} The default tag to use when publishing new packages.\u000a Default = `\"latest\"`\u000a* `ca` {String} Cerficate signing authority certificates to trust.\u000a* `cert` {String} Client certificate (PEM encoded). Enable access\u000a to servers that require client certificates\u000a* `key` {String} Private key (PEM encoded) for client certificate 'cert'\u000a* `strict-ssl` {Boolean} Whether or not to be strict with SSL\u000a certificates. Default = `true`\u000a* `user-agent` {String} User agent header to send. Default =\u000a `\"node/{process.version} {process.platform} {process.arch}\"`\u000a* `log` {Object} The logger to use. Defaults to `require(\"npmlog\")` if\u000a that works, otherwise logs are disabled.\u000a* `fetch-retries` {Number} Number of times to retry on GET failures.\u000a Default=2\u000a* `fetch-retry-factor` {Number} `factor` setting for `node-retry`. Default=10\u000a* `fetch-retry-mintimeout` {Number} `minTimeout` setting for `node-retry`.\u000a Default=10000 (10 seconds)\u000a* `fetch-retry-maxtimeout` {Number} `maxTimeout` setting for `node-retry`.\u000a Default=60000 (60 seconds)\u000a* `proxy` {URL} The url to proxy requests through.\u000a* `https-proxy` {URL} The url to proxy https requests through.\u000a Defaults to be the same as `proxy` if unset.\u000a* `_auth` {String} The base64-encoded authorization header.\u000a* `username` `_password` {String} Username/password to use to generate\u000a `_auth` if not supplied.\u000a* `_token` {Object} A token for use with\u000a [couch-login](https://npmjs.org/package/couch-login)\u000a\u000a# client.request(method, uri, options, cb)\u000a\u000a* `method` {String} HTTP method\u000a* `uri` {String} URI pointing to the resource to request\u000a* `options` {Object} Object containing optional per-request properties.\u000a * `what` {Stream | Buffer | String | Object} The request body. Objects\u000a that are not Buffers or Streams are encoded as JSON.\u000a * `etag` {String} The cached ETag\u000a * `follow` {Boolean} Follow 302/301 responses (defaults to true)\u000a* `cb` {Function}\u000a * `error` {Error | null}\u000a * `data` {Object} the parsed data object\u000a * `raw` {String} the json\u000a * `res` {Response Object} response from couch\u000a\u000aMake a request to the registry. All the other methods are wrappers around\u000a`request`.\u000a\u000a# client.adduser(base, username, password, email, cb)\u000a\u000a* `base` {String} Base registry URL\u000a* `username` {String}\u000a* `password` {String}\u000a* `email` {String}\u000a* `cb` {Function}\u000a\u000aAdd a user account to the registry, or verify the credentials.\u000a\u000a# client.deprecate(uri, version, message, cb)\u000a\u000a* `uri` {String} Full registry URI for the deprecated package\u000a* `version` {String} Semver version range\u000a* `message` {String} The message to use as a deprecation warning\u000a* `cb` {Function}\u000a\u000aDeprecate a version of a package in the registry.\u000a\u000a# client.bugs(uri, cb)\u000a\u000a* `uri` {String} Full registry URI for the package\u000a* `cb` {Function}\u000a\u000aGet the url for bugs of a package\u000a\u000a# client.get(uri, options, cb)\u000a\u000a* `uri` {String} The complete registry URI to fetch\u000a* `options` {Object} Object containing optional per-request properties.\u000a * `timeout` {Number} Duration before the request times out.\u000a * `follow` {Boolean} Follow 302/301 responses (defaults to true)\u000a * `staleOk` {Boolean} If there's cached data available, then return that\u000a to the callback quickly, and update the cache the background.\u000a\u000aFetches data from the registry via a GET request, saving it in the cache folder\u000awith the ETag.\u000a\u000a# client.publish(uri, data, tarball, cb)\u000a\u000a* `uri` {String} The registry URI to publish to\u000a* `data` {Object} Package data\u000a* `tarball` {String | Stream} Filename or stream of the package tarball\u000a* `cb` {Function}\u000a\u000aPublish a package to the registry.\u000a\u000aNote that this does not create the tarball from a folder. However, it can\u000aaccept a gzipped tar stream or a filename to a tarball.\u000a\u000a# client.star(uri, starred, cb)\u000a\u000a* `uri` {String} The complete registry URI to star\u000a* `starred` {Boolean} True to star the package, false to unstar it.\u000a* `cb` {Function}\u000a\u000aStar or unstar a package.\u000a\u000aNote that the user does not have to be the package owner to star or unstar a\u000apackage, though other writes do require that the user be the package owner.\u000a\u000a# client.stars(base, username, cb)\u000a\u000a* `base` {String} The base URL for the registry\u000a* `username` {String} Name of user to fetch starred packages for.\u000a* `cb` {Function}\u000a\u000aView your own or another user's starred packages.\u000a\u000a# client.tag(uri, version, tag, cb)\u000a\u000a* `uri` {String} The complete registry URI to tag\u000a* `version` {String} Version to tag\u000a* `tag` {String} Tag name to apply\u000a* `cb` {Function}\u000a\u000aMark a version in the `dist-tags` hash, so that `pkg@tag` will fetch the\u000aspecified version.\u000a\u000a# client.unpublish(uri, [ver], cb)\u000a\u000a* `uri` {String} The complete registry URI to unpublish\u000a* `ver` {String} version to unpublish. Leave blank to unpublish all\u000a versions.\u000a* `cb` {Function}\u000a\u000aRemove a version of a package (or all versions) from the registry. When the\u000alast version us unpublished, the entire document is removed from the database.\u000a\u000a# client.upload(uri, file, [etag], [nofollow], cb)\u000a\u000a* `uri` {String} The complete registry URI to upload to\u000a* `file` {String | Stream} Either the filename or a readable stream\u000a* `etag` {String} Cache ETag\u000a* `nofollow` {Boolean} Do not follow 301/302 responses\u000a* `cb` {Function}\u000a\u000aUpload an attachment. Mostly used by `client.publish()`.\u000a","maintainers":[{"name":"isaacs","email":"i@izs.me"},{"name":"othiym23","email":"ogd@aoaioxxysz.net"}],"time":{"modified":"2014-07-31T21:59:52.896Z","created":"2012-06-07T04:43:36.581Z","0.0.1":"2012-06-07T04:43:38.123Z","0.0.2":"2012-06-07T05:35:05.937Z","0.0.3":"2012-06-09T00:55:25.861Z","0.0.4":"2012-06-11T03:53:26.548Z","0.0.5":"2012-06-11T23:48:11.235Z","0.0.6":"2012-06-17T06:23:27.320Z","0.0.7":"2012-06-18T19:19:38.315Z","0.0.8":"2012-06-28T20:40:20.563Z","0.0.9":"2012-07-10T03:28:04.651Z","0.0.10":"2012-07-11T17:03:45.151Z","0.0.11":"2012-07-17T14:06:37.489Z","0.1.0":"2012-07-23T18:17:38.007Z","0.1.1":"2012-07-23T21:21:28.196Z","0.1.2":"2012-07-24T06:14:12.831Z","0.1.3":"2012-08-07T02:02:20.564Z","0.1.4":"2012-08-15T03:04:52.822Z","0.1.5":"2012-08-17T21:59:33.310Z","0.2.0":"2012-08-17T22:00:18.081Z","0.2.1":"2012-08-17T22:07:28.827Z","0.2.2":"2012-08-17T22:37:24.352Z","0.2.3":"2012-08-19T19:16:44.808Z","0.2.4":"2012-08-19T19:18:51.792Z","0.2.5":"2012-08-20T16:54:50.794Z","0.2.6":"2012-08-22T00:25:04.766Z","0.2.7":"2012-08-27T19:07:34.829Z","0.2.8":"2012-10-02T19:53:50.661Z","0.2.9":"2012-10-03T22:09:50.766Z","0.2.10":"2012-10-25T14:55:54.216Z","0.2.11":"2012-12-21T16:26:38.094Z","0.2.12":"2013-01-18T22:22:41.668Z","0.2.13":"2013-02-06T00:16:35.939Z","0.2.14":"2013-02-10T02:44:02.764Z","0.2.15":"2013-02-11T19:18:55.678Z","0.2.16":"2013-02-15T17:09:03.249Z","0.2.17":"2013-02-16T03:47:13.898Z","0.2.18":"2013-03-06T22:09:23.536Z","0.2.19":"2013-03-20T06:27:39.128Z","0.2.20":"2013-03-28T00:43:07.558Z","0.2.21":"2013-04-29T15:46:54.094Z","0.2.22":"2013-04-29T15:51:02.178Z","0.2.23":"2013-05-11T00:28:14.198Z","0.2.24":"2013-05-24T21:27:50.693Z","0.2.25":"2013-06-20T15:36:46.277Z","0.2.26":"2013-07-06T17:12:54.670Z","0.2.27":"2013-07-11T07:14:45.740Z","0.2.28":"2013-08-02T20:27:41.732Z","0.2.29":"2013-10-28T18:23:24.477Z","0.2.30":"2013-11-18T23:12:00.540Z","0.2.31":"2013-12-16T08:36:43.044Z","0.3.0":"2013-12-17T07:03:10.699Z","0.3.1":"2013-12-17T16:53:27.867Z","0.3.2":"2013-12-17T22:25:14.882Z","0.3.3":"2013-12-21T16:07:06.773Z","0.3.4":"2014-01-29T15:24:05.163Z","0.3.5":"2014-01-31T01:53:19.656Z","0.3.6":"2014-02-07T00:17:21.362Z","0.4.0":"2014-02-13T01:17:18.973Z","0.4.1":"2014-02-13T23:47:37.892Z","0.4.2":"2014-02-14T00:29:13.086Z","0.4.3":"2014-02-16T03:40:54.640Z","0.4.4":"2014-02-16T03:41:48.856Z","0.4.5":"2014-03-12T05:09:17.474Z","0.4.6":"2014-03-29T19:44:15.041Z","0.4.7":"2014-04-02T19:41:07.149Z","0.4.8":"2014-05-01T22:24:54.980Z","0.4.9":"2014-05-12T21:52:55.127Z","0.4.10":"2014-05-13T16:44:29.801Z","0.4.11":"2014-05-13T20:33:04.738Z","0.4.12":"2014-05-14T06:14:22.842Z","1.0.0":"2014-05-14T23:04:37.188Z","1.0.1":"2014-06-03T00:55:54.448Z","2.0.0":"2014-06-06T04:23:46.579Z","2.0.1":"2014-06-06T06:25:14.419Z","2.0.2":"2014-06-14T00:33:10.205Z","3.0.0":"2014-07-02T00:30:29.154Z","3.0.1":"2014-07-14T23:29:05.057Z","2.0.3":"2014-07-15T00:09:36.043Z","3.0.2":"2014-07-17T06:30:02.659Z","3.0.3":"2014-07-23T21:20:42.406Z","3.0.4":"2014-07-25T00:27:26.007Z","3.0.5":"2014-07-25T00:28:48.007Z","3.0.6":"2014-07-31T21:57:49.043Z","2.0.4":"2014-07-31T21:59:52.896Z"},"author":{"name":"Isaac Z. Schlueter","email":"i@izs.me","url":"http://blog.izs.me/"},"repository":{"url":"git://github.com/isaacs/npm-registry-client"},"users":{"fgribreau":true,"fengmk2":true},"readmeFilename":"README.md","homepage":"https://github.com/isaacs/npm-registry-client","bugs":{"url":"https://github.com/isaacs/npm-registry-client/issues"},"license":"ISC","_attachments":{}} diff --git a/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/cache.json b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/cache.json new file mode 100644 index 000000000000..01da30027637 --- /dev/null +++ b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/cache.json @@ -0,0 +1 @@ +{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.3","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.3","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"47ac53683daf832bfa952e1774417da47817ae42","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.3.3.tgz"},"readme":" __ \n /\\ \\ __ \n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____ \n /\\ \\/\\ \\ /' _ `\\ /'_ \\ /'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/'__`\\ \\/\\ \\ /',__\\ \n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/ \n \\ \\____/ \n \\/___/\n \nUnderscore.js is a utility-belt library for JavaScript that provides \nsupport for the usual functional suspects (each, map, reduce, filter...) \nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://documentcloud.github.com/underscore/\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}} \ No newline at end of file diff --git a/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/package.tgz b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/package.tgz new file mode 100644 index 000000000000..19da9baa7fb1 Binary files /dev/null and b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/1.3.3/package.tgz differ diff --git a/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/cache.json b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/cache.json new file mode 100644 index 000000000000..d899f11922a4 --- /dev/null +++ b/deps/npm/node_modules/npm-registry-client/test/fixtures/underscore/cache.json @@ -0,0 +1 @@ +{"_id":"underscore","_rev":"72-47f2986bfd8e8b55068b204588bbf484","name":"underscore","description":"JavaScript's functional programming helper library.","dist-tags":{"latest":"1.3.3","stable":"1.3.3"},"versions":{"1.0.3":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.0.3","_id":"underscore@1.0.3","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/underscore/-/underscore-1.0.3.tgz"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.0.4":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.0.4","_id":"underscore@1.0.4","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/underscore/-/underscore-1.0.4.tgz"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.0":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.1.0","_id":"underscore@1.1.0","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.0.tgz"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.1":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.1.1","_id":"underscore@1.1.1","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.1.tgz"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.2":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.1.2","_id":"underscore@1.1.2","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.2.tgz"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.3":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore","version":"1.1.3","_id":"underscore@1.1.3","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.8-1","_nodeVersion":"v0.2.5","dist":{"tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.3.tgz"},"directories":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.4":{"name":"underscore","description":"Functional programming aid for JavaScript. Works well with jQuery.","url":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"lib":".","main":"underscore.js","version":"1.1.4","_id":"underscore@1.1.4","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.9","_nodeVersion":"v0.5.0-pre","dist":{"shasum":"9e82274902865625b3a6d4c315a38ffd80047dae","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.4.tgz"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.1.5":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.1.5","_id":"underscore@1.1.5","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.16","_nodeVersion":"v0.4.2","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"23601d62c75619998b2f0db24938102793336a56","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.5.tgz"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.6":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.1.6","_id":"underscore@1.1.6","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.18","_nodeVersion":"v0.4.2","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"6868da1bdd72d75285be0b4e50f228e70d001a2c","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.6.tgz"},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}]},"1.1.7":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.1.7","devDependencies":{},"_id":"underscore@1.1.7","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.3","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"40bab84bad19d230096e8d6ef628bff055d83db0","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.1.7.tgz"},"scripts":{},"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.2.0":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.0","_npmJsonOpts":{"file":"/Users/jashkenas/.npm/underscore/1.2.0/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"underscore@1.2.0","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"b32ce32c8c118caa8031c10b54c7f65ab3b557fd","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.2.0.tgz"},"scripts":{},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"directories":{}},"1.2.1":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.1","_npmJsonOpts":{"file":"/Users/jashkenas/.npm/underscore/1.2.1/package/package.json","wscript":false,"contributors":false,"serverjs":false},"_id":"underscore@1.2.1","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.22","_nodeVersion":"v0.4.10","_defaultsLoaded":true,"dist":{"shasum":"fc5c6b0765673d92a2d4ac8b4dc0aa88702e2bd4","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.2.1.tgz"},"scripts":{},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"directories":{}},"1.2.2":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.2","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.2.2","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"74dd40e9face84e724eb2edae945b8aedc233ba3","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.2.2.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.2.3":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"dependencies":{},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.3","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.2.3","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.0","_defaultsLoaded":true,"dist":{"shasum":"11b874da70f4683d7d48bba2b44be1e600d2f6cf","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.2.3.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.2.4":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.2.4","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.2.4","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"e8da6241aa06f64df2473bb2590b8c17c84c3c7e","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.2.4.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.3.0":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"contributors":[],"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.0","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"253b2d79b7bb67943ced0fc744eb18267963ede8","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.3.0.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.3.1":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.1","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.1","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"6cb8aad0e77eb5dbbfb54b22bcd8697309cf9641","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.3.1.tgz"},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.3.2":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.2","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.2","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"1b4e455089ab1d1d38ab6794ffe6cf08f764394a","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.3.2.tgz"},"readme":" __ \n /\\ \\ __ \n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____ \n /\\ \\/\\ \\ /' _ `\\ /'_ \\ /'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/'__`\\ \\/\\ \\ /',__\\ \n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/ \n \\ \\____/ \n \\/___/\n \nUnderscore.js is a utility-belt library for JavaScript that provides \nsupport for the usual functional suspects (each, map, reduce, filter...) \nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://documentcloud.github.com/underscore/\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}},"1.3.3":{"name":"underscore","description":"JavaScript's functional programming helper library.","homepage":"http://documentcloud.github.com/underscore/","keywords":["util","functional","server","client","browser"],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"main":"underscore.js","version":"1.3.3","_npmUser":{"name":"jashkenas","email":"jashkenas@gmail.com"},"_id":"underscore@1.3.3","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.1","_nodeVersion":"v0.6.11","_defaultsLoaded":true,"dist":{"shasum":"47ac53683daf832bfa952e1774417da47817ae42","tarball":"http://registry.npmjs.org/underscore/-/underscore-1.3.3.tgz"},"readme":" __ \n /\\ \\ __ \n __ __ ___ \\_\\ \\ __ _ __ ____ ___ ___ _ __ __ /\\_\\ ____ \n /\\ \\/\\ \\ /' _ `\\ /'_ \\ /'__`\\/\\ __\\/ ,__\\ / ___\\ / __`\\/\\ __\\/'__`\\ \\/\\ \\ /',__\\ \n \\ \\ \\_\\ \\/\\ \\/\\ \\/\\ \\ \\ \\/\\ __/\\ \\ \\//\\__, `\\/\\ \\__//\\ \\ \\ \\ \\ \\//\\ __/ __ \\ \\ \\/\\__, `\\\n \\ \\____/\\ \\_\\ \\_\\ \\___,_\\ \\____\\\\ \\_\\\\/\\____/\\ \\____\\ \\____/\\ \\_\\\\ \\____\\/\\_\\ _\\ \\ \\/\\____/\n \\/___/ \\/_/\\/_/\\/__,_ /\\/____/ \\/_/ \\/___/ \\/____/\\/___/ \\/_/ \\/____/\\/_//\\ \\_\\ \\/___/ \n \\ \\____/ \n \\/___/\n \nUnderscore.js is a utility-belt library for JavaScript that provides \nsupport for the usual functional suspects (each, map, reduce, filter...) \nwithout extending any core JavaScript objects.\n\nFor Docs, License, Tests, and pre-packed downloads, see:\nhttp://documentcloud.github.com/underscore/\n\nMany thanks to our contributors:\nhttps://github.com/documentcloud/underscore/contributors\n","maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"directories":{}}},"maintainers":[{"name":"documentcloud","email":"jeremy@documentcloud.org"},{"name":"jashkenas","email":"jashkenas@gmail.com"}],"author":{"name":"Jeremy Ashkenas","email":"jeremy@documentcloud.org"},"time":{"1.0.3":"2011-12-07T15:12:18.045Z","1.0.4":"2011-12-07T15:12:18.045Z","1.1.0":"2011-12-07T15:12:18.045Z","1.1.1":"2011-12-07T15:12:18.045Z","1.1.2":"2011-12-07T15:12:18.045Z","1.1.3":"2011-12-07T15:12:18.045Z","1.1.4":"2011-12-07T15:12:18.045Z","1.1.5":"2011-12-07T15:12:18.045Z","1.1.6":"2011-12-07T15:12:18.045Z","1.1.7":"2011-12-07T15:12:18.045Z","1.2.0":"2011-12-07T15:12:18.045Z","1.2.1":"2011-12-07T15:12:18.045Z","1.2.2":"2011-11-14T20:28:47.115Z","1.2.3":"2011-12-07T15:12:18.045Z","1.2.4":"2012-01-09T17:23:14.818Z","1.3.0":"2012-01-11T16:41:38.459Z","1.3.1":"2012-01-23T22:57:36.474Z","1.3.2":"2012-04-09T18:38:14.345Z","1.3.3":"2012-04-10T14:43:48.089Z"},"repository":{"type":"git","url":"git://github.com/documentcloud/underscore.git"},"users":{"vesln":true,"mvolkmann":true,"lancehunt":true,"mikl":true,"linus":true,"vasc":true,"bat":true,"dmalam":true,"mbrevoort":true,"danielr":true,"rsimoes":true,"thlorenz":true}} \ No newline at end of file diff --git a/deps/npm/node_modules/npm-registry-client/test/get-403.js b/deps/npm/node_modules/npm-registry-client/test/get-403.js index 0b8592e50c2c..004de207f871 100644 --- a/deps/npm/node_modules/npm-registry-client/test/get-403.js +++ b/deps/npm/node_modules/npm-registry-client/test/get-403.js @@ -23,6 +23,7 @@ tap.test('get returns 403', function (t) { t.equal(er.statusCode, 403, 'status code was attached to error as expected') t.equal(er.code, 'E403', 'error code was formatted as expected') + server.close() t.end() } ) diff --git a/deps/npm/node_modules/npm-registry-client/test/get-basic.js b/deps/npm/node_modules/npm-registry-client/test/get-basic.js index a2ab27fe0f18..031309c92bd9 100644 --- a/deps/npm/node_modules/npm-registry-client/test/get-basic.js +++ b/deps/npm/node_modules/npm-registry-client/test/get-basic.js @@ -78,3 +78,8 @@ test('basic request', function (t) { t.deepEqual(data, usroot) }) }) + +test('cleanup', function (t) { + server.close() + t.end() +}) diff --git a/deps/npm/node_modules/npm-registry-client/test/get-error-403.js b/deps/npm/node_modules/npm-registry-client/test/get-error-403.js index c9c96d354e0e..73ef43611619 100644 --- a/deps/npm/node_modules/npm-registry-client/test/get-error-403.js +++ b/deps/npm/node_modules/npm-registry-client/test/get-error-403.js @@ -27,6 +27,7 @@ tap.test('get fails with 403', function (t) { 'got error message' ) + server.close() t.end() } ) diff --git a/deps/npm/node_modules/npm-registry-client/test/lib/common.js b/deps/npm/node_modules/npm-registry-client/test/lib/common.js index 8b7875d4c080..78e543f699a1 100644 --- a/deps/npm/node_modules/npm-registry-client/test/lib/common.js +++ b/deps/npm/node_modules/npm-registry-client/test/lib/common.js @@ -2,6 +2,14 @@ var server = require('./server.js') var RC = require('../../') var REGISTRY = 'http://localhost:' + server.port +// cheesy hackaround for test deps (read: nock) that rely on setImmediate +if (!global.setImmediate || !require('timers').setImmediate) { + require('timers').setImmediate = global.setImmediate = function () { + var args = [arguments[0], 0].concat([].slice.call(arguments, 1)) + setTimeout.apply(this, args) + } +} + module.exports = { port: server.port, registry: REGISTRY, diff --git a/deps/npm/node_modules/npm-registry-client/test/lib/server.js b/deps/npm/node_modules/npm-registry-client/test/lib/server.js index 60b116d80f91..06bebdc13930 100644 --- a/deps/npm/node_modules/npm-registry-client/test/lib/server.js +++ b/deps/npm/node_modules/npm-registry-client/test/lib/server.js @@ -29,11 +29,6 @@ function handler (req, res) { var fn = server._expect[k].shift() if (!fn) throw Error('unexpected request: ' + req.method + ' ' + req.url) - var remain = (Object.keys(server._expect).reduce(function (s, k) { - return s + server._expect[k].length - }, 0)) - if (remain === 0) server.close() - else this.log.info('fake-registry', 'TEST SERVER: %d reqs remain', remain) this.log.info('fake-registry', Object.keys(server._expect).map(function (k) { return [k, server._expect[k].length] }).reduce(function (acc, kv) { diff --git a/deps/npm/node_modules/npm-registry-client/test/ping.js b/deps/npm/node_modules/npm-registry-client/test/ping.js index 002d8ba8f276..1b30b90520e9 100644 --- a/deps/npm/node_modules/npm-registry-client/test/ping.js +++ b/deps/npm/node_modules/npm-registry-client/test/ping.js @@ -70,6 +70,7 @@ test('ping', function (t) { username: DEP_USER } t.same(found, wanted) + server.close() t.end() }) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/publish-again-scoped.js b/deps/npm/node_modules/npm-registry-client/test/publish-again-scoped.js index 42f67272138f..611a852cd886 100644 --- a/deps/npm/node_modules/npm-registry-client/test/publish-again-scoped.js +++ b/deps/npm/node_modules/npm-registry-client/test/publish-again-scoped.js @@ -17,7 +17,7 @@ tap.test('publish again', function (t) { // not really a tarball, but doesn't matter var bodyPath = require.resolve('../package.json') var tarball = fs.createReadStream(bodyPath) - var pd = fs.readFileSync(bodyPath, 'base64') + var pd = fs.readFileSync(bodyPath) var pkg = require('../package.json') var lastTime = null @@ -36,7 +36,7 @@ tap.test('publish again', function (t) { t.has(o.versions[pkg.version], pkg) t.same(o.maintainers, [ { name: 'username', email: 'i@izs.me' } ]) var att = o._attachments[ pkg.name + '-' + pkg.version + '.tgz' ] - t.same(att.data, pd) + t.same(att.data, pd.toString('base64')) res.statusCode = 409 res.json({reason: 'must supply latest _rev to update existing package'}) }) @@ -85,6 +85,7 @@ tap.test('publish again', function (t) { client.publish('http://localhost:1337/', params, function (er, data) { if (er) throw er t.deepEqual(data, { created: true }) + server.close() t.end() }) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/publish-again.js b/deps/npm/node_modules/npm-registry-client/test/publish-again.js index 5beec90e4a0a..4a895205ea28 100644 --- a/deps/npm/node_modules/npm-registry-client/test/publish-again.js +++ b/deps/npm/node_modules/npm-registry-client/test/publish-again.js @@ -17,7 +17,7 @@ tap.test('publish again', function (t) { // not really a tarball, but doesn't matter var bodyPath = require.resolve('../package.json') var tarball = fs.createReadStream(bodyPath) - var pd = fs.readFileSync(bodyPath, 'base64') + var pd = fs.readFileSync(bodyPath) var pkg = require('../package.json') var lastTime = null @@ -36,7 +36,7 @@ tap.test('publish again', function (t) { t.has(o.versions[pkg.version], pkg) t.same(o.maintainers, [ { name: 'username', email: 'i@izs.me' } ]) var att = o._attachments[ pkg.name + '-' + pkg.version + '.tgz' ] - t.same(att.data, pd) + t.same(att.data, pd.toString('base64')) res.statusCode = 409 res.json({reason: 'must supply latest _rev to update existing package'}) }) @@ -83,6 +83,7 @@ tap.test('publish again', function (t) { client.publish('http://localhost:1337/', params, function (er, data) { if (er) throw er t.deepEqual(data, { created: true }) + server.close() t.end() }) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/publish-failed-no-message.js b/deps/npm/node_modules/npm-registry-client/test/publish-failed-no-message.js index 5cb66d1e077f..d2641e85c11e 100644 --- a/deps/npm/node_modules/npm-registry-client/test/publish-failed-no-message.js +++ b/deps/npm/node_modules/npm-registry-client/test/publish-failed-no-message.js @@ -38,6 +38,7 @@ test('publish with a 500 response but no message', function (t) { t.ok(er, 'got expected error') t.notOk(data, 'no payload on failure') + server.close() t.end() }) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/publish-mixcase-name.js b/deps/npm/node_modules/npm-registry-client/test/publish-mixcase-name.js index f2cc1d668130..5f2c44e697de 100644 --- a/deps/npm/node_modules/npm-registry-client/test/publish-mixcase-name.js +++ b/deps/npm/node_modules/npm-registry-client/test/publish-mixcase-name.js @@ -17,7 +17,7 @@ tap.test('publish mixcase name', function (t) { // not really a tarball, but doesn't matter var bodyPath = require.resolve('../package.json') var tarball = fs.createReadStream(bodyPath) - var pd = fs.readFileSync(bodyPath, 'base64') + var pd = fs.readFileSync(bodyPath) var pkg = require('../package.json') var lastTime = null @@ -39,7 +39,7 @@ tap.test('publish mixcase name', function (t) { t.has(o.versions[pkg.version], pkg) t.same(o.maintainers, [ { name: 'username', email: 'i@izs.me' } ]) var att = o._attachments[ pkg.name + '-' + pkg.version + '.tgz' ] - t.same(att.data, pd) + t.same(att.data, pd.toString('base64')) res.statusCode = 409 res.json({reason: 'must supply latest _rev to update existing package'}) }) @@ -86,6 +86,7 @@ tap.test('publish mixcase name', function (t) { client.publish('http://localhost:1337/', params, function (er, data) { if (er) throw er t.deepEqual(data, { created: true }) + server.close() t.end() }) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/publish-new-mixcase-name.js b/deps/npm/node_modules/npm-registry-client/test/publish-new-mixcase-name.js index 5b0e47655c20..e3e8ed232428 100644 --- a/deps/npm/node_modules/npm-registry-client/test/publish-new-mixcase-name.js +++ b/deps/npm/node_modules/npm-registry-client/test/publish-new-mixcase-name.js @@ -28,7 +28,7 @@ var PARAMS = { } test('publish-new-mixcase-name', function (t) { - var pd = fs.readFileSync(BODY_PATH, 'base64') + var pd = fs.readFileSync(BODY_PATH) // change to mixed-case name METADATA.name = 'npm-Registry-Client' @@ -51,9 +51,9 @@ test('publish-new-mixcase-name', function (t) { t.same(o.maintainers, o.versions[METADATA.version].maintainers) var att = o._attachments[METADATA.name + '-' + METADATA.version + '.tgz'] - t.same(att.data, pd) + t.same(att.data, pd.toString('base64')) - var hash = crypto.createHash('sha1').update(pd, 'base64').digest('hex') + var hash = crypto.createHash('sha1').update(pd).digest('hex') t.equal(o.versions[METADATA.version].dist.shasum, hash) res.statusCode = 403 @@ -67,6 +67,7 @@ test('publish-new-mixcase-name', function (t) { // TODO: need a test that ensures useful error message // t.similar(data.error, /must be lower-case/) + server.close() t.end() }) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/publish-scoped-auth-token.js b/deps/npm/node_modules/npm-registry-client/test/publish-scoped-auth-token.js index d4704ca491d0..a9c5768e582c 100644 --- a/deps/npm/node_modules/npm-registry-client/test/publish-scoped-auth-token.js +++ b/deps/npm/node_modules/npm-registry-client/test/publish-scoped-auth-token.js @@ -13,7 +13,7 @@ tap.test('publish', function (t) { // not really a tarball, but doesn't matter var bodyPath = require.resolve('../package.json') var tarball = fs.createReadStream(bodyPath) - var pd = fs.readFileSync(bodyPath, 'base64') + var pd = fs.readFileSync(bodyPath) var pkg = require('../package.json') pkg.name = '@npm/npm-registry-client' @@ -34,8 +34,8 @@ tap.test('publish', function (t) { t.has(o.versions[pkg.version], pkg) t.same(o.maintainers, o.versions[pkg.version].maintainers) var att = o._attachments[ pkg.name + '-' + pkg.version + '.tgz' ] - t.same(att.data, pd) - var hash = crypto.createHash('sha1').update(pd, 'base64').digest('hex') + t.same(att.data, pd.toString('base64')) + var hash = crypto.createHash('sha1').update(pd).digest('hex') t.equal(o.versions[pkg.version].dist.shasum, hash) res.statusCode = 201 res.json({ created: true }) @@ -51,6 +51,7 @@ tap.test('publish', function (t) { client.publish(common.registry, params, function (er, data) { if (er) throw er t.deepEqual(data, { created: true }) + server.close() t.end() }) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/publish-scoped.js b/deps/npm/node_modules/npm-registry-client/test/publish-scoped.js index 7758c3c12b97..347364ea99e2 100644 --- a/deps/npm/node_modules/npm-registry-client/test/publish-scoped.js +++ b/deps/npm/node_modules/npm-registry-client/test/publish-scoped.js @@ -19,7 +19,7 @@ tap.test('publish', function (t) { // not really a tarball, but doesn't matter var bodyPath = require.resolve('../package.json') var tarball = fs.createReadStream(bodyPath) - var pd = fs.readFileSync(bodyPath, 'base64') + var pd = fs.readFileSync(bodyPath) var pkg = require('../package.json') pkg.name = '@npm/npm-registry-client' @@ -41,8 +41,8 @@ tap.test('publish', function (t) { t.same(o.maintainers, [ { name: 'username', email: 'ogd@aoaioxxysz.net' } ]) t.same(o.maintainers, o.versions[pkg.version].maintainers) var att = o._attachments[ pkg.name + '-' + pkg.version + '.tgz' ] - t.same(att.data, pd) - var hash = crypto.createHash('sha1').update(pd, 'base64').digest('hex') + t.same(att.data, pd.toString('base64')) + var hash = crypto.createHash('sha1').update(pd).digest('hex') t.equal(o.versions[pkg.version].dist.shasum, hash) res.statusCode = 201 res.json({ created: true }) @@ -58,6 +58,7 @@ tap.test('publish', function (t) { client.publish(common.registry, params, function (er, data) { if (er) throw er t.deepEqual(data, { created: true }) + server.close() t.end() }) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/publish.js b/deps/npm/node_modules/npm-registry-client/test/publish.js index f2c257e95c35..07c8bb4617ff 100644 --- a/deps/npm/node_modules/npm-registry-client/test/publish.js +++ b/deps/npm/node_modules/npm-registry-client/test/publish.js @@ -164,7 +164,7 @@ test('publish call contract', function (t) { }) test('publish', function (t) { - var pd = fs.readFileSync(BODY_PATH, 'base64') + var pd = fs.readFileSync(BODY_PATH) server.expect('/npm-registry-client', function (req, res) { t.equal(req.method, 'PUT') @@ -184,9 +184,9 @@ test('publish', function (t) { t.same(o.maintainers, o.versions[METADATA.version].maintainers) var att = o._attachments[METADATA.name + '-' + METADATA.version + '.tgz'] - t.same(att.data, pd) + t.same(att.data, pd.toString('base64')) - var hash = crypto.createHash('sha1').update(pd, 'base64').digest('hex') + var hash = crypto.createHash('sha1').update(pd).digest('hex') t.equal(o.versions[METADATA.version].dist.shasum, hash) res.statusCode = 201 @@ -198,6 +198,7 @@ test('publish', function (t) { if (er) throw er t.deepEqual(data, { created: true }) + server.close() t.end() }) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/redirects.js b/deps/npm/node_modules/npm-registry-client/test/redirects.js index d589f161a63e..2da565769bc8 100644 --- a/deps/npm/node_modules/npm-registry-client/test/redirects.js +++ b/deps/npm/node_modules/npm-registry-client/test/redirects.js @@ -1,4 +1,4 @@ -var tap = require('tap') +var test = require('tap').test var server = require('./lib/server.js') var common = require('./lib/common.js') @@ -10,7 +10,7 @@ var pkg = { version: '1.2.3' } -tap.test('basic request', function (t) { +test('basic request', function (t) { // Expect one request for { follow : false } server.expect('/-/some-package/1.2.3', function (req, res) { res.writeHead(301, { @@ -49,3 +49,8 @@ tap.test('basic request', function (t) { } ) }) + +test('cleanup', function (t) { + server.close() + t.end() +}) diff --git a/deps/npm/node_modules/npm-registry-client/test/request-gzip-content.js b/deps/npm/node_modules/npm-registry-client/test/request-gzip-content.js index 27a76b8a81a2..5e25214f2527 100644 --- a/deps/npm/node_modules/npm-registry-client/test/request-gzip-content.js +++ b/deps/npm/node_modules/npm-registry-client/test/request-gzip-content.js @@ -1,5 +1,5 @@ var zlib = require('zlib') -var tap = require('tap') +var test = require('tap').test var server = require('./lib/server.js') var common = require('./lib/common.js') @@ -20,7 +20,7 @@ var pkg = { } zlib.gzip(JSON.stringify(pkg), function (err, pkgGzip) { - tap.test('request gzip package content', function (t) { + test('request gzip package content', function (t) { t.ifError(err, 'example package compressed') server.expect('GET', '/some-package-gzip/1.2.3', function (req, res) { @@ -37,7 +37,7 @@ zlib.gzip(JSON.stringify(pkg), function (err, pkgGzip) { }) }) - tap.test('request wrong gzip package content', function (t) { + test('request wrong gzip package content', function (t) { // will retry 3 times for (var i = 0; i < 3; i++) { server.expect('GET', '/some-package-gzip/1.2.3', function (req, res) { @@ -53,4 +53,9 @@ zlib.gzip(JSON.stringify(pkg), function (err, pkgGzip) { t.end() }) }) + + test('cleanup', function (t) { + server.close() + t.end() + }) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/request.js b/deps/npm/node_modules/npm-registry-client/test/request.js index 68af9bcca2ba..ed02f19722fa 100644 --- a/deps/npm/node_modules/npm-registry-client/test/request.js +++ b/deps/npm/node_modules/npm-registry-client/test/request.js @@ -1,4 +1,4 @@ -var Readable = require('stream').Readable +var Readable = require('readable-stream').Readable var inherits = require('util').inherits var test = require('tap').test @@ -81,7 +81,7 @@ test('request call contract', function (t) { }) test('run request through its paces', function (t) { - t.plan(29) + t.plan(34) server.expect('/request-defaults', function (req, res) { t.equal(req.method, 'GET', 'uses GET by default') @@ -173,6 +173,13 @@ test('run request through its paces', function (t) { })) }) + server.expect('GET', '/not-found-no-body', function (req, res) { + req.pipe(concat(function () { + res.statusCode = 404 + res.end() + })) + }) + var defaults = {} client.request( common.registry + '/request-defaults', @@ -260,4 +267,51 @@ test('run request through its paces', function (t) { client.request(common.registry + '/@scoped%2Fpackage-failing', defaults, function (er) { t.equals(er.message, 'payment required : @scoped/package-failing') }) + + client.request(common.registry + '/not-found-no-body', defaults, function (er) { + t.equals(er.message, '404 Not Found') + t.equals(er.statusCode, 404, 'got back 404 as .statusCode') + t.equals(er.code, 'E404', 'got back expected string code') + t.notOk(er.pkgid, "no package name returned when there's no body on response") + t.ok(typeof er !== 'string', "Error shouldn't be returned as string.") + }) +}) + +test('outputs notice if npm-notice header is set', function (t) { + var client = common.freshClient({ + log: { + error: noop, + warn: function (prefix, msg) { + warnings.push(msg) + }, + info: noop, + verbose: noop, + silly: noop, + http: noop, + pause: noop, + resume: noop + } + }) + var message = 'notice me!' + var warnings = [] + + function noop () {} + + server.expect('GET', '/npm-notice', function (req, res) { + req.pipe(concat(function () { + res.statusCode = 200 + res.setHeader('npm-notice', message) + res.end() + })) + }) + + client.request(common.registry + '/npm-notice', {}, function (er) { + t.notEqual(warnings.indexOf(message), -1, 'notice not printed') + t.end() + }) +}) + +test('cleanup', function (t) { + server.close() + t.end() }) diff --git a/deps/npm/node_modules/npm-registry-client/test/retries.js b/deps/npm/node_modules/npm-registry-client/test/retries.js index 3101a5d57606..a75cbf7e0202 100644 --- a/deps/npm/node_modules/npm-registry-client/test/retries.js +++ b/deps/npm/node_modules/npm-registry-client/test/retries.js @@ -46,6 +46,7 @@ tap.test('create new user account', function (t) { client.get('http://localhost:1337/some-package/1.2.3', {}, function (er, data) { if (er) throw er t.deepEqual(data, pkg) + server.close() t.end() }) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/star.js b/deps/npm/node_modules/npm-registry-client/test/star.js index ff00bab1c8e0..e9e60266da0b 100644 --- a/deps/npm/node_modules/npm-registry-client/test/star.js +++ b/deps/npm/node_modules/npm-registry-client/test/star.js @@ -112,13 +112,13 @@ test('if password auth, only sets authorization on put', function (t) { .reply(200, {}) var starPut = nock('http://localhost:1010', { - reqheaders: { - authorization: 'Basic ' + new Buffer(AUTH.username + ':' + - AUTH.password).toString('base64') - } - }) - .put('/underscore') - .reply(200) + reqheaders: { + authorization: 'Basic ' + new Buffer(AUTH.username + ':' + + AUTH.password).toString('base64') + } + }) + .put('/underscore') + .reply(200) var params = { starred: STARRED, auth: AUTH } @@ -132,28 +132,28 @@ test('if password auth, only sets authorization on put', function (t) { test('if token auth, sets bearer on get and put', function (t) { var starGet = nock('http://localhost:1010', { - reqheaders: { - authorization: 'Bearer foo' - } - }) - .get('/underscore?write=true') - .reply(200, {}) + reqheaders: { + authorization: 'Bearer foo' + } + }) + .get('/underscore?write=true') + .reply(200, {}) var getUser = nock('http://localhost:1010', { - reqheaders: { - authorization: 'Bearer foo' - } - }) - .get('/-/whoami') - .reply(200, { username: 'bcoe' }) + reqheaders: { + authorization: 'Bearer foo' + } + }) + .get('/-/whoami') + .reply(200, { username: 'bcoe' }) var starPut = nock('http://localhost:1010', { - reqheaders: { - authorization: 'Bearer foo' - } - }) - .put('/underscore') - .reply(200) + reqheaders: { + authorization: 'Bearer foo' + } + }) + .put('/underscore') + .reply(200) var params = { starred: STARRED, @@ -169,3 +169,8 @@ test('if token auth, sets bearer on get and put', function (t) { t.end() }) }) + +test('cleanup', function (t) { + server.close() + t.end() +}) diff --git a/deps/npm/node_modules/npm-registry-client/test/stars.js b/deps/npm/node_modules/npm-registry-client/test/stars.js index d990e05c5ee6..a5e713c58ed2 100644 --- a/deps/npm/node_modules/npm-registry-client/test/stars.js +++ b/deps/npm/node_modules/npm-registry-client/test/stars.js @@ -75,6 +75,7 @@ test('get the stars for a package', function (t) { t.ifError(er, 'no errors') t.deepEqual(info, USERS, 'got the list of users') + server.close() t.end() }) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/tag.js b/deps/npm/node_modules/npm-registry-client/test/tag.js index 2ab5134e4e07..e10490ee6c51 100644 --- a/deps/npm/node_modules/npm-registry-client/test/tag.js +++ b/deps/npm/node_modules/npm-registry-client/test/tag.js @@ -102,6 +102,7 @@ test('tag a package', function (t) { t.ifError(error, 'no errors') t.ok(data.tagged, 'was tagged') + server.close() t.end() }) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/team.js b/deps/npm/node_modules/npm-registry-client/test/team.js new file mode 100644 index 000000000000..ffbd18fc8376 --- /dev/null +++ b/deps/npm/node_modules/npm-registry-client/test/team.js @@ -0,0 +1,215 @@ +var test = require('tap').test + +var server = require('./lib/server.js') +var common = require('./lib/common.js') +var client = common.freshClient() + +function nop () {} + +var URI = 'http://localhost:1337' +var PARAMS = { + auth: { + token: 'foo' + }, + scope: 'myorg', + team: 'myteam' +} + +var commands = ['create', 'destroy', 'add', 'rm', 'ls'] + +test('team create basic', function (t) { + var teamData = { + name: PARAMS.team, + scope_id: 1234, + created: '2015-07-23T18:07:49.959Z', + updated: '2015-07-23T18:07:49.959Z', + deleted: null + } + server.expect('PUT', '/-/org/myorg/team', function (req, res) { + t.equal(req.method, 'PUT') + onJsonReq(req, function (json) { + t.same(json, { name: PARAMS.team }) + res.statusCode = 200 + res.json(teamData) + }) + }) + client.team('create', URI, PARAMS, function (err, data) { + t.ifError(err, 'no errors') + t.same(data, teamData) + t.end() + }) +}) + +test('team destroy', function (t) { + var teamData = { + name: 'myteam', + scope_id: 1234, + created: '2015-07-23T18:07:49.959Z', + updated: '2015-07-23T18:07:49.959Z', + deleted: '2015-07-23T18:27:27.178Z' + } + server.expect('DELETE', '/-/team/myorg/myteam', function (req, res) { + t.equal(req.method, 'DELETE') + onJsonReq(req, function (json) { + t.same(json, undefined) + res.statusCode = 200 + res.json(teamData) + }) + }) + client.team('destroy', URI, PARAMS, function (err, data) { + t.ifError(err, 'no errors') + t.same(data, teamData) + t.end() + }) +}) + +test('team add basic', function (t) { + var params = Object.create(PARAMS) + params.user = 'zkat' + server.expect('PUT', '/-/team/myorg/myteam/user', function (req, res) { + t.equal(req.method, 'PUT') + onJsonReq(req, function (json) { + t.same(json, { user: params.user }) + res.statusCode = 200 + res.json(undefined) + }) + }) + client.team('add', URI, params, function (err, data) { + t.ifError(err, 'no errors') + t.same(data, undefined) + t.end() + }) +}) + +test('team add user not in org', function (t) { + var params = Object.create(PARAMS) + params.user = 'zkat' + var errMsg = 'user is already in team' + server.expect('PUT', '/-/team/myorg/myteam/user', function (req, res) { + t.equal(req.method, 'PUT') + res.statusCode = 400 + res.json({ + error: errMsg + }) + }) + client.team('add', URI, params, function (err, data) { + t.equal(err.message, errMsg + ' : ' + '-/team/myorg/myteam/user') + t.same(data, {error: errMsg}) + t.end() + }) +}) + +test('team rm basic', function (t) { + var params = Object.create(PARAMS) + params.user = 'bcoe' + server.expect('DELETE', '/-/team/myorg/myteam/user', function (req, res) { + t.equal(req.method, 'DELETE') + onJsonReq(req, function (json) { + t.same(json, params) + res.statusCode = 200 + res.json(undefined) + }) + }) + client.team('rm', URI, params, function (err, data) { + t.ifError(err, 'no errors') + t.same(data, undefined) + t.end() + }) +}) + +test('team ls (on org)', function (t) { + var params = Object.create(PARAMS) + params.team = null + var teams = ['myorg:team1', 'myorg:team2', 'myorg:team3'] + server.expect('GET', '/-/org/myorg/team?format=cli', function (req, res) { + t.equal(req.method, 'GET') + onJsonReq(req, function (json) { + t.same(json, undefined) + res.statusCode = 200 + res.json(teams) + }) + }) + client.team('ls', URI, params, function (err, data) { + t.ifError(err, 'no errors') + t.same(data, teams) + t.end() + }) +}) + +test('team ls (on team)', function (t) { + var uri = '/-/team/myorg/myteam/user?format=cli' + var users = ['zkat', 'bcoe'] + server.expect('GET', uri, function (req, res) { + t.equal(req.method, 'GET') + onJsonReq(req, function (json) { + t.same(json, undefined) + res.statusCode = 200 + res.json(users) + }) + }) + client.team('ls', URI, PARAMS, function (err, data) { + t.ifError(err, 'no errors') + t.same(data, users) + t.end() + }) +}) + +// test('team edit', function (t) { +// server.expect('PUT', '/-/org/myorg/team', function (req, res) { +// t.equal(req.method, 'PUT') +// res.statusCode = 201 +// res.json({}) +// }) +// client.team('create', URI, PARAMS, function (err, data) { +// t.ifError(err, 'no errors') +// t.end() +// }) +// }) + +test('team command base validation', function (t) { + t.throws(function () { + client.team(undefined, URI, PARAMS, nop) + }, 'command is required') + commands.forEach(function (cmd) { + t.throws(function () { + client.team(cmd, undefined, PARAMS, nop) + }, 'registry URI is required') + t.throws(function () { + client.team(cmd, URI, undefined, nop) + }, 'params is required') + t.throws(function () { + client.team(cmd, URI, {scope: 'o', team: 't'}, nop) + }, 'auth is required') + t.throws(function () { + client.team(cmd, URI, {auth: {token: 'f'}, team: 't'}, nop) + }, 'scope is required') + t.throws(function () { + client.team(cmd, URI, PARAMS, {}) + }, 'callback must be a function') + if (cmd !== 'ls') { + t.throws(function () { + client.team( + cmd, URI, {auth: {token: 'f'}, scope: 'o'}, nop) + }, 'team name is required') + } + if (cmd === 'add' || cmd === 'rm') { + t.throws(function () { + client.team( + cmd, URI, PARAMS, nop) + }, 'user is required') + } + }) + t.end() +}) + +test('cleanup', function (t) { + server.close() + t.end() +}) + +function onJsonReq (req, cb) { + var buffer = '' + req.setEncoding('utf8') + req.on('data', function (data) { buffer += data }) + req.on('end', function () { cb(buffer ? JSON.parse(buffer) : undefined) }) +} diff --git a/deps/npm/node_modules/npm-registry-client/test/unpublish-scoped.js b/deps/npm/node_modules/npm-registry-client/test/unpublish-scoped.js index d3222de4706b..26d4ac7b1685 100644 --- a/deps/npm/node_modules/npm-registry-client/test/unpublish-scoped.js +++ b/deps/npm/node_modules/npm-registry-client/test/unpublish-scoped.js @@ -1,4 +1,4 @@ -var tap = require('tap') +var test = require('tap').test var server = require('./lib/server.js') var common = require('./lib/common.js') @@ -19,7 +19,7 @@ var PARAMS = { auth: AUTH } -tap.test('unpublish a package', function (t) { +test('unpublish a package', function (t) { server.expect('GET', '/@npm%2fnpm-registry-client?write=true', function (req, res) { t.equal(req.method, 'GET') @@ -62,6 +62,7 @@ tap.test('unpublish a package', function (t) { client.unpublish(URI, PARAMS, function (er) { t.ifError(er, 'no errors') + server.close() t.end() }) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/unpublish.js b/deps/npm/node_modules/npm-registry-client/test/unpublish.js index afb16b78773a..8a114c899be2 100644 --- a/deps/npm/node_modules/npm-registry-client/test/unpublish.js +++ b/deps/npm/node_modules/npm-registry-client/test/unpublish.js @@ -98,6 +98,7 @@ test('unpublish a package', function (t) { client.unpublish(URI, PARAMS, function (error) { t.ifError(error, 'no errors') + server.close() t.end() }) }) diff --git a/deps/npm/node_modules/npm-registry-client/test/whoami.js b/deps/npm/node_modules/npm-registry-client/test/whoami.js index 764fc0c30469..80979ee97802 100644 --- a/deps/npm/node_modules/npm-registry-client/test/whoami.js +++ b/deps/npm/node_modules/npm-registry-client/test/whoami.js @@ -64,6 +64,7 @@ test('whoami', function (t) { t.ifError(error, 'no errors') t.equal(wombat, WHOIAM, 'im a wombat') + server.close() t.end() }) }) diff --git a/deps/npm/node_modules/npmlog/.npmrc b/deps/npm/node_modules/npmlog/.npmrc deleted file mode 100644 index ca0bc48dd552..000000000000 --- a/deps/npm/node_modules/npmlog/.npmrc +++ /dev/null @@ -1,2 +0,0 @@ -save-prefix = ~ -proprietary-attribs = false diff --git a/deps/npm/node_modules/read-installed/node_modules/debuglog/package.json b/deps/npm/node_modules/read-installed/node_modules/debuglog/package.json index b622fe92286a..39fac076703c 100644 --- a/deps/npm/node_modules/read-installed/node_modules/debuglog/package.json +++ b/deps/npm/node_modules/read-installed/node_modules/debuglog/package.json @@ -6,7 +6,7 @@ "main": "debuglog.js", "repository": { "type": "git", - "url": "git+https://github.com/sam-github/node-debuglog.git" + "url": "https://github.com/sam-github/node-debuglog.git" }, "author": { "name": "Sam Roberts", @@ -41,6 +41,5 @@ ], "directories": {}, "_shasum": "aa24ffb9ac3df9a2351837cfb2d279360cd78492", - "_resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", - "readme": "ERROR: No README data found!" + "_resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz" } diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/.npmignore b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/.npmignore deleted file mode 100644 index c2658d7d1b31..000000000000 --- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/LICENSE b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/LICENSE deleted file mode 100644 index 19129e315fe5..000000000000 --- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -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/read-installed/node_modules/graceful-fs/README.md b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/README.md deleted file mode 100644 index 13a2e86050a3..000000000000 --- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# graceful-fs - -graceful-fs functions as a drop-in replacement for the fs module, -making various improvements. - -The improvements are meant to normalize behavior across different -platforms and environments, and to make filesystem access more -resilient to errors. - -## Improvements over [fs module](http://api.nodejs.org/fs.html) - -graceful-fs: - -* Queues up `open` and `readdir` calls, and retries them once - something closes if there is an EMFILE error from too many file - descriptors. -* fixes `lchmod` for Node versions prior to 0.6.2. -* implements `fs.lutimes` if possible. Otherwise it becomes a noop. -* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or - `lchown` if the user isn't root. -* makes `lchmod` and `lchown` become noops, if not available. -* retries reading a file if `read` results in EAGAIN error. - -On Windows, it retries renaming a file for up to one second if `EACCESS` -or `EPERM` error occurs, likely because antivirus software has locked -the directory. - -## USAGE - -```javascript -// use just like fs -var fs = require('graceful-fs') - -// now go and do stuff with it... -fs.readFileSync('some-file-or-whatever') -``` diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/fs.js b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/fs.js deleted file mode 100644 index 64ad980232ec..000000000000 --- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/fs.js +++ /dev/null @@ -1,11 +0,0 @@ -// eeeeeevvvvviiiiiiillllll -// more evil than monkey-patching the native builtin? -// Not sure. - -var mod = require("module") -var pre = '(function (exports, require, module, __filename, __dirname) { ' -var post = '});' -var src = pre + process.binding('natives').fs + post -var vm = require('vm') -var fn = vm.runInThisContext(src) -fn(exports, require, module, __filename, __dirname) diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/graceful-fs.js b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/graceful-fs.js deleted file mode 100644 index fb206b83854a..000000000000 --- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/graceful-fs.js +++ /dev/null @@ -1,158 +0,0 @@ -// Monkey-patching the fs module. -// It's ugly, but there is simply no other way to do this. -var fs = module.exports = require('./fs.js') - -var assert = require('assert') - -// fix up some busted stuff, mostly on windows and old nodes -require('./polyfills.js') - -var util = require('util') - -function noop () {} - -var debug = noop -if (util.debuglog) - debug = util.debuglog('gfs') -else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) - debug = function() { - var m = util.format.apply(util, arguments) - m = 'GFS: ' + m.split(/\n/).join('\nGFS: ') - console.error(m) - } - -if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) { - process.on('exit', function() { - debug('fds', fds) - debug(queue) - assert.equal(queue.length, 0) - }) -} - - -var originalOpen = fs.open -fs.open = open - -function open(path, flags, mode, cb) { - if (typeof mode === "function") cb = mode, mode = null - if (typeof cb !== "function") cb = noop - new OpenReq(path, flags, mode, cb) -} - -function OpenReq(path, flags, mode, cb) { - this.path = path - this.flags = flags - this.mode = mode - this.cb = cb - Req.call(this) -} - -util.inherits(OpenReq, Req) - -OpenReq.prototype.process = function() { - originalOpen.call(fs, this.path, this.flags, this.mode, this.done) -} - -var fds = {} -OpenReq.prototype.done = function(er, fd) { - debug('open done', er, fd) - if (fd) - fds['fd' + fd] = this.path - Req.prototype.done.call(this, er, fd) -} - - -var originalReaddir = fs.readdir -fs.readdir = readdir - -function readdir(path, cb) { - if (typeof cb !== "function") cb = noop - new ReaddirReq(path, cb) -} - -function ReaddirReq(path, cb) { - this.path = path - this.cb = cb - Req.call(this) -} - -util.inherits(ReaddirReq, Req) - -ReaddirReq.prototype.process = function() { - originalReaddir.call(fs, this.path, this.done) -} - -ReaddirReq.prototype.done = function(er, files) { - if (files && files.sort) - files = files.sort() - Req.prototype.done.call(this, er, files) - onclose() -} - - -var originalClose = fs.close -fs.close = close - -function close (fd, cb) { - debug('close', fd) - if (typeof cb !== "function") cb = noop - delete fds['fd' + fd] - originalClose.call(fs, fd, function(er) { - onclose() - cb(er) - }) -} - - -var originalCloseSync = fs.closeSync -fs.closeSync = closeSync - -function closeSync (fd) { - try { - return originalCloseSync(fd) - } finally { - onclose() - } -} - - -// Req class -function Req () { - // start processing - this.done = this.done.bind(this) - this.failures = 0 - this.process() -} - -Req.prototype.done = function (er, result) { - var tryAgain = false - if (er) { - var code = er.code - var tryAgain = code === "EMFILE" || code === "ENFILE" - if (process.platform === "win32") - tryAgain = tryAgain || code === "OK" - } - - if (tryAgain) { - this.failures ++ - enqueue(this) - } else { - var cb = this.cb - cb(er, result) - } -} - -var queue = [] - -function enqueue(req) { - queue.push(req) - debug('enqueue %d %s', queue.length, req.constructor.name, req) -} - -function onclose() { - var req = queue.shift() - if (req) { - debug('process', req.constructor.name, req) - req.process() - } -} diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/package.json b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/package.json deleted file mode 100644 index 40b65a3c2e04..000000000000 --- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/package.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "name": "graceful-fs", - "description": "A drop-in replacement for fs, making various improvements.", - "version": "3.0.8", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-graceful-fs.git" - }, - "main": "graceful-fs.js", - "engines": { - "node": ">=0.4.0" - }, - "directories": { - "test": "test" - }, - "scripts": { - "test": "tap test/*.js" - }, - "keywords": [ - "fs", - "module", - "reading", - "retry", - "retries", - "queue", - "error", - "errors", - "handling", - "EMFILE", - "EAGAIN", - "EINVAL", - "EPERM", - "EACCESS" - ], - "license": "ISC", - "devDependencies": { - "mkdirp": "^0.5.0", - "rimraf": "^2.2.8", - "tap": "^1.2.0" - }, - "gitHead": "45c57aa5e323c35a985a525de6f0c9a6ef59e1f8", - "bugs": { - "url": "https://github.com/isaacs/node-graceful-fs/issues" - }, - "homepage": "https://github.com/isaacs/node-graceful-fs#readme", - "_id": "graceful-fs@3.0.8", - "_shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22", - "_from": "graceful-fs@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0", - "_npmVersion": "2.10.1", - "_nodeVersion": "2.0.1", - "_npmUser": { - "name": "isaacs", - "email": "isaacs@npmjs.com" - }, - "dist": { - "shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22", - "tarball": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/polyfills.js b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/polyfills.js deleted file mode 100644 index 8ac5006e2da2..000000000000 --- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/polyfills.js +++ /dev/null @@ -1,254 +0,0 @@ -var fs = require('./fs.js') -var constants = require('constants') - -var origCwd = process.cwd -var cwd = null -process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process) - return cwd -} -var chdir = process.chdir -process.chdir = function(d) { - cwd = null - chdir.call(process, d) -} - -// (re-)implement some things that are known busted or missing. - -// lchmod, broken prior to 0.6.2 -// back-port the fix here. -if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - fs.lchmod = function (path, mode, callback) { - callback = callback || noop - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - callback(err || err2) - }) - }) - }) - } - - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var err, err2 - try { - var ret = fs.fchmodSync(fd, mode) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } -} - - -// lutimes implementation, or no-op -if (!fs.lutimes) { - if (constants.hasOwnProperty("O_SYMLINK")) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - cb = cb || noop - if (er) return cb(er) - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - return cb(er || er2) - }) - }) - }) - } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - , err - , err2 - , ret - - try { - var ret = fs.futimesSync(fd, at, mt) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } - - } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) { - // maybe utimensat will be bound soonish? - fs.lutimes = function (path, at, mt, cb) { - fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb) - } - - fs.lutimesSync = function (path, at, mt) { - return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW) - } - - } else { - fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) } - fs.lutimesSync = function () {} - } -} - - -// https://github.com/isaacs/node-graceful-fs/issues/4 -// Chown should not fail on einval or eperm if non-root. -// It should not fail on enosys ever, as this just indicates -// that a fs doesn't support the intended operation. - -fs.chown = chownFix(fs.chown) -fs.fchown = chownFix(fs.fchown) -fs.lchown = chownFix(fs.lchown) - -fs.chmod = chownFix(fs.chmod) -fs.fchmod = chownFix(fs.fchmod) -fs.lchmod = chownFix(fs.lchmod) - -fs.chownSync = chownFixSync(fs.chownSync) -fs.fchownSync = chownFixSync(fs.fchownSync) -fs.lchownSync = chownFixSync(fs.lchownSync) - -fs.chmodSync = chownFix(fs.chmodSync) -fs.fchmodSync = chownFix(fs.fchmodSync) -fs.lchmodSync = chownFix(fs.lchmodSync) - -function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er, res) { - if (chownErOk(er)) er = null - cb(er, res) - }) - } -} - -function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } -} - -// ENOSYS means that the fs doesn't support the op. Just ignore -// that, because it doesn't matter. -// -// if there's no getuid, or if getuid() is something other -// than 0, and the error is EINVAL or EPERM, then just ignore -// it. -// -// This specific case is a silent failure in cp, install, tar, -// and most other unix tools that manage permissions. -// -// When running as root, or if other types of errors are -// encountered, then it's strict. -function chownErOk (er) { - if (!er) - return true - - if (er.code === "ENOSYS") - return true - - var nonroot = !process.getuid || process.getuid() !== 0 - if (nonroot) { - if (er.code === "EINVAL" || er.code === "EPERM") - return true - } - - return false -} - - -// if lchmod/lchown do not exist, then make them no-ops -if (!fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - process.nextTick(cb) - } - fs.lchmodSync = function () {} -} -if (!fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - process.nextTick(cb) - } - fs.lchownSync = function () {} -} - - - -// on Windows, A/V software can lock the directory, causing this -// to fail with an EACCES or EPERM if the directory contains newly -// created files. Try again on failure, for up to 1 second. -if (process.platform === "win32") { - var rename_ = fs.rename - fs.rename = function rename (from, to, cb) { - var start = Date.now() - rename_(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM") - && Date.now() - start < 1000) { - return rename_(from, to, CB) - } - if(cb) cb(er) - }) - } -} - - -// if read() returns EAGAIN, then just try it again. -var read = fs.read -fs.read = function (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) - } - } - return read.call(fs, fd, buffer, offset, length, position, callback) -} - -var readSync = fs.readSync -fs.readSync = function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } -} diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/max-open.js b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/max-open.js deleted file mode 100644 index a6b9ba43d3a6..000000000000 --- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/max-open.js +++ /dev/null @@ -1,69 +0,0 @@ -var test = require('tap').test -var fs = require('../') - -test('open lots of stuff', function (t) { - // Get around EBADF from libuv by making sure that stderr is opened - // Otherwise Darwin will refuse to give us a FD for stderr! - process.stderr.write('') - - // How many parallel open()'s to do - var n = 1024 - var opens = 0 - var fds = [] - var going = true - var closing = false - var doneCalled = 0 - - for (var i = 0; i < n; i++) { - go() - } - - function go() { - opens++ - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fds.push(fd) - if (going) go() - }) - } - - // should hit ulimit pretty fast - setTimeout(function () { - going = false - t.equal(opens - fds.length, n) - done() - }, 100) - - - function done () { - if (closing) return - doneCalled++ - - if (fds.length === 0) { - console.error('done called %d times', doneCalled) - // First because of the timeout - // Then to close the fd's opened afterwards - // Then this time, to complete. - // Might take multiple passes, depending on CPU speed - // and ulimit, but at least 3 in every case. - t.ok(doneCalled >= 2) - return t.end() - } - - closing = true - setTimeout(function () { - // console.error('do closing again') - closing = false - done() - }, 100) - - // console.error('closing time') - var closes = fds.slice(0) - fds.length = 0 - closes.forEach(function (fd) { - fs.close(fd, function (er) { - if (er) throw er - }) - }) - } -}) diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/open.js b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/open.js deleted file mode 100644 index 85732f236b00..000000000000 --- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/open.js +++ /dev/null @@ -1,39 +0,0 @@ -var test = require('tap').test -var fs = require('../graceful-fs.js') - -test('graceful fs is monkeypatched fs', function (t) { - t.equal(fs, require('../fs.js')) - t.end() -}) - -test('open an existing file works', function (t) { - var fd = fs.openSync(__filename, 'r') - fs.closeSync(fd) - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fs.close(fd, function (er) { - if (er) throw er - t.pass('works') - t.end() - }) - }) -}) - -test('open a non-existing file throws', function (t) { - var er - try { - var fd = fs.openSync('this file does not exist', 'r') - } catch (x) { - er = x - } - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - - fs.open('neither does this file', 'r', function (er, fd) { - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - t.end() - }) -}) diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/readdir-sort.js b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/readdir-sort.js deleted file mode 100644 index cb63a6846ed7..000000000000 --- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/readdir-sort.js +++ /dev/null @@ -1,20 +0,0 @@ -var test = require("tap").test -var fs = require("../fs.js") - -var readdir = fs.readdir -fs.readdir = function(path, cb) { - process.nextTick(function() { - cb(null, ["b", "z", "a"]) - }) -} - -var g = require("../") - -test("readdir reorder", function (t) { - g.readdir("whatevers", function (er, files) { - if (er) - throw er - t.same(files, [ "a", "b", "z" ]) - t.end() - }) -}) diff --git a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/write-then-read.js b/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/write-then-read.js deleted file mode 100644 index 21e4c26bf6c9..000000000000 --- a/deps/npm/node_modules/read-installed/node_modules/graceful-fs/test/write-then-read.js +++ /dev/null @@ -1,47 +0,0 @@ -var fs = require('../'); -var rimraf = require('rimraf'); -var mkdirp = require('mkdirp'); -var test = require('tap').test; -var p = require('path').resolve(__dirname, 'files'); - -process.chdir(__dirname) - -// Make sure to reserve the stderr fd -process.stderr.write(''); - -var num = 4097; -var paths = new Array(num); - -test('make files', function (t) { - rimraf.sync(p); - mkdirp.sync(p); - - for (var i = 0; i < num; ++i) { - paths[i] = 'files/file-' + i; - fs.writeFileSync(paths[i], 'content'); - } - - t.end(); -}) - -test('read files', function (t) { - // now read them - var done = 0; - for (var i = 0; i < num; ++i) { - fs.readFile(paths[i], function(err, data) { - if (err) - throw err; - - ++done; - if (done === num) { - t.pass('success'); - t.end() - } - }); - } -}); - -test('cleanup', function (t) { - rimraf.sync(p); - t.end(); -}); diff --git a/deps/npm/node_modules/read-installed/node_modules/readdir-scoped-modules/.travis.yml b/deps/npm/node_modules/read-installed/node_modules/readdir-scoped-modules/.travis.yml new file mode 100644 index 000000000000..e1bcee1acd90 --- /dev/null +++ b/deps/npm/node_modules/read-installed/node_modules/readdir-scoped-modules/.travis.yml @@ -0,0 +1,7 @@ +language: node_js +before_script: npm install -g npm@latest +node_js: + - '0.8' + - '0.10' + - '0.12' + - 'iojs' diff --git a/deps/npm/node_modules/read-installed/node_modules/readdir-scoped-modules/package.json b/deps/npm/node_modules/read-installed/node_modules/readdir-scoped-modules/package.json index c3a39d401f6b..d9c7b715554e 100644 --- a/deps/npm/node_modules/read-installed/node_modules/readdir-scoped-modules/package.json +++ b/deps/npm/node_modules/read-installed/node_modules/readdir-scoped-modules/package.json @@ -1,6 +1,6 @@ { "name": "readdir-scoped-modules", - "version": "1.0.1", + "version": "1.0.2", "description": "Like `fs.readdir` but handling `@org/module` dirs as if they were a single entry.", "main": "readdir.js", "directories": { @@ -9,11 +9,11 @@ "dependencies": { "debuglog": "^1.0.1", "dezalgo": "^1.0.0", - "graceful-fs": "^3.0.4", + "graceful-fs": "^4.1.2", "once": "^1.3.0" }, "devDependencies": { - "tap": "0.4" + "tap": "^1.2.0" }, "scripts": { "test": "tap test/*.js" @@ -32,30 +32,10 @@ "url": "https://github.com/npm/readdir-scoped-modules/issues" }, "homepage": "https://github.com/npm/readdir-scoped-modules", - "gitHead": "451d38946c5b6b6c0db33a890f33536a11ed79f7", - "_id": "readdir-scoped-modules@1.0.1", - "_shasum": "5c2a77f3e08250a8fddf53fa58cdc17900b808b9", - "_from": "readdir-scoped-modules@>=1.0.0 <2.0.0", - "_npmVersion": "2.1.9", - "_nodeVersion": "0.10.33", - "_npmUser": { - "name": "othiym23", - "email": "ogd@aoaioxxysz.net" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - }, - { - "name": "othiym23", - "email": "ogd@aoaioxxysz.net" - } - ], - "dist": { - "shasum": "5c2a77f3e08250a8fddf53fa58cdc17900b808b9", - "tarball": "http://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.0.1.tgz" - }, - "_resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.0.1.tgz", - "readme": "ERROR: No README data found!" + "readme": "# readdir-scoped-modules\n\nLike `fs.readdir` but handling `@org/module` dirs as if they were\na single entry.\n\nUsed by npm.\n\n## USAGE\n\n```javascript\nvar readdir = require('readdir-scoped-modules')\n\nreaddir('node_modules', function (er, entries) {\n // entries will be something like\n // ['a', '@org/foo', '@org/bar']\n})\n```\n", + "readmeFilename": "README.md", + "gitHead": "d41d5de877cb4e9e3f14b92913132680af73d1b4", + "_id": "readdir-scoped-modules@1.0.2", + "_shasum": "9fafa37d286be5d92cbaebdee030dc9b5f406747", + "_from": "readdir-scoped-modules@>=1.0.0 <2.0.0" } diff --git a/deps/npm/node_modules/read-installed/package.json b/deps/npm/node_modules/read-installed/package.json index a7e0932169f5..b1b3c5fa5a9f 100644 --- a/deps/npm/node_modules/read-installed/package.json +++ b/deps/npm/node_modules/read-installed/package.json @@ -1,7 +1,7 @@ { "name": "read-installed", "description": "Read all the installed packages in a folder, and return a tree structure with all the data.", - "version": "4.0.2", + "version": "4.0.3", "repository": { "type": "git", "url": "git://github.com/isaacs/read-installed.git" @@ -17,10 +17,10 @@ "semver": "2 || 3 || 4 || 5", "slide": "~1.1.3", "util-extend": "^1.0.1", - "graceful-fs": "2 || 3" + "graceful-fs": "^4.1.2" }, "optionalDependencies": { - "graceful-fs": "2 || 3" + "graceful-fs": "^4.1.2" }, "author": { "name": "Isaac Z. Schlueter", @@ -35,12 +35,12 @@ }, "readme": "# read-installed\n\nRead all the installed packages in a folder, and return a tree\nstructure with all the data.\n\nnpm uses this.\n\n## 2.0.0\n\nBreaking changes in `2.0.0`:\n\nThe second argument is now an `Object` that contains the following keys:\n\n * `depth` optional, defaults to Infinity\n * `log` optional log Function\n * `dev` optional, default false, set to true to include devDependencies\n\n## Usage\n\n```javascript\nvar readInstalled = require(\"read-installed\")\n// optional options\nvar options = { dev: false, log: fn, depth: 2 }\nreadInstalled(folder, options, function (er, data) {\n ...\n})\n```\n", "readmeFilename": "README.md", - "gitHead": "e683eb7f2bb8e9b7b40c1e26192b385b92a3192f", + "gitHead": "da02df6acdb5f5ee31d8c637ef31fb50efb455c1", "bugs": { "url": "https://github.com/isaacs/read-installed/issues" }, "homepage": "https://github.com/isaacs/read-installed#readme", - "_id": "read-installed@4.0.2", - "_shasum": "4e8b18be974ccb75654b28ddcc9aac686404690e", - "_from": "read-installed@>=4.0.2 <4.1.0" + "_id": "read-installed@4.0.3", + "_shasum": "ff9b8b67f187d1e4c29b9feb31f6b223acd19067", + "_from": "read-installed@4.0.3" } diff --git a/deps/npm/node_modules/read-package-json/.travis.yml b/deps/npm/node_modules/read-package-json/.travis.yml new file mode 100644 index 000000000000..f84676a909a7 --- /dev/null +++ b/deps/npm/node_modules/read-package-json/.travis.yml @@ -0,0 +1,9 @@ +language: node_js +node_js: + - '0.8' + - '0.10' + - '0.12' + - 'iojs' +sudo: false +before_install: + - npm install -g npm@latest diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/.npmignore b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/.npmignore deleted file mode 100644 index c2658d7d1b31..000000000000 --- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/LICENSE b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/LICENSE deleted file mode 100644 index 19129e315fe5..000000000000 --- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -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/read-package-json/node_modules/graceful-fs/README.md b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/README.md deleted file mode 100644 index 13a2e86050a3..000000000000 --- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# graceful-fs - -graceful-fs functions as a drop-in replacement for the fs module, -making various improvements. - -The improvements are meant to normalize behavior across different -platforms and environments, and to make filesystem access more -resilient to errors. - -## Improvements over [fs module](http://api.nodejs.org/fs.html) - -graceful-fs: - -* Queues up `open` and `readdir` calls, and retries them once - something closes if there is an EMFILE error from too many file - descriptors. -* fixes `lchmod` for Node versions prior to 0.6.2. -* implements `fs.lutimes` if possible. Otherwise it becomes a noop. -* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or - `lchown` if the user isn't root. -* makes `lchmod` and `lchown` become noops, if not available. -* retries reading a file if `read` results in EAGAIN error. - -On Windows, it retries renaming a file for up to one second if `EACCESS` -or `EPERM` error occurs, likely because antivirus software has locked -the directory. - -## USAGE - -```javascript -// use just like fs -var fs = require('graceful-fs') - -// now go and do stuff with it... -fs.readFileSync('some-file-or-whatever') -``` diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/fs.js b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/fs.js deleted file mode 100644 index 64ad980232ec..000000000000 --- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/fs.js +++ /dev/null @@ -1,11 +0,0 @@ -// eeeeeevvvvviiiiiiillllll -// more evil than monkey-patching the native builtin? -// Not sure. - -var mod = require("module") -var pre = '(function (exports, require, module, __filename, __dirname) { ' -var post = '});' -var src = pre + process.binding('natives').fs + post -var vm = require('vm') -var fn = vm.runInThisContext(src) -fn(exports, require, module, __filename, __dirname) diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/graceful-fs.js b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/graceful-fs.js deleted file mode 100644 index fb206b83854a..000000000000 --- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/graceful-fs.js +++ /dev/null @@ -1,158 +0,0 @@ -// Monkey-patching the fs module. -// It's ugly, but there is simply no other way to do this. -var fs = module.exports = require('./fs.js') - -var assert = require('assert') - -// fix up some busted stuff, mostly on windows and old nodes -require('./polyfills.js') - -var util = require('util') - -function noop () {} - -var debug = noop -if (util.debuglog) - debug = util.debuglog('gfs') -else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) - debug = function() { - var m = util.format.apply(util, arguments) - m = 'GFS: ' + m.split(/\n/).join('\nGFS: ') - console.error(m) - } - -if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) { - process.on('exit', function() { - debug('fds', fds) - debug(queue) - assert.equal(queue.length, 0) - }) -} - - -var originalOpen = fs.open -fs.open = open - -function open(path, flags, mode, cb) { - if (typeof mode === "function") cb = mode, mode = null - if (typeof cb !== "function") cb = noop - new OpenReq(path, flags, mode, cb) -} - -function OpenReq(path, flags, mode, cb) { - this.path = path - this.flags = flags - this.mode = mode - this.cb = cb - Req.call(this) -} - -util.inherits(OpenReq, Req) - -OpenReq.prototype.process = function() { - originalOpen.call(fs, this.path, this.flags, this.mode, this.done) -} - -var fds = {} -OpenReq.prototype.done = function(er, fd) { - debug('open done', er, fd) - if (fd) - fds['fd' + fd] = this.path - Req.prototype.done.call(this, er, fd) -} - - -var originalReaddir = fs.readdir -fs.readdir = readdir - -function readdir(path, cb) { - if (typeof cb !== "function") cb = noop - new ReaddirReq(path, cb) -} - -function ReaddirReq(path, cb) { - this.path = path - this.cb = cb - Req.call(this) -} - -util.inherits(ReaddirReq, Req) - -ReaddirReq.prototype.process = function() { - originalReaddir.call(fs, this.path, this.done) -} - -ReaddirReq.prototype.done = function(er, files) { - if (files && files.sort) - files = files.sort() - Req.prototype.done.call(this, er, files) - onclose() -} - - -var originalClose = fs.close -fs.close = close - -function close (fd, cb) { - debug('close', fd) - if (typeof cb !== "function") cb = noop - delete fds['fd' + fd] - originalClose.call(fs, fd, function(er) { - onclose() - cb(er) - }) -} - - -var originalCloseSync = fs.closeSync -fs.closeSync = closeSync - -function closeSync (fd) { - try { - return originalCloseSync(fd) - } finally { - onclose() - } -} - - -// Req class -function Req () { - // start processing - this.done = this.done.bind(this) - this.failures = 0 - this.process() -} - -Req.prototype.done = function (er, result) { - var tryAgain = false - if (er) { - var code = er.code - var tryAgain = code === "EMFILE" || code === "ENFILE" - if (process.platform === "win32") - tryAgain = tryAgain || code === "OK" - } - - if (tryAgain) { - this.failures ++ - enqueue(this) - } else { - var cb = this.cb - cb(er, result) - } -} - -var queue = [] - -function enqueue(req) { - queue.push(req) - debug('enqueue %d %s', queue.length, req.constructor.name, req) -} - -function onclose() { - var req = queue.shift() - if (req) { - debug('process', req.constructor.name, req) - req.process() - } -} diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/package.json b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/package.json deleted file mode 100644 index 349c3d8247e9..000000000000 --- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/package.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "_args": [ - [ - "graceful-fs@2 || 3", - "/Users/isaacs/dev/npm/npm/node_modules/read-package-json" - ] - ], - "_from": "graceful-fs@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0", - "_id": "graceful-fs@3.0.8", - "_inCache": true, - "_location": "/read-package-json/graceful-fs", - "_nodeVersion": "2.0.1", - "_npmUser": { - "email": "isaacs@npmjs.com", - "name": "isaacs" - }, - "_npmVersion": "2.10.1", - "_phantomChildren": {}, - "_requested": { - "name": "graceful-fs", - "raw": "graceful-fs@2 || 3", - "rawSpec": "2 || 3", - "scope": null, - "spec": ">=2.0.0 <3.0.0||>=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/read-package-json" - ], - "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", - "_shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22", - "_shrinkwrap": null, - "_spec": "graceful-fs@2 || 3", - "_where": "/Users/isaacs/dev/npm/npm/node_modules/read-package-json", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me" - }, - "bugs": { - "url": "https://github.com/isaacs/node-graceful-fs/issues" - }, - "dependencies": {}, - "description": "A drop-in replacement for fs, making various improvements.", - "devDependencies": { - "mkdirp": "^0.5.0", - "rimraf": "^2.2.8", - "tap": "^1.2.0" - }, - "directories": { - "test": "test" - }, - "dist": { - "shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22", - "tarball": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" - }, - "engines": { - "node": ">=0.4.0" - }, - "gitHead": "45c57aa5e323c35a985a525de6f0c9a6ef59e1f8", - "homepage": "https://github.com/isaacs/node-graceful-fs#readme", - "keywords": [ - "EACCESS", - "EAGAIN", - "EINVAL", - "EMFILE", - "EPERM", - "error", - "errors", - "fs", - "handling", - "module", - "queue", - "reading", - "retries", - "retry" - ], - "license": "ISC", - "main": "graceful-fs.js", - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "name": "graceful-fs", - "optionalDependencies": {}, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-graceful-fs.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "version": "3.0.8" -} diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/polyfills.js b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/polyfills.js deleted file mode 100644 index 8ac5006e2da2..000000000000 --- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/polyfills.js +++ /dev/null @@ -1,254 +0,0 @@ -var fs = require('./fs.js') -var constants = require('constants') - -var origCwd = process.cwd -var cwd = null -process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process) - return cwd -} -var chdir = process.chdir -process.chdir = function(d) { - cwd = null - chdir.call(process, d) -} - -// (re-)implement some things that are known busted or missing. - -// lchmod, broken prior to 0.6.2 -// back-port the fix here. -if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - fs.lchmod = function (path, mode, callback) { - callback = callback || noop - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - callback(err || err2) - }) - }) - }) - } - - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var err, err2 - try { - var ret = fs.fchmodSync(fd, mode) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } -} - - -// lutimes implementation, or no-op -if (!fs.lutimes) { - if (constants.hasOwnProperty("O_SYMLINK")) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - cb = cb || noop - if (er) return cb(er) - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - return cb(er || er2) - }) - }) - }) - } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - , err - , err2 - , ret - - try { - var ret = fs.futimesSync(fd, at, mt) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } - - } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) { - // maybe utimensat will be bound soonish? - fs.lutimes = function (path, at, mt, cb) { - fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb) - } - - fs.lutimesSync = function (path, at, mt) { - return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW) - } - - } else { - fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) } - fs.lutimesSync = function () {} - } -} - - -// https://github.com/isaacs/node-graceful-fs/issues/4 -// Chown should not fail on einval or eperm if non-root. -// It should not fail on enosys ever, as this just indicates -// that a fs doesn't support the intended operation. - -fs.chown = chownFix(fs.chown) -fs.fchown = chownFix(fs.fchown) -fs.lchown = chownFix(fs.lchown) - -fs.chmod = chownFix(fs.chmod) -fs.fchmod = chownFix(fs.fchmod) -fs.lchmod = chownFix(fs.lchmod) - -fs.chownSync = chownFixSync(fs.chownSync) -fs.fchownSync = chownFixSync(fs.fchownSync) -fs.lchownSync = chownFixSync(fs.lchownSync) - -fs.chmodSync = chownFix(fs.chmodSync) -fs.fchmodSync = chownFix(fs.fchmodSync) -fs.lchmodSync = chownFix(fs.lchmodSync) - -function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er, res) { - if (chownErOk(er)) er = null - cb(er, res) - }) - } -} - -function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } -} - -// ENOSYS means that the fs doesn't support the op. Just ignore -// that, because it doesn't matter. -// -// if there's no getuid, or if getuid() is something other -// than 0, and the error is EINVAL or EPERM, then just ignore -// it. -// -// This specific case is a silent failure in cp, install, tar, -// and most other unix tools that manage permissions. -// -// When running as root, or if other types of errors are -// encountered, then it's strict. -function chownErOk (er) { - if (!er) - return true - - if (er.code === "ENOSYS") - return true - - var nonroot = !process.getuid || process.getuid() !== 0 - if (nonroot) { - if (er.code === "EINVAL" || er.code === "EPERM") - return true - } - - return false -} - - -// if lchmod/lchown do not exist, then make them no-ops -if (!fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - process.nextTick(cb) - } - fs.lchmodSync = function () {} -} -if (!fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - process.nextTick(cb) - } - fs.lchownSync = function () {} -} - - - -// on Windows, A/V software can lock the directory, causing this -// to fail with an EACCES or EPERM if the directory contains newly -// created files. Try again on failure, for up to 1 second. -if (process.platform === "win32") { - var rename_ = fs.rename - fs.rename = function rename (from, to, cb) { - var start = Date.now() - rename_(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM") - && Date.now() - start < 1000) { - return rename_(from, to, CB) - } - if(cb) cb(er) - }) - } -} - - -// if read() returns EAGAIN, then just try it again. -var read = fs.read -fs.read = function (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) - } - } - return read.call(fs, fd, buffer, offset, length, position, callback) -} - -var readSync = fs.readSync -fs.readSync = function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } -} diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/max-open.js b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/max-open.js deleted file mode 100644 index a6b9ba43d3a6..000000000000 --- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/max-open.js +++ /dev/null @@ -1,69 +0,0 @@ -var test = require('tap').test -var fs = require('../') - -test('open lots of stuff', function (t) { - // Get around EBADF from libuv by making sure that stderr is opened - // Otherwise Darwin will refuse to give us a FD for stderr! - process.stderr.write('') - - // How many parallel open()'s to do - var n = 1024 - var opens = 0 - var fds = [] - var going = true - var closing = false - var doneCalled = 0 - - for (var i = 0; i < n; i++) { - go() - } - - function go() { - opens++ - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fds.push(fd) - if (going) go() - }) - } - - // should hit ulimit pretty fast - setTimeout(function () { - going = false - t.equal(opens - fds.length, n) - done() - }, 100) - - - function done () { - if (closing) return - doneCalled++ - - if (fds.length === 0) { - console.error('done called %d times', doneCalled) - // First because of the timeout - // Then to close the fd's opened afterwards - // Then this time, to complete. - // Might take multiple passes, depending on CPU speed - // and ulimit, but at least 3 in every case. - t.ok(doneCalled >= 2) - return t.end() - } - - closing = true - setTimeout(function () { - // console.error('do closing again') - closing = false - done() - }, 100) - - // console.error('closing time') - var closes = fds.slice(0) - fds.length = 0 - closes.forEach(function (fd) { - fs.close(fd, function (er) { - if (er) throw er - }) - }) - } -}) diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/open.js b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/open.js deleted file mode 100644 index 85732f236b00..000000000000 --- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/open.js +++ /dev/null @@ -1,39 +0,0 @@ -var test = require('tap').test -var fs = require('../graceful-fs.js') - -test('graceful fs is monkeypatched fs', function (t) { - t.equal(fs, require('../fs.js')) - t.end() -}) - -test('open an existing file works', function (t) { - var fd = fs.openSync(__filename, 'r') - fs.closeSync(fd) - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fs.close(fd, function (er) { - if (er) throw er - t.pass('works') - t.end() - }) - }) -}) - -test('open a non-existing file throws', function (t) { - var er - try { - var fd = fs.openSync('this file does not exist', 'r') - } catch (x) { - er = x - } - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - - fs.open('neither does this file', 'r', function (er, fd) { - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - t.end() - }) -}) diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/readdir-sort.js b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/readdir-sort.js deleted file mode 100644 index cb63a6846ed7..000000000000 --- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/readdir-sort.js +++ /dev/null @@ -1,20 +0,0 @@ -var test = require("tap").test -var fs = require("../fs.js") - -var readdir = fs.readdir -fs.readdir = function(path, cb) { - process.nextTick(function() { - cb(null, ["b", "z", "a"]) - }) -} - -var g = require("../") - -test("readdir reorder", function (t) { - g.readdir("whatevers", function (er, files) { - if (er) - throw er - t.same(files, [ "a", "b", "z" ]) - t.end() - }) -}) diff --git a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/write-then-read.js b/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/write-then-read.js deleted file mode 100644 index 21e4c26bf6c9..000000000000 --- a/deps/npm/node_modules/read-package-json/node_modules/graceful-fs/test/write-then-read.js +++ /dev/null @@ -1,47 +0,0 @@ -var fs = require('../'); -var rimraf = require('rimraf'); -var mkdirp = require('mkdirp'); -var test = require('tap').test; -var p = require('path').resolve(__dirname, 'files'); - -process.chdir(__dirname) - -// Make sure to reserve the stderr fd -process.stderr.write(''); - -var num = 4097; -var paths = new Array(num); - -test('make files', function (t) { - rimraf.sync(p); - mkdirp.sync(p); - - for (var i = 0; i < num; ++i) { - paths[i] = 'files/file-' + i; - fs.writeFileSync(paths[i], 'content'); - } - - t.end(); -}) - -test('read files', function (t) { - // now read them - var done = 0; - for (var i = 0; i < num; ++i) { - fs.readFile(paths[i], function(err, data) { - if (err) - throw err; - - ++done; - if (done === num) { - t.pass('success'); - t.end() - } - }); - } -}); - -test('cleanup', function (t) { - rimraf.sync(p); - t.end(); -}); diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/package.json b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/package.json index bdcdae6b4617..ed34885e2688 100644 --- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/package.json +++ b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/node_modules/jju/package.json @@ -8,7 +8,7 @@ }, "repository": { "type": "git", - "url": "git://github.com/rlidwka/jju" + "url": "git://github.com/rlidwka/jju.git" }, "bugs": { "url": "https://github.com/rlidwka/jju/issues" diff --git a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/package.json b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/package.json index 9ebc2ff8a6ab..2a5a98fc32a0 100644 --- a/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/package.json +++ b/deps/npm/node_modules/read-package-json/node_modules/json-parse-helpfulerror/package.json @@ -9,7 +9,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/smikes/json-parse-helpfulerror.git" + "url": "git+https://github.com/smikes/json-parse-helpfulerror.git" }, "keywords": [ "json", diff --git a/deps/npm/node_modules/read-package-json/package.json b/deps/npm/node_modules/read-package-json/package.json index e83b1f089031..17113419c0ab 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": "2.0.0", + "version": "2.0.1", "author": { "name": "Isaac Z. Schlueter", "email": "i@izs.me", @@ -19,24 +19,24 @@ "glob": "^5.0.3", "json-parse-helpfulerror": "^1.0.2", "normalize-package-data": "^2.0.0", - "graceful-fs": "2 || 3" + "graceful-fs": "^4.1.2" }, "devDependencies": { "standard": "^3.3.1", - "tap": "^0.7.1" + "tap": "^1.2.0" }, "optionalDependencies": { - "graceful-fs": "2 || 3" + "graceful-fs": "^4.1.2" }, "license": "ISC", - "gitHead": "1a0476fef4ed8a70b48bfdc90070d897b8ad5469", "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": "d4f9f52c823750e7f2a7b9069bc56b9fd3a0ee96", "bugs": { "url": "https://github.com/isaacs/read-package-json/issues" }, - "homepage": "https://github.com/isaacs/read-package-json", - "_id": "read-package-json@2.0.0", - "_shasum": "ca7543298275028d27064b9118e6e501c9b3ae41", - "_from": "read-package-json@>=2.0.0 <2.1.0" + "homepage": "https://github.com/isaacs/read-package-json#readme", + "_id": "read-package-json@2.0.1", + "_shasum": "b822abfc2c4f0abfe7f52de6448be4560b6e7053", + "_from": "read-package-json@2.0.1" } diff --git a/deps/npm/node_modules/read-package-json/test/fixtures/badbin.json b/deps/npm/node_modules/read-package-json/test/fixtures/badbin.json index 06c57f43bcbe..3eb58d9c114b 100644 --- a/deps/npm/node_modules/read-package-json/test/fixtures/badbin.json +++ b/deps/npm/node_modules/read-package-json/test/fixtures/badbin.json @@ -7,5 +7,6 @@ }, "version": "0.0.1", "readme": "hello world", - "bin": "./bin/typo" + "bin": "./bin/typo", + "license": "ISC" } diff --git a/deps/npm/node_modules/read-package-json/test/fixtures/bin.json b/deps/npm/node_modules/read-package-json/test/fixtures/bin.json index d47a5270c6e7..70a26eec712d 100644 --- a/deps/npm/node_modules/read-package-json/test/fixtures/bin.json +++ b/deps/npm/node_modules/read-package-json/test/fixtures/bin.json @@ -7,5 +7,6 @@ }, "version": "0.0.1", "readme": "hello world", - "bin": "./bin/echo" + "bin": "./bin/echo", + "license": "ISC" } diff --git a/deps/npm/node_modules/read-package-json/test/fixtures/emptybin.json b/deps/npm/node_modules/read-package-json/test/fixtures/emptybin.json index 5e12ed4e9a75..4fbf40075d0a 100644 --- a/deps/npm/node_modules/read-package-json/test/fixtures/emptybin.json +++ b/deps/npm/node_modules/read-package-json/test/fixtures/emptybin.json @@ -7,5 +7,6 @@ }, "version": "0.0.1", "readme": "hello world", - "bin": {} + "bin": {}, + "license": "ISC" } diff --git a/deps/npm/node_modules/read/.npmignore b/deps/npm/node_modules/read/.npmignore deleted file mode 100644 index 0db216bfa4c1..000000000000 --- a/deps/npm/node_modules/read/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -npm-debug.log -node_modules diff --git a/deps/npm/node_modules/read/LICENCE b/deps/npm/node_modules/read/LICENCE deleted file mode 100644 index 74489e2e2658..000000000000 --- a/deps/npm/node_modules/read/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/read/example/example.js b/deps/npm/node_modules/read/example/example.js deleted file mode 100644 index cf213bf88e09..000000000000 --- a/deps/npm/node_modules/read/example/example.js +++ /dev/null @@ -1,13 +0,0 @@ -var read = require("../lib/read.js") - -read({prompt: "Username: ", default: "test-user" }, function (er, user) { - read({prompt: "Password: ", default: "test-pass", silent: true }, function (er, pass) { - read({prompt: "Password again: ", default: "test-pass", silent: true }, function (er, pass2) { - console.error({user: user, - pass: pass, - verify: pass2, - passMatch: (pass === pass2)}) - console.error("the program should exit now") - }) - }) -}) diff --git a/deps/npm/node_modules/read/package.json b/deps/npm/node_modules/read/package.json index b424aa3c0cc9..b8357c6315dd 100644 --- a/deps/npm/node_modules/read/package.json +++ b/deps/npm/node_modules/read/package.json @@ -1,12 +1,12 @@ { "name": "read", - "version": "1.0.6", + "version": "1.0.7", "main": "lib/read.js", "dependencies": { "mute-stream": "~0.0.4" }, "devDependencies": { - "tap": "*" + "tap": "^1.2.0" }, "engines": { "node": ">=0.8" @@ -25,23 +25,26 @@ "scripts": { "test": "tap test/*.js" }, - "gitHead": "2f5101c8e41332a033e5aa4e27e33fd6e09598e2", + "files": [ + "lib/read.js" + ], + "gitHead": "b14516b9236c40140fd0666567f5d0c588a09a62", "bugs": { "url": "https://github.com/isaacs/read/issues" }, "homepage": "https://github.com/isaacs/read#readme", - "_id": "read@1.0.6", - "_shasum": "09873c14ecc114d063fad43b8ca5a33d304721c8", - "_from": "read@1.0.6", - "_npmVersion": "2.10.0", - "_nodeVersion": "2.0.1", + "_id": "read@1.0.7", + "_shasum": "b3da19bd052431a97671d44a42634adf710b40c4", + "_from": "read@1.0.7", + "_npmVersion": "3.2.2", + "_nodeVersion": "2.2.1", "_npmUser": { "name": "isaacs", "email": "isaacs@npmjs.com" }, "dist": { - "shasum": "09873c14ecc114d063fad43b8ca5a33d304721c8", - "tarball": "http://registry.npmjs.org/read/-/read-1.0.6.tgz" + "shasum": "b3da19bd052431a97671d44a42634adf710b40c4", + "tarball": "http://registry.npmjs.org/read/-/read-1.0.7.tgz" }, "maintainers": [ { @@ -50,5 +53,5 @@ } ], "directories": {}, - "_resolved": "https://registry.npmjs.org/read/-/read-1.0.6.tgz" + "_resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz" } diff --git a/deps/npm/node_modules/read/rs.js b/deps/npm/node_modules/read/rs.js deleted file mode 100644 index d9f7f48dd614..000000000000 --- a/deps/npm/node_modules/read/rs.js +++ /dev/null @@ -1,4 +0,0 @@ -var read = require('read'); -read({ silent: true, prompt: 'stars: ' }, function(er, data) { - console.log(er, data) -}) diff --git a/deps/npm/node_modules/read/test/basic.js b/deps/npm/node_modules/read/test/basic.js deleted file mode 100644 index f0926f3f2ecf..000000000000 --- a/deps/npm/node_modules/read/test/basic.js +++ /dev/null @@ -1,60 +0,0 @@ -var tap = require('tap') -var read = require('../lib/read.js') - -if (process.argv[2] === 'child') { - return child() -} - -var CLOSE = 'close' -if (process.version.match(/^v0\.6/)) { - CLOSE = 'exit' -} - -var spawn = require('child_process').spawn - -tap.test('basic', function (t) { - var child = spawn(process.execPath, [__filename, 'child']) - var output = '' - var write = child.stdin.write.bind(child.stdin) - child.stdout.on('data', function (c) { - console.error('data %s', c) - output += c - if (output.match(/Username: \(test-user\) $/)) { - process.nextTick(write.bind(null, 'a user\n')) - } else if (output.match(/Password: \(