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
@@ -18,6 +18,8 @@ const processAsyncTree = require("./util/processAsyncTree");
18
18
 
19
19
  /** @typedef {import("./WebpackError")} WebpackError */
20
20
  /** @typedef {import("./logging/Logger").Logger} Logger */
21
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
22
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
21
23
  /** @typedef {typeof import("./util/Hash")} Hash */
22
24
  /** @typedef {import("./util/fs").IStats} IStats */
23
25
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
@@ -97,8 +99,8 @@ const INVALID = Symbol("invalid");
97
99
  * @typedef {Object} SnapshotOptimizationEntry
98
100
  * @property {Snapshot} snapshot
99
101
  * @property {number} shared
100
- * @property {Set<string>} snapshotContent
101
- * @property {Set<SnapshotOptimizationEntry>} children
102
+ * @property {Set<string> | undefined} snapshotContent
103
+ * @property {Set<SnapshotOptimizationEntry> | undefined} children
102
104
  */
103
105
 
104
106
  /**
@@ -113,6 +115,12 @@ const INVALID = Symbol("invalid");
113
115
  * @property {Set<string>} resolveDependencies.missing list of missing entries
114
116
  */
115
117
 
118
+ /**
119
+ * @typedef {Object} SnapshotOptions
120
+ * @property {boolean=} hash should use hash to snapshot
121
+ * @property {boolean=} timestamp should use timestamp to snapshot
122
+ */
123
+
116
124
  const DONE_ITERATOR_RESULT = new Set().keys().next();
117
125
 
118
126
  // cspell:word tshs
@@ -135,7 +143,7 @@ class SnapshotIterable {
135
143
  let state = 0;
136
144
  /** @type {IterableIterator<string>} */
137
145
  let it;
138
- /** @type {(Snapshot) => (Map<string, any> | Set<string>)[]} */
146
+ /** @type {(snapshot: Snapshot) => (Map<string, any> | Set<string>)[]} */
139
147
  let getMaps;
140
148
  /** @type {(Map<string, any> | Set<string>)[]} */
141
149
  let maps;
@@ -378,6 +386,9 @@ class Snapshot {
378
386
  this.children.add(child);
379
387
  }
380
388
 
389
+ /**
390
+ * @param {ObjectSerializerContext} context context
391
+ */
381
392
  serialize({ write }) {
382
393
  write(this._flags);
383
394
  if (this.hasStartTime()) write(this.startTime);
@@ -395,6 +406,9 @@ class Snapshot {
395
406
  if (this.hasChildren()) write(this.children);
396
407
  }
397
408
 
409
+ /**
410
+ * @param {ObjectDeserializerContext} context context
411
+ */
398
412
  deserialize({ read }) {
399
413
  this._flags = read();
400
414
  if (this.hasStartTime()) this.startTime = read();
@@ -544,7 +558,7 @@ class SnapshotOptimization {
544
558
  }
545
559
  };
546
560
 
547
- /** @type {SnapshotOptimizationEntry} */
561
+ /** @type {SnapshotOptimizationEntry | undefined} */
548
562
  let newOptimizationEntry = undefined;
549
563
 
550
564
  const capturedFilesSize = capturedFiles.size;
@@ -749,10 +763,9 @@ const mergeMaps = (a, b) => {
749
763
 
750
764
  /**
751
765
  * @template T
752
- * @template K
753
- * @param {Set<T, K>} a source map
754
- * @param {Set<T, K>} b joining map
755
- * @returns {Set<T, K>} joined map
766
+ * @param {Set<T>} a source map
767
+ * @param {Set<T>} b joining map
768
+ * @returns {Set<T>} joined map
756
769
  */
757
770
  const mergeSets = (a, b) => {
758
771
  if (!b || b.size === 0) return a;
@@ -850,8 +863,8 @@ const getManagedItem = (managedPath, path) => {
850
863
 
851
864
  /**
852
865
  * @template {ContextFileSystemInfoEntry | ContextTimestampAndHash} T
853
- * @param {T} entry entry
854
- * @returns {T["resolved"] | undefined} the resolved entry
866
+ * @param {T | null} entry entry
867
+ * @returns {T["resolved"] | null | undefined} the resolved entry
855
868
  */
856
869
  const getResolvedTimestamp = entry => {
857
870
  if (entry === null) return null;
@@ -860,8 +873,8 @@ const getResolvedTimestamp = entry => {
860
873
  };
861
874
 
862
875
  /**
863
- * @param {ContextHash} entry entry
864
- * @returns {string | undefined} the resolved entry
876
+ * @param {ContextHash | null} entry entry
877
+ * @returns {string | null | undefined} the resolved entry
865
878
  */
866
879
  const getResolvedHash = entry => {
867
880
  if (entry === null) return null;
@@ -869,6 +882,11 @@ const getResolvedHash = entry => {
869
882
  return entry.symlinks === undefined ? entry.hash : undefined;
870
883
  };
871
884
 
885
+ /**
886
+ * @template T
887
+ * @param {Set<T>} source source
888
+ * @param {Set<T>} target target
889
+ */
872
890
  const addAll = (source, target) => {
873
891
  for (const key of source) target.add(key);
874
892
  };
@@ -1137,6 +1155,11 @@ class FileSystemInfo {
1137
1155
  );
1138
1156
  }
1139
1157
 
1158
+ /**
1159
+ * @param {string} path path
1160
+ * @param {string} reason reason
1161
+ * @param {any[]} args arguments
1162
+ */
1140
1163
  _log(path, reason, ...args) {
1141
1164
  const key = path + reason;
1142
1165
  if (this._loggedPaths.has(key)) return;
@@ -1250,7 +1273,7 @@ class FileSystemInfo {
1250
1273
 
1251
1274
  /**
1252
1275
  * @param {string} path file path
1253
- * @param {function((WebpackError | null)=, string=): void} callback callback function
1276
+ * @param {function((WebpackError | null)=, (string | null)=): void} callback callback function
1254
1277
  * @returns {void}
1255
1278
  */
1256
1279
  getFileHash(path, callback) {
@@ -1281,7 +1304,7 @@ class FileSystemInfo {
1281
1304
 
1282
1305
  /**
1283
1306
  * @param {string} path context path
1284
- * @param {function((WebpackError | null)=, ContextHash=): void} callback callback function
1307
+ * @param {function((WebpackError | null)=, (ContextHash | null)=): void} callback callback function
1285
1308
  * @returns {void}
1286
1309
  */
1287
1310
  _getUnresolvedContextHash(path, callback) {
@@ -1312,7 +1335,7 @@ class FileSystemInfo {
1312
1335
 
1313
1336
  /**
1314
1337
  * @param {string} path context path
1315
- * @param {function((WebpackError | null)=, ContextTimestampAndHash=): void} callback callback function
1338
+ * @param {function((WebpackError | null)=, (ContextTimestampAndHash | null)=): void} callback callback function
1316
1339
  * @returns {void}
1317
1340
  */
1318
1341
  _getUnresolvedContextTsh(path, callback) {
@@ -1375,7 +1398,7 @@ class FileSystemInfo {
1375
1398
  const resolveDirectories = new Set();
1376
1399
  /** @type {Set<string>} */
1377
1400
  const resolveMissing = new Set();
1378
- /** @type {Map<string, string | false>} */
1401
+ /** @type {Map<string, string | false | undefined>} */
1379
1402
  const resolveResults = new Map();
1380
1403
  const invalidResolveResults = new Set();
1381
1404
  const resolverContext = {
@@ -1383,6 +1406,10 @@ class FileSystemInfo {
1383
1406
  contextDependencies: resolveDirectories,
1384
1407
  missingDependencies: resolveMissing
1385
1408
  };
1409
+ /**
1410
+ * @param {string} expected expected result
1411
+ * @returns {string} expected result
1412
+ */
1386
1413
  const expectedToString = expected => {
1387
1414
  return expected ? ` (expected ${expected})` : "";
1388
1415
  };
@@ -1456,7 +1483,7 @@ class FileSystemInfo {
1456
1483
  push({
1457
1484
  type: RBDT_DIRECTORY,
1458
1485
  context: undefined,
1459
- path: resultPath,
1486
+ path: /** @type {string} */ (resultPath),
1460
1487
  expected: undefined,
1461
1488
  issuer: job
1462
1489
  });
@@ -1602,7 +1629,7 @@ class FileSystemInfo {
1602
1629
  break;
1603
1630
  }
1604
1631
  // Check commonjs cache for the module
1605
- /** @type {NodeModule} */
1632
+ /** @type {NodeModule | undefined} */
1606
1633
  const module = require.cache[path];
1607
1634
  if (module && Array.isArray(module.children)) {
1608
1635
  children: for (const child of module.children) {
@@ -1902,13 +1929,11 @@ class FileSystemInfo {
1902
1929
 
1903
1930
  /**
1904
1931
  *
1905
- * @param {number} startTime when processing the files has started
1932
+ * @param {number | null | undefined} startTime when processing the files has started
1906
1933
  * @param {Iterable<string>} files all files
1907
1934
  * @param {Iterable<string>} directories all directories
1908
1935
  * @param {Iterable<string>} missing all missing files or directories
1909
- * @param {Object} options options object (for future extensions)
1910
- * @param {boolean=} options.hash should use hash to snapshot
1911
- * @param {boolean=} options.timestamp should use timestamp to snapshot
1936
+ * @param {SnapshotOptions | null | undefined} options options object (for future extensions)
1912
1937
  * @param {function((WebpackError | null)=, (Snapshot | null)=): void} callback callback function
1913
1938
  * @returns {void}
1914
1939
  */
@@ -2045,6 +2070,9 @@ class FileSystemInfo {
2045
2070
  }
2046
2071
  return capturedItems;
2047
2072
  };
2073
+ /**
2074
+ * @param {Set<string>} capturedFiles captured files
2075
+ */
2048
2076
  const processCapturedFiles = capturedFiles => {
2049
2077
  switch (mode) {
2050
2078
  case 3:
@@ -2631,6 +2659,10 @@ class FileSystemInfo {
2631
2659
  }
2632
2660
  }
2633
2661
  }
2662
+ /**
2663
+ * @param {string} path file path
2664
+ * @param {string} hash hash
2665
+ */
2634
2666
  const processFileHashSnapshot = (path, hash) => {
2635
2667
  const cache = this._fileHashes.get(path);
2636
2668
  if (cache !== undefined) {
@@ -2913,7 +2945,7 @@ class FileSystemInfo {
2913
2945
 
2914
2946
  const hash = createHash(this._hashFunction);
2915
2947
 
2916
- hash.update(content);
2948
+ hash.update(/** @type {string | Buffer} */ (content));
2917
2949
 
2918
2950
  const digest = /** @type {string} */ (hash.digest("hex"));
2919
2951
 
@@ -2977,7 +3009,7 @@ class FileSystemInfo {
2977
3009
  * @param {function(string, IStats, function(Error=, ItemType=): void): void} options.fromFile called when context item is a file
2978
3010
  * @param {function(string, IStats, function(Error=, ItemType=): void): void} options.fromDirectory called when context item is a directory
2979
3011
  * @param {function(string[], ItemType[]): T} options.reduce called from all context items
2980
- * @param {function((Error | null)=, (T)=): void} callback callback
3012
+ * @param {function((Error | null)=, (T | null)=): void} callback callback
2981
3013
  */
2982
3014
  _readContext(
2983
3015
  {
@@ -3164,6 +3196,7 @@ class FileSystemInfo {
3164
3196
  * @returns {void}
3165
3197
  */
3166
3198
  _resolveContextTimestamp(entry, callback) {
3199
+ /** @type {string[]} */
3167
3200
  const hashes = [];
3168
3201
  let safeTime = 0;
3169
3202
  processAsyncTree(
@@ -3272,6 +3305,7 @@ class FileSystemInfo {
3272
3305
  * @returns {void}
3273
3306
  */
3274
3307
  _resolveContextHash(entry, callback) {
3308
+ /** @type {string[]} */
3275
3309
  const hashes = [];
3276
3310
  processAsyncTree(
3277
3311
  entry.symlinks,
@@ -3428,7 +3462,9 @@ class FileSystemInfo {
3428
3462
  * @returns {void}
3429
3463
  */
3430
3464
  _resolveContextTsh(entry, callback) {
3465
+ /** @type {string[]} */
3431
3466
  const hashes = [];
3467
+ /** @type {string[]} */
3432
3468
  const tsHashes = [];
3433
3469
  let safeTime = 0;
3434
3470
  processAsyncTree(
@@ -3546,7 +3582,7 @@ class FileSystemInfo {
3546
3582
  }
3547
3583
  let data;
3548
3584
  try {
3549
- data = JSON.parse(content.toString("utf-8"));
3585
+ data = JSON.parse(/** @type {Buffer} */ (content).toString("utf-8"));
3550
3586
  } catch (e) {
3551
3587
  return callback(e);
3552
3588
  }
@@ -8,9 +8,14 @@
8
8
  const { getEntryRuntime, mergeRuntimeOwned } = require("./util/runtime");
9
9
 
10
10
  /** @typedef {import("./Compiler")} Compiler */
11
+ /** @typedef {import("./Module").FactoryMeta} FactoryMeta */
11
12
  /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
12
13
 
14
+ const PLUGIN_NAME = "FlagAllModulesAsUsedPlugin";
13
15
  class FlagAllModulesAsUsedPlugin {
16
+ /**
17
+ * @param {string} explanation explanation
18
+ */
14
19
  constructor(explanation) {
15
20
  this.explanation = explanation;
16
21
  }
@@ -21,34 +26,29 @@ class FlagAllModulesAsUsedPlugin {
21
26
  * @returns {void}
22
27
  */
23
28
  apply(compiler) {
24
- compiler.hooks.compilation.tap(
25
- "FlagAllModulesAsUsedPlugin",
26
- compilation => {
27
- const moduleGraph = compilation.moduleGraph;
28
- compilation.hooks.optimizeDependencies.tap(
29
- "FlagAllModulesAsUsedPlugin",
30
- modules => {
31
- /** @type {RuntimeSpec} */
32
- let runtime = undefined;
33
- for (const [name, { options }] of compilation.entries) {
34
- runtime = mergeRuntimeOwned(
35
- runtime,
36
- getEntryRuntime(compilation, name, options)
37
- );
38
- }
39
- for (const module of modules) {
40
- const exportsInfo = moduleGraph.getExportsInfo(module);
41
- exportsInfo.setUsedInUnknownWay(runtime);
42
- moduleGraph.addExtraReason(module, this.explanation);
43
- if (module.factoryMeta === undefined) {
44
- module.factoryMeta = {};
45
- }
46
- module.factoryMeta.sideEffectFree = false;
47
- }
29
+ compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
30
+ const moduleGraph = compilation.moduleGraph;
31
+ compilation.hooks.optimizeDependencies.tap(PLUGIN_NAME, modules => {
32
+ /** @type {RuntimeSpec} */
33
+ let runtime = undefined;
34
+ for (const [name, { options }] of compilation.entries) {
35
+ runtime = mergeRuntimeOwned(
36
+ runtime,
37
+ getEntryRuntime(compilation, name, options)
38
+ );
39
+ }
40
+ for (const module of modules) {
41
+ const exportsInfo = moduleGraph.getExportsInfo(module);
42
+ exportsInfo.setUsedInUnknownWay(runtime);
43
+ moduleGraph.addExtraReason(module, this.explanation);
44
+ if (module.factoryMeta === undefined) {
45
+ module.factoryMeta = {};
48
46
  }
49
- );
50
- }
51
- );
47
+ /** @type {FactoryMeta} */
48
+ (module.factoryMeta).sideEffectFree = false;
49
+ }
50
+ });
51
+ });
52
52
  }
53
53
  }
54
54