{"version":3,"sources":["../node_modules/dot-object/index.js"],"names":["_process","v","mod","i","r","undefined","Array","isArray","length","parseKey","key","val","test","parseInt","isObject","Object","prototype","toString","call","isArrayOrObject","isEmptyObject","keys","blacklist","blacklistFilter","part","indexOf","parsePath","path","sep","replace","parts","split","filter","Error","hasOwnProperty","DotObject","separator","override","useArray","useBrackets","this","keepArray","cleanup","dotDefault","wrap","method","apply","arguments","_fill","a","obj","k","shift","isIndex","object","mods","self","forEach","ok","join","str","pick","remove","reindexArray","cp","splice","slice","push","n","delete","_cleanup","ret","root","set","del","move","source","target","merge","transfer","obj1","obj2","copy","JSON","parse","stringify","j","transform","recipe","tgt","bind","dot","index","previousKey","concat","prop","defineProperty","get","module","exports"],"mappings":"uGAEA,SAASA,EAAUC,EAAGC,GACpB,IAAIC,EACAC,EAEJ,GAAmB,oBAARF,OAECG,KADVD,EAAIF,EAAID,MAENA,EAAIG,QAED,GAAIE,MAAMC,QAAQL,GACvB,IAAKC,EAAI,EAAGA,EAAID,EAAIM,OAAQL,SAEhBE,KADVD,EAAIF,EAAIC,GAAGF,MAETA,EAAIG,GAKV,OAAOH,EAGT,SAASQ,EAAUC,EAAKC,GAEtB,MAAe,MAAXD,EAAI,IAAcJ,MAAMC,QAAQI,IAAQ,SAASC,KAAKF,GACjDC,EAAIH,OAASK,SAASH,EAAK,IAE7BA,EAOT,SAASI,EAAUH,GACjB,MAA+C,oBAAxCI,OAAOC,UAAUC,SAASC,KAAKP,GAGxC,SAASQ,EAAiBR,GACxB,OAAOI,OAAOJ,KAASA,EAGzB,SAASS,EAAeT,GACtB,OAAmC,IAA5BI,OAAOM,KAAKV,GAAKH,OAG1B,IAAIc,EAAY,CAAC,YAAa,YAAa,eACvCC,EAAkB,SAAUC,GAAQ,OAAoC,IAA7BF,EAAUG,QAAQD,IAEjE,SAASE,EAAWC,EAAMC,GACpBD,EAAKF,QAAQ,MAAQ,IACvBE,EAAOA,EAAKE,QAAQ,MAAOD,GAAKC,QAAQ,KAAM,KAGhD,IAAIC,EAAQH,EAAKI,MAAMH,GAIvB,GAFYE,EAAME,OAAOT,GAEff,SAAWsB,EAAMtB,OACzB,MAAMyB,MAAM,2CAA6CN,GAG3D,OAAOG,EAGT,IAAII,EAAiBnB,OAAOC,UAAUkB,eAEtC,SAASC,EAAWC,EAAWC,EAAUC,EAAUC,GACjD,KAAMC,gBAAgBL,GACpB,OAAO,IAAIA,EAAUC,EAAWC,EAAUC,EAAUC,GAG9B,qBAAbF,IAA0BA,GAAW,GACxB,qBAAbC,IAA0BA,GAAW,GACrB,qBAAhBC,IAA6BA,GAAc,GACtDC,KAAKJ,UAAYA,GAAa,IAC9BI,KAAKH,SAAWA,EAChBG,KAAKF,SAAWA,EAChBE,KAAKD,YAAcA,EACnBC,KAAKC,WAAY,EAGjBD,KAAKE,QAAU,GAGjB,IAAIC,EAAa,IAAIR,EAAU,KAAK,GAAO,GAAM,GACjD,SAASS,EAAMC,GACb,OAAO,WACL,OAAOF,EAAWE,GAAQC,MAAMH,EAAYI,YAIhDZ,EAAUnB,UAAUgC,MAAQ,SAAUC,EAAGC,EAAKjD,EAAGC,GAC/C,IAAIiD,EAAIF,EAAEG,QAEV,GAAIH,EAAEzC,OAAS,EAAG,CAGhB,GAFA0C,EAAIC,GAAKD,EAAIC,KAAOX,KAAKF,UAlE7B,SAAkBa,GAChB,MAAO,QAAQvC,KAAKuC,GAiEmBE,CAAQJ,EAAE,IAAM,GAAK,KAErD9B,EAAgB+B,EAAIC,IAAK,CAC5B,IAAIX,KAAKH,SAEF,CACL,IAAMlB,EAAgBlB,KAAMmB,EAAcnB,GACxC,MAAM,IAAIgC,MACR,uBAAyBkB,EAAI,uBAAyBD,EAAIC,IAI9D,OARAD,EAAIC,GAAK,GAYbX,KAAKQ,MAAMC,EAAGC,EAAIC,GAAIlD,EAAGC,OACpB,CACL,IAAKsC,KAAKH,UAAYlB,EAAgB+B,EAAIC,MAAQ/B,EAAc8B,EAAIC,IAAK,CACvE,IAAMhC,EAAgBlB,KAAMmB,EAAcnB,GACxC,MAAM,IAAIgC,MAAM,qCAAuCkB,EAAI,MAG7D,OAGFD,EAAIC,GAAKnD,EAASC,EAAGC,KA0BzBiC,EAAUnB,UAAUsC,OAAS,SAAUJ,EAAKK,GAC1C,IAAIC,EAAOhB,KAeX,OAbAzB,OAAOM,KAAK6B,GAAKO,SAAQ,SAAUN,GACjC,IAAIjD,OAAeG,IAATkD,EAAqB,KAAOA,EAAKJ,GAEvCO,EAAKhC,EAAUyB,EAAGK,EAAKpB,WAAWuB,KAAKH,EAAKpB,YAEZ,IAAhCsB,EAAGjC,QAAQ+B,EAAKpB,YAClBoB,EAAKR,MAAMU,EAAG3B,MAAMyB,EAAKpB,WAAYc,EAAKA,EAAIC,GAAIjD,UAC3CgD,EAAIC,IAEXD,EAAIC,GAAKnD,EAASkD,EAAIC,GAAIjD,MAIvBgD,GASTf,EAAUnB,UAAU4C,IAAM,SAAUjC,EAAM1B,EAAGiD,EAAKhD,GAChD,IAAIwD,EAAKhC,EAAUC,EAAMa,KAAKJ,WAAWuB,KAAKnB,KAAKJ,WAQnD,OANsC,IAAlCT,EAAKF,QAAQe,KAAKJ,WACpBI,KAAKQ,MAAMU,EAAG3B,MAAMS,KAAKJ,WAAYc,EAAKjD,EAAGC,GAE7CgD,EAAIvB,GAAQ3B,EAASC,EAAGC,GAGnBgD,GAaTf,EAAUnB,UAAU6C,KAAO,SAAUlC,EAAMuB,EAAKY,EAAQC,GACtD,IAAI5D,EACAkB,EACAV,EACAD,EACAsD,EAGJ,IADA3C,EAAOK,EAAUC,EAAMa,KAAKJ,WACvBjC,EAAI,EAAGA,EAAIkB,EAAKb,OAAQL,IAAK,CAEhC,GADAO,EAAMD,EAASY,EAAKlB,GAAI+C,IACpBA,GAAsB,kBAARA,KAAoBxC,KAAOwC,GAuB3C,OAtBA,GAAI/C,IAAMkB,EAAKb,OAAS,EACtB,OAAIsD,GACFnD,EAAMuC,EAAIxC,GACNqD,GAAgBzD,MAAMC,QAAQ2C,GAChCA,EAAIe,OAAOvD,EAAK,UAETwC,EAAIxC,GAETJ,MAAMC,QAAQ2C,KAChBc,EAAK3C,EAAK6C,MAAM,GAAI,GAAGP,KAAK,MACM,IAA9BnB,KAAKE,QAAQjB,QAAQuC,IACvBxB,KAAKE,QAAQyB,KAAKH,IAGfrD,GAEAuC,EAAIxC,GAGbwC,EAAMA,EAAIxC,GAWhB,OALIoD,GAAUxD,MAAMC,QAAQ2C,KAC1BA,EAAMA,EAAIlB,QAAO,SAAUoC,GACzB,YAAa/D,IAAN+D,MAGJlB,GAUTf,EAAUnB,UAAUqD,OAAS,SAAU1C,EAAMuB,GAC3C,OAAOV,KAAKsB,OAAOnC,EAAMuB,GAAK,IAkBhCf,EAAUnB,UAAU8C,OAAS,SAAUnC,EAAMuB,EAAKa,GAChD,IAAI5D,EAGJ,GADAqC,KAAKE,QAAU,GACXpC,MAAMC,QAAQoB,GAAO,CACvB,IAAKxB,EAAI,EAAGA,EAAIwB,EAAKnB,OAAQL,IAC3BqC,KAAKqB,KAAKlC,EAAKxB,GAAI+C,GAAK,EAAMa,GAKhC,OAHKA,GACHvB,KAAK8B,SAASpB,GAETA,EAEP,OAAOV,KAAKqB,KAAKlC,EAAMuB,GAAK,EAAMa,IAItC5B,EAAUnB,UAAUsD,SAAW,SAAUpB,GACvC,IAAIqB,EACApE,EACAkB,EACAmD,EACJ,GAAIhC,KAAKE,QAAQlC,OAAQ,CACvB,IAAKL,EAAI,EAAGA,EAAIqC,KAAKE,QAAQlC,OAAQL,IAInCoE,GADAA,GADAC,GADAnD,EAAOmB,KAAKE,QAAQvC,GAAG4B,MAAM,MACjBkC,OAAO,GAAI,GAAGN,KAAK,MAClBnB,KAAKqB,KAAKW,EAAMtB,GAAOA,GAC1B7B,EAAK,IAAIW,QAAO,SAAU/B,GAClC,YAAaI,IAANJ,KAETuC,KAAKiC,IAAIjC,KAAKE,QAAQvC,GAAIoE,EAAKrB,GAEjCV,KAAKE,QAAU,KAcnBP,EAAUnB,UAAU0D,IAAMvC,EAAUnB,UAAU8C,OAe9C3B,EAAUnB,UAAU2D,KAAO,SAAUC,EAAQC,EAAQ3B,EAAKK,EAAMuB,GAQ9D,MAPoB,oBAATvB,GAAuBjD,MAAMC,QAAQgD,GAC9Cf,KAAKiC,IAAII,EAAQ7E,EAASwC,KAAKqB,KAAKe,EAAQ1B,GAAK,GAAOK,GAAOL,EAAK4B,IAEpEA,EAAQvB,EACRf,KAAKiC,IAAII,EAAQrC,KAAKqB,KAAKe,EAAQ1B,GAAK,GAAOA,EAAK4B,IAG/C5B,GAiBTf,EAAUnB,UAAU+D,SAAW,SAC7BH,EACAC,EACAG,EACAC,EACA1B,EACAuB,GAcA,MAZoB,oBAATvB,GAAuBjD,MAAMC,QAAQgD,GAC9Cf,KAAKiC,IACHI,EACA7E,EAASwC,KAAKqB,KAAKe,EAAQI,GAAM,GAAOzB,GACxC0B,EACAH,IAGFA,EAAQvB,EACRf,KAAKiC,IAAII,EAAQrC,KAAKqB,KAAKe,EAAQI,GAAM,GAAOC,EAAMH,IAGjDG,GAiBT9C,EAAUnB,UAAUkE,KAAO,SAAUN,EAAQC,EAAQG,EAAMC,EAAM1B,EAAMuB,GAiBrE,MAhBoB,oBAATvB,GAAuBjD,MAAMC,QAAQgD,GAC9Cf,KAAKiC,IACHI,EACA7E,EAEEmF,KAAKC,MAAMD,KAAKE,UAAU7C,KAAKqB,KAAKe,EAAQI,GAAM,KAClDzB,GAEF0B,EACAH,IAGFA,EAAQvB,EACRf,KAAKiC,IAAII,EAAQrC,KAAKqB,KAAKe,EAAQI,GAAM,GAAQC,EAAMH,IAGlDG,GAYT9C,EAAUnB,UAAUyD,IAAM,SAAU9C,EAAMhB,EAAKuC,EAAK4B,GAClD,IAAI3E,EACAgD,EACA9B,EACAX,EAGJ,GAAmB,qBAARC,EACT,OAAOuC,EAIT,IAFA7B,EAAOK,EAAUC,EAAMa,KAAKJ,WAEvBjC,EAAI,EAAGA,EAAIkB,EAAKb,OAAQL,IAAK,CAEhC,GADAO,EAAMW,EAAKlB,GACPA,IAAMkB,EAAKb,OAAS,EACtB,GAAIsE,GAAShE,EAASH,IAAQG,EAASoC,EAAIxC,IACzC,IAAKyC,KAAKxC,EACJuB,EAAehB,KAAKP,EAAKwC,KAC3BD,EAAIxC,GAAKyC,GAAKxC,EAAIwC,SAGjB,GAAI2B,GAASxE,MAAMC,QAAQ2C,EAAIxC,KAASJ,MAAMC,QAAQI,GAC3D,IAAK,IAAI2E,EAAI,EAAGA,EAAI3E,EAAIH,OAAQ8E,IAC9BpC,EAAI7B,EAAKlB,IAAIgE,KAAKxD,EAAI2E,SAGxBpC,EAAIxC,GAAOC,OAIZuB,EAAehB,KAAKgC,EAAKxC,KACxBI,EAASoC,EAAIxC,KAAUJ,MAAMC,QAAQ2C,EAAIxC,OAGvC,QAAQE,KAAKS,EAAKlB,EAAI,IACxB+C,EAAIxC,GAAO,GAEXwC,EAAIxC,GAAO,IAGfwC,EAAMA,EAAIxC,GAEZ,OAAOwC,GA2BTf,EAAUnB,UAAUuE,UAAY,SAAUC,EAAQtC,EAAKuC,GAQrD,OAPAvC,EAAMA,GAAO,GACbuC,EAAMA,GAAO,GACb1E,OAAOM,KAAKmE,GAAQ/B,QAClB,SAAU/C,GACR8B,KAAKiC,IAAIe,EAAO9E,GAAM8B,KAAKqB,KAAKnD,EAAKwC,GAAMuC,IAC3CC,KAAKlD,OAEFiD,GAoBTtD,EAAUnB,UAAU2E,IAAM,SAAUzC,EAAKuC,EAAK9D,GAC5C8D,EAAMA,GAAO,GACb9D,EAAOA,GAAQ,GACf,IAAIpB,EAAUD,MAAMC,QAAQ2C,GA6B5B,OA3BAnC,OAAOM,KAAK6B,GAAKO,QACf,SAAU/C,GACR,IAAIkF,EAAQrF,GAAWiC,KAAKD,YAAc,IAAM7B,EAAM,IAAMA,EAC5D,GACES,EAAgB+B,EAAIxC,MAClBI,EAASoC,EAAIxC,MAAUU,EAAc8B,EAAIxC,KACxCJ,MAAMC,QAAQ2C,EAAIxC,MAAU8B,KAAKC,WAAiC,IAApBS,EAAIxC,GAAKF,QAC1D,CACA,GAAID,GAAWiC,KAAKD,YAAa,CAC/B,IAAIsD,EAAclE,EAAKA,EAAKnB,OAAS,IAAM,GAC3C,OAAOgC,KAAKmD,IACVzC,EAAIxC,GACJ+E,EACA9D,EAAKuC,MAAM,GAAI,GAAG4B,OAAOD,EAAcD,IAGzC,OAAOpD,KAAKmD,IAAIzC,EAAIxC,GAAM+E,EAAK9D,EAAKmE,OAAOF,IAGzCrF,GAAWiC,KAAKD,YAClBkD,EAAI9D,EAAKgC,KAAKnB,KAAKJ,WAAW0D,OAAO,IAAMpF,EAAM,MAAQwC,EAAIxC,GAE7D+E,EAAI9D,EAAKmE,OAAOF,GAAOjC,KAAKnB,KAAKJ,YAAcc,EAAIxC,IAGvDgF,KAAKlD,OAEFiD,GAGTtD,EAAU0B,KAAOjB,EAAK,QACtBT,EAAUwC,KAAO/B,EAAK,QACtBT,EAAU4C,SAAWnC,EAAK,YAC1BT,EAAUoD,UAAY3C,EAAK,aAC3BT,EAAU+C,KAAOtC,EAAK,QACtBT,EAAUmB,OAASV,EAAK,UACxBT,EAAUyB,IAAMhB,EAAK,OACrBT,EAAUsC,IAAM7B,EAAK,OACrBT,EAAUkC,OAASzB,EAAK,UACxBT,EAAUuC,IAAMvC,EAAU2B,OAASlB,EAAK,UACxCT,EAAUwD,IAAM/C,EAAK,OACrB,CAAC,WAAY,aAAaa,SAAQ,SAAUsC,GAC1ChF,OAAOiF,eAAe7D,EAAW4D,EAAM,CACrCE,IAAK,WACH,OAAOtD,EAAWN,UAEpBoC,IAAK,SAAU9D,GACbgC,EAAWN,WAAa1B,QAI9B,CAAC,WAAY,YAAa,eAAe8C,SAAQ,SAAUsC,GACzDhF,OAAOiF,eAAe7D,EAAW4D,EAAM,CACrCE,IAAK,WACH,OAAOtD,EAAWoD,IAEpBtB,IAAK,SAAU9D,GACbgC,EAAWoD,GAAQpF,QAKzBwB,EAAUnC,SAAWA,EAErBkG,EAAOC,QAAUhE","file":"static/js/dot-object.19002eba.chunk.js","sourcesContent":["'use strict'\n\nfunction _process (v, mod) {\n var i\n var r\n\n if (typeof mod === 'function') {\n r = mod(v)\n if (r !== undefined) {\n v = r\n }\n } else if (Array.isArray(mod)) {\n for (i = 0; i < mod.length; i++) {\n r = mod[i](v)\n if (r !== undefined) {\n v = r\n }\n }\n }\n\n return v\n}\n\nfunction parseKey (key, val) {\n // detect negative index notation\n if (key[0] === '-' && Array.isArray(val) && /^-\\d+$/.test(key)) {\n return val.length + parseInt(key, 10)\n }\n return key\n}\n\nfunction isIndex (k) {\n return /^\\d+$/.test(k)\n}\n\nfunction isObject (val) {\n return Object.prototype.toString.call(val) === '[object Object]'\n}\n\nfunction isArrayOrObject (val) {\n return Object(val) === val\n}\n\nfunction isEmptyObject (val) {\n return Object.keys(val).length === 0\n}\n\nvar blacklist = ['__proto__', 'prototype', 'constructor']\nvar blacklistFilter = function (part) { return blacklist.indexOf(part) === -1 }\n\nfunction parsePath (path, sep) {\n if (path.indexOf('[') >= 0) {\n path = path.replace(/\\[/g, sep).replace(/]/g, '')\n }\n\n var parts = path.split(sep)\n\n var check = parts.filter(blacklistFilter)\n\n if (check.length !== parts.length) {\n throw Error('Refusing to update blacklisted property ' + path)\n }\n\n return parts\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction DotObject (separator, override, useArray, useBrackets) {\n if (!(this instanceof DotObject)) {\n return new DotObject(separator, override, useArray, useBrackets)\n }\n\n if (typeof override === 'undefined') override = false\n if (typeof useArray === 'undefined') useArray = true\n if (typeof useBrackets === 'undefined') useBrackets = true\n this.separator = separator || '.'\n this.override = override\n this.useArray = useArray\n this.useBrackets = useBrackets\n this.keepArray = false\n\n // contains touched arrays\n this.cleanup = []\n}\n\nvar dotDefault = new DotObject('.', false, true, true)\nfunction wrap (method) {\n return function () {\n return dotDefault[method].apply(dotDefault, arguments)\n }\n}\n\nDotObject.prototype._fill = function (a, obj, v, mod) {\n var k = a.shift()\n\n if (a.length > 0) {\n obj[k] = obj[k] || (this.useArray && isIndex(a[0]) ? [] : {})\n\n if (!isArrayOrObject(obj[k])) {\n if (this.override) {\n obj[k] = {}\n } else {\n if (!(isArrayOrObject(v) && isEmptyObject(v))) {\n throw new Error(\n 'Trying to redefine `' + k + '` which is a ' + typeof obj[k]\n )\n }\n\n return\n }\n }\n\n this._fill(a, obj[k], v, mod)\n } else {\n if (!this.override && isArrayOrObject(obj[k]) && !isEmptyObject(obj[k])) {\n if (!(isArrayOrObject(v) && isEmptyObject(v))) {\n throw new Error(\"Trying to redefine non-empty obj['\" + k + \"']\")\n }\n\n return\n }\n\n obj[k] = _process(v, mod)\n }\n}\n\n/**\n *\n * Converts an object with dotted-key/value pairs to it's expanded version\n *\n * Optionally transformed by a set of modifiers.\n *\n * Usage:\n *\n * var row = {\n * 'nr': 200,\n * 'doc.name': ' My Document '\n * }\n *\n * var mods = {\n * 'doc.name': [_s.trim, _s.underscored]\n * }\n *\n * dot.object(row, mods)\n *\n * @param {Object} obj\n * @param {Object} mods\n */\nDotObject.prototype.object = function (obj, mods) {\n var self = this\n\n Object.keys(obj).forEach(function (k) {\n var mod = mods === undefined ? null : mods[k]\n // normalize array notation.\n var ok = parsePath(k, self.separator).join(self.separator)\n\n if (ok.indexOf(self.separator) !== -1) {\n self._fill(ok.split(self.separator), obj, obj[k], mod)\n delete obj[k]\n } else {\n obj[k] = _process(obj[k], mod)\n }\n })\n\n return obj\n}\n\n/**\n * @param {String} path dotted path\n * @param {String} v value to be set\n * @param {Object} obj object to be modified\n * @param {Function|Array} mod optional modifier\n */\nDotObject.prototype.str = function (path, v, obj, mod) {\n var ok = parsePath(path, this.separator).join(this.separator)\n\n if (path.indexOf(this.separator) !== -1) {\n this._fill(ok.split(this.separator), obj, v, mod)\n } else {\n obj[path] = _process(v, mod)\n }\n\n return obj\n}\n\n/**\n *\n * Pick a value from an object using dot notation.\n *\n * Optionally remove the value\n *\n * @param {String} path\n * @param {Object} obj\n * @param {Boolean} remove\n */\nDotObject.prototype.pick = function (path, obj, remove, reindexArray) {\n var i\n var keys\n var val\n var key\n var cp\n\n keys = parsePath(path, this.separator)\n for (i = 0; i < keys.length; i++) {\n key = parseKey(keys[i], obj)\n if (obj && typeof obj === 'object' && key in obj) {\n if (i === keys.length - 1) {\n if (remove) {\n val = obj[key]\n if (reindexArray && Array.isArray(obj)) {\n obj.splice(key, 1)\n } else {\n delete obj[key]\n }\n if (Array.isArray(obj)) {\n cp = keys.slice(0, -1).join('.')\n if (this.cleanup.indexOf(cp) === -1) {\n this.cleanup.push(cp)\n }\n }\n return val\n } else {\n return obj[key]\n }\n } else {\n obj = obj[key]\n }\n } else {\n return undefined\n }\n }\n if (remove && Array.isArray(obj)) {\n obj = obj.filter(function (n) {\n return n !== undefined\n })\n }\n return obj\n}\n/**\n *\n * Delete value from an object using dot notation.\n *\n * @param {String} path\n * @param {Object} obj\n * @return {any} The removed value\n */\nDotObject.prototype.delete = function (path, obj) {\n return this.remove(path, obj, true)\n}\n\n/**\n *\n * Remove value from an object using dot notation.\n *\n * Will remove multiple items if path is an array.\n * In this case array indexes will be retained until all\n * removals have been processed.\n *\n * Use dot.delete() to automatically re-index arrays.\n *\n * @param {String|Array} path\n * @param {Object} obj\n * @param {Boolean} reindexArray\n * @return {any} The removed value\n */\nDotObject.prototype.remove = function (path, obj, reindexArray) {\n var i\n\n this.cleanup = []\n if (Array.isArray(path)) {\n for (i = 0; i < path.length; i++) {\n this.pick(path[i], obj, true, reindexArray)\n }\n if (!reindexArray) {\n this._cleanup(obj)\n }\n return obj\n } else {\n return this.pick(path, obj, true, reindexArray)\n }\n}\n\nDotObject.prototype._cleanup = function (obj) {\n var ret\n var i\n var keys\n var root\n if (this.cleanup.length) {\n for (i = 0; i < this.cleanup.length; i++) {\n keys = this.cleanup[i].split('.')\n root = keys.splice(0, -1).join('.')\n ret = root ? this.pick(root, obj) : obj\n ret = ret[keys[0]].filter(function (v) {\n return v !== undefined\n })\n this.set(this.cleanup[i], ret, obj)\n }\n this.cleanup = []\n }\n}\n\n/**\n * Alias method for `dot.remove`\n *\n * Note: this is not an alias for dot.delete()\n *\n * @param {String|Array} path\n * @param {Object} obj\n * @param {Boolean} reindexArray\n * @return {any} The removed value\n */\nDotObject.prototype.del = DotObject.prototype.remove\n\n/**\n *\n * Move a property from one place to the other.\n *\n * If the source path does not exist (undefined)\n * the target property will not be set.\n *\n * @param {String} source\n * @param {String} target\n * @param {Object} obj\n * @param {Function|Array} mods\n * @param {Boolean} merge\n */\nDotObject.prototype.move = function (source, target, obj, mods, merge) {\n if (typeof mods === 'function' || Array.isArray(mods)) {\n this.set(target, _process(this.pick(source, obj, true), mods), obj, merge)\n } else {\n merge = mods\n this.set(target, this.pick(source, obj, true), obj, merge)\n }\n\n return obj\n}\n\n/**\n *\n * Transfer a property from one object to another object.\n *\n * If the source path does not exist (undefined)\n * the property on the other object will not be set.\n *\n * @param {String} source\n * @param {String} target\n * @param {Object} obj1\n * @param {Object} obj2\n * @param {Function|Array} mods\n * @param {Boolean} merge\n */\nDotObject.prototype.transfer = function (\n source,\n target,\n obj1,\n obj2,\n mods,\n merge\n) {\n if (typeof mods === 'function' || Array.isArray(mods)) {\n this.set(\n target,\n _process(this.pick(source, obj1, true), mods),\n obj2,\n merge\n )\n } else {\n merge = mods\n this.set(target, this.pick(source, obj1, true), obj2, merge)\n }\n\n return obj2\n}\n\n/**\n *\n * Copy a property from one object to another object.\n *\n * If the source path does not exist (undefined)\n * the property on the other object will not be set.\n *\n * @param {String} source\n * @param {String} target\n * @param {Object} obj1\n * @param {Object} obj2\n * @param {Function|Array} mods\n * @param {Boolean} merge\n */\nDotObject.prototype.copy = function (source, target, obj1, obj2, mods, merge) {\n if (typeof mods === 'function' || Array.isArray(mods)) {\n this.set(\n target,\n _process(\n // clone what is picked\n JSON.parse(JSON.stringify(this.pick(source, obj1, false))),\n mods\n ),\n obj2,\n merge\n )\n } else {\n merge = mods\n this.set(target, this.pick(source, obj1, false), obj2, merge)\n }\n\n return obj2\n}\n\n/**\n *\n * Set a property on an object using dot notation.\n *\n * @param {String} path\n * @param {any} val\n * @param {Object} obj\n * @param {Boolean} merge\n */\nDotObject.prototype.set = function (path, val, obj, merge) {\n var i\n var k\n var keys\n var key\n\n // Do not operate if the value is undefined.\n if (typeof val === 'undefined') {\n return obj\n }\n keys = parsePath(path, this.separator)\n\n for (i = 0; i < keys.length; i++) {\n key = keys[i]\n if (i === keys.length - 1) {\n if (merge && isObject(val) && isObject(obj[key])) {\n for (k in val) {\n if (hasOwnProperty.call(val, k)) {\n obj[key][k] = val[k]\n }\n }\n } else if (merge && Array.isArray(obj[key]) && Array.isArray(val)) {\n for (var j = 0; j < val.length; j++) {\n obj[keys[i]].push(val[j])\n }\n } else {\n obj[key] = val\n }\n } else if (\n // force the value to be an object\n !hasOwnProperty.call(obj, key) ||\n (!isObject(obj[key]) && !Array.isArray(obj[key]))\n ) {\n // initialize as array if next key is numeric\n if (/^\\d+$/.test(keys[i + 1])) {\n obj[key] = []\n } else {\n obj[key] = {}\n }\n }\n obj = obj[key]\n }\n return obj\n}\n\n/**\n *\n * Transform an object\n *\n * Usage:\n *\n * var obj = {\n * \"id\": 1,\n * \"some\": {\n * \"thing\": \"else\"\n * }\n * }\n *\n * var transform = {\n * \"id\": \"nr\",\n * \"some.thing\": \"name\"\n * }\n *\n * var tgt = dot.transform(transform, obj)\n *\n * @param {Object} recipe Transform recipe\n * @param {Object} obj Object to be transformed\n * @param {Array} mods modifiers for the target\n */\nDotObject.prototype.transform = function (recipe, obj, tgt) {\n obj = obj || {}\n tgt = tgt || {}\n Object.keys(recipe).forEach(\n function (key) {\n this.set(recipe[key], this.pick(key, obj), tgt)\n }.bind(this)\n )\n return tgt\n}\n\n/**\n *\n * Convert object to dotted-key/value pair\n *\n * Usage:\n *\n * var tgt = dot.dot(obj)\n *\n * or\n *\n * var tgt = {}\n * dot.dot(obj, tgt)\n *\n * @param {Object} obj source object\n * @param {Object} tgt target object\n * @param {Array} path path array (internal)\n */\nDotObject.prototype.dot = function (obj, tgt, path) {\n tgt = tgt || {}\n path = path || []\n var isArray = Array.isArray(obj)\n\n Object.keys(obj).forEach(\n function (key) {\n var index = isArray && this.useBrackets ? '[' + key + ']' : key\n if (\n isArrayOrObject(obj[key]) &&\n ((isObject(obj[key]) && !isEmptyObject(obj[key])) ||\n (Array.isArray(obj[key]) && !this.keepArray && obj[key].length !== 0))\n ) {\n if (isArray && this.useBrackets) {\n var previousKey = path[path.length - 1] || ''\n return this.dot(\n obj[key],\n tgt,\n path.slice(0, -1).concat(previousKey + index)\n )\n } else {\n return this.dot(obj[key], tgt, path.concat(index))\n }\n } else {\n if (isArray && this.useBrackets) {\n tgt[path.join(this.separator).concat('[' + key + ']')] = obj[key]\n } else {\n tgt[path.concat(index).join(this.separator)] = obj[key]\n }\n }\n }.bind(this)\n )\n return tgt\n}\n\nDotObject.pick = wrap('pick')\nDotObject.move = wrap('move')\nDotObject.transfer = wrap('transfer')\nDotObject.transform = wrap('transform')\nDotObject.copy = wrap('copy')\nDotObject.object = wrap('object')\nDotObject.str = wrap('str')\nDotObject.set = wrap('set')\nDotObject.delete = wrap('delete')\nDotObject.del = DotObject.remove = wrap('remove')\nDotObject.dot = wrap('dot');\n['override', 'overwrite'].forEach(function (prop) {\n Object.defineProperty(DotObject, prop, {\n get: function () {\n return dotDefault.override\n },\n set: function (val) {\n dotDefault.override = !!val\n }\n })\n});\n['useArray', 'keepArray', 'useBrackets'].forEach(function (prop) {\n Object.defineProperty(DotObject, prop, {\n get: function () {\n return dotDefault[prop]\n },\n set: function (val) {\n dotDefault[prop] = val\n }\n })\n})\n\nDotObject._process = _process\n\nmodule.exports = DotObject\n"],"sourceRoot":""}