baseui
Version:
A React Component library implementing the Base design language
43 lines (40 loc) • 1.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = deepMerge;
/*
Copyright (c) Uber Technologies, Inc.
This source code is licensed under the MIT license found in the
LICENSE file in the root directory of this source tree.
*/
function deepMerge(target, ...sources) {
target = target || {};
const len = sources.length;
let obj;
let value;
for (let i = 0; i < len; i++) {
obj = sources[i] || {};
for (let key in obj) {
// @ts-ignore
if (typeof obj[key] !== undefined) {
// @ts-ignore
value = obj[key];
if (isCloneable(value)) {
// @ts-ignore
target[key] = deepMerge( /* eslint-disable-next-line no-mixed-operators */
// @ts-ignore
target[key] || Array.isArray(value) && [] || {}, value);
} else {
// @ts-ignore
target[key] = value;
}
}
}
}
return target;
}
function isCloneable(obj) {
/* eslint-disable-next-line eqeqeq */
return Array.isArray(obj) || {}.toString.call(obj) == '[object Object]';
}