UNPKG

3.41 kBSource Map (JSON)View Raw
1{"version":3,"file":"assign.js","sources":["../../src/assign.js"],"sourcesContent":["import {default as isObject} from \"./isObject\";\n\n/**\n @function assign\n @desc A deeply recursive version of `Object.assign`.\n @param {...Object} objects\n @example <caption>this</caption>\nassign({id: \"foo\", deep: {group: \"A\"}}, {id: \"bar\", deep: {value: 20}}));\n @example <caption>returns this</caption>\n{id: \"bar\", deep: {group: \"A\", value: 20}}\n*/\nfunction assign(...objects) {\n\n const target = objects[0];\n for (let i = 1; i < objects.length; i++) {\n\n const source = objects[i];\n\n Object.keys(source).forEach(prop => {\n\n const value = source[prop];\n\n if (isObject(value)) {\n\n if (target.hasOwnProperty(prop) && isObject(target[prop])) target[prop] = assign({}, target[prop], value);\n else target[prop] = value;\n\n }\n else if (Array.isArray(value)) {\n\n if (target.hasOwnProperty(prop) && Array.isArray(target[prop])) {\n\n const targetArray = target[prop];\n\n value.forEach((sourceItem, itemIndex) => {\n\n if (itemIndex < targetArray.length) {\n const targetItem = targetArray[itemIndex];\n\n if (Object.is(targetItem, sourceItem)) return;\n\n if (isObject(targetItem) && isObject(sourceItem) || Array.isArray(targetItem) && Array.isArray(sourceItem)) {\n targetArray[itemIndex] = assign({}, targetItem, sourceItem);\n }\n else targetArray[itemIndex] = sourceItem;\n\n }\n else targetArray.push(sourceItem);\n\n });\n }\n else target[prop] = value;\n\n }\n else target[prop] = value;\n\n });\n }\n\n return target;\n\n}\n\nexport default assign;\n"],"names":["i","const","let"],"mappings":"AAAA,QAAQ,OAAO,IAAI,QAAQ,OAAO,YAAY,CAAC;;;;;;;;;;;AAW/C,SAAS,MAAM,CAAC,AAAU,EAAE;;;AAAC;;EAE3BC,GAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;4BACe;;IAEvCA,GAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;;IAE1B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,WAAC,KAAI,CAAC,AAAG;;MAElCA,GAAK,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;;MAE3B,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;;QAEnB,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAE,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,GAAC;eACrG,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,GAAC;;OAE3B;WACI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;QAE7B,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;;UAE9DA,GAAK,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;;UAEjC,KAAK,CAAC,OAAO,UAAC,CAAC,UAAU,EAAE,SAAS,EAAE,AAAG;;YAEvC,IAAI,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE;cAClCA,GAAK,CAAC,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;;cAE1C,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,IAAE,SAAO;;cAE9C,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBAC1G,WAAW,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;eAC7D;qBACI,WAAW,CAAC,SAAS,CAAC,GAAG,UAAU,GAAC;;aAE1C;mBACI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,GAAC;;WAEnC,CAAC,CAAC;SACJ;eACI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,GAAC;;OAE3B;aACI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,GAAC;;KAE3B,CAAC,CAAC;;;EA1CL,KAAKC,GAAG,CAACF,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,YA2CtC;;EAED,OAAO,MAAM,CAAC;;CAEf;;AAED,eAAe,MAAM,CAAC;"}
\No newline at end of file