UNPKG

map-transform

Version:

Map and transform objects with mapping definitions

28 lines 1.12 kB
import { ensureArray } from '../utils/array.js'; import { defToDataMapper } from '../utils/definitionHelpers.js'; import { isObject } from '../utils/is.js'; import { flipState } from '../utils/stateHelpers.js'; const undefinedFirst = ([_a, a], [_b, b]) => (b === undefined && a !== undefined ? 1 : a === undefined ? -1 : 0); function mergeTransformer({ path }, flip) { return (options) => { const getFns = ensureArray(path).map((path) => defToDataMapper(path, options)); return async function mergePipelines(data, state) { const values = []; for (const fn of getFns) { values.push(await fn(data, flipState(state, flip))); } return Object.fromEntries(values .flat() .filter(isObject) .flatMap(Object.entries) .sort(undefinedFirst)); }; }; } export const merge = function merge(props) { return mergeTransformer(props, false); }; export const mergeRev = function mergeRev(props) { return mergeTransformer(props, true); }; //# sourceMappingURL=merge.js.map