(type)
| 2309 | * @type {(type: ExcludeModulesType) => ModulesGroupers} |
| 2310 | */ |
| 2311 | const MODULES_GROUPERS = (type) => ({ |
| 2312 | _: (groupConfigs, context, options) => { |
| 2313 | /** |
| 2314 | * Processes the provided name. |
| 2315 | * @param {keyof KnownStatsModule} name name |
| 2316 | * @param {string} type type |
| 2317 | * @param {boolean=} exclude need exclude? |
| 2318 | */ |
| 2319 | const groupByFlag = (name, type, exclude) => { |
| 2320 | groupConfigs.push({ |
| 2321 | getKeys: (module) => (module[name] ? ["1"] : undefined), |
| 2322 | getOptions: () => ({ |
| 2323 | groupChildren: !exclude, |
| 2324 | force: exclude |
| 2325 | }), |
| 2326 | createGroup: (key, children, modules) => ({ |
| 2327 | type, |
| 2328 | [name]: Boolean(key), |
| 2329 | ...(exclude ? { filteredChildren: modules.length } : { children }), |
| 2330 | ...moduleGroup( |
| 2331 | /** @type {(KnownStatsModule & ModuleGroupBySizeResult)[]} */ |
| 2332 | (children), |
| 2333 | modules |
| 2334 | ) |
| 2335 | }) |
| 2336 | }); |
| 2337 | }; |
| 2338 | const { |
| 2339 | groupModulesByCacheStatus, |
| 2340 | groupModulesByLayer, |
| 2341 | groupModulesByAttributes, |
| 2342 | groupModulesByType, |
| 2343 | groupModulesByPath, |
| 2344 | groupModulesByExtension |
| 2345 | } = options; |
| 2346 | if (groupModulesByAttributes) { |
| 2347 | groupByFlag("errors", "modules with errors"); |
| 2348 | groupByFlag("warnings", "modules with warnings"); |
| 2349 | groupByFlag("assets", "modules with assets"); |
| 2350 | groupByFlag("optional", "optional modules"); |
| 2351 | } |
| 2352 | if (groupModulesByCacheStatus) { |
| 2353 | groupByFlag("cacheable", "cacheable modules"); |
| 2354 | groupByFlag("built", "built modules"); |
| 2355 | groupByFlag("codeGenerated", "code generated modules"); |
| 2356 | } |
| 2357 | if (groupModulesByCacheStatus || !options.cachedModules) { |
| 2358 | groupByFlag("cached", "cached modules", !options.cachedModules); |
| 2359 | } |
| 2360 | if (groupModulesByAttributes || !options.orphanModules) { |
| 2361 | groupByFlag("orphan", "orphan modules", !options.orphanModules); |
| 2362 | } |
| 2363 | if (groupModulesByAttributes || !options.dependentModules) { |
| 2364 | groupByFlag("dependent", "dependent modules", !options.dependentModules); |
| 2365 | } |
| 2366 | if (groupModulesByType || !options.runtimeModules) { |
| 2367 | groupConfigs.push({ |
| 2368 | getKeys: (module) => { |
no test coverage detected