webpack 5.97.1 → 5.104.1

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.
Files changed (610) hide show
  1. package/README.md +368 -434
  2. package/bin/webpack.js +15 -9
  3. package/hot/dev-server.js +18 -3
  4. package/hot/emitter-event-target.js +7 -0
  5. package/hot/lazy-compilation-node.js +45 -29
  6. package/hot/lazy-compilation-universal.js +18 -0
  7. package/hot/lazy-compilation-web.js +15 -5
  8. package/hot/load-http.js +7 -0
  9. package/hot/log.js +15 -15
  10. package/hot/only-dev-server.js +19 -4
  11. package/hot/poll.js +1 -0
  12. package/lib/APIPlugin.js +48 -50
  13. package/lib/AbstractMethodError.js +1 -0
  14. package/lib/AsyncDependenciesBlock.js +4 -5
  15. package/lib/AutomaticPrefetchPlugin.js +22 -22
  16. package/lib/BannerPlugin.js +35 -40
  17. package/lib/Cache.js +12 -9
  18. package/lib/CacheFacade.js +13 -13
  19. package/lib/CaseSensitiveModulesWarning.js +6 -6
  20. package/lib/Chunk.js +68 -47
  21. package/lib/ChunkGraph.js +174 -95
  22. package/lib/ChunkGroup.js +32 -24
  23. package/lib/ChunkTemplate.js +8 -8
  24. package/lib/CleanPlugin.js +90 -42
  25. package/lib/CodeGenerationResults.js +12 -9
  26. package/lib/CompatibilityPlugin.js +70 -21
  27. package/lib/Compilation.js +827 -550
  28. package/lib/Compiler.js +137 -109
  29. package/lib/ConcatenationScope.js +45 -8
  30. package/lib/ConditionalInitFragment.js +1 -1
  31. package/lib/ConstPlugin.js +89 -59
  32. package/lib/ContextExclusionPlugin.js +5 -4
  33. package/lib/ContextModule.js +66 -51
  34. package/lib/ContextModuleFactory.js +51 -30
  35. package/lib/ContextReplacementPlugin.js +89 -34
  36. package/lib/CssModule.js +8 -4
  37. package/lib/DefinePlugin.js +209 -57
  38. package/lib/DelegatedModule.js +34 -23
  39. package/lib/DelegatedModuleFactoryPlugin.js +27 -24
  40. package/lib/DelegatedPlugin.js +4 -2
  41. package/lib/DependenciesBlock.js +0 -2
  42. package/lib/Dependency.js +37 -19
  43. package/lib/DependencyTemplate.js +2 -0
  44. package/lib/DependencyTemplates.js +5 -6
  45. package/lib/DllEntryPlugin.js +8 -4
  46. package/lib/DllModule.js +11 -12
  47. package/lib/DllModuleFactory.js +2 -2
  48. package/lib/DllPlugin.js +9 -6
  49. package/lib/DllReferencePlugin.js +60 -65
  50. package/lib/DotenvPlugin.js +462 -0
  51. package/lib/DynamicEntryPlugin.js +8 -8
  52. package/lib/EntryOptionPlugin.js +8 -6
  53. package/lib/EntryPlugin.js +5 -3
  54. package/lib/Entrypoint.js +19 -0
  55. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  56. package/lib/EnvironmentPlugin.js +26 -19
  57. package/lib/ErrorHelpers.js +6 -6
  58. package/lib/EvalDevToolModulePlugin.js +17 -14
  59. package/lib/EvalSourceMapDevToolPlugin.js +156 -142
  60. package/lib/ExportsInfo.js +180 -115
  61. package/lib/ExportsInfoApiPlugin.js +2 -2
  62. package/lib/ExternalModule.js +256 -102
  63. package/lib/ExternalModuleFactoryPlugin.js +66 -29
  64. package/lib/ExternalsPlugin.js +57 -2
  65. package/lib/FileSystemInfo.js +313 -247
  66. package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
  67. package/lib/FlagDependencyExportsPlugin.js +29 -19
  68. package/lib/FlagDependencyUsagePlugin.js +9 -10
  69. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  70. package/lib/Generator.js +43 -10
  71. package/lib/GraphHelpers.js +11 -3
  72. package/lib/HookWebpackError.js +35 -7
  73. package/lib/HotModuleReplacementPlugin.js +149 -108
  74. package/lib/HotUpdateChunk.js +0 -3
  75. package/lib/IgnoreErrorModuleFactory.js +2 -2
  76. package/lib/IgnorePlugin.js +16 -13
  77. package/lib/IgnoreWarningsPlugin.js +6 -4
  78. package/lib/InitFragment.js +41 -23
  79. package/lib/InvalidDependenciesModuleWarning.js +2 -3
  80. package/lib/JavascriptMetaInfoPlugin.js +2 -4
  81. package/lib/LibManifestPlugin.js +12 -13
  82. package/lib/LoaderOptionsPlugin.js +12 -14
  83. package/lib/LoaderTargetPlugin.js +5 -3
  84. package/lib/MainTemplate.js +18 -29
  85. package/lib/ManifestPlugin.js +235 -0
  86. package/lib/Module.js +138 -60
  87. package/lib/ModuleBuildError.js +4 -2
  88. package/lib/ModuleDependencyError.js +4 -3
  89. package/lib/ModuleDependencyWarning.js +4 -3
  90. package/lib/ModuleError.js +1 -1
  91. package/lib/ModuleFactory.js +10 -3
  92. package/lib/ModuleFilenameHelpers.js +63 -60
  93. package/lib/ModuleGraph.js +195 -70
  94. package/lib/ModuleGraphConnection.js +14 -20
  95. package/lib/ModuleInfoHeaderPlugin.js +15 -16
  96. package/lib/ModuleNotFoundError.js +1 -1
  97. package/lib/ModuleParseError.js +8 -4
  98. package/lib/ModuleSourceTypeConstants.js +189 -0
  99. package/lib/ModuleTemplate.js +7 -8
  100. package/lib/ModuleTypeConstants.js +37 -15
  101. package/lib/ModuleWarning.js +1 -1
  102. package/lib/MultiCompiler.js +64 -49
  103. package/lib/MultiStats.js +19 -14
  104. package/lib/MultiWatching.js +7 -11
  105. package/lib/NoEmitOnErrorsPlugin.js +5 -3
  106. package/lib/NodeStuffPlugin.js +438 -126
  107. package/lib/NormalModule.js +322 -201
  108. package/lib/NormalModuleFactory.js +230 -117
  109. package/lib/NormalModuleReplacementPlugin.js +37 -39
  110. package/lib/NullFactory.js +3 -2
  111. package/lib/OptimizationStages.js +1 -1
  112. package/lib/OptionsApply.js +1 -1
  113. package/lib/Parser.js +5 -3
  114. package/lib/PlatformPlugin.js +3 -1
  115. package/lib/PrefetchPlugin.js +6 -4
  116. package/lib/ProgressPlugin.js +48 -49
  117. package/lib/ProvidePlugin.js +7 -5
  118. package/lib/RawModule.js +26 -12
  119. package/lib/RecordIdsPlugin.js +88 -110
  120. package/lib/RequestShortener.js +3 -1
  121. package/lib/ResolverFactory.js +15 -14
  122. package/lib/RuntimeGlobals.js +216 -153
  123. package/lib/RuntimeModule.js +7 -6
  124. package/lib/RuntimePlugin.js +115 -62
  125. package/lib/RuntimeTemplate.js +248 -76
  126. package/lib/SelfModuleFactory.js +2 -2
  127. package/lib/SizeFormatHelpers.js +2 -2
  128. package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
  129. package/lib/SourceMapDevToolPlugin.js +72 -59
  130. package/lib/Stats.js +2 -3
  131. package/lib/Template.js +31 -24
  132. package/lib/TemplatedPathPlugin.js +24 -21
  133. package/lib/UseStrictPlugin.js +1 -1
  134. package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
  135. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  136. package/lib/WarnNoModeSetPlugin.js +3 -1
  137. package/lib/WatchIgnorePlugin.js +11 -9
  138. package/lib/Watching.js +27 -29
  139. package/lib/WebpackError.js +10 -3
  140. package/lib/WebpackIsIncludedPlugin.js +4 -5
  141. package/lib/WebpackOptionsApply.js +263 -135
  142. package/lib/asset/AssetBytesGenerator.js +171 -0
  143. package/lib/asset/AssetBytesParser.js +37 -0
  144. package/lib/asset/AssetGenerator.js +285 -223
  145. package/lib/asset/AssetModulesPlugin.js +103 -41
  146. package/lib/asset/AssetParser.js +7 -3
  147. package/lib/asset/AssetSourceGenerator.js +41 -17
  148. package/lib/asset/RawDataUrlModule.js +17 -9
  149. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  150. package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
  151. package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
  152. package/lib/buildChunkGraph.js +36 -17
  153. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  154. package/lib/cache/IdleFileCachePlugin.js +22 -20
  155. package/lib/cache/MemoryCachePlugin.js +3 -3
  156. package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
  157. package/lib/cache/PackFileCacheStrategy.js +198 -170
  158. package/lib/cache/ResolverCachePlugin.js +58 -48
  159. package/lib/cache/getLazyHashedEtag.js +5 -4
  160. package/lib/cli.js +197 -39
  161. package/lib/config/browserslistTargetHandler.js +110 -85
  162. package/lib/config/defaults.js +514 -113
  163. package/lib/config/normalization.js +91 -64
  164. package/lib/config/target.js +30 -18
  165. package/lib/container/ContainerEntryDependency.js +0 -1
  166. package/lib/container/ContainerEntryModule.js +16 -15
  167. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  168. package/lib/container/ContainerPlugin.js +5 -6
  169. package/lib/container/ContainerReferencePlugin.js +27 -30
  170. package/lib/container/FallbackDependency.js +2 -1
  171. package/lib/container/FallbackModule.js +19 -14
  172. package/lib/container/FallbackModuleFactory.js +2 -2
  173. package/lib/container/HoistContainerReferencesPlugin.js +7 -7
  174. package/lib/container/ModuleFederationPlugin.js +4 -4
  175. package/lib/container/RemoteModule.js +14 -14
  176. package/lib/container/RemoteRuntimeModule.js +2 -2
  177. package/lib/container/options.js +9 -9
  178. package/lib/css/CssGenerator.js +366 -74
  179. package/lib/css/CssLoadingRuntimeModule.js +26 -16
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  181. package/lib/css/CssModulesPlugin.js +191 -142
  182. package/lib/css/CssParser.js +1756 -740
  183. package/lib/css/walkCssTokens.js +180 -67
  184. package/lib/debug/ProfilingPlugin.js +135 -51
  185. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
  186. package/lib/dependencies/AMDPlugin.js +18 -11
  187. package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
  188. package/lib/dependencies/AMDRequireContextDependency.js +2 -1
  189. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
  190. package/lib/dependencies/AMDRuntimeModules.js +3 -1
  191. package/lib/dependencies/CachedConstDependency.js +24 -18
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
  193. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
  197. package/lib/dependencies/CommonJsPlugin.js +29 -18
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
  199. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  200. package/lib/dependencies/ConstDependency.js +2 -2
  201. package/lib/dependencies/ContextDependency.js +10 -5
  202. package/lib/dependencies/ContextDependencyHelpers.js +21 -13
  203. package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
  205. package/lib/dependencies/ContextElementDependency.js +23 -12
  206. package/lib/dependencies/CssIcssExportDependency.js +402 -22
  207. package/lib/dependencies/CssIcssImportDependency.js +116 -51
  208. package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
  209. package/lib/dependencies/CssImportDependency.js +17 -14
  210. package/lib/dependencies/CssUrlDependency.js +8 -13
  211. package/lib/dependencies/DynamicExports.js +19 -19
  212. package/lib/dependencies/ExportsInfoDependency.js +13 -10
  213. package/lib/dependencies/ExternalModuleDependency.js +7 -7
  214. package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
  215. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
  216. package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
  217. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
  218. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  219. package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
  220. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
  221. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
  222. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
  224. package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
  226. package/lib/dependencies/HarmonyExports.js +5 -5
  227. package/lib/dependencies/HarmonyImportDependency.js +92 -45
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
  229. package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
  230. package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
  231. package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
  233. package/lib/dependencies/ImportContextDependency.js +15 -1
  234. package/lib/dependencies/ImportDependency.js +25 -7
  235. package/lib/dependencies/ImportEagerDependency.js +7 -5
  236. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
  237. package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
  238. package/lib/dependencies/ImportMetaPlugin.js +172 -20
  239. package/lib/dependencies/ImportParserPlugin.js +327 -49
  240. package/lib/dependencies/ImportPhase.js +121 -0
  241. package/lib/dependencies/ImportPlugin.js +3 -1
  242. package/lib/dependencies/ImportWeakDependency.js +7 -5
  243. package/lib/dependencies/JsonExportsDependency.js +54 -28
  244. package/lib/dependencies/LoaderDependency.js +0 -3
  245. package/lib/dependencies/LoaderImportDependency.js +0 -3
  246. package/lib/dependencies/LoaderPlugin.js +24 -25
  247. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  248. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  249. package/lib/dependencies/ModuleDependency.js +14 -13
  250. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  251. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  252. package/lib/dependencies/NullDependency.js +2 -0
  253. package/lib/dependencies/ProvidedDependency.js +8 -10
  254. package/lib/dependencies/PureExpressionDependency.js +1 -2
  255. package/lib/dependencies/RequireContextDependency.js +2 -1
  256. package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
  257. package/lib/dependencies/RequireContextPlugin.js +5 -2
  258. package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
  259. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
  260. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  261. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  262. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  263. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  264. package/lib/dependencies/RequireResolveContextDependency.js +1 -1
  265. package/lib/dependencies/RequireResolveDependency.js +3 -3
  266. package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
  267. package/lib/dependencies/StaticExportsDependency.js +3 -5
  268. package/lib/dependencies/SystemPlugin.js +4 -4
  269. package/lib/dependencies/URLContextDependency.js +65 -0
  270. package/lib/dependencies/URLDependency.js +3 -8
  271. package/lib/dependencies/URLPlugin.js +18 -159
  272. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
  273. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  274. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  275. package/lib/dependencies/WorkerDependency.js +8 -6
  276. package/lib/dependencies/WorkerPlugin.js +131 -67
  277. package/lib/dependencies/getFunctionExpression.js +2 -2
  278. package/lib/dependencies/processExportInfo.js +4 -4
  279. package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
  280. package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
  281. package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
  282. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
  283. package/lib/formatLocation.js +2 -2
  284. package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
  285. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  286. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
  287. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  288. package/lib/hmr/LazyCompilationPlugin.js +67 -54
  289. package/lib/hmr/lazyCompilationBackend.js +23 -18
  290. package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
  291. package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
  292. package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
  293. package/lib/ids/HashedModuleIdsPlugin.js +15 -13
  294. package/lib/ids/IdHelpers.js +66 -49
  295. package/lib/ids/NamedChunkIdsPlugin.js +14 -17
  296. package/lib/ids/NamedModuleIdsPlugin.js +12 -14
  297. package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
  298. package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
  299. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
  300. package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
  301. package/lib/ids/SyncModuleIdsPlugin.js +18 -13
  302. package/lib/index.js +54 -14
  303. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
  304. package/lib/javascript/BasicEvaluatedExpression.js +26 -18
  305. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  306. package/lib/javascript/ChunkHelpers.js +17 -5
  307. package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
  308. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
  309. package/lib/javascript/JavascriptGenerator.js +122 -100
  310. package/lib/javascript/JavascriptModulesPlugin.js +332 -152
  311. package/lib/javascript/JavascriptParser.js +1488 -1052
  312. package/lib/javascript/JavascriptParserHelpers.js +48 -47
  313. package/lib/javascript/StartupHelpers.js +23 -22
  314. package/lib/json/JsonData.js +4 -4
  315. package/lib/json/JsonGenerator.js +66 -32
  316. package/lib/json/JsonModulesPlugin.js +16 -6
  317. package/lib/json/JsonParser.js +23 -8
  318. package/lib/library/AbstractLibraryPlugin.js +45 -10
  319. package/lib/library/AmdLibraryPlugin.js +7 -5
  320. package/lib/library/AssignLibraryPlugin.js +71 -17
  321. package/lib/library/EnableLibraryPlugin.js +51 -25
  322. package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
  323. package/lib/library/JsonpLibraryPlugin.js +5 -2
  324. package/lib/library/ModuleLibraryPlugin.js +230 -18
  325. package/lib/library/SystemLibraryPlugin.js +29 -11
  326. package/lib/library/UmdLibraryPlugin.js +35 -32
  327. package/lib/logging/Logger.js +18 -15
  328. package/lib/logging/createConsoleLogger.js +27 -27
  329. package/lib/logging/runtime.js +11 -11
  330. package/lib/logging/truncateArgs.js +5 -5
  331. package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
  332. package/lib/node/NodeEnvironmentPlugin.js +9 -3
  333. package/lib/node/NodeTargetPlugin.js +9 -1
  334. package/lib/node/NodeTemplatePlugin.js +2 -2
  335. package/lib/node/NodeWatchFileSystem.js +4 -4
  336. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
  337. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
  338. package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
  339. package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
  340. package/lib/node/nodeConsole.js +12 -7
  341. package/lib/optimize/AggressiveMergingPlugin.js +46 -47
  342. package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
  343. package/lib/optimize/ConcatenatedModule.js +620 -251
  344. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  345. package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
  346. package/lib/optimize/InnerGraph.js +139 -124
  347. package/lib/optimize/InnerGraphPlugin.js +29 -24
  348. package/lib/optimize/LimitChunkCountPlugin.js +32 -8
  349. package/lib/optimize/MangleExportsPlugin.js +22 -22
  350. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  351. package/lib/optimize/MinChunkSizePlugin.js +12 -7
  352. package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
  353. package/lib/optimize/RealContentHashPlugin.js +58 -44
  354. package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
  355. package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
  356. package/lib/optimize/RuntimeChunkPlugin.js +22 -25
  357. package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
  358. package/lib/optimize/SplitChunksPlugin.js +209 -158
  359. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
  360. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  361. package/lib/performance/SizeLimitsPlugin.js +8 -5
  362. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  363. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
  364. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
  365. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  366. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  367. package/lib/rules/BasicEffectRulePlugin.js +14 -5
  368. package/lib/rules/BasicMatcherRulePlugin.js +18 -7
  369. package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
  370. package/lib/rules/RuleSetCompiler.js +73 -32
  371. package/lib/rules/UseEffectRulePlugin.js +61 -25
  372. package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
  373. package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
  374. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  375. package/lib/runtime/CompatRuntimeModule.js +0 -1
  376. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  377. package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
  378. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
  379. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  380. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  381. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
  382. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  383. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  384. package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
  385. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
  386. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  387. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  388. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  389. package/lib/schemes/DataUriPlugin.js +9 -31
  390. package/lib/schemes/FileUriPlugin.js +11 -6
  391. package/lib/schemes/HttpUriPlugin.js +381 -261
  392. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  393. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  394. package/lib/serialization/BinaryMiddleware.js +51 -33
  395. package/lib/serialization/ErrorObjectSerializer.js +7 -2
  396. package/lib/serialization/FileMiddleware.js +101 -71
  397. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  398. package/lib/serialization/ObjectMiddleware.js +130 -54
  399. package/lib/serialization/PlainObjectSerializer.js +1 -1
  400. package/lib/serialization/Serializer.js +38 -20
  401. package/lib/serialization/SerializerMiddleware.js +121 -49
  402. package/lib/serialization/SingleItemMiddleware.js +9 -7
  403. package/lib/serialization/types.js +1 -1
  404. package/lib/sharing/ConsumeSharedModule.js +9 -9
  405. package/lib/sharing/ConsumeSharedPlugin.js +14 -14
  406. package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
  407. package/lib/sharing/ProvideSharedModule.js +9 -11
  408. package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
  409. package/lib/sharing/ProvideSharedPlugin.js +15 -10
  410. package/lib/sharing/SharePlugin.js +3 -4
  411. package/lib/sharing/ShareRuntimeModule.js +7 -6
  412. package/lib/sharing/resolveMatchedConfigs.js +27 -13
  413. package/lib/sharing/utils.js +37 -43
  414. package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
  415. package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
  416. package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
  417. package/lib/stats/StatsFactory.js +75 -32
  418. package/lib/stats/StatsPrinter.js +71 -51
  419. package/lib/url/URLParserPlugin.js +264 -0
  420. package/lib/util/ArrayHelpers.js +6 -8
  421. package/lib/util/ArrayQueue.js +1 -1
  422. package/lib/util/AsyncQueue.js +11 -10
  423. package/lib/util/Hash.js +37 -5
  424. package/lib/util/IterableHelpers.js +4 -4
  425. package/lib/util/LazyBucketSortedSet.js +46 -27
  426. package/lib/util/LazySet.js +16 -10
  427. package/lib/util/MapHelpers.js +1 -1
  428. package/lib/util/ParallelismFactorCalculator.js +2 -2
  429. package/lib/util/Semaphore.js +3 -3
  430. package/lib/util/SetHelpers.js +6 -6
  431. package/lib/util/SortableSet.js +11 -9
  432. package/lib/util/StackedCacheMap.js +2 -2
  433. package/lib/util/StackedMap.js +3 -3
  434. package/lib/util/StringXor.js +2 -1
  435. package/lib/util/TupleQueue.js +11 -8
  436. package/lib/util/TupleSet.js +44 -19
  437. package/lib/util/URLAbsoluteSpecifier.js +3 -4
  438. package/lib/util/WeakTupleMap.js +56 -42
  439. package/lib/util/binarySearchBounds.js +4 -3
  440. package/lib/util/chainedImports.js +3 -1
  441. package/lib/util/cleverMerge.js +171 -107
  442. package/lib/util/comparators.js +265 -162
  443. package/lib/util/compileBooleanMatcher.js +120 -41
  444. package/lib/util/concatenate.js +20 -16
  445. package/lib/util/conventions.js +73 -74
  446. package/lib/util/create-schema-validation.js +8 -8
  447. package/lib/util/createHash.js +32 -135
  448. package/lib/util/dataURL.js +39 -0
  449. package/lib/util/deprecation.js +119 -116
  450. package/lib/util/deterministicGrouping.js +56 -47
  451. package/lib/util/extractSourceMap.js +319 -0
  452. package/lib/util/extractUrlAndGlobal.js +1 -1
  453. package/lib/util/findGraphRoots.js +19 -9
  454. package/lib/util/fs.js +169 -141
  455. package/lib/util/hash/BatchedHash.js +50 -10
  456. package/lib/util/hash/BulkUpdateHash.js +138 -0
  457. package/lib/util/hash/DebugHash.js +75 -0
  458. package/lib/util/hash/hash-digest.js +216 -0
  459. package/lib/util/hash/md4.js +2 -2
  460. package/lib/util/hash/wasm-hash.js +59 -17
  461. package/lib/util/identifier.js +124 -61
  462. package/lib/util/internalSerializables.js +4 -6
  463. package/lib/util/magicComment.js +9 -5
  464. package/lib/util/makeSerializable.js +2 -2
  465. package/lib/util/memoize.js +5 -2
  466. package/lib/util/objectToMap.js +3 -2
  467. package/lib/util/processAsyncTree.js +5 -5
  468. package/lib/util/propertyAccess.js +1 -1
  469. package/lib/util/propertyName.js +2 -3
  470. package/lib/util/registerExternalSerializer.js +16 -20
  471. package/lib/util/removeBOM.js +25 -0
  472. package/lib/util/runtime.js +72 -56
  473. package/lib/util/semver.js +44 -33
  474. package/lib/util/serialization.js +56 -56
  475. package/lib/util/smartGrouping.js +42 -27
  476. package/lib/util/source.js +5 -4
  477. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  478. package/lib/validateSchema.js +7 -9
  479. package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
  480. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
  481. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
  482. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
  483. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
  484. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  485. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
  486. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
  487. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
  488. package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
  489. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
  490. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
  491. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
  492. package/lib/wasm-sync/WebAssemblyParser.js +10 -17
  493. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  494. package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
  495. package/lib/web/FetchCompileWasmPlugin.js +6 -8
  496. package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
  497. package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
  498. package/lib/web/JsonpTemplatePlugin.js +0 -1
  499. package/lib/webpack.js +107 -87
  500. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
  501. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
  502. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  503. package/module.d.ts +5 -0
  504. package/package.json +149 -129
  505. package/schemas/WebpackOptions.check.d.ts +1 -1
  506. package/schemas/WebpackOptions.check.js +2 -2
  507. package/schemas/WebpackOptions.json +543 -190
  508. package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
  509. package/schemas/plugins/BannerPlugin.check.js +2 -2
  510. package/schemas/plugins/BannerPlugin.json +4 -0
  511. package/schemas/plugins/DllPlugin.check.d.ts +1 -1
  512. package/schemas/plugins/DllPlugin.check.js +1 -1
  513. package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
  514. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  515. package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
  516. package/schemas/plugins/IgnorePlugin.check.js +1 -1
  517. package/schemas/plugins/IgnorePlugin.json +1 -1
  518. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
  519. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  520. package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
  521. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  522. package/schemas/plugins/ManifestPlugin.json +98 -0
  523. package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
  524. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  525. package/schemas/plugins/ProgressPlugin.json +1 -1
  526. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
  529. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
  530. package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
  531. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
  532. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
  534. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  535. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
  536. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  537. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
  538. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  539. package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
  540. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  541. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
  542. package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
  543. package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
  544. package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
  545. package/schemas/plugins/container/ExternalsType.check.js +2 -2
  546. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
  547. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
  548. package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
  549. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
  550. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
  551. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
  552. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
  553. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
  554. package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
  555. package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
  556. package/schemas/plugins/css/CssParserOptions.check.js +2 -2
  557. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
  558. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  559. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  560. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  561. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  562. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
  563. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
  564. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
  565. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
  566. package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
  567. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  568. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  569. package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
  570. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  571. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  572. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
  573. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  574. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
  575. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  576. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
  577. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
  578. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
  579. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  580. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
  581. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  582. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  583. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  584. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  585. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
  586. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
  587. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
  588. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
  589. package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
  590. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  591. package/types.d.ts +5115 -1863
  592. package/SECURITY.md +0 -9
  593. package/lib/ModuleSourceTypesConstants.js +0 -112
  594. package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
  595. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
  596. package/lib/library/ModernModuleLibraryPlugin.js +0 -144
  597. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
  598. package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
  599. package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
  600. package/schemas/plugins/JsonModulesPluginParser.json +0 -12
  601. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
  602. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
  603. package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
  604. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
  605. package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
  606. package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
  607. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
  608. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
  609. package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
  610. package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
@@ -26,9 +26,9 @@ class FlagAllModulesAsUsedPlugin {
26
26
  * @returns {void}
27
27
  */
28
28
  apply(compiler) {
29
- compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
29
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
30
30
  const moduleGraph = compilation.moduleGraph;
31
- compilation.hooks.optimizeDependencies.tap(PLUGIN_NAME, modules => {
31
+ compilation.hooks.optimizeDependencies.tap(PLUGIN_NAME, (modules) => {
32
32
  /** @type {RuntimeSpec} */
33
33
  let runtime;
34
34
  for (const [name, { options }] of compilation.entries) {
@@ -14,6 +14,7 @@ const Queue = require("./util/Queue");
14
14
  /** @typedef {import("./Dependency").ExportSpec} ExportSpec */
15
15
  /** @typedef {import("./Dependency").ExportsSpec} ExportsSpec */
16
16
  /** @typedef {import("./ExportsInfo")} ExportsInfo */
17
+ /** @typedef {import("./ExportsInfo").RestoreProvidedData} RestoreProvidedData */
17
18
  /** @typedef {import("./Module")} Module */
18
19
  /** @typedef {import("./Module").BuildInfo} BuildInfo */
19
20
 
@@ -27,7 +28,7 @@ class FlagDependencyExportsPlugin {
27
28
  * @returns {void}
28
29
  */
29
30
  apply(compiler) {
30
- compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
31
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
31
32
  const moduleGraph = compilation.moduleGraph;
32
33
  const cache = compilation.getCache(PLUGIN_NAME);
33
34
  compilation.hooks.finishModules.tapAsync(
@@ -102,7 +103,7 @@ class FlagDependencyExportsPlugin {
102
103
  }
103
104
  );
104
105
  },
105
- err => {
106
+ (err) => {
106
107
  logger.timeEnd("restore cached provided exports");
107
108
  if (err) return callback(err);
108
109
 
@@ -128,7 +129,7 @@ class FlagDependencyExportsPlugin {
128
129
  * @param {DependenciesBlock} depBlock the dependencies block
129
130
  * @returns {void}
130
131
  */
131
- const processDependenciesBlock = depBlock => {
132
+ const processDependenciesBlock = (depBlock) => {
132
133
  for (const dep of depBlock.dependencies) {
133
134
  processDependency(dep);
134
135
  }
@@ -141,7 +142,7 @@ class FlagDependencyExportsPlugin {
141
142
  * @param {Dependency} dep the dependency
142
143
  * @returns {void}
143
144
  */
144
- const processDependency = dep => {
145
+ const processDependency = (dep) => {
145
146
  const exportDesc = dep.getExports(moduleGraph);
146
147
  if (!exportDesc) return;
147
148
  exportsSpecsFromDependencies.set(dep, exportDesc);
@@ -199,20 +200,27 @@ class FlagDependencyExportsPlugin {
199
200
  name = exportNameOrSpec;
200
201
  } else {
201
202
  name = exportNameOrSpec.name;
202
- if (exportNameOrSpec.canMangle !== undefined)
203
+ if (exportNameOrSpec.canMangle !== undefined) {
203
204
  canMangle = exportNameOrSpec.canMangle;
204
- if (exportNameOrSpec.export !== undefined)
205
+ }
206
+ if (exportNameOrSpec.export !== undefined) {
205
207
  fromExport = exportNameOrSpec.export;
206
- if (exportNameOrSpec.exports !== undefined)
208
+ }
209
+ if (exportNameOrSpec.exports !== undefined) {
207
210
  exports = exportNameOrSpec.exports;
208
- if (exportNameOrSpec.from !== undefined)
211
+ }
212
+ if (exportNameOrSpec.from !== undefined) {
209
213
  from = exportNameOrSpec.from;
210
- if (exportNameOrSpec.priority !== undefined)
214
+ }
215
+ if (exportNameOrSpec.priority !== undefined) {
211
216
  priority = exportNameOrSpec.priority;
212
- if (exportNameOrSpec.terminalBinding !== undefined)
217
+ }
218
+ if (exportNameOrSpec.terminalBinding !== undefined) {
213
219
  terminalBinding = exportNameOrSpec.terminalBinding;
214
- if (exportNameOrSpec.hidden !== undefined)
220
+ }
221
+ if (exportNameOrSpec.hidden !== undefined) {
215
222
  hidden = exportNameOrSpec.hidden;
223
+ }
216
224
  }
217
225
  const exportInfo = exportsInfo.getExportInfo(name);
218
226
 
@@ -368,7 +376,8 @@ class FlagDependencyExportsPlugin {
368
376
  (module, callback) => {
369
377
  if (
370
378
  typeof (
371
- /** @type {BuildInfo} */ (module.buildInfo).hash
379
+ /** @type {BuildInfo} */
380
+ (module.buildInfo).hash
372
381
  ) !== "string"
373
382
  ) {
374
383
  // not cacheable
@@ -390,7 +399,7 @@ class FlagDependencyExportsPlugin {
390
399
  callback
391
400
  );
392
401
  },
393
- err => {
402
+ (err) => {
394
403
  logger.timeEnd("store provided exports into cache");
395
404
  callback(err);
396
405
  }
@@ -400,18 +409,19 @@ class FlagDependencyExportsPlugin {
400
409
  }
401
410
  );
402
411
 
403
- /** @type {WeakMap<Module, any>} */
412
+ /** @type {WeakMap<Module, RestoreProvidedData>} */
404
413
  const providedExportsCache = new WeakMap();
405
- compilation.hooks.rebuildModule.tap(PLUGIN_NAME, module => {
414
+ compilation.hooks.rebuildModule.tap(PLUGIN_NAME, (module) => {
406
415
  providedExportsCache.set(
407
416
  module,
408
417
  moduleGraph.getExportsInfo(module).getRestoreProvidedData()
409
418
  );
410
419
  });
411
- compilation.hooks.finishRebuildingModule.tap(PLUGIN_NAME, module => {
412
- moduleGraph
413
- .getExportsInfo(module)
414
- .restoreProvided(providedExportsCache.get(module));
420
+ compilation.hooks.finishRebuildingModule.tap(PLUGIN_NAME, (module) => {
421
+ moduleGraph.getExportsInfo(module).restoreProvided(
422
+ /** @type {RestoreProvidedData} */
423
+ (providedExportsCache.get(module))
424
+ );
415
425
  });
416
426
  });
417
427
  }
@@ -13,11 +13,10 @@ const ArrayQueue = require("./util/ArrayQueue");
13
13
  const TupleQueue = require("./util/TupleQueue");
14
14
  const { getEntryRuntime, mergeRuntimeOwned } = require("./util/runtime");
15
15
 
16
- /** @typedef {import("./Chunk")} Chunk */
17
- /** @typedef {import("./ChunkGroup")} ChunkGroup */
18
16
  /** @typedef {import("./Compiler")} Compiler */
19
17
  /** @typedef {import("./DependenciesBlock")} DependenciesBlock */
20
18
  /** @typedef {import("./Dependency").ReferencedExport} ReferencedExport */
19
+ /** @typedef {import("./Dependency").ReferencedExports} ReferencedExports */
21
20
  /** @typedef {import("./ExportsInfo")} ExportsInfo */
22
21
  /** @typedef {import("./Module")} Module */
23
22
  /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
@@ -41,11 +40,11 @@ class FlagDependencyUsagePlugin {
41
40
  * @returns {void}
42
41
  */
43
42
  apply(compiler) {
44
- compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
43
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
45
44
  const moduleGraph = compilation.moduleGraph;
46
45
  compilation.hooks.optimizeDependencies.tap(
47
46
  { name: PLUGIN_NAME, stage: STAGE_DEFAULT },
48
- modules => {
47
+ (modules) => {
49
48
  if (compilation.moduleMemCaches) {
50
49
  throw new Error(
51
50
  "optimization.usedExports can't be used with cacheUnaffected as export usage is a global effect"
@@ -56,12 +55,12 @@ class FlagDependencyUsagePlugin {
56
55
  /** @type {Map<ExportsInfo, Module>} */
57
56
  const exportInfoToModuleMap = new Map();
58
57
 
59
- /** @type {TupleQueue<[Module, RuntimeSpec]>} */
58
+ /** @type {TupleQueue<Module, RuntimeSpec>} */
60
59
  const queue = new TupleQueue();
61
60
 
62
61
  /**
63
62
  * @param {Module} module module to process
64
- * @param {(string[] | ReferencedExport)[]} usedExports list of used exports
63
+ * @param {ReferencedExports} usedExports list of used exports
65
64
  * @param {RuntimeSpec} runtime part of which runtime
66
65
  * @param {boolean} forceSideEffects always apply side effects
67
66
  * @returns {void}
@@ -108,7 +107,7 @@ class FlagDependencyUsagePlugin {
108
107
  if (nestedInfo) {
109
108
  if (
110
109
  exportInfo.setUsedConditionally(
111
- used => used === UsageState.Unused,
110
+ (used) => used === UsageState.Unused,
112
111
  UsageState.OnlyPropertiesUsed,
113
112
  runtime
114
113
  )
@@ -127,7 +126,7 @@ class FlagDependencyUsagePlugin {
127
126
  }
128
127
  if (
129
128
  exportInfo.setUsedConditionally(
130
- v => v !== UsageState.Used,
129
+ (v) => v !== UsageState.Used,
131
130
  UsageState.Used,
132
131
  runtime
133
132
  )
@@ -168,7 +167,7 @@ class FlagDependencyUsagePlugin {
168
167
  * @returns {void}
169
168
  */
170
169
  const processModule = (module, runtime, forceSideEffects) => {
171
- /** @type {Map<Module, (string[] | ReferencedExport)[] | Map<string, string[] | ReferencedExport>>} */
170
+ /** @type {Map<Module, ReferencedExports | Map<string, string[] | ReferencedExport>>} */
172
171
  const map = new Map();
173
172
 
174
173
  /** @type {ArrayQueue<DependenciesBlock>} */
@@ -274,7 +273,7 @@ class FlagDependencyUsagePlugin {
274
273
  } else {
275
274
  processReferencedModule(
276
275
  module,
277
- Array.from(referencedExports.values()),
276
+ [...referencedExports.values()],
278
277
  runtime,
279
278
  forceSideEffects
280
279
  );
@@ -27,7 +27,7 @@ class FlagEntryExportAsUsedPlugin {
27
27
  * @returns {void}
28
28
  */
29
29
  apply(compiler) {
30
- compiler.hooks.thisCompilation.tap(PLUGIN_NAME, compilation => {
30
+ compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
31
31
  const moduleGraph = compilation.moduleGraph;
32
32
  compilation.hooks.seal.tap(PLUGIN_NAME, () => {
33
33
  for (const [
package/lib/Generator.js CHANGED
@@ -5,15 +5,17 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const { JAVASCRIPT_TYPE } = require("./ModuleSourceTypeConstants");
9
+
8
10
  /** @typedef {import("webpack-sources").Source} Source */
9
11
  /** @typedef {import("./ChunkGraph")} ChunkGraph */
10
12
  /** @typedef {import("./CodeGenerationResults")} CodeGenerationResults */
11
- /** @typedef {import("./Compilation")} Compilation */
12
13
  /** @typedef {import("./ConcatenationScope")} ConcatenationScope */
13
- /** @typedef {import("./DependencyTemplate")} DependencyTemplate */
14
14
  /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
15
+ /** @typedef {import("./Module").CodeGenerationResultData} CodeGenerationResultData */
15
16
  /** @typedef {import("./Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
16
17
  /** @typedef {import("./Module").RuntimeRequirements} RuntimeRequirements */
18
+ /** @typedef {import("./Module").SourceType} SourceType */
17
19
  /** @typedef {import("./Module").SourceTypes} SourceTypes */
18
20
  /** @typedef {import("./ModuleGraph")} ModuleGraph */
19
21
  /** @typedef {import("./NormalModule")} NormalModule */
@@ -31,8 +33,16 @@
31
33
  * @property {RuntimeSpec} runtime the runtime
32
34
  * @property {ConcatenationScope=} concatenationScope when in concatenated module, information about other concatenated modules
33
35
  * @property {CodeGenerationResults=} codeGenerationResults code generation results of other modules (need to have a codeGenerationDependency to use that)
34
- * @property {string} type which kind of code should be generated
35
- * @property {function(): Map<string, any>=} getData get access to the code generation data
36
+ * @property {SourceType} type which kind of code should be generated
37
+ * @property {() => CodeGenerationResultData=} getData get access to the code generation data
38
+ */
39
+
40
+ /**
41
+ * @callback GenerateErrorFn
42
+ * @param {Error} error the error
43
+ * @param {NormalModule} module module for which the code should be generated
44
+ * @param {GenerateContext} generateContext context for generate
45
+ * @returns {Source | null} generated code
36
46
  */
37
47
 
38
48
  /**
@@ -45,7 +55,7 @@
45
55
 
46
56
  class Generator {
47
57
  /**
48
- * @param {Record<string, Generator>} map map of types
58
+ * @param {{ [key in SourceType]?: Generator }} map map of types
49
59
  * @returns {ByTypeGenerator} generator by type
50
60
  */
51
61
  static byType(map) {
@@ -60,6 +70,7 @@ class Generator {
60
70
  */
61
71
  getTypes(module) {
62
72
  const AbstractMethodError = require("./AbstractMethodError");
73
+
63
74
  throw new AbstractMethodError();
64
75
  }
65
76
 
@@ -67,11 +78,12 @@ class Generator {
67
78
  /**
68
79
  * @abstract
69
80
  * @param {NormalModule} module the module
70
- * @param {string=} type source type
81
+ * @param {SourceType=} type source type
71
82
  * @returns {number} estimate size of the module
72
83
  */
73
84
  getSize(module, type) {
74
85
  const AbstractMethodError = require("./AbstractMethodError");
86
+
75
87
  throw new AbstractMethodError();
76
88
  }
77
89
 
@@ -87,6 +99,7 @@ class Generator {
87
99
  { dependencyTemplates, runtimeTemplate, moduleGraph, type }
88
100
  ) {
89
101
  const AbstractMethodError = require("./AbstractMethodError");
102
+
90
103
  throw new AbstractMethodError();
91
104
  }
92
105
 
@@ -108,14 +121,34 @@ class Generator {
108
121
  }
109
122
  }
110
123
 
124
+ /**
125
+ * @this {ByTypeGenerator}
126
+ * @type {GenerateErrorFn}
127
+ */
128
+ function generateError(error, module, generateContext) {
129
+ const type = generateContext.type;
130
+ const generator =
131
+ /** @type {Generator & { generateError?: GenerateErrorFn }} */
132
+ (this.map[type]);
133
+ if (!generator) {
134
+ throw new Error(`Generator.byType: no generator specified for ${type}`);
135
+ }
136
+ if (typeof generator.generateError === "undefined") {
137
+ return null;
138
+ }
139
+ return generator.generateError(error, module, generateContext);
140
+ }
141
+
111
142
  class ByTypeGenerator extends Generator {
112
143
  /**
113
- * @param {Record<string, Generator>} map map of types
144
+ * @param {{ [key in SourceType]?: Generator }} map map of types
114
145
  */
115
146
  constructor(map) {
116
147
  super();
117
148
  this.map = map;
118
- this._types = new Set(Object.keys(map));
149
+ this._types = /** @type {SourceTypes} */ (new Set(Object.keys(map)));
150
+ /** @type {GenerateErrorFn | undefined} */
151
+ this.generateError = generateError.bind(this);
119
152
  }
120
153
 
121
154
  /**
@@ -128,10 +161,10 @@ class ByTypeGenerator extends Generator {
128
161
 
129
162
  /**
130
163
  * @param {NormalModule} module the module
131
- * @param {string=} type source type
164
+ * @param {SourceType=} type source type
132
165
  * @returns {number} estimate size of the module
133
166
  */
134
- getSize(module, type = "javascript") {
167
+ getSize(module, type = JAVASCRIPT_TYPE) {
135
168
  const t = type;
136
169
  const generator = this.map[t];
137
170
  return generator ? generator.getSize(module, t) : 0;
@@ -5,11 +5,9 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */
9
8
  /** @typedef {import("./Chunk")} Chunk */
10
9
  /** @typedef {import("./ChunkGroup")} ChunkGroup */
11
- /** @typedef {import("./DependenciesBlock")} DependenciesBlock */
12
- /** @typedef {import("./Module")} Module */
10
+ /** @typedef {import(".").Entrypoint} Entrypoint */
13
11
 
14
12
  /**
15
13
  * @param {ChunkGroup} chunkGroup the ChunkGroup to connect
@@ -33,6 +31,16 @@ const connectChunkGroupParentAndChild = (parent, child) => {
33
31
  }
34
32
  };
35
33
 
34
+ /**
35
+ * @param {Entrypoint} entrypoint the entrypoint
36
+ * @param {Entrypoint} dependOnEntrypoint the dependOnEntrypoint
37
+ * @returns {void}
38
+ */
39
+ const connectEntrypointAndDependOn = (entrypoint, dependOnEntrypoint) => {
40
+ entrypoint.addDependOn(dependOnEntrypoint);
41
+ };
42
+
36
43
  module.exports.connectChunkGroupAndChunk = connectChunkGroupAndChunk;
37
44
  module.exports.connectChunkGroupParentAndChild =
38
45
  connectChunkGroupParentAndChild;
46
+ module.exports.connectEntrypointAndDependOn = connectEntrypointAndDependOn;
@@ -6,8 +6,10 @@
6
6
  "use strict";
7
7
 
8
8
  const WebpackError = require("./WebpackError");
9
+ const makeSerializable = require("./util/makeSerializable");
9
10
 
10
- /** @typedef {import("./Module")} Module */
11
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
12
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
11
13
 
12
14
  /**
13
15
  * @template T
@@ -24,18 +26,43 @@ class HookWebpackError extends WebpackError {
24
26
  * @param {string} hook name of hook
25
27
  */
26
28
  constructor(error, hook) {
27
- super(error.message);
29
+ super(error ? error.message : undefined, error ? { cause: error } : {});
28
30
 
29
- this.name = "HookWebpackError";
30
31
  this.hook = hook;
31
32
  this.error = error;
33
+ this.name = "HookWebpackError";
32
34
  this.hideStack = true;
33
- this.details = `caused by plugins in ${hook}\n${error.stack}`;
35
+ this.stack += `\n-- inner error --\n${error ? error.stack : ""}`;
36
+ this.details = `caused by plugins in ${hook}\n${error ? error.stack : ""}`;
37
+ }
38
+
39
+ /**
40
+ * @param {ObjectSerializerContext} context context
41
+ */
42
+ serialize(context) {
43
+ const { write } = context;
34
44
 
35
- this.stack += `\n-- inner error --\n${error.stack}`;
45
+ write(this.error);
46
+ write(this.hook);
47
+
48
+ super.serialize(context);
49
+ }
50
+
51
+ /**
52
+ * @param {ObjectDeserializerContext} context context
53
+ */
54
+ deserialize(context) {
55
+ const { read } = context;
56
+
57
+ this.error = read();
58
+ this.hook = read();
59
+
60
+ super.deserialize(context);
36
61
  }
37
62
  }
38
63
 
64
+ makeSerializable(HookWebpackError, "webpack/lib/HookWebpackError");
65
+
39
66
  module.exports = HookWebpackError;
40
67
 
41
68
  /**
@@ -47,11 +74,12 @@ const makeWebpackError = (error, hook) => {
47
74
  if (error instanceof WebpackError) return error;
48
75
  return new HookWebpackError(error, hook);
49
76
  };
77
+
50
78
  module.exports.makeWebpackError = makeWebpackError;
51
79
 
52
80
  /**
53
81
  * @template T
54
- * @param {function(WebpackError | null, T=): void} callback webpack error callback
82
+ * @param {(err: WebpackError | null, result?: T) => void} callback webpack error callback
55
83
  * @param {string} hook name of hook
56
84
  * @returns {Callback<T>} generic callback
57
85
  */
@@ -71,7 +99,7 @@ module.exports.makeWebpackErrorCallback = makeWebpackErrorCallback;
71
99
 
72
100
  /**
73
101
  * @template T
74
- * @param {function(): T} fn function which will be wrapping in try catch
102
+ * @param {() => T} fn function which will be wrapping in try catch
75
103
  * @param {string} hook name of hook
76
104
  * @returns {T} the result
77
105
  */