{"version":3,"sources":["../../src/utils/merge.ts"],"sourcesContent":["/**\n * Performs a deep merge of objects and returns new object. Does not modify\n * objects (immutable) and merges arrays via concatenation.\n *\n * @param {...object} objects - Objects to merge\n * @returns {object} New object with merged key/values\n */\nexport function merge<T extends Record<string, any>>(...objects: Array<T>): T {\n  const isObject = (obj: unknown) => obj && typeof obj === 'object';\n\n  return objects.reduce<Record<string, unknown>>((prev, obj) => {\n    Object.keys(obj).forEach((key) => {\n      const pVal = prev[key];\n      const oVal = obj[key];\n\n      if (Array.isArray(pVal) && Array.isArray(oVal)) {\n        prev[key] = pVal.concat(...oVal);\n      } else if (isObject(pVal) && isObject(oVal)) {\n        prev[key] = merge(pVal, oVal);\n      } else {\n        prev[key] = oVal;\n      }\n    });\n\n    return prev;\n  }, {}) as T;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOO,SAAS,SAAwC,SAAsB;AAC5E,QAAM,WAAW,CAAC,QAAiB,OAAO,OAAO,QAAQ;AAEzD,SAAO,QAAQ,OAAgC,CAAC,MAAM,QAAQ;AAC5D,WAAO,KAAK,GAAG,EAAE,QAAQ,CAAC,QAAQ;AAChC,YAAM,OAAO,KAAK,GAAG;AACrB,YAAM,OAAO,IAAI,GAAG;AAEpB,UAAI,MAAM,QAAQ,IAAI,KAAK,MAAM,QAAQ,IAAI,GAAG;AAC9C,aAAK,GAAG,IAAI,KAAK,OAAO,GAAG,IAAI;AAAA,MACjC,WAAW,SAAS,IAAI,KAAK,SAAS,IAAI,GAAG;AAC3C,aAAK,GAAG,IAAI,MAAM,MAAM,IAAI;AAAA,MAC9B,OAAO;AACL,aAAK,GAAG,IAAI;AAAA,MACd;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACP;","names":[]}