@codibre/fluent-iterable
Version:
Provides LINQ-like fluent api operations for iterables and async iterables (ES2018+).
17 lines (16 loc) • 678 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.reduceRecipe = reduceRecipe;
const utils_1 = require("../utils");
function reduceRecipe(reduceAndMap, resolver) {
return function (reducer, initial) {
if (arguments.length > 1) {
return reduceAndMap.call(this, reducer, initial, utils_1.identity);
}
const iteratorFunc = Symbol.iterator in this
? this[Symbol.iterator]
: this[Symbol.asyncIterator];
const iterator = iteratorFunc.call(this);
return resolver(iterator.next(), (first) => reduceAndMap.call(iterator, reducer, first.value, utils_1.identity));
};
}