@netdata/charts
Version:
Netdata frontend SDK and chart utilities
28 lines • 1.39 kB
JavaScript
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
import { filter } from "../deepEqual";
var deepMergeArray = function deepMergeArray(arrA, arrB, options) {
var filteredB = filter(arrA, options);
return filteredB.reduce(function (h, element, index) {
h.push(deepMerge(element, filteredB[index]));
return h;
}, []);
};
var deepMergeObject = function deepMergeObject(objA, objB, options) {
var keysB = filter(Object.keys(objB), options);
var aHasOwnProperty = Object.prototype.hasOwnProperty.bind(objA);
keysB.reduce(function (h, key) {
if (!aHasOwnProperty(key)) {
h[key] = objB[key];
} else {
h[key] = deepMerge(objA[key], objB[key]);
}
return h;
}, {});
};
var deepMerge = function deepMerge(objA, objB) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
if (objA === objB) return objB;
if (_typeof(objA) !== "object" || objA === null || _typeof(objB) !== "object" || objB === null) return objB;
return Array.isArray(objB) ? deepMergeArray(objA, objB, options) : deepMergeObject(objA, objB, options);
};
export default deepMerge;