webpack 5.59.0 → 5.94.0

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 (570) hide show
  1. package/README.md +48 -38
  2. package/bin/webpack.js +34 -10
  3. package/hot/dev-server.js +19 -5
  4. package/hot/lazy-compilation-node.js +13 -1
  5. package/hot/lazy-compilation-web.js +9 -0
  6. package/hot/log-apply-result.js +5 -0
  7. package/hot/log.js +23 -4
  8. package/hot/only-dev-server.js +3 -2
  9. package/hot/poll.js +5 -2
  10. package/hot/signal.js +6 -2
  11. package/lib/APIPlugin.js +226 -122
  12. package/lib/AbstractMethodError.js +10 -5
  13. package/lib/AsyncDependenciesBlock.js +13 -5
  14. package/lib/AutomaticPrefetchPlugin.js +2 -1
  15. package/lib/BannerPlugin.js +33 -12
  16. package/lib/Cache.js +16 -12
  17. package/lib/CacheFacade.js +13 -16
  18. package/lib/CaseSensitiveModulesWarning.js +8 -8
  19. package/lib/Chunk.js +60 -33
  20. package/lib/ChunkGraph.js +207 -72
  21. package/lib/ChunkGroup.js +40 -20
  22. package/lib/ChunkTemplate.js +43 -0
  23. package/lib/CleanPlugin.js +117 -32
  24. package/lib/CodeGenerationResults.js +8 -7
  25. package/lib/CommentCompilationWarning.js +0 -1
  26. package/lib/CompatibilityPlugin.js +85 -46
  27. package/lib/Compilation.js +712 -392
  28. package/lib/Compiler.js +393 -172
  29. package/lib/ConcatenationScope.js +10 -13
  30. package/lib/ConditionalInitFragment.js +22 -14
  31. package/lib/ConstPlugin.js +104 -64
  32. package/lib/ContextExclusionPlugin.js +3 -3
  33. package/lib/ContextModule.js +283 -108
  34. package/lib/ContextModuleFactory.js +151 -63
  35. package/lib/ContextReplacementPlugin.js +25 -10
  36. package/lib/CssModule.js +166 -0
  37. package/lib/DefinePlugin.js +254 -148
  38. package/lib/DelegatedModule.js +29 -6
  39. package/lib/DelegatedModuleFactoryPlugin.js +42 -22
  40. package/lib/DelegatedPlugin.js +4 -0
  41. package/lib/DependenciesBlock.js +17 -2
  42. package/lib/Dependency.js +58 -29
  43. package/lib/DependencyTemplate.js +24 -3
  44. package/lib/DependencyTemplates.js +2 -2
  45. package/lib/DllEntryPlugin.js +18 -1
  46. package/lib/DllModule.js +21 -4
  47. package/lib/DllModuleFactory.js +2 -1
  48. package/lib/DllPlugin.js +9 -7
  49. package/lib/DllReferencePlugin.js +50 -19
  50. package/lib/EntryOptionPlugin.js +6 -1
  51. package/lib/EntryPlugin.js +7 -4
  52. package/lib/Entrypoint.js +2 -2
  53. package/lib/EnvironmentNotSupportAsyncWarning.js +52 -0
  54. package/lib/EnvironmentPlugin.js +5 -2
  55. package/lib/ErrorHelpers.js +65 -26
  56. package/lib/EvalDevToolModulePlugin.js +37 -13
  57. package/lib/EvalSourceMapDevToolPlugin.js +50 -20
  58. package/lib/ExportsInfo.js +234 -133
  59. package/lib/ExportsInfoApiPlugin.js +31 -15
  60. package/lib/ExternalModule.js +391 -129
  61. package/lib/ExternalModuleFactoryPlugin.js +65 -17
  62. package/lib/FileSystemInfo.js +1038 -523
  63. package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
  64. package/lib/FlagDependencyExportsPlugin.js +352 -349
  65. package/lib/FlagDependencyUsagePlugin.js +10 -10
  66. package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
  67. package/lib/Generator.js +16 -8
  68. package/lib/GraphHelpers.js +3 -2
  69. package/lib/HookWebpackError.js +11 -13
  70. package/lib/HotModuleReplacementPlugin.js +221 -128
  71. package/lib/IgnoreErrorModuleFactory.js +4 -4
  72. package/lib/IgnorePlugin.js +5 -4
  73. package/lib/IgnoreWarningsPlugin.js +6 -9
  74. package/lib/InitFragment.js +39 -15
  75. package/lib/JavascriptMetaInfoPlugin.js +27 -15
  76. package/lib/LibManifestPlugin.js +45 -16
  77. package/lib/LoaderOptionsPlugin.js +13 -3
  78. package/lib/MainTemplate.js +74 -21
  79. package/lib/Module.js +155 -34
  80. package/lib/ModuleBuildError.js +13 -11
  81. package/lib/ModuleDependencyError.js +6 -4
  82. package/lib/ModuleDependencyWarning.js +6 -4
  83. package/lib/ModuleError.js +10 -5
  84. package/lib/ModuleFactory.js +4 -4
  85. package/lib/ModuleFilenameHelpers.js +164 -54
  86. package/lib/ModuleGraph.js +93 -53
  87. package/lib/ModuleGraphConnection.js +27 -13
  88. package/lib/ModuleHashingError.js +29 -0
  89. package/lib/ModuleInfoHeaderPlugin.js +92 -33
  90. package/lib/ModuleNotFoundError.js +5 -2
  91. package/lib/ModuleParseError.js +17 -9
  92. package/lib/ModuleProfile.js +1 -0
  93. package/lib/ModuleRestoreError.js +3 -1
  94. package/lib/ModuleStoreError.js +3 -2
  95. package/lib/ModuleTemplate.js +33 -1
  96. package/lib/ModuleTypeConstants.js +168 -0
  97. package/lib/ModuleWarning.js +10 -5
  98. package/lib/MultiCompiler.js +115 -38
  99. package/lib/MultiStats.js +75 -33
  100. package/lib/MultiWatching.js +6 -2
  101. package/lib/NodeStuffPlugin.js +136 -37
  102. package/lib/NormalModule.js +437 -194
  103. package/lib/NormalModuleFactory.js +313 -116
  104. package/lib/NormalModuleReplacementPlugin.js +10 -4
  105. package/lib/NullFactory.js +1 -1
  106. package/lib/OptimizationStages.js +3 -3
  107. package/lib/Parser.js +1 -1
  108. package/lib/PlatformPlugin.js +39 -0
  109. package/lib/PrefetchPlugin.js +4 -0
  110. package/lib/ProgressPlugin.js +83 -28
  111. package/lib/ProvidePlugin.js +37 -19
  112. package/lib/RawModule.js +18 -5
  113. package/lib/RecordIdsPlugin.js +8 -8
  114. package/lib/RequireJsStuffPlugin.js +22 -15
  115. package/lib/ResolverFactory.js +8 -4
  116. package/lib/RuntimeGlobals.js +99 -65
  117. package/lib/RuntimeModule.js +17 -15
  118. package/lib/RuntimePlugin.js +116 -13
  119. package/lib/RuntimeTemplate.js +304 -102
  120. package/lib/SelfModuleFactory.js +12 -0
  121. package/lib/SizeFormatHelpers.js +2 -4
  122. package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
  123. package/lib/SourceMapDevToolPlugin.js +89 -42
  124. package/lib/Stats.js +12 -7
  125. package/lib/Template.js +30 -33
  126. package/lib/TemplatedPathPlugin.js +102 -34
  127. package/lib/UseStrictPlugin.js +37 -12
  128. package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
  129. package/lib/WarnDeprecatedOptionPlugin.js +6 -0
  130. package/lib/WatchIgnorePlugin.js +46 -13
  131. package/lib/Watching.js +139 -76
  132. package/lib/WebpackError.js +14 -5
  133. package/lib/WebpackIsIncludedPlugin.js +22 -13
  134. package/lib/WebpackOptionsApply.js +162 -56
  135. package/lib/WebpackOptionsDefaulter.js +10 -3
  136. package/lib/asset/AssetGenerator.js +351 -99
  137. package/lib/asset/AssetModulesPlugin.js +57 -33
  138. package/lib/asset/AssetParser.js +15 -6
  139. package/lib/asset/AssetSourceGenerator.js +30 -10
  140. package/lib/asset/AssetSourceParser.js +8 -2
  141. package/lib/asset/RawDataUrlModule.js +162 -0
  142. package/lib/async-modules/AwaitDependenciesInitFragment.js +16 -13
  143. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  144. package/lib/buildChunkGraph.js +376 -420
  145. package/lib/cache/AddManagedPathsPlugin.js +6 -1
  146. package/lib/cache/IdleFileCachePlugin.js +26 -13
  147. package/lib/cache/MemoryCachePlugin.js +1 -1
  148. package/lib/cache/MemoryWithGcCachePlugin.js +13 -7
  149. package/lib/cache/PackFileCacheStrategy.js +172 -94
  150. package/lib/cache/ResolverCachePlugin.js +115 -43
  151. package/lib/cache/getLazyHashedEtag.js +2 -2
  152. package/lib/cache/mergeEtags.js +16 -21
  153. package/lib/cli.js +195 -110
  154. package/lib/config/browserslistTargetHandler.js +106 -41
  155. package/lib/config/defaults.js +572 -154
  156. package/lib/config/normalization.js +361 -322
  157. package/lib/config/target.js +105 -66
  158. package/lib/container/ContainerEntryDependency.js +2 -1
  159. package/lib/container/ContainerEntryModule.js +27 -11
  160. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  161. package/lib/container/ContainerExposedDependency.js +9 -0
  162. package/lib/container/ContainerPlugin.js +18 -12
  163. package/lib/container/ContainerReferencePlugin.js +1 -1
  164. package/lib/container/FallbackDependency.js +13 -0
  165. package/lib/container/FallbackItemDependency.js +3 -0
  166. package/lib/container/FallbackModule.js +19 -8
  167. package/lib/container/FallbackModuleFactory.js +1 -1
  168. package/lib/container/ModuleFederationPlugin.js +2 -0
  169. package/lib/container/RemoteModule.js +17 -4
  170. package/lib/container/RemoteRuntimeModule.js +31 -17
  171. package/lib/container/RemoteToExternalDependency.js +3 -0
  172. package/lib/container/options.js +18 -4
  173. package/lib/css/CssExportsGenerator.js +203 -0
  174. package/lib/css/CssGenerator.js +151 -0
  175. package/lib/css/CssLoadingRuntimeModule.js +592 -0
  176. package/lib/css/CssModulesPlugin.js +888 -0
  177. package/lib/css/CssParser.js +1049 -0
  178. package/lib/css/walkCssTokens.js +775 -0
  179. package/lib/debug/ProfilingPlugin.js +102 -54
  180. package/lib/dependencies/AMDDefineDependency.js +54 -10
  181. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +204 -61
  182. package/lib/dependencies/AMDPlugin.js +44 -24
  183. package/lib/dependencies/AMDRequireArrayDependency.js +34 -10
  184. package/lib/dependencies/AMDRequireContextDependency.js +15 -0
  185. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  186. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +185 -54
  187. package/lib/dependencies/AMDRequireDependency.js +21 -6
  188. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  189. package/lib/dependencies/AMDRuntimeModules.js +4 -4
  190. package/lib/dependencies/CachedConstDependency.js +22 -1
  191. package/lib/dependencies/CommonJsDependencyHelpers.js +16 -2
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +77 -47
  193. package/lib/dependencies/CommonJsExportsDependency.js +28 -5
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +111 -39
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +42 -8
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +530 -130
  197. package/lib/dependencies/CommonJsPlugin.js +51 -26
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +23 -2
  199. package/lib/dependencies/CommonJsRequireDependency.js +9 -1
  200. package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -8
  201. package/lib/dependencies/ConstDependency.js +12 -3
  202. package/lib/dependencies/ContextDependency.js +32 -5
  203. package/lib/dependencies/ContextDependencyHelpers.js +92 -62
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -1
  205. package/lib/dependencies/ContextElementDependency.js +41 -4
  206. package/lib/dependencies/CreateScriptUrlDependency.js +22 -1
  207. package/lib/dependencies/CriticalDependencyWarning.js +4 -1
  208. package/lib/dependencies/CssExportDependency.js +156 -0
  209. package/lib/dependencies/CssImportDependency.js +125 -0
  210. package/lib/dependencies/CssLocalIdentifierDependency.js +245 -0
  211. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +111 -0
  212. package/lib/dependencies/CssUrlDependency.js +164 -0
  213. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  214. package/lib/dependencies/DllEntryDependency.js +14 -0
  215. package/lib/dependencies/DynamicExports.js +15 -11
  216. package/lib/dependencies/ExportsInfoDependency.js +26 -5
  217. package/lib/dependencies/ExternalModuleDependency.js +109 -0
  218. package/lib/dependencies/ExternalModuleInitFragment.js +133 -0
  219. package/lib/dependencies/HarmonyAcceptDependency.js +11 -2
  220. package/lib/dependencies/HarmonyAcceptImportDependency.js +9 -4
  221. package/lib/dependencies/HarmonyCompatibilityDependency.js +6 -5
  222. package/lib/dependencies/HarmonyDetectionParserPlugin.js +29 -3
  223. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +152 -0
  224. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +96 -51
  225. package/lib/dependencies/HarmonyExportExpressionDependency.js +21 -4
  226. package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
  227. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +216 -108
  228. package/lib/dependencies/HarmonyExportInitFragment.js +21 -9
  229. package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
  230. package/lib/dependencies/HarmonyExports.js +13 -7
  231. package/lib/dependencies/HarmonyImportDependency.js +65 -19
  232. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +268 -74
  233. package/lib/dependencies/HarmonyImportSideEffectDependency.js +11 -5
  234. package/lib/dependencies/HarmonyImportSpecifierDependency.js +180 -36
  235. package/lib/dependencies/HarmonyModulesPlugin.js +33 -5
  236. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
  237. package/lib/dependencies/ImportContextDependency.js +15 -2
  238. package/lib/dependencies/ImportDependency.js +50 -12
  239. package/lib/dependencies/ImportEagerDependency.js +11 -6
  240. package/lib/dependencies/ImportMetaContextDependency.js +42 -0
  241. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +301 -0
  242. package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
  243. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  244. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  245. package/lib/dependencies/ImportMetaPlugin.js +128 -59
  246. package/lib/dependencies/ImportParserPlugin.js +153 -83
  247. package/lib/dependencies/ImportPlugin.js +21 -7
  248. package/lib/dependencies/ImportWeakDependency.js +11 -6
  249. package/lib/dependencies/JsonExportsDependency.js +38 -30
  250. package/lib/dependencies/LoaderDependency.js +14 -0
  251. package/lib/dependencies/LoaderImportDependency.js +14 -0
  252. package/lib/dependencies/LoaderPlugin.js +54 -40
  253. package/lib/dependencies/LocalModule.js +17 -1
  254. package/lib/dependencies/LocalModuleDependency.js +15 -0
  255. package/lib/dependencies/LocalModulesHelpers.js +22 -4
  256. package/lib/dependencies/ModuleDecoratorDependency.js +9 -1
  257. package/lib/dependencies/ModuleDependency.js +24 -7
  258. package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
  259. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  260. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  261. package/lib/dependencies/PrefetchDependency.js +3 -0
  262. package/lib/dependencies/ProvidedDependency.js +43 -8
  263. package/lib/dependencies/PureExpressionDependency.js +73 -39
  264. package/lib/dependencies/RequireContextDependency.js +6 -16
  265. package/lib/dependencies/RequireContextDependencyParserPlugin.js +14 -6
  266. package/lib/dependencies/RequireContextPlugin.js +20 -7
  267. package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
  268. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +29 -12
  269. package/lib/dependencies/RequireEnsureDependency.js +16 -2
  270. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  271. package/lib/dependencies/RequireEnsurePlugin.js +27 -7
  272. package/lib/dependencies/RequireHeaderDependency.js +14 -1
  273. package/lib/dependencies/RequireIncludeDependency.js +6 -1
  274. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
  275. package/lib/dependencies/RequireIncludePlugin.js +25 -5
  276. package/lib/dependencies/RequireResolveContextDependency.js +19 -2
  277. package/lib/dependencies/RequireResolveDependency.js +8 -1
  278. package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
  279. package/lib/dependencies/RuntimeRequirementsDependency.js +9 -1
  280. package/lib/dependencies/StaticExportsDependency.js +8 -0
  281. package/lib/dependencies/SystemPlugin.js +49 -22
  282. package/lib/dependencies/SystemRuntimeModule.js +1 -1
  283. package/lib/dependencies/URLDependency.js +20 -13
  284. package/lib/dependencies/URLPlugin.js +115 -27
  285. package/lib/dependencies/UnsupportedDependency.js +13 -0
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
  287. package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -1
  289. package/lib/dependencies/WorkerDependency.js +47 -3
  290. package/lib/dependencies/WorkerPlugin.js +143 -59
  291. package/lib/dependencies/getFunctionExpression.js +9 -0
  292. package/lib/dependencies/processExportInfo.js +3 -1
  293. package/lib/electron/ElectronTargetPlugin.js +1 -0
  294. package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
  295. package/lib/esm/ModuleChunkFormatPlugin.js +92 -55
  296. package/lib/esm/ModuleChunkLoadingPlugin.js +12 -1
  297. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +141 -25
  298. package/lib/formatLocation.js +1 -2
  299. package/lib/hmr/HotModuleReplacement.runtime.js +37 -25
  300. package/lib/hmr/HotModuleReplacementRuntimeModule.js +2 -1
  301. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +13 -15
  302. package/lib/hmr/LazyCompilationPlugin.js +94 -41
  303. package/lib/hmr/lazyCompilationBackend.js +107 -44
  304. package/lib/ids/ChunkModuleIdRangePlugin.js +12 -3
  305. package/lib/ids/DeterministicChunkIdsPlugin.js +13 -6
  306. package/lib/ids/DeterministicModuleIdsPlugin.js +59 -35
  307. package/lib/ids/HashedModuleIdsPlugin.js +24 -16
  308. package/lib/ids/IdHelpers.js +59 -49
  309. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  310. package/lib/ids/NamedModuleIdsPlugin.js +20 -12
  311. package/lib/ids/NaturalModuleIdsPlugin.js +10 -13
  312. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  313. package/lib/ids/OccurrenceModuleIdsPlugin.js +14 -11
  314. package/lib/ids/SyncModuleIdsPlugin.js +146 -0
  315. package/lib/index.js +44 -5
  316. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +9 -7
  317. package/lib/javascript/BasicEvaluatedExpression.js +133 -19
  318. package/lib/javascript/ChunkHelpers.js +33 -0
  319. package/lib/javascript/CommonJsChunkFormatPlugin.js +18 -15
  320. package/lib/javascript/EnableChunkLoadingPlugin.js +11 -6
  321. package/lib/javascript/JavascriptGenerator.js +37 -6
  322. package/lib/javascript/JavascriptModulesPlugin.js +523 -295
  323. package/lib/javascript/JavascriptParser.js +1591 -574
  324. package/lib/javascript/JavascriptParserHelpers.js +58 -37
  325. package/lib/javascript/StartupHelpers.js +69 -47
  326. package/lib/json/JsonData.js +33 -0
  327. package/lib/json/JsonGenerator.js +29 -21
  328. package/lib/json/JsonModulesPlugin.js +13 -7
  329. package/lib/json/JsonParser.js +30 -16
  330. package/lib/library/AbstractLibraryPlugin.js +6 -2
  331. package/lib/library/AmdLibraryPlugin.js +34 -18
  332. package/lib/library/AssignLibraryPlugin.js +68 -32
  333. package/lib/library/EnableLibraryPlugin.js +39 -14
  334. package/lib/library/ExportPropertyLibraryPlugin.js +14 -5
  335. package/lib/library/JsonpLibraryPlugin.js +4 -3
  336. package/lib/library/ModernModuleLibraryPlugin.js +144 -0
  337. package/lib/library/ModuleLibraryPlugin.js +12 -7
  338. package/lib/library/SystemLibraryPlugin.js +6 -4
  339. package/lib/library/UmdLibraryPlugin.js +119 -100
  340. package/lib/logging/Logger.js +59 -6
  341. package/lib/logging/createConsoleLogger.js +25 -40
  342. package/lib/logging/runtime.js +8 -9
  343. package/lib/logging/truncateArgs.js +9 -8
  344. package/lib/node/CommonJsChunkLoadingPlugin.js +18 -2
  345. package/lib/node/NodeEnvironmentPlugin.js +14 -8
  346. package/lib/node/NodeTargetPlugin.js +7 -0
  347. package/lib/node/NodeTemplatePlugin.js +10 -2
  348. package/lib/node/NodeWatchFileSystem.js +100 -50
  349. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +51 -26
  350. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -2
  351. package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
  352. package/lib/node/RequireChunkLoadingRuntimeModule.js +49 -26
  353. package/lib/node/nodeConsole.js +48 -31
  354. package/lib/optimize/AggressiveMergingPlugin.js +10 -4
  355. package/lib/optimize/AggressiveSplittingPlugin.js +26 -21
  356. package/lib/optimize/ConcatenatedModule.js +353 -212
  357. package/lib/optimize/EnsureChunkConditionsPlugin.js +4 -1
  358. package/lib/optimize/FlagIncludedChunksPlugin.js +14 -8
  359. package/lib/optimize/InnerGraph.js +30 -25
  360. package/lib/optimize/InnerGraphPlugin.js +105 -64
  361. package/lib/optimize/LimitChunkCountPlugin.js +32 -9
  362. package/lib/optimize/MangleExportsPlugin.js +7 -2
  363. package/lib/optimize/MinMaxSizeWarning.js +6 -1
  364. package/lib/optimize/ModuleConcatenationPlugin.js +150 -83
  365. package/lib/optimize/RealContentHashPlugin.js +99 -43
  366. package/lib/optimize/RemoveParentModulesPlugin.js +131 -48
  367. package/lib/optimize/RuntimeChunkPlugin.js +15 -2
  368. package/lib/optimize/SideEffectsFlagPlugin.js +119 -63
  369. package/lib/optimize/SplitChunksPlugin.js +129 -78
  370. package/lib/performance/SizeLimitsPlugin.js +22 -8
  371. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
  372. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +4 -1
  373. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +8 -5
  374. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -3
  375. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +5 -3
  376. package/lib/rules/BasicEffectRulePlugin.js +7 -1
  377. package/lib/rules/BasicMatcherRulePlugin.js +8 -1
  378. package/lib/rules/ObjectMatcherRulePlugin.js +19 -2
  379. package/lib/rules/RuleSetCompiler.js +53 -32
  380. package/lib/rules/UseEffectRulePlugin.js +42 -36
  381. package/lib/runtime/AsyncModuleRuntimeModule.js +56 -69
  382. package/lib/runtime/AutoPublicPathRuntimeModule.js +25 -9
  383. package/lib/runtime/BaseUriRuntimeModule.js +35 -0
  384. package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
  385. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
  386. package/lib/runtime/CompatRuntimeModule.js +7 -2
  387. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  388. package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
  389. package/lib/runtime/CreateScriptUrlRuntimeModule.js +13 -36
  390. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -3
  391. package/lib/runtime/EnsureChunkRuntimeModule.js +29 -15
  392. package/lib/runtime/GetChunkFilenameRuntimeModule.js +56 -43
  393. package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
  394. package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
  395. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +98 -0
  396. package/lib/runtime/GlobalRuntimeModule.js +1 -1
  397. package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
  398. package/lib/runtime/LoadScriptRuntimeModule.js +61 -45
  399. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
  400. package/lib/runtime/NonceRuntimeModule.js +24 -0
  401. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
  402. package/lib/runtime/PublicPathRuntimeModule.js +9 -2
  403. package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
  404. package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
  405. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  406. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +36 -28
  407. package/lib/runtime/StartupEntrypointRuntimeModule.js +13 -9
  408. package/lib/runtime/SystemContextRuntimeModule.js +1 -1
  409. package/lib/schemes/DataUriPlugin.js +16 -3
  410. package/lib/schemes/HttpUriPlugin.js +336 -120
  411. package/lib/serialization/ArraySerializer.js +22 -6
  412. package/lib/serialization/BinaryMiddleware.js +212 -33
  413. package/lib/serialization/DateObjectSerializer.js +16 -4
  414. package/lib/serialization/ErrorObjectSerializer.js +23 -6
  415. package/lib/serialization/FileMiddleware.js +187 -86
  416. package/lib/serialization/MapObjectSerializer.js +25 -8
  417. package/lib/serialization/NullPrototypeObjectSerializer.js +26 -8
  418. package/lib/serialization/ObjectMiddleware.js +96 -66
  419. package/lib/serialization/PlainObjectSerializer.js +51 -14
  420. package/lib/serialization/RegExpObjectSerializer.js +17 -5
  421. package/lib/serialization/Serializer.js +23 -5
  422. package/lib/serialization/SerializerMiddleware.js +8 -8
  423. package/lib/serialization/SetObjectSerializer.js +22 -6
  424. package/lib/serialization/SingleItemMiddleware.js +2 -2
  425. package/lib/serialization/types.js +2 -2
  426. package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
  427. package/lib/sharing/ConsumeSharedModule.js +40 -17
  428. package/lib/sharing/ConsumeSharedPlugin.js +139 -102
  429. package/lib/sharing/ConsumeSharedRuntimeModule.js +144 -130
  430. package/lib/sharing/ProvideForSharedDependency.js +0 -1
  431. package/lib/sharing/ProvideSharedDependency.js +17 -0
  432. package/lib/sharing/ProvideSharedModule.js +19 -6
  433. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  434. package/lib/sharing/ProvideSharedPlugin.js +37 -30
  435. package/lib/sharing/SharePlugin.js +2 -2
  436. package/lib/sharing/ShareRuntimeModule.js +20 -10
  437. package/lib/sharing/resolveMatchedConfigs.js +6 -5
  438. package/lib/sharing/utils.js +338 -34
  439. package/lib/stats/DefaultStatsFactoryPlugin.js +660 -396
  440. package/lib/stats/DefaultStatsPresetPlugin.js +85 -25
  441. package/lib/stats/DefaultStatsPrinterPlugin.js +525 -145
  442. package/lib/stats/StatsFactory.js +128 -57
  443. package/lib/stats/StatsPrinter.js +77 -46
  444. package/lib/util/ArrayHelpers.js +35 -1
  445. package/lib/util/ArrayQueue.js +15 -22
  446. package/lib/util/AsyncQueue.js +37 -16
  447. package/lib/util/IterableHelpers.js +3 -4
  448. package/lib/util/LazyBucketSortedSet.js +60 -44
  449. package/lib/util/LazySet.js +11 -2
  450. package/lib/util/MapHelpers.js +17 -5
  451. package/lib/util/ParallelismFactorCalculator.js +11 -1
  452. package/lib/util/Queue.js +9 -3
  453. package/lib/util/Semaphore.js +4 -7
  454. package/lib/util/SetHelpers.js +5 -5
  455. package/lib/util/SortableSet.js +19 -6
  456. package/lib/util/StackedCacheMap.js +33 -3
  457. package/lib/util/StackedMap.js +1 -3
  458. package/lib/util/StringXor.js +46 -0
  459. package/lib/util/TupleQueue.js +9 -3
  460. package/lib/util/TupleSet.js +15 -5
  461. package/lib/util/URLAbsoluteSpecifier.js +8 -8
  462. package/lib/util/WeakTupleMap.js +70 -28
  463. package/lib/util/binarySearchBounds.js +51 -9
  464. package/lib/util/chainedImports.js +97 -0
  465. package/lib/util/cleverMerge.js +51 -36
  466. package/lib/util/comparators.js +146 -83
  467. package/lib/util/compileBooleanMatcher.js +35 -7
  468. package/lib/util/conventions.js +126 -0
  469. package/lib/util/create-schema-validation.js +9 -2
  470. package/lib/util/createHash.js +49 -14
  471. package/lib/util/deprecation.js +48 -15
  472. package/lib/util/deterministicGrouping.js +71 -39
  473. package/lib/util/extractUrlAndGlobal.js +3 -0
  474. package/lib/util/findGraphRoots.js +7 -5
  475. package/lib/util/fs.js +419 -94
  476. package/lib/util/hash/BatchedHash.js +10 -4
  477. package/lib/util/hash/md4.js +20 -0
  478. package/lib/util/hash/wasm-hash.js +163 -0
  479. package/lib/util/hash/xxhash64.js +7 -141
  480. package/lib/util/identifier.js +140 -93
  481. package/lib/util/internalSerializables.js +22 -0
  482. package/lib/util/makeSerializable.js +7 -0
  483. package/lib/util/memoize.js +10 -10
  484. package/lib/util/mergeScope.js +76 -0
  485. package/lib/util/nonNumericOnlyHash.js +22 -0
  486. package/lib/util/numberHash.js +84 -34
  487. package/lib/util/objectToMap.js +0 -1
  488. package/lib/util/processAsyncTree.js +7 -1
  489. package/lib/util/propertyAccess.js +7 -55
  490. package/lib/util/propertyName.js +77 -0
  491. package/lib/util/registerExternalSerializer.js +2 -2
  492. package/lib/util/runtime.js +188 -133
  493. package/lib/util/semver.js +64 -56
  494. package/lib/util/serialization.js +26 -1
  495. package/lib/util/smartGrouping.js +10 -10
  496. package/lib/util/source.js +1 -1
  497. package/lib/validateSchema.js +6 -2
  498. package/lib/wasm/EnableWasmLoadingPlugin.js +9 -4
  499. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +70 -30
  500. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  501. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +34 -16
  502. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +32 -12
  503. package/lib/wasm-async/AsyncWebAssemblyParser.js +17 -4
  504. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +72 -31
  505. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
  506. package/lib/wasm-sync/WebAssemblyGenerator.js +72 -52
  507. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -4
  508. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
  509. package/lib/wasm-sync/WebAssemblyParser.js +23 -9
  510. package/lib/wasm-sync/WebAssemblyUtils.js +5 -4
  511. package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
  512. package/lib/web/FetchCompileWasmPlugin.js +59 -42
  513. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  514. package/lib/web/JsonpChunkLoadingRuntimeModule.js +71 -41
  515. package/lib/webpack.js +43 -12
  516. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +15 -12
  517. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +55 -40
  518. package/module.d.ts +233 -0
  519. package/package.json +85 -139
  520. package/schemas/WebpackOptions.check.js +1 -1
  521. package/schemas/WebpackOptions.json +679 -47
  522. package/schemas/plugins/BannerPlugin.check.js +1 -1
  523. package/schemas/plugins/BannerPlugin.json +9 -1
  524. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  525. package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
  526. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  529. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  530. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  531. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  532. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  534. package/schemas/plugins/container/ContainerPlugin.json +10 -1
  535. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  536. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  537. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  538. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  539. package/schemas/plugins/container/ModuleFederationPlugin.json +12 -1
  540. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +7 -0
  541. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +6 -0
  542. package/schemas/plugins/css/CssAutoGeneratorOptions.json +3 -0
  543. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +7 -0
  544. package/schemas/plugins/css/CssAutoParserOptions.check.js +6 -0
  545. package/schemas/plugins/css/CssAutoParserOptions.json +3 -0
  546. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
  547. package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
  548. package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
  549. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +7 -0
  550. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +6 -0
  551. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +3 -0
  552. package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +7 -0
  553. package/schemas/plugins/css/CssGlobalParserOptions.check.js +6 -0
  554. package/schemas/plugins/css/CssGlobalParserOptions.json +3 -0
  555. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
  556. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
  557. package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
  558. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
  559. package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
  560. package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
  561. package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
  562. package/schemas/plugins/css/CssParserOptions.check.js +6 -0
  563. package/schemas/plugins/css/CssParserOptions.json +3 -0
  564. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  565. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  566. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  567. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  568. package/schemas/plugins/schemes/HttpUriPlugin.json +4 -0
  569. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  570. package/types.d.ts +5026 -1756
@@ -35,14 +35,15 @@ const getConnectionsByOriginModule = set => {
35
35
  const map = new Map();
36
36
  /** @type {Module | 0} */
37
37
  let lastModule = 0;
38
- /** @type {ModuleGraphConnection[]} */
39
- let lastList = undefined;
38
+ /** @type {ModuleGraphConnection[] | undefined} */
39
+ let lastList;
40
40
  for (const connection of set) {
41
41
  const { originModule } = connection;
42
42
  if (lastModule === originModule) {
43
- lastList.push(connection);
43
+ /** @type {ModuleGraphConnection[]} */
44
+ (lastList).push(connection);
44
45
  } else {
45
- lastModule = originModule;
46
+ lastModule = /** @type {Module} */ (originModule);
46
47
  const list = map.get(originModule);
47
48
  if (list !== undefined) {
48
49
  lastList = list;
@@ -65,12 +66,13 @@ const getConnectionsByModule = set => {
65
66
  const map = new Map();
66
67
  /** @type {Module | 0} */
67
68
  let lastModule = 0;
68
- /** @type {ModuleGraphConnection[]} */
69
- let lastList = undefined;
69
+ /** @type {ModuleGraphConnection[] | undefined} */
70
+ let lastList;
70
71
  for (const connection of set) {
71
72
  const { module } = connection;
72
73
  if (lastModule === module) {
73
- lastList.push(connection);
74
+ /** @type {ModuleGraphConnection[]} */
75
+ (lastList).push(connection);
74
76
  } else {
75
77
  lastModule = module;
76
78
  const list = map.get(module);
@@ -87,47 +89,69 @@ const getConnectionsByModule = set => {
87
89
  return map;
88
90
  };
89
91
 
92
+ /** @typedef {SortableSet<ModuleGraphConnection>} IncomingConnections */
93
+ /** @typedef {SortableSet<ModuleGraphConnection>} OutgoingConnections */
94
+
90
95
  class ModuleGraphModule {
91
96
  constructor() {
92
- /** @type {SortableSet<ModuleGraphConnection>} */
97
+ /** @type {IncomingConnections} */
93
98
  this.incomingConnections = new SortableSet();
94
- /** @type {SortableSet<ModuleGraphConnection> | undefined} */
99
+ /** @type {OutgoingConnections | undefined} */
95
100
  this.outgoingConnections = undefined;
96
- /** @type {Module | null} */
101
+ /** @type {Module | null | undefined} */
97
102
  this.issuer = undefined;
98
103
  /** @type {(string | OptimizationBailoutFunction)[]} */
99
104
  this.optimizationBailout = [];
100
105
  /** @type {ExportsInfo} */
101
106
  this.exports = new ExportsInfo();
102
- /** @type {number} */
107
+ /** @type {number | null} */
103
108
  this.preOrderIndex = null;
104
- /** @type {number} */
109
+ /** @type {number | null} */
105
110
  this.postOrderIndex = null;
106
- /** @type {number} */
111
+ /** @type {number | null} */
107
112
  this.depth = null;
108
- /** @type {ModuleProfile} */
113
+ /** @type {ModuleProfile | undefined} */
109
114
  this.profile = undefined;
110
115
  /** @type {boolean} */
111
116
  this.async = false;
112
- /** @type {ModuleGraphConnection[]} */
117
+ /** @type {ModuleGraphConnection[] | undefined} */
113
118
  this._unassignedConnections = undefined;
114
119
  }
115
120
  }
116
121
 
117
122
  class ModuleGraph {
118
123
  constructor() {
119
- /** @type {WeakMap<Dependency, ModuleGraphConnection>} */
124
+ /**
125
+ * @type {WeakMap<Dependency, ModuleGraphConnection | null>}
126
+ * @private
127
+ */
120
128
  this._dependencyMap = new WeakMap();
121
- /** @type {Map<Module, ModuleGraphModule>} */
129
+ /**
130
+ * @type {Map<Module, ModuleGraphModule>}
131
+ * @private
132
+ */
122
133
  this._moduleMap = new Map();
123
- /** @type {WeakMap<any, Object>} */
134
+ /**
135
+ * @type {WeakMap<any, object>}
136
+ * @private
137
+ */
124
138
  this._metaMap = new WeakMap();
125
-
126
- /** @type {WeakTupleMap<any[], any>} */
139
+ /**
140
+ * @type {WeakTupleMap<any[], any> | undefined}
141
+ * @private
142
+ */
127
143
  this._cache = undefined;
128
-
129
- /** @type {Map<Module, WeakTupleMap<any, any>>} */
144
+ /**
145
+ * @type {Map<Module, WeakTupleMap<any, any>> | undefined}
146
+ * @private
147
+ */
130
148
  this._moduleMemCaches = undefined;
149
+
150
+ /**
151
+ * @type {string | undefined}
152
+ * @private
153
+ */
154
+ this._cacheStage = undefined;
131
155
  }
132
156
 
133
157
  /**
@@ -158,7 +182,7 @@ class ModuleGraph {
158
182
 
159
183
  /**
160
184
  * @param {Dependency} dependency the dependency
161
- * @returns {Module} parent module
185
+ * @returns {Module | undefined} parent module
162
186
  */
163
187
  getParentModule(dependency) {
164
188
  return dependency._parentModule;
@@ -166,7 +190,7 @@ class ModuleGraph {
166
190
 
167
191
  /**
168
192
  * @param {Dependency} dependency the dependency
169
- * @returns {DependenciesBlock} parent block
193
+ * @returns {DependenciesBlock | undefined} parent block
170
194
  */
171
195
  getParentBlock(dependency) {
172
196
  return dependency._parentDependenciesBlock;
@@ -181,7 +205,7 @@ class ModuleGraph {
181
205
  }
182
206
 
183
207
  /**
184
- * @param {Module} originModule the referencing module
208
+ * @param {Module | null} originModule the referencing module
185
209
  * @param {Dependency} dependency the referencing dependency
186
210
  * @param {Module} module the referenced module
187
211
  * @returns {void}
@@ -218,14 +242,19 @@ class ModuleGraph {
218
242
  * @returns {void}
219
243
  */
220
244
  updateModule(dependency, module) {
221
- const connection = this.getConnection(dependency);
245
+ const connection =
246
+ /** @type {ModuleGraphConnection} */
247
+ (this.getConnection(dependency));
222
248
  if (connection.module === module) return;
223
249
  const newConnection = connection.clone();
224
250
  newConnection.module = module;
225
251
  this._dependencyMap.set(dependency, newConnection);
226
252
  connection.setActive(false);
227
- const originMgm = this._getModuleGraphModule(connection.originModule);
228
- originMgm.outgoingConnections.add(newConnection);
253
+ const originMgm = this._getModuleGraphModule(
254
+ /** @type {Module} */ (connection.originModule)
255
+ );
256
+ /** @type {OutgoingConnections} */
257
+ (originMgm.outgoingConnections).add(newConnection);
229
258
  const targetMgm = this._getModuleGraphModule(module);
230
259
  targetMgm.incomingConnections.add(newConnection);
231
260
  }
@@ -235,11 +264,16 @@ class ModuleGraph {
235
264
  * @returns {void}
236
265
  */
237
266
  removeConnection(dependency) {
238
- const connection = this.getConnection(dependency);
267
+ const connection =
268
+ /** @type {ModuleGraphConnection} */
269
+ (this.getConnection(dependency));
239
270
  const targetMgm = this._getModuleGraphModule(connection.module);
240
271
  targetMgm.incomingConnections.delete(connection);
241
- const originMgm = this._getModuleGraphModule(connection.originModule);
242
- originMgm.outgoingConnections.delete(connection);
272
+ const originMgm = this._getModuleGraphModule(
273
+ /** @type {Module} */ (connection.originModule)
274
+ );
275
+ /** @type {OutgoingConnections} */
276
+ (originMgm.outgoingConnections).delete(connection);
243
277
  this._dependencyMap.set(dependency, null);
244
278
  }
245
279
 
@@ -249,7 +283,9 @@ class ModuleGraph {
249
283
  * @returns {void}
250
284
  */
251
285
  addExplanation(dependency, explanation) {
252
- const connection = this.getConnection(dependency);
286
+ const connection =
287
+ /** @type {ModuleGraphConnection} */
288
+ (this.getConnection(dependency));
253
289
  connection.addExplanation(explanation);
254
290
  }
255
291
 
@@ -372,7 +408,7 @@ class ModuleGraph {
372
408
 
373
409
  /**
374
410
  * @param {Dependency} dependency the dependency to look for a referenced module
375
- * @returns {Module} the referenced module
411
+ * @returns {Module | null} the referenced module
376
412
  */
377
413
  getResolvedModule(dependency) {
378
414
  const connection = this.getConnection(dependency);
@@ -395,7 +431,10 @@ class ModuleGraph {
395
431
  ) {
396
432
  let foundConnection;
397
433
  for (const connection of mgm._unassignedConnections) {
398
- this._dependencyMap.set(connection.dependency, connection);
434
+ this._dependencyMap.set(
435
+ /** @type {Dependency} */ (connection.dependency),
436
+ connection
437
+ );
399
438
  if (connection.dependency === dependency)
400
439
  foundConnection = connection;
401
440
  }
@@ -406,14 +445,14 @@ class ModuleGraph {
406
445
  }
407
446
  }
408
447
  this._dependencyMap.set(dependency, null);
409
- return undefined;
448
+ return;
410
449
  }
411
450
  return connection === null ? undefined : connection;
412
451
  }
413
452
 
414
453
  /**
415
454
  * @param {Dependency} dependency the dependency to look for a referenced module
416
- * @returns {Module} the referenced module
455
+ * @returns {Module | null} the referenced module
417
456
  */
418
457
  getModule(dependency) {
419
458
  const connection = this.getConnection(dependency);
@@ -422,7 +461,7 @@ class ModuleGraph {
422
461
 
423
462
  /**
424
463
  * @param {Dependency} dependency the dependency to look for a referencing module
425
- * @returns {Module} the referencing module
464
+ * @returns {Module | null} the referencing module
426
465
  */
427
466
  getOrigin(dependency) {
428
467
  const connection = this.getConnection(dependency);
@@ -431,7 +470,7 @@ class ModuleGraph {
431
470
 
432
471
  /**
433
472
  * @param {Dependency} dependency the dependency to look for a referencing module
434
- * @returns {Module} the original referencing module
473
+ * @returns {Module | null} the original referencing module
435
474
  */
436
475
  getResolvedOrigin(dependency) {
437
476
  const connection = this.getConnection(dependency);
@@ -458,7 +497,7 @@ class ModuleGraph {
458
497
 
459
498
  /**
460
499
  * @param {Module} module the module
461
- * @returns {readonly Map<Module | undefined, readonly ModuleGraphConnection[]>} reasons why a module is included, in a map by source module
500
+ * @returns {readonly Map<Module | undefined | null, readonly ModuleGraphConnection[]>} reasons why a module is included, in a map by source module
462
501
  */
463
502
  getIncomingConnectionsByOriginModule(module) {
464
503
  const connections = this._getModuleGraphModule(module).incomingConnections;
@@ -478,7 +517,7 @@ class ModuleGraph {
478
517
 
479
518
  /**
480
519
  * @param {Module} module the module
481
- * @returns {ModuleProfile | null} the module profile
520
+ * @returns {ModuleProfile | undefined} the module profile
482
521
  */
483
522
  getProfile(module) {
484
523
  const mgm = this._getModuleGraphModule(module);
@@ -487,7 +526,7 @@ class ModuleGraph {
487
526
 
488
527
  /**
489
528
  * @param {Module} module the module
490
- * @param {ModuleProfile | null} profile the module profile
529
+ * @param {ModuleProfile | undefined} profile the module profile
491
530
  * @returns {void}
492
531
  */
493
532
  setProfile(module, profile) {
@@ -497,7 +536,7 @@ class ModuleGraph {
497
536
 
498
537
  /**
499
538
  * @param {Module} module the module
500
- * @returns {Module | null} the issuer module
539
+ * @returns {Module | null | undefined} the issuer module
501
540
  */
502
541
  getIssuer(module) {
503
542
  const mgm = this._getModuleGraphModule(module);
@@ -601,7 +640,7 @@ class ModuleGraph {
601
640
 
602
641
  /**
603
642
  * @param {Module} module the module
604
- * @returns {number} the index of the module
643
+ * @returns {number | null} the index of the module
605
644
  */
606
645
  getPreOrderIndex(module) {
607
646
  const mgm = this._getModuleGraphModule(module);
@@ -610,7 +649,7 @@ class ModuleGraph {
610
649
 
611
650
  /**
612
651
  * @param {Module} module the module
613
- * @returns {number} the index of the module
652
+ * @returns {number | null} the index of the module
614
653
  */
615
654
  getPostOrderIndex(module) {
616
655
  const mgm = this._getModuleGraphModule(module);
@@ -667,7 +706,7 @@ class ModuleGraph {
667
706
 
668
707
  /**
669
708
  * @param {Module} module the module
670
- * @returns {number} the depth of the module
709
+ * @returns {number | null} the depth of the module
671
710
  */
672
711
  getDepth(module) {
673
712
  const mgm = this._getModuleGraphModule(module);
@@ -718,20 +757,20 @@ class ModuleGraph {
718
757
 
719
758
  /**
720
759
  * @param {any} thing any thing
721
- * @returns {Object} metadata
760
+ * @returns {object} metadata
722
761
  */
723
762
  getMeta(thing) {
724
763
  let meta = this._metaMap.get(thing);
725
764
  if (meta === undefined) {
726
765
  meta = Object.create(null);
727
- this._metaMap.set(thing, meta);
766
+ this._metaMap.set(thing, /** @type {object} */ (meta));
728
767
  }
729
- return meta;
768
+ return /** @type {object} */ (meta);
730
769
  }
731
770
 
732
771
  /**
733
772
  * @param {any} thing any thing
734
- * @returns {Object} metadata
773
+ * @returns {object | undefined} metadata
735
774
  */
736
775
  getMetaIfExisting(thing) {
737
776
  return this._metaMap.get(thing);
@@ -779,7 +818,7 @@ class ModuleGraph {
779
818
  const fn = args.pop();
780
819
  if (this._moduleMemCaches && this._cacheStage) {
781
820
  const memCache = this._moduleMemCaches.get(
782
- this.getParentModule(dependency)
821
+ /** @type {Module} */ (this.getParentModule(dependency))
783
822
  );
784
823
  if (memCache !== undefined) {
785
824
  return memCache.provide(dependency, this._cacheStage, ...args, () =>
@@ -812,12 +851,13 @@ class ModuleGraph {
812
851
  const moduleGraph = moduleGraphForModuleMap.get(module);
813
852
  if (!moduleGraph)
814
853
  throw new Error(
815
- deprecateMessage +
816
- "There was no ModuleGraph assigned to the Module for backward-compat (Use the new API)"
854
+ `${
855
+ deprecateMessage
856
+ }There was no ModuleGraph assigned to the Module for backward-compat (Use the new API)`
817
857
  );
818
858
  return moduleGraph;
819
859
  },
820
- deprecateMessage + ": Use new ModuleGraph API",
860
+ `${deprecateMessage}: Use new ModuleGraph API`,
821
861
  deprecationCode
822
862
  );
823
863
  deprecateMap.set(deprecateMessage, newFn);
@@ -6,6 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  /** @typedef {import("./Dependency")} Dependency */
9
+ /** @typedef {import("./Dependency").GetConditionFn} GetConditionFn */
9
10
  /** @typedef {import("./Module")} Module */
10
11
  /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
11
12
 
@@ -56,7 +57,7 @@ class ModuleGraphConnection {
56
57
  * @param {Module} module the referenced module
57
58
  * @param {string=} explanation some extra detail
58
59
  * @param {boolean=} weak the reference is weak
59
- * @param {false | function(ModuleGraphConnection, RuntimeSpec): ConnectionState=} condition condition for the connection
60
+ * @param {false | null | GetConditionFn | undefined} condition condition for the connection
60
61
  */
61
62
  constructor(
62
63
  originModule,
@@ -72,11 +73,11 @@ class ModuleGraphConnection {
72
73
  this.resolvedModule = module;
73
74
  this.module = module;
74
75
  this.weak = weak;
75
- this.conditional = !!condition;
76
+ this.conditional = Boolean(condition);
76
77
  this._active = condition !== false;
77
- /** @type {function(ModuleGraphConnection, RuntimeSpec): ConnectionState} */
78
+ /** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState) | undefined} */
78
79
  this.condition = condition || undefined;
79
- /** @type {Set<string>} */
80
+ /** @type {Set<string> | undefined} */
80
81
  this.explanations = undefined;
81
82
  if (explanation) {
82
83
  this.explanations = new Set();
@@ -107,7 +108,9 @@ class ModuleGraphConnection {
107
108
  */
108
109
  addCondition(condition) {
109
110
  if (this.conditional) {
110
- const old = this.condition;
111
+ const old =
112
+ /** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState)} */
113
+ (this.condition);
111
114
  this.condition = (c, r) =>
112
115
  intersectConnectionStates(old(c, r), condition(c, r));
113
116
  } else if (this._active) {
@@ -132,18 +135,18 @@ class ModuleGraphConnection {
132
135
  return Array.from(this.explanations).join(" ");
133
136
  }
134
137
 
135
- // TODO webpack 5 remove
136
- get active() {
137
- throw new Error("Use getActiveState instead");
138
- }
139
-
140
138
  /**
141
139
  * @param {RuntimeSpec} runtime the runtime
142
140
  * @returns {boolean} true, if the connection is active
143
141
  */
144
142
  isActive(runtime) {
145
143
  if (!this.conditional) return this._active;
146
- return this.condition(this, runtime) !== false;
144
+
145
+ return (
146
+ /** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState)} */ (
147
+ this.condition
148
+ )(this, runtime) !== false
149
+ );
147
150
  }
148
151
 
149
152
  /**
@@ -152,7 +155,11 @@ class ModuleGraphConnection {
152
155
  */
153
156
  isTargetActive(runtime) {
154
157
  if (!this.conditional) return this._active;
155
- return this.condition(this, runtime) === true;
158
+ return (
159
+ /** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState)} */ (
160
+ this.condition
161
+ )(this, runtime) === true
162
+ );
156
163
  }
157
164
 
158
165
  /**
@@ -161,7 +168,9 @@ class ModuleGraphConnection {
161
168
  */
162
169
  getActiveState(runtime) {
163
170
  if (!this.conditional) return this._active;
164
- return this.condition(this, runtime);
171
+ return /** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState)} */ (
172
+ this.condition
173
+ )(this, runtime);
165
174
  }
166
175
 
167
176
  /**
@@ -173,6 +182,11 @@ class ModuleGraphConnection {
173
182
  this._active = value;
174
183
  }
175
184
 
185
+ // TODO webpack 5 remove
186
+ get active() {
187
+ throw new Error("Use getActiveState instead");
188
+ }
189
+
176
190
  set active(value) {
177
191
  throw new Error("Use setActive instead");
178
192
  }
@@ -0,0 +1,29 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const WebpackError = require("./WebpackError");
9
+
10
+ /** @typedef {import("./Module")} Module */
11
+
12
+ class ModuleHashingError extends WebpackError {
13
+ /**
14
+ * Create a new ModuleHashingError
15
+ * @param {Module} module related module
16
+ * @param {Error} error Original error
17
+ */
18
+ constructor(module, error) {
19
+ super();
20
+
21
+ this.name = "ModuleHashingError";
22
+ this.error = error;
23
+ this.message = error.message;
24
+ this.details = error.stack;
25
+ this.module = module;
26
+ }
27
+ }
28
+
29
+ module.exports = ModuleHashingError;