@rails/webpacker
Version:
Use webpack to manage app-like JavaScript modules in Rails
23 lines (18 loc) • 585 B
JavaScript
const {
isObject, isArray, isEqual, isEmpty
} = require('./helpers')
const deepMerge = (target, source) => {
if (isEmpty(target)) return source
if (isEmpty(source)) return target
if (isEqual(target, source)) return source
if (isArray(target) && isArray(source)) return [...new Set([...target, ...source])]
if (!(isObject(target) && isObject(source))) return source
return [...Object.keys(target), ...Object.keys(source)].reduce(
(result, key) => ({
...result,
[key]: deepMerge(target[key], source[key])
}),
{}
)
}
module.exports = deepMerge