@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
@@ -4,7 +4,7 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- const WebpackError = require("../WebpackError");
7
+ const WebpackError = require("../errors/WebpackError");
8
8
 
9
9
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
10
10
  /** @typedef {import("../Module")} Module */
@@ -12,6 +12,7 @@ const WebpackError = require("../WebpackError");
12
12
  /** @typedef {import("../RequestShortener")} RequestShortener */
13
13
 
14
14
  /**
15
+ * Gets initial module chains.
15
16
  * @param {Module} module module to get chains from
16
17
  * @param {ModuleGraph} moduleGraph the module graph
17
18
  * @param {ChunkGraph} chunkGraph the chunk graph
@@ -82,8 +83,9 @@ const getInitialModuleChains = (
82
83
  return [...results];
83
84
  };
84
85
 
85
- module.exports = class WebAssemblyInInitialChunkError extends WebpackError {
86
+ class WebAssemblyInInitialChunkError extends WebpackError {
86
87
  /**
88
+ * Creates an instance of WebAssemblyInInitialChunkError.
87
89
  * @param {Module} module WASM module
88
90
  * @param {ModuleGraph} moduleGraph the module graph
89
91
  * @param {ChunkGraph} chunkGraph the chunk graph
@@ -105,7 +107,11 @@ ${moduleChains.map((s) => `* ${s}`).join("\n")}`;
105
107
 
106
108
  /** @type {string} */
107
109
  this.name = "WebAssemblyInInitialChunkError";
110
+ /** @type {boolean} */
108
111
  this.hideStack = true;
112
+ /** @type {Module} */
109
113
  this.module = module;
110
114
  }
111
- };
115
+ }
116
+
117
+ module.exports = WebAssemblyInInitialChunkError;
@@ -25,6 +25,7 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe
25
25
 
26
26
  class WebAssemblyJavascriptGenerator extends Generator {
27
27
  /**
28
+ * Returns the source types available for this module.
28
29
  * @param {NormalModule} module fresh module
29
30
  * @returns {SourceTypes} available types (do not mutate)
30
31
  */
@@ -33,6 +34,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
33
34
  }
34
35
 
35
36
  /**
37
+ * Returns the estimated size for the requested source type.
36
38
  * @param {NormalModule} module the module
37
39
  * @param {SourceType=} type source type
38
40
  * @returns {number} estimate size of the module
@@ -42,6 +44,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
42
44
  }
43
45
 
44
46
  /**
47
+ * Generates generated code for this runtime module.
45
48
  * @param {NormalModule} module module for which the code should be generated
46
49
  * @param {GenerateContext} generateContext context for generate
47
50
  * @returns {Source | null} generated code
@@ -223,6 +226,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
223
226
  }
224
227
 
225
228
  /**
229
+ * Generates fallback output for the provided error condition.
226
230
  * @param {Error} error the error
227
231
  * @param {NormalModule} module module for which the code should be generated
228
232
  * @param {GenerateContext} generateContext context for generate
@@ -27,24 +27,35 @@ const getWebAssemblyJavascriptGenerator = memoize(() =>
27
27
  require("./WebAssemblyJavascriptGenerator")
28
28
  );
29
29
  const getWebAssemblyParser = memoize(() => require("./WebAssemblyParser"));
30
+ const getSyncWasmModule = memoize(() => require("./SyncWasmModule"));
30
31
 
31
32
  const PLUGIN_NAME = "WebAssemblyModulesPlugin";
32
33
 
33
34
  /**
35
+ * Options that influence how synchronous WebAssembly modules are transformed
36
+ * and emitted.
34
37
  * @typedef {object} WebAssemblyModulesPluginOptions
35
38
  * @property {boolean=} mangleImports mangle imports
36
39
  */
37
40
 
41
+ /**
42
+ * Adds parser, generator, manifest, and validation support for synchronous
43
+ * WebAssembly modules in the compilation pipeline.
44
+ */
38
45
  class WebAssemblyModulesPlugin {
39
46
  /**
47
+ * Stores options that affect generated synchronous WebAssembly output.
40
48
  * @param {WebAssemblyModulesPluginOptions} options options
41
49
  */
42
50
  constructor(options) {
51
+ /** @type {WebAssemblyModulesPluginOptions} */
43
52
  this.options = options;
44
53
  }
45
54
 
46
55
  /**
47
- * Apply the plugin
56
+ * Registers compilation hooks that parse and generate sync WebAssembly
57
+ * modules, emit their binary assets, and report invalid placement in initial
58
+ * chunks.
48
59
  * @param {Compiler} compiler the compiler instance
49
60
  * @returns {void}
50
61
  */
@@ -62,6 +73,14 @@ class WebAssemblyModulesPlugin {
62
73
  normalModuleFactory
63
74
  );
64
75
 
76
+ normalModuleFactory.hooks.createModuleClass
77
+ .for(WEBASSEMBLY_MODULE_TYPE_SYNC)
78
+ .tap(PLUGIN_NAME, (createData, _resolveData) => {
79
+ const SyncWasmModule = getSyncWasmModule();
80
+
81
+ return new SyncWasmModule(createData);
82
+ });
83
+
65
84
  normalModuleFactory.hooks.createParser
66
85
  .for(WEBASSEMBLY_MODULE_TYPE_SYNC)
67
86
  .tap(PLUGIN_NAME, () => {
@@ -16,12 +16,14 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe
16
16
  /** @typedef {import("@webassemblyjs/ast").ModuleImport} ModuleImport */
17
17
  /** @typedef {import("../Module").BuildInfo} BuildInfo */
18
18
  /** @typedef {import("../Module").BuildMeta} BuildMeta */
19
+ /** @typedef {import("./SyncWasmModule").SyncWasmModuleBuildMeta} SyncWasmModuleBuildMeta */
19
20
  /** @typedef {import("../Parser").ParserState} ParserState */
20
21
  /** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
21
22
 
22
23
  const JS_COMPAT_TYPES = new Set(["i32", "i64", "f32", "f64", "externref"]);
23
24
 
24
25
  /**
26
+ * Gets js incompatible type.
25
27
  * @param {t.Signature} signature the func signature
26
28
  * @returns {null | string} the type incompatible with js types
27
29
  */
@@ -38,7 +40,8 @@ const getJsIncompatibleType = (signature) => {
38
40
  };
39
41
 
40
42
  /**
41
- * TODO why are there two different Signature types?
43
+ * Same check for the other `@webassemblyjs` signature shape: imports carry the
44
+ * AST `Signature` node (above), the module context uses plain `FuncSignature`.
42
45
  * @param {t.FuncSignature} signature the func signature
43
46
  * @returns {null | string} the type incompatible with js types
44
47
  */
@@ -64,6 +67,7 @@ const decoderOpts = {
64
67
 
65
68
  class WebAssemblyParser extends Parser {
66
69
  /**
70
+ * Parses the provided source and updates the parser state.
67
71
  * @param {string | Buffer | PreparsedAst} source the source to parse
68
72
  * @param {ParserState} state the parser state
69
73
  * @returns {ParserState} the parser state
@@ -88,7 +92,9 @@ class WebAssemblyParser extends Parser {
88
92
  // extract imports and exports
89
93
  /** @type {string[]} */
90
94
  const exports = [];
91
- const buildMeta = /** @type {BuildMeta} */ (state.module.buildMeta);
95
+ const buildMeta = /** @type {SyncWasmModuleBuildMeta} */ (
96
+ state.module.buildMeta
97
+ );
92
98
  /** @type {Record<string, string> | undefined} */
93
99
  let jsIncompatibleExports = (buildMeta.jsIncompatibleExports = undefined);
94
100
 
@@ -112,7 +118,7 @@ class WebAssemblyParser extends Parser {
112
118
  if (incompatibleType) {
113
119
  if (jsIncompatibleExports === undefined) {
114
120
  jsIncompatibleExports =
115
- /** @type {BuildMeta} */
121
+ /** @type {SyncWasmModuleBuildMeta} */
116
122
  (state.module.buildMeta).jsIncompatibleExports = {};
117
123
  }
118
124
  jsIncompatibleExports[node.name] = incompatibleType;
@@ -12,6 +12,7 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe
12
12
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
13
13
 
14
14
  /**
15
+ * Defines the used wasm dependency type used by this module.
15
16
  * @typedef {object} UsedWasmDependency
16
17
  * @property {WebAssemblyImportDependency} dependency the dependency
17
18
  * @property {string} name the export name
@@ -21,6 +22,7 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe
21
22
  const MANGLED_MODULE = "a";
22
23
 
23
24
  /**
25
+ * Gets used dependencies.
24
26
  * @param {ModuleGraph} moduleGraph the module graph
25
27
  * @param {Module} module the module
26
28
  * @param {boolean | undefined} mangle mangle module and export names
@@ -7,17 +7,31 @@
7
7
 
8
8
  const { WEBASSEMBLY_MODULE_TYPE_ASYNC } = require("../ModuleTypeConstants");
9
9
  const RuntimeGlobals = require("../RuntimeGlobals");
10
+ const { getPresentKinds } = require("../TemplatedPathPlugin");
10
11
  const AsyncWasmCompileRuntimeModule = require("../wasm-async/AsyncWasmCompileRuntimeModule");
11
12
  const AsyncWasmLoadingRuntimeModule = require("../wasm-async/AsyncWasmLoadingRuntimeModule");
12
13
 
13
14
  /** @typedef {import("../Chunk")} Chunk */
14
15
  /** @typedef {import("../Compiler")} Compiler */
15
16
 
17
+ /**
18
+ * The wasm runtime inlines `[fullhash]` as a runtime `getFullHash()` call, so
19
+ * that runtime module must be requested (`[hash]` is the per-module hash here).
20
+ * @param {string} filename `output.webassemblyModuleFilename`
21
+ * @returns {boolean} whether it references the compilation `[fullhash]`
22
+ */
23
+ const usesFullHash = (filename) => getPresentKinds(filename).has("fullhash");
24
+
16
25
  const PLUGIN_NAME = "FetchCompileAsyncWasmPlugin";
17
26
 
27
+ /**
28
+ * Enables asynchronous WebAssembly loading through `fetch` for environments
29
+ * that can instantiate fetched binaries at runtime.
30
+ */
18
31
  class FetchCompileAsyncWasmPlugin {
19
32
  /**
20
- * Apply the plugin
33
+ * Registers compilation hooks that attach the async fetch-based wasm runtime
34
+ * to chunks containing async WebAssembly modules.
21
35
  * @param {Compiler} compiler the compiler instance
22
36
  * @returns {void}
23
37
  */
@@ -25,6 +39,8 @@ class FetchCompileAsyncWasmPlugin {
25
39
  compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
26
40
  const globalWasmLoading = compilation.outputOptions.wasmLoading;
27
41
  /**
42
+ * Determines whether the chunk should load async WebAssembly binaries
43
+ * through the `fetch` backend.
28
44
  * @param {Chunk} chunk chunk
29
45
  * @returns {boolean} true, if wasm loading is enabled for the chunk
30
46
  */
@@ -37,6 +53,8 @@ class FetchCompileAsyncWasmPlugin {
37
53
  return wasmLoading === "fetch";
38
54
  };
39
55
  /**
56
+ * Generates the runtime expression that downloads the emitted wasm
57
+ * binary for an async WebAssembly module.
40
58
  * @param {string} path path to the wasm file
41
59
  * @returns {string} code to load the wasm file
42
60
  */
@@ -56,6 +74,11 @@ class FetchCompileAsyncWasmPlugin {
56
74
  return;
57
75
  }
58
76
  set.add(RuntimeGlobals.publicPath);
77
+ if (
78
+ usesFullHash(compilation.outputOptions.webassemblyModuleFilename)
79
+ ) {
80
+ set.add(RuntimeGlobals.getFullHash);
81
+ }
59
82
  compilation.addRuntimeModule(
60
83
  chunk,
61
84
  new AsyncWasmLoadingRuntimeModule({
@@ -78,6 +101,11 @@ class FetchCompileAsyncWasmPlugin {
78
101
  return;
79
102
  }
80
103
  set.add(RuntimeGlobals.publicPath);
104
+ if (
105
+ usesFullHash(compilation.outputOptions.webassemblyModuleFilename)
106
+ ) {
107
+ set.add(RuntimeGlobals.getFullHash);
108
+ }
81
109
  compilation.addRuntimeModule(
82
110
  chunk,
83
111
  new AsyncWasmCompileRuntimeModule({
@@ -7,20 +7,36 @@
7
7
 
8
8
  const { WEBASSEMBLY_MODULE_TYPE_SYNC } = require("../ModuleTypeConstants");
9
9
  const RuntimeGlobals = require("../RuntimeGlobals");
10
+ const { getPresentKinds } = require("../TemplatedPathPlugin");
10
11
  const WasmChunkLoadingRuntimeModule = require("../wasm-sync/WasmChunkLoadingRuntimeModule");
11
12
 
12
13
  /** @typedef {import("../Chunk")} Chunk */
13
14
  /** @typedef {import("../Compiler")} Compiler */
14
15
 
15
16
  /**
17
+ * The wasm runtime inlines `[fullhash]` as a runtime `getFullHash()` call, so
18
+ * that runtime module must be requested (`[hash]` is the per-module hash here).
19
+ * @param {string} filename `output.webassemblyModuleFilename`
20
+ * @returns {boolean} whether it references the compilation `[fullhash]`
21
+ */
22
+ const usesFullHash = (filename) => getPresentKinds(filename).has("fullhash");
23
+
24
+ /**
25
+ * Options that influence how synchronous WebAssembly modules are emitted for
26
+ * the fetch-based wasm loading runtime.
16
27
  * @typedef {object} FetchCompileWasmPluginOptions
17
28
  * @property {boolean=} mangleImports mangle imports
18
29
  */
19
30
 
20
31
  const PLUGIN_NAME = "FetchCompileWasmPlugin";
21
32
 
33
+ /**
34
+ * Enables synchronous WebAssembly chunk loading that fetches `.wasm` files and
35
+ * compiles them in browser-like environments.
36
+ */
22
37
  class FetchCompileWasmPlugin {
23
38
  /**
39
+ * Stores options that affect generated synchronous WebAssembly runtime code.
24
40
  * @param {FetchCompileWasmPluginOptions=} options options
25
41
  */
26
42
  constructor(options = {}) {
@@ -29,7 +45,8 @@ class FetchCompileWasmPlugin {
29
45
  }
30
46
 
31
47
  /**
32
- * Apply the plugin
48
+ * Registers compilation hooks that attach the fetch-based synchronous wasm
49
+ * runtime module to chunks containing sync WebAssembly modules.
33
50
  * @param {Compiler} compiler the compiler instance
34
51
  * @returns {void}
35
52
  */
@@ -37,6 +54,8 @@ class FetchCompileWasmPlugin {
37
54
  compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
38
55
  const globalWasmLoading = compilation.outputOptions.wasmLoading;
39
56
  /**
57
+ * Determines whether the chunk should load synchronous WebAssembly
58
+ * binaries through the `fetch` backend.
40
59
  * @param {Chunk} chunk chunk
41
60
  * @returns {boolean} true, if wasm loading is enabled for the chunk
42
61
  */
@@ -49,6 +68,8 @@ class FetchCompileWasmPlugin {
49
68
  return wasmLoading === "fetch";
50
69
  };
51
70
  /**
71
+ * Generates the runtime expression that downloads the emitted wasm
72
+ * binary for a module.
52
73
  * @param {string} path path to the wasm file
53
74
  * @returns {string} code to load the wasm file
54
75
  */
@@ -69,6 +90,11 @@ class FetchCompileWasmPlugin {
69
90
  }
70
91
  set.add(RuntimeGlobals.moduleCache);
71
92
  set.add(RuntimeGlobals.publicPath);
93
+ if (
94
+ usesFullHash(compilation.outputOptions.webassemblyModuleFilename)
95
+ ) {
96
+ set.add(RuntimeGlobals.getFullHash);
97
+ }
72
98
  compilation.addRuntimeModule(
73
99
  chunk,
74
100
  new WasmChunkLoadingRuntimeModule({
@@ -14,9 +14,15 @@ const JsonpChunkLoadingRuntimeModule = require("./JsonpChunkLoadingRuntimeModule
14
14
 
15
15
  const PLUGIN_NAME = "JsonpChunkLoadingPlugin";
16
16
 
17
+ /**
18
+ * Enables browser-side JavaScript chunk loading through the JSONP runtime and
19
+ * adds the supporting runtime requirements for matching chunks.
20
+ */
17
21
  class JsonpChunkLoadingPlugin {
18
22
  /**
19
- * Apply the plugin
23
+ * Registers compilation hooks that attach the JSONP chunk-loading runtime
24
+ * module and its dependent runtime globals to chunks using `chunkLoading:
25
+ * "jsonp"`.
20
26
  * @param {Compiler} compiler the compiler instance
21
27
  * @returns {void}
22
28
  */
@@ -24,6 +30,8 @@ class JsonpChunkLoadingPlugin {
24
30
  compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
25
31
  const globalChunkLoading = compilation.outputOptions.chunkLoading;
26
32
  /**
33
+ * Determines whether the chunk resolves JavaScript chunks through the
34
+ * JSONP loading backend.
27
35
  * @param {Chunk} chunk chunk
28
36
  * @returns {boolean} true, if wasm loading is enabled for the chunk
29
37
  */
@@ -38,6 +46,8 @@ class JsonpChunkLoadingPlugin {
38
46
  /** @type {WeakSet<Chunk>} */
39
47
  const onceForChunkSet = new WeakSet();
40
48
  /**
49
+ * Adds the JSONP runtime module to a chunk once, along with the core
50
+ * runtime globals it relies on.
41
51
  * @param {Chunk} chunk chunk
42
52
  * @param {RuntimeRequirements} set runtime requirements
43
53
  */
@@ -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");
@@ -15,6 +15,7 @@ const {
15
15
  const chunkHasJs = require("../javascript/JavascriptModulesPlugin").chunkHasJs;
16
16
  const { getInitialChunkIds } = require("../javascript/StartupHelpers");
17
17
  const compileBooleanMatcher = require("../util/compileBooleanMatcher");
18
+ const createHooksRegistry = require("../util/createHooksRegistry");
18
19
 
19
20
  /** @typedef {import("../Chunk")} Chunk */
20
21
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
@@ -26,31 +27,7 @@ const compileBooleanMatcher = require("../util/compileBooleanMatcher");
26
27
  * @property {SyncWaterfallHook<[string, Chunk]>} linkPrefetch
27
28
  */
28
29
 
29
- /** @type {WeakMap<Compilation, JsonpCompilationPluginHooks>} */
30
- const compilationHooksMap = new WeakMap();
31
-
32
30
  class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
33
- /**
34
- * @param {Compilation} compilation the compilation
35
- * @returns {JsonpCompilationPluginHooks} hooks
36
- */
37
- static getCompilationHooks(compilation) {
38
- if (!(compilation instanceof Compilation)) {
39
- throw new TypeError(
40
- "The 'compilation' argument must be an instance of Compilation"
41
- );
42
- }
43
- let hooks = compilationHooksMap.get(compilation);
44
- if (hooks === undefined) {
45
- hooks = {
46
- linkPreload: new SyncWaterfallHook(["source", "chunk"]),
47
- linkPrefetch: new SyncWaterfallHook(["source", "chunk"])
48
- };
49
- compilationHooksMap.set(compilation, hooks);
50
- }
51
- return hooks;
52
- }
53
-
54
31
  /**
55
32
  * @param {ReadOnlyRuntimeRequirements} runtimeRequirements runtime requirements
56
33
  */
@@ -74,6 +51,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
74
51
  }
75
52
 
76
53
  /**
54
+ * Generates runtime code for this runtime module.
77
55
  * @returns {string | null} runtime code
78
56
  */
79
57
  generate() {
@@ -130,21 +108,24 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
130
108
  ? `${RuntimeGlobals.hmrRuntimeStatePrefix}_jsonp`
131
109
  : undefined;
132
110
 
111
+ const cst = runtimeTemplate.renderConst();
112
+ const lt = runtimeTemplate.renderLet();
113
+ const installedChunksObject = `{\n${Template.indent(
114
+ Array.from(initialChunkIds, (id) => `${JSON.stringify(id)}: 0`).join(
115
+ ",\n"
116
+ )
117
+ )}\n}`;
133
118
  return Template.asString([
134
119
  withBaseURI ? this._generateBaseUri(chunk) : "// no baseURI",
135
120
  "",
136
121
  "// object to store loaded and loading chunks",
137
122
  "// undefined = chunk not loaded, null = chunk preloaded/prefetched",
138
123
  "// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded",
139
- `var installedChunks = ${
140
- stateExpression ? `${stateExpression} = ${stateExpression} || ` : ""
141
- }{`,
142
- Template.indent(
143
- Array.from(initialChunkIds, (id) => `${JSON.stringify(id)}: 0`).join(
144
- ",\n"
145
- )
146
- ),
147
- "};",
124
+ `${cst} installedChunks = ${
125
+ stateExpression
126
+ ? runtimeTemplate.assignOr(stateExpression, installedChunksObject)
127
+ : installedChunksObject
128
+ };`,
148
129
  "",
149
130
  withLoading
150
131
  ? Template.asString([
@@ -153,7 +134,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
153
134
  hasJsMatcher !== false
154
135
  ? Template.indent([
155
136
  "// JSONP chunk loading for javascript",
156
- `var installedChunkData = ${RuntimeGlobals.hasOwnProperty}(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;`,
137
+ `${lt} installedChunkData = ${RuntimeGlobals.hasOwnProperty}(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;`,
157
138
  'if(installedChunkData !== 0) { // 0 means "already installed".',
158
139
  Template.indent([
159
140
  "",
@@ -169,17 +150,17 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
169
150
  : `if(${hasJsMatcher("chunkId")}) {`,
170
151
  Template.indent([
171
152
  "// setup Promise in chunk cache",
172
- `var promise = new Promise(${runtimeTemplate.expressionFunction(
153
+ `${cst} promise = new Promise(${runtimeTemplate.expressionFunction(
173
154
  "installedChunkData = installedChunks[chunkId] = [resolve, reject]",
174
155
  "resolve, reject"
175
156
  )});`,
176
157
  "promises.push(installedChunkData[2] = promise);",
177
158
  "",
178
159
  "// start chunk loading",
179
- `var url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkScriptFilename}(chunkId);`,
160
+ `${cst} url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkScriptFilename}(chunkId);`,
180
161
  "// create error before stack unwound to get useful stacktrace later",
181
- "var error = new Error();",
182
- `var loadingEnded = ${runtimeTemplate.basicFunction(
162
+ `${cst} error = new Error();`,
163
+ `${cst} loadingEnded = ${runtimeTemplate.basicFunction(
183
164
  "event",
184
165
  [
185
166
  `if(${RuntimeGlobals.hasOwnProperty}(installedChunks, chunkId)) {`,
@@ -188,12 +169,13 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
188
169
  "if(installedChunkData !== 0) installedChunks[chunkId] = undefined;",
189
170
  "if(installedChunkData) {",
190
171
  Template.indent([
191
- "var errorType = event && (event.type === 'load' ? 'missing' : event.type);",
192
- "var realSrc = event && event.target && event.target.src;",
172
+ `${cst} errorType = event && (event.type === 'load' ? 'missing' : event.type);`,
173
+ `${cst} realSrc = event && event.target && event.target.src;`,
193
174
  "error.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';",
194
175
  "error.name = 'ChunkLoadError';",
195
176
  "error.type = errorType;",
196
177
  "error.request = realSrc;",
178
+ "error.event = event;",
197
179
  "installedChunkData[1](error);"
198
180
  ]),
199
181
  "}"
@@ -233,7 +215,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
233
215
  "installedChunks[chunkId] = null;",
234
216
  linkPrefetch.call(
235
217
  Template.asString([
236
- "var link = document.createElement('link');",
218
+ `${cst} link = document.createElement('link');`,
237
219
  charset ? "link.charset = 'utf-8';" : "",
238
220
  crossOriginLoading
239
221
  ? `link.crossOrigin = ${JSON.stringify(
@@ -270,7 +252,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
270
252
  "installedChunks[chunkId] = null;",
271
253
  linkPreload.call(
272
254
  Template.asString([
273
- "var link = document.createElement('link');",
255
+ `${cst} link = document.createElement('link');`,
274
256
  scriptType && scriptType !== "module"
275
257
  ? `link.type = ${JSON.stringify(scriptType)};`
276
258
  : "",
@@ -309,8 +291,8 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
309
291
  "",
310
292
  withHmr
311
293
  ? Template.asString([
312
- "var currentUpdatedModulesList;",
313
- "var waitingUpdateResolves = {};",
294
+ `${lt} currentUpdatedModulesList;`,
295
+ `${cst} waitingUpdateResolves = {};`,
314
296
  "function loadUpdateChunk(chunkId, updatedModulesList) {",
315
297
  Template.indent([
316
298
  "currentUpdatedModulesList = updatedModulesList;",
@@ -319,23 +301,27 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
319
301
  [
320
302
  "waitingUpdateResolves[chunkId] = resolve;",
321
303
  "// start update chunk loading",
322
- `var url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkUpdateScriptFilename}(chunkId);`,
304
+ `${cst} url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkUpdateScriptFilename}(chunkId);`,
323
305
  "// create error before stack unwound to get useful stacktrace later",
324
- "var error = new Error();",
325
- `var loadingEnded = ${runtimeTemplate.basicFunction("event", [
326
- "if(waitingUpdateResolves[chunkId]) {",
327
- Template.indent([
328
- "waitingUpdateResolves[chunkId] = undefined",
329
- "var errorType = event && (event.type === 'load' ? 'missing' : event.type);",
330
- "var realSrc = event && event.target && event.target.src;",
331
- "error.message = 'Loading hot update chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';",
332
- "error.name = 'ChunkLoadError';",
333
- "error.type = errorType;",
334
- "error.request = realSrc;",
335
- "reject(error);"
336
- ]),
337
- "}"
338
- ])};`,
306
+ `${cst} error = new Error();`,
307
+ `${cst} loadingEnded = ${runtimeTemplate.basicFunction(
308
+ "event",
309
+ [
310
+ "if(waitingUpdateResolves[chunkId]) {",
311
+ Template.indent([
312
+ "waitingUpdateResolves[chunkId] = undefined",
313
+ `${cst} errorType = event && (event.type === 'load' ? 'missing' : event.type);`,
314
+ `${cst} realSrc = event && event.target && event.target.src;`,
315
+ "error.message = 'Loading hot update chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';",
316
+ "error.name = 'ChunkLoadError';",
317
+ "error.type = errorType;",
318
+ "error.request = realSrc;",
319
+ "error.event = event;",
320
+ "reject(error);"
321
+ ]),
322
+ "}"
323
+ ]
324
+ )};`,
339
325
  `${RuntimeGlobals.loadScript}(url, loadingEnded);`
340
326
  ]
341
327
  )});`
@@ -352,7 +338,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
352
338
  `if(${RuntimeGlobals.hasOwnProperty}(moreModules, moduleId)) {`,
353
339
  Template.indent([
354
340
  "currentUpdate[moduleId] = moreModules[moduleId];",
355
- "if(currentUpdatedModulesList) currentUpdatedModulesList.push(moduleId);"
341
+ `${runtimeTemplate.optionalChaining("currentUpdatedModulesList", "push(moduleId)")};`
356
342
  ]),
357
343
  "}"
358
344
  ]),
@@ -400,7 +386,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
400
386
  withCallback || withLoading
401
387
  ? Template.asString([
402
388
  "// install a JSONP callback for chunk loading",
403
- `var webpackJsonpCallback = ${runtimeTemplate.basicFunction(
389
+ `${cst} webpackJsonpCallback = ${runtimeTemplate.basicFunction(
404
390
  "parentChunkLoadingFunction, data",
405
391
  [
406
392
  runtimeTemplate.destructureArray(
@@ -443,7 +429,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
443
429
  ]
444
430
  )}`,
445
431
  "",
446
- `var chunkLoadingGlobal = ${chunkLoadingGlobalExpr} = ${chunkLoadingGlobalExpr} || [];`,
432
+ `${cst} chunkLoadingGlobal = ${runtimeTemplate.assignOr(chunkLoadingGlobalExpr, "[]")};`,
447
433
  "chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));",
448
434
  "chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"
449
435
  ])
@@ -452,4 +438,12 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
452
438
  }
453
439
  }
454
440
 
441
+ JsonpChunkLoadingRuntimeModule.getCompilationHooks = createHooksRegistry(
442
+ () =>
443
+ /** @type {JsonpCompilationPluginHooks} */ ({
444
+ linkPreload: new SyncWaterfallHook(["source", "chunk"]),
445
+ linkPrefetch: new SyncWaterfallHook(["source", "chunk"])
446
+ })
447
+ );
448
+
455
449
  module.exports = JsonpChunkLoadingRuntimeModule;
@@ -15,6 +15,7 @@ const JsonpChunkLoadingRuntimeModule = require("./JsonpChunkLoadingRuntimeModule
15
15
  // TODO webpack 6 remove this class
16
16
  class JsonpTemplatePlugin {
17
17
  /**
18
+ * Returns hooks.
18
19
  * @deprecated use JsonpChunkLoadingRuntimeModule.getCompilationHooks instead
19
20
  * @param {Compilation} compilation the compilation
20
21
  * @returns {JsonpChunkLoadingRuntimeModule.JsonpCompilationPluginHooks} hooks
@@ -24,7 +25,7 @@ class JsonpTemplatePlugin {
24
25
  }
25
26
 
26
27
  /**
27
- * Apply the plugin
28
+ * Applies the plugin by registering its hooks on the compiler.
28
29
  * @param {Compiler} compiler the compiler instance
29
30
  * @returns {void}
30
31
  */