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:
authorRebecca Turner <me@re-becca.org>2017-04-13 04:12:34 +0300
committerKat Marchán <kzm@sykosomatic.org>2017-04-28 01:02:14 +0300
commit319f861d421877446c5896e1b8b6bba2f34b717c (patch)
tree3d42e3f51d08a9baa6d9901eb218dfe24f7a5f81 /node_modules/asap
parentfce1a6c0be5e0b7278fcfe0363c7b9c28f370f0b (diff)
asap@REMOVED
Diffstat (limited to 'node_modules/asap')
-rw-r--r--node_modules/asap/CHANGES.md64
-rw-r--r--node_modules/asap/LICENSE.md21
-rw-r--r--node_modules/asap/README.md237
-rw-r--r--node_modules/asap/asap.js65
-rw-r--r--node_modules/asap/browser-asap.js66
-rw-r--r--node_modules/asap/browser-raw.js223
-rw-r--r--node_modules/asap/package.json126
-rw-r--r--node_modules/asap/raw.js101
8 files changed, 0 insertions, 903 deletions
diff --git a/node_modules/asap/CHANGES.md b/node_modules/asap/CHANGES.md
deleted file mode 100644
index e9ffa4626..000000000
--- a/node_modules/asap/CHANGES.md
+++ /dev/null
@@ -1,64 +0,0 @@
-
-## 2.0.3
-
-Version 2.0.3 fixes a bug when adjusting the capacity of the task queue.
-
-## 2.0.1-2.02
-
-Version 2.0.1 fixes a bug in the way redirects were expressed that affected the
-function of Browserify, but which Mr would tolerate.
-
-## 2.0.0
-
-Version 2 of ASAP is a full rewrite with a few salient changes.
-First, the ASAP source is CommonJS only and designed with [Browserify][] and
-[Browserify-compatible][Mr] module loaders in mind.
-
-[Browserify]: https://github.com/substack/node-browserify
-[Mr]: https://github.com/montagejs/mr
-
-The new version has been refactored in two dimensions.
-Support for Node.js and browsers have been separated, using Browserify
-redirects and ASAP has been divided into two modules.
-The "raw" layer depends on the tasks to catch thrown exceptions and unravel
-Node.js domains.
-
-The full implementation of ASAP is loadable as `require("asap")` in both Node.js
-and browsers.
-
-The raw layer that lacks exception handling overhead is loadable as
-`require("asap/raw")`.
-The interface is the same for both layers.
-
-Tasks are no longer required to be functions, but can rather be any object that
-implements `task.call()`.
-With this feature you can recycle task objects to avoid garbage collector churn
-and avoid closures in general.
-
-The implementation has been rigorously documented so that our successors can
-understand the scope of the problem that this module solves and all of its
-nuances, ensuring that the next generation of implementations know what details
-are essential.
-
-- [asap.js](https://github.com/kriskowal/asap/blob/master/asap.js)
-- [raw.js](https://github.com/kriskowal/asap/blob/master/raw.js)
-- [browser-asap.js](https://github.com/kriskowal/asap/blob/master/browser-asap.js)
-- [browser-raw.js](https://github.com/kriskowal/asap/blob/master/browser-raw.js)
-
-The new version has also been rigorously tested across a broad spectrum of
-browsers, in both the window and worker context.
-The following charts capture the browser test results for the most recent
-release.
-The first chart shows test results for ASAP running in the main window context.
-The second chart shows test results for ASAP running in a web worker context.
-Test results are inconclusive (grey) on browsers that do not support web
-workers.
-These data are captured automatically by [Continuous
-Integration][].
-
-![Browser Compatibility](http://kriskowal-asap.s3-website-us-west-2.amazonaws.com/train/integration-2/saucelabs-results-matrix.svg)
-
-![Compatibility in Web Workers](http://kriskowal-asap.s3-website-us-west-2.amazonaws.com/train/integration-2/saucelabs-worker-results-matrix.svg)
-
-[Continuous Integration]: https://github.com/kriskowal/asap/blob/master/CONTRIBUTING.md
-
diff --git a/node_modules/asap/LICENSE.md b/node_modules/asap/LICENSE.md
deleted file mode 100644
index ba18c6139..000000000
--- a/node_modules/asap/LICENSE.md
+++ /dev/null
@@ -1,21 +0,0 @@
-
-Copyright 2009–2014 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/asap/README.md b/node_modules/asap/README.md
deleted file mode 100644
index 452fd8c20..000000000
--- a/node_modules/asap/README.md
+++ /dev/null
@@ -1,237 +0,0 @@
-# ASAP
-
-[![Build Status](https://travis-ci.org/kriskowal/asap.png?branch=master)](https://travis-ci.org/kriskowal/asap)
-
-Promise and asynchronous observer libraries, as well as hand-rolled callback
-programs and libraries, often need a mechanism to postpone the execution of a
-callback until the next available event.
-(See [Designing API’s for Asynchrony][Zalgo].)
-The `asap` function executes a task **as soon as possible** but not before it
-returns, waiting only for the completion of the current event and previously
-scheduled tasks.
-
-```javascript
-asap(function () {
- // ...
-});
-```
-
-[Zalgo]: http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony
-
-This CommonJS package provides an `asap` module that exports a function that
-executes a task function *as soon as possible*.
-
-ASAP strives to schedule events to occur before yielding for IO, reflow,
-or redrawing.
-Each event receives an independent stack, with only platform code in parent
-frames and the events run in the order they are scheduled.
-
-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 a task gets added to a previously empty event queue, 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 Node.js.
-
-By design, ASAP prevents input events from being handled until the task
-queue is empty.
-If the process is busy enough, this may cause incoming connection requests to be
-dropped, and may cause existing connections to inform the sender to reduce the
-transmission rate or stall.
-ASAP allows this on the theory that, if there is enough work to do, there is no
-sense in looking for trouble.
-As a consequence, ASAP can interfere with smooth animation.
-If your task should be tied to the rendering loop, consider using
-`requestAnimationFrame` instead.
-A long sequence of tasks can also effect the long running script dialog.
-If this is a problem, you may be able to use ASAP’s cousin `setImmediate` to
-break long processes into shorter intervals and periodically allow the browser
-to breathe.
-`setImmediate` will yield for IO, reflow, and repaint events.
-It also returns a handler and can be canceled.
-For a `setImmediate` shim, consider [YuzuJS setImmediate][setImmediate].
-
-[setImmediate]: https://github.com/YuzuJS/setImmediate
-
-Take care.
-ASAP can sustain infinite recursive calls without warning.
-It will not halt from a stack overflow, and it will not consume unbounded
-memory.
-This is behaviorally equivalent to an infinite loop.
-Just as with infinite loops, you can monitor a Node.js 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();
-```
-
-In browsers, 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.
-In Node.js, if a task throws an exception, ASAP will resume flushing only if—and
-only after—the error is handled by `domain.on("error")` or
-`process.on("uncaughtException")`.
-
-## Raw ASAP
-
-Checking for exceptions comes at a cost.
-The package also provides an `asap/raw` module that exports the underlying
-implementation which is faster but stalls if a task throws an exception.
-This internal version of the ASAP function does not check for errors.
-If a task does throw an error, it will stall the event queue unless you manually
-call `rawAsap.requestFlush()` before throwing the error, or any time after.
-
-In Node.js, `asap/raw` also runs all tasks outside any domain.
-If you need a task to be bound to your domain, you will have to do it manually.
-
-```js
-if (process.domain) {
- task = process.domain.bind(task);
-}
-rawAsap(task);
-```
-
-## Tasks
-
-A task may be any object that implements `call()`.
-A function will suffice, but closures tend not to be reusable and can cause
-garbage collector churn.
-Both `asap` and `rawAsap` accept task objects to give you the option of
-recycling task objects or using higher callable object abstractions.
-See the `asap` source for an illustration.
-
-
-## Compatibility
-
-ASAP is tested on Node.js v0.10 and in a broad spectrum of web browsers.
-The following charts capture the browser test results for the most recent
-release.
-The first chart shows test results for ASAP running in the main window context.
-The second chart shows test results for ASAP running in a web worker context.
-Test results are inconclusive (grey) on browsers that do not support web
-workers.
-These data are captured automatically by [Continuous
-Integration][].
-
-[Continuous Integration]: https://github.com/kriskowal/asap/blob/master/CONTRIBUTING.md
-
-![Browser Compatibility](http://kriskowal-asap.s3-website-us-west-2.amazonaws.com/train/integration-2/saucelabs-results-matrix.svg)
-
-![Compatibility in Web Workers](http://kriskowal-asap.s3-website-us-west-2.amazonaws.com/train/integration-2/saucelabs-worker-results-matrix.svg)
-
-## Caveats
-
-When a task is added to an empty event queue, it is not always possible to
-guarantee that the task queue will begin flushing immediately after the current
-event.
-However, once the task queue begins flushing, it will not yield until the queue
-is empty, even if the queue grows while executing tasks.
-
-The following browsers allow the use of [DOM mutation observers][] to access
-the HTML [microtask queue][], and thus begin flushing ASAP's task queue
-immediately at the end of the current event loop turn, before any rendering or
-IO:
-
-[microtask queue]: http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#microtask-queue
-[DOM mutation observers]: http://dom.spec.whatwg.org/#mutation-observers
-
-- Android 4–4.3
-- Chrome 26–34
-- Firefox 14–29
-- Internet Explorer 11
-- iPad Safari 6–7.1
-- iPhone Safari 7–7.1
-- Safari 6–7
-
-In the absense of mutation observers, there are a few browsers, and situations
-like web workers in some of the above browsers, where [message channels][]
-would be a useful way to avoid falling back to timers.
-Message channels give direct access to the HTML [task queue][], so the ASAP
-task queue would flush after any already queued rendering and IO tasks, but
-without having the minimum delay imposed by timers.
-However, among these browsers, Internet Explorer 10 and Safari do not reliably
-dispatch messages, so they are not worth the trouble to implement.
-
-[message channels]: http://www.whatwg.org/specs/web-apps/current-work/multipage/web-messaging.html#message-channels
-[task queue]: http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#concept-task
-
-- Internet Explorer 10
-- Safair 5.0-1
-- Opera 11-12
-
-In the absense of mutation observers, these browsers and the following browsers
-all fall back to using `setTimeout` and `setInterval` to ensure that a `flush`
-occurs.
-The implementation uses both and cancels whatever handler loses the race, since
-`setTimeout` tends to occasionally skip tasks in unisolated circumstances.
-Timers generally delay the flushing of ASAP's task queue for four milliseconds.
-
-- Firefox 3–13
-- Internet Explorer 6–10
-- iPad Safari 4.3
-- Lynx 2.8.7
-
-
-## 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 Katić began contributing to Q by measuring the performance of
-the internal implementation of `asap`, paying particular attention to
-error recovery.
-Domenic, Robert, and Kris Kowal 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 Node.js 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/
-
-Ember’s RSVP promise implementation later [adopted][RSVP ASAP] the name ASAP but
-further developed the implentation.
-Particularly, The `MessagePort` implementation was abandoned due to interaction
-[problems with Mobile Internet Explorer][IE Problems] in favor of an
-implementation backed on the newer and more reliable DOM `MutationObserver`
-interface.
-These changes were back-ported into this library.
-
-[IE Problems]: https://github.com/cujojs/when/issues/197
-[RSVP ASAP]: https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js
-
-In addition, ASAP factored into `asap` and `asap/raw`, such that `asap` remained
-exception-safe, but `asap/raw` provided a tight kernel that could be used for
-tasks that guaranteed that they would not throw exceptions.
-This core is useful for promise implementations that capture thrown errors in
-rejected promises and do not need a second safety net.
-At the same time, the exception handling in `asap` was factored into separate
-implementations for Node.js and browsers, using the the [Browserify][Browser
-Config] `browser` property in `package.json` to instruct browser module loaders
-and bundlers, including [Browserify][], [Mr][], and [Mop][], to use the
-browser-only implementation.
-
-[Browser Config]: https://gist.github.com/defunctzombie/4339901
-[Browserify]: https://github.com/substack/node-browserify
-[Mr]: https://github.com/montagejs/mr
-[Mop]: https://github.com/montagejs/mop
-
-## License
-
-Copyright 2009-2014 by Contributors
-MIT License (enclosed)
-
diff --git a/node_modules/asap/asap.js b/node_modules/asap/asap.js
deleted file mode 100644
index f04fcd58f..000000000
--- a/node_modules/asap/asap.js
+++ /dev/null
@@ -1,65 +0,0 @@
-"use strict";
-
-var rawAsap = require("./raw");
-var freeTasks = [];
-
-/**
- * Calls a task as soon as possible after returning, in its own event, with
- * priority over IO events. An exception thrown in a task can be handled by
- * `process.on("uncaughtException") or `domain.on("error")`, but will otherwise
- * crash the process. If the error is handled, all subsequent tasks will
- * resume.
- *
- * @param {{call}} task A callable object, typically a function that takes no
- * arguments.
- */
-module.exports = asap;
-function asap(task) {
- var rawTask;
- if (freeTasks.length) {
- rawTask = freeTasks.pop();
- } else {
- rawTask = new RawTask();
- }
- rawTask.task = task;
- rawTask.domain = process.domain;
- rawAsap(rawTask);
-}
-
-function RawTask() {
- this.task = null;
- this.domain = null;
-}
-
-RawTask.prototype.call = function () {
- if (this.domain) {
- this.domain.enter();
- }
- var threw = true;
- try {
- this.task.call();
- threw = false;
- // If the task throws an exception (presumably) Node.js restores the
- // domain stack for the next event.
- if (this.domain) {
- this.domain.exit();
- }
- } finally {
- // We use try/finally and a threw flag to avoid messing up stack traces
- // when we catch and release errors.
- if (threw) {
- // In Node.js, uncaught exceptions are considered fatal errors.
- // Re-throw them to interrupt flushing!
- // Ensure that flushing continues if an uncaught exception is
- // suppressed listening process.on("uncaughtException") or
- // domain.on("error").
- rawAsap.requestFlush();
- }
- // If the task threw an error, we do not want to exit the domain here.
- // Exiting the domain would prevent the domain from catching the error.
- this.task = null;
- this.domain = null;
- freeTasks.push(this);
- }
-};
-
diff --git a/node_modules/asap/browser-asap.js b/node_modules/asap/browser-asap.js
deleted file mode 100644
index 805c98246..000000000
--- a/node_modules/asap/browser-asap.js
+++ /dev/null
@@ -1,66 +0,0 @@
-"use strict";
-
-// rawAsap provides everything we need except exception management.
-var rawAsap = require("./raw");
-// RawTasks are recycled to reduce GC churn.
-var freeTasks = [];
-// We queue errors to ensure they are thrown in right order (FIFO).
-// Array-as-queue is good enough here, since we are just dealing with exceptions.
-var pendingErrors = [];
-var requestErrorThrow = rawAsap.makeRequestCallFromTimer(throwFirstError);
-
-function throwFirstError() {
- if (pendingErrors.length) {
- throw pendingErrors.shift();
- }
-}
-
-/**
- * Calls a task as soon as possible after returning, in its own event, with priority
- * over other events like animation, reflow, and repaint. An error thrown from an
- * event will not interrupt, nor even substantially slow down the processing of
- * other events, but will be rather postponed to a lower priority event.
- * @param {{call}} task A callable object, typically a function that takes no
- * arguments.
- */
-module.exports = asap;
-function asap(task) {
- var rawTask;
- if (freeTasks.length) {
- rawTask = freeTasks.pop();
- } else {
- rawTask = new RawTask();
- }
- rawTask.task = task;
- rawAsap(rawTask);
-}
-
-// We wrap tasks with recyclable task objects. A task object implements
-// `call`, just like a function.
-function RawTask() {
- this.task = null;
-}
-
-// The sole purpose of wrapping the task is to catch the exception and recycle
-// the task object after its single use.
-RawTask.prototype.call = function () {
- try {
- this.task.call();
- } catch (error) {
- if (asap.onerror) {
- // This hook exists purely for testing purposes.
- // Its name will be periodically randomized to break any code that
- // depends on its existence.
- asap.onerror(error);
- } else {
- // In a web browser, exceptions are not fatal. However, to avoid
- // slowing down the queue of pending tasks, we rethrow the error in a
- // lower priority turn.
- pendingErrors.push(error);
- requestErrorThrow();
- }
- } finally {
- this.task = null;
- freeTasks[freeTasks.length] = this;
- }
-};
diff --git a/node_modules/asap/browser-raw.js b/node_modules/asap/browser-raw.js
deleted file mode 100644
index 9cee7e32e..000000000
--- a/node_modules/asap/browser-raw.js
+++ /dev/null
@@ -1,223 +0,0 @@
-"use strict";
-
-// Use the fastest means possible to execute a task in its own turn, with
-// priority over other events including IO, animation, reflow, and redraw
-// events in browsers.
-//
-// An exception thrown by a task will permanently interrupt the processing of
-// subsequent tasks. The higher level `asap` function ensures that if an
-// exception is thrown by a task, that the task queue will continue flushing as
-// soon as possible, but if you use `rawAsap` directly, you are responsible to
-// either ensure that no exceptions are thrown from your task, or to manually
-// call `rawAsap.requestFlush` if an exception is thrown.
-module.exports = rawAsap;
-function rawAsap(task) {
- if (!queue.length) {
- requestFlush();
- flushing = true;
- }
- // Equivalent to push, but avoids a function call.
- queue[queue.length] = task;
-}
-
-var queue = [];
-// Once a flush has been requested, no further calls to `requestFlush` are
-// necessary until the next `flush` completes.
-var flushing = false;
-// `requestFlush` is an implementation-specific method that attempts to kick
-// off a `flush` event as quickly as possible. `flush` will attempt to exhaust
-// the event queue before yielding to the browser's own event loop.
-var requestFlush;
-// The position of the next task to execute in the task queue. This is
-// preserved between calls to `flush` so that it can be resumed if
-// a task throws an exception.
-var index = 0;
-// If a task schedules additional tasks recursively, the task queue can grow
-// unbounded. To prevent memory exhaustion, the task queue will periodically
-// truncate already-completed tasks.
-var capacity = 1024;
-
-// The flush function processes all tasks that have been scheduled with
-// `rawAsap` unless and until one of those tasks throws an exception.
-// If a task throws an exception, `flush` ensures that its state will remain
-// consistent and will resume where it left off when called again.
-// However, `flush` does not make any arrangements to be called again if an
-// exception is thrown.
-function flush() {
- while (index < queue.length) {
- var currentIndex = index;
- // Advance the index before calling the task. This ensures that we will
- // begin flushing on the next task the task throws an error.
- index = index + 1;
- queue[currentIndex].call();
- // Prevent leaking memory for long chains of recursive calls to `asap`.
- // If we call `asap` within tasks scheduled by `asap`, the queue will
- // grow, but to avoid an O(n) walk for every task we execute, we don't
- // shift tasks off the queue after they have been executed.
- // Instead, we periodically shift 1024 tasks off the queue.
- if (index > capacity) {
- // Manually shift all values starting at the index back to the
- // beginning of the queue.
- for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {
- queue[scan] = queue[scan + index];
- }
- queue.length -= index;
- index = 0;
- }
- }
- queue.length = 0;
- index = 0;
- flushing = false;
-}
-
-// `requestFlush` is implemented using a strategy based on data collected from
-// every available SauceLabs Selenium web driver worker at time of writing.
-// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593
-
-// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that
-// have WebKitMutationObserver but not un-prefixed MutationObserver.
-// Must use `global` or `self` instead of `window` to work in both frames and web
-// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.
-
-/* globals self */
-var scope = typeof global !== "undefined" ? global : self;
-var BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;
-
-// MutationObservers are desirable because they have high priority and work
-// reliably everywhere they are implemented.
-// They are implemented in all modern browsers.
-//
-// - Android 4-4.3
-// - Chrome 26-34
-// - Firefox 14-29
-// - Internet Explorer 11
-// - iPad Safari 6-7.1
-// - iPhone Safari 7-7.1
-// - Safari 6-7
-if (typeof BrowserMutationObserver === "function") {
- requestFlush = makeRequestCallFromMutationObserver(flush);
-
-// MessageChannels are desirable because they give direct access to the HTML
-// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera
-// 11-12, and in web workers in many engines.
-// Although message channels yield to any queued rendering and IO tasks, they
-// would be better than imposing the 4ms delay of timers.
-// However, they do not work reliably in Internet Explorer or Safari.
-
-// Internet Explorer 10 is the only browser that has setImmediate but does
-// not have MutationObservers.
-// Although setImmediate yields to the browser's renderer, it would be
-// preferrable to falling back to setTimeout since it does not have
-// the minimum 4ms penalty.
-// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and
-// Desktop to a lesser extent) that renders both setImmediate and
-// MessageChannel useless for the purposes of ASAP.
-// https://github.com/kriskowal/q/issues/396
-
-// Timers are implemented universally.
-// We fall back to timers in workers in most engines, and in foreground
-// contexts in the following browsers.
-// However, note that even this simple case requires nuances to operate in a
-// broad spectrum of browsers.
-//
-// - Firefox 3-13
-// - Internet Explorer 6-9
-// - iPad Safari 4.3
-// - Lynx 2.8.7
-} else {
- requestFlush = makeRequestCallFromTimer(flush);
-}
-
-// `requestFlush` requests that the high priority event queue be flushed as
-// soon as possible.
-// This is useful to prevent an error thrown in a task from stalling the event
-// queue if the exception handled by Node.js’s
-// `process.on("uncaughtException")` or by a domain.
-rawAsap.requestFlush = requestFlush;
-
-// To request a high priority event, we induce a mutation observer by toggling
-// the text of a text node between "1" and "-1".
-function makeRequestCallFromMutationObserver(callback) {
- var toggle = 1;
- var observer = new BrowserMutationObserver(callback);
- var node = document.createTextNode("");
- observer.observe(node, {characterData: true});
- return function requestCall() {
- toggle = -toggle;
- node.data = toggle;
- };
-}
-
-// The message channel technique was discovered by Malte Ubl and was the
-// original foundation for this library.
-// http://www.nonblocking.io/2011/06/windownexttick.html
-
-// Safari 6.0.5 (at least) intermittently fails to create message ports on a
-// page's first load. Thankfully, this version of Safari supports
-// MutationObservers, so we don't need to fall back in that case.
-
-// function makeRequestCallFromMessageChannel(callback) {
-// var channel = new MessageChannel();
-// channel.port1.onmessage = callback;
-// return function requestCall() {
-// channel.port2.postMessage(0);
-// };
-// }
-
-// For reasons explained above, we are also unable to use `setImmediate`
-// under any circumstances.
-// Even if we were, there is another bug in Internet Explorer 10.
-// It is not sufficient to assign `setImmediate` to `requestFlush` because
-// `setImmediate` must be called *by name* and therefore must be wrapped in a
-// closure.
-// Never forget.
-
-// function makeRequestCallFromSetImmediate(callback) {
-// return function requestCall() {
-// setImmediate(callback);
-// };
-// }
-
-// Safari 6.0 has a problem where timers will get lost while the user is
-// scrolling. This problem does not impact ASAP because Safari 6.0 supports
-// mutation observers, so that implementation is used instead.
-// However, if we ever elect to use timers in Safari, the prevalent work-around
-// is to add a scroll event listener that calls for a flush.
-
-// `setTimeout` does not call the passed callback if the delay is less than
-// approximately 7 in web workers in Firefox 8 through 18, and sometimes not
-// even then.
-
-function makeRequestCallFromTimer(callback) {
- return function requestCall() {
- // We dispatch a timeout with a specified delay of 0 for engines that
- // can reliably accommodate that request. This will usually be snapped
- // to a 4 milisecond delay, but once we're flushing, there's no delay
- // between events.
- var timeoutHandle = setTimeout(handleTimer, 0);
- // However, since this timer gets frequently dropped in Firefox
- // workers, we enlist an interval handle that will try to fire
- // an event 20 times per second until it succeeds.
- var intervalHandle = setInterval(handleTimer, 50);
-
- function handleTimer() {
- // Whichever timer succeeds will cancel both timers and
- // execute the callback.
- clearTimeout(timeoutHandle);
- clearInterval(intervalHandle);
- callback();
- }
- };
-}
-
-// This is for `asap.js` only.
-// Its name will be periodically randomized to break any code that depends on
-// its existence.
-rawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;
-
-// ASAP was originally a nextTick shim included in Q. This was factored out
-// into this ASAP package. It was later adapted to RSVP which made further
-// amendments. These decisions, particularly to marginalize MessageChannel and
-// to capture the MutationObserver implementation in a closure, were integrated
-// back into ASAP proper.
-// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js
diff --git a/node_modules/asap/package.json b/node_modules/asap/package.json
deleted file mode 100644
index 0788655ec..000000000
--- a/node_modules/asap/package.json
+++ /dev/null
@@ -1,126 +0,0 @@
-{
- "_args": [
- [
- {
- "raw": "asap@2.0.5",
- "scope": null,
- "escapedName": "asap",
- "name": "asap",
- "rawSpec": "2.0.5",
- "spec": "2.0.5",
- "type": "version"
- },
- "/Users/rebecca/code/npm"
- ]
- ],
- "_from": "asap@2.0.5",
- "_id": "asap@2.0.5",
- "_inCache": true,
- "_location": "/asap",
- "_nodeVersion": "0.10.32",
- "_npmOperationalInternal": {
- "host": "packages-12-west.internal.npmjs.com",
- "tmp": "tmp/asap-2.0.5.tgz_1474846549990_0.794441896257922"
- },
- "_npmUser": {
- "name": "kriskowal",
- "email": "kris.kowal@cixar.com"
- },
- "_npmVersion": "2.14.7",
- "_phantomChildren": {},
- "_requested": {
- "raw": "asap@2.0.5",
- "scope": null,
- "escapedName": "asap",
- "name": "asap",
- "rawSpec": "2.0.5",
- "spec": "2.0.5",
- "type": "version"
- },
- "_requiredBy": [
- "#USER",
- "/",
- "/dezalgo"
- ],
- "_resolved": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz",
- "_shasum": "522765b50c3510490e52d7dcfe085ef9ba96958f",
- "_shrinkwrap": null,
- "_spec": "asap@2.0.5",
- "_where": "/Users/rebecca/code/npm",
- "browser": {
- "./asap": "./browser-asap.js",
- "./asap.js": "./browser-asap.js",
- "./raw": "./browser-raw.js",
- "./raw.js": "./browser-raw.js",
- "./test/domain.js": "./test/browser-domain.js"
- },
- "bugs": {
- "url": "https://github.com/kriskowal/asap/issues"
- },
- "dependencies": {},
- "description": "High-priority task queue for Node.js and browsers",
- "devDependencies": {
- "benchmark": "^1.0.0",
- "events": "^1.0.1",
- "jshint": "^2.5.1",
- "knox": "^0.8.10",
- "mr": "^2.0.5",
- "opener": "^1.3.0",
- "q": "^2.0.3",
- "q-io": "^2.0.3",
- "saucelabs": "^0.1.1",
- "wd": "^0.2.21",
- "weak-map": "^1.0.5"
- },
- "directories": {},
- "dist": {
- "shasum": "522765b50c3510490e52d7dcfe085ef9ba96958f",
- "tarball": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz"
- },
- "files": [
- "raw.js",
- "asap.js",
- "browser-raw.js",
- "browser-asap.js"
- ],
- "gitHead": "e7f3d29eed4967ecfcaddbfc9542e2ee12b76227",
- "homepage": "https://github.com/kriskowal/asap#readme",
- "keywords": [
- "event",
- "task",
- "queue"
- ],
- "license": "MIT",
- "main": "./asap.js",
- "maintainers": [
- {
- "name": "kriskowal",
- "email": "kris.kowal@cixar.com"
- },
- {
- "name": "forbeslindesay",
- "email": "forbes@lindesay.co.uk"
- }
- ],
- "name": "asap",
- "optionalDependencies": {},
- "readme": "ERROR: No README data found!",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/kriskowal/asap.git"
- },
- "scripts": {
- "benchmarks": "node benchmarks",
- "lint": "jshint raw.js asap.js browser-raw.js browser-asap.js $(find scripts -name '*.js' | grep -v gauntlet)",
- "test": "npm run lint && npm run test-node",
- "test-browser": "node scripts/publish-bundle.js test/asap-test.js | xargs opener",
- "test-node": "node test/asap-test.js",
- "test-publish": "node scripts/publish-bundle.js test/asap-test.js | pbcopy",
- "test-saucelabs": "node scripts/saucelabs.js test/asap-test.js scripts/saucelabs-spot-configurations.json",
- "test-saucelabs-all": "node scripts/saucelabs.js test/asap-test.js scripts/saucelabs-all-configurations.json",
- "test-saucelabs-worker": "node scripts/saucelabs-worker-test.js scripts/saucelabs-spot-configurations.json",
- "test-saucelabs-worker-all": "node scripts/saucelabs-worker-test.js scripts/saucelabs-all-configurations.json",
- "test-travis": "npm run lint && npm run test-node && npm run test-saucelabs && npm run test-saucelabs-worker"
- },
- "version": "2.0.5"
-}
diff --git a/node_modules/asap/raw.js b/node_modules/asap/raw.js
deleted file mode 100644
index ae3b89231..000000000
--- a/node_modules/asap/raw.js
+++ /dev/null
@@ -1,101 +0,0 @@
-"use strict";
-
-var domain; // The domain module is executed on demand
-var hasSetImmediate = typeof setImmediate === "function";
-
-// Use the fastest means possible to execute a task in its own turn, with
-// priority over other events including network IO events in Node.js.
-//
-// An exception thrown by a task will permanently interrupt the processing of
-// subsequent tasks. The higher level `asap` function ensures that if an
-// exception is thrown by a task, that the task queue will continue flushing as
-// soon as possible, but if you use `rawAsap` directly, you are responsible to
-// either ensure that no exceptions are thrown from your task, or to manually
-// call `rawAsap.requestFlush` if an exception is thrown.
-module.exports = rawAsap;
-function rawAsap(task) {
- if (!queue.length) {
- requestFlush();
- flushing = true;
- }
- // Avoids a function call
- queue[queue.length] = task;
-}
-
-var queue = [];
-// Once a flush has been requested, no further calls to `requestFlush` are
-// necessary until the next `flush` completes.
-var flushing = false;
-// The position of the next task to execute in the task queue. This is
-// preserved between calls to `flush` so that it can be resumed if
-// a task throws an exception.
-var index = 0;
-// If a task schedules additional tasks recursively, the task queue can grow
-// unbounded. To prevent memory excaustion, the task queue will periodically
-// truncate already-completed tasks.
-var capacity = 1024;
-
-// The flush function processes all tasks that have been scheduled with
-// `rawAsap` unless and until one of those tasks throws an exception.
-// If a task throws an exception, `flush` ensures that its state will remain
-// consistent and will resume where it left off when called again.
-// However, `flush` does not make any arrangements to be called again if an
-// exception is thrown.
-function flush() {
- while (index < queue.length) {
- var currentIndex = index;
- // Advance the index before calling the task. This ensures that we will
- // begin flushing on the next task the task throws an error.
- index = index + 1;
- queue[currentIndex].call();
- // Prevent leaking memory for long chains of recursive calls to `asap`.
- // If we call `asap` within tasks scheduled by `asap`, the queue will
- // grow, but to avoid an O(n) walk for every task we execute, we don't
- // shift tasks off the queue after they have been executed.
- // Instead, we periodically shift 1024 tasks off the queue.
- if (index > capacity) {
- // Manually shift all values starting at the index back to the
- // beginning of the queue.
- for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {
- queue[scan] = queue[scan + index];
- }
- queue.length -= index;
- index = 0;
- }
- }
- queue.length = 0;
- index = 0;
- flushing = false;
-}
-
-rawAsap.requestFlush = requestFlush;
-function requestFlush() {
- // Ensure flushing is not bound to any domain.
- // It is not sufficient to exit the domain, because domains exist on a stack.
- // To execute code outside of any domain, the following dance is necessary.
- var parentDomain = process.domain;
- if (parentDomain) {
- if (!domain) {
- // Lazy execute the domain module.
- // Only employed if the user elects to use domains.
- domain = require("domain");
- }
- domain.active = process.domain = null;
- }
-
- // `setImmediate` is slower that `process.nextTick`, but `process.nextTick`
- // cannot handle recursion.
- // `requestFlush` will only be called recursively from `asap.js`, to resume
- // flushing after an error is thrown into a domain.
- // Conveniently, `setImmediate` was introduced in the same version
- // `process.nextTick` started throwing recursion errors.
- if (flushing && hasSetImmediate) {
- setImmediate(flush);
- } else {
- process.nextTick(flush);
- }
-
- if (parentDomain) {
- domain.active = process.domain = parentDomain;
- }
-}