@depup/webpack 5.109.2-depup.0 → 5.110.3-depup.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 (647) hide show
  1. package/README.md +5 -5
  2. package/changes.json +7 -7
  3. package/lib/APIPlugin.js +123 -17
  4. package/lib/AsyncDependenciesBlock.js +10 -7
  5. package/lib/AutomaticPrefetchPlugin.js +1 -1
  6. package/lib/BannerPlugin.js +10 -6
  7. package/lib/CacheFacade.js +6 -6
  8. package/lib/Chunk.js +14 -11
  9. package/lib/ChunkGraph.js +46 -35
  10. package/lib/ChunkGroup.js +7 -7
  11. package/lib/ChunkTemplate.js +35 -44
  12. package/lib/CircularModulesPlugin.js +205 -28
  13. package/lib/CleanPlugin.js +4 -7
  14. package/lib/CodeGenerationResults.js +11 -8
  15. package/lib/CompatibilityPlugin.js +7 -7
  16. package/lib/Compilation.js +688 -409
  17. package/lib/Compiler.js +53 -38
  18. package/lib/ConcatenationScope.js +107 -8
  19. package/lib/ConditionalInitFragment.js +3 -3
  20. package/lib/ConstPlugin.js +13 -11
  21. package/lib/ContextExclusionPlugin.js +1 -1
  22. package/lib/ContextModule.js +146 -54
  23. package/lib/ContextModuleFactory.js +46 -14
  24. package/lib/ContextReplacementPlugin.js +12 -14
  25. package/lib/DefinePlugin.js +121 -37
  26. package/lib/DependenciesBlock.js +9 -6
  27. package/lib/Dependency.js +36 -16
  28. package/lib/DependencyTemplate.js +11 -12
  29. package/lib/DependencyTemplates.js +3 -3
  30. package/lib/DotenvPlugin.js +91 -26
  31. package/lib/DynamicEntryPlugin.js +8 -4
  32. package/lib/EntryOptionPlugin.js +8 -4
  33. package/lib/EntryPlugin.js +2 -2
  34. package/lib/Entrypoint.js +6 -2
  35. package/lib/EnvironmentPlugin.js +2 -2
  36. package/lib/EvalDevToolModulePlugin.js +8 -4
  37. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  38. package/lib/ExportsInfo.js +111 -14
  39. package/lib/ExportsInfoApiPlugin.js +2 -4
  40. package/lib/ExternalModule.js +232 -77
  41. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  42. package/lib/ExternalsPlugin.js +10 -6
  43. package/lib/FileSystemInfo.js +44 -70
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  45. package/lib/FlagDependencyExportsPlugin.js +76 -19
  46. package/lib/FlagDependencyUsagePlugin.js +40 -49
  47. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  48. package/lib/Generator.js +36 -15
  49. package/lib/HotModuleReplacementPlugin.js +16 -44
  50. package/lib/IgnorePlugin.js +8 -4
  51. package/lib/IgnoreWarningsPlugin.js +2 -2
  52. package/lib/InitFragment.js +8 -4
  53. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  54. package/lib/LazyBarrel.js +3 -4
  55. package/lib/LibraryTemplatePlugin.js +10 -6
  56. package/lib/LoaderOptionsPlugin.js +7 -3
  57. package/lib/LoaderTargetPlugin.js +1 -1
  58. package/lib/MainTemplate.js +49 -42
  59. package/lib/ManifestPlugin.js +12 -11
  60. package/lib/Module.js +62 -33
  61. package/lib/ModuleFactory.js +3 -3
  62. package/lib/ModuleFilenameHelpers.js +9 -4
  63. package/lib/ModuleGraph.js +195 -21
  64. package/lib/ModuleGraphConnection.js +6 -13
  65. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  66. package/lib/ModuleTemplate.js +62 -63
  67. package/lib/MultiCompiler.js +130 -64
  68. package/lib/MultiStats.js +40 -9
  69. package/lib/MultiWatching.js +3 -3
  70. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  71. package/lib/NodeStuffPlugin.js +29 -19
  72. package/lib/NormalModule.js +152 -103
  73. package/lib/NormalModuleFactory.js +555 -110
  74. package/lib/NormalModuleReplacementPlugin.js +5 -8
  75. package/lib/NullFactory.js +6 -2
  76. package/lib/OptionsApply.js +7 -3
  77. package/lib/Parser.js +7 -3
  78. package/lib/PlatformPlugin.js +2 -2
  79. package/lib/PrefetchPlugin.js +1 -1
  80. package/lib/ProgressPlugin.js +16 -13
  81. package/lib/ProvidePlugin.js +3 -5
  82. package/lib/RawModule.js +25 -17
  83. package/lib/RecordIdsPlugin.js +3 -3
  84. package/lib/RequestShortener.js +1 -1
  85. package/lib/ResolverFactory.js +2 -2
  86. package/lib/RuntimeGlobals.js +22 -10
  87. package/lib/RuntimeModule.js +29 -19
  88. package/lib/RuntimePlugin.js +335 -169
  89. package/lib/RuntimeTemplate.js +2761 -316
  90. package/lib/SelfModuleFactory.js +7 -3
  91. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  92. package/lib/SourceMapDevToolPlugin.js +30 -20
  93. package/lib/Stats.js +3 -4
  94. package/lib/Template.js +32 -22
  95. package/lib/TemplatedPathPlugin.js +96 -14
  96. package/lib/UseStrictPlugin.js +4 -6
  97. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  98. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  99. package/lib/WarnNoModeSetPlugin.js +1 -1
  100. package/lib/WatchIgnorePlugin.js +8 -6
  101. package/lib/Watching.js +8 -8
  102. package/lib/WebpackIsIncludedPlugin.js +2 -4
  103. package/lib/WebpackOptionsApply.js +308 -18
  104. package/lib/WebpackOptionsDefaulter.js +6 -2
  105. package/lib/asset/AssetBytesGenerator.js +12 -10
  106. package/lib/asset/AssetBytesParser.js +2 -4
  107. package/lib/asset/AssetGenerator.js +188 -95
  108. package/lib/asset/AssetModule.js +7 -3
  109. package/lib/asset/AssetModulesPlugin.js +110 -38
  110. package/lib/asset/AssetParser.js +9 -7
  111. package/lib/asset/AssetSourceGenerator.js +60 -13
  112. package/lib/asset/AssetSourceParser.js +2 -4
  113. package/lib/asset/RawDataUrlModule.js +24 -16
  114. package/lib/asset/WebManifestGenerator.js +8 -10
  115. package/lib/asset/WebManifestParser.js +24 -10
  116. package/lib/async-modules/AsyncModuleHelpers.js +12 -6
  117. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  118. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  119. package/lib/async-modules/isGeneratorLowered.js +4 -4
  120. package/lib/buildChunkGraph.js +36 -27
  121. package/lib/bun/BunTargetPlugin.js +1 -1
  122. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  123. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  124. package/lib/cache/IdleFileCachePlugin.js +2 -2
  125. package/lib/cache/MemoryCachePlugin.js +18 -10
  126. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  127. package/lib/cache/PackFileCacheStrategy.js +30 -23
  128. package/lib/cache/ResolverCachePlugin.js +38 -18
  129. package/lib/cache/getLazyHashedEtag.js +1 -2
  130. package/lib/cache/mergeEtags.js +1 -1
  131. package/lib/cli.js +1 -3
  132. package/lib/config/browserslistTargetHandler.js +41 -5
  133. package/lib/config/defaults.js +270 -78
  134. package/lib/config/defineConfig.js +10 -2
  135. package/lib/config/getClaimedAssetTypes.js +65 -0
  136. package/lib/config/normalization.js +46 -16
  137. package/lib/config/target.js +46 -3
  138. package/lib/container/ContainerEntryDependency.js +1 -1
  139. package/lib/container/ContainerEntryModule.js +24 -15
  140. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  141. package/lib/container/ContainerPlugin.js +9 -10
  142. package/lib/container/ContainerReferencePlugin.js +6 -2
  143. package/lib/container/FallbackDependency.js +1 -1
  144. package/lib/container/FallbackModule.js +24 -17
  145. package/lib/container/FallbackModuleFactory.js +7 -3
  146. package/lib/container/HoistContainerReferencesPlugin.js +6 -11
  147. package/lib/container/ModuleFederationPlugin.js +7 -24
  148. package/lib/container/RemoteModule.js +27 -19
  149. package/lib/container/RemoteRuntimeModule.js +10 -8
  150. package/lib/container/moduleFederationHooks.js +32 -0
  151. package/lib/css/CssGenerator.js +171 -43
  152. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  153. package/lib/css/CssLoadingRuntimeModule.js +84 -32
  154. package/lib/css/CssModule.js +10 -7
  155. package/lib/css/CssModulesPlugin.js +172 -100
  156. package/lib/css/CssParser.js +1113 -568
  157. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  158. package/lib/css/cssMinify.js +168 -0
  159. package/lib/css/data.js +5334 -0
  160. package/lib/css/syntax.js +9647 -232
  161. package/lib/debug/ProfilingPlugin.js +14 -9
  162. package/lib/deno/DenoTargetPlugin.js +1 -1
  163. package/lib/dependencies/AMDDefineDependency.js +112 -87
  164. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  165. package/lib/dependencies/AMDPlugin.js +9 -7
  166. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  167. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  168. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  169. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  170. package/lib/dependencies/AMDRequireDependency.js +8 -7
  171. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  172. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  173. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  174. package/lib/dependencies/CachedConstDependency.js +11 -8
  175. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  176. package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
  177. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  178. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  179. package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
  180. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
  181. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  182. package/lib/dependencies/CommonJsPlugin.js +35 -6
  183. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  184. package/lib/dependencies/CommonJsRequireDependency.js +170 -27
  185. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  186. package/lib/dependencies/ConstDependency.js +8 -9
  187. package/lib/dependencies/ContextDependency.js +12 -8
  188. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  189. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  190. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +24 -11
  191. package/lib/dependencies/ContextElementDependency.js +31 -12
  192. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  193. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  194. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  195. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  196. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  197. package/lib/dependencies/CssImportDependency.js +18 -9
  198. package/lib/dependencies/CssUrlDependency.js +17 -13
  199. package/lib/dependencies/DllEntryDependency.js +1 -1
  200. package/lib/dependencies/DynamicExports.js +2 -2
  201. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  202. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  203. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  204. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  205. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  206. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  207. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  208. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  209. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +23 -14
  210. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
  211. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  212. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  213. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
  214. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  215. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  216. package/lib/dependencies/HarmonyExports.js +7 -4
  217. package/lib/dependencies/HarmonyImportDependency.js +121 -60
  218. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
  219. package/lib/dependencies/HarmonyImportGuard.js +20 -30
  220. package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -9
  221. package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
  222. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  223. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  224. package/lib/dependencies/HtmlEntryDependency.js +49 -31
  225. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  226. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  227. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  228. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  229. package/lib/dependencies/ImportContextDependency.js +45 -5
  230. package/lib/dependencies/ImportDependency.js +33 -50
  231. package/lib/dependencies/ImportEagerDependency.js +6 -9
  232. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  233. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  234. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  235. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  236. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  237. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  238. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  239. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  241. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  242. package/lib/dependencies/ImportParserPlugin.js +73 -49
  243. package/lib/dependencies/ImportPhase.js +12 -5
  244. package/lib/dependencies/ImportPlugin.js +7 -3
  245. package/lib/dependencies/ImportWeakDependency.js +6 -9
  246. package/lib/dependencies/JsonExportsDependency.js +11 -7
  247. package/lib/dependencies/LoaderDependency.js +2 -2
  248. package/lib/dependencies/LoaderImportDependency.js +2 -2
  249. package/lib/dependencies/LoaderPlugin.js +11 -7
  250. package/lib/dependencies/LocalModuleDependency.js +5 -5
  251. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  252. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  253. package/lib/dependencies/ModuleDependency.js +9 -6
  254. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  255. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  256. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  257. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  258. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  259. package/lib/dependencies/NullDependency.js +3 -3
  260. package/lib/dependencies/ProvidedDependency.js +14 -10
  261. package/lib/dependencies/PureExpressionDependency.js +9 -10
  262. package/lib/dependencies/RequireContextDependency.js +2 -2
  263. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  264. package/lib/dependencies/RequireContextPlugin.js +8 -4
  265. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  266. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  267. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  268. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  269. package/lib/dependencies/RequireHeaderDependency.js +50 -12
  270. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  271. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  272. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  273. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  274. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  275. package/lib/dependencies/RequireResolveDependency.js +4 -4
  276. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  277. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  278. package/lib/dependencies/StaticExportsDependency.js +2 -2
  279. package/lib/dependencies/SystemPlugin.js +10 -6
  280. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  281. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  282. package/lib/dependencies/URLContextDependency.js +2 -2
  283. package/lib/dependencies/URLDependency.js +110 -64
  284. package/lib/dependencies/URLPlugin.js +7 -3
  285. package/lib/dependencies/UnsupportedDependency.js +4 -4
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  287. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  289. package/lib/dependencies/WorkerAndWorkletPlugin.js +47 -28
  290. package/lib/dependencies/WorkerDependency.js +22 -22
  291. package/lib/dependencies/WorkletDependency.js +18 -21
  292. package/lib/dependencies/getFunctionExpression.js +8 -4
  293. package/lib/dependencies/importOptionsCheck.js +47 -0
  294. package/lib/dependencies/processExportInfo.js +5 -5
  295. package/lib/dll/DelegatedModule.js +34 -22
  296. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  297. package/lib/dll/DelegatedPlugin.js +2 -2
  298. package/lib/dll/DllEntryPlugin.js +2 -2
  299. package/lib/dll/DllModule.js +22 -15
  300. package/lib/dll/DllModuleFactory.js +7 -3
  301. package/lib/dll/DllPlugin.js +7 -5
  302. package/lib/dll/DllReferencePlugin.js +10 -7
  303. package/lib/dll/LibManifestPlugin.js +5 -5
  304. package/lib/electron/ElectronTargetPlugin.js +53 -49
  305. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  306. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  307. package/lib/errors/BroadContextsWarning.js +43 -0
  308. package/lib/errors/BuildCycleError.js +1 -1
  309. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  310. package/lib/errors/ChunkRenderError.js +1 -1
  311. package/lib/errors/CircularDependenciesWarning.js +38 -0
  312. package/lib/errors/CodeGenerationError.js +1 -1
  313. package/lib/errors/CommentCompilationWarning.js +1 -1
  314. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  315. package/lib/errors/DotenvFileError.js +29 -0
  316. package/lib/errors/DuplicateModulesWarning.js +45 -0
  317. package/lib/errors/DynamicExportsWarning.js +30 -0
  318. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  319. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  320. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  321. package/lib/errors/EvalUsageWarning.js +28 -0
  322. package/lib/errors/HookWebpackError.js +5 -5
  323. package/lib/errors/HotspotsWarning.js +57 -0
  324. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  325. package/lib/errors/ImportedBindingAssignmentError.js +30 -0
  326. package/lib/errors/InlinedAssetsWarning.js +36 -0
  327. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  328. package/lib/errors/LargeModulesWarning.js +45 -0
  329. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  330. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  331. package/lib/errors/MixedExportsWarning.js +41 -0
  332. package/lib/errors/ModuleDependencyError.js +13 -16
  333. package/lib/errors/ModuleDependencyWarning.js +5 -15
  334. package/lib/errors/ModuleHashingError.js +1 -1
  335. package/lib/errors/ModuleNotFoundError.js +2 -2
  336. package/lib/errors/ModuleParseError.js +1 -2
  337. package/lib/errors/ModuleRestoreError.js +1 -1
  338. package/lib/errors/ModuleStoreError.js +1 -1
  339. package/lib/errors/NodeStuffInWebError.js +1 -1
  340. package/lib/errors/OsDependentRuleWarning.js +31 -0
  341. package/lib/errors/PureAnnotationsWarning.js +36 -0
  342. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  343. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  344. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  345. package/lib/errors/TinyChunksWarning.js +40 -0
  346. package/lib/errors/TopLevelThisWarning.js +34 -0
  347. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  348. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  349. package/lib/errors/UnusedAliasesWarning.js +29 -0
  350. package/lib/errors/UnusedDefinesWarning.js +29 -0
  351. package/lib/errors/UnusedExternalsWarning.js +29 -0
  352. package/lib/errors/UnusedReexportsWarning.js +42 -0
  353. package/lib/errors/UnusedRuleWarning.js +29 -0
  354. package/lib/errors/WebpackError.js +9 -5
  355. package/lib/errors/deriveStackFromNestedError.js +90 -0
  356. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  357. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  358. package/lib/esm/ModuleChunkLoadingPlugin.js +86 -51
  359. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
  360. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  361. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  362. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  363. package/lib/hmr/lazyCompilationBackend.js +9 -6
  364. package/lib/hmr/parserHooks.js +56 -0
  365. package/lib/html/HtmlGenerator.js +277 -77
  366. package/lib/html/HtmlModule.js +7 -3
  367. package/lib/html/HtmlModulesPlugin.js +366 -200
  368. package/lib/html/HtmlParser.js +31 -86
  369. package/lib/html/data.js +1928 -0
  370. package/lib/html/htmlMinify.js +288 -0
  371. package/lib/html/syntax.js +6034 -1384
  372. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  373. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  374. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  375. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  376. package/lib/ids/IdHelpers.js +7 -8
  377. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  378. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  379. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  380. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  381. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  382. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  383. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  384. package/lib/index.js +10 -0
  385. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  386. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  387. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  388. package/lib/javascript/ChunkHelpers.js +1 -1
  389. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  390. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  391. package/lib/javascript/JavascriptGenerator.js +65 -165
  392. package/lib/javascript/JavascriptModule.js +9 -3
  393. package/lib/javascript/JavascriptModulesPlugin.js +103 -123
  394. package/lib/javascript/JavascriptParser.js +242 -99
  395. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  396. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  397. package/lib/javascript/StartupHelpers.js +55 -9
  398. package/lib/javascript/syntax.js +2678 -232
  399. package/lib/json/JsonData.js +8 -4
  400. package/lib/json/JsonGenerator.js +38 -16
  401. package/lib/json/JsonModule.js +7 -3
  402. package/lib/json/JsonModulesPlugin.js +1 -1
  403. package/lib/json/JsonParser.js +5 -6
  404. package/lib/library/AbstractLibraryPlugin.js +20 -14
  405. package/lib/library/AmdLibraryPlugin.js +11 -7
  406. package/lib/library/AssignLibraryPlugin.js +19 -13
  407. package/lib/library/EnableLibraryPlugin.js +2 -2
  408. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  409. package/lib/library/JsonpLibraryPlugin.js +11 -7
  410. package/lib/library/ModuleLibraryPlugin.js +256 -64
  411. package/lib/library/SystemLibraryPlugin.js +12 -8
  412. package/lib/library/UmdLibraryPlugin.js +62 -25
  413. package/lib/loaders/LoaderRunner.js +47 -6
  414. package/lib/loaders/loadLoader.js +8 -4
  415. package/lib/logging/createConsoleLogger.js +7 -4
  416. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  417. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  418. package/lib/node/NodeSourcePlugin.js +1 -1
  419. package/lib/node/NodeTargetPlugin.js +4 -3
  420. package/lib/node/NodeTemplatePlugin.js +1 -1
  421. package/lib/node/NodeWatchFileSystem.js +70 -9
  422. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  423. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +65 -19
  424. package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
  425. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  426. package/lib/node/nodeConsole.js +7 -3
  427. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  428. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  429. package/lib/optimize/ConcatenatedModule.js +1030 -476
  430. package/lib/optimize/ConstExportsPlugin.js +16 -7
  431. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  432. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  433. package/lib/optimize/InlineExports.js +130 -5
  434. package/lib/optimize/InnerGraph.js +28 -12
  435. package/lib/optimize/InnerGraphPlugin.js +23 -18
  436. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  437. package/lib/optimize/MangleExportsPlugin.js +7 -8
  438. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  439. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  440. package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
  441. package/lib/optimize/RealContentHashPlugin.js +121 -41
  442. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  443. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  444. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  445. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  446. package/lib/optimize/SplitChunksPlugin.js +86 -24
  447. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  448. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  449. package/lib/performance/BroadContextsPlugin.js +142 -0
  450. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  451. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  452. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  453. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  454. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  455. package/lib/performance/DynamicExportsPlugin.js +120 -0
  456. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  457. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  458. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  459. package/lib/performance/EvalUsagePlugin.js +115 -0
  460. package/lib/performance/HotspotsPlugin.js +296 -0
  461. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  462. package/lib/performance/LargeModulesPlugin.js +126 -0
  463. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  464. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  465. package/lib/performance/MixedExportsPlugin.js +136 -0
  466. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  467. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  468. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  469. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  470. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  471. package/lib/performance/SizeLimitsPlugin.js +139 -7
  472. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  473. package/lib/performance/TinyChunksPlugin.js +128 -0
  474. package/lib/performance/TopLevelThisPlugin.js +208 -0
  475. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  476. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  477. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  478. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  479. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  480. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  481. package/lib/performance/getModuleSize.js +22 -0
  482. package/lib/performance/getSourceModules.js +22 -0
  483. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  484. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  485. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  486. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  487. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  488. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  489. package/lib/prefetch/ResourceHintPlugin.js +295 -79
  490. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  491. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  492. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  493. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  494. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  495. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  496. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  497. package/lib/rules/RuleSetCompiler.js +146 -12
  498. package/lib/rules/UseEffectRulePlugin.js +18 -11
  499. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  500. package/lib/runtime/AsyncModuleRuntimeModule.js +6 -2
  501. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  502. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  503. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  504. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  505. package/lib/runtime/CompatRuntimeModule.js +5 -3
  506. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  507. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  508. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  509. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  510. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  511. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  512. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  513. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  514. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  515. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  516. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  517. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  518. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  519. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  520. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  521. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +34 -7
  522. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  523. package/lib/runtime/NonceRuntimeModule.js +10 -0
  524. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  525. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  526. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  527. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  528. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  529. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  530. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  531. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  532. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  533. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  534. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  535. package/lib/runtime/baseUri.js +63 -0
  536. package/lib/schemes/DataUriPlugin.js +1 -1
  537. package/lib/schemes/FileUriPlugin.js +1 -1
  538. package/lib/schemes/HttpUriPlugin.js +46 -20
  539. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  540. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  541. package/lib/serialization/BinaryMiddleware.js +4 -4
  542. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  543. package/lib/serialization/FileMiddleware.js +22 -9
  544. package/lib/serialization/ObjectMiddleware.js +139 -114
  545. package/lib/serialization/PlainObjectSerializer.js +19 -16
  546. package/lib/sharing/ConsumeSharedModule.js +30 -21
  547. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  548. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  549. package/lib/sharing/ProvideSharedModule.js +25 -16
  550. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  551. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  552. package/lib/sharing/SharePlugin.js +17 -5
  553. package/lib/sharing/ShareRuntimeModule.js +4 -4
  554. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  555. package/lib/sharing/utils.js +1 -3
  556. package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
  557. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  558. package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
  559. package/lib/stats/StatsFactory.js +25 -26
  560. package/lib/stats/StatsPrinter.js +16 -12
  561. package/lib/typescript/TypeScriptPlugin.js +20 -24
  562. package/lib/url/URLParserPlugin.js +26 -13
  563. package/lib/util/ArrayQueue.js +3 -3
  564. package/lib/util/AsyncQueue.js +4 -3
  565. package/lib/util/Hash.js +5 -1
  566. package/lib/util/LazySet.js +35 -22
  567. package/lib/util/LocConverter.js +36 -13
  568. package/lib/util/SourceProcessor.js +1066 -24
  569. package/lib/util/StringXor.js +1 -1
  570. package/lib/util/URLAbsoluteSpecifier.js +3 -1
  571. package/lib/util/chainedImports.js +9 -5
  572. package/lib/util/cleverMerge.js +1 -1
  573. package/lib/util/comparators.js +45 -14
  574. package/lib/util/concatenate.js +203 -77
  575. package/lib/util/conventions.js +10 -2
  576. package/lib/util/createHash.js +2 -2
  577. package/lib/util/createHooksRegistry.js +8 -10
  578. package/lib/util/createMappings.js +25 -3
  579. package/lib/util/dataURL.js +225 -1
  580. package/lib/util/extractSourceMap.js +4 -3
  581. package/lib/util/findCaseMismatch.js +139 -0
  582. package/lib/util/formatLocation.js +1 -2
  583. package/lib/util/fs.js +22 -5
  584. package/lib/util/globUtils.js +298 -24
  585. package/lib/util/hash/BatchedHash.js +5 -1
  586. package/lib/util/hash/BulkUpdateHash.js +5 -1
  587. package/lib/util/hash/DebugHash.js +5 -1
  588. package/lib/util/hash/hash-digest.js +6 -2
  589. package/lib/util/identifier.js +4 -0
  590. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  591. package/lib/util/internalSerializables.js +8 -0
  592. package/lib/util/lazyModule.js +56 -0
  593. package/lib/util/makeSerializable.js +7 -3
  594. package/lib/util/matchAlias.js +25 -0
  595. package/lib/util/mimeTypes.js +11 -5
  596. package/lib/util/nonNumericOnlyHash.js +4 -3
  597. package/lib/util/parseJson.js +5 -3
  598. package/lib/util/preloadModuleType.js +32 -0
  599. package/lib/util/registerExternalSerializer.js +7 -5
  600. package/lib/util/removeBOM.js +82 -1
  601. package/lib/util/runtime.js +2 -2
  602. package/lib/util/semver.js +1 -1
  603. package/lib/util/serialization.js +28 -28
  604. package/lib/util/source.js +2 -2
  605. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  607. package/lib/wasm/wasmModuleFilename.js +54 -0
  608. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +43 -21
  609. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -21
  610. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  611. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  612. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  613. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  614. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  615. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +29 -8
  616. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  623. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +105 -19
  626. package/lib/web/FetchCompileWasmPlugin.js +48 -16
  627. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  629. package/lib/web/JsonpTemplatePlugin.js +2 -2
  630. package/lib/webpack.js +22 -11
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +1 -0
  635. package/package.json +32 -25
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +667 -34
  638. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  639. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  640. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  641. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  642. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  643. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  644. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  645. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  646. package/types.d.ts +3223 -465
  647. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -8,39 +8,44 @@
8
8
  const util = require("util");
9
9
  const { SyncWaterfallHook } = require("tapable");
10
10
  const RuntimeGlobals = require("./RuntimeGlobals");
11
+ const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
11
12
  const memoize = require("./util/memoize");
12
13
 
13
- /** @typedef {import("tapable").Tap} Tap */
14
- /** @typedef {import("webpack-sources").Source} Source */
15
- /** @typedef {import("../declarations/WebpackOptions").Output} OutputOptions */
16
- /** @typedef {import("./ModuleTemplate")} ModuleTemplate */
17
- /** @typedef {import("./Chunk")} Chunk */
18
- /** @typedef {import("./Compilation")} Compilation */
19
- /** @typedef {import("./Compilation").AssetInfo} AssetInfo */
20
- /** @typedef {import("./Compilation").InterpolatedPathAndAssetInfo} InterpolatedPathAndAssetInfo */
21
- /** @typedef {import("./util/Hash")} Hash */
22
- /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
23
- /** @typedef {import("./javascript/JavascriptModulesPlugin").RenderBootstrapContext} RenderBootstrapContext */
24
- /** @typedef {import("./Template").RenderManifestOptions} RenderManifestOptions */
25
- /** @typedef {import("./Template").RenderManifestEntry} RenderManifestEntry */
26
- /** @typedef {import("./TemplatedPathPlugin").TemplatePath} TemplatePath */
27
- /** @typedef {import("./TemplatedPathPlugin").PathData} PathData */
14
+ const getLoadScriptRuntimeModule = memoize(() =>
15
+ require("./runtime/LoadScriptRuntimeModule")
16
+ );
17
+
18
+ const getJsonpTemplatePlugin = memoize(() =>
19
+ require("./web/JsonpTemplatePlugin")
20
+ );
21
+
22
+ /** @import { Tap } from "tapable" */
23
+ /** @import { Source } from "webpack-sources" */
24
+ /** @import { Output as OutputOptions } from "../declarations/WebpackOptions" */
25
+ /** @import ModuleTemplate from "./ModuleTemplate" */
26
+ /** @import Chunk from "./Chunk" */
27
+ /**
28
+ * @import Compilation, {
29
+ * AssetInfo,
30
+ * InterpolatedPathAndAssetInfo,
31
+ * PathData
32
+ * } from "./Compilation"
33
+ */
34
+ /** @import Hash from "./util/Hash" */
35
+ /** @import DependencyTemplates from "./DependencyTemplates" */
36
+ /**
37
+ * @import {
38
+ * RenderBootstrapContext
39
+ * } from "./javascript/JavascriptModulesPlugin"
40
+ */
41
+ /** @import { RenderManifestOptions, RenderManifestEntry } from "./Template" */
42
+ /** @import { TemplatePath } from "./TemplatedPathPlugin" */
28
43
  /**
29
44
  * Defines the if set type used by this module.
30
45
  * @template T
31
46
  * @typedef {import("tapable").IfSet<T>} IfSet
32
47
  */
33
48
 
34
- const getJavascriptModulesPlugin = memoize(() =>
35
- require("./javascript/JavascriptModulesPlugin")
36
- );
37
- const getJsonpTemplatePlugin = memoize(() =>
38
- require("./web/JsonpTemplatePlugin")
39
- );
40
- const getLoadScriptRuntimeModule = memoize(() =>
41
- require("./runtime/LoadScriptRuntimeModule")
42
- );
43
-
44
49
  // TODO webpack 6 remove this class
45
50
  class MainTemplate {
46
51
  /**
@@ -96,9 +101,9 @@ class MainTemplate {
96
101
  * @param {(value: string, renderBootstrapContext: RenderBootstrapContext) => string} fn fn
97
102
  */
98
103
  (options, fn) => {
99
- getJavascriptModulesPlugin()
100
- .getCompilationHooks(compilation)
101
- .renderRequire.tap(options, fn);
104
+ JavascriptModulesPlugin.getCompilationHooks(
105
+ compilation
106
+ ).renderRequire.tap(options, fn);
102
107
  },
103
108
  "MainTemplate.hooks.require is deprecated (use JavascriptModulesPlugin.getCompilationHooks().renderRequire instead)",
104
109
  "DEP_WEBPACK_MAIN_TEMPLATE_REQUIRE"
@@ -134,9 +139,9 @@ class MainTemplate {
134
139
  * @param {(source: Source, chunk: Chunk, hash: string | undefined, moduleTemplate: ModuleTemplate, dependencyTemplates: DependencyTemplates) => Source} fn fn
135
140
  */
136
141
  (options, fn) => {
137
- getJavascriptModulesPlugin()
138
- .getCompilationHooks(compilation)
139
- .render.tap(options, (source, renderContext) => {
142
+ JavascriptModulesPlugin.getCompilationHooks(compilation).render.tap(
143
+ options,
144
+ (source, renderContext) => {
140
145
  if (
141
146
  renderContext.chunkGraph.getNumberOfEntryModules(
142
147
  renderContext.chunk
@@ -152,7 +157,8 @@ class MainTemplate {
152
157
  compilation.moduleTemplates.javascript,
153
158
  compilation.dependencyTemplates
154
159
  );
155
- });
160
+ }
161
+ );
156
162
  },
157
163
  "MainTemplate.hooks.render is deprecated (use JavascriptModulesPlugin.getCompilationHooks().render instead)",
158
164
  "DEP_WEBPACK_MAIN_TEMPLATE_RENDER"
@@ -167,9 +173,9 @@ class MainTemplate {
167
173
  * @param {(source: Source, chunk: Chunk, hash: string | undefined) => Source} fn fn
168
174
  */
169
175
  (options, fn) => {
170
- getJavascriptModulesPlugin()
171
- .getCompilationHooks(compilation)
172
- .render.tap(options, (source, renderContext) => {
176
+ JavascriptModulesPlugin.getCompilationHooks(compilation).render.tap(
177
+ options,
178
+ (source, renderContext) => {
173
179
  if (
174
180
  renderContext.chunkGraph.getNumberOfEntryModules(
175
181
  renderContext.chunk
@@ -179,7 +185,8 @@ class MainTemplate {
179
185
  return source;
180
186
  }
181
187
  return fn(source, renderContext.chunk, compilation.hash);
182
- });
188
+ }
189
+ );
183
190
  },
184
191
  "MainTemplate.hooks.renderWithEntry is deprecated (use JavascriptModulesPlugin.getCompilationHooks().render instead)",
185
192
  "DEP_WEBPACK_MAIN_TEMPLATE_RENDER_WITH_ENTRY"
@@ -235,12 +242,12 @@ class MainTemplate {
235
242
  * @param {(hash: Hash, chunk: Chunk) => void} fn fn
236
243
  */
237
244
  (options, fn) => {
238
- getJavascriptModulesPlugin()
239
- .getCompilationHooks(compilation)
240
- .chunkHash.tap(options, (chunk, hash) => {
241
- if (!chunk.hasRuntime()) return;
242
- return fn(hash, chunk);
243
- });
245
+ JavascriptModulesPlugin.getCompilationHooks(
246
+ compilation
247
+ ).chunkHash.tap(options, (chunk, hash) => {
248
+ if (!chunk.hasRuntime()) return;
249
+ return fn(hash, chunk);
250
+ });
244
251
  },
245
252
  "MainTemplate.hooks.hashForChunk is deprecated (use JavascriptModulesPlugin.getCompilationHooks().chunkHash instead)",
246
253
  "DEP_WEBPACK_MAIN_TEMPLATE_HASH_FOR_CHUNK"
@@ -9,17 +9,18 @@ const { RawSource } = require("webpack-sources");
9
9
  const Compilation = require("./Compilation");
10
10
  const HotUpdateChunk = require("./HotUpdateChunk");
11
11
 
12
- /** @typedef {import("./Compiler")} Compiler */
13
- /** @typedef {import("./Chunk")} Chunk */
14
- /** @typedef {import("./Chunk").ChunkName} ChunkName */
15
- /** @typedef {import("./Chunk").ChunkId} ChunkId */
16
- /** @typedef {import("./Compilation").Asset} Asset */
17
- /** @typedef {import("./Compilation").AssetInfo} AssetInfo */
18
-
19
- /** @typedef {import("../declarations/plugins/ManifestPlugin").ManifestPluginOptions} ManifestPluginOptions */
20
- /** @typedef {import("../declarations/plugins/ManifestPlugin").ManifestObject} ManifestObject */
21
- /** @typedef {import("../declarations/plugins/ManifestPlugin").ManifestEntrypoint} ManifestEntrypoint */
22
- /** @typedef {import("../declarations/plugins/ManifestPlugin").ManifestItem} ManifestItem */
12
+ /** @import Compiler from "./Compiler" */
13
+ /** @import Chunk, { ChunkName, ChunkId } from "./Chunk" */
14
+ /** @import { AssetInfo } from "./Compilation" */
15
+
16
+ /**
17
+ * @import {
18
+ * ManifestPluginOptions,
19
+ * ManifestObject,
20
+ * ManifestEntrypoint,
21
+ * ManifestItem
22
+ * } from "../declarations/plugins/ManifestPlugin"
23
+ */
23
24
 
24
25
  /** @typedef {(item: ManifestItem) => boolean} Filter */
25
26
  /** @typedef {(manifest: ManifestObject) => ManifestObject} Generate */
package/lib/Module.js CHANGED
@@ -19,43 +19,53 @@ const { first } = require("./util/SetHelpers");
19
19
  const { compareChunksById } = require("./util/comparators");
20
20
  const makeSerializable = require("./util/makeSerializable");
21
21
 
22
- /** @typedef {import("webpack-sources").Source} Source */
23
- /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
24
- /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
25
- /** @typedef {import("./Chunk")} Chunk */
26
- /** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
27
- /** @typedef {import("./ChunkGroup")} ChunkGroup */
28
- /** @typedef {import("./CodeGenerationResults")} CodeGenerationResults */
29
- /** @typedef {import("./Compilation")} Compilation */
30
- /** @typedef {import("./Compilation").AssetInfo} AssetInfo */
31
- /** @typedef {import("./Compilation").FileSystemDependencies} FileSystemDependencies */
32
- /** @typedef {import("./Compilation").UnsafeCacheData} UnsafeCacheData */
33
- /** @typedef {import("./ConcatenationScope")} ConcatenationScope */
34
- /** @typedef {import("./Dependency")} Dependency */
35
- /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
36
- /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
37
- /** @typedef {import("./ModuleSourceTypeConstants").AllTypes} AllTypes */
38
- /** @typedef {import("./FileSystemInfo")} FileSystemInfo */
39
- /** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
40
- /** @typedef {import("./ModuleTypeConstants").ModuleTypes} ModuleTypes */
41
- /** @typedef {import("./ModuleGraph").OptimizationBailouts} OptimizationBailouts */
42
- /** @typedef {import("./ModuleProfile")} ModuleProfile */
43
- /** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
44
- /** @typedef {import("./RequestShortener")} RequestShortener */
45
- /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
46
- /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
22
+ /** @import { Source } from "webpack-sources" */
23
+ /** @import { ResolveOptions } from "../declarations/WebpackOptions" */
24
+ /**
25
+ * @import {
26
+ * WebpackOptionsNormalizedWithDefaults as WebpackOptions
27
+ * } from "./config/defaults"
28
+ */
29
+ /** @import Chunk from "./Chunk" */
30
+ /** @import { ModuleId } from "./ChunkGraph" */
31
+ /** @import ChunkGroup from "./ChunkGroup" */
32
+ /** @import CodeGenerationResults from "./CodeGenerationResults" */
33
+ /**
34
+ * @import Compilation, {
35
+ * AssetInfo,
36
+ * FileSystemDependencies,
37
+ * UnsafeCacheData
38
+ * } from "./Compilation"
39
+ */
40
+ /** @import ConcatenationScope from "./ConcatenationScope" */
41
+ /** @import Dependency, { UpdateHashContext } from "./Dependency" */
42
+ /** @import DependencyTemplates from "./DependencyTemplates" */
43
+ /** @import { AllTypes } from "./ModuleSourceTypeConstants" */
44
+ /** @import FileSystemInfo from "./FileSystemInfo" */
45
+ /** @import { ConnectionState } from "./ModuleGraphConnection" */
46
+ /** @import { ModuleTypes } from "./ModuleTypeConstants" */
47
+ /** @import { OptimizationBailouts } from "./ModuleGraph" */
48
+ /** @import ModuleProfile from "./ModuleProfile" */
49
+ /** @import NormalModuleFactory from "./NormalModuleFactory" */
50
+ /** @import RequestShortener from "./RequestShortener" */
51
+ /** @import { ResolverWithOptions } from "./ResolverFactory" */
52
+ /** @import RuntimeTemplate from "./RuntimeTemplate" */
47
53
  /**
48
54
  * Defines the init fragment type used by this module.
49
55
  * @template T
50
56
  * @typedef {import("./InitFragment")<T>} InitFragment
51
57
  */
52
- /** @typedef {import("./errors/WebpackError")} WebpackError */
53
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
54
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
55
- /** @typedef {import("./util/Hash")} Hash */
56
- /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
57
- /** @typedef {import("./util/identifier").AssociatedObjectForCache} AssociatedObjectForCache */
58
- /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
58
+ /** @import WebpackError from "./errors/WebpackError" */
59
+ /**
60
+ * @import {
61
+ * ObjectDeserializerContext,
62
+ * ObjectSerializerContext
63
+ * } from "./serialization/ObjectMiddleware"
64
+ */
65
+ /** @import Hash from "./util/Hash" */
66
+ /** @import { InputFileSystem } from "./util/fs" */
67
+ /** @import { AssociatedObjectForCache } from "./util/identifier" */
68
+ /** @import { RuntimeSpec } from "./util/runtime" */
59
69
  /**
60
70
  * @template T
61
71
  * @typedef {import("./util/SortableSet")<T>} SortableSet
@@ -173,6 +183,7 @@ const makeSerializable = require("./util/makeSerializable");
173
183
  * @property {boolean=} sideEffectFree
174
184
  * @property {Map<string, Record<string, string>>=} exportsFinalNameByRuntime using in ModuleLibraryPlugin
175
185
  * @property {Map<string, string>=} exportsSourceByRuntime using in ModuleLibraryPlugin
186
+ * @property {Map<string, string>=} exportsBindingSourceByRuntime export definitions `ModuleLibraryPlugin` took over, re-emitted only where the module is wrapped
176
187
  */
177
188
 
178
189
  /**
@@ -188,7 +199,10 @@ const makeSerializable = require("./util/makeSerializable");
188
199
  * @property {Map<string, AssetInfo | undefined>=} assetsInfo
189
200
  * @property {Set<string>=} topLevelDeclarations top level declaration names
190
201
  * @property {boolean=} isCircular true when the module is part of a circular dependency chain
191
- * @property {boolean=} usesTopLevelAwaitForOf module uses top-level `for await…of`, which can't be lowered to a generator
202
+ * @property {boolean=} usesEval true when the module calls `eval` directly
203
+ * @property {number=} ineffectivePureAnnotations how many `#__PURE__` annotations sit where the parser does not read them
204
+ * @property {number=} topLevelThis how many times the module reads `this` at its top level
205
+ * @property {boolean=} usesTopLevelAwaitForOf module uses top-level `for await…of` or `await using`, which can't be lowered to a generator
192
206
  */
193
207
 
194
208
  /** @typedef {string | Set<string>} ValueCacheVersion */
@@ -1250,6 +1264,21 @@ class Module extends DependenciesBlock {
1250
1264
  this.resolveOptions = undefined;
1251
1265
  }
1252
1266
 
1267
+ /**
1268
+ * Re-acquire factory-derived helpers (parser/generator) for an incremental
1269
+ * rebuild so this compilation's plugin hooks apply.
1270
+ * @param {NormalModuleFactory} normalModuleFactory the normal module factory
1271
+ * @returns {void}
1272
+ */
1273
+ _restoreParserAndGenerator(normalModuleFactory) {}
1274
+
1275
+ /**
1276
+ * Releases the cached parser between incremental rebuilds so it doesn't keep
1277
+ * the previous compilation alive.
1278
+ * @returns {void}
1279
+ */
1280
+ _cleanupParserForCache() {}
1281
+
1253
1282
  /**
1254
1283
  * Gets the original source.
1255
1284
  * @returns {Source | null} the original source for the module before webpack transformation
@@ -5,9 +5,9 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
9
- /** @typedef {import("./Dependency")} Dependency */
10
- /** @typedef {import("./Module")} Module */
8
+ /** @import { ResolveOptions } from "../declarations/WebpackOptions" */
9
+ /** @import Dependency from "./Dependency" */
10
+ /** @import Module from "./Module" */
11
11
 
12
12
  /**
13
13
  * Defines the module factory result type used by this module.
@@ -10,10 +10,10 @@ const { DEFAULTS } = require("./config/defaults");
10
10
  const createHash = require("./util/createHash");
11
11
  const memoize = require("./util/memoize");
12
12
 
13
- /** @typedef {import("../declarations/WebpackOptions").HashFunction} HashFunction */
14
- /** @typedef {import("./ChunkGraph")} ChunkGraph */
15
- /** @typedef {import("./Module")} Module */
16
- /** @typedef {import("./RequestShortener")} RequestShortener */
13
+ /** @import { HashFunction } from "../declarations/WebpackOptions" */
14
+ /** @import ChunkGraph from "./ChunkGraph" */
15
+ /** @import Module from "./Module" */
16
+ /** @import RequestShortener from "./RequestShortener" */
17
17
 
18
18
  /** @typedef {(str: string) => boolean} MatcherFn */
19
19
  /** @typedef {string | RegExp | MatcherFn | (string | RegExp | MatcherFn)[]} Matcher */
@@ -21,6 +21,11 @@ const memoize = require("./util/memoize");
21
21
 
22
22
  const ModuleFilenameHelpers = module.exports;
23
23
 
24
+ ModuleFilenameHelpers.DEFAULT_MODULE_FILENAME_TEMPLATE =
25
+ "webpack://[namespace]/[resourcePath]";
26
+ ModuleFilenameHelpers.DEFAULT_FALLBACK_MODULE_FILENAME_TEMPLATE =
27
+ "webpack://[namespace]/[resourcePath]?[hash]";
28
+
24
29
  // TODO webpack 6: consider removing these
25
30
  ModuleFilenameHelpers.ALL_LOADERS_RESOURCE = "[all-loaders][resource]";
26
31
  ModuleFilenameHelpers.REGEXP_ALL_LOADERS_RESOURCE =
@@ -14,18 +14,21 @@ const SortableSet = require("./util/SortableSet");
14
14
  const WeakTupleMap = require("./util/WeakTupleMap");
15
15
  const { sortWithSourceOrder } = require("./util/comparators");
16
16
 
17
- /** @typedef {import("./Compilation").ModuleMemCaches} ModuleMemCaches */
18
- /** @typedef {import("./DependenciesBlock")} DependenciesBlock */
19
- /** @typedef {import("./Dependency")} Dependency */
20
- /** @typedef {import("./ExportsInfo").ExportInfo} ExportInfo */
21
- /** @typedef {import("./ExportsInfo").ExportInfoName} ExportInfoName */
22
- /** @typedef {import("./Module")} Module */
23
- /** @typedef {import("./ModuleProfile")} ModuleProfile */
24
- /** @typedef {import("./RequestShortener")} RequestShortener */
25
- /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
26
- /** @typedef {import("./dependencies/HarmonyImportSideEffectDependency")} HarmonyImportSideEffectDependency */
27
- /** @typedef {import("./dependencies/HarmonyImportSpecifierDependency")} HarmonyImportSpecifierDependency */
28
- /** @typedef {import("./util/comparators").DependencySourceOrder} DependencySourceOrder */
17
+ /** @import { ModuleMemCaches } from "./Compilation" */
18
+ /** @import DependenciesBlock from "./DependenciesBlock" */
19
+ /** @import Dependency, { ExportInfoName } from "./Dependency" */
20
+ /** @import { ExportInfo } from "./ExportsInfo" */
21
+ /** @import Module from "./Module" */
22
+ /** @import ModuleProfile from "./ModuleProfile" */
23
+ /** @import RequestShortener from "./RequestShortener" */
24
+ /** @import { RuntimeSpec } from "./util/runtime" */
25
+ /** @import HarmonyImportSideEffectDependency from "./dependencies/HarmonyImportSideEffectDependency" */
26
+ /**
27
+ * @import HarmonyImportSpecifierDependency, {
28
+ * idsSymbol as HarmonyImportSpecifierDependencyIDsSymbol
29
+ * } from "./dependencies/HarmonyImportSpecifierDependency"
30
+ */
31
+ /** @import { DependencySourceOrder } from "./util/comparators" */
29
32
 
30
33
  /**
31
34
  * Defines the optimization bailout function callback.
@@ -124,9 +127,16 @@ class ModuleGraphModule {
124
127
 
125
128
  /** @typedef {EXPECTED_OBJECT} MetaKey */
126
129
 
127
- /** @typedef {import("./dependencies/CommonJsExportRequireDependency").idsSymbol} CommonJsExportRequireDependencyIDsSymbol */
128
- /** @typedef {import("./dependencies/HarmonyImportSpecifierDependency").idsSymbol} HarmonyImportSpecifierDependencyIDsSymbol */
129
- /** @typedef {import("./dependencies/HarmonyExportImportedSpecifierDependency").idsSymbol} HarmonyExportImportedSpecifierDependencyIDsSymbol */
130
+ /**
131
+ * @import {
132
+ * idsSymbol as CommonJsExportRequireDependencyIDsSymbol
133
+ * } from "./dependencies/CommonJsExportRequireDependency"
134
+ */
135
+ /**
136
+ * @import {
137
+ * idsSymbol as HarmonyExportImportedSpecifierDependencyIDsSymbol
138
+ * } from "./dependencies/HarmonyExportImportedSpecifierDependency"
139
+ */
130
140
 
131
141
  /**
132
142
  * Defines the known meta type used by this module.
@@ -171,6 +181,15 @@ class ModuleGraph {
171
181
  */
172
182
  this._cacheStage = undefined;
173
183
 
184
+ // incremental rebuilds: when set, move/copyOutgoingModuleConnections record
185
+ // their seal-time graph mutations (concatenation) here so they can be reversed,
186
+ // keeping this durable graph reusable across rebuilds
187
+ /**
188
+ * @type {{ oldModule?: Module, newModule: Module, movedOut?: ModuleGraphConnection[] | undefined, movedIn?: ModuleGraphConnection[] | undefined, copied?: ModuleGraphConnection[] }[] | undefined}
189
+ * @private
190
+ */
191
+ this._mutationJournal = undefined;
192
+
174
193
  /**
175
194
  * @type {WeakMap<Dependency, DependencySourceOrder>}
176
195
  * @private
@@ -395,6 +414,59 @@ class ModuleGraph {
395
414
  this._dependencyMap.set(dependency, null);
396
415
  }
397
416
 
417
+ /**
418
+ * Removes every outgoing connection of `module` whose dependency is in
419
+ * `staleDependencies`, including inactive ones left by `updateModule`
420
+ * re-targeting (which the dependency-keyed `removeConnection` misses). Needed
421
+ * when a module is rebuilt against a persisted graph so stale connections don't
422
+ * linger in the old target's incoming set and crash seal-time plugins.
423
+ * @param {Module} module the rebuilt origin module
424
+ * @param {Set<Dependency>} staleDependencies dependencies replaced by the rebuild
425
+ * @returns {void}
426
+ */
427
+ _removeStaleOutgoingConnections(module, staleDependencies) {
428
+ const mgm = this._getModuleGraphModule(module);
429
+ const outgoing = mgm.outgoingConnections;
430
+ if (outgoing === undefined) return;
431
+ for (const connection of outgoing) {
432
+ if (
433
+ !staleDependencies.has(
434
+ /** @type {Dependency} */ (connection.dependency)
435
+ )
436
+ ) {
437
+ continue;
438
+ }
439
+ outgoing.delete(connection);
440
+ if (connection.module !== null) {
441
+ this._getModuleGraphModule(
442
+ connection.module
443
+ ).incomingConnections.delete(connection);
444
+ }
445
+ }
446
+ }
447
+
448
+ /**
449
+ * Assigns `module`'s pending outgoing connections into the dependency map by
450
+ * origin. `getConnection` normally does this lazily keyed by a dependency's
451
+ * PARENT module; an incremental barrel un-lazy wires a re-export target from
452
+ * the importer's walk, so the export dep's parent differs from its origin
453
+ * barrel and the lazy flush never reaches it. Flush by origin to fix that.
454
+ * @param {Module} module the origin module
455
+ * @returns {void}
456
+ */
457
+ _flushUnassignedConnections(module) {
458
+ const mgm = this._getModuleGraphModule(module);
459
+ const pending = mgm._unassignedConnections;
460
+ if (pending === undefined || pending.length === 0) return;
461
+ for (const connection of pending) {
462
+ this._dependencyMap.set(
463
+ /** @type {Dependency} */ (connection.dependency),
464
+ connection
465
+ );
466
+ }
467
+ pending.length = 0;
468
+ }
469
+
398
470
  /**
399
471
  * Adds the provided dependency to the module graph.
400
472
  * @param {Dependency} dependency the referencing dependency
@@ -437,6 +509,35 @@ class ModuleGraph {
437
509
  mgm.async = false;
438
510
  }
439
511
 
512
+ /**
513
+ * Removes a module from the graph entirely, detaching its connections. Used to
514
+ * drop stale runtime modules on an incremental rebuild so the persisted graph
515
+ * doesn't accumulate them.
516
+ * @param {Module} module the module to remove
517
+ * @returns {void}
518
+ */
519
+ _removeModule(module) {
520
+ const mgm = this._moduleMap.get(module);
521
+ if (mgm === undefined) return;
522
+ if (mgm.outgoingConnections !== undefined) {
523
+ for (const connection of mgm.outgoingConnections) {
524
+ if (connection.module && connection.module !== module) {
525
+ const other = this._moduleMap.get(connection.module);
526
+ if (other !== undefined) other.incomingConnections.delete(connection);
527
+ }
528
+ }
529
+ }
530
+ for (const connection of mgm.incomingConnections) {
531
+ if (connection.originModule && connection.originModule !== module) {
532
+ const other = this._moduleMap.get(connection.originModule);
533
+ if (other !== undefined && other.outgoingConnections !== undefined) {
534
+ other.outgoingConnections.delete(connection);
535
+ }
536
+ }
537
+ }
538
+ this._moduleMap.delete(module);
539
+ }
540
+
440
541
  /**
441
542
  * Removes all module attributes.
442
543
  * @returns {void}
@@ -461,6 +562,11 @@ class ModuleGraph {
461
562
  if (oldModule === newModule) return;
462
563
  const oldMgm = this._getModuleGraphModule(oldModule);
463
564
  const newMgm = this._getModuleGraphModule(newModule);
565
+ const journal = this._mutationJournal;
566
+ /** @type {ModuleGraphConnection[] | undefined} */
567
+ const movedOut = journal ? [] : undefined;
568
+ /** @type {ModuleGraphConnection[] | undefined} */
569
+ const movedIn = journal ? [] : undefined;
464
570
  // Outgoing connections
465
571
  const oldConnections = oldMgm.outgoingConnections;
466
572
  if (oldConnections !== undefined) {
@@ -473,6 +579,7 @@ class ModuleGraph {
473
579
  connection.originModule = newModule;
474
580
  newConnections.add(connection);
475
581
  oldConnections.delete(connection);
582
+ if (movedOut) movedOut.push(connection);
476
583
  }
477
584
  }
478
585
  }
@@ -484,8 +591,69 @@ class ModuleGraph {
484
591
  connection.module = newModule;
485
592
  newConnections2.add(connection);
486
593
  oldConnections2.delete(connection);
594
+ if (movedIn) movedIn.push(connection);
595
+ }
596
+ }
597
+ if (journal) journal.push({ oldModule, newModule, movedOut, movedIn });
598
+ }
599
+
600
+ /**
601
+ * Start recording connection moves so they can later be reversed for incremental rebuilds.
602
+ * @returns {void}
603
+ */
604
+ _startMutationJournal() {
605
+ this._mutationJournal = [];
606
+ }
607
+
608
+ /**
609
+ * Reverse all recorded connection moves, restoring the graph to its pre-seal
610
+ * (end-of-make) state, then stop recording (incremental rebuilds).
611
+ * @returns {void}
612
+ */
613
+ _restoreFromMutationJournal() {
614
+ const journal = this._mutationJournal;
615
+ if (journal === undefined) return;
616
+ for (let i = journal.length - 1; i >= 0; i--) {
617
+ const { oldModule, newModule, movedOut, movedIn, copied } = journal[i];
618
+ const newMgm = this._getModuleGraphModule(newModule);
619
+ // copyOutgoingModuleConnections clones connections onto newModule and the
620
+ // external targets; undo by deleting the clones (there is no oldModule)
621
+ if (copied !== undefined) {
622
+ for (const connection of copied) {
623
+ if (newMgm.outgoingConnections !== undefined) {
624
+ newMgm.outgoingConnections.delete(connection);
625
+ }
626
+ if (connection.module !== null && connection.module !== undefined) {
627
+ this._getModuleGraphModule(
628
+ connection.module
629
+ ).incomingConnections.delete(connection);
630
+ }
631
+ }
632
+ continue;
633
+ }
634
+ const oldModuleT = /** @type {Module} */ (oldModule);
635
+ const oldMgm = this._getModuleGraphModule(oldModuleT);
636
+ if (movedOut !== undefined) {
637
+ if (oldMgm.outgoingConnections === undefined) {
638
+ oldMgm.outgoingConnections = new SortableSet();
639
+ }
640
+ for (const connection of movedOut) {
641
+ connection.originModule = oldModuleT;
642
+ oldMgm.outgoingConnections.add(connection);
643
+ if (newMgm.outgoingConnections !== undefined) {
644
+ newMgm.outgoingConnections.delete(connection);
645
+ }
646
+ }
647
+ }
648
+ if (movedIn !== undefined) {
649
+ for (const connection of movedIn) {
650
+ connection.module = oldModuleT;
651
+ oldMgm.incomingConnections.add(connection);
652
+ newMgm.incomingConnections.delete(connection);
653
+ }
487
654
  }
488
655
  }
656
+ this._mutationJournal = undefined;
489
657
  }
490
658
 
491
659
  /**
@@ -499,6 +667,9 @@ class ModuleGraph {
499
667
  if (oldModule === newModule) return;
500
668
  const oldMgm = this._getModuleGraphModule(oldModule);
501
669
  const newMgm = this._getModuleGraphModule(newModule);
670
+ const journal = this._mutationJournal;
671
+ /** @type {ModuleGraphConnection[] | undefined} */
672
+ const copied = journal ? [] : undefined;
502
673
  // Outgoing connections
503
674
  const oldConnections = oldMgm.outgoingConnections;
504
675
  if (oldConnections !== undefined) {
@@ -515,9 +686,13 @@ class ModuleGraph {
515
686
  const otherMgm = this._getModuleGraphModule(newConnection.module);
516
687
  otherMgm.incomingConnections.add(newConnection);
517
688
  }
689
+ if (copied) copied.push(newConnection);
518
690
  }
519
691
  }
520
692
  }
693
+ if (journal && copied !== undefined && copied.length > 0) {
694
+ journal.push({ newModule, copied });
695
+ }
521
696
  }
522
697
 
523
698
  /**
@@ -752,7 +927,7 @@ class ModuleGraph {
752
927
  * Returns info about the export.
753
928
  * @param {Module} module the module
754
929
  * @param {string} exportName the export
755
- * @returns {ExportInfo} info about the export
930
+ * @returns {InstanceType<ExportInfo>} info about the export
756
931
  */
757
932
  getExportInfo(module, exportName) {
758
933
  const mgm = this._getModuleGraphModule(module);
@@ -763,7 +938,7 @@ class ModuleGraph {
763
938
  * Gets read only export info.
764
939
  * @param {Module} module the module
765
940
  * @param {string} exportName the export
766
- * @returns {ExportInfo} info about the export (do not modify)
941
+ * @returns {InstanceType<ExportInfo>} info about the export (do not modify)
767
942
  */
768
943
  getReadOnlyExportInfo(module, exportName) {
769
944
  const mgm = this._getModuleGraphModule(module);
@@ -1044,9 +1219,7 @@ class ModuleGraph {
1044
1219
  const moduleGraph = moduleGraphForModuleMap.get(module);
1045
1220
  if (!moduleGraph) {
1046
1221
  throw new Error(
1047
- `${
1048
- deprecateMessage
1049
- }There was no ModuleGraph assigned to the Module for backward-compat (Use the new API)`
1222
+ `${deprecateMessage}There was no ModuleGraph assigned to the Module for backward-compat (Use the new API)`
1050
1223
  );
1051
1224
  }
1052
1225
  return moduleGraph;
@@ -1090,5 +1263,6 @@ const moduleGraphForModuleMap = new WeakMap();
1090
1263
  /** @type {Map<string, (module: Module) => ModuleGraph>} */
1091
1264
  const deprecateMap = new Map();
1092
1265
 
1266
+ ModuleGraph.ModuleGraphConnection = ModuleGraphConnection;
1267
+
1093
1268
  module.exports = ModuleGraph;
1094
- module.exports.ModuleGraphConnection = ModuleGraphConnection;