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
@@ -5,7 +5,8 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("estree").Node} EsTreeNode */
8
+ /** @typedef {import("estree").Node} Node */
9
+ /** @typedef {import("./JavascriptParser").Range} Range */
9
10
  /** @typedef {import("./JavascriptParser").VariableInfoInterface} VariableInfoInterface */
10
11
 
11
12
  const TypeUnknown = 0;
@@ -26,7 +27,7 @@ const TypeBigInt = 13;
26
27
  class BasicEvaluatedExpression {
27
28
  constructor() {
28
29
  this.type = TypeUnknown;
29
- /** @type {[number, number]} */
30
+ /** @type {[number, number] | undefined} */
30
31
  this.range = undefined;
31
32
  /** @type {boolean} */
32
33
  this.falsy = false;
@@ -56,20 +57,23 @@ class BasicEvaluatedExpression {
56
57
  this.items = undefined;
57
58
  /** @type {BasicEvaluatedExpression[] | undefined} */
58
59
  this.options = undefined;
59
- /** @type {BasicEvaluatedExpression | undefined} */
60
+ /** @type {BasicEvaluatedExpression | undefined | null} */
60
61
  this.prefix = undefined;
61
- /** @type {BasicEvaluatedExpression | undefined} */
62
+ /** @type {BasicEvaluatedExpression | undefined | null} */
62
63
  this.postfix = undefined;
64
+ /** @type {BasicEvaluatedExpression[] | undefined} */
63
65
  this.wrappedInnerExpressions = undefined;
64
66
  /** @type {string | VariableInfoInterface | undefined} */
65
67
  this.identifier = undefined;
66
- /** @type {VariableInfoInterface} */
68
+ /** @type {string | VariableInfoInterface | undefined} */
67
69
  this.rootInfo = undefined;
68
- /** @type {() => string[]} */
70
+ /** @type {(() => string[]) | undefined} */
69
71
  this.getMembers = undefined;
70
- /** @type {() => boolean[]} */
72
+ /** @type {(() => boolean[]) | undefined} */
71
73
  this.getMembersOptionals = undefined;
72
- /** @type {EsTreeNode} */
74
+ /** @type {(() => Range[]) | undefined} */
75
+ this.getMemberRanges = undefined;
76
+ /** @type {Node | undefined} */
73
77
  this.expression = undefined;
74
78
  }
75
79
 
@@ -222,6 +226,10 @@ class BasicEvaluatedExpression {
222
226
  return this.sideEffects;
223
227
  }
224
228
 
229
+ /**
230
+ * Creates a boolean representation of this evaluated expression.
231
+ * @returns {boolean | undefined} true: truthy, false: falsy, undefined: unknown
232
+ */
225
233
  asBool() {
226
234
  if (this.truthy) return true;
227
235
  if (this.falsy || this.nullish) return false;
@@ -247,6 +255,10 @@ class BasicEvaluatedExpression {
247
255
  return undefined;
248
256
  }
249
257
 
258
+ /**
259
+ * Creates a nullish coalescing representation of this evaluated expression.
260
+ * @returns {boolean | undefined} true: nullish, false: not nullish, undefined: unknown
261
+ */
250
262
  asNullish() {
251
263
  const nullish = this.isNullish();
252
264
 
@@ -267,6 +279,10 @@ class BasicEvaluatedExpression {
267
279
  return undefined;
268
280
  }
269
281
 
282
+ /**
283
+ * Creates a string representation of this evaluated expression.
284
+ * @returns {string | undefined} the string representation or undefined if not possible
285
+ */
270
286
  asString() {
271
287
  if (this.isBoolean()) return `${this.bool}`;
272
288
  if (this.isNull()) return "null";
@@ -277,7 +293,9 @@ class BasicEvaluatedExpression {
277
293
  if (this.isRegExp()) return `${this.regExp}`;
278
294
  if (this.isArray()) {
279
295
  let array = [];
280
- for (const item of this.items) {
296
+ for (const item of /** @type {BasicEvaluatedExpression[]} */ (
297
+ this.items
298
+ )) {
281
299
  const itemStr = item.asString();
282
300
  if (itemStr === undefined) return undefined;
283
301
  array.push(itemStr);
@@ -287,7 +305,9 @@ class BasicEvaluatedExpression {
287
305
  if (this.isConstArray()) return `${this.array}`;
288
306
  if (this.isTemplateString()) {
289
307
  let str = "";
290
- for (const part of this.parts) {
308
+ for (const part of /** @type {BasicEvaluatedExpression[]} */ (
309
+ this.parts
310
+ )) {
291
311
  const partStr = part.asString();
292
312
  if (partStr === undefined) return undefined;
293
313
  str += partStr;
@@ -297,6 +317,10 @@ class BasicEvaluatedExpression {
297
317
  return undefined;
298
318
  }
299
319
 
320
+ /**
321
+ * @param {string} string value
322
+ * @returns {BasicEvaluatedExpression} basic evaluated expression
323
+ */
300
324
  setString(string) {
301
325
  this.type = TypeString;
302
326
  this.string = string;
@@ -316,6 +340,11 @@ class BasicEvaluatedExpression {
316
340
  return this;
317
341
  }
318
342
 
343
+ /**
344
+ * Set's the value of this expression to a number
345
+ * @param {number} number number to set
346
+ * @returns {this} this
347
+ */
319
348
  setNumber(number) {
320
349
  this.type = TypeNumber;
321
350
  this.number = number;
@@ -323,6 +352,11 @@ class BasicEvaluatedExpression {
323
352
  return this;
324
353
  }
325
354
 
355
+ /**
356
+ * Set's the value of this expression to a BigInt
357
+ * @param {bigint} bigint bigint to set
358
+ * @returns {this} this
359
+ */
326
360
  setBigInt(bigint) {
327
361
  this.type = TypeBigInt;
328
362
  this.bigint = bigint;
@@ -330,6 +364,11 @@ class BasicEvaluatedExpression {
330
364
  return this;
331
365
  }
332
366
 
367
+ /**
368
+ * Set's the value of this expression to a boolean
369
+ * @param {boolean} bool boolean to set
370
+ * @returns {this} this
371
+ */
333
372
  setBoolean(bool) {
334
373
  this.type = TypeBoolean;
335
374
  this.bool = bool;
@@ -337,6 +376,11 @@ class BasicEvaluatedExpression {
337
376
  return this;
338
377
  }
339
378
 
379
+ /**
380
+ * Set's the value of this expression to a regular expression
381
+ * @param {RegExp} regExp regular expression to set
382
+ * @returns {this} this
383
+ */
340
384
  setRegExp(regExp) {
341
385
  this.type = TypeRegExp;
342
386
  this.regExp = regExp;
@@ -344,16 +388,41 @@ class BasicEvaluatedExpression {
344
388
  return this;
345
389
  }
346
390
 
347
- setIdentifier(identifier, rootInfo, getMembers, getMembersOptionals) {
391
+ /**
392
+ * Set's the value of this expression to a particular identifier and its members.
393
+ *
394
+ * @param {string | VariableInfoInterface} identifier identifier to set
395
+ * @param {string | VariableInfoInterface} rootInfo root info
396
+ * @param {() => string[]} getMembers members
397
+ * @param {() => boolean[]=} getMembersOptionals optional members
398
+ * @param {() => Range[]=} getMemberRanges ranges of progressively increasing sub-expressions
399
+ * @returns {this} this
400
+ */
401
+ setIdentifier(
402
+ identifier,
403
+ rootInfo,
404
+ getMembers,
405
+ getMembersOptionals,
406
+ getMemberRanges
407
+ ) {
348
408
  this.type = TypeIdentifier;
349
409
  this.identifier = identifier;
350
410
  this.rootInfo = rootInfo;
351
411
  this.getMembers = getMembers;
352
412
  this.getMembersOptionals = getMembersOptionals;
413
+ this.getMemberRanges = getMemberRanges;
353
414
  this.sideEffects = true;
354
415
  return this;
355
416
  }
356
417
 
418
+ /**
419
+ * Wraps an array of expressions with a prefix and postfix expression.
420
+ *
421
+ * @param {BasicEvaluatedExpression | null | undefined} prefix Expression to be added before the innerExpressions
422
+ * @param {BasicEvaluatedExpression | null | undefined} postfix Expression to be added after the innerExpressions
423
+ * @param {BasicEvaluatedExpression[]} innerExpressions Expressions to be wrapped
424
+ * @returns {this} this
425
+ */
357
426
  setWrapped(prefix, postfix, innerExpressions) {
358
427
  this.type = TypeWrapped;
359
428
  this.prefix = prefix;
@@ -363,6 +432,12 @@ class BasicEvaluatedExpression {
363
432
  return this;
364
433
  }
365
434
 
435
+ /**
436
+ * Stores the options of a conditional expression.
437
+ *
438
+ * @param {BasicEvaluatedExpression[]} options optional (consequent/alternate) expressions to be set
439
+ * @returns {this} this
440
+ */
366
441
  setOptions(options) {
367
442
  this.type = TypeConditional;
368
443
  this.options = options;
@@ -370,6 +445,12 @@ class BasicEvaluatedExpression {
370
445
  return this;
371
446
  }
372
447
 
448
+ /**
449
+ * Adds options to a conditional expression.
450
+ *
451
+ * @param {BasicEvaluatedExpression[]} options optional (consequent/alternate) expressions to be added
452
+ * @returns {this} this
453
+ */
373
454
  addOptions(options) {
374
455
  if (!this.options) {
375
456
  this.type = TypeConditional;
@@ -382,6 +463,12 @@ class BasicEvaluatedExpression {
382
463
  return this;
383
464
  }
384
465
 
466
+ /**
467
+ * Set's the value of this expression to an array of expressions.
468
+ *
469
+ * @param {BasicEvaluatedExpression[]} items expressions to set
470
+ * @returns {this} this
471
+ */
385
472
  setItems(items) {
386
473
  this.type = TypeArray;
387
474
  this.items = items;
@@ -389,6 +476,12 @@ class BasicEvaluatedExpression {
389
476
  return this;
390
477
  }
391
478
 
479
+ /**
480
+ * Set's the value of this expression to an array of strings.
481
+ *
482
+ * @param {string[]} array array to set
483
+ * @returns {this} this
484
+ */
392
485
  setArray(array) {
393
486
  this.type = TypeConstArray;
394
487
  this.array = array;
@@ -396,6 +489,15 @@ class BasicEvaluatedExpression {
396
489
  return this;
397
490
  }
398
491
 
492
+ /**
493
+ * Set's the value of this expression to a processed/unprocessed template string. Used
494
+ * for evaluating TemplateLiteral expressions in the JavaScript Parser.
495
+ *
496
+ * @param {BasicEvaluatedExpression[]} quasis template string quasis
497
+ * @param {BasicEvaluatedExpression[]} parts template string parts
498
+ * @param {"cooked" | "raw"} kind template string kind
499
+ * @returns {this} this
500
+ */
399
501
  setTemplateString(quasis, parts, kind) {
400
502
  this.type = TypeTemplateString;
401
503
  this.quasis = quasis;
@@ -418,6 +520,12 @@ class BasicEvaluatedExpression {
418
520
  return this;
419
521
  }
420
522
 
523
+ /**
524
+ * Set's the value of the expression to nullish.
525
+ *
526
+ * @param {boolean} value true, if the expression is nullish
527
+ * @returns {this} this
528
+ */
421
529
  setNullish(value) {
422
530
  this.nullish = value;
423
531
 
@@ -426,16 +534,34 @@ class BasicEvaluatedExpression {
426
534
  return this;
427
535
  }
428
536
 
537
+ /**
538
+ * Set's the range for the expression.
539
+ *
540
+ * @param {[number, number]} range range to set
541
+ * @returns {this} this
542
+ */
429
543
  setRange(range) {
430
544
  this.range = range;
431
545
  return this;
432
546
  }
433
547
 
548
+ /**
549
+ * Set whether or not the expression has side effects.
550
+ *
551
+ * @param {boolean} sideEffects true, if the expression has side effects
552
+ * @returns {this} this
553
+ */
434
554
  setSideEffects(sideEffects = true) {
435
555
  this.sideEffects = sideEffects;
436
556
  return this;
437
557
  }
438
558
 
559
+ /**
560
+ * Set the expression node for the expression.
561
+ *
562
+ * @param {Node | undefined} expression expression
563
+ * @returns {this} this
564
+ */
439
565
  setExpression(expression) {
440
566
  this.expression = expression;
441
567
  return this;
@@ -11,8 +11,8 @@ const Entrypoint = require("../Entrypoint");
11
11
 
12
12
  /**
13
13
  * @param {Entrypoint} entrypoint a chunk group
14
- * @param {Chunk} excludedChunk1 current chunk which is excluded
15
- * @param {Chunk} excludedChunk2 runtime chunk which is excluded
14
+ * @param {Chunk=} excludedChunk1 current chunk which is excluded
15
+ * @param {Chunk=} excludedChunk2 runtime chunk which is excluded
16
16
  * @returns {Set<Chunk>} chunks
17
17
  */
18
18
  const getAllChunks = (entrypoint, excludedChunk1, excludedChunk2) => {
@@ -17,7 +17,9 @@ const {
17
17
  updateHashForEntryStartup
18
18
  } = require("./StartupHelpers");
19
19
 
20
+ /** @typedef {import("../Chunk")} Chunk */
20
21
  /** @typedef {import("../Compiler")} Compiler */
22
+ /** @typedef {import("../Entrypoint")} Entrypoint */
21
23
 
22
24
  class CommonJsChunkFormatPlugin {
23
25
  /**
@@ -66,7 +68,9 @@ class CommonJsChunkFormatPlugin {
66
68
  chunkGraph.getChunkEntryModulesWithChunkGroupIterable(chunk)
67
69
  );
68
70
  if (entries.length > 0) {
69
- const runtimeChunk = entries[0][1].getRuntimeChunk();
71
+ const runtimeChunk =
72
+ /** @type {Entrypoint} */
73
+ (entries[0][1]).getRuntimeChunk();
70
74
  const currentOutputName = compilation
71
75
  .getPath(
72
76
  getChunkFilenameTemplate(chunk, compilation.outputOptions),
@@ -83,7 +87,7 @@ class CommonJsChunkFormatPlugin {
83
87
  compilation.outputOptions
84
88
  ),
85
89
  {
86
- chunk: runtimeChunk,
90
+ chunk: /** @type {Chunk} */ (runtimeChunk),
87
91
  contentHashType: "javascript"
88
92
  }
89
93
  )
@@ -120,7 +124,7 @@ class CommonJsChunkFormatPlugin {
120
124
  entrySource.add(source);
121
125
  entrySource.add(";\n\n// load runtime\n");
122
126
  entrySource.add(
123
- `var __webpack_require__ = require(${JSON.stringify(
127
+ `var ${RuntimeGlobals.require} = require(${JSON.stringify(
124
128
  runtimePath
125
129
  )});\n`
126
130
  );
@@ -11,6 +11,10 @@
11
11
  /** @type {WeakMap<Compiler, Set<ChunkLoadingType>>} */
12
12
  const enabledTypes = new WeakMap();
13
13
 
14
+ /**
15
+ * @param {Compiler} compiler compiler
16
+ * @returns {Set<ChunkLoadingType>} enabled types
17
+ */
14
18
  const getEnabledTypes = compiler => {
15
19
  let set = enabledTypes.get(compiler);
16
20
  if (set === undefined) {