Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorisaacs <i@izs.me>2014-08-13 20:48:07 +0400
committerisaacs <i@izs.me>2014-08-13 20:48:07 +0400
commit3f24755c8fce3c7ab11ed1dc632cc40d7ef42f62 (patch)
tree08d3403994c7d2f77795b97f195837f2867fc554 /node_modules/read-installed
parent151cd2ff87b8ac2fc9ea366bc9b7f766dc5b9684 (diff)
include readdir-scoped-modules sub-dependency
Diffstat (limited to 'node_modules/read-installed')
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/LICENSE15
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/README.md17
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/README.md29
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/dezalgo.js21
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/node_modules/asap/LICENSE.md20
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/node_modules/asap/README.md81
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/node_modules/asap/asap.js113
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/node_modules/asap/package.json39
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/package.json65
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/test/basic.js25
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/package.json54
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/readdir.js71
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/test/basic.js14
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/@org/x/.keep0
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/@org/y/.keep0
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/@scope/x/.keep0
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/@scope/y/.keep0
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/a/x/.keep0
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/a/y/.keep0
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/b/x/.keep0
-rw-r--r--node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/b/y/.keep0
21 files changed, 564 insertions, 0 deletions
diff --git a/node_modules/read-installed/node_modules/readdir-scoped-modules/LICENSE b/node_modules/read-installed/node_modules/readdir-scoped-modules/LICENSE
new file mode 100644
index 000000000..19129e315
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/read-installed/node_modules/readdir-scoped-modules/README.md b/node_modules/read-installed/node_modules/readdir-scoped-modules/README.md
new file mode 100644
index 000000000..ade57a186
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/README.md
@@ -0,0 +1,17 @@
+# readdir-scoped-modules
+
+Like `fs.readdir` but handling `@org/module` dirs as if they were
+a single entry.
+
+Used by npm.
+
+## USAGE
+
+```javascript
+var readdir = require('readdir-scoped-modules')
+
+readdir('node_modules', function (er, entries) {
+ // entries will be something like
+ // ['a', '@org/foo', '@org/bar']
+})
+```
diff --git a/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/README.md b/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/README.md
new file mode 100644
index 000000000..bdfc8ba80
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/README.md
@@ -0,0 +1,29 @@
+# dezalgo
+
+Contain async insanity so that the dark pony lord doesn't eat souls
+
+See [this blog
+post](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony).
+
+## USAGE
+
+Pass a callback to `dezalgo` and it will ensure that it is *always*
+called in a future tick, and never in this tick.
+
+```javascript
+var dz = require('dezalgo')
+
+var cache = {}
+function maybeSync(arg, cb) {
+ cb = dz(cb)
+
+ // this will actually defer to nextTick
+ if (cache[arg]) cb(null, cache[arg])
+
+ fs.readFile(arg, function (er, data) {
+ // since this is *already* defered, it will call immediately
+ if (er) cb(er)
+ cb(null, cache[arg] = data)
+ })
+}
+```
diff --git a/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/dezalgo.js b/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/dezalgo.js
new file mode 100644
index 000000000..cdc48aec8
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/dezalgo.js
@@ -0,0 +1,21 @@
+module.exports = dezalgo
+
+var asap = require('asap')
+
+function dezalgo (cb) {
+ var sync = true
+ asap(function () {
+ sync = false
+ })
+
+ return function zalgoSafe() {
+ var args = arguments
+ var me = this
+ if (sync)
+ asap(function() {
+ cb.apply(me, args)
+ })
+ else
+ cb.apply(me, args)
+ }
+}
diff --git a/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/node_modules/asap/LICENSE.md b/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/node_modules/asap/LICENSE.md
new file mode 100644
index 000000000..5d98ad8fe
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/node_modules/asap/LICENSE.md
@@ -0,0 +1,20 @@
+
+Copyright 2009–2013 Contributors. All rights reserved.
+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/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/node_modules/asap/README.md b/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/node_modules/asap/README.md
new file mode 100644
index 000000000..9a4275976
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/node_modules/asap/README.md
@@ -0,0 +1,81 @@
+
+# ASAP
+
+This `asap` CommonJS package contains a single `asap` module that
+exports a single `asap` function that executes a function **as soon as
+possible**.
+
+```javascript
+asap(function () {
+ // ...
+});
+```
+
+More formally, ASAP provides a fast event queue that will execute tasks
+until it is empty before yielding to the JavaScript engine's underlying
+event-loop. When the event queue becomes non-empty, ASAP schedules a
+flush event, preferring for that event to occur before the JavaScript
+engine has an opportunity to perform IO tasks or rendering, thus making
+the first task and subsequent tasks semantically indistinguishable.
+ASAP uses a variety of techniques to preserve this invariant on
+different versions of browsers and NodeJS.
+
+By design, ASAP can starve the event loop on the theory that, if there
+is enough work to be done synchronously, albeit in separate events, long
+enough to starve input or output, it is a strong indicator that the
+program needs to push back on scheduling more work.
+
+Take care. ASAP can sustain infinite recursive calls indefinitely
+without warning. This is behaviorally equivalent to an infinite loop.
+It will not halt from a stack overflow, but it *will* chew through
+memory (which is an oddity I cannot explain at this time). Just as with
+infinite loops, you can monitor a Node process for this behavior with a
+heart-beat signal. As with infinite loops, a very small amount of
+caution goes a long way to avoiding problems.
+
+```javascript
+function loop() {
+ asap(loop);
+}
+loop();
+```
+
+ASAP is distinct from `setImmediate` in that it does not suffer the
+overhead of returning a handle and being possible to cancel. For a
+`setImmediate` shim, consider [setImmediate][].
+
+[setImmediate]: https://github.com/noblejs/setimmediate
+
+If a task throws an exception, it will not interrupt the flushing of
+high-priority tasks. The exception will be postponed to a later,
+low-priority event to avoid slow-downs, when the underlying JavaScript
+engine will treat it as it does any unhandled exception.
+
+## Heritage
+
+ASAP has been factored out of the [Q][] asynchronous promise library.
+It originally had a naïve implementation in terms of `setTimeout`, but
+[Malte Ubl][NonBlocking] provided an insight that `postMessage` might be
+useful for creating a high-priority, no-delay event dispatch hack.
+Since then, Internet Explorer proposed and implemented `setImmediate`.
+Robert Kratić began contributing to Q by measuring the performance of
+the internal implementation of `asap`, paying particular attention to
+error recovery. Domenic, Robert, and I collectively settled on the
+current strategy of unrolling the high-priority event queue internally
+regardless of what strategy we used to dispatch the potentially
+lower-priority flush event. Domenic went on to make ASAP cooperate with
+NodeJS domains.
+
+[Q]: https://github.com/kriskowal/q
+[NonBlocking]: http://www.nonblocking.io/2011/06/windownexttick.html
+
+For further reading, Nicholas Zakas provided a thorough article on [The
+Case for setImmediate][NCZ].
+
+[NCZ]: http://www.nczonline.net/blog/2013/07/09/the-case-for-setimmediate/
+
+## License
+
+Copyright 2009-2013 by Contributors
+MIT License (enclosed)
+
diff --git a/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/node_modules/asap/asap.js b/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/node_modules/asap/asap.js
new file mode 100644
index 000000000..2f85516cd
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/node_modules/asap/asap.js
@@ -0,0 +1,113 @@
+
+// Use the fastest possible means to execute a task in a future turn
+// of the event loop.
+
+// linked list of tasks (single, with head node)
+var head = {task: void 0, next: null};
+var tail = head;
+var flushing = false;
+var requestFlush = void 0;
+var isNodeJS = false;
+
+function flush() {
+ /* jshint loopfunc: true */
+
+ while (head.next) {
+ head = head.next;
+ var task = head.task;
+ head.task = void 0;
+ var domain = head.domain;
+
+ if (domain) {
+ head.domain = void 0;
+ domain.enter();
+ }
+
+ try {
+ task();
+
+ } catch (e) {
+ if (isNodeJS) {
+ // In node, uncaught exceptions are considered fatal errors.
+ // Re-throw them synchronously to interrupt flushing!
+
+ // Ensure continuation if the uncaught exception is suppressed
+ // listening "uncaughtException" events (as domains does).
+ // Continue in next event to avoid tick recursion.
+ if (domain) {
+ domain.exit();
+ }
+ setTimeout(flush, 0);
+ if (domain) {
+ domain.enter();
+ }
+
+ throw e;
+
+ } else {
+ // In browsers, uncaught exceptions are not fatal.
+ // Re-throw them asynchronously to avoid slow-downs.
+ setTimeout(function() {
+ throw e;
+ }, 0);
+ }
+ }
+
+ if (domain) {
+ domain.exit();
+ }
+ }
+
+ flushing = false;
+}
+
+if (typeof process !== "undefined" && process.nextTick) {
+ // Node.js before 0.9. Note that some fake-Node environments, like the
+ // Mocha test runner, introduce a `process` global without a `nextTick`.
+ isNodeJS = true;
+
+ requestFlush = function () {
+ process.nextTick(flush);
+ };
+
+} else if (typeof setImmediate === "function") {
+ // In IE10, Node.js 0.9+, or https://github.com/NobleJS/setImmediate
+ if (typeof window !== "undefined") {
+ requestFlush = setImmediate.bind(window, flush);
+ } else {
+ requestFlush = function () {
+ setImmediate(flush);
+ };
+ }
+
+} else if (typeof MessageChannel !== "undefined") {
+ // modern browsers
+ // http://www.nonblocking.io/2011/06/windownexttick.html
+ var channel = new MessageChannel();
+ channel.port1.onmessage = flush;
+ requestFlush = function () {
+ channel.port2.postMessage(0);
+ };
+
+} else {
+ // old browsers
+ requestFlush = function () {
+ setTimeout(flush, 0);
+ };
+}
+
+function asap(task) {
+ tail = tail.next = {
+ task: task,
+ domain: isNodeJS && process.domain,
+ next: null
+ };
+
+ if (!flushing) {
+ flushing = true;
+ requestFlush();
+ }
+};
+
+module.exports = asap;
+
diff --git a/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/node_modules/asap/package.json b/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/node_modules/asap/package.json
new file mode 100644
index 000000000..1237784d4
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/node_modules/asap/package.json
@@ -0,0 +1,39 @@
+{
+ "name": "asap",
+ "version": "1.0.0",
+ "description": "High-priority task queue for Node.js and browsers",
+ "keywords": [
+ "event",
+ "task",
+ "queue"
+ ],
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "https://github.com/kriskowal/asap/raw/master/LICENSE.md"
+ }
+ ],
+ "main": "asap",
+ "readme": "\n# ASAP\n\nThis `asap` CommonJS package contains a single `asap` module that\nexports a single `asap` function that executes a function **as soon as\npossible**.\n\n```javascript\nasap(function () {\n // ...\n});\n```\n\nMore formally, ASAP provides a fast event queue that will execute tasks\nuntil it is empty before yielding to the JavaScript engine's underlying\nevent-loop. When the event queue becomes non-empty, ASAP schedules a\nflush event, preferring for that event to occur before the JavaScript\nengine has an opportunity to perform IO tasks or rendering, thus making\nthe first task and subsequent tasks semantically indistinguishable.\nASAP uses a variety of techniques to preserve this invariant on\ndifferent versions of browsers and NodeJS.\n\nBy design, ASAP can starve the event loop on the theory that, if there\nis enough work to be done synchronously, albeit in separate events, long\nenough to starve input or output, it is a strong indicator that the\nprogram needs to push back on scheduling more work.\n\nTake care. ASAP can sustain infinite recursive calls indefinitely\nwithout warning. This is behaviorally equivalent to an infinite loop.\nIt will not halt from a stack overflow, but it *will* chew through\nmemory (which is an oddity I cannot explain at this time). Just as with\ninfinite loops, you can monitor a Node process for this behavior with a\nheart-beat signal. As with infinite loops, a very small amount of\ncaution goes a long way to avoiding problems.\n\n```javascript\nfunction loop() {\n asap(loop);\n}\nloop();\n```\n\nASAP is distinct from `setImmediate` in that it does not suffer the\noverhead of returning a handle and being possible to cancel. For a\n`setImmediate` shim, consider [setImmediate][].\n\n[setImmediate]: https://github.com/noblejs/setimmediate\n\nIf a task throws an exception, it will not interrupt the flushing of\nhigh-priority tasks. The exception will be postponed to a later,\nlow-priority event to avoid slow-downs, when the underlying JavaScript\nengine will treat it as it does any unhandled exception.\n\n## Heritage\n\nASAP has been factored out of the [Q][] asynchronous promise library.\nIt originally had a naïve implementation in terms of `setTimeout`, but\n[Malte Ubl][NonBlocking] provided an insight that `postMessage` might be\nuseful for creating a high-priority, no-delay event dispatch hack.\nSince then, Internet Explorer proposed and implemented `setImmediate`.\nRobert Kratić began contributing to Q by measuring the performance of\nthe internal implementation of `asap`, paying particular attention to\nerror recovery. Domenic, Robert, and I collectively settled on the\ncurrent strategy of unrolling the high-priority event queue internally\nregardless of what strategy we used to dispatch the potentially\nlower-priority flush event. Domenic went on to make ASAP cooperate with\nNodeJS domains.\n\n[Q]: https://github.com/kriskowal/q\n[NonBlocking]: http://www.nonblocking.io/2011/06/windownexttick.html\n\nFor further reading, Nicholas Zakas provided a thorough article on [The\nCase for setImmediate][NCZ].\n\n[NCZ]: http://www.nczonline.net/blog/2013/07/09/the-case-for-setimmediate/\n\n## License\n\nCopyright 2009-2013 by Contributors\nMIT License (enclosed)\n\n",
+ "readmeFilename": "README.md",
+ "_id": "asap@1.0.0",
+ "dist": {
+ "shasum": "b2a45da5fdfa20b0496fc3768cc27c12fa916a7d",
+ "tarball": "http://registry.npmjs.org/asap/-/asap-1.0.0.tgz"
+ },
+ "_from": "asap@>=1.0.0-0 <2.0.0-0",
+ "_npmVersion": "1.2.15",
+ "_npmUser": {
+ "name": "kriskowal",
+ "email": "kris.kowal@cixar.com"
+ },
+ "maintainers": [
+ {
+ "name": "kriskowal",
+ "email": "kris.kowal@cixar.com"
+ }
+ ],
+ "directories": {},
+ "_shasum": "b2a45da5fdfa20b0496fc3768cc27c12fa916a7d",
+ "_resolved": "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz"
+}
diff --git a/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/package.json b/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/package.json
new file mode 100644
index 000000000..260e690ab
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/package.json
@@ -0,0 +1,65 @@
+{
+ "name": "dezalgo",
+ "version": "1.0.0",
+ "description": "Contain async insanity so that the dark pony lord doesn't eat souls",
+ "main": "dezalgo.js",
+ "directories": {
+ "test": "test"
+ },
+ "dependencies": {
+ "asap": "^1.0.0"
+ },
+ "devDependencies": {
+ "tap": "^0.4.11"
+ },
+ "scripts": {
+ "test": "tap test/*.js"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/npm/dezalgo"
+ },
+ "keywords": [
+ "async",
+ "zalgo",
+ "the dark pony",
+ "he comes",
+ "asynchrony of all holy and good",
+ "T̯̪ͅo̯͖̹ ̻̮̖̲͢i̥̖n̢͈͇̝͍v͏͉ok̭̬̝ͅe̞͍̩̫͍̩͝ ̩̮̖̟͇͉́t͔͔͎̗h͏̗̟e̘͉̰̦̠̞͓ ͕h͉̟͎̪̠̱͠ḭ̮̩v̺͉͇̩e̵͖-̺̪m͍i̜n̪̲̲̲̮d̷ ̢r̠̼̯̹̦̦͘ͅe͓̳͓̙p̺̗̫͙͘ͅr͔̰͜e̴͓̞s͉̩̩͟ͅe͏̣n͚͇̗̭̺͍tì͙̣n͏̖̥̗͎̰̪g̞͓̭̱̯̫̕ ̣̱͜ͅc̦̰̰̠̮͎͙̀hao̺̜̻͍͙ͅs͉͓̘.͎̼̺̼͕̹͘",
+ "̠̞̱̰I͖͇̝̻n̦̰͍̰̟v̤̺̫̳̭̼̗͘ò̹̟̩̩͚k̢̥̠͍͉̦̬i̖͓͔̮̱̻͘n̶̳͙̫͎g̖̯̣̲̪͉ ̞͎̗͕͚ͅt̲͕̘̺̯̗̦h̘̦̲̜̻e̳͎͉̬͙ ̴̞̪̲̥f̜̯͓͓̭̭͢e̱̘͔̮e̜̤l̺̱͖̯͓͙͈͢i̵̦̬͉͔̫͚͕n͉g̨͖̙̙̹̹̟̤ ͉̪o̞̠͍̪̰͙ͅf̬̲̺ ͔͕̲͕͕̲̕c̙͉h̝͔̩̙̕ͅa̲͖̻̗̹o̥̼̫s̝̖̜̝͚̫̟.̺͚ ̸̱̲W̶̥̣͖̦i͏̤̬̱̳̣ͅt͉h̗̪̪ ̷̱͚̹̪ǫ͕̗̣̳̦͎u̼̦͔̥̮̕ţ͖͎̻͔͉ ̴͎̩òr̹̰̖͉͈͝d̷̲̦̖͓e̲͓̠r",
+ "̧͚̜͓̰̭̭Ṯ̫̹̜̮̟̮͝h͚̘̩̘̖̰́e ̥̘͓͉͔͙̼N̟̜̣̘͔̪e̞̞̤͢z̰̖̘͇p̠͟e̺̱̣͍͙̝ṛ̘̬͔̙͇̠d͝ḭ̯̱̥̗̩a̛ͅn͏̦ ̷̥hi̥v̖̳̹͉̮̱͝e̹̪̘̖̰̟-̴͙͓͚̜̻mi̗̺̻͙̺ͅn̪̯͈d ͏̘͓̫̳ͅơ̹͔̳̖̣͓f͈̹̘ ͕ͅc̗̤̠̜̮̥̥h̡͍̩̭̫͚̱a̤͉̤͔͜os͕̤̼͍̲̀ͅ.̡̱ ̦Za̯̱̗̭͍̣͚l̗͉̰̤g͏̣̭̬̗̲͖ͅo̶̭̩̳̟͈.̪̦̰̳",
+ "H̴̱̦̗̬̣͓̺e̮ ͉̠̰̞͎̖͟ẁh̛̺̯ͅo̖̫͡ ̢Ẁa̡̗i̸t͖̣͉̀ş͔̯̩ ̤̦̮͇̞̦̲B͎̭͇̦̼e̢hin͏͙̟̪d̴̰͓̻̣̮͕ͅ T͖̮̕h͖e̘̺̰̙͘ ̥Ẁ̦͔̻͚a̞͖̪͉l̪̠̻̰̣̠l̲͎͞",
+ "Z̘͍̼͎̣͔͝Ą̲̜̱̱̹̤͇L̶̝̰̭͔G͍̖͍O̫͜ͅ!̼̤ͅ",
+ "H̝̪̜͓̀̌̂̒E̢̙̠̣ ̴̳͇̥̟̠͍̐C̹̓̑̐̆͝Ó̶̭͓̚M̬̼Ĕ̖̤͔͔̟̹̽̿̊ͥ̍ͫS̻̰̦̻̖̘̱̒ͪ͌̅͟"
+ ],
+ "author": {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me",
+ "url": "http://blog.izs.me/"
+ },
+ "license": "ISC",
+ "bugs": {
+ "url": "https://github.com/npm/dezalgo/issues"
+ },
+ "homepage": "https://github.com/npm/dezalgo",
+ "gitHead": "b10ea8ae0096d0e60c1acaa88d5334a9b372e4b0",
+ "_id": "dezalgo@1.0.0",
+ "_shasum": "050bb723f18b5617b309f26c2dc8fe6f2573b6fc",
+ "_from": "dezalgo@>=1.0.0-0 <2.0.0-0",
+ "_npmVersion": "1.4.18",
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "maintainers": [
+ {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ }
+ ],
+ "dist": {
+ "shasum": "050bb723f18b5617b309f26c2dc8fe6f2573b6fc",
+ "tarball": "http://registry.npmjs.org/dezalgo/-/dezalgo-1.0.0.tgz"
+ },
+ "_resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.0.tgz"
+}
diff --git a/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/test/basic.js b/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/test/basic.js
new file mode 100644
index 000000000..cc10336e0
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/node_modules/dezalgo/test/basic.js
@@ -0,0 +1,25 @@
+var test = require('tap').test
+var dz = require('../dezalgo.js')
+
+test('the dark pony', function(t) {
+
+ var n = 0
+ function foo(cb) {
+ cb = dz(cb)
+ if (++n % 2) cb()
+ else process.nextTick(cb)
+ }
+
+ var called = 0
+ for (var i = 0; i < 10; i++) {
+ foo(function() {
+ called++
+ })
+ t.equal(called, 0)
+ }
+
+ setTimeout(function() {
+ t.equal(called, 10)
+ t.end()
+ })
+})
diff --git a/node_modules/read-installed/node_modules/readdir-scoped-modules/package.json b/node_modules/read-installed/node_modules/readdir-scoped-modules/package.json
new file mode 100644
index 000000000..84b91e75a
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/package.json
@@ -0,0 +1,54 @@
+{
+ "name": "readdir-scoped-modules",
+ "version": "1.0.0",
+ "description": "Like `fs.readdir` but handling `@org/module` dirs as if they were a single entry.",
+ "main": "readdir.js",
+ "directories": {
+ "test": "test"
+ },
+ "dependencies": {
+ "debuglog": "^1.0.1",
+ "dezalgo": "^1.0.0",
+ "once": "^1.3.0"
+ },
+ "devDependencies": {
+ "tap": "0.4"
+ },
+ "scripts": {
+ "test": "tap test/*.js"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/npm/readdir-scoped-modules"
+ },
+ "author": {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me",
+ "url": "http://blog.izs.me/"
+ },
+ "license": "ISC",
+ "bugs": {
+ "url": "https://github.com/npm/readdir-scoped-modules/issues"
+ },
+ "homepage": "https://github.com/npm/readdir-scoped-modules",
+ "gitHead": "35a4a7a2325d12ed25ed322cd61f976b740f7fb7",
+ "_id": "readdir-scoped-modules@1.0.0",
+ "_shasum": "e939de969b38b3e7dfaa14fbcfe7a2fd15a4ea37",
+ "_from": "readdir-scoped-modules@>=1.0.0-0 <2.0.0-0",
+ "_npmVersion": "2.0.0-alpha.6.0",
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "maintainers": [
+ {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ }
+ ],
+ "dist": {
+ "shasum": "e939de969b38b3e7dfaa14fbcfe7a2fd15a4ea37",
+ "tarball": "http://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.0.0.tgz"
+ },
+ "_resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.0.0.tgz"
+}
diff --git a/node_modules/read-installed/node_modules/readdir-scoped-modules/readdir.js b/node_modules/read-installed/node_modules/readdir-scoped-modules/readdir.js
new file mode 100644
index 000000000..91978a739
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/readdir.js
@@ -0,0 +1,71 @@
+var fs = require ('fs')
+var dz = require ('dezalgo')
+var once = require ('once')
+var path = require ('path')
+var debug = require ('debuglog') ('rds')
+
+module . exports = readdir
+
+function readdir (dir, cb) {
+ fs . readdir (dir, function (er, kids) {
+ if (er)
+ return cb (er)
+
+ debug ('dir=%j, kids=%j', dir, kids)
+ readScopes (dir, kids, function (er, data) {
+ if (er)
+ return cb (er)
+
+ // Sort for bonus consistency points
+ data = data . sort (function (a, b) {
+ return a > b ? 1 : -1
+ })
+
+ return cb (null, data)
+ })
+ })
+}
+
+// Turn [ 'a', '@scope' ] into
+// ['a', '@scope/foo', '@scope/bar']
+function readScopes (root, kids, cb) {
+ var scopes = kids . filter (function (kid) {
+ return kid . charAt (0) === '@'
+ })
+
+ kids = kids . filter (function (kid) {
+ return kid . charAt (0) !== '@'
+ })
+
+ debug ('scopes=%j', scopes)
+
+ if (scopes . length === 0)
+ dz (cb) (null, kids) // prevent maybe-sync zalgo release
+
+ cb = once (cb)
+ var l = scopes . length
+ scopes . forEach (function (scope) {
+ var scopedir = path . resolve (root, scope)
+ debug ('root=%j scope=%j scopedir=%j', root, scope, scopedir)
+ fs . readdir (scopedir, then . bind (null, scope))
+ })
+
+ function then (scope, er, scopekids) {
+ if (er)
+ return cb (er)
+
+ // XXX: Not sure how old this node bug is. Maybe superstition?
+ scopekids = scopekids . filter (function (scopekid) {
+ return !(scopekid === '.' || scopekid === '..' || !scopekid)
+ })
+
+ kids . push . apply (kids, scopekids . map (function (scopekid) {
+ return scope + '/' + scopekid
+ }))
+
+ debug ('scope=%j scopekids=%j kids=%j', scope, scopekids, kids)
+
+ if (--l === 0)
+ cb (null, kids)
+ }
+}
diff --git a/node_modules/read-installed/node_modules/readdir-scoped-modules/test/basic.js b/node_modules/read-installed/node_modules/readdir-scoped-modules/test/basic.js
new file mode 100644
index 000000000..715c40d58
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/test/basic.js
@@ -0,0 +1,14 @@
+var test = require ('tap') . test
+var readdir = require ('../readdir.js')
+
+test ('basic', function (t) {
+ // should not get {a,b}/{x,y}, but SHOULD get @org/ and @scope children
+ var expect = [ '@org/x', '@org/y', '@scope/x', '@scope/y', 'a', 'b' ]
+
+ readdir (__dirname + '/fixtures', function (er, kids) {
+ if (er)
+ throw er
+ t.same(kids, expect)
+ t.end()
+ })
+})
diff --git a/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/@org/x/.keep b/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/@org/x/.keep
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/@org/x/.keep
diff --git a/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/@org/y/.keep b/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/@org/y/.keep
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/@org/y/.keep
diff --git a/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/@scope/x/.keep b/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/@scope/x/.keep
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/@scope/x/.keep
diff --git a/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/@scope/y/.keep b/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/@scope/y/.keep
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/@scope/y/.keep
diff --git a/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/a/x/.keep b/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/a/x/.keep
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/a/x/.keep
diff --git a/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/a/y/.keep b/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/a/y/.keep
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/a/y/.keep
diff --git a/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/b/x/.keep b/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/b/x/.keep
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/b/x/.keep
diff --git a/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/b/y/.keep b/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/b/y/.keep
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/read-installed/node_modules/readdir-scoped-modules/test/fixtures/b/y/.keep