@depup/webpack 5.109.0-depup.0 → 5.110.1-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (641) hide show
  1. package/README.md +7 -7
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +10 -10
  4. package/lib/APIPlugin.js +123 -17
  5. package/lib/AsyncDependenciesBlock.js +10 -7
  6. package/lib/AutomaticPrefetchPlugin.js +1 -1
  7. package/lib/BannerPlugin.js +10 -6
  8. package/lib/CacheFacade.js +6 -6
  9. package/lib/Chunk.js +14 -11
  10. package/lib/ChunkGraph.js +43 -32
  11. package/lib/ChunkGroup.js +7 -7
  12. package/lib/ChunkTemplate.js +35 -44
  13. package/lib/CircularModulesPlugin.js +205 -28
  14. package/lib/CleanPlugin.js +15 -16
  15. package/lib/CodeGenerationResults.js +11 -8
  16. package/lib/CompatibilityPlugin.js +38 -7
  17. package/lib/Compilation.js +709 -414
  18. package/lib/Compiler.js +69 -42
  19. package/lib/ConcatenationScope.js +117 -8
  20. package/lib/ConditionalInitFragment.js +3 -3
  21. package/lib/ConstPlugin.js +13 -11
  22. package/lib/ContextExclusionPlugin.js +1 -1
  23. package/lib/ContextModule.js +146 -54
  24. package/lib/ContextModuleFactory.js +46 -14
  25. package/lib/ContextReplacementPlugin.js +12 -14
  26. package/lib/DefinePlugin.js +168 -57
  27. package/lib/DependenciesBlock.js +9 -6
  28. package/lib/Dependency.js +36 -16
  29. package/lib/DependencyTemplate.js +11 -12
  30. package/lib/DependencyTemplates.js +3 -3
  31. package/lib/DotenvPlugin.js +50 -13
  32. package/lib/DynamicEntryPlugin.js +8 -4
  33. package/lib/EntryOptionPlugin.js +8 -4
  34. package/lib/EntryPlugin.js +2 -2
  35. package/lib/Entrypoint.js +6 -2
  36. package/lib/EnvironmentPlugin.js +2 -2
  37. package/lib/EvalDevToolModulePlugin.js +8 -4
  38. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  39. package/lib/ExportsInfo.js +123 -19
  40. package/lib/ExportsInfoApiPlugin.js +2 -4
  41. package/lib/ExternalModule.js +242 -84
  42. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  43. package/lib/ExternalsPlugin.js +10 -6
  44. package/lib/FileSystemInfo.js +116 -42
  45. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  46. package/lib/FlagDependencyExportsPlugin.js +76 -19
  47. package/lib/FlagDependencyUsagePlugin.js +63 -57
  48. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  49. package/lib/Generator.js +36 -15
  50. package/lib/HotModuleReplacementPlugin.js +16 -44
  51. package/lib/IgnorePlugin.js +8 -4
  52. package/lib/IgnoreWarningsPlugin.js +2 -2
  53. package/lib/InitFragment.js +28 -36
  54. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  55. package/lib/LazyBarrel.js +3 -4
  56. package/lib/LibraryTemplatePlugin.js +10 -6
  57. package/lib/LoaderOptionsPlugin.js +7 -3
  58. package/lib/LoaderTargetPlugin.js +1 -1
  59. package/lib/MainTemplate.js +49 -42
  60. package/lib/ManifestPlugin.js +12 -11
  61. package/lib/Module.js +62 -33
  62. package/lib/ModuleFactory.js +3 -3
  63. package/lib/ModuleFilenameHelpers.js +22 -6
  64. package/lib/ModuleGraph.js +195 -21
  65. package/lib/ModuleGraphConnection.js +6 -13
  66. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  67. package/lib/ModuleTemplate.js +62 -63
  68. package/lib/MultiCompiler.js +130 -64
  69. package/lib/MultiStats.js +40 -9
  70. package/lib/MultiWatching.js +3 -3
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +29 -19
  73. package/lib/NormalModule.js +221 -156
  74. package/lib/NormalModuleFactory.js +563 -112
  75. package/lib/NormalModuleReplacementPlugin.js +5 -8
  76. package/lib/NullFactory.js +6 -2
  77. package/lib/OptionsApply.js +7 -3
  78. package/lib/Parser.js +7 -3
  79. package/lib/PlatformPlugin.js +2 -2
  80. package/lib/PrefetchPlugin.js +1 -1
  81. package/lib/ProgressPlugin.js +16 -13
  82. package/lib/ProvidePlugin.js +3 -5
  83. package/lib/RawModule.js +25 -17
  84. package/lib/RecordIdsPlugin.js +3 -3
  85. package/lib/RequestShortener.js +1 -1
  86. package/lib/ResolverFactory.js +2 -2
  87. package/lib/RuntimeGlobals.js +22 -10
  88. package/lib/RuntimeModule.js +29 -19
  89. package/lib/RuntimePlugin.js +346 -256
  90. package/lib/RuntimeTemplate.js +2792 -352
  91. package/lib/SelfModuleFactory.js +7 -3
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  93. package/lib/SourceMapDevToolPlugin.js +30 -20
  94. package/lib/Stats.js +3 -4
  95. package/lib/Template.js +55 -25
  96. package/lib/TemplatedPathPlugin.js +96 -14
  97. package/lib/UseStrictPlugin.js +4 -6
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  99. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  100. package/lib/WarnNoModeSetPlugin.js +1 -1
  101. package/lib/WatchIgnorePlugin.js +8 -6
  102. package/lib/Watching.js +8 -8
  103. package/lib/WebpackIsIncludedPlugin.js +2 -4
  104. package/lib/WebpackOptionsApply.js +308 -18
  105. package/lib/WebpackOptionsDefaulter.js +6 -2
  106. package/lib/asset/AssetBytesGenerator.js +12 -10
  107. package/lib/asset/AssetBytesParser.js +2 -4
  108. package/lib/asset/AssetGenerator.js +188 -95
  109. package/lib/asset/AssetModule.js +7 -3
  110. package/lib/asset/AssetModulesPlugin.js +110 -38
  111. package/lib/asset/AssetParser.js +9 -7
  112. package/lib/asset/AssetSourceGenerator.js +60 -13
  113. package/lib/asset/AssetSourceParser.js +2 -4
  114. package/lib/asset/RawDataUrlModule.js +24 -16
  115. package/lib/asset/WebManifestGenerator.js +8 -10
  116. package/lib/asset/WebManifestParser.js +24 -10
  117. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  118. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  119. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  120. package/lib/async-modules/isGeneratorLowered.js +4 -4
  121. package/lib/buildChunkGraph.js +36 -27
  122. package/lib/bun/BunTargetPlugin.js +1 -1
  123. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  124. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  125. package/lib/cache/IdleFileCachePlugin.js +2 -2
  126. package/lib/cache/MemoryCachePlugin.js +18 -10
  127. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  128. package/lib/cache/PackFileCacheStrategy.js +289 -28
  129. package/lib/cache/ResolverCachePlugin.js +38 -18
  130. package/lib/cache/getLazyHashedEtag.js +1 -2
  131. package/lib/cache/mergeEtags.js +1 -1
  132. package/lib/cli.js +1 -3
  133. package/lib/config/browserslistTargetHandler.js +41 -5
  134. package/lib/config/defaults.js +282 -81
  135. package/lib/config/defineConfig.js +10 -2
  136. package/lib/config/getClaimedAssetTypes.js +65 -0
  137. package/lib/config/normalization.js +36 -16
  138. package/lib/config/target.js +46 -3
  139. package/lib/container/ContainerEntryDependency.js +1 -1
  140. package/lib/container/ContainerEntryModule.js +24 -15
  141. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  142. package/lib/container/ContainerPlugin.js +9 -10
  143. package/lib/container/ContainerReferencePlugin.js +6 -2
  144. package/lib/container/FallbackDependency.js +1 -1
  145. package/lib/container/FallbackModule.js +24 -17
  146. package/lib/container/FallbackModuleFactory.js +7 -3
  147. package/lib/container/HoistContainerReferencesPlugin.js +53 -66
  148. package/lib/container/ModuleFederationPlugin.js +7 -18
  149. package/lib/container/RemoteModule.js +27 -19
  150. package/lib/container/RemoteRuntimeModule.js +10 -8
  151. package/lib/container/moduleFederationHooks.js +32 -0
  152. package/lib/css/CssGenerator.js +178 -44
  153. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  154. package/lib/css/CssLoadingRuntimeModule.js +82 -36
  155. package/lib/css/CssModule.js +10 -7
  156. package/lib/css/CssModulesPlugin.js +197 -106
  157. package/lib/css/CssParser.js +1248 -618
  158. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  159. package/lib/css/cssMinify.js +168 -0
  160. package/lib/css/data.js +5324 -0
  161. package/lib/css/syntax.js +10396 -952
  162. package/lib/debug/ProfilingPlugin.js +14 -9
  163. package/lib/deno/DenoTargetPlugin.js +1 -1
  164. package/lib/dependencies/AMDDefineDependency.js +112 -87
  165. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  166. package/lib/dependencies/AMDPlugin.js +9 -7
  167. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  168. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  169. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  170. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  171. package/lib/dependencies/AMDRequireDependency.js +8 -7
  172. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  173. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  174. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  175. package/lib/dependencies/CachedConstDependency.js +11 -8
  176. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  177. package/lib/dependencies/CommonJsExportRequireDependency.js +140 -45
  178. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  179. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  180. package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
  181. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
  182. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  183. package/lib/dependencies/CommonJsPlugin.js +35 -6
  184. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  185. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  186. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  187. package/lib/dependencies/ConstDependency.js +8 -9
  188. package/lib/dependencies/ContextDependency.js +12 -8
  189. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  190. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  191. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  192. package/lib/dependencies/ContextElementDependency.js +31 -12
  193. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  194. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  195. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  196. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  197. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  198. package/lib/dependencies/CssImportDependency.js +18 -9
  199. package/lib/dependencies/CssUrlDependency.js +17 -13
  200. package/lib/dependencies/DllEntryDependency.js +1 -1
  201. package/lib/dependencies/DynamicExports.js +2 -2
  202. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  203. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  204. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  205. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  206. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  207. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  208. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  209. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  210. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +15 -11
  211. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  212. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  213. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  214. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
  215. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  216. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  217. package/lib/dependencies/HarmonyExports.js +7 -4
  218. package/lib/dependencies/HarmonyImportDependency.js +28 -20
  219. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  220. package/lib/dependencies/HarmonyImportGuard.js +21 -30
  221. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  222. package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
  223. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  224. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  225. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  226. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  227. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  228. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  229. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  230. package/lib/dependencies/ImportContextDependency.js +2 -2
  231. package/lib/dependencies/ImportDependency.js +24 -20
  232. package/lib/dependencies/ImportEagerDependency.js +6 -9
  233. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  234. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  235. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  236. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  237. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  238. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  239. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  241. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  242. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  243. package/lib/dependencies/ImportParserPlugin.js +49 -35
  244. package/lib/dependencies/ImportPhase.js +12 -5
  245. package/lib/dependencies/ImportPlugin.js +7 -3
  246. package/lib/dependencies/ImportWeakDependency.js +6 -9
  247. package/lib/dependencies/JsonExportsDependency.js +11 -7
  248. package/lib/dependencies/LoaderDependency.js +2 -2
  249. package/lib/dependencies/LoaderImportDependency.js +2 -2
  250. package/lib/dependencies/LoaderPlugin.js +11 -7
  251. package/lib/dependencies/LocalModuleDependency.js +5 -5
  252. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  253. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  254. package/lib/dependencies/ModuleDependency.js +9 -6
  255. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  256. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  257. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  258. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  259. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  260. package/lib/dependencies/NullDependency.js +3 -3
  261. package/lib/dependencies/ProvidedDependency.js +14 -10
  262. package/lib/dependencies/PureExpressionDependency.js +9 -10
  263. package/lib/dependencies/RequireContextDependency.js +2 -2
  264. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  265. package/lib/dependencies/RequireContextPlugin.js +8 -4
  266. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  267. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  268. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  269. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  270. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  271. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  272. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  273. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  274. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  275. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  276. package/lib/dependencies/RequireResolveDependency.js +4 -4
  277. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  278. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  279. package/lib/dependencies/StaticExportsDependency.js +2 -2
  280. package/lib/dependencies/SystemPlugin.js +10 -6
  281. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  282. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  283. package/lib/dependencies/URLContextDependency.js +2 -2
  284. package/lib/dependencies/URLDependency.js +110 -64
  285. package/lib/dependencies/URLPlugin.js +7 -3
  286. package/lib/dependencies/UnsupportedDependency.js +4 -4
  287. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  288. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  289. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  290. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  291. package/lib/dependencies/WorkerDependency.js +28 -22
  292. package/lib/dependencies/WorkletDependency.js +15 -14
  293. package/lib/dependencies/getFunctionExpression.js +8 -4
  294. package/lib/dependencies/processExportInfo.js +5 -5
  295. package/lib/dll/DelegatedModule.js +34 -22
  296. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  297. package/lib/dll/DelegatedPlugin.js +2 -2
  298. package/lib/dll/DllEntryPlugin.js +2 -2
  299. package/lib/dll/DllModule.js +22 -15
  300. package/lib/dll/DllModuleFactory.js +7 -3
  301. package/lib/dll/DllPlugin.js +7 -5
  302. package/lib/dll/DllReferencePlugin.js +10 -7
  303. package/lib/dll/LibManifestPlugin.js +5 -5
  304. package/lib/electron/ElectronTargetPlugin.js +53 -49
  305. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  306. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  307. package/lib/errors/BroadContextsWarning.js +43 -0
  308. package/lib/errors/BuildCycleError.js +1 -1
  309. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  310. package/lib/errors/ChunkRenderError.js +1 -1
  311. package/lib/errors/CircularDependenciesWarning.js +38 -0
  312. package/lib/errors/CodeGenerationError.js +1 -1
  313. package/lib/errors/CommentCompilationWarning.js +1 -1
  314. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  315. package/lib/errors/DuplicateModulesWarning.js +45 -0
  316. package/lib/errors/DynamicExportsWarning.js +30 -0
  317. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  318. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  319. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  320. package/lib/errors/EvalUsageWarning.js +28 -0
  321. package/lib/errors/HookWebpackError.js +5 -5
  322. package/lib/errors/HotspotsWarning.js +57 -0
  323. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  324. package/lib/errors/InlinedAssetsWarning.js +36 -0
  325. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  326. package/lib/errors/LargeModulesWarning.js +45 -0
  327. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  328. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  329. package/lib/errors/MixedExportsWarning.js +41 -0
  330. package/lib/errors/ModuleDependencyError.js +13 -16
  331. package/lib/errors/ModuleDependencyWarning.js +5 -15
  332. package/lib/errors/ModuleHashingError.js +1 -1
  333. package/lib/errors/ModuleNotFoundError.js +2 -2
  334. package/lib/errors/ModuleParseError.js +1 -2
  335. package/lib/errors/ModuleRestoreError.js +1 -1
  336. package/lib/errors/ModuleStoreError.js +1 -1
  337. package/lib/errors/NodeStuffInWebError.js +1 -1
  338. package/lib/errors/OsDependentRuleWarning.js +31 -0
  339. package/lib/errors/PureAnnotationsWarning.js +36 -0
  340. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  341. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  342. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  343. package/lib/errors/TinyChunksWarning.js +40 -0
  344. package/lib/errors/TopLevelThisWarning.js +34 -0
  345. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  346. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  347. package/lib/errors/UnusedAliasesWarning.js +29 -0
  348. package/lib/errors/UnusedDefinesWarning.js +29 -0
  349. package/lib/errors/UnusedExternalsWarning.js +29 -0
  350. package/lib/errors/UnusedReexportsWarning.js +42 -0
  351. package/lib/errors/UnusedRuleWarning.js +29 -0
  352. package/lib/errors/WebpackError.js +9 -5
  353. package/lib/errors/deriveStackFromNestedError.js +90 -0
  354. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  355. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  356. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  357. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
  358. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  359. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  360. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  361. package/lib/hmr/lazyCompilationBackend.js +28 -10
  362. package/lib/hmr/parserHooks.js +56 -0
  363. package/lib/html/HtmlGenerator.js +299 -79
  364. package/lib/html/HtmlModule.js +7 -3
  365. package/lib/html/HtmlModulesPlugin.js +312 -174
  366. package/lib/html/HtmlParser.js +31 -86
  367. package/lib/html/data.js +1928 -0
  368. package/lib/html/htmlMinify.js +288 -0
  369. package/lib/html/syntax.js +7819 -3331
  370. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  371. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  372. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  373. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  374. package/lib/ids/IdHelpers.js +31 -18
  375. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  376. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  377. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  378. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  379. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  380. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  381. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  382. package/lib/index.js +10 -0
  383. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  384. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  385. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  386. package/lib/javascript/ChunkHelpers.js +1 -1
  387. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  388. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  389. package/lib/javascript/JavascriptGenerator.js +65 -165
  390. package/lib/javascript/JavascriptModule.js +9 -3
  391. package/lib/javascript/JavascriptModulesPlugin.js +181 -162
  392. package/lib/javascript/JavascriptParser.js +291 -112
  393. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  394. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  395. package/lib/javascript/StartupHelpers.js +55 -9
  396. package/lib/javascript/syntax.js +3403 -300
  397. package/lib/json/JsonData.js +8 -4
  398. package/lib/json/JsonGenerator.js +38 -16
  399. package/lib/json/JsonModule.js +7 -3
  400. package/lib/json/JsonModulesPlugin.js +1 -1
  401. package/lib/json/JsonParser.js +5 -6
  402. package/lib/library/AbstractLibraryPlugin.js +20 -14
  403. package/lib/library/AmdLibraryPlugin.js +11 -7
  404. package/lib/library/AssignLibraryPlugin.js +19 -13
  405. package/lib/library/EnableLibraryPlugin.js +2 -2
  406. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  407. package/lib/library/JsonpLibraryPlugin.js +11 -7
  408. package/lib/library/ModuleLibraryPlugin.js +256 -64
  409. package/lib/library/SystemLibraryPlugin.js +12 -8
  410. package/lib/library/UmdLibraryPlugin.js +62 -25
  411. package/lib/loaders/LoaderRunner.js +14 -1
  412. package/lib/loaders/loadLoader.js +8 -4
  413. package/lib/logging/createConsoleLogger.js +7 -4
  414. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  415. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  416. package/lib/node/NodeSourcePlugin.js +1 -1
  417. package/lib/node/NodeTargetPlugin.js +4 -3
  418. package/lib/node/NodeTemplatePlugin.js +1 -1
  419. package/lib/node/NodeWatchFileSystem.js +70 -9
  420. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  421. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +81 -20
  422. package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
  423. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  424. package/lib/node/nodeConsole.js +7 -3
  425. package/lib/optimize/AggressiveMergingPlugin.js +21 -17
  426. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  427. package/lib/optimize/ConcatenatedModule.js +996 -477
  428. package/lib/optimize/ConstExportsPlugin.js +11 -7
  429. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  430. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  431. package/lib/optimize/InlineExports.js +9 -5
  432. package/lib/optimize/InnerGraph.js +28 -12
  433. package/lib/optimize/InnerGraphPlugin.js +23 -18
  434. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  435. package/lib/optimize/MangleExportsPlugin.js +7 -8
  436. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  437. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  438. package/lib/optimize/ModuleConcatenationPlugin.js +124 -59
  439. package/lib/optimize/RealContentHashPlugin.js +20 -13
  440. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  441. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  442. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  443. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  444. package/lib/optimize/SplitChunksPlugin.js +232 -68
  445. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  446. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  447. package/lib/performance/BroadContextsPlugin.js +142 -0
  448. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  449. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  450. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  451. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  452. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  453. package/lib/performance/DynamicExportsPlugin.js +120 -0
  454. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  455. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  456. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  457. package/lib/performance/EvalUsagePlugin.js +115 -0
  458. package/lib/performance/HotspotsPlugin.js +296 -0
  459. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  460. package/lib/performance/LargeModulesPlugin.js +126 -0
  461. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  462. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  463. package/lib/performance/MixedExportsPlugin.js +136 -0
  464. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  465. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  466. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  467. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  468. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  469. package/lib/performance/SizeLimitsPlugin.js +139 -7
  470. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  471. package/lib/performance/TinyChunksPlugin.js +128 -0
  472. package/lib/performance/TopLevelThisPlugin.js +208 -0
  473. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  474. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  475. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  476. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  477. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  478. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  479. package/lib/performance/getModuleSize.js +22 -0
  480. package/lib/performance/getSourceModules.js +22 -0
  481. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  482. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  483. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  484. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  485. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  487. package/lib/prefetch/ResourceHintPlugin.js +377 -136
  488. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  489. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  490. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  491. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  492. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  493. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  494. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  495. package/lib/rules/RuleSetCompiler.js +146 -12
  496. package/lib/rules/UseEffectRulePlugin.js +18 -11
  497. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  498. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  499. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  500. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  501. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  502. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  503. package/lib/runtime/CompatRuntimeModule.js +5 -3
  504. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  505. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  506. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  507. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  508. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  509. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  510. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  511. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  512. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  513. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  514. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  515. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  516. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  517. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  518. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  519. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  520. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  521. package/lib/runtime/NonceRuntimeModule.js +10 -0
  522. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  523. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  524. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  525. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  526. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  527. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  528. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  529. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  530. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  531. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  532. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  533. package/lib/runtime/baseUri.js +63 -0
  534. package/lib/schemes/DataUriPlugin.js +1 -1
  535. package/lib/schemes/FileUriPlugin.js +1 -1
  536. package/lib/schemes/HttpUriPlugin.js +24 -15
  537. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  538. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  539. package/lib/serialization/BinaryMiddleware.js +274 -942
  540. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  541. package/lib/serialization/FileMiddleware.js +305 -66
  542. package/lib/serialization/ObjectMiddleware.js +139 -114
  543. package/lib/serialization/PlainObjectSerializer.js +19 -16
  544. package/lib/sharing/ConsumeSharedModule.js +30 -21
  545. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  546. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  547. package/lib/sharing/ProvideSharedModule.js +25 -16
  548. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  549. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  550. package/lib/sharing/SharePlugin.js +17 -5
  551. package/lib/sharing/ShareRuntimeModule.js +4 -4
  552. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  553. package/lib/sharing/utils.js +1 -3
  554. package/lib/stats/DefaultStatsFactoryPlugin.js +253 -226
  555. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  556. package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
  557. package/lib/stats/StatsFactory.js +56 -35
  558. package/lib/stats/StatsPrinter.js +16 -12
  559. package/lib/typescript/TypeScriptPlugin.js +12 -14
  560. package/lib/url/URLParserPlugin.js +26 -13
  561. package/lib/util/AsyncQueue.js +4 -3
  562. package/lib/util/Hash.js +5 -1
  563. package/lib/util/LazySet.js +35 -22
  564. package/lib/util/LocConverter.js +36 -13
  565. package/lib/util/SourceProcessor.js +1050 -24
  566. package/lib/util/StringXor.js +1 -1
  567. package/lib/util/chainedImports.js +9 -5
  568. package/lib/util/cleverMerge.js +1 -1
  569. package/lib/util/comparators.js +45 -14
  570. package/lib/util/concatenate.js +203 -77
  571. package/lib/util/conventions.js +5 -1
  572. package/lib/util/createHash.js +2 -2
  573. package/lib/util/createHooksRegistry.js +8 -10
  574. package/lib/util/dataURL.js +225 -1
  575. package/lib/util/extractSourceMap.js +4 -3
  576. package/lib/util/findCaseMismatch.js +139 -0
  577. package/lib/util/formatLocation.js +1 -2
  578. package/lib/util/fs.js +22 -5
  579. package/lib/util/globUtils.js +298 -24
  580. package/lib/util/hash/BatchedHash.js +5 -1
  581. package/lib/util/hash/BulkUpdateHash.js +5 -1
  582. package/lib/util/hash/DebugHash.js +5 -1
  583. package/lib/util/hash/hash-digest.js +6 -2
  584. package/lib/util/identifier.js +25 -1
  585. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  586. package/lib/util/internalSerializables.js +6 -0
  587. package/lib/util/lazyModule.js +56 -0
  588. package/lib/util/makeSerializable.js +7 -3
  589. package/lib/util/matchAlias.js +25 -0
  590. package/lib/util/mimeTypes.js +11 -5
  591. package/lib/util/nonNumericOnlyHash.js +4 -3
  592. package/lib/util/parseJson.js +5 -3
  593. package/lib/util/preloadModuleType.js +32 -0
  594. package/lib/util/registerExternalSerializer.js +7 -5
  595. package/lib/util/runtime.js +2 -2
  596. package/lib/util/semver.js +1 -1
  597. package/lib/util/serialization.js +28 -28
  598. package/lib/util/source.js +2 -2
  599. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  600. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  601. package/lib/wasm/wasmModuleFilename.js +54 -0
  602. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  603. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  604. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  605. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  606. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  607. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  608. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  609. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  610. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  611. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  612. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  613. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  614. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  615. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  616. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  617. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  618. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  619. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  620. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  621. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  622. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  623. package/lib/web/JsonpTemplatePlugin.js +2 -2
  624. package/lib/webpack.js +22 -11
  625. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  626. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  627. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  628. package/module.d.ts +1 -0
  629. package/package.json +37 -30
  630. package/schemas/WebpackOptions.check.js +1 -1
  631. package/schemas/WebpackOptions.json +780 -91
  632. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  634. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  635. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  636. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  637. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  639. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  640. package/types.d.ts +4013 -738
  641. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -6,54 +6,130 @@
6
6
  "use strict";
7
7
 
8
8
  const RuntimeGlobals = require("./RuntimeGlobals");
9
- const { getPresentKinds } = require("./TemplatedPathPlugin");
9
+ const {
10
+ getPresentKinds,
11
+ usesFullHashDigest
12
+ } = require("./TemplatedPathPlugin");
13
+ const CssModulesPlugin = require("./css/CssModulesPlugin");
10
14
  const RuntimeRequirementsDependency = require("./dependencies/RuntimeRequirementsDependency");
11
15
  const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
12
- const AsyncModuleGeneratorRuntimeModule = require("./runtime/AsyncModuleGeneratorRuntimeModule");
13
- const AsyncModuleRuntimeModule = require("./runtime/AsyncModuleRuntimeModule");
14
- const AutoPublicPathRuntimeModule = require("./runtime/AutoPublicPathRuntimeModule");
15
- const BaseUriRuntimeModule = require("./runtime/BaseUriRuntimeModule");
16
- const CommonJsWrapRuntimeModule = require("./runtime/CommonJsWrapRuntimeModule");
17
- const CompatGetDefaultExportRuntimeModule = require("./runtime/CompatGetDefaultExportRuntimeModule");
18
- const CompatRuntimeModule = require("./runtime/CompatRuntimeModule");
19
- const CreateFakeNamespaceObjectRuntimeModule = require("./runtime/CreateFakeNamespaceObjectRuntimeModule");
20
- const CreateScriptRuntimeModule = require("./runtime/CreateScriptRuntimeModule");
21
- const CreateScriptUrlRuntimeModule = require("./runtime/CreateScriptUrlRuntimeModule");
22
- const DefinePropertyGettersRuntimeModule = require("./runtime/DefinePropertyGettersRuntimeModule");
23
- const EnsureChunkRuntimeModule = require("./runtime/EnsureChunkRuntimeModule");
24
- const GetChunkFilenameRuntimeModule = require("./runtime/GetChunkFilenameRuntimeModule");
25
- const GetMainFilenameRuntimeModule = require("./runtime/GetMainFilenameRuntimeModule");
26
- const GetTrustedTypesPolicyRuntimeModule = require("./runtime/GetTrustedTypesPolicyRuntimeModule");
27
- const GetWorkletBootstrapRuntimeModule = require("./runtime/GetWorkletBootstrapRuntimeModule");
28
- const GlobalRuntimeModule = require("./runtime/GlobalRuntimeModule");
29
- const HasOwnPropertyRuntimeModule = require("./runtime/HasOwnPropertyRuntimeModule");
30
- const LoadScriptRuntimeModule = require("./runtime/LoadScriptRuntimeModule");
31
- const {
32
- MakeDeferredNamespaceObjectRuntimeModule,
33
- MakeOptimizedDeferredNamespaceObjectRuntimeModule
34
- } = require("./runtime/MakeDeferredNamespaceObjectRuntime");
35
- const MakeNamespaceObjectRuntimeModule = require("./runtime/MakeNamespaceObjectRuntimeModule");
36
- const NonceRuntimeModule = require("./runtime/NonceRuntimeModule");
37
- const OnChunksLoadedRuntimeModule = require("./runtime/OnChunksLoadedRuntimeModule");
38
- const PublicPathRuntimeModule = require("./runtime/PublicPathRuntimeModule");
39
- const RelativeUrlRuntimeModule = require("./runtime/RelativeUrlRuntimeModule");
40
- const RuntimeIdRuntimeModule = require("./runtime/RuntimeIdRuntimeModule");
41
- const SetAnonymousDefaultNameRuntimeModule = require("./runtime/SetAnonymousDefaultNameRuntimeModule");
42
- const SystemContextRuntimeModule = require("./runtime/SystemContextRuntimeModule");
43
- const ToBinaryRuntimeModule = require("./runtime/ToBinaryRuntimeModule");
44
- const WorkerRuntimeModule = require("./runtime/WorkerRuntimeModule");
45
- const ShareRuntimeModule = require("./sharing/ShareRuntimeModule");
46
16
  const StringXor = require("./util/StringXor");
47
- const memoize = require("./util/memoize");
17
+ const lazyModule = require("./util/lazyModule");
48
18
 
49
- /** @typedef {import("../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
50
- /** @typedef {import("./Chunk")} Chunk */
51
- /** @typedef {import("./Compiler")} Compiler */
19
+ /** @import { LibraryOptions } from "../declarations/WebpackOptions" */
20
+ /** @import Chunk from "./Chunk" */
21
+ /** @import { RuntimeRequirements } from "./Module" */
22
+ /** @import Compiler from "./Compiler" */
23
+ /** @import RuntimeModule from "./RuntimeModule" */
52
24
 
53
- const getJavascriptModulesPlugin = memoize(() =>
54
- require("./javascript/JavascriptModulesPlugin")
25
+ // Each runtime module below is loaded by `_attachPendingRuntimeModules`, so only
26
+ // the builds that emit one pay for it — most reach ~10 of these 30.
27
+ const getCssServerStylesRuntimeModule = lazyModule(() =>
28
+ require("./css/CssServerStylesRuntimeModule")
29
+ );
30
+ const getAsyncModuleGeneratorRuntimeModule = lazyModule(() =>
31
+ require("./runtime/AsyncModuleGeneratorRuntimeModule")
32
+ );
33
+ const getAsyncModuleRuntimeModule = lazyModule(() =>
34
+ require("./runtime/AsyncModuleRuntimeModule")
35
+ );
36
+ const getAutoPublicPathRuntimeModule = lazyModule(() =>
37
+ require("./runtime/AutoPublicPathRuntimeModule")
38
+ );
39
+ const getBaseUriRuntimeModule = lazyModule(() =>
40
+ require("./runtime/BaseUriRuntimeModule")
41
+ );
42
+ const getCompatGetDefaultExportRuntimeModule = lazyModule(() =>
43
+ require("./runtime/CompatGetDefaultExportRuntimeModule")
44
+ );
45
+ const getCompatRuntimeModule = lazyModule(() =>
46
+ require("./runtime/CompatRuntimeModule")
47
+ );
48
+ const getConcatenationWrapRuntimeModule = lazyModule(() =>
49
+ require("./runtime/ConcatenationWrapRuntimeModule")
50
+ );
51
+ const getConstructRequireRuntimeModule = lazyModule(() =>
52
+ require("./runtime/ConstructRequireRuntimeModule")
53
+ );
54
+ const getCreateFakeNamespaceObjectRuntimeModule = lazyModule(() =>
55
+ require("./runtime/CreateFakeNamespaceObjectRuntimeModule")
56
+ );
57
+ const getCreateScriptRuntimeModule = lazyModule(() =>
58
+ require("./runtime/CreateScriptRuntimeModule")
59
+ );
60
+ const getCreateScriptUrlRuntimeModule = lazyModule(() =>
61
+ require("./runtime/CreateScriptUrlRuntimeModule")
62
+ );
63
+ const getDefinePropertyGettersRuntimeModule = lazyModule(() =>
64
+ require("./runtime/DefinePropertyGettersRuntimeModule")
65
+ );
66
+ const getEnsureChunkRuntimeModule = lazyModule(() =>
67
+ require("./runtime/EnsureChunkRuntimeModule")
68
+ );
69
+ const getGetChunkFilenameRuntimeModule = lazyModule(() =>
70
+ require("./runtime/GetChunkFilenameRuntimeModule")
71
+ );
72
+ const getGetMainFilenameRuntimeModule = lazyModule(() =>
73
+ require("./runtime/GetMainFilenameRuntimeModule")
74
+ );
75
+ const getGetTrustedTypesPolicyRuntimeModule = lazyModule(() =>
76
+ require("./runtime/GetTrustedTypesPolicyRuntimeModule")
77
+ );
78
+ const getGetWorkletBootstrapRuntimeModule = lazyModule(() =>
79
+ require("./runtime/GetWorkletBootstrapRuntimeModule")
80
+ );
81
+ const getGlobalRuntimeModule = lazyModule(() =>
82
+ require("./runtime/GlobalRuntimeModule")
83
+ );
84
+ const getHasOwnPropertyRuntimeModule = lazyModule(() =>
85
+ require("./runtime/HasOwnPropertyRuntimeModule")
86
+ );
87
+ const getLoadScriptRuntimeModule = lazyModule(() =>
88
+ require("./runtime/LoadScriptRuntimeModule")
89
+ );
90
+ const getMakeDeferredNamespaceObjectRuntimeModule = lazyModule(
91
+ () =>
92
+ require("./runtime/MakeDeferredNamespaceObjectRuntime")
93
+ .MakeDeferredNamespaceObjectRuntimeModule
94
+ );
95
+ const getMakeOptimizedDeferredNamespaceObjectRuntimeModule = lazyModule(
96
+ () =>
97
+ require("./runtime/MakeDeferredNamespaceObjectRuntime")
98
+ .MakeOptimizedDeferredNamespaceObjectRuntimeModule
99
+ );
100
+ const getMakeNamespaceObjectRuntimeModule = lazyModule(() =>
101
+ require("./runtime/MakeNamespaceObjectRuntimeModule")
102
+ );
103
+ const getNonceRuntimeModule = lazyModule(() =>
104
+ require("./runtime/NonceRuntimeModule")
105
+ );
106
+ const getOnChunksLoadedRuntimeModule = lazyModule(() =>
107
+ require("./runtime/OnChunksLoadedRuntimeModule")
108
+ );
109
+ const getPublicPathRuntimeModule = lazyModule(() =>
110
+ require("./runtime/PublicPathRuntimeModule")
111
+ );
112
+ const getRelativeUrlRuntimeModule = lazyModule(() =>
113
+ require("./runtime/RelativeUrlRuntimeModule")
114
+ );
115
+ const getRuntimeIdRuntimeModule = lazyModule(() =>
116
+ require("./runtime/RuntimeIdRuntimeModule")
117
+ );
118
+ const getSetAnonymousDefaultNameRuntimeModule = lazyModule(() =>
119
+ require("./runtime/SetAnonymousDefaultNameRuntimeModule")
120
+ );
121
+ const getSystemContextRuntimeModule = lazyModule(() =>
122
+ require("./runtime/SystemContextRuntimeModule")
123
+ );
124
+ const getToBinaryRuntimeModule = lazyModule(() =>
125
+ require("./runtime/ToBinaryRuntimeModule")
126
+ );
127
+ const getWorkerRuntimeModule = lazyModule(() =>
128
+ require("./runtime/WorkerRuntimeModule")
129
+ );
130
+ const getShareRuntimeModule = lazyModule(() =>
131
+ require("./sharing/ShareRuntimeModule")
55
132
  );
56
- const getCssModulesPlugin = memoize(() => require("./css/CssModulesPlugin"));
57
133
 
58
134
  const GLOBALS_ON_REQUIRE = [
59
135
  RuntimeGlobals.chunkName,
@@ -66,6 +142,7 @@ const GLOBALS_ON_REQUIRE = [
66
142
  RuntimeGlobals.definePropertyGetters,
67
143
  RuntimeGlobals.ensureChunk,
68
144
  RuntimeGlobals.entryModuleId,
145
+ RuntimeGlobals.getCssServerStyles,
69
146
  RuntimeGlobals.getFullHash,
70
147
  RuntimeGlobals.global,
71
148
  RuntimeGlobals.makeNamespaceObject,
@@ -75,6 +152,8 @@ const GLOBALS_ON_REQUIRE = [
75
152
  RuntimeGlobals.interceptModuleExecution,
76
153
  RuntimeGlobals.publicPath,
77
154
  RuntimeGlobals.baseURI,
155
+ RuntimeGlobals.prefetchAsset,
156
+ RuntimeGlobals.preloadAsset,
78
157
  RuntimeGlobals.relativeUrl,
79
158
  // TODO webpack 6 - rename to nonce, because we use it for CSS too
80
159
  RuntimeGlobals.scriptNonce,
@@ -90,7 +169,9 @@ const GLOBALS_ON_REQUIRE = [
90
169
  RuntimeGlobals.systemContext,
91
170
  RuntimeGlobals.onChunksLoaded,
92
171
  RuntimeGlobals.makeOptimizedDeferredNamespaceObject,
93
- RuntimeGlobals.makeDeferredNamespaceObject
172
+ RuntimeGlobals.makeDeferredNamespaceObject,
173
+ RuntimeGlobals.concatenationWrap,
174
+ RuntimeGlobals.constructRequire
94
175
  ];
95
176
 
96
177
  const MODULE_DEPENDENCIES = {
@@ -116,9 +197,40 @@ const TREE_DEPENDENCIES = {
116
197
  RuntimeGlobals.require
117
198
  ],
118
199
  [RuntimeGlobals.initializeSharing]: [RuntimeGlobals.shareScopeMap],
119
- [RuntimeGlobals.shareScopeMap]: [RuntimeGlobals.hasOwnProperty]
200
+ [RuntimeGlobals.shareScopeMap]: [RuntimeGlobals.hasOwnProperty],
201
+ [RuntimeGlobals.constructRequire]: [RuntimeGlobals.require]
120
202
  };
121
203
 
204
+ // Tree runtime requirements whose only effect is attaching a zero-arg runtime
205
+ // module to the chunk. Conditional / argument-taking ones stay as explicit taps.
206
+ /** @type {[string, () => Promise<new () => RuntimeModule>][]} */
207
+ const SIMPLE_TREE_RUNTIME_MODULES = [
208
+ [RuntimeGlobals.makeNamespaceObject, getMakeNamespaceObjectRuntimeModule],
209
+ [
210
+ RuntimeGlobals.createFakeNamespaceObject,
211
+ getCreateFakeNamespaceObjectRuntimeModule
212
+ ],
213
+ [RuntimeGlobals.hasOwnProperty, getHasOwnPropertyRuntimeModule],
214
+ [
215
+ RuntimeGlobals.compatGetDefaultExport,
216
+ getCompatGetDefaultExportRuntimeModule
217
+ ],
218
+ [RuntimeGlobals.concatenationWrap, getConcatenationWrapRuntimeModule],
219
+ [RuntimeGlobals.constructRequire, getConstructRequireRuntimeModule],
220
+ [
221
+ RuntimeGlobals.setAnonymousDefaultName,
222
+ getSetAnonymousDefaultNameRuntimeModule
223
+ ],
224
+ [RuntimeGlobals.runtimeId, getRuntimeIdRuntimeModule],
225
+ [RuntimeGlobals.global, getGlobalRuntimeModule],
226
+ [RuntimeGlobals.shareScopeMap, getShareRuntimeModule],
227
+ [RuntimeGlobals.relativeUrl, getRelativeUrlRuntimeModule],
228
+ [RuntimeGlobals.worker, getWorkerRuntimeModule],
229
+ [RuntimeGlobals.onChunksLoaded, getOnChunksLoadedRuntimeModule],
230
+ [RuntimeGlobals.scriptNonce, getNonceRuntimeModule],
231
+ [RuntimeGlobals.toBinary, getToBinaryRuntimeModule]
232
+ ];
233
+
122
234
  /**
123
235
  * @param {string} template path template
124
236
  * @returns {boolean} true when it references the compilation `[fullhash]`/`[hash]`
@@ -128,18 +240,6 @@ const usesFullHash = (template) => {
128
240
  return kinds.has("fullhash") || kinds.has("hash");
129
241
  };
130
242
 
131
- // `[fullhash:<digest>]`/`[hash:<digest>]` — a non-numeric first arg is a digest (a
132
- // numeric one is just a length). The re-encoded full hash must be inlined post-hash
133
- // rather than read from the runtime `getFullHash()` expression.
134
- const FULLHASH_DIGEST_REGEXP = /\[(?:fullhash|hash):(?!\d+\])\w/;
135
-
136
- /**
137
- * @param {string} template path template
138
- * @returns {boolean} true when it references `[fullhash:<digest>]`/`[hash:<digest>]`
139
- */
140
- const usesFullHashWithDigest = (template) =>
141
- FULLHASH_DIGEST_REGEXP.test(template);
142
-
143
243
  const PLUGIN_NAME = "RuntimePlugin";
144
244
 
145
245
  class RuntimePlugin {
@@ -198,94 +298,57 @@ class RuntimePlugin {
198
298
  for (const dep of deps) set.add(dep);
199
299
  });
200
300
  }
301
+ for (const [
302
+ runtimeGlobal,
303
+ getRuntimeModule
304
+ ] of SIMPLE_TREE_RUNTIME_MODULES) {
305
+ compilation.hooks.runtimeRequirementInTree
306
+ .for(runtimeGlobal)
307
+ .tap(PLUGIN_NAME, (chunk) => {
308
+ compilation.addLazyRuntimeModule(
309
+ chunk,
310
+ getRuntimeModule,
311
+ (Ctor) => new Ctor()
312
+ );
313
+ return true;
314
+ });
315
+ }
201
316
  compilation.hooks.runtimeRequirementInTree
202
317
  .for(RuntimeGlobals.definePropertyGetters)
203
- .tap(PLUGIN_NAME, (chunk) => {
204
- compilation.addRuntimeModule(
318
+ .tap(PLUGIN_NAME, (chunk, runtimeRequirement) => {
319
+ compilation.addLazyRuntimeModule(
205
320
  chunk,
206
- new DefinePropertyGettersRuntimeModule()
207
- );
208
- return true;
209
- });
210
- compilation.hooks.runtimeRequirementInTree
211
- .for(RuntimeGlobals.makeNamespaceObject)
212
- .tap(PLUGIN_NAME, (chunk) => {
213
- compilation.addRuntimeModule(
214
- chunk,
215
- new MakeNamespaceObjectRuntimeModule()
216
- );
217
- return true;
218
- });
219
- compilation.hooks.runtimeRequirementInTree
220
- .for(RuntimeGlobals.createFakeNamespaceObject)
221
- .tap(PLUGIN_NAME, (chunk) => {
222
- compilation.addRuntimeModule(
223
- chunk,
224
- new CreateFakeNamespaceObjectRuntimeModule()
321
+ getDefinePropertyGettersRuntimeModule,
322
+ (Ctor) => new Ctor(runtimeRequirement)
225
323
  );
226
324
  return true;
227
325
  });
228
326
  compilation.hooks.runtimeRequirementInTree
229
327
  .for(RuntimeGlobals.makeOptimizedDeferredNamespaceObject)
230
- .tap("RuntimePlugin", (chunk, runtimeRequirement) => {
231
- compilation.addRuntimeModule(
232
- chunk,
233
- new MakeOptimizedDeferredNamespaceObjectRuntimeModule(
234
- runtimeRequirement.has(RuntimeGlobals.asyncModule)
235
- )
328
+ .tap(PLUGIN_NAME, (chunk, runtimeRequirement) => {
329
+ const asyncModule = runtimeRequirement.has(
330
+ RuntimeGlobals.asyncModule
236
331
  );
237
- return true;
238
- });
239
- compilation.hooks.runtimeRequirementInTree
240
- .for(RuntimeGlobals.makeDeferredNamespaceObject)
241
- .tap("RuntimePlugin", (chunk, runtimeRequirement) => {
242
- compilation.addRuntimeModule(
332
+ compilation.addLazyRuntimeModule(
243
333
  chunk,
244
- new MakeDeferredNamespaceObjectRuntimeModule(
245
- runtimeRequirement.has(RuntimeGlobals.asyncModule)
246
- )
334
+ getMakeOptimizedDeferredNamespaceObjectRuntimeModule,
335
+ (Ctor) => new Ctor(asyncModule)
247
336
  );
248
337
  return true;
249
338
  });
250
339
  compilation.hooks.runtimeRequirementInTree
251
- .for(RuntimeGlobals.hasOwnProperty)
252
- .tap(PLUGIN_NAME, (chunk) => {
253
- compilation.addRuntimeModule(
254
- chunk,
255
- new HasOwnPropertyRuntimeModule()
256
- );
257
- return true;
258
- });
259
- compilation.hooks.runtimeRequirementInTree
260
- .for(RuntimeGlobals.compatGetDefaultExport)
261
- .tap(PLUGIN_NAME, (chunk) => {
262
- compilation.addRuntimeModule(
263
- chunk,
264
- new CompatGetDefaultExportRuntimeModule()
340
+ .for(RuntimeGlobals.makeDeferredNamespaceObject)
341
+ .tap(PLUGIN_NAME, (chunk, runtimeRequirement) => {
342
+ const asyncModule = runtimeRequirement.has(
343
+ RuntimeGlobals.asyncModule
265
344
  );
266
- return true;
267
- });
268
- compilation.hooks.runtimeRequirementInTree
269
- .for(RuntimeGlobals.commonJsWrap)
270
- .tap(PLUGIN_NAME, (chunk) => {
271
- compilation.addRuntimeModule(chunk, new CommonJsWrapRuntimeModule());
272
- return true;
273
- });
274
- compilation.hooks.runtimeRequirementInTree
275
- .for(RuntimeGlobals.setAnonymousDefaultName)
276
- .tap(PLUGIN_NAME, (chunk) => {
277
- compilation.addRuntimeModule(
345
+ compilation.addLazyRuntimeModule(
278
346
  chunk,
279
- new SetAnonymousDefaultNameRuntimeModule()
347
+ getMakeDeferredNamespaceObjectRuntimeModule,
348
+ (Ctor) => new Ctor(asyncModule)
280
349
  );
281
350
  return true;
282
351
  });
283
- compilation.hooks.runtimeRequirementInTree
284
- .for(RuntimeGlobals.runtimeId)
285
- .tap(PLUGIN_NAME, (chunk) => {
286
- compilation.addRuntimeModule(chunk, new RuntimeIdRuntimeModule());
287
- return true;
288
- });
289
352
  compilation.hooks.runtimeRequirementInTree
290
353
  .for(RuntimeGlobals.publicPath)
291
354
  .tap(PLUGIN_NAME, (chunk, set) => {
@@ -298,7 +361,6 @@ class RuntimePlugin {
298
361
  : globalPublicPath;
299
362
 
300
363
  if (publicPath === "auto") {
301
- const module = new AutoPublicPathRuntimeModule();
302
364
  // A worklet chunk reads `import.meta.url`, so it needs neither the
303
365
  // worker-scope detection nor the `globalThis` polyfill.
304
366
  if (
@@ -309,31 +371,35 @@ class RuntimePlugin {
309
371
  set.add(RuntimeGlobals.global);
310
372
  }
311
373
 
312
- compilation.addRuntimeModule(chunk, module);
374
+ compilation.addLazyRuntimeModule(
375
+ chunk,
376
+ getAutoPublicPathRuntimeModule,
377
+ (Ctor) => new Ctor()
378
+ );
313
379
  } else {
314
- const module = new PublicPathRuntimeModule(publicPath);
380
+ const fullHash =
381
+ typeof publicPath !== "string" || usesFullHash(publicPath);
315
382
 
316
- if (typeof publicPath !== "string" || usesFullHash(publicPath)) {
317
- module.fullHash = true;
318
- }
319
-
320
- compilation.addRuntimeModule(chunk, module);
383
+ compilation.addLazyRuntimeModule(
384
+ chunk,
385
+ getPublicPathRuntimeModule,
386
+ (Ctor) => {
387
+ const module = new Ctor(publicPath);
388
+ if (fullHash) module.fullHash = true;
389
+ return module;
390
+ }
391
+ );
321
392
  }
322
393
  return true;
323
394
  });
324
- compilation.hooks.runtimeRequirementInTree
325
- .for(RuntimeGlobals.global)
326
- .tap(PLUGIN_NAME, (chunk) => {
327
- compilation.addRuntimeModule(chunk, new GlobalRuntimeModule());
328
- return true;
329
- });
330
395
  compilation.hooks.runtimeRequirementInTree
331
396
  .for(RuntimeGlobals.asyncModule)
332
397
  .tap(PLUGIN_NAME, (chunk) => {
333
398
  const experiments = compilation.options.experiments;
334
- compilation.addRuntimeModule(
399
+ compilation.addLazyRuntimeModule(
335
400
  chunk,
336
- new AsyncModuleRuntimeModule(experiments.deferImport)
401
+ getAsyncModuleRuntimeModule,
402
+ (Ctor) => new Ctor(experiments.deferImport)
337
403
  );
338
404
  return true;
339
405
  });
@@ -341,9 +407,10 @@ class RuntimePlugin {
341
407
  .for(RuntimeGlobals.asyncModuleGenerator)
342
408
  .tap(PLUGIN_NAME, (chunk, set) => {
343
409
  set.add(RuntimeGlobals.asyncModule);
344
- compilation.addRuntimeModule(
410
+ compilation.addLazyRuntimeModule(
345
411
  chunk,
346
- new AsyncModuleGeneratorRuntimeModule()
412
+ getAsyncModuleGeneratorRuntimeModule,
413
+ (Ctor) => new Ctor()
347
414
  );
348
415
  return true;
349
416
  });
@@ -358,9 +425,10 @@ class RuntimePlugin {
358
425
  (compilation.outputOptions.library).type;
359
426
 
360
427
  if (libraryType === "system") {
361
- compilation.addRuntimeModule(
428
+ compilation.addLazyRuntimeModule(
362
429
  chunk,
363
- new SystemContextRuntimeModule()
430
+ getSystemContextRuntimeModule,
431
+ (Ctor) => new Ctor()
364
432
  );
365
433
  }
366
434
  return true;
@@ -374,27 +442,27 @@ class RuntimePlugin {
374
442
  ) {
375
443
  set.add(RuntimeGlobals.getFullHash);
376
444
  }
377
- compilation.addRuntimeModule(
445
+ const hmr = set.has(RuntimeGlobals.hmrDownloadUpdateHandlers);
446
+ const fullHashDigest =
447
+ typeof compilation.outputOptions.chunkFilename === "string" &&
448
+ usesFullHashDigest(compilation.outputOptions.chunkFilename);
449
+ compilation.addLazyRuntimeModule(
378
450
  chunk,
379
- new GetChunkFilenameRuntimeModule(
380
- "javascript",
381
- "javascript",
382
- RuntimeGlobals.getChunkScriptFilename,
383
- (chunk) => {
384
- const javascriptModulesPlugin = getJavascriptModulesPlugin();
385
-
386
- return (
387
- javascriptModulesPlugin.chunkHasJs(chunk, chunkGraph) &&
388
- javascriptModulesPlugin.getChunkFilenameTemplate(
451
+ getGetChunkFilenameRuntimeModule,
452
+ (Ctor) =>
453
+ new Ctor(
454
+ "javascript",
455
+ "javascript",
456
+ RuntimeGlobals.getChunkScriptFilename,
457
+ (/** @type {Chunk} */ chunk) =>
458
+ JavascriptModulesPlugin.chunkHasJs(chunk, chunkGraph) &&
459
+ JavascriptModulesPlugin.getChunkFilenameTemplate(
389
460
  chunk,
390
461
  compilation.outputOptions
391
- )
392
- );
393
- },
394
- set.has(RuntimeGlobals.hmrDownloadUpdateHandlers),
395
- typeof compilation.outputOptions.chunkFilename === "string" &&
396
- usesFullHashWithDigest(compilation.outputOptions.chunkFilename)
397
- )
462
+ ),
463
+ hmr,
464
+ fullHashDigest
465
+ )
398
466
  );
399
467
  return true;
400
468
  });
@@ -402,9 +470,10 @@ class RuntimePlugin {
402
470
  .for(RuntimeGlobals.getWorkletBootstrap)
403
471
  .tap(PLUGIN_NAME, (chunk, set) => {
404
472
  set.add(RuntimeGlobals.baseURI);
405
- compilation.addRuntimeModule(
473
+ compilation.addLazyRuntimeModule(
406
474
  chunk,
407
- new GetWorkletBootstrapRuntimeModule()
475
+ getGetWorkletBootstrapRuntimeModule,
476
+ (Ctor) => new Ctor()
408
477
  );
409
478
  return true;
410
479
  });
@@ -417,29 +486,32 @@ class RuntimePlugin {
417
486
  ) {
418
487
  set.add(RuntimeGlobals.getFullHash);
419
488
  }
420
- compilation.addRuntimeModule(
489
+ const hmr = set.has(RuntimeGlobals.hmrDownloadUpdateHandlers);
490
+ const fullHashDigest =
491
+ typeof compilation.outputOptions.cssChunkFilename === "string" &&
492
+ usesFullHashDigest(compilation.outputOptions.cssChunkFilename);
493
+ compilation.addLazyRuntimeModule(
421
494
  chunk,
422
- new GetChunkFilenameRuntimeModule(
423
- "css",
424
- "css",
425
- RuntimeGlobals.getChunkCssFilename,
426
- (chunk) => {
427
- const cssModulePlugin = getCssModulesPlugin();
495
+ getGetChunkFilenameRuntimeModule,
496
+ (Ctor) =>
497
+ new Ctor(
498
+ "css",
499
+ "css",
500
+ RuntimeGlobals.getChunkCssFilename,
501
+ (/** @type {Chunk} */ chunk) => {
502
+ const cssModulePlugin = CssModulesPlugin;
428
503
 
429
- return (
430
- cssModulePlugin.chunkHasCss(chunk, chunkGraph) &&
431
- cssModulePlugin.getChunkFilenameTemplate(
432
- chunk,
433
- compilation.outputOptions
434
- )
435
- );
436
- },
437
- set.has(RuntimeGlobals.hmrDownloadUpdateHandlers),
438
- typeof compilation.outputOptions.cssChunkFilename === "string" &&
439
- usesFullHashWithDigest(
440
- compilation.outputOptions.cssChunkFilename
441
- )
442
- )
504
+ return (
505
+ cssModulePlugin.chunkHasCss(chunk, chunkGraph) &&
506
+ cssModulePlugin.getChunkFilenameTemplate(
507
+ chunk,
508
+ compilation.outputOptions
509
+ )
510
+ );
511
+ },
512
+ hmr,
513
+ fullHashDigest
514
+ )
443
515
  );
444
516
  return true;
445
517
  });
@@ -449,20 +521,40 @@ class RuntimePlugin {
449
521
  if (usesFullHash(compilation.outputOptions.hotUpdateChunkFilename)) {
450
522
  set.add(RuntimeGlobals.getFullHash);
451
523
  }
452
- compilation.addRuntimeModule(
524
+ const fullHashDigest =
525
+ typeof compilation.outputOptions.hotUpdateChunkFilename ===
526
+ "string" &&
527
+ usesFullHashDigest(
528
+ compilation.outputOptions.hotUpdateChunkFilename
529
+ );
530
+ compilation.addLazyRuntimeModule(
531
+ chunk,
532
+ getGetChunkFilenameRuntimeModule,
533
+ (Ctor) =>
534
+ new Ctor(
535
+ "javascript",
536
+ "javascript update",
537
+ RuntimeGlobals.getChunkUpdateScriptFilename,
538
+ (/** @type {Chunk} */ _chunk) =>
539
+ compilation.outputOptions.hotUpdateChunkFilename,
540
+ true,
541
+ fullHashDigest
542
+ )
543
+ );
544
+ return true;
545
+ });
546
+ compilation.hooks.runtimeRequirementInTree
547
+ .for(RuntimeGlobals.getCssServerStyles)
548
+ .tap(PLUGIN_NAME, (chunk, set) => {
549
+ // The registry lives on the global, reached via the polyfill when
550
+ // the target has no `globalThis`.
551
+ if (!compilation.outputOptions.environment.globalThis) {
552
+ set.add(RuntimeGlobals.global);
553
+ }
554
+ compilation.addLazyRuntimeModule(
453
555
  chunk,
454
- new GetChunkFilenameRuntimeModule(
455
- "javascript",
456
- "javascript update",
457
- RuntimeGlobals.getChunkUpdateScriptFilename,
458
- (_chunk) => compilation.outputOptions.hotUpdateChunkFilename,
459
- true,
460
- typeof compilation.outputOptions.hotUpdateChunkFilename ===
461
- "string" &&
462
- usesFullHashWithDigest(
463
- compilation.outputOptions.hotUpdateChunkFilename
464
- )
465
- )
556
+ getCssServerStylesRuntimeModule,
557
+ (Ctor) => new Ctor()
466
558
  );
467
559
  return true;
468
560
  });
@@ -472,16 +564,35 @@ class RuntimePlugin {
472
564
  if (usesFullHash(compilation.outputOptions.hotUpdateMainFilename)) {
473
565
  set.add(RuntimeGlobals.getFullHash);
474
566
  }
475
- compilation.addRuntimeModule(
567
+ compilation.addLazyRuntimeModule(
476
568
  chunk,
477
- new GetMainFilenameRuntimeModule(
478
- "update manifest",
479
- RuntimeGlobals.getUpdateManifestFilename,
480
- compilation.outputOptions.hotUpdateMainFilename
481
- )
569
+ getGetMainFilenameRuntimeModule,
570
+ (Ctor) =>
571
+ new Ctor(
572
+ "update manifest",
573
+ RuntimeGlobals.getUpdateManifestFilename,
574
+ compilation.outputOptions.hotUpdateMainFilename
575
+ )
482
576
  );
483
577
  return true;
484
578
  });
579
+ /** @type {WeakSet<Chunk>} */
580
+ const ensureChunkModuleAdded = new WeakSet();
581
+ /**
582
+ * The module carries the handler map as well as `ensureChunk`, and an
583
+ * analyzable `import()` needs the map without the function around it.
584
+ * @param {Chunk} chunk the chunk
585
+ * @param {RuntimeRequirements} set the tree's requirements, filled in place
586
+ */
587
+ const addEnsureChunkRuntimeModule = (chunk, set) => {
588
+ if (ensureChunkModuleAdded.has(chunk)) return;
589
+ ensureChunkModuleAdded.add(chunk);
590
+ compilation.addLazyRuntimeModule(
591
+ chunk,
592
+ getEnsureChunkRuntimeModule,
593
+ (Ctor) => new Ctor(set)
594
+ );
595
+ };
485
596
  compilation.hooks.runtimeRequirementInTree
486
597
  .for(RuntimeGlobals.ensureChunk)
487
598
  .tap(PLUGIN_NAME, (chunk, set) => {
@@ -489,22 +600,19 @@ class RuntimePlugin {
489
600
  if (hasAsyncChunks) {
490
601
  set.add(RuntimeGlobals.ensureChunkHandlers);
491
602
  }
492
- compilation.addRuntimeModule(
493
- chunk,
494
- new EnsureChunkRuntimeModule(set)
495
- );
603
+ addEnsureChunkRuntimeModule(chunk, set);
496
604
  return true;
497
605
  });
498
606
  compilation.hooks.runtimeRequirementInTree
499
- .for(RuntimeGlobals.ensureChunkIncludeEntries)
607
+ .for(RuntimeGlobals.ensureChunkHandlers)
500
608
  .tap(PLUGIN_NAME, (chunk, set) => {
501
- set.add(RuntimeGlobals.ensureChunkHandlers);
609
+ // No bail: every other plugin attaching a handler taps this same key.
610
+ addEnsureChunkRuntimeModule(chunk, set);
502
611
  });
503
612
  compilation.hooks.runtimeRequirementInTree
504
- .for(RuntimeGlobals.shareScopeMap)
613
+ .for(RuntimeGlobals.ensureChunkIncludeEntries)
505
614
  .tap(PLUGIN_NAME, (chunk, set) => {
506
- compilation.addRuntimeModule(chunk, new ShareRuntimeModule());
507
- return true;
615
+ set.add(RuntimeGlobals.ensureChunkHandlers);
508
616
  });
509
617
  compilation.hooks.runtimeRequirementInTree
510
618
  .for(RuntimeGlobals.loadScript)
@@ -516,9 +624,10 @@ class RuntimePlugin {
516
624
  set.add(RuntimeGlobals.createScriptUrl);
517
625
  }
518
626
  const withFetchPriority = set.has(RuntimeGlobals.hasFetchPriority);
519
- compilation.addRuntimeModule(
627
+ compilation.addLazyRuntimeModule(
520
628
  chunk,
521
- new LoadScriptRuntimeModule(withCreateScriptUrl, withFetchPriority)
629
+ getLoadScriptRuntimeModule,
630
+ (Ctor) => new Ctor(withCreateScriptUrl, withFetchPriority)
522
631
  );
523
632
  return true;
524
633
  });
@@ -528,7 +637,11 @@ class RuntimePlugin {
528
637
  if (compilation.outputOptions.trustedTypes) {
529
638
  set.add(RuntimeGlobals.getTrustedTypesPolicy);
530
639
  }
531
- compilation.addRuntimeModule(chunk, new CreateScriptRuntimeModule());
640
+ compilation.addLazyRuntimeModule(
641
+ chunk,
642
+ getCreateScriptRuntimeModule,
643
+ (Ctor) => new Ctor()
644
+ );
532
645
  return true;
533
646
  });
534
647
  compilation.hooks.runtimeRequirementInTree
@@ -537,39 +650,20 @@ class RuntimePlugin {
537
650
  if (compilation.outputOptions.trustedTypes) {
538
651
  set.add(RuntimeGlobals.getTrustedTypesPolicy);
539
652
  }
540
- compilation.addRuntimeModule(
653
+ compilation.addLazyRuntimeModule(
541
654
  chunk,
542
- new CreateScriptUrlRuntimeModule()
655
+ getCreateScriptUrlRuntimeModule,
656
+ (Ctor) => new Ctor()
543
657
  );
544
658
  return true;
545
659
  });
546
660
  compilation.hooks.runtimeRequirementInTree
547
661
  .for(RuntimeGlobals.getTrustedTypesPolicy)
548
662
  .tap(PLUGIN_NAME, (chunk, set) => {
549
- compilation.addRuntimeModule(
663
+ compilation.addLazyRuntimeModule(
550
664
  chunk,
551
- new GetTrustedTypesPolicyRuntimeModule(set)
552
- );
553
- return true;
554
- });
555
- compilation.hooks.runtimeRequirementInTree
556
- .for(RuntimeGlobals.relativeUrl)
557
- .tap(PLUGIN_NAME, (chunk, _set) => {
558
- compilation.addRuntimeModule(chunk, new RelativeUrlRuntimeModule());
559
- return true;
560
- });
561
- compilation.hooks.runtimeRequirementInTree
562
- .for(RuntimeGlobals.worker)
563
- .tap(PLUGIN_NAME, (chunk, _set) => {
564
- compilation.addRuntimeModule(chunk, new WorkerRuntimeModule());
565
- return true;
566
- });
567
- compilation.hooks.runtimeRequirementInTree
568
- .for(RuntimeGlobals.onChunksLoaded)
569
- .tap(PLUGIN_NAME, (chunk, _set) => {
570
- compilation.addRuntimeModule(
571
- chunk,
572
- new OnChunksLoadedRuntimeModule()
665
+ getGetTrustedTypesPolicyRuntimeModule,
666
+ (Ctor) => new Ctor(set)
573
667
  );
574
668
  return true;
575
669
  });
@@ -577,22 +671,14 @@ class RuntimePlugin {
577
671
  .for(RuntimeGlobals.baseURI)
578
672
  .tap(PLUGIN_NAME, (chunk) => {
579
673
  if (isChunkLoadingDisabledForChunk(chunk)) {
580
- compilation.addRuntimeModule(chunk, new BaseUriRuntimeModule());
674
+ compilation.addLazyRuntimeModule(
675
+ chunk,
676
+ getBaseUriRuntimeModule,
677
+ (Ctor) => new Ctor()
678
+ );
581
679
  return true;
582
680
  }
583
681
  });
584
- compilation.hooks.runtimeRequirementInTree
585
- .for(RuntimeGlobals.scriptNonce)
586
- .tap(PLUGIN_NAME, (chunk) => {
587
- compilation.addRuntimeModule(chunk, new NonceRuntimeModule());
588
- return true;
589
- });
590
- compilation.hooks.runtimeRequirementInTree
591
- .for(RuntimeGlobals.toBinary)
592
- .tap(PLUGIN_NAME, (chunk) => {
593
- compilation.addRuntimeModule(chunk, new ToBinaryRuntimeModule());
594
- return true;
595
- });
596
682
  // TODO webpack 6: remove CompatRuntimeModule
597
683
  compilation.hooks.additionalTreeRuntimeRequirements.tap(
598
684
  PLUGIN_NAME,
@@ -604,7 +690,11 @@ class RuntimePlugin {
604
690
  mainTemplate.hooks.requireEnsure.isUsed() ||
605
691
  mainTemplate.hooks.requireExtensions.isUsed()
606
692
  ) {
607
- compilation.addRuntimeModule(chunk, new CompatRuntimeModule());
693
+ compilation.addLazyRuntimeModule(
694
+ chunk,
695
+ getCompatRuntimeModule,
696
+ (Ctor) => new Ctor()
697
+ );
608
698
  }
609
699
  }
610
700
  );