import { curryN, pipe, mergeAll } from 'ramda'; import paths from './paths'; /** * Merge objects under corresponding paths. * * @func mergePaths * @memberOf RA * @since {@link https://char0n.github.io/ramda-adjunct/1.17.0|v1.17.0} * @category Object * @sig [[k]] -> {k: {a}} -> {a} * @see {@link RA.mergeProps|mergeProps} * @param {!Array} paths The property paths to merge * @param {!Object} obj The object to query * @return {!Object} The object composed of merged property paths of obj * @example * * const obj = { * foo: { fooInner: { fooInner2: 1 } }, * bar: { barInner: 2 } * }; * * { ...obj.foo.fooInner, ...obj.bar }; //=> { fooInner2: 1, barInner: 2 } * RA.mergePaths([['foo', 'fooInner'], ['bar']], obj); //=> { fooInner2: 1, barInner: 2 } */ const mergePaths = curryN(2, pipe(paths, mergeAll)); export default mergePaths;