summaryrefslogtreecommitdiff
path: root/dist/async.js
diff options
context:
space:
mode:
Diffstat (limited to 'dist/async.js')
-rw-r--r--dist/async.js197
1 files changed, 98 insertions, 99 deletions
diff --git a/dist/async.js b/dist/async.js
index 7851f55..ae1bfeb 100644
--- a/dist/async.js
+++ b/dist/async.js
@@ -23,26 +23,6 @@ var initialParams = function (fn) {
};
/**
- * This method returns the first argument it receives.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {*} value Any value.
- * @returns {*} Returns `value`.
- * @example
- *
- * var object = { 'a': 1 };
- *
- * console.log(_.identity(object) === object);
- * // => true
- */
-function identity(value) {
- return value;
-}
-
-/**
* Checks if `value` is the
* [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
* of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
@@ -72,6 +52,34 @@ function isObject(value) {
return value != null && (type == 'object' || type == 'function');
}
+var hasSetImmediate = typeof setImmediate === 'function' && setImmediate;
+var hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function';
+
+function fallback(fn) {
+ setTimeout(fn, 0);
+}
+
+function wrap(defer) {
+ return function (fn/*, ...args*/) {
+ var args = slice(arguments, 1);
+ defer(function () {
+ fn.apply(null, args);
+ });
+ };
+}
+
+var _defer;
+
+if (hasSetImmediate) {
+ _defer = setImmediate;
+} else if (hasNextTick) {
+ _defer = process.nextTick;
+} else {
+ _defer = fallback;
+}
+
+var setImmediate$1 = wrap(_defer);
+
/**
* Take a sync function and make it async, passing its return value to a
* callback. This is useful for plugging sync functions into a waterfall,
@@ -91,7 +99,7 @@ function isObject(value) {
* @method
* @alias wrapSync
* @category Util
- * @param {Function} func - The synchronous funuction, or Promise-returning
+ * @param {Function} func - The synchronous function, or Promise-returning
* function to convert to an {@link AsyncFunction}.
* @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be
* invoked with `(args..., callback)`.
@@ -139,9 +147,9 @@ function asyncify(func) {
// if result is Promise object
if (isObject(result) && typeof result.then === 'function') {
result.then(function(value) {
- callback(null, value);
+ invokeCallback(callback, null, value);
}, function(err) {
- callback(err.message ? err : new Error(err));
+ invokeCallback(callback, err.message ? err : new Error(err));
});
} else {
callback(null, result);
@@ -149,19 +157,20 @@ function asyncify(func) {
});
}
-var supportsSymbol = typeof Symbol === 'function';
-
-function supportsAsync() {
- var supported;
+function invokeCallback(callback, error, value) {
try {
- /* eslint no-eval: 0 */
- supported = isAsync(eval('(async function () {})'));
+ callback(error, value);
} catch (e) {
- supported = false;
+ setImmediate$1(rethrow, e);
}
- return supported;
}
+function rethrow(error) {
+ throw error;
+}
+
+var supportsSymbol = typeof Symbol === 'function';
+
function isAsync(fn) {
return supportsSymbol && fn[Symbol.toStringTag] === 'AsyncFunction';
}
@@ -170,15 +179,13 @@ function wrapAsync(asyncFn) {
return isAsync(asyncFn) ? asyncify(asyncFn) : asyncFn;
}
-var wrapAsync$1 = supportsAsync() ? wrapAsync : identity;
-
function applyEach$1(eachfn) {
return function(fns/*, ...args*/) {
var args = slice(arguments, 1);
var go = initialParams(function(args, callback) {
var that = this;
return eachfn(fns, function (fn, cb) {
- wrapAsync$1(fn).apply(that, args.concat(cb));
+ wrapAsync(fn).apply(that, args.concat(cb));
}, callback);
});
if (args.length) {
@@ -965,7 +972,7 @@ function _eachOfLimit(limit) {
* `iteratee` functions have finished, or an error occurs. Invoked with (err).
*/
function eachOfLimit(coll, limit, iteratee, callback) {
- _eachOfLimit(limit)(coll, wrapAsync$1(iteratee), callback);
+ _eachOfLimit(limit)(coll, wrapAsync(iteratee), callback);
}
function doLimit(fn, limit) {
@@ -1041,12 +1048,12 @@ var eachOfGeneric = doLimit(eachOfLimit, Infinity);
*/
var eachOf = function(coll, iteratee, callback) {
var eachOfImplementation = isArrayLike(coll) ? eachOfArrayLike : eachOfGeneric;
- eachOfImplementation(coll, wrapAsync$1(iteratee), callback);
+ eachOfImplementation(coll, wrapAsync(iteratee), callback);
};
function doParallel(fn) {
return function (obj, iteratee, callback) {
- return fn(eachOf, obj, wrapAsync$1(iteratee), callback);
+ return fn(eachOf, obj, wrapAsync(iteratee), callback);
};
}
@@ -1055,7 +1062,7 @@ function _asyncMap(eachfn, arr, iteratee, callback) {
arr = arr || [];
var results = [];
var counter = 0;
- var _iteratee = wrapAsync$1(iteratee);
+ var _iteratee = wrapAsync(iteratee);
eachfn(arr, function (value, _, callback) {
var index = counter++;
@@ -1143,7 +1150,7 @@ var applyEach = applyEach$1(map);
function doParallelLimit(fn) {
return function (obj, limit, iteratee, callback) {
- return fn(_eachOfLimit(limit), obj, wrapAsync$1(iteratee), callback);
+ return fn(_eachOfLimit(limit), obj, wrapAsync(iteratee), callback);
};
}
@@ -1607,7 +1614,7 @@ var auto = function (tasks, concurrency, callback) {
});
runningTasks++;
- var taskFn = wrapAsync$1(task[task.length - 1]);
+ var taskFn = wrapAsync(task[task.length - 1]);
if (task.length > 1) {
taskFn(results, taskCallback);
} else {
@@ -2085,41 +2092,13 @@ function autoInject(tasks, callback) {
return results[name];
});
newArgs.push(taskCb);
- wrapAsync$1(taskFn).apply(null, newArgs);
+ wrapAsync(taskFn).apply(null, newArgs);
}
});
auto(newTasks, callback);
}
-var hasSetImmediate = typeof setImmediate === 'function' && setImmediate;
-var hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function';
-
-function fallback(fn) {
- setTimeout(fn, 0);
-}
-
-function wrap(defer) {
- return function (fn/*, ...args*/) {
- var args = slice(arguments, 1);
- defer(function () {
- fn.apply(null, args);
- });
- };
-}
-
-var _defer;
-
-if (hasSetImmediate) {
- _defer = setImmediate;
-} else if (hasNextTick) {
- _defer = process.nextTick;
-} else {
- _defer = fallback;
-}
-
-var setImmediate$1 = wrap(_defer);
-
// Simple doubly linked list (https://en.wikipedia.org/wiki/Doubly_linked_list) implementation
// used for queues. This implementation assumes that the node provided by the user can be modified
// to adjust the next and last properties. We implement only the minimal functionality
@@ -2216,7 +2195,7 @@ function queue(worker, concurrency, payload) {
throw new Error('Concurrency must not be zero');
}
- var _worker = wrapAsync$1(worker);
+ var _worker = wrapAsync(worker);
var numRunning = 0;
var workersList = [];
@@ -2504,7 +2483,7 @@ var eachOfSeries = doLimit(eachOfLimit, 1);
*/
function reduce(coll, memo, iteratee, callback) {
callback = once(callback || noop);
- var _iteratee = wrapAsync$1(iteratee);
+ var _iteratee = wrapAsync(iteratee);
eachOfSeries(coll, function(x, i, callback) {
_iteratee(memo, x, function(err, v) {
memo = v;
@@ -2554,7 +2533,7 @@ function reduce(coll, memo, iteratee, callback) {
* });
*/
function seq(/*...functions*/) {
- var _functions = arrayMap(arguments, wrapAsync$1);
+ var _functions = arrayMap(arguments, wrapAsync);
return function(/*...args*/) {
var args = slice(arguments);
var that = this;
@@ -2658,7 +2637,7 @@ var concat = doParallel(concat$1);
function doSeries(fn) {
return function (obj, iteratee, callback) {
- return fn(eachOfSeries, obj, wrapAsync$1(iteratee), callback);
+ return fn(eachOfSeries, obj, wrapAsync(iteratee), callback);
};
}
@@ -2733,6 +2712,26 @@ var constant = function(/*...values*/) {
};
};
+/**
+ * This method returns the first argument it receives.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Util
+ * @param {*} value Any value.
+ * @returns {*} Returns `value`.
+ * @example
+ *
+ * var object = { 'a': 1 };
+ *
+ * console.log(_.identity(object) === object);
+ * // => true
+ */
+function identity(value) {
+ return value;
+}
+
function _createTester(check, getResult) {
return function(eachfn, arr, iteratee, cb) {
cb = cb || noop;
@@ -2864,7 +2863,7 @@ function consoleFunc(name) {
}
}
});
- wrapAsync$1(fn).apply(null, args);
+ wrapAsync(fn).apply(null, args);
};
}
@@ -2921,8 +2920,8 @@ var dir = consoleFunc('dir');
*/
function doDuring(fn, test, callback) {
callback = onlyOnce(callback || noop);
- var _fn = wrapAsync$1(fn);
- var _test = wrapAsync$1(test);
+ var _fn = wrapAsync(fn);
+ var _test = wrapAsync(test);
function next(err/*, ...args*/) {
if (err) return callback(err);
@@ -2965,7 +2964,7 @@ function doDuring(fn, test, callback) {
*/
function doWhilst(iteratee, test, callback) {
callback = onlyOnce(callback || noop);
- var _iteratee = wrapAsync$1(iteratee);
+ var _iteratee = wrapAsync(iteratee);
var next = function(err/*, ...args*/) {
if (err) return callback(err);
var args = slice(arguments, 1);
@@ -3039,8 +3038,8 @@ function doUntil(iteratee, test, callback) {
*/
function during(test, fn, callback) {
callback = onlyOnce(callback || noop);
- var _fn = wrapAsync$1(fn);
- var _test = wrapAsync$1(test);
+ var _fn = wrapAsync(fn);
+ var _test = wrapAsync(test);
function next(err) {
if (err) return callback(err);
@@ -3120,7 +3119,7 @@ function _withoutIndex(iteratee) {
* });
*/
function eachLimit(coll, iteratee, callback) {
- eachOf(coll, _withoutIndex(wrapAsync$1(iteratee)), callback);
+ eachOf(coll, _withoutIndex(wrapAsync(iteratee)), callback);
}
/**
@@ -3144,7 +3143,7 @@ function eachLimit(coll, iteratee, callback) {
* `iteratee` functions have finished, or an error occurs. Invoked with (err).
*/
function eachLimit$1(coll, limit, iteratee, callback) {
- _eachOfLimit(limit)(coll, _withoutIndex(wrapAsync$1(iteratee)), callback);
+ _eachOfLimit(limit)(coll, _withoutIndex(wrapAsync(iteratee)), callback);
}
/**
@@ -3355,7 +3354,7 @@ function filterGeneric(eachfn, coll, iteratee, callback) {
function _filter(eachfn, coll, iteratee, callback) {
var filter = isArrayLike(coll) ? filterArray : filterGeneric;
- filter(eachfn, coll, wrapAsync$1(iteratee), callback || noop);
+ filter(eachfn, coll, wrapAsync(iteratee), callback || noop);
}
/**
@@ -3458,7 +3457,7 @@ var filterSeries = doLimit(filterLimit, 1);
*/
function forever(fn, errback) {
var done = onlyOnce(errback || noop);
- var task = wrapAsync$1(ensureAsync(fn));
+ var task = wrapAsync(ensureAsync(fn));
function next(err) {
if (err) return done(err);
@@ -3488,7 +3487,7 @@ function forever(fn, errback) {
*/
var groupByLimit = function(coll, limit, iteratee, callback) {
callback = callback || noop;
- var _iteratee = wrapAsync$1(iteratee);
+ var _iteratee = wrapAsync(iteratee);
mapLimit(coll, limit, function(val, callback) {
_iteratee(val, function(err, key) {
if (err) return callback(err);
@@ -3628,7 +3627,7 @@ var log = consoleFunc('log');
function mapValuesLimit(obj, limit, iteratee, callback) {
callback = once(callback || noop);
var newObj = {};
- var _iteratee = wrapAsync$1(iteratee);
+ var _iteratee = wrapAsync(iteratee);
eachOfLimit(obj, limit, function(val, key, next) {
_iteratee(val, key, function (err, result) {
if (err) return next(err);
@@ -3753,7 +3752,7 @@ function memoize(fn, hasher) {
var memo = Object.create(null);
var queues = Object.create(null);
hasher = hasher || identity;
- var _fn = wrapAsync$1(fn);
+ var _fn = wrapAsync(fn);
var memoized = initialParams(function memoized(args, callback) {
var key = hasher.apply(null, args);
if (has(memo, key)) {
@@ -3828,7 +3827,7 @@ function _parallel(eachfn, tasks, callback) {
var results = isArrayLike(tasks) ? [] : {};
eachfn(tasks, function (task, key, callback) {
- wrapAsync$1(task)(function (err, result) {
+ wrapAsync(task)(function (err, result) {
if (arguments.length > 2) {
result = slice(arguments, 1);
}
@@ -4041,7 +4040,7 @@ function parallelLimit$1(tasks, limit, callback) {
* });
*/
var queue$1 = function (worker, concurrency) {
- var _worker = wrapAsync$1(worker);
+ var _worker = wrapAsync(worker);
return queue(function (items, cb) {
_worker(items[0], cb);
}, concurrency, 1);
@@ -4160,7 +4159,7 @@ function race(tasks, callback) {
if (!isArray(tasks)) return callback(new TypeError('First argument to race must be an array of functions'));
if (!tasks.length) return callback();
for (var i = 0, l = tasks.length; i < l; i++) {
- wrapAsync$1(tasks[i])(callback);
+ wrapAsync(tasks[i])(callback);
}
}
@@ -4231,7 +4230,7 @@ function reduceRight (array, memo, iteratee, callback) {
* });
*/
function reflect(fn) {
- var _fn = wrapAsync$1(fn);
+ var _fn = wrapAsync(fn);
return initialParams(function reflectOn(args, reflectCallback) {
args.push(function callback(error, cbArg) {
if (error) {
@@ -4554,7 +4553,7 @@ function retry(opts, task, callback) {
throw new Error("Invalid arguments for async.retry");
}
- var _task = wrapAsync$1(task);
+ var _task = wrapAsync(task);
var attempt = 1;
function retryAttempt() {
@@ -4605,7 +4604,7 @@ var retryable = function (opts, task) {
task = opts;
opts = null;
}
- var _task = wrapAsync$1(task);
+ var _task = wrapAsync(task);
return initialParams(function (args, callback) {
function taskFn(cb) {
_task.apply(null, args.concat(cb));
@@ -4810,7 +4809,7 @@ var someSeries = doLimit(someLimit, 1);
* });
*/
function sortBy (coll, iteratee, callback) {
- var _iteratee = wrapAsync$1(iteratee);
+ var _iteratee = wrapAsync(iteratee);
map(coll, function (x, callback) {
_iteratee(x, function (err, criteria) {
if (err) return callback(err);
@@ -4890,7 +4889,7 @@ function timeout(asyncFn, milliseconds, info) {
originalCallback(error);
}
- var fn = wrapAsync$1(asyncFn);
+ var fn = wrapAsync(asyncFn);
return initialParams(function (args, origCallback) {
originalCallback = origCallback;
@@ -4944,7 +4943,7 @@ function baseRange(start, end, step, fromRight) {
* @param {Function} callback - see [async.map]{@link module:Collections.map}.
*/
function timeLimit(count, limit, iteratee, callback) {
- var _iteratee = wrapAsync$1(iteratee);
+ var _iteratee = wrapAsync(iteratee);
mapLimit(baseRange(0, count, 1), limit, _iteratee, callback);
}
@@ -5047,7 +5046,7 @@ function transform (coll, accumulator, iteratee, callback) {
accumulator = isArray(coll) ? [] : {};
}
callback = once(callback || noop);
- var _iteratee = wrapAsync$1(iteratee);
+ var _iteratee = wrapAsync(iteratee);
eachOf(coll, function(v, k, cb) {
_iteratee(accumulator, v, k, cb);
@@ -5098,7 +5097,7 @@ function tryEach(tasks, callback) {
var result;
callback = callback || noop;
eachSeries(tasks, function(task, callback) {
- wrapAsync$1(task)(function (err, res/*, ...args*/) {
+ wrapAsync(task)(function (err, res/*, ...args*/) {
if (arguments.length > 2) {
result = slice(arguments, 1);
} else {
@@ -5167,7 +5166,7 @@ function unmemoize(fn) {
*/
function whilst(test, iteratee, callback) {
callback = onlyOnce(callback || noop);
- var _iteratee = wrapAsync$1(iteratee);
+ var _iteratee = wrapAsync(iteratee);
if (!test()) return callback(null);
var next = function(err/*, ...args*/) {
if (err) return callback(err);
@@ -5270,7 +5269,7 @@ var waterfall = function(tasks, callback) {
var taskIndex = 0;
function nextTask(args) {
- var task = wrapAsync$1(tasks[taskIndex++]);
+ var task = wrapAsync(tasks[taskIndex++]);
args.push(onlyOnce(next));
task.apply(null, args);
}