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 | Object.assign(
|
14 | {
|
15 | moduleExtensions: this.moduleExtensions.values(),
|
16 | packageMains: this.packageMains.values(),
|
17 | },
|
18 | super.toConfig()
|
19 | )
|
20 | );
|
21 | }
|
22 |
|
23 | merge(obj, omit = []) {
|
24 | const omissions = ['moduleExtensions', 'packageMains'];
|
25 |
|
26 | omissions.forEach(key => {
|
27 | if (!omit.includes(key) && key in obj) {
|
28 | this[key].merge(obj[key]);
|
29 | }
|
30 | });
|
31 |
|
32 | return super.merge(obj, [...omit, ...omissions]);
|
33 | }
|
34 | };
|