@depup/webpack 5.109.0-depup.0 → 5.110.1-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 (641) hide show
  1. package/README.md +7 -7
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +10 -10
  4. package/lib/APIPlugin.js +123 -17
  5. package/lib/AsyncDependenciesBlock.js +10 -7
  6. package/lib/AutomaticPrefetchPlugin.js +1 -1
  7. package/lib/BannerPlugin.js +10 -6
  8. package/lib/CacheFacade.js +6 -6
  9. package/lib/Chunk.js +14 -11
  10. package/lib/ChunkGraph.js +43 -32
  11. package/lib/ChunkGroup.js +7 -7
  12. package/lib/ChunkTemplate.js +35 -44
  13. package/lib/CircularModulesPlugin.js +205 -28
  14. package/lib/CleanPlugin.js +15 -16
  15. package/lib/CodeGenerationResults.js +11 -8
  16. package/lib/CompatibilityPlugin.js +38 -7
  17. package/lib/Compilation.js +709 -414
  18. package/lib/Compiler.js +69 -42
  19. package/lib/ConcatenationScope.js +117 -8
  20. package/lib/ConditionalInitFragment.js +3 -3
  21. package/lib/ConstPlugin.js +13 -11
  22. package/lib/ContextExclusionPlugin.js +1 -1
  23. package/lib/ContextModule.js +146 -54
  24. package/lib/ContextModuleFactory.js +46 -14
  25. package/lib/ContextReplacementPlugin.js +12 -14
  26. package/lib/DefinePlugin.js +168 -57
  27. package/lib/DependenciesBlock.js +9 -6
  28. package/lib/Dependency.js +36 -16
  29. package/lib/DependencyTemplate.js +11 -12
  30. package/lib/DependencyTemplates.js +3 -3
  31. package/lib/DotenvPlugin.js +50 -13
  32. package/lib/DynamicEntryPlugin.js +8 -4
  33. package/lib/EntryOptionPlugin.js +8 -4
  34. package/lib/EntryPlugin.js +2 -2
  35. package/lib/Entrypoint.js +6 -2
  36. package/lib/EnvironmentPlugin.js +2 -2
  37. package/lib/EvalDevToolModulePlugin.js +8 -4
  38. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  39. package/lib/ExportsInfo.js +123 -19
  40. package/lib/ExportsInfoApiPlugin.js +2 -4
  41. package/lib/ExternalModule.js +242 -84
  42. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  43. package/lib/ExternalsPlugin.js +10 -6
  44. package/lib/FileSystemInfo.js +116 -42
  45. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  46. package/lib/FlagDependencyExportsPlugin.js +76 -19
  47. package/lib/FlagDependencyUsagePlugin.js +63 -57
  48. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  49. package/lib/Generator.js +36 -15
  50. package/lib/HotModuleReplacementPlugin.js +16 -44
  51. package/lib/IgnorePlugin.js +8 -4
  52. package/lib/IgnoreWarningsPlugin.js +2 -2
  53. package/lib/InitFragment.js +28 -36
  54. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  55. package/lib/LazyBarrel.js +3 -4
  56. package/lib/LibraryTemplatePlugin.js +10 -6
  57. package/lib/LoaderOptionsPlugin.js +7 -3
  58. package/lib/LoaderTargetPlugin.js +1 -1
  59. package/lib/MainTemplate.js +49 -42
  60. package/lib/ManifestPlugin.js +12 -11
  61. package/lib/Module.js +62 -33
  62. package/lib/ModuleFactory.js +3 -3
  63. package/lib/ModuleFilenameHelpers.js +22 -6
  64. package/lib/ModuleGraph.js +195 -21
  65. package/lib/ModuleGraphConnection.js +6 -13
  66. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  67. package/lib/ModuleTemplate.js +62 -63
  68. package/lib/MultiCompiler.js +130 -64
  69. package/lib/MultiStats.js +40 -9
  70. package/lib/MultiWatching.js +3 -3
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +29 -19
  73. package/lib/NormalModule.js +221 -156
  74. package/lib/NormalModuleFactory.js +563 -112
  75. package/lib/NormalModuleReplacementPlugin.js +5 -8
  76. package/lib/NullFactory.js +6 -2
  77. package/lib/OptionsApply.js +7 -3
  78. package/lib/Parser.js +7 -3
  79. package/lib/PlatformPlugin.js +2 -2
  80. package/lib/PrefetchPlugin.js +1 -1
  81. package/lib/ProgressPlugin.js +16 -13
  82. package/lib/ProvidePlugin.js +3 -5
  83. package/lib/RawModule.js +25 -17
  84. package/lib/RecordIdsPlugin.js +3 -3
  85. package/lib/RequestShortener.js +1 -1
  86. package/lib/ResolverFactory.js +2 -2
  87. package/lib/RuntimeGlobals.js +22 -10
  88. package/lib/RuntimeModule.js +29 -19
  89. package/lib/RuntimePlugin.js +346 -256
  90. package/lib/RuntimeTemplate.js +2792 -352
  91. package/lib/SelfModuleFactory.js +7 -3
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  93. package/lib/SourceMapDevToolPlugin.js +30 -20
  94. package/lib/Stats.js +3 -4
  95. package/lib/Template.js +55 -25
  96. package/lib/TemplatedPathPlugin.js +96 -14
  97. package/lib/UseStrictPlugin.js +4 -6
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  99. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  100. package/lib/WarnNoModeSetPlugin.js +1 -1
  101. package/lib/WatchIgnorePlugin.js +8 -6
  102. package/lib/Watching.js +8 -8
  103. package/lib/WebpackIsIncludedPlugin.js +2 -4
  104. package/lib/WebpackOptionsApply.js +308 -18
  105. package/lib/WebpackOptionsDefaulter.js +6 -2
  106. package/lib/asset/AssetBytesGenerator.js +12 -10
  107. package/lib/asset/AssetBytesParser.js +2 -4
  108. package/lib/asset/AssetGenerator.js +188 -95
  109. package/lib/asset/AssetModule.js +7 -3
  110. package/lib/asset/AssetModulesPlugin.js +110 -38
  111. package/lib/asset/AssetParser.js +9 -7
  112. package/lib/asset/AssetSourceGenerator.js +60 -13
  113. package/lib/asset/AssetSourceParser.js +2 -4
  114. package/lib/asset/RawDataUrlModule.js +24 -16
  115. package/lib/asset/WebManifestGenerator.js +8 -10
  116. package/lib/asset/WebManifestParser.js +24 -10
  117. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  118. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  119. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  120. package/lib/async-modules/isGeneratorLowered.js +4 -4
  121. package/lib/buildChunkGraph.js +36 -27
  122. package/lib/bun/BunTargetPlugin.js +1 -1
  123. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  124. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  125. package/lib/cache/IdleFileCachePlugin.js +2 -2
  126. package/lib/cache/MemoryCachePlugin.js +18 -10
  127. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  128. package/lib/cache/PackFileCacheStrategy.js +289 -28
  129. package/lib/cache/ResolverCachePlugin.js +38 -18
  130. package/lib/cache/getLazyHashedEtag.js +1 -2
  131. package/lib/cache/mergeEtags.js +1 -1
  132. package/lib/cli.js +1 -3
  133. package/lib/config/browserslistTargetHandler.js +41 -5
  134. package/lib/config/defaults.js +282 -81
  135. package/lib/config/defineConfig.js +10 -2
  136. package/lib/config/getClaimedAssetTypes.js +65 -0
  137. package/lib/config/normalization.js +36 -16
  138. package/lib/config/target.js +46 -3
  139. package/lib/container/ContainerEntryDependency.js +1 -1
  140. package/lib/container/ContainerEntryModule.js +24 -15
  141. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  142. package/lib/container/ContainerPlugin.js +9 -10
  143. package/lib/container/ContainerReferencePlugin.js +6 -2
  144. package/lib/container/FallbackDependency.js +1 -1
  145. package/lib/container/FallbackModule.js +24 -17
  146. package/lib/container/FallbackModuleFactory.js +7 -3
  147. package/lib/container/HoistContainerReferencesPlugin.js +53 -66
  148. package/lib/container/ModuleFederationPlugin.js +7 -18
  149. package/lib/container/RemoteModule.js +27 -19
  150. package/lib/container/RemoteRuntimeModule.js +10 -8
  151. package/lib/container/moduleFederationHooks.js +32 -0
  152. package/lib/css/CssGenerator.js +178 -44
  153. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  154. package/lib/css/CssLoadingRuntimeModule.js +82 -36
  155. package/lib/css/CssModule.js +10 -7
  156. package/lib/css/CssModulesPlugin.js +197 -106
  157. package/lib/css/CssParser.js +1248 -618
  158. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  159. package/lib/css/cssMinify.js +168 -0
  160. package/lib/css/data.js +5324 -0
  161. package/lib/css/syntax.js +10396 -952
  162. package/lib/debug/ProfilingPlugin.js +14 -9
  163. package/lib/deno/DenoTargetPlugin.js +1 -1
  164. package/lib/dependencies/AMDDefineDependency.js +112 -87
  165. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  166. package/lib/dependencies/AMDPlugin.js +9 -7
  167. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  168. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  169. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  170. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  171. package/lib/dependencies/AMDRequireDependency.js +8 -7
  172. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  173. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  174. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  175. package/lib/dependencies/CachedConstDependency.js +11 -8
  176. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  177. package/lib/dependencies/CommonJsExportRequireDependency.js +140 -45
  178. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  179. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  180. package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
  181. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
  182. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  183. package/lib/dependencies/CommonJsPlugin.js +35 -6
  184. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  185. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  186. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  187. package/lib/dependencies/ConstDependency.js +8 -9
  188. package/lib/dependencies/ContextDependency.js +12 -8
  189. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  190. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  191. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  192. package/lib/dependencies/ContextElementDependency.js +31 -12
  193. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  194. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  195. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  196. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  197. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  198. package/lib/dependencies/CssImportDependency.js +18 -9
  199. package/lib/dependencies/CssUrlDependency.js +17 -13
  200. package/lib/dependencies/DllEntryDependency.js +1 -1
  201. package/lib/dependencies/DynamicExports.js +2 -2
  202. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  203. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  204. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  205. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  206. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  207. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  208. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  209. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  210. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +15 -11
  211. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  212. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  213. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  214. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
  215. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  216. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  217. package/lib/dependencies/HarmonyExports.js +7 -4
  218. package/lib/dependencies/HarmonyImportDependency.js +28 -20
  219. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  220. package/lib/dependencies/HarmonyImportGuard.js +21 -30
  221. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  222. package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
  223. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  224. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  225. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  226. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  227. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  228. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  229. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  230. package/lib/dependencies/ImportContextDependency.js +2 -2
  231. package/lib/dependencies/ImportDependency.js +24 -20
  232. package/lib/dependencies/ImportEagerDependency.js +6 -9
  233. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  234. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  235. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  236. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  237. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  238. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  239. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  241. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  242. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  243. package/lib/dependencies/ImportParserPlugin.js +49 -35
  244. package/lib/dependencies/ImportPhase.js +12 -5
  245. package/lib/dependencies/ImportPlugin.js +7 -3
  246. package/lib/dependencies/ImportWeakDependency.js +6 -9
  247. package/lib/dependencies/JsonExportsDependency.js +11 -7
  248. package/lib/dependencies/LoaderDependency.js +2 -2
  249. package/lib/dependencies/LoaderImportDependency.js +2 -2
  250. package/lib/dependencies/LoaderPlugin.js +11 -7
  251. package/lib/dependencies/LocalModuleDependency.js +5 -5
  252. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  253. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  254. package/lib/dependencies/ModuleDependency.js +9 -6
  255. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  256. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  257. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  258. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  259. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  260. package/lib/dependencies/NullDependency.js +3 -3
  261. package/lib/dependencies/ProvidedDependency.js +14 -10
  262. package/lib/dependencies/PureExpressionDependency.js +9 -10
  263. package/lib/dependencies/RequireContextDependency.js +2 -2
  264. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  265. package/lib/dependencies/RequireContextPlugin.js +8 -4
  266. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  267. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  268. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  269. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  270. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  271. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  272. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  273. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  274. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  275. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  276. package/lib/dependencies/RequireResolveDependency.js +4 -4
  277. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  278. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  279. package/lib/dependencies/StaticExportsDependency.js +2 -2
  280. package/lib/dependencies/SystemPlugin.js +10 -6
  281. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  282. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  283. package/lib/dependencies/URLContextDependency.js +2 -2
  284. package/lib/dependencies/URLDependency.js +110 -64
  285. package/lib/dependencies/URLPlugin.js +7 -3
  286. package/lib/dependencies/UnsupportedDependency.js +4 -4
  287. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  288. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  289. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  290. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  291. package/lib/dependencies/WorkerDependency.js +28 -22
  292. package/lib/dependencies/WorkletDependency.js +15 -14
  293. package/lib/dependencies/getFunctionExpression.js +8 -4
  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/DuplicateModulesWarning.js +45 -0
  316. package/lib/errors/DynamicExportsWarning.js +30 -0
  317. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  318. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  319. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  320. package/lib/errors/EvalUsageWarning.js +28 -0
  321. package/lib/errors/HookWebpackError.js +5 -5
  322. package/lib/errors/HotspotsWarning.js +57 -0
  323. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  324. package/lib/errors/InlinedAssetsWarning.js +36 -0
  325. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  326. package/lib/errors/LargeModulesWarning.js +45 -0
  327. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  328. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  329. package/lib/errors/MixedExportsWarning.js +41 -0
  330. package/lib/errors/ModuleDependencyError.js +13 -16
  331. package/lib/errors/ModuleDependencyWarning.js +5 -15
  332. package/lib/errors/ModuleHashingError.js +1 -1
  333. package/lib/errors/ModuleNotFoundError.js +2 -2
  334. package/lib/errors/ModuleParseError.js +1 -2
  335. package/lib/errors/ModuleRestoreError.js +1 -1
  336. package/lib/errors/ModuleStoreError.js +1 -1
  337. package/lib/errors/NodeStuffInWebError.js +1 -1
  338. package/lib/errors/OsDependentRuleWarning.js +31 -0
  339. package/lib/errors/PureAnnotationsWarning.js +36 -0
  340. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  341. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  342. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  343. package/lib/errors/TinyChunksWarning.js +40 -0
  344. package/lib/errors/TopLevelThisWarning.js +34 -0
  345. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  346. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  347. package/lib/errors/UnusedAliasesWarning.js +29 -0
  348. package/lib/errors/UnusedDefinesWarning.js +29 -0
  349. package/lib/errors/UnusedExternalsWarning.js +29 -0
  350. package/lib/errors/UnusedReexportsWarning.js +42 -0
  351. package/lib/errors/UnusedRuleWarning.js +29 -0
  352. package/lib/errors/WebpackError.js +9 -5
  353. package/lib/errors/deriveStackFromNestedError.js +90 -0
  354. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  355. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  356. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  357. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
  358. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  359. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  360. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  361. package/lib/hmr/lazyCompilationBackend.js +28 -10
  362. package/lib/hmr/parserHooks.js +56 -0
  363. package/lib/html/HtmlGenerator.js +299 -79
  364. package/lib/html/HtmlModule.js +7 -3
  365. package/lib/html/HtmlModulesPlugin.js +312 -174
  366. package/lib/html/HtmlParser.js +31 -86
  367. package/lib/html/data.js +1928 -0
  368. package/lib/html/htmlMinify.js +288 -0
  369. package/lib/html/syntax.js +7819 -3331
  370. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  371. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  372. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  373. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  374. package/lib/ids/IdHelpers.js +31 -18
  375. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  376. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  377. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  378. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  379. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  380. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  381. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  382. package/lib/index.js +10 -0
  383. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  384. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  385. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  386. package/lib/javascript/ChunkHelpers.js +1 -1
  387. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  388. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  389. package/lib/javascript/JavascriptGenerator.js +65 -165
  390. package/lib/javascript/JavascriptModule.js +9 -3
  391. package/lib/javascript/JavascriptModulesPlugin.js +181 -162
  392. package/lib/javascript/JavascriptParser.js +291 -112
  393. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  394. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  395. package/lib/javascript/StartupHelpers.js +55 -9
  396. package/lib/javascript/syntax.js +3403 -300
  397. package/lib/json/JsonData.js +8 -4
  398. package/lib/json/JsonGenerator.js +38 -16
  399. package/lib/json/JsonModule.js +7 -3
  400. package/lib/json/JsonModulesPlugin.js +1 -1
  401. package/lib/json/JsonParser.js +5 -6
  402. package/lib/library/AbstractLibraryPlugin.js +20 -14
  403. package/lib/library/AmdLibraryPlugin.js +11 -7
  404. package/lib/library/AssignLibraryPlugin.js +19 -13
  405. package/lib/library/EnableLibraryPlugin.js +2 -2
  406. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  407. package/lib/library/JsonpLibraryPlugin.js +11 -7
  408. package/lib/library/ModuleLibraryPlugin.js +256 -64
  409. package/lib/library/SystemLibraryPlugin.js +12 -8
  410. package/lib/library/UmdLibraryPlugin.js +62 -25
  411. package/lib/loaders/LoaderRunner.js +14 -1
  412. package/lib/loaders/loadLoader.js +8 -4
  413. package/lib/logging/createConsoleLogger.js +7 -4
  414. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  415. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  416. package/lib/node/NodeSourcePlugin.js +1 -1
  417. package/lib/node/NodeTargetPlugin.js +4 -3
  418. package/lib/node/NodeTemplatePlugin.js +1 -1
  419. package/lib/node/NodeWatchFileSystem.js +70 -9
  420. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  421. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +81 -20
  422. package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
  423. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  424. package/lib/node/nodeConsole.js +7 -3
  425. package/lib/optimize/AggressiveMergingPlugin.js +21 -17
  426. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  427. package/lib/optimize/ConcatenatedModule.js +996 -477
  428. package/lib/optimize/ConstExportsPlugin.js +11 -7
  429. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  430. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  431. package/lib/optimize/InlineExports.js +9 -5
  432. package/lib/optimize/InnerGraph.js +28 -12
  433. package/lib/optimize/InnerGraphPlugin.js +23 -18
  434. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  435. package/lib/optimize/MangleExportsPlugin.js +7 -8
  436. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  437. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  438. package/lib/optimize/ModuleConcatenationPlugin.js +124 -59
  439. package/lib/optimize/RealContentHashPlugin.js +20 -13
  440. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  441. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  442. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  443. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  444. package/lib/optimize/SplitChunksPlugin.js +232 -68
  445. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  446. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  447. package/lib/performance/BroadContextsPlugin.js +142 -0
  448. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  449. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  450. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  451. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  452. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  453. package/lib/performance/DynamicExportsPlugin.js +120 -0
  454. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  455. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  456. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  457. package/lib/performance/EvalUsagePlugin.js +115 -0
  458. package/lib/performance/HotspotsPlugin.js +296 -0
  459. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  460. package/lib/performance/LargeModulesPlugin.js +126 -0
  461. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  462. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  463. package/lib/performance/MixedExportsPlugin.js +136 -0
  464. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  465. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  466. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  467. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  468. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  469. package/lib/performance/SizeLimitsPlugin.js +139 -7
  470. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  471. package/lib/performance/TinyChunksPlugin.js +128 -0
  472. package/lib/performance/TopLevelThisPlugin.js +208 -0
  473. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  474. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  475. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  476. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  477. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  478. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  479. package/lib/performance/getModuleSize.js +22 -0
  480. package/lib/performance/getSourceModules.js +22 -0
  481. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  482. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  483. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  484. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  485. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  487. package/lib/prefetch/ResourceHintPlugin.js +377 -136
  488. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  489. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  490. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  491. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  492. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  493. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  494. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  495. package/lib/rules/RuleSetCompiler.js +146 -12
  496. package/lib/rules/UseEffectRulePlugin.js +18 -11
  497. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  498. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  499. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  500. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  501. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  502. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  503. package/lib/runtime/CompatRuntimeModule.js +5 -3
  504. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  505. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  506. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  507. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  508. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  509. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  510. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  511. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  512. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  513. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  514. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  515. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  516. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  517. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  518. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  519. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  520. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  521. package/lib/runtime/NonceRuntimeModule.js +10 -0
  522. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  523. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  524. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  525. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  526. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  527. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  528. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  529. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  530. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  531. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  532. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  533. package/lib/runtime/baseUri.js +63 -0
  534. package/lib/schemes/DataUriPlugin.js +1 -1
  535. package/lib/schemes/FileUriPlugin.js +1 -1
  536. package/lib/schemes/HttpUriPlugin.js +24 -15
  537. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  538. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  539. package/lib/serialization/BinaryMiddleware.js +274 -942
  540. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  541. package/lib/serialization/FileMiddleware.js +305 -66
  542. package/lib/serialization/ObjectMiddleware.js +139 -114
  543. package/lib/serialization/PlainObjectSerializer.js +19 -16
  544. package/lib/sharing/ConsumeSharedModule.js +30 -21
  545. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  546. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  547. package/lib/sharing/ProvideSharedModule.js +25 -16
  548. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  549. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  550. package/lib/sharing/SharePlugin.js +17 -5
  551. package/lib/sharing/ShareRuntimeModule.js +4 -4
  552. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  553. package/lib/sharing/utils.js +1 -3
  554. package/lib/stats/DefaultStatsFactoryPlugin.js +253 -226
  555. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  556. package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
  557. package/lib/stats/StatsFactory.js +56 -35
  558. package/lib/stats/StatsPrinter.js +16 -12
  559. package/lib/typescript/TypeScriptPlugin.js +12 -14
  560. package/lib/url/URLParserPlugin.js +26 -13
  561. package/lib/util/AsyncQueue.js +4 -3
  562. package/lib/util/Hash.js +5 -1
  563. package/lib/util/LazySet.js +35 -22
  564. package/lib/util/LocConverter.js +36 -13
  565. package/lib/util/SourceProcessor.js +1050 -24
  566. package/lib/util/StringXor.js +1 -1
  567. package/lib/util/chainedImports.js +9 -5
  568. package/lib/util/cleverMerge.js +1 -1
  569. package/lib/util/comparators.js +45 -14
  570. package/lib/util/concatenate.js +203 -77
  571. package/lib/util/conventions.js +5 -1
  572. package/lib/util/createHash.js +2 -2
  573. package/lib/util/createHooksRegistry.js +8 -10
  574. package/lib/util/dataURL.js +225 -1
  575. package/lib/util/extractSourceMap.js +4 -3
  576. package/lib/util/findCaseMismatch.js +139 -0
  577. package/lib/util/formatLocation.js +1 -2
  578. package/lib/util/fs.js +22 -5
  579. package/lib/util/globUtils.js +298 -24
  580. package/lib/util/hash/BatchedHash.js +5 -1
  581. package/lib/util/hash/BulkUpdateHash.js +5 -1
  582. package/lib/util/hash/DebugHash.js +5 -1
  583. package/lib/util/hash/hash-digest.js +6 -2
  584. package/lib/util/identifier.js +25 -1
  585. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  586. package/lib/util/internalSerializables.js +6 -0
  587. package/lib/util/lazyModule.js +56 -0
  588. package/lib/util/makeSerializable.js +7 -3
  589. package/lib/util/matchAlias.js +25 -0
  590. package/lib/util/mimeTypes.js +11 -5
  591. package/lib/util/nonNumericOnlyHash.js +4 -3
  592. package/lib/util/parseJson.js +5 -3
  593. package/lib/util/preloadModuleType.js +32 -0
  594. package/lib/util/registerExternalSerializer.js +7 -5
  595. package/lib/util/runtime.js +2 -2
  596. package/lib/util/semver.js +1 -1
  597. package/lib/util/serialization.js +28 -28
  598. package/lib/util/source.js +2 -2
  599. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  600. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  601. package/lib/wasm/wasmModuleFilename.js +54 -0
  602. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  603. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  604. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  605. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  606. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  607. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  608. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  609. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  610. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  611. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  612. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  613. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  614. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  615. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  616. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  617. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  618. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  619. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  620. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  621. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  622. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  623. package/lib/web/JsonpTemplatePlugin.js +2 -2
  624. package/lib/webpack.js +22 -11
  625. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  626. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  627. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  628. package/module.d.ts +1 -0
  629. package/package.json +37 -30
  630. package/schemas/WebpackOptions.check.js +1 -1
  631. package/schemas/WebpackOptions.json +780 -91
  632. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  634. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  635. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  636. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  637. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  639. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  640. package/types.d.ts +4013 -738
  641. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -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;
@@ -5,10 +5,9 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("./Dependency")} Dependency */
9
- /** @typedef {import("./Dependency").GetConditionFn} GetConditionFn */
10
- /** @typedef {import("./Module")} Module */
11
- /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
8
+ /** @import Dependency, { GetConditionFn } from "./Dependency" */
9
+ /** @import Module from "./Module" */
10
+ /** @import { RuntimeSpec } from "./util/runtime" */
12
11
 
13
12
  /**
14
13
  * Module itself is not connected, but transitive modules are connected transitively.
@@ -195,14 +194,8 @@ class ModuleGraphConnection {
195
194
  }
196
195
  }
197
196
 
198
- /** @typedef {typeof TRANSITIVE_ONLY} TRANSITIVE_ONLY */
199
- /** @typedef {typeof CIRCULAR_CONNECTION} CIRCULAR_CONNECTION */
197
+ ModuleGraphConnection.CIRCULAR_CONNECTION = CIRCULAR_CONNECTION;
198
+ ModuleGraphConnection.TRANSITIVE_ONLY = TRANSITIVE_ONLY;
199
+ ModuleGraphConnection.addConnectionStates = addConnectionStates;
200
200
 
201
201
  module.exports = ModuleGraphConnection;
202
- module.exports.CIRCULAR_CONNECTION = /** @type {typeof CIRCULAR_CONNECTION} */ (
203
- CIRCULAR_CONNECTION
204
- );
205
- module.exports.TRANSITIVE_ONLY = /** @type {typeof TRANSITIVE_ONLY} */ (
206
- TRANSITIVE_ONLY
207
- );
208
- module.exports.addConnectionStates = addConnectionStates;
@@ -11,14 +11,12 @@ const Template = require("./Template");
11
11
  const CssModulesPlugin = require("./css/CssModulesPlugin");
12
12
  const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
13
13
 
14
- /** @typedef {import("webpack-sources").Source} Source */
15
- /** @typedef {import("./Compiler")} Compiler */
16
- /** @typedef {import("./ExportsInfo")} ExportsInfo */
17
- /** @typedef {import("./ExportsInfo").ExportInfo} ExportInfo */
18
- /** @typedef {import("./Module")} Module */
19
- /** @typedef {import("./Module").BuildMeta} BuildMeta */
20
- /** @typedef {import("./ModuleGraph")} ModuleGraph */
21
- /** @typedef {import("./RequestShortener")} RequestShortener */
14
+ /** @import { Source } from "webpack-sources" */
15
+ /** @import Compiler from "./Compiler" */
16
+ /** @import ExportsInfo, { ExportInfo } from "./ExportsInfo" */
17
+ /** @import Module, { BuildMeta } from "./Module" */
18
+ /** @import ModuleGraph from "./ModuleGraph" */
19
+ /** @import RequestShortener from "./RequestShortener" */
22
20
 
23
21
  /**
24
22
  * Join iterable with comma.
@@ -49,7 +47,7 @@ const joinIterableWithComma = (iterable) => {
49
47
  * @param {ExportsInfo} exportsInfo data
50
48
  * @param {ModuleGraph} moduleGraph moduleGraph
51
49
  * @param {RequestShortener} requestShortener requestShortener
52
- * @param {Set<ExportInfo>} alreadyPrinted deduplication set
50
+ * @param {Set<InstanceType<ExportInfo>>} alreadyPrinted deduplication set
53
51
  * @returns {void}
54
52
  */
55
53
  const printExportsInfoToSource = (
@@ -65,7 +63,7 @@ const printExportsInfoToSource = (
65
63
  let alreadyPrintedExports = 0;
66
64
 
67
65
  // determine exports to print
68
- /** @type {ExportInfo[]} */
66
+ /** @type {InstanceType<ExportInfo>[]} */
69
67
  const printedExports = [];
70
68
  for (const exportInfo of exportsInfo.orderedExports) {
71
69
  if (!alreadyPrinted.has(exportInfo)) {
@@ -6,18 +6,21 @@
6
6
  "use strict";
7
7
 
8
8
  const util = require("util");
9
- const memoize = require("./util/memoize");
9
+ const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
10
10
 
11
- /** @typedef {import("tapable").Tap} Tap */
12
- /** @typedef {import("webpack-sources").Source} Source */
13
- /** @typedef {import("./Chunk")} Chunk */
14
- /** @typedef {import("./Compilation")} Compilation */
15
- /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
16
- /** @typedef {import("./Module")} Module */
17
- /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
18
- /** @typedef {import("./javascript/JavascriptModulesPlugin").ChunkRenderContext} ChunkRenderContext */
19
- /** @typedef {import("./javascript/JavascriptModulesPlugin").ModuleRenderContext} ModuleRenderContext */
20
- /** @typedef {import("./util/Hash")} Hash */
11
+ /** @import { Tap } from "tapable" */
12
+ /** @import { Source } from "webpack-sources" */
13
+ /** @import Compilation from "./Compilation" */
14
+ /** @import DependencyTemplates from "./DependencyTemplates" */
15
+ /** @import Module from "./Module" */
16
+ /** @import RuntimeTemplate from "./RuntimeTemplate" */
17
+ /**
18
+ * @import {
19
+ * ChunkRenderContext,
20
+ * ModuleRenderContext
21
+ * } from "./javascript/JavascriptModulesPlugin"
22
+ */
23
+ /** @import Hash from "./util/Hash" */
21
24
 
22
25
  /**
23
26
  * Defines the if set type used by this module.
@@ -25,10 +28,6 @@ const memoize = require("./util/memoize");
25
28
  * @typedef {import("tapable").IfSet<T>} IfSet
26
29
  */
27
30
 
28
- const getJavascriptModulesPlugin = memoize(() =>
29
- require("./javascript/JavascriptModulesPlugin")
30
- );
31
-
32
31
  // TODO webpack 6: remove this class
33
32
  class ModuleTemplate {
34
33
  /**
@@ -51,18 +50,18 @@ class ModuleTemplate {
51
50
  * @param {(source: Source, module: Module, moduleRenderContext: ModuleRenderContext, dependencyTemplates: DependencyTemplates) => Source} fn fn
52
51
  */
53
52
  (options, fn) => {
54
- getJavascriptModulesPlugin()
55
- .getCompilationHooks(compilation)
56
- .renderModuleContent.tap(
57
- options,
58
- (source, module, renderContext) =>
59
- fn(
60
- source,
61
- module,
62
- renderContext,
63
- renderContext.dependencyTemplates
64
- )
65
- );
53
+ JavascriptModulesPlugin.getCompilationHooks(
54
+ compilation
55
+ ).renderModuleContent.tap(
56
+ options,
57
+ (source, module, renderContext) =>
58
+ fn(
59
+ source,
60
+ module,
61
+ renderContext,
62
+ renderContext.dependencyTemplates
63
+ )
64
+ );
66
65
  },
67
66
  "ModuleTemplate.hooks.content is deprecated (use JavascriptModulesPlugin.getCompilationHooks().renderModuleContent instead)",
68
67
  "DEP_MODULE_TEMPLATE_CONTENT"
@@ -77,18 +76,18 @@ class ModuleTemplate {
77
76
  * @param {(source: Source, module: Module, moduleRenderContext: ModuleRenderContext, dependencyTemplates: DependencyTemplates) => Source} fn fn
78
77
  */
79
78
  (options, fn) => {
80
- getJavascriptModulesPlugin()
81
- .getCompilationHooks(compilation)
82
- .renderModuleContent.tap(
83
- options,
84
- (source, module, renderContext) =>
85
- fn(
86
- source,
87
- module,
88
- renderContext,
89
- renderContext.dependencyTemplates
90
- )
91
- );
79
+ JavascriptModulesPlugin.getCompilationHooks(
80
+ compilation
81
+ ).renderModuleContent.tap(
82
+ options,
83
+ (source, module, renderContext) =>
84
+ fn(
85
+ source,
86
+ module,
87
+ renderContext,
88
+ renderContext.dependencyTemplates
89
+ )
90
+ );
92
91
  },
93
92
  "ModuleTemplate.hooks.module is deprecated (use JavascriptModulesPlugin.getCompilationHooks().renderModuleContent instead)",
94
93
  "DEP_MODULE_TEMPLATE_MODULE"
@@ -103,18 +102,18 @@ class ModuleTemplate {
103
102
  * @param {(source: Source, module: Module, chunkRenderContext: ChunkRenderContext, dependencyTemplates: DependencyTemplates) => Source} fn fn
104
103
  */
105
104
  (options, fn) => {
106
- getJavascriptModulesPlugin()
107
- .getCompilationHooks(compilation)
108
- .renderModuleContainer.tap(
109
- options,
110
- (source, module, renderContext) =>
111
- fn(
112
- source,
113
- module,
114
- renderContext,
115
- renderContext.dependencyTemplates
116
- )
117
- );
105
+ JavascriptModulesPlugin.getCompilationHooks(
106
+ compilation
107
+ ).renderModuleContainer.tap(
108
+ options,
109
+ (source, module, renderContext) =>
110
+ fn(
111
+ source,
112
+ module,
113
+ renderContext,
114
+ renderContext.dependencyTemplates
115
+ )
116
+ );
118
117
  },
119
118
  "ModuleTemplate.hooks.render is deprecated (use JavascriptModulesPlugin.getCompilationHooks().renderModuleContainer instead)",
120
119
  "DEP_MODULE_TEMPLATE_RENDER"
@@ -129,18 +128,18 @@ class ModuleTemplate {
129
128
  * @param {(source: Source, module: Module, chunkRenderContext: ChunkRenderContext, dependencyTemplates: DependencyTemplates) => Source} fn fn
130
129
  */
131
130
  (options, fn) => {
132
- getJavascriptModulesPlugin()
133
- .getCompilationHooks(compilation)
134
- .renderModulePackage.tap(
135
- options,
136
- (source, module, renderContext) =>
137
- fn(
138
- source,
139
- module,
140
- renderContext,
141
- renderContext.dependencyTemplates
142
- )
143
- );
131
+ JavascriptModulesPlugin.getCompilationHooks(
132
+ compilation
133
+ ).renderModulePackage.tap(
134
+ options,
135
+ (source, module, renderContext) =>
136
+ fn(
137
+ source,
138
+ module,
139
+ renderContext,
140
+ renderContext.dependencyTemplates
141
+ )
142
+ );
144
143
  },
145
144
  "ModuleTemplate.hooks.package is deprecated (use JavascriptModulesPlugin.getCompilationHooks().renderModulePackage instead)",
146
145
  "DEP_MODULE_TEMPLATE_PACKAGE"