webpack 5.111.1 → 5.112.1

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 (793) hide show
  1. package/README.md +1 -1
  2. package/bin/webpack.js +13 -7
  3. package/lib/Chunk.js +3 -966
  4. package/lib/Compilation.js +373 -163
  5. package/lib/Compiler.js +31 -44
  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 +21 -13
  25. package/lib/asset/AssetBytesParser.js +12 -10
  26. package/lib/asset/AssetGenerator.js +71 -69
  27. package/lib/asset/AssetModule.js +13 -2
  28. package/lib/asset/AssetModulesPlugin.js +10 -12
  29. package/lib/asset/AssetParser.js +10 -10
  30. package/lib/asset/AssetSourceGenerator.js +23 -15
  31. package/lib/asset/AssetSourceParser.js +12 -10
  32. package/lib/asset/RawDataUrlModule.js +17 -10
  33. package/lib/asset/WebManifestGenerator.js +17 -12
  34. package/lib/asset/WebManifestParser.js +8 -8
  35. package/lib/async-modules/AsyncModuleHelpers.js +12 -5
  36. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
  37. package/lib/async-modules/InferAsyncModulesPlugin.js +9 -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} +6 -6
  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 +13 -19
  47. package/lib/cache/ResolverCachePlugin.js +65 -11
  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} +209 -212
  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} +14 -164
  55. package/lib/config/defaults.js +166 -59
  56. package/lib/config/getClaimedAssetTypes.js +22 -14
  57. package/lib/config/normalization.js +18 -7
  58. package/lib/config/target.js +11 -1
  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 +37 -26
  76. package/lib/context/ContextModuleFactory.js +14 -11
  77. package/lib/context/ContextReplacementPlugin.js +6 -12
  78. package/lib/css/CssGenerator.js +78 -68
  79. package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
  80. package/lib/css/CssLoadingRuntimeModule.js +77 -44
  81. package/lib/css/CssModule.js +37 -29
  82. package/lib/css/CssModulesPlugin.js +129 -45
  83. package/lib/css/CssParser.js +714 -322
  84. package/lib/css/CssServerStylesRuntimeModule.js +3 -3
  85. package/lib/{util → css}/conventions.js +1 -1
  86. package/lib/css/cssMinify.js +110 -37
  87. package/lib/css/data.js +6990 -5125
  88. package/lib/css/syntax-parser.js +20734 -0
  89. package/lib/css/syntax-printer.js +6092 -0
  90. package/lib/css/syntax.js +37 -18686
  91. package/lib/debug/ProfilingPlugin.js +106 -51
  92. package/lib/{DefinePlugin.js → define/DefinePlugin.js} +416 -55
  93. package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +19 -15
  94. package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +6 -4
  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 -11
  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} +14 -11
  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} +166 -36
  116. package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
  117. package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +154 -92
  118. package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
  119. package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +36 -33
  120. package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +17 -16
  121. package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +48 -39
  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} +17 -16
  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} +9 -6
  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} +31 -9
  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} +10 -11
  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} +7 -10
  149. package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +17 -19
  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} +21 -17
  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 -99
  164. package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +24 -19
  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} +25 -22
  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} +29 -21
  172. package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +20 -20
  173. package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
  174. package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +60 -89
  175. package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +80 -45
  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} +146 -133
  179. package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +48 -30
  180. package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +78 -37
  181. package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -12
  182. package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
  183. package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +86 -68
  184. package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +104 -100
  185. package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +36 -51
  186. package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +83 -39
  187. package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +98 -60
  188. package/lib/dependencies/esm/ESMLiveExportDependency.js +311 -0
  189. package/lib/dependencies/esm/ESMLiveExportParserPlugin.js +862 -0
  190. package/lib/dependencies/esm/ESMModulesPlugin.js +205 -0
  191. package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
  192. package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -18
  193. package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +5 -7
  194. package/lib/{util → dependencies/helpers}/chainedImports.js +5 -5
  195. package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
  196. package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
  197. package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
  198. package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
  199. package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
  200. package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
  201. package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +52 -151
  202. package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -15
  203. package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +69 -23
  204. package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +50 -18
  205. package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
  206. package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
  207. package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
  208. package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
  209. package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +22 -25
  210. package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
  211. package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
  212. package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
  213. package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
  214. package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
  215. package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +122 -103
  216. package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
  217. package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
  218. package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
  219. package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
  220. package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +28 -20
  221. package/lib/{url → dependencies/url}/URLParserPlugin.js +17 -19
  222. package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
  223. package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
  224. package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
  225. package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
  226. package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +82 -53
  227. package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +22 -15
  228. package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +19 -18
  229. package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
  230. package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
  231. package/lib/devtool/ModuleFilenameHelpers.js +413 -0
  232. package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
  233. package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +155 -27
  234. package/lib/{util → devtool}/generateDebugId.js +1 -1
  235. package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
  236. package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
  237. package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
  238. package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
  239. package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
  240. package/lib/dll/DelegatedModule.js +23 -21
  241. package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
  242. package/lib/dll/DelegatedPlugin.js +1 -1
  243. package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
  244. package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
  245. package/lib/dll/DllEntryPlugin.js +3 -3
  246. package/lib/dll/DllModule.js +14 -10
  247. package/lib/dll/DllModuleFactory.js +3 -3
  248. package/lib/dll/DllPlugin.js +18 -6
  249. package/lib/dll/DllReferencePlugin.js +103 -30
  250. package/lib/dll/LibManifestPlugin.js +9 -7
  251. package/lib/electron/ElectronTargetPlugin.js +2 -2
  252. package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
  253. package/lib/{dependencies → entry}/EntryDependency.js +11 -2
  254. package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
  255. package/lib/entry/EntryPlugin.js +75 -0
  256. package/lib/errors/AbstractMethodError.js +1 -1
  257. package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
  258. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  259. package/lib/errors/BuildCycleError.js +1 -1
  260. package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
  261. package/lib/errors/ChunkRenderError.js +1 -1
  262. package/lib/errors/CodeGenerationError.js +1 -1
  263. package/lib/errors/CommentCompilationWarning.js +1 -1
  264. package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
  265. package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
  266. package/lib/errors/DeprecatedOptionWarning.js +30 -0
  267. package/lib/errors/DllManifestError.js +26 -0
  268. package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
  269. package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
  270. package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
  271. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  272. package/lib/{ErrorHelpers.js → errors/ErrorHelpers.js} +9 -6
  273. package/lib/errors/ExternalStarReexportError.js +2 -2
  274. package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
  275. package/lib/errors/HookWebpackError.js +6 -5
  276. package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
  277. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  278. package/lib/errors/JSONParseError.js +4 -4
  279. package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
  280. package/lib/errors/ModuleBuildError.js +1 -1
  281. package/lib/errors/ModuleDependencyError.js +2 -2
  282. package/lib/errors/ModuleDependencyWarning.js +2 -2
  283. package/lib/errors/ModuleError.js +1 -1
  284. package/lib/errors/ModuleHashingError.js +1 -1
  285. package/lib/errors/ModuleNotFoundError.js +3 -3
  286. package/lib/errors/ModuleParseError.js +1 -1
  287. package/lib/errors/ModuleRestoreError.js +1 -1
  288. package/lib/errors/ModuleStoreError.js +1 -1
  289. package/lib/errors/ModuleWarning.js +1 -1
  290. package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
  291. package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
  292. package/lib/errors/NodeStuffInWebError.js +7 -2
  293. package/lib/errors/PathVariableError.js +31 -0
  294. package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
  295. package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
  296. package/lib/errors/RuntimeModuleGenerationError.js +51 -0
  297. package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
  298. package/lib/errors/SystemImportDeprecationWarning.js +43 -0
  299. package/lib/errors/UnmergeableEntryExportsError.js +34 -0
  300. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  301. package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
  302. package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
  303. package/lib/errors/WebpackError.js +13 -3
  304. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
  305. package/lib/esm/ModuleChunkFormatPlugin.js +55 -20
  306. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
  307. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
  308. package/lib/{ExternalModule.js → externals/ExternalModule.js} +90 -63
  309. package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +42 -41
  310. package/lib/externals/ExternalsPlugin.js +99 -0
  311. package/lib/fs/FileSystemInfo.js +4642 -0
  312. package/lib/{util → fs}/fs.js +22 -9
  313. package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
  314. package/lib/graph/Chunk.js +985 -0
  315. package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +192 -80
  316. package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
  317. package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
  318. package/lib/graph/Dependency.js +634 -0
  319. package/lib/graph/Entrypoint.js +136 -0
  320. package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +131 -83
  321. package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
  322. package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +44 -33
  323. package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
  324. package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +169 -76
  325. package/lib/{util → graph}/findGraphRoots.js +15 -9
  326. package/lib/graph/isDependencyKind.js +23 -0
  327. package/lib/hmr/HotModuleReplacement.runtime.js +12 -11
  328. package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +51 -57
  329. package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
  330. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +25 -26
  331. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
  332. package/lib/hmr/LazyCompilationPlugin.js +32 -28
  333. package/lib/html/HtmlGenerator.js +132 -60
  334. package/lib/html/HtmlModule.js +16 -2
  335. package/lib/html/HtmlModulesPlugin.js +184 -87
  336. package/lib/html/HtmlParser.js +511 -160
  337. package/lib/html/builtinEmbeddedRenderer.js +70 -25
  338. package/lib/html/data.js +44 -22
  339. package/lib/html/htmlMinify.js +114 -41
  340. package/lib/html/syntax-parser.js +15795 -0
  341. package/lib/html/syntax-printer.js +1033 -0
  342. package/lib/html/syntax.js +37 -13952
  343. package/lib/html/xmlMinify.js +70 -0
  344. package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
  345. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  346. package/lib/ids/HashedModuleIdsPlugin.js +32 -5
  347. package/lib/ids/IdHelpers.js +4 -4
  348. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  349. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
  350. package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
  351. package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
  352. package/lib/ids/SyncModuleIdsPlugin.js +3 -3
  353. package/lib/{util → ids}/numberHash.js +1 -1
  354. package/lib/index.js +312 -105
  355. package/lib/{APIPlugin.js → javascript/APIPlugin.js} +31 -37
  356. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
  357. package/lib/javascript/BasicEvaluatedExpression.js +9 -9
  358. package/lib/javascript/ChunkHelpers.js +64 -4
  359. package/lib/javascript/CommonJsChunkFormatPlugin.js +5 -13
  360. package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +7 -7
  361. package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +75 -8
  362. package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
  363. package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
  364. package/lib/javascript/JavascriptGenerator.js +32 -27
  365. package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +8 -20
  366. package/lib/javascript/JavascriptModule.js +14 -3
  367. package/lib/javascript/JavascriptModulesPlugin.js +441 -214
  368. package/lib/javascript/JavascriptParser.js +318 -144
  369. package/lib/javascript/JavascriptParserHelpers.js +1 -1
  370. package/lib/javascript/MergedEntryExports.js +196 -0
  371. package/lib/javascript/ScopeAnalyzer.js +3924 -13
  372. package/lib/javascript/StartupHelpers.js +6 -6
  373. package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +13 -19
  374. package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
  375. package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
  376. package/lib/javascript/data.js +533 -122
  377. package/lib/javascript/jsMinify.js +272 -0
  378. package/lib/javascript/regexp.js +67 -32
  379. package/lib/javascript/syntax-parser.js +19169 -0
  380. package/lib/javascript/syntax-printer-data.js +1099 -0
  381. package/lib/javascript/syntax-printer.js +53878 -0
  382. package/lib/javascript/syntax.js +20 -11274
  383. package/lib/json/JsonData.js +1 -1
  384. package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
  385. package/lib/json/JsonGenerator.js +24 -16
  386. package/lib/json/JsonModule.js +13 -2
  387. package/lib/json/JsonModulesPlugin.js +1 -1
  388. package/lib/json/JsonParser.js +11 -10
  389. package/lib/json/jsonMinify.js +69 -0
  390. package/lib/library/AbstractLibraryPlugin.js +28 -15
  391. package/lib/library/AmdLibraryPlugin.js +4 -4
  392. package/lib/library/AssignLibraryPlugin.js +28 -12
  393. package/lib/library/EnableLibraryPlugin.js +1 -1
  394. package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
  395. package/lib/library/JsonpLibraryPlugin.js +2 -2
  396. package/lib/library/LibraryTemplatePlugin.js +53 -0
  397. package/lib/library/ModuleLibraryPlugin.js +557 -187
  398. package/lib/library/SystemLibraryPlugin.js +6 -8
  399. package/lib/library/UmdLibraryPlugin.js +3 -4
  400. package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
  401. package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
  402. package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
  403. package/lib/{dependencies → loaders}/LoaderPlugin.js +2 -2
  404. package/lib/loaders/LoaderRunner.js +94 -46
  405. package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
  406. package/lib/loaders/loadLoader.js +16 -10
  407. package/lib/logging/Logger.js +7 -9
  408. package/lib/logging/ProgressPlugin.js +957 -0
  409. package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
  410. package/lib/{Generator.js → module/Generator.js} +33 -23
  411. package/lib/{Module.js → module/Module.js} +121 -53
  412. package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
  413. package/lib/module/NormalModule.js +2350 -0
  414. package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +64 -71
  415. package/lib/module/NullFactory.js +29 -0
  416. package/lib/{Parser.js → module/Parser.js} +12 -5
  417. package/lib/module/RawModule.js +208 -0
  418. package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
  419. package/lib/{util → module}/extractSourceMap.js +71 -20
  420. package/lib/{util → module}/findCaseMismatch.js +4 -4
  421. package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
  422. package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
  423. package/lib/{dependencies → node}/ExternalModuleInitFragment.js +7 -6
  424. package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
  425. package/lib/node/NodeEnvironmentPlugin.js +11 -1
  426. package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
  427. package/lib/node/NodeTargetPlugin.js +1 -1
  428. package/lib/node/NodeWatchFileSystem.js +58 -6
  429. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
  430. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -19
  431. package/lib/node/ReadFileCompileWasmPlugin.js +9 -11
  432. package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
  433. package/lib/node/nodeConsole.js +6 -7
  434. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  435. package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
  436. package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +14 -14
  437. package/lib/optimize/ConcatenatedModule.js +231 -220
  438. package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
  439. package/lib/optimize/ConstExportsPlugin.js +7 -7
  440. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  441. package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
  442. package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +23 -28
  443. package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +44 -19
  444. package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
  445. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
  446. package/lib/optimize/InlineExports.js +12 -7
  447. package/lib/optimize/InnerGraph.js +5 -13
  448. package/lib/optimize/InnerGraphPlugin.js +10 -10
  449. package/lib/optimize/LazyBarrels.js +620 -0
  450. package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
  451. package/lib/optimize/LimitChunkCountPlugin.js +16 -7
  452. package/lib/optimize/MangleExportsPlugin.js +5 -5
  453. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
  454. package/lib/optimize/MinChunkSizePlugin.js +9 -6
  455. package/lib/optimize/ModuleConcatenationPlugin.js +28 -22
  456. package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
  457. package/lib/optimize/RealContentHashPlugin.js +18 -13
  458. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  459. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  460. package/lib/optimize/SideEffectsFlagPlugin.js +24 -38
  461. package/lib/optimize/SplitChunksPlugin.js +719 -174
  462. package/lib/{util → optimize}/TupleQueue.js +9 -9
  463. package/lib/optimize/chunkSetIntersections.js +437 -0
  464. package/lib/{util → optimize}/deterministicGrouping.js +17 -17
  465. package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
  466. package/lib/{CleanPlugin.js → output/CleanPlugin.js} +69 -25
  467. package/lib/{CopyPlugin.js → output/CopyPlugin.js} +144 -70
  468. package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
  469. package/lib/output/SSRManifestPlugin.js +349 -0
  470. package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
  471. package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
  472. package/lib/performance/BroadContextsPlugin.js +4 -4
  473. package/lib/performance/CacheEffectivenessPlugin.js +2 -3
  474. package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
  475. package/lib/performance/DuplicateModulesPlugin.js +3 -4
  476. package/lib/performance/DuplicatePackagesPlugin.js +3 -3
  477. package/lib/performance/DynamicExportsPlugin.js +2 -2
  478. package/lib/performance/EvalUsagePlugin.js +4 -6
  479. package/lib/performance/HotspotsPlugin.js +39 -14
  480. package/lib/performance/LargeModulesPlugin.js +2 -3
  481. package/lib/performance/LegacyJavascriptPlugin.js +1 -2
  482. package/lib/performance/MissingSideEffectsPlugin.js +2 -3
  483. package/lib/performance/MissingSourceMapsPlugin.js +5 -6
  484. package/lib/performance/PureAnnotationsPlugin.js +19 -13
  485. package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
  486. package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
  487. package/lib/performance/SizeLimitsPlugin.js +11 -12
  488. package/lib/performance/TopLevelThisPlugin.js +22 -13
  489. package/lib/performance/UnsplitVendorsPlugin.js +1 -2
  490. package/lib/performance/UnusedAliasesPlugin.js +6 -7
  491. package/lib/performance/UnusedAssetsPlugin.js +5 -5
  492. package/lib/performance/UnusedDefinesPlugin.js +2 -2
  493. package/lib/performance/UnusedExternalsPlugin.js +3 -4
  494. package/lib/performance/UnusedFederationPlugin.js +2 -4
  495. package/lib/performance/UnusedModulesPlugin.js +5 -4
  496. package/lib/performance/getModuleSize.js +1 -1
  497. package/lib/performance/hasOnlyUnusedExports.js +4 -4
  498. package/lib/performance/isOnlyReexported.js +7 -6
  499. package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
  500. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
  501. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -1
  502. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
  503. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
  504. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
  505. package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
  506. package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
  507. package/lib/prefetch/ResourceHintPlugin.js +66 -45
  508. package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
  509. package/lib/prefetch/StartupAssetHintRuntimeModule.js +3 -3
  510. package/lib/prefetch/parseResourceHintOptions.js +4 -3
  511. package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
  512. package/lib/{dependencies → provide}/ProvidedDependency.js +50 -17
  513. package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
  514. package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
  515. package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
  516. package/lib/resolve/getResolveOptionsKey.js +59 -0
  517. package/lib/rules/BasicEffectRulePlugin.js +1 -1
  518. package/lib/rules/RuleSetCompiler.js +42 -51
  519. package/lib/rules/UseEffectRulePlugin.js +1 -3
  520. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
  521. package/lib/runtime/AsyncModuleRuntimeModule.js +14 -5
  522. package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
  523. package/lib/runtime/BaseUriRuntimeModule.js +3 -3
  524. package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
  525. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
  526. package/lib/runtime/CompatRuntimeModule.js +4 -4
  527. package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
  528. package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
  529. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  530. package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
  531. package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
  532. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
  533. package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
  534. package/lib/runtime/GetChunkFilenameRuntimeModule.js +7 -11
  535. package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
  536. package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
  537. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
  538. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
  539. package/lib/runtime/GlobalRuntimeModule.js +3 -3
  540. package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
  541. package/lib/runtime/HelperRuntimeModule.js +16 -1
  542. package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
  543. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +80 -17
  544. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
  545. package/lib/runtime/NonceRuntimeModule.js +2 -2
  546. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
  547. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  548. package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
  549. package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +24 -1
  550. package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
  551. package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
  552. package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +50 -50
  553. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
  554. package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
  555. package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
  556. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
  557. package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
  558. package/lib/runtime/SystemContextRuntimeModule.js +2 -2
  559. package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
  560. package/lib/runtime/WorkerRuntimeModule.js +1 -1
  561. package/lib/runtime/baseUri.js +1 -1
  562. package/lib/schemes/DataUriPlugin.js +1 -1
  563. package/lib/schemes/HttpUriPlugin.js +68 -13
  564. package/lib/schemes/VirtualUrlPlugin.js +52 -16
  565. package/lib/serialization/AggregateErrorSerializer.js +4 -4
  566. package/lib/serialization/BinaryMiddleware.js +4 -1
  567. package/lib/serialization/ErrorObjectSerializer.js +2 -5
  568. package/lib/serialization/FileMiddleware.js +3 -3
  569. package/lib/serialization/ObjectMiddleware.js +62 -29
  570. package/lib/serialization/PlainObjectSerializer.js +3 -7
  571. package/lib/serialization/Serializer.js +21 -11
  572. package/lib/serialization/SerializerMiddleware.js +10 -8
  573. package/lib/serialization/SingleItemMiddleware.js +4 -2
  574. package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
  575. package/lib/sharing/ConsumeSharedModule.js +18 -14
  576. package/lib/sharing/ConsumeSharedPlugin.js +148 -42
  577. package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
  578. package/lib/sharing/ProvideForSharedDependency.js +9 -1
  579. package/lib/sharing/ProvideSharedDependency.js +1 -1
  580. package/lib/sharing/ProvideSharedModule.js +11 -9
  581. package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
  582. package/lib/sharing/ProvideSharedPlugin.js +111 -20
  583. package/lib/sharing/SharePlugin.js +102 -9
  584. package/lib/sharing/ShareRuntimeModule.js +6 -6
  585. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  586. package/lib/{util → sharing}/semver.js +14 -16
  587. package/lib/sharing/utils.js +59 -2
  588. package/lib/stats/DefaultStatsFactoryPlugin.js +57 -54
  589. package/lib/stats/DefaultStatsPresetPlugin.js +3 -7
  590. package/lib/stats/DefaultStatsPrinterPlugin.js +15 -14
  591. package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
  592. package/lib/{Stats.js → stats/Stats.js} +4 -4
  593. package/lib/stats/StatsFactory.js +208 -37
  594. package/lib/stats/StatsPrinter.js +126 -13
  595. package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
  596. package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
  597. package/lib/template/DependencyTemplate.js +77 -0
  598. package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
  599. package/lib/template/InitFragment.js +223 -0
  600. package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
  601. package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
  602. package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
  603. package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +158 -95
  604. package/lib/{Template.js → template/Template.js} +14 -12
  605. package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +19 -23
  606. package/lib/typescript/TypeScriptPlugin.js +3 -3
  607. package/lib/util/RequestShortener.js +44 -0
  608. package/lib/util/SortableSet.js +87 -22
  609. package/lib/util/SourceProcessor.js +439 -51
  610. package/lib/util/TupleSet.js +27 -27
  611. package/lib/util/WeakTupleMap.js +20 -16
  612. package/lib/util/buildDiagnostics.js +2 -2
  613. package/lib/util/cleverMerge.js +61 -33
  614. package/lib/util/comparators.js +19 -15
  615. package/lib/util/concatenate.js +28 -147
  616. package/lib/util/createMappings.js +111 -0
  617. package/lib/util/dataURL.js +96 -15
  618. package/lib/util/deprecation.js +5 -4
  619. package/lib/util/extractComments.js +118 -0
  620. package/lib/util/formatLocation.js +1 -1
  621. package/lib/util/globUtils.js +198 -20
  622. package/lib/util/haltVisitors.js +51 -0
  623. package/lib/util/handlerKeys.js +2 -2
  624. package/lib/util/identifier.js +117 -1
  625. package/lib/util/implicitTypeLoaderFallback.js +6 -4
  626. package/lib/util/internalSerializables.js +296 -102
  627. package/lib/util/magicComment.js +12 -7
  628. package/lib/util/makeSerializable.js +28 -7
  629. package/lib/util/memoize.js +1 -1
  630. package/lib/util/parseJson.js +2 -2
  631. package/lib/util/preloadModuleType.js +5 -2
  632. package/lib/util/registerExternalSerializer.js +2 -2
  633. package/lib/util/removeBOM.js +1 -1
  634. package/lib/util/runtime.js +1 -1
  635. package/lib/util/serialization.js +35 -28
  636. package/lib/util/source.js +2 -2
  637. package/lib/util/terminalColors.js +161 -0
  638. package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
  639. package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
  640. package/lib/{wasm-async → wasm}/AsyncWasmModule.js +19 -5
  641. package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +17 -9
  642. package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +24 -15
  643. package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
  644. package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +14 -12
  645. package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
  646. package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +11 -13
  647. package/lib/wasm/wasmModuleFilename.js +2 -2
  648. package/lib/wasm-sync/SyncWasmModule.js +18 -3
  649. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +8 -8
  650. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
  651. package/lib/wasm-sync/WebAssemblyGenerator.js +22 -16
  652. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +28 -21
  653. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
  654. package/lib/wasm-sync/WebAssemblyParser.js +15 -17
  655. package/lib/wasm-sync/WebAssemblyUtils.js +6 -5
  656. package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
  657. package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
  658. package/lib/{Watching.js → watch/Watching.js} +8 -8
  659. package/lib/web/FetchCompileAsyncWasmPlugin.js +12 -18
  660. package/lib/web/FetchCompileWasmPlugin.js +8 -10
  661. package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
  662. package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
  663. package/lib/web/JsonpTemplatePlugin.js +1 -1
  664. package/lib/webpack.js +27 -17
  665. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
  666. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
  667. package/package.json +57 -36
  668. package/schemas/WebpackOptions.check.js +4 -3
  669. package/schemas/WebpackOptions.d.json.ts +2 -0
  670. package/schemas/WebpackOptions.json +295 -75
  671. package/schemas/plugins/BannerPlugin.check.js +4 -3
  672. package/schemas/plugins/BannerPlugin.json +29 -2
  673. package/schemas/plugins/HtmlGeneratorOptions.check.js +4 -3
  674. package/schemas/plugins/HtmlParserOptions.check.js +4 -3
  675. package/schemas/plugins/IgnorePlugin.check.js +4 -3
  676. package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
  677. package/schemas/plugins/IgnorePlugin.json +1 -1
  678. package/schemas/plugins/LoaderOptionsPlugin.check.js +4 -3
  679. package/schemas/plugins/ManifestPlugin.check.js +4 -3
  680. package/schemas/plugins/ManifestPlugin.json +3 -3
  681. package/schemas/plugins/ProgressPlugin.check.js +4 -3
  682. package/schemas/plugins/ProgressPlugin.json +2 -7
  683. package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
  684. package/schemas/plugins/SSRManifestPlugin.json +20 -0
  685. package/schemas/plugins/SourceMapDevToolPlugin.check.js +4 -3
  686. package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
  687. package/schemas/plugins/WatchIgnorePlugin.check.js +4 -3
  688. package/schemas/plugins/WatchIgnorePlugin.json +12 -3
  689. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +4 -3
  690. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +4 -3
  691. package/schemas/plugins/asset/AssetParserOptions.check.js +4 -3
  692. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +4 -3
  693. package/schemas/plugins/container/ContainerPlugin.check.js +4 -3
  694. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  695. package/schemas/plugins/container/ContainerReferencePlugin.check.js +4 -3
  696. package/schemas/plugins/container/ExternalsType.check.js +4 -3
  697. package/schemas/plugins/container/ModuleFederationPlugin.check.js +4 -3
  698. package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
  699. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +4 -3
  700. package/schemas/plugins/css/CssGeneratorOptions.check.js +4 -3
  701. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +4 -3
  702. package/schemas/plugins/css/CssModuleParserOptions.check.js +4 -3
  703. package/schemas/plugins/css/CssParserOptions.check.js +4 -3
  704. package/schemas/plugins/debug/ProfilingPlugin.check.js +4 -3
  705. package/schemas/plugins/define/DotenvPluginOptions.check.js +7 -0
  706. package/schemas/plugins/define/DotenvPluginOptions.json +3 -0
  707. package/schemas/plugins/dll/DllPlugin.check.js +4 -3
  708. package/schemas/plugins/dll/DllReferencePlugin.check.js +4 -3
  709. package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
  710. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +4 -3
  711. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +4 -3
  712. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +4 -3
  713. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +4 -3
  714. package/schemas/plugins/json/JsonModulesPluginParser.check.js +4 -3
  715. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +4 -3
  716. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +4 -3
  717. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +4 -3
  718. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +4 -3
  719. package/schemas/plugins/output/CleanOptions.check.js +7 -0
  720. package/schemas/plugins/output/CleanOptions.json +3 -0
  721. package/schemas/plugins/schemes/HttpUriPlugin.check.js +4 -3
  722. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +4 -3
  723. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +4 -3
  724. package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
  725. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +4 -3
  726. package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
  727. package/schemas/plugins/sharing/SharePlugin.check.js +4 -3
  728. package/schemas/plugins/sharing/SharePlugin.json +32 -0
  729. package/types.d.ts +20780 -14174
  730. package/lib/LazyBarrel.js +0 -388
  731. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
  732. package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
  733. package/lib/javascript/ChunkFormatHelpers.js +0 -72
  734. package/lib/javascript/grammar.js +0 -5546
  735. package/lib/javascript/parser.js +0 -1500
  736. package/lib/javascript/regexpData.js +0 -51
  737. package/lib/performance/getSourceModules.js +0 -22
  738. package/lib/util/Semaphore.js +0 -65
  739. package/lib/util/objectToMap.js +0 -15
  740. package/schemas/WebpackOptions.check.d.ts +0 -7
  741. package/schemas/_container.json +0 -155
  742. package/schemas/_sharing.json +0 -118
  743. package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
  744. package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
  745. package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
  746. package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
  747. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
  748. package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
  749. package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
  750. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
  751. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
  752. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
  753. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
  754. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
  755. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
  756. package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
  757. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
  758. package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
  759. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
  760. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
  761. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
  762. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
  763. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
  764. package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
  765. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
  766. package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
  767. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
  768. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
  769. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
  770. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
  771. package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
  772. package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
  773. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
  774. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
  775. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
  776. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
  777. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
  778. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
  779. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
  780. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
  781. package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
  782. /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
  783. /package/lib/{util → css}/topologicalSort.js +0 -0
  784. /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
  785. /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
  786. /package/lib/{util → fs}/StackedCacheMap.js +0 -0
  787. /package/lib/{util → javascript}/StackedMap.js +0 -0
  788. /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
  789. /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
  790. /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
  791. /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
  792. /package/lib/{util → optimize}/Queue.js +0 -0
  793. /package/lib/{util → stats}/smartGrouping.js +0 -0
@@ -12,10 +12,10 @@ const {
12
12
  ReplaceSource,
13
13
  SourceMapSource
14
14
  } = require("webpack-sources");
15
- const { UsageState } = require("../ExportsInfo");
16
- const Generator = require("../Generator");
17
- const InitFragment = require("../InitFragment");
18
- const ModuleFilenameHelpers = require("../ModuleFilenameHelpers");
15
+ const ModuleFilenameHelpers = require("../devtool/ModuleFilenameHelpers");
16
+ const { UsageState } = require("../graph/ExportsInfo");
17
+ const isDependencyKind = require("../graph/isDependencyKind");
18
+ const Generator = require("../module/Generator");
19
19
  const {
20
20
  CSS_TEXT_TYPE,
21
21
  CSS_TEXT_TYPES,
@@ -26,13 +26,11 @@ const {
26
26
  JAVASCRIPT_TYPE,
27
27
  JAVASCRIPT_TYPES,
28
28
  NO_TYPES
29
- } = require("../ModuleSourceTypeConstants");
30
- const RuntimeGlobals = require("../RuntimeGlobals");
31
- const Template = require("../Template");
32
- const { getPresentKinds } = require("../TemplatedPathPlugin");
33
- const CssImportDependency = require("../dependencies/CssImportDependency");
34
- const HarmonyImportSideEffectDependency = require("../dependencies/HarmonyImportSideEffectDependency");
35
- const LoaderImportDependency = require("../dependencies/LoaderImportDependency");
29
+ } = require("../module/ModuleSourceTypeConstants");
30
+ const RuntimeGlobals = require("../runtime/RuntimeGlobals");
31
+ const InitFragment = require("../template/InitFragment");
32
+ const Template = require("../template/Template");
33
+ const { getPresentKinds } = require("../template/TemplatedPathPlugin");
36
34
 
37
35
  const { encodeMappings } = require("../util/createMappings");
38
36
  const {
@@ -51,6 +49,7 @@ const CSS_TYPE_PREFIX = `${CSS_TYPE}/`;
51
49
 
52
50
  const URL_SCHEME_REGEXP = /^(?:data|https?):/;
53
51
 
52
+ /** @import CssModule, { BuiltCssModule, CssNormalModule } from "./CssModule" */
54
53
  /** @import { Source, RawSourceMap } from "webpack-sources" */
55
54
  /**
56
55
  * @import {
@@ -58,33 +57,27 @@ const URL_SCHEME_REGEXP = /^(?:data|https?):/;
58
57
  * } from "../../declarations/WebpackOptions"
59
58
  */
60
59
  /** @import { DependencyConstructor } from "../Compilation" */
61
- /** @import CodeGenerationResults from "../CodeGenerationResults" */
62
- /** @import Dependency from "../Dependency" */
60
+ /** @import CodeGenerationResults from "../module/CodeGenerationResults" */
61
+ /** @import Dependency from "../graph/Dependency" */
63
62
  /**
64
63
  * @import {
65
64
  * CssData,
66
65
  * DependencyTemplateContext,
67
66
  * CssDependencyTemplateContext
68
- * } from "../DependencyTemplate"
67
+ * } from "../template/DependencyTemplate"
69
68
  */
70
- /** @import { GenerateContext, UpdateHashContext } from "../Generator" */
69
+ /** @import { GenerateContext, UpdateHashContext } from "../module/Generator" */
71
70
  /**
72
71
  * @import {
73
72
  * ConcatenationBailoutReasonContext,
74
73
  * SourceType,
75
74
  * SourceTypes
76
- * } from "../Module"
75
+ * } from "../module/Module"
77
76
  */
78
- /** @import ModuleGraph from "../ModuleGraph" */
79
- /** @import NormalModule from "../NormalModule" */
77
+ /** @import ModuleGraph from "../graph/ModuleGraph" */
78
+ /** @import NormalModule from "../module/NormalModule" */
80
79
  /** @import Hash from "../util/Hash" */
81
80
  /** @import { ModuleFactoryCacheEntry } from "./CssModulesPlugin" */
82
- /**
83
- * @import CssModule, {
84
- * CssModuleBuildInfo,
85
- * CssModuleBuildMeta
86
- * } from "./CssModule"
87
- */
88
81
 
89
82
  /** @typedef {{ line: number, column: number }} SourcePosition */
90
83
  /** @typedef {Map<string, SourcePosition>} ExportLocsMap */
@@ -154,6 +147,14 @@ const buildExportsSourceMap = (
154
147
  };
155
148
  };
156
149
 
150
+ /**
151
+ * The module type the JSDoc inherited from `Generator` names.
152
+ * @typedef {CssNormalModule} TModule
153
+ */
154
+
155
+ /**
156
+ * @extends {Generator<TModule>}
157
+ */
157
158
  class CssGenerator extends Generator {
158
159
  /**
159
160
  * Creates an instance of CssGenerator.
@@ -191,7 +192,7 @@ class CssGenerator extends Generator {
191
192
 
192
193
  /**
193
194
  * Returns the reason this module cannot be concatenated, when one exists.
194
- * @param {NormalModule} module module for which the bailout reason should be determined
195
+ * @param {TModule} module module for which the bailout reason should be determined
195
196
  * @param {ConcatenationBailoutReasonContext} context context
196
197
  * @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
197
198
  */
@@ -226,7 +227,7 @@ class CssGenerator extends Generator {
226
227
 
227
228
  /**
228
229
  * Processes the provided module.
229
- * @param {NormalModule} module the module to generate
230
+ * @param {TModule} module the module to generate
230
231
  * @param {InitFragment<GenerateContext>[]} initFragments mutable list of init fragments
231
232
  * @param {ReplaceSource} source the current replace source which can be modified
232
233
  * @param {GenerateContext & { cssData: CssData }} generateContext the generateContext
@@ -235,7 +236,7 @@ class CssGenerator extends Generator {
235
236
  sourceModule(module, initFragments, source, generateContext) {
236
237
  // Only `dependency` varies across `template.apply` calls, so one context
237
238
  // (and one lazy `chunkInitFragments` getter) serves the whole module.
238
- /** @type {InitFragment<GenerateContext>[] | undefined} */
239
+ /** @type {InitFragment<import("../javascript/JavascriptModulesPlugin").ChunkRenderContext>[] | undefined} */
239
240
  let chunkInitFragments;
240
241
  /** @type {CssDependencyTemplateContext} */
241
242
  const templateContext = {
@@ -282,12 +283,13 @@ class CssGenerator extends Generator {
282
283
 
283
284
  /**
284
285
  * Generates generated code for this runtime module.
285
- * @param {NormalModule} module module for which the code should be generated
286
+ * @param {TModule} module module for which the code should be generated
286
287
  * @param {GenerateContext} generateContext context for generate
287
288
  * @returns {Source | null} generated code
288
289
  */
289
290
  generate(module, generateContext) {
290
291
  const exportType = /** @type {CssModule} */ (module).exportType || "link";
292
+ const { buildInfo, buildMeta } = /** @type {BuiltCssModule} */ (module);
291
293
  const source =
292
294
  generateContext.type === JAVASCRIPT_TYPE && exportType === "link"
293
295
  ? new ReplaceSource(new RawSource(""))
@@ -298,7 +300,13 @@ class CssGenerator extends Generator {
298
300
  const cssData = {
299
301
  esModule: /** @type {boolean} */ (this._esModule),
300
302
  exports: new Map(),
301
- exportLocs: new Map()
303
+ // Read only to map the exports code back to the CSS, so a build that
304
+ // asks for no source map neither fills nor keeps it.
305
+ exportLocs:
306
+ generateContext.type === JAVASCRIPT_TYPE &&
307
+ (module.useSourceMap || module.useSimpleSourceMap)
308
+ ? new Map()
309
+ : undefined
302
310
  };
303
311
 
304
312
  this.sourceModule(module, initFragments, source, {
@@ -310,8 +318,7 @@ class CssGenerator extends Generator {
310
318
  case JAVASCRIPT_TYPE: {
311
319
  const compilation = generateContext.runtimeTemplate.compilation;
312
320
  const devtool = compilation.options.devtool;
313
- const isCssModule = /** @type {CssModuleBuildMeta} */ (module.buildMeta)
314
- .isCssModule;
321
+ const isCssModule = buildMeta.isCssModule;
315
322
 
316
323
  const generateContentCode = () => {
317
324
  switch (exportType) {
@@ -408,8 +415,7 @@ class CssGenerator extends Generator {
408
415
  /** @type {Source | null} */
409
416
  const defaultExport = generateJSDefaultExport();
410
417
 
411
- /** @type {CssModuleBuildInfo} */
412
- (module.buildInfo).cssData = cssData;
418
+ buildInfo.cssData = cssData;
413
419
 
414
420
  // Required for HMR
415
421
  if (module.hot) {
@@ -571,21 +577,17 @@ class CssGenerator extends Generator {
571
577
  // `SourceMapDevToolPlugin` can match the module and apply the
572
578
  // devtool filename template instead of leaking this raw name
573
579
  const sourceName = contextifySourceUrl(
574
- /** @type {string} */ (compilation.options.context),
580
+ compilation.options.context,
575
581
  module.identifier(),
576
582
  compilation.compiler.root
577
583
  );
578
584
 
579
- if (
580
- /** @type {ExportLocsMap} */
581
- (cssData.exportLocs).size > 0
582
- ) {
585
+ if (cssData.exportLocs !== undefined && cssData.exportLocs.size > 0) {
583
586
  const cssOriginal = module.originalSource();
584
587
  if (cssOriginal) {
585
588
  const sourceMap = buildExportsSourceMap(
586
589
  generatedJs,
587
- /** @type {ExportLocsMap} */
588
- (cssData.exportLocs),
590
+ cssData.exportLocs,
589
591
  /** @type {string} */ (cssOriginal.source()),
590
592
  sourceName
591
593
  );
@@ -611,7 +613,7 @@ class CssGenerator extends Generator {
611
613
  /**
612
614
  * Generates fallback output for the provided error condition.
613
615
  * @param {Error} error the error
614
- * @param {NormalModule} module module for which the code should be generated
616
+ * @param {TModule} module module for which the code should be generated
615
617
  * @param {GenerateContext} generateContext context for generate
616
618
  * @returns {Source | null} generated code
617
619
  */
@@ -641,7 +643,7 @@ class CssGenerator extends Generator {
641
643
 
642
644
  /**
643
645
  * Returns the source types available for this module.
644
- * @param {NormalModule} module fresh module
646
+ * @param {TModule} module fresh module
645
647
  * @returns {SourceTypes} available types (do not mutate)
646
648
  */
647
649
  getTypes(module) {
@@ -661,12 +663,16 @@ class CssGenerator extends Generator {
661
663
  if (hasJs && (hasCssText || !needsCssText)) break;
662
664
  if (
663
665
  exportType === "link" &&
664
- connection.dependency instanceof CssImportDependency
666
+ connection.dependency !== null &&
667
+ isDependencyKind(connection.dependency, "css-import")
665
668
  ) {
666
669
  continue;
667
670
  }
668
671
 
669
- if (connection.dependency instanceof HarmonyImportSideEffectDependency) {
672
+ if (
673
+ connection.dependency !== null &&
674
+ isDependencyKind(connection.dependency, "esm-side-effect-import")
675
+ ) {
670
676
  continue;
671
677
  }
672
678
 
@@ -682,7 +688,10 @@ class CssGenerator extends Generator {
682
688
 
683
689
  // `importModule()` executes the module as JavaScript, and its dependency
684
690
  // carries no origin module (`connectOrigin: false` in `LoaderPlugin`).
685
- if (connection.dependency instanceof LoaderImportDependency) {
691
+ if (
692
+ connection.dependency !== null &&
693
+ isDependencyKind(connection.dependency, "loader-import")
694
+ ) {
686
695
  hasJs = true;
687
696
  continue;
688
697
  }
@@ -723,22 +732,20 @@ class CssGenerator extends Generator {
723
732
 
724
733
  /**
725
734
  * Returns the estimated size for the requested source type.
726
- * @param {NormalModule} module the module
735
+ * @param {TModule} module the module
727
736
  * @param {SourceType=} type source type
728
737
  * @returns {number} estimate size of the module
729
738
  */
730
739
  getSize(module, type) {
731
740
  switch (type) {
732
741
  case JAVASCRIPT_TYPE: {
733
- const cssData = /** @type {CssModuleBuildInfo} */ (module.buildInfo)
734
- .cssData;
742
+ const { buildInfo, buildMeta } = /** @type {BuiltCssModule} */ (module);
743
+ const cssData = buildInfo.cssData;
735
744
  if (!cssData) {
736
745
  return 42;
737
746
  }
738
747
  if (cssData.exports.size === 0) {
739
- if (
740
- /** @type {CssModuleBuildMeta} */ (module.buildMeta).isCssModule
741
- ) {
748
+ if (buildMeta.isCssModule) {
742
749
  return 42;
743
750
  }
744
751
  return 0;
@@ -771,7 +778,7 @@ class CssGenerator extends Generator {
771
778
  /**
772
779
  * Updates the hash with the data contributed by this instance.
773
780
  * @param {Hash} hash hash that will be modified
774
- * @param {UpdateHashContext} updateHashContext context for updating hash
781
+ * @param {UpdateHashContext<TModule>} updateHashContext context for updating hash
775
782
  */
776
783
  updateHash(hash, { module, runtimeTemplate }) {
777
784
  hash.update(/** @type {boolean} */ (this._esModule).toString());
@@ -798,7 +805,7 @@ class CssGenerator extends Generator {
798
805
 
799
806
  /**
800
807
  * Resolve the effective `@charset` by walking text imports.
801
- * @param {NormalModule} module the module
808
+ * @param {TModule} module the module
802
809
  * @param {ModuleGraph} moduleGraph module graph
803
810
  * @param {WeakSet<NormalModule>=} visited cycle guard
804
811
  * @returns {string | undefined} the effective charset
@@ -810,14 +817,12 @@ class CssGenerator extends Generator {
810
817
  return undefined;
811
818
  }
812
819
  visited.add(module);
813
- const own =
814
- module.buildInfo &&
815
- /** @type {CssModuleBuildInfo} */ (module.buildInfo).charset;
820
+ const own = module.buildInfo && module.buildInfo.charset;
816
821
  if (own !== undefined) return own;
817
822
  if (exportType !== "text") return undefined;
818
823
  for (const dep of module.dependencies) {
819
- if (dep instanceof CssImportDependency) {
820
- const depModule = /** @type {NormalModule} */ (
824
+ if (isDependencyKind(dep, "css-import")) {
825
+ const depModule = /** @type {BuiltCssModule} */ (
821
826
  moduleGraph.getModule(dep)
822
827
  );
823
828
  const inherited = this._getEffectiveCharset(
@@ -833,7 +838,7 @@ class CssGenerator extends Generator {
833
838
 
834
839
  /**
835
840
  * Generate JS expressions for `@import` side effects (`style` exportType only).
836
- * @param {NormalModule} module the module to generate CSS text for
841
+ * @param {TModule} module the module to generate CSS text for
837
842
  * @param {GenerateContext} generateContext the generate context
838
843
  * @returns {string[]} JS expressions, one per `@import` dependency
839
844
  */
@@ -842,8 +847,11 @@ class CssGenerator extends Generator {
842
847
  const parts = [];
843
848
 
844
849
  for (const dep of module.dependencies) {
845
- if (!(dep instanceof CssImportDependency)) continue;
846
- const depModule = /** @type {CssModule} */ (moduleGraph.getModule(dep));
850
+ if (!isDependencyKind(dep, "css-import")) continue;
851
+ const depModule = /** @type {CssModule & BuiltCssModule} */ (
852
+ moduleGraph.getModule(dep)
853
+ );
854
+ if (!depModule) continue;
847
855
  if (concatenationScope && concatenationScope.isModuleInScope(depModule)) {
848
856
  continue;
849
857
  }
@@ -863,7 +871,7 @@ class CssGenerator extends Generator {
863
871
 
864
872
  /**
865
873
  * Recursively merge `@import`'d CSS into a single Source (text/css-style-sheet only).
866
- * @param {NormalModule} module the module to render
874
+ * @param {TModule} module the module to render
867
875
  * @param {GenerateContext} generateContext the generate context
868
876
  * @param {Set<NormalModule>} ancestors modules on the current path (cycle guard)
869
877
  * @returns {Source | null} merged CSS source, or null when the module has no content
@@ -877,8 +885,10 @@ class CssGenerator extends Generator {
877
885
  const parts = [];
878
886
 
879
887
  for (const dep of module.dependencies) {
880
- if (!(dep instanceof CssImportDependency)) continue;
881
- const depModule = /** @type {CssModule} */ (moduleGraph.getModule(dep));
888
+ if (!isDependencyKind(dep, "css-import")) continue;
889
+ const depModule = /** @type {CssModule & BuiltCssModule} */ (
890
+ moduleGraph.getModule(dep)
891
+ );
882
892
  if (!depModule) continue;
883
893
  const depExportType = depModule.exportType;
884
894
  if (depExportType !== "text" && depExportType !== "css-style-sheet") {
@@ -905,7 +915,7 @@ class CssGenerator extends Generator {
905
915
 
906
916
  /**
907
917
  * Generate CSS source for the current module
908
- * @param {NormalModule} module the module to generate CSS source for
918
+ * @param {TModule} module the module to generate CSS source for
909
919
  * @param {GenerateContext} generateContext the generate context
910
920
  * @returns {Source | null} the CSS source
911
921
  */
@@ -950,7 +960,7 @@ class CssGenerator extends Generator {
950
960
  const { compilation } = runtimeTemplate;
951
961
  const outputOptions = compilation.outputOptions;
952
962
  const absolutify = makePathsAbsolute.bindContextCache(
953
- /** @type {string} */ (compilation.options.context),
963
+ compilation.options.context,
954
964
  compilation.compiler.root
955
965
  );
956
966
  const options = {
@@ -1006,7 +1016,7 @@ class CssGenerator extends Generator {
1006
1016
  * Offer CSS bound for a JS string literal to `renderEmbeddedSource`. No `.css`
1007
1017
  * asset carries this text, so an asset-level minimizer never sees it.
1008
1018
  * @param {Source} cssSource the CSS source
1009
- * @param {NormalModule} module the module
1019
+ * @param {TModule} module the module
1010
1020
  * @param {GenerateContext} generateContext the generate context
1011
1021
  * @returns {Source} the source a tap returned, or the original
1012
1022
  */
@@ -1070,7 +1080,7 @@ class CssGenerator extends Generator {
1070
1080
  /**
1071
1081
  * Generate the merged CSS text for a module, optionally wrapped as a
1072
1082
  * JS string literal for embedding in JavaScript output.
1073
- * @param {NormalModule} module the module
1083
+ * @param {TModule} module the module
1074
1084
  * @param {GenerateContext} generateContext the generate context
1075
1085
  * @param {boolean} asJsLiteral wrap the result as a JS string literal
1076
1086
  * @returns {Source} the CSS text source
@@ -7,13 +7,13 @@
7
7
 
8
8
  const { SyncWaterfallHook } = require("tapable");
9
9
  /** @import Compilation from "../Compilation" */
10
- const RuntimeGlobals = require("../RuntimeGlobals");
11
- const RuntimeModule = require("../RuntimeModule");
12
- const Template = require("../Template");
10
+ const RuntimeGlobals = require("../runtime/RuntimeGlobals");
11
+ const RuntimeModule = require("../runtime/RuntimeModule");
12
+ const Template = require("../template/Template");
13
13
  const createHooksRegistry = require("../util/createHooksRegistry");
14
14
 
15
- /** @import Chunk from "../Chunk" */
16
- /** @import { ReadOnlyRuntimeRequirements } from "../Module" */
15
+ /** @import Chunk from "../graph/Chunk" */
16
+ /** @import { ReadOnlyRuntimeRequirements } from "../module/Module" */
17
17
 
18
18
  /**
19
19
  * @typedef {object} CssInjectCompilationHooks
@@ -66,31 +66,37 @@ class CssInjectStyleRuntimeModule extends RuntimeModule {
66
66
 
67
67
  const cst = runtimeTemplate.renderConst();
68
68
  const isNeutralPlatform = runtimeTemplate.isNeutralPlatform();
69
- // universal targets run in node too: collect styles for SSR retrieval
70
- // instead of touching a DOM that isn't there
71
- const injectGuard = isNeutralPlatform
72
- ? [
73
- "if (typeof document === 'undefined') {",
74
- Template.indent([
75
- // "module-" keeps numeric module ids from enumerating in ascending
76
- // order instead of the order the styles were applied in
77
- `${runtimeTemplate.cssServerStyleRegistry()}["module-" + identifier] = css;`,
78
- "return;"
79
- ]),
80
- "}"
81
- ]
82
- : [];
83
- const removeGuard = isNeutralPlatform
84
- ? [
85
- "if (typeof document === 'undefined') {",
86
- Template.indent([
87
- `${cst} styles = ${runtimeTemplate.cssServerStyleRegistry()};`,
88
- 'for (var i = 0; i < identifiers.length; i++) delete styles["module-" + identifiers[i]];',
89
- "return;"
90
- ]),
91
- "}"
92
- ]
93
- : [];
69
+ // a node platform has no DOM, so it always collects; the neutral platform has
70
+ // to decide at runtime because the same bundle also runs in a browser
71
+ const withoutDocument =
72
+ !outputOptions.environment.document &&
73
+ compilation.compiler.platform.node === true;
74
+ const collectStyle = [
75
+ // "module-" keeps numeric module ids from enumerating in ascending
76
+ // order instead of the order the styles were applied in
77
+ `${runtimeTemplate.cssServerStyleRegistry()}["module-" + identifier] = css;`,
78
+ "return;"
79
+ ];
80
+ const dropStyles = [
81
+ `${cst} styles = ${runtimeTemplate.cssServerStyleRegistry()};`,
82
+ 'for (var i = 0; i < identifiers.length; i++) delete styles["module-" + identifiers[i]];',
83
+ "return;"
84
+ ];
85
+ /**
86
+ * @param {string[]} body the no-DOM branch
87
+ * @returns {string[]} the branch, guarded when the platform is only maybe DOM-less
88
+ */
89
+ const withoutDocumentGuard = (body) => {
90
+ if (withoutDocument) return body;
91
+ if (!isNeutralPlatform) return [];
92
+ return [
93
+ "if (typeof document === 'undefined') {",
94
+ Template.indent(body),
95
+ "}"
96
+ ];
97
+ };
98
+ const injectGuard = withoutDocumentGuard(collectStyle);
99
+ const removeGuard = withoutDocumentGuard(dropStyles);
94
100
 
95
101
  const createStyleElementCode = Template.asString([
96
102
  `${cst} style = document.createElement('style');`,
@@ -7,16 +7,16 @@
7
7
 
8
8
  const { SyncWaterfallHook } = require("tapable");
9
9
  /** @import Compilation from "../Compilation" */
10
- const RuntimeGlobals = require("../RuntimeGlobals");
11
- const RuntimeModule = require("../RuntimeModule");
12
- const Template = require("../Template");
10
+ const RuntimeGlobals = require("../runtime/RuntimeGlobals");
11
+ const RuntimeModule = require("../runtime/RuntimeModule");
12
+ const Template = require("../template/Template");
13
13
  const compileBooleanMatcher = require("../util/compileBooleanMatcher");
14
14
  const createHooksRegistry = require("../util/createHooksRegistry");
15
15
  const { chunkHasCss } = require("./CssModulesPlugin");
16
16
 
17
- /** @import Chunk, { ChunkId } from "../Chunk" */
18
- /** @import ChunkGraph from "../ChunkGraph" */
19
- /** @import { ReadOnlyRuntimeRequirements } from "../Module" */
17
+ /** @import Chunk, { ChunkId } from "../graph/Chunk" */
18
+ /** @import ChunkGraph from "../graph/ChunkGraph" */
19
+ /** @import { ReadOnlyRuntimeRequirements } from "../module/Module" */
20
20
 
21
21
  const createCompilationHooks = () => ({
22
22
  /**
@@ -65,18 +65,20 @@ class CssLoadingRuntimeModule extends RuntimeModule {
65
65
  _getLoadableChunks() {
66
66
  const chunk = /** @type {Chunk} */ (this.chunk);
67
67
  const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
68
+ const asyncChunks = chunk.getAllAsyncChunks();
68
69
  /** @type {Set<ChunkId>} */
69
70
  const initialChunkIds = new Set();
71
+ // A shared runtime can reach a stylesheet initially through one entry and
72
+ // asynchronously through another, where it still needs to be loaded.
70
73
  for (const c of chunk.getAllInitialChunks()) {
71
- if (chunkHasCss(c, chunkGraph)) {
74
+ if (chunkHasCss(c, chunkGraph) && !asyncChunks.has(c)) {
72
75
  initialChunkIds.add(/** @type {ChunkId} */ (c.id));
73
76
  }
74
77
  }
75
78
  // The predicate the stylesheet is emitted from: an `@import` external gives a
76
79
  // chunk a css asset without a `CSS_TYPE` module, and it still has to load.
77
80
  const conditionMap = chunkGraph.getChunkConditionMap(chunk, chunkHasCss);
78
- // An initial chunk is installed before the handler can run, so it never
79
- // reaches the loading path — with no other one there is nothing to load.
81
+ // With no stylesheets left to request asynchronously, the handler is unused.
80
82
  const loadableConditionMap = { ...conditionMap };
81
83
  for (const id of initialChunkIds) {
82
84
  loadableConditionMap[id] = false;
@@ -169,6 +171,15 @@ class CssLoadingRuntimeModule extends RuntimeModule {
169
171
 
170
172
  const environment = compilation.outputOptions.environment;
171
173
  const isNeutralPlatform = runtimeTemplate.isNeutralPlatform();
174
+ // only a node platform can read the stylesheet from disk; other document-less
175
+ // platforms (`target: "webworker"`) have no `fs`, so they keep the link code
176
+ const withoutDocument =
177
+ !environment.document && compilation.compiler.platform.node === true;
178
+ // Only a build that renders on a server meets a stylesheet it did not
179
+ // create, so every other build keeps the shorter adoption check.
180
+ const withServerRenderedLinks = this._runtimeRequirements.has(
181
+ RuntimeGlobals.hasServerRenderedStylesheets
182
+ );
172
183
  const withPrefetch =
173
184
  this._runtimeRequirements.has(RuntimeGlobals.prefetchChunkHandlers) &&
174
185
  (environment.document || isNeutralPlatform) &&
@@ -238,6 +249,35 @@ class CssLoadingRuntimeModule extends RuntimeModule {
238
249
 
239
250
  const cst = runtimeTemplate.renderConst();
240
251
  const lt = runtimeTemplate.renderLet();
252
+ // Whether an existing link still has rules on the way, and what its timeout
253
+ // then means: only a webpack-created link is an error, never an adopted one.
254
+ const adoptedLinkIsPending = withServerRenderedLinks
255
+ ? 'fetching || (!link.sheet && link.href.indexOf(location.origin + "/") == 0)'
256
+ : "link.getAttribute(loadingAttribute)";
257
+ const timeoutEventType = withServerRenderedLinks
258
+ ? "fetching ? 'timeout' : 'load'"
259
+ : "'timeout'";
260
+ // no DOM: read the emitted CSS via dynamic import('fs') (works on every node),
261
+ // collect it; never reject on a missing file
262
+ const readCssFromDisk =
263
+ withoutDocument || isNeutralPlatform
264
+ ? `Promise.all([import('fs'), import('url')]).then(${runtimeTemplate.basicFunction(
265
+ "[{ readFile }, { URL }]",
266
+ [
267
+ `readFile(${runtimeTemplate.importMetaUrl("url")}, 'utf8', ${runtimeTemplate.basicFunction(
268
+ "err, content",
269
+ [
270
+ `if (!err) ${runtimeTemplate.cssServerStyleRegistry()}["chunk-" + chunkId] = content;`,
271
+ "loadingEnded({ type: 'load' });"
272
+ ]
273
+ )});`
274
+ ]
275
+ // No fs to import, or a url `readFile` rejects on sight (a CDN public
276
+ // path): nothing to collect, which is what a missing file already means.
277
+ )}).catch(${runtimeTemplate.expressionFunction(
278
+ "loadingEnded({ type: 'load' })"
279
+ )});`
280
+ : "";
241
281
  const installedChunksObject = `{\n${Template.indent(
242
282
  Array.from(initialChunkIds, (id) => `${JSON.stringify(id)}: 0`).join(
243
283
  ",\n"
@@ -279,7 +319,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
279
319
  runtimeTemplate.outputOptions.uniqueName
280
320
  )};`
281
321
  : "// data-webpack is not used as build has no uniqueName",
282
- withLoading || withHmr
322
+ (withLoading && !withoutDocument) || withHmr
283
323
  ? Template.asString([
284
324
  `${cst} loadingAttribute = "data-webpack-loading";`,
285
325
  `${cst} loadStylesheet = ${runtimeTemplate.basicFunction(
@@ -324,13 +364,20 @@ class CssLoadingRuntimeModule extends RuntimeModule {
324
364
  "if(prev) return prev(event);"
325
365
  ])
326
366
  )};`,
327
- "if(link.getAttribute(loadingAttribute)) {",
367
+ ...(withServerRenderedLinks
368
+ ? [`${cst} fetching = link.getAttribute(loadingAttribute);`]
369
+ : []),
370
+ // An adopted stylesheet without a `sheet` has not applied yet, so a streamed
371
+ // server render no longer resolves before its rules are in.
372
+ `if(${adoptedLinkIsPending}) {`,
328
373
  Template.indent([
329
- `timeout = setTimeout(onLinkComplete.bind(null, undefined, { type: 'timeout', target: link }), ${loadTimeout});`,
374
+ // An adopted link that already failed replays no event, so its timeout
375
+ // resolves as a load: webpack did not create it and must not remove it.
376
+ `timeout = setTimeout(onLinkComplete.bind(null, undefined, { type: ${timeoutEventType}, target: link }), ${loadTimeout});`,
330
377
  "link.onerror = onLinkComplete.bind(null, link.onerror);",
331
378
  "link.onload = onLinkComplete.bind(null, link.onload);"
332
379
  ]),
333
- "} else onLinkComplete(undefined, { type: 'load', target: link });", // We assume any existing stylesheet is render blocking
380
+ "} else onLinkComplete(undefined, { type: 'load', target: link });", // a cross-origin sheet never exposes `sheet`, so it keeps the render-blocking assumption
334
381
  withHmr && withFetchPriority
335
382
  ? 'if (hmr && hmr.getAttribute("fetchpriority")) link.setAttribute("fetchpriority", hmr.getAttribute("fetchpriority"));'
336
383
  : "",
@@ -419,39 +466,25 @@ class CssLoadingRuntimeModule extends RuntimeModule {
419
466
  "}"
420
467
  ]
421
468
  )};`,
422
- isNeutralPlatform
423
- ? "if (typeof document !== 'undefined') {"
424
- : "",
425
- Template.indent([
426
- `loadStylesheet(chunkId, url, loadingEnded${
427
- withFetchPriority ? ", fetchPriority" : ""
428
- });`
429
- ]),
430
- isNeutralPlatform
431
- ? Template.asString([
432
- "} else {",
469
+ withoutDocument
470
+ ? readCssFromDisk
471
+ : Template.asString([
472
+ isNeutralPlatform
473
+ ? "if (typeof document !== 'undefined') {"
474
+ : "",
433
475
  Template.indent([
434
- // no DOM (Node SSR): read the emitted CSS via dynamic import('fs') (works on every node), collect it; never reject on a missing file
435
- `Promise.all([import('fs'), import('url')]).then(${runtimeTemplate.basicFunction(
436
- "[{ readFile }, { URL }]",
437
- [
438
- `readFile(${runtimeTemplate.importMetaUrl("url")}, 'utf8', ${runtimeTemplate.basicFunction(
439
- "err, content",
440
- [
441
- `if (!err) ${runtimeTemplate.cssServerStyleRegistry()}["chunk-" + chunkId] = content;`,
442
- "loadingEnded({ type: 'load' });"
443
- ]
444
- )});`
445
- ]
446
- // No fs to import, or a url `readFile` rejects on sight (a CDN public
447
- // path): nothing to collect, which is what a missing file already means.
448
- )}).catch(${runtimeTemplate.expressionFunction(
449
- "loadingEnded({ type: 'load' })"
450
- )});`
476
+ `loadStylesheet(chunkId, url, loadingEnded${
477
+ withFetchPriority ? ", fetchPriority" : ""
478
+ });`
451
479
  ]),
452
- "}"
480
+ isNeutralPlatform
481
+ ? Template.asString([
482
+ "} else {",
483
+ Template.indent([readCssFromDisk]),
484
+ "}"
485
+ ])
486
+ : ""
453
487
  ])
454
- : ""
455
488
  ]),
456
489
  "} else installedChunks[chunkId] = 0;"
457
490
  ]),
@@ -598,7 +631,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
598
631
  }.css = ${runtimeTemplate.basicFunction(
599
632
  "chunkIds, removedChunks, removedModules, promises, applyHandlers, updatedModulesList, css",
600
633
  [
601
- isNeutralPlatform
634
+ isNeutralPlatform || withoutDocument
602
635
  ? Template.asString([
603
636
  "if (typeof document === 'undefined') {",
604
637
  Template.indent([