Sha256: 52c3f285ffd58de8ac15cfe9e71d562e1ebd39827ef4fe778e915aff7812171b

Contents?: true

Size: 637 Bytes

Versions: 20

Compression:

Stored size: 637 Bytes

Contents

const { canMerge, prettyPrint } = require('./helpers')
const deepMerge = require('./deep_merge')

const deepAssign = (obj, path, value) => {
  if (!value) throw new Error(`Value can't be ${value}`)

  const keys = path.split('.')
  const key = keys.pop()

  const objRef = keys.reduce((acc, currentValue) => {
    /* eslint no-param-reassign: 0 */
    if (!acc[currentValue]) acc[currentValue] = {}
    return acc[currentValue]
  }, obj)

  if (!objRef) throw new Error(`Prop not found: ${path} in ${prettyPrint(obj)}`)

  objRef[key] = canMerge(value) ? deepMerge(objRef[key], value) : value
  return obj
}

module.exports = deepAssign

Version data entries

20 entries across 20 versions & 3 rubygems

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