@codibre/fluent-iterable
Version:
Provides LINQ-like fluent api operations for iterables and async iterables (ES2018+).
17 lines (16 loc) • 769 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.toObjectRecipe = toObjectRecipe;
const utils_1 = require("../utils");
const prepare_1 = require("../types-internal/prepare");
function toObjectRecipe({ reduce, resolver }) {
return function (baseKeySelector, baseValueSelector = utils_1.identity, choose) {
const keySelector = (0, prepare_1.prepare)(baseKeySelector);
const valueSelector = (0, prepare_1.prepare)(baseValueSelector);
return reduce.call(this, (res, t) => resolver(valueSelector(t), (v) => resolver(keySelector(t), (k) => {
const oldValue = res[k];
res[k] = oldValue !== undefined && choose ? choose(oldValue, v) : v;
return res;
})), {});
};
}