@depup/webpack 5.111.1-depup.2 → 5.112.0-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (775) hide show
  1. package/README.md +4 -8
  2. package/changes.json +3 -19
  3. package/lib/Chunk.js +3 -966
  4. package/lib/Compilation.js +224 -106
  5. package/lib/Compiler.js +19 -19
  6. package/lib/Dependency.js +3 -551
  7. package/lib/DependencyTemplate.js +3 -70
  8. package/lib/EntryPlugin.js +3 -68
  9. package/lib/Entrypoint.js +3 -121
  10. package/lib/ExternalsPlugin.js +3 -92
  11. package/lib/FileSystemInfo.js +3 -4629
  12. package/lib/InitFragment.js +3 -204
  13. package/lib/LibraryTemplatePlugin.js +3 -46
  14. package/lib/ModuleFilenameHelpers.js +3 -400
  15. package/lib/ModuleNotFoundError.js +2 -2
  16. package/lib/MultiCompiler.js +37 -8
  17. package/lib/NormalModule.js +3 -2242
  18. package/lib/NullFactory.js +3 -22
  19. package/lib/ProgressPlugin.js +3 -908
  20. package/lib/RawModule.js +3 -197
  21. package/lib/RequestShortener.js +3 -37
  22. package/lib/SingleEntryPlugin.js +1 -1
  23. package/lib/WebpackError.js +2 -2
  24. package/lib/asset/AssetBytesGenerator.js +8 -8
  25. package/lib/asset/AssetBytesParser.js +3 -3
  26. package/lib/asset/AssetGenerator.js +36 -22
  27. package/lib/asset/AssetModule.js +2 -2
  28. package/lib/asset/AssetModulesPlugin.js +6 -9
  29. package/lib/asset/AssetParser.js +3 -3
  30. package/lib/asset/AssetSourceGenerator.js +8 -8
  31. package/lib/asset/AssetSourceParser.js +3 -3
  32. package/lib/asset/RawDataUrlModule.js +17 -10
  33. package/lib/asset/WebManifestGenerator.js +7 -7
  34. package/lib/asset/WebManifestParser.js +5 -5
  35. package/lib/async-modules/AsyncModuleHelpers.js +6 -5
  36. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
  37. package/lib/async-modules/InferAsyncModulesPlugin.js +4 -3
  38. package/lib/async-modules/isGeneratorLowered.js +3 -3
  39. package/lib/bun/BunTargetPlugin.js +1 -1
  40. package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
  41. package/lib/{Cache.js → cache/Cache.js} +1 -1
  42. package/lib/{CacheFacade.js → cache/CacheFacade.js} +5 -5
  43. package/lib/cache/IdleFileCachePlugin.js +2 -2
  44. package/lib/cache/MemoryCachePlugin.js +2 -2
  45. package/lib/cache/MemoryWithGcCachePlugin.js +2 -2
  46. package/lib/cache/PackFileCacheStrategy.js +8 -10
  47. package/lib/cache/ResolverCachePlugin.js +8 -4
  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 +1 -1
  54. package/lib/{cli.js → config/cli.js} +5 -158
  55. package/lib/config/defaults.js +144 -48
  56. package/lib/config/getClaimedAssetTypes.js +21 -13
  57. package/lib/config/normalization.js +18 -7
  58. package/lib/config/target.js +10 -0
  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/context/ContextModule.js +36 -25
  76. package/lib/context/ContextModuleFactory.js +13 -10
  77. package/lib/context/ContextReplacementPlugin.js +3 -3
  78. package/lib/css/CssGenerator.js +38 -31
  79. package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
  80. package/lib/css/CssLoadingRuntimeModule.js +77 -44
  81. package/lib/css/CssModule.js +27 -29
  82. package/lib/css/CssModulesPlugin.js +128 -44
  83. package/lib/css/CssParser.js +682 -291
  84. package/lib/css/CssServerStylesRuntimeModule.js +3 -3
  85. package/lib/css/cssMinify.js +110 -37
  86. package/lib/css/data.js +6985 -5125
  87. package/lib/css/syntax-parser.js +19873 -0
  88. package/lib/css/syntax-printer.js +6037 -0
  89. package/lib/css/syntax.js +37 -18686
  90. package/lib/debug/ProfilingPlugin.js +52 -19
  91. package/lib/{DefinePlugin.js → define/DefinePlugin.js} +407 -41
  92. package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +9 -9
  93. package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +2 -2
  94. package/lib/deno/DenoTargetPlugin.js +1 -1
  95. package/lib/dependencies/ConstDependency.js +3 -120
  96. package/lib/dependencies/ContextElementDependency.js +5 -172
  97. package/lib/dependencies/NullDependency.js +3 -37
  98. package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
  99. package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -10
  100. package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
  101. package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
  102. package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
  103. package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
  104. package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +10 -10
  105. package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
  106. package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
  107. package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
  108. package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
  109. package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
  110. package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
  111. package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
  112. package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
  113. package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
  114. package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +166 -33
  115. package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
  116. package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +138 -61
  117. package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
  118. package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +35 -30
  119. package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +13 -12
  120. package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +47 -35
  121. package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
  122. package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
  123. package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +17 -16
  124. package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
  125. package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
  126. package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +5 -5
  127. package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
  128. package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
  129. package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
  130. package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
  131. package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
  132. package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
  133. package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
  134. package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
  135. package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
  136. package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
  137. package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
  138. package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
  139. package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +31 -9
  140. package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
  141. package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
  142. package/lib/dependencies/context/ContextElementDependency.js +198 -0
  143. package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
  144. package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +9 -9
  145. package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
  146. package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
  147. package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +4 -4
  148. package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +9 -9
  149. package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
  150. package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
  151. package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
  152. package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +12 -11
  153. package/lib/dependencies/core/ConstDependency.js +131 -0
  154. package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
  155. package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
  156. package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
  157. package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
  158. package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
  159. package/lib/dependencies/core/NullDependency.js +44 -0
  160. package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
  161. package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
  162. package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +369 -92
  163. package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +23 -16
  164. package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
  165. package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
  166. package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +23 -16
  167. package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
  168. package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
  169. package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
  170. package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +29 -21
  171. package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +19 -17
  172. package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
  173. package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +60 -89
  174. package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +80 -45
  175. package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
  176. package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
  177. package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +133 -118
  178. package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +48 -30
  179. package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +60 -36
  180. package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -4
  181. package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
  182. package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +74 -71
  183. package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +99 -84
  184. package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +26 -29
  185. package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +83 -39
  186. package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +94 -59
  187. package/lib/dependencies/esm/ESMModulesPlugin.js +207 -0
  188. package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
  189. package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -11
  190. package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +2 -2
  191. package/lib/{util → dependencies/helpers}/chainedImports.js +5 -5
  192. package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
  193. package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
  194. package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
  195. package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
  196. package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
  197. package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
  198. package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +51 -141
  199. package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -12
  200. package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +69 -19
  201. package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +50 -15
  202. package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
  203. package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
  204. package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
  205. package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
  206. package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +20 -20
  207. package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
  208. package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
  209. package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
  210. package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
  211. package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
  212. package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +119 -98
  213. package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
  214. package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
  215. package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
  216. package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
  217. package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +28 -20
  218. package/lib/{url → dependencies/url}/URLParserPlugin.js +16 -18
  219. package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
  220. package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
  221. package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
  222. package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
  223. package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +31 -33
  224. package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +22 -15
  225. package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +19 -18
  226. package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
  227. package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
  228. package/lib/devtool/ModuleFilenameHelpers.js +413 -0
  229. package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
  230. package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +154 -26
  231. package/lib/{util → devtool}/generateDebugId.js +1 -1
  232. package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
  233. package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
  234. package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
  235. package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
  236. package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
  237. package/lib/dll/DelegatedModule.js +20 -18
  238. package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
  239. package/lib/dll/DelegatedPlugin.js +1 -1
  240. package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
  241. package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
  242. package/lib/dll/DllEntryPlugin.js +3 -3
  243. package/lib/dll/DllModule.js +11 -9
  244. package/lib/dll/DllModuleFactory.js +3 -3
  245. package/lib/dll/DllPlugin.js +18 -6
  246. package/lib/dll/DllReferencePlugin.js +102 -26
  247. package/lib/dll/LibManifestPlugin.js +9 -7
  248. package/lib/electron/ElectronTargetPlugin.js +2 -2
  249. package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
  250. package/lib/{dependencies → entry}/EntryDependency.js +11 -2
  251. package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
  252. package/lib/entry/EntryPlugin.js +75 -0
  253. package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
  254. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  255. package/lib/errors/BuildCycleError.js +1 -1
  256. package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
  257. package/lib/errors/ChunkRenderError.js +1 -1
  258. package/lib/errors/CodeGenerationError.js +1 -1
  259. package/lib/errors/CommentCompilationWarning.js +1 -1
  260. package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
  261. package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
  262. package/lib/errors/DeprecatedOptionWarning.js +30 -0
  263. package/lib/errors/DllManifestError.js +26 -0
  264. package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
  265. package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
  266. package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
  267. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  268. package/lib/{ErrorHelpers.js → errors/ErrorHelpers.js} +7 -5
  269. package/lib/errors/ExternalStarReexportError.js +2 -2
  270. package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
  271. package/lib/errors/HookWebpackError.js +4 -4
  272. package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
  273. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  274. package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
  275. package/lib/errors/ModuleBuildError.js +1 -1
  276. package/lib/errors/ModuleDependencyError.js +2 -2
  277. package/lib/errors/ModuleDependencyWarning.js +2 -2
  278. package/lib/errors/ModuleError.js +1 -1
  279. package/lib/errors/ModuleHashingError.js +1 -1
  280. package/lib/errors/ModuleNotFoundError.js +3 -3
  281. package/lib/errors/ModuleParseError.js +1 -1
  282. package/lib/errors/ModuleRestoreError.js +1 -1
  283. package/lib/errors/ModuleStoreError.js +1 -1
  284. package/lib/errors/ModuleWarning.js +1 -1
  285. package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
  286. package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
  287. package/lib/errors/NodeStuffInWebError.js +7 -2
  288. package/lib/errors/PathVariableError.js +31 -0
  289. package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
  290. package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
  291. package/lib/errors/RuntimeModuleGenerationError.js +51 -0
  292. package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
  293. package/lib/errors/SystemImportDeprecationWarning.js +43 -0
  294. package/lib/errors/UnmergeableEntryExportsError.js +34 -0
  295. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  296. package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
  297. package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
  298. package/lib/errors/WebpackError.js +12 -3
  299. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
  300. package/lib/esm/ModuleChunkFormatPlugin.js +19 -19
  301. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
  302. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
  303. package/lib/{ExternalModule.js → externals/ExternalModule.js} +79 -55
  304. package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +41 -39
  305. package/lib/externals/ExternalsPlugin.js +99 -0
  306. package/lib/fs/FileSystemInfo.js +4642 -0
  307. package/lib/{util → fs}/fs.js +22 -9
  308. package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
  309. package/lib/graph/Chunk.js +985 -0
  310. package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +187 -80
  311. package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
  312. package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
  313. package/lib/graph/Dependency.js +628 -0
  314. package/lib/graph/Entrypoint.js +136 -0
  315. package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +130 -82
  316. package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
  317. package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +30 -30
  318. package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
  319. package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +152 -57
  320. package/lib/{util → graph}/findGraphRoots.js +14 -8
  321. package/lib/graph/isDependencyKind.js +23 -0
  322. package/lib/hmr/HotModuleReplacement.runtime.js +2 -2
  323. package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +47 -47
  324. package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
  325. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +10 -8
  326. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
  327. package/lib/hmr/LazyCompilationPlugin.js +31 -21
  328. package/lib/html/HtmlGenerator.js +107 -43
  329. package/lib/html/HtmlModule.js +6 -2
  330. package/lib/html/HtmlModulesPlugin.js +172 -76
  331. package/lib/html/HtmlParser.js +503 -153
  332. package/lib/html/builtinEmbeddedRenderer.js +60 -13
  333. package/lib/html/data.js +2 -1
  334. package/lib/html/htmlMinify.js +111 -41
  335. package/lib/html/syntax-parser.js +15796 -0
  336. package/lib/html/syntax-printer.js +1034 -0
  337. package/lib/html/syntax.js +37 -13952
  338. package/lib/html/xmlMinify.js +67 -0
  339. package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
  340. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  341. package/lib/ids/HashedModuleIdsPlugin.js +31 -4
  342. package/lib/ids/IdHelpers.js +4 -4
  343. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  344. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
  345. package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
  346. package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
  347. package/lib/ids/SyncModuleIdsPlugin.js +3 -3
  348. package/lib/{util → ids}/numberHash.js +1 -1
  349. package/lib/index.js +303 -97
  350. package/lib/{APIPlugin.js → javascript/APIPlugin.js} +25 -25
  351. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
  352. package/lib/javascript/BasicEvaluatedExpression.js +4 -4
  353. package/lib/javascript/ChunkHelpers.js +64 -4
  354. package/lib/javascript/CommonJsChunkFormatPlugin.js +4 -7
  355. package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +7 -7
  356. package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +74 -7
  357. package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
  358. package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
  359. package/lib/javascript/JavascriptGenerator.js +17 -17
  360. package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +7 -7
  361. package/lib/javascript/JavascriptModule.js +4 -3
  362. package/lib/javascript/JavascriptModulesPlugin.js +440 -211
  363. package/lib/javascript/JavascriptParser.js +220 -134
  364. package/lib/javascript/JavascriptParserHelpers.js +1 -1
  365. package/lib/javascript/MergedEntryExports.js +196 -0
  366. package/lib/javascript/ScopeAnalyzer.js +3840 -5
  367. package/lib/javascript/StartupHelpers.js +6 -6
  368. package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +12 -15
  369. package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
  370. package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
  371. package/lib/javascript/data.js +533 -122
  372. package/lib/javascript/jsMinify.js +272 -0
  373. package/lib/javascript/regexp.js +67 -32
  374. package/lib/javascript/syntax-parser.js +18561 -0
  375. package/lib/javascript/syntax-printer-data.js +933 -0
  376. package/lib/javascript/syntax-printer.js +47106 -0
  377. package/lib/javascript/syntax.js +20 -11274
  378. package/lib/json/JsonData.js +1 -1
  379. package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
  380. package/lib/json/JsonGenerator.js +10 -10
  381. package/lib/json/JsonModule.js +2 -2
  382. package/lib/json/JsonModulesPlugin.js +1 -1
  383. package/lib/json/JsonParser.js +5 -5
  384. package/lib/json/jsonMinify.js +69 -0
  385. package/lib/library/AbstractLibraryPlugin.js +28 -15
  386. package/lib/library/AmdLibraryPlugin.js +4 -4
  387. package/lib/library/AssignLibraryPlugin.js +27 -11
  388. package/lib/library/EnableLibraryPlugin.js +1 -1
  389. package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
  390. package/lib/library/JsonpLibraryPlugin.js +1 -1
  391. package/lib/library/LibraryTemplatePlugin.js +53 -0
  392. package/lib/library/ModuleLibraryPlugin.js +160 -166
  393. package/lib/library/SystemLibraryPlugin.js +6 -8
  394. package/lib/library/UmdLibraryPlugin.js +3 -4
  395. package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
  396. package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
  397. package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
  398. package/lib/{dependencies → loaders}/LoaderPlugin.js +2 -2
  399. package/lib/loaders/LoaderRunner.js +31 -21
  400. package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
  401. package/lib/logging/Logger.js +7 -9
  402. package/lib/logging/ProgressPlugin.js +957 -0
  403. package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
  404. package/lib/{Generator.js → module/Generator.js} +16 -14
  405. package/lib/{Module.js → module/Module.js} +119 -51
  406. package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
  407. package/lib/module/NormalModule.js +2348 -0
  408. package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +53 -54
  409. package/lib/module/NullFactory.js +29 -0
  410. package/lib/{Parser.js → module/Parser.js} +3 -3
  411. package/lib/module/RawModule.js +208 -0
  412. package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
  413. package/lib/{util → module}/extractSourceMap.js +2 -2
  414. package/lib/{util → module}/findCaseMismatch.js +2 -2
  415. package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
  416. package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
  417. package/lib/{dependencies → node}/ExternalModuleInitFragment.js +6 -5
  418. package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
  419. package/lib/node/NodeEnvironmentPlugin.js +11 -1
  420. package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
  421. package/lib/node/NodeTargetPlugin.js +1 -1
  422. package/lib/node/NodeWatchFileSystem.js +58 -6
  423. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
  424. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +9 -7
  425. package/lib/node/ReadFileCompileWasmPlugin.js +7 -5
  426. package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
  427. package/lib/node/nodeConsole.js +2 -4
  428. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  429. package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
  430. package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +13 -13
  431. package/lib/optimize/ConcatenatedModule.js +229 -214
  432. package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
  433. package/lib/optimize/ConstExportsPlugin.js +7 -7
  434. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  435. package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
  436. package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +17 -17
  437. package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +17 -17
  438. package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
  439. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
  440. package/lib/optimize/InlineExports.js +11 -3
  441. package/lib/optimize/InnerGraph.js +5 -13
  442. package/lib/optimize/InnerGraphPlugin.js +10 -10
  443. package/lib/optimize/LazyBarrels.js +584 -0
  444. package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
  445. package/lib/optimize/LimitChunkCountPlugin.js +16 -7
  446. package/lib/optimize/MangleExportsPlugin.js +5 -5
  447. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
  448. package/lib/optimize/MinChunkSizePlugin.js +9 -6
  449. package/lib/optimize/ModuleConcatenationPlugin.js +20 -12
  450. package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
  451. package/lib/optimize/RealContentHashPlugin.js +16 -7
  452. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  453. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  454. package/lib/optimize/SideEffectsFlagPlugin.js +18 -18
  455. package/lib/optimize/SplitChunksPlugin.js +713 -155
  456. package/lib/{util → optimize}/TupleQueue.js +9 -9
  457. package/lib/optimize/chunkSetIntersections.js +437 -0
  458. package/lib/{util → optimize}/deterministicGrouping.js +17 -17
  459. package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
  460. package/lib/{CleanPlugin.js → output/CleanPlugin.js} +66 -24
  461. package/lib/{CopyPlugin.js → output/CopyPlugin.js} +142 -67
  462. package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
  463. package/lib/output/SSRManifestPlugin.js +349 -0
  464. package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
  465. package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
  466. package/lib/performance/BroadContextsPlugin.js +4 -4
  467. package/lib/performance/CacheEffectivenessPlugin.js +2 -3
  468. package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
  469. package/lib/performance/DuplicateModulesPlugin.js +3 -4
  470. package/lib/performance/DuplicatePackagesPlugin.js +3 -3
  471. package/lib/performance/DynamicExportsPlugin.js +2 -2
  472. package/lib/performance/EvalUsagePlugin.js +3 -3
  473. package/lib/performance/HotspotsPlugin.js +11 -10
  474. package/lib/performance/LargeModulesPlugin.js +2 -3
  475. package/lib/performance/LegacyJavascriptPlugin.js +1 -2
  476. package/lib/performance/MissingSideEffectsPlugin.js +2 -3
  477. package/lib/performance/MissingSourceMapsPlugin.js +5 -6
  478. package/lib/performance/PureAnnotationsPlugin.js +3 -3
  479. package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
  480. package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
  481. package/lib/performance/SizeLimitsPlugin.js +11 -12
  482. package/lib/performance/TopLevelThisPlugin.js +8 -7
  483. package/lib/performance/UnsplitVendorsPlugin.js +1 -2
  484. package/lib/performance/UnusedAliasesPlugin.js +6 -7
  485. package/lib/performance/UnusedAssetsPlugin.js +5 -5
  486. package/lib/performance/UnusedDefinesPlugin.js +2 -2
  487. package/lib/performance/UnusedExternalsPlugin.js +3 -4
  488. package/lib/performance/UnusedFederationPlugin.js +2 -4
  489. package/lib/performance/UnusedModulesPlugin.js +5 -4
  490. package/lib/performance/getModuleSize.js +1 -1
  491. package/lib/performance/hasOnlyUnusedExports.js +4 -4
  492. package/lib/performance/isOnlyReexported.js +7 -6
  493. package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
  494. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
  495. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -1
  496. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
  497. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
  498. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
  499. package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
  500. package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
  501. package/lib/prefetch/ResourceHintPlugin.js +65 -44
  502. package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
  503. package/lib/prefetch/StartupAssetHintRuntimeModule.js +3 -3
  504. package/lib/prefetch/parseResourceHintOptions.js +4 -3
  505. package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
  506. package/lib/{dependencies → provide}/ProvidedDependency.js +14 -13
  507. package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
  508. package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
  509. package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
  510. package/lib/resolve/getResolveOptionsKey.js +59 -0
  511. package/lib/rules/RuleSetCompiler.js +27 -46
  512. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
  513. package/lib/runtime/AsyncModuleRuntimeModule.js +7 -4
  514. package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
  515. package/lib/runtime/BaseUriRuntimeModule.js +3 -3
  516. package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
  517. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
  518. package/lib/runtime/CompatRuntimeModule.js +4 -4
  519. package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
  520. package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
  521. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  522. package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
  523. package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
  524. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
  525. package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
  526. package/lib/runtime/GetChunkFilenameRuntimeModule.js +6 -6
  527. package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
  528. package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
  529. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
  530. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
  531. package/lib/runtime/GlobalRuntimeModule.js +3 -3
  532. package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
  533. package/lib/runtime/HelperRuntimeModule.js +16 -1
  534. package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
  535. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +80 -17
  536. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
  537. package/lib/runtime/NonceRuntimeModule.js +2 -2
  538. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
  539. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  540. package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
  541. package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +18 -1
  542. package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
  543. package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
  544. package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +48 -50
  545. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
  546. package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
  547. package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
  548. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
  549. package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
  550. package/lib/runtime/SystemContextRuntimeModule.js +2 -2
  551. package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
  552. package/lib/runtime/WorkerRuntimeModule.js +1 -1
  553. package/lib/runtime/baseUri.js +1 -1
  554. package/lib/schemes/DataUriPlugin.js +1 -1
  555. package/lib/schemes/HttpUriPlugin.js +67 -11
  556. package/lib/schemes/VirtualUrlPlugin.js +50 -16
  557. package/lib/serialization/AggregateErrorSerializer.js +2 -2
  558. package/lib/serialization/FileMiddleware.js +3 -3
  559. package/lib/serialization/ObjectMiddleware.js +47 -16
  560. package/lib/serialization/SerializerMiddleware.js +2 -2
  561. package/lib/serialization/SingleItemMiddleware.js +4 -2
  562. package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
  563. package/lib/sharing/ConsumeSharedModule.js +18 -14
  564. package/lib/sharing/ConsumeSharedPlugin.js +148 -42
  565. package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
  566. package/lib/sharing/ProvideForSharedDependency.js +9 -1
  567. package/lib/sharing/ProvideSharedDependency.js +1 -1
  568. package/lib/sharing/ProvideSharedModule.js +11 -9
  569. package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
  570. package/lib/sharing/ProvideSharedPlugin.js +111 -20
  571. package/lib/sharing/SharePlugin.js +102 -9
  572. package/lib/sharing/ShareRuntimeModule.js +6 -6
  573. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  574. package/lib/{util → sharing}/semver.js +14 -16
  575. package/lib/sharing/utils.js +59 -2
  576. package/lib/stats/DefaultStatsFactoryPlugin.js +22 -19
  577. package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
  578. package/lib/stats/DefaultStatsPrinterPlugin.js +3 -3
  579. package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
  580. package/lib/{Stats.js → stats/Stats.js} +4 -4
  581. package/lib/stats/StatsFactory.js +14 -13
  582. package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
  583. package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
  584. package/lib/template/DependencyTemplate.js +77 -0
  585. package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
  586. package/lib/template/InitFragment.js +223 -0
  587. package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
  588. package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
  589. package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
  590. package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +145 -63
  591. package/lib/{Template.js → template/Template.js} +13 -11
  592. package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +19 -23
  593. package/lib/typescript/TypeScriptPlugin.js +3 -3
  594. package/lib/util/RequestShortener.js +44 -0
  595. package/lib/util/SortableSet.js +87 -22
  596. package/lib/util/SourceProcessor.js +349 -44
  597. package/lib/util/TupleSet.js +27 -27
  598. package/lib/util/WeakTupleMap.js +10 -12
  599. package/lib/util/buildDiagnostics.js +2 -2
  600. package/lib/util/comparators.js +10 -10
  601. package/lib/util/concatenate.js +28 -147
  602. package/lib/util/createMappings.js +111 -0
  603. package/lib/util/dataURL.js +94 -15
  604. package/lib/util/deprecation.js +1 -1
  605. package/lib/util/extractComments.js +118 -0
  606. package/lib/util/formatLocation.js +1 -1
  607. package/lib/util/globUtils.js +197 -16
  608. package/lib/util/haltVisitors.js +51 -0
  609. package/lib/util/handlerKeys.js +2 -2
  610. package/lib/util/identifier.js +117 -1
  611. package/lib/util/implicitTypeLoaderFallback.js +6 -4
  612. package/lib/util/internalSerializables.js +294 -102
  613. package/lib/util/magicComment.js +12 -7
  614. package/lib/util/makeSerializable.js +23 -4
  615. package/lib/util/parseJson.js +1 -1
  616. package/lib/util/preloadModuleType.js +5 -2
  617. package/lib/util/registerExternalSerializer.js +2 -2
  618. package/lib/util/removeBOM.js +1 -1
  619. package/lib/util/runtime.js +1 -1
  620. package/lib/util/serialization.js +4 -1
  621. package/lib/util/source.js +2 -2
  622. package/lib/util/terminalColors.js +161 -0
  623. package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
  624. package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
  625. package/lib/{wasm-async → wasm}/AsyncWasmModule.js +9 -5
  626. package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +5 -5
  627. package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +11 -10
  628. package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
  629. package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +8 -8
  630. package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
  631. package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +9 -7
  632. package/lib/wasm/wasmModuleFilename.js +2 -2
  633. package/lib/wasm-sync/SyncWasmModule.js +3 -3
  634. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +8 -8
  635. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
  636. package/lib/wasm-sync/WebAssemblyGenerator.js +9 -8
  637. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +14 -15
  638. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
  639. package/lib/wasm-sync/WebAssemblyParser.js +6 -6
  640. package/lib/wasm-sync/WebAssemblyUtils.js +6 -5
  641. package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
  642. package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
  643. package/lib/{Watching.js → watch/Watching.js} +8 -8
  644. package/lib/web/FetchCompileAsyncWasmPlugin.js +8 -6
  645. package/lib/web/FetchCompileWasmPlugin.js +6 -4
  646. package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
  647. package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
  648. package/lib/web/JsonpTemplatePlugin.js +1 -1
  649. package/lib/webpack.js +27 -17
  650. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
  651. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
  652. package/package.json +48 -41
  653. package/schemas/WebpackOptions.check.js +2 -1
  654. package/schemas/WebpackOptions.d.json.ts +2 -0
  655. package/schemas/WebpackOptions.json +294 -74
  656. package/schemas/plugins/BannerPlugin.check.js +2 -1
  657. package/schemas/plugins/BannerPlugin.json +29 -2
  658. package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -0
  659. package/schemas/plugins/HtmlParserOptions.check.js +2 -1
  660. package/schemas/plugins/IgnorePlugin.check.js +1 -0
  661. package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
  662. package/schemas/plugins/IgnorePlugin.json +1 -1
  663. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -0
  664. package/schemas/plugins/ManifestPlugin.check.js +1 -0
  665. package/schemas/plugins/ManifestPlugin.json +3 -3
  666. package/schemas/plugins/ProgressPlugin.check.js +2 -1
  667. package/schemas/plugins/ProgressPlugin.json +2 -7
  668. package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
  669. package/schemas/plugins/SSRManifestPlugin.json +20 -0
  670. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -1
  671. package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
  672. package/schemas/plugins/WatchIgnorePlugin.check.js +2 -1
  673. package/schemas/plugins/WatchIgnorePlugin.json +12 -3
  674. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -0
  675. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -0
  676. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -0
  677. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -0
  678. package/schemas/plugins/container/ContainerPlugin.check.js +2 -1
  679. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  680. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -0
  681. package/schemas/plugins/container/ExternalsType.check.js +1 -0
  682. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -1
  683. package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
  684. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -0
  685. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -0
  686. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -0
  687. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -0
  688. package/schemas/plugins/css/CssParserOptions.check.js +1 -0
  689. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -0
  690. package/schemas/plugins/dll/DllPlugin.check.js +1 -0
  691. package/schemas/plugins/dll/DllReferencePlugin.check.js +2 -1
  692. package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
  693. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -0
  694. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -0
  695. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -0
  696. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +1 -0
  697. package/schemas/plugins/json/JsonModulesPluginParser.check.js +1 -0
  698. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -0
  699. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -0
  700. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -0
  701. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -0
  702. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -0
  703. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +1 -0
  704. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +2 -1
  705. package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
  706. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +2 -1
  707. package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
  708. package/schemas/plugins/sharing/SharePlugin.check.js +2 -1
  709. package/schemas/plugins/sharing/SharePlugin.json +32 -0
  710. package/types.d.ts +19355 -13873
  711. package/lib/LazyBarrel.js +0 -388
  712. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
  713. package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
  714. package/lib/javascript/ChunkFormatHelpers.js +0 -72
  715. package/lib/javascript/grammar.js +0 -5546
  716. package/lib/javascript/parser.js +0 -1500
  717. package/lib/javascript/regexpData.js +0 -51
  718. package/lib/performance/getSourceModules.js +0 -22
  719. package/lib/util/Semaphore.js +0 -65
  720. package/lib/util/objectToMap.js +0 -15
  721. package/schemas/WebpackOptions.check.d.ts +0 -7
  722. package/schemas/_container.json +0 -155
  723. package/schemas/_sharing.json +0 -118
  724. package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
  725. package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
  726. package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
  727. package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
  728. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
  729. package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
  730. package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
  731. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
  732. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
  733. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
  734. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
  735. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
  736. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
  737. package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
  738. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
  739. package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
  740. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
  741. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
  742. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
  743. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
  744. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
  745. package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
  746. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
  747. package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
  748. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
  749. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
  750. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
  751. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
  752. package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
  753. package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
  754. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
  755. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
  756. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
  757. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
  758. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
  759. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
  760. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
  761. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
  762. package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
  763. /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
  764. /package/lib/{util → css}/conventions.js +0 -0
  765. /package/lib/{util → css}/topologicalSort.js +0 -0
  766. /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
  767. /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
  768. /package/lib/{util → fs}/StackedCacheMap.js +0 -0
  769. /package/lib/{util → javascript}/StackedMap.js +0 -0
  770. /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
  771. /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
  772. /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
  773. /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
  774. /package/lib/{util → optimize}/Queue.js +0 -0
  775. /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
@@ -553,7 +480,7 @@ const polyfilledSources = new WeakSet();
553
480
  * @property {string} entryName name of the entry this page loads
554
481
  * @property {Entrypoint} entrypoint the entrypoint
555
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)
556
- * @property {import("../Compilation")} compilation the compilation
483
+ * @property {import("../../Compilation")} compilation the compilation
557
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`)
558
485
  */
559
486
 
@@ -592,7 +519,7 @@ const buildLinkTag = (rel, attrs) =>
592
519
  /**
593
520
  * The chunks a hint means when it names a page: a page loads no JavaScript of
594
521
  * its own, so the hint follows the entries the parser extracted from it.
595
- * @param {import("../Compilation")} compilation compilation
522
+ * @param {import("../../Compilation")} compilation compilation
596
523
  * @param {Chunk} chunk chunk a hint resolved to
597
524
  * @returns {Chunk[]} the chunks to hint at
598
525
  */
@@ -615,7 +542,7 @@ const resolvePageChunk = (compilation, chunk) => {
615
542
  if (modules === undefined) return chunks.length === 0 ? [chunk] : chunks;
616
543
  for (const module of modules) {
617
544
  const { htmlEntries } =
618
- /** @type {import("../html/HtmlModule").HtmlModuleBuildInfo} */ (
545
+ /** @type {import("../../html/HtmlModule").HtmlModuleBuildInfo} */ (
619
546
  module.buildInfo
620
547
  ) || {};
621
548
  if (!htmlEntries) continue;
@@ -636,7 +563,7 @@ const resolvePageChunk = (compilation, chunk) => {
636
563
  * resolved with the final hash and public path), an `href` is used verbatim, and
637
564
  * `preconnect`/`dns-prefetch` use only `href`. Unknown chunk/entry names are skipped.
638
565
  * @param {HtmlResourceHint} desc the descriptor
639
- * @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
640
567
  * @returns {string[]} the resolved tags
641
568
  */
642
569
  const resolveResourceHint = (desc, ctx) => {
@@ -837,10 +764,6 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
837
764
  compilation.outputOptions.module === true ? ' type="module"' : "";
838
765
 
839
766
  const entryContentHashType = isStylesheet ? "css" : "javascript";
840
- const inlineOption =
841
- typeof htmlOption === "object" ? htmlOption.inline : undefined;
842
- /** @type {RegExp[] | null} */
843
- const inlinePatterns = Array.isArray(inlineOption) ? inlineOption : null;
844
767
  /**
845
768
  * @param {Chunk} chunk chunk to test
846
769
  * @param {"javascript" | "css"} contentType which asset of the chunk is being emitted
@@ -850,25 +773,18 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
850
773
  // A `<link rel="modulepreload">` is a void fetch hint — inlining it would
851
774
  // emit an unclosed, executing `<script>`.
852
775
  if (dep.elementKind === "modulepreload") return false;
776
+ if (!getHtmlGenerator().canInlineChunk(compilation, chunk)) {
777
+ return false;
778
+ }
853
779
  if (dep.forceInline) return true;
854
- if (!inlineOption) return false;
855
- if (inlineOption === true) return true;
856
- // `"script"`/`"style"` inline by asset type, not chunk name — a chunk's
857
- // JS and CSS share a name, so only the emitted `contentType` tells them
858
- // apart.
859
- if (inlineOption === "script") return contentType === "javascript";
860
- if (inlineOption === "style") return contentType === "css";
861
- const name = chunk.name || String(chunk.id);
862
- return /** @type {RegExp[]} */ (inlinePatterns).some((re) =>
863
- re.test(name)
864
- );
780
+ return getHtmlGenerator().isChunkInlined(htmlOption, chunk, contentType);
865
781
  };
866
782
 
867
783
  // Only inline when the HTML module is emitted as a standalone page (extract mode).
868
784
  // If it's exported as a JS string, sentinels would end up embedded in the JS chunk.
869
785
  const isExtractedHtml = chunkGraph
870
786
  .getModuleSourceTypes(
871
- /** @type {import("../Module")} */ (templateContext.module)
787
+ /** @type {import("../../module/Module")} */ (templateContext.module)
872
788
  )
873
789
  .has("html");
874
790
  const entryInlined =
@@ -1029,8 +945,8 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
1029
945
  // mini-css-extract#959 symptom. The order is re-derived from the
1030
946
  // entrypoint's module post-order index, which follows the dependency
1031
947
  // walk and so the source's import order.
1032
- /** @type {{ chunk: Chunk, index: number, key: string }[]} */
1033
- const cssChunkOrder = [];
948
+ /** @type {Chunk[]} */
949
+ const cssChunks = [];
1034
950
  /** @type {Chunk[]} */
1035
951
  const jsChunks = [];
1036
952
  for (let i = 0; i < orderedChunks.length - 1; i++) {
@@ -1038,15 +954,7 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
1038
954
  const hasCss = chunkHasCss(chunk, chunkGraph);
1039
955
  const hasJs = chunkHasJs(chunk, chunkGraph);
1040
956
  if (hasCss) {
1041
- cssChunkOrder.push({
1042
- chunk,
1043
- index: firstCssModulePostOrderIndex(
1044
- chunk,
1045
- entrypoint,
1046
- chunkGraph
1047
- ),
1048
- key: cssChunkSortKey(chunk)
1049
- });
957
+ cssChunks.push(chunk);
1050
958
  }
1051
959
  // Anything not CSS-only stays on the JS lane in `orderedChunks` order,
1052
960
  // preserving the runtime-first invariant. A chunk emitting neither
@@ -1057,17 +965,13 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
1057
965
  // ordering so its `<link>` lands in the right cascade position
1058
966
  // relative to the sibling CSS chunks.
1059
967
  if (chunkHasCss(entryChunk, chunkGraph)) {
1060
- cssChunkOrder.push({
1061
- chunk: entryChunk,
1062
- index: firstCssModulePostOrderIndex(
1063
- entryChunk,
1064
- entrypoint,
1065
- chunkGraph
1066
- ),
1067
- key: cssChunkSortKey(entryChunk)
1068
- });
968
+ cssChunks.push(entryChunk);
1069
969
  }
1070
- cssChunkOrder.sort(compareCssChunkOrder);
970
+ const cssChunkOrder = getCssModulesPlugin().getCssChunksInCascadeOrder(
971
+ cssChunks,
972
+ entrypoint,
973
+ chunkGraph
974
+ );
1071
975
  // Stylesheets land in `<head>`. A classic blocking script pins them
1072
976
  // ahead of itself, so it never awaits later CSS; with only `defer` and
1073
977
  // module scripts they go last, which starts the script fetches earlier.
@@ -1080,7 +984,7 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
1080
984
  ? dep.cssAnchor
1081
985
  : dep.tagStart;
1082
986
  cssHtml = cssChunkOrder
1083
- .map(({ chunk }) => buildSibling(chunk, "css"))
987
+ .map((chunk) => buildSibling(chunk, "css"))
1084
988
  .join("");
1085
989
  for (const chunk of jsChunks) {
1086
990
  siblings.push(buildSibling(chunk, "javascript"));
@@ -1209,7 +1113,9 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
1209
1113
  // `<script>` entry — that's what users key on.
1210
1114
  let entryName = dep.entryName;
1211
1115
  for (const c of chunkGraph.getModuleChunks(
1212
- /** @type {import("../Module")} */ (templateContext.module)
1116
+ /** @type {import("../../module/Module")} */ (
1117
+ templateContext.module
1118
+ )
1213
1119
  )) {
1214
1120
  if (c.name) {
1215
1121
  entryName = c.name;
@@ -1270,7 +1176,7 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
1270
1176
  const asAttr =
1271
1177
  md.asAttribute ||
1272
1178
  ResourceHintRuntimeModule.guessAsAttribute(
1273
- /** @type {import("./URLDependency")} */ (md).request || ""
1179
+ /** @type {import("../url/URLDependency")} */ (md).request || ""
1274
1180
  );
1275
1181
  const typeAttr = md.typeAttribute;
1276
1182
  const mediaAttr = md.mediaAttribute;
@@ -1327,9 +1233,13 @@ HtmlEntryDependency.Template = class HtmlEntryDependencyTemplate extends (
1327
1233
  }
1328
1234
  };
1329
1235
 
1330
- makeSerializable(
1331
- HtmlEntryDependency,
1236
+ makeSerializable(HtmlEntryDependency, [
1237
+ "webpack/lib/dependencies/html/HtmlEntryDependency",
1238
+ // TODO in the next major release: remove, they restore pre-move cache packs
1332
1239
  "webpack/lib/dependencies/HtmlEntryDependency"
1333
- );
1240
+ ]);
1241
+
1242
+ /** @type {Set<keyof DependencyKinds>} */
1243
+ HtmlEntryDependency.KINDS = new Set([...ModuleDependency.KINDS, "html-entry"]);
1334
1244
 
1335
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;
@@ -4,27 +4,28 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- const makeSerializable = require("../util/makeSerializable");
8
- const memoize = require("../util/memoize");
9
- const ModuleDependency = require("./ModuleDependency");
7
+ const makeSerializable = require("../../util/makeSerializable");
8
+ const memoize = require("../../util/memoize");
9
+ const ModuleDependency = require("../core/ModuleDependency");
10
10
 
11
11
  // only the template needs it, and that runs only for a real html module
12
- const getHtmlGenerator = memoize(() => require("../html/HtmlGenerator"));
12
+ const getHtmlGenerator = memoize(() => require("../../html/HtmlGenerator"));
13
13
 
14
14
  /** @import { ReplaceSource } from "webpack-sources" */
15
- /** @import Chunk from "../Chunk" */
16
- /** @import Dependency from "../Dependency" */
17
- /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
18
- /** @import Entrypoint from "../Entrypoint" */
19
- /** @import { Range } from "../javascript/JavascriptParser" */
20
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[number, Range, string, string]>} ObjectDeserializerContext */
21
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[number, Range, string, string]>} ObjectSerializerContext */
15
+ /** @import Chunk from "../../graph/Chunk" */
16
+ /** @import Dependency from "../../graph/Dependency" */
17
+ /** @import { DependencyTemplateContext } from "../../template/DependencyTemplate" */
18
+ /** @import Entrypoint from "../../graph/Entrypoint" */
19
+ /** @import { Range } from "../../javascript/JavascriptParser" */
20
+ /** @typedef {import("../../serialization/ObjectMiddleware").ObjectDeserializerContext<[number, Range, string, string, Range | undefined, boolean]>} ObjectDeserializerContext */
21
+ /** @typedef {import("../../serialization/ObjectMiddleware").ObjectSerializerContext<[number, Range, string, string, Range | undefined, boolean]>} ObjectSerializerContext */
22
22
 
23
23
  /**
24
24
  * Represents an inline `<script>...</script>` block in an HTML module. The
25
25
  * tag's body is bundled as its own entry chunk — the same pipeline that
26
26
  * processes `<script src>` — and the inline body is replaced with a
27
- * `src` attribute pointing at the emitted chunk URL.
27
+ * `src` attribute pointing at the emitted chunk URL. A tag sharing an
28
+ * earlier tag's entry carries a `removeRange` and is dropped instead.
28
29
  */
29
30
  class HtmlInlineScriptDependency extends ModuleDependency {
30
31
  /**
@@ -34,8 +35,18 @@ class HtmlInlineScriptDependency extends ModuleDependency {
34
35
  * @param {Range} contentRange range of the inline JS body (between `<script>` and `</script>`)
35
36
  * @param {string} entryName name of the entry the inline JS is bundled into
36
37
  * @param {string=} category dependency category used for resolving and grouping
38
+ * @param {Range=} removeRange range of the whole element, when the tag is dropped
39
+ * @param {boolean=} forceInline `<!-- webpackInline: true -->` was set before this tag
37
40
  */
38
- constructor(request, insertPos, contentRange, entryName, category) {
41
+ constructor(
42
+ request,
43
+ insertPos,
44
+ contentRange,
45
+ entryName,
46
+ category,
47
+ removeRange,
48
+ forceInline
49
+ ) {
39
50
  super(request);
40
51
  /** @type {number} */
41
52
  this.insertPos = insertPos;
@@ -45,6 +56,10 @@ class HtmlInlineScriptDependency extends ModuleDependency {
45
56
  this.entryName = entryName;
46
57
  /** @type {string} */
47
58
  this._category = category || "commonjs";
59
+ /** @type {Range | undefined} */
60
+ this.removeRange = removeRange;
61
+ /** @type {boolean} */
62
+ this.forceInline = forceInline === true;
48
63
  }
49
64
 
50
65
  get type() {
@@ -64,7 +79,9 @@ class HtmlInlineScriptDependency extends ModuleDependency {
64
79
  .write(this.insertPos)
65
80
  .write(this.contentRange)
66
81
  .write(this.entryName)
67
- .write(this._category);
82
+ .write(this._category)
83
+ .write(this.removeRange)
84
+ .write(this.forceInline);
68
85
  super.serialize(context);
69
86
  }
70
87
 
@@ -81,7 +98,11 @@ class HtmlInlineScriptDependency extends ModuleDependency {
81
98
  this.entryName = c2.read();
82
99
  const c3 = c2.rest;
83
100
  this._category = c3.read();
84
- super.deserialize(c3.rest);
101
+ const c4 = c3.rest;
102
+ this.removeRange = c4.read();
103
+ const c5 = c4.rest;
104
+ this.forceInline = c5.read();
105
+ super.deserialize(c5.rest);
85
106
  }
86
107
  }
87
108
 
@@ -96,8 +117,12 @@ HtmlInlineScriptDependency.Template = class HtmlInlineScriptDependencyTemplate e
96
117
  * @returns {void}
97
118
  */
98
119
  apply(dependency, source, templateContext) {
99
- const { runtimeTemplate } = templateContext;
120
+ const { runtimeTemplate, chunkGraph, module } = templateContext;
100
121
  const dep = /** @type {HtmlInlineScriptDependency} */ (dependency);
122
+ if (dep.removeRange) {
123
+ source.replace(dep.removeRange[0], dep.removeRange[1] - 1, "");
124
+ return;
125
+ }
101
126
  const compilation = runtimeTemplate.compilation;
102
127
  const entrypoint = /** @type {Entrypoint | undefined} */ (
103
128
  compilation.entrypoints.get(dep.entryName)
@@ -108,6 +133,30 @@ HtmlInlineScriptDependency.Template = class HtmlInlineScriptDependencyTemplate e
108
133
 
109
134
  if (entrypoint) {
110
135
  const chunk = /** @type {Chunk} */ (entrypoint.getEntrypointChunk());
136
+ // A sentinel only resolves in a page webpack emits; exported as a JS
137
+ // string it would ride along unresolved.
138
+ const isExtractedHtml = chunkGraph
139
+ .getModuleSourceTypes(module)
140
+ .has("html");
141
+ if (
142
+ isExtractedHtml &&
143
+ getHtmlGenerator().canInlineChunk(compilation, chunk) &&
144
+ (dep.forceInline ||
145
+ getHtmlGenerator().isChunkInlined(
146
+ compilation.outputOptions.html,
147
+ chunk,
148
+ "javascript"
149
+ ))
150
+ ) {
151
+ // The tag stays as written and its body becomes the chunk's code, so
152
+ // the run costs no request.
153
+ source.replace(
154
+ dep.contentRange[0],
155
+ dep.contentRange[1] - 1,
156
+ getHtmlGenerator().makeChunkInlineSentinel(chunk, "javascript")
157
+ );
158
+ return;
159
+ }
111
160
  // Defer chunk-URL substitution to renderManifest — chunk hashes aren't ready yet.
112
161
  url = getHtmlGenerator().makeChunkUrlSentinel(chunk, "javascript");
113
162
  }
@@ -120,9 +169,10 @@ HtmlInlineScriptDependency.Template = class HtmlInlineScriptDependencyTemplate e
120
169
  }
121
170
  };
122
171
 
123
- makeSerializable(
124
- HtmlInlineScriptDependency,
172
+ makeSerializable(HtmlInlineScriptDependency, [
173
+ "webpack/lib/dependencies/html/HtmlInlineScriptDependency",
174
+ // TODO in the next major release: remove, they restore pre-move cache packs
125
175
  "webpack/lib/dependencies/HtmlInlineScriptDependency"
126
- );
176
+ ]);
127
177
 
128
178
  module.exports = HtmlInlineScriptDependency;
@@ -4,19 +4,19 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- const { CSS_TEXT_TYPE } = require("../ModuleSourceTypeConstants");
8
- const makeSerializable = require("../util/makeSerializable");
9
- const ModuleDependency = require("./ModuleDependency");
7
+ const { CSS_TEXT_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
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<boolean[]>} ObjectDeserializerContext */
18
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<boolean[]>} ObjectSerializerContext */
19
- /** @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
+ /** @typedef {import("../../serialization/ObjectMiddleware").ObjectDeserializerContext<boolean[]>} ObjectDeserializerContext */
18
+ /** @typedef {import("../../serialization/ObjectMiddleware").ObjectSerializerContext<boolean[]>} ObjectSerializerContext */
19
+ /** @import Hash from "../../util/Hash" */
20
20
 
21
21
  const TRAILING_WHITESPACE_REGEXP = /\s+$/;
22
22
  // One pass over the source: each char is replaced once and replacements aren't
@@ -31,6 +31,18 @@ const ATTR_ESCAPES = { "&": "&amp;", '"': "&quot;", "'": "&#39;" };
31
31
  */
32
32
  const escapeAttrChar = (c) => ATTR_ESCAPES[c];
33
33
 
34
+ // Character data needs only the two that open markup: `&` starts a character
35
+ // reference and `<` a tag. A CR is written as a reference because §13.2.3.5
36
+ // rewrites a literal one to LF before the tokenizer reads it.
37
+ const TEXT_ESCAPE_REGEXP = /[&<\r]/g;
38
+ /** @type {Record<string, string>} */
39
+ const TEXT_ESCAPES = { "&": "&amp;", "<": "&lt;", "\r": "&#13;" };
40
+ /**
41
+ * @param {string} c matched character
42
+ * @returns {string} the HTML-text-escaped entity
43
+ */
44
+ const escapeTextChar = (c) => TEXT_ESCAPES[c];
45
+
34
46
  /**
35
47
  * Represents inline CSS in an HTML module — either a `<style>...</style>`
36
48
  * block (a stylesheet) or an element's `style="..."` attribute (a CSS
@@ -47,14 +59,23 @@ class HtmlInlineStyleDependency extends ModuleDependency {
47
59
  * @param {Range} range range of the inline CSS content (between `<style>` and `</style>`, or the `style` attribute value)
48
60
  * @param {boolean=} attribute true when the source is a `style="..."` attribute (a block's contents) rather than a `<style>` block (stylesheet)
49
61
  * @param {boolean=} inAttribute true when the range is an attribute value (decoded on parse, so the processed CSS must be re-escaped on write-back); defaults to `attribute` — differs only for attribute values parsed as full stylesheets
62
+ * @param {boolean=} characterData true when the range is a `<style>` body in a foreign (SVG/MathML) subtree, where the content model is character data rather than raw text, so the processed CSS is escaped as text on write-back
50
63
  */
51
- constructor(request, range, attribute = false, inAttribute = attribute) {
64
+ constructor(
65
+ request,
66
+ range,
67
+ attribute = false,
68
+ inAttribute = attribute,
69
+ characterData = false
70
+ ) {
52
71
  super(request);
53
72
  this.range = range;
54
73
  /** @type {boolean} */
55
74
  this.attribute = attribute;
56
75
  /** @type {boolean} */
57
76
  this.inAttribute = inAttribute;
77
+ /** @type {boolean} */
78
+ this.characterData = characterData;
58
79
  }
59
80
 
60
81
  get type() {
@@ -87,6 +108,7 @@ class HtmlInlineStyleDependency extends ModuleDependency {
87
108
  super.serialize(context);
88
109
  context.write(this.attribute);
89
110
  context.write(this.inAttribute);
111
+ context.write(this.characterData);
90
112
  }
91
113
 
92
114
  /**
@@ -97,6 +119,7 @@ class HtmlInlineStyleDependency extends ModuleDependency {
97
119
  super.deserialize(context);
98
120
  this.attribute = context.read();
99
121
  this.inAttribute = context.read();
122
+ this.characterData = context.read();
100
123
  }
101
124
  }
102
125
 
@@ -134,15 +157,27 @@ HtmlInlineStyleDependency.Template = class HtmlInlineStyleDependencyTemplate ext
134
157
  cssText = cssText
135
158
  .replace(TRAILING_WHITESPACE_REGEXP, "")
136
159
  .replace(ATTR_ESCAPE_REGEXP, escapeAttrChar);
160
+ } else {
161
+ // A `<style>` body keeps the whitespace its source ends with: the newline
162
+ // the generator appends to hold a stylesheet's modules apart is no fixed
163
+ // point here, and a page built from an emitted one would gain one a pass.
164
+ if (cssText.endsWith("\n")) cssText = cssText.slice(0, -1);
165
+ if (dep.characterData) {
166
+ // A foreign `<style>` body was entity-decoded before parsing, so the
167
+ // processed CSS is escaped back as text — its newlines stay literal,
168
+ // which an attribute value could not afford.
169
+ cssText = cssText.replace(TEXT_ESCAPE_REGEXP, escapeTextChar);
170
+ }
137
171
  }
138
172
 
139
173
  source.replace(dep.range[0], dep.range[1] - 1, cssText);
140
174
  }
141
175
  };
142
176
 
143
- makeSerializable(
144
- HtmlInlineStyleDependency,
177
+ makeSerializable(HtmlInlineStyleDependency, [
178
+ "webpack/lib/dependencies/html/HtmlInlineStyleDependency",
179
+ // TODO in the next major release: remove, they restore pre-move cache packs
145
180
  "webpack/lib/dependencies/HtmlInlineStyleDependency"
146
- );
181
+ ]);
147
182
 
148
183
  module.exports = HtmlInlineStyleDependency;