@magento/pwa-buildpack
Version:
Build/Layout optimization tooling and Peregrine framework adapters for the Magento PWA
25 lines (22 loc) • 695 B
JavaScript
/**
* Simple two-level shallow merge.
* - Only works with objects.
* - Deep merges any second-level objects.
* - Overwrites everything else.
*/
module.exports = (source, defaults) => {
const target = {};
Object.assign(target, source);
// one extra layer of merge depth
for (const [section, defaultValue] of Object.entries(defaults)) {
if (!source.hasOwnProperty(section)) {
target[section] = defaultValue;
} else if (
typeof source[section] === 'object' &&
typeof defaultValue === 'object'
) {
target[section] = Object.assign({}, defaultValue, source[section]);
}
}
return target;
};