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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (641) hide show
  1. package/README.md +7 -7
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +10 -10
  4. package/lib/APIPlugin.js +123 -17
  5. package/lib/AsyncDependenciesBlock.js +10 -7
  6. package/lib/AutomaticPrefetchPlugin.js +1 -1
  7. package/lib/BannerPlugin.js +10 -6
  8. package/lib/CacheFacade.js +6 -6
  9. package/lib/Chunk.js +14 -11
  10. package/lib/ChunkGraph.js +43 -32
  11. package/lib/ChunkGroup.js +7 -7
  12. package/lib/ChunkTemplate.js +35 -44
  13. package/lib/CircularModulesPlugin.js +205 -28
  14. package/lib/CleanPlugin.js +15 -16
  15. package/lib/CodeGenerationResults.js +11 -8
  16. package/lib/CompatibilityPlugin.js +38 -7
  17. package/lib/Compilation.js +709 -414
  18. package/lib/Compiler.js +69 -42
  19. package/lib/ConcatenationScope.js +117 -8
  20. package/lib/ConditionalInitFragment.js +3 -3
  21. package/lib/ConstPlugin.js +13 -11
  22. package/lib/ContextExclusionPlugin.js +1 -1
  23. package/lib/ContextModule.js +146 -54
  24. package/lib/ContextModuleFactory.js +46 -14
  25. package/lib/ContextReplacementPlugin.js +12 -14
  26. package/lib/DefinePlugin.js +168 -57
  27. package/lib/DependenciesBlock.js +9 -6
  28. package/lib/Dependency.js +36 -16
  29. package/lib/DependencyTemplate.js +11 -12
  30. package/lib/DependencyTemplates.js +3 -3
  31. package/lib/DotenvPlugin.js +50 -13
  32. package/lib/DynamicEntryPlugin.js +8 -4
  33. package/lib/EntryOptionPlugin.js +8 -4
  34. package/lib/EntryPlugin.js +2 -2
  35. package/lib/Entrypoint.js +6 -2
  36. package/lib/EnvironmentPlugin.js +2 -2
  37. package/lib/EvalDevToolModulePlugin.js +8 -4
  38. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  39. package/lib/ExportsInfo.js +123 -19
  40. package/lib/ExportsInfoApiPlugin.js +2 -4
  41. package/lib/ExternalModule.js +242 -84
  42. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  43. package/lib/ExternalsPlugin.js +10 -6
  44. package/lib/FileSystemInfo.js +116 -42
  45. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  46. package/lib/FlagDependencyExportsPlugin.js +76 -19
  47. package/lib/FlagDependencyUsagePlugin.js +63 -57
  48. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  49. package/lib/Generator.js +36 -15
  50. package/lib/HotModuleReplacementPlugin.js +16 -44
  51. package/lib/IgnorePlugin.js +8 -4
  52. package/lib/IgnoreWarningsPlugin.js +2 -2
  53. package/lib/InitFragment.js +28 -36
  54. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  55. package/lib/LazyBarrel.js +3 -4
  56. package/lib/LibraryTemplatePlugin.js +10 -6
  57. package/lib/LoaderOptionsPlugin.js +7 -3
  58. package/lib/LoaderTargetPlugin.js +1 -1
  59. package/lib/MainTemplate.js +49 -42
  60. package/lib/ManifestPlugin.js +12 -11
  61. package/lib/Module.js +62 -33
  62. package/lib/ModuleFactory.js +3 -3
  63. package/lib/ModuleFilenameHelpers.js +22 -6
  64. package/lib/ModuleGraph.js +195 -21
  65. package/lib/ModuleGraphConnection.js +6 -13
  66. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  67. package/lib/ModuleTemplate.js +62 -63
  68. package/lib/MultiCompiler.js +130 -64
  69. package/lib/MultiStats.js +40 -9
  70. package/lib/MultiWatching.js +3 -3
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +29 -19
  73. package/lib/NormalModule.js +221 -156
  74. package/lib/NormalModuleFactory.js +563 -112
  75. package/lib/NormalModuleReplacementPlugin.js +5 -8
  76. package/lib/NullFactory.js +6 -2
  77. package/lib/OptionsApply.js +7 -3
  78. package/lib/Parser.js +7 -3
  79. package/lib/PlatformPlugin.js +2 -2
  80. package/lib/PrefetchPlugin.js +1 -1
  81. package/lib/ProgressPlugin.js +16 -13
  82. package/lib/ProvidePlugin.js +3 -5
  83. package/lib/RawModule.js +25 -17
  84. package/lib/RecordIdsPlugin.js +3 -3
  85. package/lib/RequestShortener.js +1 -1
  86. package/lib/ResolverFactory.js +2 -2
  87. package/lib/RuntimeGlobals.js +22 -10
  88. package/lib/RuntimeModule.js +29 -19
  89. package/lib/RuntimePlugin.js +346 -256
  90. package/lib/RuntimeTemplate.js +2792 -352
  91. package/lib/SelfModuleFactory.js +7 -3
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  93. package/lib/SourceMapDevToolPlugin.js +30 -20
  94. package/lib/Stats.js +3 -4
  95. package/lib/Template.js +55 -25
  96. package/lib/TemplatedPathPlugin.js +96 -14
  97. package/lib/UseStrictPlugin.js +4 -6
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  99. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  100. package/lib/WarnNoModeSetPlugin.js +1 -1
  101. package/lib/WatchIgnorePlugin.js +8 -6
  102. package/lib/Watching.js +8 -8
  103. package/lib/WebpackIsIncludedPlugin.js +2 -4
  104. package/lib/WebpackOptionsApply.js +308 -18
  105. package/lib/WebpackOptionsDefaulter.js +6 -2
  106. package/lib/asset/AssetBytesGenerator.js +12 -10
  107. package/lib/asset/AssetBytesParser.js +2 -4
  108. package/lib/asset/AssetGenerator.js +188 -95
  109. package/lib/asset/AssetModule.js +7 -3
  110. package/lib/asset/AssetModulesPlugin.js +110 -38
  111. package/lib/asset/AssetParser.js +9 -7
  112. package/lib/asset/AssetSourceGenerator.js +60 -13
  113. package/lib/asset/AssetSourceParser.js +2 -4
  114. package/lib/asset/RawDataUrlModule.js +24 -16
  115. package/lib/asset/WebManifestGenerator.js +8 -10
  116. package/lib/asset/WebManifestParser.js +24 -10
  117. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  118. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  119. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  120. package/lib/async-modules/isGeneratorLowered.js +4 -4
  121. package/lib/buildChunkGraph.js +36 -27
  122. package/lib/bun/BunTargetPlugin.js +1 -1
  123. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  124. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  125. package/lib/cache/IdleFileCachePlugin.js +2 -2
  126. package/lib/cache/MemoryCachePlugin.js +18 -10
  127. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  128. package/lib/cache/PackFileCacheStrategy.js +289 -28
  129. package/lib/cache/ResolverCachePlugin.js +38 -18
  130. package/lib/cache/getLazyHashedEtag.js +1 -2
  131. package/lib/cache/mergeEtags.js +1 -1
  132. package/lib/cli.js +1 -3
  133. package/lib/config/browserslistTargetHandler.js +41 -5
  134. package/lib/config/defaults.js +282 -81
  135. package/lib/config/defineConfig.js +10 -2
  136. package/lib/config/getClaimedAssetTypes.js +65 -0
  137. package/lib/config/normalization.js +36 -16
  138. package/lib/config/target.js +46 -3
  139. package/lib/container/ContainerEntryDependency.js +1 -1
  140. package/lib/container/ContainerEntryModule.js +24 -15
  141. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  142. package/lib/container/ContainerPlugin.js +9 -10
  143. package/lib/container/ContainerReferencePlugin.js +6 -2
  144. package/lib/container/FallbackDependency.js +1 -1
  145. package/lib/container/FallbackModule.js +24 -17
  146. package/lib/container/FallbackModuleFactory.js +7 -3
  147. package/lib/container/HoistContainerReferencesPlugin.js +53 -66
  148. package/lib/container/ModuleFederationPlugin.js +7 -18
  149. package/lib/container/RemoteModule.js +27 -19
  150. package/lib/container/RemoteRuntimeModule.js +10 -8
  151. package/lib/container/moduleFederationHooks.js +32 -0
  152. package/lib/css/CssGenerator.js +178 -44
  153. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  154. package/lib/css/CssLoadingRuntimeModule.js +82 -36
  155. package/lib/css/CssModule.js +10 -7
  156. package/lib/css/CssModulesPlugin.js +197 -106
  157. package/lib/css/CssParser.js +1248 -618
  158. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  159. package/lib/css/cssMinify.js +168 -0
  160. package/lib/css/data.js +5324 -0
  161. package/lib/css/syntax.js +10396 -952
  162. package/lib/debug/ProfilingPlugin.js +14 -9
  163. package/lib/deno/DenoTargetPlugin.js +1 -1
  164. package/lib/dependencies/AMDDefineDependency.js +112 -87
  165. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  166. package/lib/dependencies/AMDPlugin.js +9 -7
  167. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  168. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  169. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  170. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  171. package/lib/dependencies/AMDRequireDependency.js +8 -7
  172. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  173. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  174. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  175. package/lib/dependencies/CachedConstDependency.js +11 -8
  176. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  177. package/lib/dependencies/CommonJsExportRequireDependency.js +140 -45
  178. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  179. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  180. package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
  181. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
  182. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  183. package/lib/dependencies/CommonJsPlugin.js +35 -6
  184. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  185. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  186. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  187. package/lib/dependencies/ConstDependency.js +8 -9
  188. package/lib/dependencies/ContextDependency.js +12 -8
  189. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  190. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  191. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  192. package/lib/dependencies/ContextElementDependency.js +31 -12
  193. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  194. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  195. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  196. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  197. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  198. package/lib/dependencies/CssImportDependency.js +18 -9
  199. package/lib/dependencies/CssUrlDependency.js +17 -13
  200. package/lib/dependencies/DllEntryDependency.js +1 -1
  201. package/lib/dependencies/DynamicExports.js +2 -2
  202. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  203. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  204. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  205. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  206. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  207. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  208. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  209. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  210. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +15 -11
  211. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  212. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  213. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  214. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
  215. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  216. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  217. package/lib/dependencies/HarmonyExports.js +7 -4
  218. package/lib/dependencies/HarmonyImportDependency.js +28 -20
  219. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  220. package/lib/dependencies/HarmonyImportGuard.js +21 -30
  221. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  222. package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
  223. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  224. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  225. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  226. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  227. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  228. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  229. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  230. package/lib/dependencies/ImportContextDependency.js +2 -2
  231. package/lib/dependencies/ImportDependency.js +24 -20
  232. package/lib/dependencies/ImportEagerDependency.js +6 -9
  233. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  234. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  235. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  236. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  237. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  238. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  239. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  241. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  242. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  243. package/lib/dependencies/ImportParserPlugin.js +49 -35
  244. package/lib/dependencies/ImportPhase.js +12 -5
  245. package/lib/dependencies/ImportPlugin.js +7 -3
  246. package/lib/dependencies/ImportWeakDependency.js +6 -9
  247. package/lib/dependencies/JsonExportsDependency.js +11 -7
  248. package/lib/dependencies/LoaderDependency.js +2 -2
  249. package/lib/dependencies/LoaderImportDependency.js +2 -2
  250. package/lib/dependencies/LoaderPlugin.js +11 -7
  251. package/lib/dependencies/LocalModuleDependency.js +5 -5
  252. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  253. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  254. package/lib/dependencies/ModuleDependency.js +9 -6
  255. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  256. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  257. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  258. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  259. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  260. package/lib/dependencies/NullDependency.js +3 -3
  261. package/lib/dependencies/ProvidedDependency.js +14 -10
  262. package/lib/dependencies/PureExpressionDependency.js +9 -10
  263. package/lib/dependencies/RequireContextDependency.js +2 -2
  264. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  265. package/lib/dependencies/RequireContextPlugin.js +8 -4
  266. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  267. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  268. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  269. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  270. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  271. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  272. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  273. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  274. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  275. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  276. package/lib/dependencies/RequireResolveDependency.js +4 -4
  277. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  278. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  279. package/lib/dependencies/StaticExportsDependency.js +2 -2
  280. package/lib/dependencies/SystemPlugin.js +10 -6
  281. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  282. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  283. package/lib/dependencies/URLContextDependency.js +2 -2
  284. package/lib/dependencies/URLDependency.js +110 -64
  285. package/lib/dependencies/URLPlugin.js +7 -3
  286. package/lib/dependencies/UnsupportedDependency.js +4 -4
  287. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  288. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  289. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  290. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  291. package/lib/dependencies/WorkerDependency.js +28 -22
  292. package/lib/dependencies/WorkletDependency.js +15 -14
  293. package/lib/dependencies/getFunctionExpression.js +8 -4
  294. package/lib/dependencies/processExportInfo.js +5 -5
  295. package/lib/dll/DelegatedModule.js +34 -22
  296. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  297. package/lib/dll/DelegatedPlugin.js +2 -2
  298. package/lib/dll/DllEntryPlugin.js +2 -2
  299. package/lib/dll/DllModule.js +22 -15
  300. package/lib/dll/DllModuleFactory.js +7 -3
  301. package/lib/dll/DllPlugin.js +7 -5
  302. package/lib/dll/DllReferencePlugin.js +10 -7
  303. package/lib/dll/LibManifestPlugin.js +5 -5
  304. package/lib/electron/ElectronTargetPlugin.js +53 -49
  305. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  306. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  307. package/lib/errors/BroadContextsWarning.js +43 -0
  308. package/lib/errors/BuildCycleError.js +1 -1
  309. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  310. package/lib/errors/ChunkRenderError.js +1 -1
  311. package/lib/errors/CircularDependenciesWarning.js +38 -0
  312. package/lib/errors/CodeGenerationError.js +1 -1
  313. package/lib/errors/CommentCompilationWarning.js +1 -1
  314. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  315. package/lib/errors/DuplicateModulesWarning.js +45 -0
  316. package/lib/errors/DynamicExportsWarning.js +30 -0
  317. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  318. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  319. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  320. package/lib/errors/EvalUsageWarning.js +28 -0
  321. package/lib/errors/HookWebpackError.js +5 -5
  322. package/lib/errors/HotspotsWarning.js +57 -0
  323. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  324. package/lib/errors/InlinedAssetsWarning.js +36 -0
  325. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  326. package/lib/errors/LargeModulesWarning.js +45 -0
  327. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  328. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  329. package/lib/errors/MixedExportsWarning.js +41 -0
  330. package/lib/errors/ModuleDependencyError.js +13 -16
  331. package/lib/errors/ModuleDependencyWarning.js +5 -15
  332. package/lib/errors/ModuleHashingError.js +1 -1
  333. package/lib/errors/ModuleNotFoundError.js +2 -2
  334. package/lib/errors/ModuleParseError.js +1 -2
  335. package/lib/errors/ModuleRestoreError.js +1 -1
  336. package/lib/errors/ModuleStoreError.js +1 -1
  337. package/lib/errors/NodeStuffInWebError.js +1 -1
  338. package/lib/errors/OsDependentRuleWarning.js +31 -0
  339. package/lib/errors/PureAnnotationsWarning.js +36 -0
  340. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  341. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  342. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  343. package/lib/errors/TinyChunksWarning.js +40 -0
  344. package/lib/errors/TopLevelThisWarning.js +34 -0
  345. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  346. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  347. package/lib/errors/UnusedAliasesWarning.js +29 -0
  348. package/lib/errors/UnusedDefinesWarning.js +29 -0
  349. package/lib/errors/UnusedExternalsWarning.js +29 -0
  350. package/lib/errors/UnusedReexportsWarning.js +42 -0
  351. package/lib/errors/UnusedRuleWarning.js +29 -0
  352. package/lib/errors/WebpackError.js +9 -5
  353. package/lib/errors/deriveStackFromNestedError.js +90 -0
  354. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  355. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  356. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  357. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
  358. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  359. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  360. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  361. package/lib/hmr/lazyCompilationBackend.js +28 -10
  362. package/lib/hmr/parserHooks.js +56 -0
  363. package/lib/html/HtmlGenerator.js +299 -79
  364. package/lib/html/HtmlModule.js +7 -3
  365. package/lib/html/HtmlModulesPlugin.js +312 -174
  366. package/lib/html/HtmlParser.js +31 -86
  367. package/lib/html/data.js +1928 -0
  368. package/lib/html/htmlMinify.js +288 -0
  369. package/lib/html/syntax.js +7819 -3331
  370. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  371. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  372. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  373. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  374. package/lib/ids/IdHelpers.js +31 -18
  375. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  376. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  377. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  378. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  379. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  380. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  381. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  382. package/lib/index.js +10 -0
  383. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  384. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  385. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  386. package/lib/javascript/ChunkHelpers.js +1 -1
  387. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  388. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  389. package/lib/javascript/JavascriptGenerator.js +65 -165
  390. package/lib/javascript/JavascriptModule.js +9 -3
  391. package/lib/javascript/JavascriptModulesPlugin.js +181 -162
  392. package/lib/javascript/JavascriptParser.js +291 -112
  393. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  394. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  395. package/lib/javascript/StartupHelpers.js +55 -9
  396. package/lib/javascript/syntax.js +3403 -300
  397. package/lib/json/JsonData.js +8 -4
  398. package/lib/json/JsonGenerator.js +38 -16
  399. package/lib/json/JsonModule.js +7 -3
  400. package/lib/json/JsonModulesPlugin.js +1 -1
  401. package/lib/json/JsonParser.js +5 -6
  402. package/lib/library/AbstractLibraryPlugin.js +20 -14
  403. package/lib/library/AmdLibraryPlugin.js +11 -7
  404. package/lib/library/AssignLibraryPlugin.js +19 -13
  405. package/lib/library/EnableLibraryPlugin.js +2 -2
  406. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  407. package/lib/library/JsonpLibraryPlugin.js +11 -7
  408. package/lib/library/ModuleLibraryPlugin.js +256 -64
  409. package/lib/library/SystemLibraryPlugin.js +12 -8
  410. package/lib/library/UmdLibraryPlugin.js +62 -25
  411. package/lib/loaders/LoaderRunner.js +14 -1
  412. package/lib/loaders/loadLoader.js +8 -4
  413. package/lib/logging/createConsoleLogger.js +7 -4
  414. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  415. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  416. package/lib/node/NodeSourcePlugin.js +1 -1
  417. package/lib/node/NodeTargetPlugin.js +4 -3
  418. package/lib/node/NodeTemplatePlugin.js +1 -1
  419. package/lib/node/NodeWatchFileSystem.js +70 -9
  420. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  421. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +81 -20
  422. package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
  423. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  424. package/lib/node/nodeConsole.js +7 -3
  425. package/lib/optimize/AggressiveMergingPlugin.js +21 -17
  426. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  427. package/lib/optimize/ConcatenatedModule.js +996 -477
  428. package/lib/optimize/ConstExportsPlugin.js +11 -7
  429. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  430. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  431. package/lib/optimize/InlineExports.js +9 -5
  432. package/lib/optimize/InnerGraph.js +28 -12
  433. package/lib/optimize/InnerGraphPlugin.js +23 -18
  434. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  435. package/lib/optimize/MangleExportsPlugin.js +7 -8
  436. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  437. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  438. package/lib/optimize/ModuleConcatenationPlugin.js +124 -59
  439. package/lib/optimize/RealContentHashPlugin.js +20 -13
  440. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  441. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  442. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  443. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  444. package/lib/optimize/SplitChunksPlugin.js +232 -68
  445. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  446. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  447. package/lib/performance/BroadContextsPlugin.js +142 -0
  448. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  449. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  450. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  451. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  452. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  453. package/lib/performance/DynamicExportsPlugin.js +120 -0
  454. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  455. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  456. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  457. package/lib/performance/EvalUsagePlugin.js +115 -0
  458. package/lib/performance/HotspotsPlugin.js +296 -0
  459. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  460. package/lib/performance/LargeModulesPlugin.js +126 -0
  461. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  462. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  463. package/lib/performance/MixedExportsPlugin.js +136 -0
  464. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  465. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  466. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  467. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  468. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  469. package/lib/performance/SizeLimitsPlugin.js +139 -7
  470. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  471. package/lib/performance/TinyChunksPlugin.js +128 -0
  472. package/lib/performance/TopLevelThisPlugin.js +208 -0
  473. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  474. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  475. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  476. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  477. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  478. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  479. package/lib/performance/getModuleSize.js +22 -0
  480. package/lib/performance/getSourceModules.js +22 -0
  481. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  482. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  483. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  484. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  485. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  487. package/lib/prefetch/ResourceHintPlugin.js +377 -136
  488. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  489. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  490. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  491. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  492. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  493. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  494. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  495. package/lib/rules/RuleSetCompiler.js +146 -12
  496. package/lib/rules/UseEffectRulePlugin.js +18 -11
  497. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  498. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  499. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  500. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  501. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  502. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  503. package/lib/runtime/CompatRuntimeModule.js +5 -3
  504. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  505. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  506. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  507. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  508. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  509. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  510. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  511. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  512. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  513. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  514. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  515. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  516. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  517. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  518. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  519. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  520. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  521. package/lib/runtime/NonceRuntimeModule.js +10 -0
  522. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  523. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  524. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  525. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  526. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  527. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  528. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  529. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  530. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  531. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  532. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  533. package/lib/runtime/baseUri.js +63 -0
  534. package/lib/schemes/DataUriPlugin.js +1 -1
  535. package/lib/schemes/FileUriPlugin.js +1 -1
  536. package/lib/schemes/HttpUriPlugin.js +24 -15
  537. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  538. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  539. package/lib/serialization/BinaryMiddleware.js +274 -942
  540. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  541. package/lib/serialization/FileMiddleware.js +305 -66
  542. package/lib/serialization/ObjectMiddleware.js +139 -114
  543. package/lib/serialization/PlainObjectSerializer.js +19 -16
  544. package/lib/sharing/ConsumeSharedModule.js +30 -21
  545. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  546. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  547. package/lib/sharing/ProvideSharedModule.js +25 -16
  548. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  549. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  550. package/lib/sharing/SharePlugin.js +17 -5
  551. package/lib/sharing/ShareRuntimeModule.js +4 -4
  552. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  553. package/lib/sharing/utils.js +1 -3
  554. package/lib/stats/DefaultStatsFactoryPlugin.js +253 -226
  555. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  556. package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
  557. package/lib/stats/StatsFactory.js +56 -35
  558. package/lib/stats/StatsPrinter.js +16 -12
  559. package/lib/typescript/TypeScriptPlugin.js +12 -14
  560. package/lib/url/URLParserPlugin.js +26 -13
  561. package/lib/util/AsyncQueue.js +4 -3
  562. package/lib/util/Hash.js +5 -1
  563. package/lib/util/LazySet.js +35 -22
  564. package/lib/util/LocConverter.js +36 -13
  565. package/lib/util/SourceProcessor.js +1050 -24
  566. package/lib/util/StringXor.js +1 -1
  567. package/lib/util/chainedImports.js +9 -5
  568. package/lib/util/cleverMerge.js +1 -1
  569. package/lib/util/comparators.js +45 -14
  570. package/lib/util/concatenate.js +203 -77
  571. package/lib/util/conventions.js +5 -1
  572. package/lib/util/createHash.js +2 -2
  573. package/lib/util/createHooksRegistry.js +8 -10
  574. package/lib/util/dataURL.js +225 -1
  575. package/lib/util/extractSourceMap.js +4 -3
  576. package/lib/util/findCaseMismatch.js +139 -0
  577. package/lib/util/formatLocation.js +1 -2
  578. package/lib/util/fs.js +22 -5
  579. package/lib/util/globUtils.js +298 -24
  580. package/lib/util/hash/BatchedHash.js +5 -1
  581. package/lib/util/hash/BulkUpdateHash.js +5 -1
  582. package/lib/util/hash/DebugHash.js +5 -1
  583. package/lib/util/hash/hash-digest.js +6 -2
  584. package/lib/util/identifier.js +25 -1
  585. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  586. package/lib/util/internalSerializables.js +6 -0
  587. package/lib/util/lazyModule.js +56 -0
  588. package/lib/util/makeSerializable.js +7 -3
  589. package/lib/util/matchAlias.js +25 -0
  590. package/lib/util/mimeTypes.js +11 -5
  591. package/lib/util/nonNumericOnlyHash.js +4 -3
  592. package/lib/util/parseJson.js +5 -3
  593. package/lib/util/preloadModuleType.js +32 -0
  594. package/lib/util/registerExternalSerializer.js +7 -5
  595. package/lib/util/runtime.js +2 -2
  596. package/lib/util/semver.js +1 -1
  597. package/lib/util/serialization.js +28 -28
  598. package/lib/util/source.js +2 -2
  599. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  600. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  601. package/lib/wasm/wasmModuleFilename.js +54 -0
  602. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  603. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  604. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  605. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  606. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  607. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  608. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  609. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  610. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  611. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  612. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  613. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  614. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  615. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  616. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  617. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  618. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  619. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  620. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  621. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  622. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  623. package/lib/web/JsonpTemplatePlugin.js +2 -2
  624. package/lib/webpack.js +22 -11
  625. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  626. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  627. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  628. package/module.d.ts +1 -0
  629. package/package.json +37 -30
  630. package/schemas/WebpackOptions.check.js +1 -1
  631. package/schemas/WebpackOptions.json +780 -91
  632. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  634. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  635. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  636. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  637. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  639. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  640. package/types.d.ts +4013 -738
  641. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -10,15 +10,26 @@ const Template = require("../Template");
10
10
  const { reEncodeDigest } = require("../TemplatedPathPlugin");
11
11
  const { first } = require("../util/SetHelpers");
12
12
 
13
- /** @typedef {import("../Chunk")} Chunk */
14
- /** @typedef {import("../Chunk").ChunkId} ChunkId */
15
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
16
- /** @typedef {import("../Compilation")} Compilation */
17
- /** @typedef {import("../Compilation").HashWithLengthFunction} HashWithLengthFunction */
18
- /** @typedef {import("../Compilation").HashWithDigestFunction} HashWithDigestFunction */
19
- /** @typedef {import("../Chunk").ChunkFilenameTemplate} ChunkFilenameTemplate */
13
+ /** @import Chunk, { ChunkId, ChunkFilenameTemplate } from "../Chunk" */
14
+ /** @import ChunkGraph from "../ChunkGraph" */
15
+ /**
16
+ * @import Compilation, {
17
+ * HashWithLengthFunction,
18
+ * HashWithDigestFunction
19
+ * } from "../Compilation"
20
+ */
20
21
 
21
22
  class GetChunkFilenameRuntimeModule extends RuntimeModule {
23
+ /**
24
+ * Returns true, if the runtime module should get it's own scope.
25
+ * When false, `generate()` must emit complete statements ending with `;`
26
+ * so a following runtime IIFE is not parsed as a call (ASI).
27
+ * @returns {boolean} true, if the runtime module should get it's own scope
28
+ */
29
+ shouldIsolate() {
30
+ return false;
31
+ }
32
+
22
33
  /**
23
34
  * @param {string} contentType the contentType to use the content hash for
24
35
  * @param {string} name kind of filename
@@ -173,6 +184,15 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
173
184
  /** @type {Set<Chunk>} */
174
185
  const dynamicUrlChunks = new Set();
175
186
 
187
+ /**
188
+ * Drops the dead empty string a leading placeholder leaves, only when a
189
+ * quoted operand ends the expression so the `+` chain stays a string.
190
+ * @param {string} expr concatenation expression
191
+ * @returns {string} the expression without its dead empty string
192
+ */
193
+ const dropDeadConcatOperand = (expr) =>
194
+ expr.startsWith('"" + ') && expr.endsWith('"') ? expr.slice(5) : expr;
195
+
176
196
  /**
177
197
  * @param {Chunk} c the chunk
178
198
  * @param {ChunkFilenameTemplate} chunkFilename the filename template for the chunk
@@ -244,9 +264,10 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
244
264
  },
245
265
  contentHashType: contentType
246
266
  });
247
- let set = staticUrls.get(staticChunkFilename);
267
+ const url = dropDeadConcatOperand(staticChunkFilename);
268
+ let set = staticUrls.get(url);
248
269
  if (set === undefined) {
249
- staticUrls.set(staticChunkFilename, (set = new Set()));
270
+ staticUrls.set(url, (set = new Set()));
250
271
  }
251
272
  set.add(c.id);
252
273
  };
@@ -306,7 +327,7 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
306
327
  const mapExprWithLength = (fn) => (length) =>
307
328
  `" + ${createMap((c) => `${fn(c)}`.slice(0, length))} + "`;
308
329
 
309
- const url =
330
+ const dynamicUrl =
310
331
  dynamicFilename &&
311
332
  compilation.getPath(JSON.stringify(dynamicFilename), {
312
333
  hash: `" + ${RuntimeGlobals.getFullHash}() + "`,
@@ -343,35 +364,39 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
343
364
  },
344
365
  contentHashType: contentType
345
366
  });
367
+ const url = dynamicUrl && dropDeadConcatOperand(dynamicUrl);
346
368
 
369
+ const comment = `// This function allow to reference ${includedChunksMessages.join(
370
+ " and "
371
+ )}`;
372
+ // Nothing to branch on, so the whole function is the template expression.
373
+ if (staticUrls.size === 0) {
374
+ return Template.asString([
375
+ comment,
376
+ // `url` is `undefined` when no chunk contributes a filename; the
377
+ // function then returns `undefined`, as it did before.
378
+ `${global} = ${runtimeTemplate.returningFunction(`${url}`, "chunkId")};`
379
+ ]);
380
+ }
347
381
  return Template.asString([
348
- `// This function allow to reference ${includedChunksMessages.join(
349
- " and "
350
- )}`,
351
- `${global} = ${runtimeTemplate.basicFunction(
352
- "chunkId",
353
-
354
- staticUrls.size > 0
355
- ? [
356
- "// return url for filenames not based on template",
357
- // it minimizes to `x===1?"...":x===2?"...":"..."`
358
- Template.asString(
359
- Array.from(staticUrls, ([url, ids]) => {
360
- const condition =
361
- ids.size === 1
362
- ? `chunkId === ${JSON.stringify(first(ids))}`
363
- : `{${Array.from(
364
- ids,
365
- (id) => `${JSON.stringify(id)}:1`
366
- ).join(",")}}[chunkId]`;
367
- return `if (${condition}) return ${url};`;
368
- })
369
- ),
370
- "// return url for filenames based on template",
371
- `return ${url};`
372
- ]
373
- : ["// return url for filenames based on template", `return ${url};`]
374
- )};`
382
+ comment,
383
+ `${global} = ${runtimeTemplate.basicFunction("chunkId", [
384
+ "// return url for filenames not based on template",
385
+ // it minimizes to `x===1?"...":x===2?"...":"..."`
386
+ Template.asString(
387
+ Array.from(staticUrls, ([url, ids]) => {
388
+ const condition =
389
+ ids.size === 1
390
+ ? `chunkId === ${JSON.stringify(first(ids))}`
391
+ : `{${Array.from(ids, (id) => `${JSON.stringify(id)}:1`).join(
392
+ ","
393
+ )}}[chunkId]`;
394
+ return `if (${condition}) return ${url};`;
395
+ })
396
+ ),
397
+ "// return url for filenames based on template",
398
+ `return ${url};`
399
+ ])};`
375
400
  ]);
376
401
  }
377
402
  }
@@ -7,7 +7,7 @@
7
7
  const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const RuntimeModule = require("../RuntimeModule");
9
9
 
10
- /** @typedef {import("../Compilation")} Compilation */
10
+ /** @import Compilation from "../Compilation" */
11
11
 
12
12
  class GetFullHashRuntimeModule extends RuntimeModule {
13
13
  constructor() {
@@ -16,6 +16,16 @@ class GetFullHashRuntimeModule extends RuntimeModule {
16
16
  this.fullHash = true;
17
17
  }
18
18
 
19
+ /**
20
+ * Returns true, if the runtime module should get it's own scope.
21
+ * When false, `generate()` must emit complete statements ending with `;`
22
+ * so a following runtime IIFE is not parsed as a call (ASI).
23
+ * @returns {boolean} true, if the runtime module should get it's own scope
24
+ */
25
+ shouldIsolate() {
26
+ return false;
27
+ }
28
+
19
29
  /**
20
30
  * Generates runtime code for this runtime module.
21
31
  * @returns {string | null} runtime code
@@ -25,7 +35,7 @@ class GetFullHashRuntimeModule extends RuntimeModule {
25
35
  const { runtimeTemplate } = compilation;
26
36
  return `${RuntimeGlobals.getFullHash} = ${runtimeTemplate.returningFunction(
27
37
  JSON.stringify(compilation.hash || "XXXX")
28
- )}`;
38
+ )};`;
29
39
  }
30
40
  }
31
41
 
@@ -8,10 +8,20 @@ const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const RuntimeModule = require("../RuntimeModule");
9
9
  const Template = require("../Template");
10
10
 
11
- /** @typedef {import("../Chunk")} Chunk */
12
- /** @typedef {import("../Compilation")} Compilation */
11
+ /** @import Chunk from "../Chunk" */
12
+ /** @import Compilation from "../Compilation" */
13
13
 
14
14
  class GetMainFilenameRuntimeModule extends RuntimeModule {
15
+ /**
16
+ * Returns true, if the runtime module should get it's own scope.
17
+ * When false, `generate()` must emit complete statements ending with `;`
18
+ * so a following runtime IIFE is not parsed as a call (ASI).
19
+ * @returns {boolean} true, if the runtime module should get it's own scope
20
+ */
21
+ shouldIsolate() {
22
+ return false;
23
+ }
24
+
15
25
  /**
16
26
  * @param {string} name readable name
17
27
  * @param {string} global global object binding
@@ -8,8 +8,8 @@ const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const Template = require("../Template");
9
9
  const HelperRuntimeModule = require("./HelperRuntimeModule");
10
10
 
11
- /** @typedef {import("../Compilation")} Compilation */
12
- /** @typedef {import("../Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
11
+ /** @import Compilation from "../Compilation" */
12
+ /** @import { ReadOnlyRuntimeRequirements } from "../Module" */
13
13
 
14
14
  class GetTrustedTypesPolicyRuntimeModule extends HelperRuntimeModule {
15
15
  /**
@@ -9,7 +9,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
9
9
  const RuntimeModule = require("../RuntimeModule");
10
10
  const Template = require("../Template");
11
11
 
12
- /** @typedef {import("../Compilation")} Compilation */
12
+ /** @import Compilation from "../Compilation" */
13
13
 
14
14
  /**
15
15
  * Provides a single object URL (one per base URI) for the worklet bootstrap
@@ -23,6 +23,16 @@ class GetWorkletBootstrapRuntimeModule extends RuntimeModule {
23
23
  super("get worklet bootstrap", RuntimeModule.STAGE_ATTACH);
24
24
  }
25
25
 
26
+ /**
27
+ * Returns true, if the runtime module should get it's own scope.
28
+ * When false, `generate()` must emit complete statements ending with `;`
29
+ * so a following runtime IIFE is not parsed as a call (ASI).
30
+ * @returns {boolean} true, if the runtime module should get it's own scope
31
+ */
32
+ shouldIsolate() {
33
+ return false;
34
+ }
35
+
26
36
  /**
27
37
  * Generates runtime code for this runtime module.
28
38
  * @returns {string | null} runtime code
@@ -38,8 +48,11 @@ class GetWorkletBootstrapRuntimeModule extends RuntimeModule {
38
48
  Template.indent([
39
49
  "var script = [",
40
50
  Template.indent([
41
- // worklet scopes have no `self`; chunks assume a worker-like scope
42
- '"globalThis.self = globalThis.self || globalThis;",',
51
+ // worklet scopes have no `self`; chunks assume a worker-like scope.
52
+ // `||=` is newer than worklets themselves, so it stays gated.
53
+ `${JSON.stringify(
54
+ `${runtimeTemplate.assignOr("globalThis.self", "globalThis")};`
55
+ )},`,
43
56
  // some runtime modules read `location`; forward the document base
44
57
  '"globalThis.location = " + JSON.stringify(base) + ";"'
45
58
  ]),
@@ -8,16 +8,34 @@ const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const RuntimeModule = require("../RuntimeModule");
9
9
  const Template = require("../Template");
10
10
 
11
+ /** @typedef {import("../Compilation")} Compilation */
12
+
11
13
  class GlobalRuntimeModule extends RuntimeModule {
12
14
  constructor() {
13
15
  super("global");
14
16
  }
15
17
 
18
+ /**
19
+ * Returns true, if the runtime module should get it's own scope.
20
+ * When false, `generate()` must emit complete statements ending with `;`
21
+ * so a following runtime IIFE is not parsed as a call (ASI).
22
+ * @returns {boolean} true, if the runtime module should get it's own scope
23
+ */
24
+ shouldIsolate() {
25
+ return false;
26
+ }
27
+
16
28
  /**
17
29
  * Generates runtime code for this runtime module.
18
30
  * @returns {string | null} runtime code
19
31
  */
20
32
  generate() {
33
+ const compilation = /** @type {Compilation} */ (this.compilation);
34
+ // `environment.globalThis` promises the binding is there, so nothing has to
35
+ // be searched for.
36
+ if (compilation.outputOptions.environment.globalThis) {
37
+ return `${RuntimeGlobals.global} = globalThis;`;
38
+ }
21
39
  return Template.asString([
22
40
  `${RuntimeGlobals.global} = (function() {`,
23
41
  Template.indent([
@@ -9,13 +9,23 @@ const RuntimeGlobals = require("../RuntimeGlobals");
9
9
  const RuntimeModule = require("../RuntimeModule");
10
10
  const Template = require("../Template");
11
11
 
12
- /** @typedef {import("../Compilation")} Compilation */
12
+ /** @import Compilation from "../Compilation" */
13
13
 
14
14
  class HasOwnPropertyRuntimeModule extends RuntimeModule {
15
15
  constructor() {
16
16
  super("hasOwnProperty shorthand");
17
17
  }
18
18
 
19
+ /**
20
+ * Returns true, if the runtime module should get it's own scope.
21
+ * When false, `generate()` must emit complete statements ending with `;`
22
+ * so a following runtime IIFE is not parsed as a call (ASI).
23
+ * @returns {boolean} true, if the runtime module should get it's own scope
24
+ */
25
+ shouldIsolate() {
26
+ return false;
27
+ }
28
+
19
29
  /**
20
30
  * Generates runtime code for this runtime module.
21
31
  * @returns {string | null} runtime code
@@ -28,7 +38,7 @@ class HasOwnPropertyRuntimeModule extends RuntimeModule {
28
38
  `${RuntimeGlobals.hasOwnProperty} = ${runtimeTemplate.returningFunction(
29
39
  runtimeTemplate.objectHasOwn("obj", "prop"),
30
40
  "obj, prop"
31
- )}`
41
+ )};`
32
42
  ]);
33
43
  }
34
44
  }
@@ -5,13 +5,13 @@
5
5
  "use strict";
6
6
 
7
7
  const { SyncWaterfallHook } = require("tapable");
8
- /** @typedef {import("../Compilation")} Compilation */
8
+ /** @import Compilation from "../Compilation" */
9
9
  const RuntimeGlobals = require("../RuntimeGlobals");
10
10
  const Template = require("../Template");
11
11
  const createHooksRegistry = require("../util/createHooksRegistry");
12
12
  const HelperRuntimeModule = require("./HelperRuntimeModule");
13
13
 
14
- /** @typedef {import("../Chunk")} Chunk */
14
+ /** @import Chunk from "../Chunk" */
15
15
 
16
16
  /**
17
17
  * @typedef {object} LoadScriptCompilationHooks
@@ -9,12 +9,9 @@ const Template = require("../Template");
9
9
  const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
10
10
  const HelperRuntimeModule = require("./HelperRuntimeModule");
11
11
 
12
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
13
- /** @typedef {import("../Module")} Module */
14
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
15
- /** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
16
- /** @typedef {import("../Module").ExportsType} ExportsType */
17
- /** @typedef {import("../ChunkGraph").ModuleId} ModuleId */
12
+ /** @import { ModuleId } from "../ChunkGraph" */
13
+ /** @import Module, { RuntimeRequirements, ExportsType } from "../Module" */
14
+ /** @import ModuleGraph from "../ModuleGraph" */
18
15
 
19
16
  /**
20
17
  * @typedef {object} DeferredCycleState
@@ -224,6 +221,16 @@ function getOptimizedDeferredModule(
224
221
  }
225
222
 
226
223
  class MakeOptimizedDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
224
+ /**
225
+ * Returns true, if the runtime module should get it's own scope.
226
+ * When false, `generate()` must emit complete statements ending with `;`
227
+ * so a following runtime IIFE is not parsed as a call (ASI).
228
+ * @returns {boolean} true, if the runtime module should get it's own scope
229
+ */
230
+ shouldIsolate() {
231
+ return false;
232
+ }
233
+
227
234
  /**
228
235
  * @param {boolean} hasAsyncRuntime if async module is used.
229
236
  */
@@ -293,6 +300,16 @@ class MakeOptimizedDeferredNamespaceObjectRuntimeModule extends HelperRuntimeMod
293
300
  }
294
301
 
295
302
  class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
303
+ /**
304
+ * Returns true, if the runtime module should get it's own scope.
305
+ * When false, `generate()` must emit complete statements ending with `;`
306
+ * so a following runtime IIFE is not parsed as a call (ASI).
307
+ * @returns {boolean} true, if the runtime module should get it's own scope
308
+ */
309
+ shouldIsolate() {
310
+ return false;
311
+ }
312
+
296
313
  /**
297
314
  * @param {boolean} hasAsyncRuntime if async module is used.
298
315
  */
@@ -8,13 +8,23 @@ const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const Template = require("../Template");
9
9
  const HelperRuntimeModule = require("./HelperRuntimeModule");
10
10
 
11
- /** @typedef {import("../Compilation")} Compilation */
11
+ /** @import Compilation from "../Compilation" */
12
12
 
13
13
  class MakeNamespaceObjectRuntimeModule extends HelperRuntimeModule {
14
14
  constructor() {
15
15
  super("make namespace object");
16
16
  }
17
17
 
18
+ /**
19
+ * Returns true, if the runtime module should get it's own scope.
20
+ * When false, `generate()` must emit complete statements ending with `;`
21
+ * so a following runtime IIFE is not parsed as a call (ASI).
22
+ * @returns {boolean} true, if the runtime module should get it's own scope
23
+ */
24
+ shouldIsolate() {
25
+ return false;
26
+ }
27
+
18
28
  /**
19
29
  * Generates runtime code for this runtime module.
20
30
  * @returns {string | null} runtime code
@@ -23,14 +33,20 @@ class MakeNamespaceObjectRuntimeModule extends HelperRuntimeModule {
23
33
  const compilation = /** @type {Compilation} */ (this.compilation);
24
34
  const { runtimeTemplate } = compilation;
25
35
  const fn = RuntimeGlobals.makeNamespaceObject;
36
+ const toStringTag =
37
+ "Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });";
26
38
  return Template.asString([
27
39
  "// define __esModule on exports",
28
40
  `${fn} = ${runtimeTemplate.basicFunction("exports", [
29
- `if(${runtimeTemplate.supportsSymbol() ? "" : "typeof Symbol !== 'undefined' && "}Symbol.toStringTag) {`,
30
- Template.indent([
31
- "Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });"
32
- ]),
33
- "}",
41
+ // `environment.symbol` promises the well-known symbols too, so only an
42
+ // environment without it needs the feature test around the tag.
43
+ ...(runtimeTemplate.supportsSymbol()
44
+ ? [toStringTag]
45
+ : [
46
+ "if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {",
47
+ Template.indent([toStringTag]),
48
+ "}"
49
+ ]),
34
50
  "Object.defineProperty(exports, '__esModule', { value: true });"
35
51
  ])};`
36
52
  ]);
@@ -13,6 +13,16 @@ class NonceRuntimeModule extends RuntimeModule {
13
13
  super("nonce", RuntimeModule.STAGE_ATTACH);
14
14
  }
15
15
 
16
+ /**
17
+ * Returns true, if the runtime module should get it's own scope.
18
+ * When false, `generate()` must emit complete statements ending with `;`
19
+ * so a following runtime IIFE is not parsed as a call (ASI).
20
+ * @returns {boolean} true, if the runtime module should get it's own scope
21
+ */
22
+ shouldIsolate() {
23
+ return false;
24
+ }
25
+
16
26
  /**
17
27
  * Generates runtime code for this runtime module.
18
28
  * @returns {string | null} runtime code
@@ -8,7 +8,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const RuntimeModule = require("../RuntimeModule");
9
9
  const Template = require("../Template");
10
10
 
11
- /** @typedef {import("../Compilation")} Compilation */
11
+ /** @import Compilation from "../Compilation" */
12
12
 
13
13
  class OnChunksLoadedRuntimeModule extends RuntimeModule {
14
14
  constructor() {
@@ -29,7 +29,7 @@ class OnChunksLoadedRuntimeModule extends RuntimeModule {
29
29
  [
30
30
  "if(chunkIds) {",
31
31
  Template.indent([
32
- "priority = priority || 0;",
32
+ `${runtimeTemplate.assignOr("priority", "0")};`,
33
33
  "for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];",
34
34
  "deferred[i] = [chunkIds, fn, priority];",
35
35
  "return;"
@@ -45,7 +45,9 @@ class OnChunksLoadedRuntimeModule extends RuntimeModule {
45
45
  `${runtimeTemplate.renderLet()} fulfilled = true;`,
46
46
  "for (var j = 0; j < chunkIds.length; j++) {",
47
47
  Template.indent([
48
- `if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(${
48
+ // Parenthesized: `&` binds looser than `===`, so `priority & 1 === 0`
49
+ // is `priority & false` and gates every priority, not just the odd ones.
50
+ `if (((priority & 1) === 0 || notFulfilled >= priority) && Object.keys(${
49
51
  RuntimeGlobals.onChunksLoaded
50
52
  }).every(${runtimeTemplate.returningFunction(
51
53
  `${RuntimeGlobals.onChunksLoaded}[key](chunkIds[j])`,
@@ -7,10 +7,20 @@
7
7
  const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const RuntimeModule = require("../RuntimeModule");
9
9
 
10
- /** @typedef {import("../../declarations/WebpackOptions").PublicPath} PublicPath */
11
- /** @typedef {import("../Compilation")} Compilation */
10
+ /** @import { PublicPath } from "../../declarations/WebpackOptions" */
11
+ /** @import Compilation from "../Compilation" */
12
12
 
13
13
  class PublicPathRuntimeModule extends RuntimeModule {
14
+ /**
15
+ * Returns true, if the runtime module should get it's own scope.
16
+ * When false, `generate()` must emit complete statements ending with `;`
17
+ * so a following runtime IIFE is not parsed as a call (ASI).
18
+ * @returns {boolean} true, if the runtime module should get it's own scope
19
+ */
20
+ shouldIsolate() {
21
+ return false;
22
+ }
23
+
14
24
  /**
15
25
  * @param {PublicPath} publicPath public path
16
26
  */
@@ -8,13 +8,23 @@ const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const Template = require("../Template");
9
9
  const HelperRuntimeModule = require("./HelperRuntimeModule");
10
10
 
11
- /** @typedef {import("../Compilation")} Compilation */
11
+ /** @import Compilation from "../Compilation" */
12
12
 
13
13
  class RelativeUrlRuntimeModule extends HelperRuntimeModule {
14
14
  constructor() {
15
15
  super("relative url");
16
16
  }
17
17
 
18
+ /**
19
+ * Returns true, if the runtime module should get it's own scope.
20
+ * When false, `generate()` must emit complete statements ending with `;`
21
+ * so a following runtime IIFE is not parsed as a call (ASI).
22
+ * @returns {boolean} true, if the runtime module should get it's own scope
23
+ */
24
+ shouldIsolate() {
25
+ return false;
26
+ }
27
+
18
28
  /**
19
29
  * Generates runtime code for this runtime module.
20
30
  * @returns {string | null} runtime code
@@ -7,14 +7,24 @@
7
7
  const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const RuntimeModule = require("../RuntimeModule");
9
9
 
10
- /** @typedef {import("../Chunk")} Chunk */
11
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
10
+ /** @import Chunk from "../Chunk" */
11
+ /** @import ChunkGraph from "../ChunkGraph" */
12
12
 
13
13
  class RuntimeIdRuntimeModule extends RuntimeModule {
14
14
  constructor() {
15
15
  super("runtimeId");
16
16
  }
17
17
 
18
+ /**
19
+ * Returns true, if the runtime module should get it's own scope.
20
+ * When false, `generate()` must emit complete statements ending with `;`
21
+ * so a following runtime IIFE is not parsed as a call (ASI).
22
+ * @returns {boolean} true, if the runtime module should get it's own scope
23
+ */
24
+ shouldIsolate() {
25
+ return false;
26
+ }
27
+
18
28
  /**
19
29
  * Generates runtime code for this runtime module.
20
30
  * @returns {string | null} runtime code
@@ -8,13 +8,23 @@ const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const Template = require("../Template");
9
9
  const HelperRuntimeModule = require("./HelperRuntimeModule");
10
10
 
11
- /** @typedef {import("../Compilation")} Compilation */
11
+ /** @import Compilation from "../Compilation" */
12
12
 
13
13
  class SetAnonymousDefaultNameRuntimeModule extends HelperRuntimeModule {
14
14
  constructor() {
15
15
  super("set anonymous default export name");
16
16
  }
17
17
 
18
+ /**
19
+ * Returns true, if the runtime module should get it's own scope.
20
+ * When false, `generate()` must emit complete statements ending with `;`
21
+ * so a following runtime IIFE is not parsed as a call (ASI).
22
+ * @returns {boolean} true, if the runtime module should get it's own scope
23
+ */
24
+ shouldIsolate() {
25
+ return false;
26
+ }
27
+
18
28
  /**
19
29
  * Generates runtime code for this runtime module.
20
30
  * @returns {string | null} runtime code
@@ -5,12 +5,19 @@
5
5
  "use strict";
6
6
 
7
7
  const RuntimeGlobals = require("../RuntimeGlobals");
8
- const StartupChunkDependenciesRuntimeModule = require("./StartupChunkDependenciesRuntimeModule");
9
- const StartupEntrypointRuntimeModule = require("./StartupEntrypointRuntimeModule");
8
+ const lazyModule = require("../util/lazyModule");
10
9
 
11
- /** @typedef {import("../../declarations/WebpackOptions").ChunkLoadingType} ChunkLoadingType */
12
- /** @typedef {import("../Chunk")} Chunk */
13
- /** @typedef {import("../Compiler")} Compiler */
10
+ /** @import { ChunkLoadingType } from "../../declarations/WebpackOptions" */
11
+ /** @import Chunk from "../Chunk" */
12
+ /** @import Compiler from "../Compiler" */
13
+
14
+ // only a chunk with startup dependencies emits these
15
+ const getStartupChunkDependenciesRuntimeModule = lazyModule(() =>
16
+ require("./StartupChunkDependenciesRuntimeModule")
17
+ );
18
+ const getStartupEntrypointRuntimeModule = lazyModule(() =>
19
+ require("./StartupEntrypointRuntimeModule")
20
+ );
14
21
 
15
22
  /**
16
23
  * Options that describe which chunk loading backend should receive startup
@@ -74,9 +81,10 @@ class StartupChunkDependenciesPlugin {
74
81
  set.add(RuntimeGlobals.startup);
75
82
  set.add(RuntimeGlobals.ensureChunk);
76
83
  set.add(RuntimeGlobals.ensureChunkIncludeEntries);
77
- compilation.addRuntimeModule(
84
+ compilation.addLazyRuntimeModule(
78
85
  chunk,
79
- new StartupChunkDependenciesRuntimeModule(this.asyncChunkLoading)
86
+ getStartupChunkDependenciesRuntimeModule,
87
+ (Ctor) => new Ctor(this.asyncChunkLoading)
80
88
  );
81
89
  }
82
90
  }
@@ -88,9 +96,10 @@ class StartupChunkDependenciesPlugin {
88
96
  set.add(RuntimeGlobals.require);
89
97
  set.add(RuntimeGlobals.ensureChunk);
90
98
  set.add(RuntimeGlobals.ensureChunkIncludeEntries);
91
- compilation.addRuntimeModule(
99
+ compilation.addLazyRuntimeModule(
92
100
  chunk,
93
- new StartupEntrypointRuntimeModule(this.asyncChunkLoading)
101
+ getStartupEntrypointRuntimeModule,
102
+ (Ctor) => new Ctor(this.asyncChunkLoading)
94
103
  );
95
104
  });
96
105
  });
@@ -9,9 +9,9 @@ const RuntimeGlobals = require("../RuntimeGlobals");
9
9
  const RuntimeModule = require("../RuntimeModule");
10
10
  const Template = require("../Template");
11
11
 
12
- /** @typedef {import("../Chunk")} Chunk */
13
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
14
- /** @typedef {import("../Compilation")} Compilation */
12
+ /** @import Chunk from "../Chunk" */
13
+ /** @import ChunkGraph from "../ChunkGraph" */
14
+ /** @import Compilation from "../Compilation" */
15
15
 
16
16
  class StartupChunkDependenciesRuntimeModule extends RuntimeModule {
17
17
  /**