_deepMergeObjects: function()

in src/apache-unomi-tracker.js [1471:1495]


        _deepMergeObjects: function (source, target) {
            if (!wem._isObject(target) || !wem._isObject(source)) {
                return source;
            }

            Object.keys(source).forEach(key => {
                // @ts-expect-error target cannot be indexed by key
                const targetValue = target[key];
                const sourceValue = source[key];

                // concat arrays || merge objects || add new props
                if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {
                    // @ts-expect-error target cannot be indexed by key
                    target[key] = targetValue.concat(sourceValue);
                } else if (wem._isObject(targetValue) && wem._isObject(sourceValue)) {
                    // @ts-expect-error target cannot be indexed by key
                    target[key] = wem._deepMergeObjects(sourceValue, Object.assign({}, targetValue));
                } else {
                    // @ts-expect-error target cannot be indexed by key
                    target[key] = sourceValue;
                }
            });

            return target;
        },