@depup/webpack 5.109.2-depup.0 → 5.110.3-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 (647) hide show
  1. package/README.md +5 -5
  2. package/changes.json +7 -7
  3. package/lib/APIPlugin.js +123 -17
  4. package/lib/AsyncDependenciesBlock.js +10 -7
  5. package/lib/AutomaticPrefetchPlugin.js +1 -1
  6. package/lib/BannerPlugin.js +10 -6
  7. package/lib/CacheFacade.js +6 -6
  8. package/lib/Chunk.js +14 -11
  9. package/lib/ChunkGraph.js +46 -35
  10. package/lib/ChunkGroup.js +7 -7
  11. package/lib/ChunkTemplate.js +35 -44
  12. package/lib/CircularModulesPlugin.js +205 -28
  13. package/lib/CleanPlugin.js +4 -7
  14. package/lib/CodeGenerationResults.js +11 -8
  15. package/lib/CompatibilityPlugin.js +7 -7
  16. package/lib/Compilation.js +688 -409
  17. package/lib/Compiler.js +53 -38
  18. package/lib/ConcatenationScope.js +107 -8
  19. package/lib/ConditionalInitFragment.js +3 -3
  20. package/lib/ConstPlugin.js +13 -11
  21. package/lib/ContextExclusionPlugin.js +1 -1
  22. package/lib/ContextModule.js +146 -54
  23. package/lib/ContextModuleFactory.js +46 -14
  24. package/lib/ContextReplacementPlugin.js +12 -14
  25. package/lib/DefinePlugin.js +121 -37
  26. package/lib/DependenciesBlock.js +9 -6
  27. package/lib/Dependency.js +36 -16
  28. package/lib/DependencyTemplate.js +11 -12
  29. package/lib/DependencyTemplates.js +3 -3
  30. package/lib/DotenvPlugin.js +91 -26
  31. package/lib/DynamicEntryPlugin.js +8 -4
  32. package/lib/EntryOptionPlugin.js +8 -4
  33. package/lib/EntryPlugin.js +2 -2
  34. package/lib/Entrypoint.js +6 -2
  35. package/lib/EnvironmentPlugin.js +2 -2
  36. package/lib/EvalDevToolModulePlugin.js +8 -4
  37. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  38. package/lib/ExportsInfo.js +111 -14
  39. package/lib/ExportsInfoApiPlugin.js +2 -4
  40. package/lib/ExternalModule.js +232 -77
  41. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  42. package/lib/ExternalsPlugin.js +10 -6
  43. package/lib/FileSystemInfo.js +44 -70
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  45. package/lib/FlagDependencyExportsPlugin.js +76 -19
  46. package/lib/FlagDependencyUsagePlugin.js +40 -49
  47. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  48. package/lib/Generator.js +36 -15
  49. package/lib/HotModuleReplacementPlugin.js +16 -44
  50. package/lib/IgnorePlugin.js +8 -4
  51. package/lib/IgnoreWarningsPlugin.js +2 -2
  52. package/lib/InitFragment.js +8 -4
  53. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  54. package/lib/LazyBarrel.js +3 -4
  55. package/lib/LibraryTemplatePlugin.js +10 -6
  56. package/lib/LoaderOptionsPlugin.js +7 -3
  57. package/lib/LoaderTargetPlugin.js +1 -1
  58. package/lib/MainTemplate.js +49 -42
  59. package/lib/ManifestPlugin.js +12 -11
  60. package/lib/Module.js +62 -33
  61. package/lib/ModuleFactory.js +3 -3
  62. package/lib/ModuleFilenameHelpers.js +9 -4
  63. package/lib/ModuleGraph.js +195 -21
  64. package/lib/ModuleGraphConnection.js +6 -13
  65. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  66. package/lib/ModuleTemplate.js +62 -63
  67. package/lib/MultiCompiler.js +130 -64
  68. package/lib/MultiStats.js +40 -9
  69. package/lib/MultiWatching.js +3 -3
  70. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  71. package/lib/NodeStuffPlugin.js +29 -19
  72. package/lib/NormalModule.js +152 -103
  73. package/lib/NormalModuleFactory.js +555 -110
  74. package/lib/NormalModuleReplacementPlugin.js +5 -8
  75. package/lib/NullFactory.js +6 -2
  76. package/lib/OptionsApply.js +7 -3
  77. package/lib/Parser.js +7 -3
  78. package/lib/PlatformPlugin.js +2 -2
  79. package/lib/PrefetchPlugin.js +1 -1
  80. package/lib/ProgressPlugin.js +16 -13
  81. package/lib/ProvidePlugin.js +3 -5
  82. package/lib/RawModule.js +25 -17
  83. package/lib/RecordIdsPlugin.js +3 -3
  84. package/lib/RequestShortener.js +1 -1
  85. package/lib/ResolverFactory.js +2 -2
  86. package/lib/RuntimeGlobals.js +22 -10
  87. package/lib/RuntimeModule.js +29 -19
  88. package/lib/RuntimePlugin.js +335 -169
  89. package/lib/RuntimeTemplate.js +2761 -316
  90. package/lib/SelfModuleFactory.js +7 -3
  91. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  92. package/lib/SourceMapDevToolPlugin.js +30 -20
  93. package/lib/Stats.js +3 -4
  94. package/lib/Template.js +32 -22
  95. package/lib/TemplatedPathPlugin.js +96 -14
  96. package/lib/UseStrictPlugin.js +4 -6
  97. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  98. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  99. package/lib/WarnNoModeSetPlugin.js +1 -1
  100. package/lib/WatchIgnorePlugin.js +8 -6
  101. package/lib/Watching.js +8 -8
  102. package/lib/WebpackIsIncludedPlugin.js +2 -4
  103. package/lib/WebpackOptionsApply.js +308 -18
  104. package/lib/WebpackOptionsDefaulter.js +6 -2
  105. package/lib/asset/AssetBytesGenerator.js +12 -10
  106. package/lib/asset/AssetBytesParser.js +2 -4
  107. package/lib/asset/AssetGenerator.js +188 -95
  108. package/lib/asset/AssetModule.js +7 -3
  109. package/lib/asset/AssetModulesPlugin.js +110 -38
  110. package/lib/asset/AssetParser.js +9 -7
  111. package/lib/asset/AssetSourceGenerator.js +60 -13
  112. package/lib/asset/AssetSourceParser.js +2 -4
  113. package/lib/asset/RawDataUrlModule.js +24 -16
  114. package/lib/asset/WebManifestGenerator.js +8 -10
  115. package/lib/asset/WebManifestParser.js +24 -10
  116. package/lib/async-modules/AsyncModuleHelpers.js +12 -6
  117. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  118. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  119. package/lib/async-modules/isGeneratorLowered.js +4 -4
  120. package/lib/buildChunkGraph.js +36 -27
  121. package/lib/bun/BunTargetPlugin.js +1 -1
  122. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  123. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  124. package/lib/cache/IdleFileCachePlugin.js +2 -2
  125. package/lib/cache/MemoryCachePlugin.js +18 -10
  126. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  127. package/lib/cache/PackFileCacheStrategy.js +30 -23
  128. package/lib/cache/ResolverCachePlugin.js +38 -18
  129. package/lib/cache/getLazyHashedEtag.js +1 -2
  130. package/lib/cache/mergeEtags.js +1 -1
  131. package/lib/cli.js +1 -3
  132. package/lib/config/browserslistTargetHandler.js +41 -5
  133. package/lib/config/defaults.js +270 -78
  134. package/lib/config/defineConfig.js +10 -2
  135. package/lib/config/getClaimedAssetTypes.js +65 -0
  136. package/lib/config/normalization.js +46 -16
  137. package/lib/config/target.js +46 -3
  138. package/lib/container/ContainerEntryDependency.js +1 -1
  139. package/lib/container/ContainerEntryModule.js +24 -15
  140. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  141. package/lib/container/ContainerPlugin.js +9 -10
  142. package/lib/container/ContainerReferencePlugin.js +6 -2
  143. package/lib/container/FallbackDependency.js +1 -1
  144. package/lib/container/FallbackModule.js +24 -17
  145. package/lib/container/FallbackModuleFactory.js +7 -3
  146. package/lib/container/HoistContainerReferencesPlugin.js +6 -11
  147. package/lib/container/ModuleFederationPlugin.js +7 -24
  148. package/lib/container/RemoteModule.js +27 -19
  149. package/lib/container/RemoteRuntimeModule.js +10 -8
  150. package/lib/container/moduleFederationHooks.js +32 -0
  151. package/lib/css/CssGenerator.js +171 -43
  152. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  153. package/lib/css/CssLoadingRuntimeModule.js +84 -32
  154. package/lib/css/CssModule.js +10 -7
  155. package/lib/css/CssModulesPlugin.js +172 -100
  156. package/lib/css/CssParser.js +1113 -568
  157. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  158. package/lib/css/cssMinify.js +168 -0
  159. package/lib/css/data.js +5334 -0
  160. package/lib/css/syntax.js +9647 -232
  161. package/lib/debug/ProfilingPlugin.js +14 -9
  162. package/lib/deno/DenoTargetPlugin.js +1 -1
  163. package/lib/dependencies/AMDDefineDependency.js +112 -87
  164. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  165. package/lib/dependencies/AMDPlugin.js +9 -7
  166. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  167. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  168. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  169. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  170. package/lib/dependencies/AMDRequireDependency.js +8 -7
  171. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  172. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  173. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  174. package/lib/dependencies/CachedConstDependency.js +11 -8
  175. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  176. package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
  177. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  178. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  179. package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
  180. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
  181. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  182. package/lib/dependencies/CommonJsPlugin.js +35 -6
  183. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  184. package/lib/dependencies/CommonJsRequireDependency.js +170 -27
  185. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  186. package/lib/dependencies/ConstDependency.js +8 -9
  187. package/lib/dependencies/ContextDependency.js +12 -8
  188. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  189. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  190. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +24 -11
  191. package/lib/dependencies/ContextElementDependency.js +31 -12
  192. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  193. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  194. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  195. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  196. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  197. package/lib/dependencies/CssImportDependency.js +18 -9
  198. package/lib/dependencies/CssUrlDependency.js +17 -13
  199. package/lib/dependencies/DllEntryDependency.js +1 -1
  200. package/lib/dependencies/DynamicExports.js +2 -2
  201. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  202. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  203. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  204. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  205. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  206. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  207. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  208. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  209. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +23 -14
  210. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
  211. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  212. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  213. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
  214. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  215. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  216. package/lib/dependencies/HarmonyExports.js +7 -4
  217. package/lib/dependencies/HarmonyImportDependency.js +121 -60
  218. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
  219. package/lib/dependencies/HarmonyImportGuard.js +20 -30
  220. package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -9
  221. package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
  222. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  223. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  224. package/lib/dependencies/HtmlEntryDependency.js +49 -31
  225. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  226. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  227. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  228. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  229. package/lib/dependencies/ImportContextDependency.js +45 -5
  230. package/lib/dependencies/ImportDependency.js +33 -50
  231. package/lib/dependencies/ImportEagerDependency.js +6 -9
  232. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  233. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  234. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  235. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  236. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  237. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  238. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  239. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  241. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  242. package/lib/dependencies/ImportParserPlugin.js +73 -49
  243. package/lib/dependencies/ImportPhase.js +12 -5
  244. package/lib/dependencies/ImportPlugin.js +7 -3
  245. package/lib/dependencies/ImportWeakDependency.js +6 -9
  246. package/lib/dependencies/JsonExportsDependency.js +11 -7
  247. package/lib/dependencies/LoaderDependency.js +2 -2
  248. package/lib/dependencies/LoaderImportDependency.js +2 -2
  249. package/lib/dependencies/LoaderPlugin.js +11 -7
  250. package/lib/dependencies/LocalModuleDependency.js +5 -5
  251. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  252. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  253. package/lib/dependencies/ModuleDependency.js +9 -6
  254. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  255. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  256. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  257. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  258. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  259. package/lib/dependencies/NullDependency.js +3 -3
  260. package/lib/dependencies/ProvidedDependency.js +14 -10
  261. package/lib/dependencies/PureExpressionDependency.js +9 -10
  262. package/lib/dependencies/RequireContextDependency.js +2 -2
  263. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  264. package/lib/dependencies/RequireContextPlugin.js +8 -4
  265. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  266. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  267. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  268. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  269. package/lib/dependencies/RequireHeaderDependency.js +50 -12
  270. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  271. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  272. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  273. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  274. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  275. package/lib/dependencies/RequireResolveDependency.js +4 -4
  276. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  277. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  278. package/lib/dependencies/StaticExportsDependency.js +2 -2
  279. package/lib/dependencies/SystemPlugin.js +10 -6
  280. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  281. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  282. package/lib/dependencies/URLContextDependency.js +2 -2
  283. package/lib/dependencies/URLDependency.js +110 -64
  284. package/lib/dependencies/URLPlugin.js +7 -3
  285. package/lib/dependencies/UnsupportedDependency.js +4 -4
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  287. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  289. package/lib/dependencies/WorkerAndWorkletPlugin.js +47 -28
  290. package/lib/dependencies/WorkerDependency.js +22 -22
  291. package/lib/dependencies/WorkletDependency.js +18 -21
  292. package/lib/dependencies/getFunctionExpression.js +8 -4
  293. package/lib/dependencies/importOptionsCheck.js +47 -0
  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/DotenvFileError.js +29 -0
  316. package/lib/errors/DuplicateModulesWarning.js +45 -0
  317. package/lib/errors/DynamicExportsWarning.js +30 -0
  318. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  319. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  320. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  321. package/lib/errors/EvalUsageWarning.js +28 -0
  322. package/lib/errors/HookWebpackError.js +5 -5
  323. package/lib/errors/HotspotsWarning.js +57 -0
  324. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  325. package/lib/errors/ImportedBindingAssignmentError.js +30 -0
  326. package/lib/errors/InlinedAssetsWarning.js +36 -0
  327. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  328. package/lib/errors/LargeModulesWarning.js +45 -0
  329. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  330. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  331. package/lib/errors/MixedExportsWarning.js +41 -0
  332. package/lib/errors/ModuleDependencyError.js +13 -16
  333. package/lib/errors/ModuleDependencyWarning.js +5 -15
  334. package/lib/errors/ModuleHashingError.js +1 -1
  335. package/lib/errors/ModuleNotFoundError.js +2 -2
  336. package/lib/errors/ModuleParseError.js +1 -2
  337. package/lib/errors/ModuleRestoreError.js +1 -1
  338. package/lib/errors/ModuleStoreError.js +1 -1
  339. package/lib/errors/NodeStuffInWebError.js +1 -1
  340. package/lib/errors/OsDependentRuleWarning.js +31 -0
  341. package/lib/errors/PureAnnotationsWarning.js +36 -0
  342. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  343. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  344. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  345. package/lib/errors/TinyChunksWarning.js +40 -0
  346. package/lib/errors/TopLevelThisWarning.js +34 -0
  347. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  348. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  349. package/lib/errors/UnusedAliasesWarning.js +29 -0
  350. package/lib/errors/UnusedDefinesWarning.js +29 -0
  351. package/lib/errors/UnusedExternalsWarning.js +29 -0
  352. package/lib/errors/UnusedReexportsWarning.js +42 -0
  353. package/lib/errors/UnusedRuleWarning.js +29 -0
  354. package/lib/errors/WebpackError.js +9 -5
  355. package/lib/errors/deriveStackFromNestedError.js +90 -0
  356. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  357. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  358. package/lib/esm/ModuleChunkLoadingPlugin.js +86 -51
  359. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
  360. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  361. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  362. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  363. package/lib/hmr/lazyCompilationBackend.js +9 -6
  364. package/lib/hmr/parserHooks.js +56 -0
  365. package/lib/html/HtmlGenerator.js +277 -77
  366. package/lib/html/HtmlModule.js +7 -3
  367. package/lib/html/HtmlModulesPlugin.js +366 -200
  368. package/lib/html/HtmlParser.js +31 -86
  369. package/lib/html/data.js +1928 -0
  370. package/lib/html/htmlMinify.js +288 -0
  371. package/lib/html/syntax.js +6034 -1384
  372. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  373. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  374. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  375. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  376. package/lib/ids/IdHelpers.js +7 -8
  377. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  378. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  379. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  380. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  381. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  382. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  383. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  384. package/lib/index.js +10 -0
  385. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  386. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  387. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  388. package/lib/javascript/ChunkHelpers.js +1 -1
  389. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  390. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  391. package/lib/javascript/JavascriptGenerator.js +65 -165
  392. package/lib/javascript/JavascriptModule.js +9 -3
  393. package/lib/javascript/JavascriptModulesPlugin.js +103 -123
  394. package/lib/javascript/JavascriptParser.js +242 -99
  395. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  396. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  397. package/lib/javascript/StartupHelpers.js +55 -9
  398. package/lib/javascript/syntax.js +2678 -232
  399. package/lib/json/JsonData.js +8 -4
  400. package/lib/json/JsonGenerator.js +38 -16
  401. package/lib/json/JsonModule.js +7 -3
  402. package/lib/json/JsonModulesPlugin.js +1 -1
  403. package/lib/json/JsonParser.js +5 -6
  404. package/lib/library/AbstractLibraryPlugin.js +20 -14
  405. package/lib/library/AmdLibraryPlugin.js +11 -7
  406. package/lib/library/AssignLibraryPlugin.js +19 -13
  407. package/lib/library/EnableLibraryPlugin.js +2 -2
  408. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  409. package/lib/library/JsonpLibraryPlugin.js +11 -7
  410. package/lib/library/ModuleLibraryPlugin.js +256 -64
  411. package/lib/library/SystemLibraryPlugin.js +12 -8
  412. package/lib/library/UmdLibraryPlugin.js +62 -25
  413. package/lib/loaders/LoaderRunner.js +47 -6
  414. package/lib/loaders/loadLoader.js +8 -4
  415. package/lib/logging/createConsoleLogger.js +7 -4
  416. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  417. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  418. package/lib/node/NodeSourcePlugin.js +1 -1
  419. package/lib/node/NodeTargetPlugin.js +4 -3
  420. package/lib/node/NodeTemplatePlugin.js +1 -1
  421. package/lib/node/NodeWatchFileSystem.js +70 -9
  422. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  423. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +65 -19
  424. package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
  425. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  426. package/lib/node/nodeConsole.js +7 -3
  427. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  428. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  429. package/lib/optimize/ConcatenatedModule.js +1030 -476
  430. package/lib/optimize/ConstExportsPlugin.js +16 -7
  431. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  432. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  433. package/lib/optimize/InlineExports.js +130 -5
  434. package/lib/optimize/InnerGraph.js +28 -12
  435. package/lib/optimize/InnerGraphPlugin.js +23 -18
  436. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  437. package/lib/optimize/MangleExportsPlugin.js +7 -8
  438. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  439. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  440. package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
  441. package/lib/optimize/RealContentHashPlugin.js +121 -41
  442. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  443. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  444. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  445. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  446. package/lib/optimize/SplitChunksPlugin.js +86 -24
  447. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  448. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  449. package/lib/performance/BroadContextsPlugin.js +142 -0
  450. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  451. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  452. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  453. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  454. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  455. package/lib/performance/DynamicExportsPlugin.js +120 -0
  456. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  457. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  458. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  459. package/lib/performance/EvalUsagePlugin.js +115 -0
  460. package/lib/performance/HotspotsPlugin.js +296 -0
  461. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  462. package/lib/performance/LargeModulesPlugin.js +126 -0
  463. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  464. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  465. package/lib/performance/MixedExportsPlugin.js +136 -0
  466. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  467. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  468. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  469. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  470. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  471. package/lib/performance/SizeLimitsPlugin.js +139 -7
  472. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  473. package/lib/performance/TinyChunksPlugin.js +128 -0
  474. package/lib/performance/TopLevelThisPlugin.js +208 -0
  475. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  476. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  477. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  478. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  479. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  480. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  481. package/lib/performance/getModuleSize.js +22 -0
  482. package/lib/performance/getSourceModules.js +22 -0
  483. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  484. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  485. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  486. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  487. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  488. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  489. package/lib/prefetch/ResourceHintPlugin.js +295 -79
  490. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  491. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  492. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  493. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  494. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  495. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  496. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  497. package/lib/rules/RuleSetCompiler.js +146 -12
  498. package/lib/rules/UseEffectRulePlugin.js +18 -11
  499. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  500. package/lib/runtime/AsyncModuleRuntimeModule.js +6 -2
  501. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  502. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  503. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  504. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  505. package/lib/runtime/CompatRuntimeModule.js +5 -3
  506. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  507. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  508. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  509. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  510. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  511. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  512. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  513. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  514. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  515. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  516. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  517. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  518. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  519. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  520. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  521. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +34 -7
  522. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  523. package/lib/runtime/NonceRuntimeModule.js +10 -0
  524. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  525. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  526. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  527. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  528. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  529. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  530. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  531. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  532. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  533. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  534. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  535. package/lib/runtime/baseUri.js +63 -0
  536. package/lib/schemes/DataUriPlugin.js +1 -1
  537. package/lib/schemes/FileUriPlugin.js +1 -1
  538. package/lib/schemes/HttpUriPlugin.js +46 -20
  539. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  540. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  541. package/lib/serialization/BinaryMiddleware.js +4 -4
  542. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  543. package/lib/serialization/FileMiddleware.js +22 -9
  544. package/lib/serialization/ObjectMiddleware.js +139 -114
  545. package/lib/serialization/PlainObjectSerializer.js +19 -16
  546. package/lib/sharing/ConsumeSharedModule.js +30 -21
  547. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  548. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  549. package/lib/sharing/ProvideSharedModule.js +25 -16
  550. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  551. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  552. package/lib/sharing/SharePlugin.js +17 -5
  553. package/lib/sharing/ShareRuntimeModule.js +4 -4
  554. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  555. package/lib/sharing/utils.js +1 -3
  556. package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
  557. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  558. package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
  559. package/lib/stats/StatsFactory.js +25 -26
  560. package/lib/stats/StatsPrinter.js +16 -12
  561. package/lib/typescript/TypeScriptPlugin.js +20 -24
  562. package/lib/url/URLParserPlugin.js +26 -13
  563. package/lib/util/ArrayQueue.js +3 -3
  564. package/lib/util/AsyncQueue.js +4 -3
  565. package/lib/util/Hash.js +5 -1
  566. package/lib/util/LazySet.js +35 -22
  567. package/lib/util/LocConverter.js +36 -13
  568. package/lib/util/SourceProcessor.js +1066 -24
  569. package/lib/util/StringXor.js +1 -1
  570. package/lib/util/URLAbsoluteSpecifier.js +3 -1
  571. package/lib/util/chainedImports.js +9 -5
  572. package/lib/util/cleverMerge.js +1 -1
  573. package/lib/util/comparators.js +45 -14
  574. package/lib/util/concatenate.js +203 -77
  575. package/lib/util/conventions.js +10 -2
  576. package/lib/util/createHash.js +2 -2
  577. package/lib/util/createHooksRegistry.js +8 -10
  578. package/lib/util/createMappings.js +25 -3
  579. package/lib/util/dataURL.js +225 -1
  580. package/lib/util/extractSourceMap.js +4 -3
  581. package/lib/util/findCaseMismatch.js +139 -0
  582. package/lib/util/formatLocation.js +1 -2
  583. package/lib/util/fs.js +22 -5
  584. package/lib/util/globUtils.js +298 -24
  585. package/lib/util/hash/BatchedHash.js +5 -1
  586. package/lib/util/hash/BulkUpdateHash.js +5 -1
  587. package/lib/util/hash/DebugHash.js +5 -1
  588. package/lib/util/hash/hash-digest.js +6 -2
  589. package/lib/util/identifier.js +4 -0
  590. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  591. package/lib/util/internalSerializables.js +8 -0
  592. package/lib/util/lazyModule.js +56 -0
  593. package/lib/util/makeSerializable.js +7 -3
  594. package/lib/util/matchAlias.js +25 -0
  595. package/lib/util/mimeTypes.js +11 -5
  596. package/lib/util/nonNumericOnlyHash.js +4 -3
  597. package/lib/util/parseJson.js +5 -3
  598. package/lib/util/preloadModuleType.js +32 -0
  599. package/lib/util/registerExternalSerializer.js +7 -5
  600. package/lib/util/removeBOM.js +82 -1
  601. package/lib/util/runtime.js +2 -2
  602. package/lib/util/semver.js +1 -1
  603. package/lib/util/serialization.js +28 -28
  604. package/lib/util/source.js +2 -2
  605. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  607. package/lib/wasm/wasmModuleFilename.js +54 -0
  608. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +43 -21
  609. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -21
  610. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  611. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  612. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  613. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  614. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  615. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +29 -8
  616. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  623. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +105 -19
  626. package/lib/web/FetchCompileWasmPlugin.js +48 -16
  627. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  629. package/lib/web/JsonpTemplatePlugin.js +2 -2
  630. package/lib/webpack.js +22 -11
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +1 -0
  635. package/package.json +32 -25
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +667 -34
  638. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  639. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  640. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  641. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  642. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  643. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  644. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  645. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  646. package/types.d.ts +3223 -465
  647. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -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.
@@ -13,13 +13,11 @@ const RuntimeGlobals = require("../RuntimeGlobals");
13
13
  const Template = require("../Template");
14
14
  const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
15
15
 
16
- /** @typedef {import("webpack-sources").Source} Source */
17
- /** @typedef {import("./AsyncWasmModule")} AsyncWasmModule */
18
- /** @typedef {import("../Generator").GenerateContext} GenerateContext */
19
- /** @typedef {import("../Module")} Module */
20
- /** @typedef {import("../Module").SourceType} SourceType */
21
- /** @typedef {import("../Module").SourceTypes} SourceTypes */
22
- /** @typedef {import("../NormalModule")} NormalModule */
16
+ /** @import { Source } from "webpack-sources" */
17
+ /** @import AsyncWasmModule from "./AsyncWasmModule" */
18
+ /** @import { GenerateContext } from "../Generator" */
19
+ /** @import Module, { SourceType, SourceTypes } from "../Module" */
20
+ /** @import NormalModule from "../NormalModule" */
23
21
 
24
22
  /**
25
23
  * Represents the async web assembly javascript generator runtime component.
@@ -72,8 +70,24 @@ class AsyncWebAssemblyJavascriptGenerator extends Generator {
72
70
  return this._generateSourcePhase(module, generateContext);
73
71
  }
74
72
 
73
+ const analyzableUrl = runtimeTemplate.supportsAnalyzable(
74
+ "wasm",
75
+ chunkGraph,
76
+ module,
77
+ runtime
78
+ )
79
+ ? runtimeTemplate.getAnalyzableWasmUrl(
80
+ module,
81
+ chunkGraph,
82
+ runtime,
83
+ runtimeRequirements
84
+ )
85
+ : null;
86
+
75
87
  runtimeRequirements.add(RuntimeGlobals.module);
76
- runtimeRequirements.add(RuntimeGlobals.moduleId);
88
+ if (analyzableUrl === null) {
89
+ runtimeRequirements.add(RuntimeGlobals.moduleId);
90
+ }
77
91
  runtimeRequirements.add(RuntimeGlobals.exports);
78
92
  runtimeRequirements.add(RuntimeGlobals.instantiateWasm);
79
93
  /** @type {InitFragment<GenerateContext>[]} */
@@ -173,11 +187,15 @@ class AsyncWebAssemblyJavascriptGenerator extends Generator {
173
187
  ])
174
188
  : undefined;
175
189
 
176
- const instantiateCall = `${RuntimeGlobals.instantiateWasm}(${module.exportsArgument}, ${
177
- module.moduleArgument
178
- }.id, ${JSON.stringify(
179
- chunkGraph.getRenderedModuleHash(module, runtime)
180
- )}${importsObj ? `, ${importsObj})` : ")"}`;
190
+ const locator =
191
+ analyzableUrl === null
192
+ ? `${module.moduleArgument}.id, ${JSON.stringify(
193
+ chunkGraph.getRenderedModuleHash(module, runtime)
194
+ )}`
195
+ : analyzableUrl;
196
+ const instantiateCall = `${RuntimeGlobals.instantiateWasm}(${
197
+ module.exportsArgument
198
+ }, ${locator}${importsObj ? `, ${importsObj})` : ")"}`;
181
199
 
182
200
  if (promises.length > 0) {
183
201
  runtimeRequirements.add(RuntimeGlobals.asyncModule);
@@ -225,8 +243,24 @@ class AsyncWebAssemblyJavascriptGenerator extends Generator {
225
243
  const { chunkGraph, runtimeTemplate, runtimeRequirements, runtime } =
226
244
  generateContext;
227
245
 
246
+ const analyzableUrl = runtimeTemplate.supportsAnalyzable(
247
+ "wasm",
248
+ chunkGraph,
249
+ module,
250
+ runtime
251
+ )
252
+ ? runtimeTemplate.getAnalyzableWasmUrl(
253
+ module,
254
+ chunkGraph,
255
+ runtime,
256
+ runtimeRequirements
257
+ )
258
+ : null;
259
+
228
260
  runtimeRequirements.add(RuntimeGlobals.module);
229
- runtimeRequirements.add(RuntimeGlobals.moduleId);
261
+ if (analyzableUrl === null) {
262
+ runtimeRequirements.add(RuntimeGlobals.moduleId);
263
+ }
230
264
  runtimeRequirements.add(RuntimeGlobals.exports);
231
265
  runtimeRequirements.add(RuntimeGlobals.compileWasm);
232
266
  runtimeRequirements.add(RuntimeGlobals.asyncModule);
@@ -234,8 +268,12 @@ class AsyncWebAssemblyJavascriptGenerator extends Generator {
234
268
 
235
269
  // Source phase: export default WebAssembly.Module (via compileWasm)
236
270
  const compileCall = `${RuntimeGlobals.compileWasm}(${
237
- module.moduleArgument
238
- }.id, ${JSON.stringify(chunkGraph.getRenderedModuleHash(module, runtime))})`;
271
+ analyzableUrl === null
272
+ ? `${module.moduleArgument}.id, ${JSON.stringify(
273
+ chunkGraph.getRenderedModuleHash(module, runtime)
274
+ )}`
275
+ : analyzableUrl
276
+ })`;
239
277
 
240
278
  // Use async module wrapper to handle the Promise from compileWasm
241
279
  return new RawSource(
@@ -264,7 +302,9 @@ class AsyncWebAssemblyJavascriptGenerator extends Generator {
264
302
  * @returns {Source | null} generated code
265
303
  */
266
304
  generateError(error, module, generateContext) {
267
- return new RawSource(`throw new Error(${JSON.stringify(error.message)});`);
305
+ return new RawSource(
306
+ Generator.throwBuildErrorCode(error, "WebAssembly.CompileError")
307
+ );
268
308
  }
269
309
  }
270
310
 
@@ -12,27 +12,28 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe
12
12
  const { tryRunOrWebpackError } = require("../errors/HookWebpackError");
13
13
  const { compareModulesByFullName } = require("../util/comparators");
14
14
  const createHooksRegistry = require("../util/createHooksRegistry");
15
- const memoize = require("../util/memoize");
15
+ const lazyModule = require("../util/lazyModule");
16
+ const preloadModuleType = require("../util/preloadModuleType");
16
17
  const AsyncWasmModule = require("./AsyncWasmModule");
17
18
 
18
- /** @typedef {import("webpack-sources").Source} Source */
19
- /** @typedef {import("../Chunk")} Chunk */
20
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
21
- /** @typedef {import("../CodeGenerationResults")} CodeGenerationResults */
22
- /** @typedef {import("../Compiler")} Compiler */
23
- /** @typedef {import("../DependencyTemplates")} DependencyTemplates */
24
- /** @typedef {import("../Module")} Module */
25
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
26
- /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
27
- /** @typedef {import("../errors/WebpackError")} WebpackError */
28
-
29
- const getAsyncWebAssemblyGenerator = memoize(() =>
19
+ /** @import { Source } from "webpack-sources" */
20
+ /** @import Chunk from "../Chunk" */
21
+ /** @import ChunkGraph from "../ChunkGraph" */
22
+ /** @import CodeGenerationResults from "../CodeGenerationResults" */
23
+ /** @import Compiler from "../Compiler" */
24
+ /** @import DependencyTemplates from "../DependencyTemplates" */
25
+ /** @import Module from "../Module" */
26
+ /** @import ModuleGraph from "../ModuleGraph" */
27
+ /** @import RuntimeTemplate from "../RuntimeTemplate" */
28
+ /** @import WebpackError from "../errors/WebpackError" */
29
+
30
+ const getAsyncWebAssemblyGenerator = lazyModule(() =>
30
31
  require("./AsyncWebAssemblyGenerator")
31
32
  );
32
- const getAsyncWebAssemblyJavascriptGenerator = memoize(() =>
33
+ const getAsyncWebAssemblyJavascriptGenerator = lazyModule(() =>
33
34
  require("./AsyncWebAssemblyJavascriptGenerator")
34
35
  );
35
- const getAsyncWebAssemblyParser = memoize(() =>
36
+ const getAsyncWebAssemblyParser = lazyModule(() =>
36
37
  require("./AsyncWebAssemblyParser")
37
38
  );
38
39
 
@@ -77,6 +78,9 @@ class AsyncWebAssemblyModulesPlugin {
77
78
  * @returns {void}
78
79
  */
79
80
  apply(compiler) {
81
+ // A binary's name may carry the compilation hash, which the analyzable call site
82
+ // leaves as a stand-in — so whatever the chunk loading is, the pass that fills it
83
+ // in has to be there. Applying it twice is a no-op.
80
84
  compiler.hooks.compilation.tap(
81
85
  PLUGIN_NAME,
82
86
  (compilation, { normalModuleFactory }) => {
@@ -87,6 +91,17 @@ class AsyncWebAssemblyModulesPlugin {
87
91
  normalModuleFactory
88
92
  );
89
93
 
94
+ preloadModuleType(normalModuleFactory, PLUGIN_NAME, [
95
+ [
96
+ WEBASSEMBLY_MODULE_TYPE_ASYNC,
97
+ [
98
+ getAsyncWebAssemblyParser,
99
+ getAsyncWebAssemblyJavascriptGenerator,
100
+ getAsyncWebAssemblyGenerator
101
+ ]
102
+ ]
103
+ ]);
104
+
90
105
  normalModuleFactory.hooks.createModuleClass
91
106
  .for(WEBASSEMBLY_MODULE_TYPE_ASYNC)
92
107
  .tap(
@@ -101,7 +116,7 @@ class AsyncWebAssemblyModulesPlugin {
101
116
  normalModuleFactory.hooks.createParser
102
117
  .for(WEBASSEMBLY_MODULE_TYPE_ASYNC)
103
118
  .tap(PLUGIN_NAME, () => {
104
- const AsyncWebAssemblyParser = getAsyncWebAssemblyParser();
119
+ const AsyncWebAssemblyParser = getAsyncWebAssemblyParser.loaded();
105
120
 
106
121
  return new AsyncWebAssemblyParser();
107
122
  });
@@ -109,8 +124,9 @@ class AsyncWebAssemblyModulesPlugin {
109
124
  .for(WEBASSEMBLY_MODULE_TYPE_ASYNC)
110
125
  .tap(PLUGIN_NAME, () => {
111
126
  const AsyncWebAssemblyJavascriptGenerator =
112
- getAsyncWebAssemblyJavascriptGenerator();
113
- const AsyncWebAssemblyGenerator = getAsyncWebAssemblyGenerator();
127
+ getAsyncWebAssemblyJavascriptGenerator.loaded();
128
+ const AsyncWebAssemblyGenerator =
129
+ getAsyncWebAssemblyGenerator.loaded();
114
130
 
115
131
  return Generator.byType({
116
132
  javascript: new AsyncWebAssemblyJavascriptGenerator(),
@@ -10,14 +10,15 @@ const { decode } = require("@webassemblyjs/wasm-parser");
10
10
  const Parser = require("../Parser");
11
11
  const StaticExportsDependency = require("../dependencies/StaticExportsDependency");
12
12
  const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
13
- const EnvironmentNotSupportAsyncWarning = require("../errors/EnvironmentNotSupportAsyncWarning");
13
+ const memoize = require("../util/memoize");
14
14
 
15
- /** @typedef {import("./AsyncWasmModule")} AsyncWasmModule */
16
- /** @typedef {import("../Module").BuildInfo} BuildInfo */
17
- /** @typedef {import("../Module").BuildMeta} BuildMeta */
18
- /** @typedef {import("../NormalModule")} NormalModule */
19
- /** @typedef {import("../Parser").ParserState} ParserState */
20
- /** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
15
+ const getEnvironmentNotSupportAsyncWarning = memoize(() =>
16
+ require("../errors/EnvironmentNotSupportAsyncWarning")
17
+ );
18
+
19
+ /** @import AsyncWasmModule from "./AsyncWasmModule" */
20
+ /** @import { BuildInfo, BuildMeta } from "../Module" */
21
+ /** @import { ParserState, PreparsedAst } from "../Parser" */
21
22
 
22
23
  const WASM_HEADER = Buffer.from([0x00, 0x61, 0x73, 0x6d]);
23
24
 
@@ -45,7 +46,7 @@ class WebAssemblyParser extends Parser {
45
46
  buildMeta.exportsType = "namespace";
46
47
  buildMeta.async = true;
47
48
 
48
- EnvironmentNotSupportAsyncWarning.check(
49
+ getEnvironmentNotSupportAsyncWarning().check(
49
50
  state.module,
50
51
  state.compilation.runtimeTemplate,
51
52
  "asyncWebAssembly"
@@ -8,11 +8,13 @@
8
8
  const { WEBASSEMBLY_MODULE_TYPE_ASYNC } = require("../ModuleTypeConstants");
9
9
  const RuntimeGlobals = require("../RuntimeGlobals");
10
10
  const Template = require("../Template");
11
+ const { usesFullHashDigest } = require("../TemplatedPathPlugin");
11
12
  const AsyncWasmCompileRuntimeModule = require("../wasm-async/AsyncWasmCompileRuntimeModule");
12
13
  const AsyncWasmLoadingRuntimeModule = require("../wasm-async/AsyncWasmLoadingRuntimeModule");
13
14
 
14
- /** @typedef {import("../Chunk")} Chunk */
15
- /** @typedef {import("../Compiler")} Compiler */
15
+ /** @import Chunk from "../Chunk" */
16
+ /** @import Compiler from "../Compiler" */
17
+ /** @import { RuntimeSpec } from "../util/runtime" */
16
18
 
17
19
  const PLUGIN_NAME = "UniversalCompileAsyncWasmPlugin";
18
20
 
@@ -61,21 +63,30 @@ class UniversalCompileAsyncWasmPlugin {
61
63
  `var useFetch = ${compilation.runtimeTemplate.isWebLikePlatformExpression()};`,
62
64
  `var wasmUrl = ${path};`
63
65
  ]);
66
+ // `wasmUrl` already holds a complete `URL` when the call site bakes it. Read that
67
+ // per call: it depends on parse results, so it is not settled while the plugin
68
+ // is being applied.
69
+ /**
70
+ * @param {boolean} analyzable whether the call site bakes a complete URL
71
+ * @returns {string} the argument to hand the reader
72
+ */
73
+ const wasmUrlArg = (analyzable) =>
74
+ analyzable
75
+ ? "wasmUrl"
76
+ : compilation.runtimeTemplate.importMetaUrl("wasmUrl");
64
77
  /**
65
78
  * Generates the runtime expression that fetches the binary in browsers
66
79
  * or reads it from the filesystem in Node.js.
67
- * @type {(path: string) => string}
80
+ * @type {(path: string, runtime: RuntimeSpec, analyzable: boolean) => string}
68
81
  */
69
- const generateLoadBinaryCode = () =>
82
+ const generateLoadBinaryCode = (path, runtime, analyzable) =>
70
83
  Template.asString([
71
84
  "(useFetch",
72
- Template.indent([
73
- `? fetch(new URL(wasmUrl, ${compilation.outputOptions.importMetaName}.url))`
74
- ]),
85
+ Template.indent([`? fetch(${wasmUrlArg(analyzable)})`]),
75
86
  Template.indent([
76
87
  ": Promise.all([import('fs'), import('url')]).then(([{ readFile }, { URL }]) => new Promise((resolve, reject) => {",
77
88
  Template.indent([
78
- `readFile(new URL(wasmUrl, ${compilation.outputOptions.importMetaName}.url), (err, buffer) => {`,
89
+ `readFile(${wasmUrlArg(analyzable)}, (err, buffer) => {`,
79
90
  Template.indent([
80
91
  "if (err) return reject(err);",
81
92
  "",
@@ -105,6 +116,11 @@ class UniversalCompileAsyncWasmPlugin {
105
116
  compilation.addRuntimeModule(
106
117
  chunk,
107
118
  new AsyncWasmLoadingRuntimeModule({
119
+ fullHashDigest: usesFullHashDigest(
120
+ /** @type {string} */ (
121
+ compilation.outputOptions.webassemblyModuleFilename
122
+ )
123
+ ),
108
124
  generateBeforeLoadBinaryCode,
109
125
  generateLoadBinaryCode,
110
126
  generateBeforeInstantiateStreaming: generateBeforeStreaming,
@@ -128,6 +144,11 @@ class UniversalCompileAsyncWasmPlugin {
128
144
  compilation.addRuntimeModule(
129
145
  chunk,
130
146
  new AsyncWasmCompileRuntimeModule({
147
+ fullHashDigest: usesFullHashDigest(
148
+ /** @type {string} */ (
149
+ compilation.outputOptions.webassemblyModuleFilename
150
+ )
151
+ ),
131
152
  generateBeforeLoadBinaryCode,
132
153
  generateLoadBinaryCode,
133
154
  generateBeforeCompileStreaming: generateBeforeStreaming,
@@ -7,8 +7,8 @@
7
7
  const NormalModule = require("../NormalModule");
8
8
  const makeSerializable = require("../util/makeSerializable");
9
9
 
10
- /** @typedef {import("../Module").BuildMeta} BuildMeta */
11
- /** @typedef {import("../NormalModule").NormalModuleCreateData} NormalModuleCreateData */
10
+ /** @import { BuildMeta } from "../Module" */
11
+ /** @import { NormalModuleCreateData } from "../NormalModule" */
12
12
 
13
13
  /**
14
14
  * Defines the build meta properties specific to sync wasm modules.
@@ -8,17 +8,16 @@ const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const RuntimeModule = require("../RuntimeModule");
9
9
  const Template = require("../Template");
10
10
  const { compareModulesByIdentifier } = require("../util/comparators");
11
+ const { fullHashPathData } = require("../wasm/wasmModuleFilename");
11
12
  const WebAssemblyUtils = require("./WebAssemblyUtils");
12
13
 
13
- /** @typedef {import("@webassemblyjs/ast").Signature} Signature */
14
- /** @typedef {import("../Chunk")} Chunk */
15
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
16
- /** @typedef {import("../ChunkGraph").ModuleId} ModuleId */
17
- /** @typedef {import("../Compilation")} Compilation */
18
- /** @typedef {import("../Module")} Module */
19
- /** @typedef {import("../Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
20
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
21
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
14
+ /** @import { Signature } from "@webassemblyjs/ast" */
15
+ /** @import Chunk from "../Chunk" */
16
+ /** @import ChunkGraph, { ModuleId } from "../ChunkGraph" */
17
+ /** @import Compilation from "../Compilation" */
18
+ /** @import Module, { ReadOnlyRuntimeRequirements } from "../Module" */
19
+ /** @import ModuleGraph from "../ModuleGraph" */
20
+ /** @import { RuntimeSpec } from "../util/runtime" */
22
21
 
23
22
  // TODO webpack 6 remove the whole folder
24
23
 
@@ -225,6 +224,7 @@ const generateImportObject = (
225
224
  * @property {boolean=} supportsStreaming
226
225
  * @property {boolean=} mangleImports
227
226
  * @property {ReadOnlyRuntimeRequirements} runtimeRequirements
227
+ * @property {boolean=} fullHashDigest the binary's name inlines a re-encoded compilation hash
228
228
  */
229
229
 
230
230
  class WasmChunkLoadingRuntimeModule extends RuntimeModule {
@@ -235,9 +235,16 @@ class WasmChunkLoadingRuntimeModule extends RuntimeModule {
235
235
  generateLoadBinaryCode,
236
236
  supportsStreaming,
237
237
  mangleImports,
238
- runtimeRequirements
238
+ runtimeRequirements,
239
+ fullHashDigest
239
240
  }) {
240
241
  super("wasm chunk loading", RuntimeModule.STAGE_ATTACH);
242
+ // A re-encoded digest is inlined from the settled hash, so this has to render
243
+ // again once there is one.
244
+ if (fullHashDigest) {
245
+ /** @type {boolean} */
246
+ this.fullHash = true;
247
+ }
241
248
  this.generateLoadBinaryCode = generateLoadBinaryCode;
242
249
  /** @type {boolean | undefined} */
243
250
  this.supportsStreaming = supportsStreaming;
@@ -291,9 +298,7 @@ class WasmChunkLoadingRuntimeModule extends RuntimeModule {
291
298
  const wasmModuleSrcPath = compilation.getPath(
292
299
  JSON.stringify(outputOptions.webassemblyModuleFilename),
293
300
  {
294
- hash: `" + ${RuntimeGlobals.getFullHash}() + "`,
295
- hashWithLength: (length) =>
296
- `" + ${RuntimeGlobals.getFullHash}().slice(0, ${length}) + "`,
301
+ ...fullHashPathData(compilation),
297
302
  module: {
298
303
  id: '" + wasmModuleId + "',
299
304
  hash: `" + ${JSON.stringify(
@@ -8,11 +8,10 @@
8
8
  const formatLocation = require("../util/formatLocation");
9
9
  const UnsupportedWebAssemblyFeatureError = require("./UnsupportedWebAssemblyFeatureError");
10
10
 
11
- /** @typedef {import("../Compiler")} Compiler */
12
- /** @typedef {import("../Dependency")} Dependency */
13
- /** @typedef {import("../Module")} Module */
14
- /** @typedef {import("../Module").BuildMeta} BuildMeta */
15
- /** @typedef {import("./SyncWasmModule").SyncWasmModuleBuildMeta} SyncWasmModuleBuildMeta */
11
+ /** @import Compiler from "../Compiler" */
12
+ /** @import Dependency from "../Dependency" */
13
+ /** @import Module from "../Module" */
14
+ /** @import { SyncWasmModuleBuildMeta } from "./SyncWasmModule" */
16
15
 
17
16
  const PLUGIN_NAME = "WasmFinalizeExportsPlugin";
18
17
 
@@ -15,23 +15,24 @@ const { WEBASSEMBLY_TYPES } = require("../ModuleSourceTypeConstants");
15
15
  const WebAssemblyExportImportedDependency = require("../dependencies/WebAssemblyExportImportedDependency");
16
16
  const WebAssemblyUtils = require("./WebAssemblyUtils");
17
17
 
18
- /** @typedef {import("webpack-sources").Source} Source */
19
- /** @typedef {import("../Generator").GenerateContext} GenerateContext */
20
- /** @typedef {import("../Generator").UpdateHashContext} UpdateHashContext */
21
- /** @typedef {import("../Module")} Module */
22
- /** @typedef {import("../Module").SourceType} SourceType */
23
- /** @typedef {import("../Module").SourceTypes} SourceTypes */
24
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
25
- /** @typedef {import("../NormalModule")} NormalModule */
26
- /** @typedef {import("../util/Hash")} Hash */
27
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
28
- /** @typedef {import("./WebAssemblyUtils").UsedWasmDependency} UsedWasmDependency */
29
- /** @typedef {import("@webassemblyjs/ast").Instruction} Instruction */
30
- /** @typedef {import("@webassemblyjs/ast").ModuleImport} ModuleImport */
31
- /** @typedef {import("@webassemblyjs/ast").ModuleExport} ModuleExport */
32
- /** @typedef {import("@webassemblyjs/ast").Global} Global */
33
- /** @typedef {import("@webassemblyjs/ast").AST} AST */
34
- /** @typedef {import("@webassemblyjs/ast").GlobalType} GlobalType */
18
+ /** @import { Source } from "webpack-sources" */
19
+ /** @import { GenerateContext, UpdateHashContext } from "../Generator" */
20
+ /** @import Module, { SourceType, SourceTypes } from "../Module" */
21
+ /** @import ModuleGraph from "../ModuleGraph" */
22
+ /** @import NormalModule from "../NormalModule" */
23
+ /** @import Hash from "../util/Hash" */
24
+ /** @import { RuntimeSpec } from "../util/runtime" */
25
+ /** @import { UsedWasmDependency } from "./WebAssemblyUtils" */
26
+ /**
27
+ * @import {
28
+ * Instruction,
29
+ * ModuleImport,
30
+ * ModuleExport,
31
+ * Global,
32
+ * AST,
33
+ * GlobalType
34
+ * } from "@webassemblyjs/ast"
35
+ */
35
36
  /**
36
37
  * Defines the node path type used by this module.
37
38
  * @template T
@@ -6,10 +6,10 @@
6
6
 
7
7
  const WebpackError = require("../errors/WebpackError");
8
8
 
9
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
10
- /** @typedef {import("../Module")} Module */
11
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
12
- /** @typedef {import("../RequestShortener")} RequestShortener */
9
+ /** @import ChunkGraph from "../ChunkGraph" */
10
+ /** @import Module from "../Module" */
11
+ /** @import ModuleGraph from "../ModuleGraph" */
12
+ /** @import RequestShortener from "../RequestShortener" */
13
13
 
14
14
  /**
15
15
  * Gets initial module chains.
@@ -16,12 +16,10 @@ const ModuleDependency = require("../dependencies/ModuleDependency");
16
16
  const WebAssemblyExportImportedDependency = require("../dependencies/WebAssemblyExportImportedDependency");
17
17
  const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
18
18
 
19
- /** @typedef {import("webpack-sources").Source} Source */
20
- /** @typedef {import("../Generator").GenerateContext} GenerateContext */
21
- /** @typedef {import("../Module")} Module */
22
- /** @typedef {import("../Module").SourceType} SourceType */
23
- /** @typedef {import("../Module").SourceTypes} SourceTypes */
24
- /** @typedef {import("../NormalModule")} NormalModule */
19
+ /** @import { Source } from "webpack-sources" */
20
+ /** @import { GenerateContext } from "../Generator" */
21
+ /** @import Module, { SourceType, SourceTypes } from "../Module" */
22
+ /** @import NormalModule from "../NormalModule" */
25
23
 
26
24
  class WebAssemblyJavascriptGenerator extends Generator {
27
25
  /**
@@ -233,7 +231,9 @@ class WebAssemblyJavascriptGenerator extends Generator {
233
231
  * @returns {Source | null} generated code
234
232
  */
235
233
  generateError(error, module, generateContext) {
236
- return new RawSource(`throw new Error(${JSON.stringify(error.message)});`);
234
+ return new RawSource(
235
+ Generator.throwBuildErrorCode(error, "WebAssembly.CompileError")
236
+ );
237
237
  }
238
238
  }
239
239
 
@@ -14,20 +14,21 @@ const { WEBASSEMBLY_MODULE_TYPE_SYNC } = require("../ModuleTypeConstants");
14
14
  const WebAssemblyExportImportedDependency = require("../dependencies/WebAssemblyExportImportedDependency");
15
15
  const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
16
16
  const { compareModulesByFullName } = require("../util/comparators");
17
- const memoize = require("../util/memoize");
17
+ const lazyModule = require("../util/lazyModule");
18
+ const preloadModuleType = require("../util/preloadModuleType");
18
19
  const WebAssemblyInInitialChunkError = require("./WebAssemblyInInitialChunkError");
19
20
 
20
- /** @typedef {import("../Compiler")} Compiler */
21
- /** @typedef {import("../Module")} Module */
21
+ /** @import Compiler from "../Compiler" */
22
+ /** @import Module from "../Module" */
22
23
 
23
- const getWebAssemblyGenerator = memoize(() =>
24
+ const getWebAssemblyGenerator = lazyModule(() =>
24
25
  require("./WebAssemblyGenerator")
25
26
  );
26
- const getWebAssemblyJavascriptGenerator = memoize(() =>
27
+ const getWebAssemblyJavascriptGenerator = lazyModule(() =>
27
28
  require("./WebAssemblyJavascriptGenerator")
28
29
  );
29
- const getWebAssemblyParser = memoize(() => require("./WebAssemblyParser"));
30
- const getSyncWasmModule = memoize(() => require("./SyncWasmModule"));
30
+ const getWebAssemblyParser = lazyModule(() => require("./WebAssemblyParser"));
31
+ const getSyncWasmModule = lazyModule(() => require("./SyncWasmModule"));
31
32
 
32
33
  const PLUGIN_NAME = "WebAssemblyModulesPlugin";
33
34
 
@@ -73,10 +74,22 @@ class WebAssemblyModulesPlugin {
73
74
  normalModuleFactory
74
75
  );
75
76
 
77
+ preloadModuleType(normalModuleFactory, PLUGIN_NAME, [
78
+ [
79
+ WEBASSEMBLY_MODULE_TYPE_SYNC,
80
+ [
81
+ getSyncWasmModule,
82
+ getWebAssemblyParser,
83
+ getWebAssemblyJavascriptGenerator,
84
+ getWebAssemblyGenerator
85
+ ]
86
+ ]
87
+ ]);
88
+
76
89
  normalModuleFactory.hooks.createModuleClass
77
90
  .for(WEBASSEMBLY_MODULE_TYPE_SYNC)
78
91
  .tap(PLUGIN_NAME, (createData, _resolveData) => {
79
- const SyncWasmModule = getSyncWasmModule();
92
+ const SyncWasmModule = getSyncWasmModule.loaded();
80
93
 
81
94
  return new SyncWasmModule(createData);
82
95
  });
@@ -84,7 +97,7 @@ class WebAssemblyModulesPlugin {
84
97
  normalModuleFactory.hooks.createParser
85
98
  .for(WEBASSEMBLY_MODULE_TYPE_SYNC)
86
99
  .tap(PLUGIN_NAME, () => {
87
- const WebAssemblyParser = getWebAssemblyParser();
100
+ const WebAssemblyParser = getWebAssemblyParser.loaded();
88
101
 
89
102
  return new WebAssemblyParser();
90
103
  });
@@ -93,8 +106,8 @@ class WebAssemblyModulesPlugin {
93
106
  .for(WEBASSEMBLY_MODULE_TYPE_SYNC)
94
107
  .tap(PLUGIN_NAME, () => {
95
108
  const WebAssemblyJavascriptGenerator =
96
- getWebAssemblyJavascriptGenerator();
97
- const WebAssemblyGenerator = getWebAssemblyGenerator();
109
+ getWebAssemblyJavascriptGenerator.loaded();
110
+ const WebAssemblyGenerator = getWebAssemblyGenerator.loaded();
98
111
 
99
112
  return Generator.byType({
100
113
  [JAVASCRIPT_TYPE]: new WebAssemblyJavascriptGenerator(),
@@ -13,12 +13,10 @@ const StaticExportsDependency = require("../dependencies/StaticExportsDependency
13
13
  const WebAssemblyExportImportedDependency = require("../dependencies/WebAssemblyExportImportedDependency");
14
14
  const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
15
15
 
16
- /** @typedef {import("@webassemblyjs/ast").ModuleImport} ModuleImport */
17
- /** @typedef {import("../Module").BuildInfo} BuildInfo */
18
- /** @typedef {import("../Module").BuildMeta} BuildMeta */
19
- /** @typedef {import("./SyncWasmModule").SyncWasmModuleBuildMeta} SyncWasmModuleBuildMeta */
20
- /** @typedef {import("../Parser").ParserState} ParserState */
21
- /** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
16
+ /** @import { ModuleImport } from "@webassemblyjs/ast" */
17
+ /** @import { BuildInfo, BuildMeta } from "../Module" */
18
+ /** @import { SyncWasmModuleBuildMeta } from "./SyncWasmModule" */
19
+ /** @import { ParserState, PreparsedAst } from "../Parser" */
22
20
 
23
21
  const JS_COMPAT_TYPES = new Set(["i32", "i64", "f32", "f64", "externref"]);
24
22
 
@@ -8,8 +8,8 @@
8
8
  const Template = require("../Template");
9
9
  const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
10
10
 
11
- /** @typedef {import("../Module")} Module */
12
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
11
+ /** @import Module from "../Module" */
12
+ /** @import ModuleGraph from "../ModuleGraph" */
13
13
 
14
14
  /**
15
15
  * Defines the used wasm dependency type used by this module.