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
@@ -20,17 +20,22 @@ const {
20
20
  /** @typedef {import("../../declarations/WebpackOptions").SnapshotOptions} SnapshotOptions */
21
21
  /** @typedef {import("../Cache").Etag} Etag */
22
22
  /** @typedef {import("../Compiler")} Compiler */
23
+ /** @typedef {import("../FileSystemInfo").ResolveBuildDependenciesResult} ResolveBuildDependenciesResult */
23
24
  /** @typedef {import("../FileSystemInfo").Snapshot} Snapshot */
24
25
  /** @typedef {import("../logging/Logger").Logger} Logger */
26
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
27
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
25
28
  /** @typedef {import("../util/fs").IntermediateFileSystem} IntermediateFileSystem */
26
29
 
30
+ /** @typedef {Map<string, string | false>} ResolveResults */
31
+
27
32
  class PackContainer {
28
33
  /**
29
34
  * @param {Object} data stored data
30
35
  * @param {string} version version identifier
31
36
  * @param {Snapshot} buildSnapshot snapshot of all build dependencies
32
37
  * @param {Set<string>} buildDependencies list of all unresolved build dependencies captured
33
- * @param {Map<string, string | false>} resolveResults result of the resolved build dependencies
38
+ * @param {ResolveResults} resolveResults result of the resolved build dependencies
34
39
  * @param {Snapshot} resolveBuildDependenciesSnapshot snapshot of the dependencies of the build dependencies resolving
35
40
  */
36
41
  constructor(
@@ -58,6 +63,9 @@ class PackContainer {
58
63
  writeLazy(this.data);
59
64
  }
60
65
 
66
+ /**
67
+ * @param {ObjectDeserializerContext} context context
68
+ */
61
69
  deserialize({ read }) {
62
70
  this.version = read();
63
71
  this.buildSnapshot = read();
@@ -99,7 +107,7 @@ class Pack {
99
107
  constructor(logger, maxAge) {
100
108
  /** @type {Map<string, PackItemInfo>} */
101
109
  this.itemInfo = new Map();
102
- /** @type {string[]} */
110
+ /** @type {(string | undefined)[]} */
103
111
  this.requests = [];
104
112
  this.requestsTimeout = undefined;
105
113
  /** @type {Map<string, PackItemInfo>} */
@@ -111,6 +119,9 @@ class Pack {
111
119
  this.maxAge = maxAge;
112
120
  }
113
121
 
122
+ /**
123
+ * @param {string} identifier identifier
124
+ */
114
125
  _addRequest(identifier) {
115
126
  this.requests.push(identifier);
116
127
  if (this.requestsTimeout === undefined) {
@@ -149,7 +160,7 @@ class Pack {
149
160
  if (!this.content[loc]) {
150
161
  return undefined;
151
162
  }
152
- return this.content[loc].get(identifier);
163
+ return /** @type {PackContent} */ (this.content[loc]).get(identifier);
153
164
  }
154
165
  }
155
166
 
@@ -175,7 +186,7 @@ class Pack {
175
186
  if (loc >= 0) {
176
187
  this._addRequest(identifier);
177
188
  this.freshContent.set(identifier, info);
178
- const content = this.content[loc];
189
+ const content = /** @type {PackContent} */ (this.content[loc]);
179
190
  content.delete(identifier);
180
191
  if (content.items.size === 0) {
181
192
  this.content[loc] = undefined;
@@ -351,11 +362,12 @@ class Pack {
351
362
  mergedIndices = smallUnusedContents;
352
363
  } else return;
353
364
 
365
+ /** @type {PackContent[] } */
354
366
  const mergedContent = [];
355
367
 
356
368
  // 3. Remove old content entries
357
369
  for (const i of mergedIndices) {
358
- mergedContent.push(this.content[i]);
370
+ mergedContent.push(/** @type {PackContent} */ (this.content[i]));
359
371
  this.content[i] = undefined;
360
372
  }
361
373
 
@@ -364,7 +376,7 @@ class Pack {
364
376
  const mergedItems = new Set();
365
377
  /** @type {Set<string>} */
366
378
  const mergedUsedItems = new Set();
367
- /** @type {(function(Map<string, any>): Promise)[]} */
379
+ /** @type {(function(Map<string, any>): Promise<void>)[]} */
368
380
  const addToMergedMap = [];
369
381
  for (const content of mergedContent) {
370
382
  for (const identifier of content.items) {
@@ -498,17 +510,20 @@ class Pack {
498
510
  * Only runs for one content to avoid large invalidation.
499
511
  */
500
512
  _gcOldestContent() {
501
- /** @type {PackItemInfo} */
513
+ /** @type {PackItemInfo | undefined} */
502
514
  let oldest = undefined;
503
515
  for (const info of this.itemInfo.values()) {
504
516
  if (oldest === undefined || info.lastAccess < oldest.lastAccess) {
505
517
  oldest = info;
506
518
  }
507
519
  }
508
- if (Date.now() - oldest.lastAccess > this.maxAge) {
509
- const loc = oldest.location;
520
+ if (
521
+ Date.now() - /** @type {PackItemInfo} */ (oldest).lastAccess >
522
+ this.maxAge
523
+ ) {
524
+ const loc = /** @type {PackItemInfo} */ (oldest).location;
510
525
  if (loc < 0) return;
511
- const content = this.content[loc];
526
+ const content = /** @type {PackContent} */ (this.content[loc]);
512
527
  const items = new Set(content.items);
513
528
  const usedItems = new Set(content.used);
514
529
  this._gcAndUpdateLocation(items, usedItems, loc);
@@ -771,6 +786,7 @@ class PackContent {
771
786
 
772
787
  // We are in state B
773
788
  const { lazyName } = this;
789
+ /** @type {string | undefined} */
774
790
  let timeMessage;
775
791
  if (lazyName) {
776
792
  // only log once
@@ -811,7 +827,7 @@ class PackContent {
811
827
 
812
828
  /**
813
829
  * @param {string} reason explanation why unpack is necessary
814
- * @returns {void | Promise} maybe a promise if lazy
830
+ * @returns {void | Promise<void>} maybe a promise if lazy
815
831
  */
816
832
  unpack(reason) {
817
833
  if (this.content) return;
@@ -819,6 +835,7 @@ class PackContent {
819
835
  // Move from state B to C
820
836
  if (this.lazy) {
821
837
  const { lazyName } = this;
838
+ /** @type {string | undefined} */
822
839
  let timeMessage;
823
840
  if (lazyName) {
824
841
  // only log once
@@ -862,6 +879,9 @@ class PackContent {
862
879
  return size;
863
880
  }
864
881
 
882
+ /**
883
+ * @param {string} identifier identifier
884
+ */
865
885
  delete(identifier) {
866
886
  this.items.delete(identifier);
867
887
  this.used.delete(identifier);
@@ -906,6 +926,7 @@ class PackContent {
906
926
  }
907
927
  // State B2
908
928
  const { lazyName } = this;
929
+ /** @type {string | undefined} */
909
930
  let timeMessage;
910
931
  if (lazyName) {
911
932
  // only log once
@@ -959,6 +980,10 @@ class PackContent {
959
980
  }
960
981
  }
961
982
 
983
+ /**
984
+ * @param {Buffer} buf buffer
985
+ * @returns {Buffer} buffer that can be collected
986
+ */
962
987
  const allowCollectingMemory = buf => {
963
988
  const wasted = buf.buffer.byteLength - buf.byteLength;
964
989
  if (wasted > 8192 && (wasted > 1048576 || wasted > buf.byteLength)) {
@@ -978,9 +1003,10 @@ class PackFileCacheStrategy {
978
1003
  * @param {Logger} options.logger a logger
979
1004
  * @param {SnapshotOptions} options.snapshot options regarding snapshotting
980
1005
  * @param {number} options.maxAge max age of cache items
981
- * @param {boolean} options.profile track and log detailed timing information for individual cache items
982
- * @param {boolean} options.allowCollectingMemory allow to collect unused memory created during deserialization
983
- * @param {false | "gzip" | "brotli"} options.compression compression used
1006
+ * @param {boolean | undefined} options.profile track and log detailed timing information for individual cache items
1007
+ * @param {boolean | undefined} options.allowCollectingMemory allow to collect unused memory created during deserialization
1008
+ * @param {false | "gzip" | "brotli" | undefined} options.compression compression used
1009
+ * @param {boolean | undefined} options.readonly disable storing cache into filesystem
984
1010
  */
985
1011
  constructor({
986
1012
  compiler,
@@ -993,7 +1019,8 @@ class PackFileCacheStrategy {
993
1019
  maxAge,
994
1020
  profile,
995
1021
  allowCollectingMemory,
996
- compression
1022
+ compression,
1023
+ readonly
997
1024
  }) {
998
1025
  this.fileSerializer = createFileSerializer(
999
1026
  fs,
@@ -1012,6 +1039,7 @@ class PackFileCacheStrategy {
1012
1039
  this.logger = logger;
1013
1040
  this.maxAge = maxAge;
1014
1041
  this.profile = profile;
1042
+ this.readonly = readonly;
1015
1043
  this.allowCollectingMemory = allowCollectingMemory;
1016
1044
  this.compression = compression;
1017
1045
  this._extension =
@@ -1025,17 +1053,20 @@ class PackFileCacheStrategy {
1025
1053
  this.buildDependencies = new Set();
1026
1054
  /** @type {LazySet<string>} */
1027
1055
  this.newBuildDependencies = new LazySet();
1028
- /** @type {Snapshot} */
1056
+ /** @type {Snapshot | undefined} */
1029
1057
  this.resolveBuildDependenciesSnapshot = undefined;
1030
- /** @type {Map<string, string | false>} */
1058
+ /** @type {ResolveResults | undefined} */
1031
1059
  this.resolveResults = undefined;
1032
- /** @type {Snapshot} */
1060
+ /** @type {Snapshot | undefined} */
1033
1061
  this.buildSnapshot = undefined;
1034
- /** @type {Promise<Pack>} */
1062
+ /** @type {Promise<Pack> | undefined} */
1035
1063
  this.packPromise = this._openPack();
1036
1064
  this.storePromise = Promise.resolve();
1037
1065
  }
1038
1066
 
1067
+ /**
1068
+ * @returns {Promise<Pack>} pack
1069
+ */
1039
1070
  _getPack() {
1040
1071
  if (this.packPromise === undefined) {
1041
1072
  this.packPromise = this.storePromise.then(() => this._openPack());
@@ -1056,7 +1087,7 @@ class PackFileCacheStrategy {
1056
1087
  let newBuildDependencies;
1057
1088
  /** @type {Snapshot} */
1058
1089
  let resolveBuildDependenciesSnapshot;
1059
- /** @type {Map<string, string | false>} */
1090
+ /** @type {ResolveResults | undefined} */
1060
1091
  let resolveResults;
1061
1092
  logger.time("restore cache container");
1062
1093
  return this.fileSerializer
@@ -1213,6 +1244,8 @@ class PackFileCacheStrategy {
1213
1244
  * @returns {Promise<void>} promise
1214
1245
  */
1215
1246
  store(identifier, etag, data) {
1247
+ if (this.readonly) return Promise.resolve();
1248
+
1216
1249
  return this._getPack().then(pack => {
1217
1250
  pack.set(identifier, etag === null ? null : etag.toString(), data);
1218
1251
  });
@@ -1238,7 +1271,11 @@ class PackFileCacheStrategy {
1238
1271
  });
1239
1272
  }
1240
1273
 
1274
+ /**
1275
+ * @param {LazySet<string>} dependencies dependencies to store
1276
+ */
1241
1277
  storeBuildDependencies(dependencies) {
1278
+ if (this.readonly) return;
1242
1279
  this.newBuildDependencies.addAll(dependencies);
1243
1280
  }
1244
1281
 
@@ -1282,7 +1319,7 @@ class PackFileCacheStrategy {
1282
1319
  missing,
1283
1320
  resolveResults,
1284
1321
  resolveDependencies
1285
- } = result;
1322
+ } = /** @type {ResolveBuildDependenciesResult} */ (result);
1286
1323
  if (this.resolveResults) {
1287
1324
  for (const [key, value] of resolveResults) {
1288
1325
  this.resolveResults.set(key, value);
@@ -1377,7 +1414,7 @@ class PackFileCacheStrategy {
1377
1414
  const content = new PackContainer(
1378
1415
  pack,
1379
1416
  this.version,
1380
- this.buildSnapshot,
1417
+ /** @type {Snapshot} */ (this.buildSnapshot),
1381
1418
  updatedBuildDependencies,
1382
1419
  this.resolveResults,
1383
1420
  this.resolveBuildDependenciesSnapshot
@@ -124,8 +124,11 @@ class ResolverCachePlugin {
124
124
  const newResolveContext = {
125
125
  ...resolveContext,
126
126
  stack: new Set(),
127
+ /** @type {LazySet<string>} */
127
128
  missingDependencies: new LazySet(),
129
+ /** @type {LazySet<string>} */
128
130
  fileDependencies: new LazySet(),
131
+ /** @type {LazySet<string>} */
129
132
  contextDependencies: new LazySet()
130
133
  };
131
134
  let yieldResult;
@@ -23,7 +23,7 @@ const inputRx = /^(?:((?:[A-Z]:)?[/\\].*?))?(?::(.+?))?$/i;
23
23
  */
24
24
 
25
25
  /**
26
- * @param {string} input input string
26
+ * @param {string | null | undefined} input input string
27
27
  * @param {string} context the context directory
28
28
  * @returns {BrowserslistHandlerConfig} config
29
29
  */
@@ -47,7 +47,7 @@ const parse = (input, context) => {
47
47
  };
48
48
 
49
49
  /**
50
- * @param {string} input input string
50
+ * @param {string | null | undefined} input input string
51
51
  * @param {string} context the context directory
52
52
  * @returns {string[] | undefined} selected browsers
53
53
  */
@@ -66,7 +66,7 @@ const load = (input, context) => {
66
66
  })
67
67
  : browserslist.loadConfig({ path: context, env });
68
68
 
69
- if (!config) return null;
69
+ if (!config) return;
70
70
  return browserslist(config);
71
71
  };
72
72
 
@@ -120,7 +120,7 @@ const resolve = browsers => {
120
120
  and_qq: [10, 4],
121
121
  // baidu: Not supported
122
122
  // and_uc: Not supported
123
- // kaios: Not supported
123
+ kaios: [3, 0],
124
124
  node: [12, 17]
125
125
  });
126
126
 
@@ -187,7 +187,7 @@ const resolve = browsers => {
187
187
  // and_qq: Unknown support
188
188
  // baidu: Unknown support
189
189
  // and_uc: Unknown support
190
- // kaios: Unknown support
190
+ kaios: [3, 0],
191
191
  node: [0, 12]
192
192
  }),
193
193
  destructuring: rawChecker({
@@ -206,7 +206,7 @@ const resolve = browsers => {
206
206
  // and_qq: Unknown support
207
207
  // baidu: Unknown support
208
208
  // and_uc: Unknown support
209
- // kaios: Unknown support
209
+ kaios: [2, 5],
210
210
  node: [6, 0]
211
211
  }),
212
212
  bigIntLiteral: rawChecker({
@@ -225,7 +225,7 @@ const resolve = browsers => {
225
225
  // and_qq: Not supported
226
226
  // baidu: Not supported
227
227
  // and_uc: Not supported
228
- // kaios: Not supported
228
+ kaios: [3, 0],
229
229
  node: [10, 4]
230
230
  }),
231
231
  // Support syntax `import` and `export` and no limitations and bugs on Node.js
@@ -246,7 +246,7 @@ const resolve = browsers => {
246
246
  and_qq: [10, 4],
247
247
  // baidu: Not supported
248
248
  // and_uc: Not supported
249
- // kaios: Not supported
249
+ kaios: [3, 0],
250
250
  node: [12, 17]
251
251
  }),
252
252
  dynamicImport: es6DynamicImport,
@@ -269,7 +269,7 @@ const resolve = browsers => {
269
269
  // and_qq: Unknown support
270
270
  // baidu: Unknown support
271
271
  // and_uc: Unknown support
272
- // kaios: Unknown support
272
+ kaios: [3, 0],
273
273
  node: 12
274
274
  }),
275
275
  optionalChaining: rawChecker({
@@ -288,7 +288,7 @@ const resolve = browsers => {
288
288
  // and_qq: Not supported
289
289
  // baidu: Not supported
290
290
  // and_uc: Not supported
291
- // kaios: Not supported
291
+ kaios: [3, 0],
292
292
  node: 14
293
293
  }),
294
294
  templateLiteral: rawChecker({