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
@@ -5,18 +5,18 @@
5
5
  "use strict";
6
6
 
7
7
  const { RawSource, ReplaceSource } = require("webpack-sources");
8
- const ConcatenationScope = require("../ConcatenationScope");
9
- const Generator = require("../Generator");
8
+ const CssModulesPlugin = require("../css/CssModulesPlugin");
9
+ const WebpackError = require("../errors/WebpackError");
10
+ const Generator = require("../module/Generator");
10
11
  const {
11
12
  HTML_TYPE,
12
13
  HTML_TYPES,
13
14
  JAVASCRIPT_TYPE,
14
15
  JAVASCRIPT_TYPES
15
- } = require("../ModuleSourceTypeConstants");
16
- const RuntimeGlobals = require("../RuntimeGlobals");
17
- const Template = require("../Template");
18
- const CssModulesPlugin = require("../css/CssModulesPlugin");
19
- const WebpackError = require("../errors/WebpackError");
16
+ } = require("../module/ModuleSourceTypeConstants");
17
+ const ConcatenationScope = require("../optimize/ConcatenationScope");
18
+ const RuntimeGlobals = require("../runtime/RuntimeGlobals");
19
+ const Template = require("../template/Template");
20
20
  const { getUndoPath } = require("../util/identifier");
21
21
  const memoize = require("../util/memoize");
22
22
  const { PUBLIC_PATH_AUTO } = require("../util/publicPathPlaceholder");
@@ -24,7 +24,9 @@ const { VOID } = require("./data");
24
24
 
25
25
  const getCreateNodeHash = memoize(() => require("crypto").createHash);
26
26
 
27
- const getCssSyntax = memoize(() => require("../css/syntax"));
27
+ const getCssParser = memoize(() => require("../css/syntax-parser"));
28
+
29
+ const getHtmlParser = memoize(() => require("./syntax-parser"));
28
30
 
29
31
  const getHtmlSyntax = memoize(() => require("./syntax"));
30
32
 
@@ -48,7 +50,7 @@ const getHtmlSyntax = memoize(() => require("./syntax"));
48
50
  const serializeAttrs = (attrs) => {
49
51
  let out = "";
50
52
  if (attrs) {
51
- const { escapeAttribute } = getHtmlSyntax();
53
+ const { escapeAttribute } = getHtmlParser();
52
54
  for (const name of Object.keys(attrs)) {
53
55
  const value = attrs[name];
54
56
  if (value === false || value === undefined || value === null) continue;
@@ -128,6 +130,7 @@ const metaIsCsp = (attrs) => {
128
130
  /** @import { Source } from "webpack-sources" */
129
131
  /** @import { HtmlGeneratorOptions } from "../../declarations/WebpackOptions" */
130
132
  /** @typedef {import("../../declarations/WebpackOptions").OutputHtmlOptions["csp"]} CspOption */
133
+ /** @typedef {import("../../declarations/WebpackOptions").OutputNormalized["html"]} HtmlOption */
131
134
  /** @import { HtmlTagDescriptor, HtmlMutableTag } from "./HtmlModulesPlugin" */
132
135
  /** @typedef {"head" | "body"} HtmlTagLocation */
133
136
  /**
@@ -142,29 +145,29 @@ const metaIsCsp = (attrs) => {
142
145
  */
143
146
  /** @typedef {{ headOpen: number, headEnd: number, bodyOpen: number, bodyEnd: number }} HtmlAnchors */
144
147
  /** @typedef {{ tags: HtmlMutableTag[], spans: (HtmlTagSpan | null)[], originals: (string | null)[], descriptors: (HtmlTagDescriptor | null)[], anchors: HtmlAnchors }} HtmlModel */
145
- /** @import Chunk from "../Chunk" */
148
+ /** @import Chunk from "../graph/Chunk" */
146
149
  /** @import Compilation, { DependencyConstructor } from "../Compilation" */
147
150
  /** @typedef {boolean | string[] | ((asset: { chunk: Chunk, filename: string }) => string[] | false)} HtmlIntegrity */
148
- /** @import CodeGenerationResults from "../CodeGenerationResults" */
149
- /** @import Dependency from "../Dependency" */
150
- /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
151
- /** @import { GenerateContext, UpdateHashContext } from "../Generator" */
151
+ /** @import CodeGenerationResults from "../module/CodeGenerationResults" */
152
+ /** @import Dependency from "../graph/Dependency" */
153
+ /** @import { DependencyTemplateContext } from "../template/DependencyTemplate" */
154
+ /** @import { GenerateContext, UpdateHashContext } from "../module/Generator" */
152
155
  /**
153
156
  * @import Module, {
154
157
  * SourceType,
155
158
  * SourceTypes,
156
159
  * ConcatenationBailoutReasonContext,
157
160
  * RuntimeRequirements
158
- * } from "../Module"
161
+ * } from "../module/Module"
159
162
  */
160
- /** @import ModuleGraph from "../ModuleGraph" */
161
- /** @import NormalModule from "../NormalModule" */
163
+ /** @import ModuleGraph from "../graph/ModuleGraph" */
164
+ /** @import NormalModule from "../module/NormalModule" */
162
165
  /** @import { HtmlModuleBuildInfo } from "./HtmlModule" */
163
- /** @import RuntimeTemplate from "../RuntimeTemplate" */
166
+ /** @import RuntimeTemplate from "../template/RuntimeTemplate" */
164
167
  /** @import Hash from "../util/Hash" */
165
168
  /**
166
169
  * @template T
167
- * @typedef {import("../InitFragment")<T>} InitFragment
170
+ * @typedef {import("../template/InitFragment")<T>} InitFragment
168
171
  */
169
172
 
170
173
  /**
@@ -226,12 +229,9 @@ const CHUNK_URL_SENTINEL_REGEXP =
226
229
  const HTML_PAGE_URL_SENTINEL_REGEXP =
227
230
  /__WEBPACK_HTML_PAGE_URL__([0-9a-f]+)__END__/g;
228
231
 
229
- // Sentinel for a URL-referenced asset (font/image/…) emitted into a resource-hint
230
- // `<link>` tag by `HtmlEntryDependency`; resolved to the asset's real emitted
231
- // URL from its codegen data during `HtmlModulesPlugin` render. Deferred because
232
- // HtmlEntry deps run *while* the HTML module is being codegen'd — the asset
233
- // module's own codegen might not have completed yet. Keyed by the asset
234
- // module's identifier, hex-encoded so any character in it is safe in a URL.
232
+ // Sentinel for a URL-referenced asset in a resource-hint `<link>`, resolved at
233
+ // `HtmlModulesPlugin` render because HtmlEntry deps run while the HTML module
234
+ // is codegen'd, before the asset's own. Keyed by hex-encoded identifier.
235
235
  const ASSET_URL_SENTINEL_REGEXP =
236
236
  /__WEBPACK_HTML_ASSET_URL__([0-9a-f]+)__END__/g;
237
237
 
@@ -240,11 +240,9 @@ const ASSET_URL_SENTINEL_REGEXP =
240
240
  /** @type {WeakSet<Compilation>} */
241
241
  const integritySentinelCompilations = new WeakSet();
242
242
 
243
- // Matches the whole ` integrity="<sentinel>"` so the attribute can be dropped
244
- // entirely when the per-asset `integrity` function returns `false`. Minification
245
- // runs first and may have unquoted the value (§13.1.2.3), so the quote is
246
- // optional and back-referenced to keep the pair matched; the replacement always
247
- // re-quotes, since an SRI list carries spaces and `=` padding.
243
+ // Matches the whole ` integrity="<sentinel>"`, so the attribute can be dropped
244
+ // when the per-asset `integrity` returns `false`. Minification runs first and
245
+ // may have unquoted it, hence the optional back-referenced quote.
248
246
  const INTEGRITY_SENTINEL_REGEXP =
249
247
  / integrity=(["']?)__WEBPACK_HTML_INTEGRITY__([0-9a-f]+)__([a-z]+)__END__\1/g;
250
248
 
@@ -253,12 +251,15 @@ const INTEGRITY_SENTINEL_REGEXP =
253
251
  const INTEGRITY_SENTINEL_STRIP_REGEXP =
254
252
  / integrity=(\\?["']|)__WEBPACK_HTML_INTEGRITY__[0-9a-f]+__[a-z]+__END__\1/g;
255
253
 
256
- // The trailing `(?:__<hash>)?` is the inlined chunk's content hash, embedded by
257
- // `embedInlineChunkHashes` so the host HTML's bytes (and its `[contenthash]`,
258
- // incl. RealContentHashPlugin's recompute) change with the inlined content; the
259
- // resolver ignores it.
254
+ // The trailing `(?:__<hash>)?` is the inlined chunk's content hash, embedded so
255
+ // the host page's bytes and `[contenthash]` change with the inlined content.
256
+ // The resolver ignores it.
260
257
  const INLINE_SENTINEL_REGEXP =
261
258
  /__WEBPACK_HTML_INLINE__([0-9a-f]+)__([a-z]+)(?:__[0-9a-f]+)?__END__/g;
259
+ // The same, with the `;` a minifier ends the sentinel's statement with, which a
260
+ // chunk ending in its own `;` would double.
261
+ const INLINE_SENTINEL_STATEMENT_REGEXP =
262
+ /__WEBPACK_HTML_INLINE__([0-9a-f]+)__([a-z]+)(?:__[0-9a-f]+)?__END__(;?)/g;
262
263
 
263
264
  /**
264
265
  * Rewrite relative `url(...)` references in a CSS chunk so they still resolve
@@ -278,7 +279,7 @@ const rebaseCssUrls = (css, fromFile, toFile, outputPath) => {
278
279
  const fromUndo = getUndoPath(fromFile, outputPath, false);
279
280
  const toUndo = getUndoPath(toFile, outputPath, false);
280
281
  if (fromUndo === toUndo) return css;
281
- const { readToken, TT_URL } = getCssSyntax();
282
+ const { readToken, TokenType } = getCssParser();
282
283
  const token = {
283
284
  type: 0,
284
285
  start: 0,
@@ -293,7 +294,7 @@ const rebaseCssUrls = (css, fromFile, toFile, outputPath) => {
293
294
  let out = "";
294
295
  while (readToken(css, pos, token) !== undefined) {
295
296
  pos = token.end;
296
- if (token.type !== TT_URL) continue;
297
+ if (token.type !== TokenType.Url) continue;
297
298
  const url = css.slice(token.contentStart, token.contentEnd);
298
299
  // Rebase only the undo-path-relative urls; a root-relative (`/`), fragment
299
300
  // (`#`) or scheme (`data:`, …, a `:` before any `/`) url is absolute.
@@ -365,7 +366,7 @@ class HtmlGenerator extends Generator {
365
366
  );
366
367
  }
367
368
  const filename = compilation.getPath(
368
- /** @type {import("../TemplatedPathPlugin").TemplatePath} */
369
+ /** @type {import("../template/TemplatedPathPlugin").TemplatePath} */
369
370
  (filenameTemplate),
370
371
  {
371
372
  chunk,
@@ -436,7 +437,7 @@ class HtmlGenerator extends Generator {
436
437
  if (!content.includes("__WEBPACK_HTML_ASSET_URL__")) return content;
437
438
  const byIdentifier = getModulesByIdentifier(compilation);
438
439
  const codeGenerationResults =
439
- /** @type {import("../CodeGenerationResults")} */
440
+ /** @type {import("../module/CodeGenerationResults")} */
440
441
  (compilation.codeGenerationResults);
441
442
  return content.replace(ASSET_URL_SENTINEL_REGEXP, (_, hex) => {
442
443
  const id = Buffer.from(hex, "hex").toString("utf8");
@@ -449,12 +450,9 @@ class HtmlGenerator extends Generator {
449
450
  const url =
450
451
  /** @type {Record<string, string | undefined> | undefined} */
451
452
  (data.get("url"));
452
- // Prefer the `asset-url` channel — it's the actual URL string
453
- // (publicPath + filename). Also handled: assets reached only from JS
454
- // have no `asset-url` channel (their only URL is the JS expression
455
- // `__webpack_require__.p + "…"`); for those we reconstruct the URL
456
- // from the emitted `filename` + `PUBLIC_PATH_AUTO` so the same
457
- // undo-path substitution runs at asset render.
453
+ // Prefer the `asset-url` channel, which is the real URL string. An asset
454
+ // reached only from JS has none — its URL is a JS expression — so rebuild
455
+ // one from `filename` and let the undo-path substitution run.
458
456
  if (url && url["asset-url"]) return url["asset-url"];
459
457
  const filename = /** @type {string | undefined} */ (data.get("filename"));
460
458
  if (filename) return `${PUBLIC_PATH_AUTO}${filename}`;
@@ -584,6 +582,51 @@ class HtmlGenerator extends Generator {
584
582
  );
585
583
  }
586
584
 
585
+ /**
586
+ * Whether a chunk's content may be written into the page at all. An ES
587
+ * module chunk another group loads the runtime from must stay a file, or
588
+ * the page would run two copies of it.
589
+ * @param {Compilation} compilation the compilation
590
+ * @param {Chunk} chunk chunk to test
591
+ * @returns {boolean} false when the chunk has to stay a separate file
592
+ */
593
+ static canInlineChunk(compilation, chunk) {
594
+ if (compilation.outputOptions.module !== true) return true;
595
+ for (const group of chunk.groupsIterable) {
596
+ if (group.getChildren().length > 0) return false;
597
+ }
598
+ return true;
599
+ }
600
+
601
+ /**
602
+ * Whether `output.html.inline` writes a chunk's content into the page rather
603
+ * than referencing it. The string forms select by asset type, since a
604
+ * chunk's JavaScript and CSS share one name.
605
+ * @param {HtmlOption} htmlOption the `output.html` option
606
+ * @param {Chunk} chunk chunk to test
607
+ * @param {"javascript" | "css"} contentType which asset of the chunk is emitted
608
+ * @returns {boolean} true when that content is written into the page
609
+ */
610
+ static isChunkInlined(htmlOption, chunk, contentType) {
611
+ const inlineOption =
612
+ typeof htmlOption === "object" ? htmlOption.inline : undefined;
613
+ if (!inlineOption) return false;
614
+ if (inlineOption === true) return true;
615
+ if (inlineOption === "script") return contentType === "javascript";
616
+ if (inlineOption === "style") return contentType === "css";
617
+ // A tag's chunk is named after its page, so the template it emits under is
618
+ // matched too; a global pattern carries `lastIndex`, so it is reset.
619
+ const name = chunk.name || String(chunk.id);
620
+ const { filenameTemplate } = chunk;
621
+ return inlineOption.some((re) => {
622
+ re.lastIndex = 0;
623
+ if (re.test(name)) return true;
624
+ if (typeof filenameTemplate !== "string") return false;
625
+ re.lastIndex = 0;
626
+ return re.test(filenameTemplate);
627
+ });
628
+ }
629
+
587
630
  /**
588
631
  * @param {Chunk} chunk chunk
589
632
  * @param {"javascript" | "css"} contentHashType which chunk asset to inline
@@ -614,11 +657,11 @@ class HtmlGenerator extends Generator {
614
657
  const chunksById = getChunksById(compilation);
615
658
  const outputPath = /** @type {string} */ (compilation.outputOptions.path);
616
659
  return content.replace(
617
- INLINE_SENTINEL_REGEXP,
618
- (_, hexId, contentHashType) => {
660
+ INLINE_SENTINEL_STATEMENT_REGEXP,
661
+ (_, hexId, contentHashType, terminator) => {
619
662
  const chunkId = Buffer.from(hexId, "hex").toString("utf8");
620
663
  const chunk = chunksById.get(chunkId);
621
- if (!chunk) return "";
664
+ if (!chunk) return terminator;
622
665
  const isCss = contentHashType === "css";
623
666
  let out = "";
624
667
  for (const file of chunk.files) {
@@ -644,7 +687,7 @@ class HtmlGenerator extends Generator {
644
687
  out += raw;
645
688
  if (inlinedFiles) inlinedFiles.add(file);
646
689
  }
647
- return out;
690
+ return out.endsWith(";") ? out : out + terminator;
648
691
  }
649
692
  );
650
693
  }
@@ -679,26 +722,36 @@ class HtmlGenerator extends Generator {
679
722
  // `skip.text` populates `contentEnd` (raw-text body end) without
680
723
  // materializing text nodes; `</script` stays escaped, so CSP hashes match
681
724
  // the exact bytes the browser sees.
682
- const { NodeType, SourceProcessor } = getHtmlSyntax();
725
+ const { Field, Flag, NodeType, Part } = getHtmlParser();
726
+ const { SourceProcessor } = getHtmlSyntax();
727
+ /**
728
+ * Where an element's content starts; a parser-inserted one has no tag, so
729
+ * its content starts where it does.
730
+ * @param {import("./syntax-parser").HtmlPath} path the element's path
731
+ * @returns {number} the offset
732
+ */
733
+ const contentStart = (path) => {
734
+ const start = path.startOf(Part.content);
735
+ return start === -1 ? path.start() : start;
736
+ };
683
737
  new SourceProcessor()
684
738
  .use({
685
739
  [NodeType.Element]: {
686
740
  enter: (path) => {
687
- const name = path.tagName();
741
+ const name = path.name();
688
742
  if (name === "head") {
689
- if (headOpen < 0) headOpen = headEnd = path.tagEnd();
743
+ if (headOpen < 0) headOpen = headEnd = contentStart(path);
690
744
  headDepth++;
691
745
  } else if (name === "body") {
692
- if (bodyOpen < 0) bodyOpen = bodyEnd = path.tagEnd();
746
+ if (bodyOpen < 0) bodyOpen = bodyEnd = contentStart(path);
693
747
  bodyDepth++;
694
748
  }
695
749
  },
696
- // Collected on exit: an element's `end` is only final once it
697
- // closes, and the streamed walk enters it while it is still open.
698
- // `script` / `style` / `link` / `meta` never nest in each other, so
699
- // exiting keeps them in source order.
750
+ // Collected on exit, since an element's `end` is final only once it
751
+ // closes. `script`, `style`, `link` and `meta` never nest in each
752
+ // other, so exiting keeps them in source order.
700
753
  exit: (path) => {
701
- const name = path.tagName();
754
+ const name = path.name();
702
755
  if (name === "head") {
703
756
  if (headDepth > 0) headDepth--;
704
757
  return;
@@ -720,13 +773,14 @@ class HtmlGenerator extends Generator {
720
773
  }
721
774
  /** @type {Record<string, string | boolean | undefined>} */
722
775
  const attrs = {};
723
- const count = path.attributeCount();
776
+ const count = path.fieldCount(Field.attributes);
724
777
  for (let i = 0; i < count; i++) {
725
- const attr = path.attributeAt(i);
726
- attrs[path.attributeName(attr)] =
727
- path.attributeValueStart(attr) === -1
778
+ const attr = path.field(i, Field.attributes);
779
+ const valueStart = path.startOf(Part.value, attr);
780
+ attrs[path.name(attr)] =
781
+ valueStart === -1
728
782
  ? true
729
- : path.attributeValue(attr);
783
+ : path.source(valueStart, path.endOf(Part.value, attr));
730
784
  }
731
785
  const isRawText = name === "script" || name === "style";
732
786
  tags.push({
@@ -736,12 +790,12 @@ class HtmlGenerator extends Generator {
736
790
  });
737
791
  spans.push({
738
792
  start: path.start(),
739
- openEnd: path.tagEnd(),
793
+ openEnd: path.startOf(Part.content),
740
794
  end,
741
795
  location: bodyDepth > 0 ? "body" : "head",
742
- nameEnd: isRawText ? path.nameEnd() : -1,
743
- contentEnd: isRawText ? path.contentEnd() : -1,
744
- selfClosing: path.selfClosing()
796
+ nameEnd: isRawText ? path.endOf(Part.name) : -1,
797
+ contentEnd: isRawText ? path.endOf(Part.content) : -1,
798
+ selfClosing: path.flag(Flag.selfClosing)
745
799
  });
746
800
  originals.push(snapshotAttrs(attrs));
747
801
  descriptors.push(null);
@@ -796,7 +850,7 @@ class HtmlGenerator extends Generator {
796
850
  * @returns {string} the rendered HTML
797
851
  */
798
852
  static renderHtml(content, model, csp) {
799
- const { escapeAttribute } = getHtmlSyntax();
853
+ const { escapeAttribute } = getHtmlParser();
800
854
  const { tags, spans, originals, descriptors, anchors } = model;
801
855
  // CSP setup: an author-declared policy (page's own or injected) wins.
802
856
  const options = csp ? (csp === true ? {} : csp) : undefined;
@@ -1058,12 +1112,9 @@ class HtmlGenerator extends Generator {
1058
1112
  this._moduleGraph = moduleGraph;
1059
1113
  /** @type {((module: NormalModule) => boolean) | undefined} */
1060
1114
  this._isPageOnly = isPageOnly;
1061
- // Raw dependency-template render (before `[webpack/auto]` resolution),
1062
- // shared between the JS and HTML type passes of a single
1063
- // `codeGeneration()` call. Keyed by that call's `runtimeRequirements`
1064
- // Set — created once per call and passed to every type's `generate()`,
1065
- // so it uniquely scopes the cache to one module's one code generation
1066
- // and releases with it. The two passes differ only in `undoPath`.
1115
+ // Raw render shared between the JS and HTML passes of one `codeGeneration()`
1116
+ // call, which differ only in `undoPath`. Keyed by that call's
1117
+ // `runtimeRequirements` Set, so the entry is scoped to it and releases with it.
1067
1118
  /** @type {WeakMap<RuntimeRequirements, string>} */
1068
1119
  this._rawRenderCache = new WeakMap();
1069
1120
  }
@@ -1075,11 +1126,9 @@ class HtmlGenerator extends Generator {
1075
1126
  * @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
1076
1127
  */
1077
1128
  getConcatenationBailoutReason(module, context) {
1078
- // The HMR shim references the per-module `module.hot` object — when an
1079
- // HTML module is concatenated, that scope is gone (the merged file
1080
- // shares a single `module`), so the self-accept / DOM-patch wiring
1081
- // would target the wrong module id. Bail out of concatenation so the
1082
- // HMR-aware HTML module keeps its own module scope.
1129
+ // The HMR shim references the per-module `module.hot`, and a concatenated
1130
+ // file shares one `module`, so the self-accept wiring would target the wrong
1131
+ // id. Bail out, keeping the module's own scope.
1083
1132
  if (module.hot) {
1084
1133
  return "HTML module needs its own module scope for HMR";
1085
1134
  }
@@ -1191,7 +1240,7 @@ class HtmlGenerator extends Generator {
1191
1240
 
1192
1241
  /**
1193
1242
  * Processes the provided dependencies block.
1194
- * @param {import("../DependenciesBlock")} block the dependencies block which will be processed
1243
+ * @param {import("../graph/DependenciesBlock")} block the dependencies block which will be processed
1195
1244
  * @param {ReplaceSource} source the current replace source which can be modified
1196
1245
  * @param {DependencyTemplateContext} templateContext the template context
1197
1246
  * @returns {void}
@@ -1278,10 +1327,9 @@ class HtmlGenerator extends Generator {
1278
1327
  * @returns {string} the rewritten HTML
1279
1328
  */
1280
1329
  _renderHtml(module, generateContext, undoPath) {
1281
- // The dependency-template pass is identical for both type passes (no
1282
- // template branches on `type` or writes `runtimeRequirements`), so
1283
- // compute the raw render once per `codeGeneration()` and reuse it; the
1284
- // passes diverge only in the `[webpack/auto]` substitution below.
1330
+ // No dependency template branches on `type` or writes
1331
+ // `runtimeRequirements`, so the raw render is computed once per
1332
+ // `codeGeneration()`; the passes diverge only in the substitution below.
1285
1333
  const cacheKey = generateContext.runtimeRequirements;
1286
1334
  let rawContent = this._rawRenderCache.get(cacheKey);
1287
1335
  if (rawContent === undefined) {
@@ -1345,11 +1393,9 @@ class HtmlGenerator extends Generator {
1345
1393
 
1346
1394
  /** @type {string} */
1347
1395
  let sourceContent;
1348
- // `module.hot` is set by `HotModuleReplacementPlugin` on every module
1349
- // when HMR is enabled. When set, we cannot use the concatenation path
1350
- // (it merges into a parent's module scope, where `module.hot.accept`
1351
- // would target the wrong id) — `getConcatenationBailoutReason` keeps
1352
- // us out of concatenation in that case.
1396
+ // `module.hot` marks HMR being enabled, and concatenation merges into a
1397
+ // parent's scope where `module.hot.accept` would target the wrong id.
1398
+ // `getConcatenationBailoutReason` keeps such a module out of it.
1353
1399
  if (generateContext.concatenationScope && !module.hot) {
1354
1400
  generateContext.concatenationScope.registerNamespaceExport(
1355
1401
  ConcatenationScope.NAMESPACE_OBJECT_EXPORT
@@ -1423,15 +1469,11 @@ class HtmlGenerator extends Generator {
1423
1469
  const acceptBlock = extracting
1424
1470
  ? [
1425
1471
  "module.hot.accept();",
1426
- // Mask `<!-- … -->` comments — replace their characters
1427
- // with spaces, preserving length — before any tag regex
1428
- // runs. Masking (rather than deleting) keeps string offsets
1429
- // stable, so the body/title content can be sliced back out
1430
- // of the original HTML with comments intact, while a
1431
- // `<body>`/`</body>`/`<title>` inside a comment can no
1432
- // longer fool the tag regexes (the non-greedy `*?` would
1433
- // otherwise stop at the FIRST `</body>` it sees, even one
1434
- // inside a comment).
1472
+ // WHY: a `</body>` inside a comment stops the non-greedy `*?` at the
1473
+ // wrong place, so comments are masked before any tag regex runs.
1474
+ // Masking rather than deleting keeps offsets stable, so the body and
1475
+ // title can still be sliced out of the original HTML with their
1476
+ // comments intact.
1435
1477
  `${declare} __webpack_mask_comments__ = ${runtimeTemplate.returningFunction(
1436
1478
  `h.replace(/<!--[\\s\\S]*?-->/g, ${runtimeTemplate.returningFunction(
1437
1479
  'c.replace(/[^\\n]/g, " ")',
@@ -1475,9 +1517,8 @@ class HtmlGenerator extends Generator {
1475
1517
  ]
1476
1518
  )};`,
1477
1519
  // A `<script>` parsed out of a string carries the already-started flag,
1478
- // so appending that element would never run it. A fresh one with the
1479
- // same attributes and body does — which is what the reload this
1480
- // replaces would have done.
1520
+ // so appending it would never run. A fresh one with the same attributes
1521
+ // and body does, as the reload this replaces would have.
1481
1522
  `${declare} __webpack_revive_script__ = ${runtimeTemplate.basicFunction(
1482
1523
  "node",
1483
1524
  [
@@ -1493,11 +1534,9 @@ class HtmlGenerator extends Generator {
1493
1534
  "return script;"
1494
1535
  ]
1495
1536
  )};`,
1496
- // Apply only the difference between the two authored heads, keyed on
1497
- // serialized markup: the runtime's own injected `<script>` / `<link>`
1498
- // are in neither string, so replacing `document.head` wholesale would
1499
- // tear them down while a delta never touches them. Reports whether it
1500
- // could — the caller reloads when it could not.
1537
+ // Apply only the difference between the two authored heads: the
1538
+ // runtime's own injected tags are in neither string, so replacing
1539
+ // `document.head` wholesale would tear them down where a delta cannot.
1501
1540
  `${declare} __webpack_patch_head__ = ${runtimeTemplate.basicFunction(
1502
1541
  "oldHtml, newHtml",
1503
1542
  [
@@ -1533,14 +1572,12 @@ class HtmlGenerator extends Generator {
1533
1572
  `${declare} removed = surplus(oldChildren, newChildren);`,
1534
1573
  `${declare} added = surplus(newChildren, oldChildren);`,
1535
1574
  "if (removed.length === 0 && added.length === 0) return true;",
1536
- // A script that has run cannot be un-run, so dropping one is the
1537
- // one edit still worth a reload — but only a script that ran. A
1538
- // `type` that is neither a JavaScript MIME type nor `module` /
1539
- // `importmap` / `speculationrules` makes the element a data block
1540
- // (`application/ld+json`, `text/template`, …) the browser never
1541
- // executed, so removing it is as safe as removing a `<meta>`.
1542
- // Every JavaScript MIME essence ends in `script`, and a type
1543
- // nothing here recognizes falls back to the reload.
1575
+ // WHY: a script that has run cannot be un-run, so dropping one is the
1576
+ // single edit still worth a reload — but only a script that ran. A
1577
+ // `type` that is neither a JavaScript MIME essence, all of which end
1578
+ // in `script`, nor `module`, `importmap` or `speculationrules` is a
1579
+ // data block the browser never executed, as safe to remove as a
1580
+ // `<meta>`. An unrecognized type falls back to the reload.
1544
1581
  `if (removed.some(${runtimeTemplate.basicFunction("node", [
1545
1582
  'if (node.nodeName !== "SCRIPT") return false;',
1546
1583
  `${declare} type = (node.getAttribute("type") || "").trim().toLowerCase();`,
@@ -1564,11 +1601,9 @@ class HtmlGenerator extends Generator {
1564
1601
  ]),
1565
1602
  "}",
1566
1603
  `for (${mutable} i = 0; i < live.length; i++) document.head.removeChild(live[i]);`,
1567
- // Pair each retained element with its live node, scanning only
1568
- // forward: an authored element that has moved relative to the
1569
- // others finds no match from there on, and a reorder the delta
1570
- // cannot express falls back to the reload. Injected nodes simply
1571
- // never match, so they neither anchor nor block anything.
1604
+ // Pair each retained element with its live node, scanning forward
1605
+ // only: a moved element then finds no match and falls back to the
1606
+ // reload, while an injected node never matches either way.
1572
1607
  `${declare} liveByNew = [];`,
1573
1608
  `${mutable} searchFrom = 0;`,
1574
1609
  `for (${mutable} i = 0; i < newChildren.length; i++) {`,
@@ -1648,13 +1683,22 @@ class HtmlGenerator extends Generator {
1648
1683
  */
1649
1684
  generateError(error, module, generateContext) {
1650
1685
  if (generateContext.type === HTML_TYPE) {
1651
- // Strip `<`, `>`, `--` runs from `error.message` so it can't escape the comment.
1652
- const safe = String(error.message)
1686
+ // Strip `<`, `>`, `--` runs from the message so it can't escape the comment.
1687
+ const safe = Generator.buildErrorMessage(
1688
+ error,
1689
+ generateContext.runtimeTemplate.requestShortener
1690
+ )
1653
1691
  .replace(/[<>]/g, "")
1654
1692
  .replace(/-{2,}/g, (m) => `${"-".repeat(m.length - 1)} `);
1655
1693
  return new RawSource(`<!-- webpack error: ${safe} -->`);
1656
1694
  }
1657
- return new RawSource(Generator.throwBuildErrorCode(error));
1695
+ return new RawSource(
1696
+ Generator.throwBuildErrorCode(
1697
+ error,
1698
+ undefined,
1699
+ generateContext.runtimeTemplate.requestShortener
1700
+ )
1701
+ );
1658
1702
  }
1659
1703
 
1660
1704
  /**
@@ -1664,10 +1708,9 @@ class HtmlGenerator extends Generator {
1664
1708
  */
1665
1709
  updateHash(hash, updateHashContext) {
1666
1710
  hash.update("html");
1667
- // Source-type set changes when html-type exposure flips; the HMR shim's
1668
- // `extracting` branch changes when the emit decision flips. They differ
1669
- // only for `"inline"` (exposes html, but does not emit), so hash both.
1670
- // One `_shouldExtract` walk covers both checks (expose = extract ∪ inline).
1711
+ // The source-type set turns on html-type exposure and the HMR shim's
1712
+ // `extracting` branch on the emit decision. They differ only for
1713
+ // `"inline"`, which exposes html without emitting, so hash both.
1671
1714
  const extract = this._shouldExtract(updateHashContext.module);
1672
1715
  if (extract || this.options.extract === "inline") {
1673
1716
  hash.update("html-type");
@@ -4,16 +4,17 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- const NormalModule = require("../NormalModule");
7
+ const NormalModule = require("../module/NormalModule");
8
8
  const makeSerializable = require("../util/makeSerializable");
9
9
 
10
10
  /**
11
11
  * @import {
12
12
  * NormalModuleBuildInfo,
13
13
  * NormalModuleCreateData
14
- * } from "../NormalModule"
14
+ * } from "../module/NormalModule"
15
15
  */
16
16
  /** @import { HtmlEntryInfo } from "./HtmlModulesPlugin" */
17
+ /** @import { ModuleKinds } from "../module/Module" */
17
18
 
18
19
  /**
19
20
  * Defines the build info properties specific to html modules.
@@ -42,4 +43,7 @@ class HtmlModule extends NormalModule {
42
43
 
43
44
  makeSerializable(HtmlModule, "webpack/lib/html/HtmlModule");
44
45
 
46
+ /** @type {Set<keyof ModuleKinds>} */
47
+ HtmlModule.KINDS = new Set([...NormalModule.KINDS, "html"]);
48
+
45
49
  module.exports = HtmlModule;