@depup/webpack 5.106.0-depup.0 → 5.109.0-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 (667) hide show
  1. package/README.md +9 -11
  2. package/changes.json +16 -24
  3. package/hot/dev-server.js +2 -0
  4. package/lib/APIPlugin.js +60 -35
  5. package/lib/AsyncDependenciesBlock.js +3 -0
  6. package/lib/AutomaticPrefetchPlugin.js +6 -1
  7. package/lib/BannerPlugin.js +13 -5
  8. package/lib/Cache.js +27 -5
  9. package/lib/CacheFacade.js +41 -0
  10. package/lib/Chunk.js +71 -25
  11. package/lib/ChunkGraph.js +141 -9
  12. package/lib/ChunkGroup.js +115 -28
  13. package/lib/ChunkTemplate.js +9 -0
  14. package/lib/CircularModulesPlugin.js +190 -0
  15. package/lib/CleanPlugin.js +23 -26
  16. package/lib/CodeGenerationResults.js +19 -0
  17. package/lib/CompatibilityPlugin.js +54 -37
  18. package/lib/Compilation.js +635 -107
  19. package/lib/Compiler.js +93 -31
  20. package/lib/ConcatenationScope.js +34 -4
  21. package/lib/ConditionalInitFragment.js +6 -0
  22. package/lib/ConstPlugin.js +15 -12
  23. package/lib/ContextExclusionPlugin.js +3 -1
  24. package/lib/ContextModule.js +345 -55
  25. package/lib/ContextModuleFactory.js +193 -51
  26. package/lib/ContextReplacementPlugin.js +8 -1
  27. package/lib/DefinePlugin.js +498 -127
  28. package/lib/DependenciesBlock.js +6 -1
  29. package/lib/Dependency.js +159 -11
  30. package/lib/DependencyTemplate.js +7 -1
  31. package/lib/DependencyTemplates.js +4 -0
  32. package/lib/DotenvPlugin.js +3 -0
  33. package/lib/DynamicEntryPlugin.js +3 -1
  34. package/lib/EntryOptionPlugin.js +42 -2
  35. package/lib/EntryPlugin.js +4 -1
  36. package/lib/Entrypoint.js +5 -1
  37. package/lib/EnvironmentPlugin.js +3 -2
  38. package/lib/ErrorHelpers.js +7 -0
  39. package/lib/EvalDevToolModulePlugin.js +3 -1
  40. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  41. package/lib/ExportsInfo.js +399 -108
  42. package/lib/ExportsInfoApiPlugin.js +4 -3
  43. package/lib/ExternalModule.js +376 -78
  44. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  45. package/lib/ExternalsPlugin.js +3 -1
  46. package/lib/FileSystemInfo.js +575 -149
  47. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  48. package/lib/FlagDependencyExportsPlugin.js +82 -9
  49. package/lib/FlagDependencyUsagePlugin.js +92 -6
  50. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  51. package/lib/Generator.js +24 -3
  52. package/lib/HotModuleReplacementPlugin.js +110 -44
  53. package/lib/IgnorePlugin.js +5 -2
  54. package/lib/IgnoreWarningsPlugin.js +2 -1
  55. package/lib/InitFragment.js +15 -0
  56. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  57. package/lib/LazyBarrel.js +389 -0
  58. package/lib/LibraryTemplatePlugin.js +2 -1
  59. package/lib/LoaderOptionsPlugin.js +3 -1
  60. package/lib/LoaderTargetPlugin.js +3 -1
  61. package/lib/MainTemplate.js +15 -0
  62. package/lib/ManifestPlugin.js +9 -2
  63. package/lib/Module.js +121 -60
  64. package/lib/ModuleFactory.js +6 -1
  65. package/lib/ModuleFilenameHelpers.js +5 -2
  66. package/lib/ModuleGraph.js +69 -2
  67. package/lib/ModuleGraphConnection.js +9 -0
  68. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  69. package/lib/ModuleNotFoundError.js +3 -83
  70. package/lib/ModuleProfile.js +27 -1
  71. package/lib/ModuleSourceTypeConstants.js +52 -19
  72. package/lib/ModuleTemplate.js +10 -0
  73. package/lib/ModuleTypeConstants.js +20 -4
  74. package/lib/MultiCompiler.js +59 -4
  75. package/lib/MultiStats.js +9 -0
  76. package/lib/MultiWatching.js +6 -0
  77. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  78. package/lib/NodeStuffPlugin.js +78 -46
  79. package/lib/NormalModule.js +485 -181
  80. package/lib/NormalModuleFactory.js +148 -29
  81. package/lib/NormalModuleReplacementPlugin.js +3 -1
  82. package/lib/NullFactory.js +1 -0
  83. package/lib/OptionsApply.js +1 -0
  84. package/lib/Parser.js +3 -1
  85. package/lib/PlatformPlugin.js +2 -1
  86. package/lib/PrefetchPlugin.js +4 -1
  87. package/lib/ProgressPlugin.js +351 -161
  88. package/lib/ProvidePlugin.js +6 -3
  89. package/lib/RawModule.js +32 -16
  90. package/lib/RecordIdsPlugin.js +9 -0
  91. package/lib/RequestShortener.js +8 -0
  92. package/lib/ResolverFactory.js +5 -0
  93. package/lib/RuntimeGlobals.js +58 -5
  94. package/lib/RuntimeModule.js +22 -7
  95. package/lib/RuntimePlugin.js +104 -26
  96. package/lib/RuntimeTemplate.js +616 -37
  97. package/lib/SelfModuleFactory.js +3 -0
  98. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  99. package/lib/SourceMapDevToolPlugin.js +341 -63
  100. package/lib/Stats.js +6 -0
  101. package/lib/Template.js +29 -3
  102. package/lib/TemplatedPathPlugin.js +505 -138
  103. package/lib/UseStrictPlugin.js +3 -2
  104. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  105. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  106. package/lib/WarnNoModeSetPlugin.js +18 -2
  107. package/lib/WatchIgnorePlugin.js +5 -1
  108. package/lib/Watching.js +25 -3
  109. package/lib/WebpackError.js +3 -74
  110. package/lib/WebpackIsIncludedPlugin.js +4 -2
  111. package/lib/WebpackOptionsApply.js +88 -25
  112. package/lib/WebpackOptionsDefaulter.js +1 -0
  113. package/lib/asset/AssetBytesGenerator.js +28 -10
  114. package/lib/asset/AssetBytesParser.js +1 -0
  115. package/lib/asset/AssetGenerator.js +199 -60
  116. package/lib/asset/AssetModule.js +47 -0
  117. package/lib/asset/AssetModulesPlugin.js +115 -24
  118. package/lib/asset/AssetParser.js +4 -2
  119. package/lib/asset/AssetSourceGenerator.js +26 -8
  120. package/lib/asset/AssetSourceParser.js +1 -0
  121. package/lib/asset/RawDataUrlModule.js +23 -13
  122. package/lib/asset/WebManifestGenerator.js +164 -0
  123. package/lib/asset/WebManifestParser.js +130 -0
  124. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  125. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  126. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  127. package/lib/async-modules/isGeneratorLowered.js +26 -0
  128. package/lib/buildChunkGraph.js +107 -15
  129. package/lib/bun/BunTargetPlugin.js +42 -0
  130. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  131. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  132. package/lib/cache/IdleFileCachePlugin.js +6 -1
  133. package/lib/cache/MemoryCachePlugin.js +1 -1
  134. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  135. package/lib/cache/PackFileCacheStrategy.js +43 -7
  136. package/lib/cache/ResolverCachePlugin.js +12 -1
  137. package/lib/cache/getLazyHashedEtag.js +13 -2
  138. package/lib/cache/mergeEtags.js +4 -0
  139. package/lib/cli.js +142 -20
  140. package/lib/config/browserslistTargetHandler.js +141 -0
  141. package/lib/config/defaults.js +591 -41
  142. package/lib/config/defineConfig.js +31 -0
  143. package/lib/config/normalization.js +46 -1
  144. package/lib/config/target.js +200 -2
  145. package/lib/container/ContainerEntryDependency.js +2 -0
  146. package/lib/container/ContainerEntryModule.js +27 -14
  147. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  148. package/lib/container/ContainerExposedDependency.js +6 -2
  149. package/lib/container/ContainerPlugin.js +2 -1
  150. package/lib/container/ContainerReferencePlugin.js +3 -2
  151. package/lib/container/FallbackDependency.js +9 -7
  152. package/lib/container/FallbackItemDependency.js +1 -0
  153. package/lib/container/FallbackModule.js +22 -9
  154. package/lib/container/FallbackModuleFactory.js +1 -0
  155. package/lib/container/ModuleFederationPlugin.js +12 -26
  156. package/lib/container/RemoteModule.js +33 -10
  157. package/lib/container/RemoteRuntimeModule.js +15 -12
  158. package/lib/container/RemoteToExternalDependency.js +1 -0
  159. package/lib/container/options.js +7 -0
  160. package/lib/css/CssGenerator.js +534 -272
  161. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  162. package/lib/css/CssLoadingRuntimeModule.js +156 -77
  163. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  164. package/lib/css/CssModulesPlugin.js +356 -204
  165. package/lib/css/CssParser.js +3452 -1950
  166. package/lib/css/syntax.js +4058 -0
  167. package/lib/debug/ProfilingPlugin.js +33 -2
  168. package/lib/deno/DenoTargetPlugin.js +41 -0
  169. package/lib/dependencies/AMDDefineDependency.js +29 -17
  170. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  171. package/lib/dependencies/AMDPlugin.js +6 -3
  172. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  173. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  174. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  175. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  176. package/lib/dependencies/AMDRequireDependency.js +28 -20
  177. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  178. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  179. package/lib/dependencies/CachedConstDependency.js +9 -1
  180. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  181. package/lib/dependencies/CommonJsExportRequireDependency.js +138 -38
  182. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  183. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  184. package/lib/dependencies/CommonJsFullRequireDependency.js +62 -27
  185. package/lib/dependencies/CommonJsImportsParserPlugin.js +187 -24
  186. package/lib/dependencies/CommonJsPlugin.js +7 -4
  187. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  188. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  189. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  190. package/lib/dependencies/ConstDependency.js +22 -12
  191. package/lib/dependencies/ContextDependency.js +13 -2
  192. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  193. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  194. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  195. package/lib/dependencies/ContextElementDependency.js +27 -14
  196. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  197. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  198. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  199. package/lib/dependencies/CssIcssExportDependency.js +682 -368
  200. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  201. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  202. package/lib/dependencies/CssImportDependency.js +37 -1
  203. package/lib/dependencies/CssUrlDependency.js +87 -14
  204. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  205. package/lib/dependencies/DllEntryDependency.js +12 -13
  206. package/lib/dependencies/DynamicExports.js +5 -0
  207. package/lib/dependencies/EntryDependency.js +1 -0
  208. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  209. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  210. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  211. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  212. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  213. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  214. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  215. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  216. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  217. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -2
  218. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  219. package/lib/dependencies/HarmonyExportExpressionDependency.js +140 -46
  220. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  221. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +253 -37
  222. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  223. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  224. package/lib/dependencies/HarmonyExports.js +6 -1
  225. package/lib/dependencies/HarmonyImportDependency.js +59 -3
  226. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  227. package/lib/dependencies/HarmonyImportGuard.js +426 -0
  228. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  229. package/lib/dependencies/HarmonyImportSpecifierDependency.js +136 -17
  230. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  231. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  233. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  234. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  235. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  236. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  237. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  238. package/lib/dependencies/ImportContextDependency.js +9 -9
  239. package/lib/dependencies/ImportDependency.js +92 -3
  240. package/lib/dependencies/ImportEagerDependency.js +2 -0
  241. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  242. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  243. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  244. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  245. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  246. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  247. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  248. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  249. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  250. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  251. package/lib/dependencies/ImportParserPlugin.js +114 -27
  252. package/lib/dependencies/ImportPhase.js +17 -11
  253. package/lib/dependencies/ImportPlugin.js +2 -1
  254. package/lib/dependencies/ImportWeakDependency.js +3 -0
  255. package/lib/dependencies/JsonExportsDependency.js +15 -10
  256. package/lib/dependencies/LoaderDependency.js +2 -0
  257. package/lib/dependencies/LoaderImportDependency.js +3 -0
  258. package/lib/dependencies/LoaderPlugin.js +9 -2
  259. package/lib/dependencies/LocalModule.js +15 -12
  260. package/lib/dependencies/LocalModuleDependency.js +15 -13
  261. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  262. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  263. package/lib/dependencies/ModuleDependency.js +14 -0
  264. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  265. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  266. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  267. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  268. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  269. package/lib/dependencies/NullDependency.js +2 -0
  270. package/lib/dependencies/PrefetchDependency.js +1 -0
  271. package/lib/dependencies/ProvidedDependency.js +36 -27
  272. package/lib/dependencies/PureExpressionDependency.js +14 -10
  273. package/lib/dependencies/RequireContextDependency.js +1 -0
  274. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  275. package/lib/dependencies/RequireContextPlugin.js +2 -1
  276. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  277. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  278. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  279. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  280. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  281. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  282. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  283. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  284. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  285. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  286. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  287. package/lib/dependencies/RequireResolveDependency.js +2 -0
  288. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  289. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  290. package/lib/dependencies/StaticExportsDependency.js +13 -10
  291. package/lib/dependencies/SystemPlugin.js +9 -6
  292. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  293. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  294. package/lib/dependencies/URLContextDependency.js +8 -7
  295. package/lib/dependencies/URLDependency.js +157 -33
  296. package/lib/dependencies/URLPlugin.js +2 -0
  297. package/lib/dependencies/UnsupportedDependency.js +12 -13
  298. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  299. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  300. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  301. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  302. package/lib/dependencies/WorkerDependency.js +111 -27
  303. package/lib/dependencies/WorkletDependency.js +278 -0
  304. package/lib/dependencies/getFunctionExpression.js +1 -0
  305. package/lib/dependencies/processExportInfo.js +14 -11
  306. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  307. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  308. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  309. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  310. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  311. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  312. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  313. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  314. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  315. package/lib/electron/ElectronTargetPlugin.js +24 -5
  316. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  317. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  318. package/lib/errors/BuildCycleError.js +1 -1
  319. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  320. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  321. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  322. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  323. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  324. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  325. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  326. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  327. package/lib/errors/JSONParseError.js +115 -0
  328. package/lib/errors/LoaderLoadingError.js +20 -0
  329. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  330. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  331. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  332. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  333. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  334. package/lib/errors/ModuleNotFoundError.js +94 -0
  335. package/lib/errors/ModuleParseError.js +141 -0
  336. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  337. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  338. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  339. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  340. package/lib/errors/NonErrorEmittedError.js +30 -0
  341. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  342. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  343. package/lib/errors/WebpackError.js +84 -0
  344. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  345. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  346. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  347. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +71 -49
  348. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  349. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  350. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  351. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  352. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  353. package/lib/hmr/lazyCompilationBackend.js +34 -8
  354. package/lib/html/HtmlGenerator.js +1470 -0
  355. package/lib/html/HtmlModule.js +41 -0
  356. package/lib/html/HtmlModulesPlugin.js +1111 -0
  357. package/lib/html/HtmlParser.js +1970 -0
  358. package/lib/html/favicon.svg +1 -0
  359. package/lib/html/syntax.js +9020 -0
  360. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  361. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  362. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  363. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  364. package/lib/ids/IdHelpers.js +25 -2
  365. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  366. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  367. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  368. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  369. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  370. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  371. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  372. package/lib/index.js +66 -15
  373. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  374. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  375. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  376. package/lib/javascript/ChunkHelpers.js +1 -0
  377. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  378. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  379. package/lib/javascript/JavascriptGenerator.js +213 -51
  380. package/lib/javascript/JavascriptModule.js +54 -0
  381. package/lib/javascript/JavascriptModulesPlugin.js +579 -183
  382. package/lib/javascript/JavascriptParser.js +1289 -462
  383. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  384. package/lib/javascript/StartupHelpers.js +5 -0
  385. package/lib/javascript/syntax.js +4380 -0
  386. package/lib/json/JsonData.js +5 -0
  387. package/lib/json/JsonGenerator.js +21 -0
  388. package/lib/json/JsonModule.js +40 -0
  389. package/lib/json/JsonModulesPlugin.js +8 -1
  390. package/lib/json/JsonParser.js +18 -27
  391. package/lib/library/AbstractLibraryPlugin.js +17 -2
  392. package/lib/library/AmdLibraryPlugin.js +8 -0
  393. package/lib/library/AssignLibraryPlugin.js +21 -3
  394. package/lib/library/EnableLibraryPlugin.js +8 -2
  395. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  396. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  397. package/lib/library/JsonpLibraryPlugin.js +8 -0
  398. package/lib/library/ModuleLibraryPlugin.js +154 -7
  399. package/lib/library/SystemLibraryPlugin.js +11 -3
  400. package/lib/library/UmdLibraryPlugin.js +16 -0
  401. package/lib/loaders/LoaderRunner.js +714 -0
  402. package/lib/loaders/loadLoader.js +100 -0
  403. package/lib/logging/Logger.js +17 -0
  404. package/lib/logging/createConsoleLogger.js +7 -0
  405. package/lib/logging/runtime.js +2 -0
  406. package/lib/logging/truncateArgs.js +2 -0
  407. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  408. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  409. package/lib/node/NodeSourcePlugin.js +1 -1
  410. package/lib/node/NodeTargetPlugin.js +4 -63
  411. package/lib/node/NodeTemplatePlugin.js +3 -1
  412. package/lib/node/NodeWatchFileSystem.js +40 -22
  413. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  414. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +23 -1
  415. package/lib/node/ReadFileCompileWasmPlugin.js +18 -1
  416. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  417. package/lib/node/nodeBuiltins.js +80 -0
  418. package/lib/node/nodeConsole.js +116 -64
  419. package/lib/optimize/AggressiveMergingPlugin.js +3 -1
  420. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  421. package/lib/optimize/ConcatenatedModule.js +585 -116
  422. package/lib/optimize/ConstExportsPlugin.js +211 -0
  423. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  424. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  425. package/lib/optimize/InlineExports.js +178 -0
  426. package/lib/optimize/InnerGraph.js +374 -262
  427. package/lib/optimize/InnerGraphPlugin.js +246 -117
  428. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  429. package/lib/optimize/MangleExportsPlugin.js +5 -1
  430. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  431. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  432. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  433. package/lib/optimize/ModuleConcatenationPlugin.js +159 -34
  434. package/lib/optimize/RealContentHashPlugin.js +125 -50
  435. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  436. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  437. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  438. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  439. package/lib/optimize/SplitChunksPlugin.js +54 -6
  440. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  441. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  442. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  443. package/lib/performance/SizeLimitsPlugin.js +8 -2
  444. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  445. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  446. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  448. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  449. package/lib/prefetch/ResourceHintPlugin.js +663 -0
  450. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  451. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  452. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  453. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  454. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  455. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  456. package/lib/rules/RuleSetCompiler.js +132 -0
  457. package/lib/rules/UseEffectRulePlugin.js +10 -3
  458. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  459. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  460. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  461. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  462. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  463. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  464. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  465. package/lib/runtime/CompatRuntimeModule.js +2 -0
  466. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  467. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  468. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  469. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  470. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  471. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  472. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  473. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  474. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  475. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  476. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  477. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  478. package/lib/runtime/HelperRuntimeModule.js +5 -0
  479. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  480. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  481. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  482. package/lib/runtime/NonceRuntimeModule.js +1 -0
  483. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  484. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  485. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  486. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  487. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  488. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  489. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  490. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  491. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  492. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  493. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  494. package/lib/schemes/DataUriPlugin.js +14 -2
  495. package/lib/schemes/FileUriPlugin.js +1 -1
  496. package/lib/schemes/HttpUriPlugin.js +86 -4
  497. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  498. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  499. package/lib/serialization/ArraySerializer.js +6 -8
  500. package/lib/serialization/BinaryMiddleware.js +552 -463
  501. package/lib/serialization/DateObjectSerializer.js +4 -2
  502. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  503. package/lib/serialization/FileMiddleware.js +50 -3
  504. package/lib/serialization/MapObjectSerializer.js +7 -9
  505. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  506. package/lib/serialization/ObjectMiddleware.js +73 -13
  507. package/lib/serialization/PlainObjectSerializer.js +16 -8
  508. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  509. package/lib/serialization/Serializer.js +6 -0
  510. package/lib/serialization/SerializerMiddleware.js +14 -2
  511. package/lib/serialization/SetObjectSerializer.js +6 -8
  512. package/lib/serialization/SingleItemMiddleware.js +3 -0
  513. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  514. package/lib/sharing/ConsumeSharedModule.js +21 -7
  515. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  516. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  517. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  518. package/lib/sharing/ProvideSharedDependency.js +34 -15
  519. package/lib/sharing/ProvideSharedModule.js +42 -12
  520. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  521. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  522. package/lib/sharing/SharePlugin.js +5 -1
  523. package/lib/sharing/ShareRuntimeModule.js +19 -16
  524. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  525. package/lib/sharing/utils.js +9 -1
  526. package/lib/stats/DefaultStatsFactoryPlugin.js +94 -12
  527. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  528. package/lib/stats/DefaultStatsPrinterPlugin.js +64 -18
  529. package/lib/stats/StatsFactory.js +39 -18
  530. package/lib/stats/StatsPrinter.js +16 -2
  531. package/lib/typescript/TypeScriptPlugin.js +210 -0
  532. package/lib/url/URLParserPlugin.js +111 -23
  533. package/lib/util/ArrayHelpers.js +1 -0
  534. package/lib/util/ArrayQueue.js +10 -5
  535. package/lib/util/AsyncQueue.js +154 -74
  536. package/lib/util/Hash.js +2 -2
  537. package/lib/util/IterableHelpers.js +3 -0
  538. package/lib/util/LazyBucketSortedSet.js +26 -0
  539. package/lib/util/LazySet.js +45 -4
  540. package/lib/util/LocConverter.js +64 -0
  541. package/lib/util/ParallelismFactorCalculator.js +1 -0
  542. package/lib/util/Queue.js +6 -3
  543. package/lib/util/Semaphore.js +15 -1
  544. package/lib/util/SetHelpers.js +4 -1
  545. package/lib/util/SortableSet.js +7 -1
  546. package/lib/util/SourceProcessor.js +119 -0
  547. package/lib/util/StackedCacheMap.js +20 -3
  548. package/lib/util/StackedMap.js +162 -43
  549. package/lib/util/StringXor.js +1 -1
  550. package/lib/util/TupleQueue.js +7 -3
  551. package/lib/util/TupleSet.js +14 -0
  552. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  553. package/lib/util/WeakTupleMap.js +60 -1
  554. package/lib/util/binarySearchBounds.js +3 -2
  555. package/lib/util/chainedImports.js +3 -3
  556. package/lib/util/cleverMerge.js +19 -2
  557. package/lib/util/comparators.js +35 -4
  558. package/lib/util/compileBooleanMatcher.js +9 -0
  559. package/lib/util/concatenate.js +80 -24
  560. package/lib/util/conventions.js +46 -1
  561. package/lib/util/createHash.js +0 -1
  562. package/lib/util/createHooksRegistry.js +43 -0
  563. package/lib/util/createMappings.js +118 -0
  564. package/lib/util/dataURL.js +3 -2
  565. package/lib/util/deprecation.js +19 -0
  566. package/lib/util/deterministicGrouping.js +46 -17
  567. package/lib/util/extractSourceMap.js +2 -1
  568. package/lib/util/extractUrlAndGlobal.js +1 -0
  569. package/lib/util/findGraphRoots.js +7 -0
  570. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  571. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  572. package/lib/util/fs.js +87 -14
  573. package/lib/util/generateDebugId.js +1 -0
  574. package/lib/util/globUtils.js +710 -0
  575. package/lib/util/hash/BatchedHash.js +1 -0
  576. package/lib/util/hash/BulkUpdateHash.js +1 -0
  577. package/lib/util/hash/DebugHash.js +1 -0
  578. package/lib/util/hash/hash-digest.js +32 -15
  579. package/lib/util/hash/md4.js +1 -1
  580. package/lib/util/hash/wasm-hash.js +5 -0
  581. package/lib/util/hash/xxhash64.js +1 -1
  582. package/lib/util/identifier.js +97 -6
  583. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  584. package/lib/util/internalSerializables.js +102 -60
  585. package/lib/util/magicComment.js +149 -7
  586. package/lib/util/makeSerializable.js +7 -0
  587. package/lib/util/memoize.js +2 -0
  588. package/lib/util/mimeTypes.js +176 -0
  589. package/lib/util/nonNumericOnlyHash.js +31 -1
  590. package/lib/util/numberHash.js +2 -2
  591. package/lib/util/parseJson.js +41 -0
  592. package/lib/util/processAsyncTree.js +8 -0
  593. package/lib/util/property.js +9 -2
  594. package/lib/util/publicPathPlaceholder.js +64 -0
  595. package/lib/util/registerExternalSerializer.js +24 -4
  596. package/lib/util/removeBOM.js +1 -0
  597. package/lib/util/runtime.js +32 -0
  598. package/lib/util/semver.js +15 -0
  599. package/lib/util/serialization.js +2 -0
  600. package/lib/util/smartGrouping.js +8 -0
  601. package/lib/util/source.js +23 -0
  602. package/lib/util/topologicalSort.js +69 -0
  603. package/lib/validateSchema.js +1 -0
  604. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  605. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  606. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  607. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  608. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  609. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  610. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  611. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  612. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  613. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  614. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  615. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  616. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  617. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  618. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  619. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  620. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  621. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  622. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  623. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  624. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  625. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  626. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  627. package/lib/web/JsonpTemplatePlugin.js +2 -1
  628. package/lib/webpack.js +78 -1
  629. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  630. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  631. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  632. package/module.d.ts +21 -0
  633. package/package.json +79 -77
  634. package/schemas/WebpackOptions.check.js +1 -1
  635. package/schemas/WebpackOptions.json +1117 -79
  636. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  637. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  638. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  639. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  640. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  641. package/schemas/plugins/HtmlParserOptions.json +3 -0
  642. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  643. package/schemas/plugins/ProgressPlugin.json +38 -0
  644. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  645. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  646. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  647. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  648. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  649. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  650. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  652. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  653. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  654. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  655. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  656. package/types.d.ts +8608 -1159
  657. package/lib/CaseSensitiveModulesWarning.js +0 -72
  658. package/lib/GraphHelpers.js +0 -46
  659. package/lib/ModuleParseError.js +0 -125
  660. package/lib/NoModeWarning.js +0 -23
  661. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  662. package/lib/css/walkCssTokens.js +0 -1843
  663. package/lib/util/AppendOnlyStackedSet.js +0 -78
  664. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  665. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  666. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
package/lib/ChunkGraph.js CHANGED
@@ -45,6 +45,7 @@ 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();
@@ -58,6 +59,7 @@ const compareModuleIterables = compareIterables(compareModulesByIdentifier);
58
59
  /** @typedef {[Module, Entrypoint | undefined]} EntryModuleWithChunkGroup */
59
60
 
60
61
  /**
62
+ * Represents the module hash info runtime component.
61
63
  * @typedef {object} ChunkSizeOptions
62
64
  * @property {number=} chunkOverhead constant overhead for a chunk
63
65
  * @property {number=} entryChunkMultiplicator multiplicator for initial chunks
@@ -65,6 +67,7 @@ const compareModuleIterables = compareIterables(compareModulesByIdentifier);
65
67
 
66
68
  class ModuleHashInfo {
67
69
  /**
70
+ * Creates an instance of ModuleHashInfo.
68
71
  * @param {string} hash hash
69
72
  * @param {string} renderedHash rendered hash
70
73
  */
@@ -77,6 +80,7 @@ class ModuleHashInfo {
77
80
  }
78
81
 
79
82
  /**
83
+ * Returns set as array.
80
84
  * @template T
81
85
  * @param {SortableSet<T>} set the set
82
86
  * @returns {T[]} set as array
@@ -84,6 +88,7 @@ class ModuleHashInfo {
84
88
  const getArray = (set) => [...set];
85
89
 
86
90
  /**
91
+ * Gets module runtimes.
87
92
  * @param {SortableChunks} chunks the chunks
88
93
  * @returns {RuntimeSpecSet} runtimes
89
94
  */
@@ -96,6 +101,7 @@ const getModuleRuntimes = (chunks) => {
96
101
  };
97
102
 
98
103
  /**
104
+ * Modules by source type.
99
105
  * @param {SourceTypesByModule | undefined} sourceTypesByModule sourceTypesByModule
100
106
  * @returns {ModulesBySourceType} modules by source type
101
107
  */
@@ -133,6 +139,7 @@ const modulesBySourceType = (sourceTypesByModule) => (set) => {
133
139
  const defaultModulesBySourceType = modulesBySourceType(undefined);
134
140
 
135
141
  /**
142
+ * Defines the module set to array function type used by this module.
136
143
  * @typedef {(set: SortableSet<Module>) => Module[]} ModuleSetToArrayFunction
137
144
  */
138
145
 
@@ -143,6 +150,7 @@ const defaultModulesBySourceType = modulesBySourceType(undefined);
143
150
  const createOrderedArrayFunctionMap = new WeakMap();
144
151
 
145
152
  /**
153
+ * Creates an ordered array function.
146
154
  * @template T
147
155
  * @param {ModuleComparator} comparator comparator function
148
156
  * @returns {ModuleSetToArrayFunction} set as ordered array
@@ -159,6 +167,7 @@ const createOrderedArrayFunction = (comparator) => {
159
167
  };
160
168
 
161
169
  /**
170
+ * Returns the size of the modules.
162
171
  * @param {Iterable<Module>} modules the modules to get the count/size of
163
172
  * @returns {number} the size of the modules
164
173
  */
@@ -175,6 +184,7 @@ const getModulesSize = (modules) => {
175
184
  /** @typedef {Record<string, number>} SizesOfModules */
176
185
 
177
186
  /**
187
+ * Gets modules sizes.
178
188
  * @param {Iterable<Module>} modules the sortable Set to get the size of
179
189
  * @returns {SizesOfModules} the sizes of the modules
180
190
  */
@@ -190,6 +200,7 @@ const getModulesSizes = (modules) => {
190
200
  };
191
201
 
192
202
  /**
203
+ * Checks whether this module hash info is available chunk.
193
204
  * @param {Chunk} a chunk
194
205
  * @param {Chunk} b chunk
195
206
  * @returns {boolean} true, if a is always a parent of b
@@ -269,6 +280,7 @@ class ChunkGraphChunk {
269
280
 
270
281
  class ChunkGraph {
271
282
  /**
283
+ * Creates an instance of ChunkGraph.
272
284
  * @param {ModuleGraph} moduleGraph the module graph
273
285
  * @param {HashFunction} hashFunction the hash function to use
274
286
  */
@@ -293,15 +305,24 @@ class ChunkGraph {
293
305
  * @type {Map<string, RuntimeId>}
294
306
  */
295
307
  this._runtimeIds = new Map();
308
+ /**
309
+ * Module runtime requirement Sets stored without copying (ownership not
310
+ * transferred). They must be copied before being mutated.
311
+ * @private
312
+ * @type {WeakSet<RuntimeRequirements>}
313
+ */
314
+ this._sharedModuleRuntimeRequirements = new WeakSet();
296
315
  /** @type {ModuleGraph} */
297
316
  this.moduleGraph = moduleGraph;
298
317
 
318
+ /** @type {HashFunction} */
299
319
  this._hashFunction = hashFunction;
300
320
 
301
321
  this._getGraphRoots = this._getGraphRoots.bind(this);
302
322
  }
303
323
 
304
324
  /**
325
+ * Get chunk graph module.
305
326
  * @private
306
327
  * @param {Module} module the module
307
328
  * @returns {ChunkGraphModule} internal module
@@ -316,6 +337,7 @@ class ChunkGraph {
316
337
  }
317
338
 
318
339
  /**
340
+ * Get chunk graph chunk.
319
341
  * @private
320
342
  * @param {Chunk} chunk the chunk
321
343
  * @returns {ChunkGraphChunk} internal chunk
@@ -330,6 +352,7 @@ class ChunkGraph {
330
352
  }
331
353
 
332
354
  /**
355
+ * Returns the graph roots.
333
356
  * @param {SortableSet<Module>} set the sortable Set to get the roots of
334
357
  * @returns {Module[]} the graph roots
335
358
  */
@@ -340,6 +363,7 @@ class ChunkGraph {
340
363
  /** @type {Set<Module>} */
341
364
  const set = new Set();
342
365
  /**
366
+ * Adds the provided module to the chunk graph.
343
367
  * @param {Module} module module
344
368
  */
345
369
  const addDependencies = (module) => {
@@ -361,6 +385,7 @@ class ChunkGraph {
361
385
  }
362
386
 
363
387
  /**
388
+ * Connects chunk and module.
364
389
  * @param {Chunk} chunk the new chunk
365
390
  * @param {Module} module the module
366
391
  * @returns {void}
@@ -373,6 +398,7 @@ class ChunkGraph {
373
398
  }
374
399
 
375
400
  /**
401
+ * Disconnects chunk and module.
376
402
  * @param {Chunk} chunk the chunk
377
403
  * @param {Module} module the module
378
404
  * @returns {void}
@@ -387,6 +413,7 @@ class ChunkGraph {
387
413
  }
388
414
 
389
415
  /**
416
+ * Processes the provided chunk.
390
417
  * @param {Chunk} chunk the chunk which will be disconnected
391
418
  * @returns {void}
392
419
  */
@@ -402,6 +429,7 @@ class ChunkGraph {
402
429
  }
403
430
 
404
431
  /**
432
+ * Processes the provided chunk.
405
433
  * @param {Chunk} chunk the chunk
406
434
  * @param {Iterable<Module>} modules the modules
407
435
  * @returns {void}
@@ -414,6 +442,7 @@ class ChunkGraph {
414
442
  }
415
443
 
416
444
  /**
445
+ * Attach runtime modules.
417
446
  * @param {Chunk} chunk the chunk
418
447
  * @param {Iterable<RuntimeModule>} modules the runtime modules
419
448
  * @returns {void}
@@ -426,6 +455,7 @@ class ChunkGraph {
426
455
  }
427
456
 
428
457
  /**
458
+ * Attach full hash modules.
429
459
  * @param {Chunk} chunk the chunk
430
460
  * @param {Iterable<RuntimeModule>} modules the modules that require a full hash
431
461
  * @returns {void}
@@ -439,6 +469,7 @@ class ChunkGraph {
439
469
  }
440
470
 
441
471
  /**
472
+ * Attach dependent hash modules.
442
473
  * @param {Chunk} chunk the chunk
443
474
  * @param {Iterable<RuntimeModule>} modules the modules that require a full hash
444
475
  * @returns {void}
@@ -454,6 +485,7 @@ class ChunkGraph {
454
485
  }
455
486
 
456
487
  /**
488
+ * Processes the provided old module.
457
489
  * @param {Module} oldModule the replaced module
458
490
  * @param {Module} newModule the replacing module
459
491
  * @returns {void}
@@ -525,6 +557,7 @@ class ChunkGraph {
525
557
  }
526
558
 
527
559
  /**
560
+ * Checks whether this chunk graph is module in chunk.
528
561
  * @param {Module} module the checked module
529
562
  * @param {Chunk} chunk the checked chunk
530
563
  * @returns {boolean} true, if the chunk contains the module
@@ -535,6 +568,7 @@ class ChunkGraph {
535
568
  }
536
569
 
537
570
  /**
571
+ * Checks whether this chunk graph is module in chunk group.
538
572
  * @param {Module} module the checked module
539
573
  * @param {ChunkGroup} chunkGroup the checked chunk group
540
574
  * @returns {boolean} true, if the chunk contains the module
@@ -547,6 +581,7 @@ class ChunkGraph {
547
581
  }
548
582
 
549
583
  /**
584
+ * Checks whether this chunk graph is entry module.
550
585
  * @param {Module} module the checked module
551
586
  * @returns {boolean} true, if the module is entry of any chunk
552
587
  */
@@ -556,6 +591,7 @@ class ChunkGraph {
556
591
  }
557
592
 
558
593
  /**
594
+ * Gets module chunks iterable.
559
595
  * @param {Module} module the module
560
596
  * @returns {Iterable<Chunk>} iterable of chunks (do not modify)
561
597
  */
@@ -565,6 +601,7 @@ class ChunkGraph {
565
601
  }
566
602
 
567
603
  /**
604
+ * Gets ordered module chunks iterable.
568
605
  * @param {Module} module the module
569
606
  * @param {(a: Chunk, b: Chunk) => -1 | 0 | 1} sortFn sort function
570
607
  * @returns {Iterable<Chunk>} iterable of chunks (do not modify)
@@ -576,6 +613,7 @@ class ChunkGraph {
576
613
  }
577
614
 
578
615
  /**
616
+ * Gets module chunks.
579
617
  * @param {Module} module the module
580
618
  * @returns {Chunk[]} array of chunks (cached, do not modify)
581
619
  */
@@ -585,6 +623,7 @@ class ChunkGraph {
585
623
  }
586
624
 
587
625
  /**
626
+ * Gets number of module chunks.
588
627
  * @param {Module} module the module
589
628
  * @returns {number} the number of chunk which contain the module
590
629
  */
@@ -594,6 +633,7 @@ class ChunkGraph {
594
633
  }
595
634
 
596
635
  /**
636
+ * Gets module runtimes.
597
637
  * @param {Module} module the module
598
638
  * @returns {RuntimeSpecSet} runtimes
599
639
  */
@@ -603,6 +643,7 @@ class ChunkGraph {
603
643
  }
604
644
 
605
645
  /**
646
+ * Gets number of chunk modules.
606
647
  * @param {Chunk} chunk the chunk
607
648
  * @returns {number} the number of modules which are contained in this chunk
608
649
  */
@@ -612,6 +653,7 @@ class ChunkGraph {
612
653
  }
613
654
 
614
655
  /**
656
+ * Gets number of chunk full hash modules.
615
657
  * @param {Chunk} chunk the chunk
616
658
  * @returns {number} the number of full hash modules which are contained in this chunk
617
659
  */
@@ -621,6 +663,7 @@ class ChunkGraph {
621
663
  }
622
664
 
623
665
  /**
666
+ * Gets chunk modules iterable.
624
667
  * @param {Chunk} chunk the chunk
625
668
  * @returns {Iterable<Module>} return the modules for this chunk
626
669
  */
@@ -630,6 +673,7 @@ class ChunkGraph {
630
673
  }
631
674
 
632
675
  /**
676
+ * Gets chunk modules iterable by source type.
633
677
  * @param {Chunk} chunk the chunk
634
678
  * @param {string} sourceType source type
635
679
  * @returns {Iterable<Module> | undefined} return the modules for this chunk
@@ -643,6 +687,7 @@ class ChunkGraph {
643
687
  }
644
688
 
645
689
  /**
690
+ * Sets chunk module source types.
646
691
  * @param {Chunk} chunk chunk
647
692
  * @param {Module} module chunk module
648
693
  * @param {SourceTypes} sourceTypes source types
@@ -658,6 +703,7 @@ class ChunkGraph {
658
703
  }
659
704
 
660
705
  /**
706
+ * Gets chunk module source types.
661
707
  * @param {Chunk} chunk chunk
662
708
  * @param {Module} module chunk module
663
709
  * @returns {SourceTypes} source types
@@ -671,6 +717,7 @@ class ChunkGraph {
671
717
  }
672
718
 
673
719
  /**
720
+ * Gets module source types.
674
721
  * @param {Module} module module
675
722
  * @returns {SourceTypes} source types
676
723
  */
@@ -681,6 +728,7 @@ class ChunkGraph {
681
728
  }
682
729
 
683
730
  /**
731
+ * Get overwritten module source types.
684
732
  * @param {Module} module module
685
733
  * @returns {SourceTypes | undefined} source types
686
734
  */
@@ -716,6 +764,7 @@ class ChunkGraph {
716
764
  }
717
765
 
718
766
  /**
767
+ * Gets ordered chunk modules iterable.
719
768
  * @param {Chunk} chunk the chunk
720
769
  * @param {ModuleComparator} comparator comparator function
721
770
  * @returns {Iterable<Module>} return the modules for this chunk
@@ -727,6 +776,7 @@ class ChunkGraph {
727
776
  }
728
777
 
729
778
  /**
779
+ * Gets ordered chunk modules iterable by source type.
730
780
  * @param {Chunk} chunk the chunk
731
781
  * @param {string} sourceType source type
732
782
  * @param {ModuleComparator} comparator comparator function
@@ -743,6 +793,7 @@ class ChunkGraph {
743
793
  }
744
794
 
745
795
  /**
796
+ * Gets chunk modules.
746
797
  * @param {Chunk} chunk the chunk
747
798
  * @returns {Module[]} return the modules for this chunk (cached, do not modify)
748
799
  */
@@ -752,6 +803,7 @@ class ChunkGraph {
752
803
  }
753
804
 
754
805
  /**
806
+ * Gets ordered chunk modules.
755
807
  * @param {Chunk} chunk the chunk
756
808
  * @param {ModuleComparator} comparator comparator function
757
809
  * @returns {Module[]} return the modules for this chunk (cached, do not modify)
@@ -763,6 +815,7 @@ class ChunkGraph {
763
815
  }
764
816
 
765
817
  /**
818
+ * Gets chunk module id map.
766
819
  * @param {Chunk} chunk the chunk
767
820
  * @param {ModuleFilterPredicate} filterFn function used to filter modules
768
821
  * @param {boolean} includeAllChunks all chunks or only async chunks
@@ -796,6 +849,7 @@ class ChunkGraph {
796
849
  }
797
850
 
798
851
  /**
852
+ * Gets chunk module rendered hash map.
799
853
  * @param {Chunk} chunk the chunk
800
854
  * @param {ModuleFilterPredicate} filterFn function used to filter modules
801
855
  * @param {number} hashLength length of the hash
@@ -842,6 +896,7 @@ class ChunkGraph {
842
896
  }
843
897
 
844
898
  /**
899
+ * Gets chunk condition map.
845
900
  * @param {Chunk} chunk the chunk
846
901
  * @param {ChunkFilterPredicate} filterFn function used to filter chunks
847
902
  * @returns {ChunkConditionMap} chunk condition map
@@ -856,6 +911,7 @@ class ChunkGraph {
856
911
  }
857
912
 
858
913
  /**
914
+ * Checks whether this chunk graph contains the chunk.
859
915
  * @param {Chunk} chunk the chunk
860
916
  * @param {ModuleFilterPredicate} filterFn predicate function used to filter modules
861
917
  * @param {ChunkFilterPredicate=} filterChunkFn predicate function used to filter chunks
@@ -887,6 +943,7 @@ class ChunkGraph {
887
943
  }
888
944
 
889
945
  /**
946
+ * Compares the provided values and returns their ordering.
890
947
  * @param {Chunk} chunkA first chunk
891
948
  * @param {Chunk} chunkB second chunk
892
949
  * @returns {-1 | 0 | 1} this is a comparator function like sort and returns -1, 0, or 1 based on sort order
@@ -902,6 +959,7 @@ class ChunkGraph {
902
959
  }
903
960
 
904
961
  /**
962
+ * Gets chunk modules size.
905
963
  * @param {Chunk} chunk the chunk
906
964
  * @returns {number} total size of all modules in the chunk
907
965
  */
@@ -911,6 +969,7 @@ class ChunkGraph {
911
969
  }
912
970
 
913
971
  /**
972
+ * Gets chunk modules sizes.
914
973
  * @param {Chunk} chunk the chunk
915
974
  * @returns {Record<string, number>} total sizes of all modules in the chunk by source type
916
975
  */
@@ -920,6 +979,7 @@ class ChunkGraph {
920
979
  }
921
980
 
922
981
  /**
982
+ * Gets chunk root modules.
923
983
  * @param {Chunk} chunk the chunk
924
984
  * @returns {Module[]} root modules of the chunks (ordered by identifier)
925
985
  */
@@ -929,6 +989,7 @@ class ChunkGraph {
929
989
  }
930
990
 
931
991
  /**
992
+ * Returns total size of the chunk.
932
993
  * @param {Chunk} chunk the chunk
933
994
  * @param {ChunkSizeOptions} options options object
934
995
  * @returns {number} total size of the chunk
@@ -949,6 +1010,7 @@ class ChunkGraph {
949
1010
  }
950
1011
 
951
1012
  /**
1013
+ * Gets integrated chunks size.
952
1014
  * @param {Chunk} chunkA chunk
953
1015
  * @param {Chunk} chunkB chunk
954
1016
  * @param {ChunkSizeOptions} options options object
@@ -976,6 +1038,7 @@ class ChunkGraph {
976
1038
  }
977
1039
 
978
1040
  /**
1041
+ * Checks whether it can chunks be integrated.
979
1042
  * @param {Chunk} chunkA chunk
980
1043
  * @param {Chunk} chunkB chunk
981
1044
  * @returns {boolean} true, if chunks could be integrated
@@ -1009,6 +1072,7 @@ class ChunkGraph {
1009
1072
  }
1010
1073
 
1011
1074
  /**
1075
+ * Processes the provided chunk a.
1012
1076
  * @param {Chunk} chunkA the target chunk
1013
1077
  * @param {Chunk} chunkB the chunk to integrate
1014
1078
  * @returns {void}
@@ -1072,6 +1136,7 @@ class ChunkGraph {
1072
1136
  }
1073
1137
 
1074
1138
  /**
1139
+ * Upgrade dependent to full hash modules.
1075
1140
  * @param {Chunk} chunk the chunk to upgrade
1076
1141
  * @returns {void}
1077
1142
  */
@@ -1089,6 +1154,7 @@ class ChunkGraph {
1089
1154
  }
1090
1155
 
1091
1156
  /**
1157
+ * Checks whether this chunk graph is entry module in chunk.
1092
1158
  * @param {Module} module the checked module
1093
1159
  * @param {Chunk} chunk the checked chunk
1094
1160
  * @returns {boolean} true, if the chunk contains the module as entry
@@ -1099,6 +1165,7 @@ class ChunkGraph {
1099
1165
  }
1100
1166
 
1101
1167
  /**
1168
+ * Connects chunk and entry module.
1102
1169
  * @param {Chunk} chunk the new chunk
1103
1170
  * @param {Module} module the entry module
1104
1171
  * @param {Entrypoint} entrypoint the chunk group which must be loaded before the module is executed
@@ -1115,6 +1182,7 @@ class ChunkGraph {
1115
1182
  }
1116
1183
 
1117
1184
  /**
1185
+ * Connects chunk and runtime module.
1118
1186
  * @param {Chunk} chunk the new chunk
1119
1187
  * @param {RuntimeModule} module the runtime module
1120
1188
  * @returns {void}
@@ -1130,6 +1198,7 @@ class ChunkGraph {
1130
1198
  }
1131
1199
 
1132
1200
  /**
1201
+ * Adds full hash module to chunk.
1133
1202
  * @param {Chunk} chunk the new chunk
1134
1203
  * @param {RuntimeModule} module the module that require a full hash
1135
1204
  * @returns {void}
@@ -1141,6 +1210,7 @@ class ChunkGraph {
1141
1210
  }
1142
1211
 
1143
1212
  /**
1213
+ * Adds dependent hash module to chunk.
1144
1214
  * @param {Chunk} chunk the new chunk
1145
1215
  * @param {RuntimeModule} module the module that require a full hash
1146
1216
  * @returns {void}
@@ -1154,6 +1224,7 @@ class ChunkGraph {
1154
1224
  }
1155
1225
 
1156
1226
  /**
1227
+ * Disconnects chunk and entry module.
1157
1228
  * @param {Chunk} chunk the new chunk
1158
1229
  * @param {Module} module the entry module
1159
1230
  * @returns {void}
@@ -1170,6 +1241,7 @@ class ChunkGraph {
1170
1241
  }
1171
1242
 
1172
1243
  /**
1244
+ * Disconnects chunk and runtime module.
1173
1245
  * @param {Chunk} chunk the new chunk
1174
1246
  * @param {RuntimeModule} module the runtime module
1175
1247
  * @returns {void}
@@ -1186,6 +1258,7 @@ class ChunkGraph {
1186
1258
  }
1187
1259
 
1188
1260
  /**
1261
+ * Disconnects entry module.
1189
1262
  * @param {Module} module the entry module, it will no longer be entry
1190
1263
  * @returns {void}
1191
1264
  */
@@ -1199,6 +1272,7 @@ class ChunkGraph {
1199
1272
  }
1200
1273
 
1201
1274
  /**
1275
+ * Disconnects entries.
1202
1276
  * @param {Chunk} chunk the chunk, for which all entries will be removed
1203
1277
  * @returns {void}
1204
1278
  */
@@ -1216,6 +1290,7 @@ class ChunkGraph {
1216
1290
  }
1217
1291
 
1218
1292
  /**
1293
+ * Gets number of entry modules.
1219
1294
  * @param {Chunk} chunk the chunk
1220
1295
  * @returns {number} the amount of entry modules in chunk
1221
1296
  */
@@ -1225,6 +1300,7 @@ class ChunkGraph {
1225
1300
  }
1226
1301
 
1227
1302
  /**
1303
+ * Gets number of runtime modules.
1228
1304
  * @param {Chunk} chunk the chunk
1229
1305
  * @returns {number} the amount of entry modules in chunk
1230
1306
  */
@@ -1234,6 +1310,7 @@ class ChunkGraph {
1234
1310
  }
1235
1311
 
1236
1312
  /**
1313
+ * Gets chunk entry modules iterable.
1237
1314
  * @param {Chunk} chunk the chunk
1238
1315
  * @returns {Iterable<Module>} iterable of modules (do not modify)
1239
1316
  */
@@ -1243,6 +1320,7 @@ class ChunkGraph {
1243
1320
  }
1244
1321
 
1245
1322
  /**
1323
+ * Gets chunk entry dependent chunks iterable.
1246
1324
  * @param {Chunk} chunk the chunk
1247
1325
  * @returns {Iterable<Chunk>} iterable of chunks
1248
1326
  */
@@ -1267,6 +1345,7 @@ class ChunkGraph {
1267
1345
  }
1268
1346
 
1269
1347
  /**
1348
+ * Gets runtime chunk dependent chunks iterable.
1270
1349
  * @param {Chunk} chunk the chunk
1271
1350
  * @returns {Iterable<Chunk>} iterable of chunks and include chunks from children entrypoints
1272
1351
  */
@@ -1321,6 +1400,7 @@ class ChunkGraph {
1321
1400
  }
1322
1401
 
1323
1402
  /**
1403
+ * Checks whether this chunk graph contains the chunk.
1324
1404
  * @param {Chunk} chunk the chunk
1325
1405
  * @returns {boolean} true, when it has dependent chunks
1326
1406
  */
@@ -1337,6 +1417,7 @@ class ChunkGraph {
1337
1417
  }
1338
1418
 
1339
1419
  /**
1420
+ * Gets chunk runtime modules iterable.
1340
1421
  * @param {Chunk} chunk the chunk
1341
1422
  * @returns {Iterable<RuntimeModule>} iterable of modules (do not modify)
1342
1423
  */
@@ -1346,6 +1427,7 @@ class ChunkGraph {
1346
1427
  }
1347
1428
 
1348
1429
  /**
1430
+ * Gets chunk runtime modules in order.
1349
1431
  * @param {Chunk} chunk the chunk
1350
1432
  * @returns {RuntimeModule[]} array of modules in order of execution
1351
1433
  */
@@ -1365,6 +1447,7 @@ class ChunkGraph {
1365
1447
  }
1366
1448
 
1367
1449
  /**
1450
+ * Gets chunk full hash modules iterable.
1368
1451
  * @param {Chunk} chunk the chunk
1369
1452
  * @returns {Iterable<RuntimeModule> | undefined} iterable of modules (do not modify)
1370
1453
  */
@@ -1374,6 +1457,7 @@ class ChunkGraph {
1374
1457
  }
1375
1458
 
1376
1459
  /**
1460
+ * Gets chunk full hash modules set.
1377
1461
  * @param {Chunk} chunk the chunk
1378
1462
  * @returns {ReadonlySet<RuntimeModule> | undefined} set of modules (do not modify)
1379
1463
  */
@@ -1383,6 +1467,7 @@ class ChunkGraph {
1383
1467
  }
1384
1468
 
1385
1469
  /**
1470
+ * Gets chunk dependent hash modules iterable.
1386
1471
  * @param {Chunk} chunk the chunk
1387
1472
  * @returns {Iterable<RuntimeModule> | undefined} iterable of modules (do not modify)
1388
1473
  */
@@ -1392,6 +1477,7 @@ class ChunkGraph {
1392
1477
  }
1393
1478
 
1394
1479
  /**
1480
+ * Gets chunk entry modules with chunk group iterable.
1395
1481
  * @param {Chunk} chunk the chunk
1396
1482
  * @returns {Iterable<EntryModuleWithChunkGroup>} iterable of modules (do not modify)
1397
1483
  */
@@ -1401,6 +1487,7 @@ class ChunkGraph {
1401
1487
  }
1402
1488
 
1403
1489
  /**
1490
+ * Gets block chunk group.
1404
1491
  * @param {AsyncDependenciesBlock} depBlock the async block
1405
1492
  * @returns {ChunkGroup | undefined} the chunk group
1406
1493
  */
@@ -1409,6 +1496,7 @@ class ChunkGraph {
1409
1496
  }
1410
1497
 
1411
1498
  /**
1499
+ * Connects block and chunk group.
1412
1500
  * @param {AsyncDependenciesBlock} depBlock the async block
1413
1501
  * @param {ChunkGroup} chunkGroup the chunk group
1414
1502
  * @returns {void}
@@ -1419,6 +1507,7 @@ class ChunkGraph {
1419
1507
  }
1420
1508
 
1421
1509
  /**
1510
+ * Disconnects chunk group.
1422
1511
  * @param {ChunkGroup} chunkGroup the chunk group
1423
1512
  * @returns {void}
1424
1513
  */
@@ -1431,6 +1520,7 @@ class ChunkGraph {
1431
1520
  }
1432
1521
 
1433
1522
  /**
1523
+ * Returns the id of the module.
1434
1524
  * @param {Module} module the module
1435
1525
  * @returns {ModuleId | null} the id of the module
1436
1526
  */
@@ -1440,6 +1530,7 @@ class ChunkGraph {
1440
1530
  }
1441
1531
 
1442
1532
  /**
1533
+ * Updates module id using the provided module.
1443
1534
  * @param {Module} module the module
1444
1535
  * @param {ModuleId} id the id of the module
1445
1536
  * @returns {void}
@@ -1450,6 +1541,7 @@ class ChunkGraph {
1450
1541
  }
1451
1542
 
1452
1543
  /**
1544
+ * Returns the id of the runtime.
1453
1545
  * @param {string} runtime runtime
1454
1546
  * @returns {RuntimeId} the id of the runtime
1455
1547
  */
@@ -1458,6 +1550,7 @@ class ChunkGraph {
1458
1550
  }
1459
1551
 
1460
1552
  /**
1553
+ * Updates runtime id using the provided runtime.
1461
1554
  * @param {string} runtime runtime
1462
1555
  * @param {RuntimeId} id the id of the runtime
1463
1556
  * @returns {void}
@@ -1467,6 +1560,7 @@ class ChunkGraph {
1467
1560
  }
1468
1561
 
1469
1562
  /**
1563
+ * Get module hash info.
1470
1564
  * @template T
1471
1565
  * @param {Module} module the module
1472
1566
  * @param {RuntimeSpecMap<T>} hashes hashes data
@@ -1509,6 +1603,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1509
1603
  }
1510
1604
 
1511
1605
  /**
1606
+ * Checks whether this chunk graph contains the module.
1512
1607
  * @param {Module} module the module
1513
1608
  * @param {RuntimeSpec} runtime the runtime
1514
1609
  * @returns {boolean} true, if the module has hashes for this runtime
@@ -1520,6 +1615,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1520
1615
  }
1521
1616
 
1522
1617
  /**
1618
+ * Returns hash.
1523
1619
  * @param {Module} module the module
1524
1620
  * @param {RuntimeSpec} runtime the runtime
1525
1621
  * @returns {string} hash
@@ -1531,6 +1627,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1531
1627
  }
1532
1628
 
1533
1629
  /**
1630
+ * Gets rendered module hash.
1534
1631
  * @param {Module} module the module
1535
1632
  * @param {RuntimeSpec} runtime the runtime
1536
1633
  * @returns {string} hash
@@ -1542,6 +1639,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1542
1639
  }
1543
1640
 
1544
1641
  /**
1642
+ * Sets module hashes.
1545
1643
  * @param {Module} module the module
1546
1644
  * @param {RuntimeSpec} runtime the runtime
1547
1645
  * @param {string} hash the full hash
@@ -1557,6 +1655,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1557
1655
  }
1558
1656
 
1559
1657
  /**
1658
+ * Adds module runtime requirements.
1560
1659
  * @param {Module} module the module
1561
1660
  * @param {RuntimeSpec} runtime the runtime
1562
1661
  * @param {RuntimeRequirements} items runtime requirements to be added (ownership of this Set is given to ChunkGraph when transferOwnership not false)
@@ -1571,28 +1670,38 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1571
1670
  ) {
1572
1671
  const cgm = this._getChunkGraphModule(module);
1573
1672
  const runtimeRequirementsMap = cgm.runtimeRequirements;
1673
+ if (!transferOwnership) this._sharedModuleRuntimeRequirements.add(items);
1574
1674
  if (runtimeRequirementsMap === undefined) {
1575
1675
  /** @type {ChunkGraphRuntimeRequirements} */
1576
1676
  const map = new RuntimeSpecMap();
1577
- // TODO avoid cloning item and track ownership instead
1578
- map.set(runtime, transferOwnership ? items : new Set(items));
1677
+ map.set(runtime, items);
1579
1678
  cgm.runtimeRequirements = map;
1580
1679
  return;
1581
1680
  }
1582
1681
  runtimeRequirementsMap.update(runtime, (runtimeRequirements) => {
1583
- if (runtimeRequirements === undefined) {
1584
- return transferOwnership ? items : new Set(items);
1585
- } else if (!transferOwnership || runtimeRequirements.size >= items.size) {
1682
+ if (runtimeRequirements === undefined) return items;
1683
+ const owned =
1684
+ !this._sharedModuleRuntimeRequirements.has(runtimeRequirements);
1685
+ // Merge into whichever owned Set is larger; otherwise copy-on-write.
1686
+ if (owned && runtimeRequirements.size >= items.size) {
1687
+ for (const item of items) runtimeRequirements.add(item);
1688
+ return runtimeRequirements;
1689
+ } else if (transferOwnership) {
1690
+ for (const item of runtimeRequirements) items.add(item);
1691
+ this._sharedModuleRuntimeRequirements.delete(items);
1692
+ return items;
1693
+ } else if (owned) {
1586
1694
  for (const item of items) runtimeRequirements.add(item);
1587
1695
  return runtimeRequirements;
1588
1696
  }
1589
-
1590
- for (const item of runtimeRequirements) items.add(item);
1591
- return items;
1697
+ const merged = new Set(runtimeRequirements);
1698
+ for (const item of items) merged.add(item);
1699
+ return merged;
1592
1700
  });
1593
1701
  }
1594
1702
 
1595
1703
  /**
1704
+ * Adds chunk runtime requirements.
1596
1705
  * @param {Chunk} chunk the chunk
1597
1706
  * @param {RuntimeRequirements} items runtime requirements to be added (ownership of this Set is given to ChunkGraph)
1598
1707
  * @returns {void}
@@ -1611,6 +1720,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1611
1720
  }
1612
1721
 
1613
1722
  /**
1723
+ * Adds tree runtime requirements.
1614
1724
  * @param {Chunk} chunk the chunk
1615
1725
  * @param {Iterable<string>} items runtime requirements to be added
1616
1726
  * @returns {void}
@@ -1622,6 +1732,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1622
1732
  }
1623
1733
 
1624
1734
  /**
1735
+ * Gets module runtime requirements.
1625
1736
  * @param {Module} module the module
1626
1737
  * @param {RuntimeSpec} runtime the runtime
1627
1738
  * @returns {ReadOnlyRuntimeRequirements} runtime requirements
@@ -1634,6 +1745,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1634
1745
  }
1635
1746
 
1636
1747
  /**
1748
+ * Gets chunk runtime requirements.
1637
1749
  * @param {Chunk} chunk the chunk
1638
1750
  * @returns {ReadOnlyRuntimeRequirements} runtime requirements
1639
1751
  */
@@ -1644,6 +1756,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1644
1756
  }
1645
1757
 
1646
1758
  /**
1759
+ * Gets module graph hash.
1647
1760
  * @param {Module} module the module
1648
1761
  * @param {RuntimeSpec} runtime the runtime
1649
1762
  * @param {boolean} withConnections include connections
@@ -1657,6 +1770,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1657
1770
  }
1658
1771
 
1659
1772
  /**
1773
+ * Gets module graph hash big int.
1660
1774
  * @param {Module} module the module
1661
1775
  * @param {RuntimeSpec} runtime the runtime
1662
1776
  * @param {boolean} withConnections include connections
@@ -1672,6 +1786,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1672
1786
  }
1673
1787
 
1674
1788
  /**
1789
+ * Get module graph hash big int.
1675
1790
  * @param {ChunkGraphModule} cgm the ChunkGraphModule
1676
1791
  * @param {Module} module the module
1677
1792
  * @param {RuntimeSpec} runtime the runtime
@@ -1695,6 +1810,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1695
1810
  }
1696
1811
 
1697
1812
  /**
1813
+ * Get module graph hash with connections.
1698
1814
  * @param {ChunkGraphModule} cgm the ChunkGraphModule
1699
1815
  * @param {Module} module the module
1700
1816
  * @param {RuntimeSpec} runtime the runtime
@@ -1706,6 +1822,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1706
1822
  }
1707
1823
 
1708
1824
  /**
1825
+ * Active state to string.
1709
1826
  * @param {ConnectionState} state state
1710
1827
  * @returns {"F" | "T" | "O"} result
1711
1828
  */
@@ -1715,7 +1832,10 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1715
1832
  if (state === ModuleGraphConnection.TRANSITIVE_ONLY) return "O";
1716
1833
  throw new Error("Not implemented active state");
1717
1834
  };
1718
- const strict = module.buildMeta && module.buildMeta.strictHarmonyModule;
1835
+ const strict =
1836
+ module.buildMeta &&
1837
+ /** @type {JavascriptModuleBuildMeta} */ (module.buildMeta)
1838
+ .strictHarmonyModule;
1719
1839
  return cgm.graphHashesWithConnections.provide(runtime, () => {
1720
1840
  const graphHash = this._getModuleGraphHashBigInt(
1721
1841
  cgm,
@@ -1728,6 +1848,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1728
1848
  /** @type {Map<string, Module | Set<Module>>} */
1729
1849
  const connectedModules = new Map();
1730
1850
  /**
1851
+ * Process connection.
1731
1852
  * @param {ModuleGraphConnection} connection connection
1732
1853
  * @param {string} stateInfo state info
1733
1854
  */
@@ -1790,6 +1911,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1790
1911
  : connectedModules;
1791
1912
  const hash = createHash(this._hashFunction);
1792
1913
  /**
1914
+ * Adds module to hash.
1793
1915
  * @param {Module} module module
1794
1916
  */
1795
1917
  const addModuleToHash = (module) => {
@@ -1802,6 +1924,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1802
1924
  );
1803
1925
  };
1804
1926
  /**
1927
+ * Adds modules to hash.
1805
1928
  * @param {Set<Module>} modules modules
1806
1929
  */
1807
1930
  const addModulesToHash = (modules) => {
@@ -1836,6 +1959,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1836
1959
  }
1837
1960
 
1838
1961
  /**
1962
+ * Gets tree runtime requirements.
1839
1963
  * @param {Chunk} chunk the chunk
1840
1964
  * @returns {ReadOnlyRuntimeRequirements} runtime requirements
1841
1965
  */
@@ -1846,6 +1970,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1846
1970
 
1847
1971
  // TODO remove in webpack 6
1848
1972
  /**
1973
+ * Gets chunk graph for module.
1849
1974
  * @deprecated
1850
1975
  * @param {Module} module the module
1851
1976
  * @param {string} deprecateMessage message for the deprecation message
@@ -1857,6 +1982,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1857
1982
  if (fn) return fn(module);
1858
1983
  const newFn = util.deprecate(
1859
1984
  /**
1985
+ * Handles the callback logic for this hook.
1860
1986
  * @param {Module} module the module
1861
1987
  * @returns {ChunkGraph} the chunk graph
1862
1988
  */
@@ -1881,6 +2007,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1881
2007
  // TODO remove in webpack 6
1882
2008
  // BACKWARD-COMPAT START
1883
2009
  /**
2010
+ * Sets chunk graph for module.
1884
2011
  * @deprecated
1885
2012
  * @param {Module} module the module
1886
2013
  * @param {ChunkGraph} chunkGraph the chunk graph
@@ -1891,6 +2018,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1891
2018
  }
1892
2019
 
1893
2020
  /**
2021
+ * Clear chunk graph for module.
1894
2022
  * @deprecated
1895
2023
  * @param {Module} module the module
1896
2024
  * @returns {void}
@@ -1900,6 +2028,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1900
2028
  }
1901
2029
 
1902
2030
  /**
2031
+ * Gets chunk graph for chunk.
1903
2032
  * @deprecated
1904
2033
  * @param {Chunk} chunk the chunk
1905
2034
  * @param {string} deprecateMessage message for the deprecation message
@@ -1911,6 +2040,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1911
2040
  if (fn) return fn(chunk);
1912
2041
  const newFn = util.deprecate(
1913
2042
  /**
2043
+ * Handles the callback logic for this hook.
1914
2044
  * @param {Chunk} chunk the chunk
1915
2045
  * @returns {ChunkGraph} the chunk graph
1916
2046
  */
@@ -1933,6 +2063,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1933
2063
  }
1934
2064
 
1935
2065
  /**
2066
+ * Sets chunk graph for chunk.
1936
2067
  * @deprecated
1937
2068
  * @param {Chunk} chunk the chunk
1938
2069
  * @param {ChunkGraph} chunkGraph the chunk graph
@@ -1943,6 +2074,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1943
2074
  }
1944
2075
 
1945
2076
  /**
2077
+ * Clear chunk graph for chunk.
1946
2078
  * @deprecated
1947
2079
  * @param {Chunk} chunk the chunk
1948
2080
  * @returns {void}