UNPKG

@codibre/fluent-iterable

Version:

Provides LINQ-like fluent api operations for iterables and async iterables (ES2018+).

17 lines (16 loc) 769 B
"use strict"; 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; })), {}); }; }