UNPKG

994 BJavaScriptView Raw
1const merge = require('deepmerge');
2const ChainedMap = require('./ChainedMap');
3const Orderable = require('./Orderable');
4
5module.exports = Orderable(
6 class extends ChainedMap {
7 constructor(parent, name) {
8 super(parent);
9 this.name = name;
10 this.extend(['loader', 'options']);
11 }
12
13 tap(f) {
14 this.options(f(this.get('options')));
15 return this;
16 }
17
18 merge(obj, omit = []) {
19 if (!omit.includes('loader') && 'loader' in obj) {
20 this.loader(obj.loader);
21 }
22
23 if (!omit.includes('options') && 'options' in obj) {
24 this.options(merge(this.store.get('options') || {}, obj.options));
25 }
26
27 return super.merge(obj, [...omit, 'loader', 'options']);
28 }
29
30 toConfig() {
31 const config = this.clean(this.entries() || {});
32
33 Object.defineProperties(config, {
34 __useName: { value: this.name },
35 __ruleNames: { value: this.parent && this.parent.names },
36 });
37
38 return config;
39 }
40 }
41);