| 123456789101112131415161718192021222324252627282930313233343536373839404142 | 
							- const merge = require('deepmerge');
 
- const ChainedMap = require('./ChainedMap');
 
- const Orderable = require('./Orderable');
 
- module.exports = Orderable(
 
-   class extends ChainedMap {
 
-     constructor(parent, name) {
 
-       super(parent);
 
-       this.name = name;
 
-       this.extend(['loader', 'options']);
 
-     }
 
-     tap(f) {
 
-       this.options(f(this.get('options')));
 
-       return this;
 
-     }
 
-     merge(obj, omit = []) {
 
-       if (!omit.includes('loader') && 'loader' in obj) {
 
-         this.loader(obj.loader);
 
-       }
 
-       if (!omit.includes('options') && 'options' in obj) {
 
-         this.options(merge(this.store.get('options') || {}, obj.options));
 
-       }
 
-       return super.merge(obj, [...omit, 'loader', 'options']);
 
-     }
 
-     toConfig() {
 
-       const config = this.clean(this.entries() || {});
 
-       Object.defineProperties(config, {
 
-         __useName: { value: this.name },
 
-         __ruleNames: { value: this.parent && this.parent.names },
 
-         __ruleTypes: { value: this.parent && this.parent.ruleTypes },
 
-       });
 
-       return config;
 
-     }
 
-   },
 
- );
 
 
  |