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
package/lib/Watching.js CHANGED
@@ -11,6 +11,8 @@ const Stats = require("./Stats");
11
11
  /** @typedef {import("./Compilation")} Compilation */
12
12
  /** @typedef {import("./Compiler")} Compiler */
13
13
  /** @typedef {import("./FileSystemInfo").FileSystemInfoEntry} FileSystemInfoEntry */
14
+ /** @typedef {import("./WebpackError")} WebpackError */
15
+ /** @typedef {import("./logging/Logger").Logger} Logger */
14
16
 
15
17
  /**
16
18
  * @template T
@@ -58,9 +60,9 @@ class Watching {
58
60
  this._needRecords = true;
59
61
  this.watcher = undefined;
60
62
  this.pausedWatcher = undefined;
61
- /** @type {Set<string>} */
63
+ /** @type {Set<string> | undefined} */
62
64
  this._collectedChangedFiles = undefined;
63
- /** @type {Set<string>} */
65
+ /** @type {Set<string> | undefined} */
64
66
  this._collectedRemovedFiles = undefined;
65
67
  this._done = this._done.bind(this);
66
68
  process.nextTick(() => {
@@ -69,8 +71,8 @@ class Watching {
69
71
  }
70
72
 
71
73
  /**
72
- * @param {ReadonlySet<string>} changedFiles changed files
73
- * @param {ReadonlySet<string>} removedFiles removed files
74
+ * @param {ReadonlySet<string>=} changedFiles changed files
75
+ * @param {ReadonlySet<string>=} removedFiles removed files
74
76
  */
75
77
  _mergeWithCollected(changedFiles, removedFiles) {
76
78
  if (!changedFiles) return;
@@ -80,11 +82,13 @@ class Watching {
80
82
  } else {
81
83
  for (const file of changedFiles) {
82
84
  this._collectedChangedFiles.add(file);
83
- this._collectedRemovedFiles.delete(file);
85
+ /** @type {Set<string>} */
86
+ (this._collectedRemovedFiles).delete(file);
84
87
  }
85
- for (const file of removedFiles) {
88
+ for (const file of /** @type {ReadonlySet<string>} */ (removedFiles)) {
86
89
  this._collectedChangedFiles.delete(file);
87
- this._collectedRemovedFiles.add(file);
90
+ /** @type {Set<string>} */
91
+ (this._collectedRemovedFiles).add(file);
88
92
  }
89
93
  }
90
94
  }
@@ -228,7 +232,7 @@ class Watching {
228
232
  }
229
233
 
230
234
  /**
231
- * @param {Error=} err an optional error
235
+ * @param {(Error | null)=} err an optional error
232
236
  * @param {Compilation=} compilation the compilation
233
237
  * @returns {void}
234
238
  */
@@ -237,13 +241,18 @@ class Watching {
237
241
 
238
242
  const logger = compilation && compilation.getLogger("webpack.Watching");
239
243
 
244
+ /** @type {Stats | null} */
240
245
  let stats = null;
241
246
 
247
+ /**
248
+ * @param {Error} err error
249
+ * @param {Callback<void>[]=} cbs callbacks
250
+ */
242
251
  const handleError = (err, cbs) => {
243
252
  this.compiler.hooks.failed.call(err);
244
253
  this.compiler.cache.beginIdle();
245
254
  this.compiler.idle = true;
246
- this.handler(err, stats);
255
+ this.handler(err, /** @type {Stats} */ (stats));
247
256
  if (!cbs) {
248
257
  cbs = this.callbacks;
249
258
  this.callbacks = [];
@@ -258,11 +267,13 @@ class Watching {
258
267
  !(this._isBlocked() && (this.blocked = true))
259
268
  ) {
260
269
  if (compilation) {
261
- logger.time("storeBuildDependencies");
270
+ /** @type {Logger} */
271
+ (logger).time("storeBuildDependencies");
262
272
  this.compiler.cache.storeBuildDependencies(
263
273
  compilation.buildDependencies,
264
274
  err => {
265
- logger.timeEnd("storeBuildDependencies");
275
+ /** @type {Logger} */
276
+ (logger).timeEnd("storeBuildDependencies");
266
277
  if (err) return handleError(err);
267
278
  this._go();
268
279
  }
@@ -283,32 +294,42 @@ class Watching {
283
294
 
284
295
  const cbs = this.callbacks;
285
296
  this.callbacks = [];
286
- logger.time("done hook");
287
- this.compiler.hooks.done.callAsync(stats, err => {
288
- logger.timeEnd("done hook");
297
+ /** @type {Logger} */
298
+ (logger).time("done hook");
299
+ this.compiler.hooks.done.callAsync(/** @type {Stats} */ (stats), err => {
300
+ /** @type {Logger} */
301
+ (logger).timeEnd("done hook");
289
302
  if (err) return handleError(err, cbs);
290
- this.handler(null, stats);
291
- logger.time("storeBuildDependencies");
303
+ this.handler(null, /** @type {Stats} */ (stats));
304
+ /** @type {Logger} */
305
+ (logger).time("storeBuildDependencies");
292
306
  this.compiler.cache.storeBuildDependencies(
293
- compilation.buildDependencies,
307
+ /** @type {Compilation} */
308
+ (compilation).buildDependencies,
294
309
  err => {
295
- logger.timeEnd("storeBuildDependencies");
310
+ /** @type {Logger} */
311
+ (logger).timeEnd("storeBuildDependencies");
296
312
  if (err) return handleError(err, cbs);
297
- logger.time("beginIdle");
313
+ /** @type {Logger} */
314
+ (logger).time("beginIdle");
298
315
  this.compiler.cache.beginIdle();
299
316
  this.compiler.idle = true;
300
- logger.timeEnd("beginIdle");
317
+ /** @type {Logger} */
318
+ (logger).timeEnd("beginIdle");
301
319
  process.nextTick(() => {
302
320
  if (!this.closed) {
303
321
  this.watch(
304
- compilation.fileDependencies,
305
- compilation.contextDependencies,
306
- compilation.missingDependencies
322
+ /** @type {Compilation} */
323
+ (compilation).fileDependencies,
324
+ /** @type {Compilation} */
325
+ (compilation).contextDependencies,
326
+ /** @type {Compilation} */
327
+ (compilation).missingDependencies
307
328
  );
308
329
  }
309
330
  });
310
331
  for (const cb of cbs) cb(null);
311
- this.compiler.hooks.afterDone.call(stats);
332
+ this.compiler.hooks.afterDone.call(/** @type {Stats} */ (stats));
312
333
  }
313
334
  );
314
335
  });
@@ -377,6 +398,13 @@ class Watching {
377
398
  this._invalidate();
378
399
  }
379
400
 
401
+ /**
402
+ * @param {ReadonlyMap<string, FileSystemInfoEntry | "ignore">=} fileTimeInfoEntries info for files
403
+ * @param {ReadonlyMap<string, FileSystemInfoEntry | "ignore">=} contextTimeInfoEntries info for directories
404
+ * @param {ReadonlySet<string>=} changedFiles changed files
405
+ * @param {ReadonlySet<string>=} removedFiles removed files
406
+ * @returns {void}
407
+ */
380
408
  _invalidate(
381
409
  fileTimeInfoEntries,
382
410
  contextTimeInfoEntries,
@@ -423,6 +451,10 @@ class Watching {
423
451
  }
424
452
  return;
425
453
  }
454
+ /**
455
+ * @param {(WebpackError | null)=} err error if any
456
+ * @param {Compilation=} compilation compilation if any
457
+ */
426
458
  const finalCallback = (err, compilation) => {
427
459
  this.running = false;
428
460
  this.compiler.running = false;
@@ -433,9 +465,14 @@ class Watching {
433
465
  this.compiler.fileTimestamps = undefined;
434
466
  this.compiler.contextTimestamps = undefined;
435
467
  this.compiler.fsStartTime = undefined;
468
+ /**
469
+ * @param {(WebpackError | null)=} err error if any
470
+ */
436
471
  const shutdown = err => {
437
472
  this.compiler.hooks.watchClose.call();
438
- const closeCallbacks = this._closeCallbacks;
473
+ const closeCallbacks =
474
+ /** @type {Callback<void>[]} */
475
+ (this._closeCallbacks);
439
476
  this._closeCallbacks = undefined;
440
477
  for (const cb of closeCallbacks) cb(err);
441
478
  };
@@ -11,6 +11,8 @@ const makeSerializable = require("./util/makeSerializable");
11
11
  /** @typedef {import("./Chunk")} Chunk */
12
12
  /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
13
13
  /** @typedef {import("./Module")} Module */
14
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
15
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
14
16
 
15
17
  class WebpackError extends Error {
16
18
  /**
@@ -20,16 +22,17 @@ class WebpackError extends Error {
20
22
  constructor(message) {
21
23
  super(message);
22
24
 
25
+ /** @type {string | undefined} */
23
26
  this.details = undefined;
24
- /** @type {Module} */
27
+ /** @type {Module | undefined | null} */
25
28
  this.module = undefined;
26
- /** @type {DependencyLocation} */
29
+ /** @type {DependencyLocation | undefined} */
27
30
  this.loc = undefined;
28
- /** @type {boolean} */
31
+ /** @type {boolean | undefined} */
29
32
  this.hideStack = undefined;
30
- /** @type {Chunk} */
33
+ /** @type {Chunk | undefined} */
31
34
  this.chunk = undefined;
32
- /** @type {string} */
35
+ /** @type {string | undefined} */
33
36
  this.file = undefined;
34
37
  }
35
38
 
@@ -37,6 +40,9 @@ class WebpackError extends Error {
37
40
  return this.stack + (this.details ? `\n${this.details}` : "");
38
41
  }
39
42
 
43
+ /**
44
+ * @param {ObjectSerializerContext} context context
45
+ */
40
46
  serialize({ write }) {
41
47
  write(this.name);
42
48
  write(this.message);
@@ -46,6 +52,9 @@ class WebpackError extends Error {
46
52
  write(this.hideStack);
47
53
  }
48
54
 
55
+ /**
56
+ * @param {ObjectDeserializerContext} context context
57
+ */
49
58
  deserialize({ read }) {
50
59
  this.name = read();
51
60
  this.message = read();
@@ -6,15 +6,24 @@
6
6
  "use strict";
7
7
 
8
8
  const IgnoreErrorModuleFactory = require("./IgnoreErrorModuleFactory");
9
+ const {
10
+ JAVASCRIPT_MODULE_TYPE_AUTO,
11
+ JAVASCRIPT_MODULE_TYPE_DYNAMIC,
12
+ JAVASCRIPT_MODULE_TYPE_ESM
13
+ } = require("./ModuleTypeConstants");
9
14
  const WebpackIsIncludedDependency = require("./dependencies/WebpackIsIncludedDependency");
10
15
  const {
11
16
  toConstantDependency
12
17
  } = require("./javascript/JavascriptParserHelpers");
13
18
 
14
- /** @typedef {import("enhanced-resolve/lib/Resolver")} Resolver */
19
+ /** @typedef {import("enhanced-resolve").Resolver} Resolver */
15
20
  /** @typedef {import("./Compiler")} Compiler */
21
+ /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
16
22
  /** @typedef {import("./Module")} Module */
17
23
  /** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
24
+ /** @typedef {import("./javascript/JavascriptParser").Range} Range */
25
+
26
+ const PLUGIN_NAME = "WebpackIsIncludedPlugin";
18
27
 
19
28
  class WebpackIsIncludedPlugin {
20
29
  /**
@@ -23,7 +32,7 @@ class WebpackIsIncludedPlugin {
23
32
  */
24
33
  apply(compiler) {
25
34
  compiler.hooks.compilation.tap(
26
- "WebpackIsIncludedPlugin",
35
+ PLUGIN_NAME,
27
36
  (compilation, { normalModuleFactory }) => {
28
37
  compilation.dependencyFactories.set(
29
38
  WebpackIsIncludedDependency,
@@ -41,7 +50,7 @@ class WebpackIsIncludedPlugin {
41
50
  const handler = parser => {
42
51
  parser.hooks.call
43
52
  .for("__webpack_is_included__")
44
- .tap("WebpackIsIncludedPlugin", expr => {
53
+ .tap(PLUGIN_NAME, expr => {
45
54
  if (
46
55
  expr.type !== "CallExpression" ||
47
56
  expr.arguments.length !== 1 ||
@@ -54,29 +63,29 @@ class WebpackIsIncludedPlugin {
54
63
  if (!request.isString()) return;
55
64
 
56
65
  const dep = new WebpackIsIncludedDependency(
57
- request.string,
58
- expr.range
66
+ /** @type {string} */ (request.string),
67
+ /** @type {Range} */ (expr.range)
59
68
  );
60
- dep.loc = expr.loc;
69
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
61
70
  parser.state.module.addDependency(dep);
62
71
  return true;
63
72
  });
64
73
  parser.hooks.typeof
65
74
  .for("__webpack_is_included__")
66
75
  .tap(
67
- "WebpackIsIncludedPlugin",
76
+ PLUGIN_NAME,
68
77
  toConstantDependency(parser, JSON.stringify("function"))
69
78
  );
70
79
  };
71
80
  normalModuleFactory.hooks.parser
72
- .for("javascript/auto")
73
- .tap("WebpackIsIncludedPlugin", handler);
81
+ .for(JAVASCRIPT_MODULE_TYPE_AUTO)
82
+ .tap(PLUGIN_NAME, handler);
74
83
  normalModuleFactory.hooks.parser
75
- .for("javascript/dynamic")
76
- .tap("WebpackIsIncludedPlugin", handler);
84
+ .for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
85
+ .tap(PLUGIN_NAME, handler);
77
86
  normalModuleFactory.hooks.parser
78
- .for("javascript/esm")
79
- .tap("WebpackIsIncludedPlugin", handler);
87
+ .for(JAVASCRIPT_MODULE_TYPE_ESM)
88
+ .tap(PLUGIN_NAME, handler);
80
89
  }
81
90
  );
82
91
  }
@@ -119,47 +119,40 @@ class WebpackOptionsApply extends OptionsApply {
119
119
  if (options.externalsPresets.webAsync) {
120
120
  //@ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
121
121
  const ExternalsPlugin = require("./ExternalsPlugin");
122
- new ExternalsPlugin(
123
- "import",
124
- options.experiments.css
125
- ? ({ request, dependencyType }, callback) => {
126
- if (dependencyType === "url") {
127
- if (/^(\/\/|https?:\/\/)/.test(request))
128
- return callback(null, `asset ${request}`);
129
- } else if (dependencyType === "css-import") {
130
- if (/^(\/\/|https?:\/\/)/.test(request))
131
- return callback(null, `css-import ${request}`);
132
- } else if (/^(\/\/|https?:\/\/|std:)/.test(request)) {
133
- if (/^\.css(\?|$)/.test(request))
134
- return callback(null, `css-import ${request}`);
135
- return callback(null, `import ${request}`);
136
- }
137
- callback();
138
- }
139
- : /^(\/\/|https?:\/\/|std:)/
140
- ).apply(compiler);
122
+ new ExternalsPlugin("import", ({ request, dependencyType }, callback) => {
123
+ if (dependencyType === "url") {
124
+ if (/^(\/\/|https?:\/\/|#)/.test(request))
125
+ return callback(null, `asset ${request}`);
126
+ } else if (options.experiments.css && dependencyType === "css-import") {
127
+ if (/^(\/\/|https?:\/\/|#)/.test(request))
128
+ return callback(null, `css-import ${request}`);
129
+ } else if (
130
+ options.experiments.css &&
131
+ /^(\/\/|https?:\/\/|std:)/.test(request)
132
+ ) {
133
+ if (/^\.css(\?|$)/.test(request))
134
+ return callback(null, `css-import ${request}`);
135
+ return callback(null, `import ${request}`);
136
+ }
137
+ callback();
138
+ }).apply(compiler);
141
139
  } else if (options.externalsPresets.web) {
142
140
  //@ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
143
141
  const ExternalsPlugin = require("./ExternalsPlugin");
144
- new ExternalsPlugin(
145
- "module",
146
- options.experiments.css
147
- ? ({ request, dependencyType }, callback) => {
148
- if (dependencyType === "url") {
149
- if (/^(\/\/|https?:\/\/)/.test(request))
150
- return callback(null, `asset ${request}`);
151
- } else if (dependencyType === "css-import") {
152
- if (/^(\/\/|https?:\/\/)/.test(request))
153
- return callback(null, `css-import ${request}`);
154
- } else if (/^(\/\/|https?:\/\/|std:)/.test(request)) {
155
- if (/^\.css(\?|$)/.test(request))
156
- return callback(null, `css-import ${request}`);
157
- return callback(null, `module ${request}`);
158
- }
159
- callback();
160
- }
161
- : /^(\/\/|https?:\/\/|std:)/
162
- ).apply(compiler);
142
+ new ExternalsPlugin("module", ({ request, dependencyType }, callback) => {
143
+ if (dependencyType === "url") {
144
+ if (/^(\/\/|https?:\/\/|#)/.test(request))
145
+ return callback(null, `asset ${request}`);
146
+ } else if (options.experiments.css && dependencyType === "css-import") {
147
+ if (/^(\/\/|https?:\/\/|#)/.test(request))
148
+ return callback(null, `css-import ${request}`);
149
+ } else if (/^(\/\/|https?:\/\/|std:)/.test(request)) {
150
+ if (options.experiments.css && /^\.css((\?)|$)/.test(request))
151
+ return callback(null, `css-import ${request}`);
152
+ return callback(null, `module ${request}`);
153
+ }
154
+ callback();
155
+ }).apply(compiler);
163
156
  } else if (options.externalsPresets.node) {
164
157
  if (options.experiments.css) {
165
158
  //@ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
@@ -168,10 +161,10 @@ class WebpackOptionsApply extends OptionsApply {
168
161
  "module",
169
162
  ({ request, dependencyType }, callback) => {
170
163
  if (dependencyType === "url") {
171
- if (/^(\/\/|https?:\/\/)/.test(request))
164
+ if (/^(\/\/|https?:\/\/|#)/.test(request))
172
165
  return callback(null, `asset ${request}`);
173
166
  } else if (dependencyType === "css-import") {
174
- if (/^(\/\/|https?:\/\/)/.test(request))
167
+ if (/^(\/\/|https?:\/\/|#)/.test(request))
175
168
  return callback(null, `css-import ${request}`);
176
169
  } else if (/^(\/\/|https?:\/\/|std:)/.test(request)) {
177
170
  if (/^\.css(\?|$)/.test(request))
@@ -375,7 +368,9 @@ class WebpackOptionsApply extends OptionsApply {
375
368
  const NodeStuffPlugin = require("./NodeStuffPlugin");
376
369
  new NodeStuffPlugin(options.node).apply(compiler);
377
370
  }
378
- new APIPlugin().apply(compiler);
371
+ new APIPlugin({
372
+ module: options.output.module
373
+ }).apply(compiler);
379
374
  new ExportsInfoApiPlugin().apply(compiler);
380
375
  new WebpackIsIncludedPlugin().apply(compiler);
381
376
  new ConstPlugin().apply(compiler);
@@ -391,7 +386,8 @@ class WebpackOptionsApply extends OptionsApply {
391
386
  new WorkerPlugin(
392
387
  options.output.workerChunkLoading,
393
388
  options.output.workerWasmLoading,
394
- options.output.module
389
+ options.output.module,
390
+ options.output.workerPublicPath
395
391
  ).apply(compiler);
396
392
 
397
393
  new DefaultStatsFactoryPlugin().apply(compiler);
@@ -570,7 +566,7 @@ class WebpackOptionsApply extends OptionsApply {
570
566
  for (const minimizer of options.optimization.minimizer) {
571
567
  if (typeof minimizer === "function") {
572
568
  minimizer.call(compiler, compiler);
573
- } else if (minimizer !== "...") {
569
+ } else if (minimizer !== "..." && minimizer) {
574
570
  minimizer.apply(compiler);
575
571
  }
576
572
  }
@@ -663,7 +659,8 @@ class WebpackOptionsApply extends OptionsApply {
663
659
  maxAge: cacheOptions.maxAge,
664
660
  profile: cacheOptions.profile,
665
661
  allowCollectingMemory: cacheOptions.allowCollectingMemory,
666
- compression: cacheOptions.compression
662
+ compression: cacheOptions.compression,
663
+ readonly: cacheOptions.readonly
667
664
  }),
668
665
  cacheOptions.idleTimeout,
669
666
  cacheOptions.idleTimeoutForInitialStore,
@@ -8,11 +8,18 @@
8
8
  const { applyWebpackOptionsDefaults } = require("./config/defaults");
9
9
  const { getNormalizedWebpackOptions } = require("./config/normalization");
10
10
 
11
+ /** @typedef {import("./config/normalization").WebpackOptions} WebpackOptions */
12
+ /** @typedef {import("./config/normalization").WebpackOptionsNormalized} WebpackOptionsNormalized */
13
+
11
14
  class WebpackOptionsDefaulter {
15
+ /**
16
+ * @param {WebpackOptions} options webpack options
17
+ * @returns {WebpackOptionsNormalized} normalized webpack options
18
+ */
12
19
  process(options) {
13
- options = getNormalizedWebpackOptions(options);
14
- applyWebpackOptionsDefaults(options);
15
- return options;
20
+ const normalizedOptions = getNormalizedWebpackOptions(options);
21
+ applyWebpackOptionsDefaults(normalizedOptions);
22
+ return normalizedOptions;
16
23
  }
17
24
  }
18
25
 
@@ -10,6 +10,7 @@ const path = require("path");
10
10
  const { RawSource } = require("webpack-sources");
11
11
  const ConcatenationScope = require("../ConcatenationScope");
12
12
  const Generator = require("../Generator");
13
+ const { ASSET_MODULE_TYPE } = require("../ModuleTypeConstants");
13
14
  const RuntimeGlobals = require("../RuntimeGlobals");
14
15
  const createHash = require("../util/createHash");
15
16
  const { makePathsRelative } = require("../util/identifier");
@@ -106,15 +107,28 @@ const encodeDataUri = (encoding, source) => {
106
107
  return encodedContent;
107
108
  };
108
109
 
110
+ /**
111
+ * @param {string} encoding encoding
112
+ * @param {string} content content
113
+ * @returns {Buffer} decoded content
114
+ */
109
115
  const decodeDataUriContent = (encoding, content) => {
110
116
  const isBase64 = encoding === "base64";
111
- return isBase64
112
- ? Buffer.from(content, "base64")
113
- : Buffer.from(decodeURIComponent(content), "ascii");
117
+
118
+ if (isBase64) {
119
+ return Buffer.from(content, "base64");
120
+ }
121
+
122
+ // If we can't decode return the original body
123
+ try {
124
+ return Buffer.from(decodeURIComponent(content), "ascii");
125
+ } catch (_) {
126
+ return Buffer.from(content, "ascii");
127
+ }
114
128
  };
115
129
 
116
130
  const JS_TYPES = new Set(["javascript"]);
117
- const JS_AND_ASSET_TYPES = new Set(["javascript", "asset"]);
131
+ const JS_AND_ASSET_TYPES = new Set(["javascript", ASSET_MODULE_TYPE]);
118
132
  const DEFAULT_ENCODING = "base64";
119
133
 
120
134
  class AssetGenerator extends Generator {
@@ -167,6 +181,7 @@ class AssetGenerator extends Generator {
167
181
  );
168
182
  }
169
183
 
184
+ /** @type {string | boolean | undefined} */
170
185
  let mimeType = this.dataUrlOptions.mimetype;
171
186
  if (mimeType === undefined) {
172
187
  const ext = path.extname(module.nameForCondition());
@@ -199,7 +214,7 @@ class AssetGenerator extends Generator {
199
214
  );
200
215
  }
201
216
 
202
- return mimeType;
217
+ return /** @type {string} */ (mimeType);
203
218
  }
204
219
 
205
220
  /**
@@ -220,11 +235,11 @@ class AssetGenerator extends Generator {
220
235
  }
221
236
  ) {
222
237
  switch (type) {
223
- case "asset":
224
- return module.originalSource();
238
+ case ASSET_MODULE_TYPE:
239
+ return /** @type {Source} */ (module.originalSource());
225
240
  default: {
226
241
  let content;
227
- const originalSource = module.originalSource();
242
+ const originalSource = /** @type {Source} */ (module.originalSource());
228
243
  if (module.buildInfo.dataUrl) {
229
244
  let encodedSource;
230
245
  if (typeof this.dataUrlOptions === "function") {
@@ -398,7 +413,7 @@ class AssetGenerator extends Generator {
398
413
  */
399
414
  getSize(module, type) {
400
415
  switch (type) {
401
- case "asset": {
416
+ case ASSET_MODULE_TYPE: {
402
417
  const originalSource = module.originalSource();
403
418
 
404
419
  if (!originalSource) {