Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
const {ChainedMap, ChainedSet, dopemerge} = require('./Chains')

module.exports = class extends ChainedMap {
  constructor(parent) {
    super(parent)
    this.extensions = new ChainedSet(this)
    this.modules = new ChainedSet(this)
    this.moduleExtensions = new ChainedSet(this)
    this.packageMains = new ChainedSet(this)
  }

  toConfig() {
    return this.clean(
      Object.assign(
        {
          extensions: this.extensions.values(),
          modules: this.modules.values(),
          moduleExtensions: this.moduleExtensions.values(),
          packageMains: this.packageMains.values(),
        },
        this.entries() || {}
      )
    )
  }

  merge(obj) {
    Object.keys(obj).forEach(key => {
      const value = obj[key]

      switch (key) {
        case 'extensions':
        case 'modules':
        case 'moduleExtensions':
        case 'packageMains': {
          return this[key].merge(value)
        }

        default: {
          if (this.has(key)) {
            this.set(key, dopemerge(this.get(key), value))
          }
          else {
            this.set(key, value)
          }
        }
      }
    })

    return this
  }
}