@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
@@ -6,9 +6,9 @@
6
6
  "use strict";
7
7
 
8
8
  const util = require("util");
9
+ const { version: WEBPACK_VERSION } = require("../../package.json");
9
10
  const { WEBPACK_MODULE_TYPE_RUNTIME } = require("../ModuleTypeConstants");
10
11
  const ModuleDependency = require("../dependencies/ModuleDependency");
11
- const formatLocation = require("../formatLocation");
12
12
  const { LogType } = require("../logging/Logger");
13
13
  const AggressiveSplittingPlugin = require("../optimize/AggressiveSplittingPlugin");
14
14
  const SizeLimitsPlugin = require("../performance/SizeLimitsPlugin");
@@ -22,6 +22,7 @@ const {
22
22
  compareSelect,
23
23
  concatComparators
24
24
  } = require("../util/comparators");
25
+ const formatLocation = require("../util/formatLocation");
25
26
  const { makePathsRelative, parseResource } = require("../util/identifier");
26
27
 
27
28
  /** @typedef {import("webpack-sources").Source} Source */
@@ -46,25 +47,29 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
46
47
  /** @typedef {import("../Module")} Module */
47
48
  /** @typedef {import("../Module").NameForCondition} NameForCondition */
48
49
  /** @typedef {import("../Module").BuildInfo} BuildInfo */
50
+ /** @typedef {import("../ModuleGraph")} ModuleGraph */
49
51
  /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
50
52
  /** @typedef {import("../ModuleProfile")} ModuleProfile */
51
- /** @typedef {import("../WebpackError")} WebpackError */
53
+ /** @typedef {import("../errors/WebpackError")} WebpackError */
52
54
  /** @typedef {import("../serialization/AggregateErrorSerializer").AggregateError} AggregateError */
53
55
  /** @typedef {import("../serialization/ErrorObjectSerializer").ErrorWithCause} ErrorWithCause */
54
56
  /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
55
57
 
56
58
  /**
59
+ * Defines the shared type used by this module.
57
60
  * @template T
58
61
  * @typedef {import("../util/comparators").Comparator<T>} Comparator<T>
59
62
  */
60
63
 
61
64
  /**
65
+ * Defines the group config type used by this module.
62
66
  * @template I, G
63
67
  * @typedef {import("../util/smartGrouping").GroupConfig<I, G>} GroupConfig
64
68
  */
65
69
 
66
70
  /** @typedef {KnownStatsCompilation & Record<string, EXPECTED_ANY>} StatsCompilation */
67
71
  /**
72
+ * Defines the known stats compilation type used by this module.
68
73
  * @typedef {object} KnownStatsCompilation
69
74
  * @property {EXPECTED_ANY=} env
70
75
  * @property {string=} name
@@ -95,6 +100,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
95
100
 
96
101
  /** @typedef {KnownStatsLogging & Record<string, EXPECTED_ANY>} StatsLogging */
97
102
  /**
103
+ * Defines the known stats logging type used by this module.
98
104
  * @typedef {object} KnownStatsLogging
99
105
  * @property {StatsLoggingEntry[]} entries
100
106
  * @property {number} filteredEntries
@@ -103,6 +109,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
103
109
 
104
110
  /** @typedef {KnownStatsLoggingEntry & Record<string, EXPECTED_ANY>} StatsLoggingEntry */
105
111
  /**
112
+ * Defines the known stats logging entry type used by this module.
106
113
  * @typedef {object} KnownStatsLoggingEntry
107
114
  * @property {string} type
108
115
  * @property {string=} message
@@ -115,6 +122,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
115
122
  /** @typedef {KnownStatsAsset & Record<string, EXPECTED_ANY>} StatsAsset */
116
123
  /** @typedef {string[]} ChunkIdHints */
117
124
  /**
125
+ * Defines the known stats asset type used by this module.
118
126
  * @typedef {object} KnownStatsAsset
119
127
  * @property {string} type
120
128
  * @property {string} name
@@ -136,6 +144,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
136
144
 
137
145
  /** @typedef {KnownStatsChunkGroup & Record<string, EXPECTED_ANY>} StatsChunkGroup */
138
146
  /**
147
+ * Defines the known stats chunk group type used by this module.
139
148
  * @typedef {object} KnownStatsChunkGroup
140
149
  * @property {ChunkName=} name
141
150
  * @property {ChunkId[]=} chunks
@@ -153,6 +162,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
153
162
  /** @typedef {Module[]} ModuleIssuerPath */
154
163
  /** @typedef {KnownStatsModule & Record<string, EXPECTED_ANY>} StatsModule */
155
164
  /**
165
+ * Defines the known stats module type used by this module.
156
166
  * @typedef {object} KnownStatsModule
157
167
  * @property {string=} type
158
168
  * @property {string=} moduleType
@@ -167,6 +177,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
167
177
  * @property {number=} size
168
178
  * @property {Record<string, number>=} sizes
169
179
  * @property {boolean=} cacheable
180
+ * @property {string[]=} notCacheableReasons
170
181
  * @property {boolean=} built
171
182
  * @property {boolean=} codeGenerated
172
183
  * @property {boolean=} buildTimeExecuted
@@ -197,6 +208,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
197
208
 
198
209
  /** @typedef {KnownStatsProfile & Record<string, EXPECTED_ANY>} StatsProfile */
199
210
  /**
211
+ * Defines the known stats profile type used by this module.
200
212
  * @typedef {object} KnownStatsProfile
201
213
  * @property {number} total
202
214
  * @property {number} resolving
@@ -212,6 +224,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
212
224
 
213
225
  /** @typedef {KnownStatsModuleIssuer & Record<string, EXPECTED_ANY>} StatsModuleIssuer */
214
226
  /**
227
+ * Defines the known stats module issuer type used by this module.
215
228
  * @typedef {object} KnownStatsModuleIssuer
216
229
  * @property {string} identifier
217
230
  * @property {string} name
@@ -221,6 +234,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
221
234
 
222
235
  /** @typedef {KnownStatsModuleReason & Record<string, EXPECTED_ANY>} StatsModuleReason */
223
236
  /**
237
+ * Defines the known stats module reason type used by this module.
224
238
  * @typedef {object} KnownStatsModuleReason
225
239
  * @property {string | null} moduleIdentifier
226
240
  * @property {string | null} module
@@ -238,6 +252,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
238
252
 
239
253
  /** @typedef {KnownStatsChunk & Record<string, EXPECTED_ANY>} StatsChunk */
240
254
  /**
255
+ * Defines the known stats chunk type used by this module.
241
256
  * @typedef {object} KnownStatsChunk
242
257
  * @property {boolean} rendered
243
258
  * @property {boolean} initial
@@ -264,6 +279,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
264
279
 
265
280
  /** @typedef {KnownStatsChunkOrigin & Record<string, EXPECTED_ANY>} StatsChunkOrigin */
266
281
  /**
282
+ * Defines the known stats chunk origin type used by this module.
267
283
  * @typedef {object} KnownStatsChunkOrigin
268
284
  * @property {string} module
269
285
  * @property {string} moduleIdentifier
@@ -275,6 +291,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
275
291
 
276
292
  /** @typedef {KnownStatsModuleTraceItem & Record<string, EXPECTED_ANY>} StatsModuleTraceItem */
277
293
  /**
294
+ * Defines the known stats module trace item type used by this module.
278
295
  * @typedef {object} KnownStatsModuleTraceItem
279
296
  * @property {string=} originIdentifier
280
297
  * @property {string=} originName
@@ -287,12 +304,14 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
287
304
 
288
305
  /** @typedef {KnownStatsModuleTraceDependency & Record<string, EXPECTED_ANY>} StatsModuleTraceDependency */
289
306
  /**
307
+ * Defines the known stats module trace dependency type used by this module.
290
308
  * @typedef {object} KnownStatsModuleTraceDependency
291
309
  * @property {string=} loc
292
310
  */
293
311
 
294
312
  /** @typedef {KnownStatsError & Record<string, EXPECTED_ANY>} StatsError */
295
313
  /**
314
+ * Defines the known stats error type used by this module.
296
315
  * @typedef {object} KnownStatsError
297
316
  * @property {string} message
298
317
  * @property {string=} chunkName
@@ -315,6 +334,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
315
334
  /** @typedef {Asset & { type: string, related: PreprocessedAsset[] | undefined }} PreprocessedAsset */
316
335
 
317
336
  /**
337
+ * Defines the extractors by option type used by this module.
318
338
  * @template T
319
339
  * @template O
320
340
  * @typedef {Record<string, (object: O, data: T, context: StatsFactoryContext, options: NormalizedStatsOptions, factory: StatsFactory) => void>} ExtractorsByOption
@@ -324,6 +344,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
324
344
  /** @typedef {{ origin: Module, module: Module }} ModuleTrace */
325
345
 
326
346
  /**
347
+ * Defines the simple extractors type used by this module.
327
348
  * @typedef {object} SimpleExtractors
328
349
  * @property {ExtractorsByOption<Compilation, StatsCompilation>} compilation
329
350
  * @property {ExtractorsByOption<PreprocessedAsset, StatsAsset>} asset
@@ -344,6 +365,7 @@ const { makePathsRelative, parseResource } = require("../util/identifier");
344
365
  */
345
366
 
346
367
  /**
368
+ * Returns array of values.
347
369
  * @template T
348
370
  * @template I
349
371
  * @param {Iterable<T>} items items to select from
@@ -362,6 +384,7 @@ const uniqueArray = (items, selector) => {
362
384
  };
363
385
 
364
386
  /**
387
+ * Unique ordered array.
365
388
  * @template T
366
389
  * @template I
367
390
  * @param {Iterable<T>} items items to select from
@@ -373,12 +396,14 @@ const uniqueOrderedArray = (items, selector, comparator) =>
373
396
  uniqueArray(items, selector).sort(comparator);
374
397
 
375
398
  /**
399
+ * Defines the shared type used by this module.
376
400
  * @template T
377
401
  * @template R
378
402
  * @typedef {{ [P in keyof T]: R }} MappedValues<T, R>
379
403
  */
380
404
 
381
405
  /**
406
+ * Returns mapped object.
382
407
  * @template {object} T
383
408
  * @template {object} R
384
409
  * @param {T} obj object to be mapped
@@ -395,9 +420,9 @@ const mapObject = (obj, fn) => {
395
420
  };
396
421
 
397
422
  /**
398
- * @template T
423
+ * Count with children.
399
424
  * @param {Compilation} compilation the compilation
400
- * @param {(compilation: Compilation, name: string) => T[]} getItems get items
425
+ * @param {(compilation: Compilation, name: string) => { length: number }} getItems get items
401
426
  * @returns {number} total number
402
427
  */
403
428
  const countWithChildren = (compilation, getItems) => {
@@ -730,7 +755,7 @@ const SIMPLE_EXTRACTORS = {
730
755
  object.hash = compilation.hash;
731
756
  },
732
757
  version: (object) => {
733
- object.version = require("../../package.json").version;
758
+ object.version = WEBPACK_VERSION;
734
759
  },
735
760
  env: (object, compilation, context, { _env }) => {
736
761
  object.env = _env;
@@ -810,22 +835,24 @@ const SIMPLE_EXTRACTORS = {
810
835
  }
811
836
 
812
837
  object.assetsByChunkName = {};
813
- for (const [file, chunks] of [
814
- ...compilationFileToChunks,
815
- ...compilationAuxiliaryFileToChunks
838
+ for (const fileToChunks of [
839
+ compilationFileToChunks,
840
+ compilationAuxiliaryFileToChunks
816
841
  ]) {
817
- for (const chunk of chunks) {
818
- const name = chunk.name;
819
- if (!name) continue;
820
- if (
821
- !Object.prototype.hasOwnProperty.call(
822
- object.assetsByChunkName,
823
- name
824
- )
825
- ) {
826
- object.assetsByChunkName[name] = [];
842
+ for (const [file, chunks] of fileToChunks) {
843
+ for (const chunk of chunks) {
844
+ const name = chunk.name;
845
+ if (!name) continue;
846
+ if (
847
+ !Object.prototype.hasOwnProperty.call(
848
+ object.assetsByChunkName,
849
+ name
850
+ )
851
+ ) {
852
+ object.assetsByChunkName[name] = [];
853
+ }
854
+ object.assetsByChunkName[name].push(file);
827
855
  }
828
- object.assetsByChunkName[name].push(file);
829
856
  }
830
857
  }
831
858
 
@@ -987,17 +1014,16 @@ const SIMPLE_EXTRACTORS = {
987
1014
  const { type, cachedGetWarnings } = context;
988
1015
  object.warningsCount = countWithChildren(compilation, (c, childType) => {
989
1016
  if (
990
- !warningsFilter &&
991
1017
  /** @type {KnownNormalizedStatsOptions["warningsFilter"]} */
992
1018
  (warningsFilter).length === 0
993
1019
  ) {
994
- // Type is wrong, because we don't need the real value for counting
995
- return /** @type {EXPECTED_ANY[]} */ (cachedGetWarnings(c));
1020
+ return cachedGetWarnings(c);
996
1021
  }
997
1022
  return factory
998
1023
  .create(`${type}${childType}.warnings`, cachedGetWarnings(c), context)
999
1024
  .filter(
1000
1025
  /**
1026
+ * Handles the warnings count callback for this hook.
1001
1027
  * @param {StatsError} warning warning
1002
1028
  * @returns {boolean} result
1003
1029
  */
@@ -1122,6 +1148,7 @@ const SIMPLE_EXTRACTORS = {
1122
1148
  chunkGroupChildren &&
1123
1149
  chunkGroup.getChildrenByOrders(moduleGraph, chunkGraph);
1124
1150
  /**
1151
+ * Returns } Asset object.
1125
1152
  * @param {string} name Name
1126
1153
  * @returns {{ name: string, size: number }} Asset object
1127
1154
  */
@@ -1221,6 +1248,25 @@ const SIMPLE_EXTRACTORS = {
1221
1248
  },
1222
1249
  performance: (object, { chunkGroup }) => {
1223
1250
  object.isOverSizeLimit = SizeLimitsPlugin.isOverSizeLimit(chunkGroup);
1251
+ },
1252
+ chunkGroupResourceHints: (
1253
+ object,
1254
+ { name, chunkGroup },
1255
+ { compilation }
1256
+ ) => {
1257
+ // SSR frameworks consume this to inject the initial-chunk +
1258
+ // URL-asset `<link>` tags into their server-rendered HTML without
1259
+ // having to walk the chunk graph themselves. Only entrypoints
1260
+ // carry hints; split-chunk / async chunk groups are skipped.
1261
+ if (!compilation.entrypoints.get(name)) return;
1262
+
1263
+ const ResourceHintPlugin = require("../prefetch/ResourceHintPlugin");
1264
+
1265
+ const hints =
1266
+ ResourceHintPlugin.getCompilationResolver(
1267
+ compilation
1268
+ ).getEntrypointHints(name);
1269
+ if (hints.length > 0) object.resourceHints = hints;
1224
1270
  }
1225
1271
  },
1226
1272
  module: {
@@ -1236,19 +1282,16 @@ const SIMPLE_EXTRACTORS = {
1236
1282
  for (const sourceType of module.getSourceTypes()) {
1237
1283
  sizes[sourceType] = module.size(sourceType);
1238
1284
  }
1239
- /** @type {KnownStatsModule} */
1240
- const statsModule = {
1241
- type: "module",
1242
- moduleType: module.type,
1243
- layer: module.layer,
1244
- size: module.size(),
1245
- sizes,
1246
- built,
1247
- codeGenerated,
1248
- buildTimeExecuted,
1249
- cached: !built && !codeGenerated
1250
- };
1251
- Object.assign(object, statsModule);
1285
+ // assign fields directly to avoid an intermediate object + copy per module
1286
+ object.type = "module";
1287
+ object.moduleType = module.type;
1288
+ object.layer = module.layer;
1289
+ object.size = module.size();
1290
+ object.sizes = sizes;
1291
+ object.built = built;
1292
+ object.codeGenerated = codeGenerated;
1293
+ object.buildTimeExecuted = buildTimeExecuted;
1294
+ object.cached = !built && !codeGenerated;
1252
1295
  if (built || codeGenerated || options.cachedModules) {
1253
1296
  Object.assign(
1254
1297
  object,
@@ -1277,36 +1320,43 @@ const SIMPLE_EXTRACTORS = {
1277
1320
  const warnings = module.getWarnings();
1278
1321
  const warningsCount =
1279
1322
  warnings !== undefined ? countIterable(warnings) : 0;
1280
- /** @type {KnownStatsModule} */
1281
- const statsModule = {
1282
- identifier: module.identifier(),
1283
- name: module.readableIdentifier(requestShortener),
1284
- nameForCondition: module.nameForCondition(),
1285
- index: /** @type {number} */ (moduleGraph.getPreOrderIndex(module)),
1286
- preOrderIndex: /** @type {number} */ (
1287
- moduleGraph.getPreOrderIndex(module)
1288
- ),
1289
- index2: /** @type {number} */ (moduleGraph.getPostOrderIndex(module)),
1290
- postOrderIndex: /** @type {number} */ (
1291
- moduleGraph.getPostOrderIndex(module)
1292
- ),
1293
- cacheable: /** @type {BuildInfo} */ (module.buildInfo).cacheable,
1294
- optional: module.isOptional(moduleGraph),
1295
- orphan:
1296
- !type.endsWith("module.modules[].module$visible") &&
1297
- compilation.chunkGraph.getNumberOfModuleChunks(module) === 0,
1298
- dependent: rootModules ? !rootModules.has(module) : undefined,
1299
- issuer: issuer && issuer.identifier(),
1300
- issuerName: issuer && issuer.readableIdentifier(requestShortener),
1301
- issuerPath:
1302
- issuer &&
1303
- /** @type {StatsModuleIssuer[] | undefined} */
1304
- (factory.create(`${type.slice(0, -8)}.issuerPath`, path, context)),
1305
- failed: errorsCount > 0,
1306
- errors: errorsCount,
1307
- warnings: warningsCount
1308
- };
1309
- Object.assign(object, statsModule);
1323
+ const { cacheable, notCacheableReasons } = /** @type {BuildInfo} */ (
1324
+ module.buildInfo
1325
+ );
1326
+ const preOrderIndex = /** @type {number} */ (
1327
+ moduleGraph.getPreOrderIndex(module)
1328
+ );
1329
+ const postOrderIndex = /** @type {number} */ (
1330
+ moduleGraph.getPostOrderIndex(module)
1331
+ );
1332
+ // assign fields directly to avoid an intermediate object + copy per module
1333
+ object.identifier = module.identifier();
1334
+ object.name = module.readableIdentifier(requestShortener);
1335
+ object.nameForCondition = module.nameForCondition();
1336
+ object.index = preOrderIndex;
1337
+ object.preOrderIndex = preOrderIndex;
1338
+ object.index2 = postOrderIndex;
1339
+ object.postOrderIndex = postOrderIndex;
1340
+ object.cacheable = cacheable;
1341
+ object.notCacheableReasons =
1342
+ notCacheableReasons &&
1343
+ notCacheableReasons.map(
1344
+ (request) => /** @type {string} */ (requestShortener.shorten(request))
1345
+ );
1346
+ object.optional = module.isOptional(moduleGraph);
1347
+ object.orphan =
1348
+ !type.endsWith("module.modules[].module$visible") &&
1349
+ compilation.chunkGraph.getNumberOfModuleChunks(module) === 0;
1350
+ object.dependent = rootModules ? !rootModules.has(module) : undefined;
1351
+ object.issuer = issuer && issuer.identifier();
1352
+ object.issuerName = issuer && issuer.readableIdentifier(requestShortener);
1353
+ object.issuerPath =
1354
+ issuer &&
1355
+ /** @type {StatsModuleIssuer[] | undefined} */
1356
+ (factory.create(`${type.slice(0, -8)}.issuerPath`, path, context));
1357
+ object.failed = errorsCount > 0;
1358
+ object.errors = errorsCount;
1359
+ object.warnings = warningsCount;
1310
1360
  if (profile) {
1311
1361
  object.profile = factory.create(
1312
1362
  `${type.slice(0, -8)}.profile`,
@@ -1418,27 +1468,24 @@ const SIMPLE_EXTRACTORS = {
1418
1468
  },
1419
1469
  profile: {
1420
1470
  _: (object, profile) => {
1421
- /** @type {KnownStatsProfile} */
1422
- const statsProfile = {
1423
- total:
1424
- profile.factory +
1425
- profile.restoring +
1426
- profile.integration +
1427
- profile.building +
1428
- profile.storing,
1429
- resolving: profile.factory,
1430
- restoring: profile.restoring,
1431
- building: profile.building,
1432
- integration: profile.integration,
1433
- storing: profile.storing,
1434
- additionalResolving: profile.additionalFactories,
1435
- additionalIntegration: profile.additionalIntegration,
1436
- // TODO remove this in webpack 6
1437
- factory: profile.factory,
1438
- // TODO remove this in webpack 6
1439
- dependencies: profile.additionalFactories
1440
- };
1441
- Object.assign(object, statsProfile);
1471
+ // assign fields directly to avoid an intermediate object + copy
1472
+ object.total =
1473
+ profile.factory +
1474
+ profile.restoring +
1475
+ profile.integration +
1476
+ profile.building +
1477
+ profile.storing;
1478
+ object.resolving = profile.factory;
1479
+ object.restoring = profile.restoring;
1480
+ object.building = profile.building;
1481
+ object.integration = profile.integration;
1482
+ object.storing = profile.storing;
1483
+ object.additionalResolving = profile.additionalFactories;
1484
+ object.additionalIntegration = profile.additionalIntegration;
1485
+ // TODO remove this in webpack 6
1486
+ object.factory = profile.factory;
1487
+ // TODO remove this in webpack 6
1488
+ object.dependencies = profile.additionalFactories;
1442
1489
  }
1443
1490
  },
1444
1491
  moduleIssuer: {
@@ -1447,12 +1494,9 @@ const SIMPLE_EXTRACTORS = {
1447
1494
  const compilation = /** @type {Compilation} */ (context.compilation);
1448
1495
  const { moduleGraph } = compilation;
1449
1496
  const profile = moduleGraph.getProfile(module);
1450
- /** @type {Partial<KnownStatsModuleIssuer>} */
1451
- const statsModuleIssuer = {
1452
- identifier: module.identifier(),
1453
- name: module.readableIdentifier(requestShortener)
1454
- };
1455
- Object.assign(object, statsModuleIssuer);
1497
+ // assign fields directly to avoid an intermediate object + copy per issuer
1498
+ object.identifier = module.identifier();
1499
+ object.name = module.readableIdentifier(requestShortener);
1456
1500
  if (profile) {
1457
1501
  object.profile = factory.create(`${type}.profile`, profile, context);
1458
1502
  }
@@ -1466,31 +1510,26 @@ const SIMPLE_EXTRACTORS = {
1466
1510
  const dep = reason.dependency;
1467
1511
  const moduleDep =
1468
1512
  dep && dep instanceof ModuleDependency ? dep : undefined;
1469
- /** @type {KnownStatsModuleReason} */
1470
- const statsModuleReason = {
1471
- moduleIdentifier: reason.originModule
1472
- ? reason.originModule.identifier()
1473
- : null,
1474
- module: reason.originModule
1475
- ? reason.originModule.readableIdentifier(requestShortener)
1476
- : null,
1477
- moduleName: reason.originModule
1478
- ? reason.originModule.readableIdentifier(requestShortener)
1479
- : null,
1480
- resolvedModuleIdentifier: reason.resolvedOriginModule
1481
- ? reason.resolvedOriginModule.identifier()
1482
- : null,
1483
- resolvedModule: reason.resolvedOriginModule
1484
- ? reason.resolvedOriginModule.readableIdentifier(requestShortener)
1485
- : null,
1486
- type: reason.dependency ? reason.dependency.type : null,
1487
- active: reason.isActive(runtime),
1488
- explanation: reason.explanation,
1489
- userRequest: (moduleDep && moduleDep.userRequest) || null
1490
- };
1491
- Object.assign(object, statsModuleReason);
1492
- if (reason.dependency) {
1493
- const locInfo = formatLocation(reason.dependency.loc);
1513
+ const { originModule, resolvedOriginModule } = reason;
1514
+ const originName = originModule
1515
+ ? originModule.readableIdentifier(requestShortener)
1516
+ : null;
1517
+ // assign fields directly to avoid an intermediate object + copy per reason
1518
+ object.moduleIdentifier = originModule ? originModule.identifier() : null;
1519
+ object.module = originName;
1520
+ object.moduleName = originName;
1521
+ object.resolvedModuleIdentifier = resolvedOriginModule
1522
+ ? resolvedOriginModule.identifier()
1523
+ : null;
1524
+ object.resolvedModule = resolvedOriginModule
1525
+ ? resolvedOriginModule.readableIdentifier(requestShortener)
1526
+ : null;
1527
+ object.type = dep ? dep.type : null;
1528
+ object.active = reason.isActive(runtime);
1529
+ object.explanation = reason.explanation;
1530
+ object.userRequest = (moduleDep && moduleDep.userRequest) || null;
1531
+ if (dep) {
1532
+ const locInfo = formatLocation(dep.loc);
1494
1533
  if (locInfo) {
1495
1534
  object.loc = locInfo;
1496
1535
  }
@@ -1509,29 +1548,26 @@ const SIMPLE_EXTRACTORS = {
1509
1548
  _: (object, chunk, { makePathsRelative, compilation: { chunkGraph } }) => {
1510
1549
  const childIdByOrder = chunk.getChildIdsByOrders(chunkGraph);
1511
1550
 
1512
- /** @type {KnownStatsChunk} */
1513
- const statsChunk = {
1514
- rendered: chunk.rendered,
1515
- initial: chunk.canBeInitial(),
1516
- entry: chunk.hasRuntime(),
1517
- recorded: AggressiveSplittingPlugin.wasChunkRecorded(chunk),
1518
- reason: chunk.chunkReason,
1519
- size: chunkGraph.getChunkModulesSize(chunk),
1520
- sizes: chunkGraph.getChunkModulesSizes(chunk),
1521
- names: chunk.name ? [chunk.name] : [],
1522
- idHints: [...chunk.idNameHints],
1523
- runtime:
1524
- chunk.runtime === undefined
1525
- ? undefined
1526
- : typeof chunk.runtime === "string"
1527
- ? [makePathsRelative(chunk.runtime)]
1528
- : Array.from(chunk.runtime.sort(), makePathsRelative),
1529
- files: [...chunk.files],
1530
- auxiliaryFiles: [...chunk.auxiliaryFiles].sort(compareIds),
1531
- hash: /** @type {string} */ (chunk.renderedHash),
1532
- childrenByOrder: childIdByOrder
1533
- };
1534
- Object.assign(object, statsChunk);
1551
+ // assign fields directly to avoid an intermediate object + copy per chunk
1552
+ object.rendered = chunk.rendered;
1553
+ object.initial = chunk.canBeInitial();
1554
+ object.entry = chunk.hasRuntime();
1555
+ object.recorded = AggressiveSplittingPlugin.wasChunkRecorded(chunk);
1556
+ object.reason = chunk.chunkReason;
1557
+ object.size = chunkGraph.getChunkModulesSize(chunk);
1558
+ object.sizes = chunkGraph.getChunkModulesSizes(chunk);
1559
+ object.names = chunk.name ? [chunk.name] : [];
1560
+ object.idHints = [...chunk.idNameHints];
1561
+ object.runtime =
1562
+ chunk.runtime === undefined
1563
+ ? undefined
1564
+ : typeof chunk.runtime === "string"
1565
+ ? [makePathsRelative(chunk.runtime)]
1566
+ : Array.from(chunk.runtime.sort(), makePathsRelative);
1567
+ object.files = [...chunk.files];
1568
+ object.auxiliaryFiles = [...chunk.auxiliaryFiles].sort(compareIds);
1569
+ object.hash = /** @type {string} */ (chunk.renderedHash);
1570
+ object.childrenByOrder = childIdByOrder;
1535
1571
  },
1536
1572
  ids: (object, chunk) => {
1537
1573
  object.id = /** @type {ChunkId} */ (chunk.id);
@@ -1608,17 +1644,16 @@ const SIMPLE_EXTRACTORS = {
1608
1644
  },
1609
1645
  chunkOrigin: {
1610
1646
  _: (object, origin, context, { requestShortener }) => {
1611
- /** @type {KnownStatsChunkOrigin} */
1612
- const statsChunkOrigin = {
1613
- module: origin.module ? origin.module.identifier() : "",
1614
- moduleIdentifier: origin.module ? origin.module.identifier() : "",
1615
- moduleName: origin.module
1616
- ? origin.module.readableIdentifier(requestShortener)
1617
- : "",
1618
- loc: formatLocation(origin.loc),
1619
- request: origin.request
1620
- };
1621
- Object.assign(object, statsChunkOrigin);
1647
+ const originModule = origin.module;
1648
+ const identifier = originModule ? originModule.identifier() : "";
1649
+ // assign fields directly to avoid an intermediate object + copy per origin
1650
+ object.module = identifier;
1651
+ object.moduleIdentifier = identifier;
1652
+ object.moduleName = originModule
1653
+ ? originModule.readableIdentifier(requestShortener)
1654
+ : "";
1655
+ object.loc = formatLocation(origin.loc);
1656
+ object.request = origin.request;
1622
1657
  },
1623
1658
  ids: (object, origin, { compilation: { chunkGraph } }) => {
1624
1659
  object.moduleId = origin.module
@@ -1639,13 +1674,16 @@ const SIMPLE_EXTRACTORS = {
1639
1674
  object.originName = origin.readableIdentifier(requestShortener);
1640
1675
  object.moduleIdentifier = module.identifier();
1641
1676
  object.moduleName = module.readableIdentifier(requestShortener);
1642
- const dependencies = [...moduleGraph.getIncomingConnections(module)]
1643
- .filter((c) => c.resolvedOriginModule === origin && c.dependency)
1644
- .map((c) => c.dependency);
1677
+ /** @type {Set<Dependency>} */
1678
+ const dependencies = new Set();
1679
+ for (const c of moduleGraph.getIncomingConnections(module)) {
1680
+ if (c.resolvedOriginModule === origin && c.dependency) {
1681
+ dependencies.add(c.dependency);
1682
+ }
1683
+ }
1645
1684
  object.dependencies = factory.create(
1646
1685
  `${type}.dependencies`,
1647
- /** @type {Dependency[]} */
1648
- ([...new Set(dependencies)]),
1686
+ [...dependencies],
1649
1687
  context
1650
1688
  );
1651
1689
  },
@@ -1697,17 +1735,50 @@ const FILTER_RESULTS = {
1697
1735
  }
1698
1736
  };
1699
1737
 
1738
+ // module sort selectors close over moduleGraph, so cache the built comparators per
1739
+ // moduleGraph (stable per compilation) instead of rebuilding them on every sort
1740
+ /** @type {WeakMap<ModuleGraph, Comparator<Module>[]>} */
1741
+ const modulesSorterCache = new WeakMap();
1742
+
1700
1743
  /** @type {Record<string, (comparators: Comparator<Module>[], context: StatsFactoryContext) => void>} */
1701
1744
  const MODULES_SORTER = {
1702
1745
  _: (comparators, { compilation: { moduleGraph } }) => {
1703
- comparators.push(
1704
- compareSelect((m) => moduleGraph.getDepth(m), compareNumbers),
1705
- compareSelect((m) => moduleGraph.getPreOrderIndex(m), compareNumbers),
1706
- compareSelect((m) => m.identifier(), compareIds)
1707
- );
1746
+ let cached = modulesSorterCache.get(moduleGraph);
1747
+ if (cached === undefined) {
1748
+ cached = [
1749
+ compareSelect((m) => moduleGraph.getDepth(m), compareNumbers),
1750
+ compareSelect((m) => moduleGraph.getPreOrderIndex(m), compareNumbers),
1751
+ compareSelect((m) => m.identifier(), compareIds)
1752
+ ];
1753
+ modulesSorterCache.set(moduleGraph, cached);
1754
+ }
1755
+ comparators.push(...cached);
1708
1756
  }
1709
1757
  };
1710
1758
 
1759
+ // reason comparators use only pure selectors, so build them once instead of per
1760
+ // module.reasons sort (which runs once per module and otherwise thrashes the caches)
1761
+ /** @type {Comparator<ModuleGraphConnection>[]} */
1762
+ const MODULE_REASONS_COMPARATORS = [
1763
+ compareSelect((x) => x.originModule, compareModulesByIdentifier),
1764
+ compareSelect((x) => x.resolvedOriginModule, compareModulesByIdentifier),
1765
+ compareSelect(
1766
+ (x) => x.dependency,
1767
+ concatComparators(
1768
+ compareSelect(
1769
+ /**
1770
+ * Handles the callback for this hook.
1771
+ * @param {Dependency} x dependency
1772
+ * @returns {DependencyLocation} location
1773
+ */
1774
+ (x) => x.loc,
1775
+ compareLocations
1776
+ ),
1777
+ compareSelect((x) => x.type, compareIds)
1778
+ )
1779
+ )
1780
+ ];
1781
+
1711
1782
  /**
1712
1783
  * @type {{
1713
1784
  * "compilation.chunks": Record<string, (comparators: Comparator<Chunk>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void>,
@@ -1730,29 +1801,8 @@ const SORTERS = {
1730
1801
  "chunk.modules": MODULES_SORTER,
1731
1802
  "module.modules": MODULES_SORTER,
1732
1803
  "module.reasons": {
1733
- _: (comparators, _context) => {
1734
- comparators.push(
1735
- compareSelect((x) => x.originModule, compareModulesByIdentifier)
1736
- );
1737
- comparators.push(
1738
- compareSelect((x) => x.resolvedOriginModule, compareModulesByIdentifier)
1739
- );
1740
- comparators.push(
1741
- compareSelect(
1742
- (x) => x.dependency,
1743
- concatComparators(
1744
- compareSelect(
1745
- /**
1746
- * @param {Dependency} x dependency
1747
- * @returns {DependencyLocation} location
1748
- */
1749
- (x) => x.loc,
1750
- compareLocations
1751
- ),
1752
- compareSelect((x) => x.type, compareIds)
1753
- )
1754
- )
1755
- );
1804
+ _: (comparators) => {
1805
+ comparators.push(...MODULE_REASONS_COMPARATORS);
1756
1806
  }
1757
1807
  },
1758
1808
  "chunk.origins": {
@@ -1771,11 +1821,13 @@ const SORTERS = {
1771
1821
  };
1772
1822
 
1773
1823
  /**
1824
+ * Defines the children type used by this module.
1774
1825
  * @template T
1775
1826
  * @typedef {T & { children?: Children<T>[] | undefined, filteredChildren?: number }} Children
1776
1827
  */
1777
1828
 
1778
1829
  /**
1830
+ * Returns item size.
1779
1831
  * @template T
1780
1832
  * @param {Children<T>} item item
1781
1833
  * @returns {number} item size
@@ -1791,6 +1843,7 @@ const getItemSize = (item) =>
1791
1843
  : 1 + getTotalSize(item.children);
1792
1844
 
1793
1845
  /**
1846
+ * Returns total size.
1794
1847
  * @template T
1795
1848
  * @param {Children<T>[]} children children
1796
1849
  * @returns {number} total size
@@ -1804,6 +1857,7 @@ const getTotalSize = (children) => {
1804
1857
  };
1805
1858
 
1806
1859
  /**
1860
+ * Returns total items.
1807
1861
  * @template T
1808
1862
  * @param {Children<T>[]} children children
1809
1863
  * @returns {number} total items
@@ -1822,6 +1876,7 @@ const getTotalItems = (children) => {
1822
1876
  };
1823
1877
 
1824
1878
  /**
1879
+ * Returns collapsed children.
1825
1880
  * @template T
1826
1881
  * @param {Children<T>[]} children children
1827
1882
  * @returns {Children<T>[]} collapsed children
@@ -1847,6 +1902,7 @@ const collapse = (children) => {
1847
1902
  };
1848
1903
 
1849
1904
  /**
1905
+ * Returns result.
1850
1906
  * @template T
1851
1907
  * @param {Children<T>[]} itemsAndGroups item and groups
1852
1908
  * @param {number} max max
@@ -1976,6 +2032,7 @@ const spaceLimited = (
1976
2032
  };
1977
2033
 
1978
2034
  /**
2035
+ * Errors space limit.
1979
2036
  * @param {StatsError[]} errors errors
1980
2037
  * @param {number} max max
1981
2038
  * @returns {[StatsError[], number]} error space limit
@@ -2019,7 +2076,7 @@ const errorsSpaceLimit = (errors, max) => {
2019
2076
  for (; i < errors.length; i++) {
2020
2077
  const error = errors[i];
2021
2078
  if (typeof error === "string" || !error.details) result.push(error);
2022
- result.push({ ...error, details: "" });
2079
+ else result.push({ ...error, details: "" });
2023
2080
  }
2024
2081
  break;
2025
2082
  } else if (fullLength === max) {
@@ -2028,7 +2085,7 @@ const errorsSpaceLimit = (errors, max) => {
2028
2085
  for (; i < errors.length; i++) {
2029
2086
  const error = errors[i];
2030
2087
  if (typeof error === "string" || !error.details) result.push(error);
2031
- result.push({ ...error, details: "" });
2088
+ else result.push({ ...error, details: "" });
2032
2089
  }
2033
2090
  break;
2034
2091
  }
@@ -2039,6 +2096,7 @@ const errorsSpaceLimit = (errors, max) => {
2039
2096
  };
2040
2097
 
2041
2098
  /**
2099
+ * Returns } asset size.
2042
2100
  * @template {{ size: number }} T
2043
2101
  * @param {T[]} children children
2044
2102
  * @param {T[]} assets assets
@@ -2055,6 +2113,7 @@ const assetGroup = (children, assets) => {
2055
2113
  /** @typedef {{ size: number, sizes: Record<string, number> }} ModuleGroupBySizeResult */
2056
2114
 
2057
2115
  /**
2116
+ * Returns size and sizes.
2058
2117
  * @template {ModuleGroupBySizeResult} T
2059
2118
  * @param {Children<T>[]} children children
2060
2119
  * @param {KnownStatsModule[]} modules modules
@@ -2077,6 +2136,7 @@ const moduleGroup = (children, modules) => {
2077
2136
  };
2078
2137
 
2079
2138
  /**
2139
+ * Returns } reason group.
2080
2140
  * @template {{ active: boolean }} T
2081
2141
  * @param {Children<T>[]} children children
2082
2142
  * @param {KnownStatsModuleReason[]} reasons reasons
@@ -2098,6 +2158,7 @@ const GROUP_PATH_REGEXP = /(.+)[/\\][^/\\]+?(?:\?|(?: \+ \d+ modules?)?$)/;
2098
2158
  /** @typedef {{ type: string }} BaseGroup */
2099
2159
 
2100
2160
  /**
2161
+ * Defines the base group with children type used by this module.
2101
2162
  * @template T
2102
2163
  * @typedef {BaseGroup & { children: T[], size: number }} BaseGroupWithChildren
2103
2164
  */
@@ -2105,6 +2166,7 @@ const GROUP_PATH_REGEXP = /(.+)[/\\][^/\\]+?(?:\?|(?: \+ \d+ modules?)?$)/;
2105
2166
  /** @typedef {(name: string, asset: StatsAsset) => boolean} AssetFilterItemFn */
2106
2167
 
2107
2168
  /**
2169
+ * Describes the assets groupers shape.
2108
2170
  * @typedef {{
2109
2171
  * _: (groupConfigs: GroupConfig<KnownStatsAsset, BaseGroup & { filteredChildren: number, size: number } | BaseGroupWithChildren<KnownStatsAsset>>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void,
2110
2172
  * groupAssetsByInfo: (groupConfigs: GroupConfig<KnownStatsAsset, BaseGroupWithChildren<KnownStatsAsset>>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void,
@@ -2117,6 +2179,7 @@ const GROUP_PATH_REGEXP = /(.+)[/\\][^/\\]+?(?:\?|(?: \+ \d+ modules?)?$)/;
2117
2179
  const ASSETS_GROUPERS = {
2118
2180
  _: (groupConfigs, context, options) => {
2119
2181
  /**
2182
+ * Processes the provided name.
2120
2183
  * @param {keyof KnownStatsAsset} name name
2121
2184
  * @param {boolean=} exclude need exclude?
2122
2185
  */
@@ -2196,6 +2259,7 @@ const ASSETS_GROUPERS = {
2196
2259
  },
2197
2260
  groupAssetsByInfo: (groupConfigs, _context, _options) => {
2198
2261
  /**
2262
+ * Group by asset info flag.
2199
2263
  * @param {string} name name
2200
2264
  */
2201
2265
  const groupByAssetInfoFlag = (name) => {
@@ -2218,6 +2282,7 @@ const ASSETS_GROUPERS = {
2218
2282
  },
2219
2283
  groupAssetsByChunk: (groupConfigs, _context, _options) => {
2220
2284
  /**
2285
+ * Processes the provided name.
2221
2286
  * @param {keyof KnownStatsAsset} name name
2222
2287
  */
2223
2288
  const groupByNames = (name) => {
@@ -2257,6 +2322,7 @@ const ASSETS_GROUPERS = {
2257
2322
  };
2258
2323
 
2259
2324
  /**
2325
+ * Describes the modules groupers shape.
2260
2326
  * @typedef {{
2261
2327
  * _: (groupConfigs: GroupConfig<KnownStatsModule, BaseGroup & { filteredChildren?: number, children?: KnownStatsModule[], size: number, sizes: Record<string, number> }>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void,
2262
2328
  * excludeModules: (groupConfigs: GroupConfig<KnownStatsModule, BaseGroup & { filteredChildren: number, size: number, sizes: Record<string, number> }>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void,
@@ -2271,6 +2337,7 @@ const ASSETS_GROUPERS = {
2271
2337
  const MODULES_GROUPERS = (type) => ({
2272
2338
  _: (groupConfigs, context, options) => {
2273
2339
  /**
2340
+ * Processes the provided name.
2274
2341
  * @param {keyof KnownStatsModule} name name
2275
2342
  * @param {string} type type
2276
2343
  * @param {boolean=} exclude need exclude?
@@ -2452,6 +2519,7 @@ const MODULES_GROUPERS = (type) => ({
2452
2519
  });
2453
2520
 
2454
2521
  /**
2522
+ * Defines the module reasons groupers type used by this module.
2455
2523
  * @typedef {{ groupReasonsByOrigin: (groupConfigs: GroupConfig<KnownStatsModuleReason, BaseGroup & { module: string, children: KnownStatsModuleReason[], active: boolean }>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void }} ModuleReasonsGroupers
2456
2524
  */
2457
2525
 
@@ -2493,6 +2561,7 @@ const RESULT_GROUPERS = {
2493
2561
 
2494
2562
  // remove a prefixed "!" that can be specified to reverse sort order
2495
2563
  /**
2564
+ * Normalizes field key.
2496
2565
  * @param {string} field a field name
2497
2566
  * @returns {field} normalized field
2498
2567
  */
@@ -2505,6 +2574,7 @@ const normalizeFieldKey = (field) => {
2505
2574
 
2506
2575
  // if a field is prefixed by a "!" reverse sort order
2507
2576
  /**
2577
+ * Sorts order regular.
2508
2578
  * @param {string} field a field name
2509
2579
  * @returns {boolean} result
2510
2580
  */
@@ -2516,50 +2586,62 @@ const sortOrderRegular = (field) => {
2516
2586
  };
2517
2587
 
2518
2588
  /**
2589
+ * Returns zero.
2590
+ * @param {EXPECTED_ANY} a first
2591
+ * @param {EXPECTED_ANY} b second
2592
+ * @returns {-1 | 0 | 1} zero
2593
+ */
2594
+ const noSort = (a, b) => 0;
2595
+
2596
+ /** @type {Map<string, (a: EXPECTED_ANY, b: EXPECTED_ANY) => 0 | 1 | -1>} */
2597
+ const sortByFieldCache = new Map();
2598
+
2599
+ /**
2600
+ * Returns comparators.
2519
2601
  * @template T
2520
2602
  * @param {string | false} field field name
2521
2603
  * @returns {(a: T, b: T) => 0 | 1 | -1} comparators
2522
2604
  */
2523
2605
  const sortByField = (field) => {
2524
- if (!field) {
2525
- /**
2526
- * @param {T} a first
2527
- * @param {T} b second
2528
- * @returns {-1 | 0 | 1} zero
2529
- */
2530
- const noSort = (a, b) => 0;
2531
- return noSort;
2532
- }
2606
+ if (!field) return noSort;
2607
+
2608
+ // memoize per field: the comparator (and its selector) is pure, so building it
2609
+ // once keeps compareSelect's cache warm instead of allocating a new entry per sort
2610
+ let sortFn = sortByFieldCache.get(field);
2611
+ if (sortFn !== undefined) return sortFn;
2533
2612
 
2534
2613
  const fieldKey = normalizeFieldKey(field);
2535
2614
 
2536
- let sortFn = compareSelect((m) => m[fieldKey], compareIds);
2615
+ sortFn = compareSelect((m) => m[fieldKey], compareIds);
2537
2616
 
2538
2617
  // if a field is prefixed with a "!" the sort is reversed!
2539
- const sortIsRegular = sortOrderRegular(field);
2540
-
2541
- if (!sortIsRegular) {
2618
+ if (!sortOrderRegular(field)) {
2542
2619
  const oldSortFn = sortFn;
2543
2620
  sortFn = (a, b) => oldSortFn(b, a);
2544
2621
  }
2545
2622
 
2623
+ sortByFieldCache.set(field, sortFn);
2546
2624
  return sortFn;
2547
2625
  };
2548
2626
 
2549
2627
  /**
2628
+ * Describes the asset sorters shape.
2550
2629
  * @typedef {{
2551
2630
  * assetsSort: (comparators: Comparator<Asset>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void,
2552
2631
  * _: (comparators: Comparator<Asset>[], context: StatsFactoryContext, options: NormalizedStatsOptions) => void,
2553
2632
  * }} AssetSorters
2554
2633
  */
2555
2634
 
2635
+ /** @type {Comparator<Asset>} */
2636
+ const compareAssetsByName = compareSelect((asset) => asset.name, compareIds);
2637
+
2556
2638
  /** @type {AssetSorters} */
2557
2639
  const ASSET_SORTERS = {
2558
2640
  assetsSort: (comparators, context, { assetsSort }) => {
2559
2641
  comparators.push(sortByField(assetsSort));
2560
2642
  },
2561
2643
  _: (comparators) => {
2562
- comparators.push(compareSelect((a) => a.name, compareIds));
2644
+ comparators.push(compareAssetsByName);
2563
2645
  }
2564
2646
  };
2565
2647
 
@@ -2599,11 +2681,13 @@ const RESULT_SORTERS = {
2599
2681
  };
2600
2682
 
2601
2683
  /**
2684
+ * Defines the extract function type used by this module.
2602
2685
  * @template T
2603
2686
  * @typedef {T extends Record<string, Record<string, infer F>> ? F : never} ExtractFunction
2604
2687
  */
2605
2688
 
2606
2689
  /**
2690
+ * Processes the provided config.
2607
2691
  * @template {Record<string, Record<string, EXPECTED_ANY>>} T
2608
2692
  * @param {T} config the config see above
2609
2693
  * @param {NormalizedStatsOptions} options stats options
@@ -2658,11 +2742,13 @@ const ITEM_NAMES = {
2658
2742
  };
2659
2743
 
2660
2744
  /**
2745
+ * Defines the named object type used by this module.
2661
2746
  * @template T
2662
2747
  * @typedef {{ name: T }} NamedObject
2663
2748
  */
2664
2749
 
2665
2750
  /**
2751
+ * Merges the provided values into a single result.
2666
2752
  * @template {{ name: string }} T
2667
2753
  * @param {T[]} items items to be merged
2668
2754
  * @returns {NamedObject<T>} an object
@@ -2688,7 +2774,7 @@ const PLUGIN_NAME = "DefaultStatsFactoryPlugin";
2688
2774
 
2689
2775
  class DefaultStatsFactoryPlugin {
2690
2776
  /**
2691
- * Apply the plugin
2777
+ * Applies the plugin by registering its hooks on the compiler.
2692
2778
  * @param {Compiler} compiler the compiler instance
2693
2779
  * @returns {void}
2694
2780
  */
@@ -2697,6 +2783,7 @@ class DefaultStatsFactoryPlugin {
2697
2783
  compilation.hooks.statsFactory.tap(
2698
2784
  PLUGIN_NAME,
2699
2785
  /**
2786
+ * Handles the callback logic for this hook.
2700
2787
  * @param {StatsFactory} stats stats factory
2701
2788
  * @param {NormalizedStatsOptions} options stats options
2702
2789
  */
@@ -2758,6 +2845,7 @@ class DefaultStatsFactoryPlugin {
2758
2845
  .tap(
2759
2846
  PLUGIN_NAME,
2760
2847
  /**
2848
+ * Handles the callback logic for this hook.
2761
2849
  * @param {Compilation} comp compilation
2762
2850
  * @param {StatsFactoryContext} options options
2763
2851
  * @returns {StatsFactory | undefined} stats factory