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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (641) hide show
  1. package/README.md +7 -7
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +10 -10
  4. package/lib/APIPlugin.js +123 -17
  5. package/lib/AsyncDependenciesBlock.js +10 -7
  6. package/lib/AutomaticPrefetchPlugin.js +1 -1
  7. package/lib/BannerPlugin.js +10 -6
  8. package/lib/CacheFacade.js +6 -6
  9. package/lib/Chunk.js +14 -11
  10. package/lib/ChunkGraph.js +43 -32
  11. package/lib/ChunkGroup.js +7 -7
  12. package/lib/ChunkTemplate.js +35 -44
  13. package/lib/CircularModulesPlugin.js +205 -28
  14. package/lib/CleanPlugin.js +15 -16
  15. package/lib/CodeGenerationResults.js +11 -8
  16. package/lib/CompatibilityPlugin.js +38 -7
  17. package/lib/Compilation.js +709 -414
  18. package/lib/Compiler.js +69 -42
  19. package/lib/ConcatenationScope.js +117 -8
  20. package/lib/ConditionalInitFragment.js +3 -3
  21. package/lib/ConstPlugin.js +13 -11
  22. package/lib/ContextExclusionPlugin.js +1 -1
  23. package/lib/ContextModule.js +146 -54
  24. package/lib/ContextModuleFactory.js +46 -14
  25. package/lib/ContextReplacementPlugin.js +12 -14
  26. package/lib/DefinePlugin.js +168 -57
  27. package/lib/DependenciesBlock.js +9 -6
  28. package/lib/Dependency.js +36 -16
  29. package/lib/DependencyTemplate.js +11 -12
  30. package/lib/DependencyTemplates.js +3 -3
  31. package/lib/DotenvPlugin.js +50 -13
  32. package/lib/DynamicEntryPlugin.js +8 -4
  33. package/lib/EntryOptionPlugin.js +8 -4
  34. package/lib/EntryPlugin.js +2 -2
  35. package/lib/Entrypoint.js +6 -2
  36. package/lib/EnvironmentPlugin.js +2 -2
  37. package/lib/EvalDevToolModulePlugin.js +8 -4
  38. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  39. package/lib/ExportsInfo.js +123 -19
  40. package/lib/ExportsInfoApiPlugin.js +2 -4
  41. package/lib/ExternalModule.js +242 -84
  42. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  43. package/lib/ExternalsPlugin.js +10 -6
  44. package/lib/FileSystemInfo.js +116 -42
  45. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  46. package/lib/FlagDependencyExportsPlugin.js +76 -19
  47. package/lib/FlagDependencyUsagePlugin.js +63 -57
  48. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  49. package/lib/Generator.js +36 -15
  50. package/lib/HotModuleReplacementPlugin.js +16 -44
  51. package/lib/IgnorePlugin.js +8 -4
  52. package/lib/IgnoreWarningsPlugin.js +2 -2
  53. package/lib/InitFragment.js +28 -36
  54. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  55. package/lib/LazyBarrel.js +3 -4
  56. package/lib/LibraryTemplatePlugin.js +10 -6
  57. package/lib/LoaderOptionsPlugin.js +7 -3
  58. package/lib/LoaderTargetPlugin.js +1 -1
  59. package/lib/MainTemplate.js +49 -42
  60. package/lib/ManifestPlugin.js +12 -11
  61. package/lib/Module.js +62 -33
  62. package/lib/ModuleFactory.js +3 -3
  63. package/lib/ModuleFilenameHelpers.js +22 -6
  64. package/lib/ModuleGraph.js +195 -21
  65. package/lib/ModuleGraphConnection.js +6 -13
  66. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  67. package/lib/ModuleTemplate.js +62 -63
  68. package/lib/MultiCompiler.js +130 -64
  69. package/lib/MultiStats.js +40 -9
  70. package/lib/MultiWatching.js +3 -3
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +29 -19
  73. package/lib/NormalModule.js +221 -156
  74. package/lib/NormalModuleFactory.js +563 -112
  75. package/lib/NormalModuleReplacementPlugin.js +5 -8
  76. package/lib/NullFactory.js +6 -2
  77. package/lib/OptionsApply.js +7 -3
  78. package/lib/Parser.js +7 -3
  79. package/lib/PlatformPlugin.js +2 -2
  80. package/lib/PrefetchPlugin.js +1 -1
  81. package/lib/ProgressPlugin.js +16 -13
  82. package/lib/ProvidePlugin.js +3 -5
  83. package/lib/RawModule.js +25 -17
  84. package/lib/RecordIdsPlugin.js +3 -3
  85. package/lib/RequestShortener.js +1 -1
  86. package/lib/ResolverFactory.js +2 -2
  87. package/lib/RuntimeGlobals.js +22 -10
  88. package/lib/RuntimeModule.js +29 -19
  89. package/lib/RuntimePlugin.js +346 -256
  90. package/lib/RuntimeTemplate.js +2792 -352
  91. package/lib/SelfModuleFactory.js +7 -3
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  93. package/lib/SourceMapDevToolPlugin.js +30 -20
  94. package/lib/Stats.js +3 -4
  95. package/lib/Template.js +55 -25
  96. package/lib/TemplatedPathPlugin.js +96 -14
  97. package/lib/UseStrictPlugin.js +4 -6
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  99. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  100. package/lib/WarnNoModeSetPlugin.js +1 -1
  101. package/lib/WatchIgnorePlugin.js +8 -6
  102. package/lib/Watching.js +8 -8
  103. package/lib/WebpackIsIncludedPlugin.js +2 -4
  104. package/lib/WebpackOptionsApply.js +308 -18
  105. package/lib/WebpackOptionsDefaulter.js +6 -2
  106. package/lib/asset/AssetBytesGenerator.js +12 -10
  107. package/lib/asset/AssetBytesParser.js +2 -4
  108. package/lib/asset/AssetGenerator.js +188 -95
  109. package/lib/asset/AssetModule.js +7 -3
  110. package/lib/asset/AssetModulesPlugin.js +110 -38
  111. package/lib/asset/AssetParser.js +9 -7
  112. package/lib/asset/AssetSourceGenerator.js +60 -13
  113. package/lib/asset/AssetSourceParser.js +2 -4
  114. package/lib/asset/RawDataUrlModule.js +24 -16
  115. package/lib/asset/WebManifestGenerator.js +8 -10
  116. package/lib/asset/WebManifestParser.js +24 -10
  117. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  118. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  119. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  120. package/lib/async-modules/isGeneratorLowered.js +4 -4
  121. package/lib/buildChunkGraph.js +36 -27
  122. package/lib/bun/BunTargetPlugin.js +1 -1
  123. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  124. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  125. package/lib/cache/IdleFileCachePlugin.js +2 -2
  126. package/lib/cache/MemoryCachePlugin.js +18 -10
  127. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  128. package/lib/cache/PackFileCacheStrategy.js +289 -28
  129. package/lib/cache/ResolverCachePlugin.js +38 -18
  130. package/lib/cache/getLazyHashedEtag.js +1 -2
  131. package/lib/cache/mergeEtags.js +1 -1
  132. package/lib/cli.js +1 -3
  133. package/lib/config/browserslistTargetHandler.js +41 -5
  134. package/lib/config/defaults.js +282 -81
  135. package/lib/config/defineConfig.js +10 -2
  136. package/lib/config/getClaimedAssetTypes.js +65 -0
  137. package/lib/config/normalization.js +36 -16
  138. package/lib/config/target.js +46 -3
  139. package/lib/container/ContainerEntryDependency.js +1 -1
  140. package/lib/container/ContainerEntryModule.js +24 -15
  141. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  142. package/lib/container/ContainerPlugin.js +9 -10
  143. package/lib/container/ContainerReferencePlugin.js +6 -2
  144. package/lib/container/FallbackDependency.js +1 -1
  145. package/lib/container/FallbackModule.js +24 -17
  146. package/lib/container/FallbackModuleFactory.js +7 -3
  147. package/lib/container/HoistContainerReferencesPlugin.js +53 -66
  148. package/lib/container/ModuleFederationPlugin.js +7 -18
  149. package/lib/container/RemoteModule.js +27 -19
  150. package/lib/container/RemoteRuntimeModule.js +10 -8
  151. package/lib/container/moduleFederationHooks.js +32 -0
  152. package/lib/css/CssGenerator.js +178 -44
  153. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  154. package/lib/css/CssLoadingRuntimeModule.js +82 -36
  155. package/lib/css/CssModule.js +10 -7
  156. package/lib/css/CssModulesPlugin.js +197 -106
  157. package/lib/css/CssParser.js +1248 -618
  158. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  159. package/lib/css/cssMinify.js +168 -0
  160. package/lib/css/data.js +5324 -0
  161. package/lib/css/syntax.js +10396 -952
  162. package/lib/debug/ProfilingPlugin.js +14 -9
  163. package/lib/deno/DenoTargetPlugin.js +1 -1
  164. package/lib/dependencies/AMDDefineDependency.js +112 -87
  165. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  166. package/lib/dependencies/AMDPlugin.js +9 -7
  167. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  168. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  169. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  170. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  171. package/lib/dependencies/AMDRequireDependency.js +8 -7
  172. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  173. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  174. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  175. package/lib/dependencies/CachedConstDependency.js +11 -8
  176. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  177. package/lib/dependencies/CommonJsExportRequireDependency.js +140 -45
  178. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  179. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  180. package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
  181. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
  182. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  183. package/lib/dependencies/CommonJsPlugin.js +35 -6
  184. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  185. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  186. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  187. package/lib/dependencies/ConstDependency.js +8 -9
  188. package/lib/dependencies/ContextDependency.js +12 -8
  189. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  190. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  191. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  192. package/lib/dependencies/ContextElementDependency.js +31 -12
  193. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  194. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  195. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  196. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  197. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  198. package/lib/dependencies/CssImportDependency.js +18 -9
  199. package/lib/dependencies/CssUrlDependency.js +17 -13
  200. package/lib/dependencies/DllEntryDependency.js +1 -1
  201. package/lib/dependencies/DynamicExports.js +2 -2
  202. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  203. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  204. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  205. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  206. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  207. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  208. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  209. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  210. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +15 -11
  211. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  212. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  213. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  214. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
  215. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  216. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  217. package/lib/dependencies/HarmonyExports.js +7 -4
  218. package/lib/dependencies/HarmonyImportDependency.js +28 -20
  219. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  220. package/lib/dependencies/HarmonyImportGuard.js +21 -30
  221. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  222. package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
  223. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  224. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  225. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  226. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  227. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  228. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  229. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  230. package/lib/dependencies/ImportContextDependency.js +2 -2
  231. package/lib/dependencies/ImportDependency.js +24 -20
  232. package/lib/dependencies/ImportEagerDependency.js +6 -9
  233. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  234. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  235. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  236. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  237. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  238. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  239. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  241. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  242. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  243. package/lib/dependencies/ImportParserPlugin.js +49 -35
  244. package/lib/dependencies/ImportPhase.js +12 -5
  245. package/lib/dependencies/ImportPlugin.js +7 -3
  246. package/lib/dependencies/ImportWeakDependency.js +6 -9
  247. package/lib/dependencies/JsonExportsDependency.js +11 -7
  248. package/lib/dependencies/LoaderDependency.js +2 -2
  249. package/lib/dependencies/LoaderImportDependency.js +2 -2
  250. package/lib/dependencies/LoaderPlugin.js +11 -7
  251. package/lib/dependencies/LocalModuleDependency.js +5 -5
  252. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  253. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  254. package/lib/dependencies/ModuleDependency.js +9 -6
  255. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  256. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  257. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  258. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  259. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  260. package/lib/dependencies/NullDependency.js +3 -3
  261. package/lib/dependencies/ProvidedDependency.js +14 -10
  262. package/lib/dependencies/PureExpressionDependency.js +9 -10
  263. package/lib/dependencies/RequireContextDependency.js +2 -2
  264. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  265. package/lib/dependencies/RequireContextPlugin.js +8 -4
  266. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  267. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  268. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  269. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  270. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  271. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  272. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  273. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  274. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  275. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  276. package/lib/dependencies/RequireResolveDependency.js +4 -4
  277. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  278. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  279. package/lib/dependencies/StaticExportsDependency.js +2 -2
  280. package/lib/dependencies/SystemPlugin.js +10 -6
  281. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  282. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  283. package/lib/dependencies/URLContextDependency.js +2 -2
  284. package/lib/dependencies/URLDependency.js +110 -64
  285. package/lib/dependencies/URLPlugin.js +7 -3
  286. package/lib/dependencies/UnsupportedDependency.js +4 -4
  287. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  288. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  289. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  290. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  291. package/lib/dependencies/WorkerDependency.js +28 -22
  292. package/lib/dependencies/WorkletDependency.js +15 -14
  293. package/lib/dependencies/getFunctionExpression.js +8 -4
  294. package/lib/dependencies/processExportInfo.js +5 -5
  295. package/lib/dll/DelegatedModule.js +34 -22
  296. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  297. package/lib/dll/DelegatedPlugin.js +2 -2
  298. package/lib/dll/DllEntryPlugin.js +2 -2
  299. package/lib/dll/DllModule.js +22 -15
  300. package/lib/dll/DllModuleFactory.js +7 -3
  301. package/lib/dll/DllPlugin.js +7 -5
  302. package/lib/dll/DllReferencePlugin.js +10 -7
  303. package/lib/dll/LibManifestPlugin.js +5 -5
  304. package/lib/electron/ElectronTargetPlugin.js +53 -49
  305. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  306. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  307. package/lib/errors/BroadContextsWarning.js +43 -0
  308. package/lib/errors/BuildCycleError.js +1 -1
  309. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  310. package/lib/errors/ChunkRenderError.js +1 -1
  311. package/lib/errors/CircularDependenciesWarning.js +38 -0
  312. package/lib/errors/CodeGenerationError.js +1 -1
  313. package/lib/errors/CommentCompilationWarning.js +1 -1
  314. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  315. package/lib/errors/DuplicateModulesWarning.js +45 -0
  316. package/lib/errors/DynamicExportsWarning.js +30 -0
  317. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  318. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  319. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  320. package/lib/errors/EvalUsageWarning.js +28 -0
  321. package/lib/errors/HookWebpackError.js +5 -5
  322. package/lib/errors/HotspotsWarning.js +57 -0
  323. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  324. package/lib/errors/InlinedAssetsWarning.js +36 -0
  325. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  326. package/lib/errors/LargeModulesWarning.js +45 -0
  327. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  328. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  329. package/lib/errors/MixedExportsWarning.js +41 -0
  330. package/lib/errors/ModuleDependencyError.js +13 -16
  331. package/lib/errors/ModuleDependencyWarning.js +5 -15
  332. package/lib/errors/ModuleHashingError.js +1 -1
  333. package/lib/errors/ModuleNotFoundError.js +2 -2
  334. package/lib/errors/ModuleParseError.js +1 -2
  335. package/lib/errors/ModuleRestoreError.js +1 -1
  336. package/lib/errors/ModuleStoreError.js +1 -1
  337. package/lib/errors/NodeStuffInWebError.js +1 -1
  338. package/lib/errors/OsDependentRuleWarning.js +31 -0
  339. package/lib/errors/PureAnnotationsWarning.js +36 -0
  340. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  341. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  342. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  343. package/lib/errors/TinyChunksWarning.js +40 -0
  344. package/lib/errors/TopLevelThisWarning.js +34 -0
  345. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  346. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  347. package/lib/errors/UnusedAliasesWarning.js +29 -0
  348. package/lib/errors/UnusedDefinesWarning.js +29 -0
  349. package/lib/errors/UnusedExternalsWarning.js +29 -0
  350. package/lib/errors/UnusedReexportsWarning.js +42 -0
  351. package/lib/errors/UnusedRuleWarning.js +29 -0
  352. package/lib/errors/WebpackError.js +9 -5
  353. package/lib/errors/deriveStackFromNestedError.js +90 -0
  354. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  355. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  356. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  357. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
  358. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  359. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  360. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  361. package/lib/hmr/lazyCompilationBackend.js +28 -10
  362. package/lib/hmr/parserHooks.js +56 -0
  363. package/lib/html/HtmlGenerator.js +299 -79
  364. package/lib/html/HtmlModule.js +7 -3
  365. package/lib/html/HtmlModulesPlugin.js +312 -174
  366. package/lib/html/HtmlParser.js +31 -86
  367. package/lib/html/data.js +1928 -0
  368. package/lib/html/htmlMinify.js +288 -0
  369. package/lib/html/syntax.js +7819 -3331
  370. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  371. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  372. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  373. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  374. package/lib/ids/IdHelpers.js +31 -18
  375. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  376. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  377. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  378. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  379. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  380. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  381. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  382. package/lib/index.js +10 -0
  383. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  384. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  385. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  386. package/lib/javascript/ChunkHelpers.js +1 -1
  387. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  388. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  389. package/lib/javascript/JavascriptGenerator.js +65 -165
  390. package/lib/javascript/JavascriptModule.js +9 -3
  391. package/lib/javascript/JavascriptModulesPlugin.js +181 -162
  392. package/lib/javascript/JavascriptParser.js +291 -112
  393. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  394. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  395. package/lib/javascript/StartupHelpers.js +55 -9
  396. package/lib/javascript/syntax.js +3403 -300
  397. package/lib/json/JsonData.js +8 -4
  398. package/lib/json/JsonGenerator.js +38 -16
  399. package/lib/json/JsonModule.js +7 -3
  400. package/lib/json/JsonModulesPlugin.js +1 -1
  401. package/lib/json/JsonParser.js +5 -6
  402. package/lib/library/AbstractLibraryPlugin.js +20 -14
  403. package/lib/library/AmdLibraryPlugin.js +11 -7
  404. package/lib/library/AssignLibraryPlugin.js +19 -13
  405. package/lib/library/EnableLibraryPlugin.js +2 -2
  406. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  407. package/lib/library/JsonpLibraryPlugin.js +11 -7
  408. package/lib/library/ModuleLibraryPlugin.js +256 -64
  409. package/lib/library/SystemLibraryPlugin.js +12 -8
  410. package/lib/library/UmdLibraryPlugin.js +62 -25
  411. package/lib/loaders/LoaderRunner.js +14 -1
  412. package/lib/loaders/loadLoader.js +8 -4
  413. package/lib/logging/createConsoleLogger.js +7 -4
  414. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  415. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  416. package/lib/node/NodeSourcePlugin.js +1 -1
  417. package/lib/node/NodeTargetPlugin.js +4 -3
  418. package/lib/node/NodeTemplatePlugin.js +1 -1
  419. package/lib/node/NodeWatchFileSystem.js +70 -9
  420. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  421. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +81 -20
  422. package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
  423. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  424. package/lib/node/nodeConsole.js +7 -3
  425. package/lib/optimize/AggressiveMergingPlugin.js +21 -17
  426. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  427. package/lib/optimize/ConcatenatedModule.js +996 -477
  428. package/lib/optimize/ConstExportsPlugin.js +11 -7
  429. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  430. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  431. package/lib/optimize/InlineExports.js +9 -5
  432. package/lib/optimize/InnerGraph.js +28 -12
  433. package/lib/optimize/InnerGraphPlugin.js +23 -18
  434. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  435. package/lib/optimize/MangleExportsPlugin.js +7 -8
  436. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  437. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  438. package/lib/optimize/ModuleConcatenationPlugin.js +124 -59
  439. package/lib/optimize/RealContentHashPlugin.js +20 -13
  440. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  441. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  442. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  443. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  444. package/lib/optimize/SplitChunksPlugin.js +232 -68
  445. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  446. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  447. package/lib/performance/BroadContextsPlugin.js +142 -0
  448. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  449. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  450. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  451. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  452. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  453. package/lib/performance/DynamicExportsPlugin.js +120 -0
  454. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  455. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  456. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  457. package/lib/performance/EvalUsagePlugin.js +115 -0
  458. package/lib/performance/HotspotsPlugin.js +296 -0
  459. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  460. package/lib/performance/LargeModulesPlugin.js +126 -0
  461. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  462. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  463. package/lib/performance/MixedExportsPlugin.js +136 -0
  464. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  465. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  466. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  467. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  468. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  469. package/lib/performance/SizeLimitsPlugin.js +139 -7
  470. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  471. package/lib/performance/TinyChunksPlugin.js +128 -0
  472. package/lib/performance/TopLevelThisPlugin.js +208 -0
  473. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  474. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  475. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  476. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  477. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  478. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  479. package/lib/performance/getModuleSize.js +22 -0
  480. package/lib/performance/getSourceModules.js +22 -0
  481. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  482. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  483. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  484. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  485. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  487. package/lib/prefetch/ResourceHintPlugin.js +377 -136
  488. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  489. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  490. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  491. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  492. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  493. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  494. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  495. package/lib/rules/RuleSetCompiler.js +146 -12
  496. package/lib/rules/UseEffectRulePlugin.js +18 -11
  497. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  498. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  499. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  500. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  501. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  502. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  503. package/lib/runtime/CompatRuntimeModule.js +5 -3
  504. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  505. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  506. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  507. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  508. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  509. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  510. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  511. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  512. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  513. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  514. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  515. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  516. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  517. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  518. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  519. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  520. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  521. package/lib/runtime/NonceRuntimeModule.js +10 -0
  522. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  523. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  524. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  525. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  526. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  527. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  528. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  529. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  530. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  531. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  532. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  533. package/lib/runtime/baseUri.js +63 -0
  534. package/lib/schemes/DataUriPlugin.js +1 -1
  535. package/lib/schemes/FileUriPlugin.js +1 -1
  536. package/lib/schemes/HttpUriPlugin.js +24 -15
  537. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  538. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  539. package/lib/serialization/BinaryMiddleware.js +274 -942
  540. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  541. package/lib/serialization/FileMiddleware.js +305 -66
  542. package/lib/serialization/ObjectMiddleware.js +139 -114
  543. package/lib/serialization/PlainObjectSerializer.js +19 -16
  544. package/lib/sharing/ConsumeSharedModule.js +30 -21
  545. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  546. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  547. package/lib/sharing/ProvideSharedModule.js +25 -16
  548. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  549. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  550. package/lib/sharing/SharePlugin.js +17 -5
  551. package/lib/sharing/ShareRuntimeModule.js +4 -4
  552. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  553. package/lib/sharing/utils.js +1 -3
  554. package/lib/stats/DefaultStatsFactoryPlugin.js +253 -226
  555. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  556. package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
  557. package/lib/stats/StatsFactory.js +56 -35
  558. package/lib/stats/StatsPrinter.js +16 -12
  559. package/lib/typescript/TypeScriptPlugin.js +12 -14
  560. package/lib/url/URLParserPlugin.js +26 -13
  561. package/lib/util/AsyncQueue.js +4 -3
  562. package/lib/util/Hash.js +5 -1
  563. package/lib/util/LazySet.js +35 -22
  564. package/lib/util/LocConverter.js +36 -13
  565. package/lib/util/SourceProcessor.js +1050 -24
  566. package/lib/util/StringXor.js +1 -1
  567. package/lib/util/chainedImports.js +9 -5
  568. package/lib/util/cleverMerge.js +1 -1
  569. package/lib/util/comparators.js +45 -14
  570. package/lib/util/concatenate.js +203 -77
  571. package/lib/util/conventions.js +5 -1
  572. package/lib/util/createHash.js +2 -2
  573. package/lib/util/createHooksRegistry.js +8 -10
  574. package/lib/util/dataURL.js +225 -1
  575. package/lib/util/extractSourceMap.js +4 -3
  576. package/lib/util/findCaseMismatch.js +139 -0
  577. package/lib/util/formatLocation.js +1 -2
  578. package/lib/util/fs.js +22 -5
  579. package/lib/util/globUtils.js +298 -24
  580. package/lib/util/hash/BatchedHash.js +5 -1
  581. package/lib/util/hash/BulkUpdateHash.js +5 -1
  582. package/lib/util/hash/DebugHash.js +5 -1
  583. package/lib/util/hash/hash-digest.js +6 -2
  584. package/lib/util/identifier.js +25 -1
  585. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  586. package/lib/util/internalSerializables.js +6 -0
  587. package/lib/util/lazyModule.js +56 -0
  588. package/lib/util/makeSerializable.js +7 -3
  589. package/lib/util/matchAlias.js +25 -0
  590. package/lib/util/mimeTypes.js +11 -5
  591. package/lib/util/nonNumericOnlyHash.js +4 -3
  592. package/lib/util/parseJson.js +5 -3
  593. package/lib/util/preloadModuleType.js +32 -0
  594. package/lib/util/registerExternalSerializer.js +7 -5
  595. package/lib/util/runtime.js +2 -2
  596. package/lib/util/semver.js +1 -1
  597. package/lib/util/serialization.js +28 -28
  598. package/lib/util/source.js +2 -2
  599. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  600. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  601. package/lib/wasm/wasmModuleFilename.js +54 -0
  602. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  603. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  604. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  605. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  606. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  607. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  608. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  609. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  610. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  611. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  612. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  613. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  614. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  615. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  616. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  617. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  618. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  619. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  620. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  621. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  622. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  623. package/lib/web/JsonpTemplatePlugin.js +2 -2
  624. package/lib/webpack.js +22 -11
  625. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  626. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  627. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  628. package/module.d.ts +1 -0
  629. package/package.json +37 -30
  630. package/schemas/WebpackOptions.check.js +1 -1
  631. package/schemas/WebpackOptions.json +780 -91
  632. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  634. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  635. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  636. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  637. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  639. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  640. package/types.d.ts +4013 -738
  641. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -6,6 +6,7 @@
6
6
 
7
7
  const { extname } = require("path");
8
8
  const db = require("mime-db");
9
+ const memoize = require("./memoize");
9
10
 
10
11
  /**
11
12
  * RegExp to match type in RFC 6838
@@ -22,8 +23,6 @@ const db = require("mime-db");
22
23
  */
23
24
  const TYPE_REGEXP =
24
25
  /^ *(([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126})) *(?:;.*)?$/;
25
- const extensions = Object.create(null);
26
- const types = Object.create(null);
27
26
 
28
27
  // Score RFC facets (see https://tools.ietf.org/html/rfc6838#section-3)
29
28
 
@@ -126,7 +125,14 @@ const populate = (extensions, types) => {
126
125
  }
127
126
  };
128
127
 
129
- populate(extensions, types);
128
+ // ~2500 mime-db entries scored against each other; only a build that resolves
129
+ // a type pays for the tables
130
+ const getTables = memoize(() => {
131
+ const extensions = Object.create(null);
132
+ const types = Object.create(null);
133
+ populate(extensions, types);
134
+ return { extensions, types };
135
+ });
130
136
 
131
137
  /**
132
138
  * Get the default extension for a MIME type.
@@ -144,7 +150,7 @@ const extension = (type) => {
144
150
  return;
145
151
  }
146
152
 
147
- const possibleExtensions = extensions[match[1].toLowerCase()];
153
+ const possibleExtensions = getTables().extensions[match[1].toLowerCase()];
148
154
 
149
155
  if (!possibleExtensions || possibleExtensions.length === 0) {
150
156
  return;
@@ -170,7 +176,7 @@ const lookup = (path) => {
170
176
  return;
171
177
  }
172
178
 
173
- return types[extension];
179
+ return getTables().types[extension];
174
180
  };
175
181
 
176
182
  module.exports = { extension, lookup };
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("./Hash")} Hash */
8
+ /** @import Hash from "./Hash" */
9
9
 
10
10
  const A_CODE = "a".charCodeAt(0);
11
11
 
@@ -47,6 +47,7 @@ const digestNonNumericOnlyWithFull = (hash, hashDigest, hashDigestLength) => {
47
47
  return [nonNumericOnlyHash(full, hashDigestLength), full];
48
48
  };
49
49
 
50
+ nonNumericOnlyHash.digestNonNumericOnly = digestNonNumericOnly;
51
+ nonNumericOnlyHash.digestNonNumericOnlyWithFull = digestNonNumericOnlyWithFull;
52
+
50
53
  module.exports = nonNumericOnlyHash;
51
- module.exports.digestNonNumericOnly = digestNonNumericOnly;
52
- module.exports.digestNonNumericOnlyWithFull = digestNonNumericOnlyWithFull;
@@ -4,9 +4,11 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- const JSONParseError = require("../errors/JSONParseError");
7
+ const memoize = require("./memoize");
8
8
 
9
- /** @typedef {import("../util/fs").JsonValue} JsonValue */
9
+ const getJSONParseError = memoize(() => require("../errors/JSONParseError"));
10
+
11
+ /** @import { JsonValue } from "../util/fs" */
10
12
 
11
13
  // Inspired by https://github.com/npm/json-parse-even-better-errors
12
14
 
@@ -34,7 +36,7 @@ const parseJson = (raw, reviver) => {
34
36
  try {
35
37
  return JSON.parse(txt, reviver);
36
38
  } catch (err) {
37
- throw new JSONParseError(/** @type {Error} */ (err), raw, txt);
39
+ throw new (getJSONParseError())(/** @type {Error} */ (err), raw, txt);
38
40
  }
39
41
  };
40
42
 
@@ -0,0 +1,32 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Alexander Akait @alexander-akait
4
+ */
5
+
6
+ "use strict";
7
+
8
+ /** @import NormalModuleFactory from "../NormalModuleFactory" */
9
+ /** @typedef {import("./lazyModule").LazyModuleAccessor<EXPECTED_ANY>} AnyLazyModuleAccessor */
10
+
11
+ /**
12
+ * Warms the modules a type's `createParser`/`createGenerator`/`createModuleClass`
13
+ * taps read, at the factory's async boundary — those hooks are synchronous, so
14
+ * they cannot await the load themselves.
15
+ * @param {NormalModuleFactory} normalModuleFactory the normal module factory
16
+ * @param {string} pluginName name of the tapping plugin
17
+ * @param {Iterable<[string, AnyLazyModuleAccessor[]]>} table module type to the accessors its taps read
18
+ * @returns {void}
19
+ */
20
+ const preloadModuleType = (normalModuleFactory, pluginName, table) => {
21
+ for (const [type, accessors] of table) {
22
+ normalModuleFactory.hooks.prepareModuleType
23
+ .for(type)
24
+ .tapPromise(pluginName, () =>
25
+ Promise.all(accessors.map((accessor) => accessor())).then(
26
+ () => undefined
27
+ )
28
+ );
29
+ }
30
+ };
31
+
32
+ module.exports = preloadModuleType;
@@ -19,11 +19,13 @@ const {
19
19
  } = require("webpack-sources");
20
20
  const { register } = require("./serialization");
21
21
 
22
- /** @typedef {import("acorn").Position} Position */
23
- /** @typedef {import("../Dependency").RealDependencyLocation} RealDependencyLocation */
24
- /** @typedef {import("../Dependency").SourcePosition} SourcePosition */
25
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
26
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
22
+ /** @import { RealDependencyLocation, SourcePosition } from "../Dependency" */
23
+ /**
24
+ * @import {
25
+ * ObjectDeserializerContext,
26
+ * ObjectSerializerContext
27
+ * } from "../serialization/ObjectMiddleware"
28
+ */
27
29
 
28
30
  const CURRENT_MODULE = "webpack/lib/util/registerExternalSerializer";
29
31
 
@@ -7,8 +7,8 @@
7
7
 
8
8
  const SortableSet = require("./SortableSet");
9
9
 
10
- /** @typedef {import("../Compilation")} Compilation */
11
- /** @typedef {import("../Entrypoint").EntryOptions} EntryOptions */
10
+ /** @import Compilation from "../Compilation" */
11
+ /** @import { EntryOptions } from "../Entrypoint" */
12
12
 
13
13
  /** @typedef {SortableSet<string>} RuntimeSpecSortableSet */
14
14
  /** @typedef {string | RuntimeSpecSortableSet | undefined} RuntimeSpec */
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
8
+ /** @import RuntimeTemplate from "../RuntimeTemplate" */
9
9
  /** @typedef {string | number} VersionValue */
10
10
  /** @typedef {VersionValue | undefined} SemVerRangeItem */
11
11
  /** @typedef {(SemVerRangeItem | SemVerRangeItem[])[]} SemVerRange */
@@ -5,31 +5,18 @@
5
5
  "use strict";
6
6
 
7
7
  const { DEFAULTS } = require("../config/defaults");
8
+ const ObjectMiddleware = require("../serialization/ObjectMiddleware");
9
+ const SerializerMiddleware = require("../serialization/SerializerMiddleware");
8
10
  const memoize = require("./memoize");
9
11
 
10
- /** @typedef {import("../serialization/BinaryMiddleware").MEASURE_END_OPERATION_TYPE} MEASURE_END_OPERATION */
11
- /** @typedef {import("../serialization/BinaryMiddleware").MEASURE_START_OPERATION_TYPE} MEASURE_START_OPERATION */
12
- /** @typedef {import("../util/Hash").HashFunction} HashFunction */
13
- /** @typedef {import("../util/fs").IntermediateFileSystem} IntermediateFileSystem */
14
-
15
- /**
16
- * Defines the serializer type used by this module.
17
- * @template D, S, C
18
- * @typedef {import("../serialization/Serializer")<D, S, C>} Serializer
19
- */
12
+ const getSerializer = memoize(() => require("../serialization/Serializer"));
20
13
 
21
- const getBinaryMiddleware = memoize(() =>
22
- require("../serialization/BinaryMiddleware")
23
- );
24
- const getObjectMiddleware = memoize(() =>
25
- require("../serialization/ObjectMiddleware")
26
- );
27
14
  const getSingleItemMiddleware = memoize(() =>
28
15
  require("../serialization/SingleItemMiddleware")
29
16
  );
30
- const getSerializer = memoize(() => require("../serialization/Serializer"));
31
- const getSerializerMiddleware = memoize(() =>
32
- require("../serialization/SerializerMiddleware")
17
+
18
+ const getBinaryMiddleware = memoize(() =>
19
+ require("../serialization/BinaryMiddleware")
33
20
  );
34
21
 
35
22
  const getBinaryMiddlewareInstance = memoize(
@@ -43,7 +30,7 @@ const registerSerializers = memoize(() => {
43
30
  // This allows bundling all internal serializers
44
31
  const internalSerializables = require("./internalSerializables");
45
32
 
46
- getObjectMiddleware().registerLoader(/^webpack\/lib\//, (req) => {
33
+ ObjectMiddleware.registerLoader(/^webpack\/lib\//, (req) => {
47
34
  const loader =
48
35
  internalSerializables[
49
36
  /** @type {keyof import("./internalSerializables")} */
@@ -59,6 +46,21 @@ const registerSerializers = memoize(() => {
59
46
  });
60
47
  });
61
48
 
49
+ /**
50
+ * @import {
51
+ * MEASURE_END_OPERATION_TYPE as MEASURE_END_OPERATION,
52
+ * MEASURE_START_OPERATION_TYPE as MEASURE_START_OPERATION
53
+ * } from "../serialization/BinaryMiddleware"
54
+ */
55
+ /** @import { HashFunction } from "../util/Hash" */
56
+ /** @import { IntermediateFileSystem } from "../util/fs" */
57
+
58
+ /**
59
+ * Defines the serializer type used by this module.
60
+ * @template D, S, C
61
+ * @typedef {import("../serialization/Serializer")<D, S, C>} Serializer
62
+ */
63
+
62
64
  /**
63
65
  * @type {Serializer<EXPECTED_ANY, EXPECTED_ANY, EXPECTED_ANY>}
64
66
  */
@@ -67,16 +69,16 @@ let buffersSerializer;
67
69
  // Expose serialization API
68
70
  module.exports = {
69
71
  get register() {
70
- return getObjectMiddleware().register;
72
+ return ObjectMiddleware.register;
71
73
  },
72
74
  get registerLoader() {
73
- return getObjectMiddleware().registerLoader;
75
+ return ObjectMiddleware.registerLoader;
74
76
  },
75
77
  get registerNotSerializable() {
76
- return getObjectMiddleware().registerNotSerializable;
78
+ return ObjectMiddleware.registerNotSerializable;
77
79
  },
78
80
  get NOT_SERIALIZABLE() {
79
- return getObjectMiddleware().NOT_SERIALIZABLE;
81
+ return ObjectMiddleware.NOT_SERIALIZABLE;
80
82
  },
81
83
  /** @type {MEASURE_START_OPERATION} */
82
84
  get MEASURE_START_OPERATION() {
@@ -91,12 +93,11 @@ module.exports = {
91
93
  registerSerializers();
92
94
  const Serializer = getSerializer();
93
95
  const binaryMiddleware = getBinaryMiddlewareInstance();
94
- const SerializerMiddleware = getSerializerMiddleware();
95
96
  const SingleItemMiddleware = getSingleItemMiddleware();
96
97
  return /** @type {Serializer<EXPECTED_ANY, EXPECTED_ANY, EXPECTED_ANY>} */ (
97
98
  buffersSerializer = new Serializer([
98
99
  new SingleItemMiddleware(),
99
- new (getObjectMiddleware())((context) => {
100
+ new ObjectMiddleware((context) => {
100
101
  if ("write" in context) {
101
102
  context.writeLazy = (value) => {
102
103
  context.write(
@@ -124,12 +125,11 @@ module.exports = {
124
125
 
125
126
  const fileMiddleware = new FileMiddleware(fs, hashFunction);
126
127
  const binaryMiddleware = getBinaryMiddlewareInstance();
127
- const SerializerMiddleware = getSerializerMiddleware();
128
128
  const SingleItemMiddleware = getSingleItemMiddleware();
129
129
  return /** @type {Serializer<D, S, C>} */ (
130
130
  new Serializer([
131
131
  new SingleItemMiddleware(),
132
- new (getObjectMiddleware())((context) => {
132
+ new ObjectMiddleware((context) => {
133
133
  if ("write" in context) {
134
134
  context.writeLazy = (value) => {
135
135
  context.write(
@@ -5,8 +5,8 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("webpack-sources").Source} Source */
9
- /** @typedef {import("./Hash")} Hash */
8
+ /** @import { Source } from "webpack-sources" */
9
+ /** @import Hash from "./Hash" */
10
10
 
11
11
  /** @type {WeakMap<Source, WeakMap<Source, boolean>>} */
12
12
  const equalityCache = new WeakMap();
@@ -5,8 +5,12 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("../javascript/JavascriptParser").DestructuringAssignmentProperties} DestructuringAssignmentProperties */
9
- /** @typedef {import("../javascript/JavascriptParser").DestructuringAssignmentProperty} DestructuringAssignmentProperty */
8
+ /**
9
+ * @import {
10
+ * DestructuringAssignmentProperties,
11
+ * DestructuringAssignmentProperty
12
+ * } from "../javascript/JavascriptParser"
13
+ */
10
14
 
11
15
  /**
12
16
  * Deep first traverse the properties of a destructuring assignment.
@@ -5,8 +5,8 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("../../declarations/WebpackOptions").WasmLoadingType} WasmLoadingType */
9
- /** @typedef {import("../Compiler")} Compiler */
8
+ /** @import { WasmLoadingType } from "../../declarations/WebpackOptions" */
9
+ /** @import Compiler from "../Compiler" */
10
10
 
11
11
  /** @typedef {Set<WasmLoadingType>} WasmLoadingTypes */
12
12
 
@@ -114,9 +114,10 @@ class EnableWasmLoadingPlugin {
114
114
 
115
115
  new ReadFileCompileWasmPlugin({
116
116
  mangleImports: compiler.options.optimization.mangleWasmImports,
117
- import:
118
- compiler.options.output.module &&
119
- compiler.options.output.environment.dynamicImport
117
+ // ESM output has no `require`, and any runtime that loads ESM has
118
+ // `import()` — pairing them by `dynamicImport` emitted CJS into an
119
+ // ES module, which the runtime refuses to load at all.
120
+ import: compiler.options.output.module
120
121
  }).apply(compiler);
121
122
  }
122
123
 
@@ -124,9 +125,10 @@ class EnableWasmLoadingPlugin {
124
125
  const ReadFileCompileAsyncWasmPlugin = require("../node/ReadFileCompileAsyncWasmPlugin");
125
126
 
126
127
  new ReadFileCompileAsyncWasmPlugin({
127
- import:
128
- compiler.options.output.module &&
129
- compiler.options.output.environment.dynamicImport
128
+ // ESM output has no `require`, and any runtime that loads ESM has
129
+ // `import()` — pairing them by `dynamicImport` emitted CJS into an
130
+ // ES module, which the runtime refuses to load at all.
131
+ import: compiler.options.output.module
130
132
  }).apply(compiler);
131
133
  }
132
134
 
@@ -0,0 +1,54 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author sheo13666q @sheo13666q
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const RuntimeGlobals = require("../RuntimeGlobals");
9
+ const {
10
+ getPresentKinds,
11
+ reEncodeDigest,
12
+ usesFullHashDigest
13
+ } = require("../TemplatedPathPlugin");
14
+
15
+ /** @import Compilation from "../Compilation" */
16
+
17
+ /**
18
+ * Whether the runtime needs `getFullHash` to build a binary's name. A `[hash]` next to
19
+ * a module resolves to that module's hash, not the compilation's, so only the explicit
20
+ * `[fullhash]` spelling asks for it — and a digest is inlined rather than read.
21
+ * @param {string} filename `output.webassemblyModuleFilename`
22
+ * @returns {boolean} true when the runtime reads the compilation hash
23
+ */
24
+ const needsRuntimeFullHash = (filename) =>
25
+ getPresentKinds(filename).has("fullhash") && !usesFullHashDigest(filename);
26
+
27
+ /**
28
+ * The compilation-hash half of the `getPath` data for interpolating
29
+ * `output.webassemblyModuleFilename` into runtime code.
30
+ * @param {Compilation} compilation the compilation
31
+ * @returns {{ hash: string, hashWithLength: (length: number) => string, hashWithDigest: (digest: string, length?: number) => string }} the fields
32
+ */
33
+ const fullHashPathData = (compilation) => ({
34
+ hash: `" + ${RuntimeGlobals.getFullHash}() + "`,
35
+ hashWithLength: (length) =>
36
+ `" + ${RuntimeGlobals.getFullHash}().slice(0, ${length}) + "`,
37
+ // A digest re-encodes the hash, which the runtime expression above cannot carry, so
38
+ // the settled value is inlined instead — byte-identical to the emitted filename.
39
+ hashWithDigest: (digest, length) => {
40
+ const { fullHash, outputOptions } = compilation;
41
+ // Pre-hash pass: a stand-in, replaced on the post-hash re-render that
42
+ // `needsInlinedFullHash` asks for. Matches `GetFullHashRuntimeModule`.
43
+ if (!fullHash) return length ? "x".repeat(length) : "x";
44
+ const hash = reEncodeDigest(
45
+ fullHash,
46
+ outputOptions.hashDigest || "hex",
47
+ digest
48
+ );
49
+ return length ? hash.slice(0, length) : hash;
50
+ }
51
+ });
52
+
53
+ module.exports.fullHashPathData = fullHashPathData;
54
+ module.exports.needsRuntimeFullHash = needsRuntimeFullHash;
@@ -8,12 +8,14 @@
8
8
  const RuntimeGlobals = require("../RuntimeGlobals");
9
9
  const RuntimeModule = require("../RuntimeModule");
10
10
  const Template = require("../Template");
11
+ const { fullHashPathData } = require("../wasm/wasmModuleFilename");
11
12
 
12
- /** @typedef {import("../Chunk")} Chunk */
13
- /** @typedef {import("../Compilation")} Compilation */
13
+ /** @import Chunk from "../Chunk" */
14
+ /** @import Compilation from "../Compilation" */
15
+ /** @import { RuntimeSpec } from "../util/runtime" */
14
16
 
15
17
  /** @typedef {(wasmModuleSrcPath: string) => string} GenerateBeforeLoadBinaryCode */
16
- /** @typedef {(wasmModuleSrcPath: string) => string} GenerateLoadBinaryCode */
18
+ /** @typedef {(wasmModuleSrcPath: string, runtime: RuntimeSpec) => string} GenerateLoadBinaryCode */
17
19
  /** @typedef {() => string} GenerateBeforeCompileStreaming */
18
20
 
19
21
  /**
@@ -22,6 +24,7 @@ const Template = require("../Template");
22
24
  * @property {GenerateBeforeLoadBinaryCode=} generateBeforeLoadBinaryCode
23
25
  * @property {GenerateBeforeCompileStreaming=} generateBeforeCompileStreaming
24
26
  * @property {boolean} supportsStreaming
27
+ * @property {boolean=} fullHashDigest the binary's name inlines a re-encoded compilation hash
25
28
  */
26
29
 
27
30
  class AsyncWasmCompileRuntimeModule extends RuntimeModule {
@@ -32,9 +35,16 @@ class AsyncWasmCompileRuntimeModule extends RuntimeModule {
32
35
  generateLoadBinaryCode,
33
36
  generateBeforeLoadBinaryCode,
34
37
  generateBeforeCompileStreaming,
35
- supportsStreaming
38
+ supportsStreaming,
39
+ fullHashDigest
36
40
  }) {
37
41
  super("wasm compile", RuntimeModule.STAGE_NORMAL);
42
+ // A re-encoded digest is inlined from the settled hash, so this has to render
43
+ // again once there is one.
44
+ if (fullHashDigest) {
45
+ /** @type {boolean} */
46
+ this.fullHash = true;
47
+ }
38
48
  /** @type {GenerateLoadBinaryCode} */
39
49
  this.generateLoadBinaryCode = generateLoadBinaryCode;
40
50
  /** @type {GenerateBeforeLoadBinaryCode | undefined} */
@@ -56,24 +66,34 @@ class AsyncWasmCompileRuntimeModule extends RuntimeModule {
56
66
  // Opt-out fallback to non-streaming when the server serves wasm with a wrong MIME type.
57
67
  const streamingFallback = outputOptions.wasmStreamingFallback;
58
68
  const fn = RuntimeGlobals.compileWasm;
59
- const wasmModuleSrcPath = compilation.getPath(
60
- JSON.stringify(outputOptions.webassemblyModuleFilename),
61
- {
62
- hash: `" + ${RuntimeGlobals.getFullHash}() + "`,
63
- hashWithLength: (length) =>
64
- `" + ${RuntimeGlobals.getFullHash}().slice(0, ${length}) + "`,
65
- module: {
66
- id: '" + wasmModuleId + "',
67
- hash: '" + wasmModuleHash + "',
68
- hashWithLength(length) {
69
- return `" + wasmModuleHash.slice(0, ${length}) + "`;
70
- }
71
- },
72
- runtime: chunk.runtime
73
- }
69
+ // Analyzable output bakes the binary's URL into the call site instead.
70
+ const analyzable = runtimeTemplate.supportsAnalyzable(
71
+ "wasm",
72
+ undefined,
73
+ undefined,
74
+ chunk.runtime
74
75
  );
76
+ const wasmModuleSrcPath = analyzable
77
+ ? "wasmModuleUrl"
78
+ : compilation.getPath(
79
+ JSON.stringify(outputOptions.webassemblyModuleFilename),
80
+ {
81
+ ...fullHashPathData(compilation),
82
+ module: {
83
+ id: '" + wasmModuleId + "',
84
+ hash: '" + wasmModuleHash + "',
85
+ hashWithLength(length) {
86
+ return `" + wasmModuleHash.slice(0, ${length}) + "`;
87
+ }
88
+ },
89
+ runtime: chunk.runtime
90
+ }
91
+ );
75
92
 
76
- const loader = this.generateLoadBinaryCode(wasmModuleSrcPath);
93
+ const loader = this.generateLoadBinaryCode(
94
+ wasmModuleSrcPath,
95
+ chunk.runtime
96
+ );
77
97
 
78
98
  // Fallback path: fetch -> arrayBuffer -> WebAssembly.compile
79
99
  const fallback = [
@@ -138,7 +158,7 @@ class AsyncWasmCompileRuntimeModule extends RuntimeModule {
138
158
  };
139
159
 
140
160
  return `${fn} = ${runtimeTemplate.basicFunction(
141
- "wasmModuleId, wasmModuleHash",
161
+ analyzable ? "wasmModuleUrl" : "wasmModuleId, wasmModuleHash",
142
162
  this.supportsStreaming
143
163
  ? getStreaming()
144
164
  : [
@@ -8,12 +8,14 @@
8
8
  const RuntimeGlobals = require("../RuntimeGlobals");
9
9
  const RuntimeModule = require("../RuntimeModule");
10
10
  const Template = require("../Template");
11
+ const { fullHashPathData } = require("../wasm/wasmModuleFilename");
11
12
 
12
- /** @typedef {import("../Chunk")} Chunk */
13
- /** @typedef {import("../Compilation")} Compilation */
13
+ /** @import Chunk from "../Chunk" */
14
+ /** @import Compilation from "../Compilation" */
15
+ /** @import { RuntimeSpec } from "../util/runtime" */
14
16
 
15
17
  /** @typedef {(wasmModuleSrcPath: string) => string} GenerateBeforeLoadBinaryCode */
16
- /** @typedef {(wasmModuleSrcPath: string) => string} GenerateLoadBinaryCode */
18
+ /** @typedef {(wasmModuleSrcPath: string, runtime: RuntimeSpec) => string} GenerateLoadBinaryCode */
17
19
  /** @typedef {() => string} GenerateBeforeInstantiateStreaming */
18
20
 
19
21
  /**
@@ -22,6 +24,7 @@ const Template = require("../Template");
22
24
  * @property {GenerateBeforeLoadBinaryCode=} generateBeforeLoadBinaryCode
23
25
  * @property {GenerateBeforeInstantiateStreaming=} generateBeforeInstantiateStreaming
24
26
  * @property {boolean} supportsStreaming
27
+ * @property {boolean=} fullHashDigest the binary's name inlines a re-encoded compilation hash
25
28
  */
26
29
 
27
30
  class AsyncWasmLoadingRuntimeModule extends RuntimeModule {
@@ -32,9 +35,16 @@ class AsyncWasmLoadingRuntimeModule extends RuntimeModule {
32
35
  generateLoadBinaryCode,
33
36
  generateBeforeLoadBinaryCode,
34
37
  generateBeforeInstantiateStreaming,
35
- supportsStreaming
38
+ supportsStreaming,
39
+ fullHashDigest
36
40
  }) {
37
41
  super("wasm loading", RuntimeModule.STAGE_NORMAL);
42
+ // A re-encoded digest is inlined from the settled hash, so this has to render
43
+ // again once there is one.
44
+ if (fullHashDigest) {
45
+ /** @type {boolean} */
46
+ this.fullHash = true;
47
+ }
38
48
  /** @type {GenerateLoadBinaryCode} */
39
49
  this.generateLoadBinaryCode = generateLoadBinaryCode;
40
50
  /** @type {generateBeforeLoadBinaryCode | undefined} */
@@ -57,24 +67,34 @@ class AsyncWasmLoadingRuntimeModule extends RuntimeModule {
57
67
  // Opt-in fallback to non-streaming when the server serves wasm with a wrong MIME type.
58
68
  const streamingFallback = outputOptions.wasmStreamingFallback;
59
69
  const fn = RuntimeGlobals.instantiateWasm;
60
- const wasmModuleSrcPath = compilation.getPath(
61
- JSON.stringify(outputOptions.webassemblyModuleFilename),
62
- {
63
- hash: `" + ${RuntimeGlobals.getFullHash}() + "`,
64
- hashWithLength: (length) =>
65
- `" + ${RuntimeGlobals.getFullHash}().slice(0, ${length}) + "`,
66
- module: {
67
- id: '" + wasmModuleId + "',
68
- hash: '" + wasmModuleHash + "',
69
- hashWithLength(length) {
70
- return `" + wasmModuleHash.slice(0, ${length}) + "`;
71
- }
72
- },
73
- runtime: chunk.runtime
74
- }
70
+ // Analyzable output bakes the binary's URL into the call site instead.
71
+ const analyzable = runtimeTemplate.supportsAnalyzable(
72
+ "wasm",
73
+ undefined,
74
+ undefined,
75
+ chunk.runtime
75
76
  );
77
+ const wasmModuleSrcPath = analyzable
78
+ ? "wasmModuleUrl"
79
+ : compilation.getPath(
80
+ JSON.stringify(outputOptions.webassemblyModuleFilename),
81
+ {
82
+ ...fullHashPathData(compilation),
83
+ module: {
84
+ id: '" + wasmModuleId + "',
85
+ hash: '" + wasmModuleHash + "',
86
+ hashWithLength(length) {
87
+ return `" + wasmModuleHash.slice(0, ${length}) + "`;
88
+ }
89
+ },
90
+ runtime: chunk.runtime
91
+ }
92
+ );
76
93
 
77
- const loader = this.generateLoadBinaryCode(wasmModuleSrcPath);
94
+ const loader = this.generateLoadBinaryCode(
95
+ wasmModuleSrcPath,
96
+ chunk.runtime
97
+ );
78
98
  const fallback = [
79
99
  `.then(${runtimeTemplate.returningFunction("x.arrayBuffer()", "x")})`,
80
100
  `.then(${runtimeTemplate.returningFunction(
@@ -149,7 +169,9 @@ class AsyncWasmLoadingRuntimeModule extends RuntimeModule {
149
169
  };
150
170
 
151
171
  return `${fn} = ${runtimeTemplate.basicFunction(
152
- "exports, wasmModuleId, wasmModuleHash, importsObj",
172
+ analyzable
173
+ ? "exports, wasmModuleUrl, importsObj"
174
+ : "exports, wasmModuleId, wasmModuleHash, importsObj",
153
175
  this.supportsStreaming
154
176
  ? getStreaming()
155
177
  : [
@@ -7,9 +7,9 @@
7
7
  const NormalModule = require("../NormalModule");
8
8
  const makeSerializable = require("../util/makeSerializable");
9
9
 
10
- /** @typedef {import("../Module")} Module */
11
- /** @typedef {import("../NormalModule").NormalModuleCreateData} NormalModuleCreateData */
12
- /** @typedef {import("../dependencies/ImportPhase").ImportPhaseName} ImportPhaseName */
10
+ /** @import Module from "../Module" */
11
+ /** @import { NormalModuleCreateData } from "../NormalModule" */
12
+ /** @import { ImportPhaseName } from "../dependencies/ImportPhase" */
13
13
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[ImportPhaseName | undefined]>} ObjectDeserializerContext */
14
14
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[ImportPhaseName | undefined]>} ObjectSerializerContext */
15
15
 
@@ -9,11 +9,10 @@ const { RawSource } = require("webpack-sources");
9
9
  const Generator = require("../Generator");
10
10
  const { WEBASSEMBLY_TYPES } = require("../ModuleSourceTypeConstants");
11
11
 
12
- /** @typedef {import("webpack-sources").Source} Source */
13
- /** @typedef {import("../Generator").GenerateContext} GenerateContext */
14
- /** @typedef {import("../Module").SourceType} SourceType */
15
- /** @typedef {import("../Module").SourceTypes} SourceTypes */
16
- /** @typedef {import("../NormalModule")} NormalModule */
12
+ /** @import { Source } from "webpack-sources" */
13
+ /** @import { GenerateContext } from "../Generator" */
14
+ /** @import { SourceType, SourceTypes } from "../Module" */
15
+ /** @import NormalModule from "../NormalModule" */
17
16
 
18
17
  /**
19
18
  * Represents the async web assembly generator runtime component.