Socket
Socket
Sign inDemoInstall

async

Package Overview
Dependencies
0
Maintainers
5
Versions
92
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.6.1 to 3.0.1-0

cargoQueue.js

16

all.js

@@ -11,9 +11,9 @@ 'use strict';

var _doParallel = require('./internal/doParallel');
var _eachOf = require('./eachOf');
var _doParallel2 = _interopRequireDefault(_doParallel);
var _eachOf2 = _interopRequireDefault(_eachOf);
var _notId = require('./internal/notId');
var _awaitify = require('./internal/awaitify');
var _notId2 = _interopRequireDefault(_notId);
var _awaitify2 = _interopRequireDefault(_awaitify);

@@ -32,3 +32,3 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async truth test to apply to each item

@@ -41,2 +41,3 @@ * in the collection in parallel.

* depending on the values of the async tests. Invoked with (err, result).
* @returns {Promise} a promise, if no callback provided
* @example

@@ -52,3 +53,6 @@ *

*/
exports.default = (0, _doParallel2.default)((0, _createTester2.default)(_notId2.default, _notId2.default));
function every(coll, iteratee, callback) {
return (0, _createTester2.default)(bool => !bool, res => !res)(_eachOf2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(every, 3);
module.exports = exports['default'];

@@ -11,9 +11,9 @@ 'use strict';

var _doParallelLimit = require('./internal/doParallelLimit');
var _eachOfLimit = require('./internal/eachOfLimit');
var _doParallelLimit2 = _interopRequireDefault(_doParallelLimit);
var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);
var _notId = require('./internal/notId');
var _awaitify = require('./internal/awaitify');
var _notId2 = _interopRequireDefault(_notId);
var _awaitify2 = _interopRequireDefault(_awaitify);

@@ -32,3 +32,3 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.

@@ -42,4 +42,8 @@ * @param {AsyncFunction} iteratee - An async truth test to apply to each item

* depending on the values of the async tests. Invoked with (err, result).
* @returns {Promise} a promise, if no callback provided
*/
exports.default = (0, _doParallelLimit2.default)((0, _createTester2.default)(_notId2.default, _notId2.default));
function everyLimit(coll, limit, iteratee, callback) {
return (0, _createTester2.default)(bool => !bool, res => !res)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(everyLimit, 4);
module.exports = exports['default'];

@@ -7,10 +7,14 @@ 'use strict';

var _everyLimit = require('./everyLimit');
var _createTester = require('./internal/createTester');
var _everyLimit2 = _interopRequireDefault(_everyLimit);
var _createTester2 = _interopRequireDefault(_createTester);
var _doLimit = require('./internal/doLimit');
var _eachOfSeries = require('./eachOfSeries');
var _doLimit2 = _interopRequireDefault(_doLimit);
var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries);
var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -28,3 +32,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async truth test to apply to each item

@@ -37,4 +41,8 @@ * in the collection in series.

* depending on the values of the async tests. Invoked with (err, result).
* @returns {Promise} a promise, if no callback provided
*/
exports.default = (0, _doLimit2.default)(_everyLimit2.default, 1);
function everySeries(coll, iteratee, callback) {
return (0, _createTester2.default)(bool => !bool, res => !res)(_eachOfSeries2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(everySeries, 3);
module.exports = exports['default'];

@@ -11,9 +11,9 @@ 'use strict';

var _doParallel = require('./internal/doParallel');
var _eachOf = require('./eachOf');
var _doParallel2 = _interopRequireDefault(_doParallel);
var _eachOf2 = _interopRequireDefault(_eachOf);
var _identity = require('lodash/identity');
var _awaitify = require('./internal/awaitify');
var _identity2 = _interopRequireDefault(_identity);
var _awaitify2 = _interopRequireDefault(_awaitify);

@@ -33,3 +33,3 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async truth test to apply to each item

@@ -43,2 +43,3 @@ * in the collections in parallel.

* tests. Invoked with (err, result).
* @returns {Promise} a promise, if no callback provided
* @example

@@ -54,3 +55,6 @@ *

*/
exports.default = (0, _doParallel2.default)((0, _createTester2.default)(Boolean, _identity2.default));
function some(coll, iteratee, callback) {
return (0, _createTester2.default)(Boolean, res => res)(_eachOf2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(some, 3);
module.exports = exports['default'];

@@ -11,9 +11,9 @@ 'use strict';

var _doParallelLimit = require('./internal/doParallelLimit');
var _eachOfLimit = require('./internal/eachOfLimit');
var _doParallelLimit2 = _interopRequireDefault(_doParallelLimit);
var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);
var _identity = require('lodash/identity');
var _awaitify = require('./internal/awaitify');
var _identity2 = _interopRequireDefault(_identity);
var _awaitify2 = _interopRequireDefault(_awaitify);

@@ -32,3 +32,3 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.

@@ -43,4 +43,8 @@ * @param {AsyncFunction} iteratee - An async truth test to apply to each item

* tests. Invoked with (err, result).
* @returns {Promise} a promise, if no callback provided
*/
exports.default = (0, _doParallelLimit2.default)((0, _createTester2.default)(Boolean, _identity2.default));
function someLimit(coll, limit, iteratee, callback) {
return (0, _createTester2.default)(Boolean, res => res)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(someLimit, 4);
module.exports = exports['default'];

@@ -7,10 +7,14 @@ 'use strict';

var _someLimit = require('./someLimit');
var _createTester = require('./internal/createTester');
var _someLimit2 = _interopRequireDefault(_someLimit);
var _createTester2 = _interopRequireDefault(_createTester);
var _doLimit = require('./internal/doLimit');
var _eachOfSeries = require('./eachOfSeries');
var _doLimit2 = _interopRequireDefault(_doLimit);
var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries);
var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -28,3 +32,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async truth test to apply to each item

@@ -38,4 +42,8 @@ * in the collections in series.

* tests. Invoked with (err, result).
* @returns {Promise} a promise, if no callback provided
*/
exports.default = (0, _doLimit2.default)(_someLimit2.default, 1);
function someSeries(coll, iteratee, callback) {
return (0, _createTester2.default)(Boolean, res => res)(_eachOfSeries2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(someSeries, 3);
module.exports = exports['default'];

@@ -1,68 +0,55 @@

'use strict';
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});
exports.default = function (fn /*, ...args*/) {
var args = (0, _slice2.default)(arguments, 1);
return function () /*callArgs*/{
var callArgs = (0, _slice2.default)(arguments);
return fn.apply(null, args.concat(callArgs));
};
exports.default = function (fn, ...args) {
return (...callArgs) => fn(...args, ...callArgs);
};
var _slice = require('./internal/slice');
var _slice2 = _interopRequireDefault(_slice);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
;
/**
* Creates a continuation function with some arguments already applied.
*
* Useful as a shorthand when combined with other control flow functions. Any
* arguments passed to the returned function are added to the arguments
* originally passed to apply.
*
* @name apply
* @static
* @memberOf module:Utils
* @method
* @category Util
* @param {Function} fn - The function you want to eventually apply all
* arguments to. Invokes with (arguments...).
* @param {...*} arguments... - Any number of arguments to automatically apply
* when the continuation is called.
* @returns {Function} the partially-applied function
* @example
*
* // using apply
* async.parallel([
* async.apply(fs.writeFile, 'testfile1', 'test1'),
* async.apply(fs.writeFile, 'testfile2', 'test2')
* ]);
*
*
* // the same process without using apply
* async.parallel([
* function(callback) {
* fs.writeFile('testfile1', 'test1', callback);
* },
* function(callback) {
* fs.writeFile('testfile2', 'test2', callback);
* }
* ]);
*
* // It's possible to pass any number of additional arguments when calling the
* // continuation:
*
* node> var fn = async.apply(sys.puts, 'one');
* node> fn('two', 'three');
* one
* two
* three
*/
module.exports = exports['default'];
module.exports = exports["default"]; /**
* Creates a continuation function with some arguments already applied.
*
* Useful as a shorthand when combined with other control flow functions. Any
* arguments passed to the returned function are added to the arguments
* originally passed to apply.
*
* @name apply
* @static
* @memberOf module:Utils
* @method
* @category Util
* @param {Function} fn - The function you want to eventually apply all
* arguments to. Invokes with (arguments...).
* @param {...*} arguments... - Any number of arguments to automatically apply
* when the continuation is called.
* @returns {Function} the partially-applied function
* @example
*
* // using apply
* async.parallel([
* async.apply(fs.writeFile, 'testfile1', 'test1'),
* async.apply(fs.writeFile, 'testfile2', 'test2')
* ]);
*
*
* // the same process without using apply
* async.parallel([
* function(callback) {
* fs.writeFile('testfile1', 'test1', callback);
* },
* function(callback) {
* fs.writeFile('testfile2', 'test2', callback);
* }
* ]);
*
* // It's possible to pass any number of additional arguments when calling the
* // continuation:
*
* node> var fn = async.apply(sys.puts, 'one');
* node> fn('two', 'three');
* one
* two
* three
*/

@@ -22,3 +22,5 @@ 'use strict';

* arguments as if it were a single function call. If more arguments are
* provided, `callback` is required while `args` is still optional.
* provided, `callback` is required while `args` is still optional. The results
* for each of the applied async functions are passed to the final callback
* as an array.
*

@@ -30,3 +32,3 @@ * @name applyEach

* @category Control Flow
* @param {Array|Iterable|Object} fns - A collection of {@link AsyncFunction}s
* @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s
* to all call with the same arguments

@@ -43,3 +45,6 @@ * @param {...*} [args] - any number of separate arguments to pass to the

*
* async.applyEach([enableSearch, updateSchema], 'bucket', callback);
* async.applyEach([enableSearch, updateSchema], 'bucket', (err, results) => {
* // results[0] is the results for `enableSearch`
* // results[1] is the results for `updateSchema`
* });
*

@@ -46,0 +51,0 @@ * // partial application example:

@@ -26,3 +26,3 @@ 'use strict';

* @category Control Flow
* @param {Array|Iterable|Object} fns - A collection of {@link AsyncFunction}s to all
* @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s to all
* call with the same arguments

@@ -29,0 +29,0 @@ * @param {...*} [args] - any number of separate arguments to pass to the

@@ -8,6 +8,2 @@ 'use strict';

var _isObject = require('lodash/isObject');
var _isObject2 = _interopRequireDefault(_isObject);
var _initialParams = require('./internal/initialParams');

@@ -21,2 +17,4 @@

var _wrapAsync = require('./internal/wrapAsync');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -81,2 +79,10 @@

function asyncify(func) {
if ((0, _wrapAsync.isAsync)(func)) {
return function (...args /*, callback*/) {
const callback = args.pop();
const promise = func.apply(this, args);
return handlePromise(promise, callback);
};
}
return (0, _initialParams2.default)(function (args, callback) {

@@ -90,8 +96,4 @@ var result;

// if result is Promise object
if ((0, _isObject2.default)(result) && typeof result.then === 'function') {
result.then(function (value) {
invokeCallback(callback, null, value);
}, function (err) {
invokeCallback(callback, err.message ? err : new Error(err));
});
if (result && typeof result.then === 'function') {
return handlePromise(result, callback);
} else {

@@ -103,13 +105,19 @@ callback(null, result);

function handlePromise(promise, callback) {
return promise.then(value => {
invokeCallback(callback, null, value);
}, err => {
invokeCallback(callback, err && err.message ? err : new Error(err));
});
}
function invokeCallback(callback, error, value) {
try {
callback(error, value);
} catch (e) {
(0, _setImmediate2.default)(rethrow, e);
} catch (err) {
(0, _setImmediate2.default)(e => {
throw e;
}, err);
}
}
function rethrow(error) {
throw error;
}
module.exports = exports['default'];

@@ -6,5 +6,101 @@ 'use strict';

});
exports.default = auto;
exports.default = function (tasks, concurrency, callback) {
if (typeof concurrency === 'function') {
var _once = require('./internal/once');
var _once2 = _interopRequireDefault(_once);
var _onlyOnce = require('./internal/onlyOnce');
var _onlyOnce2 = _interopRequireDefault(_onlyOnce);
var _wrapAsync = require('./internal/wrapAsync');
var _wrapAsync2 = _interopRequireDefault(_wrapAsync);
var _promiseCallback = require('./internal/promiseCallback');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* 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 {@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.
*
* {@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.
*
* @name auto
* @static
* @memberOf module:ControlFlow
* @method
* @category Control Flow
* @param {Object} tasks - An object. Each of its properties is either a
* 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:
* * a `results` object, containing the results of the previously executed
* functions, only passed if the task has any dependencies,
* * a `callback(err, result)` function, which must be called when finished,
* passing an `error` (which can be `null`) and the result of the function's
* execution.
* @param {number} [concurrency=Infinity] - An optional `integer` for
* determining the maximum number of tasks that can be run in parallel. By
* default, as many as possible.
* @param {Function} [callback] - An optional callback which is called when all
* the tasks have been completed. It receives the `err` argument if any `tasks`
* pass an error to their callback. Results are always returned; however, if an
* error occurs, no further `tasks` will be performed, and the results object
* will only contain partial results. Invoked with (err, results).
* @returns {Promise} a promise, if a callback is not passed
* @example
*
* async.auto({
* // this function will just be passed a callback
* readData: async.apply(fs.readFile, 'data.txt', 'utf-8'),
* showData: ['readData', function(results, cb) {
* // results.readData is the file's contents
* // ...
* }]
* }, callback);
*
* async.auto({
* get_data: function(callback) {
* console.log('in get_data');
* // async code to get some data
* callback(null, 'data', 'converted to array');
* },
* make_folder: function(callback) {
* console.log('in make_folder');
* // async code to create a directory to store a file in
* // this is run at the same time as getting the data
* callback(null, 'folder');
* },
* write_file: ['get_data', 'make_folder', function(results, callback) {
* console.log('in write_file', JSON.stringify(results));
* // once there is some data and the directory exists,
* // write the data to a file in the directory
* callback(null, 'filename');
* }],
* email_link: ['write_file', function(results, callback) {
* console.log('in email_link', JSON.stringify(results));
* // once the file is written let's email a link to it...
* // results.write_file contains the filename returned by write_file.
* callback(null, {'file':results.write_file, 'email':'user@example.com'});
* }]
* }, function(err, results) {
* console.log('err = ', err);
* console.log('results = ', results);
* });
*/
function auto(tasks, concurrency, callback) {
if (typeof concurrency !== 'number') {
// concurrency is optional, shift the args.

@@ -14,5 +110,4 @@ callback = concurrency;

}
callback = (0, _once2.default)(callback || _noop2.default);
var keys = (0, _keys2.default)(tasks);
var numTasks = keys.length;
callback = (0, _once2.default)(callback || (0, _promiseCallback.promiseCallback)());
var numTasks = Object.keys(tasks).length;
if (!numTasks) {

@@ -27,2 +122,3 @@ return callback(null);

var runningTasks = 0;
var canceled = false;
var hasError = false;

@@ -39,4 +135,5 @@

(0, _baseForOwn2.default)(tasks, function (task, key) {
if (!(0, _isArray2.default)(task)) {
Object.keys(tasks).forEach(key => {
var task = tasks[key];
if (!Array.isArray(task)) {
// no dependencies

@@ -57,7 +154,7 @@ enqueueTask(key, [task]);

(0, _arrayEach2.default)(dependencies, function (dependencyName) {
dependencies.forEach(dependencyName => {
if (!tasks[dependencyName]) {
throw new Error('async.auto task `' + key + '` has a non-existent dependency `' + dependencyName + '` in ' + dependencies.join(', '));
}
addListener(dependencyName, function () {
addListener(dependencyName, () => {
remainingDependencies--;

@@ -75,8 +172,7 @@ if (remainingDependencies === 0) {

function enqueueTask(key, task) {
readyTasks.push(function () {
runTask(key, task);
});
readyTasks.push(() => runTask(key, task));
}
function processQueue() {
if (canceled) return;
if (readyTasks.length === 0 && runningTasks === 0) {

@@ -102,5 +198,3 @@ return callback(null, results);

var taskListeners = listeners[taskName] || [];
(0, _arrayEach2.default)(taskListeners, function (fn) {
fn();
});
taskListeners.forEach(fn => fn());
processQueue();

@@ -112,11 +206,15 @@ }

var taskCallback = (0, _onlyOnce2.default)(function (err, result) {
var taskCallback = (0, _onlyOnce2.default)((err, ...result) => {
runningTasks--;
if (arguments.length > 2) {
result = (0, _slice2.default)(arguments, 1);
if (err === false) {
canceled = true;
return;
}
if (result.length < 2) {
[result] = result;
}
if (err) {
var safeResults = {};
(0, _baseForOwn2.default)(results, function (val, rkey) {
safeResults[rkey] = val;
Object.keys(results).forEach(rkey => {
safeResults[rkey] = results[rkey];
});

@@ -126,3 +224,3 @@ safeResults[key] = result;

listeners = Object.create(null);
if (canceled) return;
callback(err, safeResults);

@@ -153,3 +251,3 @@ } else {

counter++;
(0, _arrayEach2.default)(getDependents(currentTask), function (dependent) {
getDependents(currentTask).forEach(dependent => {
if (--uncheckedDependencies[dependent] === 0) {

@@ -168,4 +266,5 @@ readyToCheck.push(dependent);

var result = [];
(0, _baseForOwn2.default)(tasks, function (task, key) {
if ((0, _isArray2.default)(task) && (0, _baseIndexOf2.default)(task, taskName, 0) >= 0) {
Object.keys(tasks).forEach(key => {
const task = tasks[key];
if (Array.isArray(task) && task.indexOf(taskName) >= 0) {
result.push(key);

@@ -176,126 +275,5 @@ }

}
};
var _arrayEach = require('lodash/_arrayEach');
var _arrayEach2 = _interopRequireDefault(_arrayEach);
var _baseForOwn = require('lodash/_baseForOwn');
var _baseForOwn2 = _interopRequireDefault(_baseForOwn);
var _baseIndexOf = require('lodash/_baseIndexOf');
var _baseIndexOf2 = _interopRequireDefault(_baseIndexOf);
var _isArray = require('lodash/isArray');
var _isArray2 = _interopRequireDefault(_isArray);
var _keys = require('lodash/keys');
var _keys2 = _interopRequireDefault(_keys);
var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _slice = require('./internal/slice');
var _slice2 = _interopRequireDefault(_slice);
var _once = require('./internal/once');
var _once2 = _interopRequireDefault(_once);
var _onlyOnce = require('./internal/onlyOnce');
var _onlyOnce2 = _interopRequireDefault(_onlyOnce);
var _wrapAsync = require('./internal/wrapAsync');
var _wrapAsync2 = _interopRequireDefault(_wrapAsync);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
module.exports = exports['default'];
/**
* 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 {@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.
*
* {@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.
*
* @name auto
* @static
* @memberOf module:ControlFlow
* @method
* @category Control Flow
* @param {Object} tasks - An object. Each of its properties is either a
* 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:
* * a `results` object, containing the results of the previously executed
* functions, only passed if the task has any dependencies,
* * a `callback(err, result)` function, which must be called when finished,
* passing an `error` (which can be `null`) and the result of the function's
* execution.
* @param {number} [concurrency=Infinity] - An optional `integer` for
* determining the maximum number of tasks that can be run in parallel. By
* default, as many as possible.
* @param {Function} [callback] - An optional callback which is called when all
* the tasks have been completed. It receives the `err` argument if any `tasks`
* pass an error to their callback. Results are always returned; however, if an
* error occurs, no further `tasks` will be performed, and the results object
* will only contain partial results. Invoked with (err, results).
* @returns undefined
* @example
*
* async.auto({
* // this function will just be passed a callback
* readData: async.apply(fs.readFile, 'data.txt', 'utf-8'),
* showData: ['readData', function(results, cb) {
* // results.readData is the file's contents
* // ...
* }]
* }, callback);
*
* async.auto({
* get_data: function(callback) {
* console.log('in get_data');
* // async code to get some data
* callback(null, 'data', 'converted to array');
* },
* make_folder: function(callback) {
* console.log('in make_folder');
* // async code to create a directory to store a file in
* // this is run at the same time as getting the data
* callback(null, 'folder');
* },
* write_file: ['get_data', 'make_folder', function(results, callback) {
* console.log('in write_file', JSON.stringify(results));
* // once there is some data and the directory exists,
* // write the data to a file in the directory
* callback(null, 'filename');
* }],
* email_link: ['write_file', function(results, callback) {
* console.log('in email_link', JSON.stringify(results));
* // once the file is written let's email a link to it...
* // results.write_file contains the filename returned by write_file.
* callback(null, {'file':results.write_file, 'email':'user@example.com'});
* }]
* }, function(err, results) {
* console.log('err = ', err);
* console.log('results = ', results);
* });
*/
return callback[_promiseCallback.PROMISE_SYMBOL];
}
module.exports = exports['default'];

@@ -12,18 +12,2 @@ 'use strict';

var _baseForOwn = require('lodash/_baseForOwn');
var _baseForOwn2 = _interopRequireDefault(_baseForOwn);
var _arrayMap = require('lodash/_arrayMap');
var _arrayMap2 = _interopRequireDefault(_arrayMap);
var _isArray = require('lodash/isArray');
var _isArray2 = _interopRequireDefault(_isArray);
var _trim = require('lodash/trim');
var _trim2 = _interopRequireDefault(_trim);
var _wrapAsync = require('./internal/wrapAsync');

@@ -35,3 +19,4 @@

var FN_ARGS = /^(?:async\s+)?(function)?\s*[^\(]*\(\s*([^\)]*)\)/m;
var FN_ARGS = /^(?:async\s+)?(?:function)?\s*[^(]*\(\s*([^)]+)\s*\)(?:\s*{)/m;
var ARROW_FN_ARGS = /^(?:async\s+)?\(?\s*([^)^=]+)\s*\)?(?:\s*=>)/m;
var FN_ARG_SPLIT = /,/;

@@ -42,9 +27,10 @@ var FN_ARG = /(=.+)?(\s*)$/;

function parseParams(func) {
func = func.toString().replace(STRIP_COMMENTS, '');
func = func.match(FN_ARGS)[2].replace(' ', '');
func = func ? func.split(FN_ARG_SPLIT) : [];
func = func.map(function (arg) {
return (0, _trim2.default)(arg.replace(FN_ARG, ''));
});
return func;
const src = func.toString().replace(STRIP_COMMENTS, '');
let match = src.match(FN_ARGS);
if (!match) {
match = src.match(ARROW_FN_ARGS);
}
if (!match) throw new Error('could not parse args in autoInject\nSource:\n' + src);
let [, args] = match;
return args.replace(/\s/g, '').split(FN_ARG_SPLIT).map(arg => arg.replace(FN_ARG, '').trim());
}

@@ -84,2 +70,3 @@

* task results, similar to `auto`.
* @returns {Promise} a promise, if no callback is passed
* @example

@@ -138,3 +125,4 @@ *

(0, _baseForOwn2.default)(tasks, function (taskFn, key) {
Object.keys(tasks).forEach(key => {
var taskFn = tasks[key];
var params;

@@ -144,5 +132,5 @@ var fnIsAsync = (0, _wrapAsync.isAsync)(taskFn);

if ((0, _isArray2.default)(taskFn)) {
params = taskFn.slice(0, -1);
taskFn = taskFn[taskFn.length - 1];
if (Array.isArray(taskFn)) {
params = [...taskFn];
taskFn = params.pop();

@@ -166,12 +154,10 @@ newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn);

function newTask(results, taskCb) {
var newArgs = (0, _arrayMap2.default)(params, function (name) {
return results[name];
});
var newArgs = params.map(name => results[name]);
newArgs.push(taskCb);
(0, _wrapAsync2.default)(taskFn).apply(null, newArgs);
(0, _wrapAsync2.default)(taskFn)(...newArgs);
}
});
(0, _auto2.default)(newTasks, callback);
return (0, _auto2.default)(newTasks, callback);
}
module.exports = exports['default'];

@@ -7,3 +7,3 @@ {

"lib",
"mocha_test",
"test",
"node_modules",

@@ -10,0 +10,0 @@ "perf",

@@ -0,1 +1,37 @@

# v3.0.0
The `async`/`await` release!
There are a lot of new features and subtle breaking changes in this major version, but the biggest feature is that most Async methods return a Promise if you omit the callback, meaning you can `await` them from within an `async` function.
```js
const results = await async.mapLimit(urls, 5, async url => {
const resp = await fetch(url)
return resp.body
})
```
## Breaking Changes
- Most Async methods return a Promise when the final callback is omitted, making them `await`-able! (#1572)
- We are now making heavy use of ES2015 features, this means we have dropped out-of-the-box support for Node 4 and earlier, and many old versions of browsers. (#1541, #1553)
- Calling `callback(false)` will cancel an async method, preventing further iteration and callback calls. This is useful for preventing memory leaks when you break out of an async flow by calling an outer callback. (#1064, #1542)
- `during` and `doDuring` have been removed, and instead `whilst`, `doWhilst`, `until` and `doUntil` now have asynchronous `test` functions. (#850, #1557)
- `limits` of less than 1 now cause an error to be thrown in queues and collection methods. (#1249, #1552)
- `memoize` no longer memoizes errors (#1465, #1466)
## New Features
- Async generators are now supported in all the Collection methods. (#1560)
- Added `cargoQueue`, a queue with both `concurrency` and `payload` size parameters. (#1567)
- Queue objects returned from `queue` now have a `Symbol.iterator` method, meaning they can be iterated over to inspect the current list of items in the queue. (#1459, #1556)
## Bug fixes
- Better handle arbitrary error objects in `asyncify` (#1568, #1569)
## Other
- Removed Lodash as a dependency (#1283, #1528)
- Miscellaneous docs fixes (#1393, #1501, #1540, #1543, #1558, #1563, #1564, #1579, #1581)
- Miscellaneous test fixes (#1538)
-------
# v2.6.1

@@ -2,0 +38,0 @@ - Updated lodash to prevent `npm audit` warnings. (#1532, #1533)

@@ -6,7 +6,4 @@ 'use strict';

});
exports.default = compose;
exports.default = function () /*...args*/{
return _seq2.default.apply(null, (0, _slice2.default)(arguments).reverse());
};
var _seq = require('./seq');

@@ -16,10 +13,4 @@

var _slice = require('./internal/slice');
var _slice2 = _interopRequireDefault(_slice);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
;
/**

@@ -31,2 +22,5 @@ * Creates a function which is a composition of the passed asynchronous

*
* If the last argument to the composed function is not a function, a promise
* is returned when you call it.
*
* Each function is executed with the `this` binding of the composed function.

@@ -61,2 +55,5 @@ *

*/
function compose(...args) {
return (0, _seq2.default)(...args.reverse());
}
module.exports = exports['default'];

@@ -7,6 +7,2 @@ 'use strict';

var _doLimit = require('./internal/doLimit');
var _doLimit2 = _interopRequireDefault(_doLimit);
var _concatLimit = require('./concatLimit');

@@ -16,2 +12,6 @@

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -22,5 +22,4 @@

* the concatenated list. The `iteratee`s are called in parallel, and the
* results are concatenated as they return. There is no guarantee that the
* results array will be returned in the original order of `coll` passed to the
* `iteratee` function.
* results are concatenated as they return. The results array will be returned in
* the original order of `coll` passed to the `iteratee` function.
*

@@ -32,9 +31,10 @@ * @name concat

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @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
* @param {Function} [callback] - 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
* (err, results).
* @returns A Promise, if no callback is passed
* @example

@@ -46,3 +46,6 @@ *

*/
exports.default = (0, _doLimit2.default)(_concatLimit2.default, Infinity);
function concat(coll, iteratee, callback) {
return (0, _concatLimit2.default)(coll, Infinity, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(concat, 3);
module.exports = exports['default'];

@@ -7,26 +7,2 @@ 'use strict';

exports.default = function (coll, limit, iteratee, callback) {
callback = callback || _noop2.default;
var _iteratee = (0, _wrapAsync2.default)(iteratee);
(0, _mapLimit2.default)(coll, limit, function (val, callback) {
_iteratee(val, function (err /*, ...args*/) {
if (err) return callback(err);
return callback(null, (0, _slice2.default)(arguments, 1));
});
}, function (err, mapResults) {
var result = [];
for (var i = 0; i < mapResults.length; i++) {
if (mapResults[i]) {
result = _concat.apply(result, mapResults[i]);
}
}
return callback(err, result);
});
};
var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _wrapAsync = require('./internal/wrapAsync');

@@ -36,6 +12,2 @@

var _slice = require('./internal/slice');
var _slice2 = _interopRequireDefault(_slice);
var _mapLimit = require('./mapLimit');

@@ -45,6 +17,8 @@

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _concat = Array.prototype.concat;
/**

@@ -59,3 +33,3 @@ * The same as [`concat`]{@link module:Collections.concat} but runs a maximum of `limit` async operations at a time.

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.

@@ -68,3 +42,23 @@ * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`,

* (err, results).
* @returns A Promise, if no callback is passed
*/
function concatLimit(coll, limit, iteratee, callback) {
var _iteratee = (0, _wrapAsync2.default)(iteratee);
return (0, _mapLimit2.default)(coll, limit, (val, iterCb) => {
_iteratee(val, (err, ...args) => {
if (err) return iterCb(err);
return iterCb(null, args);
});
}, (err, mapResults) => {
var result = [];
for (var i = 0; i < mapResults.length; i++) {
if (mapResults[i]) {
result = result.concat(...mapResults[i]);
}
}
return callback(err, result);
});
}
exports.default = (0, _awaitify2.default)(concatLimit, 4);
module.exports = exports['default'];

@@ -7,6 +7,2 @@ 'use strict';

var _doLimit = require('./internal/doLimit');
var _doLimit2 = _interopRequireDefault(_doLimit);
var _concatLimit = require('./concatLimit');

@@ -16,2 +12,6 @@

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -28,12 +28,16 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @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
* @param {Function} [callback] - 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
* (err, results).
* @returns A Promise, if no callback is passed
*/
exports.default = (0, _doLimit2.default)(_concatLimit2.default, 1);
function concatSeries(coll, iteratee, callback) {
return (0, _concatLimit2.default)(coll, 1, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(concatSeries, 3);
module.exports = exports['default'];

@@ -1,2 +0,2 @@

'use strict';
"use strict";

@@ -7,61 +7,50 @@ Object.defineProperty(exports, "__esModule", {

exports.default = function () /*...values*/{
var values = (0, _slice2.default)(arguments);
var args = [null].concat(values);
return function () /*...ignoredArgs, callback*/{
var callback = arguments[arguments.length - 1];
return callback.apply(this, args);
exports.default = function (...args) {
return function (...ignoredArgs /*, callback*/) {
var callback = ignoredArgs.pop();
return callback(null, ...args);
};
};
var _slice = require('./internal/slice');
var _slice2 = _interopRequireDefault(_slice);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
;
/**
* Returns a function that when called, calls-back with the values provided.
* Useful as the first function in a [`waterfall`]{@link module:ControlFlow.waterfall}, or for plugging values in to
* [`auto`]{@link module:ControlFlow.auto}.
*
* @name constant
* @static
* @memberOf module:Utils
* @method
* @category Util
* @param {...*} arguments... - Any number of arguments to automatically invoke
* callback with.
* @returns {AsyncFunction} Returns a function that when invoked, automatically
* invokes the callback with the previous given arguments.
* @example
*
* async.waterfall([
* async.constant(42),
* function (value, next) {
* // value === 42
* },
* //...
* ], callback);
*
* async.waterfall([
* async.constant(filename, "utf8"),
* fs.readFile,
* function (fileData, next) {
* //...
* }
* //...
* ], callback);
*
* async.auto({
* hostname: async.constant("https://server.net/"),
* port: findFreePort,
* launchServer: ["hostname", "port", function (options, cb) {
* startServer(options, cb);
* }],
* //...
* }, callback);
*/
module.exports = exports['default'];
module.exports = exports["default"]; /**
* Returns a function that when called, calls-back with the values provided.
* Useful as the first function in a [`waterfall`]{@link module:ControlFlow.waterfall}, or for plugging values in to
* [`auto`]{@link module:ControlFlow.auto}.
*
* @name constant
* @static
* @memberOf module:Utils
* @method
* @category Util
* @param {...*} arguments... - Any number of arguments to automatically invoke
* callback with.
* @returns {AsyncFunction} Returns a function that when invoked, automatically
* invokes the callback with the previous given arguments.
* @example
*
* async.waterfall([
* async.constant(42),
* function (value, next) {
* // value === 42
* },
* //...
* ], callback);
*
* async.waterfall([
* async.constant(filename, "utf8"),
* fs.readFile,
* function (fileData, next) {
* //...
* }
* //...
* ], callback);
*
* async.auto({
* hostname: async.constant("https://server.net/"),
* port: findFreePort,
* launchServer: ["hostname", "port", function (options, cb) {
* startServer(options, cb);
* }],
* //...
* }, callback);
*/

@@ -7,6 +7,2 @@ 'use strict';

var _identity = require('lodash/identity');
var _identity2 = _interopRequireDefault(_identity);
var _createTester = require('./internal/createTester');

@@ -16,9 +12,9 @@

var _doParallel = require('./internal/doParallel');
var _eachOf = require('./eachOf');
var _doParallel2 = _interopRequireDefault(_doParallel);
var _eachOf2 = _interopRequireDefault(_eachOf);
var _findGetResult = require('./internal/findGetResult');
var _awaitify = require('./internal/awaitify');
var _findGetResult2 = _interopRequireDefault(_findGetResult);
var _awaitify2 = _interopRequireDefault(_awaitify);

@@ -43,3 +39,3 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

* @category Collections
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.

@@ -53,2 +49,3 @@ * The iteratee must complete with a boolean value as its result.

* (err, result).
* @returns A Promise, if no callback is passed
* @example

@@ -64,3 +61,6 @@ *

*/
exports.default = (0, _doParallel2.default)((0, _createTester2.default)(_identity2.default, _findGetResult2.default));
function detect(coll, iteratee, callback) {
return (0, _createTester2.default)(bool => bool, (res, item) => item)(_eachOf2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(detect, 3);
module.exports = exports['default'];

@@ -7,6 +7,2 @@ 'use strict';

var _identity = require('lodash/identity');
var _identity2 = _interopRequireDefault(_identity);
var _createTester = require('./internal/createTester');

@@ -16,9 +12,9 @@

var _doParallelLimit = require('./internal/doParallelLimit');
var _eachOfLimit = require('./internal/eachOfLimit');
var _doParallelLimit2 = _interopRequireDefault(_doParallelLimit);
var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);
var _findGetResult = require('./internal/findGetResult');
var _awaitify = require('./internal/awaitify');
var _findGetResult2 = _interopRequireDefault(_findGetResult);
var _awaitify2 = _interopRequireDefault(_awaitify);

@@ -38,3 +34,3 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

* @category Collections
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.

@@ -49,4 +45,8 @@ * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.

* (err, result).
* @returns a Promise if no callback is passed
*/
exports.default = (0, _doParallelLimit2.default)((0, _createTester2.default)(_identity2.default, _findGetResult2.default));
function detectLimit(coll, limit, iteratee, callback) {
return (0, _createTester2.default)(bool => bool, (res, item) => item)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(detectLimit, 4);
module.exports = exports['default'];

@@ -7,10 +7,14 @@ 'use strict';

var _detectLimit = require('./detectLimit');
var _createTester = require('./internal/createTester');
var _detectLimit2 = _interopRequireDefault(_detectLimit);
var _createTester2 = _interopRequireDefault(_createTester);
var _doLimit = require('./internal/doLimit');
var _eachOfLimit = require('./internal/eachOfLimit');
var _doLimit2 = _interopRequireDefault(_doLimit);
var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);
var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -28,3 +32,3 @@

* @category Collections
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.

@@ -38,4 +42,9 @@ * The iteratee must complete with a boolean value as its result.

* (err, result).
* @returns a Promise if no callback is passed
*/
exports.default = (0, _doLimit2.default)(_detectLimit2.default, 1);
function detectSeries(coll, iteratee, callback) {
return (0, _createTester2.default)(bool => bool, (res, item) => item)((0, _eachOfLimit2.default)(1), coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(detectSeries, 3);
module.exports = exports['default'];

@@ -1,2 +0,1 @@

!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){t|=0;for(var e=Math.max(n.length-t,0),r=Array(e),u=0;u<e;u++)r[u]=n[t+u];return r}function e(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function r(n){setTimeout(n,0)}function u(n){return function(e){var r=t(arguments,1);n(function(){e.apply(null,r)})}}function i(n){return ct(function(t,r){var u;try{u=n.apply(this,t)}catch(n){return r(n)}e(u)&&"function"==typeof u.then?u.then(function(n){o(r,null,n)},function(n){o(r,n.message?n:new Error(n))}):r(null,u)})}function o(n,t,e){try{n(t,e)}catch(n){lt(c,n)}}function c(n){throw n}function f(n){return st&&"AsyncFunction"===n[Symbol.toStringTag]}function a(n){return f(n)?i(n):n}function l(n){return function(e){var r=t(arguments,1),u=ct(function(t,r){var u=this;return n(e,function(n,e){a(n).apply(u,t.concat(e))},r)});return r.length?u.apply(this,r):u}}function s(n){var t=mt.call(n,bt),e=n[bt];try{n[bt]=void 0;var r=!0}catch(n){}var u=gt.call(n);return r&&(t?n[bt]=e:delete n[bt]),u}function p(n){return St.call(n)}function h(n){return null==n?void 0===n?Lt:kt:Ot&&Ot in Object(n)?s(n):p(n)}function y(n){if(!e(n))return!1;var t=h(n);return t==xt||t==Et||t==wt||t==At}function v(n){return"number"==typeof n&&n>-1&&n%1==0&&n<=Tt}function d(n){return null!=n&&v(n.length)&&!y(n)}function m(){}function g(n){return function(){if(null!==n){var t=n;n=null,t.apply(this,arguments)}}}function b(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}function j(n){return null!=n&&"object"==typeof n}function S(n){return j(n)&&h(n)==_t}function k(){return!1}function L(n,t){var e=typeof n;return t=null==t?Nt:t,!!t&&("number"==e||"symbol"!=e&&Qt.test(n))&&n>-1&&n%1==0&&n<t}function O(n){return j(n)&&v(n.length)&&!!me[h(n)]}function w(n){return function(t){return n(t)}}function x(n,t){var e=Pt(n),r=!e&&zt(n),u=!e&&!r&&Wt(n),i=!e&&!r&&!u&&Oe(n),o=e||r||u||i,c=o?b(n.length,String):[],f=c.length;for(var a in n)!t&&!xe.call(n,a)||o&&("length"==a||u&&("offset"==a||"parent"==a)||i&&("buffer"==a||"byteLength"==a||"byteOffset"==a)||L(a,f))||c.push(a);return c}function E(n){var t=n&&n.constructor,e="function"==typeof t&&t.prototype||Ee;return n===e}function A(n,t){return function(e){return n(t(e))}}function T(n){if(!E(n))return Ae(n);var t=[];for(var e in Object(n))Be.call(n,e)&&"constructor"!=e&&t.push(e);return t}function B(n){return d(n)?x(n):T(n)}function F(n){var t=-1,e=n.length;return function(){return++t<e?{value:n[t],key:t}:null}}function I(n){var t=-1;return function(){var e=n.next();return e.done?null:(t++,{value:e.value,key:t})}}function _(n){var t=B(n),e=-1,r=t.length;return function(){var u=t[++e];return e<r?{value:n[u],key:u}:null}}function M(n){if(d(n))return F(n);var t=It(n);return t?I(t):_(n)}function U(n){return function(){if(null===n)throw new Error("Callback was already called.");var t=n;n=null,t.apply(this,arguments)}}function q(n){return function(t,e,r){function u(n,t){if(f-=1,n)c=!0,r(n);else{if(t===Bt||c&&f<=0)return c=!0,r(null);a||i()}}function i(){for(a=!0;f<n&&!c;){var t=o();if(null===t)return c=!0,void(f<=0&&r(null));f+=1,e(t.value,t.key,U(u))}a=!1}if(r=g(r||m),n<=0||!t)return r(null);var o=M(t),c=!1,f=0,a=!1;i()}}function z(n,t,e,r){q(t)(n,a(e),r)}function P(n,t){return function(e,r,u){return n(e,t,r,u)}}function V(n,t,e){function r(n,t){n?e(n):++i!==o&&t!==Bt||e(null)}e=g(e||m);var u=0,i=0,o=n.length;for(0===o&&e(null);u<o;u++)t(n[u],u,U(r))}function D(n){return function(t,e,r){return n(Ie,t,a(e),r)}}function R(n,t,e,r){r=r||m,t=t||[];var u=[],i=0,o=a(e);n(t,function(n,t,e){var r=i++;o(n,function(n,t){u[r]=t,e(n)})},function(n){r(n,u)})}function C(n){return function(t,e,r,u){return n(q(e),t,a(r),u)}}function $(n,t){for(var e=-1,r=null==n?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}function W(n){return function(t,e,r){for(var u=-1,i=Object(t),o=r(t),c=o.length;c--;){var f=o[n?c:++u];if(e(i[f],f,i)===!1)break}return t}}function N(n,t){return n&&Pe(n,t,B)}function Q(n,t,e,r){for(var u=n.length,i=e+(r?1:-1);r?i--:++i<u;)if(t(n[i],i,n))return i;return-1}function G(n){return n!==n}function H(n,t,e){for(var r=e-1,u=n.length;++r<u;)if(n[r]===t)return r;return-1}function J(n,t,e){return t===t?H(n,t,e):Q(n,G,e)}function K(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 X(n){return"symbol"==typeof n||j(n)&&h(n)==De}function Y(n){if("string"==typeof n)return n;if(Pt(n))return K(n,Y)+"";if(X(n))return $e?$e.call(n):"";var t=n+"";return"0"==t&&1/n==-Re?"-0":t}function Z(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 i=Array(u);++r<u;)i[r]=n[r+t];return i}function nn(n,t,e){var r=n.length;return e=void 0===e?r:e,!t&&e>=r?n:Z(n,t,e)}function tn(n,t){for(var e=n.length;e--&&J(t,n[e],0)>-1;);return e}function en(n,t){for(var e=-1,r=n.length;++e<r&&J(t,n[e],0)>-1;);return e}function rn(n){return n.split("")}function un(n){return Xe.test(n)}function on(n){return n.match(mr)||[]}function cn(n){return un(n)?on(n):rn(n)}function fn(n){return null==n?"":Y(n)}function an(n,t,e){if(n=fn(n),n&&(e||void 0===t))return n.replace(gr,"");if(!n||!(t=Y(t)))return n;var r=cn(n),u=cn(t),i=en(r,u),o=tn(r,u)+1;return nn(r,i,o).join("")}function ln(n){return n=n.toString().replace(kr,""),n=n.match(br)[2].replace(" ",""),n=n?n.split(jr):[],n=n.map(function(n){return an(n.replace(Sr,""))})}function sn(n,t){var e={};N(n,function(n,t){function r(t,e){var r=K(u,function(n){return t[n]});r.push(e),a(n).apply(null,r)}var u,i=f(n),o=!i&&1===n.length||i&&0===n.length;if(Pt(n))u=n.slice(0,-1),n=n[n.length-1],e[t]=u.concat(u.length>0?r:n);else if(o)e[t]=n;else{if(u=ln(n),0===n.length&&!i&&0===u.length)throw new Error("autoInject task functions require explicit parameters.");i||u.pop(),e[t]=u.concat(r)}}),Ve(e,t)}function pn(){this.head=this.tail=null,this.length=0}function hn(n,t){n.length=1,n.head=n.tail=t}function yn(n,t,e){function r(n,t,e){if(null!=e&&"function"!=typeof e)throw new Error("task callback must be a function");if(s.started=!0,Pt(n)||(n=[n]),0===n.length&&s.idle())return lt(function(){s.drain()});for(var r=0,u=n.length;r<u;r++){var i={data:n[r],callback:e||m};t?s._tasks.unshift(i):s._tasks.push(i)}f||(f=!0,lt(function(){f=!1,s.process()}))}function u(n){return function(t){o-=1;for(var e=0,r=n.length;e<r;e++){var u=n[e],i=J(c,u,0);0===i?c.shift():i>0&&c.splice(i,1),u.callback.apply(u,arguments),null!=t&&s.error(t,u.data)}o<=s.concurrency-s.buffer&&s.unsaturated(),s.idle()&&s.drain(),s.process()}}if(null==t)t=1;else if(0===t)throw new Error("Concurrency must not be zero");var i=a(n),o=0,c=[],f=!1,l=!1,s={_tasks:new pn,concurrency:t,payload:e,saturated:m,unsaturated:m,buffer:t/4,empty:m,drain:m,error:m,started:!1,paused:!1,push:function(n,t){r(n,!1,t)},kill:function(){s.drain=m,s._tasks.empty()},unshift:function(n,t){r(n,!0,t)},remove:function(n){s._tasks.remove(n)},process:function(){if(!l){for(l=!0;!s.paused&&o<s.concurrency&&s._tasks.length;){var n=[],t=[],e=s._tasks.length;s.payload&&(e=Math.min(e,s.payload));for(var r=0;r<e;r++){var f=s._tasks.shift();n.push(f),c.push(f),t.push(f.data)}o+=1,0===s._tasks.length&&s.empty(),o===s.concurrency&&s.saturated();var a=U(u(n));i(t,a)}l=!1}},length:function(){return s._tasks.length},running:function(){return o},workersList:function(){return c},idle:function(){return s._tasks.length+o===0},pause:function(){s.paused=!0},resume:function(){s.paused!==!1&&(s.paused=!1,lt(s.process))}};return s}function vn(n,t){return yn(n,1,t)}function dn(n,t,e,r){r=g(r||m);var u=a(e);Or(n,function(n,e,r){u(t,n,function(n,e){t=e,r(n)})},function(n){r(n,t)})}function mn(){var n=K(arguments,a);return function(){var e=t(arguments),r=this,u=e[e.length-1];"function"==typeof u?e.pop():u=m,dn(n,e,function(n,e,u){e.apply(r,n.concat(function(n){var e=t(arguments,1);u(n,e)}))},function(n,t){u.apply(r,[n].concat(t))})}}function gn(n){return n}function bn(n,t){return function(e,r,u,i){i=i||m;var o,c=!1;e(r,function(e,r,i){u(e,function(r,u){r?i(r):n(u)&&!o?(c=!0,o=t(!0,e),i(null,Bt)):i()})},function(n){n?i(n):i(null,c?o:t(!1))})}}function jn(n,t){return t}function Sn(n){return function(e){var r=t(arguments,1);r.push(function(e){var r=t(arguments,1);"object"==typeof console&&(e?console.error&&console.error(e):console[n]&&$(r,function(t){console[n](t)}))}),a(e).apply(null,r)}}function kn(n,e,r){function u(n){if(n)return r(n);var e=t(arguments,1);e.push(i),c.apply(this,e)}function i(n,t){return n?r(n):t?void o(u):r(null)}r=U(r||m);var o=a(n),c=a(e);i(null,!0)}function Ln(n,e,r){r=U(r||m);var u=a(n),i=function(n){if(n)return r(n);var o=t(arguments,1);return e.apply(this,o)?u(i):void r.apply(null,[null].concat(o))};u(i)}function On(n,t,e){Ln(n,function(){return!t.apply(this,arguments)},e)}function wn(n,t,e){function r(n){return n?e(n):void o(u)}function u(n,t){return n?e(n):t?void i(r):e(null)}e=U(e||m);var i=a(t),o=a(n);o(u)}function xn(n){return function(t,e,r){return n(t,r)}}function En(n,t,e){Ie(n,xn(a(t)),e)}function An(n,t,e,r){q(t)(n,xn(a(e)),r)}function Tn(n){return f(n)?n:ct(function(t,e){var r=!0;t.push(function(){var n=arguments;r?lt(function(){e.apply(null,n)}):e.apply(null,n)}),n.apply(this,t),r=!1})}function Bn(n){return!n}function Fn(n){return function(t){return null==t?void 0:t[n]}}function In(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=[],i=0;i<t.length;i++)u[i]&&e.push(t[i]);r(null,e)})}function _n(n,t,e,r){var u=[];n(t,function(n,t,r){e(n,function(e,i){e?r(e):(i&&u.push({index:t,value:n}),r())})},function(n){n?r(n):r(null,K(u.sort(function(n,t){return n.index-t.index}),Fn("value")))})}function Mn(n,t,e,r){var u=d(t)?In:_n;u(n,t,a(e),r||m)}function Un(n,t){function e(n){return n?r(n):void u(e)}var r=U(t||m),u=a(Tn(n));e()}function qn(n,t,e,r){r=g(r||m);var u={},i=a(e);z(n,t,function(n,t,e){i(n,t,function(n,r){return n?e(n):(u[t]=r,void e())})},function(n){r(n,u)})}function zn(n,t){return t in n}function Pn(n,e){var r=Object.create(null),u=Object.create(null);e=e||gn;var i=a(n),o=ct(function(n,o){var c=e.apply(null,n);zn(r,c)?lt(function(){o.apply(null,r[c])}):zn(u,c)?u[c].push(o):(u[c]=[o],i.apply(null,n.concat(function(){var n=t(arguments);r[c]=n;var e=u[c];delete u[c];for(var i=0,o=e.length;i<o;i++)e[i].apply(null,n)})))});return o.memo=r,o.unmemoized=n,o}function Vn(n,e,r){r=r||m;var u=d(e)?[]:{};n(e,function(n,e,r){a(n)(function(n,i){arguments.length>2&&(i=t(arguments,1)),u[e]=i,r(n)})},function(n){r(n,u)})}function Dn(n,t){Vn(Ie,n,t)}function Rn(n,t,e){Vn(q(t),n,e)}function Cn(n,t){if(t=g(t||m),!Pt(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++)a(n[e])(t)}function $n(n,e,r,u){var i=t(n).reverse();dn(i,e,r,u)}function Wn(n){var e=a(n);return ct(function(n,r){return n.push(function(n,e){if(n)r(null,{error:n});else{var u;u=arguments.length<=2?e:t(arguments,1),r(null,{value:u})}}),e.apply(this,n)})}function Nn(n){var t;return Pt(n)?t=K(n,Wn):(t={},N(n,function(n,e){t[e]=Wn.call(this,n)})),t}function Qn(n,t,e,r){Mn(n,t,function(n,t){e(n,function(n,e){t(n,!e)})},r)}function Gn(n){return function(){return n}}function Hn(n,t,e){function r(n,t){if("object"==typeof t)n.times=+t.times||i,n.intervalFunc="function"==typeof t.interval?t.interval:Gn(+t.interval||o),n.errorFilter=t.errorFilter;else{if("number"!=typeof t&&"string"!=typeof t)throw new Error("Invalid arguments for async.retry");n.times=+t||i}}function u(){f(function(n){n&&l++<c.times&&("function"!=typeof c.errorFilter||c.errorFilter(n))?setTimeout(u,c.intervalFunc(l)):e.apply(null,arguments)})}var i=5,o=0,c={times:i,intervalFunc:Gn(o)};if(arguments.length<3&&"function"==typeof n?(e=t||m,t=n):(r(c,n),e=e||m),"function"!=typeof t)throw new Error("Invalid arguments for async.retry");var f=a(t),l=1;u()}function Jn(n,t){Vn(Or,n,t)}function Kn(n,t,e){function r(n,t){var e=n.criteria,r=t.criteria;return e<r?-1:e>r?1:0}var u=a(t);_e(n,function(n,t){u(n,function(e,r){return e?t(e):void t(null,{value:n,criteria:r})})},function(n,t){return n?e(n):void e(null,K(t.sort(r),Fn("value")))})}function Xn(n,t,e){var r=a(n);return ct(function(u,i){function o(){var t=n.name||"anonymous",r=new Error('Callback function "'+t+'" timed out.');r.code="ETIMEDOUT",e&&(r.info=e),f=!0,i(r)}var c,f=!1;u.push(function(){f||(i.apply(null,arguments),clearTimeout(c))}),c=setTimeout(o,t),r.apply(null,u)})}function Yn(n,t,e,r){for(var u=-1,i=iu(uu((t-n)/(e||1)),0),o=Array(i);i--;)o[r?i:++u]=n,n+=e;return o}function Zn(n,t,e,r){var u=a(e);Ue(Yn(0,n,1),t,u,r)}function nt(n,t,e,r){arguments.length<=3&&(r=e,e=t,t=Pt(n)?[]:{}),r=g(r||m);var u=a(e);Ie(n,function(n,e,r){u(t,n,e,r)},function(n){r(n,t)})}function tt(n,e){var r,u=null;e=e||m,Ur(n,function(n,e){a(n)(function(n,i){r=arguments.length>2?t(arguments,1):i,u=n,e(!n)})},function(){e(u,r)})}function et(n){return function(){return(n.unmemoized||n).apply(null,arguments)}}function rt(n,e,r){r=U(r||m);var u=a(e);if(!n())return r(null);var i=function(e){if(e)return r(e);if(n())return u(i);var o=t(arguments,1);r.apply(null,[null].concat(o))};u(i)}function ut(n,t,e){rt(function(){return!n.apply(this,arguments)},t,e)}var it,ot=function(n){var e=t(arguments,1);return function(){var r=t(arguments);return n.apply(null,e.concat(r))}},ct=function(n){return function(){var e=t(arguments),r=e.pop();n.call(this,e,r)}},ft="function"==typeof setImmediate&&setImmediate,at="object"==typeof process&&"function"==typeof process.nextTick;it=ft?setImmediate:at?process.nextTick:r;var lt=u(it),st="function"==typeof Symbol,pt="object"==typeof global&&global&&global.Object===Object&&global,ht="object"==typeof self&&self&&self.Object===Object&&self,yt=pt||ht||Function("return this")(),vt=yt.Symbol,dt=Object.prototype,mt=dt.hasOwnProperty,gt=dt.toString,bt=vt?vt.toStringTag:void 0,jt=Object.prototype,St=jt.toString,kt="[object Null]",Lt="[object Undefined]",Ot=vt?vt.toStringTag:void 0,wt="[object AsyncFunction]",xt="[object Function]",Et="[object GeneratorFunction]",At="[object Proxy]",Tt=9007199254740991,Bt={},Ft="function"==typeof Symbol&&Symbol.iterator,It=function(n){return Ft&&n[Ft]&&n[Ft]()},_t="[object Arguments]",Mt=Object.prototype,Ut=Mt.hasOwnProperty,qt=Mt.propertyIsEnumerable,zt=S(function(){return arguments}())?S:function(n){return j(n)&&Ut.call(n,"callee")&&!qt.call(n,"callee")},Pt=Array.isArray,Vt="object"==typeof n&&n&&!n.nodeType&&n,Dt=Vt&&"object"==typeof module&&module&&!module.nodeType&&module,Rt=Dt&&Dt.exports===Vt,Ct=Rt?yt.Buffer:void 0,$t=Ct?Ct.isBuffer:void 0,Wt=$t||k,Nt=9007199254740991,Qt=/^(?:0|[1-9]\d*)$/,Gt="[object Arguments]",Ht="[object Array]",Jt="[object Boolean]",Kt="[object Date]",Xt="[object Error]",Yt="[object Function]",Zt="[object Map]",ne="[object Number]",te="[object Object]",ee="[object RegExp]",re="[object Set]",ue="[object String]",ie="[object WeakMap]",oe="[object ArrayBuffer]",ce="[object DataView]",fe="[object Float32Array]",ae="[object Float64Array]",le="[object Int8Array]",se="[object Int16Array]",pe="[object Int32Array]",he="[object Uint8Array]",ye="[object Uint8ClampedArray]",ve="[object Uint16Array]",de="[object Uint32Array]",me={};me[fe]=me[ae]=me[le]=me[se]=me[pe]=me[he]=me[ye]=me[ve]=me[de]=!0,me[Gt]=me[Ht]=me[oe]=me[Jt]=me[ce]=me[Kt]=me[Xt]=me[Yt]=me[Zt]=me[ne]=me[te]=me[ee]=me[re]=me[ue]=me[ie]=!1;var ge="object"==typeof n&&n&&!n.nodeType&&n,be=ge&&"object"==typeof module&&module&&!module.nodeType&&module,je=be&&be.exports===ge,Se=je&&pt.process,ke=function(){try{var n=be&&be.require&&be.require("util").types;return n?n:Se&&Se.binding&&Se.binding("util")}catch(n){}}(),Le=ke&&ke.isTypedArray,Oe=Le?w(Le):O,we=Object.prototype,xe=we.hasOwnProperty,Ee=Object.prototype,Ae=A(Object.keys,Object),Te=Object.prototype,Be=Te.hasOwnProperty,Fe=P(z,1/0),Ie=function(n,t,e){var r=d(n)?V:Fe;r(n,a(t),e)},_e=D(R),Me=l(_e),Ue=C(R),qe=P(Ue,1),ze=l(qe),Pe=W(),Ve=function(n,e,r){function u(n,t){j.push(function(){f(n,t)})}function i(){if(0===j.length&&0===v)return r(null,y);for(;j.length&&v<e;){var n=j.shift();n()}}function o(n,t){var e=b[n];e||(e=b[n]=[]),e.push(t)}function c(n){var t=b[n]||[];$(t,function(n){n()}),i()}function f(n,e){if(!d){var u=U(function(e,u){if(v--,arguments.length>2&&(u=t(arguments,1)),e){var i={};N(y,function(n,t){i[t]=n}),i[n]=u,d=!0,b=Object.create(null),r(e,i)}else y[n]=u,c(n)});v++;var i=a(e[e.length-1]);e.length>1?i(y,u):i(u)}}function l(){for(var n,t=0;S.length;)n=S.pop(),t++,$(s(n),function(n){0===--k[n]&&S.push(n)});if(t!==h)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}function s(t){var e=[];return N(n,function(n,r){Pt(n)&&J(n,t,0)>=0&&e.push(r)}),e}"function"==typeof e&&(r=e,e=null),r=g(r||m);var p=B(n),h=p.length;if(!h)return r(null);e||(e=h);var y={},v=0,d=!1,b=Object.create(null),j=[],S=[],k={};N(n,function(t,e){if(!Pt(t))return u(e,[t]),void S.push(e);var r=t.slice(0,t.length-1),i=r.length;return 0===i?(u(e,t),void S.push(e)):(k[e]=i,void $(r,function(c){if(!n[c])throw new Error("async.auto task `"+e+"` has a non-existent dependency `"+c+"` in "+r.join(", "));o(c,function(){i--,0===i&&u(e,t)})}))}),l(),i()},De="[object Symbol]",Re=1/0,Ce=vt?vt.prototype:void 0,$e=Ce?Ce.toString:void 0,We="\\ud800-\\udfff",Ne="\\u0300-\\u036f",Qe="\\ufe20-\\ufe2f",Ge="\\u20d0-\\u20ff",He=Ne+Qe+Ge,Je="\\ufe0e\\ufe0f",Ke="\\u200d",Xe=RegExp("["+Ke+We+He+Je+"]"),Ye="\\ud800-\\udfff",Ze="\\u0300-\\u036f",nr="\\ufe20-\\ufe2f",tr="\\u20d0-\\u20ff",er=Ze+nr+tr,rr="\\ufe0e\\ufe0f",ur="["+Ye+"]",ir="["+er+"]",or="\\ud83c[\\udffb-\\udfff]",cr="(?:"+ir+"|"+or+")",fr="[^"+Ye+"]",ar="(?:\\ud83c[\\udde6-\\uddff]){2}",lr="[\\ud800-\\udbff][\\udc00-\\udfff]",sr="\\u200d",pr=cr+"?",hr="["+rr+"]?",yr="(?:"+sr+"(?:"+[fr,ar,lr].join("|")+")"+hr+pr+")*",vr=hr+pr+yr,dr="(?:"+[fr+ir+"?",ir,ar,lr,ur].join("|")+")",mr=RegExp(or+"(?="+or+")|"+dr+vr,"g"),gr=/^\s+|\s+$/g,br=/^(?:async\s+)?(function)?\s*[^\(]*\(\s*([^\)]*)\)/m,jr=/,/,Sr=/(=.+)?(\s*)$/,kr=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm;pn.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},pn.prototype.empty=function(){for(;this.head;)this.shift();return this},pn.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},pn.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},pn.prototype.unshift=function(n){this.head?this.insertBefore(this.head,n):hn(this,n)},pn.prototype.push=function(n){this.tail?this.insertAfter(this.tail,n):hn(this,n)},pn.prototype.shift=function(){return this.head&&this.removeLink(this.head)},pn.prototype.pop=function(){return this.tail&&this.removeLink(this.tail)},pn.prototype.toArray=function(){for(var n=Array(this.length),t=this.head,e=0;e<this.length;e++)n[e]=t.data,t=t.next;return n},pn.prototype.remove=function(n){for(var t=this.head;t;){var e=t.next;n(t)&&this.removeLink(t),t=e}return this};var Lr,Or=P(z,1),wr=function(){return mn.apply(null,t(arguments).reverse())},xr=Array.prototype.concat,Er=function(n,e,r,u){u=u||m;var i=a(r);Ue(n,e,function(n,e){i(n,function(n){return n?e(n):e(null,t(arguments,1))})},function(n,t){for(var e=[],r=0;r<t.length;r++)t[r]&&(e=xr.apply(e,t[r]));return u(n,e)})},Ar=P(Er,1/0),Tr=P(Er,1),Br=function(){var n=t(arguments),e=[null].concat(n);return function(){var n=arguments[arguments.length-1];return n.apply(this,e)}},Fr=D(bn(gn,jn)),Ir=C(bn(gn,jn)),_r=P(Ir,1),Mr=Sn("dir"),Ur=P(An,1),qr=D(bn(Bn,Bn)),zr=C(bn(Bn,Bn)),Pr=P(zr,1),Vr=D(Mn),Dr=C(Mn),Rr=P(Dr,1),Cr=function(n,t,e,r){r=r||m;var u=a(e);Ue(n,t,function(n,t){u(n,function(e,r){return e?t(e):t(null,{key:r,val:n})})},function(n,t){for(var e={},u=Object.prototype.hasOwnProperty,i=0;i<t.length;i++)if(t[i]){var o=t[i].key,c=t[i].val;u.call(e,o)?e[o].push(c):e[o]=[c]}return r(n,e)})},$r=P(Cr,1/0),Wr=P(Cr,1),Nr=Sn("log"),Qr=P(qn,1/0),Gr=P(qn,1);Lr=at?process.nextTick:ft?setImmediate:r;var Hr=u(Lr),Jr=function(n,t){var e=a(n);return yn(function(n,t){e(n[0],t)},t,1)},Kr=function(n,t){var e=Jr(n,t);return e.push=function(n,t,r){if(null==r&&(r=m),"function"!=typeof r)throw new Error("task callback must be a function");if(e.started=!0,Pt(n)||(n=[n]),0===n.length)return lt(function(){e.drain()});t=t||0;for(var u=e._tasks.head;u&&t>=u.priority;)u=u.next;for(var i=0,o=n.length;i<o;i++){var c={data:n[i],priority:t,callback:r};u?e._tasks.insertBefore(u,c):e._tasks.push(c)}lt(e.process)},delete e.unshift,e},Xr=D(Qn),Yr=C(Qn),Zr=P(Yr,1),nu=function(n,t){t||(t=n,n=null);var e=a(t);return ct(function(t,r){function u(n){e.apply(null,t.concat(n))}n?Hn(n,u,r):Hn(u,r)})},tu=D(bn(Boolean,gn)),eu=C(bn(Boolean,gn)),ru=P(eu,1),uu=Math.ceil,iu=Math.max,ou=P(Zn,1/0),cu=P(Zn,1),fu=function(n,e){function r(t){var e=a(n[i++]);t.push(U(u)),e.apply(null,t)}function u(u){return u||i===n.length?e.apply(null,arguments):void r(t(arguments,1))}if(e=g(e||m),!Pt(n))return e(new Error("First argument to waterfall must be an array of functions"));if(!n.length)return e();var i=0;r([])},au={apply:ot,applyEach:Me,applyEachSeries:ze,asyncify:i,auto:Ve,autoInject:sn,cargo:vn,compose:wr,concat:Ar,concatLimit:Er,concatSeries:Tr,constant:Br,detect:Fr,detectLimit:Ir,detectSeries:_r,dir:Mr,doDuring:kn,doUntil:On,doWhilst:Ln,during:wn,each:En,eachLimit:An,eachOf:Ie,eachOfLimit:z,eachOfSeries:Or,eachSeries:Ur,ensureAsync:Tn,every:qr,everyLimit:zr,everySeries:Pr,filter:Vr,filterLimit:Dr,filterSeries:Rr,forever:Un,groupBy:$r,groupByLimit:Cr,groupBySeries:Wr,log:Nr,map:_e,mapLimit:Ue,mapSeries:qe,mapValues:Qr,mapValuesLimit:qn,mapValuesSeries:Gr,memoize:Pn,nextTick:Hr,parallel:Dn,parallelLimit:Rn,priorityQueue:Kr,queue:Jr,race:Cn,reduce:dn,reduceRight:$n,reflect:Wn,reflectAll:Nn,reject:Xr,rejectLimit:Yr,rejectSeries:Zr,retry:Hn,retryable:nu,seq:mn,series:Jn,setImmediate:lt,some:tu,someLimit:eu,someSeries:ru,sortBy:Kn,timeout:Xn,times:ou,timesLimit:Zn,timesSeries:cu,transform:nt,tryEach:tt,unmemoize:et,until:ut,waterfall:fu,whilst:rt,all:qr,allLimit:zr,allSeries:Pr,any:tu,anyLimit:eu,anySeries:ru,find:Fr,findLimit:Ir,findSeries:_r,forEach:En,forEachSeries:Ur,forEachLimit:An,forEachOf:Ie,forEachOfSeries:Or,forEachOfLimit:z,inject:dn,foldl:dn,foldr:$n,select:Vr,selectLimit:Dr,selectSeries:Rr,wrapSync:i};n.default=au,n.apply=ot,n.applyEach=Me,n.applyEachSeries=ze,n.asyncify=i,n.auto=Ve,n.autoInject=sn,n.cargo=vn,n.compose=wr,n.concat=Ar,n.concatLimit=Er,n.concatSeries=Tr,n.constant=Br,n.detect=Fr,n.detectLimit=Ir,n.detectSeries=_r,n.dir=Mr,n.doDuring=kn,n.doUntil=On,n.doWhilst=Ln,n.during=wn,n.each=En,n.eachLimit=An,n.eachOf=Ie,n.eachOfLimit=z,n.eachOfSeries=Or,n.eachSeries=Ur,n.ensureAsync=Tn,n.every=qr,n.everyLimit=zr,n.everySeries=Pr,n.filter=Vr,n.filterLimit=Dr,n.filterSeries=Rr,n.forever=Un,n.groupBy=$r,n.groupByLimit=Cr,n.groupBySeries=Wr,n.log=Nr,n.map=_e,n.mapLimit=Ue,n.mapSeries=qe,n.mapValues=Qr,n.mapValuesLimit=qn,n.mapValuesSeries=Gr,n.memoize=Pn,n.nextTick=Hr,n.parallel=Dn,n.parallelLimit=Rn,n.priorityQueue=Kr,n.queue=Jr,n.race=Cn,n.reduce=dn,n.reduceRight=$n,n.reflect=Wn,n.reflectAll=Nn,n.reject=Xr,n.rejectLimit=Yr,n.rejectSeries=Zr,n.retry=Hn,n.retryable=nu,n.seq=mn,n.series=Jn,n.setImmediate=lt,n.some=tu,n.someLimit=eu,n.someSeries=ru,n.sortBy=Kn,n.timeout=Xn,n.times=ou,n.timesLimit=Zn,n.timesSeries=cu,n.transform=nt,n.tryEach=tt,n.unmemoize=et,n.until=ut,n.waterfall=fu,n.whilst=rt,n.all=qr,n.allLimit=zr,n.allSeries=Pr,n.any=tu,n.anyLimit=eu,n.anySeries=ru,n.find=Fr,n.findLimit=Ir,n.findSeries=_r,n.forEach=En,n.forEachSeries=Ur,n.forEachLimit=An,n.forEachOf=Ie,n.forEachOfSeries=Or,n.forEachOfLimit=z,n.inject=dn,n.foldl=dn,n.foldr=$n,n.select=Vr,n.selectLimit=Dr,n.selectSeries=Rr,n.wrapSync=i,Object.defineProperty(n,"__esModule",{value:!0})});
//# sourceMappingURL=async.min.map
(function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(e.async={})})(this,function(e){"use strict";function t(e,...t){return(...n)=>e(...t,...n)}function n(e){return function(...t){var n=t.pop();return e.call(this,t,n)}}function i(e){setTimeout(e,0)}function a(e){return(t,...n)=>e(()=>t(...n))}function r(e){return d(e)?function(...t){const n=t.pop(),i=e.apply(this,t);return s(i,n)}:n(function(t,n){var i;try{i=e.apply(this,t)}catch(t){return n(t)}return i&&"function"==typeof i.then?s(i,n):void n(null,i)})}function s(e,t){return e.then(e=>{l(t,null,e)},e=>{l(t,e&&e.message?e:new Error(e))})}function l(e,t,n){try{e(t,n)}catch(e){ve(t=>{throw t},e)}}function d(e){return"AsyncFunction"===e[Symbol.toStringTag]}function c(e){return"AsyncGenerator"===e[Symbol.toStringTag]}function u(e){return"function"==typeof e[Symbol.asyncIterator]}function o(e){if("function"!=typeof e)throw new Error("expected a function");return d(e)?r(e):e}function f(e){return function(t,...i){var a=n(function(n,i){var a=this;return e(t,(e,t)=>{o(e).apply(a,n.concat(t))},i)});return i.length?a.apply(this,i):a}}function p(e,t,n,i){t=t||[];var a=[],r=0,s=o(n);return e(t,(e,t,n)=>{var i=r++;s(e,(e,t)=>{a[i]=t,n(e)})},e=>{i(e,a)})}function h(e){return e&&"number"==typeof e.length&&0<=e.length&&0==e.length%1}function y(e){function t(...t){if(null!==e){var n=e;e=null,n.apply(this,t)}}return Object.assign(t,e),t}function m(e){return e[Symbol.iterator]&&e[Symbol.iterator]()}function g(e){var t=-1,n=e.length;return function(){return++t<n?{value:e[t],key:t}:null}}function k(e){var t=-1;return function(){var n=e.next();return n.done?null:(t++,{value:n.value,key:t})}}function S(e){var t=e?Object.keys(e):[],n=-1,a=t.length;return function(){var i=t[++n];return n<a?{value:e[i],key:i}:null}}function v(e){if(h(e))return g(e);var t=m(e);return t?k(t):S(e)}function L(e){return function(...t){if(null===e)throw new Error("Callback was already called.");var n=e;e=null,n.apply(this,t)}}function x(e,t,n,i){function a(){u>=t||c||l||(c=!0,e.next().then(({value:e,done:t})=>{if(!(d||l))return c=!1,t?(l=!0,void(0>=u&&i(null))):void(u++,n(e,o,r),o++,a())}).catch(s))}function r(e,t){return u-=1,d?void 0:e?s(e):!1===e?(l=!0,void(d=!0)):t===Le||l&&0>=u?(l=!0,i(null)):void a()}function s(e){d||(c=!1,l=!0,i(e))}let l=!1,d=!1,c=!1,u=0,o=0;a()}function E(e,t=e.length){function n(...n){return"function"==typeof n[t-1]?e.apply(this,n):new Promise((i,a)=>{n[t-1]=(e,...t)=>e?a(e):void i(1<t.length?t:t[0]),e.apply(this,n)})}if(!t)throw new Error("arity is undefined");return Object.defineProperty(n,"name",{value:`awaitable(${e.name})`}),n}function O(e,t,n){function i(e,t){!1===e&&(l=!0);!0===l||(e?n(e):(++r===s||t===Le)&&n(null))}n=y(n);var a=0,r=0,{length:s}=e,l=!1;for(0===s&&n(null);a<s;a++)t(e[a],a,L(i))}function b(e,t,n){return Ee(e,1/0,t,n)}function _(){function e(e,...i){return e?n(e):void t(1<i.length?i:i[0])}let t,n;return e[Be]=new Promise((e,i)=>{t=e,n=i}),e}function j(e,t,n){function i(e,t){g.push(()=>l(e,t))}function a(){if(!p){if(0===g.length&&0===f)return n(null,u);for(;g.length&&f<t;){var e=g.shift();e()}}}function r(e,t){var n=m[e];n||(n=m[e]=[]),n.push(t)}function s(e){var t=m[e]||[];t.forEach(e=>e()),a()}function l(e,t){if(!h){var i=L((t,...i)=>{if(f--,!1===t)return void(p=!0);if(2>i.length&&([i]=i),t){var a={};if(Object.keys(u).forEach(e=>{a[e]=u[e]}),a[e]=i,h=!0,m=Object.create(null),p)return;n(t,a)}else u[e]=i,s(e)});f++;var a=o(t[t.length-1]);1<t.length?a(u,i):a(i)}}function d(t){var n=[];return Object.keys(e).forEach(i=>{const a=e[i];Array.isArray(a)&&0<=a.indexOf(t)&&n.push(i)}),n}"number"!=typeof t&&(n=t,t=null),n=y(n||_());var c=Object.keys(e).length;if(!c)return n(null);t||(t=c);var u={},f=0,p=!1,h=!1,m=Object.create(null),g=[],k=[],S={};return Object.keys(e).forEach(t=>{var n=e[t];if(!Array.isArray(n))return i(t,[n]),void k.push(t);var a=n.slice(0,n.length-1),s=a.length;return 0===s?(i(t,n),void k.push(t)):void(S[t]=s,a.forEach(l=>{if(!e[l])throw new Error("async.auto task `"+t+"` has a non-existent dependency `"+l+"` in "+a.join(", "));r(l,()=>{s--,0===s&&i(t,n)})}))}),function(){for(var e,t=0;k.length;)e=k.pop(),t++,d(e).forEach(e=>{0==--S[e]&&k.push(e)});if(t!==c)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}(),a(),n[Be]}function I(e){const t=e.toString().replace(Pe,"");let n=t.match(Me);if(n||(n=t.match(Fe)),!n)throw new Error("could not parse args in autoInject\nSource:\n"+t);let[,i]=n;return i.replace(/\s/g,"").split(Te).map(e=>e.replace(we,"").trim())}function A(e,t){var n={};return Object.keys(e).forEach(t=>{function i(e,t){var n=a.map(t=>e[t]);n.push(t),o(r)(...n)}var a,r=e[t],s=d(r),l=!s&&1===r.length||s&&0===r.length;if(Array.isArray(r))a=[...r],r=a.pop(),n[t]=a.concat(0<a.length?i:r);else if(l)n[t]=r;else{if(a=I(r),0===r.length&&!s&&0===a.length)throw new Error("autoInject task functions require explicit parameters.");s||a.pop(),n[t]=a.concat(i)}}),j(n,t)}function B(e,t){e.length=1,e.head=e.tail=t}function M(e,t,n){function i(e,t,n){if(null!=n&&"function"!=typeof n)throw new Error("task callback must be a function");if(f.started=!0,Array.isArray(e)||(e=[e]),0===e.length&&f.idle())return ve(()=>f.drain());for(var a,r=0,s=e.length;r<s;r++)a={data:e[r],callback:n||Re},t?f._tasks.unshift(a):f._tasks.push(a);c||(c=!0,ve(()=>{c=!1,f.process()}))}function a(e){return function(t,...n){s-=1;for(var a=0,r=e.length;a<r;a++){var l=e[a],c=d.indexOf(l);0===c?d.shift():0<c&&d.splice(c,1),l.callback(t,...n),null!=t&&f.error(t,l.data)}s<=f.concurrency-f.buffer&&f.unsaturated(),f.idle()&&f.drain(),f.process()}}if(null==t)t=1;else if(0===t)throw new RangeError("Concurrency must not be zero");var r=o(e),s=0,d=[],c=!1,u=!1,f={_tasks:new ze,*[Symbol.iterator](){yield*f._tasks[Symbol.iterator]()},concurrency:t,payload:n,saturated:Re,unsaturated:Re,buffer:t/4,empty:Re,drain:Re,error:Re,started:!1,paused:!1,push(e,t){i(e,!1,t)},kill(){f.drain=Re,f._tasks.empty()},unshift(e,t){i(e,!0,t)},remove(e){f._tasks.remove(e)},process(){if(!u){for(u=!0;!f.paused&&s<f.concurrency&&f._tasks.length;){var e=[],t=[],n=f._tasks.length;f.payload&&(n=Math.min(n,f.payload));for(var c,o=0;o<n;o++)c=f._tasks.shift(),e.push(c),d.push(c),t.push(c.data);s+=1,0===f._tasks.length&&f.empty(),s===f.concurrency&&f.saturated();var p=L(a(e));r(t,p)}u=!1}},length(){return f._tasks.length},running(){return s},workersList(){return d},idle(){return 0===f._tasks.length+s},pause(){f.paused=!0},resume(){!1===f.paused||(f.paused=!1,ve(f.process))}};return f}function F(e,t){return M(e,1,t)}function T(e,t,n){return M(e,t,n)}function w(...e){var t=e.map(o);return function(...e){var n=this,i=e[e.length-1];return"function"==typeof i?e.pop():i=_(),Ve(t,e,(e,t,i)=>{t.apply(n,e.concat((e,...t)=>{i(e,t)}))},(e,t)=>i(e,...t)),i[Be]}}function P(...e){return w(...e.reverse())}function z(...e){return function(...t){var n=t.pop();return n(null,...e)}}function R(e,t){return(n,i,a,r)=>{var s,l=!1;const d=o(a);n(i,(n,i,a)=>{d(n,(i,r)=>i?a(i):e(r)&&!s?(l=!0,s=t(!0,n),a(null,Le)):void a())},e=>e?r(e):void r(null,l?s:t(!1)))}}function Y(e){return(t,...n)=>o(t)(...n,(t,...n)=>{"object"==typeof console&&(t?console.error&&console.error(t):console[e]&&n.forEach(t=>console[e](t)))})}function V(e,t,n){const i=o(t);return Ke(e,(...e)=>{const t=e.pop();i(...e,(e,n)=>t(e,!n))},n)}function q(e){return(t,n,i)=>e(t,i)}function C(e){return d(e)?e:function(...t){var n=t.pop(),i=!0;t.push((...e)=>{i?ve(()=>n(...e)):n(...e)}),e.apply(this,t),i=!1}}function Q(e,t,n,a){var r=Array(t.length);e(t,(e,t,i)=>{n(e,(e,n)=>{r[t]=!!n,i(e)})},e=>{if(e)return a(e);for(var n=[],s=0;s<t.length;s++)r[s]&&n.push(t[s]);a(null,n)})}function N(e,t,n,i){var a=[];e(t,(e,t,i)=>{n(e,(n,r)=>n?i(n):void(r&&a.push({index:t,value:e}),i()))},e=>e?i(e):void i(null,a.sort((e,t)=>e.index-t.index).map(e=>e.value)))}function D(e,t,n,i){var a=h(t)?Q:N;return a(e,t,o(n),i)}function U(e,t,n){return rt(e,1/0,t,n)}function W(e,t,n){return rt(e,1,t,n)}function G(e,t,n){return lt(e,1/0,t,n)}function K(e,t,n){return lt(e,1,t,n)}function X(e,t=e=>e){var a=Object.create(null),r=Object.create(null),i=o(e),s=n((e,n)=>{var s=t(...e);s in a?ve(()=>n(null,...a[s])):s in r?r[s].push(n):(r[s]=[n],i(...e,(e,...t)=>{e||(a[s]=t);var n=r[s];delete r[s];for(var d=0,c=n.length;d<c;d++)n[d](e,...t)}))});return s.memo=a,s.unmemoized=e,s}function H(e,t){return ct(Oe,e,t)}function Z(e,t,n){return ct(xe(t),e,n)}function $(e,t){var n=o(e);return M((e,t)=>{n(e[0],t)},t,1)}function J(e,t){var n=$(e,t);return n.push=function(e,t=0,a=()=>{}){if("function"!=typeof a)throw new Error("task callback must be a function");if(n.started=!0,Array.isArray(e)||(e=[e]),0===e.length)return ve(()=>n.drain());for(var r=n._tasks.head;r&&t>=r.priority;)r=r.next;for(var s,d=0,c=e.length;d<c;d++)s={data:e[d],priority:t,callback:a},r?n._tasks.insertBefore(r,s):n._tasks.push(s);ve(n.process)},delete n.unshift,n}function ee(e,t,n,i){var a=[...e].reverse();return Ve(a,t,n,i)}function te(e){var t=o(e);return n(function(e,n){return e.push((e,...t)=>{if(e)return n(null,{error:e});var i=t;1>=t.length&&([i]=t),n(null,{value:i})}),t.apply(this,e)})}function ne(e){var t;return Array.isArray(e)?t=e.map(te):(t={},Object.keys(e).forEach(n=>{t[n]=te.call(this,e[n])})),t}function ie(e,t,n,i){const a=o(n);return D(e,t,(e,t)=>{a(e,(e,n)=>{t(e,!n)})},i)}function ae(e){return function(){return e}}function re(e,t,n){function i(){r((e,...t)=>{!1===e||(e&&s++<a.times&&("function"!=typeof a.errorFilter||a.errorFilter(e))?setTimeout(i,a.intervalFunc(s)):n(e,...t))})}var a={times:ht,intervalFunc:ae(yt)};if(3>arguments.length&&"function"==typeof e?(n=t||_(),t=e):(se(a,e),n=n||_()),"function"!=typeof t)throw new Error("Invalid arguments for async.retry");var r=o(t),s=1;return i(),n[Be]}function se(e,n){if("object"==typeof n)e.times=+n.times||ht,e.intervalFunc="function"==typeof n.interval?n.interval:ae(+n.interval||yt),e.errorFilter=n.errorFilter;else if("number"==typeof n||"string"==typeof n)e.times=+n||ht;else throw new Error("Invalid arguments for async.retry")}function le(e,t){t||(t=e,e=null);let i=e&&e.arity||t.length;d(t)&&(i+=1);var a=o(t);return n((t,n)=>{function r(e){a(...t,e)}return(t.length<i-1||null==n)&&(t.push(n),n=_()),e?re(e,r,n):re(r,n),n[Be]})}function de(e,t){return ct(je,e,t)}function ce(e,t,i){var a=o(e);return n((n,r)=>{var s,l=!1;n.push((...e)=>{l||(r(...e),clearTimeout(s))}),s=setTimeout(function(){var t=e.name||"anonymous",n=new Error("Callback function \""+t+"\" timed out.");n.code="ETIMEDOUT",i&&(n.info=i),l=!0,r(n)},t),a(...n)})}function ue(e){for(var t=Array(e);e--;)t[e]=e;return t}function oe(e,t,n,i){var a=o(n);return qe(ue(e),t,a,i)}function fe(e,t,n){return oe(e,1/0,t,n)}function pe(e,t,n){return oe(e,1,t,n)}function he(e,t,n,i){3>=arguments.length&&"function"==typeof t&&(i=n,n=t,t=Array.isArray(e)?[]:{}),i=y(i||_());var a=o(n);return Oe(e,(e,n,i)=>{a(t,e,n,i)},e=>i(e,t)),i[Be]}function ye(e){return(...t)=>(e.unmemoized||e)(...t)}function me(e,t,n){const i=o(e);return Lt(e=>i((t,n)=>e(t,!n)),t,n)}var ge,ke="function"==typeof setImmediate&&setImmediate,Se="object"==typeof process&&"function"==typeof process.nextTick;ge=ke?setImmediate:Se?process.nextTick:i;var ve=a(ge);const Le={};var xe=e=>(t,n,i)=>{function a(e,t){if(!d)if(o-=1,e)l=!0,i(e);else if(!1===e)l=!0,d=!0;else{if(t===Le||l&&0>=o)return l=!0,i(null);f||r()}}function r(){for(f=!0;o<e&&!l;){var t=s();if(null===t)return l=!0,void(0>=o&&i(null));o+=1,n(t.value,t.key,L(a))}f=!1}if(i=y(i),0>=e)throw new RangeError("concurrency limit cannot be less than 1");if(!t)return i(null);if(c(t))return x(t,e,n,i);if(u(t))return x(t[Symbol.asyncIterator](),e,n,i);var s=v(t),l=!1,d=!1,o=0,f=!1;r()},Ee=E(function(e,t,n,i){return xe(t)(e,o(n),i)},4),Oe=E(function(e,t,n){var i=h(e)?O:b;return i(e,o(t),n)},3),be=E(function(e,t,n){return p(Oe,e,t,n)},3),_e=f(be),je=E(function(e,t,n){return Ee(e,1,t,n)},3),Ie=E(function(e,t,n){return p(je,e,t,n)},3),Ae=f(Ie);const Be=Symbol("promiseCallback");var Me=/^(?:async\s+)?(?:function)?\s*[^(]*\(\s*([^)]+)\s*\)(?:\s*{)/m,Fe=/^(?:async\s+)?\(?\s*([^)^=]+)\s*\)?(?:\s*=>)/m,Te=/,/,we=/(=.+)?(\s*)$/,Pe=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;class ze{constructor(){this.head=this.tail=null,this.length=0}removeLink(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}empty(){for(;this.head;)this.shift();return this}insertAfter(e,t){t.prev=e,t.next=e.next,e.next?e.next.prev=t:this.tail=t,e.next=t,this.length+=1}insertBefore(e,t){t.prev=e.prev,t.next=e,e.prev?e.prev.next=t:this.head=t,e.prev=t,this.length+=1}unshift(e){this.head?this.insertBefore(this.head,e):B(this,e)}push(e){this.tail?this.insertAfter(this.tail,e):B(this,e)}shift(){return this.head&&this.removeLink(this.head)}pop(){return this.tail&&this.removeLink(this.tail)}toArray(){return[...this]}*[Symbol.iterator](){for(var e=this.head;e;)yield e.data,e=e.next}remove(e){for(var t=this.head;t;){var{next:n}=t;e(t)&&this.removeLink(t),t=n}return this}}const Re=()=>{};var Ye,Ve=E(function(e,t,n,i){i=y(i);var a=o(n);return je(e,(e,n,i)=>{a(t,e,(e,n)=>{t=n,i(e)})},e=>i(e,t))},4),qe=E(function(e,t,n,i){return p(xe(t),e,n,i)},4),Ce=E(function(e,t,n,a){var i=o(n);return qe(e,t,(e,t)=>{i(e,(e,...n)=>e?t(e):t(null,n))},(e,t)=>{for(var n=[],r=0;r<t.length;r++)t[r]&&(n=n.concat(...t[r]));return a(e,n)})},4),Qe=E(function(e,t,n){return Ce(e,1/0,t,n)},3),Ne=E(function(e,t,n){return Ce(e,1,t,n)},3),De=E(function(e,t,n){return R(e=>e,(e,t)=>t)(Oe,e,t,n)},3),Ue=E(function(e,t,n,i){return R(e=>e,(e,t)=>t)(xe(t),e,n,i)},4),We=E(function(e,t,n){return R(e=>e,(e,t)=>t)(xe(1),e,t,n)},3),Ge=Y("dir"),Ke=E(function(e,t,n){function i(e,...t){return e?n(e):void(!1===e||(r=t,l(...t,a)))}function a(e,t){return e?n(e):!1===e?void 0:t?void s(i):n(null,...r)}n=L(n);var r,s=o(e),l=o(t);return a(null,!0)},3),Xe=E(function(e,t,n){return Oe(e,q(o(t)),n)},3),He=E(function(e,t,n,i){return xe(t)(e,q(o(n)),i)},4),Ze=E(function(e,t,n){return He(e,1,t,n)},3),$e=E(function(e,t,n){return R(e=>!e,e=>!e)(Oe,e,t,n)},3),Je=E(function(e,t,n,i){return R(e=>!e,e=>!e)(xe(t),e,n,i)},4),et=E(function(e,t,n){return R(e=>!e,e=>!e)(je,e,t,n)},3),tt=E(function(e,t,n){return D(Oe,e,t,n)},3),nt=E(function(e,t,n,i){return D(xe(t),e,n,i)},4),it=E(function(e,t,n){return D(je,e,t,n)},3),at=E(function(e,t){function n(e){return e?i(e):void(!1===e||a(n))}var i=L(t),a=o(C(e));return n()},2),rt=E(function(e,t,n,a){var i=o(n);return qe(e,t,(e,t)=>{i(e,(n,i)=>n?t(n):t(null,{key:i,val:e}))},(e,t)=>{for(var n={},{hasOwnProperty:r}=Object.prototype,s=0;s<t.length;s++)if(t[s]){var{key:l}=t[s],{val:d}=t[s];r.call(n,l)?n[l].push(d):n[l]=[d]}return a(e,n)})},4),st=Y("log"),lt=E(function(e,t,n,i){i=y(i);var a={},r=o(n);return xe(t)(e,(e,t,n)=>{r(e,t,(e,i)=>e?n(e):void(a[t]=i,n()))},e=>i(e,a))},4);Ye=Se?process.nextTick:ke?setImmediate:i;var dt=a(Ye),ct=E((e,t,n)=>{var i=h(t)?[]:{};e(t,(e,t,n)=>{o(e)((e,...a)=>{2>a.length&&([a]=a),i[t]=a,n(e)})},e=>n(e,i))},3),ut=E(function(e,t){if(t=y(t),!Array.isArray(e))return t(new TypeError("First argument to race must be an array of functions"));if(!e.length)return t();for(var n=0,a=e.length;n<a;n++)o(e[n])(t)},2),ot=E(function(e,t,n){return ie(Oe,e,t,n)},3),ft=E(function(e,t,n,i){return ie(xe(t),e,n,i)},4),pt=E(function(e,t,n){return ie(je,e,t,n)},3);const ht=5,yt=0;var mt=E(function(e,t,n){return R(Boolean,e=>e)(Oe,e,t,n)},3),gt=E(function(e,t,n,i){return R(Boolean,e=>e)(xe(t),e,n,i)},4),kt=E(function(e,t,n){return R(Boolean,e=>e)(je,e,t,n)},3),St=E(function(e,t,n){function i(e,t){var n=e.criteria,i=t.criteria;return n<i?-1:n>i?1:0}var a=o(t);return be(e,(e,t)=>{a(e,(n,i)=>n?t(n):void t(null,{value:e,criteria:i}))},(e,t)=>e?n(e):void n(null,t.sort(i).map(e=>e.value)))},3),vt=E(function(e,t){var n,i=null;return Ze(e,(e,t)=>{o(e)((e,...a)=>{2>a.length?[n]=a:n=a,i=e,t(e?null:{})})},()=>t(i,n))}),Lt=E(function(e,t,n){function i(e,...t){if(e)return n(e);r=t;!1===e||l(a)}function a(e,t){return e?n(e):!1===e?void 0:t?void s(i):n(null,...r)}n=L(n);var r,s=o(t),l=o(e);return l(a)},3),xt=E(function(e,t){function n(t){var n=o(e[a++]);n(...t,L(i))}function i(i,...r){return!1===i?void 0:i||a===e.length?t(i,...r):void n(r)}if(t=y(t),!Array.isArray(e))return t(new Error("First argument to waterfall must be an array of functions"));if(!e.length)return t();var a=0;n([])});e.default={apply:t,applyEach:_e,applyEachSeries:Ae,asyncify:r,auto:j,autoInject:A,cargo:F,cargoQueue:T,compose:P,concat:Qe,concatLimit:Ce,concatSeries:Ne,constant:z,detect:De,detectLimit:Ue,detectSeries:We,dir:Ge,doUntil:V,doWhilst:Ke,each:Xe,eachLimit:He,eachOf:Oe,eachOfLimit:Ee,eachOfSeries:je,eachSeries:Ze,ensureAsync:C,every:$e,everyLimit:Je,everySeries:et,filter:tt,filterLimit:nt,filterSeries:it,forever:at,groupBy:U,groupByLimit:rt,groupBySeries:W,log:st,map:be,mapLimit:qe,mapSeries:Ie,mapValues:G,mapValuesLimit:lt,mapValuesSeries:K,memoize:X,nextTick:dt,parallel:H,parallelLimit:Z,priorityQueue:J,queue:$,race:ut,reduce:Ve,reduceRight:ee,reflect:te,reflectAll:ne,reject:ot,rejectLimit:ft,rejectSeries:pt,retry:re,retryable:le,seq:w,series:de,setImmediate:ve,some:mt,someLimit:gt,someSeries:kt,sortBy:St,timeout:ce,times:fe,timesLimit:oe,timesSeries:pe,transform:he,tryEach:vt,unmemoize:ye,until:me,waterfall:xt,whilst:Lt,all:$e,allLimit:Je,allSeries:et,any:mt,anyLimit:gt,anySeries:kt,find:De,findLimit:Ue,findSeries:We,forEach:Xe,forEachSeries:Ze,forEachLimit:He,forEachOf:Oe,forEachOfSeries:je,forEachOfLimit:Ee,inject:Ve,foldl:Ve,foldr:ee,select:tt,selectLimit:nt,selectSeries:it,wrapSync:r,during:Lt,doDuring:Ke},e.apply=t,e.applyEach=_e,e.applyEachSeries=Ae,e.asyncify=r,e.auto=j,e.autoInject=A,e.cargo=F,e.cargoQueue=T,e.compose=P,e.concat=Qe,e.concatLimit=Ce,e.concatSeries=Ne,e.constant=z,e.detect=De,e.detectLimit=Ue,e.detectSeries=We,e.dir=Ge,e.doUntil=V,e.doWhilst=Ke,e.each=Xe,e.eachLimit=He,e.eachOf=Oe,e.eachOfLimit=Ee,e.eachOfSeries=je,e.eachSeries=Ze,e.ensureAsync=C,e.every=$e,e.everyLimit=Je,e.everySeries=et,e.filter=tt,e.filterLimit=nt,e.filterSeries=it,e.forever=at,e.groupBy=U,e.groupByLimit=rt,e.groupBySeries=W,e.log=st,e.map=be,e.mapLimit=qe,e.mapSeries=Ie,e.mapValues=G,e.mapValuesLimit=lt,e.mapValuesSeries=K,e.memoize=X,e.nextTick=dt,e.parallel=H,e.parallelLimit=Z,e.priorityQueue=J,e.queue=$,e.race=ut,e.reduce=Ve,e.reduceRight=ee,e.reflect=te,e.reflectAll=ne,e.reject=ot,e.rejectLimit=ft,e.rejectSeries=pt,e.retry=re,e.retryable=le,e.seq=w,e.series=de,e.setImmediate=ve,e.some=mt,e.someLimit=gt,e.someSeries=kt,e.sortBy=St,e.timeout=ce,e.times=fe,e.timesLimit=oe,e.timesSeries=pe,e.transform=he,e.tryEach=vt,e.unmemoize=ye,e.until=me,e.waterfall=xt,e.whilst=Lt,e.all=$e,e.allLimit=Je,e.allSeries=et,e.any=mt,e.anyLimit=gt,e.anySeries=kt,e.find=De,e.findLimit=Ue,e.findSeries=We,e.forEach=Xe,e.forEachSeries=Ze,e.forEachLimit=He,e.forEachOf=Oe,e.forEachOfSeries=je,e.forEachOfLimit=Ee,e.inject=Ve,e.foldl=Ve,e.foldr=ee,e.select=tt,e.selectLimit=nt,e.selectSeries=it,e.wrapSync=r,e.during=Lt,e.doDuring=Ke,Object.defineProperty(e,"__esModule",{value:!0})});

@@ -6,12 +6,3 @@ 'use strict';

});
exports.default = doDuring;
var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _slice = require('./internal/slice');
var _slice2 = _interopRequireDefault(_slice);
var _onlyOnce = require('./internal/onlyOnce');

@@ -25,44 +16,55 @@

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* The post-check version of [`during`]{@link module:ControlFlow.during}. To reflect the difference in
* the order of operations, the arguments `test` and `fn` are switched.
* The post-check version of [`whilst`]{@link module:ControlFlow.whilst}. To reflect the difference in
* the order of operations, the arguments `test` and `iteratee` are switched.
*
* Also a version of [`doWhilst`]{@link module:ControlFlow.doWhilst} with asynchronous `test` function.
* @name doDuring
* `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.
*
* @name doWhilst
* @static
* @memberOf module:ControlFlow
* @method
* @see [async.during]{@link module:ControlFlow.during}
* @see [async.whilst]{@link module:ControlFlow.whilst}
* @category Control Flow
* @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 {AsyncFunction} iteratee - A function which is called each time `test`
* passes. Invoked with (callback).
* @param {AsyncFunction} test - asynchronous truth test to perform after each
* execution of `iteratee`. Invoked with (...args, callback), where `...args` are the
* non-error args from the previous callback of `iteratee`.
* @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 occurred, otherwise `null`.
* 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 callback. Invoked with (err, [results]);
* @returns {Promise} a promise, if no callback is passed
*/
function doDuring(fn, test, callback) {
callback = (0, _onlyOnce2.default)(callback || _noop2.default);
var _fn = (0, _wrapAsync2.default)(fn);
function doWhilst(iteratee, test, callback) {
callback = (0, _onlyOnce2.default)(callback);
var _fn = (0, _wrapAsync2.default)(iteratee);
var _test = (0, _wrapAsync2.default)(test);
var results;
function next(err /*, ...args*/) {
function next(err, ...args) {
if (err) return callback(err);
var args = (0, _slice2.default)(arguments, 1);
args.push(check);
_test.apply(this, args);
};
if (err === false) return;
results = args;
_test(...args, check);
}
function check(err, truth) {
if (err) return callback(err);
if (!truth) return callback(null);
if (err === false) return;
if (!truth) return callback(null, ...results);
_fn(next);
}
check(null, true);
return check(null, true);
}
exports.default = (0, _awaitify2.default)(doWhilst, 3);
module.exports = exports['default'];

@@ -12,2 +12,6 @@ 'use strict';

var _wrapAsync = require('./internal/wrapAsync');
var _wrapAsync2 = _interopRequireDefault(_wrapAsync);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -27,5 +31,5 @@

* `test` fails. Invoked with (callback).
* @param {Function} test - synchronous truth test to perform after each
* execution of `iteratee`. Invoked with any non-error callback results of
* `iteratee`.
* @param {AsyncFunction} test - asynchronous truth test to perform after each
* execution of `iteratee`. Invoked with (...args, callback), where `...args` are the
* non-error args from the previous callback of `iteratee`
* @param {Function} [callback] - A callback which is called after the test

@@ -35,8 +39,11 @@ * function has passed and repeated execution of `iteratee` has stopped. `callback`

* callback. Invoked with (err, [results]);
* @returns {Promise} a promise, if no callback is passed
*/
function doUntil(iteratee, test, callback) {
(0, _doWhilst2.default)(iteratee, function () {
return !test.apply(this, arguments);
const _test = (0, _wrapAsync2.default)(test);
return (0, _doWhilst2.default)(iteratee, (...args) => {
const cb = args.pop();
_test(...args, (err, truth) => cb(err, !truth));
}, callback);
}
module.exports = exports['default'];

@@ -6,12 +6,3 @@ 'use strict';

});
exports.default = doWhilst;
var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _slice = require('./internal/slice');
var _slice2 = _interopRequireDefault(_slice);
var _onlyOnce = require('./internal/onlyOnce');

@@ -25,2 +16,6 @@

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -42,5 +37,5 @@

* passes. Invoked with (callback).
* @param {Function} test - synchronous truth test to perform after each
* execution of `iteratee`. Invoked with any non-error callback results of
* `iteratee`.
* @param {AsyncFunction} test - asynchronous truth test to perform after each
* execution of `iteratee`. Invoked with (...args, callback), where `...args` are the
* non-error args from the previous callback of `iteratee`.
* @param {Function} [callback] - A callback which is called after the test

@@ -50,14 +45,28 @@ * function has failed and repeated execution of `iteratee` has stopped.

* `iteratee`'s callback. Invoked with (err, [results]);
* @returns {Promise} a promise, if no callback is passed
*/
function doWhilst(iteratee, test, callback) {
callback = (0, _onlyOnce2.default)(callback || _noop2.default);
var _iteratee = (0, _wrapAsync2.default)(iteratee);
var next = function (err /*, ...args*/) {
callback = (0, _onlyOnce2.default)(callback);
var _fn = (0, _wrapAsync2.default)(iteratee);
var _test = (0, _wrapAsync2.default)(test);
var results;
function next(err, ...args) {
if (err) return callback(err);
var args = (0, _slice2.default)(arguments, 1);
if (test.apply(this, args)) return _iteratee(next);
callback.apply(null, [null].concat(args));
};
_iteratee(next);
if (err === false) return;
results = args;
_test(...args, check);
}
function check(err, truth) {
if (err) return callback(err);
if (err === false) return;
if (!truth) return callback(null, ...results);
_fn(next);
}
return check(null, true);
}
exports.default = (0, _awaitify2.default)(doWhilst, 3);
module.exports = exports['default'];

@@ -6,8 +6,3 @@ 'use strict';

});
exports.default = during;
var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _onlyOnce = require('./internal/onlyOnce');

@@ -21,47 +16,52 @@

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Like [`whilst`]{@link module:ControlFlow.whilst}, except the `test` is an asynchronous function that
* is passed a callback in the form of `function (err, truth)`. If error is
* passed to `test` or `fn`, the main callback is immediately called with the
* value of the error.
* Repeatedly call `iteratee`, while `test` returns `true`. Calls `callback` when
* stopped, or an error occurs.
*
* @name during
* @name whilst
* @static
* @memberOf module:ControlFlow
* @method
* @see [async.whilst]{@link module:ControlFlow.whilst}
* @category Control Flow
* @param {AsyncFunction} test - asynchronous truth test to perform before each
* execution of `fn`. Invoked with (callback).
* @param {AsyncFunction} fn - An async function which is called each time
* execution of `iteratee`. Invoked with ().
* @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 `fn` has stopped. `callback`
* will be passed an error, if one occurred, otherwise `null`.
* 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
* callback. Invoked with (err, [results]);
* @returns {Promise} a promise, if no callback is passed
* @example
*
* var count = 0;
*
* async.during(
* function (callback) {
* return callback(null, count < 5);
* },
* function (callback) {
* async.whilst(
* function test(cb) { cb(null, count < 5;) },
* function iter(callback) {
* count++;
* setTimeout(callback, 1000);
* setTimeout(function() {
* callback(null, count);
* }, 1000);
* },
* function (err) {
* // 5 seconds have passed
* function (err, n) {
* // 5 seconds have passed, n = 5
* }
* );
*/
function during(test, fn, callback) {
callback = (0, _onlyOnce2.default)(callback || _noop2.default);
var _fn = (0, _wrapAsync2.default)(fn);
function whilst(test, iteratee, callback) {
callback = (0, _onlyOnce2.default)(callback);
var _fn = (0, _wrapAsync2.default)(iteratee);
var _test = (0, _wrapAsync2.default)(test);
var results;
function next(err) {
function next(err, ...rest) {
if (err) return callback(err);
results = rest;
if (err === false) return;
_test(check);

@@ -72,8 +72,10 @@ }

if (err) return callback(err);
if (!truth) return callback(null);
if (err === false) return;
if (!truth) return callback(null, ...results);
_fn(next);
}
_test(check);
return _test(check);
}
exports.default = (0, _awaitify2.default)(whilst, 3);
module.exports = exports['default'];

@@ -6,3 +6,2 @@ 'use strict';

});
exports.default = eachLimit;

@@ -21,2 +20,6 @@ var _eachOf = require('./eachOf');

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -40,3 +43,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async function to apply to

@@ -48,2 +51,3 @@ * each item in `coll`. Invoked with (item, callback).

* `iteratee` functions have finished, or an error occurs. Invoked with (err).
* @returns {Promise} a promise, if a callback is omitted
* @example

@@ -84,4 +88,6 @@ *

function eachLimit(coll, iteratee, callback) {
(0, _eachOf2.default)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback);
return (0, _eachOf2.default)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback);
}
exports.default = (0, _awaitify2.default)(eachLimit, 3);
module.exports = exports['default'];

@@ -6,3 +6,2 @@ 'use strict';

});
exports.default = eachLimit;

@@ -21,2 +20,6 @@ var _eachOfLimit = require('./internal/eachOfLimit');

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -34,3 +37,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.

@@ -44,6 +47,8 @@ * @param {AsyncFunction} iteratee - An async function to apply to each item in

* `iteratee` functions have finished, or an error occurs. Invoked with (err).
* @returns {Promise} a promise, if a callback is omitted
*/
function eachLimit(coll, limit, iteratee, callback) {
(0, _eachOfLimit2.default)(limit)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback);
return (0, _eachOfLimit2.default)(limit)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback);
}
exports.default = (0, _awaitify2.default)(eachLimit, 4);
module.exports = exports['default'];

@@ -7,9 +7,4 @@ 'use strict';

exports.default = function (coll, iteratee, callback) {
var eachOfImplementation = (0, _isArrayLike2.default)(coll) ? eachOfArrayLike : eachOfGeneric;
eachOfImplementation(coll, (0, _wrapAsync2.default)(iteratee), callback);
};
var _isArrayLike = require('./internal/isArrayLike');
var _isArrayLike = require('lodash/isArrayLike');
var _isArrayLike2 = _interopRequireDefault(_isArrayLike);

@@ -25,10 +20,2 @@

var _doLimit = require('./internal/doLimit');
var _doLimit2 = _interopRequireDefault(_doLimit);
var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _once = require('./internal/once');

@@ -46,2 +33,6 @@

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -51,6 +42,7 @@

function eachOfArrayLike(coll, iteratee, callback) {
callback = (0, _once2.default)(callback || _noop2.default);
callback = (0, _once2.default)(callback);
var index = 0,
completed = 0,
length = coll.length;
{ length } = coll,
canceled = false;
if (length === 0) {

@@ -61,2 +53,6 @@ callback(null);

function iteratorCallback(err, value) {
if (err === false) {
canceled = true;
}
if (canceled === true) return;
if (err) {

@@ -75,3 +71,5 @@ callback(err);

// a generic version of eachOf which can handle array, object, and iterator cases.
var eachOfGeneric = (0, _doLimit2.default)(_eachOfLimit2.default, Infinity);
function eachOfGeneric(coll, iteratee, callback) {
return (0, _eachOfLimit2.default)(coll, Infinity, iteratee, callback);
}

@@ -89,3 +87,3 @@ /**

* @see [async.each]{@link module:Collections.each}
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - A function to apply to each

@@ -97,2 +95,3 @@ * item in `coll`.

* `iteratee` functions have finished, or an error occurs. Invoked with (err).
* @returns {Promise} a promise, if a callback is omitted
* @example

@@ -119,2 +118,8 @@ *

*/
function eachOf(coll, iteratee, callback) {
var eachOfImplementation = (0, _isArrayLike2.default)(coll) ? eachOfArrayLike : eachOfGeneric;
return eachOfImplementation(coll, (0, _wrapAsync2.default)(iteratee), callback);
}
exports.default = (0, _awaitify2.default)(eachOf, 3);
module.exports = exports['default'];

@@ -6,3 +6,2 @@ 'use strict';

});
exports.default = eachOfLimit;

@@ -17,2 +16,6 @@ var _eachOfLimit2 = require('./internal/eachOfLimit');

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -31,3 +34,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.

@@ -40,6 +43,9 @@ * @param {AsyncFunction} iteratee - An async function to apply to each

* `iteratee` functions have finished, or an error occurs. Invoked with (err).
* @returns {Promise} a promise, if a callback is omitted
*/
function eachOfLimit(coll, limit, iteratee, callback) {
(0, _eachOfLimit3.default)(limit)(coll, (0, _wrapAsync2.default)(iteratee), callback);
return (0, _eachOfLimit3.default)(limit)(coll, (0, _wrapAsync2.default)(iteratee), callback);
}
exports.default = (0, _awaitify2.default)(eachOfLimit, 4);
module.exports = exports['default'];

@@ -11,5 +11,5 @@ 'use strict';

var _doLimit = require('./internal/doLimit');
var _awaitify = require('./internal/awaitify');
var _doLimit2 = _interopRequireDefault(_doLimit);
var _awaitify2 = _interopRequireDefault(_awaitify);

@@ -28,3 +28,3 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async function to apply to each item in

@@ -35,4 +35,8 @@ * `coll`.

* functions have finished, or an error occurs. Invoked with (err).
* @returns {Promise} a promise, if a callback is omitted
*/
exports.default = (0, _doLimit2.default)(_eachOfLimit2.default, 1);
function eachOfSeries(coll, iteratee, callback) {
return (0, _eachOfLimit2.default)(coll, 1, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(eachOfSeries, 3);
module.exports = exports['default'];

@@ -11,5 +11,5 @@ 'use strict';

var _doLimit = require('./internal/doLimit');
var _awaitify = require('./internal/awaitify');
var _doLimit2 = _interopRequireDefault(_doLimit);
var _awaitify2 = _interopRequireDefault(_awaitify);

@@ -28,3 +28,3 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async function to apply to each

@@ -37,4 +37,8 @@ * item in `coll`.

* `iteratee` functions have finished, or an error occurs. Invoked with (err).
* @returns {Promise} a promise, if a callback is omitted
*/
exports.default = (0, _doLimit2.default)(_eachLimit2.default, 1);
function eachSeries(coll, iteratee, callback) {
return (0, _eachLimit2.default)(coll, 1, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(eachSeries, 3);
module.exports = exports['default'];

@@ -12,6 +12,2 @@ 'use strict';

var _initialParams = require('./internal/initialParams');
var _initialParams2 = _interopRequireDefault(_initialParams);
var _wrapAsync = require('./internal/wrapAsync');

@@ -58,12 +54,10 @@

if ((0, _wrapAsync.isAsync)(fn)) return fn;
return (0, _initialParams2.default)(function (args, callback) {
return function (...args /*, callback*/) {
var callback = args.pop();
var sync = true;
args.push(function () {
var innerArgs = arguments;
args.push((...innerArgs) => {
if (sync) {
(0, _setImmediate2.default)(function () {
callback.apply(null, innerArgs);
});
(0, _setImmediate2.default)(() => callback(...innerArgs));
} else {
callback.apply(null, innerArgs);
callback(...innerArgs);
}

@@ -73,4 +67,4 @@ });

sync = false;
});
};
}
module.exports = exports['default'];

@@ -11,9 +11,9 @@ 'use strict';

var _doParallel = require('./internal/doParallel');
var _eachOf = require('./eachOf');
var _doParallel2 = _interopRequireDefault(_doParallel);
var _eachOf2 = _interopRequireDefault(_eachOf);
var _notId = require('./internal/notId');
var _awaitify = require('./internal/awaitify');
var _notId2 = _interopRequireDefault(_notId);
var _awaitify2 = _interopRequireDefault(_awaitify);

@@ -32,3 +32,3 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async truth test to apply to each item

@@ -41,2 +41,3 @@ * in the collection in parallel.

* depending on the values of the async tests. Invoked with (err, result).
* @returns {Promise} a promise, if no callback provided
* @example

@@ -52,3 +53,6 @@ *

*/
exports.default = (0, _doParallel2.default)((0, _createTester2.default)(_notId2.default, _notId2.default));
function every(coll, iteratee, callback) {
return (0, _createTester2.default)(bool => !bool, res => !res)(_eachOf2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(every, 3);
module.exports = exports['default'];

@@ -11,9 +11,9 @@ 'use strict';

var _doParallelLimit = require('./internal/doParallelLimit');
var _eachOfLimit = require('./internal/eachOfLimit');
var _doParallelLimit2 = _interopRequireDefault(_doParallelLimit);
var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);
var _notId = require('./internal/notId');
var _awaitify = require('./internal/awaitify');
var _notId2 = _interopRequireDefault(_notId);
var _awaitify2 = _interopRequireDefault(_awaitify);

@@ -32,3 +32,3 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.

@@ -42,4 +42,8 @@ * @param {AsyncFunction} iteratee - An async truth test to apply to each item

* depending on the values of the async tests. Invoked with (err, result).
* @returns {Promise} a promise, if no callback provided
*/
exports.default = (0, _doParallelLimit2.default)((0, _createTester2.default)(_notId2.default, _notId2.default));
function everyLimit(coll, limit, iteratee, callback) {
return (0, _createTester2.default)(bool => !bool, res => !res)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(everyLimit, 4);
module.exports = exports['default'];

@@ -7,10 +7,14 @@ 'use strict';

var _everyLimit = require('./everyLimit');
var _createTester = require('./internal/createTester');
var _everyLimit2 = _interopRequireDefault(_everyLimit);
var _createTester2 = _interopRequireDefault(_createTester);
var _doLimit = require('./internal/doLimit');
var _eachOfSeries = require('./eachOfSeries');
var _doLimit2 = _interopRequireDefault(_doLimit);
var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries);
var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -28,3 +32,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async truth test to apply to each item

@@ -37,4 +41,8 @@ * in the collection in series.

* depending on the values of the async tests. Invoked with (err, result).
* @returns {Promise} a promise, if no callback provided
*/
exports.default = (0, _doLimit2.default)(_everyLimit2.default, 1);
function everySeries(coll, iteratee, callback) {
return (0, _createTester2.default)(bool => !bool, res => !res)(_eachOfSeries2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(everySeries, 3);
module.exports = exports['default'];

@@ -7,10 +7,14 @@ 'use strict';

var _filter = require('./internal/filter');
var _filter2 = require('./internal/filter');
var _filter2 = _interopRequireDefault(_filter);
var _filter3 = _interopRequireDefault(_filter2);
var _doParallel = require('./internal/doParallel');
var _eachOf = require('./eachOf');
var _doParallel2 = _interopRequireDefault(_doParallel);
var _eachOf2 = _interopRequireDefault(_eachOf);
var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -29,3 +33,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {Function} iteratee - A truth test to apply to each item in `coll`.

@@ -36,2 +40,3 @@ * The `iteratee` is passed a `callback(err, truthValue)`, which must be called

* `iteratee` functions have finished. Invoked with (err, results).
* @returns {Promise} a promise, if no callback provided
* @example

@@ -47,3 +52,6 @@ *

*/
exports.default = (0, _doParallel2.default)(_filter2.default);
function filter(coll, iteratee, callback) {
return (0, _filter3.default)(_eachOf2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(filter, 3);
module.exports = exports['default'];

@@ -7,10 +7,14 @@ 'use strict';

var _filterLimit = require('./filterLimit');
var _filter2 = require('./internal/filter');
var _filterLimit2 = _interopRequireDefault(_filterLimit);
var _filter3 = _interopRequireDefault(_filter2);
var _doLimit = require('./internal/doLimit');
var _eachOfSeries = require('./eachOfSeries');
var _doLimit2 = _interopRequireDefault(_doLimit);
var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries);
var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -28,3 +32,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {Function} iteratee - A truth test to apply to each item in `coll`.

@@ -35,4 +39,8 @@ * The `iteratee` is passed a `callback(err, truthValue)`, which must be called

* `iteratee` functions have finished. Invoked with (err, results)
* @returns {Promise} a promise, if no callback provided
*/
exports.default = (0, _doLimit2.default)(_filterLimit2.default, 1);
function filterSeries(coll, iteratee, callback) {
return (0, _filter3.default)(_eachOfSeries2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(filterSeries, 3);
module.exports = exports['default'];

@@ -7,6 +7,2 @@ 'use strict';

var _identity = require('lodash/identity');
var _identity2 = _interopRequireDefault(_identity);
var _createTester = require('./internal/createTester');

@@ -16,9 +12,9 @@

var _doParallel = require('./internal/doParallel');
var _eachOf = require('./eachOf');
var _doParallel2 = _interopRequireDefault(_doParallel);
var _eachOf2 = _interopRequireDefault(_eachOf);
var _findGetResult = require('./internal/findGetResult');
var _awaitify = require('./internal/awaitify');
var _findGetResult2 = _interopRequireDefault(_findGetResult);
var _awaitify2 = _interopRequireDefault(_awaitify);

@@ -43,3 +39,3 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

* @category Collections
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.

@@ -53,2 +49,3 @@ * The iteratee must complete with a boolean value as its result.

* (err, result).
* @returns A Promise, if no callback is passed
* @example

@@ -64,3 +61,6 @@ *

*/
exports.default = (0, _doParallel2.default)((0, _createTester2.default)(_identity2.default, _findGetResult2.default));
function detect(coll, iteratee, callback) {
return (0, _createTester2.default)(bool => bool, (res, item) => item)(_eachOf2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(detect, 3);
module.exports = exports['default'];

@@ -7,6 +7,2 @@ 'use strict';

var _identity = require('lodash/identity');
var _identity2 = _interopRequireDefault(_identity);
var _createTester = require('./internal/createTester');

@@ -16,9 +12,9 @@

var _doParallelLimit = require('./internal/doParallelLimit');
var _eachOfLimit = require('./internal/eachOfLimit');
var _doParallelLimit2 = _interopRequireDefault(_doParallelLimit);
var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);
var _findGetResult = require('./internal/findGetResult');
var _awaitify = require('./internal/awaitify');
var _findGetResult2 = _interopRequireDefault(_findGetResult);
var _awaitify2 = _interopRequireDefault(_awaitify);

@@ -38,3 +34,3 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

* @category Collections
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.

@@ -49,4 +45,8 @@ * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.

* (err, result).
* @returns a Promise if no callback is passed
*/
exports.default = (0, _doParallelLimit2.default)((0, _createTester2.default)(_identity2.default, _findGetResult2.default));
function detectLimit(coll, limit, iteratee, callback) {
return (0, _createTester2.default)(bool => bool, (res, item) => item)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(detectLimit, 4);
module.exports = exports['default'];

@@ -7,10 +7,14 @@ 'use strict';

var _detectLimit = require('./detectLimit');
var _createTester = require('./internal/createTester');
var _detectLimit2 = _interopRequireDefault(_detectLimit);
var _createTester2 = _interopRequireDefault(_createTester);
var _doLimit = require('./internal/doLimit');
var _eachOfLimit = require('./internal/eachOfLimit');
var _doLimit2 = _interopRequireDefault(_doLimit);
var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);
var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -28,3 +32,3 @@

* @category Collections
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.

@@ -38,4 +42,9 @@ * The iteratee must complete with a boolean value as its result.

* (err, result).
* @returns a Promise if no callback is passed
*/
exports.default = (0, _doLimit2.default)(_detectLimit2.default, 1);
function detectSeries(coll, iteratee, callback) {
return (0, _createTester2.default)(bool => bool, (res, item) => item)((0, _eachOfLimit2.default)(1), coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(detectSeries, 3);
module.exports = exports['default'];

@@ -6,3 +6,2 @@ 'use strict';

});
exports.default = reduce;

@@ -13,6 +12,2 @@ var _eachOfSeries = require('./eachOfSeries');

var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _once = require('./internal/once');

@@ -26,2 +21,6 @@

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -47,3 +46,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {*} memo - The initial state of the reduction.

@@ -59,2 +58,3 @@ * @param {AsyncFunction} iteratee - A function applied to each item in the

* (err, result).
* @returns {Promise} a promise, if no callback is passed
* @example

@@ -72,13 +72,12 @@ *

function reduce(coll, memo, iteratee, callback) {
callback = (0, _once2.default)(callback || _noop2.default);
callback = (0, _once2.default)(callback);
var _iteratee = (0, _wrapAsync2.default)(iteratee);
(0, _eachOfSeries2.default)(coll, function (x, i, callback) {
_iteratee(memo, x, function (err, v) {
return (0, _eachOfSeries2.default)(coll, (x, i, iterCb) => {
_iteratee(memo, x, (err, v) => {
memo = v;
callback(err);
iterCb(err);
});
}, function (err) {
callback(err, memo);
});
}, err => callback(err, memo));
}
exports.default = (0, _awaitify2.default)(reduce, 4);
module.exports = exports['default'];

@@ -12,6 +12,2 @@ 'use strict';

var _slice = require('./internal/slice');
var _slice2 = _interopRequireDefault(_slice);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -40,7 +36,8 @@

* (err, result).
* @returns {Promise} a promise, if no callback is passed
*/
function reduceRight(array, memo, iteratee, callback) {
var reversed = (0, _slice2.default)(array).reverse();
(0, _reduce2.default)(reversed, memo, iteratee, callback);
var reversed = [...array].reverse();
return (0, _reduce2.default)(reversed, memo, iteratee, callback);
}
module.exports = exports['default'];

@@ -6,3 +6,2 @@ 'use strict';

});
exports.default = eachLimit;

@@ -21,2 +20,6 @@ var _eachOf = require('./eachOf');

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -40,3 +43,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async function to apply to

@@ -48,2 +51,3 @@ * each item in `coll`. Invoked with (item, callback).

* `iteratee` functions have finished, or an error occurs. Invoked with (err).
* @returns {Promise} a promise, if a callback is omitted
* @example

@@ -84,4 +88,6 @@ *

function eachLimit(coll, iteratee, callback) {
(0, _eachOf2.default)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback);
return (0, _eachOf2.default)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback);
}
exports.default = (0, _awaitify2.default)(eachLimit, 3);
module.exports = exports['default'];

@@ -6,3 +6,2 @@ 'use strict';

});
exports.default = eachLimit;

@@ -21,2 +20,6 @@ var _eachOfLimit = require('./internal/eachOfLimit');

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -34,3 +37,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.

@@ -44,6 +47,8 @@ * @param {AsyncFunction} iteratee - An async function to apply to each item in

* `iteratee` functions have finished, or an error occurs. Invoked with (err).
* @returns {Promise} a promise, if a callback is omitted
*/
function eachLimit(coll, limit, iteratee, callback) {
(0, _eachOfLimit2.default)(limit)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback);
return (0, _eachOfLimit2.default)(limit)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback);
}
exports.default = (0, _awaitify2.default)(eachLimit, 4);
module.exports = exports['default'];

@@ -7,9 +7,4 @@ 'use strict';

exports.default = function (coll, iteratee, callback) {
var eachOfImplementation = (0, _isArrayLike2.default)(coll) ? eachOfArrayLike : eachOfGeneric;
eachOfImplementation(coll, (0, _wrapAsync2.default)(iteratee), callback);
};
var _isArrayLike = require('./internal/isArrayLike');
var _isArrayLike = require('lodash/isArrayLike');
var _isArrayLike2 = _interopRequireDefault(_isArrayLike);

@@ -25,10 +20,2 @@

var _doLimit = require('./internal/doLimit');
var _doLimit2 = _interopRequireDefault(_doLimit);
var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _once = require('./internal/once');

@@ -46,2 +33,6 @@

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -51,6 +42,7 @@

function eachOfArrayLike(coll, iteratee, callback) {
callback = (0, _once2.default)(callback || _noop2.default);
callback = (0, _once2.default)(callback);
var index = 0,
completed = 0,
length = coll.length;
{ length } = coll,
canceled = false;
if (length === 0) {

@@ -61,2 +53,6 @@ callback(null);

function iteratorCallback(err, value) {
if (err === false) {
canceled = true;
}
if (canceled === true) return;
if (err) {

@@ -75,3 +71,5 @@ callback(err);

// a generic version of eachOf which can handle array, object, and iterator cases.
var eachOfGeneric = (0, _doLimit2.default)(_eachOfLimit2.default, Infinity);
function eachOfGeneric(coll, iteratee, callback) {
return (0, _eachOfLimit2.default)(coll, Infinity, iteratee, callback);
}

@@ -89,3 +87,3 @@ /**

* @see [async.each]{@link module:Collections.each}
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - A function to apply to each

@@ -97,2 +95,3 @@ * item in `coll`.

* `iteratee` functions have finished, or an error occurs. Invoked with (err).
* @returns {Promise} a promise, if a callback is omitted
* @example

@@ -119,2 +118,8 @@ *

*/
function eachOf(coll, iteratee, callback) {
var eachOfImplementation = (0, _isArrayLike2.default)(coll) ? eachOfArrayLike : eachOfGeneric;
return eachOfImplementation(coll, (0, _wrapAsync2.default)(iteratee), callback);
}
exports.default = (0, _awaitify2.default)(eachOf, 3);
module.exports = exports['default'];

@@ -6,3 +6,2 @@ 'use strict';

});
exports.default = eachOfLimit;

@@ -17,2 +16,6 @@ var _eachOfLimit2 = require('./internal/eachOfLimit');

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -31,3 +34,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.

@@ -40,6 +43,9 @@ * @param {AsyncFunction} iteratee - An async function to apply to each

* `iteratee` functions have finished, or an error occurs. Invoked with (err).
* @returns {Promise} a promise, if a callback is omitted
*/
function eachOfLimit(coll, limit, iteratee, callback) {
(0, _eachOfLimit3.default)(limit)(coll, (0, _wrapAsync2.default)(iteratee), callback);
return (0, _eachOfLimit3.default)(limit)(coll, (0, _wrapAsync2.default)(iteratee), callback);
}
exports.default = (0, _awaitify2.default)(eachOfLimit, 4);
module.exports = exports['default'];

@@ -11,5 +11,5 @@ 'use strict';

var _doLimit = require('./internal/doLimit');
var _awaitify = require('./internal/awaitify');
var _doLimit2 = _interopRequireDefault(_doLimit);
var _awaitify2 = _interopRequireDefault(_awaitify);

@@ -28,3 +28,3 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async function to apply to each item in

@@ -35,4 +35,8 @@ * `coll`.

* functions have finished, or an error occurs. Invoked with (err).
* @returns {Promise} a promise, if a callback is omitted
*/
exports.default = (0, _doLimit2.default)(_eachOfLimit2.default, 1);
function eachOfSeries(coll, iteratee, callback) {
return (0, _eachOfLimit2.default)(coll, 1, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(eachOfSeries, 3);
module.exports = exports['default'];

@@ -11,5 +11,5 @@ 'use strict';

var _doLimit = require('./internal/doLimit');
var _awaitify = require('./internal/awaitify');
var _doLimit2 = _interopRequireDefault(_doLimit);
var _awaitify2 = _interopRequireDefault(_awaitify);

@@ -28,3 +28,3 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async function to apply to each

@@ -37,4 +37,8 @@ * item in `coll`.

* `iteratee` functions have finished, or an error occurs. Invoked with (err).
* @returns {Promise} a promise, if a callback is omitted
*/
exports.default = (0, _doLimit2.default)(_eachLimit2.default, 1);
function eachSeries(coll, iteratee, callback) {
return (0, _eachLimit2.default)(coll, 1, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(eachSeries, 3);
module.exports = exports['default'];

@@ -6,8 +6,3 @@ 'use strict';

});
exports.default = forever;
var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _onlyOnce = require('./internal/onlyOnce');

@@ -25,2 +20,6 @@

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -44,2 +43,4 @@

* this function will be called, and execution stops. Invoked with (err).
* @returns {Promise} a promise that rejects if an error occurs and an errback
* is not passed
* @example

@@ -59,3 +60,3 @@ *

function forever(fn, errback) {
var done = (0, _onlyOnce2.default)(errback || _noop2.default);
var done = (0, _onlyOnce2.default)(errback);
var task = (0, _wrapAsync2.default)((0, _ensureAsync2.default)(fn));

@@ -65,6 +66,8 @@

if (err) return done(err);
if (err === false) return;
task(next);
}
next();
return next();
}
exports.default = (0, _awaitify2.default)(forever, 2);
module.exports = exports['default'];

@@ -6,7 +6,4 @@ 'use strict';

});
exports.default = groupBy;
var _doLimit = require('./internal/doLimit');
var _doLimit2 = _interopRequireDefault(_doLimit);
var _groupByLimit = require('./groupByLimit');

@@ -34,3 +31,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async function to apply to each item in

@@ -43,2 +40,3 @@ * `coll`.

* properties are arrays of values which returned the corresponding key.
* @returns {Promise} a promise, if no callback is passed
* @example

@@ -56,3 +54,5 @@ *

*/
exports.default = (0, _doLimit2.default)(_groupByLimit2.default, Infinity);
function groupBy(coll, iteratee, callback) {
return (0, _groupByLimit2.default)(coll, Infinity, iteratee, callback);
}
module.exports = exports['default'];

@@ -6,3 +6,3 @@ 'use strict';

});
exports.wrapSync = exports.selectSeries = exports.selectLimit = exports.select = exports.foldr = exports.foldl = exports.inject = exports.forEachOfLimit = exports.forEachOfSeries = exports.forEachOf = exports.forEachLimit = exports.forEachSeries = exports.forEach = exports.findSeries = exports.findLimit = exports.find = exports.anySeries = exports.anyLimit = exports.any = exports.allSeries = exports.allLimit = exports.all = exports.whilst = exports.waterfall = exports.until = exports.unmemoize = exports.tryEach = exports.transform = exports.timesSeries = exports.timesLimit = exports.times = exports.timeout = exports.sortBy = exports.someSeries = exports.someLimit = exports.some = exports.setImmediate = exports.series = exports.seq = exports.retryable = exports.retry = exports.rejectSeries = exports.rejectLimit = exports.reject = exports.reflectAll = exports.reflect = exports.reduceRight = exports.reduce = exports.race = exports.queue = exports.priorityQueue = exports.parallelLimit = exports.parallel = exports.nextTick = exports.memoize = exports.mapValuesSeries = exports.mapValuesLimit = exports.mapValues = exports.mapSeries = exports.mapLimit = exports.map = exports.log = exports.groupBySeries = exports.groupByLimit = exports.groupBy = exports.forever = exports.filterSeries = exports.filterLimit = exports.filter = exports.everySeries = exports.everyLimit = exports.every = exports.ensureAsync = exports.eachSeries = exports.eachOfSeries = exports.eachOfLimit = exports.eachOf = exports.eachLimit = exports.each = exports.during = exports.doWhilst = exports.doUntil = exports.doDuring = exports.dir = exports.detectSeries = exports.detectLimit = exports.detect = exports.constant = exports.concatSeries = exports.concatLimit = exports.concat = exports.compose = exports.cargo = exports.autoInject = exports.auto = exports.asyncify = exports.applyEachSeries = exports.applyEach = exports.apply = undefined;
exports.doDuring = exports.during = exports.wrapSync = exports.selectSeries = exports.selectLimit = exports.select = exports.foldr = exports.foldl = exports.inject = exports.forEachOfLimit = exports.forEachOfSeries = exports.forEachOf = exports.forEachLimit = exports.forEachSeries = exports.forEach = exports.findSeries = exports.findLimit = exports.find = exports.anySeries = exports.anyLimit = exports.any = exports.allSeries = exports.allLimit = exports.all = exports.whilst = exports.waterfall = exports.until = exports.unmemoize = exports.tryEach = exports.transform = exports.timesSeries = exports.timesLimit = exports.times = exports.timeout = exports.sortBy = exports.someSeries = exports.someLimit = exports.some = exports.setImmediate = exports.series = exports.seq = exports.retryable = exports.retry = exports.rejectSeries = exports.rejectLimit = exports.reject = exports.reflectAll = exports.reflect = exports.reduceRight = exports.reduce = exports.race = exports.queue = exports.priorityQueue = exports.parallelLimit = exports.parallel = exports.nextTick = exports.memoize = exports.mapValuesSeries = exports.mapValuesLimit = exports.mapValues = exports.mapSeries = exports.mapLimit = exports.map = exports.log = exports.groupBySeries = exports.groupByLimit = exports.groupBy = exports.forever = exports.filterSeries = exports.filterLimit = exports.filter = exports.everySeries = exports.everyLimit = exports.every = exports.ensureAsync = exports.eachSeries = exports.eachOfSeries = exports.eachOfLimit = exports.eachOf = exports.eachLimit = exports.each = exports.doWhilst = exports.doUntil = exports.dir = exports.detectSeries = exports.detectLimit = exports.detect = exports.constant = exports.concatSeries = exports.concatLimit = exports.concat = exports.compose = exports.cargoQueue = exports.cargo = exports.autoInject = exports.auto = exports.asyncify = exports.applyEachSeries = exports.applyEach = exports.apply = undefined;

@@ -37,2 +37,6 @@ var _apply = require('./apply');

var _cargoQueue = require('./cargoQueue');
var _cargoQueue2 = _interopRequireDefault(_cargoQueue);
var _compose = require('./compose');

@@ -74,6 +78,2 @@

var _doDuring = require('./doDuring');
var _doDuring2 = _interopRequireDefault(_doDuring);
var _doUntil = require('./doUntil');

@@ -87,6 +87,2 @@

var _during = require('./during');
var _during2 = _interopRequireDefault(_during);
var _each = require('./each');

@@ -322,2 +318,66 @@

/**
* 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
*/
/**
* A collection of `async` functions for manipulating collections, such as
* arrays and objects.
* @module Collections
*/
/**
* A collection of `async` functions for controlling the flow through a script.
* @module ControlFlow
*/
/**
* A collection of `async` utility functions.
* @module Utils
*/
exports.default = {

@@ -331,2 +391,3 @@ apply: _apply2.default,

cargo: _cargo2.default,
cargoQueue: _cargoQueue2.default,
compose: _compose2.default,

@@ -341,6 +402,4 @@ concat: _concat2.default,

dir: _dir2.default,
doDuring: _doDuring2.default,
doUntil: _doUntil2.default,
doWhilst: _doWhilst2.default,
during: _during2.default,
each: _each2.default,

@@ -426,67 +485,6 @@ eachLimit: _eachLimit2.default,

selectSeries: _filterSeries2.default,
wrapSync: _asyncify2.default
}; /**
* 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
*/
/**
* A collection of `async` functions for manipulating collections, such as
* arrays and objects.
* @module Collections
*/
/**
* A collection of `async` functions for controlling the flow through a script.
* @module ControlFlow
*/
/**
* A collection of `async` utility functions.
* @module Utils
*/
wrapSync: _asyncify2.default,
during: _whilst2.default,
doDuring: _doWhilst2.default
};
exports.apply = _apply2.default;

@@ -499,2 +497,3 @@ exports.applyEach = _applyEach2.default;

exports.cargo = _cargo2.default;
exports.cargoQueue = _cargoQueue2.default;
exports.compose = _compose2.default;

@@ -509,6 +508,4 @@ exports.concat = _concat2.default;

exports.dir = _dir2.default;
exports.doDuring = _doDuring2.default;
exports.doUntil = _doUntil2.default;
exports.doWhilst = _doWhilst2.default;
exports.during = _during2.default;
exports.each = _each2.default;

@@ -592,2 +589,4 @@ exports.eachLimit = _eachLimit2.default;

exports.selectSeries = _filterSeries2.default;
exports.wrapSync = _asyncify2.default;
exports.wrapSync = _asyncify2.default;
exports.during = _whilst2.default;
exports.doDuring = _doWhilst2.default;

@@ -6,3 +6,2 @@ 'use strict';

});
exports.default = reduce;

@@ -13,6 +12,2 @@ var _eachOfSeries = require('./eachOfSeries');

var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _once = require('./internal/once');

@@ -26,2 +21,6 @@

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -47,3 +46,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {*} memo - The initial state of the reduction.

@@ -59,2 +58,3 @@ * @param {AsyncFunction} iteratee - A function applied to each item in the

* (err, result).
* @returns {Promise} a promise, if no callback is passed
* @example

@@ -72,13 +72,12 @@ *

function reduce(coll, memo, iteratee, callback) {
callback = (0, _once2.default)(callback || _noop2.default);
callback = (0, _once2.default)(callback);
var _iteratee = (0, _wrapAsync2.default)(iteratee);
(0, _eachOfSeries2.default)(coll, function (x, i, callback) {
_iteratee(memo, x, function (err, v) {
return (0, _eachOfSeries2.default)(coll, (x, i, iterCb) => {
_iteratee(memo, x, (err, v) => {
memo = v;
callback(err);
iterCb(err);
});
}, function (err) {
callback(err, memo);
});
}, err => callback(err, memo));
}
exports.default = (0, _awaitify2.default)(reduce, 4);
module.exports = exports['default'];

@@ -8,6 +8,2 @@ 'use strict';

var _slice = require('./slice');
var _slice2 = _interopRequireDefault(_slice);
var _initialParams = require('./initialParams');

@@ -24,17 +20,15 @@

function applyEach(eachfn) {
return function (fns /*, ...args*/) {
var args = (0, _slice2.default)(arguments, 1);
return function (fns, ...callArgs) {
var go = (0, _initialParams2.default)(function (args, callback) {
var that = this;
return eachfn(fns, function (fn, cb) {
return eachfn(fns, (fn, cb) => {
(0, _wrapAsync2.default)(fn).apply(that, args.concat(cb));
}, callback);
});
if (args.length) {
return go.apply(this, args);
} else {
return go;
if (callArgs.length) {
return go.apply(this, callArgs);
}
return go;
};
}
module.exports = exports['default'];

@@ -8,3 +8,4 @@ "use strict";

// See #1064, #1293
exports.default = {};
const breakLoop = {};
exports.default = breakLoop;
module.exports = exports["default"];

@@ -8,10 +8,2 @@ 'use strict';

var _arrayEach = require('lodash/_arrayEach');
var _arrayEach2 = _interopRequireDefault(_arrayEach);
var _slice = require('./slice');
var _slice2 = _interopRequireDefault(_slice);
var _wrapAsync = require('./wrapAsync');

@@ -24,21 +16,14 @@

function consoleFunc(name) {
return function (fn /*, ...args*/) {
var args = (0, _slice2.default)(arguments, 1);
args.push(function (err /*, ...args*/) {
var args = (0, _slice2.default)(arguments, 1);
if (typeof console === 'object') {
if (err) {
if (console.error) {
console.error(err);
}
} else if (console[name]) {
(0, _arrayEach2.default)(args, function (x) {
console[name](x);
});
return (fn, ...args) => (0, _wrapAsync2.default)(fn)(...args, (err, ...resultArgs) => {
if (typeof console === 'object') {
if (err) {
if (console.error) {
console.error(err);
}
} else if (console[name]) {
resultArgs.forEach(x => console[name](x));
}
});
(0, _wrapAsync2.default)(fn).apply(null, args);
};
}
});
}
module.exports = exports['default'];

@@ -8,6 +8,2 @@ 'use strict';

var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _breakLoop = require('./breakLoop');

@@ -17,27 +13,27 @@

var _wrapAsync = require('./wrapAsync');
var _wrapAsync2 = _interopRequireDefault(_wrapAsync);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _createTester(check, getResult) {
return function (eachfn, arr, iteratee, cb) {
cb = cb || _noop2.default;
return (eachfn, arr, _iteratee, cb) => {
var testPassed = false;
var testResult;
eachfn(arr, function (value, _, callback) {
iteratee(value, function (err, result) {
if (err) {
callback(err);
} else if (check(result) && !testResult) {
const iteratee = (0, _wrapAsync2.default)(_iteratee);
eachfn(arr, (value, _, callback) => {
iteratee(value, (err, result) => {
if (err) return callback(err);
if (check(result) && !testResult) {
testPassed = true;
testResult = getResult(true, value);
callback(null, _breakLoop2.default);
} else {
callback();
return callback(null, _breakLoop2.default);
}
callback();
});
}, function (err) {
if (err) {
cb(err);
} else {
cb(null, testPassed ? testResult : getResult(false));
}
}, err => {
if (err) return cb(err);
cb(null, testPassed ? testResult : getResult(false));
});

@@ -44,0 +40,0 @@ };

@@ -6,3 +6,2 @@ "use strict";

});
exports.default = DLL;
// Simple doubly linked list (https://en.wikipedia.org/wiki/Doubly_linked_list) implementation

@@ -12,79 +11,84 @@ // used for queues. This implementation assumes that the node provided by the user can be modified

// for queue support.
function DLL() {
this.head = this.tail = null;
this.length = 0;
}
class DLL {
constructor() {
this.head = this.tail = null;
this.length = 0;
}
function setInitial(dll, node) {
dll.length = 1;
dll.head = dll.tail = node;
}
removeLink(node) {
if (node.prev) node.prev.next = node.next;else this.head = node.next;
if (node.next) node.next.prev = node.prev;else this.tail = node.prev;
DLL.prototype.removeLink = function (node) {
if (node.prev) node.prev.next = node.next;else this.head = node.next;
if (node.next) node.next.prev = node.prev;else this.tail = node.prev;
node.prev = node.next = null;
this.length -= 1;
return node;
}
node.prev = node.next = null;
this.length -= 1;
return node;
};
empty() {
while (this.head) this.shift();
return this;
}
DLL.prototype.empty = function () {
while (this.head) this.shift();
return this;
};
insertAfter(node, newNode) {
newNode.prev = node;
newNode.next = node.next;
if (node.next) node.next.prev = newNode;else this.tail = newNode;
node.next = newNode;
this.length += 1;
}
DLL.prototype.insertAfter = function (node, newNode) {
newNode.prev = node;
newNode.next = node.next;
if (node.next) node.next.prev = newNode;else this.tail = newNode;
node.next = newNode;
this.length += 1;
};
insertBefore(node, newNode) {
newNode.prev = node.prev;
newNode.next = node;
if (node.prev) node.prev.next = newNode;else this.head = newNode;
node.prev = newNode;
this.length += 1;
}
DLL.prototype.insertBefore = function (node, newNode) {
newNode.prev = node.prev;
newNode.next = node;
if (node.prev) node.prev.next = newNode;else this.head = newNode;
node.prev = newNode;
this.length += 1;
};
unshift(node) {
if (this.head) this.insertBefore(this.head, node);else setInitial(this, node);
}
DLL.prototype.unshift = function (node) {
if (this.head) this.insertBefore(this.head, node);else setInitial(this, node);
};
push(node) {
if (this.tail) this.insertAfter(this.tail, node);else setInitial(this, node);
}
DLL.prototype.push = function (node) {
if (this.tail) this.insertAfter(this.tail, node);else setInitial(this, node);
};
shift() {
return this.head && this.removeLink(this.head);
}
DLL.prototype.shift = function () {
return this.head && this.removeLink(this.head);
};
pop() {
return this.tail && this.removeLink(this.tail);
}
DLL.prototype.pop = function () {
return this.tail && this.removeLink(this.tail);
};
toArray() {
return [...this];
}
DLL.prototype.toArray = function () {
var arr = Array(this.length);
var curr = this.head;
for (var idx = 0; idx < this.length; idx++) {
arr[idx] = curr.data;
curr = curr.next;
*[Symbol.iterator]() {
var cur = this.head;
while (cur) {
yield cur.data;
cur = cur.next;
}
}
return arr;
};
DLL.prototype.remove = function (testFn) {
var curr = this.head;
while (!!curr) {
var next = curr.next;
if (testFn(curr)) {
this.removeLink(curr);
remove(testFn) {
var curr = this.head;
while (curr) {
var { next } = curr;
if (testFn(curr)) {
this.removeLink(curr);
}
curr = next;
}
curr = next;
return this;
}
return this;
};
}
exports.default = DLL;
function setInitial(dll, node) {
dll.length = 1;
dll.head = dll.tail = node;
}
module.exports = exports["default"];

@@ -6,8 +6,3 @@ 'use strict';

});
exports.default = _eachOfLimit;
var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _once = require('./once');

@@ -25,2 +20,8 @@

var _wrapAsync = require('./wrapAsync');
var _asyncEachOfLimit = require('./asyncEachOfLimit');
var _asyncEachOfLimit2 = _interopRequireDefault(_asyncEachOfLimit);
var _breakLoop = require('./breakLoop');

@@ -32,10 +33,20 @@

function _eachOfLimit(limit) {
return function (obj, iteratee, callback) {
callback = (0, _once2.default)(callback || _noop2.default);
if (limit <= 0 || !obj) {
exports.default = limit => {
return (obj, iteratee, callback) => {
callback = (0, _once2.default)(callback);
if (limit <= 0) {
throw new RangeError('concurrency limit cannot be less than 1');
}
if (!obj) {
return callback(null);
}
if ((0, _wrapAsync.isAsyncGenerator)(obj)) {
return (0, _asyncEachOfLimit2.default)(obj, limit, iteratee, callback);
}
if ((0, _wrapAsync.isAsyncIterable)(obj)) {
return (0, _asyncEachOfLimit2.default)(obj[Symbol.asyncIterator](), limit, iteratee, callback);
}
var nextElem = (0, _iterator2.default)(obj);
var done = false;
var canceled = false;
var running = 0;

@@ -45,2 +56,3 @@ var looping = false;

function iterateeCallback(err, value) {
if (canceled) return;
running -= 1;

@@ -50,2 +62,5 @@ if (err) {

callback(err);
} else if (err === false) {
done = true;
canceled = true;
} else if (value === _breakLoop2.default || done && running <= 0) {

@@ -78,3 +93,4 @@ done = true;

};
}
};
module.exports = exports['default'];

@@ -8,18 +8,6 @@ 'use strict';

var _arrayMap = require('lodash/_arrayMap');
var _isArrayLike = require('./isArrayLike');
var _arrayMap2 = _interopRequireDefault(_arrayMap);
var _isArrayLike = require('lodash/isArrayLike');
var _isArrayLike2 = _interopRequireDefault(_isArrayLike);
var _baseProperty = require('lodash/_baseProperty');
var _baseProperty2 = _interopRequireDefault(_baseProperty);
var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _wrapAsync = require('./wrapAsync');

@@ -33,8 +21,8 @@

var truthValues = new Array(arr.length);
eachfn(arr, function (x, index, callback) {
iteratee(x, function (err, v) {
eachfn(arr, (x, index, iterCb) => {
iteratee(x, (err, v) => {
truthValues[index] = !!v;
callback(err);
iterCb(err);
});
}, function (err) {
}, err => {
if (err) return callback(err);

@@ -51,21 +39,13 @@ var results = [];

var results = [];
eachfn(coll, function (x, index, callback) {
iteratee(x, function (err, v) {
if (err) {
callback(err);
} else {
if (v) {
results.push({ index: index, value: x });
}
callback();
eachfn(coll, (x, index, iterCb) => {
iteratee(x, (err, v) => {
if (err) return iterCb(err);
if (v) {
results.push({ index, value: x });
}
iterCb();
});
}, function (err) {
if (err) {
callback(err);
} else {
callback(null, (0, _arrayMap2.default)(results.sort(function (a, b) {
return a.index - b.index;
}), (0, _baseProperty2.default)('value')));
}
}, err => {
if (err) return callback(err);
callback(null, results.sort((a, b) => a.index - b.index).map(v => v.value));
});

@@ -76,4 +56,4 @@ }

var filter = (0, _isArrayLike2.default)(coll) ? filterArray : filterGeneric;
filter(eachfn, coll, (0, _wrapAsync2.default)(iteratee), callback || _noop2.default);
return filter(eachfn, coll, (0, _wrapAsync2.default)(iteratee), callback);
}
module.exports = exports['default'];

@@ -1,2 +0,2 @@

'use strict';
"use strict";

@@ -8,7 +8,5 @@ Object.defineProperty(exports, "__esModule", {

exports.default = function (coll) {
return iteratorSymbol && coll[iteratorSymbol] && coll[iteratorSymbol]();
return coll[Symbol.iterator] && coll[Symbol.iterator]();
};
var iteratorSymbol = typeof Symbol === 'function' && Symbol.iterator;
module.exports = exports['default'];
module.exports = exports["default"];

@@ -1,2 +0,2 @@

'use strict';
"use strict";

@@ -8,15 +8,8 @@ Object.defineProperty(exports, "__esModule", {

exports.default = function (fn) {
return function () /*...args, callback*/{
var args = (0, _slice2.default)(arguments);
return function (...args /*, callback*/) {
var callback = args.pop();
fn.call(this, args, callback);
return fn.call(this, args, callback);
};
};
var _slice = require('./slice');
var _slice2 = _interopRequireDefault(_slice);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
module.exports = exports['default'];
module.exports = exports["default"];

@@ -6,5 +6,5 @@ 'use strict';

});
exports.default = iterator;
exports.default = createIterator;
var _isArrayLike = require('lodash/isArrayLike');
var _isArrayLike = require('./isArrayLike');

@@ -17,6 +17,2 @@ var _isArrayLike2 = _interopRequireDefault(_isArrayLike);

var _keys = require('lodash/keys');
var _keys2 = _interopRequireDefault(_keys);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -43,3 +39,3 @@

function createObjectIterator(obj) {
var okeys = (0, _keys2.default)(obj);
var okeys = obj ? Object.keys(obj) : [];
var i = -1;

@@ -49,7 +45,7 @@ var len = okeys.length;

var key = okeys[++i];
return i < len ? { value: obj[key], key: key } : null;
return i < len ? { value: obj[key], key } : null;
};
}
function iterator(coll) {
function createIterator(coll) {
if ((0, _isArrayLike2.default)(coll)) {

@@ -56,0 +52,0 @@ return createArrayIterator(coll);

@@ -8,6 +8,2 @@ 'use strict';

var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _wrapAsync = require('./wrapAsync');

@@ -20,3 +16,2 @@

function _asyncMap(eachfn, arr, iteratee, callback) {
callback = callback || _noop2.default;
arr = arr || [];

@@ -27,9 +22,9 @@ var results = [];

eachfn(arr, function (value, _, callback) {
return eachfn(arr, (value, _, iterCb) => {
var index = counter++;
_iteratee(value, function (err, v) {
_iteratee(value, (err, v) => {
results[index] = v;
callback(err);
iterCb(err);
});
}, function (err) {
}, err => {
callback(err, results);

@@ -36,0 +31,0 @@ });

@@ -8,9 +8,11 @@ "use strict";

function once(fn) {
return function () {
function wrapper(...args) {
if (fn === null) return;
var callFn = fn;
fn = null;
callFn.apply(this, arguments);
};
callFn.apply(this, args);
}
Object.assign(wrapper, fn);
return wrapper;
}
module.exports = exports["default"];

@@ -8,9 +8,9 @@ "use strict";

function onlyOnce(fn) {
return function () {
return function (...args) {
if (fn === null) throw new Error("Callback was already called.");
var callFn = fn;
fn = null;
callFn.apply(this, arguments);
callFn.apply(this, args);
};
}
module.exports = exports["default"];

@@ -6,16 +6,7 @@ 'use strict';

});
exports.default = _parallel;
var _noop = require('lodash/noop');
var _isArrayLike = require('./isArrayLike');
var _noop2 = _interopRequireDefault(_noop);
var _isArrayLike = require('lodash/isArrayLike');
var _isArrayLike2 = _interopRequireDefault(_isArrayLike);
var _slice = require('./slice');
var _slice2 = _interopRequireDefault(_slice);
var _wrapAsync = require('./wrapAsync');

@@ -25,20 +16,21 @@

var _awaitify = require('./awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _parallel(eachfn, tasks, callback) {
callback = callback || _noop2.default;
exports.default = (0, _awaitify2.default)((eachfn, tasks, callback) => {
var results = (0, _isArrayLike2.default)(tasks) ? [] : {};
eachfn(tasks, function (task, key, callback) {
(0, _wrapAsync2.default)(task)(function (err, result) {
if (arguments.length > 2) {
result = (0, _slice2.default)(arguments, 1);
eachfn(tasks, (task, key, taskCb) => {
(0, _wrapAsync2.default)(task)((err, ...result) => {
if (result.length < 2) {
[result] = result;
}
results[key] = result;
callback(err);
taskCb(err);
});
}, function (err) {
callback(err, results);
});
}
}, err => callback(err, results));
}, 3);
module.exports = exports['default'];

@@ -8,14 +8,2 @@ 'use strict';

var _baseIndexOf = require('lodash/_baseIndexOf');
var _baseIndexOf2 = _interopRequireDefault(_baseIndexOf);
var _isArray = require('lodash/isArray');
var _isArray2 = _interopRequireDefault(_isArray);
var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _onlyOnce = require('./onlyOnce');

@@ -39,2 +27,4 @@

const noop = () => {};
function queue(worker, concurrency, payload) {

@@ -44,3 +34,3 @@ if (concurrency == null) {

} else if (concurrency === 0) {
throw new Error('Concurrency must not be zero');
throw new RangeError('Concurrency must not be zero');
}

@@ -58,3 +48,3 @@

q.started = true;
if (!(0, _isArray2.default)(data)) {
if (!Array.isArray(data)) {
data = [data];

@@ -64,5 +54,3 @@ }

// call drain immediately if there are no tasks
return (0, _setImmediate2.default)(function () {
q.drain();
});
return (0, _setImmediate2.default)(() => q.drain());
}

@@ -73,3 +61,3 @@

data: data[i],
callback: callback || _noop2.default
callback: callback || noop
};

@@ -86,3 +74,3 @@

processingScheduled = true;
(0, _setImmediate2.default)(function () {
(0, _setImmediate2.default)(() => {
processingScheduled = false;

@@ -95,3 +83,3 @@ q.process();

function _next(tasks) {
return function (err) {
return function (err, ...args) {
numRunning -= 1;

@@ -102,3 +90,3 @@

var index = (0, _baseIndexOf2.default)(workersList, task, 0);
var index = workersList.indexOf(task);
if (index === 0) {

@@ -110,3 +98,3 @@ workersList.shift();

task.callback.apply(task, arguments);
task.callback(err, ...args);

@@ -132,26 +120,29 @@ if (err != null) {

_tasks: new _DoublyLinkedList2.default(),
concurrency: concurrency,
payload: payload,
saturated: _noop2.default,
unsaturated: _noop2.default,
*[Symbol.iterator]() {
yield* q._tasks[Symbol.iterator]();
},
concurrency,
payload,
saturated: noop,
unsaturated: noop,
buffer: concurrency / 4,
empty: _noop2.default,
drain: _noop2.default,
error: _noop2.default,
empty: noop,
drain: noop,
error: noop,
started: false,
paused: false,
push: function (data, callback) {
push(data, callback) {
_insert(data, false, callback);
},
kill: function () {
q.drain = _noop2.default;
kill() {
q.drain = noop;
q._tasks.empty();
},
unshift: function (data, callback) {
unshift(data, callback) {
_insert(data, true, callback);
},
remove: function (testFn) {
remove(testFn) {
q._tasks.remove(testFn);
},
process: function () {
process() {
// Avoid trying to start too many processing operations. This can occur

@@ -190,18 +181,18 @@ // when callbacks resolve synchronously (#1267).

},
length: function () {
length() {
return q._tasks.length;
},
running: function () {
running() {
return numRunning;
},
workersList: function () {
workersList() {
return workersList;
},
idle: function () {
idle() {
return q._tasks.length + numRunning === 0;
},
pause: function () {
pause() {
q.paused = true;
},
resume: function () {
resume() {
if (q.paused === false) {

@@ -208,0 +199,0 @@ return;

@@ -12,7 +12,12 @@ 'use strict';

var _wrapAsync = require('./wrapAsync');
var _wrapAsync2 = _interopRequireDefault(_wrapAsync);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function reject(eachfn, arr, iteratee, callback) {
(0, _filter2.default)(eachfn, arr, function (value, cb) {
iteratee(value, function (err, v) {
function reject(eachfn, arr, _iteratee, callback) {
const iteratee = (0, _wrapAsync2.default)(_iteratee);
return (0, _filter2.default)(eachfn, arr, (value, cb) => {
iteratee(value, (err, v) => {
cb(err, !v);

@@ -19,0 +24,0 @@ });

@@ -6,12 +6,4 @@ 'use strict';

});
exports.hasNextTick = exports.hasSetImmediate = undefined;
exports.fallback = fallback;
exports.wrap = wrap;
var _slice = require('./slice');
var _slice2 = _interopRequireDefault(_slice);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var hasSetImmediate = exports.hasSetImmediate = typeof setImmediate === 'function' && setImmediate;

@@ -25,8 +17,3 @@ var hasNextTick = exports.hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function';

function wrap(defer) {
return function (fn /*, ...args*/) {
var args = (0, _slice2.default)(arguments, 1);
defer(function () {
fn.apply(null, args);
});
};
return (fn, ...args) => defer(() => fn(...args));
}

@@ -33,0 +20,0 @@

@@ -8,6 +8,4 @@ "use strict";

function _withoutIndex(iteratee) {
return function (value, index, callback) {
return iteratee(value, callback);
};
return (value, index, callback) => iteratee(value, callback);
}
module.exports = exports["default"];

@@ -6,3 +6,3 @@ 'use strict';

});
exports.isAsync = undefined;
exports.isAsyncIterable = exports.isAsyncGenerator = exports.isAsync = undefined;

@@ -15,9 +15,16 @@ var _asyncify = require('../asyncify');

var supportsSymbol = typeof Symbol === 'function';
function isAsync(fn) {
return supportsSymbol && fn[Symbol.toStringTag] === 'AsyncFunction';
return fn[Symbol.toStringTag] === 'AsyncFunction';
}
function isAsyncGenerator(fn) {
return fn[Symbol.toStringTag] === 'AsyncGenerator';
}
function isAsyncIterable(obj) {
return typeof obj[Symbol.asyncIterator] === 'function';
}
function wrapAsync(asyncFn) {
if (typeof asyncFn !== 'function') throw new Error('expected a function');
return isAsync(asyncFn) ? (0, _asyncify2.default)(asyncFn) : asyncFn;

@@ -27,2 +34,4 @@ }

exports.default = wrapAsync;
exports.isAsync = isAsync;
exports.isAsync = isAsync;
exports.isAsyncGenerator = isAsyncGenerator;
exports.isAsyncIterable = isAsyncIterable;

@@ -7,10 +7,14 @@ 'use strict';

var _doParallel = require('./internal/doParallel');
var _map2 = require('./internal/map');
var _doParallel2 = _interopRequireDefault(_doParallel);
var _map3 = _interopRequireDefault(_map2);
var _map = require('./internal/map');
var _eachOf = require('./eachOf');
var _map2 = _interopRequireDefault(_map);
var _eachOf2 = _interopRequireDefault(_eachOf);
var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -40,3 +44,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async function to apply to each item in

@@ -49,2 +53,3 @@ * `coll`.

* transformed items from the `coll`. Invoked with (err, results).
* @returns {Promise} a promise, if no callback is passed
* @example

@@ -56,3 +61,6 @@ *

*/
exports.default = (0, _doParallel2.default)(_map2.default);
function map(coll, iteratee, callback) {
return (0, _map3.default)(_eachOf2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(map, 3);
module.exports = exports['default'];

@@ -7,10 +7,14 @@ 'use strict';

var _doParallelLimit = require('./internal/doParallelLimit');
var _map2 = require('./internal/map');
var _doParallelLimit2 = _interopRequireDefault(_doParallelLimit);
var _map3 = _interopRequireDefault(_map2);
var _map = require('./internal/map');
var _eachOfLimit = require('./internal/eachOfLimit');
var _map2 = _interopRequireDefault(_map);
var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);
var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -27,3 +31,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.

@@ -37,4 +41,8 @@ * @param {AsyncFunction} iteratee - An async function to apply to each item in

* transformed items from the `coll`. Invoked with (err, results).
* @returns {Promise} a promise, if no callback is passed
*/
exports.default = (0, _doParallelLimit2.default)(_map2.default);
function mapLimit(coll, limit, iteratee, callback) {
return (0, _map3.default)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(mapLimit, 4);
module.exports = exports['default'];

@@ -7,10 +7,14 @@ 'use strict';

var _mapLimit = require('./mapLimit');
var _map2 = require('./internal/map');
var _mapLimit2 = _interopRequireDefault(_mapLimit);
var _map3 = _interopRequireDefault(_map2);
var _doLimit = require('./internal/doLimit');
var _eachOfSeries = require('./eachOfSeries');
var _doLimit2 = _interopRequireDefault(_doLimit);
var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries);
var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -27,3 +31,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async function to apply to each item in

@@ -36,4 +40,8 @@ * `coll`.

* transformed items from the `coll`. Invoked with (err, results).
* @returns {Promise} a promise, if no callback is passed
*/
exports.default = (0, _doLimit2.default)(_mapLimit2.default, 1);
function mapSeries(coll, iteratee, callback) {
return (0, _map3.default)(_eachOfSeries2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(mapSeries, 3);
module.exports = exports['default'];

@@ -6,2 +6,3 @@ 'use strict';

});
exports.default = mapValues;

@@ -12,6 +13,2 @@ var _mapValuesLimit = require('./mapValuesLimit');

var _doLimit = require('./internal/doLimit');
var _doLimit2 = _interopRequireDefault(_doLimit);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -46,2 +43,3 @@

* Invoked with (err, result).
* @returns {Promise} a promise, if no callback is passed
* @example

@@ -64,4 +62,5 @@ *

*/
exports.default = (0, _doLimit2.default)(_mapValuesLimit2.default, Infinity);
function mapValues(obj, iteratee, callback) {
return (0, _mapValuesLimit2.default)(obj, Infinity, iteratee, callback);
}
module.exports = exports['default'];

@@ -6,11 +6,10 @@ 'use strict';

});
exports.default = mapValuesLimit;
var _eachOfLimit = require('./eachOfLimit');
var _eachOfLimit = require('./internal/eachOfLimit');
var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);
var _noop = require('lodash/noop');
var _awaitify = require('./internal/awaitify');
var _noop2 = _interopRequireDefault(_noop);
var _awaitify2 = _interopRequireDefault(_awaitify);

@@ -47,9 +46,10 @@ var _once = require('./internal/once');

* Invoked with (err, result).
* @returns {Promise} a promise, if no callback is passed
*/
function mapValuesLimit(obj, limit, iteratee, callback) {
callback = (0, _once2.default)(callback || _noop2.default);
callback = (0, _once2.default)(callback);
var newObj = {};
var _iteratee = (0, _wrapAsync2.default)(iteratee);
(0, _eachOfLimit2.default)(obj, limit, function (val, key, next) {
_iteratee(val, key, function (err, result) {
return (0, _eachOfLimit2.default)(limit)(obj, (val, key, next) => {
_iteratee(val, key, (err, result) => {
if (err) return next(err);

@@ -59,6 +59,6 @@ newObj[key] = result;

});
}, function (err) {
callback(err, newObj);
});
}, err => callback(err, newObj));
}
exports.default = (0, _awaitify2.default)(mapValuesLimit, 4);
module.exports = exports['default'];

@@ -6,2 +6,3 @@ 'use strict';

});
exports.default = mapValuesSeries;

@@ -12,6 +13,2 @@ var _mapValuesLimit = require('./mapValuesLimit');

var _doLimit = require('./internal/doLimit');
var _doLimit2 = _interopRequireDefault(_doLimit);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -37,4 +34,7 @@

* Invoked with (err, result).
* @returns {Promise} a promise, if no callback is passed
*/
exports.default = (0, _doLimit2.default)(_mapValuesLimit2.default, 1);
function mapValuesSeries(obj, iteratee, callback) {
return (0, _mapValuesLimit2.default)(obj, 1, iteratee, callback);
}
module.exports = exports['default'];

@@ -8,10 +8,2 @@ 'use strict';

var _identity = require('lodash/identity');
var _identity2 = _interopRequireDefault(_identity);
var _slice = require('./internal/slice');
var _slice2 = _interopRequireDefault(_slice);
var _setImmediate = require('./internal/setImmediate');

@@ -31,6 +23,2 @@

function has(obj, key) {
return key in obj;
}
/**

@@ -41,2 +29,5 @@ * Caches the results of an async function. When creating a hash to store

*
* **Note: if the async function errs, the result will not be cached and
* subsequent calls will call the wrapped function.**
*
* If no hash function is specified, the first argument is used as a hash key,

@@ -74,26 +65,25 @@ * which may work reasonably if it is a string or a data type that converts to a

*/
function memoize(fn, hasher) {
function memoize(fn, hasher = v => v) {
var memo = Object.create(null);
var queues = Object.create(null);
hasher = hasher || _identity2.default;
var _fn = (0, _wrapAsync2.default)(fn);
var memoized = (0, _initialParams2.default)(function memoized(args, callback) {
var key = hasher.apply(null, args);
if (has(memo, key)) {
(0, _setImmediate2.default)(function () {
callback.apply(null, memo[key]);
});
} else if (has(queues, key)) {
var memoized = (0, _initialParams2.default)((args, callback) => {
var key = hasher(...args);
if (key in memo) {
(0, _setImmediate2.default)(() => callback(null, ...memo[key]));
} else if (key in queues) {
queues[key].push(callback);
} else {
queues[key] = [callback];
_fn.apply(null, args.concat(function () /*args*/{
var args = (0, _slice2.default)(arguments);
memo[key] = args;
_fn(...args, (err, ...resultArgs) => {
// #1465 don't memoize if an error occurred
if (!err) {
memo[key] = resultArgs;
}
var q = queues[key];
delete queues[key];
for (var i = 0, l = q.length; i < l; i++) {
q[i].apply(null, args);
q[i](err, ...resultArgs);
}
}));
});
}

@@ -100,0 +90,0 @@ });

{
"name": "async",
"description": "Higher-order functions and common patterns for asynchronous code",
"version": "2.6.1",
"version": "3.0.1-0",
"main": "dist/async.js",

@@ -21,13 +21,14 @@ "author": "Caolan McMahon",

],
"dependencies": {
"lodash": "^4.17.10"
},
"dependencies": {},
"devDependencies": {
"babel-cli": "^6.24.0",
"babel-core": "^6.26.3",
"babel-eslint": "^8.2.6",
"babel-minify": "^0.4.3",
"babel-plugin-add-module-exports": "^0.2.1",
"babel-plugin-istanbul": "^2.0.1",
"babel-plugin-syntax-async-generators": "^6.13.0",
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
"babel-preset-es2015": "^6.3.13",
"babel-preset-es2017": "^6.22.0",
"babel-register": "^6.26.0",
"babelify": "^8.0.0",

@@ -41,8 +42,9 @@ "benchmark": "^2.1.1",

"es6-promise": "^2.3.0",
"eslint": "^2.13.1",
"eslint": "^4.19.1",
"eslint-plugin-prefer-arrow": "^1.1.2",
"fs-extra": "^0.26.7",
"gh-pages-deploy": "^0.5.0",
"jsdoc": "^3.4.0",
"karma": "^2.0.2",
"karma-browserify": "^5.2.0",
"karma": "^2.0.5",
"karma-browserify": "^5.3.0",
"karma-firefox-launcher": "^1.1.0",

@@ -55,3 +57,3 @@ "karma-mocha": "^1.2.0",

"rimraf": "^2.5.0",
"rollup": "^0.36.3",
"rollup": "^0.63.4",
"rollup-plugin-node-resolve": "^2.0.0",

@@ -61,3 +63,2 @@ "rollup-plugin-npm": "^2.0.0",

"semver": "^5.5.0",
"uglify-js": "~2.7.3",
"yargs": "^11.0.0"

@@ -69,5 +70,5 @@ },

"jsdoc": "jsdoc -c ./support/jsdoc/jsdoc.json && node support/jsdoc/jsdoc-fix-html.js",
"lint": "eslint lib/ mocha_test/ perf/memory.js perf/suites.js perf/benchmark.js support/build/ support/*.js karma.conf.js",
"lint": "eslint --fix lib/ test/ perf/memory.js perf/suites.js perf/benchmark.js support/build/ support/*.js karma.conf.js",
"mocha-browser-test": "karma start",
"mocha-node-test": "mocha mocha_test/ --compilers js:babel-core/register",
"mocha-node-test": "mocha",
"mocha-test": "npm run mocha-node-test && npm run mocha-browser-test",

@@ -82,5 +83,5 @@ "test": "npm run lint && npm run mocha-node-test"

"exclude": [
"mocha_test"
"test"
]
}
}

@@ -6,3 +6,3 @@ 'use strict';

});
exports.default = parallelLimit;
exports.default = parallel;

@@ -13,5 +13,5 @@ var _eachOf = require('./eachOf');

var _parallel = require('./internal/parallel');
var _parallel2 = require('./internal/parallel');
var _parallel2 = _interopRequireDefault(_parallel);
var _parallel3 = _interopRequireDefault(_parallel2);

@@ -46,3 +46,3 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

* @category Control Flow
* @param {Array|Iterable|Object} tasks - A collection of
* @param {Array|Iterable|AsyncIterable|Object} tasks - A collection of
* [async functions]{@link AsyncFunction} to run.

@@ -54,2 +54,3 @@ * Each async function can complete with any number of optional `result` values.

* Invoked with (err, results).
* @returns {Promise} a promise, if a callback is not passed
*

@@ -91,5 +92,5 @@ * @example

*/
function parallelLimit(tasks, callback) {
(0, _parallel2.default)(_eachOf2.default, tasks, callback);
function parallel(tasks, callback) {
return (0, _parallel3.default)(_eachOf2.default, tasks, callback);
}
module.exports = exports['default'];

@@ -28,3 +28,3 @@ 'use strict';

* @category Control Flow
* @param {Array|Iterable|Object} tasks - A collection of
* @param {Array|Iterable|AsyncIterable|Object} tasks - A collection of
* [async functions]{@link AsyncFunction} to run.

@@ -37,6 +37,7 @@ * Each async function can complete with any number of optional `result` values.

* Invoked with (err, results).
* @returns {Promise} a promise, if a callback is not passed
*/
function parallelLimit(tasks, limit, callback) {
(0, _parallel2.default)((0, _eachOfLimit2.default)(limit), tasks, callback);
return (0, _parallel2.default)((0, _eachOfLimit2.default)(limit), tasks, callback);
}
module.exports = exports['default'];

@@ -12,4 +12,3 @@ 'use strict';

// Override push to accept second parameter representing priority
q.push = function (data, priority, callback) {
if (callback == null) callback = _noop2.default;
q.push = function (data, priority = 0, callback = () => {}) {
if (typeof callback !== 'function') {

@@ -19,3 +18,3 @@ throw new Error('task callback must be a function');

q.started = true;
if (!(0, _isArray2.default)(data)) {
if (!Array.isArray(data)) {
data = [data];

@@ -25,8 +24,5 @@ }

// call drain immediately if there are no tasks
return (0, _setImmediate2.default)(function () {
q.drain();
});
return (0, _setImmediate2.default)(() => q.drain());
}
priority = priority || 0;
var nextNode = q._tasks.head;

@@ -40,4 +36,4 @@ while (nextNode && priority >= nextNode.priority) {

data: data[i],
priority: priority,
callback: callback
priority,
callback
};

@@ -60,10 +56,2 @@

var _isArray = require('lodash/isArray');
var _isArray2 = _interopRequireDefault(_isArray);
var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _setImmediate = require('./setImmediate');

@@ -70,0 +58,0 @@

@@ -9,3 +9,3 @@ 'use strict';

var _worker = (0, _wrapAsync2.default)(worker);
return (0, _queue2.default)(function (items, cb) {
return (0, _queue2.default)((items, cb) => {
_worker(items[0], cb);

@@ -29,3 +29,3 @@ }, concurrency, 1);

* A queue of tasks for the worker function to complete.
* @typedef {Object} QueueObject
* @typedef {Iterable} QueueObject
* @memberOf module:ControlFlow

@@ -80,2 +80,14 @@ * @property {Function} length - a function returning the number of items

* should be pushed to the queue after calling this function. Invoke with `queue.kill()`.
*
* @example
* const q = aync.queue(worker, 2)
* q.push(item1)
* q.push(item2)
* q.push(item3)
* // queues are iterable, spread into an array to inspect
* const items = [...q] // [item1, item2, item3]
* // or use for of
* for (let item of q) {
* console.log(item)
* }
*/

@@ -100,3 +112,3 @@

* defaults to `1`. If the concurrency is `0`, an error is thrown.
* @returns {module:ControlFlow.QueueObject} A queue object to manage the tasks. Callbacks can
* @returns {module:ControlFlow.QueueObject} A queue object to manage the tasks. Callbacks can be
* attached as certain properties to listen for specific events during the

@@ -117,2 +129,7 @@ * lifecycle of the queue.

*
* // assign an error callback
* q.error = function(err, task) {
* console.error('task experienced an error');
* };
*
* // add some items to the queue

@@ -119,0 +136,0 @@ * q.push({name: 'foo'}, function(err) {

@@ -6,12 +6,3 @@ 'use strict';

});
exports.default = race;
var _isArray = require('lodash/isArray');
var _isArray2 = _interopRequireDefault(_isArray);
var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _once = require('./internal/once');

@@ -25,2 +16,6 @@

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -65,4 +60,4 @@

function race(tasks, callback) {
callback = (0, _once2.default)(callback || _noop2.default);
if (!(0, _isArray2.default)(tasks)) return callback(new TypeError('First argument to race must be an array of functions'));
callback = (0, _once2.default)(callback);
if (!Array.isArray(tasks)) return callback(new TypeError('First argument to race must be an array of functions'));
if (!tasks.length) return callback();

@@ -73,2 +68,4 @@ for (var i = 0, l = tasks.length; i < l; i++) {

}
exports.default = (0, _awaitify2.default)(race, 2);
module.exports = exports['default'];

@@ -6,3 +6,2 @@ 'use strict';

});
exports.default = reduce;

@@ -13,6 +12,2 @@ var _eachOfSeries = require('./eachOfSeries');

var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _once = require('./internal/once');

@@ -26,2 +21,6 @@

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -47,3 +46,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {*} memo - The initial state of the reduction.

@@ -59,2 +58,3 @@ * @param {AsyncFunction} iteratee - A function applied to each item in the

* (err, result).
* @returns {Promise} a promise, if no callback is passed
* @example

@@ -72,13 +72,12 @@ *

function reduce(coll, memo, iteratee, callback) {
callback = (0, _once2.default)(callback || _noop2.default);
callback = (0, _once2.default)(callback);
var _iteratee = (0, _wrapAsync2.default)(iteratee);
(0, _eachOfSeries2.default)(coll, function (x, i, callback) {
_iteratee(memo, x, function (err, v) {
return (0, _eachOfSeries2.default)(coll, (x, i, iterCb) => {
_iteratee(memo, x, (err, v) => {
memo = v;
callback(err);
iterCb(err);
});
}, function (err) {
callback(err, memo);
});
}, err => callback(err, memo));
}
exports.default = (0, _awaitify2.default)(reduce, 4);
module.exports = exports['default'];

@@ -12,6 +12,2 @@ 'use strict';

var _slice = require('./internal/slice');
var _slice2 = _interopRequireDefault(_slice);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -40,7 +36,8 @@

* (err, result).
* @returns {Promise} a promise, if no callback is passed
*/
function reduceRight(array, memo, iteratee, callback) {
var reversed = (0, _slice2.default)(array).reverse();
(0, _reduce2.default)(reversed, memo, iteratee, callback);
var reversed = [...array].reverse();
return (0, _reduce2.default)(reversed, memo, iteratee, callback);
}
module.exports = exports['default'];

@@ -12,6 +12,2 @@ 'use strict';

var _slice = require('./internal/slice');
var _slice2 = _interopRequireDefault(_slice);
var _wrapAsync = require('./internal/wrapAsync');

@@ -65,14 +61,11 @@

return (0, _initialParams2.default)(function reflectOn(args, reflectCallback) {
args.push(function callback(error, cbArg) {
args.push((error, ...cbArgs) => {
if (error) {
reflectCallback(null, { error: error });
} else {
var value;
if (arguments.length <= 2) {
value = cbArg;
} else {
value = (0, _slice2.default)(arguments, 1);
}
reflectCallback(null, { value: value });
return reflectCallback(null, { error });
}
var value = cbArgs;
if (cbArgs.length <= 1) {
[value] = cbArgs;
}
reflectCallback(null, { value });
});

@@ -79,0 +72,0 @@

@@ -7,10 +7,14 @@ 'use strict';

var _reject = require('./internal/reject');
var _reject2 = require('./internal/reject');
var _reject2 = _interopRequireDefault(_reject);
var _reject3 = _interopRequireDefault(_reject2);
var _doParallel = require('./internal/doParallel');
var _eachOf = require('./eachOf');
var _doParallel2 = _interopRequireDefault(_doParallel);
var _eachOf2 = _interopRequireDefault(_eachOf);
var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -27,3 +31,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {Function} iteratee - An async truth test to apply to each item in

@@ -35,2 +39,3 @@ * `coll`.

* `iteratee` functions have finished. Invoked with (err, results).
* @returns {Promise} a promise, if no callback is passed
* @example

@@ -47,3 +52,6 @@ *

*/
exports.default = (0, _doParallel2.default)(_reject2.default);
function reject(coll, iteratee, callback) {
return (0, _reject3.default)(_eachOf2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(reject, 3);
module.exports = exports['default'];

@@ -7,10 +7,14 @@ 'use strict';

var _reject = require('./internal/reject');
var _reject2 = require('./internal/reject');
var _reject2 = _interopRequireDefault(_reject);
var _reject3 = _interopRequireDefault(_reject2);
var _doParallelLimit = require('./internal/doParallelLimit');
var _eachOfLimit = require('./internal/eachOfLimit');
var _doParallelLimit2 = _interopRequireDefault(_doParallelLimit);
var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);
var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -28,3 +32,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.

@@ -37,4 +41,8 @@ * @param {Function} iteratee - An async truth test to apply to each item in

* `iteratee` functions have finished. Invoked with (err, results).
* @returns {Promise} a promise, if no callback is passed
*/
exports.default = (0, _doParallelLimit2.default)(_reject2.default);
function rejectLimit(coll, limit, iteratee, callback) {
return (0, _reject3.default)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(rejectLimit, 4);
module.exports = exports['default'];

@@ -6,18 +6,4 @@ 'use strict';

});
exports.default = retryable;
exports.default = function (opts, task) {
if (!task) {
task = opts;
opts = null;
}
var _task = (0, _wrapAsync2.default)(task);
return (0, _initialParams2.default)(function (args, callback) {
function taskFn(cb) {
_task.apply(null, args.concat(cb));
}
if (opts) (0, _retry2.default)(opts, taskFn, callback);else (0, _retry2.default)(taskFn, callback);
});
};
var _retry = require('./retry');

@@ -35,6 +21,6 @@

var _promiseCallback = require('./internal/promiseCallback');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
module.exports = exports['default'];
/**

@@ -52,3 +38,4 @@ * A close relative of [`retry`]{@link module:ControlFlow.retry}. This method

* @param {Object|number} [opts = {times: 5, interval: 0}| 5] - optional
* options, exactly the same as from `retry`
* options, exactly the same as from `retry`, except for a `opts.arity` that
* is the arity of the `task` function, defaulting to `task.length`
* @param {AsyncFunction} task - the asynchronous function to wrap.

@@ -68,2 +55,27 @@ * This function will be passed any arguments passed to the returned wrapper.

* }, callback);
*/
*/
function retryable(opts, task) {
if (!task) {
task = opts;
opts = null;
}
let arity = opts && opts.arity || task.length;
if ((0, _wrapAsync.isAsync)(task)) {
arity += 1;
}
var _task = (0, _wrapAsync2.default)(task);
return (0, _initialParams2.default)((args, callback) => {
if (args.length < arity - 1 || callback == null) {
args.push(callback);
callback = (0, _promiseCallback.promiseCallback)();
}
function taskFn(cb) {
_task(...args, cb);
}
if (opts) (0, _retry2.default)(opts, taskFn, callback);else (0, _retry2.default)(taskFn, callback);
return callback[_promiseCallback.PROMISE_SYMBOL];
});
}
module.exports = exports['default'];

@@ -7,10 +7,14 @@ 'use strict';

var _filter = require('./internal/filter');
var _filter2 = require('./internal/filter');
var _filter2 = _interopRequireDefault(_filter);
var _filter3 = _interopRequireDefault(_filter2);
var _doParallel = require('./internal/doParallel');
var _eachOf = require('./eachOf');
var _doParallel2 = _interopRequireDefault(_doParallel);
var _eachOf2 = _interopRequireDefault(_eachOf);
var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -29,3 +33,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {Function} iteratee - A truth test to apply to each item in `coll`.

@@ -36,2 +40,3 @@ * The `iteratee` is passed a `callback(err, truthValue)`, which must be called

* `iteratee` functions have finished. Invoked with (err, results).
* @returns {Promise} a promise, if no callback provided
* @example

@@ -47,3 +52,6 @@ *

*/
exports.default = (0, _doParallel2.default)(_filter2.default);
function filter(coll, iteratee, callback) {
return (0, _filter3.default)(_eachOf2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(filter, 3);
module.exports = exports['default'];

@@ -7,10 +7,14 @@ 'use strict';

var _filter = require('./internal/filter');
var _filter2 = require('./internal/filter');
var _filter2 = _interopRequireDefault(_filter);
var _filter3 = _interopRequireDefault(_filter2);
var _doParallelLimit = require('./internal/doParallelLimit');
var _eachOfLimit = require('./internal/eachOfLimit');
var _doParallelLimit2 = _interopRequireDefault(_doParallelLimit);
var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);
var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -29,3 +33,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.

@@ -37,4 +41,8 @@ * @param {Function} iteratee - A truth test to apply to each item in `coll`.

* `iteratee` functions have finished. Invoked with (err, results).
* @returns {Promise} a promise, if no callback provided
*/
exports.default = (0, _doParallelLimit2.default)(_filter2.default);
function filterLimit(coll, limit, iteratee, callback) {
return (0, _filter3.default)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(filterLimit, 4);
module.exports = exports['default'];

@@ -7,10 +7,14 @@ 'use strict';

var _filterLimit = require('./filterLimit');
var _filter2 = require('./internal/filter');
var _filterLimit2 = _interopRequireDefault(_filterLimit);
var _filter3 = _interopRequireDefault(_filter2);
var _doLimit = require('./internal/doLimit');
var _eachOfSeries = require('./eachOfSeries');
var _doLimit2 = _interopRequireDefault(_doLimit);
var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries);
var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -28,3 +32,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {Function} iteratee - A truth test to apply to each item in `coll`.

@@ -35,4 +39,8 @@ * The `iteratee` is passed a `callback(err, truthValue)`, which must be called

* `iteratee` functions have finished. Invoked with (err, results)
* @returns {Promise} a promise, if no callback provided
*/
exports.default = (0, _doLimit2.default)(_filterLimit2.default, 1);
function filterSeries(coll, iteratee, callback) {
return (0, _filter3.default)(_eachOfSeries2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(filterSeries, 3);
module.exports = exports['default'];

@@ -8,10 +8,2 @@ 'use strict';

var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _slice = require('./internal/slice');
var _slice2 = _interopRequireDefault(_slice);
var _reduce = require('./reduce');

@@ -25,6 +17,4 @@

var _arrayMap = require('lodash/_arrayMap');
var _promiseCallback = require('./internal/promiseCallback');
var _arrayMap2 = _interopRequireDefault(_arrayMap);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -70,6 +60,5 @@

*/
function seq() /*...functions*/{
var _functions = (0, _arrayMap2.default)(arguments, _wrapAsync2.default);
return function () /*...args*/{
var args = (0, _slice2.default)(arguments);
function seq(...functions) {
var _functions = functions.map(_wrapAsync2.default);
return function (...args) {
var that = this;

@@ -81,15 +70,14 @@

} else {
cb = _noop2.default;
cb = (0, _promiseCallback.promiseCallback)();
}
(0, _reduce2.default)(_functions, args, function (newargs, fn, cb) {
fn.apply(that, newargs.concat(function (err /*, ...nextargs*/) {
var nextargs = (0, _slice2.default)(arguments, 1);
cb(err, nextargs);
(0, _reduce2.default)(_functions, args, (newargs, fn, iterCb) => {
fn.apply(that, newargs.concat((err, ...nextargs) => {
iterCb(err, nextargs);
}));
}, function (err, results) {
cb.apply(that, [err].concat(results));
});
}, (err, results) => cb(err, ...results));
return cb[_promiseCallback.PROMISE_SYMBOL];
};
}
module.exports = exports['default'];

@@ -11,9 +11,9 @@ 'use strict';

var _doParallel = require('./internal/doParallel');
var _eachOf = require('./eachOf');
var _doParallel2 = _interopRequireDefault(_doParallel);
var _eachOf2 = _interopRequireDefault(_eachOf);
var _identity = require('lodash/identity');
var _awaitify = require('./internal/awaitify');
var _identity2 = _interopRequireDefault(_identity);
var _awaitify2 = _interopRequireDefault(_awaitify);

@@ -33,3 +33,3 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async truth test to apply to each item

@@ -43,2 +43,3 @@ * in the collections in parallel.

* tests. Invoked with (err, result).
* @returns {Promise} a promise, if no callback provided
* @example

@@ -54,3 +55,6 @@ *

*/
exports.default = (0, _doParallel2.default)((0, _createTester2.default)(Boolean, _identity2.default));
function some(coll, iteratee, callback) {
return (0, _createTester2.default)(Boolean, res => res)(_eachOf2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(some, 3);
module.exports = exports['default'];

@@ -11,9 +11,9 @@ 'use strict';

var _doParallelLimit = require('./internal/doParallelLimit');
var _eachOfLimit = require('./internal/eachOfLimit');
var _doParallelLimit2 = _interopRequireDefault(_doParallelLimit);
var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);
var _identity = require('lodash/identity');
var _awaitify = require('./internal/awaitify');
var _identity2 = _interopRequireDefault(_identity);
var _awaitify2 = _interopRequireDefault(_awaitify);

@@ -32,3 +32,3 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.

@@ -43,4 +43,8 @@ * @param {AsyncFunction} iteratee - An async truth test to apply to each item

* tests. Invoked with (err, result).
* @returns {Promise} a promise, if no callback provided
*/
exports.default = (0, _doParallelLimit2.default)((0, _createTester2.default)(Boolean, _identity2.default));
function someLimit(coll, limit, iteratee, callback) {
return (0, _createTester2.default)(Boolean, res => res)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(someLimit, 4);
module.exports = exports['default'];

@@ -7,10 +7,14 @@ 'use strict';

var _someLimit = require('./someLimit');
var _createTester = require('./internal/createTester');
var _someLimit2 = _interopRequireDefault(_someLimit);
var _createTester2 = _interopRequireDefault(_createTester);
var _doLimit = require('./internal/doLimit');
var _eachOfSeries = require('./eachOfSeries');
var _doLimit2 = _interopRequireDefault(_doLimit);
var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries);
var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -28,3 +32,3 @@

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async truth test to apply to each item

@@ -38,4 +42,8 @@ * in the collections in series.

* tests. Invoked with (err, result).
* @returns {Promise} a promise, if no callback provided
*/
exports.default = (0, _doLimit2.default)(_someLimit2.default, 1);
function someSeries(coll, iteratee, callback) {
return (0, _createTester2.default)(Boolean, res => res)(_eachOfSeries2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(someSeries, 3);
module.exports = exports['default'];

@@ -62,3 +62,3 @@ 'use strict';

return (0, _initialParams2.default)(function (args, callback) {
return (0, _initialParams2.default)((args, callback) => {
var timedOut = false;

@@ -78,5 +78,5 @@ var timer;

args.push(function () {
args.push((...cbArgs) => {
if (!timedOut) {
callback.apply(null, arguments);
callback(...cbArgs);
clearTimeout(timer);

@@ -88,5 +88,5 @@ }

timer = setTimeout(timeoutCallback, milliseconds);
fn.apply(null, args);
fn(...args);
});
}
module.exports = exports['default'];

@@ -6,2 +6,3 @@ 'use strict';

});
exports.default = times;

@@ -12,6 +13,2 @@ var _timesLimit = require('./timesLimit');

var _doLimit = require('./internal/doLimit');
var _doLimit2 = _interopRequireDefault(_doLimit);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -33,2 +30,3 @@

* @param {Function} callback - see {@link module:Collections.map}.
* @returns {Promise} a promise, if no callback is provided
* @example

@@ -52,3 +50,5 @@ *

*/
exports.default = (0, _doLimit2.default)(_timesLimit2.default, Infinity);
function times(n, iteratee, callback) {
return (0, _timesLimit2.default)(n, Infinity, iteratee, callback);
}
module.exports = exports['default'];

@@ -6,3 +6,3 @@ 'use strict';

});
exports.default = timeLimit;
exports.default = timesLimit;

@@ -13,5 +13,5 @@ var _mapLimit = require('./mapLimit');

var _baseRange = require('lodash/_baseRange');
var _range = require('./internal/range');
var _baseRange2 = _interopRequireDefault(_baseRange);
var _range2 = _interopRequireDefault(_range);

@@ -39,7 +39,8 @@ var _wrapAsync = require('./internal/wrapAsync');

* @param {Function} callback - see [async.map]{@link module:Collections.map}.
* @returns {Promise} a promise, if no callback is provided
*/
function timeLimit(count, limit, iteratee, callback) {
function timesLimit(count, limit, iteratee, callback) {
var _iteratee = (0, _wrapAsync2.default)(iteratee);
(0, _mapLimit2.default)((0, _baseRange2.default)(0, count, 1), limit, _iteratee, callback);
return (0, _mapLimit2.default)((0, _range2.default)(count), limit, _iteratee, callback);
}
module.exports = exports['default'];

@@ -6,2 +6,3 @@ 'use strict';

});
exports.default = timesSeries;

@@ -12,6 +13,2 @@ var _timesLimit = require('./timesLimit');

var _doLimit = require('./internal/doLimit');
var _doLimit2 = _interopRequireDefault(_doLimit);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -32,4 +29,7 @@

* @param {Function} callback - see {@link module:Collections.map}.
* @returns {Promise} a promise, if no callback is provided
*/
exports.default = (0, _doLimit2.default)(_timesLimit2.default, 1);
function timesSeries(n, iteratee, callback) {
return (0, _timesLimit2.default)(n, 1, iteratee, callback);
}
module.exports = exports['default'];

@@ -8,10 +8,2 @@ 'use strict';

var _isArray = require('lodash/isArray');
var _isArray2 = _interopRequireDefault(_isArray);
var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _eachOf = require('./eachOf');

@@ -29,2 +21,4 @@

var _promiseCallback = require('./internal/promiseCallback');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -34,3 +28,3 @@

* A relative of `reduce`. Takes an Object or Array, and iterates over each
* element in series, each step potentially mutating an `accumulator` value.
* element in parallel, each step potentially mutating an `accumulator` value.
* The type of the accumulator defaults to the type of collection passed in.

@@ -43,3 +37,3 @@ *

* @category Collection
* @param {Array|Iterable|Object} coll - A collection to iterate over.
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {*} [accumulator] - The initial state of the transform. If omitted,

@@ -53,2 +47,3 @@ * it will default to an empty Object or Array, depending on the type of `coll`

* Invoked with (err, result).
* @returns {Promise} a promise, if no callback provided
* @example

@@ -59,3 +54,3 @@ *

* process.nextTick(function() {
* acc.push(item * 2)
* acc[index] = item * 2
* callback(null)

@@ -79,16 +74,15 @@ * });

function transform(coll, accumulator, iteratee, callback) {
if (arguments.length <= 3) {
if (arguments.length <= 3 && typeof accumulator === 'function') {
callback = iteratee;
iteratee = accumulator;
accumulator = (0, _isArray2.default)(coll) ? [] : {};
accumulator = Array.isArray(coll) ? [] : {};
}
callback = (0, _once2.default)(callback || _noop2.default);
callback = (0, _once2.default)(callback || (0, _promiseCallback.promiseCallback)());
var _iteratee = (0, _wrapAsync2.default)(iteratee);
(0, _eachOf2.default)(coll, function (v, k, cb) {
(0, _eachOf2.default)(coll, (v, k, cb) => {
_iteratee(accumulator, v, k, cb);
}, function (err) {
callback(err, accumulator);
});
}, err => callback(err, accumulator));
return callback[_promiseCallback.PROMISE_SYMBOL];
}
module.exports = exports['default'];

@@ -21,6 +21,6 @@ "use strict";

function unmemoize(fn) {
return function () {
return (fn.unmemoized || fn).apply(null, arguments);
return (...args) => {
return (fn.unmemoized || fn)(...args);
};
}
module.exports = exports["default"];
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});

@@ -12,2 +12,6 @@ exports.default = until;

var _wrapAsync = require('./internal/wrapAsync');
var _wrapAsync2 = _interopRequireDefault(_wrapAsync);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -28,4 +32,4 @@

* @category Control Flow
* @param {Function} test - synchronous truth test to perform before each
* execution of `iteratee`. Invoked with ().
* @param {AsyncFunction} test - asynchronous truth test to perform before each
* execution of `iteratee`. Invoked with (callback).
* @param {AsyncFunction} iteratee - An async function which is called each time

@@ -37,8 +41,22 @@ * `test` fails. Invoked with (callback).

* callback. Invoked with (err, [results]);
* @returns {Promise} a promise, if a callback is not passed
*
* @example
* const results = []
* async.until(function iter(next) {
* fetchPage(url, (err, body) => {
* if (err) return next(err)
* results = results.concat(body.objects)
* next(err, body)
* })
* }, function test(page, cb) {
* cb(null, page.next == null)
* }, function done (err) {
* // all pages have been fetched
* })
*/
function until(test, iteratee, callback) {
(0, _whilst2.default)(function () {
return !test.apply(this, arguments);
}, iteratee, callback);
const _test = (0, _wrapAsync2.default)(test);
return (0, _whilst2.default)(cb => _test((err, truth) => cb(err, !truth)), iteratee, callback);
}
module.exports = exports['default'];

@@ -7,32 +7,2 @@ 'use strict';

exports.default = function (tasks, callback) {
callback = (0, _once2.default)(callback || _noop2.default);
if (!(0, _isArray2.default)(tasks)) return callback(new Error('First argument to waterfall must be an array of functions'));
if (!tasks.length) return callback();
var taskIndex = 0;
function nextTask(args) {
var task = (0, _wrapAsync2.default)(tasks[taskIndex++]);
args.push((0, _onlyOnce2.default)(next));
task.apply(null, args);
}
function next(err /*, ...args*/) {
if (err || taskIndex === tasks.length) {
return callback.apply(null, arguments);
}
nextTask((0, _slice2.default)(arguments, 1));
}
nextTask([]);
};
var _isArray = require('lodash/isArray');
var _isArray2 = _interopRequireDefault(_isArray);
var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _once = require('./internal/once');

@@ -42,6 +12,2 @@

var _slice = require('./internal/slice');
var _slice2 = _interopRequireDefault(_slice);
var _onlyOnce = require('./internal/onlyOnce');

@@ -55,6 +21,8 @@

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
module.exports = exports['default'];
/**

@@ -116,2 +84,26 @@ * Runs the `tasks` array of functions in series, each passing their results to

* }
*/
*/
function waterfall(tasks, callback) {
callback = (0, _once2.default)(callback);
if (!Array.isArray(tasks)) return callback(new Error('First argument to waterfall must be an array of functions'));
if (!tasks.length) return callback();
var taskIndex = 0;
function nextTask(args) {
var task = (0, _wrapAsync2.default)(tasks[taskIndex++]);
task(...args, (0, _onlyOnce2.default)(next));
}
function next(err, ...args) {
if (err === false) return;
if (err || taskIndex === tasks.length) {
return callback(err, ...args);
}
nextTask(args);
}
nextTask([]);
}
exports.default = (0, _awaitify2.default)(waterfall);
module.exports = exports['default'];

@@ -6,12 +6,3 @@ 'use strict';

});
exports.default = whilst;
var _noop = require('lodash/noop');
var _noop2 = _interopRequireDefault(_noop);
var _slice = require('./internal/slice');
var _slice2 = _interopRequireDefault(_slice);
var _onlyOnce = require('./internal/onlyOnce');

@@ -25,2 +16,6 @@

var _awaitify = require('./internal/awaitify');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -37,3 +32,3 @@

* @category Control Flow
* @param {Function} test - synchronous truth test to perform before each
* @param {AsyncFunction} test - asynchronous truth test to perform before each
* execution of `iteratee`. Invoked with ().

@@ -46,3 +41,3 @@ * @param {AsyncFunction} iteratee - An async function which is called each time

* callback. Invoked with (err, [results]);
* @returns undefined
* @returns {Promise} a promise, if no callback is passed
* @example

@@ -52,4 +47,4 @@ *

* async.whilst(
* function() { return count < 5; },
* function(callback) {
* function test(cb) { cb(null, count < 5;) },
* function iter(callback) {
* count++;

@@ -66,13 +61,24 @@ * setTimeout(function() {

function whilst(test, iteratee, callback) {
callback = (0, _onlyOnce2.default)(callback || _noop2.default);
var _iteratee = (0, _wrapAsync2.default)(iteratee);
if (!test()) return callback(null);
var next = function (err /*, ...args*/) {
callback = (0, _onlyOnce2.default)(callback);
var _fn = (0, _wrapAsync2.default)(iteratee);
var _test = (0, _wrapAsync2.default)(test);
var results;
function next(err, ...rest) {
if (err) return callback(err);
if (test()) return _iteratee(next);
var args = (0, _slice2.default)(arguments, 1);
callback.apply(null, [null].concat(args));
};
_iteratee(next);
results = rest;
if (err === false) return;
_test(check);
}
function check(err, truth) {
if (err) return callback(err);
if (err === false) return;
if (!truth) return callback(null, ...results);
_fn(next);
}
return _test(check);
}
exports.default = (0, _awaitify2.default)(whilst, 3);
module.exports = exports['default'];

@@ -8,6 +8,2 @@ 'use strict';

var _isObject = require('lodash/isObject');
var _isObject2 = _interopRequireDefault(_isObject);
var _initialParams = require('./internal/initialParams');

@@ -21,2 +17,4 @@

var _wrapAsync = require('./internal/wrapAsync');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -81,2 +79,10 @@

function asyncify(func) {
if ((0, _wrapAsync.isAsync)(func)) {
return function (...args /*, callback*/) {
const callback = args.pop();
const promise = func.apply(this, args);
return handlePromise(promise, callback);
};
}
return (0, _initialParams2.default)(function (args, callback) {

@@ -90,8 +96,4 @@ var result;

// if result is Promise object
if ((0, _isObject2.default)(result) && typeof result.then === 'function') {
result.then(function (value) {
invokeCallback(callback, null, value);
}, function (err) {
invokeCallback(callback, err.message ? err : new Error(err));
});
if (result && typeof result.then === 'function') {
return handlePromise(result, callback);
} else {

@@ -103,13 +105,19 @@ callback(null, result);

function handlePromise(promise, callback) {
return promise.then(value => {
invokeCallback(callback, null, value);
}, err => {
invokeCallback(callback, err && err.message ? err : new Error(err));
});
}
function invokeCallback(callback, error, value) {
try {
callback(error, value);
} catch (e) {
(0, _setImmediate2.default)(rethrow, e);
} catch (err) {
(0, _setImmediate2.default)(e => {
throw e;
}, err);
}
}
function rethrow(error) {
throw error;
}
module.exports = exports['default'];

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc