| 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]); | 
|   } | 
| }; |