webpack 5.111.0 → 5.112.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 (781) hide show
  1. package/README.md +1 -1
  2. package/lib/Chunk.js +3 -966
  3. package/lib/Compilation.js +237 -138
  4. package/lib/Compiler.js +23 -24
  5. package/lib/Dependency.js +3 -551
  6. package/lib/DependencyTemplate.js +3 -69
  7. package/lib/EntryPlugin.js +3 -68
  8. package/lib/Entrypoint.js +3 -121
  9. package/lib/ExternalsPlugin.js +3 -92
  10. package/lib/FileSystemInfo.js +3 -4629
  11. package/lib/InitFragment.js +3 -204
  12. package/lib/LibraryTemplatePlugin.js +3 -46
  13. package/lib/ModuleFilenameHelpers.js +3 -400
  14. package/lib/ModuleNotFoundError.js +2 -2
  15. package/lib/MultiCompiler.js +43 -24
  16. package/lib/NormalModule.js +3 -2190
  17. package/lib/NullFactory.js +3 -22
  18. package/lib/ProgressPlugin.js +3 -908
  19. package/lib/RawModule.js +3 -197
  20. package/lib/RequestShortener.js +3 -37
  21. package/lib/SingleEntryPlugin.js +1 -1
  22. package/lib/WebpackError.js +2 -2
  23. package/lib/asset/AssetBytesGenerator.js +15 -9
  24. package/lib/asset/AssetBytesParser.js +3 -3
  25. package/lib/asset/AssetGenerator.js +61 -38
  26. package/lib/asset/AssetModule.js +2 -2
  27. package/lib/asset/AssetModulesPlugin.js +6 -9
  28. package/lib/asset/AssetParser.js +3 -3
  29. package/lib/asset/AssetSourceGenerator.js +15 -9
  30. package/lib/asset/AssetSourceParser.js +3 -3
  31. package/lib/asset/RawDataUrlModule.js +17 -10
  32. package/lib/asset/WebManifestGenerator.js +7 -7
  33. package/lib/asset/WebManifestParser.js +5 -5
  34. package/lib/async-modules/AsyncModuleHelpers.js +6 -5
  35. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
  36. package/lib/async-modules/InferAsyncModulesPlugin.js +4 -3
  37. package/lib/async-modules/isGeneratorLowered.js +3 -3
  38. package/lib/bun/BunTargetPlugin.js +1 -1
  39. package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
  40. package/lib/{Cache.js → cache/Cache.js} +1 -1
  41. package/lib/{CacheFacade.js → cache/CacheFacade.js} +5 -5
  42. package/lib/cache/IdleFileCachePlugin.js +2 -2
  43. package/lib/cache/MemoryCachePlugin.js +6 -6
  44. package/lib/cache/MemoryWithGcCachePlugin.js +9 -10
  45. package/lib/cache/PackFileCacheStrategy.js +11 -28
  46. package/lib/cache/ResolverCachePlugin.js +8 -4
  47. package/lib/cache/getLazyHashedEtag.js +3 -5
  48. package/lib/cache/mergeEtags.js +1 -1
  49. package/lib/{OptionsApply.js → config/OptionsApply.js} +3 -3
  50. package/lib/{PlatformPlugin.js → config/PlatformPlugin.js} +2 -2
  51. package/lib/{WebpackOptionsApply.js → config/WebpackOptionsApply.js} +217 -200
  52. package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
  53. package/lib/config/browserslistTargetHandler.js +3 -9
  54. package/lib/{cli.js → config/cli.js} +5 -158
  55. package/lib/config/defaults.js +192 -122
  56. package/lib/config/getClaimedAssetTypes.js +28 -21
  57. package/lib/config/normalization.js +18 -7
  58. package/lib/config/target.js +13 -4
  59. package/lib/container/ContainerEntryDependency.js +1 -1
  60. package/lib/container/ContainerEntryModule.js +13 -11
  61. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  62. package/lib/container/ContainerExposedDependency.js +1 -1
  63. package/lib/container/ContainerPlugin.js +178 -5
  64. package/lib/container/ContainerReferencePlugin.js +75 -14
  65. package/lib/container/FallbackDependency.js +1 -1
  66. package/lib/container/FallbackItemDependency.js +1 -1
  67. package/lib/container/FallbackModule.js +12 -10
  68. package/lib/container/FallbackModuleFactory.js +2 -2
  69. package/lib/container/HoistContainerReferencesPlugin.js +10 -11
  70. package/lib/container/ModuleFederationPlugin.js +306 -7
  71. package/lib/container/RemoteModule.js +14 -10
  72. package/lib/container/RemoteRuntimeModule.js +5 -5
  73. package/lib/container/RemoteToExternalDependency.js +1 -1
  74. package/lib/container/moduleFederationHooks.js +1 -1
  75. package/lib/{ContextExclusionPlugin.js → context/ContextExclusionPlugin.js} +1 -1
  76. package/lib/{ContextModule.js → context/ContextModule.js} +50 -36
  77. package/lib/{ContextModuleFactory.js → context/ContextModuleFactory.js} +25 -24
  78. package/lib/{ContextReplacementPlugin.js → context/ContextReplacementPlugin.js} +4 -4
  79. package/lib/css/CssGenerator.js +57 -42
  80. package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
  81. package/lib/css/CssLoadingRuntimeModule.js +77 -44
  82. package/lib/css/CssModule.js +27 -29
  83. package/lib/css/CssModulesPlugin.js +128 -44
  84. package/lib/css/CssParser.js +700 -311
  85. package/lib/css/CssServerStylesRuntimeModule.js +3 -3
  86. package/lib/css/cssMinify.js +130 -54
  87. package/lib/css/data.js +7017 -4648
  88. package/lib/css/syntax-parser.js +19873 -0
  89. package/lib/css/syntax-printer.js +6037 -0
  90. package/lib/css/syntax.js +37 -17370
  91. package/lib/debug/ProfilingPlugin.js +55 -23
  92. package/lib/{DefinePlugin.js → define/DefinePlugin.js} +407 -41
  93. package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +25 -29
  94. package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +2 -2
  95. package/lib/deno/DenoTargetPlugin.js +1 -1
  96. package/lib/dependencies/ConstDependency.js +3 -120
  97. package/lib/dependencies/ContextElementDependency.js +5 -172
  98. package/lib/dependencies/NullDependency.js +3 -37
  99. package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
  100. package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -10
  101. package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
  102. package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
  103. package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
  104. package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
  105. package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +10 -10
  106. package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
  107. package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
  108. package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
  109. package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
  110. package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
  111. package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
  112. package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
  113. package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
  114. package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
  115. package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +176 -44
  116. package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
  117. package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +138 -61
  118. package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
  119. package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +39 -35
  120. package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +13 -12
  121. package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +47 -35
  122. package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
  123. package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
  124. package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +19 -20
  125. package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
  126. package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
  127. package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +5 -5
  128. package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
  129. package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
  130. package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
  131. package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
  132. package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
  133. package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
  134. package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
  135. package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
  136. package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
  137. package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
  138. package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
  139. package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
  140. package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +34 -18
  141. package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
  142. package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
  143. package/lib/dependencies/context/ContextElementDependency.js +198 -0
  144. package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
  145. package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +9 -9
  146. package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
  147. package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
  148. package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +4 -4
  149. package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +9 -9
  150. package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
  151. package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
  152. package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
  153. package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +12 -11
  154. package/lib/dependencies/core/ConstDependency.js +131 -0
  155. package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
  156. package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
  157. package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
  158. package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
  159. package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
  160. package/lib/dependencies/core/NullDependency.js +44 -0
  161. package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
  162. package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
  163. package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +375 -100
  164. package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +26 -22
  165. package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
  166. package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
  167. package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +26 -21
  168. package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
  169. package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
  170. package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
  171. package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +40 -41
  172. package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +22 -21
  173. package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
  174. package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +62 -93
  175. package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +83 -49
  176. package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
  177. package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
  178. package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +136 -122
  179. package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +68 -43
  180. package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +68 -65
  181. package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -4
  182. package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
  183. package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +74 -71
  184. package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +199 -97
  185. package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +26 -29
  186. package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +86 -43
  187. package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +110 -61
  188. package/lib/dependencies/esm/ESMModulesPlugin.js +207 -0
  189. package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
  190. package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -11
  191. package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +2 -2
  192. package/lib/{util → dependencies/helpers}/chainedImports.js +8 -9
  193. package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
  194. package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
  195. package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
  196. package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
  197. package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
  198. package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
  199. package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +125 -243
  200. package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -12
  201. package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +72 -23
  202. package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +53 -19
  203. package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
  204. package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
  205. package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
  206. package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
  207. package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +20 -20
  208. package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
  209. package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
  210. package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
  211. package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
  212. package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
  213. package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +126 -107
  214. package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
  215. package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
  216. package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
  217. package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
  218. package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +34 -25
  219. package/lib/{url → dependencies/url}/URLParserPlugin.js +22 -26
  220. package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
  221. package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
  222. package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
  223. package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
  224. package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +46 -54
  225. package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +28 -20
  226. package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +25 -27
  227. package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
  228. package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
  229. package/lib/devtool/ModuleFilenameHelpers.js +413 -0
  230. package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
  231. package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +207 -129
  232. package/lib/{util → devtool}/generateDebugId.js +1 -1
  233. package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
  234. package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
  235. package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
  236. package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
  237. package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
  238. package/lib/dll/DelegatedModule.js +20 -18
  239. package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
  240. package/lib/dll/DelegatedPlugin.js +1 -1
  241. package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
  242. package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
  243. package/lib/dll/DllEntryPlugin.js +3 -3
  244. package/lib/dll/DllModule.js +11 -9
  245. package/lib/dll/DllModuleFactory.js +3 -3
  246. package/lib/dll/DllPlugin.js +18 -6
  247. package/lib/dll/DllReferencePlugin.js +102 -26
  248. package/lib/dll/LibManifestPlugin.js +9 -7
  249. package/lib/electron/ElectronTargetPlugin.js +2 -2
  250. package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
  251. package/lib/{dependencies → entry}/EntryDependency.js +11 -2
  252. package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
  253. package/lib/entry/EntryPlugin.js +75 -0
  254. package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
  255. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  256. package/lib/errors/BuildCycleError.js +1 -1
  257. package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
  258. package/lib/errors/ChunkRenderError.js +1 -1
  259. package/lib/errors/CodeGenerationError.js +1 -1
  260. package/lib/errors/CommentCompilationWarning.js +1 -1
  261. package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
  262. package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
  263. package/lib/errors/DeprecatedOptionWarning.js +30 -0
  264. package/lib/errors/DllManifestError.js +26 -0
  265. package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
  266. package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
  267. package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
  268. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  269. package/lib/errors/ErrorHelpers.js +222 -0
  270. package/lib/errors/ExternalStarReexportError.js +2 -2
  271. package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
  272. package/lib/errors/HookWebpackError.js +6 -5
  273. package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
  274. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  275. package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
  276. package/lib/errors/ModuleBuildError.js +1 -1
  277. package/lib/errors/ModuleDependencyError.js +2 -2
  278. package/lib/errors/ModuleDependencyWarning.js +2 -2
  279. package/lib/errors/ModuleError.js +1 -1
  280. package/lib/errors/ModuleHashingError.js +1 -1
  281. package/lib/errors/ModuleNotFoundError.js +3 -3
  282. package/lib/errors/ModuleParseError.js +1 -1
  283. package/lib/errors/ModuleRestoreError.js +1 -1
  284. package/lib/errors/ModuleStoreError.js +1 -1
  285. package/lib/errors/ModuleWarning.js +1 -1
  286. package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
  287. package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
  288. package/lib/errors/NodeStuffInWebError.js +7 -2
  289. package/lib/errors/PathVariableError.js +31 -0
  290. package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
  291. package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
  292. package/lib/errors/RuntimeModuleGenerationError.js +51 -0
  293. package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
  294. package/lib/errors/SystemImportDeprecationWarning.js +43 -0
  295. package/lib/errors/UnmergeableEntryExportsError.js +34 -0
  296. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  297. package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
  298. package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
  299. package/lib/errors/WebpackError.js +12 -3
  300. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
  301. package/lib/esm/ModuleChunkFormatPlugin.js +19 -19
  302. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
  303. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
  304. package/lib/{ExternalModule.js → externals/ExternalModule.js} +85 -63
  305. package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +41 -39
  306. package/lib/externals/ExternalsPlugin.js +99 -0
  307. package/lib/fs/FileSystemInfo.js +4642 -0
  308. package/lib/{util → fs}/fs.js +22 -9
  309. package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
  310. package/lib/graph/Chunk.js +985 -0
  311. package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +187 -80
  312. package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
  313. package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
  314. package/lib/graph/Dependency.js +628 -0
  315. package/lib/graph/Entrypoint.js +136 -0
  316. package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +151 -99
  317. package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
  318. package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +36 -39
  319. package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
  320. package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +163 -72
  321. package/lib/{util → graph}/findGraphRoots.js +20 -21
  322. package/lib/graph/isDependencyKind.js +23 -0
  323. package/lib/hmr/HotModuleReplacement.runtime.js +2 -2
  324. package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +49 -47
  325. package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
  326. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +10 -8
  327. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
  328. package/lib/hmr/LazyCompilationPlugin.js +34 -26
  329. package/lib/html/HtmlGenerator.js +168 -125
  330. package/lib/html/HtmlModule.js +6 -2
  331. package/lib/html/HtmlModulesPlugin.js +260 -215
  332. package/lib/html/HtmlParser.js +598 -292
  333. package/lib/html/builtinEmbeddedRenderer.js +60 -13
  334. package/lib/html/data.js +23 -1
  335. package/lib/html/htmlMinify.js +120 -51
  336. package/lib/html/syntax-parser.js +15796 -0
  337. package/lib/html/syntax-printer.js +1034 -0
  338. package/lib/html/syntax.js +37 -14062
  339. package/lib/html/xmlMinify.js +67 -0
  340. package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
  341. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  342. package/lib/ids/HashedModuleIdsPlugin.js +31 -4
  343. package/lib/ids/IdHelpers.js +4 -4
  344. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  345. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
  346. package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
  347. package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
  348. package/lib/ids/SyncModuleIdsPlugin.js +3 -3
  349. package/lib/{util → ids}/numberHash.js +1 -1
  350. package/lib/index.js +348 -99
  351. package/lib/{APIPlugin.js → javascript/APIPlugin.js} +29 -30
  352. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
  353. package/lib/javascript/BasicEvaluatedExpression.js +4 -4
  354. package/lib/javascript/ChunkHelpers.js +64 -4
  355. package/lib/javascript/CommonJsChunkFormatPlugin.js +4 -7
  356. package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +10 -11
  357. package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +90 -139
  358. package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
  359. package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
  360. package/lib/javascript/JavascriptGenerator.js +25 -18
  361. package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +7 -7
  362. package/lib/javascript/JavascriptModule.js +4 -3
  363. package/lib/javascript/JavascriptModulesPlugin.js +458 -256
  364. package/lib/javascript/JavascriptParser.js +916 -287
  365. package/lib/javascript/JavascriptParserHelpers.js +1 -1
  366. package/lib/javascript/MergedEntryExports.js +196 -0
  367. package/lib/javascript/ScopeAnalyzer.js +3840 -5
  368. package/lib/javascript/StartupHelpers.js +6 -6
  369. package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +12 -15
  370. package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
  371. package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
  372. package/lib/javascript/data.js +533 -122
  373. package/lib/javascript/jsMinify.js +272 -0
  374. package/lib/javascript/regexp.js +67 -32
  375. package/lib/javascript/syntax-parser.js +18561 -0
  376. package/lib/javascript/syntax-printer-data.js +933 -0
  377. package/lib/javascript/syntax-printer.js +47106 -0
  378. package/lib/javascript/syntax.js +20 -10946
  379. package/lib/json/JsonData.js +1 -1
  380. package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
  381. package/lib/json/JsonGenerator.js +17 -11
  382. package/lib/json/JsonModule.js +2 -2
  383. package/lib/json/JsonModulesPlugin.js +1 -1
  384. package/lib/json/JsonParser.js +5 -5
  385. package/lib/json/jsonMinify.js +69 -0
  386. package/lib/library/AbstractLibraryPlugin.js +28 -15
  387. package/lib/library/AmdLibraryPlugin.js +4 -4
  388. package/lib/library/AssignLibraryPlugin.js +27 -11
  389. package/lib/library/EnableLibraryPlugin.js +1 -1
  390. package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
  391. package/lib/library/JsonpLibraryPlugin.js +1 -1
  392. package/lib/library/LibraryTemplatePlugin.js +53 -0
  393. package/lib/library/ModuleLibraryPlugin.js +207 -285
  394. package/lib/library/SystemLibraryPlugin.js +6 -8
  395. package/lib/library/UmdLibraryPlugin.js +3 -4
  396. package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
  397. package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
  398. package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
  399. package/lib/{dependencies → loaders}/LoaderPlugin.js +27 -2
  400. package/lib/loaders/LoaderRunner.js +160 -22
  401. package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
  402. package/lib/logging/Logger.js +7 -9
  403. package/lib/logging/ProgressPlugin.js +957 -0
  404. package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
  405. package/lib/{Generator.js → module/Generator.js} +38 -14
  406. package/lib/{Module.js → module/Module.js} +122 -54
  407. package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
  408. package/lib/module/NormalModule.js +2348 -0
  409. package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +53 -54
  410. package/lib/module/NullFactory.js +29 -0
  411. package/lib/{Parser.js → module/Parser.js} +3 -3
  412. package/lib/module/RawModule.js +208 -0
  413. package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
  414. package/lib/{util → module}/extractSourceMap.js +2 -2
  415. package/lib/{util → module}/findCaseMismatch.js +2 -2
  416. package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
  417. package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
  418. package/lib/{dependencies → node}/ExternalModuleInitFragment.js +6 -5
  419. package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
  420. package/lib/node/NodeEnvironmentPlugin.js +11 -1
  421. package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
  422. package/lib/node/NodeTargetPlugin.js +1 -1
  423. package/lib/node/NodeWatchFileSystem.js +61 -15
  424. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
  425. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +9 -7
  426. package/lib/node/ReadFileCompileWasmPlugin.js +7 -5
  427. package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
  428. package/lib/node/nodeConsole.js +2 -4
  429. package/lib/optimize/AggressiveMergingPlugin.js +5 -7
  430. package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
  431. package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +13 -13
  432. package/lib/optimize/ConcatenatedModule.js +305 -309
  433. package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
  434. package/lib/optimize/ConstExportsPlugin.js +7 -7
  435. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  436. package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
  437. package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +25 -30
  438. package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +26 -30
  439. package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
  440. package/lib/optimize/FlagIncludedChunksPlugin.js +5 -13
  441. package/lib/optimize/InlineExports.js +11 -3
  442. package/lib/optimize/InnerGraph.js +5 -13
  443. package/lib/optimize/InnerGraphPlugin.js +17 -23
  444. package/lib/optimize/LazyBarrels.js +584 -0
  445. package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
  446. package/lib/optimize/LimitChunkCountPlugin.js +21 -15
  447. package/lib/optimize/MangleExportsPlugin.js +8 -9
  448. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
  449. package/lib/optimize/MinChunkSizePlugin.js +9 -6
  450. package/lib/optimize/ModuleConcatenationPlugin.js +23 -16
  451. package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
  452. package/lib/optimize/RealContentHashPlugin.js +16 -7
  453. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  454. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  455. package/lib/optimize/SideEffectsFlagPlugin.js +25 -37
  456. package/lib/optimize/SplitChunksPlugin.js +715 -159
  457. package/lib/{util → optimize}/TupleQueue.js +9 -9
  458. package/lib/optimize/chunkSetIntersections.js +437 -0
  459. package/lib/{util → optimize}/deterministicGrouping.js +25 -30
  460. package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
  461. package/lib/{CleanPlugin.js → output/CleanPlugin.js} +66 -24
  462. package/lib/{CopyPlugin.js → output/CopyPlugin.js} +142 -67
  463. package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
  464. package/lib/output/SSRManifestPlugin.js +349 -0
  465. package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
  466. package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
  467. package/lib/performance/BroadContextsPlugin.js +4 -4
  468. package/lib/performance/CacheEffectivenessPlugin.js +5 -7
  469. package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
  470. package/lib/performance/DuplicateModulesPlugin.js +3 -4
  471. package/lib/performance/DuplicatePackagesPlugin.js +3 -3
  472. package/lib/performance/DynamicExportsPlugin.js +2 -2
  473. package/lib/performance/EvalUsagePlugin.js +3 -3
  474. package/lib/performance/HotspotsPlugin.js +11 -10
  475. package/lib/performance/LargeModulesPlugin.js +2 -3
  476. package/lib/performance/LegacyJavascriptPlugin.js +1 -2
  477. package/lib/performance/MissingSideEffectsPlugin.js +2 -3
  478. package/lib/performance/MissingSourceMapsPlugin.js +5 -6
  479. package/lib/performance/PureAnnotationsPlugin.js +3 -3
  480. package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
  481. package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
  482. package/lib/performance/SizeLimitsPlugin.js +13 -16
  483. package/lib/performance/TopLevelThisPlugin.js +8 -7
  484. package/lib/performance/UnsplitVendorsPlugin.js +1 -2
  485. package/lib/performance/UnusedAliasesPlugin.js +6 -7
  486. package/lib/performance/UnusedAssetsPlugin.js +5 -5
  487. package/lib/performance/UnusedDefinesPlugin.js +2 -2
  488. package/lib/performance/UnusedExternalsPlugin.js +3 -4
  489. package/lib/performance/UnusedFederationPlugin.js +2 -4
  490. package/lib/performance/UnusedModulesPlugin.js +5 -4
  491. package/lib/performance/getModuleSize.js +1 -1
  492. package/lib/performance/hasOnlyUnusedExports.js +4 -4
  493. package/lib/performance/isOnlyReexported.js +7 -6
  494. package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
  495. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
  496. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +7 -9
  497. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
  498. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
  499. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
  500. package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
  501. package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
  502. package/lib/prefetch/ResourceHintPlugin.js +82 -65
  503. package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
  504. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -13
  505. package/lib/prefetch/parseResourceHintOptions.js +4 -3
  506. package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
  507. package/lib/{dependencies → provide}/ProvidedDependency.js +14 -13
  508. package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
  509. package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
  510. package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
  511. package/lib/resolve/getResolveOptionsKey.js +59 -0
  512. package/lib/rules/RuleSetCompiler.js +27 -46
  513. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
  514. package/lib/runtime/AsyncModuleRuntimeModule.js +10 -9
  515. package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
  516. package/lib/runtime/BaseUriRuntimeModule.js +3 -3
  517. package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
  518. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
  519. package/lib/runtime/CompatRuntimeModule.js +4 -4
  520. package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
  521. package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
  522. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  523. package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
  524. package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
  525. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
  526. package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
  527. package/lib/runtime/GetChunkFilenameRuntimeModule.js +9 -10
  528. package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
  529. package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
  530. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
  531. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
  532. package/lib/runtime/GlobalRuntimeModule.js +5 -7
  533. package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
  534. package/lib/runtime/HelperRuntimeModule.js +16 -1
  535. package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
  536. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +135 -102
  537. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
  538. package/lib/runtime/NonceRuntimeModule.js +2 -2
  539. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
  540. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  541. package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
  542. package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +18 -1
  543. package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
  544. package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
  545. package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +48 -50
  546. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
  547. package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
  548. package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
  549. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
  550. package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
  551. package/lib/runtime/SystemContextRuntimeModule.js +2 -2
  552. package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
  553. package/lib/runtime/WorkerRuntimeModule.js +1 -1
  554. package/lib/runtime/baseUri.js +1 -1
  555. package/lib/schemes/DataUriPlugin.js +4 -7
  556. package/lib/schemes/HttpUriPlugin.js +67 -11
  557. package/lib/schemes/VirtualUrlPlugin.js +50 -16
  558. package/lib/serialization/AggregateErrorSerializer.js +2 -2
  559. package/lib/serialization/BinaryMiddleware.js +9 -9
  560. package/lib/serialization/FileMiddleware.js +19 -19
  561. package/lib/serialization/ObjectMiddleware.js +77 -49
  562. package/lib/serialization/SerializerMiddleware.js +2 -2
  563. package/lib/serialization/SingleItemMiddleware.js +4 -2
  564. package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
  565. package/lib/sharing/ConsumeSharedModule.js +18 -14
  566. package/lib/sharing/ConsumeSharedPlugin.js +148 -42
  567. package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
  568. package/lib/sharing/ProvideForSharedDependency.js +9 -1
  569. package/lib/sharing/ProvideSharedDependency.js +1 -1
  570. package/lib/sharing/ProvideSharedModule.js +11 -9
  571. package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
  572. package/lib/sharing/ProvideSharedPlugin.js +111 -20
  573. package/lib/sharing/SharePlugin.js +102 -9
  574. package/lib/sharing/ShareRuntimeModule.js +6 -6
  575. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  576. package/lib/{util → sharing}/semver.js +19 -19
  577. package/lib/sharing/utils.js +59 -2
  578. package/lib/stats/DefaultStatsFactoryPlugin.js +25 -23
  579. package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
  580. package/lib/stats/DefaultStatsPrinterPlugin.js +3 -3
  581. package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
  582. package/lib/{Stats.js → stats/Stats.js} +4 -4
  583. package/lib/stats/StatsFactory.js +14 -13
  584. package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
  585. package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
  586. package/lib/template/DependencyTemplate.js +77 -0
  587. package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
  588. package/lib/template/InitFragment.js +223 -0
  589. package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
  590. package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
  591. package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
  592. package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +178 -106
  593. package/lib/{Template.js → template/Template.js} +13 -11
  594. package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +35 -82
  595. package/lib/typescript/TypeScriptPlugin.js +5 -6
  596. package/lib/util/LocConverter.js +4 -7
  597. package/lib/util/RequestShortener.js +44 -0
  598. package/lib/util/SortableSet.js +87 -22
  599. package/lib/util/SourceProcessor.js +364 -66
  600. package/lib/util/TupleSet.js +27 -27
  601. package/lib/util/WeakTupleMap.js +10 -12
  602. package/lib/util/buildDiagnostics.js +2 -2
  603. package/lib/util/comparators.js +10 -10
  604. package/lib/util/concatenate.js +32 -151
  605. package/lib/util/createHooksRegistry.js +1 -2
  606. package/lib/util/createMappings.js +111 -0
  607. package/lib/util/dataURL.js +96 -18
  608. package/lib/util/deprecation.js +1 -1
  609. package/lib/util/extractComments.js +118 -0
  610. package/lib/util/formatLocation.js +1 -1
  611. package/lib/util/globUtils.js +197 -16
  612. package/lib/util/haltVisitors.js +51 -0
  613. package/lib/util/handlerKeys.js +2 -2
  614. package/lib/util/hash/wasm-hash.js +3 -4
  615. package/lib/util/identifier.js +117 -1
  616. package/lib/util/implicitTypeLoaderFallback.js +6 -4
  617. package/lib/util/internalSerializables.js +295 -103
  618. package/lib/util/magicComment.js +12 -7
  619. package/lib/util/makeSerializable.js +23 -4
  620. package/lib/util/parseJson.js +1 -1
  621. package/lib/util/preloadModuleType.js +5 -2
  622. package/lib/util/registerExternalSerializer.js +2 -2
  623. package/lib/util/removeBOM.js +1 -1
  624. package/lib/util/runtime.js +1 -1
  625. package/lib/util/serialization.js +4 -1
  626. package/lib/util/source.js +2 -2
  627. package/lib/util/terminalColors.js +161 -0
  628. package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
  629. package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
  630. package/lib/{wasm-async → wasm}/AsyncWasmModule.js +9 -5
  631. package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +11 -6
  632. package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +16 -11
  633. package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
  634. package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +8 -8
  635. package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
  636. package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +9 -7
  637. package/lib/wasm/wasmModuleFilename.js +2 -2
  638. package/lib/wasm-sync/SyncWasmModule.js +3 -3
  639. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +11 -12
  640. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
  641. package/lib/wasm-sync/WebAssemblyGenerator.js +15 -9
  642. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +19 -16
  643. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
  644. package/lib/wasm-sync/WebAssemblyParser.js +6 -6
  645. package/lib/wasm-sync/WebAssemblyUtils.js +8 -9
  646. package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
  647. package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
  648. package/lib/{Watching.js → watch/Watching.js} +8 -8
  649. package/lib/web/FetchCompileAsyncWasmPlugin.js +8 -6
  650. package/lib/web/FetchCompileWasmPlugin.js +6 -4
  651. package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
  652. package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
  653. package/lib/web/JsonpTemplatePlugin.js +1 -1
  654. package/lib/webpack.js +27 -17
  655. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
  656. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
  657. package/package.json +70 -40
  658. package/schemas/WebpackOptions.check.js +2 -1
  659. package/schemas/WebpackOptions.d.json.ts +2 -0
  660. package/schemas/WebpackOptions.json +294 -74
  661. package/schemas/plugins/BannerPlugin.check.js +2 -1
  662. package/schemas/plugins/BannerPlugin.json +29 -2
  663. package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -0
  664. package/schemas/plugins/HtmlParserOptions.check.js +2 -1
  665. package/schemas/plugins/IgnorePlugin.check.js +1 -0
  666. package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
  667. package/schemas/plugins/IgnorePlugin.json +1 -1
  668. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -0
  669. package/schemas/plugins/ManifestPlugin.check.js +1 -0
  670. package/schemas/plugins/ManifestPlugin.json +3 -3
  671. package/schemas/plugins/ProgressPlugin.check.js +2 -1
  672. package/schemas/plugins/ProgressPlugin.json +2 -7
  673. package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
  674. package/schemas/plugins/SSRManifestPlugin.json +20 -0
  675. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -1
  676. package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
  677. package/schemas/plugins/WatchIgnorePlugin.check.js +2 -1
  678. package/schemas/plugins/WatchIgnorePlugin.json +12 -3
  679. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -0
  680. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -0
  681. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -0
  682. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -0
  683. package/schemas/plugins/container/ContainerPlugin.check.js +2 -1
  684. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  685. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -0
  686. package/schemas/plugins/container/ExternalsType.check.js +1 -0
  687. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -1
  688. package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
  689. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -0
  690. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -0
  691. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -0
  692. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -0
  693. package/schemas/plugins/css/CssParserOptions.check.js +1 -0
  694. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -0
  695. package/schemas/plugins/dll/DllPlugin.check.js +1 -0
  696. package/schemas/plugins/dll/DllReferencePlugin.check.js +2 -1
  697. package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
  698. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -0
  699. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -0
  700. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -0
  701. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +1 -0
  702. package/schemas/plugins/json/JsonModulesPluginParser.check.js +1 -0
  703. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -0
  704. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -0
  705. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -0
  706. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -0
  707. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -0
  708. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +1 -0
  709. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +2 -1
  710. package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
  711. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +2 -1
  712. package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
  713. package/schemas/plugins/sharing/SharePlugin.check.js +2 -1
  714. package/schemas/plugins/sharing/SharePlugin.json +32 -0
  715. package/types.d.ts +13915 -8414
  716. package/lib/ErrorHelpers.js +0 -107
  717. package/lib/LazyBarrel.js +0 -388
  718. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
  719. package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
  720. package/lib/javascript/ChunkFormatHelpers.js +0 -71
  721. package/lib/javascript/grammar.js +0 -5546
  722. package/lib/javascript/parser.js +0 -1494
  723. package/lib/javascript/regexpData.js +0 -51
  724. package/lib/performance/getSourceModules.js +0 -22
  725. package/lib/util/Semaphore.js +0 -65
  726. package/lib/util/objectToMap.js +0 -15
  727. package/schemas/WebpackOptions.check.d.ts +0 -7
  728. package/schemas/_container.json +0 -155
  729. package/schemas/_sharing.json +0 -118
  730. package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
  731. package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
  732. package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
  733. package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
  734. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
  735. package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
  736. package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
  737. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
  738. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
  739. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
  740. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
  741. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
  742. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
  743. package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
  744. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
  745. package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
  746. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
  747. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
  748. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
  749. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
  750. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
  751. package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
  752. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
  753. package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
  754. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
  755. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
  756. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
  757. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
  758. package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
  759. package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
  760. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
  761. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
  762. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
  763. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
  764. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
  765. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
  766. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
  767. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
  768. package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
  769. /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
  770. /package/lib/{util → css}/conventions.js +0 -0
  771. /package/lib/{util → css}/topologicalSort.js +0 -0
  772. /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
  773. /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
  774. /package/lib/{util → fs}/StackedCacheMap.js +0 -0
  775. /package/lib/{util → javascript}/StackedMap.js +0 -0
  776. /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
  777. /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
  778. /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
  779. /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
  780. /package/lib/{util → optimize}/Queue.js +0 -0
  781. /package/lib/{util → stats}/smartGrouping.js +0 -0
@@ -17,36 +17,35 @@ const {
17
17
  SyncWaterfallHook
18
18
  } = require("tapable");
19
19
  const { CachedSource } = require("webpack-sources");
20
- const { MultiItemCache } = require("./CacheFacade");
21
- const Chunk = require("./Chunk");
22
- const ChunkGraph = require("./ChunkGraph");
23
- const ChunkGroup = require("./ChunkGroup");
24
- const ChunkTemplate = require("./ChunkTemplate");
25
- const CodeGenerationResults = require("./CodeGenerationResults");
26
- const Dependency = require("./Dependency");
27
- const DependencyTemplates = require("./DependencyTemplates");
28
- const Entrypoint = require("./Entrypoint");
29
- const ErrorHelpers = require("./ErrorHelpers");
30
- const FileSystemInfo = require("./FileSystemInfo");
31
- const LazyBarrelController = require("./LazyBarrel");
32
- const MainTemplate = require("./MainTemplate");
33
- const Module = require("./Module");
34
- const ModuleGraph = require("./ModuleGraph");
35
- const ModuleProfile = require("./ModuleProfile");
36
- const ModuleTemplate = require("./ModuleTemplate");
37
- const { WEBPACK_MODULE_TYPE_RUNTIME } = require("./ModuleTypeConstants");
38
- const RuntimeGlobals = require("./RuntimeGlobals");
39
- const RuntimeTemplate = require("./RuntimeTemplate");
40
- const Stats = require("./Stats");
41
- const buildChunkGraph = require("./buildChunkGraph");
20
+ const { MultiItemCache } = require("./cache/CacheFacade");
21
+ const ErrorHelpers = require("./errors/ErrorHelpers");
42
22
  const {
43
23
  makeWebpackError,
44
24
  tryRunOrWebpackError
45
25
  } = require("./errors/HookWebpackError");
46
26
  const WebpackError = require("./errors/WebpackError");
27
+ const FileSystemInfo = require("./fs/FileSystemInfo");
28
+ const Chunk = require("./graph/Chunk");
29
+ const ChunkGraph = require("./graph/ChunkGraph");
30
+ const ChunkGroup = require("./graph/ChunkGroup");
31
+ const Dependency = require("./graph/Dependency");
32
+ const Entrypoint = require("./graph/Entrypoint");
33
+ const ModuleGraph = require("./graph/ModuleGraph");
34
+ const buildChunkGraph = require("./graph/buildChunkGraph");
47
35
  const { LogType, Logger } = require("./logging/Logger");
36
+ const CodeGenerationResults = require("./module/CodeGenerationResults");
37
+ const Module = require("./module/Module");
38
+ const ModuleProfile = require("./module/ModuleProfile");
39
+ const LazyBarrels = require("./optimize/LazyBarrels");
40
+ const RuntimeGlobals = require("./runtime/RuntimeGlobals");
41
+ const Stats = require("./stats/Stats");
48
42
  const StatsFactory = require("./stats/StatsFactory");
49
43
  const StatsPrinter = require("./stats/StatsPrinter");
44
+ const ChunkTemplate = require("./template/ChunkTemplate");
45
+ const DependencyTemplates = require("./template/DependencyTemplates");
46
+ const MainTemplate = require("./template/MainTemplate");
47
+ const ModuleTemplate = require("./template/ModuleTemplate");
48
+ const RuntimeTemplate = require("./template/RuntimeTemplate");
50
49
  const { equals: arrayEquals } = require("./util/ArrayHelpers");
51
50
  const AsyncQueue = require("./util/AsyncQueue");
52
51
  const LazySet = require("./util/LazySet");
@@ -103,6 +102,8 @@ const getChunkRenderError = memoize(() => require("./errors/ChunkRenderError"));
103
102
 
104
103
  const getBuildCycleError = memoize(() => require("./errors/BuildCycleError"));
105
104
 
105
+ const { toError } = ErrorHelpers;
106
+
106
107
  /** @import { Source } from "webpack-sources" */
107
108
  /**
108
109
  * @import {
@@ -121,11 +122,11 @@ const getBuildCycleError = memoize(() => require("./errors/BuildCycleError"));
121
122
  * OutputNormalizedWithDefaults as OutputOptionsWithDefaults
122
123
  * } from "./config/defaults"
123
124
  */
124
- /** @import AsyncDependenciesBlock from "./AsyncDependenciesBlock" */
125
- /** @import Cache from "./Cache" */
126
- /** @import CacheFacade from "./CacheFacade" */
127
- /** @import { ChunkName, ChunkId } from "./Chunk" */
128
- /** @import { ChunkGroupOptions } from "./ChunkGroup" */
125
+ /** @import AsyncDependenciesBlock from "./graph/AsyncDependenciesBlock" */
126
+ /** @import Cache from "./cache/Cache" */
127
+ /** @import CacheFacade from "./cache/CacheFacade" */
128
+ /** @import { ChunkName, ChunkId } from "./graph/Chunk" */
129
+ /** @import { ChunkGroupOptions } from "./graph/ChunkGroup" */
129
130
  /**
130
131
  * @import Compiler, {
131
132
  * CompilationParams,
@@ -135,9 +136,9 @@ const getBuildCycleError = memoize(() => require("./errors/BuildCycleError"));
135
136
  * Records
136
137
  * } from "./Compiler"
137
138
  */
138
- /** @import DependenciesBlock from "./DependenciesBlock" */
139
- /** @import { DependencyLocation, ReferencedExports } from "./Dependency" */
140
- /** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */
139
+ /** @import DependenciesBlock from "./graph/DependenciesBlock" */
140
+ /** @import { DependencyLocation, ReferencedExports } from "./graph/Dependency" */
141
+ /** @typedef {import("./graph/Entrypoint").EntryOptions} EntryOptions */
141
142
  /**
142
143
  * @import {
143
144
  * NameForCondition,
@@ -148,7 +149,7 @@ const getBuildCycleError = memoize(() => require("./errors/BuildCycleError"));
148
149
  * SourceType,
149
150
  * FactoryMeta,
150
151
  * CodeGenerationResult
151
- * } from "./Module"
152
+ * } from "./module/Module"
152
153
  */
153
154
  /**
154
155
  * @import NormalModule, {
@@ -156,19 +157,25 @@ const getBuildCycleError = memoize(() => require("./errors/BuildCycleError"));
156
157
  * AnyLoaderContext,
157
158
  * ParserOptions,
158
159
  * GeneratorOptions
159
- * } from "./NormalModule"
160
+ * } from "./module/NormalModule"
160
161
  */
161
162
  /**
162
163
  * @import ModuleFactory, {
163
164
  * ModuleFactoryCreateDataContextInfo,
164
165
  * ModuleFactoryResult
165
- * } from "./ModuleFactory"
166
+ * } from "./module/ModuleFactory"
167
+ */
168
+ /** @import { ModuleId } from "./graph/ChunkGraph" */
169
+ /** @import ModuleGraphConnection from "./graph/ModuleGraphConnection" */
170
+ /** @import RequestShortener from "./util/RequestShortener" */
171
+ /** @import RuntimeModule from "./runtime/RuntimeModule" */
172
+ /**
173
+ * @import {
174
+ * RenderManifestEntry,
175
+ * RenderManifestEntryTemplated,
176
+ * RenderManifestOptions
177
+ * } from "./template/Template"
166
178
  */
167
- /** @import { ModuleId } from "./ChunkGraph" */
168
- /** @import ModuleGraphConnection from "./ModuleGraphConnection" */
169
- /** @import RequestShortener from "./RequestShortener" */
170
- /** @import RuntimeModule from "./RuntimeModule" */
171
- /** @import { RenderManifestEntry, RenderManifestOptions } from "./Template" */
172
179
 
173
180
  /**
174
181
  * One language's source embedded in another's output.
@@ -199,7 +206,7 @@ const getBuildCycleError = memoize(() => require("./errors/BuildCycleError"));
199
206
  * @typedef {import("./util/deprecation").FakeHook<T>} FakeHook<T>
200
207
  */
201
208
  /** @import { RuntimeSpec } from "./util/runtime" */
202
- /** @import { InputFileSystem } from "./util/fs" */
209
+ /** @import { InputFileSystem } from "./fs/fs" */
203
210
 
204
211
  /**
205
212
  * Defines the callback callback.
@@ -544,9 +551,7 @@ const getBuildCycleError = memoize(() => require("./errors/BuildCycleError"));
544
551
  /** @type {AssetInfo} */
545
552
  const EMPTY_ASSET_INFO = Object.freeze({});
546
553
 
547
- const esmDependencyCategory = "esm";
548
-
549
- // TODO webpack 6: remove
554
+ // TODO in the next major release: remove
550
555
  const deprecatedNormalModuleLoaderHook = util.deprecate(
551
556
  /**
552
557
  * Handles the callback logic for this hook.
@@ -554,12 +559,12 @@ const deprecatedNormalModuleLoaderHook = util.deprecate(
554
559
  * @returns {NormalModuleCompilationHooks["loader"]} hooks
555
560
  */
556
561
  (compilation) =>
557
- require("./NormalModule").getCompilationHooks(compilation).loader,
562
+ require("./module/NormalModule").getCompilationHooks(compilation).loader,
558
563
  "Compilation.hooks.normalModuleLoader was moved to NormalModule.getCompilationHooks(compilation).loader",
559
564
  "DEP_WEBPACK_COMPILATION_NORMAL_MODULE_LOADER_HOOK"
560
565
  );
561
566
 
562
- // TODO webpack 6: remove
567
+ // TODO in the next major release: remove
563
568
  /**
564
569
  * Define removed module templates.
565
570
  * @param {ModuleTemplates | undefined} moduleTemplates module templates
@@ -650,7 +655,7 @@ const reduceAffectType = (connections) => {
650
655
  return affected;
651
656
  };
652
657
 
653
- /** @typedef {{ id: ModuleId, modules?: Map<Module, ModuleId>, blocks?: (ChunkId | null)[], sourceTypes?: SourceTypes }} References */
658
+ /** @typedef {{ id: ModuleId, modules?: Map<Module, string>, blocks?: (ChunkId | null)[], sourceTypes?: SourceTypes }} References */
654
659
  /** @typedef {Map<Module, WeakTupleMap<EXPECTED_ANY[], EXPECTED_ANY>>} ModuleMemCaches */
655
660
  /** @typedef {{ chunk: Chunk, load: () => Promise<EXPECTED_ANY>, create: (loaded: EXPECTED_ANY) => RuntimeModule, chunkGraph: ChunkGraph }} PendingRuntimeModule */
656
661
 
@@ -1098,7 +1103,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1098
1103
  shouldGenerateChunkAssets: new SyncBailHook([]),
1099
1104
  /** @type {SyncHook<[]>} */
1100
1105
  beforeChunkAssets: new SyncHook([]),
1101
- // TODO webpack 6 remove
1106
+ // TODO in the next major release: remove
1102
1107
  /** @deprecated */
1103
1108
  additionalChunkAssets:
1104
1109
  /** @type {FakeHook<Pick<AsyncSeriesHook<[Chunks]>, "tap" | "tapAsync" | "tapPromise" | "name">>} */
@@ -1111,7 +1116,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1111
1116
  )
1112
1117
  ),
1113
1118
 
1114
- // TODO webpack 6 deprecate
1119
+ // TODO in the next major release: deprecate
1115
1120
  /** @deprecated */
1116
1121
  additionalAssets:
1117
1122
  /** @type {FakeHook<Pick<AsyncSeriesHook<[]>, "tap" | "tapAsync" | "tapPromise" | "name">>} */
@@ -1122,7 +1127,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1122
1127
  () => []
1123
1128
  )
1124
1129
  ),
1125
- // TODO webpack 6 remove
1130
+ // TODO in the next major release: remove
1126
1131
  /** @deprecated */
1127
1132
  optimizeChunkAssets:
1128
1133
  /** @type {FakeHook<Pick<AsyncSeriesHook<[Chunks]>, "tap" | "tapAsync" | "tapPromise" | "name">>} */
@@ -1134,7 +1139,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1134
1139
  "DEP_WEBPACK_COMPILATION_OPTIMIZE_CHUNK_ASSETS"
1135
1140
  )
1136
1141
  ),
1137
- // TODO webpack 6 remove
1142
+ // TODO in the next major release: remove
1138
1143
  /** @deprecated */
1139
1144
  afterOptimizeChunkAssets:
1140
1145
  /** @type {FakeHook<Pick<AsyncSeriesHook<[Chunks]>, "tap" | "tapAsync" | "tapPromise" | "name">>} */
@@ -1146,10 +1151,10 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1146
1151
  "DEP_WEBPACK_COMPILATION_AFTER_OPTIMIZE_CHUNK_ASSETS"
1147
1152
  )
1148
1153
  ),
1149
- // TODO webpack 6 deprecate
1154
+ // TODO in the next major release: deprecate
1150
1155
  /** @deprecated */
1151
1156
  optimizeAssets: processAssetsHook,
1152
- // TODO webpack 6 deprecate
1157
+ // TODO in the next major release: deprecate
1153
1158
  /** @deprecated */
1154
1159
  afterOptimizeAssets: afterProcessAssetsHook,
1155
1160
 
@@ -1461,6 +1466,10 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1461
1466
  this._restoredUnsafeCacheEntries = new Map();
1462
1467
  /** @type {WeakSet<Module>} */
1463
1468
  this.builtModules = new WeakSet();
1469
+ // a module whose dependency failed to resolve reports nothing for it now,
1470
+ // but will once the target exists, which needs no module to be rebuilt
1471
+ /** @type {Set<Module>} */
1472
+ this._modulesWithUnresolvedDependencies = new Set();
1464
1473
  /** @type {WeakSet<Module>} */
1465
1474
  this.codeGeneratedModules = new WeakSet();
1466
1475
  /** @type {WeakSet<Module>} */
@@ -1479,7 +1488,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1479
1488
  this.buildDependencies = new LazySet();
1480
1489
  /** @type {FileSystemDependencies} */
1481
1490
  this.optionalBuildDependencies = new LazySet();
1482
- // TODO webpack 6 remove
1491
+ // TODO in the next major release: remove
1483
1492
  /**
1484
1493
  * @deprecated
1485
1494
  * @type {{ add: (item: string) => FileSystemDependencies }}
@@ -1513,8 +1522,8 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1513
1522
  this._unsafeCachePredicate =
1514
1523
  typeof unsafeCache === "function" ? unsafeCache : () => true;
1515
1524
 
1516
- /** @type {LazyBarrelController} */
1517
- this._lazyBarrelController = new LazyBarrelController(this);
1525
+ /** @type {LazyBarrels} */
1526
+ this._lazyBarrels = new LazyBarrels(this);
1518
1527
  }
1519
1528
 
1520
1529
  getStats() {
@@ -1927,7 +1936,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1927
1936
  );
1928
1937
 
1929
1938
  // lazy barrel: defer re-export targets of side-effect-free modules
1930
- const hasLazyBarrel = this._lazyBarrelController.classify(module);
1939
+ const hasLazyBarrel = this._lazyBarrels.classify(module);
1931
1940
 
1932
1941
  /** @type {DependenciesBlock} */
1933
1942
  let currentBlock;
@@ -2008,15 +2017,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
2008
2017
  */
2009
2018
  const processDependency = (dep, index) => {
2010
2019
  this.moduleGraph.setParents(dep, currentBlock, module, index);
2011
- if (
2012
- hasLazyBarrel &&
2013
- // TODO remove in webpack 6
2014
- // It may be missing on custom dependency types not extending the base Dependency
2015
- "isLazy" in dep &&
2016
- dep.isLazy()
2017
- ) {
2018
- return;
2019
- }
2020
+ if (hasLazyBarrel && this._lazyBarrels.isLazy(dep)) return;
2020
2021
 
2021
2022
  if (this._unsafeCache) {
2022
2023
  try {
@@ -2031,7 +2032,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
2031
2032
  dep,
2032
2033
  unsafeCachedModule
2033
2034
  );
2034
- this._lazyBarrelController.unlazyForDependency(
2035
+ this._lazyBarrels.unlazyForDependency(
2035
2036
  unsafeCachedModule,
2036
2037
  dep,
2037
2038
  sortedDependencies
@@ -2049,7 +2050,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
2049
2050
  dep,
2050
2051
  cachedModule
2051
2052
  );
2052
- this._lazyBarrelController.unlazyForDependency(
2053
+ this._lazyBarrels.unlazyForDependency(
2053
2054
  cachedModule,
2054
2055
  dep,
2055
2056
  sortedDependencies
@@ -2114,7 +2115,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
2114
2115
  dep,
2115
2116
  cachedModule
2116
2117
  ); // a3
2117
- this._lazyBarrelController.unlazyForDependency(
2118
+ this._lazyBarrels.unlazyForDependency(
2118
2119
  cachedModule,
2119
2120
  dep,
2120
2121
  sortedDependencies
@@ -2195,7 +2196,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
2195
2196
  // mostly esm dependencies would be used
2196
2197
  // so we don't allocate extra string for them
2197
2198
  const cacheKey =
2198
- category === esmDependencyCategory
2199
+ category === Dependency.ESM_CATEGORY
2199
2200
  ? resourceIdent
2200
2201
  : `${category}${resourceIdent}`;
2201
2202
  let list = /** @type {FactoryCacheValue} */ (factoryCacheValue).get(
@@ -2344,7 +2345,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
2344
2345
  },
2345
2346
  (err, result) => {
2346
2347
  if (result) {
2347
- // TODO webpack 6: remove
2348
+ // TODO in the next major release: remove
2348
2349
  // For backward-compat
2349
2350
  if (result.module === undefined && result instanceof Module) {
2350
2351
  result = {
@@ -2371,7 +2372,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
2371
2372
  if (err) {
2372
2373
  const notFoundError = new (getModuleNotFoundError())(
2373
2374
  originModule,
2374
- err,
2375
+ toError(err),
2375
2376
  /** @type {DependencyLocation} */
2376
2377
  (dependencies.map((d) => d.loc).find(Boolean))
2377
2378
  );
@@ -2464,6 +2465,30 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
2464
2465
  context
2465
2466
  },
2466
2467
  (err, factoryResult) => {
2468
+ // Loader-created modules have no origin connection to resolve again.
2469
+ // Preserve their resolution dependencies in the caller's build snapshot.
2470
+ if (
2471
+ factoryResult &&
2472
+ !connectOrigin &&
2473
+ originModule &&
2474
+ originModule.buildInfo &&
2475
+ this.buildQueue.isProcessing(originModule)
2476
+ ) {
2477
+ for (const key of /** @type {const} */ ([
2478
+ "fileDependencies",
2479
+ "contextDependencies",
2480
+ "missingDependencies"
2481
+ ])) {
2482
+ const dependencies = factoryResult[key];
2483
+ if (dependencies) {
2484
+ let target = originModule.buildInfo[key];
2485
+ if (target === undefined) {
2486
+ originModule.buildInfo[key] = target = new LazySet();
2487
+ }
2488
+ target.addAll(dependencies);
2489
+ }
2490
+ }
2491
+ }
2467
2492
  const applyFactoryResultDependencies = () => {
2468
2493
  const { fileDependencies, contextDependencies, missingDependencies } =
2469
2494
  /** @type {ModuleFactoryResult} */ (factoryResult);
@@ -2479,6 +2504,9 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
2479
2504
  };
2480
2505
  if (err) {
2481
2506
  if (factoryResult) applyFactoryResultDependencies();
2507
+ if (originModule) {
2508
+ this._modulesWithUnresolvedDependencies.add(originModule);
2509
+ }
2482
2510
  if (dependencies.every((d) => d.optional)) {
2483
2511
  this.warnings.push(err);
2484
2512
  return callback();
@@ -2656,16 +2684,10 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
2656
2684
  return;
2657
2685
  }
2658
2686
 
2659
- // lazy barrel:
2660
- // 1. first call: barrel module is not classified yet, so this records the requested
2661
- // ids and returns undefined; the targets get built below when
2662
- // `processModuleDependencies` runs `_lazyBarrelController.classify` and replays them.
2663
- // 2. later call: barrel module is already built, so `processModuleDependencies` won't
2664
- // re-walk it; the newly requested targets must be built here.
2665
- const unlazyItems = this._lazyBarrelController.request(
2666
- module,
2667
- dependencies
2668
- );
2687
+ // lazy barrel: on the first call the module is unclassified, so this only
2688
+ // records the ids and `processModuleDependencies` replays them. Later the
2689
+ // module is built and never re-walked, so the targets are built here.
2690
+ const unlazyItems = this._lazyBarrels.request(module, dependencies);
2669
2691
 
2670
2692
  if (unlazyItems !== undefined) {
2671
2693
  let inProgress = unlazyItems.length + 1; // +1 = the module's own dep processing
@@ -2783,7 +2805,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
2783
2805
  * @returns {void} returns
2784
2806
  */
2785
2807
  addEntry(context, entry, optionsOrName, callback) {
2786
- // TODO webpack 6 remove
2808
+ // TODO in the next major release: remove
2787
2809
  const options =
2788
2810
  typeof optionsOrName === "object"
2789
2811
  ? optionsOrName
@@ -3132,6 +3154,20 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
3132
3154
  let statUnchanged = 0;
3133
3155
  let statChanged = 0;
3134
3156
  let statNew = 0;
3157
+ /**
3158
+ * Include async state and connection activity, which can change without changing module ids.
3159
+ * @param {Module} module connected module
3160
+ * @param {readonly ModuleGraphConnection[]} connections connections to it
3161
+ * @returns {string} reference key
3162
+ */
3163
+ const referenceKey = (module, connections) => {
3164
+ let key = `${chunkGraph.getModuleId(module)}${moduleGraph.isAsync(module)}`;
3165
+ for (const connection of connections) {
3166
+ const state = connection.getActiveState(undefined);
3167
+ key += state === true ? "T" : state === false ? "F" : "O";
3168
+ }
3169
+ return key;
3170
+ };
3135
3171
  /**
3136
3172
  * Compute references.
3137
3173
  * @param {Module} module module
@@ -3139,16 +3175,19 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
3139
3175
  */
3140
3176
  const computeReferences = (module) => {
3141
3177
  const id = /** @type {ModuleId} */ (chunkGraph.getModuleId(module));
3142
- /** @type {Map<Module, ModuleId> | undefined} */
3178
+ /** @type {Map<Module, string> | undefined} */
3143
3179
  let modules;
3144
3180
  /** @type {(ChunkId | null)[] | undefined} */
3145
3181
  let blocks;
3146
3182
  const outgoing = moduleGraph.getOutgoingConnectionsByModule(module);
3147
3183
  if (outgoing !== undefined) {
3148
- for (const m of outgoing.keys()) {
3149
- if (!m) continue;
3184
+ for (const [referencedModule, connections] of outgoing) {
3185
+ if (!referencedModule) continue;
3150
3186
  if (modules === undefined) modules = new Map();
3151
- modules.set(m, /** @type {ModuleId} */ (chunkGraph.getModuleId(m)));
3187
+ modules.set(
3188
+ referencedModule,
3189
+ referenceKey(referencedModule, connections)
3190
+ );
3152
3191
  }
3153
3192
  }
3154
3193
  if (module.blocks.length > 0) {
@@ -3179,7 +3218,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
3179
3218
  * @param {Module} module module
3180
3219
  * @param {object} references references
3181
3220
  * @param {string | number} references.id id
3182
- * @param {Map<Module, string | number | undefined>=} references.modules modules
3221
+ * @param {Map<Module, string>=} references.modules modules
3183
3222
  * @param {(string | number | null)[]=} references.blocks blocks
3184
3223
  * @param {SourceTypes=} references.sourceTypes connection-dependent source types
3185
3224
  * @returns {boolean} ok?
@@ -3190,8 +3229,15 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
3190
3229
  ) => {
3191
3230
  if (id !== chunkGraph.getModuleId(module)) return false;
3192
3231
  if (modules !== undefined) {
3193
- for (const [module, id] of modules) {
3194
- if (chunkGraph.getModuleId(module) !== id) return false;
3232
+ const outgoing = moduleGraph.getOutgoingConnectionsByModule(module);
3233
+ for (const [referencedModule, key] of modules) {
3234
+ const connections = outgoing && outgoing.get(referencedModule);
3235
+ if (
3236
+ connections === undefined ||
3237
+ referenceKey(referencedModule, connections) !== key
3238
+ ) {
3239
+ return false;
3240
+ }
3195
3241
  }
3196
3242
  }
3197
3243
  if (blocks !== undefined) {
@@ -3253,6 +3299,35 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
3253
3299
  );
3254
3300
  }
3255
3301
 
3302
+ /**
3303
+ * Returns the modules whose dependency report depends on a dependency that
3304
+ * failed to resolve: they must not be remembered as clean, as the target can
3305
+ * appear without any of them being rebuilt.
3306
+ * @private
3307
+ * @returns {Set<Module>} the modules with such a dependency and their parents
3308
+ */
3309
+ _modulesReportingUnresolved() {
3310
+ const result = new Set(this._modulesWithUnresolvedDependencies);
3311
+ if (result.size === 0) return result;
3312
+ const { moduleGraph } = this;
3313
+ // as the token walk does, only a transitive connection reaches further up;
3314
+ // a parent first reached directly may still be reached transitively later
3315
+ const queued = new Set(result);
3316
+ for (const module of queued) {
3317
+ for (const [
3318
+ referencingModule,
3319
+ connections
3320
+ ] of moduleGraph.getIncomingConnectionsByOriginModule(module)) {
3321
+ if (!referencingModule) continue;
3322
+ result.add(referencingModule);
3323
+ if (reduceAffectType(connections) === Dependency.TRANSITIVE) {
3324
+ queued.add(referencingModule);
3325
+ }
3326
+ }
3327
+ }
3328
+ return result;
3329
+ }
3330
+
3256
3331
  /**
3257
3332
  * Assigns a fresh dependency report cache token to every module whose
3258
3333
  * dependency errors/warnings could have changed since the previous
@@ -3531,16 +3606,26 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
3531
3606
  if (useReportCacheTokens) {
3532
3607
  this._flagModulesForDependencyReporting(modules);
3533
3608
  }
3609
+ const reportsUnresolved = this._modulesReportingUnresolved();
3534
3610
  for (const module of modules) {
3611
+ const unresolved = reportsUnresolved.has(module);
3535
3612
  const memCache = moduleMemCaches && moduleMemCaches.get(module);
3536
- if (memCache && memCache.get("noWarningsOrErrors")) continue;
3613
+ if (!unresolved && memCache && memCache.get("noWarningsOrErrors")) {
3614
+ continue;
3615
+ }
3537
3616
  let token;
3538
3617
  if (useReportCacheTokens) {
3539
3618
  token = dependencyReportCacheTokens.get(module);
3540
3619
  const cleanModules = modulesWithoutProblems.get(
3541
3620
  /** @type {DependencyReportCacheToken} */ (token)
3542
3621
  );
3543
- if (cleanModules !== undefined && cleanModules.has(module)) continue;
3622
+ if (
3623
+ !unresolved &&
3624
+ cleanModules !== undefined &&
3625
+ cleanModules.has(module)
3626
+ ) {
3627
+ continue;
3628
+ }
3544
3629
  }
3545
3630
  let hasProblems = this.reportDependencyErrorsAndWarnings(module, [
3546
3631
  module
@@ -3565,7 +3650,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
3565
3650
  hasProblems = true;
3566
3651
  }
3567
3652
  }
3568
- if (!hasProblems) {
3653
+ if (!hasProblems && !unresolved) {
3569
3654
  if (memCache) memCache.set("noWarningsOrErrors", true);
3570
3655
  if (useReportCacheTokens) {
3571
3656
  let cleanModules = modulesWithoutProblems.get(
@@ -3623,7 +3708,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
3623
3708
  this.processDependenciesQueue.clear();
3624
3709
  this.addModuleQueue.clear();
3625
3710
  // lazy barrel only acts during make; release its bookkeeping now
3626
- this._lazyBarrelController.clear();
3711
+ this._lazyBarrels.clear();
3627
3712
  // unsafe-cache restore tables are only read during make; release them
3628
3713
  // so they stop pinning restored modules for the rest of the compilation
3629
3714
  this._restoredUnsafeCacheModuleEntries.clear();
@@ -4026,7 +4111,7 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4026
4111
  const warning = new (getModuleDependencyWarning())(
4027
4112
  module,
4028
4113
  w,
4029
- /** @type {EXPECTED_ANY} */ (w).loc || d.loc
4114
+ w.loc || d.loc
4030
4115
  );
4031
4116
  this.warnings.push(warning);
4032
4117
  hasProblems = true;
@@ -4038,7 +4123,7 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4038
4123
  const error = new (getModuleDependencyError())(
4039
4124
  module,
4040
4125
  e,
4041
- /** @type {EXPECTED_ANY} */ (e).loc || d.loc
4126
+ e.loc || d.loc
4042
4127
  );
4043
4128
  this.errors.push(error);
4044
4129
  hasProblems = true;
@@ -4162,7 +4247,35 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4162
4247
  (err) => {
4163
4248
  if (err) return callback(/** @type {WebpackError} */ (err));
4164
4249
  const affected = new Set(pending.map(({ jobModule }) => jobModule));
4165
- const redo = jobs.filter(({ module }) => affected.has(module));
4250
+ // A module referencing one of these may have copied what it generated
4251
+ // into its own code (an analyzable `new URL`), so it goes again after.
4252
+ /** @type {Set<Module>} */
4253
+ const referencing = new Set();
4254
+ for (const { info } of pending) {
4255
+ for (const connection of this.moduleGraph.getIncomingConnections(
4256
+ info.module
4257
+ )) {
4258
+ const { originModule } = connection;
4259
+ if (originModule !== null && !affected.has(originModule)) {
4260
+ referencing.add(originModule);
4261
+ }
4262
+ }
4263
+ }
4264
+
4265
+ const redo = [
4266
+ ...jobs.filter(({ module }) => affected.has(module)),
4267
+ // A referencing module concatenated into another is generated as
4268
+ // part of it, so the job to redo is the concatenated module's.
4269
+ ...jobs.filter(({ module }) => {
4270
+ if (affected.has(module)) return false;
4271
+ if (referencing.has(module)) return true;
4272
+ if (module.getRootModule() === module) return false;
4273
+ for (const inner of module.getSourceModules()) {
4274
+ if (referencing.has(inner)) return true;
4275
+ }
4276
+ return false;
4277
+ })
4278
+ ];
4166
4279
  // Generated directly rather than through the codegen cache: the module
4167
4280
  // hash is unchanged, so the cache would hand back the first pass again.
4168
4281
  const results =
@@ -4187,7 +4300,7 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4187
4300
  // Reported and carried on with, as the first pass does: a throw
4188
4301
  // here would leave the build with no error to show for it.
4189
4302
  this.errors.push(
4190
- new (getCodeGenerationError())(module, /** @type {Error} */ (err))
4303
+ new (getCodeGenerationError())(module, toError(err))
4191
4304
  );
4192
4305
  result = {
4193
4306
  sources: new Map(),
@@ -4377,9 +4490,7 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4377
4490
  compilation: this
4378
4491
  });
4379
4492
  } catch (err) {
4380
- errors.push(
4381
- new (getCodeGenerationError())(module, /** @type {Error} */ (err))
4382
- );
4493
+ errors.push(new (getCodeGenerationError())(module, toError(err)));
4383
4494
  result = {
4384
4495
  sources: new Map(),
4385
4496
  runtimeRequirements: null,
@@ -4430,9 +4541,7 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4430
4541
  result.data.set("analyzableBailouts", bailouts);
4431
4542
  }
4432
4543
  } catch (err) {
4433
- errors.push(
4434
- new (getCodeGenerationError())(module, /** @type {Error} */ (err))
4435
- );
4544
+ errors.push(new (getCodeGenerationError())(module, toError(err)));
4436
4545
  result = cachedResult = {
4437
4546
  sources: new Map(),
4438
4547
  runtimeRequirements: null,
@@ -4625,9 +4734,10 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4625
4734
  * is over. `runtimeRequirementInTree` is a sync hook, so a tap cannot await
4626
4735
  * the load itself; anything the tap reads off the requirement set must be
4627
4736
  * captured before queueing, since `create` runs later.
4737
+ * @template T
4628
4738
  * @param {Chunk} chunk target chunk
4629
- * @param {() => Promise<EXPECTED_ANY>} load resolves the runtime module implementation
4630
- * @param {(loaded: EXPECTED_ANY) => RuntimeModule} create builds the runtime module from it
4739
+ * @param {() => Promise<T>} load resolves the runtime module implementation
4740
+ * @param {(loaded: T) => RuntimeModule} create builds the runtime module from it
4631
4741
  * @param {ChunkGraph} chunkGraph the chunk graph
4632
4742
  * @returns {void}
4633
4743
  */
@@ -4659,7 +4769,7 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4659
4769
  .then(() => this._attachPendingRuntimeModules(callback), callback);
4660
4770
  }
4661
4771
 
4662
- // TODO webpack 6 make chunkGraph argument non-optional
4772
+ // TODO in the next major release: make chunkGraph argument non-optional
4663
4773
  /**
4664
4774
  * Adds runtime module.
4665
4775
  * @param {Chunk} chunk target chunk
@@ -4777,7 +4887,7 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4777
4887
  const name = options.name;
4778
4888
  if (name) {
4779
4889
  const entrypoint = this.namedChunkGroups.get(name);
4780
- if (entrypoint instanceof Entrypoint) {
4890
+ if (entrypoint !== undefined && entrypoint.isEntrypoint()) {
4781
4891
  if (module) {
4782
4892
  entrypoint.addOrigin(module, loc, request);
4783
4893
  }
@@ -5158,8 +5268,12 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
5158
5268
  });
5159
5269
  moduleHashDigest = moduleHash.digest(hashDigest);
5160
5270
  } catch (err) {
5271
+ // A diagnostic that already names its module says more than this wrapper
5272
+ // would, e.g. which runtime module's `generate()` threw.
5161
5273
  errors.push(
5162
- new (getModuleHashingError())(module, /** @type {Error} */ (err))
5274
+ WebpackError.isWebpackError(err) && err.module
5275
+ ? err
5276
+ : new (getModuleHashingError())(module, /** @type {Error} */ (err))
5163
5277
  );
5164
5278
  moduleHashDigest = "XXXXXX";
5165
5279
  }
@@ -5208,22 +5322,9 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
5208
5322
  }
5209
5323
 
5210
5324
  this.logger.time("hashing: sort chunks");
5211
- /*
5212
- * Chunks are hashed in 4 categories, in this order:
5213
- * 1. Async chunks - no hash dependencies on other chunks
5214
- * 2. Non-entry initial chunks (e.g. shared split chunks) - no hash
5215
- * dependencies on other chunks, but runtime chunks may read their
5216
- * hashes via GetChunkFilenameRuntimeModule (dependentHash)
5217
- * 3. Runtime chunks - may use hashes of async and non-entry initial
5218
- * chunks (via GetChunkFilenameRuntimeModule). Ordered by references
5219
- * between each other (for async entrypoints)
5220
- * 4. Entry chunks - may depend on runtimeChunk.hash (via
5221
- * createChunkHashHandler for ESM/CJS entry importing runtime)
5222
- *
5223
- * This ordering ensures all hash dependencies flow in one direction:
5224
- * async/initial → runtime → entry, with no circular dependencies.
5225
- * Chunks within each category are sorted by id for determinism.
5226
- */
5325
+ // Hashed as async, then non-entry initial, then runtime, then entry chunks,
5326
+ // so hash dependencies flow one way between those groups. A cycle among the
5327
+ // runtime chunks is still possible, and is warned about below.
5227
5328
  /** @type {Chunk[]} */
5228
5329
  const unorderedRuntimeChunks = [];
5229
5330
  /** @type {Chunk[]} */
@@ -5410,9 +5511,7 @@ This prevents using hashes of each other and should be avoided.`);
5410
5511
  this.hooks.contentHash.call(chunk);
5411
5512
  }
5412
5513
  } catch (err) {
5413
- this.errors.push(
5414
- new (getChunkRenderError())(chunk, "", /** @type {Error} */ (err))
5415
- );
5514
+ this.errors.push(new (getChunkRenderError())(chunk, "", toError(err)));
5416
5515
  }
5417
5516
  this.logger.timeAggregate("hashing: hash chunks");
5418
5517
  };
@@ -5926,7 +6025,7 @@ This prevents using hashes of each other and should be avoided.`);
5926
6025
  });
5927
6026
  } catch (err) {
5928
6027
  this.errors.push(
5929
- new (getChunkRenderError())(chunk, "", /** @type {Error} */ (err))
6028
+ new (getChunkRenderError())(chunk, "", toError(err))
5930
6029
  );
5931
6030
  return callback();
5932
6031
  }
@@ -5942,7 +6041,7 @@ This prevents using hashes of each other and should be avoided.`);
5942
6041
  );
5943
6042
 
5944
6043
  assetCacheItem.get((err, sourceFromCache) => {
5945
- /** @type {string | import("./TemplatedPathPlugin").TemplatePathFn<EXPECTED_ANY>} */
6044
+ /** @type {RenderManifestEntryTemplated["filenameTemplate"]} */
5946
6045
  let filenameTemplate;
5947
6046
  /** @type {string} */
5948
6047
  let file;
@@ -5965,7 +6064,7 @@ This prevents using hashes of each other and should be avoided.`);
5965
6064
  : "");
5966
6065
 
5967
6066
  this.errors.push(
5968
- new (getChunkRenderError())(chunk, filename, err)
6067
+ new (getChunkRenderError())(chunk, filename, toError(err))
5969
6068
  );
5970
6069
  inTry = false;
5971
6070
  return callback();
@@ -6063,7 +6162,7 @@ This prevents using hashes of each other and should be avoided.`);
6063
6162
  /**
6064
6163
  * Returns interpolated path.
6065
6164
  * @template {PathData} [T=PathData]
6066
- * @param {string | import("./TemplatedPathPlugin").TemplatePathFn<T>} filename used to get asset path with hash
6165
+ * @param {string | import("./template/TemplatedPathPlugin").TemplatePathFn<T>} filename used to get asset path with hash
6067
6166
  * @param {T=} data context data
6068
6167
  * @returns {string} interpolated path
6069
6168
  */
@@ -6080,7 +6179,7 @@ This prevents using hashes of each other and should be avoided.`);
6080
6179
  /**
6081
6180
  * Gets path with info.
6082
6181
  * @template {PathData} [T=PathData]
6083
- * @param {string | import("./TemplatedPathPlugin").TemplatePathFn<T>} filename used to get asset path with hash
6182
+ * @param {string | import("./template/TemplatedPathPlugin").TemplatePathFn<T>} filename used to get asset path with hash
6084
6183
  * @param {T=} data context data
6085
6184
  * @returns {InterpolatedPathAndAssetInfo} interpolated path and asset info
6086
6185
  */
@@ -6097,7 +6196,7 @@ This prevents using hashes of each other and should be avoided.`);
6097
6196
  /**
6098
6197
  * Returns interpolated path.
6099
6198
  * @template {PathData} [T=PathData]
6100
- * @param {string | import("./TemplatedPathPlugin").TemplatePathFn<T>} filename used to get asset path with hash
6199
+ * @param {string | import("./template/TemplatedPathPlugin").TemplatePathFn<T>} filename used to get asset path with hash
6101
6200
  * @param {T} data context data
6102
6201
  * @returns {string} interpolated path
6103
6202
  */
@@ -6112,7 +6211,7 @@ This prevents using hashes of each other and should be avoided.`);
6112
6211
  /**
6113
6212
  * Gets asset path with info.
6114
6213
  * @template {PathData} [T=PathData]
6115
- * @param {string | import("./TemplatedPathPlugin").TemplatePathFn<T>} filename used to get asset path with hash
6214
+ * @param {string | import("./template/TemplatedPathPlugin").TemplatePathFn<T>} filename used to get asset path with hash
6116
6215
  * @param {T} data context data
6117
6216
  * @returns {InterpolatedPathAndAssetInfo} interpolated path and asset info
6118
6217
  */
@@ -6286,7 +6385,7 @@ This prevents using hashes of each other and should be avoided.`);
6286
6385
  reportErrors();
6287
6386
 
6288
6387
  // for backward-compat temporary set the chunk graph
6289
- // TODO webpack 6
6388
+ // TODO in the next major release: drop it
6290
6389
  const old = this.chunkGraph;
6291
6390
  this.chunkGraph = chunkGraph;
6292
6391
  this.processRuntimeRequirements({
@@ -6561,7 +6660,7 @@ This prevents using hashes of each other and should be avoided.`);
6561
6660
  const usedIds = new Set();
6562
6661
 
6563
6662
  for (const module of this.modules) {
6564
- if (module.type === WEBPACK_MODULE_TYPE_RUNTIME) continue;
6663
+ if (module.is("runtime")) continue;
6565
6664
  const moduleId = chunkGraph.getModuleId(module);
6566
6665
  if (moduleId === null) continue;
6567
6666
  if (usedIds.has(moduleId)) {
@@ -6617,7 +6716,7 @@ This prevents using hashes of each other and should be avoided.`);
6617
6716
  // Hide from typescript
6618
6717
  const compilationPrototype = Compilation.prototype;
6619
6718
 
6620
- // TODO webpack 6 remove
6719
+ // TODO in the next major release: remove
6621
6720
  Object.defineProperty(compilationPrototype, "modifyHash", {
6622
6721
  writable: false,
6623
6722
  enumerable: false,
@@ -6629,7 +6728,7 @@ Object.defineProperty(compilationPrototype, "modifyHash", {
6629
6728
  }
6630
6729
  });
6631
6730
 
6632
- // TODO webpack 6 remove
6731
+ // TODO in the next major release: remove
6633
6732
  Object.defineProperty(compilationPrototype, "cache", {
6634
6733
  enumerable: false,
6635
6734
  configurable: false,
@@ -6648,7 +6747,7 @@ Object.defineProperty(compilationPrototype, "cache", {
6648
6747
  set: util.deprecate(
6649
6748
  /**
6650
6749
  * Handles the value callback for this hook.
6651
- * @param {EXPECTED_ANY} _v value
6750
+ * @param {Cache} _v value
6652
6751
  */
6653
6752
  (_v) => {},
6654
6753
  "Compilation.cache was removed in favor of Compilation.getCache()",