webpack 5.97.1 → 5.104.1

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 (610) hide show
  1. package/README.md +368 -434
  2. package/bin/webpack.js +15 -9
  3. package/hot/dev-server.js +18 -3
  4. package/hot/emitter-event-target.js +7 -0
  5. package/hot/lazy-compilation-node.js +45 -29
  6. package/hot/lazy-compilation-universal.js +18 -0
  7. package/hot/lazy-compilation-web.js +15 -5
  8. package/hot/load-http.js +7 -0
  9. package/hot/log.js +15 -15
  10. package/hot/only-dev-server.js +19 -4
  11. package/hot/poll.js +1 -0
  12. package/lib/APIPlugin.js +48 -50
  13. package/lib/AbstractMethodError.js +1 -0
  14. package/lib/AsyncDependenciesBlock.js +4 -5
  15. package/lib/AutomaticPrefetchPlugin.js +22 -22
  16. package/lib/BannerPlugin.js +35 -40
  17. package/lib/Cache.js +12 -9
  18. package/lib/CacheFacade.js +13 -13
  19. package/lib/CaseSensitiveModulesWarning.js +6 -6
  20. package/lib/Chunk.js +68 -47
  21. package/lib/ChunkGraph.js +174 -95
  22. package/lib/ChunkGroup.js +32 -24
  23. package/lib/ChunkTemplate.js +8 -8
  24. package/lib/CleanPlugin.js +90 -42
  25. package/lib/CodeGenerationResults.js +12 -9
  26. package/lib/CompatibilityPlugin.js +70 -21
  27. package/lib/Compilation.js +827 -550
  28. package/lib/Compiler.js +137 -109
  29. package/lib/ConcatenationScope.js +45 -8
  30. package/lib/ConditionalInitFragment.js +1 -1
  31. package/lib/ConstPlugin.js +89 -59
  32. package/lib/ContextExclusionPlugin.js +5 -4
  33. package/lib/ContextModule.js +66 -51
  34. package/lib/ContextModuleFactory.js +51 -30
  35. package/lib/ContextReplacementPlugin.js +89 -34
  36. package/lib/CssModule.js +8 -4
  37. package/lib/DefinePlugin.js +209 -57
  38. package/lib/DelegatedModule.js +34 -23
  39. package/lib/DelegatedModuleFactoryPlugin.js +27 -24
  40. package/lib/DelegatedPlugin.js +4 -2
  41. package/lib/DependenciesBlock.js +0 -2
  42. package/lib/Dependency.js +37 -19
  43. package/lib/DependencyTemplate.js +2 -0
  44. package/lib/DependencyTemplates.js +5 -6
  45. package/lib/DllEntryPlugin.js +8 -4
  46. package/lib/DllModule.js +11 -12
  47. package/lib/DllModuleFactory.js +2 -2
  48. package/lib/DllPlugin.js +9 -6
  49. package/lib/DllReferencePlugin.js +60 -65
  50. package/lib/DotenvPlugin.js +462 -0
  51. package/lib/DynamicEntryPlugin.js +8 -8
  52. package/lib/EntryOptionPlugin.js +8 -6
  53. package/lib/EntryPlugin.js +5 -3
  54. package/lib/Entrypoint.js +19 -0
  55. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  56. package/lib/EnvironmentPlugin.js +26 -19
  57. package/lib/ErrorHelpers.js +6 -6
  58. package/lib/EvalDevToolModulePlugin.js +17 -14
  59. package/lib/EvalSourceMapDevToolPlugin.js +156 -142
  60. package/lib/ExportsInfo.js +180 -115
  61. package/lib/ExportsInfoApiPlugin.js +2 -2
  62. package/lib/ExternalModule.js +256 -102
  63. package/lib/ExternalModuleFactoryPlugin.js +66 -29
  64. package/lib/ExternalsPlugin.js +57 -2
  65. package/lib/FileSystemInfo.js +313 -247
  66. package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
  67. package/lib/FlagDependencyExportsPlugin.js +29 -19
  68. package/lib/FlagDependencyUsagePlugin.js +9 -10
  69. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  70. package/lib/Generator.js +43 -10
  71. package/lib/GraphHelpers.js +11 -3
  72. package/lib/HookWebpackError.js +35 -7
  73. package/lib/HotModuleReplacementPlugin.js +149 -108
  74. package/lib/HotUpdateChunk.js +0 -3
  75. package/lib/IgnoreErrorModuleFactory.js +2 -2
  76. package/lib/IgnorePlugin.js +16 -13
  77. package/lib/IgnoreWarningsPlugin.js +6 -4
  78. package/lib/InitFragment.js +41 -23
  79. package/lib/InvalidDependenciesModuleWarning.js +2 -3
  80. package/lib/JavascriptMetaInfoPlugin.js +2 -4
  81. package/lib/LibManifestPlugin.js +12 -13
  82. package/lib/LoaderOptionsPlugin.js +12 -14
  83. package/lib/LoaderTargetPlugin.js +5 -3
  84. package/lib/MainTemplate.js +18 -29
  85. package/lib/ManifestPlugin.js +235 -0
  86. package/lib/Module.js +138 -60
  87. package/lib/ModuleBuildError.js +4 -2
  88. package/lib/ModuleDependencyError.js +4 -3
  89. package/lib/ModuleDependencyWarning.js +4 -3
  90. package/lib/ModuleError.js +1 -1
  91. package/lib/ModuleFactory.js +10 -3
  92. package/lib/ModuleFilenameHelpers.js +63 -60
  93. package/lib/ModuleGraph.js +195 -70
  94. package/lib/ModuleGraphConnection.js +14 -20
  95. package/lib/ModuleInfoHeaderPlugin.js +15 -16
  96. package/lib/ModuleNotFoundError.js +1 -1
  97. package/lib/ModuleParseError.js +8 -4
  98. package/lib/ModuleSourceTypeConstants.js +189 -0
  99. package/lib/ModuleTemplate.js +7 -8
  100. package/lib/ModuleTypeConstants.js +37 -15
  101. package/lib/ModuleWarning.js +1 -1
  102. package/lib/MultiCompiler.js +64 -49
  103. package/lib/MultiStats.js +19 -14
  104. package/lib/MultiWatching.js +7 -11
  105. package/lib/NoEmitOnErrorsPlugin.js +5 -3
  106. package/lib/NodeStuffPlugin.js +438 -126
  107. package/lib/NormalModule.js +322 -201
  108. package/lib/NormalModuleFactory.js +230 -117
  109. package/lib/NormalModuleReplacementPlugin.js +37 -39
  110. package/lib/NullFactory.js +3 -2
  111. package/lib/OptimizationStages.js +1 -1
  112. package/lib/OptionsApply.js +1 -1
  113. package/lib/Parser.js +5 -3
  114. package/lib/PlatformPlugin.js +3 -1
  115. package/lib/PrefetchPlugin.js +6 -4
  116. package/lib/ProgressPlugin.js +48 -49
  117. package/lib/ProvidePlugin.js +7 -5
  118. package/lib/RawModule.js +26 -12
  119. package/lib/RecordIdsPlugin.js +88 -110
  120. package/lib/RequestShortener.js +3 -1
  121. package/lib/ResolverFactory.js +15 -14
  122. package/lib/RuntimeGlobals.js +216 -153
  123. package/lib/RuntimeModule.js +7 -6
  124. package/lib/RuntimePlugin.js +115 -62
  125. package/lib/RuntimeTemplate.js +248 -76
  126. package/lib/SelfModuleFactory.js +2 -2
  127. package/lib/SizeFormatHelpers.js +2 -2
  128. package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
  129. package/lib/SourceMapDevToolPlugin.js +72 -59
  130. package/lib/Stats.js +2 -3
  131. package/lib/Template.js +31 -24
  132. package/lib/TemplatedPathPlugin.js +24 -21
  133. package/lib/UseStrictPlugin.js +1 -1
  134. package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
  135. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  136. package/lib/WarnNoModeSetPlugin.js +3 -1
  137. package/lib/WatchIgnorePlugin.js +11 -9
  138. package/lib/Watching.js +27 -29
  139. package/lib/WebpackError.js +10 -3
  140. package/lib/WebpackIsIncludedPlugin.js +4 -5
  141. package/lib/WebpackOptionsApply.js +263 -135
  142. package/lib/asset/AssetBytesGenerator.js +171 -0
  143. package/lib/asset/AssetBytesParser.js +37 -0
  144. package/lib/asset/AssetGenerator.js +285 -223
  145. package/lib/asset/AssetModulesPlugin.js +103 -41
  146. package/lib/asset/AssetParser.js +7 -3
  147. package/lib/asset/AssetSourceGenerator.js +41 -17
  148. package/lib/asset/RawDataUrlModule.js +17 -9
  149. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  150. package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
  151. package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
  152. package/lib/buildChunkGraph.js +36 -17
  153. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  154. package/lib/cache/IdleFileCachePlugin.js +22 -20
  155. package/lib/cache/MemoryCachePlugin.js +3 -3
  156. package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
  157. package/lib/cache/PackFileCacheStrategy.js +198 -170
  158. package/lib/cache/ResolverCachePlugin.js +58 -48
  159. package/lib/cache/getLazyHashedEtag.js +5 -4
  160. package/lib/cli.js +197 -39
  161. package/lib/config/browserslistTargetHandler.js +110 -85
  162. package/lib/config/defaults.js +514 -113
  163. package/lib/config/normalization.js +91 -64
  164. package/lib/config/target.js +30 -18
  165. package/lib/container/ContainerEntryDependency.js +0 -1
  166. package/lib/container/ContainerEntryModule.js +16 -15
  167. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  168. package/lib/container/ContainerPlugin.js +5 -6
  169. package/lib/container/ContainerReferencePlugin.js +27 -30
  170. package/lib/container/FallbackDependency.js +2 -1
  171. package/lib/container/FallbackModule.js +19 -14
  172. package/lib/container/FallbackModuleFactory.js +2 -2
  173. package/lib/container/HoistContainerReferencesPlugin.js +7 -7
  174. package/lib/container/ModuleFederationPlugin.js +4 -4
  175. package/lib/container/RemoteModule.js +14 -14
  176. package/lib/container/RemoteRuntimeModule.js +2 -2
  177. package/lib/container/options.js +9 -9
  178. package/lib/css/CssGenerator.js +366 -74
  179. package/lib/css/CssLoadingRuntimeModule.js +26 -16
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  181. package/lib/css/CssModulesPlugin.js +191 -142
  182. package/lib/css/CssParser.js +1756 -740
  183. package/lib/css/walkCssTokens.js +180 -67
  184. package/lib/debug/ProfilingPlugin.js +135 -51
  185. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
  186. package/lib/dependencies/AMDPlugin.js +18 -11
  187. package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
  188. package/lib/dependencies/AMDRequireContextDependency.js +2 -1
  189. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
  190. package/lib/dependencies/AMDRuntimeModules.js +3 -1
  191. package/lib/dependencies/CachedConstDependency.js +24 -18
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
  193. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
  197. package/lib/dependencies/CommonJsPlugin.js +29 -18
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
  199. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  200. package/lib/dependencies/ConstDependency.js +2 -2
  201. package/lib/dependencies/ContextDependency.js +10 -5
  202. package/lib/dependencies/ContextDependencyHelpers.js +21 -13
  203. package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
  205. package/lib/dependencies/ContextElementDependency.js +23 -12
  206. package/lib/dependencies/CssIcssExportDependency.js +402 -22
  207. package/lib/dependencies/CssIcssImportDependency.js +116 -51
  208. package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
  209. package/lib/dependencies/CssImportDependency.js +17 -14
  210. package/lib/dependencies/CssUrlDependency.js +8 -13
  211. package/lib/dependencies/DynamicExports.js +19 -19
  212. package/lib/dependencies/ExportsInfoDependency.js +13 -10
  213. package/lib/dependencies/ExternalModuleDependency.js +7 -7
  214. package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
  215. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
  216. package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
  217. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
  218. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  219. package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
  220. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
  221. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
  222. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
  224. package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
  226. package/lib/dependencies/HarmonyExports.js +5 -5
  227. package/lib/dependencies/HarmonyImportDependency.js +92 -45
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
  229. package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
  230. package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
  231. package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
  233. package/lib/dependencies/ImportContextDependency.js +15 -1
  234. package/lib/dependencies/ImportDependency.js +25 -7
  235. package/lib/dependencies/ImportEagerDependency.js +7 -5
  236. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
  237. package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
  238. package/lib/dependencies/ImportMetaPlugin.js +172 -20
  239. package/lib/dependencies/ImportParserPlugin.js +327 -49
  240. package/lib/dependencies/ImportPhase.js +121 -0
  241. package/lib/dependencies/ImportPlugin.js +3 -1
  242. package/lib/dependencies/ImportWeakDependency.js +7 -5
  243. package/lib/dependencies/JsonExportsDependency.js +54 -28
  244. package/lib/dependencies/LoaderDependency.js +0 -3
  245. package/lib/dependencies/LoaderImportDependency.js +0 -3
  246. package/lib/dependencies/LoaderPlugin.js +24 -25
  247. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  248. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  249. package/lib/dependencies/ModuleDependency.js +14 -13
  250. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  251. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  252. package/lib/dependencies/NullDependency.js +2 -0
  253. package/lib/dependencies/ProvidedDependency.js +8 -10
  254. package/lib/dependencies/PureExpressionDependency.js +1 -2
  255. package/lib/dependencies/RequireContextDependency.js +2 -1
  256. package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
  257. package/lib/dependencies/RequireContextPlugin.js +5 -2
  258. package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
  259. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
  260. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  261. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  262. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  263. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  264. package/lib/dependencies/RequireResolveContextDependency.js +1 -1
  265. package/lib/dependencies/RequireResolveDependency.js +3 -3
  266. package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
  267. package/lib/dependencies/StaticExportsDependency.js +3 -5
  268. package/lib/dependencies/SystemPlugin.js +4 -4
  269. package/lib/dependencies/URLContextDependency.js +65 -0
  270. package/lib/dependencies/URLDependency.js +3 -8
  271. package/lib/dependencies/URLPlugin.js +18 -159
  272. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
  273. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  274. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  275. package/lib/dependencies/WorkerDependency.js +8 -6
  276. package/lib/dependencies/WorkerPlugin.js +131 -67
  277. package/lib/dependencies/getFunctionExpression.js +2 -2
  278. package/lib/dependencies/processExportInfo.js +4 -4
  279. package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
  280. package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
  281. package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
  282. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
  283. package/lib/formatLocation.js +2 -2
  284. package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
  285. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  286. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
  287. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  288. package/lib/hmr/LazyCompilationPlugin.js +67 -54
  289. package/lib/hmr/lazyCompilationBackend.js +23 -18
  290. package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
  291. package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
  292. package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
  293. package/lib/ids/HashedModuleIdsPlugin.js +15 -13
  294. package/lib/ids/IdHelpers.js +66 -49
  295. package/lib/ids/NamedChunkIdsPlugin.js +14 -17
  296. package/lib/ids/NamedModuleIdsPlugin.js +12 -14
  297. package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
  298. package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
  299. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
  300. package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
  301. package/lib/ids/SyncModuleIdsPlugin.js +18 -13
  302. package/lib/index.js +54 -14
  303. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
  304. package/lib/javascript/BasicEvaluatedExpression.js +26 -18
  305. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  306. package/lib/javascript/ChunkHelpers.js +17 -5
  307. package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
  308. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
  309. package/lib/javascript/JavascriptGenerator.js +122 -100
  310. package/lib/javascript/JavascriptModulesPlugin.js +332 -152
  311. package/lib/javascript/JavascriptParser.js +1488 -1052
  312. package/lib/javascript/JavascriptParserHelpers.js +48 -47
  313. package/lib/javascript/StartupHelpers.js +23 -22
  314. package/lib/json/JsonData.js +4 -4
  315. package/lib/json/JsonGenerator.js +66 -32
  316. package/lib/json/JsonModulesPlugin.js +16 -6
  317. package/lib/json/JsonParser.js +23 -8
  318. package/lib/library/AbstractLibraryPlugin.js +45 -10
  319. package/lib/library/AmdLibraryPlugin.js +7 -5
  320. package/lib/library/AssignLibraryPlugin.js +71 -17
  321. package/lib/library/EnableLibraryPlugin.js +51 -25
  322. package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
  323. package/lib/library/JsonpLibraryPlugin.js +5 -2
  324. package/lib/library/ModuleLibraryPlugin.js +230 -18
  325. package/lib/library/SystemLibraryPlugin.js +29 -11
  326. package/lib/library/UmdLibraryPlugin.js +35 -32
  327. package/lib/logging/Logger.js +18 -15
  328. package/lib/logging/createConsoleLogger.js +27 -27
  329. package/lib/logging/runtime.js +11 -11
  330. package/lib/logging/truncateArgs.js +5 -5
  331. package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
  332. package/lib/node/NodeEnvironmentPlugin.js +9 -3
  333. package/lib/node/NodeTargetPlugin.js +9 -1
  334. package/lib/node/NodeTemplatePlugin.js +2 -2
  335. package/lib/node/NodeWatchFileSystem.js +4 -4
  336. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
  337. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
  338. package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
  339. package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
  340. package/lib/node/nodeConsole.js +12 -7
  341. package/lib/optimize/AggressiveMergingPlugin.js +46 -47
  342. package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
  343. package/lib/optimize/ConcatenatedModule.js +620 -251
  344. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  345. package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
  346. package/lib/optimize/InnerGraph.js +139 -124
  347. package/lib/optimize/InnerGraphPlugin.js +29 -24
  348. package/lib/optimize/LimitChunkCountPlugin.js +32 -8
  349. package/lib/optimize/MangleExportsPlugin.js +22 -22
  350. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  351. package/lib/optimize/MinChunkSizePlugin.js +12 -7
  352. package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
  353. package/lib/optimize/RealContentHashPlugin.js +58 -44
  354. package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
  355. package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
  356. package/lib/optimize/RuntimeChunkPlugin.js +22 -25
  357. package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
  358. package/lib/optimize/SplitChunksPlugin.js +209 -158
  359. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
  360. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  361. package/lib/performance/SizeLimitsPlugin.js +8 -5
  362. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  363. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
  364. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
  365. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  366. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  367. package/lib/rules/BasicEffectRulePlugin.js +14 -5
  368. package/lib/rules/BasicMatcherRulePlugin.js +18 -7
  369. package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
  370. package/lib/rules/RuleSetCompiler.js +73 -32
  371. package/lib/rules/UseEffectRulePlugin.js +61 -25
  372. package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
  373. package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
  374. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  375. package/lib/runtime/CompatRuntimeModule.js +0 -1
  376. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  377. package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
  378. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
  379. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  380. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  381. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
  382. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  383. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  384. package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
  385. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
  386. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  387. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  388. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  389. package/lib/schemes/DataUriPlugin.js +9 -31
  390. package/lib/schemes/FileUriPlugin.js +11 -6
  391. package/lib/schemes/HttpUriPlugin.js +381 -261
  392. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  393. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  394. package/lib/serialization/BinaryMiddleware.js +51 -33
  395. package/lib/serialization/ErrorObjectSerializer.js +7 -2
  396. package/lib/serialization/FileMiddleware.js +101 -71
  397. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  398. package/lib/serialization/ObjectMiddleware.js +130 -54
  399. package/lib/serialization/PlainObjectSerializer.js +1 -1
  400. package/lib/serialization/Serializer.js +38 -20
  401. package/lib/serialization/SerializerMiddleware.js +121 -49
  402. package/lib/serialization/SingleItemMiddleware.js +9 -7
  403. package/lib/serialization/types.js +1 -1
  404. package/lib/sharing/ConsumeSharedModule.js +9 -9
  405. package/lib/sharing/ConsumeSharedPlugin.js +14 -14
  406. package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
  407. package/lib/sharing/ProvideSharedModule.js +9 -11
  408. package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
  409. package/lib/sharing/ProvideSharedPlugin.js +15 -10
  410. package/lib/sharing/SharePlugin.js +3 -4
  411. package/lib/sharing/ShareRuntimeModule.js +7 -6
  412. package/lib/sharing/resolveMatchedConfigs.js +27 -13
  413. package/lib/sharing/utils.js +37 -43
  414. package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
  415. package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
  416. package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
  417. package/lib/stats/StatsFactory.js +75 -32
  418. package/lib/stats/StatsPrinter.js +71 -51
  419. package/lib/url/URLParserPlugin.js +264 -0
  420. package/lib/util/ArrayHelpers.js +6 -8
  421. package/lib/util/ArrayQueue.js +1 -1
  422. package/lib/util/AsyncQueue.js +11 -10
  423. package/lib/util/Hash.js +37 -5
  424. package/lib/util/IterableHelpers.js +4 -4
  425. package/lib/util/LazyBucketSortedSet.js +46 -27
  426. package/lib/util/LazySet.js +16 -10
  427. package/lib/util/MapHelpers.js +1 -1
  428. package/lib/util/ParallelismFactorCalculator.js +2 -2
  429. package/lib/util/Semaphore.js +3 -3
  430. package/lib/util/SetHelpers.js +6 -6
  431. package/lib/util/SortableSet.js +11 -9
  432. package/lib/util/StackedCacheMap.js +2 -2
  433. package/lib/util/StackedMap.js +3 -3
  434. package/lib/util/StringXor.js +2 -1
  435. package/lib/util/TupleQueue.js +11 -8
  436. package/lib/util/TupleSet.js +44 -19
  437. package/lib/util/URLAbsoluteSpecifier.js +3 -4
  438. package/lib/util/WeakTupleMap.js +56 -42
  439. package/lib/util/binarySearchBounds.js +4 -3
  440. package/lib/util/chainedImports.js +3 -1
  441. package/lib/util/cleverMerge.js +171 -107
  442. package/lib/util/comparators.js +265 -162
  443. package/lib/util/compileBooleanMatcher.js +120 -41
  444. package/lib/util/concatenate.js +20 -16
  445. package/lib/util/conventions.js +73 -74
  446. package/lib/util/create-schema-validation.js +8 -8
  447. package/lib/util/createHash.js +32 -135
  448. package/lib/util/dataURL.js +39 -0
  449. package/lib/util/deprecation.js +119 -116
  450. package/lib/util/deterministicGrouping.js +56 -47
  451. package/lib/util/extractSourceMap.js +319 -0
  452. package/lib/util/extractUrlAndGlobal.js +1 -1
  453. package/lib/util/findGraphRoots.js +19 -9
  454. package/lib/util/fs.js +169 -141
  455. package/lib/util/hash/BatchedHash.js +50 -10
  456. package/lib/util/hash/BulkUpdateHash.js +138 -0
  457. package/lib/util/hash/DebugHash.js +75 -0
  458. package/lib/util/hash/hash-digest.js +216 -0
  459. package/lib/util/hash/md4.js +2 -2
  460. package/lib/util/hash/wasm-hash.js +59 -17
  461. package/lib/util/identifier.js +124 -61
  462. package/lib/util/internalSerializables.js +4 -6
  463. package/lib/util/magicComment.js +9 -5
  464. package/lib/util/makeSerializable.js +2 -2
  465. package/lib/util/memoize.js +5 -2
  466. package/lib/util/objectToMap.js +3 -2
  467. package/lib/util/processAsyncTree.js +5 -5
  468. package/lib/util/propertyAccess.js +1 -1
  469. package/lib/util/propertyName.js +2 -3
  470. package/lib/util/registerExternalSerializer.js +16 -20
  471. package/lib/util/removeBOM.js +25 -0
  472. package/lib/util/runtime.js +72 -56
  473. package/lib/util/semver.js +44 -33
  474. package/lib/util/serialization.js +56 -56
  475. package/lib/util/smartGrouping.js +42 -27
  476. package/lib/util/source.js +5 -4
  477. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  478. package/lib/validateSchema.js +7 -9
  479. package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
  480. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
  481. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
  482. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
  483. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
  484. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  485. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
  486. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
  487. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
  488. package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
  489. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
  490. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
  491. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
  492. package/lib/wasm-sync/WebAssemblyParser.js +10 -17
  493. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  494. package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
  495. package/lib/web/FetchCompileWasmPlugin.js +6 -8
  496. package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
  497. package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
  498. package/lib/web/JsonpTemplatePlugin.js +0 -1
  499. package/lib/webpack.js +107 -87
  500. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
  501. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
  502. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  503. package/module.d.ts +5 -0
  504. package/package.json +149 -129
  505. package/schemas/WebpackOptions.check.d.ts +1 -1
  506. package/schemas/WebpackOptions.check.js +2 -2
  507. package/schemas/WebpackOptions.json +543 -190
  508. package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
  509. package/schemas/plugins/BannerPlugin.check.js +2 -2
  510. package/schemas/plugins/BannerPlugin.json +4 -0
  511. package/schemas/plugins/DllPlugin.check.d.ts +1 -1
  512. package/schemas/plugins/DllPlugin.check.js +1 -1
  513. package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
  514. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  515. package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
  516. package/schemas/plugins/IgnorePlugin.check.js +1 -1
  517. package/schemas/plugins/IgnorePlugin.json +1 -1
  518. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
  519. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  520. package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
  521. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  522. package/schemas/plugins/ManifestPlugin.json +98 -0
  523. package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
  524. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  525. package/schemas/plugins/ProgressPlugin.json +1 -1
  526. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
  529. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
  530. package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
  531. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
  532. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
  534. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  535. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
  536. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  537. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
  538. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  539. package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
  540. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  541. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
  542. package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
  543. package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
  544. package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
  545. package/schemas/plugins/container/ExternalsType.check.js +2 -2
  546. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
  547. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
  548. package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
  549. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
  550. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
  551. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
  552. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
  553. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
  554. package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
  555. package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
  556. package/schemas/plugins/css/CssParserOptions.check.js +2 -2
  557. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
  558. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  559. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  560. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  561. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  562. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
  563. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
  564. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
  565. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
  566. package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
  567. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  568. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  569. package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
  570. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  571. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  572. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
  573. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  574. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
  575. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  576. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
  577. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
  578. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
  579. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  580. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
  581. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  582. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  583. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  584. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  585. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
  586. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
  587. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
  588. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
  589. package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
  590. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  591. package/types.d.ts +5115 -1863
  592. package/SECURITY.md +0 -9
  593. package/lib/ModuleSourceTypesConstants.js +0 -112
  594. package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
  595. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
  596. package/lib/library/ModernModuleLibraryPlugin.js +0 -144
  597. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
  598. package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
  599. package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
  600. package/schemas/plugins/JsonModulesPluginParser.json +0 -12
  601. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
  602. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
  603. package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
  604. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
  605. package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
  606. package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
  607. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
  608. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
  609. package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
  610. package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
@@ -7,29 +7,29 @@
7
7
 
8
8
  const t = require("@webassemblyjs/ast");
9
9
  const { moduleContextFromModuleAST } = require("@webassemblyjs/ast");
10
- const { editWithAST, addWithAST } = require("@webassemblyjs/wasm-edit");
10
+ const { addWithAST, editWithAST } = require("@webassemblyjs/wasm-edit");
11
11
  const { decode } = require("@webassemblyjs/wasm-parser");
12
12
  const { RawSource } = require("webpack-sources");
13
13
  const Generator = require("../Generator");
14
- const { WEBASSEMBLY_TYPES } = require("../ModuleSourceTypesConstants");
15
- const WebAssemblyUtils = require("./WebAssemblyUtils");
16
-
14
+ const { WEBASSEMBLY_TYPES } = require("../ModuleSourceTypeConstants");
17
15
  const WebAssemblyExportImportedDependency = require("../dependencies/WebAssemblyExportImportedDependency");
16
+ const WebAssemblyUtils = require("./WebAssemblyUtils");
18
17
 
19
18
  /** @typedef {import("webpack-sources").Source} Source */
20
- /** @typedef {import("../DependencyTemplates")} DependencyTemplates */
21
19
  /** @typedef {import("../Generator").GenerateContext} GenerateContext */
22
20
  /** @typedef {import("../Module")} Module */
21
+ /** @typedef {import("../Module").SourceType} SourceType */
23
22
  /** @typedef {import("../Module").SourceTypes} SourceTypes */
24
23
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
25
24
  /** @typedef {import("../NormalModule")} NormalModule */
26
- /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
27
25
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
28
26
  /** @typedef {import("./WebAssemblyUtils").UsedWasmDependency} UsedWasmDependency */
29
27
  /** @typedef {import("@webassemblyjs/ast").Instruction} Instruction */
30
28
  /** @typedef {import("@webassemblyjs/ast").ModuleImport} ModuleImport */
31
29
  /** @typedef {import("@webassemblyjs/ast").ModuleExport} ModuleExport */
32
30
  /** @typedef {import("@webassemblyjs/ast").Global} Global */
31
+ /** @typedef {import("@webassemblyjs/ast").AST} AST */
32
+ /** @typedef {import("@webassemblyjs/ast").GlobalType} GlobalType */
33
33
  /**
34
34
  * @template T
35
35
  * @typedef {import("@webassemblyjs/ast").NodePath<T>} NodePath
@@ -42,21 +42,21 @@ const WebAssemblyExportImportedDependency = require("../dependencies/WebAssembly
42
42
  /**
43
43
  * @template T
44
44
  * @param {((prev: ArrayBuffer) => ArrayBuffer)[]} fns transforms
45
- * @returns {Function} composed transform
45
+ * @returns {(buf: ArrayBuffer) => ArrayBuffer} composed transform
46
46
  */
47
47
  const compose = (...fns) =>
48
48
  fns.reduce(
49
- (prevFn, nextFn) => value => nextFn(prevFn(value)),
50
- value => value
49
+ (prevFn, nextFn) => (value) => nextFn(prevFn(value)),
50
+ (value) => value
51
51
  );
52
52
 
53
53
  /**
54
54
  * Removes the start instruction
55
55
  * @param {object} state state
56
- * @param {object} state.ast Module's ast
56
+ * @param {AST} state.ast Module's ast
57
57
  * @returns {ArrayBufferTransform} transform
58
58
  */
59
- const removeStartFunc = state => bin =>
59
+ const removeStartFunc = (state) => (bin) =>
60
60
  editWithAST(state.ast, bin, {
61
61
  Start(path) {
62
62
  path.remove();
@@ -65,10 +65,10 @@ const removeStartFunc = state => bin =>
65
65
 
66
66
  /**
67
67
  * Get imported globals
68
- * @param {object} ast Module's AST
68
+ * @param {AST} ast Module's AST
69
69
  * @returns {t.ModuleImport[]} - nodes
70
70
  */
71
- const getImportedGlobals = ast => {
71
+ const getImportedGlobals = (ast) => {
72
72
  /** @type {t.ModuleImport[]} */
73
73
  const importedGlobals = [];
74
74
 
@@ -85,10 +85,10 @@ const getImportedGlobals = ast => {
85
85
 
86
86
  /**
87
87
  * Get the count for imported func
88
- * @param {object} ast Module's AST
88
+ * @param {AST} ast Module's AST
89
89
  * @returns {number} - count
90
90
  */
91
- const getCountImportedFunc = ast => {
91
+ const getCountImportedFunc = (ast) => {
92
92
  let count = 0;
93
93
 
94
94
  t.traverse(ast, {
@@ -104,10 +104,10 @@ const getCountImportedFunc = ast => {
104
104
 
105
105
  /**
106
106
  * Get next type index
107
- * @param {object} ast Module's AST
107
+ * @param {AST} ast Module's AST
108
108
  * @returns {t.Index} - index
109
109
  */
110
- const getNextTypeIndex = ast => {
110
+ const getNextTypeIndex = (ast) => {
111
111
  const typeSectionMetadata = t.getSectionMetadata(ast, "type");
112
112
 
113
113
  if (typeSectionMetadata === undefined) {
@@ -122,7 +122,7 @@ const getNextTypeIndex = ast => {
122
122
  * The Func section metadata provide information for implemented funcs
123
123
  * in order to have the correct index we shift the index by number of external
124
124
  * functions.
125
- * @param {object} ast Module's AST
125
+ * @param {AST} ast Module's AST
126
126
  * @param {number} countImportedFunc number of imported funcs
127
127
  * @returns {t.Index} - index
128
128
  */
@@ -143,7 +143,7 @@ const getNextFuncIndex = (ast, countImportedFunc) => {
143
143
  * @param {t.GlobalType} globalType the global type
144
144
  * @returns {t.Instruction} init expression
145
145
  */
146
- const createDefaultInitForGlobal = globalType => {
146
+ const createDefaultInitForGlobal = (globalType) => {
147
147
  if (globalType.valtype[0] === "i") {
148
148
  // create NumberLiteral global initializer
149
149
  return t.objectInstruction("const", globalType.valtype, [
@@ -168,19 +168,21 @@ const createDefaultInitForGlobal = globalType => {
168
168
  *
169
169
  * Note that globals will become mutable.
170
170
  * @param {object} state transformation state
171
- * @param {object} state.ast Module's ast
171
+ * @param {AST} state.ast Module's ast
172
172
  * @param {t.Instruction[]} state.additionalInitCode list of addition instructions for the init function
173
173
  * @returns {ArrayBufferTransform} transform
174
174
  */
175
- const rewriteImportedGlobals = state => bin => {
175
+ const rewriteImportedGlobals = (state) => (bin) => {
176
176
  const additionalInitCode = state.additionalInitCode;
177
- /** @type {Array<t.Global>} */
177
+ /** @type {t.Global[]} */
178
178
  const newGlobals = [];
179
179
 
180
180
  bin = editWithAST(state.ast, bin, {
181
181
  ModuleImport(path) {
182
182
  if (t.isGlobalType(path.node.descr)) {
183
- const globalType = /** @type {TODO} */ (path.node.descr);
183
+ const globalType =
184
+ /** @type {GlobalType} */
185
+ (path.node.descr);
184
186
 
185
187
  globalType.mutability = "var";
186
188
 
@@ -238,7 +240,7 @@ const rewriteImportedGlobals = state => bin => {
238
240
  /**
239
241
  * Rewrite the export names
240
242
  * @param {object} state state
241
- * @param {object} state.ast Module's ast
243
+ * @param {AST} state.ast Module's ast
242
244
  * @param {Module} state.module Module
243
245
  * @param {ModuleGraph} state.moduleGraph module graph
244
246
  * @param {Set<string>} state.externalExports Module
@@ -247,7 +249,7 @@ const rewriteImportedGlobals = state => bin => {
247
249
  */
248
250
  const rewriteExportNames =
249
251
  ({ ast, moduleGraph, module, externalExports, runtime }) =>
250
- bin =>
252
+ (bin) =>
251
253
  editWithAST(ast, bin, {
252
254
  /**
253
255
  * @param {NodePath<ModuleExport>} path path
@@ -269,16 +271,18 @@ const rewriteExportNames =
269
271
  }
270
272
  });
271
273
 
274
+ /** @typedef {Map<string, UsedWasmDependency>} Mapping */
275
+
272
276
  /**
273
277
  * Mangle import names and modules
274
278
  * @param {object} state state
275
- * @param {object} state.ast Module's ast
276
- * @param {Map<string, UsedWasmDependency>} state.usedDependencyMap mappings to mangle names
279
+ * @param {AST} state.ast Module's ast
280
+ * @param {Mapping} state.usedDependencyMap mappings to mangle names
277
281
  * @returns {ArrayBufferTransform} transform
278
282
  */
279
283
  const rewriteImports =
280
284
  ({ ast, usedDependencyMap }) =>
281
- bin =>
285
+ (bin) =>
282
286
  editWithAST(ast, bin, {
283
287
  /**
284
288
  * @param {NodePath<ModuleImport>} path path
@@ -300,7 +304,7 @@ const rewriteImports =
300
304
  *
301
305
  * The init function fills the globals given input arguments.
302
306
  * @param {object} state transformation state
303
- * @param {object} state.ast Module's ast
307
+ * @param {AST} state.ast Module's ast
304
308
  * @param {t.Identifier} state.initFuncId identifier of the init function
305
309
  * @param {t.Index} state.startAtFuncOffset index of the start function
306
310
  * @param {t.ModuleImport[]} state.importedGlobals list of imported globals
@@ -319,8 +323,8 @@ const addInitFunction =
319
323
  nextFuncIndex,
320
324
  nextTypeIndex
321
325
  }) =>
322
- bin => {
323
- const funcParams = importedGlobals.map(importedGlobal => {
326
+ (bin) => {
327
+ const funcParams = importedGlobals.map((importedGlobal) => {
324
328
  // used for debugging
325
329
  const id = t.identifier(
326
330
  `${importedGlobal.module}.${importedGlobal.name}`
@@ -382,11 +386,11 @@ const addInitFunction =
382
386
  * Extract mangle mappings from module
383
387
  * @param {ModuleGraph} moduleGraph module graph
384
388
  * @param {Module} module current module
385
- * @param {boolean | undefined} mangle mangle imports
386
- * @returns {Map<string, UsedWasmDependency>} mappings to mangled names
389
+ * @param {boolean=} mangle mangle imports
390
+ * @returns {Mapping} mappings to mangled names
387
391
  */
388
392
  const getUsedDependencyMap = (moduleGraph, module, mangle) => {
389
- /** @type {Map<string, UsedWasmDependency>} */
393
+ /** @type {Mapping} */
390
394
  const map = new Map();
391
395
  for (const usedDep of WebAssemblyUtils.getUsedDependencies(
392
396
  moduleGraph,
@@ -403,7 +407,7 @@ const getUsedDependencyMap = (moduleGraph, module, mangle) => {
403
407
 
404
408
  /**
405
409
  * @typedef {object} WebAssemblyGeneratorOptions
406
- * @property {boolean} [mangleImports] mangle imports
410
+ * @property {boolean=} mangleImports mangle imports
407
411
  */
408
412
 
409
413
  class WebAssemblyGenerator extends Generator {
@@ -425,7 +429,7 @@ class WebAssemblyGenerator extends Generator {
425
429
 
426
430
  /**
427
431
  * @param {NormalModule} module the module
428
- * @param {string=} type source type
432
+ * @param {SourceType=} type source type
429
433
  * @returns {number} estimate size of the module
430
434
  */
431
435
  getSize(module, type) {
@@ -442,7 +446,9 @@ class WebAssemblyGenerator extends Generator {
442
446
  * @returns {Source | null} generated code
443
447
  */
444
448
  generate(module, { moduleGraph, runtime }) {
445
- const bin = /** @type {Source} */ (module.originalSource()).source();
449
+ const bin =
450
+ /** @type {Buffer} */
451
+ (/** @type {Source} */ (module.originalSource()).source());
446
452
 
447
453
  const initFuncId = t.identifier("");
448
454
 
@@ -468,8 +474,8 @@ class WebAssemblyGenerator extends Generator {
468
474
  );
469
475
  const externalExports = new Set(
470
476
  module.dependencies
471
- .filter(d => d instanceof WebAssemblyExportImportedDependency)
472
- .map(d => {
477
+ .filter((d) => d instanceof WebAssemblyExportImportedDependency)
478
+ .map((d) => {
473
479
  const wasmDep = /** @type {WebAssemblyExportImportedDependency} */ (
474
480
  d
475
481
  );
@@ -509,12 +515,21 @@ class WebAssemblyGenerator extends Generator {
509
515
  })
510
516
  );
511
517
 
512
- const newBin = transform(bin);
513
-
518
+ const newBin = transform(/** @type {ArrayBuffer} */ (bin.buffer));
514
519
  const newBuf = Buffer.from(newBin);
515
520
 
516
521
  return new RawSource(newBuf);
517
522
  }
523
+
524
+ /**
525
+ * @param {Error} error the error
526
+ * @param {NormalModule} module module for which the code should be generated
527
+ * @param {GenerateContext} generateContext context for generate
528
+ * @returns {Source | null} generated code
529
+ */
530
+ generateError(error, module, generateContext) {
531
+ return new RawSource(error.message);
532
+ }
518
533
  }
519
534
 
520
535
  module.exports = WebAssemblyGenerator;
@@ -42,8 +42,11 @@ const getInitialModuleChains = (
42
42
  for (const connection of moduleGraph.getIncomingConnections(head)) {
43
43
  const newHead = connection.originModule;
44
44
  if (newHead) {
45
- if (!chunkGraph.getModuleChunks(newHead).some(c => c.canBeInitial()))
45
+ if (
46
+ !chunkGraph.getModuleChunks(newHead).some((c) => c.canBeInitial())
47
+ ) {
46
48
  continue;
49
+ }
47
50
  final = false;
48
51
  if (alreadyReferencedModules.has(newHead)) continue;
49
52
  alreadyReferencedModules.add(newHead);
@@ -76,7 +79,7 @@ const getInitialModuleChains = (
76
79
  for (const result of incompleteResults) {
77
80
  results.add(result);
78
81
  }
79
- return Array.from(results);
82
+ return [...results];
80
83
  };
81
84
 
82
85
  module.exports = class WebAssemblyInInitialChunkError extends WebpackError {
@@ -96,7 +99,7 @@ module.exports = class WebAssemblyInInitialChunkError extends WebpackError {
96
99
  const message = `WebAssembly module is included in initial chunk.
97
100
  This is not allowed, because WebAssembly download and compilation must happen asynchronous.
98
101
  Add an async split point (i. e. import()) somewhere between your entrypoint and the WebAssembly module:
99
- ${moduleChains.map(s => `* ${s}`).join("\n")}`;
102
+ ${moduleChains.map((s) => `* ${s}`).join("\n")}`;
100
103
 
101
104
  super(message);
102
105
  this.name = "WebAssemblyInInitialChunkError";
@@ -9,7 +9,7 @@ const { RawSource } = require("webpack-sources");
9
9
  const { UsageState } = require("../ExportsInfo");
10
10
  const Generator = require("../Generator");
11
11
  const InitFragment = require("../InitFragment");
12
- const { WEBASSEMBLY_TYPES } = require("../ModuleSourceTypesConstants");
12
+ const { WEBASSEMBLY_TYPES } = require("../ModuleSourceTypeConstants");
13
13
  const RuntimeGlobals = require("../RuntimeGlobals");
14
14
  const Template = require("../Template");
15
15
  const ModuleDependency = require("../dependencies/ModuleDependency");
@@ -17,13 +17,11 @@ const WebAssemblyExportImportedDependency = require("../dependencies/WebAssembly
17
17
  const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
18
18
 
19
19
  /** @typedef {import("webpack-sources").Source} Source */
20
- /** @typedef {import("../Dependency")} Dependency */
21
- /** @typedef {import("../DependencyTemplates")} DependencyTemplates */
22
20
  /** @typedef {import("../Generator").GenerateContext} GenerateContext */
23
21
  /** @typedef {import("../Module")} Module */
22
+ /** @typedef {import("../Module").SourceType} SourceType */
24
23
  /** @typedef {import("../Module").SourceTypes} SourceTypes */
25
24
  /** @typedef {import("../NormalModule")} NormalModule */
26
- /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
27
25
 
28
26
  class WebAssemblyJavascriptGenerator extends Generator {
29
27
  /**
@@ -36,7 +34,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
36
34
 
37
35
  /**
38
36
  * @param {NormalModule} module the module
39
- * @param {string=} type source type
37
+ * @param {SourceType=} type source type
40
38
  * @returns {number} estimate size of the module
41
39
  */
42
40
  getSize(module, type) {
@@ -56,7 +54,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
56
54
  runtimeRequirements,
57
55
  runtime
58
56
  } = generateContext;
59
- /** @type {InitFragment<InitFragment<string>>[]} */
57
+ /** @type {InitFragment<GenerateContext>[]} */
60
58
  const initFragments = [];
61
59
 
62
60
  const exportsInfo = moduleGraph.getExportsInfo(module);
@@ -74,6 +72,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
74
72
  importedModules.set(
75
73
  moduleGraph.getModule(dep),
76
74
  (importData = {
75
+ dependency: moduleDep,
77
76
  importVar: `m${index}`,
78
77
  index,
79
78
  request: (moduleDep && moduleDep.userRequest) || undefined,
@@ -97,6 +96,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
97
96
  initParams.push(
98
97
  runtimeTemplate.exportFromImport({
99
98
  moduleGraph,
99
+ chunkGraph,
100
100
  module: importedModule,
101
101
  request: dep.request,
102
102
  importVar: importData.importVar,
@@ -108,7 +108,8 @@ class WebAssemblyJavascriptGenerator extends Generator {
108
108
  defaultInterop: true,
109
109
  initFragments,
110
110
  runtime,
111
- runtimeRequirements
111
+ runtimeRequirements,
112
+ dependency: dep
112
113
  })
113
114
  );
114
115
  }
@@ -129,6 +130,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
129
130
  `${exportProp} = ${runtimeTemplate.exportFromImport({
130
131
  moduleGraph,
131
132
  module: /** @type {Module} */ (moduleGraph.getModule(dep)),
133
+ chunkGraph,
132
134
  request: dep.request,
133
135
  importVar: importData.importVar,
134
136
  originModule: module,
@@ -139,7 +141,8 @@ class WebAssemblyJavascriptGenerator extends Generator {
139
141
  defaultInterop: true,
140
142
  initFragments,
141
143
  runtime,
142
- runtimeRequirements
144
+ runtimeRequirements,
145
+ dependency: dep
143
146
  })};`,
144
147
  `if(WebAssembly.Global) ${exportProp} = ` +
145
148
  `new WebAssembly.Global({ value: ${JSON.stringify(
@@ -155,14 +158,16 @@ class WebAssemblyJavascriptGenerator extends Generator {
155
158
  const importsCode = Template.asString(
156
159
  Array.from(
157
160
  importedModules,
158
- ([module, { importVar, request, reexports }]) => {
161
+ ([module, { importVar, request, reexports, dependency }]) => {
159
162
  const importStatement = runtimeTemplate.importStatement({
160
163
  module,
164
+ moduleGraph,
161
165
  chunkGraph,
162
166
  request,
163
167
  importVar,
164
168
  originModule: module,
165
- runtimeRequirements
169
+ runtimeRequirements,
170
+ dependency
166
171
  });
167
172
  return importStatement[0] + importStatement[1] + reexports.join("\n");
168
173
  }
@@ -212,6 +217,16 @@ class WebAssemblyJavascriptGenerator extends Generator {
212
217
  );
213
218
  return InitFragment.addToSource(source, initFragments, generateContext);
214
219
  }
220
+
221
+ /**
222
+ * @param {Error} error the error
223
+ * @param {NormalModule} module module for which the code should be generated
224
+ * @param {GenerateContext} generateContext context for generate
225
+ * @returns {Source | null} generated code
226
+ */
227
+ generateError(error, module, generateContext) {
228
+ return new RawSource(`throw new Error(${JSON.stringify(error.message)});`);
229
+ }
215
230
  }
216
231
 
217
232
  module.exports = WebAssemblyJavascriptGenerator;
@@ -6,19 +6,19 @@
6
6
  "use strict";
7
7
 
8
8
  const Generator = require("../Generator");
9
+ const {
10
+ JAVASCRIPT_TYPE,
11
+ WEBASSEMBLY_TYPE
12
+ } = require("../ModuleSourceTypeConstants");
9
13
  const { WEBASSEMBLY_MODULE_TYPE_SYNC } = require("../ModuleTypeConstants");
10
14
  const WebAssemblyExportImportedDependency = require("../dependencies/WebAssemblyExportImportedDependency");
11
15
  const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
12
- const { compareModulesByIdentifier } = require("../util/comparators");
16
+ const { compareModulesByIdOrIdentifier } = require("../util/comparators");
13
17
  const memoize = require("../util/memoize");
14
18
  const WebAssemblyInInitialChunkError = require("./WebAssemblyInInitialChunkError");
15
19
 
16
- /** @typedef {import("webpack-sources").Source} Source */
17
- /** @typedef {import("../../declarations/WebpackOptions").OutputNormalized} OutputOptions */
18
20
  /** @typedef {import("../Compiler")} Compiler */
19
21
  /** @typedef {import("../Module")} Module */
20
- /** @typedef {import("../ModuleTemplate")} ModuleTemplate */
21
- /** @typedef {import("../javascript/JavascriptModulesPlugin").RenderContext} RenderContext */
22
22
 
23
23
  const getWebAssemblyGenerator = memoize(() =>
24
24
  require("./WebAssemblyGenerator")
@@ -32,7 +32,7 @@ const PLUGIN_NAME = "WebAssemblyModulesPlugin";
32
32
 
33
33
  /**
34
34
  * @typedef {object} WebAssemblyModulesPluginOptions
35
- * @property {boolean} [mangleImports] mangle imports
35
+ * @property {boolean=} mangleImports mangle imports
36
36
  */
37
37
 
38
38
  class WebAssemblyModulesPlugin {
@@ -78,8 +78,8 @@ class WebAssemblyModulesPlugin {
78
78
  const WebAssemblyGenerator = getWebAssemblyGenerator();
79
79
 
80
80
  return Generator.byType({
81
- javascript: new WebAssemblyJavascriptGenerator(),
82
- webassembly: new WebAssemblyGenerator(this.options)
81
+ [JAVASCRIPT_TYPE]: new WebAssemblyJavascriptGenerator(),
82
+ [WEBASSEMBLY_TYPE]: new WebAssemblyGenerator(this.options)
83
83
  });
84
84
  });
85
85
 
@@ -89,12 +89,10 @@ class WebAssemblyModulesPlugin {
89
89
 
90
90
  for (const module of chunkGraph.getOrderedChunkModulesIterable(
91
91
  chunk,
92
- compareModulesByIdentifier
92
+ compareModulesByIdOrIdentifier(chunkGraph)
93
93
  )) {
94
94
  if (module.type === WEBASSEMBLY_MODULE_TYPE_SYNC) {
95
- const filenameTemplate =
96
- /** @type {NonNullable<OutputOptions["webassemblyModuleFilename"]>} */
97
- (outputOptions.webassemblyModuleFilename);
95
+ const filenameTemplate = outputOptions.webassemblyModuleFilename;
98
96
 
99
97
  result.push({
100
98
  render: () =>
@@ -123,6 +121,7 @@ class WebAssemblyModulesPlugin {
123
121
 
124
122
  compilation.hooks.afterChunks.tap(PLUGIN_NAME, () => {
125
123
  const chunkGraph = compilation.chunkGraph;
124
+ /** @type {Set<Module>} */
126
125
  const initialWasmModules = new Set();
127
126
  for (const chunk of compilation.chunks) {
128
127
  if (chunk.canBeInitial()) {
@@ -13,7 +13,7 @@ const StaticExportsDependency = require("../dependencies/StaticExportsDependency
13
13
  const WebAssemblyExportImportedDependency = require("../dependencies/WebAssemblyExportImportedDependency");
14
14
  const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
15
15
 
16
- /** @typedef {import("../Module")} Module */
16
+ /** @typedef {import("@webassemblyjs/ast").ModuleImport} ModuleImport */
17
17
  /** @typedef {import("../Module").BuildInfo} BuildInfo */
18
18
  /** @typedef {import("../Module").BuildMeta} BuildMeta */
19
19
  /** @typedef {import("../Parser").ParserState} ParserState */
@@ -25,7 +25,7 @@ const JS_COMPAT_TYPES = new Set(["i32", "i64", "f32", "f64", "externref"]);
25
25
  * @param {t.Signature} signature the func signature
26
26
  * @returns {null | string} the type incompatible with js types
27
27
  */
28
- const getJsIncompatibleType = signature => {
28
+ const getJsIncompatibleType = (signature) => {
29
29
  for (const param of signature.params) {
30
30
  if (!JS_COMPAT_TYPES.has(param.valtype)) {
31
31
  return `${param.valtype} as parameter`;
@@ -42,7 +42,7 @@ const getJsIncompatibleType = signature => {
42
42
  * @param {t.FuncSignature} signature the func signature
43
43
  * @returns {null | string} the type incompatible with js types
44
44
  */
45
- const getJsIncompatibleTypeOfFuncSignature = signature => {
45
+ const getJsIncompatibleTypeOfFuncSignature = (signature) => {
46
46
  for (const param of signature.args) {
47
47
  if (!JS_COMPAT_TYPES.has(param)) {
48
48
  return `${param} as parameter`;
@@ -63,15 +63,6 @@ const decoderOpts = {
63
63
  };
64
64
 
65
65
  class WebAssemblyParser extends Parser {
66
- /**
67
- * @param {{}=} options parser options
68
- */
69
- constructor(options) {
70
- super();
71
- this.hooks = Object.freeze({});
72
- this.options = options;
73
- }
74
-
75
66
  /**
76
67
  * @param {string | Buffer | PreparsedAst} source the source to parse
77
68
  * @param {ParserState} state the parser state
@@ -101,8 +92,9 @@ class WebAssemblyParser extends Parser {
101
92
  /** @type {Record<string, string> | undefined} */
102
93
  let jsIncompatibleExports = (buildMeta.jsIncompatibleExports = undefined);
103
94
 
104
- /** @type {TODO[]} */
95
+ /** @type {(ModuleImport | null)[]} */
105
96
  const importedGlobals = [];
97
+
106
98
  t.traverse(module, {
107
99
  ModuleExport({ node }) {
108
100
  const descriptor = node.descr;
@@ -129,14 +121,14 @@ class WebAssemblyParser extends Parser {
129
121
  exports.push(node.name);
130
122
 
131
123
  if (node.descr && node.descr.exportType === "Global") {
132
- const refNode =
133
- importedGlobals[/** @type {TODO} */ (node.descr.id.value)];
124
+ const refNode = importedGlobals[node.descr.id.value];
134
125
  if (refNode) {
135
126
  const dep = new WebAssemblyExportImportedDependency(
136
127
  node.name,
137
128
  refNode.module,
138
129
  refNode.name,
139
- refNode.descr.valtype
130
+ /** @type {string} */
131
+ (refNode.descr.valtype)
140
132
  );
141
133
 
142
134
  state.module.addDependency(dep);
@@ -170,7 +162,8 @@ class WebAssemblyParser extends Parser {
170
162
  onlyDirectImport = "Table";
171
163
  } else if (t.isFuncImportDescr(node.descr) === true) {
172
164
  const incompatibleType = getJsIncompatibleType(
173
- /** @type {t.Signature} */ (node.descr.signature)
165
+ /** @type {t.Signature} */
166
+ (node.descr.signature)
174
167
  );
175
168
  if (incompatibleType) {
176
169
  onlyDirectImport = `Non-JS-compatible Func Signature (${incompatibleType})`;
@@ -62,5 +62,5 @@ const getUsedDependencies = (moduleGraph, module, mangle) => {
62
62
  return array;
63
63
  };
64
64
 
65
- module.exports.getUsedDependencies = getUsedDependencies;
66
65
  module.exports.MANGLED_MODULE = MANGLED_MODULE;
66
+ module.exports.getUsedDependencies = getUsedDependencies;
@@ -21,13 +21,13 @@ class FetchCompileAsyncWasmPlugin {
21
21
  * @returns {void}
22
22
  */
23
23
  apply(compiler) {
24
- compiler.hooks.thisCompilation.tap(PLUGIN_NAME, compilation => {
24
+ compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
25
25
  const globalWasmLoading = compilation.outputOptions.wasmLoading;
26
26
  /**
27
27
  * @param {Chunk} chunk chunk
28
28
  * @returns {boolean} true, if wasm loading is enabled for the chunk
29
29
  */
30
- const isEnabledForChunk = chunk => {
30
+ const isEnabledForChunk = (chunk) => {
31
31
  const options = chunk.getEntryOptions();
32
32
  const wasmLoading =
33
33
  options && options.wasmLoading !== undefined
@@ -39,7 +39,7 @@ class FetchCompileAsyncWasmPlugin {
39
39
  * @param {string} path path to the wasm file
40
40
  * @returns {string} code to load the wasm file
41
41
  */
42
- const generateLoadBinaryCode = path =>
42
+ const generateLoadBinaryCode = (path) =>
43
43
  `fetch(${RuntimeGlobals.publicPath} + ${path})`;
44
44
 
45
45
  compilation.hooks.runtimeRequirementInTree
@@ -49,7 +49,7 @@ class FetchCompileAsyncWasmPlugin {
49
49
  if (
50
50
  !chunkGraph.hasModuleInGraph(
51
51
  chunk,
52
- m => m.type === WEBASSEMBLY_MODULE_TYPE_ASYNC
52
+ (m) => m.type === WEBASSEMBLY_MODULE_TYPE_ASYNC
53
53
  )
54
54
  ) {
55
55
  return;
@@ -14,16 +14,14 @@ const WasmChunkLoadingRuntimeModule = require("../wasm-sync/WasmChunkLoadingRunt
14
14
 
15
15
  /**
16
16
  * @typedef {object} FetchCompileWasmPluginOptions
17
- * @property {boolean} [mangleImports] mangle imports
17
+ * @property {boolean=} mangleImports mangle imports
18
18
  */
19
19
 
20
- // TODO webpack 6 remove
21
-
22
20
  const PLUGIN_NAME = "FetchCompileWasmPlugin";
23
21
 
24
22
  class FetchCompileWasmPlugin {
25
23
  /**
26
- * @param {FetchCompileWasmPluginOptions} [options] options
24
+ * @param {FetchCompileWasmPluginOptions=} options options
27
25
  */
28
26
  constructor(options = {}) {
29
27
  this.options = options;
@@ -35,13 +33,13 @@ class FetchCompileWasmPlugin {
35
33
  * @returns {void}
36
34
  */
37
35
  apply(compiler) {
38
- compiler.hooks.thisCompilation.tap(PLUGIN_NAME, compilation => {
36
+ compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
39
37
  const globalWasmLoading = compilation.outputOptions.wasmLoading;
40
38
  /**
41
39
  * @param {Chunk} chunk chunk
42
40
  * @returns {boolean} true, if wasm loading is enabled for the chunk
43
41
  */
44
- const isEnabledForChunk = chunk => {
42
+ const isEnabledForChunk = (chunk) => {
45
43
  const options = chunk.getEntryOptions();
46
44
  const wasmLoading =
47
45
  options && options.wasmLoading !== undefined
@@ -53,7 +51,7 @@ class FetchCompileWasmPlugin {
53
51
  * @param {string} path path to the wasm file
54
52
  * @returns {string} code to load the wasm file
55
53
  */
56
- const generateLoadBinaryCode = path =>
54
+ const generateLoadBinaryCode = (path) =>
57
55
  `fetch(${RuntimeGlobals.publicPath} + ${path})`;
58
56
 
59
57
  compilation.hooks.runtimeRequirementInTree
@@ -63,7 +61,7 @@ class FetchCompileWasmPlugin {
63
61
  if (
64
62
  !chunkGraph.hasModuleInGraph(
65
63
  chunk,
66
- m => m.type === WEBASSEMBLY_MODULE_TYPE_SYNC
64
+ (m) => m.type === WEBASSEMBLY_MODULE_TYPE_SYNC
67
65
  )
68
66
  ) {
69
67
  return;