19 lines
499 B
JavaScript
19 lines
499 B
JavaScript
|
import { isPlainObject } from "./is-plain-object";
|
||
|
function mergeDeep(defaults, options) {
|
||
|
const result = Object.assign({}, defaults);
|
||
|
Object.keys(options).forEach((key) => {
|
||
|
if (isPlainObject(options[key])) {
|
||
|
if (!(key in defaults))
|
||
|
Object.assign(result, { [key]: options[key] });
|
||
|
else
|
||
|
result[key] = mergeDeep(defaults[key], options[key]);
|
||
|
} else {
|
||
|
Object.assign(result, { [key]: options[key] });
|
||
|
}
|
||
|
});
|
||
|
return result;
|
||
|
}
|
||
|
export {
|
||
|
mergeDeep
|
||
|
};
|