elearning/Frontend-Learner/node_modules/eslint-plugin-import-x/lib/utils/deep-merge.js

28 lines
959 B
JavaScript
Raw Normal View History

2026-01-13 10:46:40 +07:00
export function isObjectNotArray(obj) {
return typeof obj === 'object' && obj != null && !Array.isArray(obj);
}
export function deepMerge(first = {}, second = {}) {
const keys = new Set([...Object.keys(first), ...Object.keys(second)]);
return Object.fromEntries([...keys].map(key => {
const firstHasKey = key in first;
const secondHasKey = key in second;
const firstValue = first[key];
const secondValue = second[key];
let value;
if (firstHasKey && secondHasKey) {
value =
isObjectNotArray(firstValue) && isObjectNotArray(secondValue)
? deepMerge(firstValue, secondValue)
:
secondValue;
}
else if (firstHasKey) {
value = firstValue;
}
else {
value = secondValue;
}
return [key, value];
}));
}
//# sourceMappingURL=deep-merge.js.map