webpack 5.76.1 → 5.88.2

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.

Potentially problematic release.


This version of webpack might be problematic. Click here for more details.

Files changed (442) hide show
  1. package/README.md +10 -4
  2. package/bin/webpack.js +26 -2
  3. package/hot/dev-server.js +2 -1
  4. package/hot/lazy-compilation-node.js +10 -0
  5. package/hot/lazy-compilation-web.js +9 -0
  6. package/hot/log-apply-result.js +5 -0
  7. package/hot/log.js +22 -0
  8. package/hot/only-dev-server.js +2 -1
  9. package/hot/poll.js +3 -0
  10. package/hot/signal.js +4 -0
  11. package/lib/APIPlugin.js +174 -116
  12. package/lib/AsyncDependenciesBlock.js +13 -5
  13. package/lib/AutomaticPrefetchPlugin.js +1 -0
  14. package/lib/BannerPlugin.js +6 -1
  15. package/lib/CacheFacade.js +4 -0
  16. package/lib/CaseSensitiveModulesWarning.js +3 -1
  17. package/lib/Chunk.js +36 -18
  18. package/lib/ChunkGraph.js +4 -4
  19. package/lib/ChunkGroup.js +25 -10
  20. package/lib/CleanPlugin.js +30 -7
  21. package/lib/CodeGenerationResults.js +2 -2
  22. package/lib/CompatibilityPlugin.js +85 -46
  23. package/lib/Compilation.js +17 -8
  24. package/lib/Compiler.js +18 -14
  25. package/lib/ConcatenationScope.js +2 -2
  26. package/lib/ConditionalInitFragment.js +11 -1
  27. package/lib/ConstPlugin.js +95 -47
  28. package/lib/ContextModule.js +20 -6
  29. package/lib/ContextModuleFactory.js +2 -1
  30. package/lib/ContextReplacementPlugin.js +13 -0
  31. package/lib/CssModule.js +169 -0
  32. package/lib/DefinePlugin.js +152 -86
  33. package/lib/DelegatedModule.js +22 -4
  34. package/lib/DelegatedModuleFactoryPlugin.js +6 -0
  35. package/lib/DependenciesBlock.js +17 -1
  36. package/lib/Dependency.js +19 -5
  37. package/lib/DependencyTemplates.js +1 -1
  38. package/lib/DllEntryPlugin.js +16 -1
  39. package/lib/DllModule.js +17 -2
  40. package/lib/DllModuleFactory.js +1 -1
  41. package/lib/DllReferencePlugin.js +13 -1
  42. package/lib/Entrypoint.js +1 -1
  43. package/lib/ErrorHelpers.js +62 -22
  44. package/lib/EvalSourceMapDevToolPlugin.js +9 -2
  45. package/lib/ExportsInfo.js +25 -4
  46. package/lib/ExportsInfoApiPlugin.js +30 -14
  47. package/lib/ExternalModule.js +30 -9
  48. package/lib/FileSystemInfo.js +61 -25
  49. package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
  50. package/lib/FlagDependencyExportsPlugin.js +336 -348
  51. package/lib/FlagDependencyUsagePlugin.js +9 -9
  52. package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
  53. package/lib/Generator.js +7 -0
  54. package/lib/HookWebpackError.js +1 -1
  55. package/lib/HotModuleReplacementPlugin.js +60 -46
  56. package/lib/IgnoreErrorModuleFactory.js +1 -1
  57. package/lib/InitFragment.js +28 -5
  58. package/lib/JavascriptMetaInfoPlugin.js +27 -15
  59. package/lib/LibManifestPlugin.js +22 -5
  60. package/lib/LoaderOptionsPlugin.js +12 -2
  61. package/lib/MainTemplate.js +2 -2
  62. package/lib/Module.js +44 -12
  63. package/lib/ModuleBuildError.js +9 -0
  64. package/lib/ModuleDependencyError.js +4 -2
  65. package/lib/ModuleDependencyWarning.js +4 -2
  66. package/lib/ModuleError.js +9 -0
  67. package/lib/ModuleFactory.js +1 -1
  68. package/lib/ModuleFilenameHelpers.js +114 -4
  69. package/lib/ModuleGraph.js +33 -23
  70. package/lib/ModuleGraphConnection.js +19 -6
  71. package/lib/ModuleInfoHeaderPlugin.js +9 -2
  72. package/lib/ModuleNotFoundError.js +5 -2
  73. package/lib/ModuleParseError.js +9 -0
  74. package/lib/ModuleProfile.js +1 -0
  75. package/lib/ModuleRestoreError.js +2 -0
  76. package/lib/ModuleStoreError.js +2 -1
  77. package/lib/ModuleTypeConstants.js +169 -0
  78. package/lib/ModuleWarning.js +9 -0
  79. package/lib/MultiWatching.js +4 -0
  80. package/lib/NodeStuffPlugin.js +65 -35
  81. package/lib/NormalModule.js +12 -2
  82. package/lib/NormalModuleFactory.js +56 -8
  83. package/lib/NormalModuleReplacementPlugin.js +5 -3
  84. package/lib/NullFactory.js +1 -1
  85. package/lib/PrefetchPlugin.js +4 -0
  86. package/lib/ProgressPlugin.js +71 -15
  87. package/lib/ProvidePlugin.js +30 -14
  88. package/lib/RawModule.js +13 -2
  89. package/lib/RecordIdsPlugin.js +4 -4
  90. package/lib/RequireJsStuffPlugin.js +22 -15
  91. package/lib/RuntimeGlobals.js +5 -0
  92. package/lib/RuntimeModule.js +12 -11
  93. package/lib/RuntimePlugin.js +10 -3
  94. package/lib/RuntimeTemplate.js +29 -11
  95. package/lib/SelfModuleFactory.js +12 -0
  96. package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
  97. package/lib/SourceMapDevToolPlugin.js +47 -11
  98. package/lib/Template.js +5 -3
  99. package/lib/UseStrictPlugin.js +29 -11
  100. package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
  101. package/lib/WarnDeprecatedOptionPlugin.js +7 -0
  102. package/lib/WatchIgnorePlugin.js +4 -0
  103. package/lib/Watching.js +62 -25
  104. package/lib/WebpackError.js +14 -5
  105. package/lib/WebpackIsIncludedPlugin.js +22 -13
  106. package/lib/WebpackOptionsApply.js +41 -44
  107. package/lib/WebpackOptionsDefaulter.js +10 -3
  108. package/lib/asset/AssetGenerator.js +24 -9
  109. package/lib/asset/AssetModulesPlugin.js +28 -12
  110. package/lib/asset/AssetParser.js +15 -7
  111. package/lib/asset/AssetSourceParser.js +8 -3
  112. package/lib/asset/RawDataUrlModule.js +15 -4
  113. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  114. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  115. package/lib/buildChunkGraph.js +37 -21
  116. package/lib/cache/IdleFileCachePlugin.js +2 -1
  117. package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
  118. package/lib/cache/PackFileCacheStrategy.js +59 -22
  119. package/lib/cache/ResolverCachePlugin.js +3 -0
  120. package/lib/config/browserslistTargetHandler.js +10 -10
  121. package/lib/config/defaults.js +306 -105
  122. package/lib/config/normalization.js +110 -71
  123. package/lib/config/target.js +37 -10
  124. package/lib/container/ContainerEntryModule.js +11 -1
  125. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  126. package/lib/container/ContainerExposedDependency.js +9 -0
  127. package/lib/container/ContainerPlugin.js +3 -1
  128. package/lib/container/FallbackDependency.js +13 -0
  129. package/lib/container/FallbackItemDependency.js +3 -0
  130. package/lib/container/FallbackModule.js +12 -2
  131. package/lib/container/FallbackModuleFactory.js +1 -1
  132. package/lib/container/RemoteModule.js +11 -1
  133. package/lib/container/RemoteRuntimeModule.js +3 -2
  134. package/lib/container/RemoteToExternalDependency.js +3 -0
  135. package/lib/css/CssExportsGenerator.js +9 -0
  136. package/lib/css/CssGenerator.js +5 -1
  137. package/lib/css/CssLoadingRuntimeModule.js +53 -22
  138. package/lib/css/CssModulesPlugin.js +253 -74
  139. package/lib/css/CssParser.js +697 -282
  140. package/lib/css/walkCssTokens.js +269 -138
  141. package/lib/debug/ProfilingPlugin.js +33 -12
  142. package/lib/dependencies/AMDDefineDependency.js +54 -10
  143. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
  144. package/lib/dependencies/AMDPlugin.js +33 -20
  145. package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
  146. package/lib/dependencies/AMDRequireContextDependency.js +15 -0
  147. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  148. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
  149. package/lib/dependencies/AMDRequireDependency.js +16 -1
  150. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  151. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  152. package/lib/dependencies/CachedConstDependency.js +14 -0
  153. package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
  154. package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
  155. package/lib/dependencies/CommonJsExportsDependency.js +16 -0
  156. package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
  157. package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
  158. package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
  159. package/lib/dependencies/CommonJsPlugin.js +51 -26
  160. package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
  161. package/lib/dependencies/CommonJsRequireDependency.js +7 -0
  162. package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
  163. package/lib/dependencies/ConstDependency.js +11 -2
  164. package/lib/dependencies/ContextDependency.js +15 -2
  165. package/lib/dependencies/ContextDependencyHelpers.js +3 -3
  166. package/lib/dependencies/ContextElementDependency.js +8 -0
  167. package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
  168. package/lib/dependencies/CriticalDependencyWarning.js +3 -0
  169. package/lib/dependencies/CssExportDependency.js +8 -0
  170. package/lib/dependencies/CssImportDependency.js +55 -3
  171. package/lib/dependencies/CssLocalIdentifierDependency.js +18 -1
  172. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
  173. package/lib/dependencies/CssUrlDependency.js +46 -16
  174. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  175. package/lib/dependencies/DllEntryDependency.js +14 -0
  176. package/lib/dependencies/DynamicExports.js +10 -6
  177. package/lib/dependencies/ExportsInfoDependency.js +25 -4
  178. package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
  179. package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
  180. package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
  181. package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
  182. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
  183. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
  184. package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
  185. package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
  186. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
  187. package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
  188. package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
  189. package/lib/dependencies/HarmonyExports.js +11 -5
  190. package/lib/dependencies/HarmonyImportDependency.js +10 -1
  191. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
  192. package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
  193. package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
  194. package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
  195. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
  196. package/lib/dependencies/ImportContextDependency.js +15 -0
  197. package/lib/dependencies/ImportDependency.js +15 -4
  198. package/lib/dependencies/ImportEagerDependency.js +7 -4
  199. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
  200. package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
  201. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  202. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  203. package/lib/dependencies/ImportMetaPlugin.js +103 -51
  204. package/lib/dependencies/ImportParserPlugin.js +83 -25
  205. package/lib/dependencies/ImportPlugin.js +21 -7
  206. package/lib/dependencies/ImportWeakDependency.js +7 -4
  207. package/lib/dependencies/JsonExportsDependency.js +9 -1
  208. package/lib/dependencies/LocalModule.js +16 -0
  209. package/lib/dependencies/LocalModuleDependency.js +15 -0
  210. package/lib/dependencies/LocalModulesHelpers.js +18 -0
  211. package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
  212. package/lib/dependencies/ModuleDependency.js +9 -1
  213. package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
  214. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  215. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  216. package/lib/dependencies/PrefetchDependency.js +3 -0
  217. package/lib/dependencies/ProvidedDependency.js +14 -2
  218. package/lib/dependencies/PureExpressionDependency.js +10 -1
  219. package/lib/dependencies/RequireContextDependency.js +6 -0
  220. package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
  221. package/lib/dependencies/RequireContextPlugin.js +19 -6
  222. package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
  223. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
  224. package/lib/dependencies/RequireEnsureDependency.js +16 -2
  225. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  226. package/lib/dependencies/RequireEnsurePlugin.js +27 -7
  227. package/lib/dependencies/RequireHeaderDependency.js +14 -1
  228. package/lib/dependencies/RequireIncludeDependency.js +5 -0
  229. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
  230. package/lib/dependencies/RequireIncludePlugin.js +25 -5
  231. package/lib/dependencies/RequireResolveContextDependency.js +17 -0
  232. package/lib/dependencies/RequireResolveDependency.js +6 -0
  233. package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
  234. package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
  235. package/lib/dependencies/StaticExportsDependency.js +8 -0
  236. package/lib/dependencies/SystemPlugin.js +48 -21
  237. package/lib/dependencies/SystemRuntimeModule.js +1 -1
  238. package/lib/dependencies/URLDependency.js +13 -4
  239. package/lib/dependencies/URLPlugin.js +31 -18
  240. package/lib/dependencies/UnsupportedDependency.js +13 -0
  241. package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
  242. package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
  243. package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
  244. package/lib/dependencies/WorkerDependency.js +47 -3
  245. package/lib/dependencies/WorkerPlugin.js +105 -32
  246. package/lib/dependencies/getFunctionExpression.js +7 -0
  247. package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
  248. package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
  249. package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
  250. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
  251. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  252. package/lib/hmr/LazyCompilationPlugin.js +14 -5
  253. package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
  254. package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
  255. package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
  256. package/lib/ids/HashedModuleIdsPlugin.js +9 -2
  257. package/lib/ids/IdHelpers.js +6 -0
  258. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  259. package/lib/ids/NamedModuleIdsPlugin.js +14 -3
  260. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  261. package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
  262. package/lib/ids/SyncModuleIdsPlugin.js +3 -2
  263. package/lib/index.js +8 -0
  264. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  265. package/lib/javascript/BasicEvaluatedExpression.js +137 -11
  266. package/lib/javascript/ChunkHelpers.js +2 -2
  267. package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
  268. package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
  269. package/lib/javascript/JavascriptModulesPlugin.js +217 -198
  270. package/lib/javascript/JavascriptParser.js +941 -256
  271. package/lib/javascript/JavascriptParserHelpers.js +37 -15
  272. package/lib/javascript/StartupHelpers.js +2 -2
  273. package/lib/json/JsonData.js +26 -1
  274. package/lib/json/JsonGenerator.js +21 -7
  275. package/lib/json/JsonModulesPlugin.js +14 -5
  276. package/lib/json/JsonParser.js +27 -13
  277. package/lib/library/AbstractLibraryPlugin.js +4 -0
  278. package/lib/library/AmdLibraryPlugin.js +22 -6
  279. package/lib/library/AssignLibraryPlugin.js +19 -5
  280. package/lib/library/EnableLibraryPlugin.js +4 -0
  281. package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
  282. package/lib/library/ModuleLibraryPlugin.js +8 -4
  283. package/lib/library/SystemLibraryPlugin.js +2 -1
  284. package/lib/library/UmdLibraryPlugin.js +24 -2
  285. package/lib/logging/runtime.js +1 -1
  286. package/lib/logging/truncateArgs.js +4 -0
  287. package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
  288. package/lib/node/NodeTargetPlugin.js +3 -0
  289. package/lib/node/NodeTemplatePlugin.js +10 -2
  290. package/lib/node/NodeWatchFileSystem.js +1 -1
  291. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
  292. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
  293. package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
  294. package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
  295. package/lib/node/nodeConsole.js +2 -4
  296. package/lib/optimize/AggressiveMergingPlugin.js +8 -0
  297. package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
  298. package/lib/optimize/ConcatenatedModule.js +8 -6
  299. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
  300. package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
  301. package/lib/optimize/InnerGraph.js +5 -5
  302. package/lib/optimize/InnerGraphPlugin.js +57 -48
  303. package/lib/optimize/LimitChunkCountPlugin.js +29 -4
  304. package/lib/optimize/MangleExportsPlugin.js +1 -1
  305. package/lib/optimize/MinMaxSizeWarning.js +5 -0
  306. package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
  307. package/lib/optimize/RealContentHashPlugin.js +86 -30
  308. package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
  309. package/lib/optimize/RuntimeChunkPlugin.js +9 -1
  310. package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
  311. package/lib/optimize/SplitChunksPlugin.js +71 -31
  312. package/lib/performance/SizeLimitsPlugin.js +7 -4
  313. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
  314. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
  315. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
  316. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
  317. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
  318. package/lib/rules/BasicEffectRulePlugin.js +4 -0
  319. package/lib/rules/BasicMatcherRulePlugin.js +5 -0
  320. package/lib/rules/RuleSetCompiler.js +3 -3
  321. package/lib/rules/UseEffectRulePlugin.js +6 -4
  322. package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
  323. package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
  324. package/lib/runtime/BaseUriRuntimeModule.js +8 -4
  325. package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
  326. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
  327. package/lib/runtime/CompatRuntimeModule.js +7 -2
  328. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
  329. package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
  330. package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
  331. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
  332. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
  333. package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
  334. package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
  335. package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
  336. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
  337. package/lib/runtime/GlobalRuntimeModule.js +1 -1
  338. package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
  339. package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
  340. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
  341. package/lib/runtime/NonceRuntimeModule.js +1 -1
  342. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
  343. package/lib/runtime/PublicPathRuntimeModule.js +9 -2
  344. package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
  345. package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
  346. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  347. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +13 -4
  348. package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
  349. package/lib/runtime/SystemContextRuntimeModule.js +1 -1
  350. package/lib/schemes/DataUriPlugin.js +16 -3
  351. package/lib/schemes/HttpUriPlugin.js +38 -0
  352. package/lib/serialization/ArraySerializer.js +22 -6
  353. package/lib/serialization/BinaryMiddleware.js +164 -1
  354. package/lib/serialization/DateObjectSerializer.js +15 -4
  355. package/lib/serialization/ErrorObjectSerializer.js +23 -8
  356. package/lib/serialization/FileMiddleware.js +17 -0
  357. package/lib/serialization/MapObjectSerializer.js +24 -8
  358. package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
  359. package/lib/serialization/ObjectMiddleware.js +33 -2
  360. package/lib/serialization/PlainObjectSerializer.js +23 -12
  361. package/lib/serialization/RegExpObjectSerializer.js +16 -5
  362. package/lib/serialization/SetObjectSerializer.js +21 -6
  363. package/lib/serialization/types.js +1 -1
  364. package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
  365. package/lib/sharing/ConsumeSharedModule.js +13 -2
  366. package/lib/sharing/ConsumeSharedPlugin.js +4 -0
  367. package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
  368. package/lib/sharing/ProvideSharedDependency.js +17 -0
  369. package/lib/sharing/ProvideSharedModule.js +11 -1
  370. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  371. package/lib/sharing/ProvideSharedPlugin.js +22 -21
  372. package/lib/sharing/ShareRuntimeModule.js +19 -9
  373. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  374. package/lib/sharing/utils.js +320 -7
  375. package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
  376. package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
  377. package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
  378. package/lib/util/AsyncQueue.js +4 -2
  379. package/lib/util/LazySet.js +10 -2
  380. package/lib/util/MapHelpers.js +19 -5
  381. package/lib/util/ParallelismFactorCalculator.js +10 -0
  382. package/lib/util/Semaphore.js +1 -1
  383. package/lib/util/StackedCacheMap.js +7 -1
  384. package/lib/util/StringXor.js +51 -0
  385. package/lib/util/URLAbsoluteSpecifier.js +1 -1
  386. package/lib/util/binarySearchBounds.js +49 -0
  387. package/lib/util/compileBooleanMatcher.js +31 -0
  388. package/lib/util/createHash.js +35 -13
  389. package/lib/util/deprecation.js +18 -3
  390. package/lib/util/deterministicGrouping.js +50 -11
  391. package/lib/util/findGraphRoots.js +4 -2
  392. package/lib/util/hash/md4.js +2 -2
  393. package/lib/util/hash/xxhash64.js +1 -1
  394. package/lib/util/identifier.js +4 -0
  395. package/lib/util/internalSerializables.js +1 -0
  396. package/lib/util/makeSerializable.js +7 -0
  397. package/lib/util/memoize.js +3 -3
  398. package/lib/util/numberHash.js +75 -21
  399. package/lib/util/processAsyncTree.js +7 -1
  400. package/lib/util/propertyAccess.js +9 -54
  401. package/lib/util/propertyName.js +79 -0
  402. package/lib/util/registerExternalSerializer.js +1 -1
  403. package/lib/util/runtime.js +84 -21
  404. package/lib/util/semver.js +2 -1
  405. package/lib/util/serialization.js +10 -0
  406. package/lib/util/smartGrouping.js +1 -1
  407. package/lib/validateSchema.js +6 -2
  408. package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
  409. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
  410. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  411. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
  412. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
  413. package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
  414. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
  415. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
  416. package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
  417. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  418. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
  419. package/lib/wasm-sync/WebAssemblyParser.js +15 -4
  420. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  421. package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
  422. package/lib/web/FetchCompileWasmPlugin.js +59 -42
  423. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  424. package/lib/web/JsonpChunkLoadingRuntimeModule.js +26 -9
  425. package/lib/webpack.js +12 -3
  426. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
  427. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
  428. package/module.d.ts +55 -37
  429. package/package.json +59 -56
  430. package/schemas/WebpackOptions.check.js +1 -1
  431. package/schemas/WebpackOptions.json +133 -6
  432. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  433. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  434. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  435. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  436. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  437. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  438. package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
  439. package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
  440. package/schemas/plugins/css/CssParserOptions.json +1 -1
  441. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  442. package/types.d.ts +1629 -683
@@ -15,13 +15,15 @@ const makeSerializable = require("./util/makeSerializable");
15
15
  /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
16
16
  /** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */
17
17
  /** @typedef {import("./Module")} Module */
18
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
19
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
18
20
  /** @typedef {import("./util/Hash")} Hash */
19
21
 
20
22
  class AsyncDependenciesBlock extends DependenciesBlock {
21
23
  /**
22
- * @param {ChunkGroupOptions & { entryOptions?: EntryOptions }} groupOptions options for the group
23
- * @param {DependencyLocation=} loc the line of code
24
- * @param {string=} request the request
24
+ * @param {(ChunkGroupOptions & { entryOptions?: EntryOptions }) | null} groupOptions options for the group
25
+ * @param {(DependencyLocation | null)=} loc the line of code
26
+ * @param {(string | null)=} request the request
25
27
  */
26
28
  constructor(groupOptions, loc, request) {
27
29
  super();
@@ -37,14 +39,14 @@ class AsyncDependenciesBlock extends DependenciesBlock {
37
39
  }
38
40
 
39
41
  /**
40
- * @returns {string} The name of the chunk
42
+ * @returns {string | undefined} The name of the chunk
41
43
  */
42
44
  get chunkName() {
43
45
  return this.groupOptions.name;
44
46
  }
45
47
 
46
48
  /**
47
- * @param {string} value The new chunk name
49
+ * @param {string | undefined} value The new chunk name
48
50
  * @returns {void}
49
51
  */
50
52
  set chunkName(value) {
@@ -71,6 +73,9 @@ class AsyncDependenciesBlock extends DependenciesBlock {
71
73
  super.updateHash(hash, context);
72
74
  }
73
75
 
76
+ /**
77
+ * @param {ObjectSerializerContext} context context
78
+ */
74
79
  serialize(context) {
75
80
  const { write } = context;
76
81
  write(this.groupOptions);
@@ -79,6 +84,9 @@ class AsyncDependenciesBlock extends DependenciesBlock {
79
84
  super.serialize(context);
80
85
  }
81
86
 
87
+ /**
88
+ * @param {ObjectDeserializerContext} context context
89
+ */
82
90
  deserialize(context) {
83
91
  const { read } = context;
84
92
  this.groupOptions = read();
@@ -27,6 +27,7 @@ class AutomaticPrefetchPlugin {
27
27
  );
28
28
  }
29
29
  );
30
+ /** @type {{context: string, request: string}[] | null} */
30
31
  let lastModules = null;
31
32
  compiler.hooks.afterCompile.tap("AutomaticPrefetchPlugin", compilation => {
32
33
  lastModules = [];
@@ -11,6 +11,7 @@ const ModuleFilenameHelpers = require("./ModuleFilenameHelpers");
11
11
  const Template = require("./Template");
12
12
  const createSchemaValidation = require("./util/create-schema-validation");
13
13
 
14
+ /** @typedef {import("../declarations/plugins/BannerPlugin").BannerFunction} BannerFunction */
14
15
  /** @typedef {import("../declarations/plugins/BannerPlugin").BannerPluginArgument} BannerPluginArgument */
15
16
  /** @typedef {import("../declarations/plugins/BannerPlugin").BannerPluginOptions} BannerPluginOptions */
16
17
  /** @typedef {import("./Compiler")} Compiler */
@@ -24,6 +25,10 @@ const validate = createSchemaValidation(
24
25
  }
25
26
  );
26
27
 
28
+ /**
29
+ * @param {string} str string to wrap
30
+ * @returns {string} wrapped string
31
+ */
27
32
  const wrapComment = str => {
28
33
  if (!str.includes("\n")) {
29
34
  return Template.toComment(str);
@@ -56,7 +61,7 @@ class BannerPlugin {
56
61
  const getBanner = bannerOption;
57
62
  this.banner = this.options.raw
58
63
  ? getBanner
59
- : data => wrapComment(getBanner(data));
64
+ : /** @type {BannerFunction} */ data => wrapComment(getBanner(data));
60
65
  } else {
61
66
  const banner = this.options.raw
62
67
  ? bannerOption
@@ -55,6 +55,10 @@ class MultiItemCache {
55
55
  * @returns {Promise<T>} promise with the data
56
56
  */
57
57
  getPromise() {
58
+ /**
59
+ * @param {number} i index
60
+ * @returns {Promise<T>} promise with the data
61
+ */
58
62
  const next = i => {
59
63
  return this._items[i].getPromise().then(result => {
60
64
  if (result !== undefined) return result;
@@ -42,7 +42,9 @@ const createModulesListMessage = (modules, moduleGraph) => {
42
42
 
43
43
  if (validReasons.length > 0) {
44
44
  message += `\n Used by ${validReasons.length} module(s), i. e.`;
45
- message += `\n ${validReasons[0].identifier()}`;
45
+ message += `\n ${
46
+ /** @type {Module[]} */ (validReasons)[0].identifier()
47
+ }`;
46
48
  }
47
49
  return message;
48
50
  })
package/lib/Chunk.js CHANGED
@@ -23,6 +23,7 @@ const { mergeRuntime } = require("./util/runtime");
23
23
  /** @typedef {import("./ChunkGraph").ChunkSizeOptions} ChunkSizeOptions */
24
24
  /** @typedef {import("./ChunkGraph").ModuleFilterPredicate} ModuleFilterPredicate */
25
25
  /** @typedef {import("./ChunkGroup")} ChunkGroup */
26
+ /** @typedef {import("./ChunkGroup").ChunkGroupOptions} ChunkGroupOptions */
26
27
  /** @typedef {import("./Compilation")} Compilation */
27
28
  /** @typedef {import("./Compilation").AssetInfo} AssetInfo */
28
29
  /** @typedef {import("./Compilation").PathData} PathData */
@@ -32,6 +33,8 @@ const { mergeRuntime } = require("./util/runtime");
32
33
  /** @typedef {import("./util/Hash")} Hash */
33
34
  /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
34
35
 
36
+ /** @typedef {number | string} ChunkId */
37
+
35
38
  const ChunkFilesSet = createArrayToSetDeprecationSet("chunk.files");
36
39
 
37
40
  /**
@@ -66,21 +69,21 @@ class Chunk {
66
69
  * @param {boolean} backCompat enable backward-compatibility
67
70
  */
68
71
  constructor(name, backCompat = true) {
69
- /** @type {number | string | null} */
72
+ /** @type {ChunkId | null} */
70
73
  this.id = null;
71
- /** @type {(number|string)[] | null} */
74
+ /** @type {ChunkId[] | null} */
72
75
  this.ids = null;
73
76
  /** @type {number} */
74
77
  this.debugId = debugId++;
75
- /** @type {string} */
78
+ /** @type {string | undefined} */
76
79
  this.name = name;
77
80
  /** @type {SortableSet<string>} */
78
81
  this.idNameHints = new SortableSet();
79
82
  /** @type {boolean} */
80
83
  this.preventIntegration = false;
81
- /** @type {(string | function(PathData, AssetInfo=): string)?} */
84
+ /** @type {(string | function(PathData, AssetInfo=): string) | undefined} */
82
85
  this.filenameTemplate = undefined;
83
- /** @type {(string | function(PathData, AssetInfo=): string)?} */
86
+ /** @type {(string | function(PathData, AssetInfo=): string) | undefined} */
84
87
  this.cssFilenameTemplate = undefined;
85
88
  /** @private @type {SortableSet<ChunkGroup>} */
86
89
  this._groups = new SortableSet(undefined, compareChunkGroupsByIndex);
@@ -350,7 +353,7 @@ class Chunk {
350
353
  const chunkModuleHashMap = Object.create(null);
351
354
 
352
355
  for (const asyncChunk of this.getAllAsyncChunks()) {
353
- /** @type {(string|number)[]} */
356
+ /** @type {ChunkId[] | undefined} */
354
357
  let array;
355
358
  for (const module of chunkGraph.getOrderedChunkModulesIterable(
356
359
  asyncChunk,
@@ -359,7 +362,7 @@ class Chunk {
359
362
  if (filterFn(module)) {
360
363
  if (array === undefined) {
361
364
  array = [];
362
- chunkModuleIdMap[asyncChunk.id] = array;
365
+ chunkModuleIdMap[/** @type {ChunkId} */ (asyncChunk.id)] = array;
363
366
  }
364
367
  const moduleId = chunkGraph.getModuleId(module);
365
368
  array.push(moduleId);
@@ -405,15 +408,18 @@ class Chunk {
405
408
  const chunkNameMap = Object.create(null);
406
409
 
407
410
  for (const chunk of this.getAllAsyncChunks()) {
408
- chunkHashMap[chunk.id] = realHash ? chunk.hash : chunk.renderedHash;
411
+ const id = /** @type {ChunkId} */ (chunk.id);
412
+ chunkHashMap[id] =
413
+ /** @type {string} */
414
+ (realHash ? chunk.hash : chunk.renderedHash);
409
415
  for (const key of Object.keys(chunk.contentHash)) {
410
416
  if (!chunkContentHashMap[key]) {
411
417
  chunkContentHashMap[key] = Object.create(null);
412
418
  }
413
- chunkContentHashMap[key][chunk.id] = chunk.contentHash[key];
419
+ chunkContentHashMap[key][id] = chunk.contentHash[key];
414
420
  }
415
421
  if (chunk.name) {
416
- chunkNameMap[chunk.id] = chunk.name;
422
+ chunkNameMap[id] = chunk.name;
417
423
  }
418
424
  }
419
425
 
@@ -505,7 +511,7 @@ class Chunk {
505
511
  }
506
512
 
507
513
  /**
508
- * @returns {Iterable<ChunkGroup>} the chunkGroups that the said chunk is referenced in
514
+ * @returns {SortableSet<ChunkGroup>} the chunkGroups that the said chunk is referenced in
509
515
  */
510
516
  get groupsIterable() {
511
517
  this._groups.sort();
@@ -553,7 +559,11 @@ class Chunk {
553
559
  const entryModules =
554
560
  chunkGraph.getChunkEntryModulesWithChunkGroupIterable(this);
555
561
  for (const [m, chunkGroup] of entryModules) {
556
- hash.update(`entry${chunkGraph.getModuleId(m)}${chunkGroup.id}`);
562
+ hash.update(
563
+ `entry${chunkGraph.getModuleId(m)}${
564
+ /** @type {ChunkGroup} */ (chunkGroup).id
565
+ }`
566
+ );
557
567
  }
558
568
  }
559
569
 
@@ -697,7 +707,13 @@ class Chunk {
697
707
  lists.set(name, list);
698
708
  }
699
709
  list.push({
700
- order: childGroup.options[key],
710
+ order:
711
+ /** @type {number} */
712
+ (
713
+ childGroup.options[
714
+ /** @type {keyof ChunkGroupOptions} */ (key)
715
+ ]
716
+ ),
701
717
  group: childGroup
702
718
  });
703
719
  }
@@ -718,7 +734,7 @@ class Chunk {
718
734
  for (const item of list) {
719
735
  for (const chunk of item.group.chunks) {
720
736
  if (filterFn && !filterFn(chunk, chunkGraph)) continue;
721
- chunkIdSet.add(chunk.id);
737
+ chunkIdSet.add(/** @type {ChunkId} */ (chunk.id));
722
738
  }
723
739
  }
724
740
  if (chunkIdSet.size > 0) {
@@ -731,13 +747,14 @@ class Chunk {
731
747
  /**
732
748
  * @param {ChunkGraph} chunkGraph the chunk graph
733
749
  * @param {string} type option name
734
- * @returns {{ onChunks: Chunk[], chunks: Set<Chunk> }[]} referenced chunks for a specific type
750
+ * @returns {{ onChunks: Chunk[], chunks: Set<Chunk> }[] | undefined} referenced chunks for a specific type
735
751
  */
736
752
  getChildrenOfTypeInOrder(chunkGraph, type) {
737
753
  const list = [];
738
754
  for (const group of this.groupsIterable) {
739
755
  for (const childGroup of group.childrenIterable) {
740
- const order = childGroup.options[type];
756
+ const order =
757
+ childGroup.options[/** @type {keyof ChunkGroupOptions} */ (type)];
741
758
  if (order === undefined) continue;
742
759
  list.push({
743
760
  order,
@@ -748,7 +765,8 @@ class Chunk {
748
765
  }
749
766
  if (list.length === 0) return undefined;
750
767
  list.sort((a, b) => {
751
- const cmp = b.order - a.order;
768
+ const cmp =
769
+ /** @type {number} */ (b.order) - /** @type {number} */ (a.order);
752
770
  if (cmp !== 0) return cmp;
753
771
  return a.group.compareTo(chunkGraph, b.group);
754
772
  });
@@ -792,7 +810,7 @@ class Chunk {
792
810
  if (chunkMap === undefined) {
793
811
  chunkMaps[key] = chunkMap = Object.create(null);
794
812
  }
795
- chunkMap[chunk.id] = data[key];
813
+ chunkMap[/** @type {ChunkId} */ (chunk.id)] = data[key];
796
814
  }
797
815
  };
798
816
 
package/lib/ChunkGraph.js CHANGED
@@ -188,7 +188,7 @@ class ChunkGraphModule {
188
188
  this.entryInChunks = undefined;
189
189
  /** @type {Set<Chunk> | undefined} */
190
190
  this.runtimeInChunks = undefined;
191
- /** @type {RuntimeSpecMap<ModuleHashInfo>} */
191
+ /** @type {RuntimeSpecMap<ModuleHashInfo> | undefined} */
192
192
  this.hashes = undefined;
193
193
  /** @type {string | number} */
194
194
  this.id = null;
@@ -1388,7 +1388,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1388
1388
  */
1389
1389
  hasModuleHashes(module, runtime) {
1390
1390
  const cgm = this._getChunkGraphModule(module);
1391
- const hashes = cgm.hashes;
1391
+ const hashes = /** @type {RuntimeSpecMap<ModuleHashInfo>} */ (cgm.hashes);
1392
1392
  return hashes && hashes.has(runtime);
1393
1393
  }
1394
1394
 
@@ -1399,7 +1399,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1399
1399
  */
1400
1400
  getModuleHash(module, runtime) {
1401
1401
  const cgm = this._getChunkGraphModule(module);
1402
- const hashes = cgm.hashes;
1402
+ const hashes = /** @type {RuntimeSpecMap<ModuleHashInfo>} */ (cgm.hashes);
1403
1403
  return this._getModuleHashInfo(module, hashes, runtime).hash;
1404
1404
  }
1405
1405
 
@@ -1410,7 +1410,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1410
1410
  */
1411
1411
  getRenderedModuleHash(module, runtime) {
1412
1412
  const cgm = this._getChunkGraphModule(module);
1413
- const hashes = cgm.hashes;
1413
+ const hashes = /** @type {RuntimeSpecMap<ModuleHashInfo>} */ (cgm.hashes);
1414
1414
  return this._getModuleHashInfo(module, hashes, runtime).renderedHash;
1415
1415
  }
1416
1416
 
package/lib/ChunkGroup.js CHANGED
@@ -28,6 +28,7 @@ const {
28
28
  * @typedef {Object} RawChunkGroupOptions
29
29
  * @property {number=} preloadOrder
30
30
  * @property {number=} prefetchOrder
31
+ * @property {("low" | "high" | "auto")=} fetchPriority
31
32
  */
32
33
 
33
34
  /** @typedef {RawChunkGroupOptions & { name?: string }} ChunkGroupOptions */
@@ -97,7 +98,7 @@ class ChunkGroup {
97
98
  /** Indices in bottom-up order */
98
99
  /** @private @type {Map<Module, number>} */
99
100
  this._modulePostOrderIndices = new Map();
100
- /** @type {number} */
101
+ /** @type {number | undefined} */
101
102
  this.index = undefined;
102
103
  }
103
104
 
@@ -108,9 +109,15 @@ class ChunkGroup {
108
109
  */
109
110
  addOptions(options) {
110
111
  for (const key of Object.keys(options)) {
111
- if (this.options[key] === undefined) {
112
- this.options[key] = options[key];
113
- } else if (this.options[key] !== options[key]) {
112
+ if (
113
+ this.options[/** @type {keyof ChunkGroupOptions} */ (key)] === undefined
114
+ ) {
115
+ this.options[key] =
116
+ options[/** @type {keyof ChunkGroupOptions} */ (key)];
117
+ } else if (
118
+ this.options[/** @type {keyof ChunkGroupOptions} */ (key)] !==
119
+ options[/** @type {keyof ChunkGroupOptions} */ (key)]
120
+ ) {
114
121
  if (key.endsWith("Order")) {
115
122
  this.options[key] = Math.max(this.options[key], options[key]);
116
123
  } else {
@@ -124,7 +131,7 @@ class ChunkGroup {
124
131
 
125
132
  /**
126
133
  * returns the name of current ChunkGroup
127
- * @returns {string|undefined} returns the ChunkGroup name
134
+ * @returns {string | undefined} returns the ChunkGroup name
128
135
  */
129
136
  get name() {
130
137
  return this.options.name;
@@ -132,7 +139,7 @@ class ChunkGroup {
132
139
 
133
140
  /**
134
141
  * sets a new name for current ChunkGroup
135
- * @param {string} value the new name for ChunkGroup
142
+ * @param {string | undefined} value the new name for ChunkGroup
136
143
  * @returns {void}
137
144
  */
138
145
  set name(value) {
@@ -353,7 +360,7 @@ class ChunkGroup {
353
360
  }
354
361
 
355
362
  /**
356
- * @returns {Array} an array containing the blocks
363
+ * @returns {Array<AsyncDependenciesBlock>} an array containing the blocks
357
364
  */
358
365
  getBlocks() {
359
366
  return this._blocks.getFromCache(getArray);
@@ -363,6 +370,10 @@ class ChunkGroup {
363
370
  return this._blocks.size;
364
371
  }
365
372
 
373
+ /**
374
+ * @param {AsyncDependenciesBlock} block block
375
+ * @returns {boolean} true, if block exists
376
+ */
366
377
  hasBlock(block) {
367
378
  return this._blocks.has(block);
368
379
  }
@@ -492,7 +503,11 @@ class ChunkGroup {
492
503
  lists.set(name, (list = []));
493
504
  }
494
505
  list.push({
495
- order: childGroup.options[key],
506
+ order:
507
+ /** @type {number} */
508
+ (
509
+ childGroup.options[/** @type {keyof ChunkGroupOptions} */ (key)]
510
+ ),
496
511
  group: childGroup
497
512
  });
498
513
  }
@@ -524,7 +539,7 @@ class ChunkGroup {
524
539
  /**
525
540
  * Gets the top-down index of a module in this ChunkGroup
526
541
  * @param {Module} module the module
527
- * @returns {number} index
542
+ * @returns {number | undefined} index
528
543
  */
529
544
  getModulePreOrderIndex(module) {
530
545
  return this._modulePreOrderIndices.get(module);
@@ -543,7 +558,7 @@ class ChunkGroup {
543
558
  /**
544
559
  * Gets the bottom-up index of a module in this ChunkGroup
545
560
  * @param {Module} module the module
546
- * @returns {number} index
561
+ * @returns {number | undefined} index
547
562
  */
548
563
  getModulePostOrderIndex(module) {
549
564
  return this._modulePostOrderIndices.get(module);
@@ -78,7 +78,8 @@ const getDiffToFs = (fs, outputPath, currentAssets, callback) => {
78
78
  directories,
79
79
  10,
80
80
  (directory, callback) => {
81
- fs.readdir(join(fs, outputPath, directory), (err, entries) => {
81
+ /** @type {NonNullable<OutputFileSystem["readdir"]>} */
82
+ (fs.readdir)(join(fs, outputPath, directory), (err, entries) => {
82
83
  if (err) {
83
84
  if (err.code === "ENOENT") return callback();
84
85
  if (err.code === "ENOTDIR") {
@@ -128,7 +129,8 @@ const getDiffToOldAssets = (currentAssets, oldAssets) => {
128
129
  */
129
130
  const doStat = (fs, filename, callback) => {
130
131
  if ("lstat" in fs) {
131
- fs.lstat(filename, callback);
132
+ /** @type {NonNullable<OutputFileSystem["lstat"]>} */
133
+ (fs.lstat)(filename, callback);
132
134
  } else {
133
135
  fs.stat(filename, callback);
134
136
  }
@@ -145,6 +147,9 @@ const doStat = (fs, filename, callback) => {
145
147
  * @returns {void}
146
148
  */
147
149
  const applyDiff = (fs, outputPath, dry, logger, diff, isKept, callback) => {
150
+ /**
151
+ * @param {string} msg message
152
+ */
148
153
  const log = msg => {
149
154
  if (dry) {
150
155
  logger.info(msg);
@@ -165,6 +170,10 @@ const applyDiff = (fs, outputPath, dry, logger, diff, isKept, callback) => {
165
170
  jobs,
166
171
  10,
167
172
  ({ type, filename, parent }, push, callback) => {
173
+ /**
174
+ * @param {Error & { code?: string }} err error
175
+ * @returns {void}
176
+ */
168
177
  const handleError = err => {
169
178
  if (err.code === "ENOENT") {
170
179
  log(`${filename} was removed during cleaning by something else`);
@@ -195,7 +204,9 @@ const applyDiff = (fs, outputPath, dry, logger, diff, isKept, callback) => {
195
204
  });
196
205
  return callback();
197
206
  }
198
- fs.readdir(path, (err, entries) => {
207
+
208
+ /** @type {NonNullable<OutputFileSystem["readdir"]>} */
209
+ (fs.readdir)(path, (err, entries) => {
199
210
  if (err) return handleError(err);
200
211
  /** @type {Job} */
201
212
  const deleteJob = {
@@ -317,9 +328,17 @@ class CleanPlugin {
317
328
  typeof keep === "function"
318
329
  ? keep
319
330
  : typeof keep === "string"
320
- ? path => path.startsWith(keep)
331
+ ? /**
332
+ * @param {string} path path
333
+ * @returns {boolean} true, if the path should be kept
334
+ */
335
+ path => path.startsWith(keep)
321
336
  : typeof keep === "object" && keep.test
322
- ? path => keep.test(path)
337
+ ? /**
338
+ * @param {string} path path
339
+ * @returns {boolean} true, if the path should be kept
340
+ */
341
+ path => keep.test(path)
323
342
  : () => false;
324
343
 
325
344
  // We assume that no external modification happens while the compiler is active
@@ -371,6 +390,10 @@ class CleanPlugin {
371
390
 
372
391
  const outputPath = compilation.getPath(compiler.outputPath, {});
373
392
 
393
+ /**
394
+ * @param {string} path path
395
+ * @returns {boolean} true, if needs to be kept
396
+ */
374
397
  const isKept = path => {
375
398
  const result = hooks.keep.call(path);
376
399
  if (result !== undefined) return result;
@@ -378,7 +401,7 @@ class CleanPlugin {
378
401
  };
379
402
 
380
403
  /**
381
- * @param {Error=} err err
404
+ * @param {(Error | null)=} err err
382
405
  * @param {Set<string>=} diff diff
383
406
  */
384
407
  const diffCallback = (err, diff) => {
@@ -392,7 +415,7 @@ class CleanPlugin {
392
415
  outputPath,
393
416
  dry,
394
417
  logger,
395
- diff,
418
+ /** @type {Set<string>} */ (diff),
396
419
  isKept,
397
420
  (err, keptAssets) => {
398
421
  if (err) {
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const { provide } = require("./util/MapHelpers");
8
+ const { getOrInsert } = require("./util/MapHelpers");
9
9
  const { first } = require("./util/SetHelpers");
10
10
  const createHash = require("./util/createHash");
11
11
  const { runtimeToString, RuntimeSpecMap } = require("./util/runtime");
@@ -147,7 +147,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
147
147
  * @returns {void}
148
148
  */
149
149
  add(module, runtime, result) {
150
- const map = provide(this.map, module, () => new RuntimeSpecMap());
150
+ const map = getOrInsert(this.map, module, () => new RuntimeSpecMap());
151
151
  map.set(runtime, result);
152
152
  }
153
153
  }