diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/immediate | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip | |
switch to vuepress
Diffstat (limited to 'node_modules/immediate')
| -rw-r--r-- | node_modules/immediate/.travis.yml | 12 | ||||
| -rw-r--r-- | node_modules/immediate/LICENSE.txt | 20 | ||||
| -rw-r--r-- | node_modules/immediate/README.md | 81 | ||||
| -rw-r--r-- | node_modules/immediate/bench.js | 89 | ||||
| -rw-r--r-- | node_modules/immediate/bower.json | 13 | ||||
| -rw-r--r-- | node_modules/immediate/component.json | 13 | ||||
| -rw-r--r-- | node_modules/immediate/dist/immediate.js | 165 | ||||
| -rw-r--r-- | node_modules/immediate/dist/immediate.min.js | 1 | ||||
| -rw-r--r-- | node_modules/immediate/lib/index.js | 96 | ||||
| -rw-r--r-- | node_modules/immediate/lib/messageChannel.js | 18 | ||||
| -rw-r--r-- | node_modules/immediate/lib/mutation.js | 22 | ||||
| -rw-r--r-- | node_modules/immediate/lib/nextTick.js | 11 | ||||
| -rw-r--r-- | node_modules/immediate/lib/stateChange.js | 24 | ||||
| -rw-r--r-- | node_modules/immediate/lib/timeout.js | 10 | ||||
| -rw-r--r-- | node_modules/immediate/package.json | 48 |
15 files changed, 623 insertions, 0 deletions
diff --git a/node_modules/immediate/.travis.yml b/node_modules/immediate/.travis.yml new file mode 100644 index 00000000..8c2c20b7 --- /dev/null +++ b/node_modules/immediate/.travis.yml @@ -0,0 +1,12 @@ +language: node_js +node_js: + - '0.10' +notifications: + email: false + +before_script: + - "export DISPLAY=:99.0" + - "sh -e /etc/init.d/xvfb start" + - "sleep 5" + # Workaround for Selenium #3280 issue + - "sudo sed -i 's/^127\\.0\\.0\\.1.*$/127.0.0.1 localhost/' /etc/hosts"
\ No newline at end of file diff --git a/node_modules/immediate/LICENSE.txt b/node_modules/immediate/LICENSE.txt new file mode 100644 index 00000000..88c18c27 --- /dev/null +++ b/node_modules/immediate/LICENSE.txt @@ -0,0 +1,20 @@ +Copyright (c) 2012 Barnesandnoble.com, llc, Donavon West, Domenic Denicola, Brian Cavalier + +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/immediate/README.md b/node_modules/immediate/README.md new file mode 100644 index 00000000..6d31c87f --- /dev/null +++ b/node_modules/immediate/README.md @@ -0,0 +1,81 @@ +# immediate [](https://travis-ci.org/calvinmetcalf/immediate) + +[](https://ci.testling.com/calvinmetcalf/immediate) + +``` +npm install immediate --save +``` + +then + +```js +var immediate = require("immediate"); + +immediate(function () { + // this will run soon +}); + +immediate(function (arg1, arg2) { + // get your args like in iojs +}, thing1, thing2); +``` + +## Introduction + +**immediate** is a microtask library, decended from [NobleJS's setImmediate](https://github.com/NobleJS/setImmediate), but including ideas from [Cujo's When](https://github.com/cujojs/when) and [RSVP][RSVP]. + +immediate takes the tricks from setImmedate and RSVP and combines them with the schedualer inspired (vaugly) by whens. + +Note versions 2.6.5 and earlier were strictly speaking a 'macrotask' library not a microtask one, [see this for the difference](https://github.com/YuzuJS/setImmediate#macrotasks-and-microtasks), if you need a macrotask library, [I got you covered](https://github.com/calvinmetcalf/macrotask). + +Several new features were added in versions 3.1.0 and 3.2.0 to maintain parity with +process.nextTick, but the 3.0.x series is still being kept up to date if you just need +the small barebones version + +## The Tricks + +### `process.nextTick` + +Note that we check for *actual* Node.js environments, not emulated ones like those produced by browserify or similar. + +### `MutationObserver` + +This is what [RSVP][RSVP] uses, it's very fast, details on [MDN](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver). + + +### `MessageChannel` + +Unfortunately, `postMessage` has completely different semantics inside web workers, and so cannot be used there. So we +turn to [`MessageChannel`][MessageChannel], which has worse browser support, but does work inside a web worker. + +### `<script> onreadystatechange` + +For our last trick, we pull something out to make things fast in Internet Explorer versions 6 through 8: namely, +creating a `<script>` element and firing our calls in its `onreadystatechange` event. This does execute in a future +turn of the event loop, and is also faster than `setTimeout(…, 0)`, so hey, why not? + +## Tricks we don't use + +### `setImmediate` +We avoid this process.nextTick in node is better suited to our needs and in Internet Explorer 10 there is a broken version of setImmediate we avoid using this. + + +## Reference and Reading + + * [Efficient Script Yielding W3C Editor's Draft][spec] + * [W3C mailing list post introducing the specification][list-post] + * [IE Test Drive demo][ie-demo] + * [Introductory blog post by Nicholas C. Zakas][ncz] + * I wrote a couple blog pots on this, [part 1][my-blog-1] and [part 2][my-blog-2] + +[RSVP]: https://github.com/tildeio/rsvp.js +[spec]: https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/setImmediate/Overview.html +[list-post]: http://lists.w3.org/Archives/Public/public-web-perf/2011Jun/0100.html +[ie-demo]: http://ie.microsoft.com/testdrive/Performance/setImmediateSorting/Default.html +[ncz]: http://www.nczonline.net/blog/2011/09/19/script-yielding-with-setimmediate/ +[nextTick]: http://nodejs.org/docs/v0.8.16/api/process.html#process_process_nexttick_callback +[postMessage]: http://www.whatwg.org/specs/web-apps/current-work/multipage/web-messaging.html#posting-messages +[MessageChannel]: http://www.whatwg.org/specs/web-apps/current-work/multipage/web-messaging.html#channel-messaging +[cross-browser-demo]: http://calvinmetcalf.github.io/setImmediate-shim-demo +[my-blog-1]:http://calvinmetcalf.com/post/61672207151/setimmediate-etc +[my-blog-2]:http://calvinmetcalf.com/post/61761231881/javascript-schedulers diff --git a/node_modules/immediate/bench.js b/node_modules/immediate/bench.js new file mode 100644 index 00000000..590ed350 --- /dev/null +++ b/node_modules/immediate/bench.js @@ -0,0 +1,89 @@ +var immediate = require('./lib/index'); + +function bench (num, done) { + var i = 1e3; + var time = process.hrtime(); + function next(i) { + var total = 50000; + var todo = total; + function nextInt1() { + if (--todo !== 0) { + return; + } + immediate(next, i -1); + } + function nextInt2() { + if (--todo !== 0) { + return; + } + immediate(next, i -1); + } + function nextInt3() { + if (--todo !== 0) { + return; + } + immediate(next, i -1); + } + function nextInt4() { + if (--todo !== 0) { + return; + } + immediate(next, i -1); + } + function nextInt5() { + if (--todo !== 0) { + return; + } + immediate(next, i -1); + } + if (i > 0) { + var j = 0; + while (j++ < total) { + switch (j % 5) { + case 0: + immediate(nextInt1); + break; + case 1: + immediate(nextInt2, 'arg'); + break; + case 2: + immediate(nextInt3, 'arg', 'another arg'); + break; + case 3: + immediate(nextInt4, 'arg', 'another arg', 'third arg'); + break; + case 4: + immediate(nextInt5, 'arg', 'another arg', 'third arg', '4th arg'); + break; + } + } + } else { + after(); + } + } + + immediate(next, i); + function after() { + var diff = process.hrtime(time); + var units = 'nanoseconds'; + var diftime = diff[0] * 1e9 + diff[1]; + if (diftime > 1e6) { + diftime /= 1e6; + units = 'milliseconds'; + } + if (diftime > 1000) { + diftime /= 1000; + units = 'seconds'; + } + console.log(`Benchmark ${num < 10 ? ('0' + num): num} took ${diftime.toFixed(4)} ${units}`); + done(num); + } +} +var runs = 20; +function afterRun(num) { + if (num === runs) { + return; + } + bench(num + 1, afterRun); +} +afterRun(0); diff --git a/node_modules/immediate/bower.json b/node_modules/immediate/bower.json new file mode 100644 index 00000000..8a2d604a --- /dev/null +++ b/node_modules/immediate/bower.json @@ -0,0 +1,13 @@ +{ + "name": "immediate", + "version": "3.2.1", + "description": "A cross browser microtask library", + "homepage": "https://github.com/calvinmetcalf/immediate", + "authors": [ + "Domenic Denicola <domenic@domenicdenicola.com> (http://domenicdenicola.com)", + "Donavon West <github@donavon.com> (http://donavon.com)", + "Yaffle", + "Calvin Metcalf <calvin.metcalf@gmail.com>" + ], + "main": "dist/immediate.js" +} diff --git a/node_modules/immediate/component.json b/node_modules/immediate/component.json new file mode 100644 index 00000000..16d6143d --- /dev/null +++ b/node_modules/immediate/component.json @@ -0,0 +1,13 @@ +{ + "name": "immediate", + "version": "3.2.1", + "description": "A cross browser microtask library", + "repo": "calvinmetcalf/immediate", + "keywords": [], + "development": {}, + "license": "MIT", + "main": "dist/immediate.js", + "scripts": [ + "dist/immediate.js" + ] +} diff --git a/node_modules/immediate/dist/immediate.js b/node_modules/immediate/dist/immediate.js new file mode 100644 index 00000000..8516dcf3 --- /dev/null +++ b/node_modules/immediate/dist/immediate.js @@ -0,0 +1,165 @@ +(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.immediate = 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<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){ +'use strict'; +var types = [ + _dereq_('./nextTick'), + _dereq_('./mutation.js'), + _dereq_('./messageChannel'), + _dereq_('./stateChange'), + _dereq_('./timeout') +]; +var draining; +var currentQueue; +var queueIndex = -1; +var queue = []; +var scheduled = false; +function cleanUpNextTick() { + draining = false; + if (currentQueue && currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + nextTick(); + } +} + +//named nextTick for less confusing stack traces +function nextTick() { + scheduled = false; + draining = true; + var len = queue.length; + var timeout = setTimeout(cleanUpNextTick); + while (len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + currentQueue[queueIndex].run(); + } + queueIndex = -1; + len = queue.length; + } + queueIndex = -1; + draining = false; + clearTimeout(timeout); +} +var scheduleDrain; +var i = -1; +var len = types.length; +while (++i < len) { + if (types[i] && types[i].test && types[i].test()) { + scheduleDrain = types[i].install(nextTick); + break; + } +} +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +module.exports = immediate; +function immediate(task) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(task, args)); + if (!scheduled && !draining) { + scheduled = true; + scheduleDrain(); + } +} + +},{"./messageChannel":2,"./mutation.js":3,"./nextTick":6,"./stateChange":4,"./timeout":5}],2:[function(_dereq_,module,exports){ +(function (global){ +'use strict'; + +exports.test = function () { + if (global.setImmediate) { + // we can only get here in IE10 + // which doesn't handel postMessage well + return false; + } + return typeof global.MessageChannel !== 'undefined'; +}; + +exports.install = function (func) { + var channel = new global.MessageChannel(); + channel.port1.onmessage = func; + return function () { + channel.port2.postMessage(0); + }; +}; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],3:[function(_dereq_,module,exports){ +(function (global){ +'use strict'; +//based off rsvp https://github.com/tildeio/rsvp.js +//license https://github.com/tildeio/rsvp.js/blob/master/LICENSE +//https://github.com/tildeio/rsvp.js/blob/master/lib/rsvp/asap.js + +var Mutation = global.MutationObserver || global.WebKitMutationObserver; + +exports.test = function () { + return Mutation; +}; + +exports.install = function (handle) { + var called = 0; + var observer = new Mutation(handle); + var element = global.document.createTextNode(''); + observer.observe(element, { + characterData: true + }); + return function () { + element.data = (called = ++called % 2); + }; +}; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],4:[function(_dereq_,module,exports){ +(function (global){ +'use strict'; + +exports.test = function () { + return 'document' in global && 'onreadystatechange' in global.document.createElement('script'); +}; + +exports.install = function (handle) { + return function () { + + // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted + // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called. + var scriptEl = global.document.createElement('script'); + scriptEl.onreadystatechange = function () { + handle(); + + scriptEl.onreadystatechange = null; + scriptEl.parentNode.removeChild(scriptEl); + scriptEl = null; + }; + global.document.documentElement.appendChild(scriptEl); + + return handle; + }; +}; +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],5:[function(_dereq_,module,exports){ +'use strict'; +exports.test = function () { + return true; +}; + +exports.install = function (t) { + return function () { + setTimeout(t, 0); + }; +}; +},{}],6:[function(_dereq_,module,exports){ + +},{}]},{},[1])(1) +}); diff --git a/node_modules/immediate/dist/immediate.min.js b/node_modules/immediate/dist/immediate.min.js new file mode 100644 index 00000000..7a2c4849 --- /dev/null +++ b/node_modules/immediate/dist/immediate.min.js @@ -0,0 +1 @@ +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n;n="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,n.immediate=e()}}(function(){return function e(n,t,o){function i(u,f){if(!t[u]){if(!n[u]){var a="function"==typeof require&&require;if(!f&&a)return a(u,!0);if(r)return r(u,!0);var s=new Error("Cannot find module '"+u+"'");throw s.code="MODULE_NOT_FOUND",s}var l=t[u]={exports:{}};n[u][0].call(l.exports,function(e){var t=n[u][1][e];return i(t?t:e)},l,l.exports,e,n,t,o)}return t[u].exports}for(var r="function"==typeof require&&require,u=0;u<o.length;u++)i(o[u]);return i}({1:[function(e,n,t){"use strict";function o(){f=!1,a&&a.length?d=a.concat(d):c=-1,d.length&&i()}function i(){p=!1,f=!0;for(var e=d.length,n=setTimeout(o);e;){for(a=d,d=[];++c<e;)a[c].run();c=-1,e=d.length}c=-1,f=!1,clearTimeout(n)}function r(e,n){this.fun=e,this.array=n}function u(e){var n=new Array(arguments.length-1);if(arguments.length>1)for(var t=1;t<arguments.length;t++)n[t-1]=arguments[t];d.push(new r(e,n)),p||f||(p=!0,s())}for(var f,a,s,l=[e("./nextTick"),e("./mutation.js"),e("./messageChannel"),e("./stateChange"),e("./timeout")],c=-1,d=[],p=!1,g=-1,m=l.length;++g<m;)if(l[g]&&l[g].test&&l[g].test()){s=l[g].install(i);break}r.prototype.run=function(){this.fun.apply(null,this.array)},n.exports=u},{"./messageChannel":2,"./mutation.js":3,"./nextTick":6,"./stateChange":4,"./timeout":5}],2:[function(e,n,t){(function(e){"use strict";t.test=function(){return e.setImmediate?!1:"undefined"!=typeof e.MessageChannel},t.install=function(n){var t=new e.MessageChannel;return t.port1.onmessage=n,function(){t.port2.postMessage(0)}}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],3:[function(e,n,t){(function(e){"use strict";var n=e.MutationObserver||e.WebKitMutationObserver;t.test=function(){return n},t.install=function(t){var o=0,i=new n(t),r=e.document.createTextNode("");return i.observe(r,{characterData:!0}),function(){r.data=o=++o%2}}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,n,t){(function(e){"use strict";t.test=function(){return"document"in e&&"onreadystatechange"in e.document.createElement("script")},t.install=function(n){return function(){var t=e.document.createElement("script");return t.onreadystatechange=function(){n(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},e.document.documentElement.appendChild(t),n}}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],5:[function(e,n,t){"use strict";t.test=function(){return!0},t.install=function(e){return function(){setTimeout(e,0)}}},{}],6:[function(e,n,t){},{}]},{},[1])(1)}); diff --git a/node_modules/immediate/lib/index.js b/node_modules/immediate/lib/index.js new file mode 100644 index 00000000..90c006ad --- /dev/null +++ b/node_modules/immediate/lib/index.js @@ -0,0 +1,96 @@ +'use strict'; +var types = [ + require('./nextTick'), + require('./mutation.js'), + require('./messageChannel'), + require('./stateChange'), + require('./timeout') +]; +var draining; +var currentQueue; +var queueIndex = -1; +var queue = []; +var scheduled = false; +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + nextTick(); + } +} + +//named nextTick for less confusing stack traces +function nextTick() { + if (draining) { + return; + } + scheduled = false; + draining = true; + var len = queue.length; + var timeout = setTimeout(cleanUpNextTick); + while (len) { + currentQueue = queue; + queue = []; + while (currentQueue && ++queueIndex < len) { + currentQueue[queueIndex].run(); + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + queueIndex = -1; + draining = false; + clearTimeout(timeout); +} +var scheduleDrain; +var i = -1; +var len = types.length; +while (++i < len) { + if (types[i] && types[i].test && types[i].test()) { + scheduleDrain = types[i].install(nextTick); + break; + } +} +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + var fun = this.fun; + var array = this.array; + switch (array.length) { + case 0: + return fun(); + case 1: + return fun(array[0]); + case 2: + return fun(array[0], array[1]); + case 3: + return fun(array[0], array[1], array[2]); + default: + return fun.apply(null, array); + } + +}; +module.exports = immediate; +function immediate(task) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(task, args)); + if (!scheduled && !draining) { + scheduled = true; + scheduleDrain(); + } +} diff --git a/node_modules/immediate/lib/messageChannel.js b/node_modules/immediate/lib/messageChannel.js new file mode 100644 index 00000000..a6ce360b --- /dev/null +++ b/node_modules/immediate/lib/messageChannel.js @@ -0,0 +1,18 @@ +'use strict'; + +exports.test = function () { + if (global.setImmediate) { + // we can only get here in IE10 + // which doesn't handel postMessage well + return false; + } + return typeof global.MessageChannel !== 'undefined'; +}; + +exports.install = function (func) { + var channel = new global.MessageChannel(); + channel.port1.onmessage = func; + return function () { + channel.port2.postMessage(0); + }; +};
\ No newline at end of file diff --git a/node_modules/immediate/lib/mutation.js b/node_modules/immediate/lib/mutation.js new file mode 100644 index 00000000..f1597412 --- /dev/null +++ b/node_modules/immediate/lib/mutation.js @@ -0,0 +1,22 @@ +'use strict'; +//based off rsvp https://github.com/tildeio/rsvp.js +//license https://github.com/tildeio/rsvp.js/blob/master/LICENSE +//https://github.com/tildeio/rsvp.js/blob/master/lib/rsvp/asap.js + +var Mutation = global.MutationObserver || global.WebKitMutationObserver; + +exports.test = function () { + return Mutation; +}; + +exports.install = function (handle) { + var called = 0; + var observer = new Mutation(handle); + var element = global.document.createTextNode(''); + observer.observe(element, { + characterData: true + }); + return function () { + element.data = (called = ++called % 2); + }; +};
\ No newline at end of file diff --git a/node_modules/immediate/lib/nextTick.js b/node_modules/immediate/lib/nextTick.js new file mode 100644 index 00000000..6acc0d76 --- /dev/null +++ b/node_modules/immediate/lib/nextTick.js @@ -0,0 +1,11 @@ +'use strict'; +exports.test = function () { + // Don't get fooled by e.g. browserify environments. + return (typeof process !== 'undefined') && !process.browser; +}; + +exports.install = function (func) { + return function () { + process.nextTick(func); + }; +}; diff --git a/node_modules/immediate/lib/stateChange.js b/node_modules/immediate/lib/stateChange.js new file mode 100644 index 00000000..5b2316d7 --- /dev/null +++ b/node_modules/immediate/lib/stateChange.js @@ -0,0 +1,24 @@ +'use strict'; + +exports.test = function () { + return 'document' in global && 'onreadystatechange' in global.document.createElement('script'); +}; + +exports.install = function (handle) { + return function () { + + // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted + // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called. + var scriptEl = global.document.createElement('script'); + scriptEl.onreadystatechange = function () { + handle(); + + scriptEl.onreadystatechange = null; + scriptEl.parentNode.removeChild(scriptEl); + scriptEl = null; + }; + global.document.documentElement.appendChild(scriptEl); + + return handle; + }; +};
\ No newline at end of file diff --git a/node_modules/immediate/lib/timeout.js b/node_modules/immediate/lib/timeout.js new file mode 100644 index 00000000..bd97fd2f --- /dev/null +++ b/node_modules/immediate/lib/timeout.js @@ -0,0 +1,10 @@ +'use strict'; +exports.test = function () { + return true; +}; + +exports.install = function (t) { + return function () { + setTimeout(t, 0); + }; +};
\ No newline at end of file diff --git a/node_modules/immediate/package.json b/node_modules/immediate/package.json new file mode 100644 index 00000000..8b490972 --- /dev/null +++ b/node_modules/immediate/package.json @@ -0,0 +1,48 @@ +{ + "name": "immediate", + "version": "3.2.3", + "description": "A cross browser microtask library", + "contributors": [ + "Domenic Denicola <domenic@domenicdenicola.com> (http://domenicdenicola.com)", + "Donavon West <github@donavon.com> (http://donavon.com)", + "Yaffle", + "Calvin Metcalf <calvin.metcalf@gmail.com>" + ], + "testling": { + "files": "test/tests.js", + "browsers": [ + "ie/6..latest", + "chrome/latest", + "firefox/3..latest", + "opera/10..latest", + "safari/4..latest", + "iphone/latest", + "ipad/latest", + "android-browser/latest" + ] + }, + "license": "MIT", + "repository": { + "type": "git", + "url": "git://github.com/calvinmetcalf/immediate.git" + }, + "browser": { + "./nextTick": false + }, + "bugs": "https://github.com/calvinmetcalf/immediate/issues", + "main": "lib/index.js", + "scripts": { + "build": "npm run build-js && npm run uglify", + "uglify": "uglifyjs dist/immediate.js -mc > dist/immediate.min.js", + "build-js": "browserify -s immediate ./lib/index.js | derequire > dist/immediate.js", + "test": "jshint lib/*.js && node test/tests.js | tspec" + }, + "devDependencies": { + "browserify": "^10.0.0", + "derequire": "^2.0.0", + "jshint": "^2.5.1", + "tap-spec": "^3.0.0", + "tape": "^4.0.0", + "uglify-js": "^2.4.13" + } +} |
