UNPKG

chain-able

Version:

interfaces that describe their intentions.

82 lines (76 loc) 5.2 kB
var isFunction = require('../is/function') var ignored = require('../ignored') var ObjectKeys = require('../util/keys') var ObjectAssign = require('../util/assign') /** * @desc recursively reduce maps and objects that include reducable data * @since 4.0.0 * * @sig reduced => object => isMap(object) -> reduced; merge(object, reduced) * * @param {Object | any} reduced merged object and reduced * @return {Function} Function(values: Object) * * @see ChainedMap * * @example * * const map = new Map() * map.set('eh', true) * const nested = new Map() * nested.set('reduced', true) * * const chain = { * entries() { * return { * nested: reduce(nested), * key: true, * } * }, * } * const reduced = reduce(map) * reduceEntries(reduced)({chain}) * // => { * eh: true, * chain: { * nested: { * reduced: true, * key: true, * }, * }, * } * * @example * * const reducedIgnored = { * canada: { * store: chain, * }, * } * const ignored = reduceEntries(reduced)(reducedIgnored) * //=> { * eh: true, * chain: { * nested: { * reduced: true, * }, * key: true, * }, * } * */ module.exports = function (reduced) { return function (obj) { var keys = ObjectKeys(obj) for (var k = 0; k < keys.length; k++) { var key = keys[k] if (ignored(key)) { continue } var val = obj[key] if (val && isFunction(val.entries)) { ObjectAssign(reduced, {[key]: val.entries(true) || {}}) } } return reduced }; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cmllcy5qcyIsInNvdXJjZXMiOlsiZW50cmllcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi4vaXMvZnVuY3Rpb24nKVxuY29uc3QgaWdub3JlZCA9IHJlcXVpcmUoJy4uL2lnbm9yZWQnKVxuY29uc3QgT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL3V0aWwva2V5cycpXG5jb25zdCBPYmplY3RBc3NpZ24gPSByZXF1aXJlKCcuLi91dGlsL2Fzc2lnbicpXG5cbi8qKlxuICogQGRlc2MgcmVjdXJzaXZlbHkgcmVkdWNlIG1hcHMgYW5kIG9iamVjdHMgdGhhdCBpbmNsdWRlIHJlZHVjYWJsZSBkYXRhXG4gKiBAc2luY2UgNC4wLjBcbiAqXG4gKiBAc2lnIHJlZHVjZWQgPT4gb2JqZWN0ID0+IGlzTWFwKG9iamVjdCkgLT4gcmVkdWNlZDsgbWVyZ2Uob2JqZWN0LCByZWR1Y2VkKVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0IHwgYW55fSByZWR1Y2VkIG1lcmdlZCBvYmplY3QgYW5kIHJlZHVjZWRcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSBGdW5jdGlvbih2YWx1ZXM6IE9iamVjdClcbiAqXG4gKiBAc2VlIENoYWluZWRNYXBcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgY29uc3QgbWFwID0gbmV3IE1hcCgpXG4gKiAgIG1hcC5zZXQoJ2VoJywgdHJ1ZSlcbiAqICAgY29uc3QgbmVzdGVkID0gbmV3IE1hcCgpXG4gKiAgIG5lc3RlZC5zZXQoJ3JlZHVjZWQnLCB0cnVlKVxuICpcbiAqICAgY29uc3QgY2hhaW4gPSB7XG4gKiAgICAgZW50cmllcygpIHtcbiAqICAgICAgIHJldHVybiB7XG4gKiAgICAgICAgIG5lc3RlZDogcmVkdWNlKG5lc3RlZCksXG4gKiAgICAgICAgIGtleTogdHJ1ZSxcbiAqICAgICAgIH1cbiAqICAgICB9LFxuICogICB9XG4gKiAgIGNvbnN0IHJlZHVjZWQgPSByZWR1Y2UobWFwKVxuICogICByZWR1Y2VFbnRyaWVzKHJlZHVjZWQpKHtjaGFpbn0pXG4gKiAgIC8vID0+IHtcbiAqICAgICBlaDogdHJ1ZSxcbiAqICAgICBjaGFpbjoge1xuICogICAgICAgbmVzdGVkOiB7XG4gKiAgICAgICAgIHJlZHVjZWQ6IHRydWUsXG4gKiAgICAgICAgIGtleTogdHJ1ZSxcbiAqICAgICAgIH0sXG4gKiAgICAgfSxcbiAqICAgfVxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogICBjb25zdCByZWR1Y2VkSWdub3JlZCA9IHtcbiAqICAgICBjYW5hZGE6IHtcbiAqICAgICAgIHN0b3JlOiBjaGFpbixcbiAqICAgICB9LFxuICogICB9XG4gKiAgIGNvbnN0IGlnbm9yZWQgPSByZWR1Y2VFbnRyaWVzKHJlZHVjZWQpKHJlZHVjZWRJZ25vcmVkKVxuICogICAvLz0+IHtcbiAqICAgICBlaDogdHJ1ZSxcbiAqICAgICBjaGFpbjoge1xuICogICAgICAgbmVzdGVkOiB7XG4gKiAgICAgICAgIHJlZHVjZWQ6IHRydWUsXG4gKiAgICAgICB9LFxuICogICAgICAga2V5OiB0cnVlLFxuICogICAgIH0sXG4gKiAgIH1cbiAqXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gcmVkdWNlZCA9PiBvYmogPT4ge1xuICBjb25zdCBrZXlzID0gT2JqZWN0S2V5cyhvYmopXG5cbiAgZm9yIChsZXQgayA9IDA7IGsgPCBrZXlzLmxlbmd0aDsgaysrKSB7XG4gICAgY29uc3Qga2V5ID0ga2V5c1trXVxuXG4gICAgaWYgKGlnbm9yZWQoa2V5KSkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb25zdCB2YWwgPSBvYmpba2V5XVxuICAgIGlmICh2YWwgJiYgaXNGdW5jdGlvbih2YWwuZW50cmllcykpIHtcbiAgICAgIE9iamVjdEFzc2lnbihyZWR1Y2VkLCB7W2tleV06IHZhbC5lbnRyaWVzKHRydWUpIHx8IHt9fSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVkdWNlZFxufVxuIl0sIm5hbWVzIjpbImNvbnN0IiwibGV0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7QUFDNUNBLEdBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztBQUNyQ0EsR0FBSyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO0FBQzFDQSxHQUFLLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyRDlDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsVUFBQSxPQUFPLENBQUEsQ0FBQyxBQUFHLFNBQUEsVUFBQSxHQUFHLENBQUEsQ0FBQyxBQUFHO0VBQ2pDQSxHQUFLLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUM7O0VBRTVCLEtBQUtDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3BDRCxHQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7O0lBRW5CLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO01BQ2hCLFFBQVE7S0FDVDs7SUFFREEsR0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ3BCLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7TUFDbEMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7S0FDeEQ7R0FDRjs7RUFFRCxPQUFPLE9BQU87Q0FDZixHQUFBOyJ9