webpack 5.109.1 → 5.110.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 (639) hide show
  1. package/README.md +6 -0
  2. package/lib/APIPlugin.js +123 -17
  3. package/lib/AsyncDependenciesBlock.js +10 -7
  4. package/lib/AutomaticPrefetchPlugin.js +1 -1
  5. package/lib/BannerPlugin.js +10 -6
  6. package/lib/CacheFacade.js +6 -6
  7. package/lib/Chunk.js +14 -11
  8. package/lib/ChunkGraph.js +26 -17
  9. package/lib/ChunkGroup.js +7 -7
  10. package/lib/ChunkTemplate.js +35 -44
  11. package/lib/CircularModulesPlugin.js +205 -28
  12. package/lib/CleanPlugin.js +15 -16
  13. package/lib/CodeGenerationResults.js +11 -8
  14. package/lib/CompatibilityPlugin.js +7 -7
  15. package/lib/Compilation.js +700 -412
  16. package/lib/Compiler.js +69 -42
  17. package/lib/ConcatenationScope.js +117 -8
  18. package/lib/ConditionalInitFragment.js +3 -3
  19. package/lib/ConstPlugin.js +13 -11
  20. package/lib/ContextExclusionPlugin.js +1 -1
  21. package/lib/ContextModule.js +146 -54
  22. package/lib/ContextModuleFactory.js +46 -14
  23. package/lib/ContextReplacementPlugin.js +12 -14
  24. package/lib/DefinePlugin.js +131 -46
  25. package/lib/DependenciesBlock.js +9 -6
  26. package/lib/Dependency.js +36 -16
  27. package/lib/DependencyTemplate.js +11 -12
  28. package/lib/DependencyTemplates.js +3 -3
  29. package/lib/DotenvPlugin.js +50 -13
  30. package/lib/DynamicEntryPlugin.js +8 -4
  31. package/lib/EntryOptionPlugin.js +8 -4
  32. package/lib/EntryPlugin.js +2 -2
  33. package/lib/Entrypoint.js +6 -2
  34. package/lib/EnvironmentPlugin.js +2 -2
  35. package/lib/EvalDevToolModulePlugin.js +8 -4
  36. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  37. package/lib/ExportsInfo.js +101 -14
  38. package/lib/ExportsInfoApiPlugin.js +2 -4
  39. package/lib/ExternalModule.js +242 -84
  40. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  41. package/lib/ExternalsPlugin.js +10 -6
  42. package/lib/FileSystemInfo.js +27 -68
  43. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  44. package/lib/FlagDependencyExportsPlugin.js +76 -19
  45. package/lib/FlagDependencyUsagePlugin.js +32 -47
  46. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  47. package/lib/Generator.js +19 -15
  48. package/lib/HotModuleReplacementPlugin.js +16 -44
  49. package/lib/IgnorePlugin.js +8 -4
  50. package/lib/IgnoreWarningsPlugin.js +2 -2
  51. package/lib/InitFragment.js +8 -4
  52. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  53. package/lib/LazyBarrel.js +3 -4
  54. package/lib/LibraryTemplatePlugin.js +10 -6
  55. package/lib/LoaderOptionsPlugin.js +7 -3
  56. package/lib/LoaderTargetPlugin.js +1 -1
  57. package/lib/MainTemplate.js +49 -42
  58. package/lib/ManifestPlugin.js +12 -11
  59. package/lib/Module.js +62 -33
  60. package/lib/ModuleFactory.js +3 -3
  61. package/lib/ModuleFilenameHelpers.js +22 -6
  62. package/lib/ModuleGraph.js +195 -21
  63. package/lib/ModuleGraphConnection.js +6 -13
  64. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  65. package/lib/ModuleTemplate.js +62 -63
  66. package/lib/MultiCompiler.js +130 -64
  67. package/lib/MultiStats.js +40 -9
  68. package/lib/MultiWatching.js +3 -3
  69. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  70. package/lib/NodeStuffPlugin.js +29 -19
  71. package/lib/NormalModule.js +212 -153
  72. package/lib/NormalModuleFactory.js +563 -112
  73. package/lib/NormalModuleReplacementPlugin.js +5 -8
  74. package/lib/NullFactory.js +6 -2
  75. package/lib/OptionsApply.js +7 -3
  76. package/lib/Parser.js +7 -3
  77. package/lib/PlatformPlugin.js +2 -2
  78. package/lib/PrefetchPlugin.js +1 -1
  79. package/lib/ProgressPlugin.js +16 -13
  80. package/lib/ProvidePlugin.js +3 -5
  81. package/lib/RawModule.js +25 -17
  82. package/lib/RecordIdsPlugin.js +3 -3
  83. package/lib/RequestShortener.js +1 -1
  84. package/lib/ResolverFactory.js +2 -2
  85. package/lib/RuntimeGlobals.js +22 -10
  86. package/lib/RuntimeModule.js +29 -19
  87. package/lib/RuntimePlugin.js +332 -169
  88. package/lib/RuntimeTemplate.js +2792 -352
  89. package/lib/SelfModuleFactory.js +7 -3
  90. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  91. package/lib/SourceMapDevToolPlugin.js +30 -20
  92. package/lib/Stats.js +3 -4
  93. package/lib/Template.js +32 -22
  94. package/lib/TemplatedPathPlugin.js +96 -14
  95. package/lib/UseStrictPlugin.js +4 -6
  96. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  97. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  98. package/lib/WarnNoModeSetPlugin.js +1 -1
  99. package/lib/WatchIgnorePlugin.js +8 -6
  100. package/lib/Watching.js +8 -8
  101. package/lib/WebpackIsIncludedPlugin.js +2 -4
  102. package/lib/WebpackOptionsApply.js +308 -18
  103. package/lib/WebpackOptionsDefaulter.js +6 -2
  104. package/lib/asset/AssetBytesGenerator.js +11 -7
  105. package/lib/asset/AssetBytesParser.js +2 -4
  106. package/lib/asset/AssetGenerator.js +187 -92
  107. package/lib/asset/AssetModule.js +7 -3
  108. package/lib/asset/AssetModulesPlugin.js +110 -38
  109. package/lib/asset/AssetParser.js +9 -7
  110. package/lib/asset/AssetSourceGenerator.js +59 -10
  111. package/lib/asset/AssetSourceParser.js +2 -4
  112. package/lib/asset/RawDataUrlModule.js +24 -16
  113. package/lib/asset/WebManifestGenerator.js +8 -10
  114. package/lib/asset/WebManifestParser.js +24 -10
  115. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  116. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  117. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  118. package/lib/async-modules/isGeneratorLowered.js +4 -4
  119. package/lib/buildChunkGraph.js +36 -27
  120. package/lib/bun/BunTargetPlugin.js +1 -1
  121. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  122. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  123. package/lib/cache/IdleFileCachePlugin.js +2 -2
  124. package/lib/cache/MemoryCachePlugin.js +18 -10
  125. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  126. package/lib/cache/PackFileCacheStrategy.js +289 -28
  127. package/lib/cache/ResolverCachePlugin.js +38 -18
  128. package/lib/cache/getLazyHashedEtag.js +1 -2
  129. package/lib/cache/mergeEtags.js +1 -1
  130. package/lib/cli.js +1 -3
  131. package/lib/config/browserslistTargetHandler.js +41 -5
  132. package/lib/config/defaults.js +276 -81
  133. package/lib/config/defineConfig.js +10 -2
  134. package/lib/config/getClaimedAssetTypes.js +65 -0
  135. package/lib/config/normalization.js +36 -16
  136. package/lib/config/target.js +46 -3
  137. package/lib/container/ContainerEntryDependency.js +1 -1
  138. package/lib/container/ContainerEntryModule.js +24 -15
  139. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  140. package/lib/container/ContainerPlugin.js +9 -10
  141. package/lib/container/ContainerReferencePlugin.js +6 -2
  142. package/lib/container/FallbackDependency.js +1 -1
  143. package/lib/container/FallbackModule.js +24 -17
  144. package/lib/container/FallbackModuleFactory.js +7 -3
  145. package/lib/container/HoistContainerReferencesPlugin.js +6 -11
  146. package/lib/container/ModuleFederationPlugin.js +7 -18
  147. package/lib/container/RemoteModule.js +27 -19
  148. package/lib/container/RemoteRuntimeModule.js +10 -8
  149. package/lib/container/moduleFederationHooks.js +32 -0
  150. package/lib/css/CssGenerator.js +177 -41
  151. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  152. package/lib/css/CssLoadingRuntimeModule.js +82 -36
  153. package/lib/css/CssModule.js +10 -7
  154. package/lib/css/CssModulesPlugin.js +197 -106
  155. package/lib/css/CssParser.js +1113 -568
  156. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  157. package/lib/css/cssMinify.js +168 -0
  158. package/lib/css/data.js +5324 -0
  159. package/lib/css/syntax.js +9579 -232
  160. package/lib/debug/ProfilingPlugin.js +14 -9
  161. package/lib/deno/DenoTargetPlugin.js +1 -1
  162. package/lib/dependencies/AMDDefineDependency.js +112 -87
  163. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  164. package/lib/dependencies/AMDPlugin.js +9 -7
  165. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  166. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  167. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  168. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  169. package/lib/dependencies/AMDRequireDependency.js +8 -7
  170. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  171. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  172. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  173. package/lib/dependencies/CachedConstDependency.js +11 -8
  174. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  175. package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
  176. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  177. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  178. package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
  179. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
  180. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  181. package/lib/dependencies/CommonJsPlugin.js +35 -6
  182. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  183. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  184. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  185. package/lib/dependencies/ConstDependency.js +8 -9
  186. package/lib/dependencies/ContextDependency.js +12 -8
  187. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  188. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  189. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  190. package/lib/dependencies/ContextElementDependency.js +31 -12
  191. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  192. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  193. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  194. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  195. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  196. package/lib/dependencies/CssImportDependency.js +18 -9
  197. package/lib/dependencies/CssUrlDependency.js +17 -13
  198. package/lib/dependencies/DllEntryDependency.js +1 -1
  199. package/lib/dependencies/DynamicExports.js +2 -2
  200. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  201. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  202. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  203. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  204. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  205. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  206. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  207. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  208. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +13 -10
  209. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  210. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  211. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  212. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -63
  213. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  214. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  215. package/lib/dependencies/HarmonyExports.js +7 -4
  216. package/lib/dependencies/HarmonyImportDependency.js +27 -19
  217. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  218. package/lib/dependencies/HarmonyImportGuard.js +21 -30
  219. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  220. package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
  221. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  222. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  223. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  224. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  225. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  226. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  227. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  228. package/lib/dependencies/ImportContextDependency.js +2 -2
  229. package/lib/dependencies/ImportDependency.js +24 -20
  230. package/lib/dependencies/ImportEagerDependency.js +6 -9
  231. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  232. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  233. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  234. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  235. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  236. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  237. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  238. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  239. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  240. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  241. package/lib/dependencies/ImportParserPlugin.js +49 -35
  242. package/lib/dependencies/ImportPhase.js +12 -5
  243. package/lib/dependencies/ImportPlugin.js +7 -3
  244. package/lib/dependencies/ImportWeakDependency.js +6 -9
  245. package/lib/dependencies/JsonExportsDependency.js +11 -7
  246. package/lib/dependencies/LoaderDependency.js +2 -2
  247. package/lib/dependencies/LoaderImportDependency.js +2 -2
  248. package/lib/dependencies/LoaderPlugin.js +11 -7
  249. package/lib/dependencies/LocalModuleDependency.js +5 -5
  250. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  251. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  252. package/lib/dependencies/ModuleDependency.js +9 -6
  253. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  254. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  255. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  256. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  257. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  258. package/lib/dependencies/NullDependency.js +3 -3
  259. package/lib/dependencies/ProvidedDependency.js +14 -10
  260. package/lib/dependencies/PureExpressionDependency.js +9 -10
  261. package/lib/dependencies/RequireContextDependency.js +2 -2
  262. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  263. package/lib/dependencies/RequireContextPlugin.js +8 -4
  264. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  265. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  266. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  267. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  268. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  269. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  270. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  271. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  272. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  273. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  274. package/lib/dependencies/RequireResolveDependency.js +4 -4
  275. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  276. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  277. package/lib/dependencies/StaticExportsDependency.js +2 -2
  278. package/lib/dependencies/SystemPlugin.js +10 -6
  279. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  280. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  281. package/lib/dependencies/URLContextDependency.js +2 -2
  282. package/lib/dependencies/URLDependency.js +110 -64
  283. package/lib/dependencies/URLPlugin.js +7 -3
  284. package/lib/dependencies/UnsupportedDependency.js +4 -4
  285. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  286. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  287. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  288. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  289. package/lib/dependencies/WorkerDependency.js +28 -22
  290. package/lib/dependencies/WorkletDependency.js +15 -14
  291. package/lib/dependencies/getFunctionExpression.js +8 -4
  292. package/lib/dependencies/processExportInfo.js +5 -5
  293. package/lib/dll/DelegatedModule.js +34 -22
  294. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  295. package/lib/dll/DelegatedPlugin.js +2 -2
  296. package/lib/dll/DllEntryPlugin.js +2 -2
  297. package/lib/dll/DllModule.js +22 -15
  298. package/lib/dll/DllModuleFactory.js +7 -3
  299. package/lib/dll/DllPlugin.js +7 -5
  300. package/lib/dll/DllReferencePlugin.js +10 -7
  301. package/lib/dll/LibManifestPlugin.js +5 -5
  302. package/lib/electron/ElectronTargetPlugin.js +53 -49
  303. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  304. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  305. package/lib/errors/BroadContextsWarning.js +43 -0
  306. package/lib/errors/BuildCycleError.js +1 -1
  307. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  308. package/lib/errors/ChunkRenderError.js +1 -1
  309. package/lib/errors/CircularDependenciesWarning.js +38 -0
  310. package/lib/errors/CodeGenerationError.js +1 -1
  311. package/lib/errors/CommentCompilationWarning.js +1 -1
  312. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  313. package/lib/errors/DuplicateModulesWarning.js +45 -0
  314. package/lib/errors/DynamicExportsWarning.js +30 -0
  315. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  316. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  317. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  318. package/lib/errors/EvalUsageWarning.js +28 -0
  319. package/lib/errors/HookWebpackError.js +5 -5
  320. package/lib/errors/HotspotsWarning.js +57 -0
  321. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  322. package/lib/errors/InlinedAssetsWarning.js +36 -0
  323. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  324. package/lib/errors/LargeModulesWarning.js +45 -0
  325. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  326. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  327. package/lib/errors/MixedExportsWarning.js +41 -0
  328. package/lib/errors/ModuleDependencyError.js +13 -16
  329. package/lib/errors/ModuleDependencyWarning.js +5 -15
  330. package/lib/errors/ModuleHashingError.js +1 -1
  331. package/lib/errors/ModuleNotFoundError.js +2 -2
  332. package/lib/errors/ModuleParseError.js +1 -2
  333. package/lib/errors/ModuleRestoreError.js +1 -1
  334. package/lib/errors/ModuleStoreError.js +1 -1
  335. package/lib/errors/NodeStuffInWebError.js +1 -1
  336. package/lib/errors/OsDependentRuleWarning.js +31 -0
  337. package/lib/errors/PureAnnotationsWarning.js +36 -0
  338. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  339. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  340. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  341. package/lib/errors/TinyChunksWarning.js +40 -0
  342. package/lib/errors/TopLevelThisWarning.js +34 -0
  343. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  344. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  345. package/lib/errors/UnusedAliasesWarning.js +29 -0
  346. package/lib/errors/UnusedDefinesWarning.js +29 -0
  347. package/lib/errors/UnusedExternalsWarning.js +29 -0
  348. package/lib/errors/UnusedReexportsWarning.js +42 -0
  349. package/lib/errors/UnusedRuleWarning.js +29 -0
  350. package/lib/errors/WebpackError.js +9 -5
  351. package/lib/errors/deriveStackFromNestedError.js +90 -0
  352. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  353. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  354. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  355. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
  356. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  357. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  358. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  359. package/lib/hmr/lazyCompilationBackend.js +9 -6
  360. package/lib/hmr/parserHooks.js +56 -0
  361. package/lib/html/HtmlGenerator.js +276 -76
  362. package/lib/html/HtmlModule.js +7 -3
  363. package/lib/html/HtmlModulesPlugin.js +312 -174
  364. package/lib/html/HtmlParser.js +31 -86
  365. package/lib/html/data.js +1928 -0
  366. package/lib/html/htmlMinify.js +288 -0
  367. package/lib/html/syntax.js +5557 -1155
  368. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  369. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  370. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  371. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  372. package/lib/ids/IdHelpers.js +7 -8
  373. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  374. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  375. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  376. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  377. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  378. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  379. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  380. package/lib/index.js +10 -0
  381. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  382. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  383. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  384. package/lib/javascript/ChunkHelpers.js +1 -1
  385. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  386. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  387. package/lib/javascript/JavascriptGenerator.js +64 -164
  388. package/lib/javascript/JavascriptModule.js +9 -3
  389. package/lib/javascript/JavascriptModulesPlugin.js +181 -162
  390. package/lib/javascript/JavascriptParser.js +286 -110
  391. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  392. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  393. package/lib/javascript/StartupHelpers.js +55 -9
  394. package/lib/javascript/syntax.js +2678 -232
  395. package/lib/json/JsonData.js +8 -4
  396. package/lib/json/JsonGenerator.js +37 -15
  397. package/lib/json/JsonModule.js +7 -3
  398. package/lib/json/JsonModulesPlugin.js +1 -1
  399. package/lib/json/JsonParser.js +5 -6
  400. package/lib/library/AbstractLibraryPlugin.js +20 -14
  401. package/lib/library/AmdLibraryPlugin.js +11 -7
  402. package/lib/library/AssignLibraryPlugin.js +19 -13
  403. package/lib/library/EnableLibraryPlugin.js +2 -2
  404. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  405. package/lib/library/JsonpLibraryPlugin.js +11 -7
  406. package/lib/library/ModuleLibraryPlugin.js +256 -64
  407. package/lib/library/SystemLibraryPlugin.js +12 -8
  408. package/lib/library/UmdLibraryPlugin.js +62 -25
  409. package/lib/loaders/LoaderRunner.js +14 -1
  410. package/lib/loaders/loadLoader.js +8 -4
  411. package/lib/logging/createConsoleLogger.js +7 -4
  412. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  413. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  414. package/lib/node/NodeSourcePlugin.js +1 -1
  415. package/lib/node/NodeTargetPlugin.js +4 -3
  416. package/lib/node/NodeTemplatePlugin.js +1 -1
  417. package/lib/node/NodeWatchFileSystem.js +70 -9
  418. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  419. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +72 -19
  420. package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
  421. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  422. package/lib/node/nodeConsole.js +7 -3
  423. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  424. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  425. package/lib/optimize/ConcatenatedModule.js +985 -470
  426. package/lib/optimize/ConstExportsPlugin.js +11 -7
  427. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  428. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  429. package/lib/optimize/InlineExports.js +9 -5
  430. package/lib/optimize/InnerGraph.js +28 -12
  431. package/lib/optimize/InnerGraphPlugin.js +23 -18
  432. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  433. package/lib/optimize/MangleExportsPlugin.js +7 -8
  434. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  435. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  436. package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
  437. package/lib/optimize/RealContentHashPlugin.js +20 -13
  438. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  439. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  440. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  441. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  442. package/lib/optimize/SplitChunksPlugin.js +86 -24
  443. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  444. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  445. package/lib/performance/BroadContextsPlugin.js +142 -0
  446. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  447. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  448. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  449. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  450. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  451. package/lib/performance/DynamicExportsPlugin.js +120 -0
  452. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  453. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  454. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  455. package/lib/performance/EvalUsagePlugin.js +115 -0
  456. package/lib/performance/HotspotsPlugin.js +296 -0
  457. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  458. package/lib/performance/LargeModulesPlugin.js +126 -0
  459. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  460. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  461. package/lib/performance/MixedExportsPlugin.js +136 -0
  462. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  463. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  464. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  465. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  466. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  467. package/lib/performance/SizeLimitsPlugin.js +139 -7
  468. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  469. package/lib/performance/TinyChunksPlugin.js +128 -0
  470. package/lib/performance/TopLevelThisPlugin.js +208 -0
  471. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  472. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  473. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  474. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  475. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  476. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  477. package/lib/performance/getModuleSize.js +22 -0
  478. package/lib/performance/getSourceModules.js +22 -0
  479. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  480. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  481. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  482. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  483. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  484. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  485. package/lib/prefetch/ResourceHintPlugin.js +295 -78
  486. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  487. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  488. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  489. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  490. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  491. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  492. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  493. package/lib/rules/RuleSetCompiler.js +146 -12
  494. package/lib/rules/UseEffectRulePlugin.js +18 -11
  495. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  496. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  497. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  498. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  499. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  500. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  501. package/lib/runtime/CompatRuntimeModule.js +5 -3
  502. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  503. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  504. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  505. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  506. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  507. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  508. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  509. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  510. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  511. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  512. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  513. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  514. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  515. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  516. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  517. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  518. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  519. package/lib/runtime/NonceRuntimeModule.js +10 -0
  520. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  521. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  522. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  523. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  524. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  525. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  526. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  527. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  528. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  529. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  530. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  531. package/lib/runtime/baseUri.js +63 -0
  532. package/lib/schemes/DataUriPlugin.js +1 -1
  533. package/lib/schemes/FileUriPlugin.js +1 -1
  534. package/lib/schemes/HttpUriPlugin.js +24 -15
  535. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  536. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  537. package/lib/serialization/BinaryMiddleware.js +4 -4
  538. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  539. package/lib/serialization/FileMiddleware.js +305 -66
  540. package/lib/serialization/ObjectMiddleware.js +11 -6
  541. package/lib/serialization/PlainObjectSerializer.js +19 -16
  542. package/lib/sharing/ConsumeSharedModule.js +30 -21
  543. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  544. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  545. package/lib/sharing/ProvideSharedModule.js +25 -16
  546. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  547. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  548. package/lib/sharing/SharePlugin.js +17 -5
  549. package/lib/sharing/ShareRuntimeModule.js +4 -4
  550. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  551. package/lib/sharing/utils.js +1 -3
  552. package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
  553. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  554. package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
  555. package/lib/stats/StatsFactory.js +25 -26
  556. package/lib/stats/StatsPrinter.js +16 -12
  557. package/lib/typescript/TypeScriptPlugin.js +12 -14
  558. package/lib/url/URLParserPlugin.js +26 -13
  559. package/lib/util/AsyncQueue.js +4 -3
  560. package/lib/util/Hash.js +5 -1
  561. package/lib/util/LazySet.js +35 -22
  562. package/lib/util/LocConverter.js +36 -13
  563. package/lib/util/SourceProcessor.js +1050 -24
  564. package/lib/util/StringXor.js +1 -1
  565. package/lib/util/chainedImports.js +9 -5
  566. package/lib/util/cleverMerge.js +1 -1
  567. package/lib/util/comparators.js +45 -14
  568. package/lib/util/concatenate.js +203 -77
  569. package/lib/util/conventions.js +5 -1
  570. package/lib/util/createHash.js +2 -2
  571. package/lib/util/createHooksRegistry.js +8 -10
  572. package/lib/util/dataURL.js +225 -1
  573. package/lib/util/extractSourceMap.js +4 -3
  574. package/lib/util/findCaseMismatch.js +139 -0
  575. package/lib/util/formatLocation.js +1 -2
  576. package/lib/util/fs.js +22 -5
  577. package/lib/util/globUtils.js +298 -24
  578. package/lib/util/hash/BatchedHash.js +5 -1
  579. package/lib/util/hash/BulkUpdateHash.js +5 -1
  580. package/lib/util/hash/DebugHash.js +5 -1
  581. package/lib/util/hash/hash-digest.js +6 -2
  582. package/lib/util/identifier.js +25 -1
  583. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  584. package/lib/util/internalSerializables.js +6 -0
  585. package/lib/util/lazyModule.js +56 -0
  586. package/lib/util/makeSerializable.js +7 -3
  587. package/lib/util/matchAlias.js +25 -0
  588. package/lib/util/mimeTypes.js +11 -5
  589. package/lib/util/nonNumericOnlyHash.js +4 -3
  590. package/lib/util/parseJson.js +5 -3
  591. package/lib/util/preloadModuleType.js +32 -0
  592. package/lib/util/registerExternalSerializer.js +7 -5
  593. package/lib/util/runtime.js +2 -2
  594. package/lib/util/semver.js +1 -1
  595. package/lib/util/serialization.js +28 -28
  596. package/lib/util/source.js +2 -2
  597. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  598. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  599. package/lib/wasm/wasmModuleFilename.js +54 -0
  600. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  601. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  602. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  603. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  604. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +54 -16
  605. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  606. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  607. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  608. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  609. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  610. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  611. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  612. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  613. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -6
  614. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  615. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  616. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  617. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  618. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  619. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  620. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  621. package/lib/web/JsonpTemplatePlugin.js +2 -2
  622. package/lib/webpack.js +22 -11
  623. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  624. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  625. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  626. package/module.d.ts +1 -0
  627. package/package.json +23 -16
  628. package/schemas/WebpackOptions.check.js +1 -1
  629. package/schemas/WebpackOptions.json +780 -91
  630. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  631. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  632. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  633. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  634. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  635. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  636. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  637. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  638. package/types.d.ts +4010 -739
  639. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -15,6 +15,7 @@ const {
15
15
  const { UsageState } = require("../ExportsInfo");
16
16
  const Generator = require("../Generator");
17
17
  const InitFragment = require("../InitFragment");
18
+ const ModuleFilenameHelpers = require("../ModuleFilenameHelpers");
18
19
  const {
19
20
  CSS_TEXT_TYPE,
20
21
  CSS_TEXT_TYPES,
@@ -33,49 +34,60 @@ const CssImportDependency = require("../dependencies/CssImportDependency");
33
34
  const HarmonyImportSideEffectDependency = require("../dependencies/HarmonyImportSideEffectDependency");
34
35
 
35
36
  const { encodeMappings } = require("../util/createMappings");
36
- const memoize = require("../util/memoize");
37
+ const {
38
+ contextifySourceUrl,
39
+ makePathsAbsolute
40
+ } = require("../util/identifier");
41
+ const PropertyName = require("../util/property");
37
42
  const {
38
43
  PUBLIC_PATH_FULL_HASH,
39
44
  walkFullHashPlaceholders
40
45
  } = require("../util/publicPathPlaceholder");
46
+ const CssModulesPlugin = require("./CssModulesPlugin");
41
47
 
42
48
  // Avoids `type.split("/")[0]` allocation on the `getTypes` hot path.
43
49
  const CSS_TYPE_PREFIX = `${CSS_TYPE}/`;
44
50
 
45
- /** @typedef {import("webpack-sources").Source} Source */
46
- /** @typedef {import("../../declarations/WebpackOptions").CssModuleGeneratorOptions} CssModuleGeneratorOptions */
47
- /** @typedef {import("../Compilation").DependencyConstructor} DependencyConstructor */
48
- /** @typedef {import("../CodeGenerationResults")} CodeGenerationResults */
49
- /** @typedef {import("../Dependency")} Dependency */
50
- /** @typedef {import("../DependencyTemplate").CssData} CssData */
51
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
52
- /** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} CssDependencyTemplateContext */
53
- /** @typedef {import("../Generator").GenerateContext} GenerateContext */
54
- /** @typedef {import("../Generator").UpdateHashContext} UpdateHashContext */
55
- /** @typedef {import("../Module").BuildInfo} BuildInfo */
56
- /** @typedef {import("../Module").BuildMeta} BuildMeta */
57
- /** @typedef {import("../Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
58
- /** @typedef {import("../Module").SourceType} SourceType */
59
- /** @typedef {import("../Module").SourceTypes} SourceTypes */
60
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
61
- /** @typedef {import("../NormalModule")} NormalModule */
62
- /** @typedef {import("../util/Hash")} Hash */
63
- /** @typedef {import("./CssModulesPlugin").ModuleFactoryCacheEntry} ModuleFactoryCacheEntry */
64
- /** @typedef {import("./CssModule")} CssModule */
65
- /** @typedef {import("./CssModule").CssModuleBuildInfo} CssModuleBuildInfo */
66
- /** @typedef {import("./CssModule").CssModuleBuildMeta} CssModuleBuildMeta */
67
- /** @typedef {import("../Compilation")} Compilation */
68
- /** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
69
- /** @typedef {import("../../declarations/WebpackOptions").CssParserExportType} CssParserExportType */
51
+ const URL_SCHEME_REGEXP = /^(?:data|https?):/;
52
+
53
+ /** @import { Source, RawSourceMap } from "webpack-sources" */
54
+ /**
55
+ * @import {
56
+ * CssModuleGeneratorOptions
57
+ * } from "../../declarations/WebpackOptions"
58
+ */
59
+ /** @import { DependencyConstructor } from "../Compilation" */
60
+ /** @import CodeGenerationResults from "../CodeGenerationResults" */
61
+ /** @import Dependency from "../Dependency" */
62
+ /**
63
+ * @import {
64
+ * CssData,
65
+ * DependencyTemplateContext,
66
+ * CssDependencyTemplateContext
67
+ * } from "../DependencyTemplate"
68
+ */
69
+ /** @import { GenerateContext, UpdateHashContext } from "../Generator" */
70
+ /**
71
+ * @import {
72
+ * ConcatenationBailoutReasonContext,
73
+ * SourceType,
74
+ * SourceTypes
75
+ * } from "../Module"
76
+ */
77
+ /** @import ModuleGraph from "../ModuleGraph" */
78
+ /** @import NormalModule from "../NormalModule" */
79
+ /** @import Hash from "../util/Hash" */
80
+ /** @import { ModuleFactoryCacheEntry } from "./CssModulesPlugin" */
81
+ /**
82
+ * @import CssModule, {
83
+ * CssModuleBuildInfo,
84
+ * CssModuleBuildMeta
85
+ * } from "./CssModule"
86
+ */
70
87
 
71
88
  /** @typedef {{ line: number, column: number }} SourcePosition */
72
89
  /** @typedef {Map<string, SourcePosition>} ExportLocsMap */
73
90
 
74
- const getPropertyName = memoize(() => require("../util/property"));
75
- const getCssModulesPlugin = memoize(() => require("./CssModulesPlugin"));
76
-
77
- /** @typedef {import("webpack-sources").RawSourceMap} RawSourceMap */
78
-
79
91
  /**
80
92
  * Build a v3 source map mapping CSS-class export lines back to their selector positions.
81
93
  * @param {string} generatedJs the generated JS string
@@ -303,8 +315,13 @@ class CssGenerator extends Generator {
303
315
  const generateContentCode = () => {
304
316
  switch (exportType) {
305
317
  case "style": {
306
- const cssSource = this._renderCss(module, generateContext);
307
- if (!cssSource) return "";
318
+ const rendered = this._renderCss(module, generateContext);
319
+ if (!rendered) return "";
320
+ const cssSource = this._renderEmbeddedSource(
321
+ rendered,
322
+ module,
323
+ generateContext
324
+ );
308
325
 
309
326
  generateContext.runtimeRequirements.add(
310
327
  RuntimeGlobals.cssInjectStyle
@@ -420,7 +437,7 @@ class CssGenerator extends Generator {
420
437
  const source = new ConcatSource();
421
438
  /** @type {Set<string>} */
422
439
  const usedIdentifiers = new Set();
423
- const { RESERVED_IDENTIFIER } = getPropertyName();
440
+ const { RESERVED_IDENTIFIER } = PropertyName;
424
441
 
425
442
  if (defaultExport) {
426
443
  const usedName = getUsedExportName("default");
@@ -549,8 +566,13 @@ class CssGenerator extends Generator {
549
566
  }
550
567
 
551
568
  const generatedJs = /** @type {string} */ (source.source());
552
- const sourceName = module.readableIdentifier(
553
- compilation.requestShortener
569
+ // Context-relative identifier, like `NormalModule.createSource` — so
570
+ // `SourceMapDevToolPlugin` can match the module and apply the
571
+ // devtool filename template instead of leaking this raw name
572
+ const sourceName = contextifySourceUrl(
573
+ /** @type {string} */ (compilation.options.context),
574
+ module.identifier(),
575
+ compilation.compiler.root
554
576
  );
555
577
 
556
578
  if (
@@ -734,9 +756,27 @@ class CssGenerator extends Generator {
734
756
  * @param {Hash} hash hash that will be modified
735
757
  * @param {UpdateHashContext} updateHashContext context for updating hash
736
758
  */
737
- updateHash(hash, { module }) {
759
+ updateHash(hash, { module, runtimeTemplate }) {
738
760
  hash.update(/** @type {boolean} */ (this._esModule).toString());
739
761
  hash.update(/** @type {boolean} */ (this._exportsOnly).toString());
762
+ // Only a module embedded in JS gets an inlined map, which varies on devtool
763
+ // and its filename options without changing the source. `String`: templates
764
+ // may be functions.
765
+ const exportType = /** @type {CssModule} */ (module).exportType || "link";
766
+ if (runtimeTemplate && exportType !== "link") {
767
+ // What a tap varies on has to reach the key, or a changed option replays.
768
+ runtimeTemplate.compilation.hooks.embeddedSourceHash.call(module, hash);
769
+ const { compilation } = runtimeTemplate;
770
+ const devtool = compilation.options.devtool;
771
+ const outputOptions = compilation.outputOptions;
772
+ hash.update(
773
+ `|${typeof devtool === "string" ? devtool : ""}|${
774
+ outputOptions.devtoolNamespace || ""
775
+ }|${String(outputOptions.devtoolModuleFilenameTemplate || "")}|${String(
776
+ outputOptions.devtoolFallbackModuleFilenameTemplate || ""
777
+ )}`
778
+ );
779
+ }
740
780
  }
741
781
 
742
782
  /**
@@ -867,7 +907,6 @@ class CssGenerator extends Generator {
867
907
  const compilation = generateContext.runtimeTemplate.compilation;
868
908
  const undoPath = "";
869
909
 
870
- const CssModulesPlugin = getCssModulesPlugin();
871
910
  const hooks = CssModulesPlugin.getCompilationHooks(compilation);
872
911
  return CssModulesPlugin.renderModule(
873
912
  /** @type {CssModule} */ (module),
@@ -881,6 +920,88 @@ class CssGenerator extends Generator {
881
920
  );
882
921
  }
883
922
 
923
+ /**
924
+ * Applies the devtool filename template to the sources of a map that is inlined
925
+ * into the module's own output: `SourceMapDevToolPlugin` only rewrites maps of
926
+ * emitted assets, so this one would keep raw module identifiers.
927
+ * @param {RawSourceMap} map the map to rename the sources of
928
+ * @param {GenerateContext} generateContext the generate context
929
+ * @returns {RawSourceMap} the map with devtool source names
930
+ */
931
+ _nameMapSources(map, generateContext) {
932
+ const { chunkGraph, runtimeTemplate } = generateContext;
933
+ const { compilation } = runtimeTemplate;
934
+ const outputOptions = compilation.outputOptions;
935
+ const absolutify = makePathsAbsolute.bindContextCache(
936
+ /** @type {string} */ (compilation.options.context),
937
+ compilation.compiler.root
938
+ );
939
+ const options = {
940
+ moduleFilenameTemplate:
941
+ outputOptions.devtoolModuleFilenameTemplate ||
942
+ ModuleFilenameHelpers.DEFAULT_MODULE_FILENAME_TEMPLATE,
943
+ namespace: outputOptions.devtoolNamespace || ""
944
+ };
945
+ const contextInfo = {
946
+ requestShortener: compilation.requestShortener,
947
+ chunkGraph,
948
+ hashFunction: outputOptions.hashFunction
949
+ };
950
+ /** @type {Set<string>} */
951
+ const usedNames = new Set();
952
+ const sources = map.sources.map((source) => {
953
+ if (!source.startsWith("webpack://")) return source;
954
+ const absoluteSource = absolutify(source.slice(10));
955
+ // Sources a loader reported for files that are not modules (e.g. a less
956
+ // partial) are templated as a path, like `SourceMapDevToolPlugin` does
957
+ const module = compilation.findModule(absoluteSource) || absoluteSource;
958
+ if (typeof module === "string" && URL_SCHEME_REGEXP.test(module)) {
959
+ return module;
960
+ }
961
+ let name = ModuleFilenameHelpers.createFilename(
962
+ module,
963
+ options,
964
+ contextInfo
965
+ );
966
+ // Same disambiguation as `SourceMapDevToolPlugin`: modules sharing a
967
+ // resource path (e.g. one file imported under two layers) collide
968
+ if (usedNames.has(name)) {
969
+ name = ModuleFilenameHelpers.createFilename(
970
+ module,
971
+ {
972
+ moduleFilenameTemplate:
973
+ outputOptions.devtoolFallbackModuleFilenameTemplate ||
974
+ ModuleFilenameHelpers.DEFAULT_FALLBACK_MODULE_FILENAME_TEMPLATE,
975
+ namespace: options.namespace
976
+ },
977
+ contextInfo
978
+ );
979
+ while (usedNames.has(name)) name += "*";
980
+ }
981
+ usedNames.add(name);
982
+ return name;
983
+ });
984
+
985
+ return { ...map, sources };
986
+ }
987
+
988
+ /**
989
+ * Offer CSS bound for a JS string literal to `renderEmbeddedSource`. No `.css`
990
+ * asset carries this text, so an asset-level minimizer never sees it.
991
+ * @param {Source} cssSource the CSS source
992
+ * @param {NormalModule} module the module
993
+ * @param {GenerateContext} generateContext the generate context
994
+ * @returns {Source} the source a tap returned, or the original
995
+ */
996
+ _renderEmbeddedSource(cssSource, module, generateContext) {
997
+ const { compilation } = generateContext.runtimeTemplate;
998
+ return compilation._resolveEmbeddedSource(cssSource, {
999
+ type: CSS_TYPE,
1000
+ hostType: JAVASCRIPT_TYPE,
1001
+ module
1002
+ });
1003
+ }
1004
+
884
1005
  /**
885
1006
  * Convert a CSS Source into a JS string literal, splicing `__webpack_require__.h()` for `[fullhash]` placeholders.
886
1007
  * @param {Source} cssSource the CSS source
@@ -891,11 +1012,17 @@ class CssGenerator extends Generator {
891
1012
  _cssToJsLiteral(cssSource, devtool, generateContext) {
892
1013
  const { source, map } = cssSource.sourceAndMap();
893
1014
  let content = /** @type {string} */ (source);
894
- if (map) {
1015
+ // A `renderEmbeddedSource` tap may hand back a mapped source whatever
1016
+ // `devtool` says, so asking for no map at all is checked here too — this
1017
+ // data URI would ship the sources inside the bundle. `hidden` is the same
1018
+ // answer for the same reason.
1019
+ const wanted = typeof devtool === "string" && !devtool.includes("hidden");
1020
+ if (map && wanted) {
1021
+ const namedMap = this._nameMapSources(map, generateContext);
895
1022
  const inlineMap =
896
1023
  typeof devtool === "string" && devtool.includes("nosources")
897
- ? { ...map, sourcesContent: undefined }
898
- : map;
1024
+ ? { ...namedMap, sourcesContent: undefined }
1025
+ : namedMap;
899
1026
  const base64Map = Buffer.from(JSON.stringify(inlineMap), "utf8").toString(
900
1027
  "base64"
901
1028
  );
@@ -949,6 +1076,15 @@ class CssGenerator extends Generator {
949
1076
  result = cssSource;
950
1077
  }
951
1078
 
1079
+ // Only text bound for a JS literal. `CSS_TEXT_TYPE` is an HTML inline
1080
+ // `<style>` / `style=""`, and whether that is CSS at all depends on the
1081
+ // element's `type` — a call the HTML layer makes and `htmlMinify` honors,
1082
+ // which is not visible here. After the `@charset` prefix, so a tap sees a
1083
+ // whole stylesheet.
1084
+ if (result && asJsLiteral) {
1085
+ result = this._renderEmbeddedSource(result, module, generateContext);
1086
+ }
1087
+
952
1088
  if (asJsLiteral) {
953
1089
  const devtool =
954
1090
  generateContext.runtimeTemplate.compilation.options.devtool;
@@ -6,14 +6,14 @@
6
6
  "use strict";
7
7
 
8
8
  const { SyncWaterfallHook } = require("tapable");
9
- /** @typedef {import("../Compilation")} Compilation */
9
+ /** @import Compilation from "../Compilation" */
10
10
  const RuntimeGlobals = require("../RuntimeGlobals");
11
11
  const RuntimeModule = require("../RuntimeModule");
12
12
  const Template = require("../Template");
13
13
  const createHooksRegistry = require("../util/createHooksRegistry");
14
14
 
15
- /** @typedef {import("../Chunk")} Chunk */
16
- /** @typedef {import("../Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
15
+ /** @import Chunk from "../Chunk" */
16
+ /** @import { ReadOnlyRuntimeRequirements } from "../Module" */
17
17
 
18
18
  /**
19
19
  * @typedef {object} CssInjectCompilationHooks
@@ -63,7 +63,9 @@ class CssInjectStyleRuntimeModule extends RuntimeModule {
63
63
  ? [
64
64
  "if (typeof document === 'undefined') {",
65
65
  Template.indent([
66
- `${runtimeTemplate.cssServerStyleRegistry()}[identifier] = css;`,
66
+ // "module-" keeps numeric module ids from enumerating in ascending
67
+ // order instead of the order the styles were applied in
68
+ `${runtimeTemplate.cssServerStyleRegistry()}["module-" + identifier] = css;`,
67
69
  "return;"
68
70
  ]),
69
71
  "}"
@@ -74,7 +76,7 @@ class CssInjectStyleRuntimeModule extends RuntimeModule {
74
76
  "if (typeof document === 'undefined') {",
75
77
  Template.indent([
76
78
  `${cst} styles = ${runtimeTemplate.cssServerStyleRegistry()};`,
77
- "for (var i = 0; i < identifiers.length; i++) delete styles[identifiers[i]];",
79
+ 'for (var i = 0; i < identifiers.length; i++) delete styles["module-" + identifiers[i]];',
78
80
  "return;"
79
81
  ]),
80
82
  "}"
@@ -6,8 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  const { SyncWaterfallHook } = require("tapable");
9
- /** @typedef {import("../Compilation")} Compilation */
10
- const { CSS_TYPE } = require("../ModuleSourceTypeConstants");
9
+ /** @import Compilation from "../Compilation" */
11
10
  const RuntimeGlobals = require("../RuntimeGlobals");
12
11
  const RuntimeModule = require("../RuntimeModule");
13
12
  const Template = require("../Template");
@@ -15,17 +14,34 @@ const compileBooleanMatcher = require("../util/compileBooleanMatcher");
15
14
  const createHooksRegistry = require("../util/createHooksRegistry");
16
15
  const { chunkHasCss } = require("./CssModulesPlugin");
17
16
 
18
- /** @typedef {import("../Chunk")} Chunk */
19
- /** @typedef {import("../Chunk").ChunkId} ChunkId */
20
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
21
- /** @typedef {import("../Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
17
+ /** @import Chunk, { ChunkId } from "../Chunk" */
18
+ /** @import { ReadOnlyRuntimeRequirements } from "../Module" */
19
+
20
+ const createCompilationHooks = () => ({
21
+ /**
22
+ * @type {SyncWaterfallHook<[string, Chunk]>}
23
+ * @since 5.66.0
24
+ */
25
+ createStylesheet: new SyncWaterfallHook(["source", "chunk"]),
26
+ /**
27
+ * @type {SyncWaterfallHook<[string, Chunk]>}
28
+ * @since 5.91.0
29
+ */
30
+ linkPreload: new SyncWaterfallHook(["source", "chunk"]),
31
+ /**
32
+ * @type {SyncWaterfallHook<[string, Chunk]>}
33
+ * @since 5.91.0
34
+ */
35
+ linkPrefetch: new SyncWaterfallHook(["source", "chunk"]),
36
+ /**
37
+ * @type {SyncWaterfallHook<[string, Chunk]>}
38
+ * @since 5.107.0
39
+ */
40
+ linkInsert: new SyncWaterfallHook(["source", "chunk"])
41
+ });
22
42
 
23
43
  /**
24
- * @typedef {object} CssLoadingRuntimeModulePluginHooks
25
- * @property {SyncWaterfallHook<[string, Chunk]>} createStylesheet
26
- * @property {SyncWaterfallHook<[string, Chunk]>} linkPreload
27
- * @property {SyncWaterfallHook<[string, Chunk]>} linkPrefetch
28
- * @property {SyncWaterfallHook<[string, Chunk]>} linkInsert
44
+ * @typedef {ReturnType<typeof createCompilationHooks>} CssLoadingRuntimeModulePluginHooks
29
45
  */
30
46
 
31
47
  class CssLoadingRuntimeModule extends RuntimeModule {
@@ -55,20 +71,14 @@ class CssLoadingRuntimeModule extends RuntimeModule {
55
71
  uniqueName,
56
72
  chunkLoadTimeout: loadTimeout,
57
73
  charset,
58
- importMetaName
74
+ resourceHints
59
75
  }
60
76
  } = compilation;
77
+ const dedupePrefetch = Boolean(resourceHints && resourceHints.dedupe);
61
78
  const fn = RuntimeGlobals.ensureChunkHandlers;
62
- const conditionMap = chunkGraph.getChunkConditionMap(
63
- chunk,
64
- /**
65
- * @param {Chunk} chunk the chunk
66
- * @param {ChunkGraph} chunkGraph the chunk graph
67
- * @returns {boolean} true, if the chunk has css
68
- */
69
- (chunk, chunkGraph) =>
70
- Boolean(chunkGraph.getChunkModulesIterableBySourceType(chunk, CSS_TYPE))
71
- );
79
+ // The predicate the stylesheet is emitted from: an `@import` external gives a
80
+ // chunk a css asset without a `CSS_TYPE` module, and it still has to load.
81
+ const conditionMap = chunkGraph.getChunkConditionMap(chunk, chunkHasCss);
72
82
  const hasCssMatcher = compileBooleanMatcher(conditionMap);
73
83
 
74
84
  const withLoading =
@@ -103,6 +113,15 @@ class CssLoadingRuntimeModule extends RuntimeModule {
103
113
  // `parser.javascript.dynamicImportCssPreload` — CSS-only preload order.
104
114
  chunk.hasChildByOrder(chunkGraph, "cssPreload", true, chunkHasCss));
105
115
 
116
+ // Under module output each stylesheet is a known file, so the urls are written
117
+ // out and read by id rather than built from the chunk id at runtime.
118
+ const cssUrls = runtimeTemplate.analyzableCssChunkUrls(
119
+ chunk,
120
+ chunkGraph,
121
+ _runtimeRequirements,
122
+ this
123
+ );
124
+
106
125
  const { linkPreload, linkPrefetch, createStylesheet, linkInsert } =
107
126
  CssLoadingRuntimeModule.getCompilationHooks(compilation);
108
127
 
@@ -157,7 +176,28 @@ class CssLoadingRuntimeModule extends RuntimeModule {
157
176
  ",\n"
158
177
  )
159
178
  )}\n}`;
179
+ // The url is read through a thunk so a runtime carrying many stylesheets builds
180
+ // only the one it loads.
181
+ /**
182
+ * @param {string} id expression naming the chunk whose stylesheet is wanted
183
+ * @returns {string} expression evaluating to its url
184
+ */
185
+ const cssUrl = (id) =>
186
+ cssUrls === undefined || cssUrls === null
187
+ ? `${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkCssFilename}(${id})`
188
+ : `cssUrls[${id}]()`;
160
189
  return Template.asString([
190
+ ...(cssUrls
191
+ ? [
192
+ `${cst} cssUrls = {\n${Template.indent(
193
+ Array.from(
194
+ cssUrls,
195
+ ([id, url]) =>
196
+ `${JSON.stringify(String(id))}: ${runtimeTemplate.returningFunction(url)}`
197
+ ).join(",\n")
198
+ )}\n};`
199
+ ]
200
+ : []),
161
201
  "// object to store loaded and loading chunks",
162
202
  "// undefined = chunk not loaded, null = chunk preloaded/prefetched",
163
203
  "// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded",
@@ -277,7 +317,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
277
317
  "promises.push(installedChunkData[2] = promise);",
278
318
  "",
279
319
  "// start chunk loading",
280
- `${cst} url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkCssFilename}(chunkId);`,
320
+ `${cst} url = ${cssUrl("chunkId")};`,
281
321
  "// create error before stack unwound to get useful stacktrace later",
282
322
  `${cst} error = new Error();`,
283
323
  `${cst} loadingEnded = ${runtimeTemplate.basicFunction(
@@ -328,7 +368,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
328
368
  `Promise.all([import('fs'), import('url')]).then(${runtimeTemplate.basicFunction(
329
369
  "[{ readFile }, { URL }]",
330
370
  [
331
- `readFile(new URL(url, ${importMetaName}.url), 'utf8', ${runtimeTemplate.basicFunction(
371
+ `readFile(${runtimeTemplate.importMetaUrl("url")}, 'utf8', ${runtimeTemplate.basicFunction(
332
372
  "err, content",
333
373
  [
334
374
  `if (!err) ${runtimeTemplate.cssServerStyleRegistry()}["chunk-" + chunkId] = content;`,
@@ -383,10 +423,23 @@ class CssLoadingRuntimeModule extends RuntimeModule {
383
423
  "}",
384
424
  'link.rel = "prefetch";',
385
425
  'link.as = "style";',
386
- `link.href = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkCssFilename}(chunkId);`
426
+ `link.href = ${cssUrl("chunkId")};`
387
427
  ]),
388
428
  chunk
389
429
  ),
430
+ dedupePrefetch
431
+ ? Template.asString([
432
+ // Chrome re-requests a resource when a prefetch link is added
433
+ // after it was already (pre)loaded via markup; skip in that case.
434
+ `${cst} links = document.getElementsByTagName("link");`,
435
+ `for(${lt} i = 0; i < links.length; i++) {`,
436
+ Template.indent([
437
+ `${cst} l = links[i];`,
438
+ 'if(l.href === link.href && (l.rel === "prefetch" || l.rel === "preload")) return;'
439
+ ]),
440
+ "}"
441
+ ])
442
+ : "",
390
443
  "document.head.appendChild(link);"
391
444
  ]),
392
445
  "}"
@@ -419,7 +472,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
419
472
  "}",
420
473
  'link.rel = "preload";',
421
474
  'link.as = "style";',
422
- `link.href = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkCssFilename}(chunkId);`,
475
+ `link.href = ${cssUrl("chunkId")};`,
423
476
  crossOriginLoading
424
477
  ? crossOriginLoading === "use-credentials"
425
478
  ? 'link.crossOrigin = "use-credentials";'
@@ -499,7 +552,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
499
552
  // best-effort: a non-file publicPath (e.g. a CDN) can't be read from disk, so skip
500
553
  "try {",
501
554
  Template.indent([
502
- `readFile(new URL(url, ${importMetaName}.url), 'utf8', ${runtimeTemplate.basicFunction(
555
+ `readFile(${runtimeTemplate.importMetaUrl("url")}, 'utf8', ${runtimeTemplate.basicFunction(
503
556
  "err, content",
504
557
  [
505
558
  "if (!err) registry[key] = content;",
@@ -523,8 +576,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
523
576
  "// Read CSS removed chunks from update manifest",
524
577
  `${cst} cssRemovedChunks = css && css.r;`,
525
578
  `chunkIds.forEach(${runtimeTemplate.basicFunction("chunkId", [
526
- `${cst} filename = ${RuntimeGlobals.getChunkCssFilename}(chunkId);`,
527
- `${cst} url = ${RuntimeGlobals.publicPath} + filename;`,
579
+ `${cst} url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkCssFilename}(chunkId);`,
528
580
  `${cst} oldTag = loadStylesheet(chunkId, url);`,
529
581
  `if(!oldTag && !${withHmr} ) return;`,
530
582
  "// Skip if CSS was removed",
@@ -577,13 +629,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
577
629
  }
578
630
 
579
631
  CssLoadingRuntimeModule.getCompilationHooks = createHooksRegistry(
580
- () =>
581
- /** @type {CssLoadingRuntimeModulePluginHooks} */ ({
582
- createStylesheet: new SyncWaterfallHook(["source", "chunk"]),
583
- linkPreload: new SyncWaterfallHook(["source", "chunk"]),
584
- linkPrefetch: new SyncWaterfallHook(["source", "chunk"]),
585
- linkInsert: new SyncWaterfallHook(["source", "chunk"])
586
- })
632
+ createCompilationHooks
587
633
  );
588
634
 
589
635
  module.exports = CssLoadingRuntimeModule;
@@ -8,15 +8,18 @@
8
8
  const NormalModule = require("../NormalModule");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
 
11
- /** @typedef {import("../DependencyTemplate").CssData} CssData */
12
- /** @typedef {import("../Module")} Module */
13
- /** @typedef {import("../Module").BuildMeta} BuildMeta */
14
- /** @typedef {import("../NormalModule").NormalModuleBuildInfo} NormalModuleBuildInfo */
15
- /** @typedef {import("../NormalModule").NormalModuleCreateData} NormalModuleCreateData */
16
- /** @typedef {import("../RequestShortener")} RequestShortener */
11
+ /** @import { CssData } from "../DependencyTemplate" */
12
+ /** @import Module, { BuildMeta } from "../Module" */
13
+ /**
14
+ * @import {
15
+ * NormalModuleBuildInfo,
16
+ * NormalModuleCreateData
17
+ * } from "../NormalModule"
18
+ */
19
+ /** @import RequestShortener from "../RequestShortener" */
17
20
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[CssLayer, Supports, Media, Inheritance | undefined, CssParserExportType | undefined]>} ObjectDeserializerContext */
18
21
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[CssLayer, Supports, Media, Inheritance | undefined, CssParserExportType | undefined]>} ObjectSerializerContext */
19
- /** @typedef {import("../../declarations/WebpackOptions").CssParserExportType} CssParserExportType */
22
+ /** @import { CssParserExportType } from "../../declarations/WebpackOptions" */
20
23
 
21
24
  /** @typedef {string | undefined} CssLayer */
22
25
  /** @typedef {string | undefined} Supports */