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