webpack 5.59.0 → 5.94.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 (570) hide show
  1. package/README.md +48 -38
  2. package/bin/webpack.js +34 -10
  3. package/hot/dev-server.js +19 -5
  4. package/hot/lazy-compilation-node.js +13 -1
  5. package/hot/lazy-compilation-web.js +9 -0
  6. package/hot/log-apply-result.js +5 -0
  7. package/hot/log.js +23 -4
  8. package/hot/only-dev-server.js +3 -2
  9. package/hot/poll.js +5 -2
  10. package/hot/signal.js +6 -2
  11. package/lib/APIPlugin.js +226 -122
  12. package/lib/AbstractMethodError.js +10 -5
  13. package/lib/AsyncDependenciesBlock.js +13 -5
  14. package/lib/AutomaticPrefetchPlugin.js +2 -1
  15. package/lib/BannerPlugin.js +33 -12
  16. package/lib/Cache.js +16 -12
  17. package/lib/CacheFacade.js +13 -16
  18. package/lib/CaseSensitiveModulesWarning.js +8 -8
  19. package/lib/Chunk.js +60 -33
  20. package/lib/ChunkGraph.js +207 -72
  21. package/lib/ChunkGroup.js +40 -20
  22. package/lib/ChunkTemplate.js +43 -0
  23. package/lib/CleanPlugin.js +117 -32
  24. package/lib/CodeGenerationResults.js +8 -7
  25. package/lib/CommentCompilationWarning.js +0 -1
  26. package/lib/CompatibilityPlugin.js +85 -46
  27. package/lib/Compilation.js +712 -392
  28. package/lib/Compiler.js +393 -172
  29. package/lib/ConcatenationScope.js +10 -13
  30. package/lib/ConditionalInitFragment.js +22 -14
  31. package/lib/ConstPlugin.js +104 -64
  32. package/lib/ContextExclusionPlugin.js +3 -3
  33. package/lib/ContextModule.js +283 -108
  34. package/lib/ContextModuleFactory.js +151 -63
  35. package/lib/ContextReplacementPlugin.js +25 -10
  36. package/lib/CssModule.js +166 -0
  37. package/lib/DefinePlugin.js +254 -148
  38. package/lib/DelegatedModule.js +29 -6
  39. package/lib/DelegatedModuleFactoryPlugin.js +42 -22
  40. package/lib/DelegatedPlugin.js +4 -0
  41. package/lib/DependenciesBlock.js +17 -2
  42. package/lib/Dependency.js +58 -29
  43. package/lib/DependencyTemplate.js +24 -3
  44. package/lib/DependencyTemplates.js +2 -2
  45. package/lib/DllEntryPlugin.js +18 -1
  46. package/lib/DllModule.js +21 -4
  47. package/lib/DllModuleFactory.js +2 -1
  48. package/lib/DllPlugin.js +9 -7
  49. package/lib/DllReferencePlugin.js +50 -19
  50. package/lib/EntryOptionPlugin.js +6 -1
  51. package/lib/EntryPlugin.js +7 -4
  52. package/lib/Entrypoint.js +2 -2
  53. package/lib/EnvironmentNotSupportAsyncWarning.js +52 -0
  54. package/lib/EnvironmentPlugin.js +5 -2
  55. package/lib/ErrorHelpers.js +65 -26
  56. package/lib/EvalDevToolModulePlugin.js +37 -13
  57. package/lib/EvalSourceMapDevToolPlugin.js +50 -20
  58. package/lib/ExportsInfo.js +234 -133
  59. package/lib/ExportsInfoApiPlugin.js +31 -15
  60. package/lib/ExternalModule.js +391 -129
  61. package/lib/ExternalModuleFactoryPlugin.js +65 -17
  62. package/lib/FileSystemInfo.js +1038 -523
  63. package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
  64. package/lib/FlagDependencyExportsPlugin.js +352 -349
  65. package/lib/FlagDependencyUsagePlugin.js +10 -10
  66. package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
  67. package/lib/Generator.js +16 -8
  68. package/lib/GraphHelpers.js +3 -2
  69. package/lib/HookWebpackError.js +11 -13
  70. package/lib/HotModuleReplacementPlugin.js +221 -128
  71. package/lib/IgnoreErrorModuleFactory.js +4 -4
  72. package/lib/IgnorePlugin.js +5 -4
  73. package/lib/IgnoreWarningsPlugin.js +6 -9
  74. package/lib/InitFragment.js +39 -15
  75. package/lib/JavascriptMetaInfoPlugin.js +27 -15
  76. package/lib/LibManifestPlugin.js +45 -16
  77. package/lib/LoaderOptionsPlugin.js +13 -3
  78. package/lib/MainTemplate.js +74 -21
  79. package/lib/Module.js +155 -34
  80. package/lib/ModuleBuildError.js +13 -11
  81. package/lib/ModuleDependencyError.js +6 -4
  82. package/lib/ModuleDependencyWarning.js +6 -4
  83. package/lib/ModuleError.js +10 -5
  84. package/lib/ModuleFactory.js +4 -4
  85. package/lib/ModuleFilenameHelpers.js +164 -54
  86. package/lib/ModuleGraph.js +93 -53
  87. package/lib/ModuleGraphConnection.js +27 -13
  88. package/lib/ModuleHashingError.js +29 -0
  89. package/lib/ModuleInfoHeaderPlugin.js +92 -33
  90. package/lib/ModuleNotFoundError.js +5 -2
  91. package/lib/ModuleParseError.js +17 -9
  92. package/lib/ModuleProfile.js +1 -0
  93. package/lib/ModuleRestoreError.js +3 -1
  94. package/lib/ModuleStoreError.js +3 -2
  95. package/lib/ModuleTemplate.js +33 -1
  96. package/lib/ModuleTypeConstants.js +168 -0
  97. package/lib/ModuleWarning.js +10 -5
  98. package/lib/MultiCompiler.js +115 -38
  99. package/lib/MultiStats.js +75 -33
  100. package/lib/MultiWatching.js +6 -2
  101. package/lib/NodeStuffPlugin.js +136 -37
  102. package/lib/NormalModule.js +437 -194
  103. package/lib/NormalModuleFactory.js +313 -116
  104. package/lib/NormalModuleReplacementPlugin.js +10 -4
  105. package/lib/NullFactory.js +1 -1
  106. package/lib/OptimizationStages.js +3 -3
  107. package/lib/Parser.js +1 -1
  108. package/lib/PlatformPlugin.js +39 -0
  109. package/lib/PrefetchPlugin.js +4 -0
  110. package/lib/ProgressPlugin.js +83 -28
  111. package/lib/ProvidePlugin.js +37 -19
  112. package/lib/RawModule.js +18 -5
  113. package/lib/RecordIdsPlugin.js +8 -8
  114. package/lib/RequireJsStuffPlugin.js +22 -15
  115. package/lib/ResolverFactory.js +8 -4
  116. package/lib/RuntimeGlobals.js +99 -65
  117. package/lib/RuntimeModule.js +17 -15
  118. package/lib/RuntimePlugin.js +116 -13
  119. package/lib/RuntimeTemplate.js +304 -102
  120. package/lib/SelfModuleFactory.js +12 -0
  121. package/lib/SizeFormatHelpers.js +2 -4
  122. package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
  123. package/lib/SourceMapDevToolPlugin.js +89 -42
  124. package/lib/Stats.js +12 -7
  125. package/lib/Template.js +30 -33
  126. package/lib/TemplatedPathPlugin.js +102 -34
  127. package/lib/UseStrictPlugin.js +37 -12
  128. package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
  129. package/lib/WarnDeprecatedOptionPlugin.js +6 -0
  130. package/lib/WatchIgnorePlugin.js +46 -13
  131. package/lib/Watching.js +139 -76
  132. package/lib/WebpackError.js +14 -5
  133. package/lib/WebpackIsIncludedPlugin.js +22 -13
  134. package/lib/WebpackOptionsApply.js +162 -56
  135. package/lib/WebpackOptionsDefaulter.js +10 -3
  136. package/lib/asset/AssetGenerator.js +351 -99
  137. package/lib/asset/AssetModulesPlugin.js +57 -33
  138. package/lib/asset/AssetParser.js +15 -6
  139. package/lib/asset/AssetSourceGenerator.js +30 -10
  140. package/lib/asset/AssetSourceParser.js +8 -2
  141. package/lib/asset/RawDataUrlModule.js +162 -0
  142. package/lib/async-modules/AwaitDependenciesInitFragment.js +16 -13
  143. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  144. package/lib/buildChunkGraph.js +376 -420
  145. package/lib/cache/AddManagedPathsPlugin.js +6 -1
  146. package/lib/cache/IdleFileCachePlugin.js +26 -13
  147. package/lib/cache/MemoryCachePlugin.js +1 -1
  148. package/lib/cache/MemoryWithGcCachePlugin.js +13 -7
  149. package/lib/cache/PackFileCacheStrategy.js +172 -94
  150. package/lib/cache/ResolverCachePlugin.js +115 -43
  151. package/lib/cache/getLazyHashedEtag.js +2 -2
  152. package/lib/cache/mergeEtags.js +16 -21
  153. package/lib/cli.js +195 -110
  154. package/lib/config/browserslistTargetHandler.js +106 -41
  155. package/lib/config/defaults.js +572 -154
  156. package/lib/config/normalization.js +361 -322
  157. package/lib/config/target.js +105 -66
  158. package/lib/container/ContainerEntryDependency.js +2 -1
  159. package/lib/container/ContainerEntryModule.js +27 -11
  160. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  161. package/lib/container/ContainerExposedDependency.js +9 -0
  162. package/lib/container/ContainerPlugin.js +18 -12
  163. package/lib/container/ContainerReferencePlugin.js +1 -1
  164. package/lib/container/FallbackDependency.js +13 -0
  165. package/lib/container/FallbackItemDependency.js +3 -0
  166. package/lib/container/FallbackModule.js +19 -8
  167. package/lib/container/FallbackModuleFactory.js +1 -1
  168. package/lib/container/ModuleFederationPlugin.js +2 -0
  169. package/lib/container/RemoteModule.js +17 -4
  170. package/lib/container/RemoteRuntimeModule.js +31 -17
  171. package/lib/container/RemoteToExternalDependency.js +3 -0
  172. package/lib/container/options.js +18 -4
  173. package/lib/css/CssExportsGenerator.js +203 -0
  174. package/lib/css/CssGenerator.js +151 -0
  175. package/lib/css/CssLoadingRuntimeModule.js +592 -0
  176. package/lib/css/CssModulesPlugin.js +888 -0
  177. package/lib/css/CssParser.js +1049 -0
  178. package/lib/css/walkCssTokens.js +775 -0
  179. package/lib/debug/ProfilingPlugin.js +102 -54
  180. package/lib/dependencies/AMDDefineDependency.js +54 -10
  181. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +204 -61
  182. package/lib/dependencies/AMDPlugin.js +44 -24
  183. package/lib/dependencies/AMDRequireArrayDependency.js +34 -10
  184. package/lib/dependencies/AMDRequireContextDependency.js +15 -0
  185. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  186. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +185 -54
  187. package/lib/dependencies/AMDRequireDependency.js +21 -6
  188. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  189. package/lib/dependencies/AMDRuntimeModules.js +4 -4
  190. package/lib/dependencies/CachedConstDependency.js +22 -1
  191. package/lib/dependencies/CommonJsDependencyHelpers.js +16 -2
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +77 -47
  193. package/lib/dependencies/CommonJsExportsDependency.js +28 -5
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +111 -39
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +42 -8
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +530 -130
  197. package/lib/dependencies/CommonJsPlugin.js +51 -26
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +23 -2
  199. package/lib/dependencies/CommonJsRequireDependency.js +9 -1
  200. package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -8
  201. package/lib/dependencies/ConstDependency.js +12 -3
  202. package/lib/dependencies/ContextDependency.js +32 -5
  203. package/lib/dependencies/ContextDependencyHelpers.js +92 -62
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -1
  205. package/lib/dependencies/ContextElementDependency.js +41 -4
  206. package/lib/dependencies/CreateScriptUrlDependency.js +22 -1
  207. package/lib/dependencies/CriticalDependencyWarning.js +4 -1
  208. package/lib/dependencies/CssExportDependency.js +156 -0
  209. package/lib/dependencies/CssImportDependency.js +125 -0
  210. package/lib/dependencies/CssLocalIdentifierDependency.js +245 -0
  211. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +111 -0
  212. package/lib/dependencies/CssUrlDependency.js +164 -0
  213. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  214. package/lib/dependencies/DllEntryDependency.js +14 -0
  215. package/lib/dependencies/DynamicExports.js +15 -11
  216. package/lib/dependencies/ExportsInfoDependency.js +26 -5
  217. package/lib/dependencies/ExternalModuleDependency.js +109 -0
  218. package/lib/dependencies/ExternalModuleInitFragment.js +133 -0
  219. package/lib/dependencies/HarmonyAcceptDependency.js +11 -2
  220. package/lib/dependencies/HarmonyAcceptImportDependency.js +9 -4
  221. package/lib/dependencies/HarmonyCompatibilityDependency.js +6 -5
  222. package/lib/dependencies/HarmonyDetectionParserPlugin.js +29 -3
  223. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +152 -0
  224. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +96 -51
  225. package/lib/dependencies/HarmonyExportExpressionDependency.js +21 -4
  226. package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
  227. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +216 -108
  228. package/lib/dependencies/HarmonyExportInitFragment.js +21 -9
  229. package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
  230. package/lib/dependencies/HarmonyExports.js +13 -7
  231. package/lib/dependencies/HarmonyImportDependency.js +65 -19
  232. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +268 -74
  233. package/lib/dependencies/HarmonyImportSideEffectDependency.js +11 -5
  234. package/lib/dependencies/HarmonyImportSpecifierDependency.js +180 -36
  235. package/lib/dependencies/HarmonyModulesPlugin.js +33 -5
  236. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
  237. package/lib/dependencies/ImportContextDependency.js +15 -2
  238. package/lib/dependencies/ImportDependency.js +50 -12
  239. package/lib/dependencies/ImportEagerDependency.js +11 -6
  240. package/lib/dependencies/ImportMetaContextDependency.js +42 -0
  241. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +301 -0
  242. package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
  243. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  244. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  245. package/lib/dependencies/ImportMetaPlugin.js +128 -59
  246. package/lib/dependencies/ImportParserPlugin.js +153 -83
  247. package/lib/dependencies/ImportPlugin.js +21 -7
  248. package/lib/dependencies/ImportWeakDependency.js +11 -6
  249. package/lib/dependencies/JsonExportsDependency.js +38 -30
  250. package/lib/dependencies/LoaderDependency.js +14 -0
  251. package/lib/dependencies/LoaderImportDependency.js +14 -0
  252. package/lib/dependencies/LoaderPlugin.js +54 -40
  253. package/lib/dependencies/LocalModule.js +17 -1
  254. package/lib/dependencies/LocalModuleDependency.js +15 -0
  255. package/lib/dependencies/LocalModulesHelpers.js +22 -4
  256. package/lib/dependencies/ModuleDecoratorDependency.js +9 -1
  257. package/lib/dependencies/ModuleDependency.js +24 -7
  258. package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
  259. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  260. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  261. package/lib/dependencies/PrefetchDependency.js +3 -0
  262. package/lib/dependencies/ProvidedDependency.js +43 -8
  263. package/lib/dependencies/PureExpressionDependency.js +73 -39
  264. package/lib/dependencies/RequireContextDependency.js +6 -16
  265. package/lib/dependencies/RequireContextDependencyParserPlugin.js +14 -6
  266. package/lib/dependencies/RequireContextPlugin.js +20 -7
  267. package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
  268. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +29 -12
  269. package/lib/dependencies/RequireEnsureDependency.js +16 -2
  270. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  271. package/lib/dependencies/RequireEnsurePlugin.js +27 -7
  272. package/lib/dependencies/RequireHeaderDependency.js +14 -1
  273. package/lib/dependencies/RequireIncludeDependency.js +6 -1
  274. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
  275. package/lib/dependencies/RequireIncludePlugin.js +25 -5
  276. package/lib/dependencies/RequireResolveContextDependency.js +19 -2
  277. package/lib/dependencies/RequireResolveDependency.js +8 -1
  278. package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
  279. package/lib/dependencies/RuntimeRequirementsDependency.js +9 -1
  280. package/lib/dependencies/StaticExportsDependency.js +8 -0
  281. package/lib/dependencies/SystemPlugin.js +49 -22
  282. package/lib/dependencies/SystemRuntimeModule.js +1 -1
  283. package/lib/dependencies/URLDependency.js +20 -13
  284. package/lib/dependencies/URLPlugin.js +115 -27
  285. package/lib/dependencies/UnsupportedDependency.js +13 -0
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
  287. package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -1
  289. package/lib/dependencies/WorkerDependency.js +47 -3
  290. package/lib/dependencies/WorkerPlugin.js +143 -59
  291. package/lib/dependencies/getFunctionExpression.js +9 -0
  292. package/lib/dependencies/processExportInfo.js +3 -1
  293. package/lib/electron/ElectronTargetPlugin.js +1 -0
  294. package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
  295. package/lib/esm/ModuleChunkFormatPlugin.js +92 -55
  296. package/lib/esm/ModuleChunkLoadingPlugin.js +12 -1
  297. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +141 -25
  298. package/lib/formatLocation.js +1 -2
  299. package/lib/hmr/HotModuleReplacement.runtime.js +37 -25
  300. package/lib/hmr/HotModuleReplacementRuntimeModule.js +2 -1
  301. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +13 -15
  302. package/lib/hmr/LazyCompilationPlugin.js +94 -41
  303. package/lib/hmr/lazyCompilationBackend.js +107 -44
  304. package/lib/ids/ChunkModuleIdRangePlugin.js +12 -3
  305. package/lib/ids/DeterministicChunkIdsPlugin.js +13 -6
  306. package/lib/ids/DeterministicModuleIdsPlugin.js +59 -35
  307. package/lib/ids/HashedModuleIdsPlugin.js +24 -16
  308. package/lib/ids/IdHelpers.js +59 -49
  309. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  310. package/lib/ids/NamedModuleIdsPlugin.js +20 -12
  311. package/lib/ids/NaturalModuleIdsPlugin.js +10 -13
  312. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  313. package/lib/ids/OccurrenceModuleIdsPlugin.js +14 -11
  314. package/lib/ids/SyncModuleIdsPlugin.js +146 -0
  315. package/lib/index.js +44 -5
  316. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +9 -7
  317. package/lib/javascript/BasicEvaluatedExpression.js +133 -19
  318. package/lib/javascript/ChunkHelpers.js +33 -0
  319. package/lib/javascript/CommonJsChunkFormatPlugin.js +18 -15
  320. package/lib/javascript/EnableChunkLoadingPlugin.js +11 -6
  321. package/lib/javascript/JavascriptGenerator.js +37 -6
  322. package/lib/javascript/JavascriptModulesPlugin.js +523 -295
  323. package/lib/javascript/JavascriptParser.js +1591 -574
  324. package/lib/javascript/JavascriptParserHelpers.js +58 -37
  325. package/lib/javascript/StartupHelpers.js +69 -47
  326. package/lib/json/JsonData.js +33 -0
  327. package/lib/json/JsonGenerator.js +29 -21
  328. package/lib/json/JsonModulesPlugin.js +13 -7
  329. package/lib/json/JsonParser.js +30 -16
  330. package/lib/library/AbstractLibraryPlugin.js +6 -2
  331. package/lib/library/AmdLibraryPlugin.js +34 -18
  332. package/lib/library/AssignLibraryPlugin.js +68 -32
  333. package/lib/library/EnableLibraryPlugin.js +39 -14
  334. package/lib/library/ExportPropertyLibraryPlugin.js +14 -5
  335. package/lib/library/JsonpLibraryPlugin.js +4 -3
  336. package/lib/library/ModernModuleLibraryPlugin.js +144 -0
  337. package/lib/library/ModuleLibraryPlugin.js +12 -7
  338. package/lib/library/SystemLibraryPlugin.js +6 -4
  339. package/lib/library/UmdLibraryPlugin.js +119 -100
  340. package/lib/logging/Logger.js +59 -6
  341. package/lib/logging/createConsoleLogger.js +25 -40
  342. package/lib/logging/runtime.js +8 -9
  343. package/lib/logging/truncateArgs.js +9 -8
  344. package/lib/node/CommonJsChunkLoadingPlugin.js +18 -2
  345. package/lib/node/NodeEnvironmentPlugin.js +14 -8
  346. package/lib/node/NodeTargetPlugin.js +7 -0
  347. package/lib/node/NodeTemplatePlugin.js +10 -2
  348. package/lib/node/NodeWatchFileSystem.js +100 -50
  349. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +51 -26
  350. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -2
  351. package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
  352. package/lib/node/RequireChunkLoadingRuntimeModule.js +49 -26
  353. package/lib/node/nodeConsole.js +48 -31
  354. package/lib/optimize/AggressiveMergingPlugin.js +10 -4
  355. package/lib/optimize/AggressiveSplittingPlugin.js +26 -21
  356. package/lib/optimize/ConcatenatedModule.js +353 -212
  357. package/lib/optimize/EnsureChunkConditionsPlugin.js +4 -1
  358. package/lib/optimize/FlagIncludedChunksPlugin.js +14 -8
  359. package/lib/optimize/InnerGraph.js +30 -25
  360. package/lib/optimize/InnerGraphPlugin.js +105 -64
  361. package/lib/optimize/LimitChunkCountPlugin.js +32 -9
  362. package/lib/optimize/MangleExportsPlugin.js +7 -2
  363. package/lib/optimize/MinMaxSizeWarning.js +6 -1
  364. package/lib/optimize/ModuleConcatenationPlugin.js +150 -83
  365. package/lib/optimize/RealContentHashPlugin.js +99 -43
  366. package/lib/optimize/RemoveParentModulesPlugin.js +131 -48
  367. package/lib/optimize/RuntimeChunkPlugin.js +15 -2
  368. package/lib/optimize/SideEffectsFlagPlugin.js +119 -63
  369. package/lib/optimize/SplitChunksPlugin.js +129 -78
  370. package/lib/performance/SizeLimitsPlugin.js +22 -8
  371. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
  372. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +4 -1
  373. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +8 -5
  374. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -3
  375. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +5 -3
  376. package/lib/rules/BasicEffectRulePlugin.js +7 -1
  377. package/lib/rules/BasicMatcherRulePlugin.js +8 -1
  378. package/lib/rules/ObjectMatcherRulePlugin.js +19 -2
  379. package/lib/rules/RuleSetCompiler.js +53 -32
  380. package/lib/rules/UseEffectRulePlugin.js +42 -36
  381. package/lib/runtime/AsyncModuleRuntimeModule.js +56 -69
  382. package/lib/runtime/AutoPublicPathRuntimeModule.js +25 -9
  383. package/lib/runtime/BaseUriRuntimeModule.js +35 -0
  384. package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
  385. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
  386. package/lib/runtime/CompatRuntimeModule.js +7 -2
  387. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  388. package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
  389. package/lib/runtime/CreateScriptUrlRuntimeModule.js +13 -36
  390. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -3
  391. package/lib/runtime/EnsureChunkRuntimeModule.js +29 -15
  392. package/lib/runtime/GetChunkFilenameRuntimeModule.js +56 -43
  393. package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
  394. package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
  395. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +98 -0
  396. package/lib/runtime/GlobalRuntimeModule.js +1 -1
  397. package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
  398. package/lib/runtime/LoadScriptRuntimeModule.js +61 -45
  399. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
  400. package/lib/runtime/NonceRuntimeModule.js +24 -0
  401. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
  402. package/lib/runtime/PublicPathRuntimeModule.js +9 -2
  403. package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
  404. package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
  405. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  406. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +36 -28
  407. package/lib/runtime/StartupEntrypointRuntimeModule.js +13 -9
  408. package/lib/runtime/SystemContextRuntimeModule.js +1 -1
  409. package/lib/schemes/DataUriPlugin.js +16 -3
  410. package/lib/schemes/HttpUriPlugin.js +336 -120
  411. package/lib/serialization/ArraySerializer.js +22 -6
  412. package/lib/serialization/BinaryMiddleware.js +212 -33
  413. package/lib/serialization/DateObjectSerializer.js +16 -4
  414. package/lib/serialization/ErrorObjectSerializer.js +23 -6
  415. package/lib/serialization/FileMiddleware.js +187 -86
  416. package/lib/serialization/MapObjectSerializer.js +25 -8
  417. package/lib/serialization/NullPrototypeObjectSerializer.js +26 -8
  418. package/lib/serialization/ObjectMiddleware.js +96 -66
  419. package/lib/serialization/PlainObjectSerializer.js +51 -14
  420. package/lib/serialization/RegExpObjectSerializer.js +17 -5
  421. package/lib/serialization/Serializer.js +23 -5
  422. package/lib/serialization/SerializerMiddleware.js +8 -8
  423. package/lib/serialization/SetObjectSerializer.js +22 -6
  424. package/lib/serialization/SingleItemMiddleware.js +2 -2
  425. package/lib/serialization/types.js +2 -2
  426. package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
  427. package/lib/sharing/ConsumeSharedModule.js +40 -17
  428. package/lib/sharing/ConsumeSharedPlugin.js +139 -102
  429. package/lib/sharing/ConsumeSharedRuntimeModule.js +144 -130
  430. package/lib/sharing/ProvideForSharedDependency.js +0 -1
  431. package/lib/sharing/ProvideSharedDependency.js +17 -0
  432. package/lib/sharing/ProvideSharedModule.js +19 -6
  433. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  434. package/lib/sharing/ProvideSharedPlugin.js +37 -30
  435. package/lib/sharing/SharePlugin.js +2 -2
  436. package/lib/sharing/ShareRuntimeModule.js +20 -10
  437. package/lib/sharing/resolveMatchedConfigs.js +6 -5
  438. package/lib/sharing/utils.js +338 -34
  439. package/lib/stats/DefaultStatsFactoryPlugin.js +660 -396
  440. package/lib/stats/DefaultStatsPresetPlugin.js +85 -25
  441. package/lib/stats/DefaultStatsPrinterPlugin.js +525 -145
  442. package/lib/stats/StatsFactory.js +128 -57
  443. package/lib/stats/StatsPrinter.js +77 -46
  444. package/lib/util/ArrayHelpers.js +35 -1
  445. package/lib/util/ArrayQueue.js +15 -22
  446. package/lib/util/AsyncQueue.js +37 -16
  447. package/lib/util/IterableHelpers.js +3 -4
  448. package/lib/util/LazyBucketSortedSet.js +60 -44
  449. package/lib/util/LazySet.js +11 -2
  450. package/lib/util/MapHelpers.js +17 -5
  451. package/lib/util/ParallelismFactorCalculator.js +11 -1
  452. package/lib/util/Queue.js +9 -3
  453. package/lib/util/Semaphore.js +4 -7
  454. package/lib/util/SetHelpers.js +5 -5
  455. package/lib/util/SortableSet.js +19 -6
  456. package/lib/util/StackedCacheMap.js +33 -3
  457. package/lib/util/StackedMap.js +1 -3
  458. package/lib/util/StringXor.js +46 -0
  459. package/lib/util/TupleQueue.js +9 -3
  460. package/lib/util/TupleSet.js +15 -5
  461. package/lib/util/URLAbsoluteSpecifier.js +8 -8
  462. package/lib/util/WeakTupleMap.js +70 -28
  463. package/lib/util/binarySearchBounds.js +51 -9
  464. package/lib/util/chainedImports.js +97 -0
  465. package/lib/util/cleverMerge.js +51 -36
  466. package/lib/util/comparators.js +146 -83
  467. package/lib/util/compileBooleanMatcher.js +35 -7
  468. package/lib/util/conventions.js +126 -0
  469. package/lib/util/create-schema-validation.js +9 -2
  470. package/lib/util/createHash.js +49 -14
  471. package/lib/util/deprecation.js +48 -15
  472. package/lib/util/deterministicGrouping.js +71 -39
  473. package/lib/util/extractUrlAndGlobal.js +3 -0
  474. package/lib/util/findGraphRoots.js +7 -5
  475. package/lib/util/fs.js +419 -94
  476. package/lib/util/hash/BatchedHash.js +10 -4
  477. package/lib/util/hash/md4.js +20 -0
  478. package/lib/util/hash/wasm-hash.js +163 -0
  479. package/lib/util/hash/xxhash64.js +7 -141
  480. package/lib/util/identifier.js +140 -93
  481. package/lib/util/internalSerializables.js +22 -0
  482. package/lib/util/makeSerializable.js +7 -0
  483. package/lib/util/memoize.js +10 -10
  484. package/lib/util/mergeScope.js +76 -0
  485. package/lib/util/nonNumericOnlyHash.js +22 -0
  486. package/lib/util/numberHash.js +84 -34
  487. package/lib/util/objectToMap.js +0 -1
  488. package/lib/util/processAsyncTree.js +7 -1
  489. package/lib/util/propertyAccess.js +7 -55
  490. package/lib/util/propertyName.js +77 -0
  491. package/lib/util/registerExternalSerializer.js +2 -2
  492. package/lib/util/runtime.js +188 -133
  493. package/lib/util/semver.js +64 -56
  494. package/lib/util/serialization.js +26 -1
  495. package/lib/util/smartGrouping.js +10 -10
  496. package/lib/util/source.js +1 -1
  497. package/lib/validateSchema.js +6 -2
  498. package/lib/wasm/EnableWasmLoadingPlugin.js +9 -4
  499. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +70 -30
  500. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  501. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +34 -16
  502. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +32 -12
  503. package/lib/wasm-async/AsyncWebAssemblyParser.js +17 -4
  504. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +72 -31
  505. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
  506. package/lib/wasm-sync/WebAssemblyGenerator.js +72 -52
  507. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -4
  508. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
  509. package/lib/wasm-sync/WebAssemblyParser.js +23 -9
  510. package/lib/wasm-sync/WebAssemblyUtils.js +5 -4
  511. package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
  512. package/lib/web/FetchCompileWasmPlugin.js +59 -42
  513. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  514. package/lib/web/JsonpChunkLoadingRuntimeModule.js +71 -41
  515. package/lib/webpack.js +43 -12
  516. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +15 -12
  517. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +55 -40
  518. package/module.d.ts +233 -0
  519. package/package.json +85 -139
  520. package/schemas/WebpackOptions.check.js +1 -1
  521. package/schemas/WebpackOptions.json +679 -47
  522. package/schemas/plugins/BannerPlugin.check.js +1 -1
  523. package/schemas/plugins/BannerPlugin.json +9 -1
  524. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  525. package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
  526. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  529. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  530. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  531. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  532. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  534. package/schemas/plugins/container/ContainerPlugin.json +10 -1
  535. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  536. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  537. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  538. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  539. package/schemas/plugins/container/ModuleFederationPlugin.json +12 -1
  540. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +7 -0
  541. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +6 -0
  542. package/schemas/plugins/css/CssAutoGeneratorOptions.json +3 -0
  543. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +7 -0
  544. package/schemas/plugins/css/CssAutoParserOptions.check.js +6 -0
  545. package/schemas/plugins/css/CssAutoParserOptions.json +3 -0
  546. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
  547. package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
  548. package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
  549. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +7 -0
  550. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +6 -0
  551. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +3 -0
  552. package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +7 -0
  553. package/schemas/plugins/css/CssGlobalParserOptions.check.js +6 -0
  554. package/schemas/plugins/css/CssGlobalParserOptions.json +3 -0
  555. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
  556. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
  557. package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
  558. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
  559. package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
  560. package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
  561. package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
  562. package/schemas/plugins/css/CssParserOptions.check.js +6 -0
  563. package/schemas/plugins/css/CssParserOptions.json +3 -0
  564. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  565. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  566. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  567. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  568. package/schemas/plugins/schemes/HttpUriPlugin.json +4 -0
  569. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  570. package/types.d.ts +5026 -1756
@@ -28,11 +28,10 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
28
28
  /** @typedef {import("../../declarations/WebpackOptions").Output} OutputOptions */
29
29
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
30
30
  /** @typedef {import("../ChunkGroup")} ChunkGroup */
31
- /** @typedef {import("../Compilation").AssetInfo} AssetInfo */
32
- /** @typedef {import("../Compilation").PathData} PathData */
33
31
  /** @typedef {import("../Compiler")} Compiler */
34
32
  /** @typedef {import("../Module")} Module */
35
33
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
34
+ /** @typedef {import("../TemplatedPathPlugin").TemplatePath} TemplatePath */
36
35
  /** @typedef {import("../util/deterministicGrouping").GroupedItems<Module>} DeterministicGroupingGroupedItemsForModule */
37
36
  /** @typedef {import("../util/deterministicGrouping").Options<Module>} DeterministicGroupingOptionsForModule */
38
37
 
@@ -41,7 +40,7 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
41
40
  /**
42
41
  * @callback ChunkFilterFunction
43
42
  * @param {Chunk} chunk
44
- * @returns {boolean}
43
+ * @returns {boolean | undefined}
45
44
  */
46
45
 
47
46
  /**
@@ -52,7 +51,7 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
52
51
  */
53
52
 
54
53
  /**
55
- * @typedef {Object} CacheGroupSource
54
+ * @typedef {object} CacheGroupSource
56
55
  * @property {string=} key
57
56
  * @property {number=} priority
58
57
  * @property {GetName=} getName
@@ -67,15 +66,15 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
67
66
  * @property {number=} minChunks
68
67
  * @property {number=} maxAsyncRequests
69
68
  * @property {number=} maxInitialRequests
70
- * @property {(string | function(PathData, AssetInfo=): string)=} filename
69
+ * @property {TemplatePath=} filename
71
70
  * @property {string=} idHint
72
- * @property {string} automaticNameDelimiter
71
+ * @property {string=} automaticNameDelimiter
73
72
  * @property {boolean=} reuseExistingChunk
74
73
  * @property {boolean=} usedExports
75
74
  */
76
75
 
77
76
  /**
78
- * @typedef {Object} CacheGroup
77
+ * @typedef {object} CacheGroup
79
78
  * @property {string} key
80
79
  * @property {number=} priority
81
80
  * @property {GetName=} getName
@@ -89,7 +88,7 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
89
88
  * @property {number=} minChunks
90
89
  * @property {number=} maxAsyncRequests
91
90
  * @property {number=} maxInitialRequests
92
- * @property {(string | function(PathData, AssetInfo=): string)=} filename
91
+ * @property {TemplatePath=} filename
93
92
  * @property {string=} idHint
94
93
  * @property {string} automaticNameDelimiter
95
94
  * @property {boolean} reuseExistingChunk
@@ -101,7 +100,8 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
101
100
  */
102
101
 
103
102
  /**
104
- * @typedef {Object} FallbackCacheGroup
103
+ * @typedef {object} FallbackCacheGroup
104
+ * @property {ChunkFilterFunction} chunksFilter
105
105
  * @property {SplitChunksSizes} minSize
106
106
  * @property {SplitChunksSizes} maxAsyncSize
107
107
  * @property {SplitChunksSizes} maxInitialSize
@@ -109,7 +109,7 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
109
109
  */
110
110
 
111
111
  /**
112
- * @typedef {Object} CacheGroupsContext
112
+ * @typedef {object} CacheGroupsContext
113
113
  * @property {ModuleGraph} moduleGraph
114
114
  * @property {ChunkGraph} chunkGraph
115
115
  */
@@ -130,7 +130,7 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
130
130
  */
131
131
 
132
132
  /**
133
- * @typedef {Object} SplitChunksOptions
133
+ * @typedef {object} SplitChunksOptions
134
134
  * @property {ChunkFilterFunction} chunksFilter
135
135
  * @property {string[]} defaultSizeTypes
136
136
  * @property {SplitChunksSizes} minSize
@@ -143,7 +143,7 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
143
143
  * @property {number} maxAsyncRequests
144
144
  * @property {number} maxInitialRequests
145
145
  * @property {boolean} hidePathInfo
146
- * @property {string | function(PathData, AssetInfo=): string} filename
146
+ * @property {TemplatePath} filename
147
147
  * @property {string} automaticNameDelimiter
148
148
  * @property {GetCacheGroups} getCacheGroups
149
149
  * @property {GetName} getName
@@ -152,23 +152,22 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
152
152
  */
153
153
 
154
154
  /**
155
- * @typedef {Object} ChunksInfoItem
155
+ * @typedef {object} ChunksInfoItem
156
156
  * @property {SortableSet<Module>} modules
157
157
  * @property {CacheGroup} cacheGroup
158
158
  * @property {number} cacheGroupIndex
159
159
  * @property {string} name
160
160
  * @property {Record<string, number>} sizes
161
161
  * @property {Set<Chunk>} chunks
162
- * @property {Set<Chunk>} reuseableChunks
162
+ * @property {Set<Chunk>} reusableChunks
163
163
  * @property {Set<bigint | Chunk>} chunksKeys
164
164
  */
165
165
 
166
166
  const defaultGetName = /** @type {GetName} */ (() => {});
167
167
 
168
168
  const deterministicGroupingForModules =
169
- /** @type {function(DeterministicGroupingOptionsForModule): DeterministicGroupingGroupedItemsForModule[]} */ (
170
- deterministicGrouping
171
- );
169
+ /** @type {function(DeterministicGroupingOptionsForModule): DeterministicGroupingGroupedItemsForModule[]} */
170
+ (deterministicGrouping);
172
171
 
173
172
  /** @type {WeakMap<Module, string>} */
174
173
  const getKeyCache = new WeakMap();
@@ -179,11 +178,13 @@ const getKeyCache = new WeakMap();
179
178
  * @returns {string} hashed filename
180
179
  */
181
180
  const hashFilename = (name, outputOptions) => {
182
- const digest = /** @type {string} */ (
183
- createHash(outputOptions.hashFunction)
184
- .update(name)
185
- .digest(outputOptions.hashDigest)
186
- );
181
+ const digest =
182
+ /** @type {string} */
183
+ (
184
+ createHash(outputOptions.hashFunction)
185
+ .update(name)
186
+ .digest(outputOptions.hashDigest)
187
+ );
187
188
  return digest.slice(0, 8);
188
189
  };
189
190
 
@@ -199,10 +200,21 @@ const getRequests = chunk => {
199
200
  return requests;
200
201
  };
201
202
 
203
+ /**
204
+ * @template {object} T
205
+ * @template {object} R
206
+ * @param {T} obj obj an object
207
+ * @param {function(T[keyof T], keyof T): T[keyof T]} fn fn
208
+ * @returns {T} result
209
+ */
202
210
  const mapObject = (obj, fn) => {
203
211
  const newObj = Object.create(null);
204
212
  for (const key of Object.keys(obj)) {
205
- newObj[key] = fn(obj[key], key);
213
+ newObj[key] = fn(
214
+ obj[/** @type {keyof T} */ (key)],
215
+ /** @type {keyof T} */
216
+ (key)
217
+ );
206
218
  }
207
219
  return newObj;
208
220
  };
@@ -253,12 +265,24 @@ const compareEntries = (a, b) => {
253
265
  return compareModuleIterables(modulesA, modulesB);
254
266
  };
255
267
 
268
+ /**
269
+ * @param {Chunk} chunk the chunk
270
+ * @returns {boolean} true, if the chunk is an entry chunk
271
+ */
256
272
  const INITIAL_CHUNK_FILTER = chunk => chunk.canBeInitial();
273
+ /**
274
+ * @param {Chunk} chunk the chunk
275
+ * @returns {boolean} true, if the chunk is an async chunk
276
+ */
257
277
  const ASYNC_CHUNK_FILTER = chunk => !chunk.canBeInitial();
278
+ /**
279
+ * @param {Chunk} chunk the chunk
280
+ * @returns {boolean} always true
281
+ */
258
282
  const ALL_CHUNK_FILTER = chunk => true;
259
283
 
260
284
  /**
261
- * @param {OptimizationSplitChunksSizes} value the sizes
285
+ * @param {OptimizationSplitChunksSizes | undefined} value the sizes
262
286
  * @param {string[]} defaultSizeTypes the default size types
263
287
  * @returns {SplitChunksSizes} normalized representation
264
288
  */
@@ -270,13 +294,12 @@ const normalizeSizes = (value, defaultSizeTypes) => {
270
294
  return o;
271
295
  } else if (typeof value === "object" && value !== null) {
272
296
  return { ...value };
273
- } else {
274
- return {};
275
297
  }
298
+ return {};
276
299
  };
277
300
 
278
301
  /**
279
- * @param {...SplitChunksSizes} sizes the sizes
302
+ * @param {...(SplitChunksSizes | undefined)} sizes the sizes
280
303
  * @returns {SplitChunksSizes} the merged sizes
281
304
  */
282
305
  const mergeSizes = (...sizes) => {
@@ -311,11 +334,7 @@ const combineSizes = (a, b, combine) => {
311
334
  /** @type {SplitChunksSizes} */
312
335
  const result = {};
313
336
  for (const key of aKeys) {
314
- if (bKeys.has(key)) {
315
- result[key] = combine(a[key], b[key]);
316
- } else {
317
- result[key] = a[key];
318
- }
337
+ result[key] = bKeys.has(key) ? combine(a[key], b[key]) : a[key];
319
338
  }
320
339
  for (const key of bKeys) {
321
340
  if (!aKeys.has(key)) {
@@ -385,8 +404,8 @@ const totalSize = sizes => {
385
404
  };
386
405
 
387
406
  /**
388
- * @param {false|string|Function} name the chunk name
389
- * @returns {GetName} a function to get the name of the chunk
407
+ * @param {false|string|Function|undefined} name the chunk name
408
+ * @returns {GetName | undefined} a function to get the name of the chunk
390
409
  */
391
410
  const normalizeName = name => {
392
411
  if (typeof name === "string") {
@@ -411,6 +430,9 @@ const normalizeChunksFilter = chunks => {
411
430
  if (chunks === "all") {
412
431
  return ALL_CHUNK_FILTER;
413
432
  }
433
+ if (chunks instanceof RegExp) {
434
+ return chunk => (chunk.name ? chunks.test(chunk.name) : false);
435
+ }
414
436
  if (typeof chunks === "function") {
415
437
  return chunks;
416
438
  }
@@ -482,7 +504,7 @@ const normalizeCacheGroups = (cacheGroups, defaultSizeTypes) => {
482
504
  */
483
505
  const fn = (module, context) => {
484
506
  /** @type {CacheGroupSource[]} */
485
- let results = [];
507
+ const results = [];
486
508
  for (const fn of handlers) {
487
509
  fn(module, context, results);
488
510
  }
@@ -658,6 +680,9 @@ module.exports = class SplitChunksPlugin {
658
680
  automaticNameDelimiter: options.automaticNameDelimiter,
659
681
  usedExports: options.usedExports,
660
682
  fallbackCacheGroup: {
683
+ chunksFilter: normalizeChunksFilter(
684
+ fallbackCacheGroup.chunks || options.chunks || "all"
685
+ ),
661
686
  minSize: mergeSizes(
662
687
  normalizeSizes(fallbackCacheGroup.minSize, defaultSizeTypes),
663
688
  minSize
@@ -728,20 +753,20 @@ module.exports = class SplitChunksPlugin {
728
753
  cacheGroupSource.minChunks !== undefined
729
754
  ? cacheGroupSource.minChunks
730
755
  : cacheGroupSource.enforce
731
- ? 1
732
- : this.options.minChunks,
756
+ ? 1
757
+ : this.options.minChunks,
733
758
  maxAsyncRequests:
734
759
  cacheGroupSource.maxAsyncRequests !== undefined
735
760
  ? cacheGroupSource.maxAsyncRequests
736
761
  : cacheGroupSource.enforce
737
- ? Infinity
738
- : this.options.maxAsyncRequests,
762
+ ? Infinity
763
+ : this.options.maxAsyncRequests,
739
764
  maxInitialRequests:
740
765
  cacheGroupSource.maxInitialRequests !== undefined
741
766
  ? cacheGroupSource.maxInitialRequests
742
767
  : cacheGroupSource.enforce
743
- ? Infinity
744
- : this.options.maxInitialRequests,
768
+ ? Infinity
769
+ : this.options.maxInitialRequests,
745
770
  getName:
746
771
  cacheGroupSource.getName !== undefined
747
772
  ? cacheGroupSource.getName
@@ -835,6 +860,10 @@ module.exports = class SplitChunksPlugin {
835
860
  }
836
861
  return key;
837
862
  };
863
+ /**
864
+ * @param {bigint | Chunk} key key of the chunks
865
+ * @returns {string} stringified key
866
+ */
838
867
  const keyToString = key => {
839
868
  if (typeof key === "bigint") return key.toString(16);
840
869
  return chunkIndexMap.get(key).toString(16);
@@ -906,6 +935,10 @@ module.exports = class SplitChunksPlugin {
906
935
  // group these set of chunks by count
907
936
  // to allow to check less sets via isSubset
908
937
  // (only smaller sets can be subset)
938
+ /**
939
+ * @param {IterableIterator<Set<Chunk>>} chunkSets set of sets of chunks
940
+ * @returns {Map<number, Array<Set<Chunk>>>} map of sets of chunks by count
941
+ */
909
942
  const groupChunkSetsByCount = chunkSets => {
910
943
  /** @type {Map<number, Array<Set<Chunk>>>} */
911
944
  const chunkSetsByCount = new Map();
@@ -994,7 +1027,7 @@ module.exports = class SplitChunksPlugin {
994
1027
  getExportsCombinationsFactory()(key);
995
1028
 
996
1029
  /**
997
- * @typedef {Object} SelectedChunksResult
1030
+ * @typedef {object} SelectedChunksResult
998
1031
  * @property {Chunk[]} chunks the list of chunks
999
1032
  * @property {bigint | Chunk} key a key of the list
1000
1033
  */
@@ -1015,8 +1048,9 @@ module.exports = class SplitChunksPlugin {
1015
1048
  entry = new WeakMap();
1016
1049
  selectedChunksCacheByChunksSet.set(chunks, entry);
1017
1050
  }
1018
- /** @type {SelectedChunksResult} */
1019
- let entry2 = entry.get(chunkFilter);
1051
+ let entry2 =
1052
+ /** @type {SelectedChunksResult} */
1053
+ (entry.get(chunkFilter));
1020
1054
  if (entry2 === undefined) {
1021
1055
  /** @type {Chunk[]} */
1022
1056
  const selectedChunks = [];
@@ -1064,11 +1098,9 @@ module.exports = class SplitChunksPlugin {
1064
1098
  // Break if minimum number of chunks is not reached
1065
1099
  if (selectedChunks.length < cacheGroup.minChunks) return;
1066
1100
  // Determine name for split chunk
1067
- const name = cacheGroup.getName(
1068
- module,
1069
- selectedChunks,
1070
- cacheGroup.key
1071
- );
1101
+ const name =
1102
+ /** @type {string} */
1103
+ (cacheGroup.getName(module, selectedChunks, cacheGroup.key));
1072
1104
  // Check if the name is ok
1073
1105
  const existingChunk = compilation.namedChunks.get(name);
1074
1106
  if (existingChunk) {
@@ -1135,7 +1167,7 @@ module.exports = class SplitChunksPlugin {
1135
1167
  ? ` name:${name}`
1136
1168
  : ` chunks:${keyToString(selectedChunksKey)}`);
1137
1169
  // Add module to maps
1138
- let info = chunksInfoMap.get(key);
1170
+ let info = /** @type {ChunksInfoItem} */ (chunksInfoMap.get(key));
1139
1171
  if (info === undefined) {
1140
1172
  chunksInfoMap.set(
1141
1173
  key,
@@ -1149,7 +1181,7 @@ module.exports = class SplitChunksPlugin {
1149
1181
  name,
1150
1182
  sizes: {},
1151
1183
  chunks: new Set(),
1152
- reuseableChunks: new Set(),
1184
+ reusableChunks: new Set(),
1153
1185
  chunksKeys: new Set()
1154
1186
  })
1155
1187
  );
@@ -1182,7 +1214,7 @@ module.exports = class SplitChunksPlugin {
1182
1214
  // Walk through all modules
1183
1215
  for (const module of compilation.modules) {
1184
1216
  // Get cache group
1185
- let cacheGroups = this.options.getCacheGroups(module, context);
1217
+ const cacheGroups = this.options.getCacheGroups(module, context);
1186
1218
  if (!Array.isArray(cacheGroups) || cacheGroups.length === 0) {
1187
1219
  continue;
1188
1220
  }
@@ -1200,7 +1232,9 @@ module.exports = class SplitChunksPlugin {
1200
1232
  getExportsChunkSetsInGraph();
1201
1233
  /** @type {Set<Set<Chunk> | Chunk>} */
1202
1234
  const set = new Set();
1203
- const groupedByUsedExports = groupedByExportsMap.get(module);
1235
+ const groupedByUsedExports =
1236
+ /** @type {Iterable<Chunk[]>} */
1237
+ (groupedByExportsMap.get(module));
1204
1238
  for (const chunks of groupedByUsedExports) {
1205
1239
  const chunksKey = getKey(chunks);
1206
1240
  for (const comb of getExportsCombinations(chunksKey))
@@ -1224,7 +1258,10 @@ module.exports = class SplitChunksPlugin {
1224
1258
  if (count < cacheGroup.minChunks) continue;
1225
1259
  // Select chunks by configuration
1226
1260
  const { chunks: selectedChunks, key: selectedChunksKey } =
1227
- getSelectedChunks(chunkCombination, cacheGroup.chunksFilter);
1261
+ getSelectedChunks(
1262
+ chunkCombination,
1263
+ /** @type {ChunkFilterFunction} */ (cacheGroup.chunksFilter)
1264
+ );
1228
1265
 
1229
1266
  addModuleToChunksInfoMap(
1230
1267
  cacheGroup,
@@ -1289,7 +1326,7 @@ module.exports = class SplitChunksPlugin {
1289
1326
  }
1290
1327
 
1291
1328
  /**
1292
- * @typedef {Object} MaxSizeQueueItem
1329
+ * @typedef {object} MaxSizeQueueItem
1293
1330
  * @property {SplitChunksSizes} minSize
1294
1331
  * @property {SplitChunksSizes} maxAsyncSize
1295
1332
  * @property {SplitChunksSizes} maxInitialSize
@@ -1316,12 +1353,13 @@ module.exports = class SplitChunksPlugin {
1316
1353
  }
1317
1354
  }
1318
1355
 
1319
- const item = bestEntry;
1320
- chunksInfoMap.delete(bestEntryKey);
1356
+ const item = /** @type {ChunksInfoItem} */ (bestEntry);
1357
+ chunksInfoMap.delete(/** @type {string} */ (bestEntryKey));
1321
1358
 
1359
+ /** @type {Chunk["name"] | undefined} */
1322
1360
  let chunkName = item.name;
1323
1361
  // Variable for the new chunk (lazy created)
1324
- /** @type {Chunk} */
1362
+ /** @type {Chunk | undefined} */
1325
1363
  let newChunk;
1326
1364
  // When no chunk name, check if we can reuse a chunk instead of creating a new one
1327
1365
  let isExistingChunk = false;
@@ -1390,16 +1428,20 @@ module.exports = class SplitChunksPlugin {
1390
1428
  ) {
1391
1429
  for (const chunk of usedChunks) {
1392
1430
  // respect max requests
1393
- const maxRequests = chunk.isOnlyInitial()
1394
- ? item.cacheGroup.maxInitialRequests
1395
- : chunk.canBeInitial()
1396
- ? Math.min(
1397
- item.cacheGroup.maxInitialRequests,
1398
- item.cacheGroup.maxAsyncRequests
1399
- )
1400
- : item.cacheGroup.maxAsyncRequests;
1431
+ const maxRequests = /** @type {number} */ (
1432
+ chunk.isOnlyInitial()
1433
+ ? item.cacheGroup.maxInitialRequests
1434
+ : chunk.canBeInitial()
1435
+ ? Math.min(
1436
+ /** @type {number} */
1437
+ (item.cacheGroup.maxInitialRequests),
1438
+ /** @type {number} */
1439
+ (item.cacheGroup.maxAsyncRequests)
1440
+ )
1441
+ : item.cacheGroup.maxAsyncRequests
1442
+ );
1401
1443
  if (
1402
- isFinite(maxRequests) &&
1444
+ Number.isFinite(maxRequests) &&
1403
1445
  getRequests(chunk) >= maxRequests
1404
1446
  ) {
1405
1447
  usedChunks.delete(chunk);
@@ -1417,8 +1459,12 @@ module.exports = class SplitChunksPlugin {
1417
1459
  // Were some (invalid) chunks removed from usedChunks?
1418
1460
  // => readd all modules to the queue, as things could have been changed
1419
1461
  if (usedChunks.size < item.chunks.size) {
1420
- if (isExistingChunk) usedChunks.add(newChunk);
1421
- if (usedChunks.size >= item.cacheGroup.minChunks) {
1462
+ if (isExistingChunk)
1463
+ usedChunks.add(/** @type {Chunk} */ (newChunk));
1464
+ if (
1465
+ /** @type {number} */ (usedChunks.size) >=
1466
+ /** @type {number} */ (item.cacheGroup.minChunks)
1467
+ ) {
1422
1468
  const chunksArr = Array.from(usedChunks);
1423
1469
  for (const module of item.modules) {
1424
1470
  addModuleToChunksInfoMap(
@@ -1440,7 +1486,7 @@ module.exports = class SplitChunksPlugin {
1440
1486
  usedChunks.size === 1
1441
1487
  ) {
1442
1488
  const [chunk] = usedChunks;
1443
- let chunkSizes = Object.create(null);
1489
+ const chunkSizes = Object.create(null);
1444
1490
  for (const module of chunkGraph.getChunkModulesIterable(chunk)) {
1445
1491
  if (!item.modules.has(module)) {
1446
1492
  for (const type of module.getSourceTypes()) {
@@ -1462,7 +1508,7 @@ module.exports = class SplitChunksPlugin {
1462
1508
  ) {
1463
1509
  // queue this item again to be processed again
1464
1510
  // without violating modules
1465
- chunksInfoMap.set(bestEntryKey, item);
1511
+ chunksInfoMap.set(/** @type {string} */ (bestEntryKey), item);
1466
1512
  }
1467
1513
  continue;
1468
1514
  }
@@ -1480,7 +1526,7 @@ module.exports = class SplitChunksPlugin {
1480
1526
 
1481
1527
  // Add a note to the chunk
1482
1528
  newChunk.chunkReason =
1483
- (newChunk.chunkReason ? newChunk.chunkReason + ", " : "") +
1529
+ (newChunk.chunkReason ? `${newChunk.chunkReason}, ` : "") +
1484
1530
  (isReusedWithAllModules
1485
1531
  ? "reused as split chunk"
1486
1532
  : "split chunk");
@@ -1527,21 +1573,21 @@ module.exports = class SplitChunksPlugin {
1527
1573
  oldMaxSizeSettings.minSize,
1528
1574
  item.cacheGroup._minSizeForMaxSize,
1529
1575
  Math.max
1530
- )
1576
+ )
1531
1577
  : item.cacheGroup.minSize,
1532
1578
  maxAsyncSize: oldMaxSizeSettings
1533
1579
  ? combineSizes(
1534
1580
  oldMaxSizeSettings.maxAsyncSize,
1535
1581
  item.cacheGroup.maxAsyncSize,
1536
1582
  Math.min
1537
- )
1583
+ )
1538
1584
  : item.cacheGroup.maxAsyncSize,
1539
1585
  maxInitialSize: oldMaxSizeSettings
1540
1586
  ? combineSizes(
1541
1587
  oldMaxSizeSettings.maxInitialSize,
1542
1588
  item.cacheGroup.maxInitialSize,
1543
1589
  Math.min
1544
- )
1590
+ )
1545
1591
  : item.cacheGroup.maxInitialSize,
1546
1592
  automaticNameDelimiter: item.cacheGroup.automaticNameDelimiter,
1547
1593
  keys: oldMaxSizeSettings
@@ -1598,6 +1644,7 @@ module.exports = class SplitChunksPlugin {
1598
1644
  const { outputOptions } = compilation;
1599
1645
 
1600
1646
  // Make sure that maxSize is fulfilled
1647
+ const { fallbackCacheGroup } = this.options;
1601
1648
  for (const chunk of Array.from(compilation.chunks)) {
1602
1649
  const chunkConfig = maxSizeQueueMap.get(chunk);
1603
1650
  const {
@@ -1605,7 +1652,9 @@ module.exports = class SplitChunksPlugin {
1605
1652
  maxAsyncSize,
1606
1653
  maxInitialSize,
1607
1654
  automaticNameDelimiter
1608
- } = chunkConfig || this.options.fallbackCacheGroup;
1655
+ } = chunkConfig || fallbackCacheGroup;
1656
+ if (!chunkConfig && !fallbackCacheGroup.chunksFilter(chunk))
1657
+ continue;
1609
1658
  /** @type {SplitChunksSizes} */
1610
1659
  let maxSize;
1611
1660
  if (chunk.isOnlyInitial()) {
@@ -1689,7 +1738,9 @@ module.exports = class SplitChunksPlugin {
1689
1738
  hashFilename(name, outputOptions);
1690
1739
  }
1691
1740
  if (i !== results.length - 1) {
1692
- const newPart = compilation.addChunk(name);
1741
+ const newPart = compilation.addChunk(
1742
+ /** @type {Chunk["name"]} */ (name)
1743
+ );
1693
1744
  chunk.split(newPart);
1694
1745
  newPart.chunkReason = chunk.chunkReason;
1695
1746
  // Add all modules to the new chunk
@@ -1704,7 +1755,7 @@ module.exports = class SplitChunksPlugin {
1704
1755
  }
1705
1756
  } else {
1706
1757
  // change the chunk to be a part
1707
- chunk.name = name;
1758
+ chunk.name = /** @type {Chunk["name"]} */ (name);
1708
1759
  }
1709
1760
  }
1710
1761
  }
@@ -13,18 +13,19 @@ const NoAsyncChunksWarning = require("./NoAsyncChunksWarning");
13
13
  /** @typedef {import("webpack-sources").Source} Source */
14
14
  /** @typedef {import("../../declarations/WebpackOptions").PerformanceOptions} PerformanceOptions */
15
15
  /** @typedef {import("../ChunkGroup")} ChunkGroup */
16
+ /** @typedef {import("../Compilation").Asset} Asset */
16
17
  /** @typedef {import("../Compiler")} Compiler */
17
18
  /** @typedef {import("../Entrypoint")} Entrypoint */
18
19
  /** @typedef {import("../WebpackError")} WebpackError */
19
20
 
20
21
  /**
21
- * @typedef {Object} AssetDetails
22
+ * @typedef {object} AssetDetails
22
23
  * @property {string} name
23
24
  * @property {number} size
24
25
  */
25
26
 
26
27
  /**
27
- * @typedef {Object} EntrypointDetails
28
+ * @typedef {object} EntrypointDetails
28
29
  * @property {string} name
29
30
  * @property {number} size
30
31
  * @property {string[]} files
@@ -32,6 +33,12 @@ const NoAsyncChunksWarning = require("./NoAsyncChunksWarning");
32
33
 
33
34
  const isOverSizeLimitSet = new WeakSet();
34
35
 
36
+ /**
37
+ * @param {Asset["name"]} name the name
38
+ * @param {Asset["source"]} source the source
39
+ * @param {Asset["info"]} info the info
40
+ * @returns {boolean} result
41
+ */
35
42
  const excludeSourceMap = (name, source, info) => !info.development;
36
43
 
37
44
  module.exports = class SizeLimitsPlugin {
@@ -95,7 +102,7 @@ module.exports = class SizeLimitsPlugin {
95
102
  }
96
103
 
97
104
  const size = info.size || source.size();
98
- if (size > assetSizeLimit) {
105
+ if (size > /** @type {number} */ (assetSizeLimit)) {
99
106
  assetsOverSizeLimit.push({
100
107
  name,
101
108
  size
@@ -104,6 +111,10 @@ module.exports = class SizeLimitsPlugin {
104
111
  }
105
112
  }
106
113
 
114
+ /**
115
+ * @param {Asset["name"]} name the name
116
+ * @returns {boolean | undefined} result
117
+ */
107
118
  const fileFilter = name => {
108
119
  const asset = compilation.getAsset(name);
109
120
  return asset && assetFilter(asset.name, asset.source, asset.info);
@@ -114,10 +125,10 @@ module.exports = class SizeLimitsPlugin {
114
125
  for (const [name, entry] of compilation.entrypoints) {
115
126
  const size = getEntrypointSize(entry);
116
127
 
117
- if (size > entrypointSizeLimit) {
128
+ if (size > /** @type {number} */ (entrypointSizeLimit)) {
118
129
  entrypointsOverLimit.push({
119
- name: name,
120
- size: size,
130
+ name,
131
+ size,
121
132
  files: entry.getFiles().filter(fileFilter)
122
133
  });
123
134
  isOverSizeLimitSet.add(entry);
@@ -131,14 +142,17 @@ module.exports = class SizeLimitsPlugin {
131
142
  // if !1, then 2, if !2 return
132
143
  if (assetsOverSizeLimit.length > 0) {
133
144
  warnings.push(
134
- new AssetsOverSizeLimitWarning(assetsOverSizeLimit, assetSizeLimit)
145
+ new AssetsOverSizeLimitWarning(
146
+ assetsOverSizeLimit,
147
+ /** @type {number} */ (assetSizeLimit)
148
+ )
135
149
  );
136
150
  }
137
151
  if (entrypointsOverLimit.length > 0) {
138
152
  warnings.push(
139
153
  new EntrypointsOverSizeLimitWarning(
140
154
  entrypointsOverLimit,
141
- entrypointSizeLimit
155
+ /** @type {number} */ (entrypointSizeLimit)
142
156
  )
143
157
  );
144
158
  }
@@ -7,6 +7,7 @@
7
7
  const RuntimeModule = require("../RuntimeModule");
8
8
  const Template = require("../Template");
9
9
 
10
+ /** @typedef {import("../Compilation")} Compilation */
10
11
  /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
11
12
 
12
13
  class ChunkPrefetchFunctionRuntimeModule extends RuntimeModule {
@@ -23,11 +24,12 @@ class ChunkPrefetchFunctionRuntimeModule extends RuntimeModule {
23
24
  }
24
25
 
25
26
  /**
26
- * @returns {string} runtime code
27
+ * @returns {string | null} runtime code
27
28
  */
28
29
  generate() {
29
30
  const { runtimeFunction, runtimeHandlers } = this;
30
- const { runtimeTemplate } = this.compilation;
31
+ const compilation = /** @type {Compilation} */ (this.compilation);
32
+ const { runtimeTemplate } = compilation;
31
33
  return Template.asString([
32
34
  `${runtimeHandlers} = {};`,
33
35
  `${runtimeFunction} = ${runtimeTemplate.basicFunction("chunkId", [
@@ -11,6 +11,8 @@ const ChunkPrefetchStartupRuntimeModule = require("./ChunkPrefetchStartupRuntime
11
11
  const ChunkPrefetchTriggerRuntimeModule = require("./ChunkPrefetchTriggerRuntimeModule");
12
12
  const ChunkPreloadTriggerRuntimeModule = require("./ChunkPreloadTriggerRuntimeModule");
13
13
 
14
+ /** @typedef {import("../Chunk")} Chunk */
15
+ /** @typedef {import("../ChunkGroup").RawChunkGroupOptions} RawChunkGroupOptions */
14
16
  /** @typedef {import("../Compiler")} Compiler */
15
17
 
16
18
  class ChunkPrefetchPreloadPlugin {
@@ -33,6 +35,7 @@ class ChunkPrefetchPreloadPlugin {
33
35
  if (startupChildChunks) {
34
36
  set.add(RuntimeGlobals.prefetchChunk);
35
37
  set.add(RuntimeGlobals.onChunksLoaded);
38
+ set.add(RuntimeGlobals.exports);
36
39
  compilation.addRuntimeModule(
37
40
  chunk,
38
41
  new ChunkPrefetchStartupRuntimeModule(startupChildChunks)
@@ -43,7 +46,7 @@ class ChunkPrefetchPreloadPlugin {
43
46
  compilation.hooks.additionalTreeRuntimeRequirements.tap(
44
47
  "ChunkPrefetchPreloadPlugin",
45
48
  (chunk, set, { chunkGraph }) => {
46
- const chunkMap = chunk.getChildIdsByOrdersMap(chunkGraph, false);
49
+ const chunkMap = chunk.getChildIdsByOrdersMap(chunkGraph);
47
50
 
48
51
  if (chunkMap.prefetch) {
49
52
  set.add(RuntimeGlobals.prefetchChunk);