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