| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | let ConcatenatedModule;try {  // eslint-disable-next-line global-require,import/no-unresolved,import/no-extraneous-dependencies  ConcatenatedModule = require('webpack/lib/optimize/ConcatenatedModule');  // eslint-disable-next-line no-empty} catch (e) {}/** * Get all modules from main & child compilations. * Merge modules from ConcatenatedModule (when webpack.optimize.ModuleConcatenationPlugin is used) * @param {Compilation} compilation * @return {NormalModule[]} */function getAllModules(compilation) {  let modules = compilation.modules;  // Look up in child compilations  if (compilation.children.length > 0) {    const childModules = compilation.children.map(getAllModules)      .reduce((acc, compilationModules) => acc.concat(compilationModules), []);    modules = modules.concat(childModules);  }  // Merge modules from ConcatenatedModule  if (ConcatenatedModule) {    const concatenatedModules = modules      .filter(m => m instanceof ConcatenatedModule)      .reduce((acc, m) => {        /**         * @see https://git.io/v7XDu         * In webpack@3.5.1 `modules` public property was removed         * To workaround this private `_orderedConcatenationList` property is used to collect modules         */        const subModules = 'modules' in m          ? m.modules          : m._orderedConcatenationList.map(entry => entry.module);        return acc.concat(subModules);      }, []);    if (concatenatedModules.length > 0) {      modules = modules.concat(concatenatedModules);    }  }  return modules;}module.exports = getAllModules;
 |