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
@@ -9,27 +9,31 @@ const {
9
9
  CSS_TYPE,
10
10
  HTML_TYPE,
11
11
  JAVASCRIPT_TYPE
12
- } = require("../ModuleSourceTypeConstants");
13
- const ResourceHintPlugin = require("../prefetch/ResourceHintPlugin");
14
- const ResourceHintRuntimeModule = require("../prefetch/ResourceHintRuntimeModule");
15
- const makeSerializable = require("../util/makeSerializable");
16
- const memoize = require("../util/memoize");
17
- const ModuleDependency = require("./ModuleDependency");
12
+ } = require("../../module/ModuleSourceTypeConstants");
13
+ const ResourceHintPlugin = require("../../prefetch/ResourceHintPlugin");
14
+ const ResourceHintRuntimeModule = require("../../prefetch/ResourceHintRuntimeModule");
15
+ const makeSerializable = require("../../util/makeSerializable");
16
+ const memoize = require("../../util/memoize");
17
+ const ModuleDependency = require("../core/ModuleDependency");
18
18
 
19
19
  // only the template needs it, and that runs only for a real html module
20
- const getHtmlGenerator = memoize(() => require("../html/HtmlGenerator"));
20
+ const getHtmlGenerator = memoize(() => require("../../html/HtmlGenerator"));
21
+ // only read when a page carries stylesheets, and it drags the css subsystem in
22
+ const getCssModulesPlugin = memoize(() =>
23
+ require("../../css/CssModulesPlugin")
24
+ );
21
25
 
22
26
  /** @import { ReplaceSource } from "webpack-sources" */
23
- /** @import Chunk from "../Chunk" */
24
- /** @import ChunkGraph from "../ChunkGraph" */
25
- /** @import Dependency from "../Dependency" */
26
- /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
27
- /** @import Entrypoint from "../Entrypoint" */
28
- /** @import { Range } from "../javascript/JavascriptParser" */
27
+ /** @import Chunk from "../../graph/Chunk" */
28
+ /** @import ChunkGraph from "../../graph/ChunkGraph" */
29
+ /** @import Dependency, { DependencyKinds } from "../../graph/Dependency" */
30
+ /** @import { DependencyTemplateContext } from "../../template/DependencyTemplate" */
31
+ /** @import Entrypoint from "../../graph/Entrypoint" */
32
+ /** @import { Range } from "../../javascript/JavascriptParser" */
29
33
  /** @typedef {"script" | "script-module" | "modulepreload" | "stylesheet" | "html" | "preload" | "prefetch"} HtmlEntryElementKind */
30
34
 
31
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, string, HtmlEntryElementKind, number, number, boolean, string, number, boolean, number, (Range | null), (Range | null), boolean, number, number]>} ObjectDeserializerContext */
32
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, string, HtmlEntryElementKind, number, number, boolean, string, number, boolean, number, (Range | null), (Range | null), boolean, number, number]>} ObjectSerializerContext */
35
+ /** @typedef {import("../../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, string, HtmlEntryElementKind, number, number, boolean, string, number, boolean, number, (Range | null), (Range | null), boolean, number, number]>} ObjectDeserializerContext */
36
+ /** @typedef {import("../../serialization/ObjectMiddleware").ObjectSerializerContext<[string, string, HtmlEntryElementKind, number, number, boolean, string, number, boolean, number, (Range | null), (Range | null), boolean, number, number]>} ObjectSerializerContext */
33
37
 
34
38
  class HtmlEntryDependency extends ModuleDependency {
35
39
  /**
@@ -193,11 +197,11 @@ const getEntrypointChunksInLoadOrder = (entrypoint) => {
193
197
 
194
198
  /** @type {Set<Chunk>} */
195
199
  const chunksLoadedByAncestorTags = new Set();
196
- /** @type {Set<import("../ChunkGroup")>} */
200
+ /** @type {Set<import("../../graph/ChunkGroup")>} */
197
201
  const visitedGroups = new Set();
198
202
  /**
199
203
  * Collects the chunks an ancestor entry's own tags already load.
200
- * @param {import("../ChunkGroup")} group chunk group to walk up from
204
+ * @param {import("../../graph/ChunkGroup")} group chunk group to walk up from
201
205
  * @returns {void}
202
206
  */
203
207
  const walk = (group) => {
@@ -296,83 +300,6 @@ const chunkHasCss = (chunk, chunkGraph) =>
296
300
  chunkGraph.getChunkModulesIterableBySourceType(chunk, CSS_IMPORT_TYPE)
297
301
  );
298
302
 
299
- /**
300
- * Deterministic tie-break key for CSS link ordering. `chunk.name` and
301
- * `chunk.id` are both stable strings (when present); one of them is set for
302
- * every chunk webpack emits. We can't rely on `Array.prototype.sort` being
303
- * stable — webpack still supports Node 10.13 where V8's sort is not guaranteed
304
- * stable for arrays larger than ten elements — so any time
305
- * `firstCssModulePostOrderIndex` returns the same value for two chunks (most
306
- * commonly when several chunks have no reachable CSS module in the entrypoint's
307
- * dependency walk and all map to `Infinity`) this key picks the canonical order.
308
- * Computed once per chunk when building the sort array rather than per
309
- * comparison.
310
- * @param {Chunk} chunk chunk
311
- * @returns {string} the tie-break key
312
- */
313
- const cssChunkSortKey = (chunk) =>
314
- `${chunk.name || ""} ${
315
- chunk.id === null || chunk.id === undefined ? "" : chunk.id
316
- }`;
317
-
318
- /**
319
- * Sort comparator for the CSS sibling emission order. Direct subtraction
320
- * would yield `NaN` when both indices are `Infinity` (the documented
321
- * fallback for chunks whose CSS modules the entrypoint's walk never
322
- * reaches), and `Array#sort` doesn't promise stable ordering on the legacy
323
- * Node 10 targets this repo still supports — so the tie-breaker must always
324
- * run when the indices match, including the `Infinity === Infinity` case.
325
- * @param {{ index: number, key: string }} a first entry
326
- * @param {{ index: number, key: string }} b second entry
327
- * @returns {-1 | 0 | 1} sort order
328
- */
329
- const compareCssChunkOrder = (a, b) => {
330
- if (a.index < b.index) return -1;
331
- if (a.index > b.index) return 1;
332
- if (a.key < b.key) return -1;
333
- if (a.key > b.key) return 1;
334
- return 0;
335
- };
336
-
337
- const CSS_SOURCE_TYPES = [CSS_TYPE, CSS_IMPORT_TYPE];
338
-
339
- /**
340
- * Smallest post-order index among the CSS modules of a chunk, taken
341
- * from the entrypoint's view of the dependency graph. Used to sort
342
- * sibling CSS chunks so they appear in source import order in the
343
- * extracted HTML — `entrypoint.chunks` itself does not give that
344
- * ordering for arbitrary splitChunks layouts. Considers both
345
- * `CSS_TYPE` and `CSS_IMPORT_TYPE` modules so a chunk made up
346
- * exclusively of `@import` placeholder modules (e.g. when splitChunks
347
- * separates them from their target CSS) still sorts by its true
348
- * source position rather than collapsing to `Infinity` and relying on
349
- * the chunk-name tie-breaker.
350
- * @param {Chunk} chunk chunk
351
- * @param {Entrypoint} entrypoint entrypoint the chunk belongs to
352
- * @param {ChunkGraph} chunkGraph chunk graph
353
- * @returns {number} the lowest post-order index of any CSS or
354
- * CSS-import module in the chunk, or `Number.POSITIVE_INFINITY` when
355
- * no such module has a defined index (e.g. for a module the
356
- * entrypoint never reached on its own dependency walk — runtime-only
357
- * modules, modules reached via `dependOn`, etc.) so such chunks sort
358
- * last among CSS chunks
359
- */
360
- const firstCssModulePostOrderIndex = (chunk, entrypoint, chunkGraph) => {
361
- let min = Number.POSITIVE_INFINITY;
362
- for (const sourceType of CSS_SOURCE_TYPES) {
363
- const modules = chunkGraph.getChunkModulesIterableBySourceType(
364
- chunk,
365
- sourceType
366
- );
367
- if (!modules) continue;
368
- for (const module of modules) {
369
- const idx = entrypoint.getModulePostOrderIndex(module);
370
- if (idx !== undefined && idx < min) min = idx;
371
- }
372
- }
373
- return min;
374
- };
375
-
376
303
  /**
377
304
  * Build a fresh `<link rel="stylesheet" href="…">` for a CSS chunk that
378
305
  * was pulled in by a `<script src>` entry — the originating tag was a
@@ -498,11 +425,12 @@ const cloneTagWithUrl = (
498
425
  return isLink ? body : `${body}</script>`;
499
426
  };
500
427
 
501
- // ES5 `<link rel="modulepreload">` polyfill (Safari <17, Firefox <115, …):
502
- // on browsers without native support, fetch each modulepreload target with the
503
- // tag's own credentials/integrity so the pending module import reuses it. The
504
- // `.ep` guard makes it idempotent, and the observer catches any later-inserted
505
- // links. Emitted only when the target environment lacks native support.
428
+ // WHY: an ES5 `<link rel="modulepreload">` polyfill (Safari <17, Firefox <115,
429
+ // …). On a browser without native support, each modulepreload target is fetched
430
+ // with the tag's own credentials and integrity, so the pending module import
431
+ // reuses it. The `.ep` guard makes that idempotent and the observer catches any
432
+ // later-inserted link. Emitted only where the target environment lacks native
433
+ // support.
506
434
  const MODULEPRELOAD_POLYFILL = [
507
435
  "(function(){",
508
436
  'var s=document.createElement("link").relList;',
@@ -552,7 +480,7 @@ const polyfilledSources = new WeakSet();
552
480
  * @property {string} entryName name of the entry this page loads
553
481
  * @property {Entrypoint} entrypoint the entrypoint
554
482
  * @property {"html" | "js"} hostType `"html"` when the entry has an extracted HTML page; `"js"` when a JS-only entry is being consulted (SSR framework case)
555
- * @property {import("../Compilation")} compilation the compilation
483
+ * @property {import("../../Compilation")} compilation the compilation
556
484
  * @property {{ rel: "modulepreload" | "preload" | "prefetch", chunk: string, hostChunks: string[] }[]} defaultHints the auto initial-graph hints (`chunk` / `hostChunks` name the referencing chunk — Vite's `hostId`)
557
485
  */
558
486
 
@@ -591,7 +519,7 @@ const buildLinkTag = (rel, attrs) =>
591
519
  /**
592
520
  * The chunks a hint means when it names a page: a page loads no JavaScript of
593
521
  * its own, so the hint follows the entries the parser extracted from it.
594
- * @param {import("../Compilation")} compilation compilation
522
+ * @param {import("../../Compilation")} compilation compilation
595
523
  * @param {Chunk} chunk chunk a hint resolved to
596
524
  * @returns {Chunk[]} the chunks to hint at
597
525
  */
@@ -614,7 +542,7 @@ const resolvePageChunk = (compilation, chunk) => {
614
542
  if (modules === undefined) return chunks.length === 0 ? [chunk] : chunks;
615
543
  for (const module of modules) {
616
544
  const { htmlEntries } =
617
- /** @type {import("../html/HtmlModule").HtmlModuleBuildInfo} */ (
545
+ /** @type {import("../../html/HtmlModule").HtmlModuleBuildInfo} */ (
618
546
  module.buildInfo
619
547
  ) || {};
620
548
  if (!htmlEntries) continue;
@@ -635,7 +563,7 @@ const resolvePageChunk = (compilation, chunk) => {
635
563
  * resolved with the final hash and public path), an `href` is used verbatim, and
636
564
  * `preconnect`/`dns-prefetch` use only `href`. Unknown chunk/entry names are skipped.
637
565
  * @param {HtmlResourceHint} desc the descriptor
638
- * @param {{ compilation: import("../Compilation"), chunkGraph: ChunkGraph, chunkByName: Map<string, Chunk>, outputCrossOrigin: string, integrityOn: boolean }} ctx resolution context
566
+ * @param {{ compilation: import("../../Compilation"), chunkGraph: ChunkGraph, chunkByName: Map<string, Chunk>, outputCrossOrigin: string, integrityOn: boolean }} ctx resolution context
639
567
  * @returns {string[]} the resolved tags
640
568
  */
641
569
  const resolveResourceHint = (desc, ctx) => {
@@ -737,10 +665,9 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
737
665
  const dep = /** @type {HtmlEntryDependency} */ (dependency);
738
666
  const compilation = runtimeTemplate.compilation;
739
667
 
740
- // A `type: "html"` link points at another emitted page, not a JS/CSS
741
- // chunk: rewrite the attribute to that page's filename (resolved by
742
- // HtmlModulesPlugin once it's built) and emit no sibling tags — a page
743
- // link loads only itself.
668
+ // A `type: "html"` link points at another emitted page rather than a chunk,
669
+ // so rewrite the attribute to that page's filename and emit no siblings:
670
+ // a page link loads only itself.
744
671
  if (dep.elementKind === "html") {
745
672
  source.replace(
746
673
  dep.range[0],
@@ -764,21 +691,17 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
764
691
  const orderedChunks = getEntrypointChunksInLoadOrder(entrypoint);
765
692
  const entryChunk = orderedChunks[orderedChunks.length - 1];
766
693
 
767
- // `crossorigin` mirrors `output.crossOriginLoading` onto every injected
768
- // tag. Empty when the option is off or the originating tag already set
769
- // `crossorigin` (author value wins, flagged at parse time). Mirrors
770
- // webpack's runtime, which sets `crossOrigin` on chunk-loading scripts,
771
- // and matches Vite, which emits it on every injected script/stylesheet.
694
+ // Mirrors `output.crossOriginLoading` onto every injected tag, as webpack's
695
+ // runtime does for chunk-loading scripts. Empty when the option is off or
696
+ // the originating tag set `crossorigin` itself, since the author wins.
772
697
  const crossOrigin =
773
698
  crossOriginLoading && !dep.hasOwnCrossOrigin
774
699
  ? ` crossorigin="${crossOriginLoading}"`
775
700
  : "";
776
701
 
777
- // Per-chunk SRI: emit an `integrity` sentinel resolved late (after the
778
- // chunks' final bytes exist) by `resolveChunkIntegritySentinels`. Tags are
779
- // generated per HTML module, but one module can back pages with different
780
- // `integrity` options, so sentinels are emitted whenever any page wants SRI
781
- // and each page then resolves or strips them on emit.
702
+ // Per-chunk SRI emits an `integrity` sentinel resolved once the chunks'
703
+ // final bytes exist. One module can back pages with different `integrity`
704
+ // options, so every page emits them and strips its own on emit.
782
705
  const htmlOption = compilation.outputOptions.html;
783
706
  const integrityOn = getHtmlGenerator().hasIntegritySentinels(compilation);
784
707
  const inject =
@@ -841,10 +764,6 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
841
764
  compilation.outputOptions.module === true ? ' type="module"' : "";
842
765
 
843
766
  const entryContentHashType = isStylesheet ? "css" : "javascript";
844
- const inlineOption =
845
- typeof htmlOption === "object" ? htmlOption.inline : undefined;
846
- /** @type {RegExp[] | null} */
847
- const inlinePatterns = Array.isArray(inlineOption) ? inlineOption : null;
848
767
  /**
849
768
  * @param {Chunk} chunk chunk to test
850
769
  * @param {"javascript" | "css"} contentType which asset of the chunk is being emitted
@@ -854,25 +773,18 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
854
773
  // A `<link rel="modulepreload">` is a void fetch hint — inlining it would
855
774
  // emit an unclosed, executing `<script>`.
856
775
  if (dep.elementKind === "modulepreload") return false;
776
+ if (!getHtmlGenerator().canInlineChunk(compilation, chunk)) {
777
+ return false;
778
+ }
857
779
  if (dep.forceInline) return true;
858
- if (!inlineOption) return false;
859
- if (inlineOption === true) return true;
860
- // `"script"`/`"style"` inline by asset type, not chunk name — a chunk's
861
- // JS and CSS share a name, so only the emitted `contentType` tells them
862
- // apart.
863
- if (inlineOption === "script") return contentType === "javascript";
864
- if (inlineOption === "style") return contentType === "css";
865
- const name = chunk.name || String(chunk.id);
866
- return /** @type {RegExp[]} */ (inlinePatterns).some((re) =>
867
- re.test(name)
868
- );
780
+ return getHtmlGenerator().isChunkInlined(htmlOption, chunk, contentType);
869
781
  };
870
782
 
871
783
  // Only inline when the HTML module is emitted as a standalone page (extract mode).
872
784
  // If it's exported as a JS string, sentinels would end up embedded in the JS chunk.
873
785
  const isExtractedHtml = chunkGraph
874
786
  .getModuleSourceTypes(
875
- /** @type {import("../Module")} */ (templateContext.module)
787
+ /** @type {import("../../module/Module")} */ (templateContext.module)
876
788
  )
877
789
  .has("html");
878
790
  const entryInlined =
@@ -948,11 +860,9 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
948
860
  ? ` integrity="${getHtmlGenerator().makeChunkIntegritySentinel(chunk, kind)}"`
949
861
  : "";
950
862
  if (kind === "css") {
951
- // A CSS chunk is always loaded via `<link rel="stylesheet">`.
952
- // Clone only when the entry tag is itself a native `<link
953
- // rel="stylesheet">` (so attributes like `media` carry over);
954
- // a `<script>` entry that imported CSS, or a custom element,
955
- // gets a freshly synthesized `<link>`.
863
+ // A CSS chunk always loads through `<link rel="stylesheet">`. Clone
864
+ // only when the entry tag is itself one, so `media` carries over;
865
+ // anything else gets a freshly synthesized `<link>`.
956
866
  if (isStylesheet && tagIsNative) {
957
867
  return cloneTagWithUrl(
958
868
  originalTag,
@@ -1004,10 +914,9 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
1004
914
  // Parser-derived anchor (a source text scan would match `</head>` inside
1005
915
  // comments or raw text).
1006
916
  const headClose = inject === "head" ? dep.headAnchor : -1;
1007
- // When the entry tag is already inside <head> (tagStart < headClose),
1008
- // inserting siblings at headClose would place them after the entry,
1009
- // reversing runtime-before-entry execution order for deferred scripts.
1010
- // Insert before the entry tag instead so the load order is preserved.
917
+ // With the entry tag already inside `<head>`, inserting at `headClose`
918
+ // would place siblings after it and reverse runtime-before-entry order
919
+ // for deferred scripts. Insert before the entry tag instead.
1011
920
  const headAt =
1012
921
  headClose < 0
1013
922
  ? -1
@@ -1018,31 +927,26 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
1018
927
  let cssHtml = "";
1019
928
  let cssAt = -1;
1020
929
  if (isStylesheet) {
1021
- // `<link rel="stylesheet">` entries are CSS, but a shared/runtime
1022
- // JS-only chunk (e.g. `optimization.runtimeChunk`) can still sit in
1023
- // the entrypoint — only clone the `<link>` for siblings that actually
1024
- // produce a `.css` asset (mirrors the JS branch below), otherwise the
1025
- // link points at a non-existent `.css` file (a 404, or an empty
1026
- // `<style>` when inlined). Attributes like `media` still carry over.
930
+ // WHY: a `<link rel="stylesheet">` entry is CSS, but a shared or runtime
931
+ // JS-only chunk — `optimization.runtimeChunk`, say — can still sit in the
932
+ // entrypoint, so the `<link>` is cloned only for siblings that actually
933
+ // produce a `.css` asset, mirroring the JS branch below. Otherwise it
934
+ // points at a `.css` file that does not exist: a 404, or an empty
935
+ // `<style>` when inlined. Attributes such as `media` still carry over.
1027
936
  for (let i = 0; i < orderedChunks.length - 1; i++) {
1028
937
  if (chunkHasCss(orderedChunks[i], chunkGraph)) {
1029
938
  siblings.push(buildSibling(orderedChunks[i], "css"));
1030
939
  }
1031
940
  }
1032
941
  } else {
1033
- // CSS chunks are emitted before JS chunks so the cascade is set
1034
- // up before any script runs. Within CSS the order needs to match
1035
- // the source's import order — `entrypoint.chunks` alone doesn't
1036
- // give us that for arbitrary splitChunks layouts (splitChunks
1037
- // inserts each new chunk before the entry chunk via
1038
- // `insertChunk(_, before)`, so split CSS siblings end up in
1039
- // *reverse* of the order they were processed — exactly the
1040
- // html-webpack-plugin#1838 / mini-css-extract#959 symptom). We
1041
- // re-derive the order from the entrypoint's module post-order
1042
- // index, which mirrors the dependency walk and so reflects the
1043
- // import order.
1044
- /** @type {{ chunk: Chunk, index: number, key: string }[]} */
1045
- const cssChunkOrder = [];
942
+ // WHY: splitChunks inserts each new chunk before the entry chunk, so
943
+ // `entrypoint.chunks` hands back split CSS siblings in reverse of the
944
+ // order they were processed — the html-webpack-plugin#1838 and
945
+ // mini-css-extract#959 symptom. The order is re-derived from the
946
+ // entrypoint's module post-order index, which follows the dependency
947
+ // walk and so the source's import order.
948
+ /** @type {Chunk[]} */
949
+ const cssChunks = [];
1046
950
  /** @type {Chunk[]} */
1047
951
  const jsChunks = [];
1048
952
  for (let i = 0; i < orderedChunks.length - 1; i++) {
@@ -1050,47 +954,27 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
1050
954
  const hasCss = chunkHasCss(chunk, chunkGraph);
1051
955
  const hasJs = chunkHasJs(chunk, chunkGraph);
1052
956
  if (hasCss) {
1053
- cssChunkOrder.push({
1054
- chunk,
1055
- index: firstCssModulePostOrderIndex(
1056
- chunk,
1057
- entrypoint,
1058
- chunkGraph
1059
- ),
1060
- key: cssChunkSortKey(chunk)
1061
- });
957
+ cssChunks.push(chunk);
1062
958
  }
1063
- // Anything that isn't CSS-only stays on the JS lane, in the
1064
- // `orderedChunks` order — that preserves the runtime-first /
1065
- // vendor-before-entry invariant of `getEntrypointChunksInLoadOrder`.
1066
- // Chunks that produce no `.js` and no `.css` (e.g. wasm-only
1067
- // or asset-only) still get a `<script>` clone here so we
1068
- // keep prior behavior for users who relied on it.
959
+ // Anything not CSS-only stays on the JS lane in `orderedChunks` order,
960
+ // preserving the runtime-first invariant. A chunk emitting neither
961
+ // `.js` nor `.css` still gets a clone, as it always has.
1069
962
  if (hasJs || !hasCss) jsChunks.push(chunk);
1070
963
  }
1071
- // If the entry chunk itself contains CSS (entry JS imports CSS
1072
- // without splitChunks separating it), fold it into the same CSS
1073
- // ordering so the entry-chunk `<link>` lands in the correct
1074
- // cascade position relative to sibling CSS chunks.
964
+ // When the entry chunk carries CSS itself, fold it into the same
965
+ // ordering so its `<link>` lands in the right cascade position
966
+ // relative to the sibling CSS chunks.
1075
967
  if (chunkHasCss(entryChunk, chunkGraph)) {
1076
- cssChunkOrder.push({
1077
- chunk: entryChunk,
1078
- index: firstCssModulePostOrderIndex(
1079
- entryChunk,
1080
- entrypoint,
1081
- chunkGraph
1082
- ),
1083
- key: cssChunkSortKey(entryChunk)
1084
- });
968
+ cssChunks.push(entryChunk);
1085
969
  }
1086
- cssChunkOrder.sort(compareCssChunkOrder);
1087
- // Stylesheets always land in <head> when the page has one. A
1088
- // classic blocking script pins them ahead of itself (`cssAnchor`)
1089
- // so its execution never awaits later CSS; when every script is
1090
- // `defer`/module they go to the *end* of head, after the script
1091
- // tags — Vite's and html-webpack-plugin's order: the scripts
1092
- // start fetching earlier yet still execute after parsing and
1093
- // after pending stylesheets.
970
+ const cssChunkOrder = getCssModulesPlugin().getCssChunksInCascadeOrder(
971
+ cssChunks,
972
+ entrypoint,
973
+ chunkGraph
974
+ );
975
+ // Stylesheets land in `<head>`. A classic blocking script pins them
976
+ // ahead of itself, so it never awaits later CSS; with only `defer` and
977
+ // module scripts they go last, which starts the script fetches earlier.
1094
978
  cssAt =
1095
979
  dep.headAnchor >= 0
1096
980
  ? dep.cssAnchor >= 0 && dep.cssAnchor < dep.headAnchor
@@ -1100,7 +984,7 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
1100
984
  ? dep.cssAnchor
1101
985
  : dep.tagStart;
1102
986
  cssHtml = cssChunkOrder
1103
- .map(({ chunk }) => buildSibling(chunk, "css"))
987
+ .map((chunk) => buildSibling(chunk, "css"))
1104
988
  .join("");
1105
989
  for (const chunk of jsChunks) {
1106
990
  siblings.push(buildSibling(chunk, "javascript"));
@@ -1116,15 +1000,15 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
1116
1000
  if (cssHtml !== "" && dep.cssAnchor < 0) source.insert(cssAt, cssHtml);
1117
1001
  }
1118
1002
 
1119
- // Resource hints are opt-in — webpack already loads the initial chunks
1120
- // via parallel `<script>` tags, so there is no waterfall to prevent by
1121
- // default. `output.resourceHints` requests them: `true` preloads the
1122
- // entry's initial dependency chunks (runtime, vendor, split); an array
1123
- // or function adds custom hints (a function may spread the auto
1124
- // `defaultHints`). Only for extracted pages — a JS-string HTML export
1125
- // would embed the sentinels in the JS chunk. URL-referenced assets
1126
- // (fonts, images) carrying `webpackPrefetch` / `webpackPreload`
1127
- // (magic-comment or `parser.<type>.urlHints` rule) also emit here.
1003
+ // WHY: resource hints are opt-in, the initial chunks already loading
1004
+ // through parallel `<script>` tags, so there is no default waterfall to
1005
+ // prevent. `output.resourceHints` requests them: `true` preloads the entry's
1006
+ // initial dependency chunks (runtime, vendor, split), while an array or a
1007
+ // function adds custom ones and a function may spread the auto
1008
+ // `defaultHints`. Extracted pages only — a JS-string HTML export would embed
1009
+ // the sentinels in the JS chunk. A URL-referenced asset carrying
1010
+ // `webpackPrefetch` / `webpackPreload`, by magic comment or a
1011
+ // `parser.<type>.urlHints` rule, emits here too.
1128
1012
  const resourceHintResolver =
1129
1013
  ResourceHintPlugin.getCompilationResolver(compilation);
1130
1014
  const resourceHints = resourceHintResolver.hints;
@@ -1152,15 +1036,16 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
1152
1036
 
1153
1037
  // === chunks channel — the entry's own initial dependency graph ===
1154
1038
  if (resourceHints !== undefined && resourceHints !== false) {
1155
- // The auto initial-graph preload as descriptors carrying their exact
1156
- // tag, built only when needed (`true`/`"prefetch"` emits them, a
1157
- // function may spread them). The entry chunk is skipped — it's
1158
- // already the `<script src>`. ESM uses `modulepreload` (fetch +
1159
- // parse), classic output `preload as="script"`, and `"prefetch"`
1160
- // opts into `<link rel="prefetch">` (idle-time fetch, no `as` / no
1161
- // `integrity` — the spec doesn't list them). Async `import()` chunks
1162
- // aren't covered here; use `module.parser.javascript.dynamicImport*`
1163
- // which routes through webpack's on-demand chunk-load runtime.
1039
+ // WHY: descriptors for the auto initial-graph preload, carrying their
1040
+ // exact tag and built only when needed — `true` or `"prefetch"` emits
1041
+ // them, and a function may spread them. The entry chunk is skipped, being
1042
+ // the `<script src>` already. ESM uses `modulepreload`, which fetches and
1043
+ // parses; classic output `preload as="script"`; and `"prefetch"` opts into
1044
+ // `<link rel="prefetch">`, an idle-time fetch with no `as` and no
1045
+ // `integrity`, which the spec does not list. An async `import()` chunk is
1046
+ // not covered here: that is
1047
+ // `module.parser.javascript.dynamicImport*`, which routes through
1048
+ // webpack's on-demand chunk-load runtime.
1164
1049
  const prefetchMode = resourceHints === "prefetch";
1165
1050
  const preloadMode = resourceHints === true;
1166
1051
  /** @type {"modulepreload" | "preload" | "prefetch"} */
@@ -1195,10 +1080,9 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
1195
1080
  "javascript"
1196
1081
  )}"`
1197
1082
  : "";
1198
- // Mirror the entry tag's `nonce`/`crossorigin`/`referrerpolicy`
1199
- // (and `output.crossOriginLoading`) so the request matches the
1200
- // sibling `<script>`'s and the browser reuses it instead of
1201
- // fetching twice.
1083
+ // Mirror the entry tag's `nonce`, `crossorigin` and `referrerpolicy`,
1084
+ // so the request matches the sibling `<script>`'s and the browser
1085
+ // reuses it rather than fetching twice.
1202
1086
  const attrs = `${dep.copyableAttrsText}${crossOrigin}${integrityAttr}`;
1203
1087
  const tag = prefetchMode
1204
1088
  ? `<link rel="prefetch" href="${href}"${attrs}>`
@@ -1229,7 +1113,9 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
1229
1113
  // `<script>` entry — that's what users key on.
1230
1114
  let entryName = dep.entryName;
1231
1115
  for (const c of chunkGraph.getModuleChunks(
1232
- /** @type {import("../Module")} */ (templateContext.module)
1116
+ /** @type {import("../../module/Module")} */ (
1117
+ templateContext.module
1118
+ )
1233
1119
  )) {
1234
1120
  if (c.name) {
1235
1121
  entryName = c.name;
@@ -1276,14 +1162,10 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
1276
1162
  }
1277
1163
 
1278
1164
  // === assets channel — URL-referenced assets carrying `prefetch`/`preload` ===
1279
- // The plugin has already scanned the entrypoint's chunks × modules
1280
- // once and cached the URL/CSS/HTML asset deps for this entry name;
1281
- // consume that list here so this template doesn't repeat the walk.
1282
- // Each unique asset emits one `<link rel="prefetch|preload">` into
1283
- // the HTML `<head>`; the JS chunk-startup runtime skips it (no
1284
- // double `<link>` in DOM). URLs are sentinels resolved from asset
1285
- // codegen data during `HtmlModulesPlugin` render — the asset
1286
- // module might not have been codegen'd yet at this point.
1165
+
1166
+ // The plugin already walked the entrypoint once and cached this entry's
1167
+ // asset deps, so consume that list rather than repeat it. URLs stay
1168
+ // sentinels here: the asset module may not be codegen'd yet.
1287
1169
  const outputCrossOriginAttr = crossOriginLoading
1288
1170
  ? ` crossorigin="${crossOriginLoading}"`
1289
1171
  : "";
@@ -1294,7 +1176,7 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
1294
1176
  const asAttr =
1295
1177
  md.asAttribute ||
1296
1178
  ResourceHintRuntimeModule.guessAsAttribute(
1297
- /** @type {import("./URLDependency")} */ (md).request || ""
1179
+ /** @type {import("../url/URLDependency")} */ (md).request || ""
1298
1180
  );
1299
1181
  const typeAttr = md.typeAttribute;
1300
1182
  const mediaAttr = md.mediaAttribute;
@@ -1324,12 +1206,9 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
1324
1206
  finalHints.push(h);
1325
1207
  }
1326
1208
  }
1327
- // When the target environment lacks native `modulepreload` (an
1328
- // `output.environment` capability, like the JS-feature checks), append
1329
- // a tiny polyfill once per page so the hints still warm the cache there.
1330
- // `resourceHints.modulePreloadPolyfill` defaults from the target's
1331
- // modulepreload support (`output.environment.modulePreload`); `false`
1332
- // opts out (strict CSP).
1209
+ // Without native `modulepreload` the hints warm no cache, so append the
1210
+ // polyfill once per page. It defaults from the target's support, and
1211
+ // `false` opts out, which a strict CSP needs.
1333
1212
  if (
1334
1213
  rhOptions &&
1335
1214
  rhOptions.modulePreloadPolyfill &&
@@ -1339,10 +1218,9 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
1339
1218
  polyfilledSources.add(source);
1340
1219
  finalHints.push(`<script>${MODULEPRELOAD_POLYFILL}</script>`);
1341
1220
  }
1342
- // Insert right after the `<head>` open tag (parser-derived) so the
1343
- // hints are the document's first fetches; fall back to the first
1344
- // blocking script (else the entry tag) when the page has no
1345
- // written `<head>` (e.g. an HTML fragment).
1221
+ // Insert just after the `<head>` open tag, so the hints are the first
1222
+ // fetches. A page with no written `<head>` falls back to the first
1223
+ // blocking script, else the entry tag.
1346
1224
  const hintAt =
1347
1225
  dep.headOpenEnd >= 0
1348
1226
  ? dep.headOpenEnd
@@ -1355,9 +1233,13 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
1355
1233
  }
1356
1234
  };
1357
1235
 
1358
- makeSerializable(
1359
- HtmlEntryDependency,
1236
+ makeSerializable(HtmlEntryDependency, [
1237
+ "webpack/lib/dependencies/html/HtmlEntryDependency",
1238
+ // TODO in the next major release: remove, they restore pre-move cache packs
1360
1239
  "webpack/lib/dependencies/HtmlEntryDependency"
1361
- );
1240
+ ]);
1241
+
1242
+ /** @type {Set<keyof DependencyKinds>} */
1243
+ HtmlEntryDependency.KINDS = new Set([...ModuleDependency.KINDS, "html-entry"]);
1362
1244
 
1363
1245
  module.exports = HtmlEntryDependency;
@@ -4,17 +4,17 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- const { HTML_TYPE } = require("../ModuleSourceTypeConstants");
8
- const makeSerializable = require("../util/makeSerializable");
9
- const ModuleDependency = require("./ModuleDependency");
7
+ const { HTML_TYPE } = require("../../module/ModuleSourceTypeConstants");
8
+ const makeSerializable = require("../../util/makeSerializable");
9
+ const ModuleDependency = require("../core/ModuleDependency");
10
10
 
11
11
  /** @import { ReplaceSource } from "webpack-sources" */
12
- /** @import CodeGenerationResults from "../CodeGenerationResults" */
13
- /** @import Dependency, { UpdateHashContext } from "../Dependency" */
14
- /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
15
- /** @import Module from "../Module" */
16
- /** @import { Range } from "../javascript/JavascriptParser" */
17
- /** @import Hash from "../util/Hash" */
12
+ /** @import CodeGenerationResults from "../../module/CodeGenerationResults" */
13
+ /** @import Dependency, { UpdateHashContext } from "../../graph/Dependency" */
14
+ /** @import { DependencyTemplateContext } from "../../template/DependencyTemplate" */
15
+ /** @import Module from "../../module/Module" */
16
+ /** @import { Range } from "../../javascript/JavascriptParser" */
17
+ /** @import Hash from "../../util/Hash" */
18
18
 
19
19
  // One pass over the source: each char is replaced once and replacements aren't
20
20
  // re-scanned, so this matches the `&`-first sequential escape chain exactly.
@@ -98,9 +98,10 @@ HtmlInlineHtmlDependency.Template = class HtmlInlineHtmlDependencyTemplate exten
98
98
  }
99
99
  };
100
100
 
101
- makeSerializable(
102
- HtmlInlineHtmlDependency,
101
+ makeSerializable(HtmlInlineHtmlDependency, [
102
+ "webpack/lib/dependencies/html/HtmlInlineHtmlDependency",
103
+ // TODO in the next major release: remove, they restore pre-move cache packs
103
104
  "webpack/lib/dependencies/HtmlInlineHtmlDependency"
104
- );
105
+ ]);
105
106
 
106
107
  module.exports = HtmlInlineHtmlDependency;