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:
"use strict";

const _require = require("./Chains"),
      ChainedMap = _require.ChainedMap,
      ChainedSet = _require.ChainedSet,
      dopemerge = _require.dopemerge;

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;
  }

};