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