Sha256: 4dd55692476ceb33f8a3376510653f4637bc5d5abfd164387d4f7df1192fe513

Contents?: true

Size: 622 Bytes

Versions: 22

Compression:

Stored size: 622 Bytes

Contents

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) =>
      (Object.assign(
        {},
        result,
        { [key]: deepMerge(target[key], source[key]) }
      )),
    {}
  )
}

module.exports = deepMerge

Version data entries

22 entries across 22 versions & 3 rubygems

Version Path
webpacker-3.6.0 package/utils/deep_merge.js
optimacms-0.4.3 spec/dummy/node_modules/@rails/webpacker/package/utils/deep_merge.js
optimacms-0.4.2 spec/dummy/node_modules/@rails/webpacker/package/utils/deep_merge.js
webpacker-jets-3.2.101 package/utils/deep_merge.js
webpacker-jets-3.2.100 package/utils/deep_merge.js
webpacker-3.5.5 package/utils/deep_merge.js
webpacker-3.5.3 package/utils/deep_merge.js
webpacker-3.5.2 package/utils/deep_merge.js
webpacker-3.5.1 package/utils/deep_merge.js
webpacker-3.5.0 package/utils/deep_merge.js
webpacker-3.4.3 package/utils/deep_merge.js
webpacker-4.0.0.pre.pre.2 package/utils/deep_merge.js
webpacker-4.0.0.pre.pre.1 package/utils/deep_merge.js
webpacker-3.4.1 package/utils/deep_merge.js
webpacker-3.4.0 package/utils/deep_merge.js
webpacker-3.3.1 package/utils/deep_merge.js
webpacker-3.3.0 package/utils/deep_merge.js
webpacker-3.2.2 package/utils/deep_merge.js
webpacker-3.2.1 package/utils/deep_merge.js
webpacker-3.2.0 package/utils/deep_merge.js