webpack 5.97.1 → 5.104.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (610) hide show
  1. package/README.md +368 -434
  2. package/bin/webpack.js +15 -9
  3. package/hot/dev-server.js +18 -3
  4. package/hot/emitter-event-target.js +7 -0
  5. package/hot/lazy-compilation-node.js +45 -29
  6. package/hot/lazy-compilation-universal.js +18 -0
  7. package/hot/lazy-compilation-web.js +15 -5
  8. package/hot/load-http.js +7 -0
  9. package/hot/log.js +15 -15
  10. package/hot/only-dev-server.js +19 -4
  11. package/hot/poll.js +1 -0
  12. package/lib/APIPlugin.js +48 -50
  13. package/lib/AbstractMethodError.js +1 -0
  14. package/lib/AsyncDependenciesBlock.js +4 -5
  15. package/lib/AutomaticPrefetchPlugin.js +22 -22
  16. package/lib/BannerPlugin.js +35 -40
  17. package/lib/Cache.js +12 -9
  18. package/lib/CacheFacade.js +13 -13
  19. package/lib/CaseSensitiveModulesWarning.js +6 -6
  20. package/lib/Chunk.js +68 -47
  21. package/lib/ChunkGraph.js +174 -95
  22. package/lib/ChunkGroup.js +32 -24
  23. package/lib/ChunkTemplate.js +8 -8
  24. package/lib/CleanPlugin.js +90 -42
  25. package/lib/CodeGenerationResults.js +12 -9
  26. package/lib/CompatibilityPlugin.js +70 -21
  27. package/lib/Compilation.js +827 -550
  28. package/lib/Compiler.js +137 -109
  29. package/lib/ConcatenationScope.js +45 -8
  30. package/lib/ConditionalInitFragment.js +1 -1
  31. package/lib/ConstPlugin.js +89 -59
  32. package/lib/ContextExclusionPlugin.js +5 -4
  33. package/lib/ContextModule.js +66 -51
  34. package/lib/ContextModuleFactory.js +51 -30
  35. package/lib/ContextReplacementPlugin.js +89 -34
  36. package/lib/CssModule.js +8 -4
  37. package/lib/DefinePlugin.js +209 -57
  38. package/lib/DelegatedModule.js +34 -23
  39. package/lib/DelegatedModuleFactoryPlugin.js +27 -24
  40. package/lib/DelegatedPlugin.js +4 -2
  41. package/lib/DependenciesBlock.js +0 -2
  42. package/lib/Dependency.js +37 -19
  43. package/lib/DependencyTemplate.js +2 -0
  44. package/lib/DependencyTemplates.js +5 -6
  45. package/lib/DllEntryPlugin.js +8 -4
  46. package/lib/DllModule.js +11 -12
  47. package/lib/DllModuleFactory.js +2 -2
  48. package/lib/DllPlugin.js +9 -6
  49. package/lib/DllReferencePlugin.js +60 -65
  50. package/lib/DotenvPlugin.js +462 -0
  51. package/lib/DynamicEntryPlugin.js +8 -8
  52. package/lib/EntryOptionPlugin.js +8 -6
  53. package/lib/EntryPlugin.js +5 -3
  54. package/lib/Entrypoint.js +19 -0
  55. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  56. package/lib/EnvironmentPlugin.js +26 -19
  57. package/lib/ErrorHelpers.js +6 -6
  58. package/lib/EvalDevToolModulePlugin.js +17 -14
  59. package/lib/EvalSourceMapDevToolPlugin.js +156 -142
  60. package/lib/ExportsInfo.js +180 -115
  61. package/lib/ExportsInfoApiPlugin.js +2 -2
  62. package/lib/ExternalModule.js +256 -102
  63. package/lib/ExternalModuleFactoryPlugin.js +66 -29
  64. package/lib/ExternalsPlugin.js +57 -2
  65. package/lib/FileSystemInfo.js +313 -247
  66. package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
  67. package/lib/FlagDependencyExportsPlugin.js +29 -19
  68. package/lib/FlagDependencyUsagePlugin.js +9 -10
  69. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  70. package/lib/Generator.js +43 -10
  71. package/lib/GraphHelpers.js +11 -3
  72. package/lib/HookWebpackError.js +35 -7
  73. package/lib/HotModuleReplacementPlugin.js +149 -108
  74. package/lib/HotUpdateChunk.js +0 -3
  75. package/lib/IgnoreErrorModuleFactory.js +2 -2
  76. package/lib/IgnorePlugin.js +16 -13
  77. package/lib/IgnoreWarningsPlugin.js +6 -4
  78. package/lib/InitFragment.js +41 -23
  79. package/lib/InvalidDependenciesModuleWarning.js +2 -3
  80. package/lib/JavascriptMetaInfoPlugin.js +2 -4
  81. package/lib/LibManifestPlugin.js +12 -13
  82. package/lib/LoaderOptionsPlugin.js +12 -14
  83. package/lib/LoaderTargetPlugin.js +5 -3
  84. package/lib/MainTemplate.js +18 -29
  85. package/lib/ManifestPlugin.js +235 -0
  86. package/lib/Module.js +138 -60
  87. package/lib/ModuleBuildError.js +4 -2
  88. package/lib/ModuleDependencyError.js +4 -3
  89. package/lib/ModuleDependencyWarning.js +4 -3
  90. package/lib/ModuleError.js +1 -1
  91. package/lib/ModuleFactory.js +10 -3
  92. package/lib/ModuleFilenameHelpers.js +63 -60
  93. package/lib/ModuleGraph.js +195 -70
  94. package/lib/ModuleGraphConnection.js +14 -20
  95. package/lib/ModuleInfoHeaderPlugin.js +15 -16
  96. package/lib/ModuleNotFoundError.js +1 -1
  97. package/lib/ModuleParseError.js +8 -4
  98. package/lib/ModuleSourceTypeConstants.js +189 -0
  99. package/lib/ModuleTemplate.js +7 -8
  100. package/lib/ModuleTypeConstants.js +37 -15
  101. package/lib/ModuleWarning.js +1 -1
  102. package/lib/MultiCompiler.js +64 -49
  103. package/lib/MultiStats.js +19 -14
  104. package/lib/MultiWatching.js +7 -11
  105. package/lib/NoEmitOnErrorsPlugin.js +5 -3
  106. package/lib/NodeStuffPlugin.js +438 -126
  107. package/lib/NormalModule.js +322 -201
  108. package/lib/NormalModuleFactory.js +230 -117
  109. package/lib/NormalModuleReplacementPlugin.js +37 -39
  110. package/lib/NullFactory.js +3 -2
  111. package/lib/OptimizationStages.js +1 -1
  112. package/lib/OptionsApply.js +1 -1
  113. package/lib/Parser.js +5 -3
  114. package/lib/PlatformPlugin.js +3 -1
  115. package/lib/PrefetchPlugin.js +6 -4
  116. package/lib/ProgressPlugin.js +48 -49
  117. package/lib/ProvidePlugin.js +7 -5
  118. package/lib/RawModule.js +26 -12
  119. package/lib/RecordIdsPlugin.js +88 -110
  120. package/lib/RequestShortener.js +3 -1
  121. package/lib/ResolverFactory.js +15 -14
  122. package/lib/RuntimeGlobals.js +216 -153
  123. package/lib/RuntimeModule.js +7 -6
  124. package/lib/RuntimePlugin.js +115 -62
  125. package/lib/RuntimeTemplate.js +248 -76
  126. package/lib/SelfModuleFactory.js +2 -2
  127. package/lib/SizeFormatHelpers.js +2 -2
  128. package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
  129. package/lib/SourceMapDevToolPlugin.js +72 -59
  130. package/lib/Stats.js +2 -3
  131. package/lib/Template.js +31 -24
  132. package/lib/TemplatedPathPlugin.js +24 -21
  133. package/lib/UseStrictPlugin.js +1 -1
  134. package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
  135. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  136. package/lib/WarnNoModeSetPlugin.js +3 -1
  137. package/lib/WatchIgnorePlugin.js +11 -9
  138. package/lib/Watching.js +27 -29
  139. package/lib/WebpackError.js +10 -3
  140. package/lib/WebpackIsIncludedPlugin.js +4 -5
  141. package/lib/WebpackOptionsApply.js +263 -135
  142. package/lib/asset/AssetBytesGenerator.js +171 -0
  143. package/lib/asset/AssetBytesParser.js +37 -0
  144. package/lib/asset/AssetGenerator.js +285 -223
  145. package/lib/asset/AssetModulesPlugin.js +103 -41
  146. package/lib/asset/AssetParser.js +7 -3
  147. package/lib/asset/AssetSourceGenerator.js +41 -17
  148. package/lib/asset/RawDataUrlModule.js +17 -9
  149. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  150. package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
  151. package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
  152. package/lib/buildChunkGraph.js +36 -17
  153. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  154. package/lib/cache/IdleFileCachePlugin.js +22 -20
  155. package/lib/cache/MemoryCachePlugin.js +3 -3
  156. package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
  157. package/lib/cache/PackFileCacheStrategy.js +198 -170
  158. package/lib/cache/ResolverCachePlugin.js +58 -48
  159. package/lib/cache/getLazyHashedEtag.js +5 -4
  160. package/lib/cli.js +197 -39
  161. package/lib/config/browserslistTargetHandler.js +110 -85
  162. package/lib/config/defaults.js +514 -113
  163. package/lib/config/normalization.js +91 -64
  164. package/lib/config/target.js +30 -18
  165. package/lib/container/ContainerEntryDependency.js +0 -1
  166. package/lib/container/ContainerEntryModule.js +16 -15
  167. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  168. package/lib/container/ContainerPlugin.js +5 -6
  169. package/lib/container/ContainerReferencePlugin.js +27 -30
  170. package/lib/container/FallbackDependency.js +2 -1
  171. package/lib/container/FallbackModule.js +19 -14
  172. package/lib/container/FallbackModuleFactory.js +2 -2
  173. package/lib/container/HoistContainerReferencesPlugin.js +7 -7
  174. package/lib/container/ModuleFederationPlugin.js +4 -4
  175. package/lib/container/RemoteModule.js +14 -14
  176. package/lib/container/RemoteRuntimeModule.js +2 -2
  177. package/lib/container/options.js +9 -9
  178. package/lib/css/CssGenerator.js +366 -74
  179. package/lib/css/CssLoadingRuntimeModule.js +26 -16
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  181. package/lib/css/CssModulesPlugin.js +191 -142
  182. package/lib/css/CssParser.js +1756 -740
  183. package/lib/css/walkCssTokens.js +180 -67
  184. package/lib/debug/ProfilingPlugin.js +135 -51
  185. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
  186. package/lib/dependencies/AMDPlugin.js +18 -11
  187. package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
  188. package/lib/dependencies/AMDRequireContextDependency.js +2 -1
  189. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
  190. package/lib/dependencies/AMDRuntimeModules.js +3 -1
  191. package/lib/dependencies/CachedConstDependency.js +24 -18
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
  193. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
  197. package/lib/dependencies/CommonJsPlugin.js +29 -18
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
  199. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  200. package/lib/dependencies/ConstDependency.js +2 -2
  201. package/lib/dependencies/ContextDependency.js +10 -5
  202. package/lib/dependencies/ContextDependencyHelpers.js +21 -13
  203. package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
  205. package/lib/dependencies/ContextElementDependency.js +23 -12
  206. package/lib/dependencies/CssIcssExportDependency.js +402 -22
  207. package/lib/dependencies/CssIcssImportDependency.js +116 -51
  208. package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
  209. package/lib/dependencies/CssImportDependency.js +17 -14
  210. package/lib/dependencies/CssUrlDependency.js +8 -13
  211. package/lib/dependencies/DynamicExports.js +19 -19
  212. package/lib/dependencies/ExportsInfoDependency.js +13 -10
  213. package/lib/dependencies/ExternalModuleDependency.js +7 -7
  214. package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
  215. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
  216. package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
  217. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
  218. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  219. package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
  220. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
  221. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
  222. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
  224. package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
  226. package/lib/dependencies/HarmonyExports.js +5 -5
  227. package/lib/dependencies/HarmonyImportDependency.js +92 -45
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
  229. package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
  230. package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
  231. package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
  233. package/lib/dependencies/ImportContextDependency.js +15 -1
  234. package/lib/dependencies/ImportDependency.js +25 -7
  235. package/lib/dependencies/ImportEagerDependency.js +7 -5
  236. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
  237. package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
  238. package/lib/dependencies/ImportMetaPlugin.js +172 -20
  239. package/lib/dependencies/ImportParserPlugin.js +327 -49
  240. package/lib/dependencies/ImportPhase.js +121 -0
  241. package/lib/dependencies/ImportPlugin.js +3 -1
  242. package/lib/dependencies/ImportWeakDependency.js +7 -5
  243. package/lib/dependencies/JsonExportsDependency.js +54 -28
  244. package/lib/dependencies/LoaderDependency.js +0 -3
  245. package/lib/dependencies/LoaderImportDependency.js +0 -3
  246. package/lib/dependencies/LoaderPlugin.js +24 -25
  247. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  248. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  249. package/lib/dependencies/ModuleDependency.js +14 -13
  250. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  251. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  252. package/lib/dependencies/NullDependency.js +2 -0
  253. package/lib/dependencies/ProvidedDependency.js +8 -10
  254. package/lib/dependencies/PureExpressionDependency.js +1 -2
  255. package/lib/dependencies/RequireContextDependency.js +2 -1
  256. package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
  257. package/lib/dependencies/RequireContextPlugin.js +5 -2
  258. package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
  259. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
  260. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  261. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  262. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  263. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  264. package/lib/dependencies/RequireResolveContextDependency.js +1 -1
  265. package/lib/dependencies/RequireResolveDependency.js +3 -3
  266. package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
  267. package/lib/dependencies/StaticExportsDependency.js +3 -5
  268. package/lib/dependencies/SystemPlugin.js +4 -4
  269. package/lib/dependencies/URLContextDependency.js +65 -0
  270. package/lib/dependencies/URLDependency.js +3 -8
  271. package/lib/dependencies/URLPlugin.js +18 -159
  272. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
  273. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  274. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  275. package/lib/dependencies/WorkerDependency.js +8 -6
  276. package/lib/dependencies/WorkerPlugin.js +131 -67
  277. package/lib/dependencies/getFunctionExpression.js +2 -2
  278. package/lib/dependencies/processExportInfo.js +4 -4
  279. package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
  280. package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
  281. package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
  282. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
  283. package/lib/formatLocation.js +2 -2
  284. package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
  285. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  286. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
  287. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  288. package/lib/hmr/LazyCompilationPlugin.js +67 -54
  289. package/lib/hmr/lazyCompilationBackend.js +23 -18
  290. package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
  291. package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
  292. package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
  293. package/lib/ids/HashedModuleIdsPlugin.js +15 -13
  294. package/lib/ids/IdHelpers.js +66 -49
  295. package/lib/ids/NamedChunkIdsPlugin.js +14 -17
  296. package/lib/ids/NamedModuleIdsPlugin.js +12 -14
  297. package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
  298. package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
  299. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
  300. package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
  301. package/lib/ids/SyncModuleIdsPlugin.js +18 -13
  302. package/lib/index.js +54 -14
  303. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
  304. package/lib/javascript/BasicEvaluatedExpression.js +26 -18
  305. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  306. package/lib/javascript/ChunkHelpers.js +17 -5
  307. package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
  308. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
  309. package/lib/javascript/JavascriptGenerator.js +122 -100
  310. package/lib/javascript/JavascriptModulesPlugin.js +332 -152
  311. package/lib/javascript/JavascriptParser.js +1488 -1052
  312. package/lib/javascript/JavascriptParserHelpers.js +48 -47
  313. package/lib/javascript/StartupHelpers.js +23 -22
  314. package/lib/json/JsonData.js +4 -4
  315. package/lib/json/JsonGenerator.js +66 -32
  316. package/lib/json/JsonModulesPlugin.js +16 -6
  317. package/lib/json/JsonParser.js +23 -8
  318. package/lib/library/AbstractLibraryPlugin.js +45 -10
  319. package/lib/library/AmdLibraryPlugin.js +7 -5
  320. package/lib/library/AssignLibraryPlugin.js +71 -17
  321. package/lib/library/EnableLibraryPlugin.js +51 -25
  322. package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
  323. package/lib/library/JsonpLibraryPlugin.js +5 -2
  324. package/lib/library/ModuleLibraryPlugin.js +230 -18
  325. package/lib/library/SystemLibraryPlugin.js +29 -11
  326. package/lib/library/UmdLibraryPlugin.js +35 -32
  327. package/lib/logging/Logger.js +18 -15
  328. package/lib/logging/createConsoleLogger.js +27 -27
  329. package/lib/logging/runtime.js +11 -11
  330. package/lib/logging/truncateArgs.js +5 -5
  331. package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
  332. package/lib/node/NodeEnvironmentPlugin.js +9 -3
  333. package/lib/node/NodeTargetPlugin.js +9 -1
  334. package/lib/node/NodeTemplatePlugin.js +2 -2
  335. package/lib/node/NodeWatchFileSystem.js +4 -4
  336. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
  337. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
  338. package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
  339. package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
  340. package/lib/node/nodeConsole.js +12 -7
  341. package/lib/optimize/AggressiveMergingPlugin.js +46 -47
  342. package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
  343. package/lib/optimize/ConcatenatedModule.js +620 -251
  344. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  345. package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
  346. package/lib/optimize/InnerGraph.js +139 -124
  347. package/lib/optimize/InnerGraphPlugin.js +29 -24
  348. package/lib/optimize/LimitChunkCountPlugin.js +32 -8
  349. package/lib/optimize/MangleExportsPlugin.js +22 -22
  350. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  351. package/lib/optimize/MinChunkSizePlugin.js +12 -7
  352. package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
  353. package/lib/optimize/RealContentHashPlugin.js +58 -44
  354. package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
  355. package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
  356. package/lib/optimize/RuntimeChunkPlugin.js +22 -25
  357. package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
  358. package/lib/optimize/SplitChunksPlugin.js +209 -158
  359. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
  360. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  361. package/lib/performance/SizeLimitsPlugin.js +8 -5
  362. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  363. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
  364. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
  365. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  366. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  367. package/lib/rules/BasicEffectRulePlugin.js +14 -5
  368. package/lib/rules/BasicMatcherRulePlugin.js +18 -7
  369. package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
  370. package/lib/rules/RuleSetCompiler.js +73 -32
  371. package/lib/rules/UseEffectRulePlugin.js +61 -25
  372. package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
  373. package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
  374. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  375. package/lib/runtime/CompatRuntimeModule.js +0 -1
  376. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  377. package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
  378. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
  379. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  380. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  381. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
  382. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  383. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  384. package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
  385. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
  386. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  387. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  388. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  389. package/lib/schemes/DataUriPlugin.js +9 -31
  390. package/lib/schemes/FileUriPlugin.js +11 -6
  391. package/lib/schemes/HttpUriPlugin.js +381 -261
  392. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  393. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  394. package/lib/serialization/BinaryMiddleware.js +51 -33
  395. package/lib/serialization/ErrorObjectSerializer.js +7 -2
  396. package/lib/serialization/FileMiddleware.js +101 -71
  397. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  398. package/lib/serialization/ObjectMiddleware.js +130 -54
  399. package/lib/serialization/PlainObjectSerializer.js +1 -1
  400. package/lib/serialization/Serializer.js +38 -20
  401. package/lib/serialization/SerializerMiddleware.js +121 -49
  402. package/lib/serialization/SingleItemMiddleware.js +9 -7
  403. package/lib/serialization/types.js +1 -1
  404. package/lib/sharing/ConsumeSharedModule.js +9 -9
  405. package/lib/sharing/ConsumeSharedPlugin.js +14 -14
  406. package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
  407. package/lib/sharing/ProvideSharedModule.js +9 -11
  408. package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
  409. package/lib/sharing/ProvideSharedPlugin.js +15 -10
  410. package/lib/sharing/SharePlugin.js +3 -4
  411. package/lib/sharing/ShareRuntimeModule.js +7 -6
  412. package/lib/sharing/resolveMatchedConfigs.js +27 -13
  413. package/lib/sharing/utils.js +37 -43
  414. package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
  415. package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
  416. package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
  417. package/lib/stats/StatsFactory.js +75 -32
  418. package/lib/stats/StatsPrinter.js +71 -51
  419. package/lib/url/URLParserPlugin.js +264 -0
  420. package/lib/util/ArrayHelpers.js +6 -8
  421. package/lib/util/ArrayQueue.js +1 -1
  422. package/lib/util/AsyncQueue.js +11 -10
  423. package/lib/util/Hash.js +37 -5
  424. package/lib/util/IterableHelpers.js +4 -4
  425. package/lib/util/LazyBucketSortedSet.js +46 -27
  426. package/lib/util/LazySet.js +16 -10
  427. package/lib/util/MapHelpers.js +1 -1
  428. package/lib/util/ParallelismFactorCalculator.js +2 -2
  429. package/lib/util/Semaphore.js +3 -3
  430. package/lib/util/SetHelpers.js +6 -6
  431. package/lib/util/SortableSet.js +11 -9
  432. package/lib/util/StackedCacheMap.js +2 -2
  433. package/lib/util/StackedMap.js +3 -3
  434. package/lib/util/StringXor.js +2 -1
  435. package/lib/util/TupleQueue.js +11 -8
  436. package/lib/util/TupleSet.js +44 -19
  437. package/lib/util/URLAbsoluteSpecifier.js +3 -4
  438. package/lib/util/WeakTupleMap.js +56 -42
  439. package/lib/util/binarySearchBounds.js +4 -3
  440. package/lib/util/chainedImports.js +3 -1
  441. package/lib/util/cleverMerge.js +171 -107
  442. package/lib/util/comparators.js +265 -162
  443. package/lib/util/compileBooleanMatcher.js +120 -41
  444. package/lib/util/concatenate.js +20 -16
  445. package/lib/util/conventions.js +73 -74
  446. package/lib/util/create-schema-validation.js +8 -8
  447. package/lib/util/createHash.js +32 -135
  448. package/lib/util/dataURL.js +39 -0
  449. package/lib/util/deprecation.js +119 -116
  450. package/lib/util/deterministicGrouping.js +56 -47
  451. package/lib/util/extractSourceMap.js +319 -0
  452. package/lib/util/extractUrlAndGlobal.js +1 -1
  453. package/lib/util/findGraphRoots.js +19 -9
  454. package/lib/util/fs.js +169 -141
  455. package/lib/util/hash/BatchedHash.js +50 -10
  456. package/lib/util/hash/BulkUpdateHash.js +138 -0
  457. package/lib/util/hash/DebugHash.js +75 -0
  458. package/lib/util/hash/hash-digest.js +216 -0
  459. package/lib/util/hash/md4.js +2 -2
  460. package/lib/util/hash/wasm-hash.js +59 -17
  461. package/lib/util/identifier.js +124 -61
  462. package/lib/util/internalSerializables.js +4 -6
  463. package/lib/util/magicComment.js +9 -5
  464. package/lib/util/makeSerializable.js +2 -2
  465. package/lib/util/memoize.js +5 -2
  466. package/lib/util/objectToMap.js +3 -2
  467. package/lib/util/processAsyncTree.js +5 -5
  468. package/lib/util/propertyAccess.js +1 -1
  469. package/lib/util/propertyName.js +2 -3
  470. package/lib/util/registerExternalSerializer.js +16 -20
  471. package/lib/util/removeBOM.js +25 -0
  472. package/lib/util/runtime.js +72 -56
  473. package/lib/util/semver.js +44 -33
  474. package/lib/util/serialization.js +56 -56
  475. package/lib/util/smartGrouping.js +42 -27
  476. package/lib/util/source.js +5 -4
  477. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  478. package/lib/validateSchema.js +7 -9
  479. package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
  480. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
  481. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
  482. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
  483. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
  484. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  485. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
  486. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
  487. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
  488. package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
  489. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
  490. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
  491. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
  492. package/lib/wasm-sync/WebAssemblyParser.js +10 -17
  493. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  494. package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
  495. package/lib/web/FetchCompileWasmPlugin.js +6 -8
  496. package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
  497. package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
  498. package/lib/web/JsonpTemplatePlugin.js +0 -1
  499. package/lib/webpack.js +107 -87
  500. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
  501. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
  502. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  503. package/module.d.ts +5 -0
  504. package/package.json +149 -129
  505. package/schemas/WebpackOptions.check.d.ts +1 -1
  506. package/schemas/WebpackOptions.check.js +2 -2
  507. package/schemas/WebpackOptions.json +543 -190
  508. package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
  509. package/schemas/plugins/BannerPlugin.check.js +2 -2
  510. package/schemas/plugins/BannerPlugin.json +4 -0
  511. package/schemas/plugins/DllPlugin.check.d.ts +1 -1
  512. package/schemas/plugins/DllPlugin.check.js +1 -1
  513. package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
  514. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  515. package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
  516. package/schemas/plugins/IgnorePlugin.check.js +1 -1
  517. package/schemas/plugins/IgnorePlugin.json +1 -1
  518. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
  519. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  520. package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
  521. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  522. package/schemas/plugins/ManifestPlugin.json +98 -0
  523. package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
  524. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  525. package/schemas/plugins/ProgressPlugin.json +1 -1
  526. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
  529. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
  530. package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
  531. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
  532. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
  534. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  535. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
  536. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  537. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
  538. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  539. package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
  540. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  541. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
  542. package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
  543. package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
  544. package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
  545. package/schemas/plugins/container/ExternalsType.check.js +2 -2
  546. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
  547. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
  548. package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
  549. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
  550. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
  551. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
  552. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
  553. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
  554. package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
  555. package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
  556. package/schemas/plugins/css/CssParserOptions.check.js +2 -2
  557. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
  558. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  559. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  560. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  561. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  562. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
  563. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
  564. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
  565. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
  566. package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
  567. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  568. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  569. package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
  570. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  571. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  572. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
  573. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  574. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
  575. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  576. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
  577. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
  578. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
  579. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  580. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
  581. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  582. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  583. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  584. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  585. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
  586. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
  587. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
  588. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
  589. package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
  590. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  591. package/types.d.ts +5115 -1863
  592. package/SECURITY.md +0 -9
  593. package/lib/ModuleSourceTypesConstants.js +0 -112
  594. package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
  595. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
  596. package/lib/library/ModernModuleLibraryPlugin.js +0 -144
  597. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
  598. package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
  599. package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
  600. package/schemas/plugins/JsonModulesPluginParser.json +0 -12
  601. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
  602. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
  603. package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
  604. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
  605. package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
  606. package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
  607. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
  608. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
  609. package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
  610. package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
@@ -10,6 +10,8 @@ const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency
10
10
  /** @typedef {import("../Compiler")} Compiler */
11
11
  /** @typedef {import("../Module")} Module */
12
12
 
13
+ const PLUGIN_NAME = "InferAsyncModulesPlugin";
14
+
13
15
  class InferAsyncModulesPlugin {
14
16
  /**
15
17
  * Apply the plugin
@@ -17,37 +19,34 @@ class InferAsyncModulesPlugin {
17
19
  * @returns {void}
18
20
  */
19
21
  apply(compiler) {
20
- compiler.hooks.compilation.tap("InferAsyncModulesPlugin", compilation => {
22
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
21
23
  const { moduleGraph } = compilation;
22
- compilation.hooks.finishModules.tap(
23
- "InferAsyncModulesPlugin",
24
- modules => {
25
- /** @type {Set<Module>} */
26
- const queue = new Set();
27
- for (const module of modules) {
28
- if (module.buildMeta && module.buildMeta.async) {
29
- queue.add(module);
30
- }
24
+ compilation.hooks.finishModules.tap(PLUGIN_NAME, (modules) => {
25
+ /** @type {Set<Module>} */
26
+ const queue = new Set();
27
+ for (const module of modules) {
28
+ if (module.buildMeta && module.buildMeta.async) {
29
+ queue.add(module);
31
30
  }
32
- for (const module of queue) {
33
- moduleGraph.setAsync(module);
34
- for (const [
35
- originModule,
36
- connections
37
- ] of moduleGraph.getIncomingConnectionsByOriginModule(module)) {
38
- if (
39
- connections.some(
40
- c =>
41
- c.dependency instanceof HarmonyImportDependency &&
42
- c.isTargetActive(undefined)
43
- )
44
- ) {
45
- queue.add(/** @type {Module} */ (originModule));
46
- }
31
+ }
32
+ for (const module of queue) {
33
+ moduleGraph.setAsync(module);
34
+ for (const [
35
+ originModule,
36
+ connections
37
+ ] of moduleGraph.getIncomingConnectionsByOriginModule(module)) {
38
+ if (
39
+ connections.some(
40
+ (c) =>
41
+ c.dependency instanceof HarmonyImportDependency &&
42
+ c.isTargetActive(undefined)
43
+ )
44
+ ) {
45
+ queue.add(/** @type {Module} */ (originModule));
47
46
  }
48
47
  }
49
48
  }
50
- );
49
+ });
51
50
  });
52
51
  }
53
52
  }
@@ -15,7 +15,6 @@ const { getEntryRuntime, mergeRuntime } = require("./util/runtime");
15
15
  /** @typedef {import("./ChunkGroup")} ChunkGroup */
16
16
  /** @typedef {import("./Compilation")} Compilation */
17
17
  /** @typedef {import("./DependenciesBlock")} DependenciesBlock */
18
- /** @typedef {import("./Dependency")} Dependency */
19
18
  /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
20
19
  /** @typedef {import("./Entrypoint")} Entrypoint */
21
20
  /** @typedef {import("./Module")} Module */
@@ -256,6 +255,7 @@ const visitModules = (
256
255
  ) => {
257
256
  const { moduleGraph, chunkGraph, moduleMemCaches } = compilation;
258
257
 
258
+ /** @type {Map<RuntimeSpec, BlockModulesMap>} */
259
259
  const blockModulesRuntimeMap = new Map();
260
260
 
261
261
  /** @type {BlockModulesMap | undefined} */
@@ -268,7 +268,7 @@ const visitModules = (
268
268
  * @param {Module} module The module to look up
269
269
  * @returns {number} The ordinal of the module in masks
270
270
  */
271
- const getModuleOrdinal = module => {
271
+ const getModuleOrdinal = (module) => {
272
272
  let ordinal = ordinalByModule.get(module);
273
273
  if (ordinal === undefined) {
274
274
  ordinal = ordinalByModule.size;
@@ -288,11 +288,12 @@ const visitModules = (
288
288
  /**
289
289
  * @param {DependenciesBlock} block block
290
290
  * @param {RuntimeSpec} runtime runtime
291
- * @returns {BlockModulesInFlattenTuples} block modules in flatten tuples
291
+ * @returns {BlockModulesInFlattenTuples | undefined} block modules in flatten tuples
292
292
  */
293
293
  const getBlockModules = (block, runtime) => {
294
294
  blockModulesMap = blockModulesRuntimeMap.get(runtime);
295
295
  if (blockModulesMap === undefined) {
296
+ /** @type {BlockModulesMap} */
296
297
  blockModulesMap = new Map();
297
298
  blockModulesRuntimeMap.set(runtime, blockModulesMap);
298
299
  }
@@ -301,6 +302,7 @@ const visitModules = (
301
302
  const module = /** @type {Module} */ (block.getRootBlock());
302
303
  const memCache = moduleMemCaches && moduleMemCaches.get(module);
303
304
  if (memCache !== undefined) {
305
+ /** @type {BlockModulesMap} */
304
306
  const map = memCache.provide(
305
307
  "bundleChunkGraph.blockModules",
306
308
  runtime,
@@ -312,8 +314,9 @@ const visitModules = (
312
314
  return map;
313
315
  }
314
316
  );
315
- for (const [block, blockModules] of map)
317
+ for (const [block, blockModules] of map) {
316
318
  blockModulesMap.set(block, blockModules);
319
+ }
317
320
  return map.get(block);
318
321
  }
319
322
  logger.time("visitModules: prepare");
@@ -349,10 +352,12 @@ const visitModules = (
349
352
  /** @type {Map<ChunkGroupInfo, Set<DependenciesBlock>>} */
350
353
  const blocksByChunkGroups = new Map();
351
354
 
352
- /** @type {Map<string, ChunkGroupInfo>} */
355
+ /** @typedef {Map<string, ChunkGroupInfo>} NamedChunkGroup */
356
+
357
+ /** @type {NamedChunkGroup} */
353
358
  const namedChunkGroups = new Map();
354
359
 
355
- /** @type {Map<string, ChunkGroupInfo>} */
360
+ /** @type {NamedChunkGroup} */
356
361
  const namedAsyncEntrypoints = new Map();
357
362
 
358
363
  /** @type {Set<ChunkGroupInfo>} */
@@ -482,7 +487,7 @@ const visitModules = (
482
487
  * @param {AsyncDependenciesBlock} b iterating over each Async DepBlock
483
488
  * @returns {void}
484
489
  */
485
- const iteratorBlock = b => {
490
+ const iteratorBlock = (b) => {
486
491
  // 1. We create a chunk group with single chunk in it for this Block
487
492
  // but only once (blockChunkGroups map)
488
493
  /** @type {ChunkGroupInfo | undefined} */
@@ -508,7 +513,9 @@ const visitModules = (
508
513
  cgi = {
509
514
  chunkGroup: entrypoint,
510
515
  initialized: false,
511
- runtime: entrypoint.options.runtime || entrypoint.name,
516
+ runtime:
517
+ entrypoint.options.runtime ||
518
+ /** @type {string | undefined} */ (entrypoint.name),
512
519
  minAvailableModules: ZERO_BIGINT,
513
520
  availableModulesToBeMerged: [],
514
521
  skippedItems: undefined,
@@ -527,11 +534,19 @@ const visitModules = (
527
534
  ? entryOptions.asyncChunks
528
535
  : chunkGroupInfo.asyncChunks
529
536
  };
530
- chunkGroupInfoMap.set(entrypoint, cgi);
537
+ chunkGroupInfoMap.set(
538
+ entrypoint,
539
+ /** @type {ChunkGroupInfo} */
540
+ (cgi)
541
+ );
531
542
 
532
543
  chunkGraph.connectBlockAndChunkGroup(b, entrypoint);
533
544
  if (chunkName) {
534
- namedAsyncEntrypoints.set(chunkName, cgi);
545
+ namedAsyncEntrypoints.set(
546
+ chunkName,
547
+ /** @type {ChunkGroupInfo} */
548
+ (cgi)
549
+ );
535
550
  }
536
551
  } else {
537
552
  entrypoint = /** @type {Entrypoint} */ (cgi.chunkGroup);
@@ -551,7 +566,7 @@ const visitModules = (
551
566
  module,
552
567
  chunk: entrypoint.chunks[0],
553
568
  chunkGroup: entrypoint,
554
- chunkGroupInfo: cgi
569
+ chunkGroupInfo: /** @type {ChunkGroupInfo} */ (cgi)
555
570
  });
556
571
  } else if (!chunkGroupInfo.asyncChunks || !chunkGroupInfo.chunkLoading) {
557
572
  // Just queue the block into the current chunk group
@@ -659,7 +674,7 @@ const visitModules = (
659
674
  * @param {DependenciesBlock} block the block
660
675
  * @returns {void}
661
676
  */
662
- const processBlock = block => {
677
+ const processBlock = (block) => {
663
678
  statProcessedBlocks++;
664
679
  // get prepared block info
665
680
  const blockModules = getBlockModules(block, chunkGroupInfo.runtime);
@@ -751,7 +766,7 @@ const visitModules = (
751
766
  * @param {DependenciesBlock} block the block
752
767
  * @returns {void}
753
768
  */
754
- const processEntryBlock = block => {
769
+ const processEntryBlock = (block) => {
755
770
  statProcessedBlocks++;
756
771
  // get prepared block info
757
772
  const blockModules = getBlockModules(block, chunkGroupInfo.runtime);
@@ -878,9 +893,10 @@ const visitModules = (
878
893
  * @param {ChunkGroupInfo} chunkGroupInfo The info object for the chunk group
879
894
  * @returns {bigint} The mask of available modules after the chunk group
880
895
  */
881
- const calculateResultingAvailableModules = chunkGroupInfo => {
882
- if (chunkGroupInfo.resultingAvailableModules !== undefined)
896
+ const calculateResultingAvailableModules = (chunkGroupInfo) => {
897
+ if (chunkGroupInfo.resultingAvailableModules !== undefined) {
883
898
  return chunkGroupInfo.resultingAvailableModules;
899
+ }
884
900
 
885
901
  let resultingAvailableModules = /** @type {bigint} */ (
886
902
  chunkGroupInfo.minAvailableModules
@@ -1152,7 +1168,9 @@ const visitModules = (
1152
1168
  * @param {BlocksWithNestedBlocks} visited visited dependencies blocks
1153
1169
  */
1154
1170
  const process = (current, visited) => {
1155
- const blockModules = getBlockModules(current, runtime);
1171
+ const blockModules =
1172
+ /** @type {BlockModulesInFlattenTuples} */
1173
+ (getBlockModules(current, runtime));
1156
1174
  for (let i = 0, len = blockModules.length; i < len; i += 3) {
1157
1175
  const activeState = /** @type {ConnectionState} */ (
1158
1176
  blockModules[i + 1]
@@ -1330,8 +1348,9 @@ const buildChunkGraph = (compilation, inputEntrypointsAndModules) => {
1330
1348
  logger.timeEnd("connectChunkGroups");
1331
1349
 
1332
1350
  for (const [chunkGroup, chunkGroupInfo] of chunkGroupInfoMap) {
1333
- for (const chunk of chunkGroup.chunks)
1351
+ for (const chunk of chunkGroup.chunks) {
1334
1352
  chunk.runtime = mergeRuntime(chunk.runtime, chunkGroupInfo.runtime);
1353
+ }
1335
1354
  }
1336
1355
 
1337
1356
  // Cleanup work
@@ -7,6 +7,8 @@
7
7
 
8
8
  /** @typedef {import("../Compiler")} Compiler */
9
9
 
10
+ const PLUGIN_NAME = "AddBuildDependenciesPlugin";
11
+
10
12
  class AddBuildDependenciesPlugin {
11
13
  /**
12
14
  * @param {Iterable<string>} buildDependencies list of build dependencies
@@ -21,12 +23,9 @@ class AddBuildDependenciesPlugin {
21
23
  * @returns {void}
22
24
  */
23
25
  apply(compiler) {
24
- compiler.hooks.compilation.tap(
25
- "AddBuildDependenciesPlugin",
26
- compilation => {
27
- compilation.buildDependencies.addAll(this.buildDependencies);
28
- }
29
- );
26
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
27
+ compilation.buildDependencies.addAll(this.buildDependencies);
28
+ });
30
29
  }
31
30
  }
32
31
 
@@ -12,6 +12,7 @@ const ProgressPlugin = require("../ProgressPlugin");
12
12
  /** @typedef {import("./PackFileCacheStrategy")} PackFileCacheStrategy */
13
13
 
14
14
  const BUILD_DEPENDENCIES_KEY = Symbol("build dependencies key");
15
+ const PLUGIN_NAME = "IdleFileCachePlugin";
15
16
 
16
17
  class IdleFileCachePlugin {
17
18
  /**
@@ -51,11 +52,11 @@ class IdleFileCachePlugin {
51
52
  let timeSpendInStore = 0;
52
53
  let avgTimeSpendInStore = 0;
53
54
 
54
- /** @type {Map<string | typeof BUILD_DEPENDENCIES_KEY, () => Promise<void>>} */
55
+ /** @type {Map<string | typeof BUILD_DEPENDENCIES_KEY, () => Promise<void | void[]>>} */
55
56
  const pendingIdleTasks = new Map();
56
57
 
57
58
  compiler.cache.hooks.store.tap(
58
- { name: "IdleFileCachePlugin", stage: Cache.STAGE_DISK },
59
+ { name: PLUGIN_NAME, stage: Cache.STAGE_DISK },
59
60
  (identifier, etag, data) => {
60
61
  pendingIdleTasks.set(identifier, () =>
61
62
  strategy.store(identifier, etag, data)
@@ -64,10 +65,10 @@ class IdleFileCachePlugin {
64
65
  );
65
66
 
66
67
  compiler.cache.hooks.get.tapPromise(
67
- { name: "IdleFileCachePlugin", stage: Cache.STAGE_DISK },
68
+ { name: PLUGIN_NAME, stage: Cache.STAGE_DISK },
68
69
  (identifier, etag, gotHandlers) => {
69
70
  const restore = () =>
70
- strategy.restore(identifier, etag).then(cacheEntry => {
71
+ strategy.restore(identifier, etag).then((cacheEntry) => {
71
72
  if (cacheEntry === undefined) {
72
73
  gotHandlers.push((result, callback) => {
73
74
  if (result !== undefined) {
@@ -91,8 +92,8 @@ class IdleFileCachePlugin {
91
92
  );
92
93
 
93
94
  compiler.cache.hooks.storeBuildDependencies.tap(
94
- { name: "IdleFileCachePlugin", stage: Cache.STAGE_DISK },
95
- dependencies => {
95
+ { name: PLUGIN_NAME, stage: Cache.STAGE_DISK },
96
+ (dependencies) => {
96
97
  pendingIdleTasks.set(BUILD_DEPENDENCIES_KEY, () =>
97
98
  Promise.resolve().then(() =>
98
99
  strategy.storeBuildDependencies(dependencies)
@@ -102,7 +103,7 @@ class IdleFileCachePlugin {
102
103
  );
103
104
 
104
105
  compiler.cache.hooks.shutdown.tapPromise(
105
- { name: "IdleFileCachePlugin", stage: Cache.STAGE_DISK },
106
+ { name: PLUGIN_NAME, stage: Cache.STAGE_DISK },
106
107
  () => {
107
108
  if (idleTimer) {
108
109
  clearTimeout(idleTimer);
@@ -110,9 +111,9 @@ class IdleFileCachePlugin {
110
111
  }
111
112
  isIdle = false;
112
113
  const reportProgress = ProgressPlugin.getReporter(compiler);
113
- const jobs = Array.from(pendingIdleTasks.values());
114
+ const jobs = [...pendingIdleTasks.values()];
114
115
  if (reportProgress) reportProgress(0, "process pending cache items");
115
- const promises = jobs.map(fn => fn());
116
+ const promises = jobs.map((fn) => fn());
116
117
  pendingIdleTasks.clear();
117
118
  promises.push(currentIdlePromise);
118
119
  const promise = Promise.all(promises);
@@ -129,7 +130,7 @@ class IdleFileCachePlugin {
129
130
  }
130
131
  );
131
132
 
132
- /** @type {Promise<any>} */
133
+ /** @type {Promise<void | void[]>} */
133
134
  let currentIdlePromise = resolvedPromise;
134
135
  let isIdle = false;
135
136
  let isInitialStore = true;
@@ -145,7 +146,10 @@ class IdleFileCachePlugin {
145
146
  promises.push(factory());
146
147
  if (maxCount-- <= 0 || Date.now() > maxTime) break;
147
148
  }
148
- currentIdlePromise = Promise.all(promises);
149
+ currentIdlePromise = Promise.all(
150
+ /** @type {Promise<void>[]} */
151
+ (promises)
152
+ );
149
153
  currentIdlePromise.then(() => {
150
154
  timeSpendInStore += Date.now() - startTime;
151
155
  // Allow to exit the process between
@@ -164,10 +168,8 @@ class IdleFileCachePlugin {
164
168
  timeSpendInStore = 0;
165
169
  timeSpendInBuild = 0;
166
170
  })
167
- .catch(err => {
168
- const logger = compiler.getInfrastructureLogger(
169
- "IdleFileCachePlugin"
170
- );
171
+ .catch((err) => {
172
+ const logger = compiler.getInfrastructureLogger(PLUGIN_NAME);
171
173
  logger.warn(`Background tasks during idle failed: ${err.message}`);
172
174
  logger.debug(err.stack);
173
175
  });
@@ -177,12 +179,12 @@ class IdleFileCachePlugin {
177
179
  /** @type {ReturnType<typeof setTimeout> | undefined} */
178
180
  let idleTimer;
179
181
  compiler.cache.hooks.beginIdle.tap(
180
- { name: "IdleFileCachePlugin", stage: Cache.STAGE_DISK },
182
+ { name: PLUGIN_NAME, stage: Cache.STAGE_DISK },
181
183
  () => {
182
184
  const isLargeChange = timeSpendInBuild > avgTimeSpendInStore * 2;
183
185
  if (isInitialStore && idleTimeoutForInitialStore < idleTimeout) {
184
186
  compiler
185
- .getInfrastructureLogger("IdleFileCachePlugin")
187
+ .getInfrastructureLogger(PLUGIN_NAME)
186
188
  .log(
187
189
  `Initial cache was generated and cache will be persisted in ${
188
190
  idleTimeoutForInitialStore / 1000
@@ -193,7 +195,7 @@ class IdleFileCachePlugin {
193
195
  idleTimeoutAfterLargeChanges < idleTimeout
194
196
  ) {
195
197
  compiler
196
- .getInfrastructureLogger("IdleFileCachePlugin")
198
+ .getInfrastructureLogger(PLUGIN_NAME)
197
199
  .log(
198
200
  `Spend ${Math.round(timeSpendInBuild) / 1000}s in build and ${
199
201
  Math.round(avgTimeSpendInStore) / 1000
@@ -218,7 +220,7 @@ class IdleFileCachePlugin {
218
220
  }
219
221
  );
220
222
  compiler.cache.hooks.endIdle.tap(
221
- { name: "IdleFileCachePlugin", stage: Cache.STAGE_DISK },
223
+ { name: PLUGIN_NAME, stage: Cache.STAGE_DISK },
222
224
  () => {
223
225
  if (idleTimer) {
224
226
  clearTimeout(idleTimer);
@@ -227,7 +229,7 @@ class IdleFileCachePlugin {
227
229
  isIdle = false;
228
230
  }
229
231
  );
230
- compiler.hooks.done.tap("IdleFileCachePlugin", stats => {
232
+ compiler.hooks.done.tap(PLUGIN_NAME, (stats) => {
231
233
  // 10% build overhead is ignored, as it's not cacheable
232
234
  timeSpendInBuild *= 0.9;
233
235
  timeSpendInBuild +=
@@ -7,10 +7,9 @@
7
7
 
8
8
  const Cache = require("../Cache");
9
9
 
10
- /** @typedef {import("webpack-sources").Source} Source */
10
+ /** @typedef {import("../Cache").Data} Data */
11
11
  /** @typedef {import("../Cache").Etag} Etag */
12
12
  /** @typedef {import("../Compiler")} Compiler */
13
- /** @typedef {import("../Module")} Module */
14
13
 
15
14
  class MemoryCachePlugin {
16
15
  /**
@@ -19,7 +18,7 @@ class MemoryCachePlugin {
19
18
  * @returns {void}
20
19
  */
21
20
  apply(compiler) {
22
- /** @type {Map<string, { etag: Etag | null, data: any } | null>} */
21
+ /** @type {Map<string, { etag: Etag | null, data: Data } | null>} */
23
22
  const cache = new Map();
24
23
  compiler.cache.hooks.store.tap(
25
24
  { name: "MemoryCachePlugin", stage: Cache.STAGE_MEMORY },
@@ -54,4 +53,5 @@ class MemoryCachePlugin {
54
53
  );
55
54
  }
56
55
  }
56
+
57
57
  module.exports = MemoryCachePlugin;
@@ -7,15 +7,20 @@
7
7
 
8
8
  const Cache = require("../Cache");
9
9
 
10
- /** @typedef {import("webpack-sources").Source} Source */
10
+ /** @typedef {import("../Cache").Data} Data */
11
11
  /** @typedef {import("../Cache").Etag} Etag */
12
12
  /** @typedef {import("../Compiler")} Compiler */
13
- /** @typedef {import("../Module")} Module */
13
+
14
+ /**
15
+ * @typedef {object} MemoryWithGcCachePluginOptions
16
+ * @property {number} maxGenerations max generations
17
+ */
18
+
19
+ const PLUGIN_NAME = "MemoryWithGcCachePlugin";
14
20
 
15
21
  class MemoryWithGcCachePlugin {
16
22
  /**
17
- * @param {object} options Options
18
- * @param {number} options.maxGenerations max generations
23
+ * @param {MemoryWithGcCachePluginOptions} options options
19
24
  */
20
25
  constructor({ maxGenerations }) {
21
26
  this._maxGenerations = maxGenerations;
@@ -28,14 +33,14 @@ class MemoryWithGcCachePlugin {
28
33
  */
29
34
  apply(compiler) {
30
35
  const maxGenerations = this._maxGenerations;
31
- /** @type {Map<string, { etag: Etag | null, data: any } | undefined | null>} */
36
+ /** @type {Map<string, { etag: Etag | null, data: Data } | undefined | null>} */
32
37
  const cache = new Map();
33
- /** @type {Map<string, { entry: { etag: Etag | null, data: any } | null, until: number }>} */
38
+ /** @type {Map<string, { entry: { etag: Etag | null, data: Data } | null, until: number }>} */
34
39
  const oldCache = new Map();
35
40
  let generation = 0;
36
41
  let cachePosition = 0;
37
- const logger = compiler.getInfrastructureLogger("MemoryWithGcCachePlugin");
38
- compiler.hooks.afterDone.tap("MemoryWithGcCachePlugin", () => {
42
+ const logger = compiler.getInfrastructureLogger(PLUGIN_NAME);
43
+ compiler.hooks.afterDone.tap(PLUGIN_NAME, () => {
39
44
  generation++;
40
45
  let clearedEntries = 0;
41
46
  let lastClearedIdentifier;
@@ -86,13 +91,13 @@ class MemoryWithGcCachePlugin {
86
91
  }
87
92
  });
88
93
  compiler.cache.hooks.store.tap(
89
- { name: "MemoryWithGcCachePlugin", stage: Cache.STAGE_MEMORY },
94
+ { name: PLUGIN_NAME, stage: Cache.STAGE_MEMORY },
90
95
  (identifier, etag, data) => {
91
96
  cache.set(identifier, { etag, data });
92
97
  }
93
98
  );
94
99
  compiler.cache.hooks.get.tap(
95
- { name: "MemoryWithGcCachePlugin", stage: Cache.STAGE_MEMORY },
100
+ { name: PLUGIN_NAME, stage: Cache.STAGE_MEMORY },
96
101
  (identifier, etag, gotHandlers) => {
97
102
  const cacheEntry = cache.get(identifier);
98
103
  if (cacheEntry === null) {
@@ -124,7 +129,7 @@ class MemoryWithGcCachePlugin {
124
129
  }
125
130
  );
126
131
  compiler.cache.hooks.shutdown.tap(
127
- { name: "MemoryWithGcCachePlugin", stage: Cache.STAGE_MEMORY },
132
+ { name: PLUGIN_NAME, stage: Cache.STAGE_MEMORY },
128
133
  () => {
129
134
  cache.clear();
130
135
  oldCache.clear();
@@ -132,4 +137,5 @@ class MemoryWithGcCachePlugin {
132
137
  );
133
138
  }
134
139
  }
140
+
135
141
  module.exports = MemoryWithGcCachePlugin;