You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
731 B
JavaScript
31 lines
731 B
JavaScript
const Resolve = require('./Resolve');
|
|
const ChainedSet = require('./ChainedSet');
|
|
|
|
module.exports = class extends Resolve {
|
|
constructor(parent) {
|
|
super(parent);
|
|
this.moduleExtensions = new ChainedSet(this);
|
|
this.packageMains = new ChainedSet(this);
|
|
}
|
|
|
|
toConfig() {
|
|
return this.clean({
|
|
moduleExtensions: this.moduleExtensions.values(),
|
|
packageMains: this.packageMains.values(),
|
|
...super.toConfig(),
|
|
});
|
|
}
|
|
|
|
merge(obj, omit = []) {
|
|
const omissions = ['moduleExtensions', 'packageMains'];
|
|
|
|
omissions.forEach((key) => {
|
|
if (!omit.includes(key) && key in obj) {
|
|
this[key].merge(obj[key]);
|
|
}
|
|
});
|
|
|
|
return super.merge(obj, [...omit, ...omissions]);
|
|
}
|
|
};
|