summaryrefslogtreecommitdiff
path: root/dist/async.js
diff options
context:
space:
mode:
Diffstat (limited to 'dist/async.js')
-rw-r--r--dist/async.js286
1 files changed, 123 insertions, 163 deletions
diff --git a/dist/async.js b/dist/async.js
index 31e7620..034bf70 100644
--- a/dist/async.js
+++ b/dist/async.js
@@ -1,8 +1,10 @@
+'use strict';
+
/*!
* async
* https://github.com/caolan/async
*
- * Copyright 2010-2014 Caolan McMahon
+ * Copyright 2010-2016 Caolan McMahon
* Released under the MIT license
*/
(function () {
@@ -25,9 +27,7 @@
// Establish the root object, `window` (`self`) in the browser, `global`
// on the server, or `this` in some virtual machines. We use `self`
// instead of `window` for `WebWorker` support.
- var root = typeof self === 'object' && self.self === self && self ||
- typeof global === 'object' && global.global === global && global ||
- this;
+ var root = typeof self === 'object' && self.self === self && self || typeof global === 'object' && global.global === global && global || this;
if (root != null) {
previous_async = root.async;
@@ -39,7 +39,7 @@
};
function only_once(fn) {
- return function() {
+ return function () {
if (fn === null) throw new Error("Callback was already called.");
fn.apply(this, arguments);
fn = null;
@@ -47,7 +47,7 @@
}
function _once(fn) {
- return function() {
+ return function () {
if (fn === null) return;
fn.apply(this, arguments);
fn = null;
@@ -63,18 +63,15 @@
};
// Ported from underscore.js isObject
- var _isObject = function(obj) {
+ var _isObject = function (obj) {
var type = typeof obj;
return type === 'function' || type === 'object' && !!obj;
};
function _isArrayLike(arr) {
- return _isArray(arr) || (
- // has a positive integer length property
- typeof arr.length === "number" &&
- arr.length >= 0 &&
- arr.length % 1 === 0
- );
+ return _isArray(arr) ||
+ // has a positive integer length property
+ typeof arr.length === "number" && arr.length >= 0 && arr.length % 1 === 0;
}
function _arrayEach(arr, iterator) {
@@ -98,7 +95,9 @@
}
function _range(count) {
- return _map(Array(count), function (v, i) { return i; });
+ return _map(Array(count), function (v, i) {
+ return i;
+ });
}
function _reduce(arr, iterator, memo) {
@@ -156,15 +155,17 @@
// From underscore.js (https://github.com/jashkenas/underscore/pull/2140).
function _restParam(func, startIndex) {
startIndex = startIndex == null ? func.length - 1 : +startIndex;
- return function() {
+ return function () {
var length = Math.max(arguments.length - startIndex, 0);
var rest = Array(length);
for (var index = 0; index < length; index++) {
rest[index] = arguments[index + startIndex];
}
switch (startIndex) {
- case 0: return func.call(this, rest);
- case 1: return func.call(this, arguments[0], rest);
+ case 0:
+ return func.call(this, rest);
+ case 1:
+ return func.call(this, arguments[0], rest);
}
// Currently unused but handle cases outside of the switch statement:
// var args = Array(startIndex + 1);
@@ -189,10 +190,10 @@
// capture the global reference to guard against fakeTimer mocks
var _setImmediate = typeof setImmediate === 'function' && setImmediate;
- var _delay = _setImmediate ? function(fn) {
+ var _delay = _setImmediate ? function (fn) {
// not a direct alias for IE10 compatibility
_setImmediate(fn);
- } : function(fn) {
+ } : function (fn) {
setTimeout(fn, 0);
};
@@ -203,30 +204,25 @@
}
async.setImmediate = _setImmediate ? _delay : async.nextTick;
-
- async.forEach =
- async.each = function (arr, iterator, callback) {
+ async.forEach = async.each = function (arr, iterator, callback) {
return async.eachOf(arr, _withoutIndex(iterator), callback);
};
- async.forEachSeries =
- async.eachSeries = function (arr, iterator, callback) {
+ async.forEachSeries = async.eachSeries = function (arr, iterator, callback) {
return async.eachOfSeries(arr, _withoutIndex(iterator), callback);
};
-
- async.forEachLimit =
- async.eachLimit = function (arr, limit, iterator, callback) {
+ async.forEachLimit = async.eachLimit = function (arr, limit, iterator, callback) {
return _eachOfLimit(limit)(arr, _withoutIndex(iterator), callback);
};
- async.forEachOf =
- async.eachOf = function (object, iterator, callback) {
+ async.forEachOf = async.eachOf = function (object, iterator, callback) {
callback = _once(callback || noop);
object = object || [];
var iter = _keyIterator(object);
- var key, completed = 0;
+ var key,
+ completed = 0;
while ((key = iter()) != null) {
completed += 1;
@@ -243,13 +239,12 @@
// Check key is null in case iterator isn't exhausted
// and done resolved synchronously.
else if (key === null && completed <= 0) {
- callback(null);
- }
+ callback(null);
+ }
}
};
- async.forEachOfSeries =
- async.eachOfSeries = function (obj, iterator, callback) {
+ async.forEachOfSeries = async.eachOfSeries = function (obj, iterator, callback) {
callback = _once(callback || noop);
obj = obj || [];
var nextKey = _keyIterator(obj);
@@ -262,8 +257,7 @@
iterator(obj[key], key, only_once(function (err) {
if (err) {
callback(err);
- }
- else {
+ } else {
key = nextKey();
if (key === null) {
return callback(null);
@@ -281,10 +275,7 @@
iterate();
};
-
-
- async.forEachOfLimit =
- async.eachOfLimit = function (obj, limit, iterator, callback) {
+ async.forEachOfLimit = async.eachOfLimit = function (obj, limit, iterator, callback) {
_eachOfLimit(limit)(obj, iterator, callback);
};
@@ -301,7 +292,7 @@
var running = 0;
var errored = false;
- (function replenish () {
+ (function replenish() {
if (done && running <= 0) {
return callback(null);
}
@@ -321,8 +312,7 @@
if (err) {
callback(err);
errored = true;
- }
- else {
+ } else {
replenish();
}
}));
@@ -331,7 +321,6 @@
};
}
-
function doParallel(fn) {
return function (obj, iterator, callback) {
return fn(async.eachOf, obj, iterator, callback);
@@ -368,9 +357,7 @@
// reduce only has a series version, as doing reduce in parallel won't
// work in many situations.
- async.inject =
- async.foldl =
- async.reduce = function (arr, memo, iterator, callback) {
+ async.inject = async.foldl = async.reduce = function (arr, memo, iterator, callback) {
async.eachOfSeries(arr, function (x, i, callback) {
iterator(memo, x, function (err, v) {
memo = v;
@@ -381,8 +368,7 @@
});
};
- async.foldr =
- async.reduceRight = function (arr, memo, iterator, callback) {
+ async.foldr = async.reduceRight = function (arr, memo, iterator, callback) {
var reversed = _map(arr, identity).reverse();
async.reduce(reversed, memo, iterator, callback);
};
@@ -394,9 +380,9 @@
memo = _isArray(arr) ? [] : {};
}
- async.eachOf(arr, function(v, k, cb) {
+ async.eachOf(arr, function (v, k, cb) {
iterator(memo, v, k, cb);
- }, function(err) {
+ }, function (err) {
callback(err, memo);
});
};
@@ -406,7 +392,7 @@
eachfn(arr, function (x, index, callback) {
iterator(x, function (v) {
if (v) {
- results.push({index: index, value: x});
+ results.push({ index: index, value: x });
}
callback();
});
@@ -419,18 +405,15 @@
});
}
- async.select =
- async.filter = doParallel(_filter);
+ async.select = async.filter = doParallel(_filter);
- async.selectLimit =
- async.filterLimit = doParallelLimit(_filter);
+ async.selectLimit = async.filterLimit = doParallelLimit(_filter);
- async.selectSeries =
- async.filterSeries = doSeries(_filter);
+ async.selectSeries = async.filterSeries = doSeries(_filter);
function _reject(eachfn, arr, iterator, callback) {
- _filter(eachfn, arr, function(value, cb) {
- iterator(value, function(v) {
+ _filter(eachfn, arr, function (value, cb) {
+ iterator(value, function (v) {
cb(!v);
});
}, callback);
@@ -440,7 +423,7 @@
async.rejectSeries = doSeries(_reject);
function _createTester(eachfn, check, getResult) {
- return function(arr, limit, iterator, cb) {
+ return function (arr, limit, iterator, cb) {
function done() {
if (cb) cb(getResult(false, void 0));
}
@@ -464,13 +447,11 @@
};
}
- async.any =
- async.some = _createTester(async.eachOf, toBool, identity);
+ async.any = async.some = _createTester(async.eachOf, toBool, identity);
async.someLimit = _createTester(async.eachOfLimit, toBool, identity);
- async.all =
- async.every = _createTester(async.eachOf, notId, notId);
+ async.all = async.every = _createTester(async.eachOf, notId, notId);
async.everyLimit = _createTester(async.eachOfLimit, notId, notId);
@@ -486,25 +467,23 @@
iterator(x, function (err, criteria) {
if (err) {
callback(err);
- }
- else {
- callback(null, {value: x, criteria: criteria});
+ } else {
+ callback(null, { value: x, criteria: criteria });
}
});
}, function (err, results) {
if (err) {
return callback(err);
- }
- else {
+ } else {
callback(null, _map(results.sort(comparator), function (x) {
return x.value;
}));
}
-
});
function comparator(left, right) {
- var a = left.criteria, b = right.criteria;
+ var a = left.criteria,
+ b = right.criteria;
return a < b ? -1 : a > b ? 1 : 0;
}
};
@@ -553,23 +532,22 @@
_arrayEach(keys, function (k) {
if (hasError) return;
- var task = _isArray(tasks[k]) ? tasks[k]: [tasks[k]];
- var taskCallback = _restParam(function(err, args) {
+ var task = _isArray(tasks[k]) ? tasks[k] : [tasks[k]];
+ var taskCallback = _restParam(function (err, args) {
runningTasks--;
if (args.length <= 1) {
args = args[0];
}
if (err) {
var safeResults = {};
- _forEachOf(results, function(val, rkey) {
+ _forEachOf(results, function (val, rkey) {
safeResults[rkey] = val;
});
safeResults[k] = args;
hasError = true;
callback(err, safeResults);
- }
- else {
+ } else {
results[k] = args;
async.setImmediate(taskComplete);
}
@@ -588,14 +566,13 @@
}
function ready() {
return runningTasks < concurrency && _reduce(requires, function (a, x) {
- return (a && results.hasOwnProperty(x));
+ return a && results.hasOwnProperty(x);
}, true) && !results.hasOwnProperty(k);
}
if (ready()) {
runningTasks++;
task[task.length - 1](taskCallback, results);
- }
- else {
+ } else {
addListener(listener);
}
function listener() {
@@ -608,9 +585,7 @@
});
};
-
-
- async.retry = function(times, task, callback) {
+ async.retry = function (times, task, callback) {
var DEFAULT_TIMES = 5;
var DEFAULT_INTERVAL = 0;
@@ -621,10 +596,10 @@
interval: DEFAULT_INTERVAL
};
- function parseTimes(acc, t){
- if(typeof t === 'number'){
+ function parseTimes(acc, t) {
+ if (typeof t === 'number') {
acc.times = parseInt(t, 10) || DEFAULT_TIMES;
- } else if(typeof t === 'object'){
+ } else if (typeof t === 'object') {
acc.times = parseInt(t.times, 10) || DEFAULT_TIMES;
acc.interval = parseInt(t.interval, 10) || DEFAULT_INTERVAL;
} else {
@@ -647,16 +622,16 @@
function wrappedTask(wrappedCallback, wrappedResults) {
function retryAttempt(task, finalAttempt) {
- return function(seriesCallback) {
- task(function(err, result){
- seriesCallback(!err || finalAttempt, {err: err, result: result});
+ return function (seriesCallback) {
+ task(function (err, result) {
+ seriesCallback(!err || finalAttempt, { err: err, result: result });
}, wrappedResults);
};
}
- function retryInterval(interval){
- return function(seriesCallback){
- setTimeout(function(){
+ function retryInterval(interval) {
+ return function (seriesCallback) {
+ setTimeout(function () {
seriesCallback(null);
}, interval);
};
@@ -664,14 +639,14 @@
while (opts.times) {
- var finalAttempt = !(opts.times-=1);
+ var finalAttempt = !(opts.times -= 1);
attempts.push(retryAttempt(opts.task, finalAttempt));
- if(!finalAttempt && opts.interval > 0){
+ if (!finalAttempt && opts.interval > 0) {
attempts.push(retryInterval(opts.interval));
}
}
- async.series(attempts, function(done, data){
+ async.series(attempts, function (done, data) {
data = data[data.length - 1];
(wrappedCallback || opts.callback)(data.err, data.result);
});
@@ -694,13 +669,11 @@
return _restParam(function (err, args) {
if (err) {
callback.apply(null, [err].concat(args));
- }
- else {
+ } else {
var next = iterator.next();
if (next) {
args.push(wrapIterator(next));
- }
- else {
+ } else {
args.push(callback);
}
ensureAsync(iterator).apply(null, args);
@@ -731,11 +704,11 @@
_parallel(async.eachOf, tasks, callback);
};
- async.parallelLimit = function(tasks, limit, callback) {
+ async.parallelLimit = function (tasks, limit, callback) {
_parallel(_eachOfLimit(limit), tasks, callback);
};
- async.series = function(tasks, callback) {
+ async.series = function (tasks, callback) {
_parallel(async.eachOfSeries, tasks, callback);
};
@@ -748,7 +721,7 @@
return fn.next();
}
fn.next = function () {
- return (index < tasks.length - 1) ? makeCallback(index + 1): null;
+ return index < tasks.length - 1 ? makeCallback(index + 1) : null;
};
return fn;
}
@@ -757,9 +730,7 @@
async.apply = _restParam(function (fn, args) {
return _restParam(function (callArgs) {
- return fn.apply(
- null, args.concat(callArgs)
- );
+ return fn.apply(null, args.concat(callArgs));
});
});
@@ -780,7 +751,7 @@
async.whilst = function (test, iterator, callback) {
callback = callback || noop;
if (test()) {
- var next = _restParam(function(err, args) {
+ var next = _restParam(function (err, args) {
if (err) {
callback(err);
} else if (test.apply(this, args)) {
@@ -797,19 +768,19 @@
async.doWhilst = function (iterator, test, callback) {
var calls = 0;
- return async.whilst(function() {
+ return async.whilst(function () {
return ++calls <= 1 || test.apply(this, arguments);
}, iterator, callback);
};
async.until = function (test, iterator, callback) {
- return async.whilst(function() {
+ return async.whilst(function () {
return !test.apply(this, arguments);
}, iterator, callback);
};
async.doUntil = function (iterator, test, callback) {
- return async.doWhilst(iterator, function() {
+ return async.doWhilst(iterator, function () {
return !test.apply(this, arguments);
}, callback);
};
@@ -817,7 +788,7 @@
async.during = function (test, iterator, callback) {
callback = callback || noop;
- var next = _restParam(function(err, args) {
+ var next = _restParam(function (err, args) {
if (err) {
callback(err);
} else {
@@ -826,7 +797,7 @@
}
});
- var check = function(err, truth) {
+ var check = function (err, truth) {
if (err) {
callback(err);
} else if (truth) {
@@ -841,7 +812,7 @@
async.doDuring = function (iterator, test, callback) {
var calls = 0;
- async.during(function(next) {
+ async.during(function (next) {
if (calls++ < 1) {
next(null, true);
} else {
@@ -853,8 +824,7 @@
function _queue(worker, concurrency, payload) {
if (concurrency == null) {
concurrency = 1;
- }
- else if(concurrency === 0) {
+ } else if (concurrency === 0) {
throw new Error('Concurrency must not be zero');
}
function _insert(q, data, pos, callback) {
@@ -865,13 +835,13 @@
if (!_isArray(data)) {
data = [data];
}
- if(data.length === 0 && q.idle()) {
+ if (data.length === 0 && q.idle()) {
// call drain immediately if there are no tasks
- return async.setImmediate(function() {
+ return async.setImmediate(function () {
q.drain();
});
}
- _arrayEach(data, function(task) {
+ _arrayEach(data, function (task) {
var item = {
data: task,
callback: callback || noop
@@ -890,7 +860,7 @@
async.setImmediate(q.process);
}
function _next(q, tasks) {
- return function(){
+ return function () {
workers -= 1;
var removed = false;
@@ -934,11 +904,9 @@
_insert(q, data, true, callback);
},
process: function () {
- while(!q.paused && workers < q.concurrency && q.tasks.length){
+ while (!q.paused && workers < q.concurrency && q.tasks.length) {
- var tasks = q.payload ?
- q.tasks.splice(0, q.payload) :
- q.tasks.splice(0, q.tasks.length);
+ var tasks = q.payload ? q.tasks.splice(0, q.payload) : q.tasks.splice(0, q.tasks.length);
var data = _map(tasks, function (task) {
return task.data;
@@ -962,14 +930,16 @@
workersList: function () {
return workersList;
},
- idle: function() {
+ idle: function () {
return q.tasks.length + workers === 0;
},
pause: function () {
q.paused = true;
},
resume: function () {
- if (q.paused === false) { return; }
+ if (q.paused === false) {
+ return;
+ }
q.paused = false;
var resumeCount = Math.min(q.concurrency, q.tasks.length);
// Need to call q.process once per concurrent
@@ -992,7 +962,7 @@
async.priorityQueue = function (worker, concurrency) {
- function _compareTasks(a, b){
+ function _compareTasks(a, b) {
return a.priority - b.priority;
}
@@ -1000,7 +970,7 @@
var beg = -1,
end = sequence.length - 1;
while (beg < end) {
- var mid = beg + ((end - beg + 1) >>> 1);
+ var mid = beg + (end - beg + 1 >>> 1);
if (compare(item, sequence[mid]) >= 0) {
beg = mid;
} else {
@@ -1018,13 +988,13 @@
if (!_isArray(data)) {
data = [data];
}
- if(data.length === 0) {
+ if (data.length === 0) {
// call drain immediately if there are no tasks
- return async.setImmediate(function() {
+ return async.setImmediate(function () {
q.drain();
});
}
- _arrayEach(data, function(task) {
+ _arrayEach(data, function (task) {
var item = {
data: task,
priority: priority,
@@ -1066,8 +1036,7 @@
if (console.error) {
console.error(err);
}
- }
- else if (console[name]) {
+ } else if (console[name]) {
_arrayEach(args, function (x) {
console[name](x);
});
@@ -1090,15 +1059,13 @@
var memoized = _restParam(function memoized(args) {
var callback = args.pop();
var key = hasher.apply(null, args);
- if (has.call(memo, key)) {
+ if (has.call(memo, key)) {
async.setImmediate(function () {
callback.apply(null, memo[key]);
});
- }
- else if (has.call(queues, key)) {
+ } else if (has.call(queues, key)) {
queues[key].push(callback);
- }
- else {
+ } else {
queues[key] = [callback];
fn.apply(null, args.concat([_restParam(function (args) {
memo[key] = args;
@@ -1133,7 +1100,7 @@
return async.mapLimit(_range(count), limit, iterator, callback);
};
- async.seq = function (/* functions... */) {
+ async.seq = function () /* functions... */{
var fns = arguments;
return _restParam(function (args) {
var that = this;
@@ -1149,32 +1116,28 @@
fn.apply(that, newargs.concat([_restParam(function (err, nextargs) {
cb(err, nextargs);
})]));
- },
- function (err, results) {
+ }, function (err, results) {
callback.apply(that, [err].concat(results));
});
});
};
- async.compose = function (/* functions... */) {
+ async.compose = function () /* functions... */{
return async.seq.apply(null, Array.prototype.reverse.call(arguments));
};
-
function _applyEach(eachfn) {
- return _restParam(function(fns, args) {
- var go = _restParam(function(args) {
+ return _restParam(function (fns, args) {
+ var go = _restParam(function (args) {
var that = this;
var callback = args.pop();
return eachfn(fns, function (fn, _, cb) {
fn.apply(that, args.concat([cb]));
- },
- callback);
+ }, callback);
});
if (args.length) {
return go.apply(this, args);
- }
- else {
+ } else {
return go;
}
});
@@ -1183,7 +1146,6 @@
async.applyEach = _applyEach(async.eachOf);
async.applyEachSeries = _applyEach(async.eachOfSeries);
-
async.forever = function (fn, callback) {
var done = only_once(callback || noop);
var task = ensureAsync(fn);
@@ -1217,15 +1179,14 @@
async.ensureAsync = ensureAsync;
- async.constant = _restParam(function(values) {
+ async.constant = _restParam(function (values) {
var args = [null].concat(values);
return function (callback) {
return callback.apply(this, args);
};
});
- async.wrapSync =
- async.asyncify = function asyncify(func) {
+ async.wrapSync = async.asyncify = function asyncify(func) {
return _restParam(function (args) {
var callback = args.pop();
var result;
@@ -1236,9 +1197,9 @@
}
// if result is Promise object
if (_isObject(result) && typeof result.then === "function") {
- result.then(function(value) {
+ result.then(function (value) {
callback(null, value);
- })["catch"](function(err) {
+ })["catch"](function (err) {
callback(err.message ? err : new Error(err));
});
} else {
@@ -1253,13 +1214,12 @@
}
// AMD / RequireJS
else if (typeof define === 'function' && define.amd) {
- define([], function () {
- return async;
- });
- }
- // included directly via <script> tag
- else {
- root.async = async;
- }
-
-}());
+ define([], function () {
+ return async;
+ });
+ }
+ // included directly via <script> tag
+ else {
+ root.async = async;
+ }
+})(); \ No newline at end of file