@depup/webpack 5.109.2-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 (640) 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 +26 -17
  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 +117 -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 +50 -13
  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 +101 -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 +32 -47
  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 +141 -85
  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 +332 -169
  89. package/lib/RuntimeTemplate.js +2792 -352
  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 +2 -2
  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 +261 -79
  134. package/lib/config/defineConfig.js +10 -2
  135. package/lib/config/getClaimedAssetTypes.js +65 -0
  136. package/lib/config/normalization.js +36 -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 +57 -24
  154. package/lib/css/CssModule.js +10 -7
  155. package/lib/css/CssModulesPlugin.js +168 -88
  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 +5324 -0
  160. package/lib/css/syntax.js +9579 -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 +156 -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 +4 -4
  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 +13 -10
  210. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  211. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  212. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  213. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -63
  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 +27 -19
  218. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  219. package/lib/dependencies/HarmonyImportGuard.js +20 -30
  220. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -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 +37 -29
  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 +2 -2
  230. package/lib/dependencies/ImportDependency.js +24 -20
  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 +49 -35
  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 +51 -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 +46 -28
  290. package/lib/dependencies/WorkerDependency.js +28 -22
  291. package/lib/dependencies/WorkletDependency.js +15 -14
  292. package/lib/dependencies/getFunctionExpression.js +8 -4
  293. package/lib/dependencies/processExportInfo.js +5 -5
  294. package/lib/dll/DelegatedModule.js +34 -22
  295. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  296. package/lib/dll/DelegatedPlugin.js +2 -2
  297. package/lib/dll/DllEntryPlugin.js +2 -2
  298. package/lib/dll/DllModule.js +22 -15
  299. package/lib/dll/DllModuleFactory.js +7 -3
  300. package/lib/dll/DllPlugin.js +7 -5
  301. package/lib/dll/DllReferencePlugin.js +10 -7
  302. package/lib/dll/LibManifestPlugin.js +5 -5
  303. package/lib/electron/ElectronTargetPlugin.js +53 -49
  304. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  305. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  306. package/lib/errors/BroadContextsWarning.js +43 -0
  307. package/lib/errors/BuildCycleError.js +1 -1
  308. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  309. package/lib/errors/ChunkRenderError.js +1 -1
  310. package/lib/errors/CircularDependenciesWarning.js +38 -0
  311. package/lib/errors/CodeGenerationError.js +1 -1
  312. package/lib/errors/CommentCompilationWarning.js +1 -1
  313. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  314. package/lib/errors/DuplicateModulesWarning.js +45 -0
  315. package/lib/errors/DynamicExportsWarning.js +30 -0
  316. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  317. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  318. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  319. package/lib/errors/EvalUsageWarning.js +28 -0
  320. package/lib/errors/HookWebpackError.js +5 -5
  321. package/lib/errors/HotspotsWarning.js +57 -0
  322. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  323. package/lib/errors/InlinedAssetsWarning.js +36 -0
  324. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  325. package/lib/errors/LargeModulesWarning.js +45 -0
  326. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  327. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  328. package/lib/errors/MixedExportsWarning.js +41 -0
  329. package/lib/errors/ModuleDependencyError.js +13 -16
  330. package/lib/errors/ModuleDependencyWarning.js +5 -15
  331. package/lib/errors/ModuleHashingError.js +1 -1
  332. package/lib/errors/ModuleNotFoundError.js +2 -2
  333. package/lib/errors/ModuleParseError.js +1 -2
  334. package/lib/errors/ModuleRestoreError.js +1 -1
  335. package/lib/errors/ModuleStoreError.js +1 -1
  336. package/lib/errors/NodeStuffInWebError.js +1 -1
  337. package/lib/errors/OsDependentRuleWarning.js +31 -0
  338. package/lib/errors/PureAnnotationsWarning.js +36 -0
  339. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  340. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  341. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  342. package/lib/errors/TinyChunksWarning.js +40 -0
  343. package/lib/errors/TopLevelThisWarning.js +34 -0
  344. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  345. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  346. package/lib/errors/UnusedAliasesWarning.js +29 -0
  347. package/lib/errors/UnusedDefinesWarning.js +29 -0
  348. package/lib/errors/UnusedExternalsWarning.js +29 -0
  349. package/lib/errors/UnusedReexportsWarning.js +42 -0
  350. package/lib/errors/UnusedRuleWarning.js +29 -0
  351. package/lib/errors/WebpackError.js +9 -5
  352. package/lib/errors/deriveStackFromNestedError.js +90 -0
  353. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  354. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  355. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  356. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +155 -62
  357. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  358. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  359. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  360. package/lib/hmr/lazyCompilationBackend.js +9 -6
  361. package/lib/hmr/parserHooks.js +56 -0
  362. package/lib/html/HtmlGenerator.js +277 -77
  363. package/lib/html/HtmlModule.js +7 -3
  364. package/lib/html/HtmlModulesPlugin.js +282 -162
  365. package/lib/html/HtmlParser.js +31 -86
  366. package/lib/html/data.js +1928 -0
  367. package/lib/html/htmlMinify.js +288 -0
  368. package/lib/html/syntax.js +5557 -1155
  369. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  370. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  371. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  372. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  373. package/lib/ids/IdHelpers.js +7 -8
  374. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  375. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  376. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  377. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  378. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  379. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  380. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  381. package/lib/index.js +10 -0
  382. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  383. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  384. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  385. package/lib/javascript/ChunkHelpers.js +1 -1
  386. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  387. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  388. package/lib/javascript/JavascriptGenerator.js +65 -165
  389. package/lib/javascript/JavascriptModule.js +9 -3
  390. package/lib/javascript/JavascriptModulesPlugin.js +98 -113
  391. package/lib/javascript/JavascriptParser.js +242 -99
  392. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  393. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  394. package/lib/javascript/StartupHelpers.js +55 -9
  395. package/lib/javascript/syntax.js +2678 -232
  396. package/lib/json/JsonData.js +8 -4
  397. package/lib/json/JsonGenerator.js +38 -16
  398. package/lib/json/JsonModule.js +7 -3
  399. package/lib/json/JsonModulesPlugin.js +1 -1
  400. package/lib/json/JsonParser.js +5 -6
  401. package/lib/library/AbstractLibraryPlugin.js +20 -14
  402. package/lib/library/AmdLibraryPlugin.js +11 -7
  403. package/lib/library/AssignLibraryPlugin.js +19 -13
  404. package/lib/library/EnableLibraryPlugin.js +2 -2
  405. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  406. package/lib/library/JsonpLibraryPlugin.js +11 -7
  407. package/lib/library/ModuleLibraryPlugin.js +256 -64
  408. package/lib/library/SystemLibraryPlugin.js +12 -8
  409. package/lib/library/UmdLibraryPlugin.js +62 -25
  410. package/lib/loaders/LoaderRunner.js +14 -1
  411. package/lib/loaders/loadLoader.js +8 -4
  412. package/lib/logging/createConsoleLogger.js +7 -4
  413. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  414. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  415. package/lib/node/NodeSourcePlugin.js +1 -1
  416. package/lib/node/NodeTargetPlugin.js +4 -3
  417. package/lib/node/NodeTemplatePlugin.js +1 -1
  418. package/lib/node/NodeWatchFileSystem.js +70 -9
  419. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  420. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +72 -19
  421. package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
  422. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  423. package/lib/node/nodeConsole.js +7 -3
  424. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  425. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  426. package/lib/optimize/ConcatenatedModule.js +985 -470
  427. package/lib/optimize/ConstExportsPlugin.js +11 -7
  428. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  429. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  430. package/lib/optimize/InlineExports.js +9 -5
  431. package/lib/optimize/InnerGraph.js +28 -12
  432. package/lib/optimize/InnerGraphPlugin.js +23 -18
  433. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  434. package/lib/optimize/MangleExportsPlugin.js +7 -8
  435. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  436. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  437. package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
  438. package/lib/optimize/RealContentHashPlugin.js +10 -6
  439. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  440. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  441. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  442. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  443. package/lib/optimize/SplitChunksPlugin.js +86 -24
  444. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  445. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  446. package/lib/performance/BroadContextsPlugin.js +142 -0
  447. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  448. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  449. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  450. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  451. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  452. package/lib/performance/DynamicExportsPlugin.js +120 -0
  453. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  454. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  455. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  456. package/lib/performance/EvalUsagePlugin.js +115 -0
  457. package/lib/performance/HotspotsPlugin.js +296 -0
  458. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  459. package/lib/performance/LargeModulesPlugin.js +126 -0
  460. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  461. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  462. package/lib/performance/MixedExportsPlugin.js +136 -0
  463. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  464. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  465. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  466. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  467. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  468. package/lib/performance/SizeLimitsPlugin.js +139 -7
  469. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  470. package/lib/performance/TinyChunksPlugin.js +128 -0
  471. package/lib/performance/TopLevelThisPlugin.js +208 -0
  472. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  473. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  474. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  475. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  476. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  477. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  478. package/lib/performance/getModuleSize.js +22 -0
  479. package/lib/performance/getSourceModules.js +22 -0
  480. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  481. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  482. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  483. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  484. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  485. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ResourceHintPlugin.js +295 -78
  487. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  488. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  489. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  490. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  491. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  492. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  493. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  494. package/lib/rules/RuleSetCompiler.js +146 -12
  495. package/lib/rules/UseEffectRulePlugin.js +18 -11
  496. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  497. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  498. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  499. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  500. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  501. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  502. package/lib/runtime/CompatRuntimeModule.js +5 -3
  503. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  504. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  505. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  506. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  507. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  508. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  509. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  510. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  511. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  512. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  513. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  514. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  515. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  516. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  517. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  518. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  519. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  520. package/lib/runtime/NonceRuntimeModule.js +10 -0
  521. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  522. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  523. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  524. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  525. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  526. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  527. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  528. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  529. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  530. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  531. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  532. package/lib/runtime/baseUri.js +63 -0
  533. package/lib/schemes/DataUriPlugin.js +1 -1
  534. package/lib/schemes/FileUriPlugin.js +1 -1
  535. package/lib/schemes/HttpUriPlugin.js +24 -15
  536. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  537. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  538. package/lib/serialization/BinaryMiddleware.js +4 -4
  539. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  540. package/lib/serialization/FileMiddleware.js +7 -7
  541. package/lib/serialization/ObjectMiddleware.js +139 -114
  542. package/lib/serialization/PlainObjectSerializer.js +19 -16
  543. package/lib/sharing/ConsumeSharedModule.js +30 -21
  544. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  545. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  546. package/lib/sharing/ProvideSharedModule.js +25 -16
  547. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  548. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  549. package/lib/sharing/SharePlugin.js +17 -5
  550. package/lib/sharing/ShareRuntimeModule.js +4 -4
  551. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  552. package/lib/sharing/utils.js +1 -3
  553. package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
  554. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  555. package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
  556. package/lib/stats/StatsFactory.js +25 -26
  557. package/lib/stats/StatsPrinter.js +16 -12
  558. package/lib/typescript/TypeScriptPlugin.js +12 -14
  559. package/lib/url/URLParserPlugin.js +26 -13
  560. package/lib/util/AsyncQueue.js +4 -3
  561. package/lib/util/Hash.js +5 -1
  562. package/lib/util/LazySet.js +35 -22
  563. package/lib/util/LocConverter.js +36 -13
  564. package/lib/util/SourceProcessor.js +1050 -24
  565. package/lib/util/StringXor.js +1 -1
  566. package/lib/util/chainedImports.js +9 -5
  567. package/lib/util/cleverMerge.js +1 -1
  568. package/lib/util/comparators.js +45 -14
  569. package/lib/util/concatenate.js +203 -77
  570. package/lib/util/conventions.js +5 -1
  571. package/lib/util/createHash.js +2 -2
  572. package/lib/util/createHooksRegistry.js +8 -10
  573. package/lib/util/dataURL.js +225 -1
  574. package/lib/util/extractSourceMap.js +4 -3
  575. package/lib/util/findCaseMismatch.js +139 -0
  576. package/lib/util/formatLocation.js +1 -2
  577. package/lib/util/fs.js +22 -5
  578. package/lib/util/globUtils.js +298 -24
  579. package/lib/util/hash/BatchedHash.js +5 -1
  580. package/lib/util/hash/BulkUpdateHash.js +5 -1
  581. package/lib/util/hash/DebugHash.js +5 -1
  582. package/lib/util/hash/hash-digest.js +6 -2
  583. package/lib/util/identifier.js +4 -0
  584. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  585. package/lib/util/internalSerializables.js +6 -0
  586. package/lib/util/lazyModule.js +56 -0
  587. package/lib/util/makeSerializable.js +7 -3
  588. package/lib/util/matchAlias.js +25 -0
  589. package/lib/util/mimeTypes.js +11 -5
  590. package/lib/util/nonNumericOnlyHash.js +4 -3
  591. package/lib/util/parseJson.js +5 -3
  592. package/lib/util/preloadModuleType.js +32 -0
  593. package/lib/util/registerExternalSerializer.js +7 -5
  594. package/lib/util/runtime.js +2 -2
  595. package/lib/util/semver.js +1 -1
  596. package/lib/util/serialization.js +28 -28
  597. package/lib/util/source.js +2 -2
  598. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  599. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  600. package/lib/wasm/wasmModuleFilename.js +54 -0
  601. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  602. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  603. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  604. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  605. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  606. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  607. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  608. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  609. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  610. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  611. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  612. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  613. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  614. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  615. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  616. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  617. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  618. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  619. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  620. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  621. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  622. package/lib/web/JsonpTemplatePlugin.js +2 -2
  623. package/lib/webpack.js +22 -11
  624. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  625. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  626. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  627. package/module.d.ts +1 -0
  628. package/package.json +32 -25
  629. package/schemas/WebpackOptions.check.js +1 -1
  630. package/schemas/WebpackOptions.json +670 -36
  631. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  632. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  634. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  635. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  636. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  637. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  639. package/types.d.ts +3144 -454
  640. 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,34 +197,38 @@ 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
 
122
204
  // Tree runtime requirements whose only effect is attaching a zero-arg runtime
123
205
  // module to the chunk. Conditional / argument-taking ones stay as explicit taps.
124
- /** @type {[string, (new () => import("./RuntimeModule"))][]} */
206
+ /** @type {[string, () => Promise<new () => RuntimeModule>][]} */
125
207
  const SIMPLE_TREE_RUNTIME_MODULES = [
126
- [RuntimeGlobals.definePropertyGetters, DefinePropertyGettersRuntimeModule],
127
- [RuntimeGlobals.makeNamespaceObject, MakeNamespaceObjectRuntimeModule],
208
+ [RuntimeGlobals.makeNamespaceObject, getMakeNamespaceObjectRuntimeModule],
128
209
  [
129
210
  RuntimeGlobals.createFakeNamespaceObject,
130
- CreateFakeNamespaceObjectRuntimeModule
211
+ getCreateFakeNamespaceObjectRuntimeModule
131
212
  ],
132
- [RuntimeGlobals.hasOwnProperty, HasOwnPropertyRuntimeModule],
133
- [RuntimeGlobals.compatGetDefaultExport, CompatGetDefaultExportRuntimeModule],
134
- [RuntimeGlobals.commonJsWrap, CommonJsWrapRuntimeModule],
213
+ [RuntimeGlobals.hasOwnProperty, getHasOwnPropertyRuntimeModule],
214
+ [
215
+ RuntimeGlobals.compatGetDefaultExport,
216
+ getCompatGetDefaultExportRuntimeModule
217
+ ],
218
+ [RuntimeGlobals.concatenationWrap, getConcatenationWrapRuntimeModule],
219
+ [RuntimeGlobals.constructRequire, getConstructRequireRuntimeModule],
135
220
  [
136
221
  RuntimeGlobals.setAnonymousDefaultName,
137
- SetAnonymousDefaultNameRuntimeModule
222
+ getSetAnonymousDefaultNameRuntimeModule
138
223
  ],
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]
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]
147
232
  ];
148
233
 
149
234
  /**
@@ -155,18 +240,6 @@ const usesFullHash = (template) => {
155
240
  return kinds.has("fullhash") || kinds.has("hash");
156
241
  };
157
242
 
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
243
  const PLUGIN_NAME = "RuntimePlugin";
171
244
 
172
245
  class RuntimePlugin {
@@ -227,34 +300,52 @@ class RuntimePlugin {
227
300
  }
228
301
  for (const [
229
302
  runtimeGlobal,
230
- RuntimeModule
303
+ getRuntimeModule
231
304
  ] of SIMPLE_TREE_RUNTIME_MODULES) {
232
305
  compilation.hooks.runtimeRequirementInTree
233
306
  .for(runtimeGlobal)
234
307
  .tap(PLUGIN_NAME, (chunk) => {
235
- compilation.addRuntimeModule(chunk, new RuntimeModule());
308
+ compilation.addLazyRuntimeModule(
309
+ chunk,
310
+ getRuntimeModule,
311
+ (Ctor) => new Ctor()
312
+ );
236
313
  return true;
237
314
  });
238
315
  }
316
+ compilation.hooks.runtimeRequirementInTree
317
+ .for(RuntimeGlobals.definePropertyGetters)
318
+ .tap(PLUGIN_NAME, (chunk, runtimeRequirement) => {
319
+ compilation.addLazyRuntimeModule(
320
+ chunk,
321
+ getDefinePropertyGettersRuntimeModule,
322
+ (Ctor) => new Ctor(runtimeRequirement)
323
+ );
324
+ return true;
325
+ });
239
326
  compilation.hooks.runtimeRequirementInTree
240
327
  .for(RuntimeGlobals.makeOptimizedDeferredNamespaceObject)
241
328
  .tap(PLUGIN_NAME, (chunk, runtimeRequirement) => {
242
- compilation.addRuntimeModule(
329
+ const asyncModule = runtimeRequirement.has(
330
+ RuntimeGlobals.asyncModule
331
+ );
332
+ compilation.addLazyRuntimeModule(
243
333
  chunk,
244
- new MakeOptimizedDeferredNamespaceObjectRuntimeModule(
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
340
  .for(RuntimeGlobals.makeDeferredNamespaceObject)
252
341
  .tap(PLUGIN_NAME, (chunk, runtimeRequirement) => {
253
- compilation.addRuntimeModule(
342
+ const asyncModule = runtimeRequirement.has(
343
+ RuntimeGlobals.asyncModule
344
+ );
345
+ compilation.addLazyRuntimeModule(
254
346
  chunk,
255
- new MakeDeferredNamespaceObjectRuntimeModule(
256
- runtimeRequirement.has(RuntimeGlobals.asyncModule)
257
- )
347
+ getMakeDeferredNamespaceObjectRuntimeModule,
348
+ (Ctor) => new Ctor(asyncModule)
258
349
  );
259
350
  return true;
260
351
  });
@@ -270,7 +361,6 @@ class RuntimePlugin {
270
361
  : globalPublicPath;
271
362
 
272
363
  if (publicPath === "auto") {
273
- const module = new AutoPublicPathRuntimeModule();
274
364
  // A worklet chunk reads `import.meta.url`, so it needs neither the
275
365
  // worker-scope detection nor the `globalThis` polyfill.
276
366
  if (
@@ -281,15 +371,24 @@ class RuntimePlugin {
281
371
  set.add(RuntimeGlobals.global);
282
372
  }
283
373
 
284
- compilation.addRuntimeModule(chunk, module);
374
+ compilation.addLazyRuntimeModule(
375
+ chunk,
376
+ getAutoPublicPathRuntimeModule,
377
+ (Ctor) => new Ctor()
378
+ );
285
379
  } else {
286
- const module = new PublicPathRuntimeModule(publicPath);
380
+ const fullHash =
381
+ typeof publicPath !== "string" || usesFullHash(publicPath);
287
382
 
288
- if (typeof publicPath !== "string" || usesFullHash(publicPath)) {
289
- module.fullHash = true;
290
- }
291
-
292
- 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
+ );
293
392
  }
294
393
  return true;
295
394
  });
@@ -297,9 +396,10 @@ class RuntimePlugin {
297
396
  .for(RuntimeGlobals.asyncModule)
298
397
  .tap(PLUGIN_NAME, (chunk) => {
299
398
  const experiments = compilation.options.experiments;
300
- compilation.addRuntimeModule(
399
+ compilation.addLazyRuntimeModule(
301
400
  chunk,
302
- new AsyncModuleRuntimeModule(experiments.deferImport)
401
+ getAsyncModuleRuntimeModule,
402
+ (Ctor) => new Ctor(experiments.deferImport)
303
403
  );
304
404
  return true;
305
405
  });
@@ -307,9 +407,10 @@ class RuntimePlugin {
307
407
  .for(RuntimeGlobals.asyncModuleGenerator)
308
408
  .tap(PLUGIN_NAME, (chunk, set) => {
309
409
  set.add(RuntimeGlobals.asyncModule);
310
- compilation.addRuntimeModule(
410
+ compilation.addLazyRuntimeModule(
311
411
  chunk,
312
- new AsyncModuleGeneratorRuntimeModule()
412
+ getAsyncModuleGeneratorRuntimeModule,
413
+ (Ctor) => new Ctor()
313
414
  );
314
415
  return true;
315
416
  });
@@ -324,9 +425,10 @@ class RuntimePlugin {
324
425
  (compilation.outputOptions.library).type;
325
426
 
326
427
  if (libraryType === "system") {
327
- compilation.addRuntimeModule(
428
+ compilation.addLazyRuntimeModule(
328
429
  chunk,
329
- new SystemContextRuntimeModule()
430
+ getSystemContextRuntimeModule,
431
+ (Ctor) => new Ctor()
330
432
  );
331
433
  }
332
434
  return true;
@@ -340,27 +442,27 @@ class RuntimePlugin {
340
442
  ) {
341
443
  set.add(RuntimeGlobals.getFullHash);
342
444
  }
343
- 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(
344
450
  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(
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(
355
460
  chunk,
356
461
  compilation.outputOptions
357
- )
358
- );
359
- },
360
- set.has(RuntimeGlobals.hmrDownloadUpdateHandlers),
361
- typeof compilation.outputOptions.chunkFilename === "string" &&
362
- usesFullHashWithDigest(compilation.outputOptions.chunkFilename)
363
- )
462
+ ),
463
+ hmr,
464
+ fullHashDigest
465
+ )
364
466
  );
365
467
  return true;
366
468
  });
@@ -368,9 +470,10 @@ class RuntimePlugin {
368
470
  .for(RuntimeGlobals.getWorkletBootstrap)
369
471
  .tap(PLUGIN_NAME, (chunk, set) => {
370
472
  set.add(RuntimeGlobals.baseURI);
371
- compilation.addRuntimeModule(
473
+ compilation.addLazyRuntimeModule(
372
474
  chunk,
373
- new GetWorkletBootstrapRuntimeModule()
475
+ getGetWorkletBootstrapRuntimeModule,
476
+ (Ctor) => new Ctor()
374
477
  );
375
478
  return true;
376
479
  });
@@ -383,29 +486,32 @@ class RuntimePlugin {
383
486
  ) {
384
487
  set.add(RuntimeGlobals.getFullHash);
385
488
  }
386
- 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(
387
494
  chunk,
388
- new GetChunkFilenameRuntimeModule(
389
- "css",
390
- "css",
391
- RuntimeGlobals.getChunkCssFilename,
392
- (chunk) => {
393
- 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;
394
503
 
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
- )
504
+ return (
505
+ cssModulePlugin.chunkHasCss(chunk, chunkGraph) &&
506
+ cssModulePlugin.getChunkFilenameTemplate(
507
+ chunk,
508
+ compilation.outputOptions
509
+ )
510
+ );
511
+ },
512
+ hmr,
513
+ fullHashDigest
514
+ )
409
515
  );
410
516
  return true;
411
517
  });
@@ -415,20 +521,40 @@ class RuntimePlugin {
415
521
  if (usesFullHash(compilation.outputOptions.hotUpdateChunkFilename)) {
416
522
  set.add(RuntimeGlobals.getFullHash);
417
523
  }
418
- 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(
419
555
  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
- )
556
+ getCssServerStylesRuntimeModule,
557
+ (Ctor) => new Ctor()
432
558
  );
433
559
  return true;
434
560
  });
@@ -438,16 +564,35 @@ class RuntimePlugin {
438
564
  if (usesFullHash(compilation.outputOptions.hotUpdateMainFilename)) {
439
565
  set.add(RuntimeGlobals.getFullHash);
440
566
  }
441
- compilation.addRuntimeModule(
567
+ compilation.addLazyRuntimeModule(
442
568
  chunk,
443
- new GetMainFilenameRuntimeModule(
444
- "update manifest",
445
- RuntimeGlobals.getUpdateManifestFilename,
446
- compilation.outputOptions.hotUpdateMainFilename
447
- )
569
+ getGetMainFilenameRuntimeModule,
570
+ (Ctor) =>
571
+ new Ctor(
572
+ "update manifest",
573
+ RuntimeGlobals.getUpdateManifestFilename,
574
+ compilation.outputOptions.hotUpdateMainFilename
575
+ )
448
576
  );
449
577
  return true;
450
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
+ };
451
596
  compilation.hooks.runtimeRequirementInTree
452
597
  .for(RuntimeGlobals.ensureChunk)
453
598
  .tap(PLUGIN_NAME, (chunk, set) => {
@@ -455,12 +600,15 @@ class RuntimePlugin {
455
600
  if (hasAsyncChunks) {
456
601
  set.add(RuntimeGlobals.ensureChunkHandlers);
457
602
  }
458
- compilation.addRuntimeModule(
459
- chunk,
460
- new EnsureChunkRuntimeModule(set)
461
- );
603
+ addEnsureChunkRuntimeModule(chunk, set);
462
604
  return true;
463
605
  });
606
+ compilation.hooks.runtimeRequirementInTree
607
+ .for(RuntimeGlobals.ensureChunkHandlers)
608
+ .tap(PLUGIN_NAME, (chunk, set) => {
609
+ // No bail: every other plugin attaching a handler taps this same key.
610
+ addEnsureChunkRuntimeModule(chunk, set);
611
+ });
464
612
  compilation.hooks.runtimeRequirementInTree
465
613
  .for(RuntimeGlobals.ensureChunkIncludeEntries)
466
614
  .tap(PLUGIN_NAME, (chunk, set) => {
@@ -476,9 +624,10 @@ class RuntimePlugin {
476
624
  set.add(RuntimeGlobals.createScriptUrl);
477
625
  }
478
626
  const withFetchPriority = set.has(RuntimeGlobals.hasFetchPriority);
479
- compilation.addRuntimeModule(
627
+ compilation.addLazyRuntimeModule(
480
628
  chunk,
481
- new LoadScriptRuntimeModule(withCreateScriptUrl, withFetchPriority)
629
+ getLoadScriptRuntimeModule,
630
+ (Ctor) => new Ctor(withCreateScriptUrl, withFetchPriority)
482
631
  );
483
632
  return true;
484
633
  });
@@ -488,7 +637,11 @@ class RuntimePlugin {
488
637
  if (compilation.outputOptions.trustedTypes) {
489
638
  set.add(RuntimeGlobals.getTrustedTypesPolicy);
490
639
  }
491
- compilation.addRuntimeModule(chunk, new CreateScriptRuntimeModule());
640
+ compilation.addLazyRuntimeModule(
641
+ chunk,
642
+ getCreateScriptRuntimeModule,
643
+ (Ctor) => new Ctor()
644
+ );
492
645
  return true;
493
646
  });
494
647
  compilation.hooks.runtimeRequirementInTree
@@ -497,18 +650,20 @@ class RuntimePlugin {
497
650
  if (compilation.outputOptions.trustedTypes) {
498
651
  set.add(RuntimeGlobals.getTrustedTypesPolicy);
499
652
  }
500
- compilation.addRuntimeModule(
653
+ compilation.addLazyRuntimeModule(
501
654
  chunk,
502
- new CreateScriptUrlRuntimeModule()
655
+ getCreateScriptUrlRuntimeModule,
656
+ (Ctor) => new Ctor()
503
657
  );
504
658
  return true;
505
659
  });
506
660
  compilation.hooks.runtimeRequirementInTree
507
661
  .for(RuntimeGlobals.getTrustedTypesPolicy)
508
662
  .tap(PLUGIN_NAME, (chunk, set) => {
509
- compilation.addRuntimeModule(
663
+ compilation.addLazyRuntimeModule(
510
664
  chunk,
511
- new GetTrustedTypesPolicyRuntimeModule(set)
665
+ getGetTrustedTypesPolicyRuntimeModule,
666
+ (Ctor) => new Ctor(set)
512
667
  );
513
668
  return true;
514
669
  });
@@ -516,7 +671,11 @@ class RuntimePlugin {
516
671
  .for(RuntimeGlobals.baseURI)
517
672
  .tap(PLUGIN_NAME, (chunk) => {
518
673
  if (isChunkLoadingDisabledForChunk(chunk)) {
519
- compilation.addRuntimeModule(chunk, new BaseUriRuntimeModule());
674
+ compilation.addLazyRuntimeModule(
675
+ chunk,
676
+ getBaseUriRuntimeModule,
677
+ (Ctor) => new Ctor()
678
+ );
520
679
  return true;
521
680
  }
522
681
  });
@@ -531,7 +690,11 @@ class RuntimePlugin {
531
690
  mainTemplate.hooks.requireEnsure.isUsed() ||
532
691
  mainTemplate.hooks.requireExtensions.isUsed()
533
692
  ) {
534
- compilation.addRuntimeModule(chunk, new CompatRuntimeModule());
693
+ compilation.addLazyRuntimeModule(
694
+ chunk,
695
+ getCompatRuntimeModule,
696
+ (Ctor) => new Ctor()
697
+ );
535
698
  }
536
699
  }
537
700
  );