UNPKG

apr-reduce

Version:

Reduces coll into a single value using an async iteratee to return each successive step.

50 lines (45 loc) 3.8 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('lodash.defaults'), require('apr-engine-each')) : typeof define === 'function' && define.amd ? define('apr-reduce', ['lodash.defaults', 'apr-engine-each'], factory) : (global['apr-reduce'] = factory(global.lodash,global.aprEngineEach)); }(this, (function (lodash,aprEngineEach) { 'use strict'; lodash = lodash && lodash.hasOwnProperty('default') ? lodash['default'] : lodash; aprEngineEach = aprEngineEach && aprEngineEach.hasOwnProperty('default') ? aprEngineEach['default'] : aprEngineEach; /** * <a id="reduce"></a> * Reduces `coll` into a single value using an async `iteratee` to return each successive step. * * [![](https://img.shields.io/npm/v/apr-reduce.svg?style=flat-square)](https://www.npmjs.com/package/apr-reduce) [![](https://img.shields.io/npm/l/apr-reduce.svg?style=flat-square)](https://www.npmjs.com/package/apr-reduce) * * @kind function * @name reduce * @param {Array|Object|Iterable} input * @param {Function} iteratee * @returns {Promise} * * @example * import reduce from 'apr-reduce'; * * const sum = await reduce([1, 2, 3], async (sum, item) => * new Promise((resolve) => resolve(sum + item)) * ); */ var reduce = function (input, fn, sum, opts) { return aprEngineEach({ input: input, opts: lodash(opts, { limit: 1 }), after: function after(value, item) { sum = value; }, call: function call(item) { return fn(sum, item.value, item.key, input); } }).then(function () { return sum; }); }; return reduce; }))); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjpudWxsLCJzb3VyY2VzIjpbIi9Vc2Vycy9yYW1pdG9zL2Rldi9hcHIvcGFja2FnZXMvcmVkdWNlL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGRlZmF1bHRzID0gcmVxdWlyZSgnbG9kYXNoLmRlZmF1bHRzJyk7XG5jb25zdCBlYWNoID0gcmVxdWlyZSgnYXByLWVuZ2luZS1lYWNoJyk7XG5cbi8qKlxuICogPGEgaWQ9XCJyZWR1Y2VcIj48L2E+XG4gKiBSZWR1Y2VzIGBjb2xsYCBpbnRvIGEgc2luZ2xlIHZhbHVlIHVzaW5nIGFuIGFzeW5jIGBpdGVyYXRlZWAgdG8gcmV0dXJuIGVhY2ggc3VjY2Vzc2l2ZSBzdGVwLlxuICpcbiAqIFshW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9hcHItcmVkdWNlLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2Fwci1yZWR1Y2UpIFshW10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vbC9hcHItcmVkdWNlLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSldKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2Fwci1yZWR1Y2UpXG4gKlxuICogQGtpbmQgZnVuY3Rpb25cbiAqIEBuYW1lIHJlZHVjZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R8SXRlcmFibGV9IGlucHV0XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZVxuICogQHJldHVybnMge1Byb21pc2V9XG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCByZWR1Y2UgZnJvbSAnYXByLXJlZHVjZSc7XG4gKlxuICogY29uc3Qgc3VtID0gYXdhaXQgcmVkdWNlKFsxLCAyLCAzXSwgYXN5bmMgKHN1bSwgaXRlbSkgPT5cbiAqICAgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHJlc29sdmUoc3VtICsgaXRlbSkpXG4gKiApO1xuICovXG5tb2R1bGUuZXhwb3J0cyA9IChpbnB1dCwgZm4sIHN1bSwgb3B0cykgPT5cbiAgZWFjaCh7XG4gICAgaW5wdXQsXG4gICAgb3B0czogZGVmYXVsdHMob3B0cywge1xuICAgICAgbGltaXQ6IDFcbiAgICB9KSxcbiAgICBhZnRlcjogKHZhbHVlLCBpdGVtKSA9PiB7XG4gICAgICBzdW0gPSB2YWx1ZTtcbiAgICB9LFxuICAgIGNhbGw6IGl0ZW0gPT4gZm4oc3VtLCBpdGVtLnZhbHVlLCBpdGVtLmtleSwgaW5wdXQpXG4gIH0pLnRoZW4oKCkgPT4gc3VtKTtcbiJdLCJuYW1lcyI6WyJtb2R1bGUiLCJpbnB1dCIsImZuIiwic3VtIiwib3B0cyIsImVhY2giLCJkZWZhdWx0cyIsInZhbHVlIiwiaXRlbSIsImtleSIsInRoZW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUdBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJBQSxVQUFBLEdBQWlCLFVBQUNDLEtBQUQsRUFBUUMsRUFBUixFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQjtTQUNmQyxjQUFLO2dCQUFBO1VBRUdDLE9BQVNGLElBQVQsRUFBZTthQUNaO0tBREgsQ0FGSDtXQUtJLGVBQUNHLEtBQUQsRUFBUUMsSUFBUixFQUFpQjtZQUNoQkQsS0FBTjtLQU5DO1VBUUc7YUFBUUwsR0FBR0MsR0FBSCxFQUFRSyxLQUFLRCxLQUFiLEVBQW9CQyxLQUFLQyxHQUF6QixFQUE4QlIsS0FBOUIsQ0FBUjs7R0FSUixFQVNHUyxJQVRILENBU1E7V0FBTVAsR0FBTjtHQVRSLENBRGU7Q0FBakI7Ozs7Ozs7OyJ9