summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Early <alexander.early@gmail.com>2017-04-02 15:54:53 -0700
committerAlexander Early <alexander.early@gmail.com>2017-04-02 15:54:53 -0700
commitc9c8e1d3276872f4cd9fba0caf14d717bd8b311e (patch)
tree27aaeb0d35cd2089cc9f8d810374e7119c3d48e9
parent649bea3c8184216867e00b34c59a595460e3c85f (diff)
downloadasync-c9c8e1d3276872f4cd9fba0caf14d717bd8b311e.tar.gz
Update built files
-rw-r--r--dist/async.js936
-rw-r--r--dist/async.min.js2
-rw-r--r--dist/async.min.map2
3 files changed, 495 insertions, 445 deletions
diff --git a/dist/async.js b/dist/async.js
index 6e4ef32..4d2aa08 100644
--- a/dist/async.js
+++ b/dist/async.js
@@ -90,12 +90,142 @@ var initialParams = function (fn) {
});
};
+/**
+ * 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('')`)
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+ * @example
+ *
+ * _.isObject({});
+ * // => true
+ *
+ * _.isObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isObject(_.noop);
+ * // => true
+ *
+ * _.isObject(null);
+ * // => false
+ */
+function isObject(value) {
+ var type = typeof value;
+ return value != null && (type == 'object' || type == 'function');
+}
+
+/**
+ * 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,
+ * series, or other async functions. Any arguments passed to the generated
+ * function will be passed to the wrapped function (except for the final
+ * callback argument). Errors thrown will be passed to the callback.
+ *
+ * If the function passed to `asyncify` returns a Promise, that promises's
+ * resolved/rejected state will be used to call the callback, rather than simply
+ * the synchronous return value.
+ *
+ * This also means you can asyncify ES2017 `async` functions.
+ *
+ * @name asyncify
+ * @static
+ * @memberOf module:Utils
+ * @method
+ * @alias wrapSync
+ * @category Util
+ * @param {Function} func - The synchronous funuction, or Promise-returning
+ * function to convert to an {@link AsyncFunction}.
+ * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be
+ * invoked with `(args..., callback)`.
+ * @example
+ *
+ * // passing a regular synchronous function
+ * async.waterfall([
+ * async.apply(fs.readFile, filename, "utf8"),
+ * async.asyncify(JSON.parse),
+ * function (data, next) {
+ * // data is the result of parsing the text.
+ * // If there was a parsing error, it would have been caught.
+ * }
+ * ], callback);
+ *
+ * // passing a function returning a promise
+ * async.waterfall([
+ * async.apply(fs.readFile, filename, "utf8"),
+ * async.asyncify(function (contents) {
+ * return db.model.create(contents);
+ * }),
+ * function (model, next) {
+ * // `model` is the instantiated model object.
+ * // If there was an error, this function would be skipped.
+ * }
+ * ], callback);
+ *
+ * // es2017 example, though `asyncify` is not needed if your JS environment
+ * // supports async functions out of the box
+ * var q = async.queue(async.asyncify(async function(file) {
+ * var intermediateStep = await processFile(file);
+ * return await somePromise(intermediateStep)
+ * }));
+ *
+ * q.push(files);
+ */
+function asyncify(func) {
+ return initialParams(function (args, callback) {
+ var result;
+ try {
+ result = func.apply(this, args);
+ } catch (e) {
+ return callback(e);
+ }
+ // if result is Promise object
+ if (isObject(result) && typeof result.then === 'function') {
+ result.then(function (value) {
+ callback(null, value);
+ }, function (err) {
+ callback(err.message ? err : new Error(err));
+ });
+ } else {
+ callback(null, result);
+ }
+ });
+}
+
+var supportsSymbol = typeof Symbol === 'function';
+
+function supportsAsync() {
+ var supported;
+ try {
+ /* eslint no-eval: 0 */
+ supported = isAsync(eval('(async function () {})'));
+ } catch (e) {
+ supported = false;
+ }
+ return supported;
+}
+
+function isAsync(fn) {
+ return supportsSymbol && fn[Symbol.toStringTag] === 'AsyncFunction';
+}
+
+function wrapAsync(asyncFn) {
+ return isAsync(asyncFn) ? asyncify(asyncFn) : asyncFn;
+}
+
+var wrapAsync$1 = supportsAsync() ? wrapAsync : identity;
+
function applyEach$1(eachfn) {
return rest(function (fns, args) {
var go = initialParams(function (args, callback) {
var that = this;
return eachfn(fns, function (fn, cb) {
- fn.apply(that, args.concat(cb));
+ wrapAsync$1(fn).apply(that, args.concat(cb));
}, callback);
});
if (args.length) {
@@ -206,36 +336,6 @@ function baseGetTag(value) {
: objectToString(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('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
-function isObject(value) {
- var type = typeof value;
- return value != null && (type == 'object' || type == 'function');
-}
-
/** `Object#toString` result references. */
var asyncTag = '[object AsyncFunction]';
var funcTag = '[object Function]';
@@ -888,105 +988,6 @@ function _eachOfLimit(limit) {
}
/**
- * 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,
- * series, or other async functions. Any arguments passed to the generated
- * function will be passed to the wrapped function (except for the final
- * callback argument). Errors thrown will be passed to the callback.
- *
- * If the function passed to `asyncify` returns a Promise, that promises's
- * resolved/rejected state will be used to call the callback, rather than simply
- * the synchronous return value.
- *
- * This also means you can asyncify ES2016 `async` functions.
- *
- * @name asyncify
- * @static
- * @memberOf module:Utils
- * @method
- * @alias wrapSync
- * @category Util
- * @param {Function} func - The synchronous function to convert to an
- * asynchronous function.
- * @returns {Function} An asynchronous wrapper of the `func`. To be invoked with
- * (callback).
- * @example
- *
- * // passing a regular synchronous function
- * async.waterfall([
- * async.apply(fs.readFile, filename, "utf8"),
- * async.asyncify(JSON.parse),
- * function (data, next) {
- * // data is the result of parsing the text.
- * // If there was a parsing error, it would have been caught.
- * }
- * ], callback);
- *
- * // passing a function returning a promise
- * async.waterfall([
- * async.apply(fs.readFile, filename, "utf8"),
- * async.asyncify(function (contents) {
- * return db.model.create(contents);
- * }),
- * function (model, next) {
- * // `model` is the instantiated model object.
- * // If there was an error, this function would be skipped.
- * }
- * ], callback);
- *
- * // es2017 example
- * var q = async.queue(async.asyncify(async function(file) {
- * var intermediateStep = await processFile(file);
- * return await somePromise(intermediateStep)
- * }));
- *
- * q.push(files);
- */
-function asyncify(func) {
- return initialParams(function (args, callback) {
- var result;
- try {
- result = func.apply(this, args);
- } catch (e) {
- return callback(e);
- }
- // if result is Promise object
- if (isObject(result) && typeof result.then === 'function') {
- result.then(function (value) {
- callback(null, value);
- }, function (err) {
- callback(err.message ? err : new Error(err));
- });
- } else {
- callback(null, result);
- }
- });
-}
-
-var supportsSymbol = typeof Symbol !== 'undefined';
-
-function supportsAsync() {
- var supported;
- try {
- /* eslint no-eval: 0 */
- supported = supportsSymbol && isAsync(eval('(async function () {})'));
- } catch (e) {
- supported = false;
- }
- return supported;
-}
-
-function isAsync(fn) {
- return fn[Symbol.toStringTag] === 'AsyncFunction';
-}
-
-var wrapAsync$1 = supportsAsync() ? function wrapAsync(asyncFn) {
- if (!supportsSymbol) return asyncFn;
-
- return isAsync(asyncFn) ? asyncify(asyncFn) : asyncFn;
-} : identity;
-
-/**
* The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a
* time.
*
@@ -999,12 +1000,10 @@ var wrapAsync$1 = supportsAsync() ? function wrapAsync(asyncFn) {
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.
- * @param {Function} iteratee - A function to apply to each
+ * @param {AsyncFunction} iteratee - An async function to apply to each
* item in `coll`. The `key` is the item's key, or index in the case of an
- * array. The iteratee is passed a `callback(err)` which must be called once it
- * has completed. If no error has occurred, the callback should be run without
- * arguments or with an explicit `null` argument. Invoked with
- * (item, key, callback).
+ * array.
+ * Invoked with (item, key, callback).
* @param {Function} [callback] - A callback which is called when all
* `iteratee` functions have finished, or an error occurs. Invoked with (err).
*/
@@ -1056,12 +1055,10 @@ var eachOfGeneric = doLimit(eachOfLimit, Infinity);
* @category Collection
* @see [async.each]{@link module:Collections.each}
* @param {Array|Iterable|Object} coll - A collection to iterate over.
- * @param {Function} iteratee - A function to apply to each
- * item in `coll`. The `key` is the item's key, or index in the case of an
- * array. The iteratee is passed a `callback(err)` which must be called once it
- * has completed. If no error has occurred, the callback should be run without
- * arguments or with an explicit `null` argument. Invoked with
- * (item, key, callback).
+ * @param {AsyncFunction} iteratee - A function to apply to each
+ * item in `coll`.
+ * The `key` is the item's key, or index in the case of an array.
+ * Invoked with (item, key, callback).
* @param {Function} [callback] - A callback which is called when all
* `iteratee` functions have finished, or an error occurs. Invoked with (err).
* @example
@@ -1092,7 +1089,7 @@ var eachOf = function (coll, iteratee, callback) {
function doParallel(fn) {
return function (obj, iteratee, callback) {
- return fn(eachOf, obj, iteratee, callback);
+ return fn(eachOf, obj, wrapAsync$1(iteratee), callback);
};
}
@@ -1137,10 +1134,10 @@ function _asyncMap(eachfn, arr, iteratee, callback) {
* @method
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
- * @param {Function} iteratee - A function to apply to each item in `coll`.
- * The iteratee is passed a `callback(err, transformed)` which must be called
- * once it has completed with an error (which can be `null`) and a
- * transformed item. Invoked with (item, callback).
+ * @param {AsyncFunction} iteratee - An async function to apply to each item in
+ * `coll`.
+ * The iteratee should complete with the transformed item.
+ * Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called when all `iteratee`
* functions have finished, or an error occurs. Results is an Array of the
* transformed items from the `coll`. Invoked with (err, results).
@@ -1164,7 +1161,7 @@ var map = doParallel(_asyncMap);
* @memberOf module:ControlFlow
* @method
* @category Control Flow
- * @param {Array|Iterable|Object} fns - A collection of asynchronous functions
+ * @param {Array|Iterable|Object} fns - A collection of {@link AsyncFunction}s
* to all call with the same arguments
* @param {...*} [args] - any number of separate arguments to pass to the
* function.
@@ -1189,7 +1186,7 @@ var applyEach = applyEach$1(map);
function doParallelLimit(fn) {
return function (obj, limit, iteratee, callback) {
- return fn(_eachOfLimit(limit), obj, iteratee, callback);
+ return fn(_eachOfLimit(limit), obj, wrapAsync$1(iteratee), callback);
};
}
@@ -1204,10 +1201,10 @@ function doParallelLimit(fn) {
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.
- * @param {Function} iteratee - A function to apply to each item in `coll`.
- * The iteratee is passed a `callback(err, transformed)` which must be called
- * once it has completed with an error (which can be `null`) and a transformed
- * item. Invoked with (item, callback).
+ * @param {AsyncFunction} iteratee - An async function to apply to each item in
+ * `coll`.
+ * The iteratee should complete with the transformed item.
+ * Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called when all `iteratee`
* functions have finished, or an error occurs. Results is an array of the
* transformed items from the `coll`. Invoked with (err, results).
@@ -1224,10 +1221,10 @@ var mapLimit = doParallelLimit(_asyncMap);
* @see [async.map]{@link module:Collections.map}
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
- * @param {Function} iteratee - A function to apply to each item in `coll`.
- * The iteratee is passed a `callback(err, transformed)` which must be called
- * once it has completed with an error (which can be `null`) and a
- * transformed item. Invoked with (item, callback).
+ * @param {AsyncFunction} iteratee - An async function to apply to each item in
+ * `coll`.
+ * The iteratee should complete with the transformed item.
+ * Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called when all `iteratee`
* functions have finished, or an error occurs. Results is an array of the
* transformed items from the `coll`. Invoked with (err, results).
@@ -1243,7 +1240,7 @@ var mapSeries = doLimit(mapLimit, 1);
* @method
* @see [async.applyEach]{@link module:ControlFlow.applyEach}
* @category Control Flow
- * @param {Array|Iterable|Object} fns - A collection of asynchronous functions to all
+ * @param {Array|Iterable|Object} fns - A collection of {@link AsyncFunction}s to all
* call with the same arguments
* @param {...*} [args] - any number of separate arguments to pass to the
* function.
@@ -1447,17 +1444,17 @@ function baseIndexOf(array, value, fromIndex) {
}
/**
- * Determines the best order for running the functions in `tasks`, based on
+ * Determines the best order for running the {@link AsyncFunction}s in `tasks`, based on
* their requirements. Each function can optionally depend on other functions
* being completed first, and each function is run as soon as its requirements
* are satisfied.
*
- * If any of the functions pass an error to their callback, the `auto` sequence
+ * If any of the {@link AsyncFunction}s pass an error to their callback, the `auto` sequence
* will stop. Further tasks will not execute (so any other functions depending
* on it will not run), and the main `callback` is immediately called with the
* error.
*
- * Functions also receive an object containing the results of functions which
+ * {@link AsyncFunction}s also receive an object containing the results of functions which
* have completed so far as the first argument, if they have dependencies. If a
* task function has no dependencies, it will only be passed a callback.
*
@@ -1467,7 +1464,7 @@ function baseIndexOf(array, value, fromIndex) {
* @method
* @category Control Flow
* @param {Object} tasks - An object. Each of its properties is either a
- * function or an array of requirements, with the function itself the last item
+ * function or an array of requirements, with the {@link AsyncFunction} itself the last item
* in the array. The object's key of a property serves as the name of the task
* defined by that property, i.e. can be used when specifying requirements for
* other tasks. The function receives one or two arguments:
@@ -1645,7 +1642,7 @@ var auto = function (tasks, concurrency, callback) {
}));
runningTasks++;
- var taskFn = task[task.length - 1];
+ var taskFn = wrapAsync$1(task[task.length - 1]);
if (task.length > 1) {
taskFn(results, taskCallback);
} else {
@@ -1989,7 +1986,7 @@ function trim(string, chars, guard) {
return castSlice(strSymbols, start, end).join('');
}
-var FN_ARGS = /^(function)?\s*[^\(]*\(\s*([^\)]*)\)/m;
+var FN_ARGS = /^(?:async\s+)?(function)?\s*[^\(]*\(\s*([^\)]*)\)/m;
var FN_ARG_SPLIT = /,/;
var FN_ARG = /(=.+)?(\s*)$/;
var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
@@ -2023,7 +2020,7 @@ function parseParams(func) {
* @method
* @see [async.auto]{@link module:ControlFlow.auto}
* @category Control Flow
- * @param {Object} tasks - An object, each of whose properties is a function of
+ * @param {Object} tasks - An object, each of whose properties is an {@link AsyncFunction} of
* the form 'func([dependencies...], callback). The object's key of a property
* serves as the name of the task defined by that property, i.e. can be used
* when specifying requirements for other tasks.
@@ -2091,22 +2088,25 @@ function autoInject(tasks, callback) {
baseForOwn(tasks, function (taskFn, key) {
var params;
+ var fnIsAsync = isAsync(taskFn);
+ var hasNoDeps = !fnIsAsync && taskFn.length === 1 || fnIsAsync && taskFn.length === 0;
if (isArray(taskFn)) {
params = taskFn.slice(0, -1);
taskFn = taskFn[taskFn.length - 1];
newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn);
- } else if (taskFn.length === 1) {
+ } else if (hasNoDeps) {
// no dependencies, use the function as-is
newTasks[key] = taskFn;
} else {
params = parseParams(taskFn);
- if (taskFn.length === 0 && params.length === 0) {
+ if (taskFn.length === 0 && !fnIsAsync && params.length === 0) {
throw new Error("autoInject task functions require explicit parameters.");
}
- params.pop();
+ // remove callback param
+ if (!fnIsAsync) params.pop();
newTasks[key] = params.concat(newTask);
}
@@ -2116,7 +2116,7 @@ function autoInject(tasks, callback) {
return results[name];
});
newArgs.push(taskCb);
- taskFn.apply(null, newArgs);
+ wrapAsync$1(taskFn).apply(null, newArgs);
}
});
@@ -2214,6 +2214,10 @@ function queue(worker, concurrency, payload) {
throw new Error('Concurrency must not be zero');
}
+ var _worker = wrapAsync$1(worker);
+ var numRunning = 0;
+ var workersList = [];
+
function _insert(data, insertAtFront, callback) {
if (callback != null && typeof callback !== 'function') {
throw new Error('task callback must be a function');
@@ -2246,7 +2250,7 @@ function queue(worker, concurrency, payload) {
function _next(tasks) {
return rest(function (args) {
- workers -= 1;
+ numRunning -= 1;
for (var i = 0, l = tasks.length; i < l; i++) {
var task = tasks[i];
@@ -2262,7 +2266,7 @@ function queue(worker, concurrency, payload) {
}
}
- if (workers <= q.concurrency - q.buffer) {
+ if (numRunning <= q.concurrency - q.buffer) {
q.unsaturated();
}
@@ -2273,8 +2277,6 @@ function queue(worker, concurrency, payload) {
});
}
- var workers = 0;
- var workersList = [];
var isProcessing = false;
var q = {
_tasks: new DLL(),
@@ -2305,7 +2307,7 @@ function queue(worker, concurrency, payload) {
return;
}
isProcessing = true;
- while (!q.paused && workers < q.concurrency && q._tasks.length) {
+ while (!q.paused && numRunning < q.concurrency && q._tasks.length) {
var tasks = [],
data = [];
var l = q._tasks.length;
@@ -2319,15 +2321,15 @@ function queue(worker, concurrency, payload) {
if (q._tasks.length === 0) {
q.empty();
}
- workers += 1;
+ numRunning += 1;
workersList.push(tasks[0]);
- if (workers === q.concurrency) {
+ if (numRunning === q.concurrency) {
q.saturated();
}
var cb = onlyOnce(_next(tasks));
- worker(data, cb);
+ _worker(data, cb);
}
isProcessing = false;
},
@@ -2335,13 +2337,13 @@ function queue(worker, concurrency, payload) {
return q._tasks.length;
},
running: function () {
- return workers;
+ return numRunning;
},
workersList: function () {
return workersList;
},
idle: function () {
- return q._tasks.length + workers === 0;
+ return q._tasks.length + numRunning === 0;
},
pause: function () {
q.paused = true;
@@ -2405,9 +2407,8 @@ function queue(worker, concurrency, payload) {
* @method
* @see [async.queue]{@link module:ControlFlow.queue}
* @category Control Flow
- * @param {Function} worker - An asynchronous function for processing an array
- * of queued tasks, which must call its `callback(err)` argument when finished,
- * with an optional `err` argument. Invoked with `(tasks, callback)`.
+ * @param {AsyncFunction} worker - An asynchronous function for processing an array
+ * of queued tasks. Invoked with `(tasks, callback)`.
* @param {number} [payload=Infinity] - An optional `integer` for determining
* how many tasks should be processed per round; if omitted, the default is
* unlimited.
@@ -2450,11 +2451,9 @@ function cargo(worker, payload) {
* @alias forEachOfSeries
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
- * @param {Function} iteratee - A function to apply to each item in `coll`. The
- * `key` is the item's key, or index in the case of an array. The iteratee is
- * passed a `callback(err)` which must be called once it has completed. If no
- * error has occurred, the callback should be run without arguments or with an
- * explicit `null` argument. Invoked with (item, key, callback).
+ * @param {AsyncFunction} iteratee - An async function to apply to each item in
+ * `coll`.
+ * Invoked with (item, key, callback).
* @param {Function} [callback] - A callback which is called when all `iteratee`
* functions have finished, or an error occurs. Invoked with (err).
*/
@@ -2480,12 +2479,12 @@ var eachOfSeries = doLimit(eachOfLimit, 1);
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {*} memo - The initial state of the reduction.
- * @param {Function} iteratee - A function applied to each item in the
- * array to produce the next step in the reduction. The `iteratee` is passed a
- * `callback(err, reduction)` which accepts an optional error as its first
- * argument, and the state of the reduction as the second. If an error is
- * passed to the callback, the reduction is stopped and the main `callback` is
- * immediately called with the error. Invoked with (memo, item, callback).
+ * @param {AsyncFunction} iteratee - A function applied to each item in the
+ * array to produce the next step in the reduction.
+ * The `iteratee` should complete with the next state of the reduction.
+ * If the iteratee complete with an error, the reduction is stopped and the
+ * main `callback` is immediately called with the error.
+ * Invoked with (memo, item, callback).
* @param {Function} [callback] - A callback which is called after all the
* `iteratee` functions have finished. Result is the reduced value. Invoked with
* (err, result).
@@ -2502,8 +2501,9 @@ var eachOfSeries = doLimit(eachOfLimit, 1);
*/
function reduce(coll, memo, iteratee, callback) {
callback = once(callback || noop);
+ var _iteratee = wrapAsync$1(iteratee);
eachOfSeries(coll, function (x, i, callback) {
- iteratee(memo, x, function (err, v) {
+ _iteratee(memo, x, function (err, v) {
memo = v;
callback(err);
});
@@ -2525,7 +2525,7 @@ function reduce(coll, memo, iteratee, callback) {
* @method
* @see [async.compose]{@link module:ControlFlow.compose}
* @category Control Flow
- * @param {...Function} functions - the asynchronous functions to compose
+ * @param {...AsyncFunction} functions - the asynchronous functions to compose
* @returns {Function} a function that composes the `functions` in order
* @example
*
@@ -2551,6 +2551,7 @@ function reduce(coll, memo, iteratee, callback) {
* });
*/
var seq$1 = rest(function seq(functions) {
+ var _functions = arrayMap(functions, wrapAsync$1);
return rest(function (args) {
var that = this;
@@ -2561,7 +2562,7 @@ var seq$1 = rest(function seq(functions) {
cb = noop;
}
- reduce(functions, args, function (newargs, fn, cb) {
+ reduce(_functions, args, function (newargs, fn, cb) {
fn.apply(that, newargs.concat(rest(function (err, nextargs) {
cb(err, nextargs);
})));
@@ -2584,7 +2585,7 @@ var seq$1 = rest(function seq(functions) {
* @memberOf module:ControlFlow
* @method
* @category Control Flow
- * @param {...Function} functions - the asynchronous functions to compose
+ * @param {...AsyncFunction} functions - the asynchronous functions to compose
* @returns {Function} an asynchronous function that is the composed
* asynchronous `functions`
* @example
@@ -2635,10 +2636,8 @@ function concat$1(eachfn, arr, fn, callback) {
* @method
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
- * @param {Function} iteratee - A function to apply to each item in `coll`.
- * The iteratee is passed a `callback(err, results)` which must be called once
- * it has completed with an error (which can be `null`) and an array of results.
- * Invoked with (item, callback).
+ * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`,
+ * which should use an array as its result. Invoked with (item, callback).
* @param {Function} [callback(err)] - A callback which is called after all the
* `iteratee` functions have finished, or an error occurs. Results is an array
* containing the concatenated results of the `iteratee` function. Invoked with
@@ -2653,7 +2652,7 @@ var concat = doParallel(concat$1);
function doSeries(fn) {
return function (obj, iteratee, callback) {
- return fn(eachOfSeries, obj, iteratee, callback);
+ return fn(eachOfSeries, obj, wrapAsync$1(iteratee), callback);
};
}
@@ -2667,9 +2666,8 @@ function doSeries(fn) {
* @see [async.concat]{@link module:Collections.concat}
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
- * @param {Function} iteratee - A function to apply to each item in `coll`.
- * The iteratee is passed a `callback(err, results)` which must be called once
- * it has completed with an error (which can be `null`) and an array of results.
+ * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`.
+ * The iteratee should complete with an array an array of results.
* Invoked with (item, callback).
* @param {Function} [callback(err)] - A callback which is called after all the
* `iteratee` functions have finished, or an error occurs. Results is an array
@@ -2690,7 +2688,7 @@ var concatSeries = doSeries(concat$1);
* @category Util
* @param {...*} arguments... - Any number of arguments to automatically invoke
* callback with.
- * @returns {Function} Returns a function that when invoked, automatically
+ * @returns {AsyncFunction} Returns a function that when invoked, automatically
* invokes the callback with the previous given arguments.
* @example
*
@@ -2775,9 +2773,9 @@ function _findGetResult(v, x) {
* @alias find
* @category Collections
* @param {Array|Iterable|Object} coll - A collection to iterate over.
- * @param {Function} iteratee - A truth test to apply to each item in `coll`.
- * The iteratee is passed a `callback(err, truthValue)` which must be called
- * with a boolean argument once it has completed. Invoked with (item, callback).
+ * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.
+ * The iteratee must complete with a boolean value as its result.
+ * Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called as soon as any
* iteratee returns `true`, or after all the `iteratee` functions have finished.
* Result will be the first item in the array that passes the truth test
@@ -2808,9 +2806,9 @@ var detect = doParallel(_createTester(identity, _findGetResult));
* @category Collections
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.
- * @param {Function} iteratee - A truth test to apply to each item in `coll`.
- * The iteratee is passed a `callback(err, truthValue)` which must be called
- * with a boolean argument once it has completed. Invoked with (item, callback).
+ * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.
+ * The iteratee must complete with a boolean value as its result.
+ * Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called as soon as any
* iteratee returns `true`, or after all the `iteratee` functions have finished.
* Result will be the first item in the array that passes the truth test
@@ -2830,9 +2828,9 @@ var detectLimit = doParallelLimit(_createTester(identity, _findGetResult));
* @alias findSeries
* @category Collections
* @param {Array|Iterable|Object} coll - A collection to iterate over.
- * @param {Function} iteratee - A truth test to apply to each item in `coll`.
- * The iteratee is passed a `callback(err, truthValue)` which must be called
- * with a boolean argument once it has completed. Invoked with (item, callback).
+ * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.
+ * The iteratee must complete with a boolean value as its result.
+ * Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called as soon as any
* iteratee returns `true`, or after all the `iteratee` functions have finished.
* Result will be the first item in the array that passes the truth test
@@ -2843,7 +2841,7 @@ var detectSeries = doLimit(detectLimit, 1);
function consoleFunc(name) {
return rest(function (fn, args) {
- fn.apply(null, args.concat(rest(function (err, args) {
+ wrapAsync$1(fn).apply(null, args.concat(rest(function (err, args) {
if (typeof console === 'object') {
if (err) {
if (console.error) {
@@ -2860,10 +2858,11 @@ function consoleFunc(name) {
}
/**
- * Logs the result of an `async` function to the `console` using `console.dir`
- * to display the properties of the resulting object. Only works in Node.js or
- * in browsers that support `console.dir` and `console.error` (such as FF and
- * Chrome). If multiple arguments are returned from the async function,
+ * Logs the result of an [`async` function]{@link AsyncFunction} to the
+ * `console` using `console.dir` to display the properties of the resulting object.
+ * Only works in Node.js or in browsers that support `console.dir` and
+ * `console.error` (such as FF and Chrome).
+ * If multiple arguments are returned from the async function,
* `console.dir` is called on each argument in order.
*
* @name dir
@@ -2871,8 +2870,8 @@ function consoleFunc(name) {
* @memberOf module:Utils
* @method
* @category Util
- * @param {Function} function - The function you want to eventually apply all
- * arguments to.
+ * @param {AsyncFunction} function - The function you want to eventually apply
+ * all arguments to.
* @param {...*} arguments... - Any number of arguments to apply to the function.
* @example
*
@@ -2900,29 +2899,30 @@ var dir = consoleFunc('dir');
* @method
* @see [async.during]{@link module:ControlFlow.during}
* @category Control Flow
- * @param {Function} fn - A function which is called each time `test` passes.
- * The function is passed a `callback(err)`, which must be called once it has
- * completed with an optional `err` argument. Invoked with (callback).
- * @param {Function} test - asynchronous truth test to perform before each
+ * @param {AsyncFunction} fn - An async function which is called each time
+ * `test` passes. Invoked with (callback).
+ * @param {AsyncFunction} test - asynchronous truth test to perform before each
* execution of `fn`. Invoked with (...args, callback), where `...args` are the
* non-error args from the previous callback of `fn`.
* @param {Function} [callback] - A callback which is called after the test
* function has failed and repeated execution of `fn` has stopped. `callback`
- * will be passed an error if one occured, otherwise `null`.
+ * will be passed an error if one occurred, otherwise `null`.
*/
function doDuring(fn, test, callback) {
callback = onlyOnce(callback || noop);
+ var _fn = wrapAsync$1(fn);
+ var _test = wrapAsync$1(test);
var next = rest(function (err, args) {
if (err) return callback(err);
args.push(check);
- test.apply(this, args);
+ _test.apply(this, args);
});
function check(err, truth) {
if (err) return callback(err);
if (!truth) return callback(null);
- fn(next);
+ _fn(next);
}
check(null, true);
@@ -2940,11 +2940,10 @@ function doDuring(fn, test, callback) {
* @method
* @see [async.whilst]{@link module:ControlFlow.whilst}
* @category Control Flow
- * @param {Function} iteratee - A function which is called each time `test`
- * passes. The function is passed a `callback(err)`, which must be called once
- * it has completed with an optional `err` argument. Invoked with (callback).
+ * @param {AsyncFunction} iteratee - A function which is called each time `test`
+ * passes. Invoked with (callback).
* @param {Function} test - synchronous truth test to perform after each
- * execution of `iteratee`. Invoked with the non-error callback results of
+ * execution of `iteratee`. Invoked with any non-error callback results of
* `iteratee`.
* @param {Function} [callback] - A callback which is called after the test
* function has failed and repeated execution of `iteratee` has stopped.
@@ -2953,12 +2952,13 @@ function doDuring(fn, test, callback) {
*/
function doWhilst(iteratee, test, callback) {
callback = onlyOnce(callback || noop);
+ var _iteratee = wrapAsync$1(iteratee);
var next = rest(function (err, args) {
if (err) return callback(err);
- if (test.apply(this, args)) return iteratee(next);
+ if (test.apply(this, args)) return _iteratee(next);
callback.apply(null, [null].concat(args));
});
- iteratee(next);
+ _iteratee(next);
}
/**
@@ -2971,18 +2971,18 @@ function doWhilst(iteratee, test, callback) {
* @method
* @see [async.doWhilst]{@link module:ControlFlow.doWhilst}
* @category Control Flow
- * @param {Function} fn - A function which is called each time `test` fails.
- * The function is passed a `callback(err)`, which must be called once it has
- * completed with an optional `err` argument. Invoked with (callback).
+ * @param {AsyncFunction} iteratee - An async function which is called each time
+ * `test` fails. Invoked with (callback).
* @param {Function} test - synchronous truth test to perform after each
- * execution of `fn`. Invoked with the non-error callback results of `fn`.
+ * execution of `iteratee`. Invoked with any non-error callback results of
+ * `iteratee`.
* @param {Function} [callback] - A callback which is called after the test
- * function has passed and repeated execution of `fn` has stopped. `callback`
- * will be passed an error and any arguments passed to the final `fn`'s
+ * function has passed and repeated execution of `iteratee` has stopped. `callback`
+ * will be passed an error and any arguments passed to the final `iteratee`'s
* callback. Invoked with (err, [results]);
*/
-function doUntil(fn, test, callback) {
- doWhilst(fn, function () {
+function doUntil(iteratee, test, callback) {
+ doWhilst(iteratee, function () {
return !test.apply(this, arguments);
}, callback);
}
@@ -2999,14 +2999,13 @@ function doUntil(fn, test, callback) {
* @method
* @see [async.whilst]{@link module:ControlFlow.whilst}
* @category Control Flow
- * @param {Function} test - asynchronous truth test to perform before each
+ * @param {AsyncFunction} test - asynchronous truth test to perform before each
* execution of `fn`. Invoked with (callback).
- * @param {Function} fn - A function which is called each time `test` passes.
- * The function is passed a `callback(err)`, which must be called once it has
- * completed with an optional `err` argument. Invoked with (callback).
+ * @param {AsyncFunction} fn - An async function which is called each time
+ * `test` passes. Invoked with (callback).
* @param {Function} [callback] - A callback which is called after the test
* function has failed and repeated execution of `fn` has stopped. `callback`
- * will be passed an error, if one occured, otherwise `null`.
+ * will be passed an error, if one occurred, otherwise `null`.
* @example
*
* var count = 0;
@@ -3026,19 +3025,21 @@ function doUntil(fn, test, callback) {
*/
function during(test, fn, callback) {
callback = onlyOnce(callback || noop);
+ var _fn = wrapAsync$1(fn);
+ var _test = wrapAsync$1(test);
function next(err) {
if (err) return callback(err);
- test(check);
+ _test(check);
}
function check(err, truth) {
if (err) return callback(err);
if (!truth) return callback(null);
- fn(next);
+ _fn(next);
}
- test(check);
+ _test(check);
}
function _withoutIndex(iteratee) {
@@ -3064,12 +3065,10 @@ function _withoutIndex(iteratee) {
* @alias forEach
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
- * @param {Function} iteratee - A function to apply to each item
- * in `coll`. The iteratee is passed a `callback(err)` which must be called once
- * it has completed. If no error has occurred, the `callback` should be run
- * without arguments or with an explicit `null` argument. The array index is not
- * passed to the iteratee. Invoked with (item, callback). If you need the index,
- * use `eachOf`.
+ * @param {AsyncFunction} iteratee - An async function to apply to
+ * each item in `coll`. Invoked with (item, callback).
+ * The array index is not passed to the iteratee.
+ * If you need the index, use `eachOf`.
* @param {Function} [callback] - A callback which is called when all
* `iteratee` functions have finished, or an error occurs. Invoked with (err).
* @example
@@ -3122,12 +3121,11 @@ function eachLimit(coll, iteratee, callback) {
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.
- * @param {Function} iteratee - A function to apply to each item in `coll`. The
- * iteratee is passed a `callback(err)` which must be called once it has
- * completed. If no error has occurred, the `callback` should be run without
- * arguments or with an explicit `null` argument. The array index is not passed
- * to the iteratee. Invoked with (item, callback). If you need the index, use
- * `eachOfLimit`.
+ * @param {AsyncFunction} iteratee - An async function to apply to each item in
+ * `coll`.
+ * The array index is not passed to the iteratee.
+ * If you need the index, use `eachOfLimit`.
+ * Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called when all
* `iteratee` functions have finished, or an error occurs. Invoked with (err).
*/
@@ -3146,12 +3144,11 @@ function eachLimit$1(coll, limit, iteratee, callback) {
* @alias forEachSeries
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
- * @param {Function} iteratee - A function to apply to each
- * item in `coll`. The iteratee is passed a `callback(err)` which must be called
- * once it has completed. If no error has occurred, the `callback` should be run
- * without arguments or with an explicit `null` argument. The array index is
- * not passed to the iteratee. Invoked with (item, callback). If you need the
- * index, use `eachOfSeries`.
+ * @param {AsyncFunction} iteratee - An async function to apply to each
+ * item in `coll`.
+ * The array index is not passed to the iteratee.
+ * If you need the index, use `eachOfSeries`.
+ * Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called when all
* `iteratee` functions have finished, or an error occurs. Invoked with (err).
*/
@@ -3163,16 +3160,17 @@ var eachSeries = doLimit(eachLimit$1, 1);
* no extra deferral is added. This is useful for preventing stack overflows
* (`RangeError: Maximum call stack size exceeded`) and generally keeping
* [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony)
- * contained.
+ * contained. ES2017 `async` functions are returned as-is -- they are immune
+ * to Zalgo's corrupting influences, as they always resolve on a later tick.
*
* @name ensureAsync
* @static
* @memberOf module:Utils
* @method
* @category Util
- * @param {Function} fn - an async function, one that expects a node-style
+ * @param {AsyncFunction} fn - an async function, one that expects a node-style
* callback as its last argument.
- * @returns {Function} Returns a wrapped function with the exact same call
+ * @returns {AsyncFunction} Returns a wrapped function with the exact same call
* signature as the function passed in.
* @example
*
@@ -3192,6 +3190,7 @@ var eachSeries = doLimit(eachLimit$1, 1);
* async.mapSeries(args, async.ensureAsync(sometimesAsync), done);
*/
function ensureAsync(fn) {
+ if (isAsync(fn)) return fn;
return initialParams(function (args, callback) {
var sync = true;
args.push(function () {
@@ -3224,10 +3223,10 @@ function notId(v) {
* @alias all
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
- * @param {Function} iteratee - A truth test to apply to each item in the
- * collection in parallel. The iteratee is passed a `callback(err, truthValue)`
- * which must be called with a boolean argument once it has completed. Invoked
- * with (item, callback).
+ * @param {AsyncFunction} iteratee - An async truth test to apply to each item
+ * in the collection in parallel.
+ * The iteratee must complete with a boolean result value.
+ * Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called after all the
* `iteratee` functions have finished. Result will be either `true` or `false`
* depending on the values of the async tests. Invoked with (err, result).
@@ -3255,10 +3254,10 @@ var every = doParallel(_createTester(notId, notId));
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.
- * @param {Function} iteratee - A truth test to apply to each item in the
- * collection in parallel. The iteratee is passed a `callback(err, truthValue)`
- * which must be called with a boolean argument once it has completed. Invoked
- * with (item, callback).
+ * @param {AsyncFunction} iteratee - An async truth test to apply to each item
+ * in the collection in parallel.
+ * The iteratee must complete with a boolean result value.
+ * Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called after all the
* `iteratee` functions have finished. Result will be either `true` or `false`
* depending on the values of the async tests. Invoked with (err, result).
@@ -3276,10 +3275,10 @@ var everyLimit = doParallelLimit(_createTester(notId, notId));
* @alias allSeries
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
- * @param {Function} iteratee - A truth test to apply to each item in the
- * collection in parallel. The iteratee is passed a `callback(err, truthValue)`
- * which must be called with a boolean argument once it has completed. Invoked
- * with (item, callback).
+ * @param {AsyncFunction} iteratee - An async truth test to apply to each item
+ * in the collection in series.
+ * The iteratee must complete with a boolean result value.
+ * Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called after all the
* `iteratee` functions have finished. Result will be either `true` or `false`
* depending on the values of the async tests. Invoked with (err, result).
@@ -3418,16 +3417,16 @@ var filterSeries = doLimit(filterLimit, 1);
* Calls the asynchronous function `fn` with a callback parameter that allows it
* to call itself again, in series, indefinitely.
- * If an error is passed to the
- * callback then `errback` is called with the error, and execution stops,
- * otherwise it will never be called.
+ * If an error is passed to the callback then `errback` is called with the
+ * error, and execution stops, otherwise it will never be called.
*
* @name forever
* @static
* @memberOf module:ControlFlow
* @method
* @category Control Flow
- * @param {Function} fn - a function to call repeatedly. Invoked with (next).
+ * @param {AsyncFunction} fn - an async function to call repeatedly.
+ * Invoked with (next).
* @param {Function} [errback] - when `fn` passes an error to it's callback,
* this function will be called, and execution stops. Invoked with (err).
* @example
@@ -3445,7 +3444,7 @@ var filterSeries = doLimit(filterLimit, 1);
*/
function forever(fn, errback) {
var done = onlyOnce(errback || noop);
- var task = ensureAsync(fn);
+ var task = wrapAsync$1(ensureAsync(fn));
function next(err) {
if (err) return done(err);
@@ -3465,19 +3464,19 @@ function forever(fn, errback) {
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.
- * @param {Function} iteratee - A function to apply to each item in `coll`.
- * The iteratee is passed a `callback(err, key)` which must be called once it
- * has completed with an error (which can be `null`) and the `key` to group the
- * value under. Invoked with (value, callback).
+ * @param {AsyncFunction} iteratee - An async function to apply to each item in
+ * `coll`.
+ * The iteratee should complete with a `key` to group the value under.
+ * Invoked with (value, callback).
* @param {Function} [callback] - A callback which is called when all `iteratee`
* functions have finished, or an error occurs. Result is an `Object` whoses
* properties are arrays of values which returned the corresponding key.
*/
var groupByLimit = function (coll, limit, iteratee, callback) {
callback = callback || noop;
-
+ var _iteratee = wrapAsync$1(iteratee);
mapLimit(coll, limit, function (val, callback) {
- iteratee(val, function (err, key) {
+ _iteratee(val, function (err, key) {
if (err) return callback(err);
return callback(null, { key: key, val: val });
});
@@ -3520,10 +3519,10 @@ var groupByLimit = function (coll, limit, iteratee, callback) {
* @method
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
- * @param {Function} iteratee - A function to apply to each item in `coll`.
- * The iteratee is passed a `callback(err, key)` which must be called once it
- * has completed with an error (which can be `null`) and the `key` to group the
- * value under. Invoked with (value, callback).
+ * @param {AsyncFunction} iteratee - An async function to apply to each item in
+ * `coll`.
+ * The iteratee should complete with a `key` to group the value under.
+ * Invoked with (value, callback).
* @param {Function} [callback] - A callback which is called when all `iteratee`
* functions have finished, or an error occurs. Result is an `Object` whoses
* properties are arrays of values which returned the corresponding key.
@@ -3552,10 +3551,10 @@ var groupBy = doLimit(groupByLimit, Infinity);
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.
- * @param {Function} iteratee - A function to apply to each item in `coll`.
- * The iteratee is passed a `callback(err, key)` which must be called once it
- * has completed with an error (which can be `null`) and the `key` to group the
- * value under. Invoked with (value, callback).
+ * @param {AsyncFunction} iteratee - An async function to apply to each item in
+ * `coll`.
+ * The iteratee should complete with a `key` to group the value under.
+ * Invoked with (value, callback).
* @param {Function} [callback] - A callback which is called when all `iteratee`
* functions have finished, or an error occurs. Result is an `Object` whoses
* properties are arrays of values which returned the corresponding key.
@@ -3573,8 +3572,8 @@ var groupBySeries = doLimit(groupByLimit, 1);
* @memberOf module:Utils
* @method
* @category Util
- * @param {Function} function - The function you want to eventually apply all
- * arguments to.
+ * @param {AsyncFunction} function - The function you want to eventually apply
+ * all arguments to.
* @param {...*} arguments... - Any number of arguments to apply to the function.
* @example
*
@@ -3603,10 +3602,10 @@ var log = consoleFunc('log');
* @category Collection
* @param {Object} obj - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.
- * @param {Function} iteratee - A function to apply to each value in `obj`.
- * The iteratee is passed a `callback(err, transformed)` which must be called
- * once it has completed with an error (which can be `null`) and a
- * transformed value. Invoked with (value, key, callback).
+ * @param {AsyncFunction} iteratee - A function to apply to each value and key
+ * in `coll`.
+ * The iteratee should complete with the transformed value as its result.
+ * Invoked with (value, key, callback).
* @param {Function} [callback] - A callback which is called when all `iteratee`
* functions have finished, or an error occurs. `result` is a new object consisting
* of each key from `obj`, with each transformed value on the right-hand side.
@@ -3615,8 +3614,9 @@ var log = consoleFunc('log');
function mapValuesLimit(obj, limit, iteratee, callback) {
callback = once(callback || noop);
var newObj = {};
+ var _iteratee = wrapAsync$1(iteratee);
eachOfLimit(obj, limit, function (val, key, next) {
- iteratee(val, key, function (err, result) {
+ _iteratee(val, key, function (err, result) {
if (err) return next(err);
newObj[key] = result;
next();
@@ -3645,10 +3645,10 @@ function mapValuesLimit(obj, limit, iteratee, callback) {
* @method
* @category Collection
* @param {Object} obj - A collection to iterate over.
- * @param {Function} iteratee - A function to apply to each value and key in
- * `coll`. The iteratee is passed a `callback(err, transformed)` which must be
- * called once it has completed with an error (which can be `null`) and a
- * transformed value. Invoked with (value, key, callback).
+ * @param {AsyncFunction} iteratee - A function to apply to each value and key
+ * in `coll`.
+ * The iteratee should complete with the transformed value as its result.
+ * Invoked with (value, key, callback).
* @param {Function} [callback] - A callback which is called when all `iteratee`
* functions have finished, or an error occurs. `result` is a new object consisting
* of each key from `obj`, with each transformed value on the right-hand side.
@@ -3683,10 +3683,10 @@ var mapValues = doLimit(mapValuesLimit, Infinity);
* @see [async.mapValues]{@link module:Collections.mapValues}
* @category Collection
* @param {Object} obj - A collection to iterate over.
- * @param {Function} iteratee - A function to apply to each value in `obj`.
- * The iteratee is passed a `callback(err, transformed)` which must be called
- * once it has completed with an error (which can be `null`) and a
- * transformed value. Invoked with (value, key, callback).
+ * @param {AsyncFunction} iteratee - A function to apply to each value and key
+ * in `coll`.
+ * The iteratee should complete with the transformed value as its result.
+ * Invoked with (value, key, callback).
* @param {Function} [callback] - A callback which is called when all `iteratee`
* functions have finished, or an error occurs. `result` is a new object consisting
* of each key from `obj`, with each transformed value on the right-hand side.
@@ -3699,7 +3699,7 @@ function has(obj, key) {
}
/**
- * Caches the results of an `async` function. When creating a hash to store
+ * Caches the results of an async function. When creating a hash to store
* function results against, the callback is omitted from the hash and an
* optional hash function can be used.
*
@@ -3717,11 +3717,11 @@ function has(obj, key) {
* @memberOf module:Utils
* @method
* @category Util
- * @param {Function} fn - The function to proxy and cache results from.
+ * @param {AsyncFunction} fn - The async function to proxy and cache results from.
* @param {Function} hasher - An optional function for generating a custom hash
* for storing results. It has all the arguments applied to it apart from the
* callback, and must be synchronous.
- * @returns {Function} a memoized version of `fn`
+ * @returns {AsyncFunction} a memoized version of `fn`
* @example
*
* var slow_fn = function(name, callback) {
@@ -3739,6 +3739,7 @@ function memoize(fn, hasher) {
var memo = Object.create(null);
var queues = Object.create(null);
hasher = hasher || identity;
+ var _fn = wrapAsync$1(fn);
var memoized = initialParams(function memoized(args, callback) {
var key = hasher.apply(null, args);
if (has(memo, key)) {
@@ -3749,7 +3750,7 @@ function memoize(fn, hasher) {
queues[key].push(callback);
} else {
queues[key] = [callback];
- fn.apply(null, args.concat(rest(function (args) {
+ _fn.apply(null, args.concat(rest(function (args) {
memo[key] = args;
var q = queues[key];
delete queues[key];
@@ -3812,7 +3813,7 @@ function _parallel(eachfn, tasks, callback) {
var results = isArrayLike(tasks) ? [] : {};
eachfn(tasks, function (task, key, callback) {
- task(rest(function (err, args) {
+ wrapAsync$1(task)(rest(function (err, args) {
if (args.length <= 1) {
args = args[0];
}
@@ -3836,6 +3837,7 @@ function _parallel(eachfn, tasks, callback) {
* any I/O, they will actually be executed in series. Any synchronous setup
* sections for each task will happen one after the other. JavaScript remains
* single-threaded.
+ *
* **Hint:** Use [`reflect`]{@link module:Utils.reflect} to continue the
* execution of other tasks when a task fails.
*
@@ -3849,14 +3851,14 @@ function _parallel(eachfn, tasks, callback) {
* @memberOf module:ControlFlow
* @method
* @category Control Flow
- * @param {Array|Iterable|Object} tasks - A collection containing functions to run.
- * Each function is passed a `callback(err, result)` which it must call on
- * completion with an error `err` (which can be `null`) and an optional `result`
- * value.
+ * @param {Array|Iterable|Object} tasks - A collection of
+ * [async functions]{@link AsyncFunction} to run.
+ * Each async function can complete with any number of optional `result` values.
* @param {Function} [callback] - An optional callback to run once all the
* functions have completed successfully. This function gets a results array
* (or object) containing all the result arguments passed to the task callbacks.
* Invoked with (err, results).
+ *
* @example
* async.parallel([
* function(callback) {
@@ -3906,10 +3908,9 @@ function parallelLimit(tasks, callback) {
* @method
* @see [async.parallel]{@link module:ControlFlow.parallel}
* @category Control Flow
- * @param {Array|Collection} tasks - A collection containing functions to run.
- * Each function is passed a `callback(err, result)` which it must call on
- * completion with an error `err` (which can be `null`) and an optional `result`
- * value.
+ * @param {Array|Iterable|Object} tasks - A collection of
+ * [async functions]{@link AsyncFunction} to run.
+ * Each async function can complete with any number of optional `result` values.
* @param {number} limit - The maximum number of async operations at a time.
* @param {Function} [callback] - An optional callback to run once all the
* functions have completed successfully. This function gets a results array
@@ -3978,11 +3979,9 @@ function parallelLimit$1(tasks, limit, callback) {
* @memberOf module:ControlFlow
* @method
* @category Control Flow
- * @param {Function} worker - An asynchronous function for processing a queued
- * task, which must call its `callback(err)` argument when finished, with an
- * optional `error` as an argument. If you want to handle errors from an
- * individual task, pass a callback to `q.push()`. Invoked with
- * (task, callback).
+ * @param {AsyncFunction} worker - An async function for processing a queued task.
+ * If you want to handle errors from an individual task, pass a callback to
+ * `q.push()`. Invoked with (task, callback).
* @param {number} [concurrency=1] - An `integer` for determining how many
* `worker` functions should be run in parallel. If omitted, the concurrency
* defaults to `1`. If the concurrency is `0`, an error is thrown.
@@ -4021,8 +4020,9 @@ function parallelLimit$1(tasks, limit, callback) {
* });
*/
var queue$1 = function (worker, concurrency) {
+ var _worker = wrapAsync$1(worker);
return queue(function (items, cb) {
- worker(items[0], cb);
+ _worker(items[0], cb);
}, concurrency, 1);
};
@@ -4036,11 +4036,10 @@ var queue$1 = function (worker, concurrency) {
* @method
* @see [async.queue]{@link module:ControlFlow.queue}
* @category Control Flow
- * @param {Function} worker - An asynchronous function for processing a queued
- * task, which must call its `callback(err)` argument when finished, with an
- * optional `error` as an argument. If you want to handle errors from an
- * individual task, pass a callback to `q.push()`. Invoked with
- * (task, callback).
+ * @param {AsyncFunction} worker - An async function for processing a queued task.
+ * If you want to handle errors from an individual task, pass a callback to
+ * `q.push()`.
+ * Invoked with (task, callback).
* @param {number} concurrency - An `integer` for determining how many `worker`
* functions should be run in parallel. If omitted, the concurrency defaults to
* `1`. If the concurrency is `0`, an error is thrown.
@@ -4110,9 +4109,8 @@ var priorityQueue = function (worker, concurrency) {
* @memberOf module:ControlFlow
* @method
* @category Control Flow
- * @param {Array} tasks - An array containing functions to run. Each function
- * is passed a `callback(err, result)` which it must call on completion with an
- * error `err` (which can be `null`) and an optional `result` value.
+ * @param {Array} tasks - An array containing [async functions]{@link AsyncFunction}
+ * to run. Each function can complete with an optional `result` value.
* @param {Function} callback - A callback to run once any of the functions have
* completed. This function gets an error or result from the first function that
* completed. Invoked with (err, result).
@@ -4141,7 +4139,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++) {
- tasks[i](callback);
+ wrapAsync$1(tasks[i])(callback);
}
}
@@ -4159,12 +4157,12 @@ var slice = Array.prototype.slice;
* @category Collection
* @param {Array} array - A collection to iterate over.
* @param {*} memo - The initial state of the reduction.
- * @param {Function} iteratee - A function applied to each item in the
- * array to produce the next step in the reduction. The `iteratee` is passed a
- * `callback(err, reduction)` which accepts an optional error as its first
- * argument, and the state of the reduction as the second. If an error is
- * passed to the callback, the reduction is stopped and the main `callback` is
- * immediately called with the error. Invoked with (memo, item, callback).
+ * @param {AsyncFunction} iteratee - A function applied to each item in the
+ * array to produce the next step in the reduction.
+ * The `iteratee` should complete with the next state of the reduction.
+ * If the iteratee complete with an error, the reduction is stopped and the
+ * main `callback` is immediately called with the error.
+ * Invoked with (memo, item, callback).
* @param {Function} [callback] - A callback which is called after all the
* `iteratee` functions have finished. Result is the reduced value. Invoked with
* (err, result).
@@ -4175,17 +4173,17 @@ function reduceRight(array, memo, iteratee, callback) {
}
/**
- * Wraps the function in another function that always returns data even when it
- * errors.
+ * Wraps the async function in another function that always completes with a
+ * result object, even when it errors.
*
- * The object returned has either the property `error` or `value`.
+ * The result object has either the property `error` or `value`.
*
* @name reflect
* @static
* @memberOf module:Utils
* @method
* @category Util
- * @param {Function} fn - The function you want to wrap
+ * @param {AsyncFunction} fn - The async function you want to wrap
* @returns {Function} - A function that always passes null to it's callback as
* the error. The second argument to the callback will be an `object` with
* either an `error` or a `value` property.
@@ -4214,6 +4212,7 @@ function reduceRight(array, memo, iteratee, callback) {
* });
*/
function reflect(fn) {
+ var _fn = wrapAsync$1(fn);
return initialParams(function reflectOn(args, reflectCallback) {
args.push(rest(function callback(err, cbArgs) {
if (err) {
@@ -4233,7 +4232,7 @@ function reflect(fn) {
}
}));
- return fn.apply(this, args);
+ return _fn.apply(this, args);
});
}
@@ -4255,9 +4254,10 @@ function reject$1(eachfn, arr, iteratee, callback) {
* @see [async.filter]{@link module:Collections.filter}
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
- * @param {Function} iteratee - A truth test to apply to each item in `coll`.
- * The `iteratee` is passed a `callback(err, truthValue)`, which must be called
- * with a boolean argument once it has completed. Invoked with (item, callback).
+ * @param {Function} iteratee - An async truth test to apply to each item in
+ * `coll`.
+ * The should complete with a boolean value as its `result`.
+ * Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called after all the
* `iteratee` functions have finished. Invoked with (err, results).
* @example
@@ -4274,7 +4274,7 @@ function reject$1(eachfn, arr, iteratee, callback) {
var reject = doParallel(reject$1);
/**
- * A helper function that wraps an array or an object of functions with reflect.
+ * A helper function that wraps an array or an object of functions with `reflect`.
*
* @name reflectAll
* @static
@@ -4282,8 +4282,9 @@ var reject = doParallel(reject$1);
* @method
* @see [async.reflect]{@link module:Utils.reflect}
* @category Util
- * @param {Array} tasks - The array of functions to wrap in `async.reflect`.
- * @returns {Array} Returns an array of functions, each function wrapped in
+ * @param {Array|Object|Iterable} tasks - The collection of
+ * [async functions]{@link AsyncFunction} to wrap in `async.reflect`.
+ * @returns {Array} Returns an array of async functions, each wrapped in
* `async.reflect`
* @example
*
@@ -4364,9 +4365,10 @@ function reflectAll(tasks) {
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.
- * @param {Function} iteratee - A truth test to apply to each item in `coll`.
- * The `iteratee` is passed a `callback(err, truthValue)`, which must be called
- * with a boolean argument once it has completed. Invoked with (item, callback).
+ * @param {Function} iteratee - An async truth test to apply to each item in
+ * `coll`.
+ * The should complete with a boolean value as its `result`.
+ * Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called after all the
* `iteratee` functions have finished. Invoked with (err, results).
*/
@@ -4382,9 +4384,10 @@ var rejectLimit = doParallelLimit(reject$1);
* @see [async.reject]{@link module:Collections.reject}
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
- * @param {Function} iteratee - A truth test to apply to each item in `coll`.
- * The `iteratee` is passed a `callback(err, truthValue)`, which must be called
- * with a boolean argument once it has completed. Invoked with (item, callback).
+ * @param {Function} iteratee - An async truth test to apply to each item in
+ * `coll`.
+ * The should complete with a boolean value as its `result`.
+ * Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called after all the
* `iteratee` functions have finished. Invoked with (err, results).
*/
@@ -4426,6 +4429,7 @@ function constant$1(value) {
* @memberOf module:ControlFlow
* @method
* @category Control Flow
+ * @see [async.retryable]{@link module:ControlFlow.retryable}
* @param {Object|number} [opts = {times: 5, interval: 0}| 5] - Can be either an
* object with `times` and `interval` or a number.
* * `times` - The number of attempts to make before giving up. The default
@@ -4440,16 +4444,13 @@ function constant$1(value) {
* Invoked with (err).
* * If `opts` is a number, the number specifies the number of times to retry,
* with the default interval of `0`.
- * @param {Function} task - A function which receives two arguments: (1) a
- * `callback(err, result)` which must be called when finished, passing `err`
- * (which can be `null`) and the `result` of the function's execution, and (2)
- * a `results` object, containing the results of the previously executed
- * functions (if nested inside another control flow). Invoked with
- * (callback, results).
+ * @param {AsyncFunction} task - An async function to retry.
+ * Invoked with (callback).
* @param {Function} [callback] - An optional callback which is called when the
* task has succeeded, or after the final failed attempt. It receives the `err`
* and `result` arguments of the last attempt at completing the `task`. Invoked
* with (err, results).
+ *
* @example
*
* // The `retry` function can be used as a stand-alone control flow by passing
@@ -4495,7 +4496,7 @@ function constant$1(value) {
* // individual methods that are not as reliable, like this:
* async.auto({
* users: api.getUsers.bind(api),
- * payments: async.retry(3, api.getPayments.bind(api))
+ * payments: async.retryable(3, api.getPayments.bind(api))
* }, function(err, results) {
* // do something with the results
* });
@@ -4536,9 +4537,11 @@ function retry(opts, task, callback) {
throw new Error("Invalid arguments for async.retry");
}
+ var _task = wrapAsync$1(task);
+
var attempt = 1;
function retryAttempt() {
- task(function (err) {
+ _task(function (err) {
if (err && attempt++ < options.times && (typeof options.errorFilter != 'function' || options.errorFilter(err))) {
setTimeout(retryAttempt, options.intervalFunc(attempt));
} else {
@@ -4551,8 +4554,9 @@ function retry(opts, task, callback) {
}
/**
- * A close relative of [`retry`]{@link module:ControlFlow.retry}. This method wraps a task and makes it
- * retryable, rather than immediately calling it with retries.
+ * A close relative of [`retry`]{@link module:ControlFlow.retry}. This method
+ * wraps a task and makes it retryable, rather than immediately calling it
+ * with retries.
*
* @name retryable
* @static
@@ -4562,9 +4566,12 @@ function retry(opts, task, callback) {
* @category Control Flow
* @param {Object|number} [opts = {times: 5, interval: 0}| 5] - optional
* options, exactly the same as from `retry`
- * @param {Function} task - the asynchronous function to wrap
- * @returns {Functions} The wrapped function, which when invoked, will retry on
- * an error, based on the parameters specified in `opts`.
+ * @param {AsyncFunction} task - the asynchronous function to wrap.
+ * This function will be passed any arguments passed to the returned wrapper.
+ * Invoked with (...args, callback).
+ * @returns {AsyncFunction} The wrapped function, which when invoked, will
+ * retry on an error, based on the parameters specified in `opts`.
+ * This function will accept the same parameters as `task`.
* @example
*
* async.auto({
@@ -4579,9 +4586,10 @@ var retryable = function (opts, task) {
task = opts;
opts = null;
}
+ var _task = wrapAsync$1(task);
return initialParams(function (args, callback) {
function taskFn(cb) {
- task.apply(null, args.concat(cb));
+ _task.apply(null, args.concat(cb));
}
if (opts) retry(opts, taskFn, callback);else retry(taskFn, callback);
@@ -4614,9 +4622,9 @@ var retryable = function (opts, task) {
* @memberOf module:ControlFlow
* @method
* @category Control Flow
- * @param {Array|Iterable|Object} tasks - A collection containing functions to run, each
- * function is passed a `callback(err, result)` it must call on completion with
- * an error `err` (which can be `null`) and an optional `result` value.
+ * @param {Array|Iterable|Object} tasks - A collection containing
+ * [async functions]{@link AsyncFunction} to run in series.
+ * Each function can complete with any number of optional `result` values.
* @param {Function} [callback] - An optional callback to run once all the
* functions have completed. This function gets a results array (or object)
* containing all the result arguments passed to the `task` callbacks. Invoked
@@ -4668,10 +4676,10 @@ function series(tasks, callback) {
* @alias any
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
- * @param {Function} iteratee - A truth test to apply to each item in the array
- * in parallel. The iteratee is passed a `callback(err, truthValue)` which must
- * be called with a boolean argument once it has completed. Invoked with
- * (item, callback).
+ * @param {AsyncFunction} iteratee - An async truth test to apply to each item
+ * in the collections in parallel.
+ * The iteratee should complete with a boolean `result` value.
+ * Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called as soon as any
* iteratee returns `true`, or after all the iteratee functions have finished.
* Result will be either `true` or `false` depending on the values of the async
@@ -4700,10 +4708,10 @@ var some = doParallel(_createTester(Boolean, identity));
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.
- * @param {Function} iteratee - A truth test to apply to each item in the array
- * in parallel. The iteratee is passed a `callback(err, truthValue)` which must
- * be called with a boolean argument once it has completed. Invoked with
- * (item, callback).
+ * @param {AsyncFunction} iteratee - An async truth test to apply to each item
+ * in the collections in parallel.
+ * The iteratee should complete with a boolean `result` value.
+ * Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called as soon as any
* iteratee returns `true`, or after all the iteratee functions have finished.
* Result will be either `true` or `false` depending on the values of the async
@@ -4722,10 +4730,10 @@ var someLimit = doParallelLimit(_createTester(Boolean, identity));
* @alias anySeries
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
- * @param {Function} iteratee - A truth test to apply to each item in the array
- * in parallel. The iteratee is passed a `callback(err, truthValue)` which must
- * be called with a boolean argument once it has completed. Invoked with
- * (item, callback).
+ * @param {AsyncFunction} iteratee - An async truth test to apply to each item
+ * in the collections in series.
+ * The iteratee should complete with a boolean `result` value.
+ * Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called as soon as any
* iteratee returns `true`, or after all the iteratee functions have finished.
* Result will be either `true` or `false` depending on the values of the async
@@ -4743,10 +4751,11 @@ var someSeries = doLimit(someLimit, 1);
* @method
* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
- * @param {Function} iteratee - A function to apply to each item in `coll`.
- * The iteratee is passed a `callback(err, sortValue)` which must be called once
- * it has completed with an error (which can be `null`) and a value to use as
- * the sort criteria. Invoked with (item, callback).
+ * @param {AsyncFunction} iteratee - An async function to apply to each item in
+ * `coll`.
+ * The iteratee should complete with a value to use as the sort criteria as
+ * its `result`.
+ * Invoked with (item, callback).
* @param {Function} callback - A callback which is called after all the
* `iteratee` functions have finished, or an error occurs. Results is the items
* from the original `coll` sorted by the values returned by the `iteratee`
@@ -4780,8 +4789,9 @@ var someSeries = doLimit(someLimit, 1);
* });
*/
function sortBy(coll, iteratee, callback) {
+ var _iteratee = wrapAsync$1(iteratee);
map(coll, function (x, callback) {
- iteratee(x, function (err, criteria) {
+ _iteratee(x, function (err, criteria) {
if (err) return callback(err);
callback(null, { value: x, criteria: criteria });
});
@@ -4807,14 +4817,13 @@ function sortBy(coll, iteratee, callback) {
* @memberOf module:Utils
* @method
* @category Util
- * @param {Function} asyncFn - The asynchronous function you want to set the
- * time limit.
+ * @param {AsyncFunction} asyncFn - The async function to limit in time.
* @param {number} milliseconds - The specified time limit.
* @param {*} [info] - Any variable you want attached (`string`, `object`, etc)
* to timeout Error for more information..
- * @returns {Function} Returns a wrapped function that can be used with any of
- * the control flow functions. Invoke this function with the same
- * parameters as you would `asyncFunc`.
+ * @returns {AsyncFunction} Returns a wrapped function that can be used with any
+ * of the control flow functions.
+ * Invoke this function with the same parameters as you would `asyncFunc`.
* @example
*
* function myFunction(foo, callback) {
@@ -4861,11 +4870,13 @@ function timeout(asyncFn, milliseconds, info) {
originalCallback(error);
}
+ var fn = wrapAsync$1(asyncFn);
+
return initialParams(function (args, origCallback) {
originalCallback = origCallback;
// setup timer and call original function
timer = setTimeout(timeoutCallback, milliseconds);
- asyncFn.apply(null, args.concat(injectedCallback));
+ fn.apply(null, args.concat(injectedCallback));
});
}
@@ -4908,12 +4919,13 @@ function baseRange(start, end, step, fromRight) {
* @category Control Flow
* @param {number} count - The number of times to run the function.
* @param {number} limit - The maximum number of async operations at a time.
- * @param {Function} iteratee - The function to call `n` times. Invoked with the
- * iteration index and a callback (n, next).
+ * @param {AsyncFunction} iteratee - The async function to call `n` times.
+ * Invoked with the iteration index and a callback: (n, next).
* @param {Function} callback - see [async.map]{@link module:Collections.map}.
*/
function timeLimit(count, limit, iteratee, callback) {
- mapLimit(baseRange(0, count, 1), limit, iteratee, callback);
+ var _iteratee = wrapAsync$1(iteratee);
+ mapLimit(baseRange(0, count, 1), limit, _iteratee, callback);
}
/**
@@ -4927,8 +4939,8 @@ function timeLimit(count, limit, iteratee, callback) {
* @see [async.map]{@link module:Collections.map}
* @category Control Flow
* @param {number} n - The number of times to run the function.
- * @param {Function} iteratee - The function to call `n` times. Invoked with the
- * iteration index and a callback (n, next).
+ * @param {AsyncFunction} iteratee - The async function to call `n` times.
+ * Invoked with the iteration index and a callback: (n, next).
* @param {Function} callback - see {@link module:Collections.map}.
* @example
*
@@ -4960,8 +4972,8 @@ var times = doLimit(timeLimit, Infinity);
* @see [async.times]{@link module:ControlFlow.times}
* @category Control Flow
* @param {number} n - The number of times to run the function.
- * @param {Function} iteratee - The function to call `n` times. Invoked with the
- * iteration index and a callback (n, next).
+ * @param {AsyncFunction} iteratee - The async function to call `n` times.
+ * Invoked with the iteration index and a callback: (n, next).
* @param {Function} callback - see {@link module:Collections.map}.
*/
var timesSeries = doLimit(timeLimit, 1);
@@ -4979,11 +4991,8 @@ var timesSeries = doLimit(timeLimit, 1);
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {*} [accumulator] - The initial state of the transform. If omitted,
* it will default to an empty Object or Array, depending on the type of `coll`
- * @param {Function} iteratee - A function applied to each item in the
- * collection that potentially modifies the accumulator. The `iteratee` is
- * passed a `callback(err)` which accepts an optional error as its first
- * argument. If an error is passed to the callback, the transform is stopped
- * and the main `callback` is immediately called with the error.
+ * @param {AsyncFunction} iteratee - A function applied to each item in the
+ * collection that potentially modifies the accumulator.
* Invoked with (accumulator, item, key, callback).
* @param {Function} [callback] - A callback which is called after all the
* `iteratee` functions have finished. Result is the transformed accumulator.
@@ -5018,9 +5027,10 @@ function transform(coll, accumulator, iteratee, callback) {
accumulator = isArray(coll) ? [] : {};
}
callback = once(callback || noop);
+ var _iteratee = wrapAsync$1(iteratee);
eachOf(coll, function (v, k, cb) {
- iteratee(accumulator, v, k, cb);
+ _iteratee(accumulator, v, k, cb);
}, function (err) {
callback(err, accumulator);
});
@@ -5036,8 +5046,8 @@ function transform(coll, accumulator, iteratee, callback) {
* @method
* @see [async.memoize]{@link module:Utils.memoize}
* @category Util
- * @param {Function} fn - the memoized function
- * @returns {Function} a function that calls the original unmemoized function
+ * @param {AsyncFunction} fn - the memoized function
+ * @returns {AsyncFunction} a function that calls the original unmemoized function
*/
function unmemoize(fn) {
return function () {
@@ -5056,9 +5066,8 @@ function unmemoize(fn) {
* @category Control Flow
* @param {Function} test - synchronous truth test to perform before each
* execution of `iteratee`. Invoked with ().
- * @param {Function} iteratee - A function which is called each time `test` passes.
- * The function is passed a `callback(err)`, which must be called once it has
- * completed with an optional `err` argument. Invoked with (callback).
+ * @param {AsyncFunction} iteratee - An async function which is called each time
+ * `test` passes. Invoked with (callback).
* @param {Function} [callback] - A callback which is called after the test
* function has failed and repeated execution of `iteratee` has stopped. `callback`
* will be passed an error and any arguments passed to the final `iteratee`'s
@@ -5082,19 +5091,20 @@ function unmemoize(fn) {
*/
function whilst(test, iteratee, callback) {
callback = onlyOnce(callback || noop);
+ var _iteratee = wrapAsync$1(iteratee);
if (!test()) return callback(null);
var next = rest(function (err, args) {
if (err) return callback(err);
- if (test()) return iteratee(next);
+ if (test()) return _iteratee(next);
callback.apply(null, [null].concat(args));
});
- iteratee(next);
+ _iteratee(next);
}
/**
- * Repeatedly call `fn` until `test` returns `true`. Calls `callback` when
+ * Repeatedly call `iteratee` until `test` returns `true`. Calls `callback` when
* stopped, or an error occurs. `callback` will be passed an error and any
- * arguments passed to the final `fn`'s callback.
+ * arguments passed to the final `iteratee`'s callback.
*
* The inverse of [whilst]{@link module:ControlFlow.whilst}.
*
@@ -5105,19 +5115,18 @@ function whilst(test, iteratee, callback) {
* @see [async.whilst]{@link module:ControlFlow.whilst}
* @category Control Flow
* @param {Function} test - synchronous truth test to perform before each
- * execution of `fn`. Invoked with ().
- * @param {Function} fn - A function which is called each time `test` fails.
- * The function is passed a `callback(err)`, which must be called once it has
- * completed with an optional `err` argument. Invoked with (callback).
+ * execution of `iteratee`. Invoked with ().
+ * @param {AsyncFunction} iteratee - An async function which is called each time
+ * `test` fails. Invoked with (callback).
* @param {Function} [callback] - A callback which is called after the test
- * function has passed and repeated execution of `fn` has stopped. `callback`
- * will be passed an error and any arguments passed to the final `fn`'s
+ * function has passed and repeated execution of `iteratee` has stopped. `callback`
+ * will be passed an error and any arguments passed to the final `iteratee`'s
* callback. Invoked with (err, [results]);
*/
-function until(test, fn, callback) {
+function until(test, iteratee, callback) {
whilst(function () {
return !test.apply(this, arguments);
- }, fn, callback);
+ }, iteratee, callback);
}
/**
@@ -5131,10 +5140,10 @@ function until(test, fn, callback) {
* @memberOf module:ControlFlow
* @method
* @category Control Flow
- * @param {Array} tasks - An array of functions to run, each function is passed
- * a `callback(err, result1, result2, ...)` it must call on completion. The
- * first argument is an error (which can be `null`) and any further arguments
- * will be passed as arguments in order to the next task.
+ * @param {Array} tasks - An array of [async functions]{@link AsyncFunction}
+ * to run.
+ * Each function should complete with any number of `result` values.
+ * The `result` values will be passed as arguments, in order, to the next task.
* @param {Function} [callback] - An optional callback to run once all the
* functions have completed. This will be passed the results of the last task's
* callback. Invoked with (err, [results]).
@@ -5197,7 +5206,7 @@ var waterfall = function (tasks, callback) {
args.push(taskCallback);
- var task = tasks[taskIndex++];
+ var task = wrapAsync$1(tasks[taskIndex++]);
task.apply(null, args);
}
@@ -5205,11 +5214,51 @@ var waterfall = function (tasks, callback) {
};
/**
+ * An "async function" in the context of Async is an asynchronous function with
+ * a variable number of parameters, with the final parameter being a callback.
+ * (`function (arg1, arg2, ..., callback) {}`)
+ * The final callback is of the form `callback(err, results...)`, which must be
+ * called once the function is completed. The callback should be called with a
+ * Error as its first argument to signal that an error occurred.
+ * Otherwise, if no error occurred, it should be called with `null` as the first
+ * argument, and any additional `result` arguments that may apply, to signal
+ * successful completion.
+ * The callback must be called exactly once, ideally on a later tick of the
+ * JavaScript event loop.
+ *
+ * This type of function is also referred to as a "Node-style async function",
+ * or a "continuation passing-style function" (CPS). Most of the methods of this
+ * library are themselves CPS/Node-style async functions, or functions that
+ * return CPS/Node-style async functions.
+ *
+ * Wherever we accept a Node-style async function, we also directly accept an
+ * [ES2017 `async` function]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function}.
+ * In this case, the `async` function will not be passed a final callback
+ * argument, and any thrown error will be used as the `err` argument of the
+ * implicit callback, and the return value will be used as the `result` value.
+ * (i.e. a `rejected` of the returned Promise becomes the `err` callback
+ * argument, and a `resolved` value becomes the `result`.)
+ *
+ * Note, due to JavaScript limitations, we can only detect native `async`
+ * functions and not transpilied implementations.
+ * Your environment must have `async`/`await` support for this to work.
+ * (e.g. Node > v7.6, or a recent version of a modern browser).
+ * If you are using `async` functions through a transpiler (e.g. Babel), you
+ * must still wrap the function with [asyncify]{@link module:Utils.asyncify},
+ * because the `async function` will be compiled to an ordinary function that
+ * returns a promise.
+ *
+ * @typedef {Function} AsyncFunction
+ * @static
+ */
+
+/**
* Async is a utility module which provides straight-forward, powerful functions
* for working with asynchronous JavaScript. Although originally designed for
* use with [Node.js](http://nodejs.org) and installable via
* `npm install --save async`, it can also be used directly in the browser.
* @module async
+ * @see AsyncFunction
*/
/**
@@ -5227,6 +5276,7 @@ var waterfall = function (tasks, callback) {
* A collection of `async` utility functions.
* @module Utils
*/
+
var index = {
applyEach: applyEach,
applyEachSeries: applyEachSeries,
diff --git a/dist/async.min.js b/dist/async.min.js
index df97e2e..afd1022 100644
--- a/dist/async.min.js
+++ b/dist/async.min.js
@@ -1,2 +1,2 @@
-!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(n.async=n.async||{})}(this,function(n){"use strict";function t(n,t,e){switch(e.length){case 0:return n.call(t);case 1:return n.call(t,e[0]);case 2:return n.call(t,e[0],e[1]);case 3:return n.call(t,e[0],e[1],e[2])}return n.apply(t,e)}function e(n,e,r){return e=rt(void 0===e?n.length-1:e,0),function(){for(var u=arguments,o=-1,i=rt(u.length-e,0),c=Array(i);++o<i;)c[o]=u[e+o];o=-1;for(var f=Array(e+1);++o<e;)f[o]=u[o];return f[e]=r(c),t(n,this,f)}}function r(n){return n}function u(n,t){return e(n,t,r)}function o(n){return u(function(t,e){var r=ut(function(e,r){var u=this;return n(t,function(n,t){n.apply(u,e.concat(t))},r)});return e.length?r.apply(this,e):r})}function i(n){var t=lt.call(n,pt),e=n[pt];try{n[pt]=void 0;var r=!0}catch(n){}var u=st.call(n);return r&&(t?n[pt]=e:delete n[pt]),u}function c(n){return yt.call(n)}function f(n){return null==n?void 0===n?dt:vt:(n=Object(n),mt&&mt in n?i(n):c(n))}function a(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function l(n){if(!a(n))return!1;var t=f(n);return t==bt||t==jt||t==gt||t==St}function s(n){return"number"==typeof n&&n>-1&&n%1==0&&n<=kt}function p(n){return null!=n&&s(n.length)&&!l(n)}function h(){}function y(n){return function(){if(null!==n){var t=n;n=null,t.apply(this,arguments)}}}function v(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}function d(n){return null!=n&&"object"==typeof n}function m(n){return d(n)&&f(n)==xt}function g(){return!1}function b(n,t){return t=null==t?Vt:t,!!t&&("number"==typeof n||qt.test(n))&&n>-1&&n%1==0&&n<t}function j(n){return d(n)&&s(n.length)&&!!le[f(n)]}function S(n){return function(t){return n(t)}}function k(n,t){var e=Ft(n),r=!e&&Bt(n),u=!e&&!r&&Pt(n),o=!e&&!r&&!u&&ge(n),i=e||r||u||o,c=i?v(n.length,String):[],f=c.length;for(var a in n)!t&&!je.call(n,a)||i&&("length"==a||u&&("offset"==a||"parent"==a)||o&&("buffer"==a||"byteLength"==a||"byteOffset"==a)||b(a,f))||c.push(a);return c}function O(n){var t=n&&n.constructor,e="function"==typeof t&&t.prototype||Se;return n===e}function w(n,t){return function(e){return n(t(e))}}function L(n){if(!O(n))return ke(n);var t=[];for(var e in Object(n))we.call(n,e)&&"constructor"!=e&&t.push(e);return t}function x(n){return p(n)?k(n):L(n)}function E(n){var t=-1,e=n.length;return function(){return++t<e?{value:n[t],key:t}:null}}function A(n){var t=-1;return function(){var e=n.next();return e.done?null:(t++,{value:e.value,key:t})}}function T(n){var t=x(n),e=-1,r=t.length;return function(){var u=t[++e];return e<r?{value:n[u],key:u}:null}}function B(n){if(p(n))return E(n);var t=Lt(n);return t?A(t):T(n)}function F(n){return function(){if(null===n)throw new Error("Callback was already called.");var t=n;n=null,t.apply(this,arguments)}}function I(n){return function(t,e,r){function u(n,t){if(f-=1,n)c=!0,r(n);else{if(t===Ot||c&&f<=0)return c=!0,r(null);o()}}function o(){for(;f<n&&!c;){var t=i();if(null===t)return c=!0,void(f<=0&&r(null));f+=1,e(t.value,t.key,F(u))}}if(r=y(r||h),n<=0||!t)return r(null);var i=B(t),c=!1,f=0;o()}}function _(n,t,e,r){I(t)(n,e,r)}function M(n,t){return function(e,r,u){return n(e,t,r,u)}}function U(n,t,e){function r(n,t){n?e(n):++o!==i&&t!==Ot||e(null)}e=y(e||h);var u=0,o=0,i=n.length;for(0===i&&e(null);u<i;u++)t(n[u],u,F(r))}function z(n){return function(t,e,r){return n(xe,t,e,r)}}function P(n,t,e,r){r=r||h,t=t||[];var u=[],o=0;n(t,function(n,t,r){var i=o++;e(n,function(n,t){u[i]=t,r(n)})},function(n){r(n,u)})}function V(n){return function(t,e,r,u){return n(I(e),t,r,u)}}function q(n){return ut(function(t,e){var r;try{r=n.apply(this,t)}catch(n){return e(n)}a(r)&&"function"==typeof r.then?r.then(function(n){e(null,n)},function(n){e(n.message?n:new Error(n))}):e(null,r)})}function D(n,t){for(var e=-1,r=null==n?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}function R(n){return function(t,e,r){for(var u=-1,o=Object(t),i=r(t),c=i.length;c--;){var f=i[n?c:++u];if(e(o[f],f,o)===!1)break}return t}}function C(n,t){return n&&_e(n,t,x)}function $(n,t,e,r){for(var u=n.length,o=e+(r?1:-1);r?o--:++o<u;)if(t(n[o],o,n))return o;return-1}function W(n){return n!==n}function N(n,t,e){for(var r=e-1,u=n.length;++r<u;)if(n[r]===t)return r;return-1}function Q(n,t,e){return t===t?N(n,t,e):$(n,W,e)}function G(n,t){for(var e=-1,r=null==n?0:n.length,u=Array(r);++e<r;)u[e]=t(n[e],e,n);return u}function H(n){return"symbol"==typeof n||d(n)&&f(n)==Ue}function J(n){if("string"==typeof n)return n;if(Ft(n))return G(n,J)+"";if(H(n))return Ve?Ve.call(n):"";var t=n+"";return"0"==t&&1/n==-ze?"-0":t}function K(n,t,e){var r=-1,u=n.length;t<0&&(t=-t>u?0:u+t),e=e>u?u:e,e<0&&(e+=u),u=t>e?0:e-t>>>0,t>>>=0;for(var o=Array(u);++r<u;)o[r]=n[r+t];return o}function X(n,t,e){var r=n.length;return e=void 0===e?r:e,!t&&e>=r?n:K(n,t,e)}function Y(n,t){for(var e=n.length;e--&&Q(t,n[e],0)>-1;);return e}function Z(n,t){for(var e=-1,r=n.length;++e<r&&Q(t,n[e],0)>-1;);return e}function nn(n){return n.split("")}function tn(n){return We.test(n)}function en(n){return n.match(fr)||[]}function rn(n){return tn(n)?en(n):nn(n)}function un(n){return null==n?"":J(n)}function on(n,t,e){if(n=un(n),n&&(e||void 0===t))return n.replace(ar,"");if(!n||!(t=J(t)))return n;var r=rn(n),u=rn(t),o=Z(r,u),i=Y(r,u)+1;return X(r,o,i).join("")}function cn(n){return n=n.toString().replace(hr,""),n=n.match(lr)[2].replace(" ",""),n=n?n.split(sr):[],n=n.map(function(n){return on(n.replace(pr,""))})}function fn(n,t){var e={};C(n,function(n,t){function r(t,e){var r=G(u,function(n){return t[n]});r.push(e),n.apply(null,r)}var u;if(Ft(n))u=n.slice(0,-1),n=n[n.length-1],e[t]=u.concat(u.length>0?r:n);else if(1===n.length)e[t]=n;else{if(u=cn(n),0===n.length&&0===u.length)throw new Error("autoInject task functions require explicit parameters.");u.pop(),e[t]=u.concat(r)}}),Me(e,t)}function an(n){setTimeout(n,0)}function ln(n){return u(function(t,e){n(function(){t.apply(null,e)})})}function sn(){this.head=this.tail=null,this.length=0}function pn(n,t){n.length=1,n.head=n.tail=t}function hn(n,t,e){function r(n,t,e){if(null!=e&&"function"!=typeof e)throw new Error("task callback must be a function");if(a.started=!0,Ft(n)||(n=[n]),0===n.length&&a.idle())return dr(function(){a.drain()});for(var r=0,u=n.length;r<u;r++){var o={data:n[r],callback:e||h};t?a._tasks.unshift(o):a._tasks.push(o)}dr(a.process)}function o(n){return u(function(t){i-=1;for(var e=0,r=n.length;e<r;e++){var u=n[e],o=Q(c,u,0);o>=0&&c.splice(o),u.callback.apply(u,t),null!=t[0]&&a.error(t[0],u.data)}i<=a.concurrency-a.buffer&&a.unsaturated(),a.idle()&&a.drain(),a.process()})}if(null==t)t=1;else if(0===t)throw new Error("Concurrency must not be zero");var i=0,c=[],f=!1,a={_tasks:new sn,concurrency:t,payload:e,saturated:h,unsaturated:h,buffer:t/4,empty:h,drain:h,error:h,started:!1,paused:!1,push:function(n,t){r(n,!1,t)},kill:function(){a.drain=h,a._tasks.empty()},unshift:function(n,t){r(n,!0,t)},process:function(){if(!f){for(f=!0;!a.paused&&i<a.concurrency&&a._tasks.length;){var t=[],e=[],r=a._tasks.length;a.payload&&(r=Math.min(r,a.payload));for(var u=0;u<r;u++){var l=a._tasks.shift();t.push(l),e.push(l.data)}0===a._tasks.length&&a.empty(),i+=1,c.push(t[0]),i===a.concurrency&&a.saturated();var s=F(o(t));n(e,s)}f=!1}},length:function(){return a._tasks.length},running:function(){return i},workersList:function(){return c},idle:function(){return a._tasks.length+i===0},pause:function(){a.paused=!0},resume:function(){a.paused!==!1&&(a.paused=!1,dr(a.process))}};return a}function yn(n,t){return hn(n,1,t)}function vn(n,t,e,r){r=y(r||h),gr(n,function(n,r,u){e(t,n,function(n,e){t=e,u(n)})},function(n){r(n,t)})}function dn(n,t,e,r){var u=[];n(t,function(n,t,r){e(n,function(n,t){u=u.concat(t||[]),r(n)})},function(n){r(n,u)})}function mn(n){return function(t,e,r){return n(gr,t,e,r)}}function gn(n,t){return function(e,r,u,o){o=o||h;var i,c=!1;e(r,function(e,r,o){u(e,function(r,u){r?o(r):n(u)&&!i?(c=!0,i=t(!0,e),o(null,Ot)):o()})},function(n){n?o(n):o(null,c?i:t(!1))})}}function bn(n,t){return t}function jn(n){return u(function(t,e){t.apply(null,e.concat(u(function(t,e){"object"==typeof console&&(t?console.error&&console.error(t):console[n]&&D(e,function(t){console[n](t)}))})))})}function Sn(n,t,e){function r(t,r){return t?e(t):r?void n(o):e(null)}e=F(e||h);var o=u(function(n,u){return n?e(n):(u.push(r),void t.apply(this,u))});r(null,!0)}function kn(n,t,e){e=F(e||h);var r=u(function(u,o){return u?e(u):t.apply(this,o)?n(r):void e.apply(null,[null].concat(o))});n(r)}function On(n,t,e){kn(n,function(){return!t.apply(this,arguments)},e)}function wn(n,t,e){function r(t){return t?e(t):void n(u)}function u(n,u){return n?e(n):u?void t(r):e(null)}e=F(e||h),n(u)}function Ln(n){return function(t,e,r){return n(t,r)}}function xn(n,t,e){xe(n,Ln(t),e)}function En(n,t,e,r){I(t)(n,Ln(e),r)}function An(n){return ut(function(t,e){var r=!0;t.push(function(){var n=arguments;r?dr(function(){e.apply(null,n)}):e.apply(null,n)}),n.apply(this,t),r=!1})}function Tn(n){return!n}function Bn(n){return function(t){return null==t?void 0:t[n]}}function Fn(n,t,e,r){var u=new Array(t.length);n(t,function(n,t,r){e(n,function(n,e){u[t]=!!e,r(n)})},function(n){if(n)return r(n);for(var e=[],o=0;o<t.length;o++)u[o]&&e.push(t[o]);r(null,e)})}function In(n,t,e,r){var u=[];n(t,function(n,t,r){e(n,function(e,o){e?r(e):(o&&u.push({index:t,value:n}),r())})},function(n){n?r(n):r(null,G(u.sort(function(n,t){return n.index-t.index}),Bn("value")))})}function _n(n,t,e,r){var u=p(t)?Fn:In;u(n,t,e,r||h)}function Mn(n,t){function e(n){return n?r(n):void u(e)}var r=F(t||h),u=An(n);e()}function Un(n,t,e,r){r=y(r||h);var u={};_(n,t,function(n,t,r){e(n,t,function(n,e){return n?r(n):(u[t]=e,void r())})},function(n){r(n,u)})}function zn(n,t){return t in n}function Pn(n,t){var e=Object.create(null),o=Object.create(null);t=t||r;var i=ut(function(r,i){var c=t.apply(null,r);zn(e,c)?dr(function(){i.apply(null,e[c])}):zn(o,c)?o[c].push(i):(o[c]=[i],n.apply(null,r.concat(u(function(n){e[c]=n;var t=o[c];delete o[c];for(var r=0,u=t.length;r<u;r++)t[r].apply(null,n)}))))});return i.memo=e,i.unmemoized=n,i}function Vn(n,t,e){e=e||h;var r=p(t)?[]:{};n(t,function(n,t,e){n(u(function(n,u){u.length<=1&&(u=u[0]),r[t]=u,e(n)}))},function(n){e(n,r)})}function qn(n,t){Vn(xe,n,t)}function Dn(n,t,e){Vn(I(t),n,e)}function Rn(n,t){if(t=y(t||h),!Ft(n))return t(new TypeError("First argument to race must be an array of functions"));if(!n.length)return t();for(var e=0,r=n.length;e<r;e++)n[e](t)}function Cn(n,t,e,r){var u=Wr.call(n).reverse();vn(u,t,e,r)}function $n(n){return ut(function(t,e){return t.push(u(function(n,t){if(n)e(null,{error:n});else{var r=null;1===t.length?r=t[0]:t.length>1&&(r=t),e(null,{value:r})}})),n.apply(this,t)})}function Wn(n,t,e,r){_n(n,t,function(n,t){e(n,function(n,e){t(n,!e)})},r)}function Nn(n){var t;return Ft(n)?t=G(n,$n):(t={},C(n,function(n,e){t[e]=$n.call(this,n)})),t}function Qn(n){return function(){return n}}function Gn(n,t,e){function r(n,t){if("object"==typeof t)n.times=+t.times||o,n.intervalFunc="function"==typeof t.interval?t.interval:Qn(+t.interval||i),n.errorFilter=t.errorFilter;else{if("number"!=typeof t&&"string"!=typeof t)throw new Error("Invalid arguments for async.retry");n.times=+t||o}}function u(){t(function(n){n&&f++<c.times&&("function"!=typeof c.errorFilter||c.errorFilter(n))?setTimeout(u,c.intervalFunc(f)):e.apply(null,arguments)})}var o=5,i=0,c={times:o,intervalFunc:Qn(i)};if(arguments.length<3&&"function"==typeof n?(e=t||h,t=n):(r(c,n),e=e||h),"function"!=typeof t)throw new Error("Invalid arguments for async.retry");var f=1;u()}function Hn(n,t){Vn(gr,n,t)}function Jn(n,t,e){function r(n,t){var e=n.criteria,r=t.criteria;return e<r?-1:e>r?1:0}Ee(n,function(n,e){t(n,function(t,r){return t?e(t):void e(null,{value:n,criteria:r})})},function(n,t){return n?e(n):void e(null,G(t.sort(r),Bn("value")))})}function Kn(n,t,e){function r(){c||(o.apply(null,arguments),clearTimeout(i))}function u(){var t=n.name||"anonymous",r=new Error('Callback function "'+t+'" timed out.');r.code="ETIMEDOUT",e&&(r.info=e),c=!0,o(r)}var o,i,c=!1;return ut(function(e,c){o=c,i=setTimeout(u,t),n.apply(null,e.concat(r))})}function Xn(n,t,e,r){for(var u=-1,o=Zr(Yr((t-n)/(e||1)),0),i=Array(o);o--;)i[r?o:++u]=n,n+=e;return i}function Yn(n,t,e,r){Te(Xn(0,n,1),t,e,r)}function Zn(n,t,e,r){arguments.length<=3&&(r=e,e=t,t=Ft(n)?[]:{}),r=y(r||h),xe(n,function(n,r,u){e(t,n,r,u)},function(n){r(n,t)})}function nt(n){return function(){return(n.unmemoized||n).apply(null,arguments)}}function tt(n,t,e){if(e=F(e||h),!n())return e(null);var r=u(function(u,o){return u?e(u):n()?t(r):void e.apply(null,[null].concat(o))});t(r)}function et(n,t,e){tt(function(){return!n.apply(this,arguments)},t,e)}var rt=Math.max,ut=function(n){return u(function(t){var e=t.pop();n.call(this,t,e)})},ot="object"==typeof global&&global&&global.Object===Object&&global,it="object"==typeof self&&self&&self.Object===Object&&self,ct=ot||it||Function("return this")(),ft=ct.Symbol,at=Object.prototype,lt=at.hasOwnProperty,st=at.toString,pt=ft?ft.toStringTag:void 0,ht=Object.prototype,yt=ht.toString,vt="[object Null]",dt="[object Undefined]",mt=ft?ft.toStringTag:void 0,gt="[object AsyncFunction]",bt="[object Function]",jt="[object GeneratorFunction]",St="[object Proxy]",kt=9007199254740991,Ot={},wt="function"==typeof Symbol&&Symbol.iterator,Lt=function(n){return wt&&n[wt]&&n[wt]()},xt="[object Arguments]",Et=Object.prototype,At=Et.hasOwnProperty,Tt=Et.propertyIsEnumerable,Bt=m(function(){return arguments}())?m:function(n){return d(n)&&At.call(n,"callee")&&!Tt.call(n,"callee")},Ft=Array.isArray,It="object"==typeof n&&n&&!n.nodeType&&n,_t=It&&"object"==typeof module&&module&&!module.nodeType&&module,Mt=_t&&_t.exports===It,Ut=Mt?ct.Buffer:void 0,zt=Ut?Ut.isBuffer:void 0,Pt=zt||g,Vt=9007199254740991,qt=/^(?:0|[1-9]\d*)$/,Dt="[object Arguments]",Rt="[object Array]",Ct="[object Boolean]",$t="[object Date]",Wt="[object Error]",Nt="[object Function]",Qt="[object Map]",Gt="[object Number]",Ht="[object Object]",Jt="[object RegExp]",Kt="[object Set]",Xt="[object String]",Yt="[object WeakMap]",Zt="[object ArrayBuffer]",ne="[object DataView]",te="[object Float32Array]",ee="[object Float64Array]",re="[object Int8Array]",ue="[object Int16Array]",oe="[object Int32Array]",ie="[object Uint8Array]",ce="[object Uint8ClampedArray]",fe="[object Uint16Array]",ae="[object Uint32Array]",le={};le[te]=le[ee]=le[re]=le[ue]=le[oe]=le[ie]=le[ce]=le[fe]=le[ae]=!0,le[Dt]=le[Rt]=le[Zt]=le[Ct]=le[ne]=le[$t]=le[Wt]=le[Nt]=le[Qt]=le[Gt]=le[Ht]=le[Jt]=le[Kt]=le[Xt]=le[Yt]=!1;var se,pe="object"==typeof n&&n&&!n.nodeType&&n,he=pe&&"object"==typeof module&&module&&!module.nodeType&&module,ye=he&&he.exports===pe,ve=ye&&ot.process,de=function(){try{return ve&&ve.binding("util")}catch(n){}}(),me=de&&de.isTypedArray,ge=me?S(me):j,be=Object.prototype,je=be.hasOwnProperty,Se=Object.prototype,ke=w(Object.keys,Object),Oe=Object.prototype,we=Oe.hasOwnProperty,Le=M(_,1/0),xe=function(n,t,e){var r=p(n)?U:Le;r(n,t,e)},Ee=z(P),Ae=o(Ee),Te=V(P),Be=M(Te,1),Fe=o(Be),Ie=u(function(n,t){return u(function(e){return n.apply(null,t.concat(e))})}),_e=R(),Me=function(n,t,e){function r(n,t){b.push(function(){f(n,t)})}function o(){if(0===b.length&&0===d)return e(null,v);for(;b.length&&d<t;){var n=b.shift();n()}}function i(n,t){var e=g[n];e||(e=g[n]=[]),e.push(t)}function c(n){var t=g[n]||[];D(t,function(n){n()}),o()}function f(n,t){if(!m){var r=F(u(function(t,r){if(d--,r.length<=1&&(r=r[0]),t){var u={};C(v,function(n,t){u[t]=n}),u[n]=r,m=!0,g=Object.create(null),e(t,u)}else v[n]=r,c(n)}));d++;var o=t[t.length-1];t.length>1?o(v,r):o(r)}}function a(){for(var n,t=0;j.length;)n=j.pop(),t++,D(l(n),function(n){0===--S[n]&&j.push(n)});if(t!==p)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}function l(t){var e=[];return C(n,function(n,r){Ft(n)&&Q(n,t,0)>=0&&e.push(r)}),e}"function"==typeof t&&(e=t,t=null),e=y(e||h);var s=x(n),p=s.length;if(!p)return e(null);t||(t=p);var v={},d=0,m=!1,g=Object.create(null),b=[],j=[],S={};C(n,function(t,e){if(!Ft(t))return r(e,[t]),void j.push(e);var u=t.slice(0,t.length-1),o=u.length;return 0===o?(r(e,t),void j.push(e)):(S[e]=o,void D(u,function(c){if(!n[c])throw new Error("async.auto task `"+e+"` has a non-existent dependency `"+c+"` in "+u.join(", "));i(c,function(){o--,0===o&&r(e,t)})}))}),a(),o()},Ue="[object Symbol]",ze=1/0,Pe=ft?ft.prototype:void 0,Ve=Pe?Pe.toString:void 0,qe="\\ud800-\\udfff",De="\\u0300-\\u036f\\ufe20-\\ufe23",Re="\\u20d0-\\u20f0",Ce="\\ufe0e\\ufe0f",$e="\\u200d",We=RegExp("["+$e+qe+De+Re+Ce+"]"),Ne="\\ud800-\\udfff",Qe="\\u0300-\\u036f\\ufe20-\\ufe23",Ge="\\u20d0-\\u20f0",He="\\ufe0e\\ufe0f",Je="["+Ne+"]",Ke="["+Qe+Ge+"]",Xe="\\ud83c[\\udffb-\\udfff]",Ye="(?:"+Ke+"|"+Xe+")",Ze="[^"+Ne+"]",nr="(?:\\ud83c[\\udde6-\\uddff]){2}",tr="[\\ud800-\\udbff][\\udc00-\\udfff]",er="\\u200d",rr=Ye+"?",ur="["+He+"]?",or="(?:"+er+"(?:"+[Ze,nr,tr].join("|")+")"+ur+rr+")*",ir=ur+rr+or,cr="(?:"+[Ze+Ke+"?",Ke,nr,tr,Je].join("|")+")",fr=RegExp(Xe+"(?="+Xe+")|"+cr+ir,"g"),ar=/^\s+|\s+$/g,lr=/^(function)?\s*[^\(]*\(\s*([^\)]*)\)/m,sr=/,/,pr=/(=.+)?(\s*)$/,hr=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,yr="function"==typeof setImmediate&&setImmediate,vr="object"==typeof process&&"function"==typeof process.nextTick;se=yr?setImmediate:vr?process.nextTick:an;var dr=ln(se);sn.prototype.removeLink=function(n){return n.prev?n.prev.next=n.next:this.head=n.next,n.next?n.next.prev=n.prev:this.tail=n.prev,n.prev=n.next=null,this.length-=1,n},sn.prototype.empty=sn,sn.prototype.insertAfter=function(n,t){t.prev=n,t.next=n.next,n.next?n.next.prev=t:this.tail=t,n.next=t,this.length+=1},sn.prototype.insertBefore=function(n,t){t.prev=n.prev,t.next=n,n.prev?n.prev.next=t:this.head=t,n.prev=t,this.length+=1},sn.prototype.unshift=function(n){this.head?this.insertBefore(this.head,n):pn(this,n)},sn.prototype.push=function(n){this.tail?this.insertAfter(this.tail,n):pn(this,n)},sn.prototype.shift=function(){return this.head&&this.removeLink(this.head)},sn.prototype.pop=function(){return this.tail&&this.removeLink(this.tail)};var mr,gr=M(_,1),br=u(function(n){return u(function(t){var e=this,r=t[t.length-1];"function"==typeof r?t.pop():r=h,vn(n,t,function(n,t,r){t.apply(e,n.concat(u(function(n,t){r(n,t)})))},function(n,t){r.apply(e,[n].concat(t))})})}),jr=u(function(n){return br.apply(null,n.reverse())}),Sr=z(dn),kr=mn(dn),Or=u(function(n){var t=[null].concat(n);return ut(function(n,e){return e.apply(this,t)})}),wr=z(gn(r,bn)),Lr=V(gn(r,bn)),xr=M(Lr,1),Er=jn("dir"),Ar=M(En,1),Tr=z(gn(Tn,Tn)),Br=V(gn(Tn,Tn)),Fr=M(Br,1),Ir=z(_n),_r=V(_n),Mr=M(_r,1),Ur=function(n,t,e,r){r=r||h,Te(n,t,function(n,t){e(n,function(e,r){return e?t(e):t(null,{key:r,val:n})})},function(n,t){for(var e={},u=Object.prototype.hasOwnProperty,o=0;o<t.length;o++)if(t[o]){var i=t[o].key,c=t[o].val;u.call(e,i)?e[i].push(c):e[i]=[c]}return r(n,e)})},zr=M(Ur,1/0),Pr=M(Ur,1),Vr=jn("log"),qr=M(Un,1/0),Dr=M(Un,1);mr=vr?process.nextTick:yr?setImmediate:an;var Rr=ln(mr),Cr=function(n,t){return hn(function(t,e){n(t[0],e)},t,1)},$r=function(n,t){var e=Cr(n,t);return e.push=function(n,t,r){if(null==r&&(r=h),"function"!=typeof r)throw new Error("task callback must be a function");if(e.started=!0,Ft(n)||(n=[n]),0===n.length)return dr(function(){e.drain()});t=t||0;for(var u=e._tasks.head;u&&t>=u.priority;)u=u.next;for(var o=0,i=n.length;o<i;o++){var c={data:n[o],priority:t,callback:r};u?e._tasks.insertBefore(u,c):e._tasks.push(c)}dr(e.process)},delete e.unshift,e},Wr=Array.prototype.slice,Nr=z(Wn),Qr=V(Wn),Gr=M(Qr,1),Hr=function(n,t){return t||(t=n,n=null),ut(function(e,r){function u(n){t.apply(null,e.concat(n))}n?Gn(n,u,r):Gn(u,r)})},Jr=z(gn(Boolean,r)),Kr=V(gn(Boolean,r)),Xr=M(Kr,1),Yr=Math.ceil,Zr=Math.max,nu=M(Yn,1/0),tu=M(Yn,1),eu=function(n,t){function e(o){if(r===n.length)return t.apply(null,[null].concat(o));var i=F(u(function(n,r){return n?t.apply(null,[n].concat(r)):void e(r)}));o.push(i);var c=n[r++];c.apply(null,o)}if(t=y(t||h),!Ft(n))return t(new Error("First argument to waterfall must be an array of functions"));if(!n.length)return t();var r=0;e([])},ru={applyEach:Ae,applyEachSeries:Fe,apply:Ie,asyncify:q,auto:Me,autoInject:fn,cargo:yn,compose:jr,concat:Sr,concatSeries:kr,constant:Or,detect:wr,detectLimit:Lr,detectSeries:xr,dir:Er,doDuring:Sn,doUntil:On,doWhilst:kn,during:wn,each:xn,eachLimit:En,eachOf:xe,eachOfLimit:_,eachOfSeries:gr,eachSeries:Ar,ensureAsync:An,every:Tr,everyLimit:Br,everySeries:Fr,filter:Ir,filterLimit:_r,filterSeries:Mr,forever:Mn,groupBy:zr,groupByLimit:Ur,groupBySeries:Pr,log:Vr,map:Ee,mapLimit:Te,mapSeries:Be,mapValues:qr,mapValuesLimit:Un,mapValuesSeries:Dr,memoize:Pn,nextTick:Rr,parallel:qn,parallelLimit:Dn,priorityQueue:$r,queue:Cr,race:Rn,reduce:vn,reduceRight:Cn,reflect:$n,reflectAll:Nn,reject:Nr,rejectLimit:Qr,rejectSeries:Gr,retry:Gn,retryable:Hr,seq:br,series:Hn,setImmediate:dr,some:Jr,someLimit:Kr,someSeries:Xr,sortBy:Jn,timeout:Kn,times:nu,timesLimit:Yn,timesSeries:tu,transform:Zn,unmemoize:nt,until:et,waterfall:eu,whilst:tt,all:Tr,any:Jr,forEach:xn,forEachSeries:Ar,forEachLimit:En,forEachOf:xe,forEachOfSeries:gr,forEachOfLimit:_,inject:vn,foldl:vn,foldr:Cn,select:Ir,selectLimit:_r,selectSeries:Mr,wrapSync:q};n.default=ru,n.applyEach=Ae,n.applyEachSeries=Fe,n.apply=Ie,n.asyncify=q,n.auto=Me,n.autoInject=fn,n.cargo=yn,n.compose=jr,n.concat=Sr,n.concatSeries=kr,n.constant=Or,n.detect=wr,n.detectLimit=Lr,n.detectSeries=xr,n.dir=Er,n.doDuring=Sn,n.doUntil=On,n.doWhilst=kn,n.during=wn,n.each=xn,n.eachLimit=En,n.eachOf=xe,n.eachOfLimit=_,n.eachOfSeries=gr,n.eachSeries=Ar,n.ensureAsync=An,n.every=Tr,n.everyLimit=Br,n.everySeries=Fr,n.filter=Ir,n.filterLimit=_r,n.filterSeries=Mr,n.forever=Mn,n.groupBy=zr,n.groupByLimit=Ur,n.groupBySeries=Pr,n.log=Vr,n.map=Ee,n.mapLimit=Te,n.mapSeries=Be,n.mapValues=qr,n.mapValuesLimit=Un,n.mapValuesSeries=Dr,n.memoize=Pn,n.nextTick=Rr,n.parallel=qn,n.parallelLimit=Dn,n.priorityQueue=$r,n.queue=Cr,n.race=Rn,n.reduce=vn,n.reduceRight=Cn,n.reflect=$n,n.reflectAll=Nn,n.reject=Nr,n.rejectLimit=Qr,n.rejectSeries=Gr,n.retry=Gn,n.retryable=Hr,n.seq=br,n.series=Hn,n.setImmediate=dr,n.some=Jr,n.someLimit=Kr,n.someSeries=Xr,n.sortBy=Jn,n.timeout=Kn,n.times=nu,n.timesLimit=Yn,n.timesSeries=tu,n.transform=Zn,n.unmemoize=nt,n.until=et,n.waterfall=eu,n.whilst=tt,n.all=Tr,n.allLimit=Br,n.allSeries=Fr,n.any=Jr,n.anyLimit=Kr,n.anySeries=Xr,n.find=wr,n.findLimit=Lr,n.findSeries=xr,n.forEach=xn,n.forEachSeries=Ar,n.forEachLimit=En,n.forEachOf=xe,n.forEachOfSeries=gr,n.forEachOfLimit=_,n.inject=vn,n.foldl=vn,n.foldr=Cn,n.select=Ir,n.selectLimit=_r,n.selectSeries=Mr,n.wrapSync=q,Object.defineProperty(n,"__esModule",{value:!0})});
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(e.async=e.async||{})}(this,function(exports){"use strict";function apply(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}function overRest$1(e,t,r){return t=nativeMax(void 0===t?e.length-1:t,0),function(){for(var n=arguments,o=-1,i=nativeMax(n.length-t,0),a=Array(i);++o<i;)a[o]=n[t+o];o=-1;for(var s=Array(t+1);++o<t;)s[o]=n[o];return s[t]=r(a),apply(e,this,s)}}function identity(e){return e}function rest(e,t){return overRest$1(e,t,identity)}function isObject(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function asyncify(e){return initialParams(function(t,r){var n;try{n=e.apply(this,t)}catch(e){return r(e)}isObject(n)&&"function"==typeof n.then?n.then(function(e){r(null,e)},function(e){r(e.message?e:new Error(e))}):r(null,n)})}function supportsAsync(){var supported;try{supported=isAsync(eval("(async function () {})"))}catch(e){supported=!1}return supported}function isAsync(e){return supportsSymbol&&"AsyncFunction"===e[Symbol.toStringTag]}function wrapAsync(e){return isAsync(e)?asyncify(e):e}function applyEach$1(e){return rest(function(t,r){var n=initialParams(function(r,n){var o=this;return e(t,function(e,t){wrapAsync$1(e).apply(o,r.concat(t))},n)});return r.length?n.apply(this,r):n})}function getRawTag(e){var t=hasOwnProperty.call(e,symToStringTag$1),r=e[symToStringTag$1];try{e[symToStringTag$1]=void 0;var n=!0}catch(e){}var o=nativeObjectToString.call(e);return n&&(t?e[symToStringTag$1]=r:delete e[symToStringTag$1]),o}function objectToString(e){return nativeObjectToString$1.call(e)}function baseGetTag(e){return null==e?void 0===e?undefinedTag:nullTag:(e=Object(e),symToStringTag&&symToStringTag in e?getRawTag(e):objectToString(e))}function isFunction(e){if(!isObject(e))return!1;var t=baseGetTag(e);return t==funcTag||t==genTag||t==asyncTag||t==proxyTag}function isLength(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=MAX_SAFE_INTEGER}function isArrayLike(e){return null!=e&&isLength(e.length)&&!isFunction(e)}function noop(){}function once(e){return function(){if(null!==e){var t=e;e=null,t.apply(this,arguments)}}}function baseTimes(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}function isObjectLike(e){return null!=e&&"object"==typeof e}function baseIsArguments(e){return isObjectLike(e)&&baseGetTag(e)==argsTag}function stubFalse(){return!1}function isIndex(e,t){return t=null==t?MAX_SAFE_INTEGER$1:t,!!t&&("number"==typeof e||reIsUint.test(e))&&e>-1&&e%1==0&&e<t}function baseIsTypedArray(e){return isObjectLike(e)&&isLength(e.length)&&!!typedArrayTags[baseGetTag(e)]}function baseUnary(e){return function(t){return e(t)}}function arrayLikeKeys(e,t){var r=isArray(e),n=!r&&isArguments(e),o=!r&&!n&&isBuffer(e),i=!r&&!n&&!o&&isTypedArray(e),a=r||n||o||i,s=a?baseTimes(e.length,String):[],c=s.length;for(var u in e)!t&&!hasOwnProperty$1.call(e,u)||a&&("length"==u||o&&("offset"==u||"parent"==u)||i&&("buffer"==u||"byteLength"==u||"byteOffset"==u)||isIndex(u,c))||s.push(u);return s}function isPrototype(e){var t=e&&e.constructor,r="function"==typeof t&&t.prototype||objectProto$5;return e===r}function overArg(e,t){return function(r){return e(t(r))}}function baseKeys(e){if(!isPrototype(e))return nativeKeys(e);var t=[];for(var r in Object(e))hasOwnProperty$3.call(e,r)&&"constructor"!=r&&t.push(r);return t}function keys(e){return isArrayLike(e)?arrayLikeKeys(e):baseKeys(e)}function createArrayIterator(e){var t=-1,r=e.length;return function(){return++t<r?{value:e[t],key:t}:null}}function createES2015Iterator(e){var t=-1;return function(){var r=e.next();return r.done?null:(t++,{value:r.value,key:t})}}function createObjectIterator(e){var t=keys(e),r=-1,n=t.length;return function(){var o=t[++r];return r<n?{value:e[o],key:o}:null}}function iterator(e){if(isArrayLike(e))return createArrayIterator(e);var t=getIterator(e);return t?createES2015Iterator(t):createObjectIterator(e)}function onlyOnce(e){return function(){if(null===e)throw new Error("Callback was already called.");var t=e;e=null,t.apply(this,arguments)}}function _eachOfLimit(e){return function(t,r,n){function o(e,t){if(c-=1,e)s=!0,n(e);else{if(t===breakLoop||s&&c<=0)return s=!0,n(null);i()}}function i(){for(;c<e&&!s;){var t=a();if(null===t)return s=!0,void(c<=0&&n(null));c+=1,r(t.value,t.key,onlyOnce(o))}}if(n=once(n||noop),e<=0||!t)return n(null);var a=iterator(t),s=!1,c=0;i()}}function eachOfLimit(e,t,r,n){_eachOfLimit(t)(e,wrapAsync$1(r),n)}function doLimit(e,t){return function(r,n,o){return e(r,t,n,o)}}function eachOfArrayLike(e,t,r){function n(e,t){e?r(e):++i!==a&&t!==breakLoop||r(null)}r=once(r||noop);var o=0,i=0,a=e.length;for(0===a&&r(null);o<a;o++)t(e[o],o,onlyOnce(n))}function doParallel(e){return function(t,r,n){return e(eachOf,t,wrapAsync$1(r),n)}}function _asyncMap(e,t,r,n){n=n||noop,t=t||[];var o=[],i=0,a=wrapAsync$1(r);e(t,function(e,t,r){var n=i++;a(e,function(e,t){o[n]=t,r(e)})},function(e){n(e,o)})}function doParallelLimit(e){return function(t,r,n,o){return e(_eachOfLimit(r),t,wrapAsync$1(n),o)}}function arrayEach(e,t){for(var r=-1,n=null==e?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}function createBaseFor(e){return function(t,r,n){for(var o=-1,i=Object(t),a=n(t),s=a.length;s--;){var c=a[e?s:++o];if(r(i[c],c,i)===!1)break}return t}}function baseForOwn(e,t){return e&&baseFor(e,t,keys)}function baseFindIndex(e,t,r,n){for(var o=e.length,i=r+(n?1:-1);n?i--:++i<o;)if(t(e[i],i,e))return i;return-1}function baseIsNaN(e){return e!==e}function strictIndexOf(e,t,r){for(var n=r-1,o=e.length;++n<o;)if(e[n]===t)return n;return-1}function baseIndexOf(e,t,r){return t===t?strictIndexOf(e,t,r):baseFindIndex(e,baseIsNaN,r)}function arrayMap(e,t){for(var r=-1,n=null==e?0:e.length,o=Array(n);++r<n;)o[r]=t(e[r],r,e);return o}function isSymbol(e){return"symbol"==typeof e||isObjectLike(e)&&baseGetTag(e)==symbolTag}function baseToString(e){if("string"==typeof e)return e;if(isArray(e))return arrayMap(e,baseToString)+"";if(isSymbol(e))return symbolToString?symbolToString.call(e):"";var t=e+"";return"0"==t&&1/e==-INFINITY?"-0":t}function baseSlice(e,t,r){var n=-1,o=e.length;t<0&&(t=-t>o?0:o+t),r=r>o?o:r,r<0&&(r+=o),o=t>r?0:r-t>>>0,t>>>=0;for(var i=Array(o);++n<o;)i[n]=e[n+t];return i}function castSlice(e,t,r){var n=e.length;return r=void 0===r?n:r,!t&&r>=n?e:baseSlice(e,t,r)}function charsEndIndex(e,t){for(var r=e.length;r--&&baseIndexOf(t,e[r],0)>-1;);return r}function charsStartIndex(e,t){for(var r=-1,n=e.length;++r<n&&baseIndexOf(t,e[r],0)>-1;);return r}function asciiToArray(e){return e.split("")}function hasUnicode(e){return reHasUnicode.test(e)}function unicodeToArray(e){return e.match(reUnicode)||[]}function stringToArray(e){return hasUnicode(e)?unicodeToArray(e):asciiToArray(e)}function toString(e){return null==e?"":baseToString(e)}function trim(e,t,r){if(e=toString(e),e&&(r||void 0===t))return e.replace(reTrim,"");if(!e||!(t=baseToString(t)))return e;var n=stringToArray(e),o=stringToArray(t),i=charsStartIndex(n,o),a=charsEndIndex(n,o)+1;return castSlice(n,i,a).join("")}function parseParams(e){return e=e.toString().replace(STRIP_COMMENTS,""),e=e.match(FN_ARGS)[2].replace(" ",""),e=e?e.split(FN_ARG_SPLIT):[],e=e.map(function(e){return trim(e.replace(FN_ARG,""))})}function autoInject(e,t){var r={};baseForOwn(e,function(e,t){function n(t,r){var n=arrayMap(o,function(e){return t[e]});n.push(r),wrapAsync$1(e).apply(null,n)}var o,i=isAsync(e),a=!i&&1===e.length||i&&0===e.length;if(isArray(e))o=e.slice(0,-1),e=e[e.length-1],r[t]=o.concat(o.length>0?n:e);else if(a)r[t]=e;else{if(o=parseParams(e),0===e.length&&!i&&0===o.length)throw new Error("autoInject task functions require explicit parameters.");i||o.pop(),r[t]=o.concat(n)}}),auto(r,t)}function fallback(e){setTimeout(e,0)}function wrap(e){return rest(function(t,r){e(function(){t.apply(null,r)})})}function DLL(){this.head=this.tail=null,this.length=0}function setInitial(e,t){e.length=1,e.head=e.tail=t}function queue(e,t,r){function n(e,t,r){if(null!=r&&"function"!=typeof r)throw new Error("task callback must be a function");if(u.started=!0,isArray(e)||(e=[e]),0===e.length&&u.idle())return setImmediate$1(function(){u.drain()});for(var n=0,o=e.length;n<o;n++){var i={data:e[n],callback:r||noop};t?u._tasks.unshift(i):u._tasks.push(i)}setImmediate$1(u.process)}function o(e){return rest(function(t){a-=1;for(var r=0,n=e.length;r<n;r++){var o=e[r],i=baseIndexOf(s,o,0);i>=0&&s.splice(i),o.callback.apply(o,t),null!=t[0]&&u.error(t[0],o.data)}a<=u.concurrency-u.buffer&&u.unsaturated(),u.idle()&&u.drain(),u.process()})}if(null==t)t=1;else if(0===t)throw new Error("Concurrency must not be zero");var i=wrapAsync$1(e),a=0,s=[],c=!1,u={_tasks:new DLL,concurrency:t,payload:r,saturated:noop,unsaturated:noop,buffer:t/4,empty:noop,drain:noop,error:noop,started:!1,paused:!1,push:function(e,t){n(e,!1,t)},kill:function(){u.drain=noop,u._tasks.empty()},unshift:function(e,t){n(e,!0,t)},process:function(){if(!c){for(c=!0;!u.paused&&a<u.concurrency&&u._tasks.length;){var e=[],t=[],r=u._tasks.length;u.payload&&(r=Math.min(r,u.payload));for(var n=0;n<r;n++){var l=u._tasks.shift();e.push(l),t.push(l.data)}0===u._tasks.length&&u.empty(),a+=1,s.push(e[0]),a===u.concurrency&&u.saturated();var f=onlyOnce(o(e));i(t,f)}c=!1}},length:function(){return u._tasks.length},running:function(){return a},workersList:function(){return s},idle:function(){return u._tasks.length+a===0},pause:function(){u.paused=!0},resume:function(){u.paused!==!1&&(u.paused=!1,setImmediate$1(u.process))}};return u}function cargo(e,t){return queue(e,1,t)}function reduce(e,t,r,n){n=once(n||noop);var o=wrapAsync$1(r);eachOfSeries(e,function(e,r,n){o(t,e,function(e,r){t=r,n(e)})},function(e){n(e,t)})}function concat$1(e,t,r,n){var o=[];e(t,function(e,t,n){r(e,function(e,t){o=o.concat(t||[]),n(e)})},function(e){n(e,o)})}function doSeries(e){return function(t,r,n){return e(eachOfSeries,t,wrapAsync$1(r),n)}}function _createTester(e,t){return function(r,n,o,i){i=i||noop;var a,s=!1;r(n,function(r,n,i){o(r,function(n,o){n?i(n):e(o)&&!a?(s=!0,a=t(!0,r),i(null,breakLoop)):i()})},function(e){e?i(e):i(null,s?a:t(!1))})}}function _findGetResult(e,t){return t}function consoleFunc(e){return rest(function(t,r){wrapAsync$1(t).apply(null,r.concat(rest(function(t,r){"object"==typeof console&&(t?console.error&&console.error(t):console[e]&&arrayEach(r,function(t){console[e](t)}))})))})}function doDuring(e,t,r){function n(e,t){return e?r(e):t?void o(a):r(null)}r=onlyOnce(r||noop);var o=wrapAsync$1(e),i=wrapAsync$1(t),a=rest(function(e,t){return e?r(e):(t.push(n),void i.apply(this,t))});n(null,!0)}function doWhilst(e,t,r){r=onlyOnce(r||noop);var n=wrapAsync$1(e),o=rest(function(e,i){return e?r(e):t.apply(this,i)?n(o):void r.apply(null,[null].concat(i))});n(o)}function doUntil(e,t,r){doWhilst(e,function(){return!t.apply(this,arguments)},r)}function during(e,t,r){function n(e){return e?r(e):void a(o)}function o(e,t){return e?r(e):t?void i(n):r(null)}r=onlyOnce(r||noop);var i=wrapAsync$1(t),a=wrapAsync$1(e);a(o)}function _withoutIndex(e){return function(t,r,n){return e(t,n)}}function eachLimit(e,t,r){eachOf(e,_withoutIndex(wrapAsync$1(t)),r)}function eachLimit$1(e,t,r,n){_eachOfLimit(t)(e,_withoutIndex(wrapAsync$1(r)),n)}function ensureAsync(e){return isAsync(e)?e:initialParams(function(t,r){var n=!0;t.push(function(){var e=arguments;n?setImmediate$1(function(){r.apply(null,e)}):r.apply(null,e)}),e.apply(this,t),n=!1})}function notId(e){return!e}function baseProperty(e){return function(t){return null==t?void 0:t[e]}}function filterArray(e,t,r,n){var o=new Array(t.length);e(t,function(e,t,n){r(e,function(e,r){o[t]=!!r,n(e)})},function(e){if(e)return n(e);for(var r=[],i=0;i<t.length;i++)o[i]&&r.push(t[i]);n(null,r)})}function filterGeneric(e,t,r,n){var o=[];e(t,function(e,t,n){r(e,function(r,i){r?n(r):(i&&o.push({index:t,value:e}),n())})},function(e){e?n(e):n(null,arrayMap(o.sort(function(e,t){return e.index-t.index}),baseProperty("value")))})}function _filter(e,t,r,n){var o=isArrayLike(t)?filterArray:filterGeneric;o(e,t,wrapAsync$1(r),n||noop)}function forever(e,t){function r(e){return e?n(e):void o(r)}var n=onlyOnce(t||noop),o=wrapAsync$1(ensureAsync(e));r()}function mapValuesLimit(e,t,r,n){n=once(n||noop);var o={},i=wrapAsync$1(r);eachOfLimit(e,t,function(e,t,r){i(e,t,function(e,n){return e?r(e):(o[t]=n,void r())})},function(e){n(e,o)})}function has(e,t){return t in e}function memoize(e,t){var r=Object.create(null),n=Object.create(null);t=t||identity;var o=wrapAsync$1(e),i=initialParams(function(e,i){var a=t.apply(null,e);has(r,a)?setImmediate$1(function(){i.apply(null,r[a])}):has(n,a)?n[a].push(i):(n[a]=[i],o.apply(null,e.concat(rest(function(e){r[a]=e;var t=n[a];delete n[a];for(var o=0,i=t.length;o<i;o++)t[o].apply(null,e)}))))});return i.memo=r,i.unmemoized=e,i}function _parallel(e,t,r){r=r||noop;var n=isArrayLike(t)?[]:{};e(t,function(e,t,r){wrapAsync$1(e)(rest(function(e,o){o.length<=1&&(o=o[0]),n[t]=o,r(e)}))},function(e){r(e,n)})}function parallelLimit(e,t){_parallel(eachOf,e,t)}function parallelLimit$1(e,t,r){_parallel(_eachOfLimit(t),e,r)}function race(e,t){if(t=once(t||noop),!isArray(e))return t(new TypeError("First argument to race must be an array of functions"));if(!e.length)return t();for(var r=0,n=e.length;r<n;r++)wrapAsync$1(e[r])(t)}function reduceRight(e,t,r,n){var o=slice.call(e).reverse();reduce(o,t,r,n)}function reflect(e){var t=wrapAsync$1(e);return initialParams(function(e,r){return e.push(rest(function(e,t){if(e)r(null,{error:e});else{var n=null;1===t.length?n=t[0]:t.length>1&&(n=t),r(null,{value:n})}})),t.apply(this,e)})}function reject$1(e,t,r,n){_filter(e,t,function(e,t){r(e,function(e,r){t(e,!r)})},n)}function reflectAll(e){var t;return isArray(e)?t=arrayMap(e,reflect):(t={},baseForOwn(e,function(e,r){t[r]=reflect.call(this,e)})),t}function constant$1(e){return function(){return e}}function retry(e,t,r){function n(e,t){if("object"==typeof t)e.times=+t.times||i,e.intervalFunc="function"==typeof t.interval?t.interval:constant$1(+t.interval||a),e.errorFilter=t.errorFilter;else{if("number"!=typeof t&&"string"!=typeof t)throw new Error("Invalid arguments for async.retry");e.times=+t||i}}function o(){c(function(e){e&&u++<s.times&&("function"!=typeof s.errorFilter||s.errorFilter(e))?setTimeout(o,s.intervalFunc(u)):r.apply(null,arguments)})}var i=5,a=0,s={times:i,intervalFunc:constant$1(a)};if(arguments.length<3&&"function"==typeof e?(r=t||noop,t=e):(n(s,e),r=r||noop),"function"!=typeof t)throw new Error("Invalid arguments for async.retry");var c=wrapAsync$1(t),u=1;o()}function series(e,t){_parallel(eachOfSeries,e,t)}function sortBy(e,t,r){function n(e,t){var r=e.criteria,n=t.criteria;return r<n?-1:r>n?1:0}var o=wrapAsync$1(t);map(e,function(e,t){o(e,function(r,n){return r?t(r):void t(null,{value:e,criteria:n})})},function(e,t){return e?r(e):void r(null,arrayMap(t.sort(n),baseProperty("value")))})}function timeout(e,t,r){function n(){s||(i.apply(null,arguments),clearTimeout(a))}function o(){var t=e.name||"anonymous",n=new Error('Callback function "'+t+'" timed out.');n.code="ETIMEDOUT",r&&(n.info=r),s=!0,i(n)}var i,a,s=!1,c=wrapAsync$1(e);return initialParams(function(e,r){i=r,a=setTimeout(o,t),c.apply(null,e.concat(n))})}function baseRange(e,t,r,n){for(var o=-1,i=nativeMax$1(nativeCeil((t-e)/(r||1)),0),a=Array(i);i--;)a[n?i:++o]=e,e+=r;return a}function timeLimit(e,t,r,n){var o=wrapAsync$1(r);mapLimit(baseRange(0,e,1),t,o,n)}function transform(e,t,r,n){arguments.length<=3&&(n=r,r=t,t=isArray(e)?[]:{}),n=once(n||noop);var o=wrapAsync$1(r);eachOf(e,function(e,r,n){o(t,e,r,n)},function(e){n(e,t)})}function unmemoize(e){return function(){return(e.unmemoized||e).apply(null,arguments)}}function whilst(e,t,r){r=onlyOnce(r||noop);var n=wrapAsync$1(t);if(!e())return r(null);var o=rest(function(t,i){return t?r(t):e()?n(o):void r.apply(null,[null].concat(i))});n(o)}function until(e,t,r){whilst(function(){return!e.apply(this,arguments)},t,r)}var nativeMax=Math.max,initialParams=function(e){return rest(function(t){var r=t.pop();e.call(this,t,r)})},supportsSymbol="function"==typeof Symbol,wrapAsync$1=supportsAsync()?wrapAsync:identity,freeGlobal="object"==typeof global&&global&&global.Object===Object&&global,freeSelf="object"==typeof self&&self&&self.Object===Object&&self,root=freeGlobal||freeSelf||Function("return this")(),Symbol$1=root.Symbol,objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty,nativeObjectToString=objectProto.toString,symToStringTag$1=Symbol$1?Symbol$1.toStringTag:void 0,objectProto$1=Object.prototype,nativeObjectToString$1=objectProto$1.toString,nullTag="[object Null]",undefinedTag="[object Undefined]",symToStringTag=Symbol$1?Symbol$1.toStringTag:void 0,asyncTag="[object AsyncFunction]",funcTag="[object Function]",genTag="[object GeneratorFunction]",proxyTag="[object Proxy]",MAX_SAFE_INTEGER=9007199254740991,breakLoop={},iteratorSymbol="function"==typeof Symbol&&Symbol.iterator,getIterator=function(e){return iteratorSymbol&&e[iteratorSymbol]&&e[iteratorSymbol]()},argsTag="[object Arguments]",objectProto$3=Object.prototype,hasOwnProperty$2=objectProto$3.hasOwnProperty,propertyIsEnumerable=objectProto$3.propertyIsEnumerable,isArguments=baseIsArguments(function(){return arguments}())?baseIsArguments:function(e){return isObjectLike(e)&&hasOwnProperty$2.call(e,"callee")&&!propertyIsEnumerable.call(e,"callee")},isArray=Array.isArray,freeExports="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule=freeExports&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports=freeModule&&freeModule.exports===freeExports,Buffer=moduleExports?root.Buffer:void 0,nativeIsBuffer=Buffer?Buffer.isBuffer:void 0,isBuffer=nativeIsBuffer||stubFalse,MAX_SAFE_INTEGER$1=9007199254740991,reIsUint=/^(?:0|[1-9]\d*)$/,argsTag$1="[object Arguments]",arrayTag="[object Array]",boolTag="[object Boolean]",dateTag="[object Date]",errorTag="[object Error]",funcTag$1="[object Function]",mapTag="[object Map]",numberTag="[object Number]",objectTag="[object Object]",regexpTag="[object RegExp]",setTag="[object Set]",stringTag="[object String]",weakMapTag="[object WeakMap]",arrayBufferTag="[object ArrayBuffer]",dataViewTag="[object DataView]",float32Tag="[object Float32Array]",float64Tag="[object Float64Array]",int8Tag="[object Int8Array]",int16Tag="[object Int16Array]",int32Tag="[object Int32Array]",uint8Tag="[object Uint8Array]",uint8ClampedTag="[object Uint8ClampedArray]",uint16Tag="[object Uint16Array]",uint32Tag="[object Uint32Array]",typedArrayTags={};typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=!0,typedArrayTags[argsTag$1]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dataViewTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag$1]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=!1;var freeExports$1="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule$1=freeExports$1&&"object"==typeof module&&module&&!module.nodeType&&module,moduleExports$1=freeModule$1&&freeModule$1.exports===freeExports$1,freeProcess=moduleExports$1&&freeGlobal.process,nodeUtil=function(){try{return freeProcess&&freeProcess.binding("util")}catch(e){}}(),nodeIsTypedArray=nodeUtil&&nodeUtil.isTypedArray,isTypedArray=nodeIsTypedArray?baseUnary(nodeIsTypedArray):baseIsTypedArray,objectProto$2=Object.prototype,hasOwnProperty$1=objectProto$2.hasOwnProperty,objectProto$5=Object.prototype,nativeKeys=overArg(Object.keys,Object),objectProto$4=Object.prototype,hasOwnProperty$3=objectProto$4.hasOwnProperty,eachOfGeneric=doLimit(eachOfLimit,1/0),eachOf=function(e,t,r){var n=isArrayLike(e)?eachOfArrayLike:eachOfGeneric;n(e,wrapAsync$1(t),r)},map=doParallel(_asyncMap),applyEach=applyEach$1(map),mapLimit=doParallelLimit(_asyncMap),mapSeries=doLimit(mapLimit,1),applyEachSeries=applyEach$1(mapSeries),apply$2=rest(function(e,t){return rest(function(r){return e.apply(null,t.concat(r))})}),baseFor=createBaseFor(),auto=function(e,t,r){function n(e,t){g.push(function(){s(e,t)})}function o(){if(0===g.length&&0===y)return r(null,p);for(;g.length&&y<t;){var e=g.shift();e()}}function i(e,t){var r=d[e];r||(r=d[e]=[]),r.push(t)}function a(e){var t=d[e]||[];arrayEach(t,function(e){e()}),o()}function s(e,t){if(!m){var n=onlyOnce(rest(function(t,n){if(y--,n.length<=1&&(n=n[0]),t){var o={};baseForOwn(p,function(e,t){o[t]=e}),o[e]=n,m=!0,d=Object.create(null),r(t,o)}else p[e]=n,a(e)}));y++;var o=wrapAsync$1(t[t.length-1]);t.length>1?o(p,n):o(n)}}function c(){for(var e,t=0;h.length;)e=h.pop(),t++,arrayEach(u(e),function(e){0===--b[e]&&h.push(e)});if(t!==f)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}function u(t){var r=[];return baseForOwn(e,function(e,n){isArray(e)&&baseIndexOf(e,t,0)>=0&&r.push(n)}),r}"function"==typeof t&&(r=t,t=null),r=once(r||noop);var l=keys(e),f=l.length;if(!f)return r(null);t||(t=f);var p={},y=0,m=!1,d=Object.create(null),g=[],h=[],b={};baseForOwn(e,function(t,r){if(!isArray(t))return n(r,[t]),void h.push(r);var o=t.slice(0,t.length-1),a=o.length;return 0===a?(n(r,t),void h.push(r)):(b[r]=a,void arrayEach(o,function(s){if(!e[s])throw new Error("async.auto task `"+r+"` has a non-existent dependency `"+s+"` in "+o.join(", "));i(s,function(){a--,0===a&&n(r,t)})}))}),c(),o()},symbolTag="[object Symbol]",INFINITY=1/0,symbolProto=Symbol$1?Symbol$1.prototype:void 0,symbolToString=symbolProto?symbolProto.toString:void 0,rsAstralRange="\\ud800-\\udfff",rsComboMarksRange="\\u0300-\\u036f\\ufe20-\\ufe23",rsComboSymbolsRange="\\u20d0-\\u20f0",rsVarRange="\\ufe0e\\ufe0f",rsZWJ="\\u200d",reHasUnicode=RegExp("["+rsZWJ+rsAstralRange+rsComboMarksRange+rsComboSymbolsRange+rsVarRange+"]"),rsAstralRange$1="\\ud800-\\udfff",rsComboMarksRange$1="\\u0300-\\u036f\\ufe20-\\ufe23",rsComboSymbolsRange$1="\\u20d0-\\u20f0",rsVarRange$1="\\ufe0e\\ufe0f",rsAstral="["+rsAstralRange$1+"]",rsCombo="["+rsComboMarksRange$1+rsComboSymbolsRange$1+"]",rsFitz="\\ud83c[\\udffb-\\udfff]",rsModifier="(?:"+rsCombo+"|"+rsFitz+")",rsNonAstral="[^"+rsAstralRange$1+"]",rsRegional="(?:\\ud83c[\\udde6-\\uddff]){2}",rsSurrPair="[\\ud800-\\udbff][\\udc00-\\udfff]",rsZWJ$1="\\u200d",reOptMod=rsModifier+"?",rsOptVar="["+rsVarRange$1+"]?",rsOptJoin="(?:"+rsZWJ$1+"(?:"+[rsNonAstral,rsRegional,rsSurrPair].join("|")+")"+rsOptVar+reOptMod+")*",rsSeq=rsOptVar+reOptMod+rsOptJoin,rsSymbol="(?:"+[rsNonAstral+rsCombo+"?",rsCombo,rsRegional,rsSurrPair,rsAstral].join("|")+")",reUnicode=RegExp(rsFitz+"(?="+rsFitz+")|"+rsSymbol+rsSeq,"g"),reTrim=/^\s+|\s+$/g,FN_ARGS=/^(?:async\s+)?(function)?\s*[^\(]*\(\s*([^\)]*)\)/m,FN_ARG_SPLIT=/,/,FN_ARG=/(=.+)?(\s*)$/,STRIP_COMMENTS=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,hasSetImmediate="function"==typeof setImmediate&&setImmediate,hasNextTick="object"==typeof process&&"function"==typeof process.nextTick,_defer;_defer=hasSetImmediate?setImmediate:hasNextTick?process.nextTick:fallback;var setImmediate$1=wrap(_defer);DLL.prototype.removeLink=function(e){return e.prev?e.prev.next=e.next:this.head=e.next,e.next?e.next.prev=e.prev:this.tail=e.prev,e.prev=e.next=null,this.length-=1,e},DLL.prototype.empty=DLL,DLL.prototype.insertAfter=function(e,t){t.prev=e,t.next=e.next,e.next?e.next.prev=t:this.tail=t,e.next=t,this.length+=1},DLL.prototype.insertBefore=function(e,t){t.prev=e.prev,t.next=e,e.prev?e.prev.next=t:this.head=t,e.prev=t,this.length+=1},DLL.prototype.unshift=function(e){this.head?this.insertBefore(this.head,e):setInitial(this,e)},DLL.prototype.push=function(e){this.tail?this.insertAfter(this.tail,e):setInitial(this,e)},DLL.prototype.shift=function(){return this.head&&this.removeLink(this.head)},DLL.prototype.pop=function(){return this.tail&&this.removeLink(this.tail)};var eachOfSeries=doLimit(eachOfLimit,1),seq$1=rest(function(e){var t=arrayMap(e,wrapAsync$1);return rest(function(e){var r=this,n=e[e.length-1];"function"==typeof n?e.pop():n=noop,reduce(t,e,function(e,t,n){t.apply(r,e.concat(rest(function(e,t){n(e,t)})))},function(e,t){n.apply(r,[e].concat(t))})})}),compose=rest(function(e){return seq$1.apply(null,e.reverse())}),concat=doParallel(concat$1),concatSeries=doSeries(concat$1),constant=rest(function(e){var t=[null].concat(e);return initialParams(function(e,r){return r.apply(this,t)})}),detect=doParallel(_createTester(identity,_findGetResult)),detectLimit=doParallelLimit(_createTester(identity,_findGetResult)),detectSeries=doLimit(detectLimit,1),dir=consoleFunc("dir"),eachSeries=doLimit(eachLimit$1,1),every=doParallel(_createTester(notId,notId)),everyLimit=doParallelLimit(_createTester(notId,notId)),everySeries=doLimit(everyLimit,1),filter=doParallel(_filter),filterLimit=doParallelLimit(_filter),filterSeries=doLimit(filterLimit,1),groupByLimit=function(e,t,r,n){n=n||noop;var o=wrapAsync$1(r);mapLimit(e,t,function(e,t){o(e,function(r,n){return r?t(r):t(null,{key:n,val:e})})},function(e,t){for(var r={},o=Object.prototype.hasOwnProperty,i=0;i<t.length;i++)if(t[i]){var a=t[i].key,s=t[i].val;o.call(r,a)?r[a].push(s):r[a]=[s]}return n(e,r)})},groupBy=doLimit(groupByLimit,1/0),groupBySeries=doLimit(groupByLimit,1),log=consoleFunc("log"),mapValues=doLimit(mapValuesLimit,1/0),mapValuesSeries=doLimit(mapValuesLimit,1),_defer$1;_defer$1=hasNextTick?process.nextTick:hasSetImmediate?setImmediate:fallback;var nextTick=wrap(_defer$1),queue$1=function(e,t){var r=wrapAsync$1(e);return queue(function(e,t){r(e[0],t)},t,1)},priorityQueue=function(e,t){var r=queue$1(e,t);return r.push=function(e,t,n){if(null==n&&(n=noop),"function"!=typeof n)throw new Error("task callback must be a function");if(r.started=!0,isArray(e)||(e=[e]),0===e.length)return setImmediate$1(function(){r.drain()});t=t||0;for(var o=r._tasks.head;o&&t>=o.priority;)o=o.next;for(var i=0,a=e.length;i<a;i++){var s={data:e[i],priority:t,callback:n};o?r._tasks.insertBefore(o,s):r._tasks.push(s)}setImmediate$1(r.process)},delete r.unshift,r},slice=Array.prototype.slice,reject=doParallel(reject$1),rejectLimit=doParallelLimit(reject$1),rejectSeries=doLimit(rejectLimit,1),retryable=function(e,t){t||(t=e,e=null);var r=wrapAsync$1(t);return initialParams(function(t,n){function o(e){r.apply(null,t.concat(e))}e?retry(e,o,n):retry(o,n)})},some=doParallel(_createTester(Boolean,identity)),someLimit=doParallelLimit(_createTester(Boolean,identity)),someSeries=doLimit(someLimit,1),nativeCeil=Math.ceil,nativeMax$1=Math.max,times=doLimit(timeLimit,1/0),timesSeries=doLimit(timeLimit,1),waterfall=function(e,t){function r(o){if(n===e.length)return t.apply(null,[null].concat(o));var i=onlyOnce(rest(function(e,n){return e?t.apply(null,[e].concat(n)):void r(n)}));o.push(i);var a=wrapAsync$1(e[n++]);a.apply(null,o)}if(t=once(t||noop),!isArray(e))return t(new Error("First argument to waterfall must be an array of functions"));if(!e.length)return t();var n=0;r([])},index={applyEach:applyEach,applyEachSeries:applyEachSeries,apply:apply$2,asyncify:asyncify,auto:auto,autoInject:autoInject,cargo:cargo,compose:compose,concat:concat,concatSeries:concatSeries,constant:constant,detect:detect,detectLimit:detectLimit,detectSeries:detectSeries,dir:dir,doDuring:doDuring,doUntil:doUntil,doWhilst:doWhilst,during:during,each:eachLimit,eachLimit:eachLimit$1,eachOf:eachOf,eachOfLimit:eachOfLimit,eachOfSeries:eachOfSeries,eachSeries:eachSeries,ensureAsync:ensureAsync,every:every,everyLimit:everyLimit,everySeries:everySeries,filter:filter,filterLimit:filterLimit,filterSeries:filterSeries,forever:forever,groupBy:groupBy,groupByLimit:groupByLimit,groupBySeries:groupBySeries,log:log,map:map,mapLimit:mapLimit,mapSeries:mapSeries,mapValues:mapValues,mapValuesLimit:mapValuesLimit,mapValuesSeries:mapValuesSeries,memoize:memoize,nextTick:nextTick,parallel:parallelLimit,parallelLimit:parallelLimit$1,priorityQueue:priorityQueue,queue:queue$1,race:race,reduce:reduce,reduceRight:reduceRight,reflect:reflect,reflectAll:reflectAll,reject:reject,rejectLimit:rejectLimit,rejectSeries:rejectSeries,retry:retry,retryable:retryable,seq:seq$1,series:series,setImmediate:setImmediate$1,some:some,someLimit:someLimit,someSeries:someSeries,sortBy:sortBy,timeout:timeout,times:times,timesLimit:timeLimit,timesSeries:timesSeries,transform:transform,unmemoize:unmemoize,until:until,waterfall:waterfall,whilst:whilst,all:every,any:some,forEach:eachLimit,forEachSeries:eachSeries,forEachLimit:eachLimit$1,forEachOf:eachOf,forEachOfSeries:eachOfSeries,forEachOfLimit:eachOfLimit,inject:reduce,foldl:reduce,foldr:reduceRight,select:filter,selectLimit:filterLimit,selectSeries:filterSeries,wrapSync:asyncify};exports.default=index,exports.applyEach=applyEach,exports.applyEachSeries=applyEachSeries,exports.apply=apply$2,exports.asyncify=asyncify,exports.auto=auto,exports.autoInject=autoInject,exports.cargo=cargo,exports.compose=compose,exports.concat=concat,exports.concatSeries=concatSeries,exports.constant=constant,exports.detect=detect,exports.detectLimit=detectLimit,exports.detectSeries=detectSeries,exports.dir=dir,exports.doDuring=doDuring,exports.doUntil=doUntil,exports.doWhilst=doWhilst,exports.during=during,exports.each=eachLimit,exports.eachLimit=eachLimit$1,exports.eachOf=eachOf,exports.eachOfLimit=eachOfLimit,exports.eachOfSeries=eachOfSeries,exports.eachSeries=eachSeries,exports.ensureAsync=ensureAsync,exports.every=every,exports.everyLimit=everyLimit,exports.everySeries=everySeries,exports.filter=filter,exports.filterLimit=filterLimit,exports.filterSeries=filterSeries,exports.forever=forever,exports.groupBy=groupBy,exports.groupByLimit=groupByLimit,exports.groupBySeries=groupBySeries,exports.log=log,exports.map=map,exports.mapLimit=mapLimit,exports.mapSeries=mapSeries,exports.mapValues=mapValues,exports.mapValuesLimit=mapValuesLimit,exports.mapValuesSeries=mapValuesSeries,exports.memoize=memoize,exports.nextTick=nextTick,exports.parallel=parallelLimit,exports.parallelLimit=parallelLimit$1,exports.priorityQueue=priorityQueue,exports.queue=queue$1,exports.race=race,exports.reduce=reduce,exports.reduceRight=reduceRight,exports.reflect=reflect,exports.reflectAll=reflectAll,exports.reject=reject,exports.rejectLimit=rejectLimit,exports.rejectSeries=rejectSeries,exports.retry=retry,exports.retryable=retryable,exports.seq=seq$1,exports.series=series,exports.setImmediate=setImmediate$1,exports.some=some,exports.someLimit=someLimit,exports.someSeries=someSeries,exports.sortBy=sortBy,exports.timeout=timeout,exports.times=times,exports.timesLimit=timeLimit,exports.timesSeries=timesSeries,exports.transform=transform,exports.unmemoize=unmemoize,exports.until=until,exports.waterfall=waterfall,exports.whilst=whilst,exports.all=every,exports.allLimit=everyLimit,exports.allSeries=everySeries,exports.any=some,exports.anyLimit=someLimit,exports.anySeries=someSeries,exports.find=detect,exports.findLimit=detectLimit,exports.findSeries=detectSeries,exports.forEach=eachLimit,exports.forEachSeries=eachSeries,exports.forEachLimit=eachLimit$1,exports.forEachOf=eachOf,exports.forEachOfSeries=eachOfSeries,exports.forEachOfLimit=eachOfLimit,exports.inject=reduce,exports.foldl=reduce,exports.foldr=reduceRight,exports.select=filter,exports.selectLimit=filterLimit,exports.selectSeries=filterSeries,exports.wrapSync=asyncify,Object.defineProperty(exports,"__esModule",{value:!0})});
//# sourceMappingURL=async.min.map \ No newline at end of file
diff --git a/dist/async.min.map b/dist/async.min.map
index 3fb1c76..6c5a5ad 100644
--- a/dist/async.min.map
+++ b/dist/async.min.map
@@ -1 +1 @@
-{"version":3,"sources":["build/dist/async.js"],"names":["global","factory","exports","module","define","amd","async","this","apply","func","thisArg","args","length","call","overRest$1","start","transform","nativeMax","undefined","arguments","index","array","Array","otherArgs","identity","value","rest","applyEach$1","eachfn","fns","go","initialParams","callback","that","fn","cb","concat","getRawTag","isOwn","hasOwnProperty","symToStringTag$1","tag","unmasked","e","result","nativeObjectToString","objectToString","nativeObjectToString$1","baseGetTag","undefinedTag","nullTag","Object","symToStringTag","isObject","type","isFunction","funcTag","genTag","asyncTag","proxyTag","isLength","MAX_SAFE_INTEGER","isArrayLike","noop","once","callFn","baseTimes","n","iteratee","isObjectLike","baseIsArguments","argsTag","stubFalse","isIndex","MAX_SAFE_INTEGER$1","reIsUint","test","baseIsTypedArray","typedArrayTags","baseUnary","arrayLikeKeys","inherited","isArr","isArray","isArg","isArguments","isBuff","isBuffer","isType","isTypedArray","skipIndexes","String","key","hasOwnProperty$1","push","isPrototype","Ctor","constructor","proto","prototype","objectProto$5","overArg","arg","baseKeys","object","nativeKeys","hasOwnProperty$3","keys","createArrayIterator","coll","i","len","createES2015Iterator","iterator","item","next","done","createObjectIterator","obj","okeys","getIterator","onlyOnce","Error","_eachOfLimit","limit","iterateeCallback","err","running","breakLoop","replenish","elem","nextElem","eachOfLimit","doLimit","iterable","eachOfArrayLike","iteratorCallback","completed","doParallel","eachOf","_asyncMap","arr","results","counter","_","v","doParallelLimit","asyncify","then","message","arrayEach","createBaseFor","fromRight","keysFunc","props","baseForOwn","baseFor","baseFindIndex","predicate","fromIndex","baseIsNaN","strictIndexOf","baseIndexOf","arrayMap","isSymbol","symbolTag","baseToString","symbolToString","INFINITY","baseSlice","end","castSlice","charsEndIndex","strSymbols","chrSymbols","charsStartIndex","asciiToArray","string","split","hasUnicode","reHasUnicode","unicodeToArray","match","reUnicode","stringToArray","toString","trim","chars","guard","replace","reTrim","join","parseParams","STRIP_COMMENTS","FN_ARGS","FN_ARG_SPLIT","map","FN_ARG","autoInject","tasks","newTasks","taskFn","newTask","taskCb","newArgs","params","name","slice","pop","auto","fallback","setTimeout","wrap","defer","DLL","head","tail","setInitial","dll","node","queue","worker","concurrency","payload","_insert","data","insertAtFront","q","started","idle","setImmediate$1","drain","l","_tasks","unshift","process","_next","workers","task","workersList","splice","error","buffer","unsaturated","isProcessing","saturated","empty","paused","kill","Math","min","shift","pause","resume","cargo","reduce","memo","eachOfSeries","x","concat$1","y","doSeries","_createTester","check","getResult","testResult","testPassed","_findGetResult","consoleFunc","console","doDuring","truth","doWhilst","doUntil","during","_withoutIndex","eachLimit","eachLimit$1","ensureAsync","sync","innerArgs","notId","baseProperty","filterArray","truthValues","filterGeneric","sort","a","b","_filter","filter","forever","errback","mapValuesLimit","newObj","val","has","memoize","hasher","create","queues","memoized","unmemoized","_parallel","parallelLimit","parallelLimit$1","race","TypeError","reduceRight","reversed","reverse","reflect","reflectCallback","cbArgs","reject$1","reflectAll","constant$1","retry","opts","parseTimes","acc","t","times","DEFAULT_TIMES","intervalFunc","interval","DEFAULT_INTERVAL","errorFilter","retryAttempt","attempt","options","series","sortBy","comparator","left","right","criteria","timeout","asyncFn","milliseconds","info","injectedCallback","timedOut","originalCallback","clearTimeout","timer","timeoutCallback","code","origCallback","baseRange","step","nativeMax$1","nativeCeil","timeLimit","count","mapLimit","accumulator","k","unmemoize","whilst","until","max","freeGlobal","freeSelf","self","root","Function","Symbol$1","Symbol","objectProto","toStringTag","objectProto$1","iteratorSymbol","objectProto$3","hasOwnProperty$2","propertyIsEnumerable","freeExports","nodeType","freeModule","moduleExports","Buffer","nativeIsBuffer","argsTag$1","arrayTag","boolTag","dateTag","errorTag","funcTag$1","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","_defer","freeExports$1","freeModule$1","moduleExports$1","freeProcess","nodeUtil","binding","nodeIsTypedArray","objectProto$2","objectProto$4","eachOfGeneric","Infinity","eachOfImplementation","applyEach","mapSeries","applyEachSeries","apply$2","callArgs","enqueueTask","readyTasks","runTask","processQueue","runningTasks","run","addListener","taskName","taskListeners","listeners","taskComplete","hasError","taskCallback","safeResults","rkey","checkForDeadlocks","currentTask","readyToCheck","getDependents","dependent","uncheckedDependencies","numTasks","keys$$1","dependencies","remainingDependencies","dependencyName","symbolProto","rsAstralRange","rsComboMarksRange","rsComboSymbolsRange","rsVarRange","rsZWJ","RegExp","rsAstralRange$1","rsComboMarksRange$1","rsComboSymbolsRange$1","rsVarRange$1","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","rsZWJ$1","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","hasSetImmediate","setImmediate","hasNextTick","nextTick","removeLink","prev","insertAfter","newNode","insertBefore","_defer$1","seq$1","functions","newargs","nextargs","compose","concatSeries","constant","values","ignoredArgs","detect","detectLimit","detectSeries","dir","eachSeries","every","everyLimit","everySeries","filterLimit","filterSeries","groupByLimit","mapResults","groupBy","groupBySeries","log","mapValues","mapValuesSeries","queue$1","items","priorityQueue","priority","nextNode","reject","rejectLimit","rejectSeries","retryable","some","Boolean","someLimit","someSeries","ceil","timesSeries","waterfall","nextTask","taskIndex","each","parallel","seq","timesLimit","all","any","forEach","forEachSeries","forEachLimit","forEachOf","forEachOfSeries","forEachOfLimit","inject","foldl","foldr","select","selectLimit","selectSeries","wrapSync","allLimit","allSeries","anyLimit","anySeries","find","findLimit","findSeries","defineProperty"],"mappings":"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","file":"build/dist/async.min.js"} \ No newline at end of file
+{"version":3,"sources":["build/dist/async.js"],"names":["global","factory","exports","module","define","amd","async","this","apply","func","thisArg","args","length","call","overRest$1","start","transform","nativeMax","undefined","arguments","index","array","Array","otherArgs","identity","value","rest","isObject","type","asyncify","initialParams","callback","result","e","then","err","message","Error","supportsAsync","supported","isAsync","eval","fn","supportsSymbol","Symbol","toStringTag","wrapAsync","asyncFn","applyEach$1","eachfn","fns","go","that","cb","wrapAsync$1","concat","getRawTag","isOwn","hasOwnProperty","symToStringTag$1","tag","unmasked","nativeObjectToString","objectToString","nativeObjectToString$1","baseGetTag","undefinedTag","nullTag","Object","symToStringTag","isFunction","funcTag","genTag","asyncTag","proxyTag","isLength","MAX_SAFE_INTEGER","isArrayLike","noop","once","callFn","baseTimes","n","iteratee","isObjectLike","baseIsArguments","argsTag","stubFalse","isIndex","MAX_SAFE_INTEGER$1","reIsUint","test","baseIsTypedArray","typedArrayTags","baseUnary","arrayLikeKeys","inherited","isArr","isArray","isArg","isArguments","isBuff","isBuffer","isType","isTypedArray","skipIndexes","String","key","hasOwnProperty$1","push","isPrototype","Ctor","constructor","proto","prototype","objectProto$5","overArg","arg","baseKeys","object","nativeKeys","hasOwnProperty$3","keys","createArrayIterator","coll","i","len","createES2015Iterator","iterator","item","next","done","createObjectIterator","obj","okeys","getIterator","onlyOnce","_eachOfLimit","limit","iterateeCallback","running","breakLoop","replenish","elem","nextElem","eachOfLimit","doLimit","iterable","eachOfArrayLike","iteratorCallback","completed","doParallel","eachOf","_asyncMap","arr","results","counter","_iteratee","_","v","doParallelLimit","arrayEach","createBaseFor","fromRight","keysFunc","props","baseForOwn","baseFor","baseFindIndex","predicate","fromIndex","baseIsNaN","strictIndexOf","baseIndexOf","arrayMap","isSymbol","symbolTag","baseToString","symbolToString","INFINITY","baseSlice","end","castSlice","charsEndIndex","strSymbols","chrSymbols","charsStartIndex","asciiToArray","string","split","hasUnicode","reHasUnicode","unicodeToArray","match","reUnicode","stringToArray","toString","trim","chars","guard","replace","reTrim","join","parseParams","STRIP_COMMENTS","FN_ARGS","FN_ARG_SPLIT","map","FN_ARG","autoInject","tasks","newTasks","taskFn","newTask","taskCb","newArgs","params","name","fnIsAsync","hasNoDeps","slice","pop","auto","fallback","setTimeout","wrap","defer","DLL","head","tail","setInitial","dll","node","queue","worker","concurrency","payload","_insert","data","insertAtFront","q","started","idle","setImmediate$1","drain","l","_tasks","unshift","process","_next","numRunning","task","workersList","splice","error","buffer","unsaturated","_worker","isProcessing","saturated","empty","paused","kill","Math","min","shift","pause","resume","cargo","reduce","memo","eachOfSeries","x","concat$1","y","doSeries","_createTester","check","getResult","testResult","testPassed","_findGetResult","consoleFunc","console","doDuring","truth","_fn","_test","doWhilst","doUntil","during","_withoutIndex","eachLimit","eachLimit$1","ensureAsync","sync","innerArgs","notId","baseProperty","filterArray","truthValues","filterGeneric","sort","a","b","_filter","filter","forever","errback","mapValuesLimit","newObj","val","has","memoize","hasher","create","queues","memoized","unmemoized","_parallel","parallelLimit","parallelLimit$1","race","TypeError","reduceRight","reversed","reverse","reflect","reflectCallback","cbArgs","reject$1","reflectAll","constant$1","retry","opts","parseTimes","acc","t","times","DEFAULT_TIMES","intervalFunc","interval","DEFAULT_INTERVAL","errorFilter","retryAttempt","_task","attempt","options","series","sortBy","comparator","left","right","criteria","timeout","milliseconds","info","injectedCallback","timedOut","originalCallback","clearTimeout","timer","timeoutCallback","code","origCallback","baseRange","step","nativeMax$1","nativeCeil","timeLimit","count","mapLimit","accumulator","k","unmemoize","whilst","until","max","freeGlobal","freeSelf","self","root","Function","Symbol$1","objectProto","objectProto$1","iteratorSymbol","objectProto$3","hasOwnProperty$2","propertyIsEnumerable","freeExports","nodeType","freeModule","moduleExports","Buffer","nativeIsBuffer","argsTag$1","arrayTag","boolTag","dateTag","errorTag","funcTag$1","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","freeExports$1","freeModule$1","moduleExports$1","freeProcess","nodeUtil","binding","nodeIsTypedArray","objectProto$2","objectProto$4","eachOfGeneric","Infinity","eachOfImplementation","applyEach","mapSeries","applyEachSeries","apply$2","callArgs","enqueueTask","readyTasks","runTask","processQueue","runningTasks","run","addListener","taskName","taskListeners","listeners","taskComplete","hasError","taskCallback","safeResults","rkey","checkForDeadlocks","currentTask","readyToCheck","getDependents","dependent","uncheckedDependencies","numTasks","keys$$1","dependencies","remainingDependencies","dependencyName","symbolProto","rsAstralRange","rsComboMarksRange","rsComboSymbolsRange","rsVarRange","rsZWJ","RegExp","rsAstralRange$1","rsComboMarksRange$1","rsComboSymbolsRange$1","rsVarRange$1","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","rsZWJ$1","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","hasSetImmediate","setImmediate","hasNextTick","nextTick","_defer","removeLink","prev","insertAfter","newNode","insertBefore","seq$1","functions","_functions","newargs","nextargs","compose","concatSeries","constant","values","ignoredArgs","detect","detectLimit","detectSeries","dir","eachSeries","every","everyLimit","everySeries","filterLimit","filterSeries","groupByLimit","mapResults","groupBy","groupBySeries","log","mapValues","mapValuesSeries","_defer$1","queue$1","items","priorityQueue","priority","nextNode","reject","rejectLimit","rejectSeries","retryable","some","Boolean","someLimit","someSeries","ceil","timesSeries","waterfall","nextTask","taskIndex","each","parallel","seq","timesLimit","all","any","forEach","forEachSeries","forEachLimit","forEachOf","forEachOfSeries","forEachOfLimit","inject","foldl","foldr","select","selectLimit","selectSeries","wrapSync","allLimit","allSeries","anyLimit","anySeries","find","findLimit","findSeries","defineProperty"],"mappings":"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","file":"build/dist/async.min.js"} \ No newline at end of file