| 'use strict'; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = reflectAll; | |
| var _reflect = require('./reflect'); | |
| var _reflect2 = _interopRequireDefault(_reflect); | |
| var _isArray = require('lodash/isArray'); | |
| var _isArray2 = _interopRequireDefault(_isArray); | |
| var _arrayMap2 = require('lodash/_arrayMap'); | |
| var _arrayMap3 = _interopRequireDefault(_arrayMap2); | |
| var _baseForOwn = require('lodash/_baseForOwn'); | |
| var _baseForOwn2 = _interopRequireDefault(_baseForOwn); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| /** | |
| * A helper function that wraps an array or an object of functions with `reflect`. | |
| * | |
| * @name reflectAll | |
| * @static | |
| * @memberOf module:Utils | |
| * @method | |
| * @see [async.reflect]{@link module:Utils.reflect} | |
| * @category Util | |
| * @param {Array|Object|Iterable} tasks - The collection of | |
| * [async functions]{@link AsyncFunction} to wrap in `async.reflect`. | |
| * @returns {Array} Returns an array of async functions, each wrapped in | |
| * `async.reflect` | |
| * @example | |
| * | |
| * let tasks = [ | |
| * function(callback) { | |
| * setTimeout(function() { | |
| * callback(null, 'one'); | |
| * }, 200); | |
| * }, | |
| * function(callback) { | |
| * // do some more stuff but error ... | |
| * callback(new Error('bad stuff happened')); | |
| * }, | |
| * function(callback) { | |
| * setTimeout(function() { | |
| * callback(null, 'two'); | |
| * }, 100); | |
| * } | |
| * ]; | |
| * | |
| * async.parallel(async.reflectAll(tasks), | |
| * // optional callback | |
| * function(err, results) { | |
| * // values | |
| * // results[0].value = 'one' | |
| * // results[1].error = Error('bad stuff happened') | |
| * // results[2].value = 'two' | |
| * }); | |
| * | |
| * // an example using an object instead of an array | |
| * let tasks = { | |
| * one: function(callback) { | |
| * setTimeout(function() { | |
| * callback(null, 'one'); | |
| * }, 200); | |
| * }, | |
| * two: function(callback) { | |
| * callback('two'); | |
| * }, | |
| * three: function(callback) { | |
| * setTimeout(function() { | |
| * callback(null, 'three'); | |
| * }, 100); | |
| * } | |
| * }; | |
| * | |
| * async.parallel(async.reflectAll(tasks), | |
| * // optional callback | |
| * function(err, results) { | |
| * // values | |
| * // results.one.value = 'one' | |
| * // results.two.error = 'two' | |
| * // results.three.value = 'three' | |
| * }); | |
| */ | |
| function reflectAll(tasks) { | |
| var results; | |
| if ((0, _isArray2.default)(tasks)) { | |
| results = (0, _arrayMap3.default)(tasks, _reflect2.default); | |
| } else { | |
| results = {}; | |
| (0, _baseForOwn2.default)(tasks, function (task, key) { | |
| results[key] = _reflect2.default.call(this, task); | |
| }); | |
| } | |
| return results; | |
| } | |
| module.exports = exports['default']; |