1 | const Resolve = require('./Resolve');
|
2 | const ChainedSet = require('./ChainedSet');
|
3 |
|
4 | module.exports = class extends Resolve {
|
5 | constructor(parent) {
|
6 | super(parent);
|
7 | this.moduleExtensions = new ChainedSet(this);
|
8 | this.packageMains = new ChainedSet(this);
|
9 | }
|
10 |
|
11 | toConfig() {
|
12 | return this.clean({
|
13 | moduleExtensions: this.moduleExtensions.values(),
|
14 | packageMains: this.packageMains.values(),
|
15 | ...super.toConfig(),
|
16 | });
|
17 | }
|
18 |
|
19 | merge(obj, omit = []) {
|
20 | const omissions = ['moduleExtensions', 'packageMains'];
|
21 |
|
22 | omissions.forEach(key => {
|
23 | if (!omit.includes(key) && key in obj) {
|
24 | this[key].merge(obj[key]);
|
25 | }
|
26 | });
|
27 |
|
28 | return super.merge(obj, [...omit, ...omissions]);
|
29 | }
|
30 | };
|