@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
package/lib/ChunkGraph.js CHANGED
@@ -45,12 +45,26 @@ const {
45
45
  /** @typedef {import("./RuntimeModule")} RuntimeModule */
46
46
  /** @typedef {import("./util/Hash").HashFunction} HashFunction */
47
47
  /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
48
+ /** @typedef {import("./javascript/JavascriptModule").JavascriptModuleBuildMeta} JavascriptModuleBuildMeta */
48
49
 
49
50
  /** @type {ReadonlySet<string>} */
50
51
  const EMPTY_SET = new Set();
51
52
 
52
53
  const ZERO_BIG_INT = BigInt(0);
53
54
 
55
+ /**
56
+ * Active state to string. Module-level (depends only on ModuleGraphConnection)
57
+ * so it isn't re-allocated on every getModuleGraphHash call, incl. cache hits.
58
+ * @param {ConnectionState} state state
59
+ * @returns {"F" | "T" | "O"} result
60
+ */
61
+ const activeStateToString = (state) => {
62
+ if (state === false) return "F";
63
+ if (state === true) return "T";
64
+ if (state === ModuleGraphConnection.TRANSITIVE_ONLY) return "O";
65
+ throw new Error("Not implemented active state");
66
+ };
67
+
54
68
  const compareModuleIterables = compareIterables(compareModulesByIdentifier);
55
69
 
56
70
  /** @typedef {(c: Chunk, chunkGraph: ChunkGraph) => boolean} ChunkFilterPredicate */
@@ -58,6 +72,7 @@ const compareModuleIterables = compareIterables(compareModulesByIdentifier);
58
72
  /** @typedef {[Module, Entrypoint | undefined]} EntryModuleWithChunkGroup */
59
73
 
60
74
  /**
75
+ * Represents the module hash info runtime component.
61
76
  * @typedef {object} ChunkSizeOptions
62
77
  * @property {number=} chunkOverhead constant overhead for a chunk
63
78
  * @property {number=} entryChunkMultiplicator multiplicator for initial chunks
@@ -65,6 +80,7 @@ const compareModuleIterables = compareIterables(compareModulesByIdentifier);
65
80
 
66
81
  class ModuleHashInfo {
67
82
  /**
83
+ * Creates an instance of ModuleHashInfo.
68
84
  * @param {string} hash hash
69
85
  * @param {string} renderedHash rendered hash
70
86
  */
@@ -77,6 +93,7 @@ class ModuleHashInfo {
77
93
  }
78
94
 
79
95
  /**
96
+ * Returns set as array.
80
97
  * @template T
81
98
  * @param {SortableSet<T>} set the set
82
99
  * @returns {T[]} set as array
@@ -84,6 +101,7 @@ class ModuleHashInfo {
84
101
  const getArray = (set) => [...set];
85
102
 
86
103
  /**
104
+ * Gets module runtimes.
87
105
  * @param {SortableChunks} chunks the chunks
88
106
  * @returns {RuntimeSpecSet} runtimes
89
107
  */
@@ -96,6 +114,7 @@ const getModuleRuntimes = (chunks) => {
96
114
  };
97
115
 
98
116
  /**
117
+ * Modules by source type.
99
118
  * @param {SourceTypesByModule | undefined} sourceTypesByModule sourceTypesByModule
100
119
  * @returns {ModulesBySourceType} modules by source type
101
120
  */
@@ -133,6 +152,7 @@ const modulesBySourceType = (sourceTypesByModule) => (set) => {
133
152
  const defaultModulesBySourceType = modulesBySourceType(undefined);
134
153
 
135
154
  /**
155
+ * Defines the module set to array function type used by this module.
136
156
  * @typedef {(set: SortableSet<Module>) => Module[]} ModuleSetToArrayFunction
137
157
  */
138
158
 
@@ -143,6 +163,7 @@ const defaultModulesBySourceType = modulesBySourceType(undefined);
143
163
  const createOrderedArrayFunctionMap = new WeakMap();
144
164
 
145
165
  /**
166
+ * Creates an ordered array function.
146
167
  * @template T
147
168
  * @param {ModuleComparator} comparator comparator function
148
169
  * @returns {ModuleSetToArrayFunction} set as ordered array
@@ -159,6 +180,7 @@ const createOrderedArrayFunction = (comparator) => {
159
180
  };
160
181
 
161
182
  /**
183
+ * Returns the size of the modules.
162
184
  * @param {Iterable<Module>} modules the modules to get the count/size of
163
185
  * @returns {number} the size of the modules
164
186
  */
@@ -175,6 +197,7 @@ const getModulesSize = (modules) => {
175
197
  /** @typedef {Record<string, number>} SizesOfModules */
176
198
 
177
199
  /**
200
+ * Gets modules sizes.
178
201
  * @param {Iterable<Module>} modules the sortable Set to get the size of
179
202
  * @returns {SizesOfModules} the sizes of the modules
180
203
  */
@@ -190,6 +213,7 @@ const getModulesSizes = (modules) => {
190
213
  };
191
214
 
192
215
  /**
216
+ * Checks whether this module hash info is available chunk.
193
217
  * @param {Chunk} a chunk
194
218
  * @param {Chunk} b chunk
195
219
  * @returns {boolean} true, if a is always a parent of b
@@ -269,6 +293,7 @@ class ChunkGraphChunk {
269
293
 
270
294
  class ChunkGraph {
271
295
  /**
296
+ * Creates an instance of ChunkGraph.
272
297
  * @param {ModuleGraph} moduleGraph the module graph
273
298
  * @param {HashFunction} hashFunction the hash function to use
274
299
  */
@@ -293,15 +318,24 @@ class ChunkGraph {
293
318
  * @type {Map<string, RuntimeId>}
294
319
  */
295
320
  this._runtimeIds = new Map();
321
+ /**
322
+ * Module runtime requirement Sets stored without copying (ownership not
323
+ * transferred). They must be copied before being mutated.
324
+ * @private
325
+ * @type {WeakSet<RuntimeRequirements>}
326
+ */
327
+ this._sharedModuleRuntimeRequirements = new WeakSet();
296
328
  /** @type {ModuleGraph} */
297
329
  this.moduleGraph = moduleGraph;
298
330
 
331
+ /** @type {HashFunction} */
299
332
  this._hashFunction = hashFunction;
300
333
 
301
334
  this._getGraphRoots = this._getGraphRoots.bind(this);
302
335
  }
303
336
 
304
337
  /**
338
+ * Get chunk graph module.
305
339
  * @private
306
340
  * @param {Module} module the module
307
341
  * @returns {ChunkGraphModule} internal module
@@ -316,6 +350,7 @@ class ChunkGraph {
316
350
  }
317
351
 
318
352
  /**
353
+ * Get chunk graph chunk.
319
354
  * @private
320
355
  * @param {Chunk} chunk the chunk
321
356
  * @returns {ChunkGraphChunk} internal chunk
@@ -330,6 +365,7 @@ class ChunkGraph {
330
365
  }
331
366
 
332
367
  /**
368
+ * Returns the graph roots.
333
369
  * @param {SortableSet<Module>} set the sortable Set to get the roots of
334
370
  * @returns {Module[]} the graph roots
335
371
  */
@@ -340,6 +376,7 @@ class ChunkGraph {
340
376
  /** @type {Set<Module>} */
341
377
  const set = new Set();
342
378
  /**
379
+ * Adds the provided module to the chunk graph.
343
380
  * @param {Module} module module
344
381
  */
345
382
  const addDependencies = (module) => {
@@ -361,6 +398,7 @@ class ChunkGraph {
361
398
  }
362
399
 
363
400
  /**
401
+ * Connects chunk and module.
364
402
  * @param {Chunk} chunk the new chunk
365
403
  * @param {Module} module the module
366
404
  * @returns {void}
@@ -373,6 +411,7 @@ class ChunkGraph {
373
411
  }
374
412
 
375
413
  /**
414
+ * Disconnects chunk and module.
376
415
  * @param {Chunk} chunk the chunk
377
416
  * @param {Module} module the module
378
417
  * @returns {void}
@@ -387,6 +426,7 @@ class ChunkGraph {
387
426
  }
388
427
 
389
428
  /**
429
+ * Processes the provided chunk.
390
430
  * @param {Chunk} chunk the chunk which will be disconnected
391
431
  * @returns {void}
392
432
  */
@@ -402,6 +442,7 @@ class ChunkGraph {
402
442
  }
403
443
 
404
444
  /**
445
+ * Processes the provided chunk.
405
446
  * @param {Chunk} chunk the chunk
406
447
  * @param {Iterable<Module>} modules the modules
407
448
  * @returns {void}
@@ -414,6 +455,7 @@ class ChunkGraph {
414
455
  }
415
456
 
416
457
  /**
458
+ * Attach runtime modules.
417
459
  * @param {Chunk} chunk the chunk
418
460
  * @param {Iterable<RuntimeModule>} modules the runtime modules
419
461
  * @returns {void}
@@ -426,6 +468,7 @@ class ChunkGraph {
426
468
  }
427
469
 
428
470
  /**
471
+ * Attach full hash modules.
429
472
  * @param {Chunk} chunk the chunk
430
473
  * @param {Iterable<RuntimeModule>} modules the modules that require a full hash
431
474
  * @returns {void}
@@ -439,6 +482,7 @@ class ChunkGraph {
439
482
  }
440
483
 
441
484
  /**
485
+ * Attach dependent hash modules.
442
486
  * @param {Chunk} chunk the chunk
443
487
  * @param {Iterable<RuntimeModule>} modules the modules that require a full hash
444
488
  * @returns {void}
@@ -454,6 +498,7 @@ class ChunkGraph {
454
498
  }
455
499
 
456
500
  /**
501
+ * Processes the provided old module.
457
502
  * @param {Module} oldModule the replaced module
458
503
  * @param {Module} newModule the replacing module
459
504
  * @returns {void}
@@ -525,6 +570,7 @@ class ChunkGraph {
525
570
  }
526
571
 
527
572
  /**
573
+ * Checks whether this chunk graph is module in chunk.
528
574
  * @param {Module} module the checked module
529
575
  * @param {Chunk} chunk the checked chunk
530
576
  * @returns {boolean} true, if the chunk contains the module
@@ -535,6 +581,7 @@ class ChunkGraph {
535
581
  }
536
582
 
537
583
  /**
584
+ * Checks whether this chunk graph is module in chunk group.
538
585
  * @param {Module} module the checked module
539
586
  * @param {ChunkGroup} chunkGroup the checked chunk group
540
587
  * @returns {boolean} true, if the chunk contains the module
@@ -547,6 +594,7 @@ class ChunkGraph {
547
594
  }
548
595
 
549
596
  /**
597
+ * Checks whether this chunk graph is entry module.
550
598
  * @param {Module} module the checked module
551
599
  * @returns {boolean} true, if the module is entry of any chunk
552
600
  */
@@ -556,6 +604,7 @@ class ChunkGraph {
556
604
  }
557
605
 
558
606
  /**
607
+ * Gets module chunks iterable.
559
608
  * @param {Module} module the module
560
609
  * @returns {Iterable<Chunk>} iterable of chunks (do not modify)
561
610
  */
@@ -565,6 +614,7 @@ class ChunkGraph {
565
614
  }
566
615
 
567
616
  /**
617
+ * Gets ordered module chunks iterable.
568
618
  * @param {Module} module the module
569
619
  * @param {(a: Chunk, b: Chunk) => -1 | 0 | 1} sortFn sort function
570
620
  * @returns {Iterable<Chunk>} iterable of chunks (do not modify)
@@ -576,6 +626,7 @@ class ChunkGraph {
576
626
  }
577
627
 
578
628
  /**
629
+ * Gets module chunks.
579
630
  * @param {Module} module the module
580
631
  * @returns {Chunk[]} array of chunks (cached, do not modify)
581
632
  */
@@ -585,6 +636,7 @@ class ChunkGraph {
585
636
  }
586
637
 
587
638
  /**
639
+ * Gets number of module chunks.
588
640
  * @param {Module} module the module
589
641
  * @returns {number} the number of chunk which contain the module
590
642
  */
@@ -594,6 +646,7 @@ class ChunkGraph {
594
646
  }
595
647
 
596
648
  /**
649
+ * Gets module runtimes.
597
650
  * @param {Module} module the module
598
651
  * @returns {RuntimeSpecSet} runtimes
599
652
  */
@@ -603,6 +656,7 @@ class ChunkGraph {
603
656
  }
604
657
 
605
658
  /**
659
+ * Gets number of chunk modules.
606
660
  * @param {Chunk} chunk the chunk
607
661
  * @returns {number} the number of modules which are contained in this chunk
608
662
  */
@@ -612,6 +666,7 @@ class ChunkGraph {
612
666
  }
613
667
 
614
668
  /**
669
+ * Gets number of chunk full hash modules.
615
670
  * @param {Chunk} chunk the chunk
616
671
  * @returns {number} the number of full hash modules which are contained in this chunk
617
672
  */
@@ -621,6 +676,7 @@ class ChunkGraph {
621
676
  }
622
677
 
623
678
  /**
679
+ * Gets chunk modules iterable.
624
680
  * @param {Chunk} chunk the chunk
625
681
  * @returns {Iterable<Module>} return the modules for this chunk
626
682
  */
@@ -630,6 +686,7 @@ class ChunkGraph {
630
686
  }
631
687
 
632
688
  /**
689
+ * Gets chunk modules iterable by source type.
633
690
  * @param {Chunk} chunk the chunk
634
691
  * @param {string} sourceType source type
635
692
  * @returns {Iterable<Module> | undefined} return the modules for this chunk
@@ -643,6 +700,7 @@ class ChunkGraph {
643
700
  }
644
701
 
645
702
  /**
703
+ * Sets chunk module source types.
646
704
  * @param {Chunk} chunk chunk
647
705
  * @param {Module} module chunk module
648
706
  * @param {SourceTypes} sourceTypes source types
@@ -658,6 +716,7 @@ class ChunkGraph {
658
716
  }
659
717
 
660
718
  /**
719
+ * Gets chunk module source types.
661
720
  * @param {Chunk} chunk chunk
662
721
  * @param {Module} module chunk module
663
722
  * @returns {SourceTypes} source types
@@ -671,6 +730,7 @@ class ChunkGraph {
671
730
  }
672
731
 
673
732
  /**
733
+ * Gets module source types.
674
734
  * @param {Module} module module
675
735
  * @returns {SourceTypes} source types
676
736
  */
@@ -681,6 +741,7 @@ class ChunkGraph {
681
741
  }
682
742
 
683
743
  /**
744
+ * Get overwritten module source types.
684
745
  * @param {Module} module module
685
746
  * @returns {SourceTypes | undefined} source types
686
747
  */
@@ -716,6 +777,7 @@ class ChunkGraph {
716
777
  }
717
778
 
718
779
  /**
780
+ * Gets ordered chunk modules iterable.
719
781
  * @param {Chunk} chunk the chunk
720
782
  * @param {ModuleComparator} comparator comparator function
721
783
  * @returns {Iterable<Module>} return the modules for this chunk
@@ -727,6 +789,7 @@ class ChunkGraph {
727
789
  }
728
790
 
729
791
  /**
792
+ * Gets ordered chunk modules iterable by source type.
730
793
  * @param {Chunk} chunk the chunk
731
794
  * @param {string} sourceType source type
732
795
  * @param {ModuleComparator} comparator comparator function
@@ -743,6 +806,7 @@ class ChunkGraph {
743
806
  }
744
807
 
745
808
  /**
809
+ * Gets chunk modules.
746
810
  * @param {Chunk} chunk the chunk
747
811
  * @returns {Module[]} return the modules for this chunk (cached, do not modify)
748
812
  */
@@ -752,6 +816,7 @@ class ChunkGraph {
752
816
  }
753
817
 
754
818
  /**
819
+ * Gets ordered chunk modules.
755
820
  * @param {Chunk} chunk the chunk
756
821
  * @param {ModuleComparator} comparator comparator function
757
822
  * @returns {Module[]} return the modules for this chunk (cached, do not modify)
@@ -763,6 +828,7 @@ class ChunkGraph {
763
828
  }
764
829
 
765
830
  /**
831
+ * Gets chunk module id map.
766
832
  * @param {Chunk} chunk the chunk
767
833
  * @param {ModuleFilterPredicate} filterFn function used to filter modules
768
834
  * @param {boolean} includeAllChunks all chunks or only async chunks
@@ -796,6 +862,7 @@ class ChunkGraph {
796
862
  }
797
863
 
798
864
  /**
865
+ * Gets chunk module rendered hash map.
799
866
  * @param {Chunk} chunk the chunk
800
867
  * @param {ModuleFilterPredicate} filterFn function used to filter modules
801
868
  * @param {number} hashLength length of the hash
@@ -842,6 +909,7 @@ class ChunkGraph {
842
909
  }
843
910
 
844
911
  /**
912
+ * Gets chunk condition map.
845
913
  * @param {Chunk} chunk the chunk
846
914
  * @param {ChunkFilterPredicate} filterFn function used to filter chunks
847
915
  * @returns {ChunkConditionMap} chunk condition map
@@ -856,6 +924,7 @@ class ChunkGraph {
856
924
  }
857
925
 
858
926
  /**
927
+ * Checks whether this chunk graph contains the chunk.
859
928
  * @param {Chunk} chunk the chunk
860
929
  * @param {ModuleFilterPredicate} filterFn predicate function used to filter modules
861
930
  * @param {ChunkFilterPredicate=} filterChunkFn predicate function used to filter chunks
@@ -887,6 +956,7 @@ class ChunkGraph {
887
956
  }
888
957
 
889
958
  /**
959
+ * Compares the provided values and returns their ordering.
890
960
  * @param {Chunk} chunkA first chunk
891
961
  * @param {Chunk} chunkB second chunk
892
962
  * @returns {-1 | 0 | 1} this is a comparator function like sort and returns -1, 0, or 1 based on sort order
@@ -902,6 +972,7 @@ class ChunkGraph {
902
972
  }
903
973
 
904
974
  /**
975
+ * Gets chunk modules size.
905
976
  * @param {Chunk} chunk the chunk
906
977
  * @returns {number} total size of all modules in the chunk
907
978
  */
@@ -911,6 +982,7 @@ class ChunkGraph {
911
982
  }
912
983
 
913
984
  /**
985
+ * Gets chunk modules sizes.
914
986
  * @param {Chunk} chunk the chunk
915
987
  * @returns {Record<string, number>} total sizes of all modules in the chunk by source type
916
988
  */
@@ -920,6 +992,7 @@ class ChunkGraph {
920
992
  }
921
993
 
922
994
  /**
995
+ * Gets chunk root modules.
923
996
  * @param {Chunk} chunk the chunk
924
997
  * @returns {Module[]} root modules of the chunks (ordered by identifier)
925
998
  */
@@ -929,6 +1002,7 @@ class ChunkGraph {
929
1002
  }
930
1003
 
931
1004
  /**
1005
+ * Returns total size of the chunk.
932
1006
  * @param {Chunk} chunk the chunk
933
1007
  * @param {ChunkSizeOptions} options options object
934
1008
  * @returns {number} total size of the chunk
@@ -949,6 +1023,7 @@ class ChunkGraph {
949
1023
  }
950
1024
 
951
1025
  /**
1026
+ * Gets integrated chunks size.
952
1027
  * @param {Chunk} chunkA chunk
953
1028
  * @param {Chunk} chunkB chunk
954
1029
  * @param {ChunkSizeOptions} options options object
@@ -976,6 +1051,7 @@ class ChunkGraph {
976
1051
  }
977
1052
 
978
1053
  /**
1054
+ * Checks whether it can chunks be integrated.
979
1055
  * @param {Chunk} chunkA chunk
980
1056
  * @param {Chunk} chunkB chunk
981
1057
  * @returns {boolean} true, if chunks could be integrated
@@ -1009,6 +1085,7 @@ class ChunkGraph {
1009
1085
  }
1010
1086
 
1011
1087
  /**
1088
+ * Processes the provided chunk a.
1012
1089
  * @param {Chunk} chunkA the target chunk
1013
1090
  * @param {Chunk} chunkB the chunk to integrate
1014
1091
  * @returns {void}
@@ -1072,6 +1149,7 @@ class ChunkGraph {
1072
1149
  }
1073
1150
 
1074
1151
  /**
1152
+ * Upgrade dependent to full hash modules.
1075
1153
  * @param {Chunk} chunk the chunk to upgrade
1076
1154
  * @returns {void}
1077
1155
  */
@@ -1089,6 +1167,7 @@ class ChunkGraph {
1089
1167
  }
1090
1168
 
1091
1169
  /**
1170
+ * Checks whether this chunk graph is entry module in chunk.
1092
1171
  * @param {Module} module the checked module
1093
1172
  * @param {Chunk} chunk the checked chunk
1094
1173
  * @returns {boolean} true, if the chunk contains the module as entry
@@ -1099,6 +1178,7 @@ class ChunkGraph {
1099
1178
  }
1100
1179
 
1101
1180
  /**
1181
+ * Connects chunk and entry module.
1102
1182
  * @param {Chunk} chunk the new chunk
1103
1183
  * @param {Module} module the entry module
1104
1184
  * @param {Entrypoint} entrypoint the chunk group which must be loaded before the module is executed
@@ -1115,6 +1195,7 @@ class ChunkGraph {
1115
1195
  }
1116
1196
 
1117
1197
  /**
1198
+ * Connects chunk and runtime module.
1118
1199
  * @param {Chunk} chunk the new chunk
1119
1200
  * @param {RuntimeModule} module the runtime module
1120
1201
  * @returns {void}
@@ -1130,6 +1211,7 @@ class ChunkGraph {
1130
1211
  }
1131
1212
 
1132
1213
  /**
1214
+ * Adds full hash module to chunk.
1133
1215
  * @param {Chunk} chunk the new chunk
1134
1216
  * @param {RuntimeModule} module the module that require a full hash
1135
1217
  * @returns {void}
@@ -1141,6 +1223,7 @@ class ChunkGraph {
1141
1223
  }
1142
1224
 
1143
1225
  /**
1226
+ * Adds dependent hash module to chunk.
1144
1227
  * @param {Chunk} chunk the new chunk
1145
1228
  * @param {RuntimeModule} module the module that require a full hash
1146
1229
  * @returns {void}
@@ -1154,6 +1237,7 @@ class ChunkGraph {
1154
1237
  }
1155
1238
 
1156
1239
  /**
1240
+ * Disconnects chunk and entry module.
1157
1241
  * @param {Chunk} chunk the new chunk
1158
1242
  * @param {Module} module the entry module
1159
1243
  * @returns {void}
@@ -1170,6 +1254,7 @@ class ChunkGraph {
1170
1254
  }
1171
1255
 
1172
1256
  /**
1257
+ * Disconnects chunk and runtime module.
1173
1258
  * @param {Chunk} chunk the new chunk
1174
1259
  * @param {RuntimeModule} module the runtime module
1175
1260
  * @returns {void}
@@ -1186,6 +1271,7 @@ class ChunkGraph {
1186
1271
  }
1187
1272
 
1188
1273
  /**
1274
+ * Disconnects entry module.
1189
1275
  * @param {Module} module the entry module, it will no longer be entry
1190
1276
  * @returns {void}
1191
1277
  */
@@ -1199,6 +1285,7 @@ class ChunkGraph {
1199
1285
  }
1200
1286
 
1201
1287
  /**
1288
+ * Disconnects entries.
1202
1289
  * @param {Chunk} chunk the chunk, for which all entries will be removed
1203
1290
  * @returns {void}
1204
1291
  */
@@ -1216,6 +1303,7 @@ class ChunkGraph {
1216
1303
  }
1217
1304
 
1218
1305
  /**
1306
+ * Gets number of entry modules.
1219
1307
  * @param {Chunk} chunk the chunk
1220
1308
  * @returns {number} the amount of entry modules in chunk
1221
1309
  */
@@ -1225,6 +1313,7 @@ class ChunkGraph {
1225
1313
  }
1226
1314
 
1227
1315
  /**
1316
+ * Gets number of runtime modules.
1228
1317
  * @param {Chunk} chunk the chunk
1229
1318
  * @returns {number} the amount of entry modules in chunk
1230
1319
  */
@@ -1234,6 +1323,7 @@ class ChunkGraph {
1234
1323
  }
1235
1324
 
1236
1325
  /**
1326
+ * Gets chunk entry modules iterable.
1237
1327
  * @param {Chunk} chunk the chunk
1238
1328
  * @returns {Iterable<Module>} iterable of modules (do not modify)
1239
1329
  */
@@ -1243,6 +1333,7 @@ class ChunkGraph {
1243
1333
  }
1244
1334
 
1245
1335
  /**
1336
+ * Gets chunk entry dependent chunks iterable.
1246
1337
  * @param {Chunk} chunk the chunk
1247
1338
  * @returns {Iterable<Chunk>} iterable of chunks
1248
1339
  */
@@ -1267,6 +1358,7 @@ class ChunkGraph {
1267
1358
  }
1268
1359
 
1269
1360
  /**
1361
+ * Gets runtime chunk dependent chunks iterable.
1270
1362
  * @param {Chunk} chunk the chunk
1271
1363
  * @returns {Iterable<Chunk>} iterable of chunks and include chunks from children entrypoints
1272
1364
  */
@@ -1321,6 +1413,7 @@ class ChunkGraph {
1321
1413
  }
1322
1414
 
1323
1415
  /**
1416
+ * Checks whether this chunk graph contains the chunk.
1324
1417
  * @param {Chunk} chunk the chunk
1325
1418
  * @returns {boolean} true, when it has dependent chunks
1326
1419
  */
@@ -1337,6 +1430,7 @@ class ChunkGraph {
1337
1430
  }
1338
1431
 
1339
1432
  /**
1433
+ * Gets chunk runtime modules iterable.
1340
1434
  * @param {Chunk} chunk the chunk
1341
1435
  * @returns {Iterable<RuntimeModule>} iterable of modules (do not modify)
1342
1436
  */
@@ -1346,6 +1440,7 @@ class ChunkGraph {
1346
1440
  }
1347
1441
 
1348
1442
  /**
1443
+ * Gets chunk runtime modules in order.
1349
1444
  * @param {Chunk} chunk the chunk
1350
1445
  * @returns {RuntimeModule[]} array of modules in order of execution
1351
1446
  */
@@ -1365,6 +1460,7 @@ class ChunkGraph {
1365
1460
  }
1366
1461
 
1367
1462
  /**
1463
+ * Gets chunk full hash modules iterable.
1368
1464
  * @param {Chunk} chunk the chunk
1369
1465
  * @returns {Iterable<RuntimeModule> | undefined} iterable of modules (do not modify)
1370
1466
  */
@@ -1374,6 +1470,7 @@ class ChunkGraph {
1374
1470
  }
1375
1471
 
1376
1472
  /**
1473
+ * Gets chunk full hash modules set.
1377
1474
  * @param {Chunk} chunk the chunk
1378
1475
  * @returns {ReadonlySet<RuntimeModule> | undefined} set of modules (do not modify)
1379
1476
  */
@@ -1383,6 +1480,7 @@ class ChunkGraph {
1383
1480
  }
1384
1481
 
1385
1482
  /**
1483
+ * Gets chunk dependent hash modules iterable.
1386
1484
  * @param {Chunk} chunk the chunk
1387
1485
  * @returns {Iterable<RuntimeModule> | undefined} iterable of modules (do not modify)
1388
1486
  */
@@ -1392,6 +1490,7 @@ class ChunkGraph {
1392
1490
  }
1393
1491
 
1394
1492
  /**
1493
+ * Gets chunk entry modules with chunk group iterable.
1395
1494
  * @param {Chunk} chunk the chunk
1396
1495
  * @returns {Iterable<EntryModuleWithChunkGroup>} iterable of modules (do not modify)
1397
1496
  */
@@ -1401,6 +1500,7 @@ class ChunkGraph {
1401
1500
  }
1402
1501
 
1403
1502
  /**
1503
+ * Gets block chunk group.
1404
1504
  * @param {AsyncDependenciesBlock} depBlock the async block
1405
1505
  * @returns {ChunkGroup | undefined} the chunk group
1406
1506
  */
@@ -1409,6 +1509,7 @@ class ChunkGraph {
1409
1509
  }
1410
1510
 
1411
1511
  /**
1512
+ * Connects block and chunk group.
1412
1513
  * @param {AsyncDependenciesBlock} depBlock the async block
1413
1514
  * @param {ChunkGroup} chunkGroup the chunk group
1414
1515
  * @returns {void}
@@ -1419,6 +1520,7 @@ class ChunkGraph {
1419
1520
  }
1420
1521
 
1421
1522
  /**
1523
+ * Disconnects chunk group.
1422
1524
  * @param {ChunkGroup} chunkGroup the chunk group
1423
1525
  * @returns {void}
1424
1526
  */
@@ -1431,6 +1533,7 @@ class ChunkGraph {
1431
1533
  }
1432
1534
 
1433
1535
  /**
1536
+ * Returns the id of the module.
1434
1537
  * @param {Module} module the module
1435
1538
  * @returns {ModuleId | null} the id of the module
1436
1539
  */
@@ -1440,6 +1543,7 @@ class ChunkGraph {
1440
1543
  }
1441
1544
 
1442
1545
  /**
1546
+ * Updates module id using the provided module.
1443
1547
  * @param {Module} module the module
1444
1548
  * @param {ModuleId} id the id of the module
1445
1549
  * @returns {void}
@@ -1450,6 +1554,7 @@ class ChunkGraph {
1450
1554
  }
1451
1555
 
1452
1556
  /**
1557
+ * Returns the id of the runtime.
1453
1558
  * @param {string} runtime runtime
1454
1559
  * @returns {RuntimeId} the id of the runtime
1455
1560
  */
@@ -1458,6 +1563,7 @@ class ChunkGraph {
1458
1563
  }
1459
1564
 
1460
1565
  /**
1566
+ * Updates runtime id using the provided runtime.
1461
1567
  * @param {string} runtime runtime
1462
1568
  * @param {RuntimeId} id the id of the runtime
1463
1569
  * @returns {void}
@@ -1467,6 +1573,7 @@ class ChunkGraph {
1467
1573
  }
1468
1574
 
1469
1575
  /**
1576
+ * Get module hash info.
1470
1577
  * @template T
1471
1578
  * @param {Module} module the module
1472
1579
  * @param {RuntimeSpecMap<T>} hashes hashes data
@@ -1509,6 +1616,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1509
1616
  }
1510
1617
 
1511
1618
  /**
1619
+ * Checks whether this chunk graph contains the module.
1512
1620
  * @param {Module} module the module
1513
1621
  * @param {RuntimeSpec} runtime the runtime
1514
1622
  * @returns {boolean} true, if the module has hashes for this runtime
@@ -1520,6 +1628,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1520
1628
  }
1521
1629
 
1522
1630
  /**
1631
+ * Returns hash.
1523
1632
  * @param {Module} module the module
1524
1633
  * @param {RuntimeSpec} runtime the runtime
1525
1634
  * @returns {string} hash
@@ -1531,6 +1640,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1531
1640
  }
1532
1641
 
1533
1642
  /**
1643
+ * Gets rendered module hash.
1534
1644
  * @param {Module} module the module
1535
1645
  * @param {RuntimeSpec} runtime the runtime
1536
1646
  * @returns {string} hash
@@ -1542,6 +1652,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1542
1652
  }
1543
1653
 
1544
1654
  /**
1655
+ * Sets module hashes.
1545
1656
  * @param {Module} module the module
1546
1657
  * @param {RuntimeSpec} runtime the runtime
1547
1658
  * @param {string} hash the full hash
@@ -1557,6 +1668,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1557
1668
  }
1558
1669
 
1559
1670
  /**
1671
+ * Adds module runtime requirements.
1560
1672
  * @param {Module} module the module
1561
1673
  * @param {RuntimeSpec} runtime the runtime
1562
1674
  * @param {RuntimeRequirements} items runtime requirements to be added (ownership of this Set is given to ChunkGraph when transferOwnership not false)
@@ -1571,28 +1683,38 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1571
1683
  ) {
1572
1684
  const cgm = this._getChunkGraphModule(module);
1573
1685
  const runtimeRequirementsMap = cgm.runtimeRequirements;
1686
+ if (!transferOwnership) this._sharedModuleRuntimeRequirements.add(items);
1574
1687
  if (runtimeRequirementsMap === undefined) {
1575
1688
  /** @type {ChunkGraphRuntimeRequirements} */
1576
1689
  const map = new RuntimeSpecMap();
1577
- // TODO avoid cloning item and track ownership instead
1578
- map.set(runtime, transferOwnership ? items : new Set(items));
1690
+ map.set(runtime, items);
1579
1691
  cgm.runtimeRequirements = map;
1580
1692
  return;
1581
1693
  }
1582
1694
  runtimeRequirementsMap.update(runtime, (runtimeRequirements) => {
1583
- if (runtimeRequirements === undefined) {
1584
- return transferOwnership ? items : new Set(items);
1585
- } else if (!transferOwnership || runtimeRequirements.size >= items.size) {
1695
+ if (runtimeRequirements === undefined) return items;
1696
+ const owned =
1697
+ !this._sharedModuleRuntimeRequirements.has(runtimeRequirements);
1698
+ // Merge into whichever owned Set is larger; otherwise copy-on-write.
1699
+ if (owned && runtimeRequirements.size >= items.size) {
1700
+ for (const item of items) runtimeRequirements.add(item);
1701
+ return runtimeRequirements;
1702
+ } else if (transferOwnership) {
1703
+ for (const item of runtimeRequirements) items.add(item);
1704
+ this._sharedModuleRuntimeRequirements.delete(items);
1705
+ return items;
1706
+ } else if (owned) {
1586
1707
  for (const item of items) runtimeRequirements.add(item);
1587
1708
  return runtimeRequirements;
1588
1709
  }
1589
-
1590
- for (const item of runtimeRequirements) items.add(item);
1591
- return items;
1710
+ const merged = new Set(runtimeRequirements);
1711
+ for (const item of items) merged.add(item);
1712
+ return merged;
1592
1713
  });
1593
1714
  }
1594
1715
 
1595
1716
  /**
1717
+ * Adds chunk runtime requirements.
1596
1718
  * @param {Chunk} chunk the chunk
1597
1719
  * @param {RuntimeRequirements} items runtime requirements to be added (ownership of this Set is given to ChunkGraph)
1598
1720
  * @returns {void}
@@ -1611,6 +1733,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1611
1733
  }
1612
1734
 
1613
1735
  /**
1736
+ * Adds tree runtime requirements.
1614
1737
  * @param {Chunk} chunk the chunk
1615
1738
  * @param {Iterable<string>} items runtime requirements to be added
1616
1739
  * @returns {void}
@@ -1622,6 +1745,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1622
1745
  }
1623
1746
 
1624
1747
  /**
1748
+ * Gets module runtime requirements.
1625
1749
  * @param {Module} module the module
1626
1750
  * @param {RuntimeSpec} runtime the runtime
1627
1751
  * @returns {ReadOnlyRuntimeRequirements} runtime requirements
@@ -1634,6 +1758,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1634
1758
  }
1635
1759
 
1636
1760
  /**
1761
+ * Gets chunk runtime requirements.
1637
1762
  * @param {Chunk} chunk the chunk
1638
1763
  * @returns {ReadOnlyRuntimeRequirements} runtime requirements
1639
1764
  */
@@ -1644,6 +1769,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1644
1769
  }
1645
1770
 
1646
1771
  /**
1772
+ * Gets module graph hash.
1647
1773
  * @param {Module} module the module
1648
1774
  * @param {RuntimeSpec} runtime the runtime
1649
1775
  * @param {boolean} withConnections include connections
@@ -1657,6 +1783,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1657
1783
  }
1658
1784
 
1659
1785
  /**
1786
+ * Gets module graph hash big int.
1660
1787
  * @param {Module} module the module
1661
1788
  * @param {RuntimeSpec} runtime the runtime
1662
1789
  * @param {boolean} withConnections include connections
@@ -1672,6 +1799,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1672
1799
  }
1673
1800
 
1674
1801
  /**
1802
+ * Get module graph hash big int.
1675
1803
  * @param {ChunkGraphModule} cgm the ChunkGraphModule
1676
1804
  * @param {Module} module the module
1677
1805
  * @param {RuntimeSpec} runtime the runtime
@@ -1695,6 +1823,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1695
1823
  }
1696
1824
 
1697
1825
  /**
1826
+ * Get module graph hash with connections.
1698
1827
  * @param {ChunkGraphModule} cgm the ChunkGraphModule
1699
1828
  * @param {Module} module the module
1700
1829
  * @param {RuntimeSpec} runtime the runtime
@@ -1705,18 +1834,11 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1705
1834
  cgm.graphHashesWithConnections = new RuntimeSpecMap();
1706
1835
  }
1707
1836
 
1708
- /**
1709
- * @param {ConnectionState} state state
1710
- * @returns {"F" | "T" | "O"} result
1711
- */
1712
- const activeStateToString = (state) => {
1713
- if (state === false) return "F";
1714
- if (state === true) return "T";
1715
- if (state === ModuleGraphConnection.TRANSITIVE_ONLY) return "O";
1716
- throw new Error("Not implemented active state");
1717
- };
1718
- const strict = module.buildMeta && module.buildMeta.strictHarmonyModule;
1719
1837
  return cgm.graphHashesWithConnections.provide(runtime, () => {
1838
+ const strict =
1839
+ module.buildMeta &&
1840
+ /** @type {JavascriptModuleBuildMeta} */ (module.buildMeta)
1841
+ .strictHarmonyModule;
1720
1842
  const graphHash = this._getModuleGraphHashBigInt(
1721
1843
  cgm,
1722
1844
  module,
@@ -1728,6 +1850,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1728
1850
  /** @type {Map<string, Module | Set<Module>>} */
1729
1851
  const connectedModules = new Map();
1730
1852
  /**
1853
+ * Process connection.
1731
1854
  * @param {ModuleGraphConnection} connection connection
1732
1855
  * @param {string} stateInfo state info
1733
1856
  */
@@ -1790,6 +1913,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1790
1913
  : connectedModules;
1791
1914
  const hash = createHash(this._hashFunction);
1792
1915
  /**
1916
+ * Adds module to hash.
1793
1917
  * @param {Module} module module
1794
1918
  */
1795
1919
  const addModuleToHash = (module) => {
@@ -1802,6 +1926,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1802
1926
  );
1803
1927
  };
1804
1928
  /**
1929
+ * Adds modules to hash.
1805
1930
  * @param {Set<Module>} modules modules
1806
1931
  */
1807
1932
  const addModulesToHash = (modules) => {
@@ -1836,6 +1961,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1836
1961
  }
1837
1962
 
1838
1963
  /**
1964
+ * Gets tree runtime requirements.
1839
1965
  * @param {Chunk} chunk the chunk
1840
1966
  * @returns {ReadOnlyRuntimeRequirements} runtime requirements
1841
1967
  */
@@ -1846,6 +1972,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1846
1972
 
1847
1973
  // TODO remove in webpack 6
1848
1974
  /**
1975
+ * Gets chunk graph for module.
1849
1976
  * @deprecated
1850
1977
  * @param {Module} module the module
1851
1978
  * @param {string} deprecateMessage message for the deprecation message
@@ -1857,6 +1984,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1857
1984
  if (fn) return fn(module);
1858
1985
  const newFn = util.deprecate(
1859
1986
  /**
1987
+ * Handles the callback logic for this hook.
1860
1988
  * @param {Module} module the module
1861
1989
  * @returns {ChunkGraph} the chunk graph
1862
1990
  */
@@ -1881,6 +2009,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1881
2009
  // TODO remove in webpack 6
1882
2010
  // BACKWARD-COMPAT START
1883
2011
  /**
2012
+ * Sets chunk graph for module.
1884
2013
  * @deprecated
1885
2014
  * @param {Module} module the module
1886
2015
  * @param {ChunkGraph} chunkGraph the chunk graph
@@ -1891,6 +2020,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1891
2020
  }
1892
2021
 
1893
2022
  /**
2023
+ * Clear chunk graph for module.
1894
2024
  * @deprecated
1895
2025
  * @param {Module} module the module
1896
2026
  * @returns {void}
@@ -1900,6 +2030,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1900
2030
  }
1901
2031
 
1902
2032
  /**
2033
+ * Gets chunk graph for chunk.
1903
2034
  * @deprecated
1904
2035
  * @param {Chunk} chunk the chunk
1905
2036
  * @param {string} deprecateMessage message for the deprecation message
@@ -1911,6 +2042,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1911
2042
  if (fn) return fn(chunk);
1912
2043
  const newFn = util.deprecate(
1913
2044
  /**
2045
+ * Handles the callback logic for this hook.
1914
2046
  * @param {Chunk} chunk the chunk
1915
2047
  * @returns {ChunkGraph} the chunk graph
1916
2048
  */
@@ -1933,6 +2065,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1933
2065
  }
1934
2066
 
1935
2067
  /**
2068
+ * Sets chunk graph for chunk.
1936
2069
  * @deprecated
1937
2070
  * @param {Chunk} chunk the chunk
1938
2071
  * @param {ChunkGraph} chunkGraph the chunk graph
@@ -1943,6 +2076,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1943
2076
  }
1944
2077
 
1945
2078
  /**
2079
+ * Clear chunk graph for chunk.
1946
2080
  * @deprecated
1947
2081
  * @param {Chunk} chunk the chunk
1948
2082
  * @returns {void}