@depup/webpack 5.106.1-depup.0 → 5.109.2-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 (669) hide show
  1. package/README.md +9 -11
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +16 -24
  4. package/hot/dev-server.js +2 -0
  5. package/lib/APIPlugin.js +60 -35
  6. package/lib/AsyncDependenciesBlock.js +3 -0
  7. package/lib/AutomaticPrefetchPlugin.js +6 -1
  8. package/lib/BannerPlugin.js +13 -5
  9. package/lib/Cache.js +27 -5
  10. package/lib/CacheFacade.js +41 -0
  11. package/lib/Chunk.js +71 -25
  12. package/lib/ChunkGraph.js +153 -19
  13. package/lib/ChunkGroup.js +115 -28
  14. package/lib/ChunkTemplate.js +9 -0
  15. package/lib/CircularModulesPlugin.js +190 -0
  16. package/lib/CleanPlugin.js +27 -28
  17. package/lib/CodeGenerationResults.js +19 -0
  18. package/lib/CompatibilityPlugin.js +85 -37
  19. package/lib/Compilation.js +656 -112
  20. package/lib/Compiler.js +109 -35
  21. package/lib/ConcatenationScope.js +34 -4
  22. package/lib/ConditionalInitFragment.js +6 -0
  23. package/lib/ConstPlugin.js +15 -12
  24. package/lib/ContextExclusionPlugin.js +3 -1
  25. package/lib/ContextModule.js +345 -55
  26. package/lib/ContextModuleFactory.js +193 -51
  27. package/lib/ContextReplacementPlugin.js +8 -1
  28. package/lib/DefinePlugin.js +537 -139
  29. package/lib/DependenciesBlock.js +6 -1
  30. package/lib/Dependency.js +159 -11
  31. package/lib/DependencyTemplate.js +7 -1
  32. package/lib/DependencyTemplates.js +4 -0
  33. package/lib/DotenvPlugin.js +3 -0
  34. package/lib/DynamicEntryPlugin.js +3 -1
  35. package/lib/EntryOptionPlugin.js +42 -2
  36. package/lib/EntryPlugin.js +4 -1
  37. package/lib/Entrypoint.js +5 -1
  38. package/lib/EnvironmentPlugin.js +3 -2
  39. package/lib/ErrorHelpers.js +7 -0
  40. package/lib/EvalDevToolModulePlugin.js +3 -1
  41. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  42. package/lib/ExportsInfo.js +421 -113
  43. package/lib/ExportsInfoApiPlugin.js +4 -3
  44. package/lib/ExternalModule.js +381 -80
  45. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  46. package/lib/ExternalsPlugin.js +3 -1
  47. package/lib/FileSystemInfo.js +701 -175
  48. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  49. package/lib/FlagDependencyExportsPlugin.js +82 -9
  50. package/lib/FlagDependencyUsagePlugin.js +115 -8
  51. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  52. package/lib/Generator.js +24 -3
  53. package/lib/HotModuleReplacementPlugin.js +110 -44
  54. package/lib/IgnorePlugin.js +5 -2
  55. package/lib/IgnoreWarningsPlugin.js +2 -1
  56. package/lib/InitFragment.js +33 -30
  57. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  58. package/lib/LazyBarrel.js +389 -0
  59. package/lib/LibraryTemplatePlugin.js +2 -1
  60. package/lib/LoaderOptionsPlugin.js +3 -1
  61. package/lib/LoaderTargetPlugin.js +3 -1
  62. package/lib/MainTemplate.js +15 -0
  63. package/lib/ManifestPlugin.js +9 -2
  64. package/lib/Module.js +121 -57
  65. package/lib/ModuleFactory.js +6 -1
  66. package/lib/ModuleFilenameHelpers.js +18 -4
  67. package/lib/ModuleGraph.js +69 -2
  68. package/lib/ModuleGraphConnection.js +9 -0
  69. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  70. package/lib/ModuleNotFoundError.js +3 -83
  71. package/lib/ModuleProfile.js +27 -1
  72. package/lib/ModuleSourceTypeConstants.js +52 -19
  73. package/lib/ModuleTemplate.js +10 -0
  74. package/lib/ModuleTypeConstants.js +20 -4
  75. package/lib/MultiCompiler.js +59 -4
  76. package/lib/MultiStats.js +9 -0
  77. package/lib/MultiWatching.js +6 -0
  78. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  79. package/lib/NodeStuffPlugin.js +78 -46
  80. package/lib/NormalModule.js +519 -206
  81. package/lib/NormalModuleFactory.js +156 -31
  82. package/lib/NormalModuleReplacementPlugin.js +3 -1
  83. package/lib/NullFactory.js +1 -0
  84. package/lib/OptionsApply.js +1 -0
  85. package/lib/Parser.js +3 -1
  86. package/lib/PlatformPlugin.js +2 -1
  87. package/lib/PrefetchPlugin.js +4 -1
  88. package/lib/ProgressPlugin.js +351 -161
  89. package/lib/ProvidePlugin.js +6 -3
  90. package/lib/RawModule.js +32 -16
  91. package/lib/RecordIdsPlugin.js +9 -0
  92. package/lib/RequestShortener.js +8 -0
  93. package/lib/ResolverFactory.js +5 -0
  94. package/lib/RuntimeGlobals.js +58 -5
  95. package/lib/RuntimeModule.js +22 -7
  96. package/lib/RuntimePlugin.js +123 -118
  97. package/lib/RuntimeTemplate.js +616 -37
  98. package/lib/SelfModuleFactory.js +3 -0
  99. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  100. package/lib/SourceMapDevToolPlugin.js +341 -63
  101. package/lib/Stats.js +6 -0
  102. package/lib/Template.js +52 -6
  103. package/lib/TemplatedPathPlugin.js +505 -138
  104. package/lib/UseStrictPlugin.js +3 -2
  105. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  106. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  107. package/lib/WarnNoModeSetPlugin.js +18 -2
  108. package/lib/WatchIgnorePlugin.js +5 -1
  109. package/lib/Watching.js +25 -3
  110. package/lib/WebpackError.js +3 -74
  111. package/lib/WebpackIsIncludedPlugin.js +4 -2
  112. package/lib/WebpackOptionsApply.js +88 -25
  113. package/lib/WebpackOptionsDefaulter.js +1 -0
  114. package/lib/asset/AssetBytesGenerator.js +28 -10
  115. package/lib/asset/AssetBytesParser.js +1 -0
  116. package/lib/asset/AssetGenerator.js +199 -60
  117. package/lib/asset/AssetModule.js +47 -0
  118. package/lib/asset/AssetModulesPlugin.js +115 -24
  119. package/lib/asset/AssetParser.js +4 -2
  120. package/lib/asset/AssetSourceGenerator.js +26 -8
  121. package/lib/asset/AssetSourceParser.js +1 -0
  122. package/lib/asset/RawDataUrlModule.js +23 -13
  123. package/lib/asset/WebManifestGenerator.js +164 -0
  124. package/lib/asset/WebManifestParser.js +130 -0
  125. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  126. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  127. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  128. package/lib/async-modules/isGeneratorLowered.js +26 -0
  129. package/lib/buildChunkGraph.js +107 -15
  130. package/lib/bun/BunTargetPlugin.js +42 -0
  131. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  132. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  133. package/lib/cache/IdleFileCachePlugin.js +6 -1
  134. package/lib/cache/MemoryCachePlugin.js +1 -1
  135. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  136. package/lib/cache/PackFileCacheStrategy.js +302 -12
  137. package/lib/cache/ResolverCachePlugin.js +12 -1
  138. package/lib/cache/getLazyHashedEtag.js +13 -2
  139. package/lib/cache/mergeEtags.js +4 -0
  140. package/lib/cli.js +142 -20
  141. package/lib/config/browserslistTargetHandler.js +141 -0
  142. package/lib/config/defaults.js +612 -43
  143. package/lib/config/defineConfig.js +31 -0
  144. package/lib/config/normalization.js +46 -1
  145. package/lib/config/target.js +200 -2
  146. package/lib/container/ContainerEntryDependency.js +2 -0
  147. package/lib/container/ContainerEntryModule.js +27 -14
  148. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  149. package/lib/container/ContainerExposedDependency.js +6 -2
  150. package/lib/container/ContainerPlugin.js +2 -1
  151. package/lib/container/ContainerReferencePlugin.js +3 -2
  152. package/lib/container/FallbackDependency.js +9 -7
  153. package/lib/container/FallbackItemDependency.js +1 -0
  154. package/lib/container/FallbackModule.js +22 -9
  155. package/lib/container/FallbackModuleFactory.js +1 -0
  156. package/lib/container/HoistContainerReferencesPlugin.js +47 -55
  157. package/lib/container/ModuleFederationPlugin.js +21 -29
  158. package/lib/container/RemoteModule.js +33 -10
  159. package/lib/container/RemoteRuntimeModule.js +15 -12
  160. package/lib/container/RemoteToExternalDependency.js +1 -0
  161. package/lib/container/options.js +7 -0
  162. package/lib/css/CssGenerator.js +540 -272
  163. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  164. package/lib/css/CssLoadingRuntimeModule.js +173 -81
  165. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  166. package/lib/css/CssModulesPlugin.js +371 -208
  167. package/lib/css/CssParser.js +3538 -1963
  168. package/lib/css/syntax.js +4155 -0
  169. package/lib/debug/ProfilingPlugin.js +33 -2
  170. package/lib/deno/DenoTargetPlugin.js +41 -0
  171. package/lib/dependencies/AMDDefineDependency.js +29 -17
  172. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  173. package/lib/dependencies/AMDPlugin.js +6 -3
  174. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  175. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  176. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  177. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  178. package/lib/dependencies/AMDRequireDependency.js +28 -20
  179. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  180. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  181. package/lib/dependencies/CachedConstDependency.js +9 -1
  182. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  183. package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
  184. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  185. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  186. package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
  187. package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
  188. package/lib/dependencies/CommonJsPlugin.js +7 -4
  189. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  190. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  191. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  192. package/lib/dependencies/ConstDependency.js +22 -12
  193. package/lib/dependencies/ContextDependency.js +13 -2
  194. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  195. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  196. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  197. package/lib/dependencies/ContextElementDependency.js +27 -14
  198. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  199. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  200. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  201. package/lib/dependencies/CssIcssExportDependency.js +681 -367
  202. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  203. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  204. package/lib/dependencies/CssImportDependency.js +37 -1
  205. package/lib/dependencies/CssUrlDependency.js +87 -14
  206. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  207. package/lib/dependencies/DllEntryDependency.js +12 -13
  208. package/lib/dependencies/DynamicExports.js +5 -0
  209. package/lib/dependencies/EntryDependency.js +1 -0
  210. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  211. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  212. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  213. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  214. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  215. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  216. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  217. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  218. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  219. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
  220. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  221. package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
  222. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
  224. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  226. package/lib/dependencies/HarmonyExports.js +6 -1
  227. package/lib/dependencies/HarmonyImportDependency.js +60 -4
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  229. package/lib/dependencies/HarmonyImportGuard.js +427 -0
  230. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  231. package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
  232. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  233. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  234. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  235. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  236. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  237. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  238. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  239. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  240. package/lib/dependencies/ImportContextDependency.js +9 -9
  241. package/lib/dependencies/ImportDependency.js +92 -3
  242. package/lib/dependencies/ImportEagerDependency.js +2 -0
  243. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  244. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  245. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  246. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  247. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  248. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  249. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  250. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  251. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  252. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  253. package/lib/dependencies/ImportParserPlugin.js +114 -27
  254. package/lib/dependencies/ImportPhase.js +17 -11
  255. package/lib/dependencies/ImportPlugin.js +2 -1
  256. package/lib/dependencies/ImportWeakDependency.js +3 -0
  257. package/lib/dependencies/JsonExportsDependency.js +15 -10
  258. package/lib/dependencies/LoaderDependency.js +2 -0
  259. package/lib/dependencies/LoaderImportDependency.js +3 -0
  260. package/lib/dependencies/LoaderPlugin.js +9 -2
  261. package/lib/dependencies/LocalModule.js +15 -12
  262. package/lib/dependencies/LocalModuleDependency.js +15 -13
  263. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  264. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  265. package/lib/dependencies/ModuleDependency.js +14 -0
  266. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  267. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  268. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  269. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  270. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  271. package/lib/dependencies/NullDependency.js +2 -0
  272. package/lib/dependencies/PrefetchDependency.js +1 -0
  273. package/lib/dependencies/ProvidedDependency.js +36 -27
  274. package/lib/dependencies/PureExpressionDependency.js +14 -10
  275. package/lib/dependencies/RequireContextDependency.js +1 -0
  276. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  277. package/lib/dependencies/RequireContextPlugin.js +2 -1
  278. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  279. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  280. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  281. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  282. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  283. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  284. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  285. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  286. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  287. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  288. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  289. package/lib/dependencies/RequireResolveDependency.js +2 -0
  290. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  291. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  292. package/lib/dependencies/StaticExportsDependency.js +13 -10
  293. package/lib/dependencies/SystemPlugin.js +9 -6
  294. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  295. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  296. package/lib/dependencies/URLContextDependency.js +8 -7
  297. package/lib/dependencies/URLDependency.js +157 -33
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +12 -13
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  301. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  303. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  304. package/lib/dependencies/WorkerDependency.js +111 -27
  305. package/lib/dependencies/WorkletDependency.js +278 -0
  306. package/lib/dependencies/getFunctionExpression.js +1 -0
  307. package/lib/dependencies/processExportInfo.js +14 -11
  308. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  309. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  310. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  311. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  312. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  313. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  314. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  315. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  316. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  317. package/lib/electron/ElectronTargetPlugin.js +24 -5
  318. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  319. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  320. package/lib/errors/BuildCycleError.js +1 -1
  321. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  322. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  323. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  324. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  325. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  326. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  327. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  328. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  329. package/lib/errors/JSONParseError.js +115 -0
  330. package/lib/errors/LoaderLoadingError.js +20 -0
  331. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  332. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  333. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  334. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  335. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  336. package/lib/errors/ModuleNotFoundError.js +94 -0
  337. package/lib/errors/ModuleParseError.js +141 -0
  338. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  339. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  340. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  341. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  342. package/lib/errors/NonErrorEmittedError.js +30 -0
  343. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  344. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  345. package/lib/errors/WebpackError.js +84 -0
  346. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  347. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  348. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  349. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
  350. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  351. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  352. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  353. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  354. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  355. package/lib/hmr/lazyCompilationBackend.js +53 -12
  356. package/lib/html/HtmlGenerator.js +1490 -0
  357. package/lib/html/HtmlModule.js +41 -0
  358. package/lib/html/HtmlModulesPlugin.js +1129 -0
  359. package/lib/html/HtmlParser.js +1970 -0
  360. package/lib/html/favicon.svg +1 -0
  361. package/lib/html/syntax.js +9106 -0
  362. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  363. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  364. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  365. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  366. package/lib/ids/IdHelpers.js +49 -12
  367. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  368. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  369. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  370. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  371. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  372. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  373. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  374. package/lib/index.js +66 -15
  375. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  376. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  377. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  378. package/lib/javascript/ChunkHelpers.js +1 -0
  379. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  380. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  381. package/lib/javascript/JavascriptGenerator.js +213 -51
  382. package/lib/javascript/JavascriptModule.js +54 -0
  383. package/lib/javascript/JavascriptModulesPlugin.js +628 -198
  384. package/lib/javascript/JavascriptParser.js +1334 -471
  385. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  386. package/lib/javascript/StartupHelpers.js +5 -0
  387. package/lib/javascript/syntax.js +5037 -0
  388. package/lib/json/JsonData.js +5 -0
  389. package/lib/json/JsonGenerator.js +21 -0
  390. package/lib/json/JsonModule.js +40 -0
  391. package/lib/json/JsonModulesPlugin.js +8 -1
  392. package/lib/json/JsonParser.js +18 -27
  393. package/lib/library/AbstractLibraryPlugin.js +17 -2
  394. package/lib/library/AmdLibraryPlugin.js +8 -0
  395. package/lib/library/AssignLibraryPlugin.js +21 -3
  396. package/lib/library/EnableLibraryPlugin.js +8 -2
  397. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  398. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  399. package/lib/library/JsonpLibraryPlugin.js +8 -0
  400. package/lib/library/ModuleLibraryPlugin.js +154 -7
  401. package/lib/library/SystemLibraryPlugin.js +11 -3
  402. package/lib/library/UmdLibraryPlugin.js +16 -0
  403. package/lib/loaders/LoaderRunner.js +714 -0
  404. package/lib/loaders/loadLoader.js +100 -0
  405. package/lib/logging/Logger.js +17 -0
  406. package/lib/logging/createConsoleLogger.js +7 -0
  407. package/lib/logging/runtime.js +2 -0
  408. package/lib/logging/truncateArgs.js +2 -0
  409. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  410. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  411. package/lib/node/NodeSourcePlugin.js +1 -1
  412. package/lib/node/NodeTargetPlugin.js +4 -63
  413. package/lib/node/NodeTemplatePlugin.js +3 -1
  414. package/lib/node/NodeWatchFileSystem.js +40 -22
  415. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  416. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
  417. package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
  418. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  419. package/lib/node/nodeBuiltins.js +80 -0
  420. package/lib/node/nodeConsole.js +116 -64
  421. package/lib/optimize/AggressiveMergingPlugin.js +22 -16
  422. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  423. package/lib/optimize/ConcatenatedModule.js +603 -130
  424. package/lib/optimize/ConstExportsPlugin.js +211 -0
  425. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  426. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  427. package/lib/optimize/InlineExports.js +178 -0
  428. package/lib/optimize/InnerGraph.js +374 -262
  429. package/lib/optimize/InnerGraphPlugin.js +246 -117
  430. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  431. package/lib/optimize/MangleExportsPlugin.js +5 -1
  432. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  433. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  434. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  435. package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
  436. package/lib/optimize/RealContentHashPlugin.js +130 -52
  437. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  438. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  439. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  440. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  441. package/lib/optimize/SplitChunksPlugin.js +200 -50
  442. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  443. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  444. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  445. package/lib/performance/SizeLimitsPlugin.js +8 -2
  446. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  448. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  449. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  450. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  451. package/lib/prefetch/ResourceHintPlugin.js +687 -0
  452. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  453. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  454. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  455. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  456. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  457. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  458. package/lib/rules/RuleSetCompiler.js +132 -0
  459. package/lib/rules/UseEffectRulePlugin.js +10 -3
  460. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  461. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  462. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  463. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  464. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  465. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  466. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  467. package/lib/runtime/CompatRuntimeModule.js +2 -0
  468. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  469. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  470. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  471. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  472. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  473. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  474. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  475. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  476. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  477. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  478. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  479. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  480. package/lib/runtime/HelperRuntimeModule.js +5 -0
  481. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  482. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  483. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  484. package/lib/runtime/NonceRuntimeModule.js +1 -0
  485. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  486. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  487. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  488. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  489. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  490. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  491. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  492. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  493. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  494. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  495. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  496. package/lib/schemes/DataUriPlugin.js +14 -2
  497. package/lib/schemes/FileUriPlugin.js +1 -1
  498. package/lib/schemes/HttpUriPlugin.js +86 -4
  499. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  500. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  501. package/lib/serialization/ArraySerializer.js +6 -8
  502. package/lib/serialization/BinaryMiddleware.js +427 -1006
  503. package/lib/serialization/DateObjectSerializer.js +4 -2
  504. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  505. package/lib/serialization/FileMiddleware.js +345 -59
  506. package/lib/serialization/MapObjectSerializer.js +7 -9
  507. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  508. package/lib/serialization/ObjectMiddleware.js +73 -13
  509. package/lib/serialization/PlainObjectSerializer.js +16 -8
  510. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  511. package/lib/serialization/Serializer.js +6 -0
  512. package/lib/serialization/SerializerMiddleware.js +14 -2
  513. package/lib/serialization/SetObjectSerializer.js +6 -8
  514. package/lib/serialization/SingleItemMiddleware.js +3 -0
  515. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  516. package/lib/sharing/ConsumeSharedModule.js +21 -7
  517. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  518. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  519. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  520. package/lib/sharing/ProvideSharedDependency.js +34 -15
  521. package/lib/sharing/ProvideSharedModule.js +42 -12
  522. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  523. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  524. package/lib/sharing/SharePlugin.js +5 -1
  525. package/lib/sharing/ShareRuntimeModule.js +19 -16
  526. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  527. package/lib/sharing/utils.js +9 -1
  528. package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
  529. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  530. package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
  531. package/lib/stats/StatsFactory.js +70 -27
  532. package/lib/stats/StatsPrinter.js +16 -2
  533. package/lib/typescript/TypeScriptPlugin.js +210 -0
  534. package/lib/url/URLParserPlugin.js +111 -23
  535. package/lib/util/ArrayHelpers.js +1 -0
  536. package/lib/util/ArrayQueue.js +10 -5
  537. package/lib/util/AsyncQueue.js +154 -74
  538. package/lib/util/Hash.js +2 -2
  539. package/lib/util/IterableHelpers.js +3 -0
  540. package/lib/util/LazyBucketSortedSet.js +26 -0
  541. package/lib/util/LazySet.js +45 -4
  542. package/lib/util/LocConverter.js +64 -0
  543. package/lib/util/ParallelismFactorCalculator.js +1 -0
  544. package/lib/util/Queue.js +6 -3
  545. package/lib/util/Semaphore.js +15 -1
  546. package/lib/util/SetHelpers.js +4 -1
  547. package/lib/util/SortableSet.js +7 -1
  548. package/lib/util/SourceProcessor.js +119 -0
  549. package/lib/util/StackedCacheMap.js +20 -3
  550. package/lib/util/StackedMap.js +162 -43
  551. package/lib/util/StringXor.js +1 -1
  552. package/lib/util/TupleQueue.js +7 -3
  553. package/lib/util/TupleSet.js +14 -0
  554. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  555. package/lib/util/WeakTupleMap.js +60 -1
  556. package/lib/util/binarySearchBounds.js +3 -2
  557. package/lib/util/chainedImports.js +3 -3
  558. package/lib/util/cleverMerge.js +19 -2
  559. package/lib/util/comparators.js +35 -4
  560. package/lib/util/compileBooleanMatcher.js +9 -0
  561. package/lib/util/concatenate.js +80 -24
  562. package/lib/util/conventions.js +46 -1
  563. package/lib/util/createHash.js +0 -1
  564. package/lib/util/createHooksRegistry.js +43 -0
  565. package/lib/util/createMappings.js +118 -0
  566. package/lib/util/dataURL.js +3 -2
  567. package/lib/util/deprecation.js +19 -0
  568. package/lib/util/deterministicGrouping.js +46 -17
  569. package/lib/util/extractSourceMap.js +2 -1
  570. package/lib/util/extractUrlAndGlobal.js +1 -0
  571. package/lib/util/findGraphRoots.js +7 -0
  572. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  573. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  574. package/lib/util/fs.js +87 -14
  575. package/lib/util/generateDebugId.js +1 -0
  576. package/lib/util/globUtils.js +710 -0
  577. package/lib/util/hash/BatchedHash.js +1 -0
  578. package/lib/util/hash/BulkUpdateHash.js +1 -0
  579. package/lib/util/hash/DebugHash.js +1 -0
  580. package/lib/util/hash/hash-digest.js +32 -15
  581. package/lib/util/hash/md4.js +1 -1
  582. package/lib/util/hash/wasm-hash.js +5 -0
  583. package/lib/util/hash/xxhash64.js +1 -1
  584. package/lib/util/identifier.js +118 -7
  585. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  586. package/lib/util/internalSerializables.js +102 -60
  587. package/lib/util/magicComment.js +149 -7
  588. package/lib/util/makeSerializable.js +7 -0
  589. package/lib/util/memoize.js +2 -0
  590. package/lib/util/mimeTypes.js +176 -0
  591. package/lib/util/nonNumericOnlyHash.js +31 -1
  592. package/lib/util/numberHash.js +2 -2
  593. package/lib/util/parseJson.js +41 -0
  594. package/lib/util/processAsyncTree.js +8 -0
  595. package/lib/util/property.js +9 -2
  596. package/lib/util/publicPathPlaceholder.js +64 -0
  597. package/lib/util/registerExternalSerializer.js +24 -4
  598. package/lib/util/removeBOM.js +1 -0
  599. package/lib/util/runtime.js +32 -0
  600. package/lib/util/semver.js +15 -0
  601. package/lib/util/serialization.js +2 -0
  602. package/lib/util/smartGrouping.js +8 -0
  603. package/lib/util/source.js +23 -0
  604. package/lib/util/topologicalSort.js +69 -0
  605. package/lib/validateSchema.js +1 -0
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  607. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  608. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  609. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  610. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  611. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  612. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  613. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  614. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  615. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  616. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  623. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  626. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  627. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  629. package/lib/web/JsonpTemplatePlugin.js +2 -1
  630. package/lib/webpack.js +78 -1
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +21 -0
  635. package/package.json +79 -77
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +1173 -80
  638. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  639. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  640. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  641. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  642. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  643. package/schemas/plugins/HtmlParserOptions.json +3 -0
  644. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  645. package/schemas/plugins/ProgressPlugin.json +38 -0
  646. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  647. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  648. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  650. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  652. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  653. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  654. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  655. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  656. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  657. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  658. package/types.d.ts +11053 -3019
  659. package/lib/CaseSensitiveModulesWarning.js +0 -72
  660. package/lib/GraphHelpers.js +0 -46
  661. package/lib/ModuleParseError.js +0 -125
  662. package/lib/NoModeWarning.js +0 -23
  663. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  664. package/lib/css/walkCssTokens.js +0 -1843
  665. package/lib/util/AppendOnlyStackedSet.js +0 -78
  666. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  668. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  669. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -0,0 +1,30 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const makeSerializable = require("../util/makeSerializable");
9
+ const WebpackError = require("./WebpackError");
10
+
11
+ class NonErrorEmittedError extends WebpackError {
12
+ /**
13
+ * @param {EXPECTED_ANY} error value which is not an instance of Error
14
+ */
15
+ constructor(error) {
16
+ super();
17
+
18
+ /** @type {string} */
19
+ this.name = "NonErrorEmittedError";
20
+ /** @type {string} */
21
+ this.message = `(Emitted value instead of an instance of Error) ${error}`;
22
+ }
23
+ }
24
+
25
+ makeSerializable(
26
+ NonErrorEmittedError,
27
+ "webpack/lib/errors/NonErrorEmittedError"
28
+ );
29
+
30
+ module.exports = NonErrorEmittedError;
@@ -5,11 +5,17 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const makeSerializable = require("../util/makeSerializable");
8
9
  const WebpackError = require("./WebpackError");
9
- const makeSerializable = require("./util/makeSerializable");
10
10
 
11
+ /**
12
+ * Error raised when webpack encounters a resource URI scheme that no installed
13
+ * plugin knows how to read.
14
+ */
11
15
  class UnhandledSchemeError extends WebpackError {
12
16
  /**
17
+ * Creates an error explaining that the current resource scheme is not
18
+ * supported by the active plugin set.
13
19
  * @param {string} scheme scheme
14
20
  * @param {string} resource resource
15
21
  */
@@ -19,6 +25,7 @@ class UnhandledSchemeError extends WebpackError {
19
25
  '\nWebpack supports "data:" and "file:" URIs by default.' +
20
26
  `\nYou may need an additional plugin to handle "${scheme}:" URIs.`
21
27
  );
28
+ /** @type {string} */
22
29
  this.file = resource;
23
30
  /** @type {string} */
24
31
  this.name = "UnhandledSchemeError";
@@ -27,7 +34,7 @@ class UnhandledSchemeError extends WebpackError {
27
34
 
28
35
  makeSerializable(
29
36
  UnhandledSchemeError,
30
- "webpack/lib/UnhandledSchemeError",
37
+ "webpack/lib/errors/UnhandledSchemeError",
31
38
  "UnhandledSchemeError"
32
39
  );
33
40
 
@@ -5,13 +5,14 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const makeSerializable = require("../util/makeSerializable");
8
9
  const WebpackError = require("./WebpackError");
9
- const makeSerializable = require("./util/makeSerializable");
10
10
 
11
- /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
11
+ /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
12
12
 
13
13
  class UnsupportedFeatureWarning extends WebpackError {
14
14
  /**
15
+ * Creates an instance of UnsupportedFeatureWarning.
15
16
  * @param {string} message description of warning
16
17
  * @param {DependencyLocation} loc location start and end positions of the module
17
18
  */
@@ -29,7 +30,7 @@ class UnsupportedFeatureWarning extends WebpackError {
29
30
 
30
31
  makeSerializable(
31
32
  UnsupportedFeatureWarning,
32
- "webpack/lib/UnsupportedFeatureWarning"
33
+ "webpack/lib/errors/UnsupportedFeatureWarning"
33
34
  );
34
35
 
35
36
  module.exports = UnsupportedFeatureWarning;
@@ -0,0 +1,84 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Jarid Margolin @jaridmargolin
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const inspect = require("util").inspect.custom;
9
+ const makeSerializable = require("../util/makeSerializable");
10
+
11
+ /** @typedef {import("../Chunk")} Chunk */
12
+ /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
13
+ /** @typedef {import("../Module")} Module */
14
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
15
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
16
+
17
+ class WebpackError extends Error {
18
+ /**
19
+ * Creates an instance of WebpackError.
20
+ * @param {string=} message error message
21
+ * @param {{ cause?: unknown }} options error options
22
+ */
23
+ constructor(message, options = {}) {
24
+ super(message, options);
25
+
26
+ /** @type {string=} */
27
+ this.details = undefined;
28
+ /** @type {(Module | null)=} */
29
+ this.module = undefined;
30
+ /** @type {DependencyLocation=} */
31
+ this.loc = undefined;
32
+ /** @type {boolean=} */
33
+ this.hideStack = undefined;
34
+ /** @type {Chunk=} */
35
+ this.chunk = undefined;
36
+ /** @type {string=} */
37
+ this.file = undefined;
38
+ }
39
+
40
+ /**
41
+ * Returns inspect message.
42
+ * @returns {string} inspect message
43
+ */
44
+ [inspect]() {
45
+ return (
46
+ this.stack +
47
+ (this.details ? `\n${this.details}` : "") +
48
+ (this.cause ? `\n${this.cause}` : "")
49
+ );
50
+ }
51
+
52
+ /**
53
+ * Serializes this instance into the provided serializer context.
54
+ * @param {ObjectSerializerContext} context context
55
+ */
56
+ serialize({ write }) {
57
+ write(this.name);
58
+ write(this.message);
59
+ write(this.stack);
60
+ write(this.cause);
61
+ write(this.details);
62
+ write(this.loc);
63
+ write(this.hideStack);
64
+ }
65
+
66
+ /**
67
+ * Restores this instance from the provided deserializer context.
68
+ * @param {ObjectDeserializerContext} context context
69
+ */
70
+ deserialize({ read }) {
71
+ this.name = read();
72
+ this.message = read();
73
+ this.stack = read();
74
+ this.cause = read();
75
+ this.details = read();
76
+ this.loc = read();
77
+ this.hideStack = read();
78
+ }
79
+ }
80
+
81
+ makeSerializable(WebpackError, "webpack/lib/errors/WebpackError");
82
+
83
+ /** @type {typeof WebpackError} */
84
+ module.exports = WebpackError;
@@ -13,6 +13,7 @@ class ExportWebpackRequireRuntimeModule extends RuntimeModule {
13
13
  }
14
14
 
15
15
  /**
16
+ * Returns true, if the runtime module should get it's own scope.
16
17
  * @returns {boolean} true, if the runtime module should get it's own scope
17
18
  */
18
19
  shouldIsolate() {
@@ -20,6 +21,7 @@ class ExportWebpackRequireRuntimeModule extends RuntimeModule {
20
21
  }
21
22
 
22
23
  /**
24
+ * Generates runtime code for this runtime module.
23
25
  * @returns {string | null} runtime code
24
26
  */
25
27
  generate() {
@@ -27,8 +27,11 @@ const { getUndoPath } = require("../util/identifier");
27
27
  /** @typedef {import("../Compilation")} Compilation */
28
28
  /** @typedef {import("../Compiler")} Compiler */
29
29
  /** @typedef {import("../Entrypoint")} Entrypoint */
30
+ /** @typedef {import("../Module")} Module */
31
+ /** @typedef {import("../javascript/JavascriptModulesPlugin").ChunkRenderContext} ChunkRenderContext */
30
32
 
31
33
  /**
34
+ * Gets relative path.
32
35
  * @param {Compilation} compilation the compilation instance
33
36
  * @param {Chunk} chunk the chunk
34
37
  * @param {Chunk} runtimeChunk the runtime chunk
@@ -69,6 +72,7 @@ const getRelativePath = (compilation, chunk, runtimeChunk) => {
69
72
  };
70
73
 
71
74
  /**
75
+ * Renders chunk import.
72
76
  * @param {Compilation} compilation the compilation instance
73
77
  * @param {Chunk} chunk the chunk to render the import for
74
78
  * @param {string=} namedImport the named import to use for the import
@@ -76,12 +80,15 @@ const getRelativePath = (compilation, chunk, runtimeChunk) => {
76
80
  * @returns {string} the import source
77
81
  */
78
82
  function renderChunkImport(compilation, chunk, namedImport, runtimeChunk) {
79
- return `import ${namedImport ? `* as ${namedImport}` : `{ ${RuntimeGlobals.require} }`} from ${JSON.stringify(
83
+ return `import ${
84
+ namedImport ? `* as ${namedImport}` : `{ ${RuntimeGlobals.require} }`
85
+ } from ${JSON.stringify(
80
86
  getRelativePath(compilation, chunk, runtimeChunk || chunk)
81
87
  )};\n`;
82
88
  }
83
89
 
84
90
  /**
91
+ * Gets chunk named import.
85
92
  * @param {number} index the index of the chunk
86
93
  * @returns {string} the named import to use for the import
87
94
  */
@@ -93,7 +100,7 @@ const PLUGIN_NAME = "ModuleChunkFormatPlugin";
93
100
 
94
101
  class ModuleChunkFormatPlugin {
95
102
  /**
96
- * Apply the plugin
103
+ * Applies the plugin by registering its hooks on the compiler.
97
104
  * @param {Compiler} compiler the compiler instance
98
105
  * @returns {void}
99
106
  */
@@ -111,6 +118,7 @@ class ModuleChunkFormatPlugin {
111
118
  );
112
119
  const hooks = getCompilationHooks(compilation);
113
120
  /**
121
+ * With dependent chunks.
114
122
  * @param {Iterable<Chunk>} chunks the chunks to render
115
123
  * @param {ChunkGraph} chunkGraph the chunk graph
116
124
  * @param {Chunk=} runtimeChunk the runtime chunk
@@ -178,10 +186,14 @@ class ModuleChunkFormatPlugin {
178
186
  const hotUpdateChunk = chunk instanceof HotUpdateChunk ? chunk : null;
179
187
  const source = new ConcatSource();
180
188
  source.add(
181
- `export const ${RuntimeGlobals.esmId} = ${JSON.stringify(chunk.id)};\n`
189
+ `export const ${RuntimeGlobals.esmId} = ${JSON.stringify(
190
+ chunk.id
191
+ )};\n`
182
192
  );
183
193
  source.add(
184
- `export const ${RuntimeGlobals.esmIds} = ${JSON.stringify(chunk.ids)};\n`
194
+ `export const ${RuntimeGlobals.esmIds} = ${JSON.stringify(
195
+ chunk.ids
196
+ )};\n`
185
197
  );
186
198
  source.add(`export const ${RuntimeGlobals.esmModules} = `);
187
199
  source.add(modules);
@@ -198,6 +210,8 @@ class ModuleChunkFormatPlugin {
198
210
  }
199
211
  const { entries, runtimeChunk } = getChunkInfo(chunk, chunkGraph);
200
212
  if (runtimeChunk) {
213
+ const { inlinedEntryModule, inlinedEntrySource } =
214
+ /** @type {ChunkRenderContext} */ (renderContext);
201
215
  const entrySource = new ConcatSource();
202
216
  entrySource.add(source);
203
217
  entrySource.add(";\n\n// load runtime\n");
@@ -205,12 +219,21 @@ class ModuleChunkFormatPlugin {
205
219
  renderChunkImport(compilation, runtimeChunk, "", chunk)
206
220
  );
207
221
  const startupSource = new ConcatSource();
208
- startupSource.add(
209
- `var __webpack_exec__ = ${runtimeTemplate.returningFunction(
210
- `${RuntimeGlobals.require}(${RuntimeGlobals.entryModuleId} = moduleId)`,
211
- "moduleId"
212
- )}\n`
222
+ // The `__webpack_exec__` helper is only needed for entries that
223
+ // are executed through the registry, not for inlined entries.
224
+ const needExec = entries.some(
225
+ ([module]) =>
226
+ module !== inlinedEntryModule &&
227
+ chunkGraph.getModuleSourceTypes(module).has(JAVASCRIPT_TYPE)
213
228
  );
229
+ if (needExec) {
230
+ startupSource.add(
231
+ `var __webpack_exec__ = ${runtimeTemplate.returningFunction(
232
+ `${RuntimeGlobals.require}(${RuntimeGlobals.entryModuleId} = moduleId)`,
233
+ "moduleId"
234
+ )}\n`
235
+ );
236
+ }
214
237
 
215
238
  /** @type {Set<Chunk>} */
216
239
  const loadedChunks = new Set();
@@ -244,18 +267,32 @@ class ModuleChunkFormatPlugin {
244
267
  startupSource.add("\n");
245
268
  startupSource.add(sourceWithDependentChunks);
246
269
  }
247
- startupSource.add(
248
- `${
249
- final ? `var ${RuntimeGlobals.exports} = ` : ""
250
- }__webpack_exec__(${JSON.stringify(moduleId)});\n`
251
- );
270
+ if (module === inlinedEntryModule && inlinedEntrySource) {
271
+ // Inline the entry at the top level so its declarations stay
272
+ // live ESM bindings (exports appended by `renderStartup`).
273
+ startupSource.add(
274
+ `${runtimeTemplate.renderLet()} ${
275
+ RuntimeGlobals.exports
276
+ } = {};\n`
277
+ );
278
+ startupSource.add(inlinedEntrySource);
279
+ startupSource.add("\n");
280
+ } else {
281
+ startupSource.add(
282
+ `${
283
+ final ? `var ${RuntimeGlobals.exports} = ` : ""
284
+ }__webpack_exec__(${JSON.stringify(moduleId)});\n`
285
+ );
286
+ }
252
287
  }
253
288
 
254
289
  entrySource.add(
255
290
  hooks.renderStartup.call(
256
291
  startupSource,
257
292
  entries[entries.length - 1][0],
258
- renderContext
293
+ inlinedEntryModule
294
+ ? { ...renderContext, inlined: true, inlinedInIIFE: false }
295
+ : renderContext
259
296
  )
260
297
  );
261
298
  return entrySource;
@@ -17,7 +17,7 @@ const PLUGIN_NAME = "ModuleChunkLoadingPlugin";
17
17
 
18
18
  class ModuleChunkLoadingPlugin {
19
19
  /**
20
- * Apply the plugin
20
+ * Applies the plugin by registering its hooks on the compiler.
21
21
  * @param {Compiler} compiler the compiler instance
22
22
  * @returns {void}
23
23
  */
@@ -25,6 +25,7 @@ class ModuleChunkLoadingPlugin {
25
25
  compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
26
26
  const globalChunkLoading = compilation.outputOptions.chunkLoading;
27
27
  /**
28
+ * Checks whether this module chunk loading plugin is enabled for chunk.
28
29
  * @param {Chunk} chunk chunk to check
29
30
  * @returns {boolean} true, when the plugin is enabled for the chunk
30
31
  */
@@ -39,6 +40,7 @@ class ModuleChunkLoadingPlugin {
39
40
  /** @type {WeakSet<Chunk>} */
40
41
  const onceForChunkSet = new WeakSet();
41
42
  /**
43
+ * Handles the hook callback for this code path.
42
44
  * @param {Chunk} chunk chunk to check
43
45
  * @param {RuntimeRequirements} set runtime requirements
44
46
  */
@@ -62,6 +64,9 @@ class ModuleChunkLoadingPlugin {
62
64
  compilation.hooks.runtimeRequirementInTree
63
65
  .for(RuntimeGlobals.externalInstallChunk)
64
66
  .tap(PLUGIN_NAME, handler);
67
+ compilation.hooks.runtimeRequirementInTree
68
+ .for(RuntimeGlobals.analyzableChunkImport)
69
+ .tap(PLUGIN_NAME, handler);
65
70
  compilation.hooks.runtimeRequirementInTree
66
71
  .for(RuntimeGlobals.onChunksLoaded)
67
72
  .tap(PLUGIN_NAME, handler);
@@ -81,12 +86,15 @@ class ModuleChunkLoadingPlugin {
81
86
  );
82
87
  });
83
88
 
84
- // We need public path only when we prefetch/preload chunk or public path is not `auto`
89
+ // The prefetch/preload handlers build the chunk URL themselves, so they need
90
+ // the public path and script filename directly — without relying on
91
+ // `ensureChunkHandlers` to pull them in (an analyzable `import()` may replace it).
85
92
  compilation.hooks.runtimeRequirementInTree
86
93
  .for(RuntimeGlobals.prefetchChunkHandlers)
87
94
  .tap(PLUGIN_NAME, (chunk, set) => {
88
95
  if (!isEnabledForChunk(chunk)) return;
89
96
  set.add(RuntimeGlobals.publicPath);
97
+ set.add(RuntimeGlobals.getChunkScriptFilename);
90
98
  });
91
99
 
92
100
  compilation.hooks.runtimeRequirementInTree
@@ -94,6 +102,7 @@ class ModuleChunkLoadingPlugin {
94
102
  .tap(PLUGIN_NAME, (chunk, set) => {
95
103
  if (!isEnabledForChunk(chunk)) return;
96
104
  set.add(RuntimeGlobals.publicPath);
105
+ set.add(RuntimeGlobals.getChunkScriptFilename);
97
106
  });
98
107
 
99
108
  compilation.hooks.runtimeRequirementInTree
@@ -113,7 +122,6 @@ class ModuleChunkLoadingPlugin {
113
122
  .tap(PLUGIN_NAME, (chunk, set) => {
114
123
  if (!isEnabledForChunk(chunk)) return;
115
124
  set.add(RuntimeGlobals.publicPath);
116
- set.add(RuntimeGlobals.loadScript);
117
125
  set.add(RuntimeGlobals.getChunkUpdateScriptFilename);
118
126
  set.add(RuntimeGlobals.moduleCache);
119
127
  set.add(RuntimeGlobals.hmrModuleData);
@@ -5,7 +5,7 @@
5
5
  "use strict";
6
6
 
7
7
  const { SyncWaterfallHook } = require("tapable");
8
- const Compilation = require("../Compilation");
8
+ /** @typedef {import("../Compilation")} Compilation */
9
9
  const RuntimeGlobals = require("../RuntimeGlobals");
10
10
  const RuntimeModule = require("../RuntimeModule");
11
11
  const Template = require("../Template");
@@ -18,44 +18,33 @@ const {
18
18
  } = require("../javascript/JavascriptModulesPlugin");
19
19
  const { getInitialChunkIds } = require("../javascript/StartupHelpers");
20
20
  const compileBooleanMatcher = require("../util/compileBooleanMatcher");
21
+ const createHooksRegistry = require("../util/createHooksRegistry");
21
22
  const { getUndoPath } = require("../util/identifier");
22
23
 
23
24
  /** @typedef {import("../Chunk")} Chunk */
24
25
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
25
26
  /** @typedef {import("../Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
26
27
 
28
+ const createCompilationHooks = () => ({
29
+ /**
30
+ * @type {SyncWaterfallHook<[string, Chunk]>}
31
+ * @since 5.41.0
32
+ */
33
+ linkPreload: new SyncWaterfallHook(["source", "chunk"]),
34
+ /**
35
+ * @type {SyncWaterfallHook<[string, Chunk]>}
36
+ * @since 5.41.0
37
+ */
38
+ linkPrefetch: new SyncWaterfallHook(["source", "chunk"])
39
+ });
40
+
27
41
  /**
28
- * @typedef {object} JsonpCompilationPluginHooks
29
- * @property {SyncWaterfallHook<[string, Chunk]>} linkPreload
30
- * @property {SyncWaterfallHook<[string, Chunk]>} linkPrefetch
42
+ * @typedef {ReturnType<typeof createCompilationHooks>} JsonpCompilationPluginHooks
31
43
  */
32
44
 
33
- /** @type {WeakMap<Compilation, JsonpCompilationPluginHooks>} */
34
- const compilationHooksMap = new WeakMap();
35
-
36
45
  class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
37
46
  /**
38
- * @param {Compilation} compilation the compilation
39
- * @returns {JsonpCompilationPluginHooks} hooks
40
- */
41
- static getCompilationHooks(compilation) {
42
- if (!(compilation instanceof Compilation)) {
43
- throw new TypeError(
44
- "The 'compilation' argument must be an instance of Compilation"
45
- );
46
- }
47
- let hooks = compilationHooksMap.get(compilation);
48
- if (hooks === undefined) {
49
- hooks = {
50
- linkPreload: new SyncWaterfallHook(["source", "chunk"]),
51
- linkPrefetch: new SyncWaterfallHook(["source", "chunk"])
52
- };
53
- compilationHooksMap.set(compilation, hooks);
54
- }
55
- return hooks;
56
- }
57
-
58
- /**
47
+ * Creates an instance of ModuleChunkLoadingRuntimeModule.
59
48
  * @param {ReadOnlyRuntimeRequirements} runtimeRequirements runtime requirements
60
49
  */
61
50
  constructor(runtimeRequirements) {
@@ -65,6 +54,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
65
54
  }
66
55
 
67
56
  /**
57
+ * Returns generated code.
68
58
  * @private
69
59
  * @param {Chunk} chunk chunk
70
60
  * @param {string} rootOutputDir root output directory
@@ -85,6 +75,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
85
75
  }
86
76
 
87
77
  /**
78
+ * Generates runtime code for this runtime module.
88
79
  * @returns {string | null} runtime code
89
80
  */
90
81
  generate() {
@@ -101,6 +92,9 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
101
92
  const withExternalInstallChunk = this._runtimeRequirements.has(
102
93
  RuntimeGlobals.externalInstallChunk
103
94
  );
95
+ const withAnalyzableImport = this._runtimeRequirements.has(
96
+ RuntimeGlobals.analyzableChunkImport
97
+ );
104
98
  const withLoading = this._runtimeRequirements.has(
105
99
  RuntimeGlobals.ensureChunkHandlers
106
100
  );
@@ -145,6 +139,13 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
145
139
  ? `${RuntimeGlobals.hmrRuntimeStatePrefix}_module`
146
140
  : undefined;
147
141
 
142
+ const cst = runtimeTemplate.renderConst();
143
+ const lt = runtimeTemplate.renderLet();
144
+ const installedChunksObject = `{\n${Template.indent(
145
+ Array.from(initialChunkIds, (id) => `${JSON.stringify(id)}: 0`).join(
146
+ ",\n"
147
+ )
148
+ )}\n}`;
148
149
  return Template.asString([
149
150
  withBaseURI
150
151
  ? this._generateBaseUri(chunk, rootOutputDir)
@@ -153,18 +154,14 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
153
154
  "// object to store loaded and loading chunks",
154
155
  "// undefined = chunk not loaded, null = chunk preloaded/prefetched",
155
156
  "// [resolve, Promise] = chunk loading, 0 = chunk loaded",
156
- `var installedChunks = ${
157
- stateExpression ? `${stateExpression} = ${stateExpression} || ` : ""
158
- }{`,
159
- Template.indent(
160
- Array.from(initialChunkIds, (id) => `${JSON.stringify(id)}: 0`).join(
161
- ",\n"
162
- )
163
- ),
164
- "};",
157
+ `${cst} installedChunks = ${
158
+ stateExpression
159
+ ? runtimeTemplate.assignOr(stateExpression, installedChunksObject)
160
+ : installedChunksObject
161
+ };`,
165
162
  "",
166
- withLoading || withExternalInstallChunk
167
- ? `var installChunk = ${runtimeTemplate.basicFunction("data", [
163
+ withLoading || withExternalInstallChunk || withAnalyzableImport
164
+ ? `${cst} installChunk = ${runtimeTemplate.basicFunction("data", [
168
165
  runtimeTemplate.destructureObject(
169
166
  [
170
167
  RuntimeGlobals.esmIds,
@@ -206,7 +203,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
206
203
  hasJsMatcher !== false
207
204
  ? Template.indent([
208
205
  "// import() chunk loading for javascript",
209
- `var installedChunkData = ${RuntimeGlobals.hasOwnProperty}(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;`,
206
+ `${lt} installedChunkData = ${RuntimeGlobals.hasOwnProperty}(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;`,
210
207
  'if(installedChunkData !== 0) { // 0 means "already installed".',
211
208
  Template.indent([
212
209
  "",
@@ -222,7 +219,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
222
219
  : `if(${hasJsMatcher("chunkId")}) {`,
223
220
  Template.indent([
224
221
  "// setup Promise in chunk cache",
225
- `var promise = ${importFunctionName}(${
222
+ `${lt} promise = ${importFunctionName}(${
226
223
  compilation.outputOptions.publicPath === "auto"
227
224
  ? JSON.stringify(rootOutputDir)
228
225
  : RuntimeGlobals.publicPath
@@ -235,7 +232,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
235
232
  "throw e;"
236
233
  ]
237
234
  )});`,
238
- `var promise = Promise.race([promise, new Promise(${runtimeTemplate.expressionFunction(
235
+ `promise = Promise.race([promise, new Promise(${runtimeTemplate.expressionFunction(
239
236
  "installedChunkData = installedChunks[chunkId] = [resolve]",
240
237
  "resolve"
241
238
  )})])`,
@@ -258,6 +255,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
258
255
  ? `${
259
256
  RuntimeGlobals.prefetchChunkHandlers
260
257
  }.j = ${runtimeTemplate.basicFunction("chunkId", [
258
+ // prefetch is a browser-only resource hint; no-op without a DOM (e.g. node side of a universal build)
261
259
  isNeutralPlatform
262
260
  ? "if (typeof document === 'undefined') return;"
263
261
  : "",
@@ -270,7 +268,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
270
268
  "installedChunks[chunkId] = null;",
271
269
  linkPrefetch.call(
272
270
  Template.asString([
273
- "var link = document.createElement('link');",
271
+ `${cst} link = document.createElement('link');`,
274
272
  charset ? "link.charset = 'utf-8';" : "",
275
273
  crossOriginLoading
276
274
  ? `link.crossOrigin = ${JSON.stringify(
@@ -298,6 +296,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
298
296
  ? `${
299
297
  RuntimeGlobals.preloadChunkHandlers
300
298
  }.j = ${runtimeTemplate.basicFunction("chunkId", [
299
+ // preload is a browser-only resource hint; no-op without a DOM (e.g. node side of a universal build)
301
300
  isNeutralPlatform
302
301
  ? "if (typeof document === 'undefined') return;"
303
302
  : "",
@@ -310,7 +309,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
310
309
  "installedChunks[chunkId] = null;",
311
310
  linkPreload.call(
312
311
  Template.asString([
313
- "var link = document.createElement('link');",
312
+ `${cst} link = document.createElement('link');`,
314
313
  charset ? "link.charset = 'utf-8';" : "",
315
314
  `if (${RuntimeGlobals.scriptNonce}) {`,
316
315
  Template.indent(
@@ -347,6 +346,31 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
347
346
  ])
348
347
  : "// no external install chunk",
349
348
  "",
349
+ withAnalyzableImport
350
+ ? `${
351
+ RuntimeGlobals.analyzableChunkImport
352
+ } = ${runtimeTemplate.basicFunction("chunkId, importFn", [
353
+ // A literal `import()` a foreign bundler can follow, wrapped to keep
354
+ // `ensureChunk` timing and deduplication: resolved chunk → resolve now, in-flight →
355
+ // reuse its promise, else run `importFn()` and install it.
356
+ `${lt} installedChunkData = ${RuntimeGlobals.hasOwnProperty}(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;`,
357
+ "if(installedChunkData === 0) return Promise.resolve();",
358
+ "if(installedChunkData) return installedChunkData[1];",
359
+ `${lt} promise = importFn().then(installChunk, ${runtimeTemplate.basicFunction(
360
+ "e",
361
+ [
362
+ "if(installedChunks[chunkId] !== 0) installedChunks[chunkId] = undefined;",
363
+ "throw e;"
364
+ ]
365
+ )});`,
366
+ `promise = Promise.race([promise, new Promise(${runtimeTemplate.expressionFunction(
367
+ "installedChunkData = installedChunks[chunkId] = [resolve]",
368
+ "resolve"
369
+ )})]);`,
370
+ "return (installedChunkData[1] = promise);"
371
+ ])};`
372
+ : "// no analyzable chunk import",
373
+ "",
350
374
  withOnChunkLoad
351
375
  ? `${
352
376
  RuntimeGlobals.onChunksLoaded
@@ -365,30 +389,30 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
365
389
  "resolve, reject",
366
390
  [
367
391
  "// start update chunk loading",
368
- `var url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkUpdateScriptFilename}(chunkId);`,
369
- `var onResolve = ${runtimeTemplate.basicFunction("obj", [
370
- `var updatedModules = obj.${RuntimeGlobals.esmModules};`,
371
- `var updatedRuntime = obj.${RuntimeGlobals.esmRuntime};`,
392
+ `${cst} url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkUpdateScriptFilename}(chunkId);`,
393
+ `${cst} onResolve = ${runtimeTemplate.basicFunction("obj", [
394
+ `${cst} updatedModules = obj.${RuntimeGlobals.esmModules};`,
395
+ `${cst} updatedRuntime = obj.${RuntimeGlobals.esmRuntime};`,
372
396
  "if(updatedRuntime) currentUpdateRuntime.push(updatedRuntime);",
373
397
  "for(var moduleId in updatedModules) {",
374
398
  Template.indent([
375
399
  `if(${RuntimeGlobals.hasOwnProperty}(updatedModules, moduleId)) {`,
376
400
  Template.indent([
377
401
  "currentUpdate[moduleId] = updatedModules[moduleId];",
378
- "if(updatedModulesList) updatedModulesList.push(moduleId);"
402
+ `${runtimeTemplate.optionalChaining("updatedModulesList", "push(moduleId)")};`
379
403
  ]),
380
404
  "}"
381
405
  ]),
382
406
  "}",
383
407
  "resolve(obj);"
384
408
  ])};`,
385
- `var onReject = ${runtimeTemplate.basicFunction("error", [
386
- "var errorMsg = error.message || 'unknown reason';",
409
+ `${cst} onReject = ${runtimeTemplate.basicFunction("error", [
410
+ `${cst} errorMsg = error.message || 'unknown reason';`,
387
411
  "error.message = 'Loading hot update chunk ' + chunkId + ' failed.\\n(' + errorMsg + ')';",
388
412
  "error.name = 'ChunkLoadError';",
389
413
  "reject(error);"
390
414
  ])}`,
391
- `var loadScript = ${runtimeTemplate.basicFunction(
415
+ `${cst} loadScript = ${runtimeTemplate.basicFunction(
392
416
  "url, onResolve, onReject",
393
417
  [
394
418
  `return ${importFunctionName}(/* webpackIgnore: true */ url).then(onResolve).catch(onReject)`
@@ -423,4 +447,8 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
423
447
  }
424
448
  }
425
449
 
450
+ ModuleChunkLoadingRuntimeModule.getCompilationHooks = createHooksRegistry(
451
+ createCompilationHooks
452
+ );
453
+
426
454
  module.exports = ModuleChunkLoadingRuntimeModule;