@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (669) hide show
  1. package/README.md +9 -11
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +16 -24
  4. package/hot/dev-server.js +2 -0
  5. package/lib/APIPlugin.js +60 -35
  6. package/lib/AsyncDependenciesBlock.js +3 -0
  7. package/lib/AutomaticPrefetchPlugin.js +6 -1
  8. package/lib/BannerPlugin.js +13 -5
  9. package/lib/Cache.js +27 -5
  10. package/lib/CacheFacade.js +41 -0
  11. package/lib/Chunk.js +71 -25
  12. package/lib/ChunkGraph.js +153 -19
  13. package/lib/ChunkGroup.js +115 -28
  14. package/lib/ChunkTemplate.js +9 -0
  15. package/lib/CircularModulesPlugin.js +190 -0
  16. package/lib/CleanPlugin.js +27 -28
  17. package/lib/CodeGenerationResults.js +19 -0
  18. package/lib/CompatibilityPlugin.js +85 -37
  19. package/lib/Compilation.js +656 -112
  20. package/lib/Compiler.js +109 -35
  21. package/lib/ConcatenationScope.js +34 -4
  22. package/lib/ConditionalInitFragment.js +6 -0
  23. package/lib/ConstPlugin.js +15 -12
  24. package/lib/ContextExclusionPlugin.js +3 -1
  25. package/lib/ContextModule.js +345 -55
  26. package/lib/ContextModuleFactory.js +193 -51
  27. package/lib/ContextReplacementPlugin.js +8 -1
  28. package/lib/DefinePlugin.js +537 -139
  29. package/lib/DependenciesBlock.js +6 -1
  30. package/lib/Dependency.js +159 -11
  31. package/lib/DependencyTemplate.js +7 -1
  32. package/lib/DependencyTemplates.js +4 -0
  33. package/lib/DotenvPlugin.js +3 -0
  34. package/lib/DynamicEntryPlugin.js +3 -1
  35. package/lib/EntryOptionPlugin.js +42 -2
  36. package/lib/EntryPlugin.js +4 -1
  37. package/lib/Entrypoint.js +5 -1
  38. package/lib/EnvironmentPlugin.js +3 -2
  39. package/lib/ErrorHelpers.js +7 -0
  40. package/lib/EvalDevToolModulePlugin.js +3 -1
  41. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  42. package/lib/ExportsInfo.js +421 -113
  43. package/lib/ExportsInfoApiPlugin.js +4 -3
  44. package/lib/ExternalModule.js +381 -80
  45. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  46. package/lib/ExternalsPlugin.js +3 -1
  47. package/lib/FileSystemInfo.js +701 -175
  48. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  49. package/lib/FlagDependencyExportsPlugin.js +82 -9
  50. package/lib/FlagDependencyUsagePlugin.js +115 -8
  51. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  52. package/lib/Generator.js +24 -3
  53. package/lib/HotModuleReplacementPlugin.js +110 -44
  54. package/lib/IgnorePlugin.js +5 -2
  55. package/lib/IgnoreWarningsPlugin.js +2 -1
  56. package/lib/InitFragment.js +33 -30
  57. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  58. package/lib/LazyBarrel.js +389 -0
  59. package/lib/LibraryTemplatePlugin.js +2 -1
  60. package/lib/LoaderOptionsPlugin.js +3 -1
  61. package/lib/LoaderTargetPlugin.js +3 -1
  62. package/lib/MainTemplate.js +15 -0
  63. package/lib/ManifestPlugin.js +9 -2
  64. package/lib/Module.js +121 -57
  65. package/lib/ModuleFactory.js +6 -1
  66. package/lib/ModuleFilenameHelpers.js +18 -4
  67. package/lib/ModuleGraph.js +69 -2
  68. package/lib/ModuleGraphConnection.js +9 -0
  69. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  70. package/lib/ModuleNotFoundError.js +3 -83
  71. package/lib/ModuleProfile.js +27 -1
  72. package/lib/ModuleSourceTypeConstants.js +52 -19
  73. package/lib/ModuleTemplate.js +10 -0
  74. package/lib/ModuleTypeConstants.js +20 -4
  75. package/lib/MultiCompiler.js +59 -4
  76. package/lib/MultiStats.js +9 -0
  77. package/lib/MultiWatching.js +6 -0
  78. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  79. package/lib/NodeStuffPlugin.js +78 -46
  80. package/lib/NormalModule.js +519 -206
  81. package/lib/NormalModuleFactory.js +156 -31
  82. package/lib/NormalModuleReplacementPlugin.js +3 -1
  83. package/lib/NullFactory.js +1 -0
  84. package/lib/OptionsApply.js +1 -0
  85. package/lib/Parser.js +3 -1
  86. package/lib/PlatformPlugin.js +2 -1
  87. package/lib/PrefetchPlugin.js +4 -1
  88. package/lib/ProgressPlugin.js +351 -161
  89. package/lib/ProvidePlugin.js +6 -3
  90. package/lib/RawModule.js +32 -16
  91. package/lib/RecordIdsPlugin.js +9 -0
  92. package/lib/RequestShortener.js +8 -0
  93. package/lib/ResolverFactory.js +5 -0
  94. package/lib/RuntimeGlobals.js +58 -5
  95. package/lib/RuntimeModule.js +22 -7
  96. package/lib/RuntimePlugin.js +123 -118
  97. package/lib/RuntimeTemplate.js +616 -37
  98. package/lib/SelfModuleFactory.js +3 -0
  99. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  100. package/lib/SourceMapDevToolPlugin.js +341 -63
  101. package/lib/Stats.js +6 -0
  102. package/lib/Template.js +52 -6
  103. package/lib/TemplatedPathPlugin.js +505 -138
  104. package/lib/UseStrictPlugin.js +3 -2
  105. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  106. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  107. package/lib/WarnNoModeSetPlugin.js +18 -2
  108. package/lib/WatchIgnorePlugin.js +5 -1
  109. package/lib/Watching.js +25 -3
  110. package/lib/WebpackError.js +3 -74
  111. package/lib/WebpackIsIncludedPlugin.js +4 -2
  112. package/lib/WebpackOptionsApply.js +88 -25
  113. package/lib/WebpackOptionsDefaulter.js +1 -0
  114. package/lib/asset/AssetBytesGenerator.js +28 -10
  115. package/lib/asset/AssetBytesParser.js +1 -0
  116. package/lib/asset/AssetGenerator.js +199 -60
  117. package/lib/asset/AssetModule.js +47 -0
  118. package/lib/asset/AssetModulesPlugin.js +115 -24
  119. package/lib/asset/AssetParser.js +4 -2
  120. package/lib/asset/AssetSourceGenerator.js +26 -8
  121. package/lib/asset/AssetSourceParser.js +1 -0
  122. package/lib/asset/RawDataUrlModule.js +23 -13
  123. package/lib/asset/WebManifestGenerator.js +164 -0
  124. package/lib/asset/WebManifestParser.js +130 -0
  125. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  126. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  127. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  128. package/lib/async-modules/isGeneratorLowered.js +26 -0
  129. package/lib/buildChunkGraph.js +107 -15
  130. package/lib/bun/BunTargetPlugin.js +42 -0
  131. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  132. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  133. package/lib/cache/IdleFileCachePlugin.js +6 -1
  134. package/lib/cache/MemoryCachePlugin.js +1 -1
  135. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  136. package/lib/cache/PackFileCacheStrategy.js +302 -12
  137. package/lib/cache/ResolverCachePlugin.js +12 -1
  138. package/lib/cache/getLazyHashedEtag.js +13 -2
  139. package/lib/cache/mergeEtags.js +4 -0
  140. package/lib/cli.js +142 -20
  141. package/lib/config/browserslistTargetHandler.js +141 -0
  142. package/lib/config/defaults.js +612 -43
  143. package/lib/config/defineConfig.js +31 -0
  144. package/lib/config/normalization.js +46 -1
  145. package/lib/config/target.js +200 -2
  146. package/lib/container/ContainerEntryDependency.js +2 -0
  147. package/lib/container/ContainerEntryModule.js +27 -14
  148. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  149. package/lib/container/ContainerExposedDependency.js +6 -2
  150. package/lib/container/ContainerPlugin.js +2 -1
  151. package/lib/container/ContainerReferencePlugin.js +3 -2
  152. package/lib/container/FallbackDependency.js +9 -7
  153. package/lib/container/FallbackItemDependency.js +1 -0
  154. package/lib/container/FallbackModule.js +22 -9
  155. package/lib/container/FallbackModuleFactory.js +1 -0
  156. package/lib/container/HoistContainerReferencesPlugin.js +47 -55
  157. package/lib/container/ModuleFederationPlugin.js +21 -29
  158. package/lib/container/RemoteModule.js +33 -10
  159. package/lib/container/RemoteRuntimeModule.js +15 -12
  160. package/lib/container/RemoteToExternalDependency.js +1 -0
  161. package/lib/container/options.js +7 -0
  162. package/lib/css/CssGenerator.js +540 -272
  163. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  164. package/lib/css/CssLoadingRuntimeModule.js +173 -81
  165. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  166. package/lib/css/CssModulesPlugin.js +371 -208
  167. package/lib/css/CssParser.js +3538 -1963
  168. package/lib/css/syntax.js +4155 -0
  169. package/lib/debug/ProfilingPlugin.js +33 -2
  170. package/lib/deno/DenoTargetPlugin.js +41 -0
  171. package/lib/dependencies/AMDDefineDependency.js +29 -17
  172. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  173. package/lib/dependencies/AMDPlugin.js +6 -3
  174. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  175. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  176. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  177. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  178. package/lib/dependencies/AMDRequireDependency.js +28 -20
  179. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  180. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  181. package/lib/dependencies/CachedConstDependency.js +9 -1
  182. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  183. package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
  184. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  185. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  186. package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
  187. package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
  188. package/lib/dependencies/CommonJsPlugin.js +7 -4
  189. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  190. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  191. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  192. package/lib/dependencies/ConstDependency.js +22 -12
  193. package/lib/dependencies/ContextDependency.js +13 -2
  194. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  195. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  196. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  197. package/lib/dependencies/ContextElementDependency.js +27 -14
  198. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  199. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  200. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  201. package/lib/dependencies/CssIcssExportDependency.js +681 -367
  202. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  203. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  204. package/lib/dependencies/CssImportDependency.js +37 -1
  205. package/lib/dependencies/CssUrlDependency.js +87 -14
  206. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  207. package/lib/dependencies/DllEntryDependency.js +12 -13
  208. package/lib/dependencies/DynamicExports.js +5 -0
  209. package/lib/dependencies/EntryDependency.js +1 -0
  210. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  211. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  212. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  213. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  214. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  215. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  216. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  217. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  218. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  219. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
  220. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  221. package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
  222. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
  224. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  226. package/lib/dependencies/HarmonyExports.js +6 -1
  227. package/lib/dependencies/HarmonyImportDependency.js +60 -4
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  229. package/lib/dependencies/HarmonyImportGuard.js +427 -0
  230. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  231. package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
  232. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  233. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  234. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  235. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  236. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  237. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  238. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  239. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  240. package/lib/dependencies/ImportContextDependency.js +9 -9
  241. package/lib/dependencies/ImportDependency.js +92 -3
  242. package/lib/dependencies/ImportEagerDependency.js +2 -0
  243. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  244. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  245. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  246. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  247. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  248. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  249. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  250. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  251. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  252. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  253. package/lib/dependencies/ImportParserPlugin.js +114 -27
  254. package/lib/dependencies/ImportPhase.js +17 -11
  255. package/lib/dependencies/ImportPlugin.js +2 -1
  256. package/lib/dependencies/ImportWeakDependency.js +3 -0
  257. package/lib/dependencies/JsonExportsDependency.js +15 -10
  258. package/lib/dependencies/LoaderDependency.js +2 -0
  259. package/lib/dependencies/LoaderImportDependency.js +3 -0
  260. package/lib/dependencies/LoaderPlugin.js +9 -2
  261. package/lib/dependencies/LocalModule.js +15 -12
  262. package/lib/dependencies/LocalModuleDependency.js +15 -13
  263. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  264. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  265. package/lib/dependencies/ModuleDependency.js +14 -0
  266. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  267. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  268. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  269. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  270. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  271. package/lib/dependencies/NullDependency.js +2 -0
  272. package/lib/dependencies/PrefetchDependency.js +1 -0
  273. package/lib/dependencies/ProvidedDependency.js +36 -27
  274. package/lib/dependencies/PureExpressionDependency.js +14 -10
  275. package/lib/dependencies/RequireContextDependency.js +1 -0
  276. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  277. package/lib/dependencies/RequireContextPlugin.js +2 -1
  278. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  279. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  280. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  281. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  282. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  283. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  284. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  285. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  286. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  287. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  288. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  289. package/lib/dependencies/RequireResolveDependency.js +2 -0
  290. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  291. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  292. package/lib/dependencies/StaticExportsDependency.js +13 -10
  293. package/lib/dependencies/SystemPlugin.js +9 -6
  294. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  295. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  296. package/lib/dependencies/URLContextDependency.js +8 -7
  297. package/lib/dependencies/URLDependency.js +157 -33
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +12 -13
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  301. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  303. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  304. package/lib/dependencies/WorkerDependency.js +111 -27
  305. package/lib/dependencies/WorkletDependency.js +278 -0
  306. package/lib/dependencies/getFunctionExpression.js +1 -0
  307. package/lib/dependencies/processExportInfo.js +14 -11
  308. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  309. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  310. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  311. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  312. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  313. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  314. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  315. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  316. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  317. package/lib/electron/ElectronTargetPlugin.js +24 -5
  318. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  319. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  320. package/lib/errors/BuildCycleError.js +1 -1
  321. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  322. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  323. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  324. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  325. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  326. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  327. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  328. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  329. package/lib/errors/JSONParseError.js +115 -0
  330. package/lib/errors/LoaderLoadingError.js +20 -0
  331. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  332. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  333. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  334. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  335. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  336. package/lib/errors/ModuleNotFoundError.js +94 -0
  337. package/lib/errors/ModuleParseError.js +141 -0
  338. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  339. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  340. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  341. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  342. package/lib/errors/NonErrorEmittedError.js +30 -0
  343. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  344. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  345. package/lib/errors/WebpackError.js +84 -0
  346. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  347. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  348. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  349. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
  350. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  351. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  352. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  353. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  354. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  355. package/lib/hmr/lazyCompilationBackend.js +53 -12
  356. package/lib/html/HtmlGenerator.js +1490 -0
  357. package/lib/html/HtmlModule.js +41 -0
  358. package/lib/html/HtmlModulesPlugin.js +1129 -0
  359. package/lib/html/HtmlParser.js +1970 -0
  360. package/lib/html/favicon.svg +1 -0
  361. package/lib/html/syntax.js +9106 -0
  362. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  363. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  364. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  365. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  366. package/lib/ids/IdHelpers.js +49 -12
  367. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  368. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  369. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  370. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  371. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  372. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  373. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  374. package/lib/index.js +66 -15
  375. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  376. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  377. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  378. package/lib/javascript/ChunkHelpers.js +1 -0
  379. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  380. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  381. package/lib/javascript/JavascriptGenerator.js +213 -51
  382. package/lib/javascript/JavascriptModule.js +54 -0
  383. package/lib/javascript/JavascriptModulesPlugin.js +628 -198
  384. package/lib/javascript/JavascriptParser.js +1334 -471
  385. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  386. package/lib/javascript/StartupHelpers.js +5 -0
  387. package/lib/javascript/syntax.js +5037 -0
  388. package/lib/json/JsonData.js +5 -0
  389. package/lib/json/JsonGenerator.js +21 -0
  390. package/lib/json/JsonModule.js +40 -0
  391. package/lib/json/JsonModulesPlugin.js +8 -1
  392. package/lib/json/JsonParser.js +18 -27
  393. package/lib/library/AbstractLibraryPlugin.js +17 -2
  394. package/lib/library/AmdLibraryPlugin.js +8 -0
  395. package/lib/library/AssignLibraryPlugin.js +21 -3
  396. package/lib/library/EnableLibraryPlugin.js +8 -2
  397. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  398. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  399. package/lib/library/JsonpLibraryPlugin.js +8 -0
  400. package/lib/library/ModuleLibraryPlugin.js +154 -7
  401. package/lib/library/SystemLibraryPlugin.js +11 -3
  402. package/lib/library/UmdLibraryPlugin.js +16 -0
  403. package/lib/loaders/LoaderRunner.js +714 -0
  404. package/lib/loaders/loadLoader.js +100 -0
  405. package/lib/logging/Logger.js +17 -0
  406. package/lib/logging/createConsoleLogger.js +7 -0
  407. package/lib/logging/runtime.js +2 -0
  408. package/lib/logging/truncateArgs.js +2 -0
  409. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  410. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  411. package/lib/node/NodeSourcePlugin.js +1 -1
  412. package/lib/node/NodeTargetPlugin.js +4 -63
  413. package/lib/node/NodeTemplatePlugin.js +3 -1
  414. package/lib/node/NodeWatchFileSystem.js +40 -22
  415. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  416. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
  417. package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
  418. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  419. package/lib/node/nodeBuiltins.js +80 -0
  420. package/lib/node/nodeConsole.js +116 -64
  421. package/lib/optimize/AggressiveMergingPlugin.js +22 -16
  422. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  423. package/lib/optimize/ConcatenatedModule.js +603 -130
  424. package/lib/optimize/ConstExportsPlugin.js +211 -0
  425. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  426. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  427. package/lib/optimize/InlineExports.js +178 -0
  428. package/lib/optimize/InnerGraph.js +374 -262
  429. package/lib/optimize/InnerGraphPlugin.js +246 -117
  430. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  431. package/lib/optimize/MangleExportsPlugin.js +5 -1
  432. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  433. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  434. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  435. package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
  436. package/lib/optimize/RealContentHashPlugin.js +130 -52
  437. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  438. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  439. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  440. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  441. package/lib/optimize/SplitChunksPlugin.js +200 -50
  442. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  443. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  444. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  445. package/lib/performance/SizeLimitsPlugin.js +8 -2
  446. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  448. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  449. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  450. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  451. package/lib/prefetch/ResourceHintPlugin.js +687 -0
  452. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  453. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  454. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  455. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  456. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  457. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  458. package/lib/rules/RuleSetCompiler.js +132 -0
  459. package/lib/rules/UseEffectRulePlugin.js +10 -3
  460. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  461. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  462. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  463. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  464. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  465. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  466. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  467. package/lib/runtime/CompatRuntimeModule.js +2 -0
  468. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  469. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  470. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  471. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  472. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  473. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  474. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  475. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  476. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  477. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  478. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  479. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  480. package/lib/runtime/HelperRuntimeModule.js +5 -0
  481. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  482. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  483. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  484. package/lib/runtime/NonceRuntimeModule.js +1 -0
  485. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  486. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  487. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  488. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  489. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  490. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  491. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  492. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  493. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  494. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  495. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  496. package/lib/schemes/DataUriPlugin.js +14 -2
  497. package/lib/schemes/FileUriPlugin.js +1 -1
  498. package/lib/schemes/HttpUriPlugin.js +86 -4
  499. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  500. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  501. package/lib/serialization/ArraySerializer.js +6 -8
  502. package/lib/serialization/BinaryMiddleware.js +427 -1006
  503. package/lib/serialization/DateObjectSerializer.js +4 -2
  504. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  505. package/lib/serialization/FileMiddleware.js +345 -59
  506. package/lib/serialization/MapObjectSerializer.js +7 -9
  507. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  508. package/lib/serialization/ObjectMiddleware.js +73 -13
  509. package/lib/serialization/PlainObjectSerializer.js +16 -8
  510. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  511. package/lib/serialization/Serializer.js +6 -0
  512. package/lib/serialization/SerializerMiddleware.js +14 -2
  513. package/lib/serialization/SetObjectSerializer.js +6 -8
  514. package/lib/serialization/SingleItemMiddleware.js +3 -0
  515. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  516. package/lib/sharing/ConsumeSharedModule.js +21 -7
  517. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  518. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  519. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  520. package/lib/sharing/ProvideSharedDependency.js +34 -15
  521. package/lib/sharing/ProvideSharedModule.js +42 -12
  522. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  523. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  524. package/lib/sharing/SharePlugin.js +5 -1
  525. package/lib/sharing/ShareRuntimeModule.js +19 -16
  526. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  527. package/lib/sharing/utils.js +9 -1
  528. package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
  529. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  530. package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
  531. package/lib/stats/StatsFactory.js +70 -27
  532. package/lib/stats/StatsPrinter.js +16 -2
  533. package/lib/typescript/TypeScriptPlugin.js +210 -0
  534. package/lib/url/URLParserPlugin.js +111 -23
  535. package/lib/util/ArrayHelpers.js +1 -0
  536. package/lib/util/ArrayQueue.js +10 -5
  537. package/lib/util/AsyncQueue.js +154 -74
  538. package/lib/util/Hash.js +2 -2
  539. package/lib/util/IterableHelpers.js +3 -0
  540. package/lib/util/LazyBucketSortedSet.js +26 -0
  541. package/lib/util/LazySet.js +45 -4
  542. package/lib/util/LocConverter.js +64 -0
  543. package/lib/util/ParallelismFactorCalculator.js +1 -0
  544. package/lib/util/Queue.js +6 -3
  545. package/lib/util/Semaphore.js +15 -1
  546. package/lib/util/SetHelpers.js +4 -1
  547. package/lib/util/SortableSet.js +7 -1
  548. package/lib/util/SourceProcessor.js +119 -0
  549. package/lib/util/StackedCacheMap.js +20 -3
  550. package/lib/util/StackedMap.js +162 -43
  551. package/lib/util/StringXor.js +1 -1
  552. package/lib/util/TupleQueue.js +7 -3
  553. package/lib/util/TupleSet.js +14 -0
  554. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  555. package/lib/util/WeakTupleMap.js +60 -1
  556. package/lib/util/binarySearchBounds.js +3 -2
  557. package/lib/util/chainedImports.js +3 -3
  558. package/lib/util/cleverMerge.js +19 -2
  559. package/lib/util/comparators.js +35 -4
  560. package/lib/util/compileBooleanMatcher.js +9 -0
  561. package/lib/util/concatenate.js +80 -24
  562. package/lib/util/conventions.js +46 -1
  563. package/lib/util/createHash.js +0 -1
  564. package/lib/util/createHooksRegistry.js +43 -0
  565. package/lib/util/createMappings.js +118 -0
  566. package/lib/util/dataURL.js +3 -2
  567. package/lib/util/deprecation.js +19 -0
  568. package/lib/util/deterministicGrouping.js +46 -17
  569. package/lib/util/extractSourceMap.js +2 -1
  570. package/lib/util/extractUrlAndGlobal.js +1 -0
  571. package/lib/util/findGraphRoots.js +7 -0
  572. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  573. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  574. package/lib/util/fs.js +87 -14
  575. package/lib/util/generateDebugId.js +1 -0
  576. package/lib/util/globUtils.js +710 -0
  577. package/lib/util/hash/BatchedHash.js +1 -0
  578. package/lib/util/hash/BulkUpdateHash.js +1 -0
  579. package/lib/util/hash/DebugHash.js +1 -0
  580. package/lib/util/hash/hash-digest.js +32 -15
  581. package/lib/util/hash/md4.js +1 -1
  582. package/lib/util/hash/wasm-hash.js +5 -0
  583. package/lib/util/hash/xxhash64.js +1 -1
  584. package/lib/util/identifier.js +118 -7
  585. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  586. package/lib/util/internalSerializables.js +102 -60
  587. package/lib/util/magicComment.js +149 -7
  588. package/lib/util/makeSerializable.js +7 -0
  589. package/lib/util/memoize.js +2 -0
  590. package/lib/util/mimeTypes.js +176 -0
  591. package/lib/util/nonNumericOnlyHash.js +31 -1
  592. package/lib/util/numberHash.js +2 -2
  593. package/lib/util/parseJson.js +41 -0
  594. package/lib/util/processAsyncTree.js +8 -0
  595. package/lib/util/property.js +9 -2
  596. package/lib/util/publicPathPlaceholder.js +64 -0
  597. package/lib/util/registerExternalSerializer.js +24 -4
  598. package/lib/util/removeBOM.js +1 -0
  599. package/lib/util/runtime.js +32 -0
  600. package/lib/util/semver.js +15 -0
  601. package/lib/util/serialization.js +2 -0
  602. package/lib/util/smartGrouping.js +8 -0
  603. package/lib/util/source.js +23 -0
  604. package/lib/util/topologicalSort.js +69 -0
  605. package/lib/validateSchema.js +1 -0
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  607. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  608. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  609. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  610. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  611. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  612. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  613. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  614. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  615. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  616. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  623. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  626. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  627. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  629. package/lib/web/JsonpTemplatePlugin.js +2 -1
  630. package/lib/webpack.js +78 -1
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +21 -0
  635. package/package.json +79 -77
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +1173 -80
  638. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  639. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  640. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  641. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  642. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  643. package/schemas/plugins/HtmlParserOptions.json +3 -0
  644. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  645. package/schemas/plugins/ProgressPlugin.json +38 -0
  646. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  647. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  648. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  650. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  652. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  653. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  654. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  655. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  656. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  657. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  658. package/types.d.ts +11053 -3019
  659. package/lib/CaseSensitiveModulesWarning.js +0 -72
  660. package/lib/GraphHelpers.js +0 -46
  661. package/lib/ModuleParseError.js +0 -125
  662. package/lib/NoModeWarning.js +0 -23
  663. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  664. package/lib/css/walkCssTokens.js +0 -1843
  665. package/lib/util/AppendOnlyStackedSet.js +0 -78
  666. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  668. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  669. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -17,6 +17,7 @@ const RequestShortener = require("../RequestShortener");
17
17
  /** @typedef {import("./DefaultStatsFactoryPlugin").StatsError} StatsError */
18
18
 
19
19
  /**
20
+ * Processes the provided normalized stats option.
20
21
  * @param {Partial<NormalizedStatsOptions>} options options
21
22
  * @param {StatsOptions} defaults default options
22
23
  */
@@ -30,7 +31,7 @@ const applyDefaults = (options, defaults) => {
30
31
  }
31
32
  };
32
33
 
33
- /** @typedef {{ [Key in Exclude<StatsValue, boolean | EXPECTED_OBJECT | "normal">]: StatsOptions }} NamedPresets */
34
+ /** @typedef {{ [Key in Exclude<StatsValue, boolean | StatsOptions | "normal">]: StatsOptions }} NamedPresets */
34
35
 
35
36
  /** @type {NamedPresets} */
36
37
  const NAMED_PRESETS = {
@@ -40,6 +41,7 @@ const NAMED_PRESETS = {
40
41
  relatedAssets: true,
41
42
  entrypoints: true,
42
43
  chunkGroups: true,
44
+ chunkGroupResourceHints: true,
43
45
  ids: true,
44
46
  modules: false,
45
47
  chunks: true,
@@ -144,16 +146,19 @@ const NAMED_PRESETS = {
144
146
  };
145
147
 
146
148
  /**
149
+ * Returns true when enabled, otherwise false.
147
150
  * @param {Partial<NormalizedStatsOptions>} all stats options
148
151
  * @returns {boolean} true when enabled, otherwise false
149
152
  */
150
153
  const NORMAL_ON = ({ all }) => all !== false;
151
154
  /**
155
+ * Returns true when enabled, otherwise false.
152
156
  * @param {Partial<NormalizedStatsOptions>} all stats options
153
157
  * @returns {boolean} true when enabled, otherwise false
154
158
  */
155
159
  const NORMAL_OFF = ({ all }) => all === true;
156
160
  /**
161
+ * Returns true when enabled, otherwise false.
157
162
  * @param {Partial<NormalizedStatsOptions>} all stats options
158
163
  * @param {CreateStatsOptionsContext} forToString stats options context
159
164
  * @returns {boolean} true when enabled, otherwise false
@@ -161,6 +166,7 @@ const NORMAL_OFF = ({ all }) => all === true;
161
166
  const ON_FOR_TO_STRING = ({ all }, { forToString }) =>
162
167
  forToString ? all !== false : all === true;
163
168
  /**
169
+ * Returns true when enabled, otherwise false.
164
170
  * @param {Partial<NormalizedStatsOptions>} all stats options
165
171
  * @param {CreateStatsOptionsContext} forToString stats options context
166
172
  * @returns {boolean} true when enabled, otherwise false
@@ -168,6 +174,7 @@ const ON_FOR_TO_STRING = ({ all }, { forToString }) =>
168
174
  const OFF_FOR_TO_STRING = ({ all }, { forToString }) =>
169
175
  forToString ? all === true : all !== false;
170
176
  /**
177
+ * Auto for to string.
171
178
  * @param {Partial<NormalizedStatsOptions>} all stats options
172
179
  * @param {CreateStatsOptionsContext} forToString stats options context
173
180
  * @returns {boolean | "auto"} true when enabled, otherwise false
@@ -204,6 +211,7 @@ const DEFAULTS = {
204
211
  chunkGroups: OFF_FOR_TO_STRING,
205
212
  chunkGroupAuxiliary: OFF_FOR_TO_STRING,
206
213
  chunkGroupChildren: OFF_FOR_TO_STRING,
214
+ chunkGroupResourceHints: OFF_FOR_TO_STRING,
207
215
  chunkGroupMaxAssets: (o, { forToString }) => (forToString ? 5 : Infinity),
208
216
  chunks: OFF_FOR_TO_STRING,
209
217
  chunkRelations: OFF_FOR_TO_STRING,
@@ -285,11 +293,13 @@ const DEFAULTS = {
285
293
  };
286
294
 
287
295
  /**
296
+ * Defines the normalize function type used by this module.
288
297
  * @template T
289
298
  * @typedef {(value: T, ...args: EXPECTED_ANY[]) => boolean} NormalizeFunction
290
299
  */
291
300
 
292
301
  /**
302
+ * Returns normalize fn.
293
303
  * @template {string} T
294
304
  * @param {string | ({ test: (value: T) => boolean }) | NormalizeFunction<T> | boolean} item item to normalize
295
305
  * @returns {NormalizeFunction<T>} normalize fn
@@ -315,6 +325,7 @@ const normalizeFilter = (item) => {
315
325
  /** @typedef {{ [Key in NormalizerKeys]?: (value: StatsOptions[Key]) => KnownNormalizedStatsOptions[Key] }} Normalizers */
316
326
 
317
327
  /**
328
+ * Defines the warning filter fn callback.
318
329
  * @callback WarningFilterFn
319
330
  * @param {StatsError} warning warning
320
331
  * @param {string} warningString warning string
@@ -343,6 +354,7 @@ const NORMALIZER = {
343
354
  }
344
355
  return value.map(
345
356
  /**
357
+ * Handles the warnings filter callback for this hook.
346
358
  * @param {StatsOptions["warningsFilter"]} filter a warning filter
347
359
  * @returns {WarningFilterFn} result
348
360
  */
@@ -380,7 +392,7 @@ const PLUGIN_NAME = "DefaultStatsPresetPlugin";
380
392
 
381
393
  class DefaultStatsPresetPlugin {
382
394
  /**
383
- * Apply the plugin
395
+ * Applies the plugin by registering its hooks on the compiler.
384
396
  * @param {Compiler} compiler the compiler instance
385
397
  * @returns {void}
386
398
  */
@@ -36,6 +36,7 @@ const DATA_URI_CONTENT_LENGTH = 16;
36
36
  const MAX_MODULE_IDENTIFIER_LENGTH = 80;
37
37
 
38
38
  /**
39
+ * Returns if n is 1, singular, else plural.
39
40
  * @param {number} n a number
40
41
  * @param {string} singular singular
41
42
  * @param {string} plural plural
@@ -44,6 +45,7 @@ const MAX_MODULE_IDENTIFIER_LENGTH = 80;
44
45
  const plural = (n, singular, plural) => (n === 1 ? singular : plural);
45
46
 
46
47
  /**
48
+ * Returns text.
47
49
  * @param {Record<string, number>} sizes sizes by source type
48
50
  * @param {StatsPrinterContext} options options
49
51
  * @returns {string | undefined} text
@@ -58,6 +60,7 @@ const printSizes = (sizes, { formatSize = (n) => `${n}` }) => {
58
60
  };
59
61
 
60
62
  /**
63
+ * Gets resource name.
61
64
  * @param {string | null} resource resource
62
65
  * @returns {string} resource name for display
63
66
  */
@@ -75,6 +78,7 @@ const getResourceName = (resource) => {
75
78
  };
76
79
 
77
80
  /**
81
+ * Returns prefix and module name.
78
82
  * @param {string} name module name
79
83
  * @returns {[string, string]} prefix and module name
80
84
  */
@@ -99,6 +103,7 @@ const getModuleName = (name) => {
99
103
  };
100
104
 
101
105
  /**
106
+ * Returns joined string.
102
107
  * @param {string} str string
103
108
  * @param {(item: string) => string} fn function to apply to each line
104
109
  * @returns {string} joined string
@@ -106,12 +111,14 @@ const getModuleName = (name) => {
106
111
  const mapLines = (str, fn) => str.split("\n").map(fn).join("\n");
107
112
 
108
113
  /**
114
+ * Returns number as two digit string, leading 0.
109
115
  * @param {number} n a number
110
116
  * @returns {string} number as two digit string, leading 0
111
117
  */
112
118
  const twoDigit = (n) => (n >= 10 ? `${n}` : `0${n}`);
113
119
 
114
120
  /**
121
+ * Checks whether this object is valid id.
115
122
  * @param {string | number | null} id an id
116
123
  * @returns {id is string | number} is i
117
124
  */
@@ -124,6 +131,7 @@ const isValidId = (id) => {
124
131
  };
125
132
 
126
133
  /**
134
+ * Returns string representation of list.
127
135
  * @template T
128
136
  * @param {T[] | undefined} list of items
129
137
  * @param {number} count number of items to show
@@ -133,28 +141,33 @@ const moreCount = (list, count) =>
133
141
  list && list.length > 0 ? `+ ${count}` : `${count}`;
134
142
 
135
143
  /**
144
+ * Defines the with required type used by this module.
136
145
  * @template T
137
146
  * @template {keyof T} K
138
147
  * @typedef {{ [P in K]-?: T[P] }} WithRequired
139
148
  */
140
149
 
141
150
  /**
151
+ * Defines the define stats printer context type used by this module.
142
152
  * @template {keyof StatsPrinterContext} RequiredStatsPrinterContextKeys
143
153
  * @typedef {StatsPrinterContextWithExtra & WithRequired<StatsPrinterContext, "compilation" | RequiredStatsPrinterContextKeys>} DefineStatsPrinterContext
144
154
  */
145
155
 
146
156
  /**
157
+ * Defines the simple printer type used by this module.
147
158
  * @template T
148
159
  * @template {keyof StatsPrinterContext} RequiredStatsPrinterContextKeys
149
160
  * @typedef {(thing: Exclude<T, undefined>, context: DefineStatsPrinterContext<RequiredStatsPrinterContextKeys>, printer: StatsPrinter) => string | undefined} SimplePrinter
150
161
  */
151
162
 
152
163
  /**
164
+ * Defines the unpacked type used by this module.
153
165
  * @template T
154
166
  * @typedef {T extends (infer U)[] ? U : T} Unpacked
155
167
  */
156
168
 
157
169
  /**
170
+ * Defines the property name type used by this module.
158
171
  * @template {object} O
159
172
  * @template {keyof O} K
160
173
  * @template {string} B
@@ -162,6 +175,7 @@ const moreCount = (list, count) =>
162
175
  */
163
176
 
164
177
  /**
178
+ * Defines the array property name type used by this module.
165
179
  * @template {object} O
166
180
  * @template {keyof O} K
167
181
  * @template {string} B
@@ -169,6 +183,7 @@ const moreCount = (list, count) =>
169
183
  */
170
184
 
171
185
  /**
186
+ * Defines the exclamation type used by this module.
172
187
  * @template {object} O
173
188
  * @template {string} K
174
189
  * @template {string} E
@@ -176,6 +191,7 @@ const moreCount = (list, count) =>
176
191
  */
177
192
 
178
193
  /**
194
+ * Defines the shared type used by this module.
179
195
  * @template {object} O
180
196
  * @template {string} B
181
197
  * @template {string} [R=B]
@@ -184,6 +200,7 @@ const moreCount = (list, count) =>
184
200
  */
185
201
 
186
202
  /**
203
+ * Defines the shared type used by this module.
187
204
  * @typedef {Printers<KnownStatsCompilation, "compilation"> &
188
205
  * { ["compilation.summary!"]?: SimplePrinter<KnownStatsCompilation, "compilation"> } &
189
206
  * { ["compilation.errorsInChildren!"]?: SimplePrinter<KnownStatsCompilation, "compilation"> } &
@@ -406,6 +423,7 @@ const COMPILATION_SIMPLE_PRINTERS = {
406
423
  };
407
424
 
408
425
  /**
426
+ * Defines the shared type used by this module.
409
427
  * @typedef {Printers<KnownStatsAsset, "asset"> &
410
428
  * Printers<KnownStatsAsset["info"], "asset.info"> &
411
429
  * Exclamation<KnownStatsAsset, "asset.separator", "asset"> &
@@ -467,6 +485,7 @@ const ASSET_SIMPLE_PRINTERS = {
467
485
  };
468
486
 
469
487
  /**
488
+ * Defines the shared type used by this module.
470
489
  * @typedef {Printers<KnownStatsModule, "module"> &
471
490
  * Exclamation<KnownStatsModule, "module.separator", "module"> &
472
491
  * { ["module.filteredChildren"]?: SimplePrinter<number, "module"> } &
@@ -489,8 +508,18 @@ const MODULE_SIMPLE_PRINTERS = {
489
508
  "module.chunks[]": (id, { formatChunkId }) => formatChunkId(id),
490
509
  "module.depth": (depth, { formatFlag }) =>
491
510
  depth !== null ? formatFlag(`depth ${depth}`) : undefined,
492
- "module.cacheable": (cacheable, { formatFlag, red }) =>
493
- cacheable === false ? red(formatFlag("not cacheable")) : undefined,
511
+ "module.cacheable": (cacheable, { formatFlag, red, module }) =>
512
+ cacheable === false
513
+ ? red(
514
+ formatFlag(
515
+ module.notCacheableReasons && module.notCacheableReasons.length > 0
516
+ ? `not cacheable: ${module.notCacheableReasons.join(", ")}`
517
+ : "not cacheable"
518
+ )
519
+ )
520
+ : undefined,
521
+ // rendered as part of the "module.cacheable" flag
522
+ "module.notCacheableReasons": () => undefined,
494
523
  "module.orphan": (orphan, { formatFlag, yellow }) =>
495
524
  orphan ? yellow(formatFlag("orphan")) : undefined,
496
525
  // "module.runtime": (runtime, { formatFlag, yellow }) =>
@@ -588,6 +617,7 @@ const MODULE_SIMPLE_PRINTERS = {
588
617
  };
589
618
 
590
619
  /**
620
+ * Defines the module issuer printers type used by this module.
591
621
  * @typedef {Printers<KnownStatsModuleIssuer, "moduleIssuer"> & Printers<KnownStatsModuleIssuer["profile"], "moduleIssuer.profile", "moduleIssuer">} ModuleIssuerPrinters
592
622
  */
593
623
 
@@ -598,6 +628,7 @@ const MODULE_ISSUER_PRINTERS = {
598
628
  };
599
629
 
600
630
  /**
631
+ * Defines the module reasons printers type used by this module.
601
632
  * @typedef {Printers<KnownStatsModuleReason, "moduleReason"> & { ["moduleReason.filteredChildren"]?: SimplePrinter<number, "moduleReason"> }} ModuleReasonsPrinters
602
633
  */
603
634
 
@@ -652,6 +683,7 @@ const MODULE_PROFILE_PRINTERS = {
652
683
  };
653
684
 
654
685
  /**
686
+ * Defines the shared type used by this module.
655
687
  * @typedef {Exclamation<KnownStatsChunkGroup, "chunkGroup.kind", "chunkGroupKind"> &
656
688
  * Exclamation<KnownStatsChunkGroup, "chunkGroup.separator", "chunkGroup"> &
657
689
  * Printers<KnownStatsChunkGroup, "chunkGroup"> &
@@ -716,6 +748,7 @@ const CHUNK_GROUP_PRINTERS = {
716
748
  };
717
749
 
718
750
  /**
751
+ * Defines the shared type used by this module.
719
752
  * @typedef {Printers<KnownStatsChunk, "chunk"> &
720
753
  * { ["chunk.childrenByOrder[].type"]: SimplePrinter<string, "chunk"> } &
721
754
  * { ["chunk.childrenByOrder[].children[]"]: SimplePrinter<ChunkId, "chunk"> } &
@@ -778,6 +811,7 @@ const CHUNK_PRINTERS = {
778
811
  };
779
812
 
780
813
  /**
814
+ * Defines the shared type used by this module.
781
815
  * @typedef {Printers<KnownStatsError, "error"> &
782
816
  * { ["error.filteredDetails"]?: SimplePrinter<number, "error"> } &
783
817
  * Exclamation<KnownStatsError, "error.separator", "error">} ErrorPrinters
@@ -822,6 +856,7 @@ const ERROR_PRINTERS = {
822
856
  };
823
857
 
824
858
  /**
859
+ * Defines the shared type used by this module.
825
860
  * @typedef {Printers<KnownStatsLoggingEntry, `loggingEntry(${LogTypeEnum}).loggingEntry`> &
826
861
  * { ["loggingEntry(clear).loggingEntry"]?: SimplePrinter<KnownStatsLoggingEntry, "logging"> } &
827
862
  * { ["loggingEntry.trace[]"]?: SimplePrinter<Exclude<KnownStatsLoggingEntry["trace"], undefined>[number], "logging"> } &
@@ -1178,6 +1213,7 @@ const SIMPLE_ITEMS_JOINER = {
1178
1213
  };
1179
1214
 
1180
1215
  /**
1216
+ * Returns result.
1181
1217
  * @param {Item[]} items items
1182
1218
  * @returns {string} result
1183
1219
  */
@@ -1188,6 +1224,7 @@ const joinOneLine = (items) =>
1188
1224
  .join(" ");
1189
1225
 
1190
1226
  /**
1227
+ * Returns result.
1191
1228
  * @param {Item[]} items items
1192
1229
  * @returns {string} result
1193
1230
  */
@@ -1235,6 +1272,7 @@ const joinInBrackets = (items) => {
1235
1272
  };
1236
1273
 
1237
1274
  /**
1275
+ * Returns result.
1238
1276
  * @param {string} str a string
1239
1277
  * @param {string} prefix prefix
1240
1278
  * @param {boolean=} noPrefixInFirstLine need prefix in the first line?
@@ -1248,6 +1286,7 @@ const indent = (str, prefix, noPrefixInFirstLine) => {
1248
1286
  };
1249
1287
 
1250
1288
  /**
1289
+ * Join explicit new line.
1251
1290
  * @param {(false | Item)[]} items items
1252
1291
  * @param {string} indenter indenter
1253
1292
  * @returns {string} result
@@ -1274,12 +1313,14 @@ const joinExplicitNewLine = (items, indenter) => {
1274
1313
  };
1275
1314
 
1276
1315
  /**
1316
+ * Returns joiner.
1277
1317
  * @param {boolean} error is an error
1278
1318
  * @returns {SimpleElementJoiner} joiner
1279
1319
  */
1280
1320
  const joinError =
1281
1321
  (error) =>
1282
1322
  /**
1323
+ * Handles the callback logic for this hook.
1283
1324
  * @param {Item[]} items items
1284
1325
  * @param {StatsPrinterContextWithExtra} ctx context
1285
1326
  * @returns {string} result
@@ -1447,11 +1488,13 @@ const AVAILABLE_COLORS = {
1447
1488
  };
1448
1489
 
1449
1490
  /**
1491
+ * Defines the tail type used by this module.
1450
1492
  * @template T
1451
1493
  * @typedef {T extends [infer Head, ...infer Tail] ? Tail : undefined} Tail
1452
1494
  */
1453
1495
 
1454
1496
  /**
1497
+ * Defines the tail parameters type used by this module.
1455
1498
  * @template {(...args: EXPECTED_ANY[]) => EXPECTED_ANY} T
1456
1499
  * @typedef {T extends (firstArg: EXPECTED_ANY, ...rest: infer R) => EXPECTED_ANY ? R : never} TailParameters
1457
1500
  */
@@ -1477,7 +1520,7 @@ const AVAILABLE_FORMATS = {
1477
1520
  (oversize ? yellow : green)(filename),
1478
1521
  formatFlag: (flag) => `[${flag}]`,
1479
1522
  formatLayer: (layer) => `(in ${layer})`,
1480
- formatSize: require("../SizeFormatHelpers").formatSize,
1523
+ formatSize: require("../util/formatSize"),
1481
1524
  formatDateTime: (dateTime, { bold }) => {
1482
1525
  const d = new Date(dateTime);
1483
1526
  const x = twoDigit;
@@ -1538,6 +1581,7 @@ const AVAILABLE_FORMATS = {
1538
1581
  message = message.replace(
1539
1582
  regExp,
1540
1583
  /**
1584
+ * Handles the format callback for this hook.
1541
1585
  * @param {string} match match
1542
1586
  * @param {string} content content
1543
1587
  * @returns {string} result
@@ -1556,6 +1600,7 @@ const RESULT_MODIFIER = {
1556
1600
  };
1557
1601
 
1558
1602
  /**
1603
+ * Creates an order from the provided array.
1559
1604
  * @param {string[]} array array
1560
1605
  * @param {string[]} preferredOrder preferred order
1561
1606
  * @returns {string[]} result
@@ -1585,7 +1630,7 @@ const PLUGIN_NAME = "DefaultStatsPrinterPlugin";
1585
1630
 
1586
1631
  class DefaultStatsPrinterPlugin {
1587
1632
  /**
1588
- * Apply the plugin
1633
+ * Applies the plugin by registering its hooks on the compiler.
1589
1634
  * @param {Compiler} compiler the compiler instance
1590
1635
  * @returns {void}
1591
1636
  */
@@ -1626,6 +1671,7 @@ class DefaultStatsPrinterPlugin {
1626
1671
  }\u001B[39m\u001B[22m`;
1627
1672
  } else {
1628
1673
  /**
1674
+ * Returns str string.
1629
1675
  * @param {string} str string
1630
1676
  * @returns {string} str string
1631
1677
  */
@@ -1649,172 +1695,30 @@ class DefaultStatsPrinterPlugin {
1649
1695
  context.timeReference = compilation.time;
1650
1696
  });
1651
1697
 
1652
- for (const key of /** @type {(keyof CompilationSimplePrinters)[]} */ (
1653
- Object.keys(COMPILATION_SIMPLE_PRINTERS)
1654
- )) {
1655
- stats.hooks.print.for(key).tap(PLUGIN_NAME, (obj, ctx) =>
1656
- /** @type {EXPECTED_ANY} */
1657
- (COMPILATION_SIMPLE_PRINTERS)[key](
1658
- obj,
1659
- /** @type {DefineStatsPrinterContext<"compilation">} */
1660
- (ctx),
1661
- stats
1662
- )
1663
- );
1664
- }
1665
-
1666
- for (const key of /** @type {(keyof AssetSimplePrinters)[]} */ (
1667
- Object.keys(ASSET_SIMPLE_PRINTERS)
1668
- )) {
1669
- stats.hooks.print.for(key).tap(PLUGIN_NAME, (obj, ctx) =>
1670
- /** @type {NonNullable<AssetSimplePrinters[keyof AssetSimplePrinters]>} */
1671
- (ASSET_SIMPLE_PRINTERS[key])(
1672
- obj,
1673
- /** @type {DefineStatsPrinterContext<"asset" | "asset.info">} */
1674
- (ctx),
1675
- stats
1676
- )
1677
- );
1678
- }
1679
-
1680
- for (const key of /** @type {(keyof ModuleSimplePrinters)[]} */ (
1681
- Object.keys(MODULE_SIMPLE_PRINTERS)
1682
- )) {
1683
- stats.hooks.print.for(key).tap(PLUGIN_NAME, (obj, ctx) =>
1684
- /** @type {EXPECTED_ANY} */
1685
- (MODULE_SIMPLE_PRINTERS)[key](
1686
- obj,
1687
- /** @type {DefineStatsPrinterContext<"module">} */
1688
- (ctx),
1689
- stats
1690
- )
1691
- );
1692
- }
1693
-
1694
- for (const key of /** @type {(keyof ModuleIssuerPrinters)[]} */ (
1695
- Object.keys(MODULE_ISSUER_PRINTERS)
1696
- )) {
1697
- stats.hooks.print.for(key).tap(PLUGIN_NAME, (obj, ctx) =>
1698
- /** @type {NonNullable<ModuleIssuerPrinters[keyof ModuleIssuerPrinters]>} */
1699
- (MODULE_ISSUER_PRINTERS[key])(
1700
- obj,
1701
- /** @type {DefineStatsPrinterContext<"moduleIssuer">} */
1702
- (ctx),
1703
- stats
1704
- )
1705
- );
1706
- }
1707
-
1708
- for (const key of /** @type {(keyof ModuleReasonsPrinters)[]} */ (
1709
- Object.keys(MODULE_REASON_PRINTERS)
1710
- )) {
1711
- stats.hooks.print.for(key).tap(PLUGIN_NAME, (obj, ctx) =>
1712
- /** @type {EXPECTED_ANY} */
1713
- (MODULE_REASON_PRINTERS)[key](
1714
- obj,
1715
- /** @type {DefineStatsPrinterContext<"moduleReason">} */
1716
- (ctx),
1717
- stats
1718
- )
1719
- );
1720
- }
1721
-
1722
- for (const key of /** @type {(keyof ModuleProfilePrinters)[]} */ (
1723
- Object.keys(MODULE_PROFILE_PRINTERS)
1724
- )) {
1725
- stats.hooks.print.for(key).tap(PLUGIN_NAME, (obj, ctx) =>
1726
- /** @type {NonNullable<ModuleProfilePrinters[keyof ModuleProfilePrinters]>} */
1727
- (MODULE_PROFILE_PRINTERS[key])(
1728
- obj,
1729
- /** @type {DefineStatsPrinterContext<"profile">} */
1730
- (ctx),
1731
- stats
1732
- )
1733
- );
1734
- }
1735
-
1736
- for (const key of /** @type {(keyof ChunkGroupPrinters)[]} */ (
1737
- Object.keys(CHUNK_GROUP_PRINTERS)
1738
- )) {
1739
- stats.hooks.print.for(key).tap(PLUGIN_NAME, (obj, ctx) =>
1740
- /** @type {EXPECTED_ANY} */
1741
- (CHUNK_GROUP_PRINTERS)[key](
1742
- obj,
1743
- /** @type {DefineStatsPrinterContext<"chunkGroupKind" | "chunkGroup">} */
1744
- (ctx),
1745
- stats
1746
- )
1747
- );
1748
- }
1749
-
1750
- for (const key of /** @type {(keyof ChunkPrinters)[]} */ (
1751
- Object.keys(CHUNK_PRINTERS)
1752
- )) {
1753
- stats.hooks.print.for(key).tap(PLUGIN_NAME, (obj, ctx) =>
1754
- /** @type {EXPECTED_ANY} */
1755
- (CHUNK_PRINTERS)[key](
1756
- obj,
1757
- /** @type {DefineStatsPrinterContext<"chunk">} */
1758
- (ctx),
1759
- stats
1760
- )
1761
- );
1762
- }
1763
-
1764
- for (const key of /** @type {(keyof ErrorPrinters)[]} */ (
1765
- Object.keys(ERROR_PRINTERS)
1766
- )) {
1767
- stats.hooks.print.for(key).tap(PLUGIN_NAME, (obj, ctx) =>
1768
- /** @type {EXPECTED_ANY} */
1769
- (ERROR_PRINTERS)[key](
1770
- obj,
1771
- /** @type {DefineStatsPrinterContext<"error">} */
1772
- (ctx),
1773
- stats
1774
- )
1775
- );
1776
- }
1777
-
1778
- for (const key of /** @type {(keyof LogEntryPrinters)[]} */ (
1779
- Object.keys(LOG_ENTRY_PRINTERS)
1780
- )) {
1781
- stats.hooks.print.for(key).tap(PLUGIN_NAME, (obj, ctx) =>
1782
- /** @type {EXPECTED_ANY} */
1783
- (LOG_ENTRY_PRINTERS)[key](
1784
- obj,
1785
- /** @type {DefineStatsPrinterContext<"logging">} */
1786
- (ctx),
1787
- stats
1788
- )
1789
- );
1790
- }
1791
-
1792
- for (const key of /** @type {(keyof ModuleTraceDependencyPrinters)[]} */ (
1793
- Object.keys(MODULE_TRACE_DEPENDENCY_PRINTERS)
1794
- )) {
1795
- stats.hooks.print.for(key).tap(PLUGIN_NAME, (obj, ctx) =>
1796
- /** @type {NonNullable<ModuleTraceDependencyPrinters[keyof ModuleTraceDependencyPrinters]>} */
1797
- (MODULE_TRACE_DEPENDENCY_PRINTERS[key])(
1798
- obj,
1799
- /** @type {DefineStatsPrinterContext<"moduleTraceDependency">} */
1800
- (ctx),
1801
- stats
1802
- )
1803
- );
1804
- }
1805
-
1806
- for (const key of /** @type {(keyof ModuleTraceItemPrinters)[]} */ (
1807
- Object.keys(MODULE_TRACE_ITEM_PRINTERS)
1808
- )) {
1809
- stats.hooks.print.for(key).tap(PLUGIN_NAME, (obj, ctx) =>
1810
- /** @type {NonNullable<ModuleTraceItemPrinters[keyof ModuleTraceItemPrinters]>} */
1811
- (MODULE_TRACE_ITEM_PRINTERS[key])(
1812
- obj,
1813
- /** @type {DefineStatsPrinterContext<"moduleTraceItem">} */
1814
- (ctx),
1815
- stats
1816
- )
1817
- );
1698
+ // Every `*_SIMPLE_PRINTERS` map registers identically: tap
1699
+ // `print.for(key)` with a formatter called as `(obj, ctx, stats)`.
1700
+ // One loop over all maps replaces a dozen near-identical blocks.
1701
+ for (const simplePrinters of /** @type {Record<string, EXPECTED_ANY>[]} */ ([
1702
+ COMPILATION_SIMPLE_PRINTERS,
1703
+ ASSET_SIMPLE_PRINTERS,
1704
+ MODULE_SIMPLE_PRINTERS,
1705
+ MODULE_ISSUER_PRINTERS,
1706
+ MODULE_REASON_PRINTERS,
1707
+ MODULE_PROFILE_PRINTERS,
1708
+ CHUNK_GROUP_PRINTERS,
1709
+ CHUNK_PRINTERS,
1710
+ ERROR_PRINTERS,
1711
+ LOG_ENTRY_PRINTERS,
1712
+ MODULE_TRACE_DEPENDENCY_PRINTERS,
1713
+ MODULE_TRACE_ITEM_PRINTERS
1714
+ ])) {
1715
+ for (const key of Object.keys(simplePrinters)) {
1716
+ stats.hooks.print
1717
+ .for(key)
1718
+ .tap(PLUGIN_NAME, (obj, ctx) =>
1719
+ simplePrinters[key](obj, ctx, stats)
1720
+ );
1721
+ }
1818
1722
  }
1819
1723
 
1820
1724
  for (const key of Object.keys(PREFERRED_ORDERS)) {