/** * @param baseConfig Config where other config will be merged into. This object will be mutated. * @param configExtension Partial config to merge into the `baseConfig`. */ function mergeConfigs(baseConfig, configExtension) { for (var key in configExtension) { mergePropertyRecursively(baseConfig, key, configExtension[key]); } return baseConfig; } var hasOwnProperty = Object.prototype.hasOwnProperty; var overrideTypes = /*#__PURE__*/new Set(['string', 'number', 'boolean']); function mergePropertyRecursively(baseObject, mergeKey, mergeValue) { if (!hasOwnProperty.call(baseObject, mergeKey) || overrideTypes.has(typeof mergeValue) || mergeValue === null) { baseObject[mergeKey] = mergeValue; return; } if (Array.isArray(mergeValue) && Array.isArray(baseObject[mergeKey])) { baseObject[mergeKey] = baseObject[mergeKey].concat(mergeValue); return; } if (typeof mergeValue === 'object' && typeof baseObject[mergeKey] === 'object') { if (baseObject[mergeKey] === null) { baseObject[mergeKey] = mergeValue; return; } for (var nextKey in mergeValue) { mergePropertyRecursively(baseObject[mergeKey], nextKey, mergeValue[nextKey]); } } } export { mergeConfigs }; //# sourceMappingURL=merge-configs.mjs.map