webpack 5.97.1 → 5.104.1

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 (610) hide show
  1. package/README.md +368 -434
  2. package/bin/webpack.js +15 -9
  3. package/hot/dev-server.js +18 -3
  4. package/hot/emitter-event-target.js +7 -0
  5. package/hot/lazy-compilation-node.js +45 -29
  6. package/hot/lazy-compilation-universal.js +18 -0
  7. package/hot/lazy-compilation-web.js +15 -5
  8. package/hot/load-http.js +7 -0
  9. package/hot/log.js +15 -15
  10. package/hot/only-dev-server.js +19 -4
  11. package/hot/poll.js +1 -0
  12. package/lib/APIPlugin.js +48 -50
  13. package/lib/AbstractMethodError.js +1 -0
  14. package/lib/AsyncDependenciesBlock.js +4 -5
  15. package/lib/AutomaticPrefetchPlugin.js +22 -22
  16. package/lib/BannerPlugin.js +35 -40
  17. package/lib/Cache.js +12 -9
  18. package/lib/CacheFacade.js +13 -13
  19. package/lib/CaseSensitiveModulesWarning.js +6 -6
  20. package/lib/Chunk.js +68 -47
  21. package/lib/ChunkGraph.js +174 -95
  22. package/lib/ChunkGroup.js +32 -24
  23. package/lib/ChunkTemplate.js +8 -8
  24. package/lib/CleanPlugin.js +90 -42
  25. package/lib/CodeGenerationResults.js +12 -9
  26. package/lib/CompatibilityPlugin.js +70 -21
  27. package/lib/Compilation.js +827 -550
  28. package/lib/Compiler.js +137 -109
  29. package/lib/ConcatenationScope.js +45 -8
  30. package/lib/ConditionalInitFragment.js +1 -1
  31. package/lib/ConstPlugin.js +89 -59
  32. package/lib/ContextExclusionPlugin.js +5 -4
  33. package/lib/ContextModule.js +66 -51
  34. package/lib/ContextModuleFactory.js +51 -30
  35. package/lib/ContextReplacementPlugin.js +89 -34
  36. package/lib/CssModule.js +8 -4
  37. package/lib/DefinePlugin.js +209 -57
  38. package/lib/DelegatedModule.js +34 -23
  39. package/lib/DelegatedModuleFactoryPlugin.js +27 -24
  40. package/lib/DelegatedPlugin.js +4 -2
  41. package/lib/DependenciesBlock.js +0 -2
  42. package/lib/Dependency.js +37 -19
  43. package/lib/DependencyTemplate.js +2 -0
  44. package/lib/DependencyTemplates.js +5 -6
  45. package/lib/DllEntryPlugin.js +8 -4
  46. package/lib/DllModule.js +11 -12
  47. package/lib/DllModuleFactory.js +2 -2
  48. package/lib/DllPlugin.js +9 -6
  49. package/lib/DllReferencePlugin.js +60 -65
  50. package/lib/DotenvPlugin.js +462 -0
  51. package/lib/DynamicEntryPlugin.js +8 -8
  52. package/lib/EntryOptionPlugin.js +8 -6
  53. package/lib/EntryPlugin.js +5 -3
  54. package/lib/Entrypoint.js +19 -0
  55. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  56. package/lib/EnvironmentPlugin.js +26 -19
  57. package/lib/ErrorHelpers.js +6 -6
  58. package/lib/EvalDevToolModulePlugin.js +17 -14
  59. package/lib/EvalSourceMapDevToolPlugin.js +156 -142
  60. package/lib/ExportsInfo.js +180 -115
  61. package/lib/ExportsInfoApiPlugin.js +2 -2
  62. package/lib/ExternalModule.js +256 -102
  63. package/lib/ExternalModuleFactoryPlugin.js +66 -29
  64. package/lib/ExternalsPlugin.js +57 -2
  65. package/lib/FileSystemInfo.js +313 -247
  66. package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
  67. package/lib/FlagDependencyExportsPlugin.js +29 -19
  68. package/lib/FlagDependencyUsagePlugin.js +9 -10
  69. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  70. package/lib/Generator.js +43 -10
  71. package/lib/GraphHelpers.js +11 -3
  72. package/lib/HookWebpackError.js +35 -7
  73. package/lib/HotModuleReplacementPlugin.js +149 -108
  74. package/lib/HotUpdateChunk.js +0 -3
  75. package/lib/IgnoreErrorModuleFactory.js +2 -2
  76. package/lib/IgnorePlugin.js +16 -13
  77. package/lib/IgnoreWarningsPlugin.js +6 -4
  78. package/lib/InitFragment.js +41 -23
  79. package/lib/InvalidDependenciesModuleWarning.js +2 -3
  80. package/lib/JavascriptMetaInfoPlugin.js +2 -4
  81. package/lib/LibManifestPlugin.js +12 -13
  82. package/lib/LoaderOptionsPlugin.js +12 -14
  83. package/lib/LoaderTargetPlugin.js +5 -3
  84. package/lib/MainTemplate.js +18 -29
  85. package/lib/ManifestPlugin.js +235 -0
  86. package/lib/Module.js +138 -60
  87. package/lib/ModuleBuildError.js +4 -2
  88. package/lib/ModuleDependencyError.js +4 -3
  89. package/lib/ModuleDependencyWarning.js +4 -3
  90. package/lib/ModuleError.js +1 -1
  91. package/lib/ModuleFactory.js +10 -3
  92. package/lib/ModuleFilenameHelpers.js +63 -60
  93. package/lib/ModuleGraph.js +195 -70
  94. package/lib/ModuleGraphConnection.js +14 -20
  95. package/lib/ModuleInfoHeaderPlugin.js +15 -16
  96. package/lib/ModuleNotFoundError.js +1 -1
  97. package/lib/ModuleParseError.js +8 -4
  98. package/lib/ModuleSourceTypeConstants.js +189 -0
  99. package/lib/ModuleTemplate.js +7 -8
  100. package/lib/ModuleTypeConstants.js +37 -15
  101. package/lib/ModuleWarning.js +1 -1
  102. package/lib/MultiCompiler.js +64 -49
  103. package/lib/MultiStats.js +19 -14
  104. package/lib/MultiWatching.js +7 -11
  105. package/lib/NoEmitOnErrorsPlugin.js +5 -3
  106. package/lib/NodeStuffPlugin.js +438 -126
  107. package/lib/NormalModule.js +322 -201
  108. package/lib/NormalModuleFactory.js +230 -117
  109. package/lib/NormalModuleReplacementPlugin.js +37 -39
  110. package/lib/NullFactory.js +3 -2
  111. package/lib/OptimizationStages.js +1 -1
  112. package/lib/OptionsApply.js +1 -1
  113. package/lib/Parser.js +5 -3
  114. package/lib/PlatformPlugin.js +3 -1
  115. package/lib/PrefetchPlugin.js +6 -4
  116. package/lib/ProgressPlugin.js +48 -49
  117. package/lib/ProvidePlugin.js +7 -5
  118. package/lib/RawModule.js +26 -12
  119. package/lib/RecordIdsPlugin.js +88 -110
  120. package/lib/RequestShortener.js +3 -1
  121. package/lib/ResolverFactory.js +15 -14
  122. package/lib/RuntimeGlobals.js +216 -153
  123. package/lib/RuntimeModule.js +7 -6
  124. package/lib/RuntimePlugin.js +115 -62
  125. package/lib/RuntimeTemplate.js +248 -76
  126. package/lib/SelfModuleFactory.js +2 -2
  127. package/lib/SizeFormatHelpers.js +2 -2
  128. package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
  129. package/lib/SourceMapDevToolPlugin.js +72 -59
  130. package/lib/Stats.js +2 -3
  131. package/lib/Template.js +31 -24
  132. package/lib/TemplatedPathPlugin.js +24 -21
  133. package/lib/UseStrictPlugin.js +1 -1
  134. package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
  135. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  136. package/lib/WarnNoModeSetPlugin.js +3 -1
  137. package/lib/WatchIgnorePlugin.js +11 -9
  138. package/lib/Watching.js +27 -29
  139. package/lib/WebpackError.js +10 -3
  140. package/lib/WebpackIsIncludedPlugin.js +4 -5
  141. package/lib/WebpackOptionsApply.js +263 -135
  142. package/lib/asset/AssetBytesGenerator.js +171 -0
  143. package/lib/asset/AssetBytesParser.js +37 -0
  144. package/lib/asset/AssetGenerator.js +285 -223
  145. package/lib/asset/AssetModulesPlugin.js +103 -41
  146. package/lib/asset/AssetParser.js +7 -3
  147. package/lib/asset/AssetSourceGenerator.js +41 -17
  148. package/lib/asset/RawDataUrlModule.js +17 -9
  149. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  150. package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
  151. package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
  152. package/lib/buildChunkGraph.js +36 -17
  153. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  154. package/lib/cache/IdleFileCachePlugin.js +22 -20
  155. package/lib/cache/MemoryCachePlugin.js +3 -3
  156. package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
  157. package/lib/cache/PackFileCacheStrategy.js +198 -170
  158. package/lib/cache/ResolverCachePlugin.js +58 -48
  159. package/lib/cache/getLazyHashedEtag.js +5 -4
  160. package/lib/cli.js +197 -39
  161. package/lib/config/browserslistTargetHandler.js +110 -85
  162. package/lib/config/defaults.js +514 -113
  163. package/lib/config/normalization.js +91 -64
  164. package/lib/config/target.js +30 -18
  165. package/lib/container/ContainerEntryDependency.js +0 -1
  166. package/lib/container/ContainerEntryModule.js +16 -15
  167. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  168. package/lib/container/ContainerPlugin.js +5 -6
  169. package/lib/container/ContainerReferencePlugin.js +27 -30
  170. package/lib/container/FallbackDependency.js +2 -1
  171. package/lib/container/FallbackModule.js +19 -14
  172. package/lib/container/FallbackModuleFactory.js +2 -2
  173. package/lib/container/HoistContainerReferencesPlugin.js +7 -7
  174. package/lib/container/ModuleFederationPlugin.js +4 -4
  175. package/lib/container/RemoteModule.js +14 -14
  176. package/lib/container/RemoteRuntimeModule.js +2 -2
  177. package/lib/container/options.js +9 -9
  178. package/lib/css/CssGenerator.js +366 -74
  179. package/lib/css/CssLoadingRuntimeModule.js +26 -16
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  181. package/lib/css/CssModulesPlugin.js +191 -142
  182. package/lib/css/CssParser.js +1756 -740
  183. package/lib/css/walkCssTokens.js +180 -67
  184. package/lib/debug/ProfilingPlugin.js +135 -51
  185. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
  186. package/lib/dependencies/AMDPlugin.js +18 -11
  187. package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
  188. package/lib/dependencies/AMDRequireContextDependency.js +2 -1
  189. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
  190. package/lib/dependencies/AMDRuntimeModules.js +3 -1
  191. package/lib/dependencies/CachedConstDependency.js +24 -18
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
  193. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
  197. package/lib/dependencies/CommonJsPlugin.js +29 -18
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
  199. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  200. package/lib/dependencies/ConstDependency.js +2 -2
  201. package/lib/dependencies/ContextDependency.js +10 -5
  202. package/lib/dependencies/ContextDependencyHelpers.js +21 -13
  203. package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
  205. package/lib/dependencies/ContextElementDependency.js +23 -12
  206. package/lib/dependencies/CssIcssExportDependency.js +402 -22
  207. package/lib/dependencies/CssIcssImportDependency.js +116 -51
  208. package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
  209. package/lib/dependencies/CssImportDependency.js +17 -14
  210. package/lib/dependencies/CssUrlDependency.js +8 -13
  211. package/lib/dependencies/DynamicExports.js +19 -19
  212. package/lib/dependencies/ExportsInfoDependency.js +13 -10
  213. package/lib/dependencies/ExternalModuleDependency.js +7 -7
  214. package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
  215. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
  216. package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
  217. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
  218. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  219. package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
  220. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
  221. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
  222. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
  224. package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
  226. package/lib/dependencies/HarmonyExports.js +5 -5
  227. package/lib/dependencies/HarmonyImportDependency.js +92 -45
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
  229. package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
  230. package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
  231. package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
  233. package/lib/dependencies/ImportContextDependency.js +15 -1
  234. package/lib/dependencies/ImportDependency.js +25 -7
  235. package/lib/dependencies/ImportEagerDependency.js +7 -5
  236. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
  237. package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
  238. package/lib/dependencies/ImportMetaPlugin.js +172 -20
  239. package/lib/dependencies/ImportParserPlugin.js +327 -49
  240. package/lib/dependencies/ImportPhase.js +121 -0
  241. package/lib/dependencies/ImportPlugin.js +3 -1
  242. package/lib/dependencies/ImportWeakDependency.js +7 -5
  243. package/lib/dependencies/JsonExportsDependency.js +54 -28
  244. package/lib/dependencies/LoaderDependency.js +0 -3
  245. package/lib/dependencies/LoaderImportDependency.js +0 -3
  246. package/lib/dependencies/LoaderPlugin.js +24 -25
  247. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  248. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  249. package/lib/dependencies/ModuleDependency.js +14 -13
  250. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  251. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  252. package/lib/dependencies/NullDependency.js +2 -0
  253. package/lib/dependencies/ProvidedDependency.js +8 -10
  254. package/lib/dependencies/PureExpressionDependency.js +1 -2
  255. package/lib/dependencies/RequireContextDependency.js +2 -1
  256. package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
  257. package/lib/dependencies/RequireContextPlugin.js +5 -2
  258. package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
  259. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
  260. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  261. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  262. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  263. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  264. package/lib/dependencies/RequireResolveContextDependency.js +1 -1
  265. package/lib/dependencies/RequireResolveDependency.js +3 -3
  266. package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
  267. package/lib/dependencies/StaticExportsDependency.js +3 -5
  268. package/lib/dependencies/SystemPlugin.js +4 -4
  269. package/lib/dependencies/URLContextDependency.js +65 -0
  270. package/lib/dependencies/URLDependency.js +3 -8
  271. package/lib/dependencies/URLPlugin.js +18 -159
  272. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
  273. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  274. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  275. package/lib/dependencies/WorkerDependency.js +8 -6
  276. package/lib/dependencies/WorkerPlugin.js +131 -67
  277. package/lib/dependencies/getFunctionExpression.js +2 -2
  278. package/lib/dependencies/processExportInfo.js +4 -4
  279. package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
  280. package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
  281. package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
  282. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
  283. package/lib/formatLocation.js +2 -2
  284. package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
  285. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  286. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
  287. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  288. package/lib/hmr/LazyCompilationPlugin.js +67 -54
  289. package/lib/hmr/lazyCompilationBackend.js +23 -18
  290. package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
  291. package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
  292. package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
  293. package/lib/ids/HashedModuleIdsPlugin.js +15 -13
  294. package/lib/ids/IdHelpers.js +66 -49
  295. package/lib/ids/NamedChunkIdsPlugin.js +14 -17
  296. package/lib/ids/NamedModuleIdsPlugin.js +12 -14
  297. package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
  298. package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
  299. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
  300. package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
  301. package/lib/ids/SyncModuleIdsPlugin.js +18 -13
  302. package/lib/index.js +54 -14
  303. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
  304. package/lib/javascript/BasicEvaluatedExpression.js +26 -18
  305. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  306. package/lib/javascript/ChunkHelpers.js +17 -5
  307. package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
  308. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
  309. package/lib/javascript/JavascriptGenerator.js +122 -100
  310. package/lib/javascript/JavascriptModulesPlugin.js +332 -152
  311. package/lib/javascript/JavascriptParser.js +1488 -1052
  312. package/lib/javascript/JavascriptParserHelpers.js +48 -47
  313. package/lib/javascript/StartupHelpers.js +23 -22
  314. package/lib/json/JsonData.js +4 -4
  315. package/lib/json/JsonGenerator.js +66 -32
  316. package/lib/json/JsonModulesPlugin.js +16 -6
  317. package/lib/json/JsonParser.js +23 -8
  318. package/lib/library/AbstractLibraryPlugin.js +45 -10
  319. package/lib/library/AmdLibraryPlugin.js +7 -5
  320. package/lib/library/AssignLibraryPlugin.js +71 -17
  321. package/lib/library/EnableLibraryPlugin.js +51 -25
  322. package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
  323. package/lib/library/JsonpLibraryPlugin.js +5 -2
  324. package/lib/library/ModuleLibraryPlugin.js +230 -18
  325. package/lib/library/SystemLibraryPlugin.js +29 -11
  326. package/lib/library/UmdLibraryPlugin.js +35 -32
  327. package/lib/logging/Logger.js +18 -15
  328. package/lib/logging/createConsoleLogger.js +27 -27
  329. package/lib/logging/runtime.js +11 -11
  330. package/lib/logging/truncateArgs.js +5 -5
  331. package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
  332. package/lib/node/NodeEnvironmentPlugin.js +9 -3
  333. package/lib/node/NodeTargetPlugin.js +9 -1
  334. package/lib/node/NodeTemplatePlugin.js +2 -2
  335. package/lib/node/NodeWatchFileSystem.js +4 -4
  336. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
  337. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
  338. package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
  339. package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
  340. package/lib/node/nodeConsole.js +12 -7
  341. package/lib/optimize/AggressiveMergingPlugin.js +46 -47
  342. package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
  343. package/lib/optimize/ConcatenatedModule.js +620 -251
  344. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  345. package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
  346. package/lib/optimize/InnerGraph.js +139 -124
  347. package/lib/optimize/InnerGraphPlugin.js +29 -24
  348. package/lib/optimize/LimitChunkCountPlugin.js +32 -8
  349. package/lib/optimize/MangleExportsPlugin.js +22 -22
  350. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  351. package/lib/optimize/MinChunkSizePlugin.js +12 -7
  352. package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
  353. package/lib/optimize/RealContentHashPlugin.js +58 -44
  354. package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
  355. package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
  356. package/lib/optimize/RuntimeChunkPlugin.js +22 -25
  357. package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
  358. package/lib/optimize/SplitChunksPlugin.js +209 -158
  359. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
  360. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  361. package/lib/performance/SizeLimitsPlugin.js +8 -5
  362. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  363. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
  364. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
  365. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  366. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  367. package/lib/rules/BasicEffectRulePlugin.js +14 -5
  368. package/lib/rules/BasicMatcherRulePlugin.js +18 -7
  369. package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
  370. package/lib/rules/RuleSetCompiler.js +73 -32
  371. package/lib/rules/UseEffectRulePlugin.js +61 -25
  372. package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
  373. package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
  374. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  375. package/lib/runtime/CompatRuntimeModule.js +0 -1
  376. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  377. package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
  378. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
  379. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  380. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  381. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
  382. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  383. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  384. package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
  385. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
  386. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  387. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  388. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  389. package/lib/schemes/DataUriPlugin.js +9 -31
  390. package/lib/schemes/FileUriPlugin.js +11 -6
  391. package/lib/schemes/HttpUriPlugin.js +381 -261
  392. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  393. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  394. package/lib/serialization/BinaryMiddleware.js +51 -33
  395. package/lib/serialization/ErrorObjectSerializer.js +7 -2
  396. package/lib/serialization/FileMiddleware.js +101 -71
  397. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  398. package/lib/serialization/ObjectMiddleware.js +130 -54
  399. package/lib/serialization/PlainObjectSerializer.js +1 -1
  400. package/lib/serialization/Serializer.js +38 -20
  401. package/lib/serialization/SerializerMiddleware.js +121 -49
  402. package/lib/serialization/SingleItemMiddleware.js +9 -7
  403. package/lib/serialization/types.js +1 -1
  404. package/lib/sharing/ConsumeSharedModule.js +9 -9
  405. package/lib/sharing/ConsumeSharedPlugin.js +14 -14
  406. package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
  407. package/lib/sharing/ProvideSharedModule.js +9 -11
  408. package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
  409. package/lib/sharing/ProvideSharedPlugin.js +15 -10
  410. package/lib/sharing/SharePlugin.js +3 -4
  411. package/lib/sharing/ShareRuntimeModule.js +7 -6
  412. package/lib/sharing/resolveMatchedConfigs.js +27 -13
  413. package/lib/sharing/utils.js +37 -43
  414. package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
  415. package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
  416. package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
  417. package/lib/stats/StatsFactory.js +75 -32
  418. package/lib/stats/StatsPrinter.js +71 -51
  419. package/lib/url/URLParserPlugin.js +264 -0
  420. package/lib/util/ArrayHelpers.js +6 -8
  421. package/lib/util/ArrayQueue.js +1 -1
  422. package/lib/util/AsyncQueue.js +11 -10
  423. package/lib/util/Hash.js +37 -5
  424. package/lib/util/IterableHelpers.js +4 -4
  425. package/lib/util/LazyBucketSortedSet.js +46 -27
  426. package/lib/util/LazySet.js +16 -10
  427. package/lib/util/MapHelpers.js +1 -1
  428. package/lib/util/ParallelismFactorCalculator.js +2 -2
  429. package/lib/util/Semaphore.js +3 -3
  430. package/lib/util/SetHelpers.js +6 -6
  431. package/lib/util/SortableSet.js +11 -9
  432. package/lib/util/StackedCacheMap.js +2 -2
  433. package/lib/util/StackedMap.js +3 -3
  434. package/lib/util/StringXor.js +2 -1
  435. package/lib/util/TupleQueue.js +11 -8
  436. package/lib/util/TupleSet.js +44 -19
  437. package/lib/util/URLAbsoluteSpecifier.js +3 -4
  438. package/lib/util/WeakTupleMap.js +56 -42
  439. package/lib/util/binarySearchBounds.js +4 -3
  440. package/lib/util/chainedImports.js +3 -1
  441. package/lib/util/cleverMerge.js +171 -107
  442. package/lib/util/comparators.js +265 -162
  443. package/lib/util/compileBooleanMatcher.js +120 -41
  444. package/lib/util/concatenate.js +20 -16
  445. package/lib/util/conventions.js +73 -74
  446. package/lib/util/create-schema-validation.js +8 -8
  447. package/lib/util/createHash.js +32 -135
  448. package/lib/util/dataURL.js +39 -0
  449. package/lib/util/deprecation.js +119 -116
  450. package/lib/util/deterministicGrouping.js +56 -47
  451. package/lib/util/extractSourceMap.js +319 -0
  452. package/lib/util/extractUrlAndGlobal.js +1 -1
  453. package/lib/util/findGraphRoots.js +19 -9
  454. package/lib/util/fs.js +169 -141
  455. package/lib/util/hash/BatchedHash.js +50 -10
  456. package/lib/util/hash/BulkUpdateHash.js +138 -0
  457. package/lib/util/hash/DebugHash.js +75 -0
  458. package/lib/util/hash/hash-digest.js +216 -0
  459. package/lib/util/hash/md4.js +2 -2
  460. package/lib/util/hash/wasm-hash.js +59 -17
  461. package/lib/util/identifier.js +124 -61
  462. package/lib/util/internalSerializables.js +4 -6
  463. package/lib/util/magicComment.js +9 -5
  464. package/lib/util/makeSerializable.js +2 -2
  465. package/lib/util/memoize.js +5 -2
  466. package/lib/util/objectToMap.js +3 -2
  467. package/lib/util/processAsyncTree.js +5 -5
  468. package/lib/util/propertyAccess.js +1 -1
  469. package/lib/util/propertyName.js +2 -3
  470. package/lib/util/registerExternalSerializer.js +16 -20
  471. package/lib/util/removeBOM.js +25 -0
  472. package/lib/util/runtime.js +72 -56
  473. package/lib/util/semver.js +44 -33
  474. package/lib/util/serialization.js +56 -56
  475. package/lib/util/smartGrouping.js +42 -27
  476. package/lib/util/source.js +5 -4
  477. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  478. package/lib/validateSchema.js +7 -9
  479. package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
  480. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
  481. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
  482. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
  483. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
  484. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  485. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
  486. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
  487. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
  488. package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
  489. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
  490. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
  491. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
  492. package/lib/wasm-sync/WebAssemblyParser.js +10 -17
  493. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  494. package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
  495. package/lib/web/FetchCompileWasmPlugin.js +6 -8
  496. package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
  497. package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
  498. package/lib/web/JsonpTemplatePlugin.js +0 -1
  499. package/lib/webpack.js +107 -87
  500. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
  501. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
  502. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  503. package/module.d.ts +5 -0
  504. package/package.json +149 -129
  505. package/schemas/WebpackOptions.check.d.ts +1 -1
  506. package/schemas/WebpackOptions.check.js +2 -2
  507. package/schemas/WebpackOptions.json +543 -190
  508. package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
  509. package/schemas/plugins/BannerPlugin.check.js +2 -2
  510. package/schemas/plugins/BannerPlugin.json +4 -0
  511. package/schemas/plugins/DllPlugin.check.d.ts +1 -1
  512. package/schemas/plugins/DllPlugin.check.js +1 -1
  513. package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
  514. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  515. package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
  516. package/schemas/plugins/IgnorePlugin.check.js +1 -1
  517. package/schemas/plugins/IgnorePlugin.json +1 -1
  518. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
  519. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  520. package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
  521. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  522. package/schemas/plugins/ManifestPlugin.json +98 -0
  523. package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
  524. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  525. package/schemas/plugins/ProgressPlugin.json +1 -1
  526. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
  529. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
  530. package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
  531. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
  532. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
  534. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  535. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
  536. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  537. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
  538. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  539. package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
  540. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  541. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
  542. package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
  543. package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
  544. package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
  545. package/schemas/plugins/container/ExternalsType.check.js +2 -2
  546. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
  547. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
  548. package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
  549. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
  550. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
  551. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
  552. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
  553. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
  554. package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
  555. package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
  556. package/schemas/plugins/css/CssParserOptions.check.js +2 -2
  557. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
  558. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  559. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  560. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  561. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  562. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
  563. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
  564. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
  565. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
  566. package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
  567. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  568. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  569. package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
  570. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  571. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  572. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
  573. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  574. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
  575. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  576. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
  577. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
  578. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
  579. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  580. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
  581. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  582. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  583. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  584. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  585. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
  586. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
  587. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
  588. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
  589. package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
  590. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  591. package/types.d.ts +5115 -1863
  592. package/SECURITY.md +0 -9
  593. package/lib/ModuleSourceTypesConstants.js +0 -112
  594. package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
  595. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
  596. package/lib/library/ModernModuleLibraryPlugin.js +0 -144
  597. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
  598. package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
  599. package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
  600. package/schemas/plugins/JsonModulesPluginParser.json +0 -12
  601. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
  602. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
  603. package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
  604. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
  605. package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
  606. package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
  607. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
  608. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
  609. package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
  610. package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
package/lib/ChunkGraph.js CHANGED
@@ -8,33 +8,38 @@
8
8
  const util = require("util");
9
9
  const Entrypoint = require("./Entrypoint");
10
10
  const ModuleGraphConnection = require("./ModuleGraphConnection");
11
+ const { DEFAULTS } = require("./config/defaults");
11
12
  const { first } = require("./util/SetHelpers");
12
13
  const SortableSet = require("./util/SortableSet");
13
14
  const {
14
- compareModulesById,
15
+ compareIds,
15
16
  compareIterables,
17
+ compareModulesById,
16
18
  compareModulesByIdentifier,
17
- concatComparators,
18
19
  compareSelect,
19
- compareIds
20
+ concatComparators
20
21
  } = require("./util/comparators");
21
22
  const createHash = require("./util/createHash");
22
23
  const findGraphRoots = require("./util/findGraphRoots");
23
24
  const {
24
25
  RuntimeSpecMap,
25
26
  RuntimeSpecSet,
26
- runtimeToString,
27
+ forEachRuntime,
27
28
  mergeRuntime,
28
- forEachRuntime
29
+ runtimeToString
29
30
  } = require("./util/runtime");
30
31
 
31
32
  /** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */
32
33
  /** @typedef {import("./Chunk")} Chunk */
34
+ /** @typedef {import("./Chunk").Chunks} Chunks */
35
+ /** @typedef {import("./Chunk").Entrypoints} Entrypoints */
33
36
  /** @typedef {import("./Chunk").ChunkId} ChunkId */
34
37
  /** @typedef {import("./ChunkGroup")} ChunkGroup */
35
- /** @typedef {import("./Generator").SourceTypes} SourceTypes */
36
38
  /** @typedef {import("./Module")} Module */
39
+ /** @typedef {import("./Module").SourceType} SourceType */
40
+ /** @typedef {import("./Module").SourceTypes} SourceTypes */
37
41
  /** @typedef {import("./Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
42
+ /** @typedef {import("./Module").RuntimeRequirements} RuntimeRequirements */
38
43
  /** @typedef {import("./ModuleGraph")} ModuleGraph */
39
44
  /** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
40
45
  /** @typedef {import("./RuntimeModule")} RuntimeModule */
@@ -61,7 +66,7 @@ const compareModuleIterables = compareIterables(compareModulesByIdentifier);
61
66
  class ModuleHashInfo {
62
67
  /**
63
68
  * @param {string} hash hash
64
- * @param {string} renderedHash rendered hash
69
+ * @param {string} renderedHash rendered hash
65
70
  */
66
71
  constructor(hash, renderedHash) {
67
72
  this.hash = hash;
@@ -69,20 +74,18 @@ class ModuleHashInfo {
69
74
  }
70
75
  }
71
76
 
72
- /** @template T @typedef {(set: SortableSet<T>) => T[]} SetToArrayFunction<T> */
73
-
74
77
  /**
75
78
  * @template T
76
79
  * @param {SortableSet<T>} set the set
77
80
  * @returns {T[]} set as array
78
81
  */
79
- const getArray = set => Array.from(set);
82
+ const getArray = (set) => [...set];
80
83
 
81
84
  /**
82
- * @param {SortableSet<Chunk>} chunks the chunks
85
+ * @param {SortableChunks} chunks the chunks
83
86
  * @returns {RuntimeSpecSet} runtimes
84
87
  */
85
- const getModuleRuntimes = chunks => {
88
+ const getModuleRuntimes = (chunks) => {
86
89
  const runtimes = new RuntimeSpecSet();
87
90
  for (const chunk of chunks) {
88
91
  runtimes.add(chunk.runtime);
@@ -91,11 +94,11 @@ const getModuleRuntimes = chunks => {
91
94
  };
92
95
 
93
96
  /**
94
- * @param {WeakMap<Module, Set<string>> | undefined} sourceTypesByModule sourceTypesByModule
95
- * @returns {function (SortableSet<Module>): Map<string, SortableSet<Module>>} modules by source type
97
+ * @param {SourceTypesByModule | undefined} sourceTypesByModule sourceTypesByModule
98
+ * @returns {(set: SortableSet<Module>) => Map<string, SortableSet<Module>>} modules by source type
96
99
  */
97
- const modulesBySourceType = sourceTypesByModule => set => {
98
- /** @type {Map<string, SortableSet<Module>>} */
100
+ const modulesBySourceType = (sourceTypesByModule) => (set) => {
101
+ /** @type {Map<SourceType, SortableSet<Module>>} */
99
102
  const map = new Map();
100
103
  for (const module of set) {
101
104
  const sourceTypes =
@@ -121,24 +124,27 @@ const modulesBySourceType = sourceTypesByModule => set => {
121
124
  };
122
125
  const defaultModulesBySourceType = modulesBySourceType(undefined);
123
126
 
127
+ /**
128
+ * @typedef {(set: SortableSet<Module>) => Module[]} ModuleSetToArrayFunction
129
+ */
130
+
124
131
  /**
125
132
  * @template T
126
- * @type {WeakMap<Function, any>}
133
+ * @type {WeakMap<ModuleComparator, ModuleSetToArrayFunction>}
127
134
  */
128
135
  const createOrderedArrayFunctionMap = new WeakMap();
129
136
 
130
137
  /**
131
138
  * @template T
132
- * @param {function(T, T): -1|0|1} comparator comparator function
133
- * @returns {SetToArrayFunction<T>} set as ordered array
139
+ * @param {ModuleComparator} comparator comparator function
140
+ * @returns {ModuleSetToArrayFunction} set as ordered array
134
141
  */
135
- const createOrderedArrayFunction = comparator => {
136
- /** @type {SetToArrayFunction<T>} */
142
+ const createOrderedArrayFunction = (comparator) => {
137
143
  let fn = createOrderedArrayFunctionMap.get(comparator);
138
144
  if (fn !== undefined) return fn;
139
- fn = set => {
145
+ fn = (set) => {
140
146
  set.sortWith(comparator);
141
- return Array.from(set);
147
+ return [...set];
142
148
  };
143
149
  createOrderedArrayFunctionMap.set(comparator, fn);
144
150
  return fn;
@@ -148,7 +154,7 @@ const createOrderedArrayFunction = comparator => {
148
154
  * @param {Iterable<Module>} modules the modules to get the count/size of
149
155
  * @returns {number} the size of the modules
150
156
  */
151
- const getModulesSize = modules => {
157
+ const getModulesSize = (modules) => {
152
158
  let size = 0;
153
159
  for (const module of modules) {
154
160
  for (const type of module.getSourceTypes()) {
@@ -162,7 +168,7 @@ const getModulesSize = modules => {
162
168
  * @param {Iterable<Module>} modules the sortable Set to get the size of
163
169
  * @returns {Record<string, number>} the sizes of the modules
164
170
  */
165
- const getModulesSizes = modules => {
171
+ const getModulesSizes = (modules) => {
166
172
  const sizes = Object.create(null);
167
173
  for (const module of modules) {
168
174
  for (const type of module.getSourceTypes()) {
@@ -189,13 +195,14 @@ const isAvailableChunk = (a, b) => {
189
195
  return true;
190
196
  };
191
197
 
198
+ /** @typedef {SortableSet<Chunk>} SortableChunks */
192
199
  /** @typedef {Set<Chunk>} EntryInChunks */
193
200
  /** @typedef {Set<Chunk>} RuntimeInChunks */
194
201
  /** @typedef {string | number} ModuleId */
195
202
 
196
203
  class ChunkGraphModule {
197
204
  constructor() {
198
- /** @type {SortableSet<Chunk>} */
205
+ /** @type {SortableChunks} */
199
206
  this.chunks = new SortableSet();
200
207
  /** @type {EntryInChunks | undefined} */
201
208
  this.entryInChunks = undefined;
@@ -205,22 +212,25 @@ class ChunkGraphModule {
205
212
  this.hashes = undefined;
206
213
  /** @type {ModuleId | null} */
207
214
  this.id = null;
208
- /** @type {RuntimeSpecMap<Set<string>> | undefined} */
215
+ /** @type {RuntimeSpecMap<Set<string>, RuntimeRequirements> | undefined} */
209
216
  this.runtimeRequirements = undefined;
210
- /** @type {RuntimeSpecMap<string> | undefined} */
217
+ /** @type {RuntimeSpecMap<string, bigint> | undefined} */
211
218
  this.graphHashes = undefined;
212
- /** @type {RuntimeSpecMap<string> | undefined} */
219
+ /** @type {RuntimeSpecMap<string, string> | undefined} */
213
220
  this.graphHashesWithConnections = undefined;
214
221
  }
215
222
  }
216
223
 
224
+ /** @typedef {WeakMap<Module, SourceTypes>} SourceTypesByModule */
225
+ /** @typedef {Map<Module, Entrypoint>} EntryModules */
226
+
217
227
  class ChunkGraphChunk {
218
228
  constructor() {
219
229
  /** @type {SortableSet<Module>} */
220
230
  this.modules = new SortableSet();
221
- /** @type {WeakMap<Module, Set<string>> | undefined} */
231
+ /** @type {SourceTypesByModule | undefined} */
222
232
  this.sourceTypesByModule = undefined;
223
- /** @type {Map<Module, Entrypoint>} */
233
+ /** @type {EntryModules} */
224
234
  this.entryModules = new Map();
225
235
  /** @type {SortableSet<RuntimeModule>} */
226
236
  this.runtimeModules = new SortableSet();
@@ -228,7 +238,7 @@ class ChunkGraphChunk {
228
238
  this.fullHashModules = undefined;
229
239
  /** @type {Set<RuntimeModule> | undefined} */
230
240
  this.dependentHashModules = undefined;
231
- /** @type {Set<string> | undefined} */
241
+ /** @type {RuntimeRequirements | undefined} */
232
242
  this.runtimeRequirements = undefined;
233
243
  /** @type {Set<string>} */
234
244
  this.runtimeRequirementsInTree = new Set();
@@ -237,12 +247,19 @@ class ChunkGraphChunk {
237
247
  }
238
248
  }
239
249
 
250
+ /** @typedef {string | number} RuntimeId */
251
+ /** @typedef {Record<ModuleId, string>} IdToHashMap */
252
+ /** @typedef {Record<ChunkId, IdToHashMap>} ChunkModuleHashMap */
253
+ /** @typedef {Record<ChunkId, ModuleId[]>} ChunkModuleIdMap */
254
+
255
+ /** @typedef {(a: Module, b: Module) => -1 | 0 | 1} ModuleComparator */
256
+
240
257
  class ChunkGraph {
241
258
  /**
242
259
  * @param {ModuleGraph} moduleGraph the module graph
243
260
  * @param {string | Hash} hashFunction the hash function to use
244
261
  */
245
- constructor(moduleGraph, hashFunction = "md4") {
262
+ constructor(moduleGraph, hashFunction = DEFAULTS.HASH_FUNCTION) {
246
263
  /**
247
264
  * @private
248
265
  * @type {WeakMap<Module, ChunkGraphModule>}
@@ -260,7 +277,7 @@ class ChunkGraph {
260
277
  this._blockChunkGroups = new WeakMap();
261
278
  /**
262
279
  * @private
263
- * @type {Map<string, string | number>}
280
+ * @type {Map<string, RuntimeId>}
264
281
  */
265
282
  this._runtimeIds = new Map();
266
283
  /** @type {ModuleGraph} */
@@ -305,14 +322,14 @@ class ChunkGraph {
305
322
  */
306
323
  _getGraphRoots(set) {
307
324
  const { moduleGraph } = this;
308
- return Array.from(
309
- findGraphRoots(set, module => {
325
+ return [
326
+ ...findGraphRoots(set, (module) => {
310
327
  /** @type {Set<Module>} */
311
328
  const set = new Set();
312
329
  /**
313
330
  * @param {Module} module module
314
331
  */
315
- const addDependencies = module => {
332
+ const addDependencies = (module) => {
316
333
  for (const connection of moduleGraph.getOutgoingConnections(module)) {
317
334
  if (!connection.module) continue;
318
335
  const activeState = connection.getActiveState(undefined);
@@ -327,7 +344,7 @@ class ChunkGraph {
327
344
  addDependencies(module);
328
345
  return set;
329
346
  })
330
- ).sort(compareModulesByIdentifier);
347
+ ].sort(compareModulesByIdentifier);
331
348
  }
332
349
 
333
350
  /**
@@ -415,8 +432,9 @@ class ChunkGraph {
415
432
  */
416
433
  attachDependentHashModules(chunk, modules) {
417
434
  const cgc = this._getChunkGraphChunk(chunk);
418
- if (cgc.dependentHashModules === undefined)
435
+ if (cgc.dependentHashModules === undefined) {
419
436
  cgc.dependentHashModules = new Set();
437
+ }
420
438
  for (const module of modules) {
421
439
  cgc.dependentHashModules.add(module);
422
440
  }
@@ -446,7 +464,7 @@ class ChunkGraph {
446
464
  for (const chunk of oldCgm.entryInChunks) {
447
465
  const cgc = this._getChunkGraphChunk(chunk);
448
466
  const old = /** @type {Entrypoint} */ (cgc.entryModules.get(oldModule));
449
- /** @type {Map<Module, Entrypoint>} */
467
+ /** @type {EntryModules} */
450
468
  const newEntryModules = new Map();
451
469
  for (const [m, cg] of cgc.entryModules) {
452
470
  if (m === oldModule) {
@@ -535,7 +553,7 @@ class ChunkGraph {
535
553
 
536
554
  /**
537
555
  * @param {Module} module the module
538
- * @param {function(Chunk, Chunk): -1|0|1} sortFn sort function
556
+ * @param {(a: Chunk, b: Chunk) => -1 | 0 | 1} sortFn sort function
539
557
  * @returns {Iterable<Chunk>} iterable of chunks (do not modify)
540
558
  */
541
559
  getOrderedModuleChunksIterable(module, sortFn) {
@@ -614,7 +632,7 @@ class ChunkGraph {
614
632
  /**
615
633
  * @param {Chunk} chunk chunk
616
634
  * @param {Module} module chunk module
617
- * @param {Set<string>} sourceTypes source types
635
+ * @param {SourceTypes} sourceTypes source types
618
636
  */
619
637
  setChunkModuleSourceTypes(chunk, module, sourceTypes) {
620
638
  const cgc = this._getChunkGraphChunk(chunk);
@@ -651,10 +669,11 @@ class ChunkGraph {
651
669
 
652
670
  /**
653
671
  * @param {Module} module module
654
- * @returns {Set<string> | undefined} source types
672
+ * @returns {SourceTypes | undefined} source types
655
673
  */
656
674
  _getOverwrittenModuleSourceTypes(module) {
657
675
  let newSet = false;
676
+ /** @type {Set<SourceType> | undefined} */
658
677
  let sourceTypes;
659
678
  for (const chunk of this.getModuleChunksIterable(module)) {
660
679
  const cgc = this._getChunkGraphChunk(chunk);
@@ -662,8 +681,7 @@ class ChunkGraph {
662
681
  const st = cgc.sourceTypesByModule.get(module);
663
682
  if (st === undefined) return;
664
683
  if (!sourceTypes) {
665
- sourceTypes = st;
666
- continue;
684
+ sourceTypes = /** @type {Set<SourceType>} */ (st);
667
685
  } else if (!newSet) {
668
686
  for (const type of st) {
669
687
  if (!newSet) {
@@ -686,7 +704,7 @@ class ChunkGraph {
686
704
 
687
705
  /**
688
706
  * @param {Chunk} chunk the chunk
689
- * @param {function(Module, Module): -1|0|1} comparator comparator function
707
+ * @param {ModuleComparator} comparator comparator function
690
708
  * @returns {Iterable<Module>} return the modules for this chunk
691
709
  */
692
710
  getOrderedChunkModulesIterable(chunk, comparator) {
@@ -698,7 +716,7 @@ class ChunkGraph {
698
716
  /**
699
717
  * @param {Chunk} chunk the chunk
700
718
  * @param {string} sourceType source type
701
- * @param {function(Module, Module): -1|0|1} comparator comparator function
719
+ * @param {ModuleComparator} comparator comparator function
702
720
  * @returns {Iterable<Module> | undefined} return the modules for this chunk
703
721
  */
704
722
  getOrderedChunkModulesIterableBySourceType(chunk, sourceType, comparator) {
@@ -722,7 +740,7 @@ class ChunkGraph {
722
740
 
723
741
  /**
724
742
  * @param {Chunk} chunk the chunk
725
- * @param {function(Module, Module): -1|0|1} comparator comparator function
743
+ * @param {ModuleComparator} comparator comparator function
726
744
  * @returns {Module[]} return the modules for this chunk (cached, do not modify)
727
745
  */
728
746
  getOrderedChunkModules(chunk, comparator) {
@@ -735,16 +753,16 @@ class ChunkGraph {
735
753
  * @param {Chunk} chunk the chunk
736
754
  * @param {ModuleFilterPredicate} filterFn function used to filter modules
737
755
  * @param {boolean} includeAllChunks all chunks or only async chunks
738
- * @returns {Record<string|number, (string|number)[]>} chunk to module ids object
756
+ * @returns {ChunkModuleIdMap} chunk to module ids object
739
757
  */
740
758
  getChunkModuleIdMap(chunk, filterFn, includeAllChunks = false) {
741
- /** @type {Record<string|number, (string|number)[]>} */
759
+ /** @type {ChunkModuleIdMap} */
742
760
  const chunkModuleIdMap = Object.create(null);
743
761
 
744
762
  for (const asyncChunk of includeAllChunks
745
763
  ? chunk.getAllReferencedChunks()
746
764
  : chunk.getAllAsyncChunks()) {
747
- /** @type {(string | number)[] | undefined} */
765
+ /** @type {ModuleId[] | undefined} */
748
766
  let array;
749
767
  for (const module of this.getOrderedChunkModulesIterable(
750
768
  asyncChunk,
@@ -769,7 +787,7 @@ class ChunkGraph {
769
787
  * @param {ModuleFilterPredicate} filterFn function used to filter modules
770
788
  * @param {number} hashLength length of the hash
771
789
  * @param {boolean} includeAllChunks all chunks or only async chunks
772
- * @returns {Record<string|number, Record<string|number, string>>} chunk to module id to module hash object
790
+ * @returns {ChunkModuleHashMap} chunk to module id to module hash object
773
791
  */
774
792
  getChunkModuleRenderedHashMap(
775
793
  chunk,
@@ -777,11 +795,9 @@ class ChunkGraph {
777
795
  hashLength = 0,
778
796
  includeAllChunks = false
779
797
  ) {
780
- /** @type {Record<ChunkId, Record<string|number, string>>} */
798
+ /** @type {ChunkModuleHashMap} */
781
799
  const chunkModuleHashMap = Object.create(null);
782
800
 
783
- /** @typedef {Record<string|number, string>} IdToHashMap */
784
-
785
801
  for (const asyncChunk of includeAllChunks
786
802
  ? chunk.getAllReferencedChunks()
787
803
  : chunk.getAllAsyncChunks()) {
@@ -795,7 +811,8 @@ class ChunkGraph {
795
811
  if (idToHashMap === undefined) {
796
812
  idToHashMap = Object.create(null);
797
813
  chunkModuleHashMap[/** @type {ChunkId} */ (asyncChunk.id)] =
798
- /** @type {IdToHashMap} */ (idToHashMap);
814
+ /** @type {IdToHashMap} */
815
+ (idToHashMap);
799
816
  }
800
817
  const moduleId = this.getModuleId(module);
801
818
  const hash = this.getRenderedModuleHash(module, asyncChunk.runtime);
@@ -813,7 +830,7 @@ class ChunkGraph {
813
830
  /**
814
831
  * @param {Chunk} chunk the chunk
815
832
  * @param {ChunkFilterPredicate} filterFn function used to filter chunks
816
- * @returns {Record<string|number, boolean>} chunk map
833
+ * @returns {Record<ChunkId, boolean>} chunk map
817
834
  */
818
835
  getChunkConditionMap(chunk, filterFn) {
819
836
  const map = Object.create(null);
@@ -856,7 +873,7 @@ class ChunkGraph {
856
873
  /**
857
874
  * @param {Chunk} chunkA first chunk
858
875
  * @param {Chunk} chunkB second chunk
859
- * @returns {-1|0|1} this is a comparator function like sort and returns -1, 0, or 1 based on sort order
876
+ * @returns {-1 | 0 | 1} this is a comparator function like sort and returns -1, 0, or 1 based on sort order
860
877
  */
861
878
  compareChunks(chunkA, chunkB) {
862
879
  const cgcA = this._getChunkGraphChunk(chunkA);
@@ -1017,9 +1034,10 @@ class ChunkGraph {
1017
1034
  this.connectChunkAndModule(chunkA, module);
1018
1035
  }
1019
1036
 
1020
- for (const [module, chunkGroup] of Array.from(
1021
- this.getChunkEntryModulesWithChunkGroupIterable(chunkB)
1022
- )) {
1037
+ for (const [
1038
+ module,
1039
+ chunkGroup
1040
+ ] of this.getChunkEntryModulesWithChunkGroupIterable(chunkB)) {
1023
1041
  this.disconnectChunkAndEntryModule(chunkB, module);
1024
1042
  this.connectChunkAndEntryModule(
1025
1043
  chunkA,
@@ -1113,8 +1131,9 @@ class ChunkGraph {
1113
1131
  */
1114
1132
  addDependentHashModuleToChunk(chunk, module) {
1115
1133
  const cgc = this._getChunkGraphChunk(chunk);
1116
- if (cgc.dependentHashModules === undefined)
1134
+ if (cgc.dependentHashModules === undefined) {
1117
1135
  cgc.dependentHashModules = new Set();
1136
+ }
1118
1137
  cgc.dependentHashModules.add(module);
1119
1138
  }
1120
1139
 
@@ -1212,7 +1231,7 @@ class ChunkGraph {
1212
1231
  * @returns {Iterable<Chunk>} iterable of chunks
1213
1232
  */
1214
1233
  getChunkEntryDependentChunksIterable(chunk) {
1215
- /** @type {Set<Chunk>} */
1234
+ /** @type {Chunks} */
1216
1235
  const set = new Set();
1217
1236
  for (const chunkGroup of chunk.groupsIterable) {
1218
1237
  if (chunkGroup instanceof Entrypoint) {
@@ -1231,6 +1250,60 @@ class ChunkGraph {
1231
1250
  return set;
1232
1251
  }
1233
1252
 
1253
+ /**
1254
+ * @param {Chunk} chunk the chunk
1255
+ * @returns {Iterable<Chunk>} iterable of chunks and include chunks from children entrypoints
1256
+ */
1257
+ getRuntimeChunkDependentChunksIterable(chunk) {
1258
+ /** @type {Chunks} */
1259
+ const set = new Set();
1260
+
1261
+ /** @type {Entrypoints} */
1262
+ const entrypoints = new Set();
1263
+
1264
+ for (const chunkGroup of chunk.groupsIterable) {
1265
+ if (chunkGroup instanceof Entrypoint) {
1266
+ const queue = [chunkGroup];
1267
+ while (queue.length > 0) {
1268
+ const current = queue.shift();
1269
+ if (current) {
1270
+ entrypoints.add(current);
1271
+
1272
+ let hasChildrenEntrypoint = false;
1273
+ for (const child of current.childrenIterable) {
1274
+ if (child instanceof Entrypoint && child.dependOn(current)) {
1275
+ hasChildrenEntrypoint = true;
1276
+ queue.push(/** @type {Entrypoint} */ (child));
1277
+ }
1278
+ }
1279
+ // entryChunkB: hasChildrenEntrypoint = true
1280
+ // entryChunkA: dependOn = entryChunkB
1281
+ if (hasChildrenEntrypoint) {
1282
+ const entrypointChunk = current.getEntrypointChunk();
1283
+ if (entrypointChunk !== chunk && !entrypointChunk.hasRuntime()) {
1284
+ // add entryChunkB to set
1285
+ set.add(entrypointChunk);
1286
+ }
1287
+ }
1288
+ }
1289
+ }
1290
+ }
1291
+ }
1292
+
1293
+ for (const entrypoint of entrypoints) {
1294
+ const entrypointChunk = entrypoint.getEntrypointChunk();
1295
+ const cgc = this._getChunkGraphChunk(entrypointChunk);
1296
+ for (const chunkGroup of cgc.entryModules.values()) {
1297
+ for (const c of chunkGroup.chunks) {
1298
+ if (c !== chunk && c !== entrypointChunk && !c.hasRuntime()) {
1299
+ set.add(c);
1300
+ }
1301
+ }
1302
+ }
1303
+ }
1304
+ return set;
1305
+ }
1306
+
1234
1307
  /**
1235
1308
  * @param {Chunk} chunk the chunk
1236
1309
  * @returns {boolean} true, when it has dependent chunks
@@ -1262,10 +1335,13 @@ class ChunkGraph {
1262
1335
  */
1263
1336
  getChunkRuntimeModulesInOrder(chunk) {
1264
1337
  const cgc = this._getChunkGraphChunk(chunk);
1265
- const array = Array.from(cgc.runtimeModules);
1338
+ const array = [...cgc.runtimeModules];
1266
1339
  array.sort(
1267
1340
  concatComparators(
1268
- compareSelect(r => /** @type {RuntimeModule} */ (r).stage, compareIds),
1341
+ compareSelect(
1342
+ (r) => /** @type {RuntimeModule} */ (r).stage,
1343
+ compareIds
1344
+ ),
1269
1345
  compareModulesByIdentifier
1270
1346
  )
1271
1347
  );
@@ -1359,15 +1435,15 @@ class ChunkGraph {
1359
1435
 
1360
1436
  /**
1361
1437
  * @param {string} runtime runtime
1362
- * @returns {string | number} the id of the runtime
1438
+ * @returns {RuntimeId} the id of the runtime
1363
1439
  */
1364
1440
  getRuntimeId(runtime) {
1365
- return /** @type {string | number} */ (this._runtimeIds.get(runtime));
1441
+ return /** @type {RuntimeId} */ (this._runtimeIds.get(runtime));
1366
1442
  }
1367
1443
 
1368
1444
  /**
1369
1445
  * @param {string} runtime runtime
1370
- * @param {string | number} id the id of the runtime
1446
+ * @param {RuntimeId} id the id of the runtime
1371
1447
  * @returns {void}
1372
1448
  */
1373
1449
  setRuntimeId(runtime, id) {
@@ -1394,7 +1470,7 @@ class ChunkGraph {
1394
1470
  throw new Error(
1395
1471
  `No unique hash info entry for unspecified runtime for ${module.identifier()} (existing runtimes: ${Array.from(
1396
1472
  hashes.keys(),
1397
- r => runtimeToString(r)
1473
+ (r) => runtimeToString(r)
1398
1474
  ).join(", ")}).
1399
1475
  Caller might not support runtime-dependent code generation (opt-out via optimization.usedExports: "global").`
1400
1476
  );
@@ -1467,7 +1543,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1467
1543
  /**
1468
1544
  * @param {Module} module the module
1469
1545
  * @param {RuntimeSpec} runtime the runtime
1470
- * @param {Set<string>} items runtime requirements to be added (ownership of this Set is given to ChunkGraph when transferOwnership not false)
1546
+ * @param {RuntimeRequirements} items runtime requirements to be added (ownership of this Set is given to ChunkGraph when transferOwnership not false)
1471
1547
  * @param {boolean} transferOwnership true: transfer ownership of the items object, false: items is immutable and shared and won't be modified
1472
1548
  * @returns {void}
1473
1549
  */
@@ -1486,7 +1562,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1486
1562
  cgm.runtimeRequirements = map;
1487
1563
  return;
1488
1564
  }
1489
- runtimeRequirementsMap.update(runtime, runtimeRequirements => {
1565
+ runtimeRequirementsMap.update(runtime, (runtimeRequirements) => {
1490
1566
  if (runtimeRequirements === undefined) {
1491
1567
  return transferOwnership ? items : new Set(items);
1492
1568
  } else if (!transferOwnership || runtimeRequirements.size >= items.size) {
@@ -1501,7 +1577,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1501
1577
 
1502
1578
  /**
1503
1579
  * @param {Chunk} chunk the chunk
1504
- * @param {Set<string>} items runtime requirements to be added (ownership of this Set is given to ChunkGraph)
1580
+ * @param {RuntimeRequirements} items runtime requirements to be added (ownership of this Set is given to ChunkGraph)
1505
1581
  * @returns {void}
1506
1582
  */
1507
1583
  addChunkRuntimeRequirements(chunk, items) {
@@ -1596,7 +1672,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1596
1672
  for (const type of sourceTypes) hash.update(type);
1597
1673
  }
1598
1674
  this.moduleGraph.getExportsInfo(module).updateHash(hash, runtime);
1599
- return BigInt(`0x${/** @type {string} */ (hash.digest("hex"))}`);
1675
+ return BigInt(`0x${hash.digest("hex")}`);
1600
1676
  });
1601
1677
  return graphHash;
1602
1678
  }
@@ -1616,7 +1692,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1616
1692
  * @param {ConnectionState} state state
1617
1693
  * @returns {"F" | "T" | "O"} result
1618
1694
  */
1619
- const activeStateToString = state => {
1695
+ const activeStateToString = (state) => {
1620
1696
  if (state === false) return "F";
1621
1697
  if (state === true) return "T";
1622
1698
  if (state === ModuleGraphConnection.TRANSITIVE_ONLY) return "O";
@@ -1642,8 +1718,9 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1642
1718
  const module = connection.module;
1643
1719
  stateInfo += module.getExportsType(this.moduleGraph, strict);
1644
1720
  // cspell:word Tnamespace
1645
- if (stateInfo === "Tnamespace") activeNamespaceModules.add(module);
1646
- else {
1721
+ if (stateInfo === "Tnamespace") {
1722
+ activeNamespaceModules.add(module);
1723
+ } else {
1647
1724
  const oldModule = connectedModules.get(stateInfo);
1648
1725
  if (oldModule === undefined) {
1649
1726
  connectedModules.set(stateInfo, module);
@@ -1667,7 +1744,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1667
1744
  let stateInfo = "";
1668
1745
  forEachRuntime(
1669
1746
  runtime,
1670
- runtime => {
1747
+ (runtime) => {
1671
1748
  const state = connection.getActiveState(runtime);
1672
1749
  states.add(state);
1673
1750
  stateInfo += activeStateToString(state) + runtime;
@@ -1683,17 +1760,18 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1683
1760
  }
1684
1761
  }
1685
1762
  // cspell:word Tnamespace
1686
- if (activeNamespaceModules.size === 0 && connectedModules.size === 0)
1763
+ if (activeNamespaceModules.size === 0 && connectedModules.size === 0) {
1687
1764
  return graphHash;
1765
+ }
1688
1766
  const connectedModulesInOrder =
1689
1767
  connectedModules.size > 1
1690
- ? Array.from(connectedModules).sort(([a], [b]) => (a < b ? -1 : 1))
1768
+ ? [...connectedModules].sort(([a], [b]) => (a < b ? -1 : 1))
1691
1769
  : connectedModules;
1692
1770
  const hash = createHash(this._hashFunction);
1693
1771
  /**
1694
1772
  * @param {Module} module module
1695
1773
  */
1696
- const addModuleToHash = module => {
1774
+ const addModuleToHash = (module) => {
1697
1775
  hash.update(
1698
1776
  this._getModuleGraphHashBigInt(
1699
1777
  this._getChunkGraphModule(module),
@@ -1705,25 +1783,24 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1705
1783
  /**
1706
1784
  * @param {Set<Module>} modules modules
1707
1785
  */
1708
- const addModulesToHash = modules => {
1786
+ const addModulesToHash = (modules) => {
1709
1787
  let xor = ZERO_BIG_INT;
1710
1788
  for (const m of modules) {
1711
- xor =
1712
- xor ^
1713
- this._getModuleGraphHashBigInt(
1714
- this._getChunkGraphModule(m),
1715
- m,
1716
- runtime
1717
- );
1789
+ xor ^= this._getModuleGraphHashBigInt(
1790
+ this._getChunkGraphModule(m),
1791
+ m,
1792
+ runtime
1793
+ );
1718
1794
  }
1719
1795
  hash.update(xor.toString(16));
1720
1796
  };
1721
- if (activeNamespaceModules.size === 1)
1797
+ if (activeNamespaceModules.size === 1) {
1722
1798
  addModuleToHash(
1723
1799
  /** @type {Module} */ (activeNamespaceModules.values().next().value)
1724
1800
  );
1725
- else if (activeNamespaceModules.size > 1)
1801
+ } else if (activeNamespaceModules.size > 1) {
1726
1802
  addModulesToHash(activeNamespaceModules);
1803
+ }
1727
1804
  for (const [stateInfo, modules] of connectedModulesInOrder) {
1728
1805
  hash.update(stateInfo);
1729
1806
  if (modules instanceof Set) {
@@ -1733,7 +1810,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1733
1810
  }
1734
1811
  }
1735
1812
  hash.update(graphHash);
1736
- return /** @type {string} */ (hash.digest("hex"));
1813
+ return hash.digest("hex");
1737
1814
  });
1738
1815
  }
1739
1816
 
@@ -1761,14 +1838,15 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1761
1838
  * @param {Module} module the module
1762
1839
  * @returns {ChunkGraph} the chunk graph
1763
1840
  */
1764
- module => {
1841
+ (module) => {
1765
1842
  const chunkGraph = chunkGraphForModuleMap.get(module);
1766
- if (!chunkGraph)
1843
+ if (!chunkGraph) {
1767
1844
  throw new Error(
1768
1845
  `${
1769
1846
  deprecateMessage
1770
1847
  }: There was no ChunkGraph assigned to the Module for backward-compat (Use the new API)`
1771
1848
  );
1849
+ }
1772
1850
  return chunkGraph;
1773
1851
  },
1774
1852
  `${deprecateMessage}: Use new ChunkGraph API`,
@@ -1812,14 +1890,15 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1812
1890
  * @param {Chunk} chunk the chunk
1813
1891
  * @returns {ChunkGraph} the chunk graph
1814
1892
  */
1815
- chunk => {
1893
+ (chunk) => {
1816
1894
  const chunkGraph = chunkGraphForChunkMap.get(chunk);
1817
- if (!chunkGraph)
1895
+ if (!chunkGraph) {
1818
1896
  throw new Error(
1819
1897
  `${
1820
1898
  deprecateMessage
1821
1899
  }There was no ChunkGraph assigned to the Chunk for backward-compat (Use the new API)`
1822
1900
  );
1901
+ }
1823
1902
  return chunkGraph;
1824
1903
  },
1825
1904
  `${deprecateMessage}: Use new ChunkGraph API`,