{"version":3,"sources":["lib/isObj.js","lib/keys.js","lib/toPairs.js","lib/fromPairs.js","lib/flatten.js","lib/get.js","lib/set.js","lib/expand.js","lib/merge.js","lib/redact.js","browser.js"],"names":["isObj","o","Object","Array","isArray","module","exports","keys","require","toPairs","reduce","acc","k","concat","fromPairs","a","p","flatten","parent","flatObj","create","forEach","dotKey","key","replace","arrItem","idx","get","set","value","curArr","rReg","curFull","split","remaining","length","substr","cur","indexOf","exec","expand","newObj","merge","obs","redact","redactions","r","values","includes"],"mappings":"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","file":"index.map","sourceRoot":"..","sourcesContent":["/**\n * Determines if parameter passed is an object literal\n * @param {*} o The 'object' to test\n * @return {Boolean}\n */\nconst isObj = (o) => o === Object(o) && !Array.isArray(o)\n\nmodule.exports = isObj\n","/**\n * Just an alias for Object.keys\n * @param {Object} o Object from which to get keys\n * @returns {Array} Keys\n */\nconst keys = o => Object.keys(o)\n\nmodule.exports = keys\n","const keys = require('./keys')\n\n/**\n * Simple toPairs function to convert key value pairs to array of [ key, value ] arrays\n * @param {Object} o Object from which to generate pairs\n * @returns {Array} Pairs of [ key, value ]\n */\nconst toPairs = o => keys(o).reduce((acc, k) => acc.concat([[k, o[k]]]), [])\n\nmodule.exports = toPairs\n","/**\n * Converts array of key-value arrays to object\n * @param {Array} a Array to convert key-value pairs to object\n * @returns {Object}\n */\nconst fromPairs = (a) => a.reduce((acc, p) => {\n  acc[p[0]] = p[1]\n  return acc\n}, {})\n\nmodule.exports = fromPairs\n","const isObj = require('./isObj')\nconst keys = require('./keys')\n\n/**\n * Flattens a (possibly) multi-level object literal to a dot-notated key\n * single-level object\n * @param {Object} o Object to flatten\n * @param {String} parent The parent key - for recursion\n * @param {Object} flatObj The aggregator - for recursion\n */\nconst flatten = (o, parent = '', flatObj = Object.create({})) => {\n  if (!isObj(o) && !Array.isArray(o)) return o\n  keys(o).forEach(key => {\n    // Create a string of the key, remove any tacked-on leading '.'\n    const dotKey = `${parent}.${key}`.replace(/^\\./, '')\n    if (isObj(o[key])) {\n      flatten(o[key], dotKey, flatObj)\n    } else if (Array.isArray(o[key])) {\n      o[key].forEach((arrItem, idx) => {\n        if (isObj(arrItem) || Array.isArray(arrItem)) {\n          flatten(arrItem, `${dotKey}[${idx}]`, flatObj)\n        } else {\n          flatObj[`${dotKey}[${idx}]`] = arrItem\n        }\n      })\n    } else {\n      flatObj[dotKey] = o[key]\n    }\n  })\n  return flatObj\n}\n\nmodule.exports = flatten\n","const flatten = require('./flatten')\n\n/**\n * Gets a value in an object from the key (allowing for dot-notation)\n * @param {Object} o The object from which to get the value\n * @param {String} key The key to search\n */\nconst get = (o, key) => flatten(o)[key]\n\nmodule.exports = get\n","/* eslint no-cond-assign: 0 */\n/**\n * Sets a propert on an object based on provided key (can use dot-notation)\n * @param {Object} o Object to set\n * @param {String} key Key (allowing dot-notation) to set\n * @param {*} value Value to set\n */\nconst set = (o, key, value) => {\n  const rReg = /\\[(\\d+)\\](?=(?:\\[\\d+\\])*)/g\n  const curFull = key.split('.', 1)[0] // Entire first segment\n  const remaining = key.length === curFull.length ? '' : key.substr(curFull.length + 1) // Remaining segments\n  let cur = curFull.substr(0, curFull.indexOf('[')) || curFull // First segment without trailing array indexes\n  let curArr // Iterator over the array indexes\n  while (curArr = rReg.exec(curFull)) {\n    if (!Array.isArray(o[cur])) {\n      o[cur] = []\n    }\n    // Advance o to the array, cur to the array index\n    o = o[cur]\n    cur = curArr[1]\n  }\n  if (!remaining) {\n    // At destination, set value\n    o[cur] = value\n  } else {\n    // We're going deeper, create an object to traverse into\n    if (!o[cur]) o[cur] = {}\n    // Recurse with next step in dot-notation\n    set(o[cur], remaining, value)\n  }\n}\n\nmodule.exports = set\n","const keys = require('./keys')\nconst set = require('./set')\n\n/**\n * Expands a dot-notated, flattened object to a nested object literal\n * @param {Object} o Flattened (dot-notated) object\n * @returns {Object}\n */\nconst expand = (o) => {\n  const newObj = Object.create({})\n  keys(o).forEach(k => {\n    set(newObj, k, o[k])\n  })\n  return newObj\n}\n\nmodule.exports = expand\n","const isObj = require('./isObj')\nconst keys = require('./keys')\n\nconst merge = (...obs) => {\n  return obs.reduce((acc, o) => {\n    keys(o).forEach((k) => {\n      if (Array.isArray(acc[k]) && Array.isArray(o[k])) {\n        acc[k] = acc[k].concat(...o[k])\n      } else if (isObj(acc[k]) && isObj(o[k])) {\n        acc[k] = merge(acc[k], o[k])\n      } else {\n        acc[k] = o[k]\n      }\n    })\n    return acc\n  }, {})\n}\n\nmodule.exports = merge\n","const keys = require('./keys')\nconst flatten = require('./flatten')\nconst expand = require('./expand')\nconst merge = require('./merge')\n\n/**\n * Redacts keys and/or values from an object literal\n * @param {Object} o The object from which to redact keys or values\n * @param {Object} redactions `keys<Array>` and `values<Array>` to redact\n * @param {String} prevKey Previous key position used in recursion\n */\nconst redact = (o, redactions) => {\n  const r = merge({ keys: [], values: [] }, redactions)\n  const flatObj = flatten(o)\n  return expand(keys(flatObj).reduce((acc, k) => {\n    if (!r.keys.includes(k) && !r.keys.includes(k.replace(/\\[(.+?)\\]/g, '[n]')) && !r.values.includes(flatObj[k])) {\n      acc[k] = flatObj[k]\n    }\n    return acc\n  }, {}))\n}\n\nmodule.exports = redact\n","import isObj from './lib/isObj'\nimport keys from './lib/keys'\nimport toPairs from './lib/toPairs'\nimport fromPairs from './lib/fromPairs'\nimport get from './lib/get'\nimport set from './lib/set'\nimport flatten from './lib/flatten'\nimport expand from './lib/expand'\nimport redact from './lib/redact'\nimport merge from './lib/merge'\n\nexport {\n  isObj, keys, toPairs, fromPairs, get, set, flatten, expand, redact, merge\n}\n"]}