| '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']; |