webpack 5.106.1 → 5.107.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 (600) hide show
  1. package/README.md +2 -2
  2. package/lib/APIPlugin.js +4 -2
  3. package/lib/AsyncDependenciesBlock.js +3 -0
  4. package/lib/AutomaticPrefetchPlugin.js +6 -1
  5. package/lib/BannerPlugin.js +10 -1
  6. package/lib/Cache.js +27 -5
  7. package/lib/CacheFacade.js +26 -0
  8. package/lib/Chunk.js +46 -0
  9. package/lib/ChunkGraph.js +111 -0
  10. package/lib/ChunkGroup.js +57 -13
  11. package/lib/ChunkTemplate.js +9 -0
  12. package/lib/CleanPlugin.js +14 -1
  13. package/lib/CodeGenerationResults.js +19 -0
  14. package/lib/CompatibilityPlugin.js +23 -8
  15. package/lib/Compilation.js +161 -27
  16. package/lib/Compiler.js +41 -17
  17. package/lib/ConcatenationScope.js +24 -1
  18. package/lib/ConditionalInitFragment.js +6 -0
  19. package/lib/ConstPlugin.js +4 -1
  20. package/lib/ContextExclusionPlugin.js +2 -1
  21. package/lib/ContextModule.js +14 -2
  22. package/lib/ContextModuleFactory.js +10 -0
  23. package/lib/ContextReplacementPlugin.js +4 -1
  24. package/lib/DefinePlugin.js +22 -9
  25. package/lib/DependenciesBlock.js +6 -1
  26. package/lib/Dependency.js +48 -4
  27. package/lib/DependencyTemplate.js +7 -1
  28. package/lib/DependencyTemplates.js +4 -0
  29. package/lib/DotenvPlugin.js +3 -0
  30. package/lib/DynamicEntryPlugin.js +3 -1
  31. package/lib/EntryOptionPlugin.js +3 -0
  32. package/lib/EntryPlugin.js +2 -1
  33. package/lib/Entrypoint.js +4 -0
  34. package/lib/EnvironmentPlugin.js +3 -2
  35. package/lib/ErrorHelpers.js +7 -0
  36. package/lib/EvalDevToolModulePlugin.js +3 -1
  37. package/lib/EvalSourceMapDevToolPlugin.js +11 -10
  38. package/lib/ExportsInfo.js +56 -2
  39. package/lib/ExportsInfoApiPlugin.js +2 -1
  40. package/lib/ExternalModule.js +114 -15
  41. package/lib/ExternalModuleFactoryPlugin.js +15 -0
  42. package/lib/ExternalsPlugin.js +2 -1
  43. package/lib/FileSystemInfo.js +291 -71
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -1
  45. package/lib/FlagDependencyExportsPlugin.js +4 -1
  46. package/lib/FlagDependencyUsagePlugin.js +5 -1
  47. package/lib/FlagEntryExportAsUsedPlugin.js +2 -1
  48. package/lib/Generator.js +16 -3
  49. package/lib/HotModuleReplacementPlugin.js +35 -9
  50. package/lib/IgnorePlugin.js +4 -2
  51. package/lib/IgnoreWarningsPlugin.js +2 -1
  52. package/lib/InitFragment.js +10 -0
  53. package/lib/JavascriptMetaInfoPlugin.js +2 -1
  54. package/lib/LibraryTemplatePlugin.js +2 -1
  55. package/lib/LoaderOptionsPlugin.js +3 -1
  56. package/lib/LoaderTargetPlugin.js +2 -1
  57. package/lib/MainTemplate.js +15 -0
  58. package/lib/ManifestPlugin.js +9 -2
  59. package/lib/Module.js +101 -19
  60. package/lib/ModuleFactory.js +6 -1
  61. package/lib/ModuleFilenameHelpers.js +3 -0
  62. package/lib/ModuleGraph.js +66 -0
  63. package/lib/ModuleGraphConnection.js +9 -0
  64. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  65. package/lib/ModuleSourceTypeConstants.js +32 -1
  66. package/lib/ModuleTemplate.js +8 -0
  67. package/lib/ModuleTypeConstants.js +12 -3
  68. package/lib/MultiCompiler.js +30 -2
  69. package/lib/MultiStats.js +8 -0
  70. package/lib/MultiWatching.js +3 -0
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +11 -2
  73. package/lib/NormalModule.js +43 -33
  74. package/lib/NormalModuleFactory.js +35 -2
  75. package/lib/NormalModuleReplacementPlugin.js +1 -1
  76. package/lib/NullFactory.js +1 -0
  77. package/lib/OptionsApply.js +1 -0
  78. package/lib/Parser.js +3 -1
  79. package/lib/PlatformPlugin.js +2 -1
  80. package/lib/PrefetchPlugin.js +2 -1
  81. package/lib/ProgressPlugin.js +158 -68
  82. package/lib/ProvidePlugin.js +3 -1
  83. package/lib/RawModule.js +12 -0
  84. package/lib/RecordIdsPlugin.js +8 -0
  85. package/lib/RequestShortener.js +8 -0
  86. package/lib/ResolverFactory.js +5 -0
  87. package/lib/RuntimeGlobals.js +6 -5
  88. package/lib/RuntimeModule.js +22 -7
  89. package/lib/RuntimePlugin.js +13 -0
  90. package/lib/RuntimeTemplate.js +35 -1
  91. package/lib/SelfModuleFactory.js +2 -0
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  93. package/lib/SourceMapDevToolPlugin.js +3 -1
  94. package/lib/Stats.js +5 -0
  95. package/lib/Template.js +20 -0
  96. package/lib/TemplatedPathPlugin.js +10 -3
  97. package/lib/UseStrictPlugin.js +2 -1
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +71 -3
  99. package/lib/WarnDeprecatedOptionPlugin.js +2 -2
  100. package/lib/WarnNoModeSetPlugin.js +17 -2
  101. package/lib/WatchIgnorePlugin.js +4 -1
  102. package/lib/Watching.js +16 -3
  103. package/lib/WebpackError.js +3 -74
  104. package/lib/WebpackIsIncludedPlugin.js +3 -1
  105. package/lib/WebpackOptionsApply.js +14 -1
  106. package/lib/WebpackOptionsDefaulter.js +1 -0
  107. package/lib/asset/AssetBytesGenerator.js +12 -2
  108. package/lib/asset/AssetBytesParser.js +1 -0
  109. package/lib/asset/AssetGenerator.js +42 -10
  110. package/lib/asset/AssetModulesPlugin.js +7 -2
  111. package/lib/asset/AssetParser.js +2 -0
  112. package/lib/asset/AssetSourceGenerator.js +12 -2
  113. package/lib/asset/AssetSourceParser.js +1 -0
  114. package/lib/asset/RawDataUrlModule.js +11 -0
  115. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  116. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  117. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  118. package/lib/buildChunkGraph.js +19 -6
  119. package/lib/cache/AddBuildDependenciesPlugin.js +2 -1
  120. package/lib/cache/AddManagedPathsPlugin.js +2 -1
  121. package/lib/cache/IdleFileCachePlugin.js +2 -1
  122. package/lib/cache/MemoryCachePlugin.js +1 -1
  123. package/lib/cache/MemoryWithGcCachePlugin.js +3 -1
  124. package/lib/cache/PackFileCacheStrategy.js +33 -4
  125. package/lib/cache/ResolverCachePlugin.js +10 -1
  126. package/lib/cache/getLazyHashedEtag.js +4 -0
  127. package/lib/cache/mergeEtags.js +2 -0
  128. package/lib/cli.js +33 -1
  129. package/lib/config/browserslistTargetHandler.js +2 -0
  130. package/lib/config/defaults.js +232 -12
  131. package/lib/config/normalization.js +15 -1
  132. package/lib/config/target.js +11 -0
  133. package/lib/container/ContainerEntryDependency.js +2 -0
  134. package/lib/container/ContainerEntryModule.js +12 -0
  135. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  136. package/lib/container/ContainerExposedDependency.js +4 -0
  137. package/lib/container/ContainerPlugin.js +2 -1
  138. package/lib/container/ContainerReferencePlugin.js +2 -1
  139. package/lib/container/FallbackDependency.js +4 -0
  140. package/lib/container/FallbackItemDependency.js +1 -0
  141. package/lib/container/FallbackModule.js +12 -0
  142. package/lib/container/FallbackModuleFactory.js +1 -0
  143. package/lib/container/ModuleFederationPlugin.js +3 -1
  144. package/lib/container/RemoteModule.js +13 -0
  145. package/lib/container/RemoteRuntimeModule.js +1 -0
  146. package/lib/container/RemoteToExternalDependency.js +1 -0
  147. package/lib/container/options.js +7 -0
  148. package/lib/css/CssGenerator.js +336 -100
  149. package/lib/css/CssInjectStyleRuntimeModule.js +45 -42
  150. package/lib/css/CssLoadingRuntimeModule.js +23 -4
  151. package/lib/{CssModule.js → css/CssModule.js} +21 -15
  152. package/lib/css/CssModulesPlugin.js +235 -89
  153. package/lib/css/CssParser.js +616 -261
  154. package/lib/css/walkCssTokens.js +179 -2
  155. package/lib/debug/ProfilingPlugin.js +19 -1
  156. package/lib/dependencies/AMDDefineDependency.js +7 -0
  157. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -0
  158. package/lib/dependencies/AMDPlugin.js +4 -1
  159. package/lib/dependencies/AMDRequireArrayDependency.js +6 -0
  160. package/lib/dependencies/AMDRequireContextDependency.js +3 -0
  161. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  162. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +14 -1
  163. package/lib/dependencies/AMDRequireDependency.js +4 -0
  164. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  165. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  166. package/lib/dependencies/CachedConstDependency.js +6 -1
  167. package/lib/dependencies/CommonJsDependencyHelpers.js +64 -0
  168. package/lib/dependencies/CommonJsExportRequireDependency.js +62 -10
  169. package/lib/dependencies/CommonJsExportsDependency.js +4 -0
  170. package/lib/dependencies/CommonJsExportsParserPlugin.js +9 -1
  171. package/lib/dependencies/CommonJsFullRequireDependency.js +36 -9
  172. package/lib/dependencies/CommonJsImportsParserPlugin.js +24 -3
  173. package/lib/dependencies/CommonJsPlugin.js +4 -1
  174. package/lib/dependencies/CommonJsRequireContextDependency.js +3 -0
  175. package/lib/dependencies/CommonJsRequireDependency.js +70 -4
  176. package/lib/dependencies/CommonJsSelfReferenceDependency.js +5 -0
  177. package/lib/dependencies/ConstDependency.js +6 -1
  178. package/lib/dependencies/ContextDependency.js +9 -2
  179. package/lib/dependencies/ContextDependencyHelpers.js +4 -1
  180. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
  181. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  182. package/lib/dependencies/ContextElementDependency.js +4 -0
  183. package/lib/dependencies/CreateRequireParserPlugin.js +7 -1
  184. package/lib/dependencies/CreateScriptUrlDependency.js +4 -0
  185. package/lib/dependencies/CriticalDependencyWarning.js +2 -1
  186. package/lib/dependencies/CssIcssExportDependency.js +339 -66
  187. package/lib/dependencies/CssIcssImportDependency.js +53 -8
  188. package/lib/dependencies/CssIcssSymbolDependency.js +16 -4
  189. package/lib/dependencies/CssImportDependency.js +12 -0
  190. package/lib/dependencies/CssUrlDependency.js +32 -0
  191. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  192. package/lib/dependencies/DllEntryDependency.js +3 -0
  193. package/lib/dependencies/DynamicExports.js +5 -0
  194. package/lib/dependencies/EntryDependency.js +1 -0
  195. package/lib/dependencies/ExportsInfoDependency.js +6 -0
  196. package/lib/dependencies/ExternalModuleDependency.js +5 -0
  197. package/lib/dependencies/ExternalModuleInitFragment.js +3 -0
  198. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +4 -0
  199. package/lib/dependencies/HarmonyAcceptDependency.js +6 -0
  200. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
  201. package/lib/dependencies/HarmonyCompatibilityDependency.js +1 -0
  202. package/lib/dependencies/HarmonyDetectionParserPlugin.js +4 -1
  203. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -0
  204. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +10 -7
  205. package/lib/dependencies/HarmonyExportExpressionDependency.js +27 -14
  206. package/lib/dependencies/HarmonyExportHeaderDependency.js +4 -0
  207. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -5
  208. package/lib/dependencies/HarmonyExportInitFragment.js +6 -0
  209. package/lib/dependencies/HarmonyExportSpecifierDependency.js +5 -0
  210. package/lib/dependencies/HarmonyExports.js +2 -0
  211. package/lib/dependencies/HarmonyImportDependency.js +21 -2
  212. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -1
  213. package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -0
  214. package/lib/dependencies/HarmonyImportSpecifierDependency.js +18 -3
  215. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +5 -3
  216. package/lib/dependencies/HarmonyModulesPlugin.js +4 -1
  217. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -0
  218. package/lib/dependencies/HtmlInlineScriptDependency.js +133 -0
  219. package/lib/dependencies/HtmlInlineStyleDependency.js +101 -0
  220. package/lib/dependencies/HtmlScriptSrcDependency.js +318 -0
  221. package/lib/dependencies/HtmlSourceDependency.js +127 -0
  222. package/lib/dependencies/ImportContextDependency.js +4 -0
  223. package/lib/dependencies/ImportDependency.js +5 -0
  224. package/lib/dependencies/ImportEagerDependency.js +2 -0
  225. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  226. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +4 -1
  227. package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
  228. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
  229. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
  230. package/lib/dependencies/ImportMetaPlugin.js +6 -0
  231. package/lib/dependencies/ImportParserPlugin.js +9 -2
  232. package/lib/dependencies/ImportPhase.js +7 -3
  233. package/lib/dependencies/ImportPlugin.js +2 -1
  234. package/lib/dependencies/ImportWeakDependency.js +2 -0
  235. package/lib/dependencies/JsonExportsDependency.js +6 -1
  236. package/lib/dependencies/LoaderDependency.js +2 -0
  237. package/lib/dependencies/LoaderImportDependency.js +2 -0
  238. package/lib/dependencies/LoaderPlugin.js +4 -1
  239. package/lib/dependencies/LocalModule.js +4 -0
  240. package/lib/dependencies/LocalModuleDependency.js +4 -0
  241. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  242. package/lib/dependencies/ModuleDecoratorDependency.js +7 -1
  243. package/lib/dependencies/ModuleDependency.js +7 -0
  244. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  245. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  246. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
  247. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
  248. package/lib/dependencies/ModuleInitFragmentDependency.js +4 -0
  249. package/lib/dependencies/NullDependency.js +2 -0
  250. package/lib/dependencies/PrefetchDependency.js +1 -0
  251. package/lib/dependencies/ProvidedDependency.js +6 -1
  252. package/lib/dependencies/PureExpressionDependency.js +7 -1
  253. package/lib/dependencies/RequireContextDependency.js +1 -0
  254. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -0
  255. package/lib/dependencies/RequireContextPlugin.js +2 -1
  256. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  257. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -0
  258. package/lib/dependencies/RequireEnsureDependency.js +4 -0
  259. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  260. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  261. package/lib/dependencies/RequireHeaderDependency.js +4 -0
  262. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  263. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +4 -1
  264. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  265. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  266. package/lib/dependencies/RequireResolveContextDependency.js +3 -0
  267. package/lib/dependencies/RequireResolveDependency.js +1 -0
  268. package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
  269. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -1
  270. package/lib/dependencies/StaticExportsDependency.js +3 -0
  271. package/lib/dependencies/SystemPlugin.js +5 -2
  272. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  273. package/lib/dependencies/URLContextDependency.js +3 -0
  274. package/lib/dependencies/URLDependency.js +6 -0
  275. package/lib/dependencies/URLPlugin.js +2 -0
  276. package/lib/dependencies/UnsupportedDependency.js +4 -0
  277. package/lib/dependencies/WebAssemblyExportImportedDependency.js +4 -0
  278. package/lib/dependencies/WebAssemblyImportDependency.js +5 -2
  279. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -0
  280. package/lib/dependencies/WorkerDependency.js +6 -1
  281. package/lib/dependencies/WorkerPlugin.js +11 -3
  282. package/lib/dependencies/getFunctionExpression.js +1 -0
  283. package/lib/dependencies/processExportInfo.js +1 -0
  284. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +44 -31
  285. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +7 -4
  286. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +4 -3
  287. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +6 -5
  288. package/lib/{DllModule.js → dll/DllModule.js} +35 -24
  289. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  290. package/lib/{DllPlugin.js → dll/DllPlugin.js} +8 -6
  291. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +23 -18
  292. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +13 -10
  293. package/lib/electron/ElectronTargetPlugin.js +2 -1
  294. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  295. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  296. package/lib/errors/BuildCycleError.js +1 -1
  297. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  298. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  299. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  300. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +4 -2
  301. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +4 -4
  302. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +11 -5
  303. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +6 -4
  304. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +4 -3
  305. package/lib/errors/JSONParseError.js +114 -0
  306. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +8 -5
  307. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +2 -2
  308. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +5 -4
  309. package/lib/{ModuleError.js → errors/ModuleError.js} +7 -5
  310. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +1 -1
  311. package/lib/{ModuleNotFoundError.js → errors/ModuleNotFoundError.js} +3 -2
  312. package/lib/{ModuleParseError.js → errors/ModuleParseError.js} +11 -6
  313. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +2 -1
  314. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +2 -1
  315. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +8 -5
  316. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +5 -4
  317. package/lib/errors/NonErrorEmittedError.js +28 -0
  318. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +8 -2
  319. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  320. package/lib/errors/WebpackError.js +84 -0
  321. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  322. package/lib/esm/ModuleChunkFormatPlugin.js +5 -1
  323. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -1
  324. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -0
  325. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  326. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  327. package/lib/hmr/LazyCompilationPlugin.js +20 -1
  328. package/lib/hmr/lazyCompilationBackend.js +2 -0
  329. package/lib/html/HtmlGenerator.js +379 -0
  330. package/lib/html/HtmlModulesPlugin.js +433 -0
  331. package/lib/html/HtmlParser.js +1489 -0
  332. package/lib/html/walkHtmlTokens.js +2733 -0
  333. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  334. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  335. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  336. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  337. package/lib/ids/IdHelpers.js +22 -1
  338. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  339. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  340. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  341. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  342. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  343. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  344. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  345. package/lib/index.js +39 -15
  346. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +1 -1
  347. package/lib/javascript/BasicEvaluatedExpression.js +4 -2
  348. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  349. package/lib/javascript/ChunkHelpers.js +1 -0
  350. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  351. package/lib/javascript/EnableChunkLoadingPlugin.js +5 -1
  352. package/lib/javascript/JavascriptGenerator.js +10 -0
  353. package/lib/javascript/JavascriptModulesPlugin.js +112 -9
  354. package/lib/javascript/JavascriptParser.js +360 -16
  355. package/lib/javascript/JavascriptParserHelpers.js +7 -1
  356. package/lib/javascript/StartupHelpers.js +5 -0
  357. package/lib/json/JsonData.js +5 -0
  358. package/lib/json/JsonGenerator.js +21 -0
  359. package/lib/json/JsonModulesPlugin.js +1 -1
  360. package/lib/json/JsonParser.js +14 -25
  361. package/lib/library/AbstractLibraryPlugin.js +17 -2
  362. package/lib/library/AmdLibraryPlugin.js +8 -0
  363. package/lib/library/AssignLibraryPlugin.js +16 -0
  364. package/lib/library/EnableLibraryPlugin.js +8 -2
  365. package/lib/library/ExportPropertyLibraryPlugin.js +9 -0
  366. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +1 -1
  367. package/lib/library/JsonpLibraryPlugin.js +8 -0
  368. package/lib/library/ModuleLibraryPlugin.js +86 -1
  369. package/lib/library/SystemLibraryPlugin.js +8 -0
  370. package/lib/library/UmdLibraryPlugin.js +16 -0
  371. package/lib/logging/Logger.js +17 -0
  372. package/lib/logging/createConsoleLogger.js +7 -0
  373. package/lib/logging/runtime.js +2 -0
  374. package/lib/logging/truncateArgs.js +2 -0
  375. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  376. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  377. package/lib/node/NodeSourcePlugin.js +1 -1
  378. package/lib/node/NodeTargetPlugin.js +2 -1
  379. package/lib/node/NodeTemplatePlugin.js +3 -1
  380. package/lib/node/NodeWatchFileSystem.js +2 -0
  381. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +3 -0
  382. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +4 -1
  383. package/lib/node/ReadFileCompileWasmPlugin.js +4 -1
  384. package/lib/node/RequireChunkLoadingRuntimeModule.js +3 -0
  385. package/lib/node/nodeConsole.js +116 -64
  386. package/lib/optimize/AggressiveMergingPlugin.js +3 -1
  387. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  388. package/lib/optimize/ConcatenatedModule.js +62 -6
  389. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  390. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -1
  391. package/lib/optimize/InnerGraph.js +16 -1
  392. package/lib/optimize/InnerGraphPlugin.js +14 -2
  393. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  394. package/lib/optimize/MangleExportsPlugin.js +5 -1
  395. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  396. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  397. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  398. package/lib/optimize/ModuleConcatenationPlugin.js +36 -8
  399. package/lib/optimize/RealContentHashPlugin.js +104 -26
  400. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  401. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  402. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  403. package/lib/optimize/SideEffectsFlagPlugin.js +118 -4
  404. package/lib/optimize/SplitChunksPlugin.js +50 -2
  405. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  406. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  407. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  408. package/lib/performance/SizeLimitsPlugin.js +8 -2
  409. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  410. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +6 -0
  411. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  412. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  413. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -0
  414. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  415. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  416. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  417. package/lib/rules/RuleSetCompiler.js +18 -0
  418. package/lib/rules/UseEffectRulePlugin.js +10 -3
  419. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -0
  420. package/lib/runtime/AutoPublicPathRuntimeModule.js +1 -0
  421. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  422. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  423. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -0
  424. package/lib/runtime/CompatRuntimeModule.js +2 -0
  425. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -0
  426. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  427. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  428. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -0
  429. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  430. package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -0
  431. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  432. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  433. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -0
  434. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  435. package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -0
  436. package/lib/runtime/HelperRuntimeModule.js +5 -0
  437. package/lib/runtime/LoadScriptRuntimeModule.js +1 -0
  438. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +121 -13
  439. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -0
  440. package/lib/runtime/NonceRuntimeModule.js +1 -0
  441. package/lib/runtime/OnChunksLoadedRuntimeModule.js +1 -0
  442. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  443. package/lib/runtime/RelativeUrlRuntimeModule.js +1 -0
  444. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  445. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +35 -0
  446. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  447. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -0
  448. package/lib/runtime/StartupEntrypointRuntimeModule.js +1 -0
  449. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  450. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  451. package/lib/schemes/DataUriPlugin.js +14 -2
  452. package/lib/schemes/FileUriPlugin.js +1 -1
  453. package/lib/schemes/HttpUriPlugin.js +43 -1
  454. package/lib/schemes/VirtualUrlPlugin.js +7 -2
  455. package/lib/serialization/AggregateErrorSerializer.js +2 -0
  456. package/lib/serialization/ArraySerializer.js +2 -0
  457. package/lib/serialization/BinaryMiddleware.js +20 -1
  458. package/lib/serialization/DateObjectSerializer.js +2 -0
  459. package/lib/serialization/ErrorObjectSerializer.js +3 -0
  460. package/lib/serialization/FileMiddleware.js +21 -0
  461. package/lib/serialization/MapObjectSerializer.js +2 -0
  462. package/lib/serialization/NullPrototypeObjectSerializer.js +2 -0
  463. package/lib/serialization/ObjectMiddleware.js +23 -0
  464. package/lib/serialization/PlainObjectSerializer.js +7 -0
  465. package/lib/serialization/RegExpObjectSerializer.js +2 -0
  466. package/lib/serialization/Serializer.js +5 -0
  467. package/lib/serialization/SerializerMiddleware.js +14 -2
  468. package/lib/serialization/SetObjectSerializer.js +2 -0
  469. package/lib/serialization/SingleItemMiddleware.js +3 -0
  470. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  471. package/lib/sharing/ConsumeSharedModule.js +15 -0
  472. package/lib/sharing/ConsumeSharedPlugin.js +8 -3
  473. package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -4
  474. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  475. package/lib/sharing/ProvideSharedDependency.js +4 -0
  476. package/lib/sharing/ProvideSharedModule.js +12 -1
  477. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  478. package/lib/sharing/ProvideSharedPlugin.js +5 -2
  479. package/lib/sharing/SharePlugin.js +2 -1
  480. package/lib/sharing/ShareRuntimeModule.js +1 -0
  481. package/lib/sharing/resolveMatchedConfigs.js +4 -1
  482. package/lib/sharing/utils.js +8 -0
  483. package/lib/stats/DefaultStatsFactoryPlugin.js +58 -3
  484. package/lib/stats/DefaultStatsPresetPlugin.js +12 -2
  485. package/lib/stats/DefaultStatsPrinterPlugin.js +38 -2
  486. package/lib/stats/StatsFactory.js +13 -1
  487. package/lib/stats/StatsPrinter.js +7 -0
  488. package/lib/typescript/TypeScriptPlugin.js +210 -0
  489. package/lib/url/URLParserPlugin.js +8 -2
  490. package/lib/util/AppendOnlyStackedSet.js +15 -0
  491. package/lib/util/ArrayHelpers.js +1 -0
  492. package/lib/util/ArrayQueue.js +10 -5
  493. package/lib/util/AsyncQueue.js +22 -2
  494. package/lib/util/Hash.js +2 -2
  495. package/lib/util/IterableHelpers.js +3 -0
  496. package/lib/util/LazyBucketSortedSet.js +21 -0
  497. package/lib/util/LazySet.js +39 -0
  498. package/lib/util/LocConverter.js +53 -0
  499. package/lib/util/ParallelismFactorCalculator.js +1 -0
  500. package/lib/util/Queue.js +6 -3
  501. package/lib/util/Semaphore.js +14 -1
  502. package/lib/util/SetHelpers.js +3 -0
  503. package/lib/util/SortableSet.js +7 -1
  504. package/lib/util/StackedCacheMap.js +20 -3
  505. package/lib/util/StackedMap.js +45 -0
  506. package/lib/util/StringXor.js +1 -1
  507. package/lib/util/TupleQueue.js +7 -3
  508. package/lib/util/TupleSet.js +13 -0
  509. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  510. package/lib/util/WeakTupleMap.js +33 -0
  511. package/lib/util/binarySearchBounds.js +1 -0
  512. package/lib/util/cleverMerge.js +19 -2
  513. package/lib/util/comparators.js +34 -3
  514. package/lib/util/compileBooleanMatcher.js +9 -0
  515. package/lib/util/concatenate.js +9 -3
  516. package/lib/util/conventions.js +46 -1
  517. package/lib/util/createMappings.js +118 -0
  518. package/lib/util/dataURL.js +1 -0
  519. package/lib/util/deprecation.js +19 -0
  520. package/lib/util/deterministicGrouping.js +20 -0
  521. package/lib/util/extractSourceMap.js +1 -0
  522. package/lib/util/extractUrlAndGlobal.js +1 -0
  523. package/lib/util/findGraphRoots.js +5 -0
  524. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  525. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +4 -1
  526. package/lib/util/fs.js +71 -8
  527. package/lib/util/generateDebugId.js +1 -0
  528. package/lib/util/hash/BatchedHash.js +1 -0
  529. package/lib/util/hash/BulkUpdateHash.js +1 -0
  530. package/lib/util/hash/hash-digest.js +8 -0
  531. package/lib/util/hash/md4.js +1 -1
  532. package/lib/util/hash/wasm-hash.js +5 -0
  533. package/lib/util/hash/xxhash64.js +1 -1
  534. package/lib/util/identifier.js +67 -0
  535. package/lib/util/internalSerializables.js +35 -19
  536. package/lib/util/magicComment.js +10 -6
  537. package/lib/util/makeSerializable.js +6 -0
  538. package/lib/util/memoize.js +2 -0
  539. package/lib/util/mimeTypes.js +176 -0
  540. package/lib/util/nonNumericOnlyHash.js +1 -0
  541. package/lib/util/parseJson.js +41 -0
  542. package/lib/util/processAsyncTree.js +8 -0
  543. package/lib/util/property.js +1 -0
  544. package/lib/util/registerExternalSerializer.js +20 -0
  545. package/lib/util/removeBOM.js +1 -0
  546. package/lib/util/runtime.js +32 -0
  547. package/lib/util/semver.js +15 -0
  548. package/lib/util/serialization.js +2 -0
  549. package/lib/util/smartGrouping.js +8 -0
  550. package/lib/util/source.js +23 -0
  551. package/lib/util/topologicalSort.js +69 -0
  552. package/lib/validateSchema.js +1 -0
  553. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  554. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +1 -0
  555. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +1 -0
  556. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  557. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -0
  558. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +12 -3
  559. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -1
  560. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +12 -1
  561. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +6 -3
  562. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +1 -0
  563. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -2
  564. package/lib/wasm-sync/WebAssemblyGenerator.js +26 -1
  565. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +7 -3
  566. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  567. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -1
  568. package/lib/wasm-sync/WebAssemblyParser.js +2 -0
  569. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  570. package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -1
  571. package/lib/web/FetchCompileWasmPlugin.js +13 -1
  572. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  573. package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -0
  574. package/lib/web/JsonpTemplatePlugin.js +2 -1
  575. package/lib/webpack.js +13 -1
  576. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  577. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -0
  578. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  579. package/package.json +31 -31
  580. package/schemas/WebpackOptions.check.js +1 -1
  581. package/schemas/WebpackOptions.json +161 -57
  582. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  583. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  584. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  585. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  586. package/schemas/plugins/ProgressPlugin.json +22 -0
  587. package/schemas/plugins/{DllReferencePlugin.check.d.ts → css/CssAutoOrModuleParserOptions.check.d.ts} +1 -1
  588. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  589. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  590. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  591. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  592. package/types.d.ts +5325 -353
  593. package/lib/CaseSensitiveModulesWarning.js +0 -72
  594. package/lib/GraphHelpers.js +0 -46
  595. package/lib/NoModeWarning.js +0 -23
  596. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  597. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  598. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  599. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  600. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -69,6 +69,7 @@ const REMOVED = {
69
69
  /* cSpell:enable */
70
70
 
71
71
  /**
72
+ * Processes the provided schema.
72
73
  * @param {Parameters<typeof validate>[0]} schema a json schema
73
74
  * @param {Parameters<typeof validate>[1]} options the options that should be validated
74
75
  * @param {Parameters<typeof validate>[2]=} validationConfiguration configuration for generating errors
@@ -14,6 +14,8 @@
14
14
  const enabledTypes = new WeakMap();
15
15
 
16
16
  /**
17
+ * Returns the set of wasm loading backends that have already been enabled for
18
+ * the compiler.
17
19
  * @param {Compiler} compiler compiler instance
18
20
  * @returns {WasmLoadingTypes} enabled types
19
21
  */
@@ -27,8 +29,14 @@ const getEnabledTypes = (compiler) => {
27
29
  return set;
28
30
  };
29
31
 
32
+ /**
33
+ * Validates and enables named wasm loading backends by applying the plugin
34
+ * implementations that provide their runtime support.
35
+ */
30
36
  class EnableWasmLoadingPlugin {
31
37
  /**
38
+ * Stores the wasm loading backend name that should be enabled for the
39
+ * compiler.
32
40
  * @param {WasmLoadingType} type library type that should be available
33
41
  */
34
42
  constructor(type) {
@@ -37,6 +45,8 @@ class EnableWasmLoadingPlugin {
37
45
  }
38
46
 
39
47
  /**
48
+ * Marks a custom or built-in wasm loading type as enabled for the compiler
49
+ * without applying additional built-in behavior.
40
50
  * @param {Compiler} compiler the compiler instance
41
51
  * @param {WasmLoadingType} type type of library
42
52
  * @returns {void}
@@ -46,6 +56,8 @@ class EnableWasmLoadingPlugin {
46
56
  }
47
57
 
48
58
  /**
59
+ * Verifies that a wasm loading type has been enabled before code generation
60
+ * attempts to use it.
49
61
  * @param {Compiler} compiler the compiler instance
50
62
  * @param {WasmLoadingType} type type of library
51
63
  * @returns {void}
@@ -63,7 +75,9 @@ class EnableWasmLoadingPlugin {
63
75
  }
64
76
 
65
77
  /**
66
- * Apply the plugin
78
+ * Enables the requested wasm loading backend once and applies the
79
+ * environment-specific plugins that provide its parser, generator, and
80
+ * runtime support.
67
81
  * @param {Compiler} compiler the compiler instance
68
82
  * @returns {void}
69
83
  */
@@ -46,6 +46,7 @@ class AsyncWasmCompileRuntimeModule extends RuntimeModule {
46
46
  }
47
47
 
48
48
  /**
49
+ * Generates runtime code for this runtime module.
49
50
  * @returns {string | null} runtime code
50
51
  */
51
52
  generate() {
@@ -47,6 +47,7 @@ class AsyncWasmLoadingRuntimeModule extends RuntimeModule {
47
47
  }
48
48
 
49
49
  /**
50
+ * Generates runtime code for this runtime module.
50
51
  * @returns {string | null} runtime code
51
52
  */
52
53
  generate() {
@@ -16,12 +16,14 @@ const { WEBASSEMBLY_TYPES } = require("../ModuleSourceTypeConstants");
16
16
  /** @typedef {import("../NormalModule")} NormalModule */
17
17
 
18
18
  /**
19
+ * Represents the async web assembly generator runtime component.
19
20
  * @typedef {object} AsyncWebAssemblyGeneratorOptions
20
21
  * @property {boolean=} mangleImports mangle imports
21
22
  */
22
23
 
23
24
  class AsyncWebAssemblyGenerator extends Generator {
24
25
  /**
26
+ * Creates an instance of AsyncWebAssemblyGenerator.
25
27
  * @param {AsyncWebAssemblyGeneratorOptions} options options
26
28
  */
27
29
  constructor(options) {
@@ -31,6 +33,7 @@ class AsyncWebAssemblyGenerator extends Generator {
31
33
  }
32
34
 
33
35
  /**
36
+ * Returns the source types available for this module.
34
37
  * @param {NormalModule} module fresh module
35
38
  * @returns {SourceTypes} available types (do not mutate)
36
39
  */
@@ -39,6 +42,7 @@ class AsyncWebAssemblyGenerator extends Generator {
39
42
  }
40
43
 
41
44
  /**
45
+ * Returns the estimated size for the requested source type.
42
46
  * @param {NormalModule} module the module
43
47
  * @param {SourceType=} type source type
44
48
  * @returns {number} estimate size of the module
@@ -52,6 +56,7 @@ class AsyncWebAssemblyGenerator extends Generator {
52
56
  }
53
57
 
54
58
  /**
59
+ * Generates generated code for this runtime module.
55
60
  * @param {NormalModule} module module for which the code should be generated
56
61
  * @param {GenerateContext} generateContext context for generate
57
62
  * @returns {Source | null} generated code
@@ -61,6 +66,7 @@ class AsyncWebAssemblyGenerator extends Generator {
61
66
  }
62
67
 
63
68
  /**
69
+ * Generates fallback output for the provided error condition.
64
70
  * @param {Error} error the error
65
71
  * @param {NormalModule} module module for which the code should be generated
66
72
  * @param {GenerateContext} generateContext context for generate
@@ -22,11 +22,13 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe
22
22
  /** @typedef {import("../NormalModule")} NormalModule */
23
23
 
24
24
  /**
25
+ * Represents the async web assembly javascript generator runtime component.
25
26
  * @typedef {{ request: string, importVar: string, dependency: WebAssemblyImportDependency }} ImportObjRequestItem
26
27
  */
27
28
 
28
29
  class AsyncWebAssemblyJavascriptGenerator extends Generator {
29
30
  /**
31
+ * Returns the source types available for this module.
30
32
  * @param {NormalModule} module fresh module
31
33
  * @returns {SourceTypes} available types (do not mutate)
32
34
  */
@@ -35,6 +37,7 @@ class AsyncWebAssemblyJavascriptGenerator extends Generator {
35
37
  }
36
38
 
37
39
  /**
40
+ * Returns the estimated size for the requested source type.
38
41
  * @param {NormalModule} module the module
39
42
  * @param {SourceType=} type source type
40
43
  * @returns {number} estimate size of the module
@@ -50,6 +53,7 @@ class AsyncWebAssemblyJavascriptGenerator extends Generator {
50
53
  }
51
54
 
52
55
  /**
56
+ * Generates generated code for this runtime module.
53
57
  * @param {NormalModule} module module for which the code should be generated
54
58
  * @param {GenerateContext} generateContext context for generate
55
59
  * @returns {Source | null} generated code
@@ -253,6 +257,7 @@ class AsyncWebAssemblyJavascriptGenerator extends Generator {
253
257
  }
254
258
 
255
259
  /**
260
+ * Generates fallback output for the provided error condition.
256
261
  * @param {Error} error the error
257
262
  * @param {NormalModule} module module for which the code should be generated
258
263
  * @param {GenerateContext} generateContext context for generate
@@ -8,10 +8,10 @@
8
8
  const { SyncWaterfallHook } = require("tapable");
9
9
  const Compilation = require("../Compilation");
10
10
  const Generator = require("../Generator");
11
- const { tryRunOrWebpackError } = require("../HookWebpackError");
12
11
  const { WEBASSEMBLY_MODULE_TYPE_ASYNC } = require("../ModuleTypeConstants");
13
12
  const NormalModule = require("../NormalModule");
14
13
  const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
14
+ const { tryRunOrWebpackError } = require("../errors/HookWebpackError");
15
15
  const { compareModulesByFullName } = require("../util/comparators");
16
16
  const makeSerializable = require("../util/makeSerializable");
17
17
  const memoize = require("../util/memoize");
@@ -27,7 +27,7 @@ const memoize = require("../util/memoize");
27
27
  /** @typedef {import("../NormalModule").NormalModuleCreateData} NormalModuleCreateData */
28
28
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
29
29
  /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
30
- /** @typedef {import("../WebpackError")} WebpackError */
30
+ /** @typedef {import("../errors/WebpackError")} WebpackError */
31
31
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
32
32
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
33
33
 
@@ -53,6 +53,7 @@ class AsyncWasmModule extends NormalModule {
53
53
  }
54
54
 
55
55
  /**
56
+ * Returns the unique identifier used to reference this module.
56
57
  * @returns {string} a unique identifier of the module
57
58
  */
58
59
  identifier() {
@@ -79,6 +80,7 @@ class AsyncWasmModule extends NormalModule {
79
80
  }
80
81
 
81
82
  /**
83
+ * Serializes this instance into the provided serializer context.
82
84
  * @param {ObjectSerializerContext} context context
83
85
  */
84
86
  serialize(context) {
@@ -117,6 +119,7 @@ class AsyncWasmModule extends NormalModule {
117
119
  }
118
120
 
119
121
  /**
122
+ * Restores this instance from the provided deserializer context.
120
123
  * @param {ObjectDeserializerContext} context context
121
124
  */
122
125
  deserialize(context) {
@@ -129,6 +132,7 @@ class AsyncWasmModule extends NormalModule {
129
132
  makeSerializable(AsyncWasmModule, "webpack/lib/wasm-async/AsyncWasmModule");
130
133
 
131
134
  /**
135
+ * Defines the web assembly render context type used by this module.
132
136
  * @typedef {object} WebAssemblyRenderContext
133
137
  * @property {Chunk} chunk the chunk
134
138
  * @property {DependencyTemplates} dependencyTemplates the dependency templates
@@ -139,11 +143,13 @@ makeSerializable(AsyncWasmModule, "webpack/lib/wasm-async/AsyncWasmModule");
139
143
  */
140
144
 
141
145
  /**
146
+ * Defines the compilation hooks type used by this module.
142
147
  * @typedef {object} CompilationHooks
143
148
  * @property {SyncWaterfallHook<[Source, Module, WebAssemblyRenderContext]>} renderModuleContent
144
149
  */
145
150
 
146
151
  /**
152
+ * Defines the async web assembly modules plugin options type used by this module.
147
153
  * @typedef {object} AsyncWebAssemblyModulesPluginOptions
148
154
  * @property {boolean=} mangleImports mangle imports
149
155
  */
@@ -155,6 +161,7 @@ const PLUGIN_NAME = "AsyncWebAssemblyModulesPlugin";
155
161
 
156
162
  class AsyncWebAssemblyModulesPlugin {
157
163
  /**
164
+ * Returns the attached hooks.
158
165
  * @param {Compilation} compilation the compilation
159
166
  * @returns {CompilationHooks} the attached hooks
160
167
  */
@@ -179,6 +186,7 @@ class AsyncWebAssemblyModulesPlugin {
179
186
  }
180
187
 
181
188
  /**
189
+ * Creates an instance of AsyncWebAssemblyModulesPlugin.
182
190
  * @param {AsyncWebAssemblyModulesPluginOptions} options options
183
191
  */
184
192
  constructor(options) {
@@ -187,7 +195,7 @@ class AsyncWebAssemblyModulesPlugin {
187
195
  }
188
196
 
189
197
  /**
190
- * Apply the plugin
198
+ * Applies the plugin by registering its hooks on the compiler.
191
199
  * @param {Compiler} compiler the compiler instance
192
200
  * @returns {void}
193
201
  */
@@ -286,6 +294,7 @@ class AsyncWebAssemblyModulesPlugin {
286
294
  }
287
295
 
288
296
  /**
297
+ * Renders the newly generated source from rendering.
289
298
  * @param {Module} module the rendered module
290
299
  * @param {WebAssemblyRenderContext} renderContext options object
291
300
  * @param {CompilationHooks} hooks hooks
@@ -7,10 +7,10 @@
7
7
 
8
8
  const t = require("@webassemblyjs/ast");
9
9
  const { decode } = require("@webassemblyjs/wasm-parser");
10
- const EnvironmentNotSupportAsyncWarning = require("../EnvironmentNotSupportAsyncWarning");
11
10
  const Parser = require("../Parser");
12
11
  const StaticExportsDependency = require("../dependencies/StaticExportsDependency");
13
12
  const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
13
+ const EnvironmentNotSupportAsyncWarning = require("../errors/EnvironmentNotSupportAsyncWarning");
14
14
 
15
15
  /** @typedef {import("./AsyncWebAssemblyModulesPlugin").AsyncWasmModuleClass} AsyncWasmModule */
16
16
  /** @typedef {import("../Module").BuildInfo} BuildInfo */
@@ -31,6 +31,7 @@ const decoderOpts = {
31
31
 
32
32
  class WebAssemblyParser extends Parser {
33
33
  /**
34
+ * Parses the provided source and updates the parser state.
34
35
  * @param {string | Buffer | PreparsedAst} source the source to parse
35
36
  * @param {ParserState} state the parser state
36
37
  * @returns {ParserState} the parser state
@@ -16,9 +16,14 @@ const AsyncWasmLoadingRuntimeModule = require("../wasm-async/AsyncWasmLoadingRun
16
16
 
17
17
  const PLUGIN_NAME = "UniversalCompileAsyncWasmPlugin";
18
18
 
19
+ /**
20
+ * Enables async WebAssembly loading that works in both browser-like and Node.js
21
+ * environments by selecting the appropriate binary-loading strategy at runtime.
22
+ */
19
23
  class UniversalCompileAsyncWasmPlugin {
20
24
  /**
21
- * Apply the plugin
25
+ * Registers compilation hooks that attach the universal async wasm runtime
26
+ * to chunks using `wasmLoading: "universal"`.
22
27
  * @param {Compiler} compiler the compiler instance
23
28
  * @returns {void}
24
29
  */
@@ -26,6 +31,8 @@ class UniversalCompileAsyncWasmPlugin {
26
31
  compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
27
32
  const globalWasmLoading = compilation.outputOptions.wasmLoading;
28
33
  /**
34
+ * Determines whether the chunk should use the universal async wasm
35
+ * loading backend.
29
36
  * @param {Chunk} chunk chunk
30
37
  * @returns {boolean} true, if wasm loading is enabled for the chunk
31
38
  */
@@ -44,6 +51,8 @@ class UniversalCompileAsyncWasmPlugin {
44
51
  "}"
45
52
  ]);
46
53
  /**
54
+ * Generates setup code that decides whether the current environment can
55
+ * use `fetch` and captures the wasm module URL.
47
56
  * @param {string} path path
48
57
  * @returns {string} code
49
58
  */
@@ -53,6 +62,8 @@ class UniversalCompileAsyncWasmPlugin {
53
62
  `var wasmUrl = ${path};`
54
63
  ]);
55
64
  /**
65
+ * Generates the runtime expression that fetches the binary in browsers
66
+ * or reads it from the filesystem in Node.js.
56
67
  * @type {(path: string) => string}
57
68
  */
58
69
  const generateLoadBinaryCode = () =>
@@ -4,10 +4,11 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- const WebpackError = require("../WebpackError");
7
+ const WebpackError = require("../errors/WebpackError");
8
8
 
9
- module.exports = class UnsupportedWebAssemblyFeatureError extends WebpackError {
9
+ class UnsupportedWebAssemblyFeatureError extends WebpackError {
10
10
  /**
11
+ * Creates an instance of UnsupportedWebAssemblyFeatureError.
11
12
  * @param {string} message Error message
12
13
  */
13
14
  constructor(message) {
@@ -17,4 +18,6 @@ module.exports = class UnsupportedWebAssemblyFeatureError extends WebpackError {
17
18
  this.name = "UnsupportedWebAssemblyFeatureError";
18
19
  this.hideStack = true;
19
20
  }
20
- };
21
+ }
22
+
23
+ module.exports = UnsupportedWebAssemblyFeatureError;
@@ -245,6 +245,7 @@ class WasmChunkLoadingRuntimeModule extends RuntimeModule {
245
245
  }
246
246
 
247
247
  /**
248
+ * Generates runtime code for this runtime module.
248
249
  * @returns {string | null} runtime code
249
250
  */
250
251
  generate() {
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const formatLocation = require("../formatLocation");
8
+ const formatLocation = require("../util/formatLocation");
9
9
  const UnsupportedWebAssemblyFeatureError = require("./UnsupportedWebAssemblyFeatureError");
10
10
 
11
11
  /** @typedef {import("../Compiler")} Compiler */
@@ -17,7 +17,7 @@ const PLUGIN_NAME = "WasmFinalizeExportsPlugin";
17
17
 
18
18
  class WasmFinalizeExportsPlugin {
19
19
  /**
20
- * Apply the plugin
20
+ * Applies the plugin by registering its hooks on the compiler.
21
21
  * @param {Compiler} compiler the compiler instance
22
22
  * @returns {void}
23
23
  */
@@ -17,11 +17,13 @@ const WebAssemblyUtils = require("./WebAssemblyUtils");
17
17
 
18
18
  /** @typedef {import("webpack-sources").Source} Source */
19
19
  /** @typedef {import("../Generator").GenerateContext} GenerateContext */
20
+ /** @typedef {import("../Generator").UpdateHashContext} UpdateHashContext */
20
21
  /** @typedef {import("../Module")} Module */
21
22
  /** @typedef {import("../Module").SourceType} SourceType */
22
23
  /** @typedef {import("../Module").SourceTypes} SourceTypes */
23
24
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
24
25
  /** @typedef {import("../NormalModule")} NormalModule */
26
+ /** @typedef {import("../util/Hash")} Hash */
25
27
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
26
28
  /** @typedef {import("./WebAssemblyUtils").UsedWasmDependency} UsedWasmDependency */
27
29
  /** @typedef {import("@webassemblyjs/ast").Instruction} Instruction */
@@ -31,15 +33,18 @@ const WebAssemblyUtils = require("./WebAssemblyUtils");
31
33
  /** @typedef {import("@webassemblyjs/ast").AST} AST */
32
34
  /** @typedef {import("@webassemblyjs/ast").GlobalType} GlobalType */
33
35
  /**
36
+ * Defines the node path type used by this module.
34
37
  * @template T
35
38
  * @typedef {import("@webassemblyjs/ast").NodePath<T>} NodePath
36
39
  */
37
40
 
38
41
  /**
42
+ * Defines the array buffer transform type used by this module.
39
43
  * @typedef {(buf: ArrayBuffer) => ArrayBuffer} ArrayBufferTransform
40
44
  */
41
45
 
42
46
  /**
47
+ * Returns composed transform.
43
48
  * @template T
44
49
  * @param {((prev: ArrayBuffer) => ArrayBuffer)[]} fns transforms
45
50
  * @returns {(buf: ArrayBuffer) => ArrayBuffer} composed transform
@@ -51,7 +56,7 @@ const compose = (...fns) =>
51
56
  );
52
57
 
53
58
  /**
54
- * Removes the start instruction
59
+ * Removes start func.
55
60
  * @param {object} state state
56
61
  * @param {AST} state.ast Module's ast
57
62
  * @returns {ArrayBufferTransform} transform
@@ -200,6 +205,7 @@ const rewriteImportedGlobals = (state) => (bin) => {
200
205
  // in order to preserve non-imported global's order we need to re-inject
201
206
  // those as well
202
207
  /**
208
+ * Processes the provided path.
203
209
  * @param {NodePath<Global>} path path
204
210
  */
205
211
  Global(path) {
@@ -252,6 +258,7 @@ const rewriteExportNames =
252
258
  (bin) =>
253
259
  editWithAST(ast, bin, {
254
260
  /**
261
+ * Processes the provided path.
255
262
  * @param {NodePath<ModuleExport>} path path
256
263
  */
257
264
  ModuleExport(path) {
@@ -285,6 +292,7 @@ const rewriteImports =
285
292
  (bin) =>
286
293
  editWithAST(ast, bin, {
287
294
  /**
295
+ * Processes the provided path.
288
296
  * @param {NodePath<ModuleImport>} path path
289
297
  */
290
298
  ModuleImport(path) {
@@ -406,12 +414,14 @@ const getUsedDependencyMap = (moduleGraph, module, mangle) => {
406
414
  };
407
415
 
408
416
  /**
417
+ * Represents the web assembly generator runtime component.
409
418
  * @typedef {object} WebAssemblyGeneratorOptions
410
419
  * @property {boolean=} mangleImports mangle imports
411
420
  */
412
421
 
413
422
  class WebAssemblyGenerator extends Generator {
414
423
  /**
424
+ * Creates an instance of WebAssemblyGenerator.
415
425
  * @param {WebAssemblyGeneratorOptions} options options
416
426
  */
417
427
  constructor(options) {
@@ -420,6 +430,7 @@ class WebAssemblyGenerator extends Generator {
420
430
  }
421
431
 
422
432
  /**
433
+ * Returns the source types available for this module.
423
434
  * @param {NormalModule} module fresh module
424
435
  * @returns {SourceTypes} available types (do not mutate)
425
436
  */
@@ -428,6 +439,7 @@ class WebAssemblyGenerator extends Generator {
428
439
  }
429
440
 
430
441
  /**
442
+ * Returns the estimated size for the requested source type.
431
443
  * @param {NormalModule} module the module
432
444
  * @param {SourceType=} type source type
433
445
  * @returns {number} estimate size of the module
@@ -441,6 +453,7 @@ class WebAssemblyGenerator extends Generator {
441
453
  }
442
454
 
443
455
  /**
456
+ * Generates generated code for this runtime module.
444
457
  * @param {NormalModule} module module for which the code should be generated
445
458
  * @param {GenerateContext} generateContext context for generate
446
459
  * @returns {Source | null} generated code
@@ -522,6 +535,7 @@ class WebAssemblyGenerator extends Generator {
522
535
  }
523
536
 
524
537
  /**
538
+ * Generates fallback output for the provided error condition.
525
539
  * @param {Error} error the error
526
540
  * @param {NormalModule} module module for which the code should be generated
527
541
  * @param {GenerateContext} generateContext context for generate
@@ -530,6 +544,17 @@ class WebAssemblyGenerator extends Generator {
530
544
  generateError(error, module, generateContext) {
531
545
  return new RawSource(error.message);
532
546
  }
547
+
548
+ /**
549
+ * Updates the hash with the data contributed by this instance.
550
+ * @param {Hash} hash hash that will be modified
551
+ * @param {UpdateHashContext} updateHashContext context for updating hash
552
+ */
553
+ updateHash(hash, updateHashContext) {
554
+ if (this.options.mangleImports) {
555
+ hash.update("mangle-imports");
556
+ }
557
+ }
533
558
  }
534
559
 
535
560
  module.exports = WebAssemblyGenerator;
@@ -4,7 +4,7 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- const WebpackError = require("../WebpackError");
7
+ const WebpackError = require("../errors/WebpackError");
8
8
 
9
9
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
10
10
  /** @typedef {import("../Module")} Module */
@@ -12,6 +12,7 @@ const WebpackError = require("../WebpackError");
12
12
  /** @typedef {import("../RequestShortener")} RequestShortener */
13
13
 
14
14
  /**
15
+ * Gets initial module chains.
15
16
  * @param {Module} module module to get chains from
16
17
  * @param {ModuleGraph} moduleGraph the module graph
17
18
  * @param {ChunkGraph} chunkGraph the chunk graph
@@ -82,8 +83,9 @@ const getInitialModuleChains = (
82
83
  return [...results];
83
84
  };
84
85
 
85
- module.exports = class WebAssemblyInInitialChunkError extends WebpackError {
86
+ class WebAssemblyInInitialChunkError extends WebpackError {
86
87
  /**
88
+ * Creates an instance of WebAssemblyInInitialChunkError.
87
89
  * @param {Module} module WASM module
88
90
  * @param {ModuleGraph} moduleGraph the module graph
89
91
  * @param {ChunkGraph} chunkGraph the chunk graph
@@ -108,4 +110,6 @@ ${moduleChains.map((s) => `* ${s}`).join("\n")}`;
108
110
  this.hideStack = true;
109
111
  this.module = module;
110
112
  }
111
- };
113
+ }
114
+
115
+ module.exports = WebAssemblyInInitialChunkError;
@@ -25,6 +25,7 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe
25
25
 
26
26
  class WebAssemblyJavascriptGenerator extends Generator {
27
27
  /**
28
+ * Returns the source types available for this module.
28
29
  * @param {NormalModule} module fresh module
29
30
  * @returns {SourceTypes} available types (do not mutate)
30
31
  */
@@ -33,6 +34,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
33
34
  }
34
35
 
35
36
  /**
37
+ * Returns the estimated size for the requested source type.
36
38
  * @param {NormalModule} module the module
37
39
  * @param {SourceType=} type source type
38
40
  * @returns {number} estimate size of the module
@@ -42,6 +44,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
42
44
  }
43
45
 
44
46
  /**
47
+ * Generates generated code for this runtime module.
45
48
  * @param {NormalModule} module module for which the code should be generated
46
49
  * @param {GenerateContext} generateContext context for generate
47
50
  * @returns {Source | null} generated code
@@ -223,6 +226,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
223
226
  }
224
227
 
225
228
  /**
229
+ * Generates fallback output for the provided error condition.
226
230
  * @param {Error} error the error
227
231
  * @param {NormalModule} module module for which the code should be generated
228
232
  * @param {GenerateContext} generateContext context for generate
@@ -31,12 +31,19 @@ const getWebAssemblyParser = memoize(() => require("./WebAssemblyParser"));
31
31
  const PLUGIN_NAME = "WebAssemblyModulesPlugin";
32
32
 
33
33
  /**
34
+ * Options that influence how synchronous WebAssembly modules are transformed
35
+ * and emitted.
34
36
  * @typedef {object} WebAssemblyModulesPluginOptions
35
37
  * @property {boolean=} mangleImports mangle imports
36
38
  */
37
39
 
40
+ /**
41
+ * Adds parser, generator, manifest, and validation support for synchronous
42
+ * WebAssembly modules in the compilation pipeline.
43
+ */
38
44
  class WebAssemblyModulesPlugin {
39
45
  /**
46
+ * Stores options that affect generated synchronous WebAssembly output.
40
47
  * @param {WebAssemblyModulesPluginOptions} options options
41
48
  */
42
49
  constructor(options) {
@@ -44,7 +51,9 @@ class WebAssemblyModulesPlugin {
44
51
  }
45
52
 
46
53
  /**
47
- * Apply the plugin
54
+ * Registers compilation hooks that parse and generate sync WebAssembly
55
+ * modules, emit their binary assets, and report invalid placement in initial
56
+ * chunks.
48
57
  * @param {Compiler} compiler the compiler instance
49
58
  * @returns {void}
50
59
  */
@@ -22,6 +22,7 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe
22
22
  const JS_COMPAT_TYPES = new Set(["i32", "i64", "f32", "f64", "externref"]);
23
23
 
24
24
  /**
25
+ * Gets js incompatible type.
25
26
  * @param {t.Signature} signature the func signature
26
27
  * @returns {null | string} the type incompatible with js types
27
28
  */
@@ -64,6 +65,7 @@ const decoderOpts = {
64
65
 
65
66
  class WebAssemblyParser extends Parser {
66
67
  /**
68
+ * Parses the provided source and updates the parser state.
67
69
  * @param {string | Buffer | PreparsedAst} source the source to parse
68
70
  * @param {ParserState} state the parser state
69
71
  * @returns {ParserState} the parser state
@@ -12,6 +12,7 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe
12
12
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
13
13
 
14
14
  /**
15
+ * Defines the used wasm dependency type used by this module.
15
16
  * @typedef {object} UsedWasmDependency
16
17
  * @property {WebAssemblyImportDependency} dependency the dependency
17
18
  * @property {string} name the export name
@@ -21,6 +22,7 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe
21
22
  const MANGLED_MODULE = "a";
22
23
 
23
24
  /**
25
+ * Gets used dependencies.
24
26
  * @param {ModuleGraph} moduleGraph the module graph
25
27
  * @param {Module} module the module
26
28
  * @param {boolean | undefined} mangle mangle module and export names
@@ -15,9 +15,14 @@ const AsyncWasmLoadingRuntimeModule = require("../wasm-async/AsyncWasmLoadingRun
15
15
 
16
16
  const PLUGIN_NAME = "FetchCompileAsyncWasmPlugin";
17
17
 
18
+ /**
19
+ * Enables asynchronous WebAssembly loading through `fetch` for environments
20
+ * that can instantiate fetched binaries at runtime.
21
+ */
18
22
  class FetchCompileAsyncWasmPlugin {
19
23
  /**
20
- * Apply the plugin
24
+ * Registers compilation hooks that attach the async fetch-based wasm runtime
25
+ * to chunks containing async WebAssembly modules.
21
26
  * @param {Compiler} compiler the compiler instance
22
27
  * @returns {void}
23
28
  */
@@ -25,6 +30,8 @@ class FetchCompileAsyncWasmPlugin {
25
30
  compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
26
31
  const globalWasmLoading = compilation.outputOptions.wasmLoading;
27
32
  /**
33
+ * Determines whether the chunk should load async WebAssembly binaries
34
+ * through the `fetch` backend.
28
35
  * @param {Chunk} chunk chunk
29
36
  * @returns {boolean} true, if wasm loading is enabled for the chunk
30
37
  */
@@ -37,6 +44,8 @@ class FetchCompileAsyncWasmPlugin {
37
44
  return wasmLoading === "fetch";
38
45
  };
39
46
  /**
47
+ * Generates the runtime expression that downloads the emitted wasm
48
+ * binary for an async WebAssembly module.
40
49
  * @param {string} path path to the wasm file
41
50
  * @returns {string} code to load the wasm file
42
51
  */