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
@@ -5,58 +5,61 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const mimeTypes = require("mime-types");
9
8
  const path = require("path");
10
9
  const { RawSource } = require("webpack-sources");
11
10
  const ConcatenationScope = require("../ConcatenationScope");
12
11
  const Generator = require("../Generator");
13
12
  const {
14
- NO_TYPES,
15
- ASSET_TYPES,
16
- ASSET_AND_JS_TYPES,
17
- ASSET_AND_JS_AND_CSS_URL_TYPES,
18
13
  ASSET_AND_CSS_URL_TYPES,
19
- JS_TYPES,
20
- JS_AND_CSS_URL_TYPES,
21
- CSS_URL_TYPES
22
- } = require("../ModuleSourceTypesConstants");
14
+ ASSET_AND_JAVASCRIPT_AND_CSS_URL_TYPES,
15
+ ASSET_AND_JAVASCRIPT_TYPES,
16
+ ASSET_TYPES,
17
+ CSS_TYPE,
18
+ CSS_URL_TYPE,
19
+ CSS_URL_TYPES,
20
+ JAVASCRIPT_AND_CSS_URL_TYPES,
21
+ JAVASCRIPT_TYPE,
22
+ JAVASCRIPT_TYPES,
23
+ NO_TYPES
24
+ } = require("../ModuleSourceTypeConstants");
23
25
  const { ASSET_MODULE_TYPE } = require("../ModuleTypeConstants");
24
26
  const RuntimeGlobals = require("../RuntimeGlobals");
25
27
  const CssUrlDependency = require("../dependencies/CssUrlDependency");
26
28
  const createHash = require("../util/createHash");
27
29
  const { makePathsRelative } = require("../util/identifier");
30
+ const memoize = require("../util/memoize");
28
31
  const nonNumericOnlyHash = require("../util/nonNumericOnlyHash");
29
32
 
33
+ const getMimeTypes = memoize(() => require("mime-types"));
34
+
30
35
  /** @typedef {import("webpack-sources").Source} Source */
31
36
  /** @typedef {import("../../declarations/WebpackOptions").AssetGeneratorDataUrlOptions} AssetGeneratorDataUrlOptions */
32
37
  /** @typedef {import("../../declarations/WebpackOptions").AssetGeneratorOptions} AssetGeneratorOptions */
33
38
  /** @typedef {import("../../declarations/WebpackOptions").AssetModuleFilename} AssetModuleFilename */
34
39
  /** @typedef {import("../../declarations/WebpackOptions").AssetModuleOutputPath} AssetModuleOutputPath */
40
+ /** @typedef {import("../../declarations/WebpackOptions").AssetResourceGeneratorOptions} AssetResourceGeneratorOptions */
35
41
  /** @typedef {import("../../declarations/WebpackOptions").RawPublicPath} RawPublicPath */
36
- /** @typedef {import("../Compilation")} Compilation */
42
+ /** @typedef {import("../ChunkGraph")} ChunkGraph */
37
43
  /** @typedef {import("../Compilation").AssetInfo} AssetInfo */
38
- /** @typedef {import("../Compilation").InterpolatedPathAndAssetInfo} InterpolatedPathAndAssetInfo */
39
- /** @typedef {import("../Compiler")} Compiler */
40
44
  /** @typedef {import("../Generator").GenerateContext} GenerateContext */
41
45
  /** @typedef {import("../Generator").UpdateHashContext} UpdateHashContext */
42
- /** @typedef {import("../Module")} Module */
46
+ /** @typedef {import("../Module").NameForCondition} NameForCondition */
43
47
  /** @typedef {import("../Module").BuildInfo} BuildInfo */
44
- /** @typedef {import("../Module").BuildMeta} BuildMeta */
45
48
  /** @typedef {import("../Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
49
+ /** @typedef {import("../Module").SourceType} SourceType */
46
50
  /** @typedef {import("../Module").SourceTypes} SourceTypes */
47
51
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
48
52
  /** @typedef {import("../NormalModule")} NormalModule */
49
53
  /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
50
- /** @typedef {import("../TemplatedPathPlugin").TemplatePath} TemplatePath */
51
54
  /** @typedef {import("../util/Hash")} Hash */
52
- /** @typedef {import("../util/createHash").Algorithm} Algorithm */
55
+ /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
53
56
 
54
57
  /**
55
58
  * @template T
56
59
  * @template U
57
- * @param {Array<T> | Set<T>} a a
58
- * @param {Array<U> | Set<U>} b b
59
- * @returns {Array<T> & Array<U>} array
60
+ * @param {null | string | T[] | Set<T> | undefined} a a
61
+ * @param {null | string | U[] | Set<U> | undefined} b b
62
+ * @returns {T[] & U[]} array
60
63
  */
61
64
  const mergeMaybeArrays = (a, b) => {
62
65
  const set = new Set();
@@ -64,17 +67,16 @@ const mergeMaybeArrays = (a, b) => {
64
67
  else set.add(a);
65
68
  if (Array.isArray(b)) for (const item of b) set.add(item);
66
69
  else set.add(b);
67
- return Array.from(set);
70
+ return [...set];
68
71
  };
69
72
 
70
73
  /**
71
- * @template {object} T
72
- * @template {object} U
73
- * @param {TODO} a a
74
- * @param {TODO} b b
75
- * @returns {T & U} object
74
+ * @param {AssetInfo} a a
75
+ * @param {AssetInfo} b b
76
+ * @returns {AssetInfo} object
76
77
  */
77
78
  const mergeAssetInfo = (a, b) => {
79
+ /** @type {AssetInfo} */
78
80
  const result = { ...a, ...b };
79
81
  for (const key of Object.keys(a)) {
80
82
  if (key in b) {
@@ -93,7 +95,12 @@ const mergeAssetInfo = (a, b) => {
93
95
  result[key] = a[key] || b[key];
94
96
  break;
95
97
  case "related":
96
- result[key] = mergeRelatedInfo(a[key], b[key]);
98
+ result[key] = mergeRelatedInfo(
99
+ /** @type {NonNullable<AssetInfo["related"]>} */
100
+ (a[key]),
101
+ /** @type {NonNullable<AssetInfo["related"]>} */
102
+ (b[key])
103
+ );
97
104
  break;
98
105
  default:
99
106
  throw new Error(`Can't handle conflicting asset info for ${key}`);
@@ -104,11 +111,9 @@ const mergeAssetInfo = (a, b) => {
104
111
  };
105
112
 
106
113
  /**
107
- * @template {object} T
108
- * @template {object} U
109
- * @param {TODO} a a
110
- * @param {TODO} b b
111
- * @returns {T & U} object
114
+ * @param {NonNullable<AssetInfo["related"]>} a a
115
+ * @param {NonNullable<AssetInfo["related"]>} b b
116
+ * @returns {NonNullable<AssetInfo["related"]>} object
112
117
  */
113
118
  const mergeRelatedInfo = (a, b) => {
114
119
  const result = { ...a, ...b };
@@ -139,7 +144,7 @@ const encodeDataUri = (encoding, source) => {
139
144
  const content = source.source();
140
145
 
141
146
  if (typeof content !== "string") {
142
- encodedContent = content.toString("utf-8");
147
+ encodedContent = content.toString("utf8");
143
148
  }
144
149
 
145
150
  encodedContent = encodeURIComponent(
@@ -147,7 +152,7 @@ const encodeDataUri = (encoding, source) => {
147
152
  (encodedContent)
148
153
  ).replace(
149
154
  /[!'()*]/g,
150
- character =>
155
+ (character) =>
151
156
  `%${/** @type {number} */ (character.codePointAt(0)).toString(16)}`
152
157
  );
153
158
  break;
@@ -160,7 +165,7 @@ const encodeDataUri = (encoding, source) => {
160
165
  };
161
166
 
162
167
  /**
163
- * @param {string} encoding encoding
168
+ * @param {"base64" | false} encoding encoding
164
169
  * @param {string} content content
165
170
  * @returns {Buffer} decoded content
166
171
  */
@@ -212,14 +217,178 @@ class AssetGenerator extends Generator {
212
217
  * @param {RuntimeTemplate} runtimeTemplate runtime template
213
218
  * @returns {string} source file name
214
219
  */
215
- getSourceFileName(module, runtimeTemplate) {
220
+ static getSourceFileName(module, runtimeTemplate) {
216
221
  return makePathsRelative(
217
222
  runtimeTemplate.compilation.compiler.context,
218
- module.matchResource || module.resource,
223
+ /** @type {string} */
224
+ (module.getResource()),
219
225
  runtimeTemplate.compilation.compiler.root
220
226
  ).replace(/^\.\//, "");
221
227
  }
222
228
 
229
+ /**
230
+ * @param {NormalModule} module module
231
+ * @param {RuntimeTemplate} runtimeTemplate runtime template
232
+ * @returns {[string, string]} return full hash and non-numeric full hash
233
+ */
234
+ static getFullContentHash(module, runtimeTemplate) {
235
+ const hash = createHash(runtimeTemplate.outputOptions.hashFunction);
236
+
237
+ if (runtimeTemplate.outputOptions.hashSalt) {
238
+ hash.update(runtimeTemplate.outputOptions.hashSalt);
239
+ }
240
+
241
+ const source = module.originalSource();
242
+
243
+ if (source) {
244
+ hash.update(source.buffer());
245
+ }
246
+
247
+ if (module.error) {
248
+ hash.update(module.error.toString());
249
+ }
250
+
251
+ const fullContentHash = hash.digest(
252
+ runtimeTemplate.outputOptions.hashDigest
253
+ );
254
+
255
+ const contentHash = nonNumericOnlyHash(
256
+ fullContentHash,
257
+ runtimeTemplate.outputOptions.hashDigestLength
258
+ );
259
+
260
+ return [fullContentHash, contentHash];
261
+ }
262
+
263
+ /**
264
+ * @param {NormalModule} module module for which the code should be generated
265
+ * @param {Pick<AssetResourceGeneratorOptions, "filename" | "outputPath">} generatorOptions generator options
266
+ * @param {{ runtime: RuntimeSpec, runtimeTemplate: RuntimeTemplate, chunkGraph: ChunkGraph }} generateContext context for generate
267
+ * @param {string} contentHash the content hash
268
+ * @returns {{ filename: string, originalFilename: string, assetInfo: AssetInfo }} info
269
+ */
270
+ static getFilenameWithInfo(
271
+ module,
272
+ generatorOptions,
273
+ { runtime, runtimeTemplate, chunkGraph },
274
+ contentHash
275
+ ) {
276
+ const assetModuleFilename =
277
+ generatorOptions.filename ||
278
+ runtimeTemplate.outputOptions.assetModuleFilename;
279
+
280
+ const sourceFilename = AssetGenerator.getSourceFileName(
281
+ module,
282
+ runtimeTemplate
283
+ );
284
+ let { path: filename, info: assetInfo } =
285
+ runtimeTemplate.compilation.getAssetPathWithInfo(assetModuleFilename, {
286
+ module,
287
+ runtime,
288
+ filename: sourceFilename,
289
+ chunkGraph,
290
+ contentHash
291
+ });
292
+
293
+ const originalFilename = filename;
294
+
295
+ if (generatorOptions.outputPath) {
296
+ const { path: outputPath, info } =
297
+ runtimeTemplate.compilation.getAssetPathWithInfo(
298
+ generatorOptions.outputPath,
299
+ {
300
+ module,
301
+ runtime,
302
+ filename: sourceFilename,
303
+ chunkGraph,
304
+ contentHash
305
+ }
306
+ );
307
+ filename = path.posix.join(outputPath, filename);
308
+ assetInfo = mergeAssetInfo(assetInfo, info);
309
+ }
310
+
311
+ return { originalFilename, filename, assetInfo };
312
+ }
313
+
314
+ /**
315
+ * @param {NormalModule} module module for which the code should be generated
316
+ * @param {Pick<AssetResourceGeneratorOptions, "publicPath">} generatorOptions generator options
317
+ * @param {GenerateContext} generateContext context for generate
318
+ * @param {string} filename the filename
319
+ * @param {AssetInfo} assetInfo the asset info
320
+ * @param {string} contentHash the content hash
321
+ * @returns {{ assetPath: string, assetInfo: AssetInfo }} asset path and info
322
+ */
323
+ static getAssetPathWithInfo(
324
+ module,
325
+ generatorOptions,
326
+ { runtime, runtimeTemplate, type, chunkGraph, runtimeRequirements },
327
+ filename,
328
+ assetInfo,
329
+ contentHash
330
+ ) {
331
+ const sourceFilename = AssetGenerator.getSourceFileName(
332
+ module,
333
+ runtimeTemplate
334
+ );
335
+
336
+ let assetPath;
337
+
338
+ if (generatorOptions.publicPath !== undefined && type === JAVASCRIPT_TYPE) {
339
+ const { path, info } = runtimeTemplate.compilation.getAssetPathWithInfo(
340
+ generatorOptions.publicPath,
341
+ {
342
+ module,
343
+ runtime,
344
+ filename: sourceFilename,
345
+ chunkGraph,
346
+ contentHash
347
+ }
348
+ );
349
+ assetInfo = mergeAssetInfo(assetInfo, info);
350
+ assetPath = JSON.stringify(path + filename);
351
+ } else if (
352
+ generatorOptions.publicPath !== undefined &&
353
+ type === CSS_URL_TYPE
354
+ ) {
355
+ const { path, info } = runtimeTemplate.compilation.getAssetPathWithInfo(
356
+ generatorOptions.publicPath,
357
+ {
358
+ module,
359
+ runtime,
360
+ filename: sourceFilename,
361
+ chunkGraph,
362
+ contentHash
363
+ }
364
+ );
365
+ assetInfo = mergeAssetInfo(assetInfo, info);
366
+ assetPath = path + filename;
367
+ } else if (type === JAVASCRIPT_TYPE) {
368
+ // add __webpack_require__.p
369
+ runtimeRequirements.add(RuntimeGlobals.publicPath);
370
+ assetPath = runtimeTemplate.concatenation(
371
+ { expr: RuntimeGlobals.publicPath },
372
+ filename
373
+ );
374
+ } else if (type === CSS_URL_TYPE) {
375
+ const compilation = runtimeTemplate.compilation;
376
+ const path =
377
+ compilation.outputOptions.publicPath === "auto"
378
+ ? CssUrlDependency.PUBLIC_PATH_AUTO
379
+ : compilation.getAssetPath(compilation.outputOptions.publicPath, {
380
+ hash: compilation.hash
381
+ });
382
+
383
+ assetPath = path + filename;
384
+ }
385
+
386
+ return {
387
+ assetPath: /** @type {string} */ (assetPath),
388
+ assetInfo: { sourceFilename, ...assetInfo }
389
+ };
390
+ }
391
+
223
392
  /**
224
393
  * @param {NormalModule} module module for which the bailout reason should be determined
225
394
  * @param {ConcatenationBailoutReasonContext} context context
@@ -246,7 +415,7 @@ class AssetGenerator extends Generator {
246
415
  (this.dataUrlOptions).mimetype;
247
416
  if (mimeType === undefined) {
248
417
  const ext = path.extname(
249
- /** @type {string} */
418
+ /** @type {NameForCondition} */
250
419
  (module.nameForCondition())
251
420
  );
252
421
  if (
@@ -257,7 +426,7 @@ class AssetGenerator extends Generator {
257
426
  module.resourceResolveData.mimetype +
258
427
  module.resourceResolveData.parameters;
259
428
  } else if (ext) {
260
- mimeType = mimeTypes.lookup(ext);
429
+ mimeType = getMimeTypes().lookup(ext);
261
430
 
262
431
  if (typeof mimeType !== "string") {
263
432
  throw new Error(
@@ -292,11 +461,10 @@ class AssetGenerator extends Generator {
292
461
 
293
462
  if (typeof this.dataUrlOptions === "function") {
294
463
  encodedSource = this.dataUrlOptions.call(null, source.source(), {
295
- filename: module.matchResource || module.resource,
464
+ filename: /** @type {string} */ (module.getResource()),
296
465
  module
297
466
  });
298
467
  } else {
299
- /** @type {"base64" | false | undefined} */
300
468
  let encoding =
301
469
  /** @type {AssetGeneratorDataUrlOptions} */
302
470
  (this.dataUrlOptions).encoding;
@@ -319,12 +487,15 @@ class AssetGenerator extends Generator {
319
487
  module.resourceResolveData.encoding === encoding &&
320
488
  decodeDataUriContent(
321
489
  module.resourceResolveData.encoding,
322
- module.resourceResolveData.encodedContent
490
+ /** @type {string} */ (module.resourceResolveData.encodedContent)
323
491
  ).equals(source.buffer())
324
492
  ) {
325
493
  encodedContent = module.resourceResolveData.encodedContent;
326
494
  } else {
327
- encodedContent = encodeDataUri(encoding, source);
495
+ encodedContent = encodeDataUri(
496
+ /** @type {"base64" | false} */ (encoding),
497
+ source
498
+ );
328
499
  }
329
500
 
330
501
  encodedSource = `data:${mimeType}${
@@ -335,127 +506,6 @@ class AssetGenerator extends Generator {
335
506
  return encodedSource;
336
507
  }
337
508
 
338
- /**
339
- * @private
340
- * @param {NormalModule} module module for which the code should be generated
341
- * @param {GenerateContext} generateContext context for generate
342
- * @param {string} contentHash the content hash
343
- * @returns {{ filename: string, originalFilename: string, assetInfo: AssetInfo }} info
344
- */
345
- _getFilenameWithInfo(
346
- module,
347
- { runtime, runtimeTemplate, chunkGraph },
348
- contentHash
349
- ) {
350
- const assetModuleFilename =
351
- this.filename ||
352
- /** @type {AssetModuleFilename} */
353
- (runtimeTemplate.outputOptions.assetModuleFilename);
354
-
355
- const sourceFilename = this.getSourceFileName(module, runtimeTemplate);
356
- let { path: filename, info: assetInfo } =
357
- runtimeTemplate.compilation.getAssetPathWithInfo(assetModuleFilename, {
358
- module,
359
- runtime,
360
- filename: sourceFilename,
361
- chunkGraph,
362
- contentHash
363
- });
364
-
365
- const originalFilename = filename;
366
-
367
- if (this.outputPath) {
368
- const { path: outputPath, info } =
369
- runtimeTemplate.compilation.getAssetPathWithInfo(this.outputPath, {
370
- module,
371
- runtime,
372
- filename: sourceFilename,
373
- chunkGraph,
374
- contentHash
375
- });
376
- filename = path.posix.join(outputPath, filename);
377
- assetInfo = mergeAssetInfo(assetInfo, info);
378
- }
379
-
380
- return { originalFilename, filename, assetInfo };
381
- }
382
-
383
- /**
384
- * @private
385
- * @param {NormalModule} module module for which the code should be generated
386
- * @param {GenerateContext} generateContext context for generate
387
- * @param {string} filename the filename
388
- * @param {AssetInfo} assetInfo the asset info
389
- * @param {string} contentHash the content hash
390
- * @returns {{ assetPath: string, assetInfo: AssetInfo }} asset path and info
391
- */
392
- _getAssetPathWithInfo(
393
- module,
394
- { runtimeTemplate, runtime, chunkGraph, type, runtimeRequirements },
395
- filename,
396
- assetInfo,
397
- contentHash
398
- ) {
399
- const sourceFilename = this.getSourceFileName(module, runtimeTemplate);
400
-
401
- let assetPath;
402
-
403
- if (this.publicPath !== undefined && type === "javascript") {
404
- const { path, info } = runtimeTemplate.compilation.getAssetPathWithInfo(
405
- this.publicPath,
406
- {
407
- module,
408
- runtime,
409
- filename: sourceFilename,
410
- chunkGraph,
411
- contentHash
412
- }
413
- );
414
- assetInfo = mergeAssetInfo(assetInfo, info);
415
- assetPath = JSON.stringify(path + filename);
416
- } else if (this.publicPath !== undefined && type === "css-url") {
417
- const { path, info } = runtimeTemplate.compilation.getAssetPathWithInfo(
418
- this.publicPath,
419
- {
420
- module,
421
- runtime,
422
- filename: sourceFilename,
423
- chunkGraph,
424
- contentHash
425
- }
426
- );
427
- assetInfo = mergeAssetInfo(assetInfo, info);
428
- assetPath = path + filename;
429
- } else if (type === "javascript") {
430
- // add __webpack_require__.p
431
- runtimeRequirements.add(RuntimeGlobals.publicPath);
432
- assetPath = runtimeTemplate.concatenation(
433
- { expr: RuntimeGlobals.publicPath },
434
- filename
435
- );
436
- } else if (type === "css-url") {
437
- const compilation = runtimeTemplate.compilation;
438
- const path =
439
- compilation.outputOptions.publicPath === "auto"
440
- ? CssUrlDependency.PUBLIC_PATH_AUTO
441
- : compilation.getAssetPath(
442
- /** @type {TemplatePath} */
443
- (compilation.outputOptions.publicPath),
444
- {
445
- hash: compilation.hash
446
- }
447
- );
448
-
449
- assetPath = path + filename;
450
- }
451
-
452
- return {
453
- // eslint-disable-next-line object-shorthand
454
- assetPath: /** @type {string} */ (assetPath),
455
- assetInfo: { sourceFilename, ...assetInfo }
456
- };
457
- }
458
-
459
509
  /**
460
510
  * @param {NormalModule} module module for which the code should be generated
461
511
  * @param {GenerateContext} generateContext context for generate
@@ -472,7 +522,7 @@ class AssetGenerator extends Generator {
472
522
 
473
523
  let content;
474
524
 
475
- const needContent = type === "javascript" || type === "css-url";
525
+ const needContent = type === JAVASCRIPT_TYPE || type === CSS_URL_TYPE;
476
526
 
477
527
  const data = getData ? getData() : undefined;
478
528
 
@@ -483,66 +533,59 @@ class AssetGenerator extends Generator {
483
533
  ) {
484
534
  const encodedSource = this.generateDataUri(module);
485
535
  content =
486
- type === "javascript" ? JSON.stringify(encodedSource) : encodedSource;
536
+ type === JAVASCRIPT_TYPE
537
+ ? JSON.stringify(encodedSource)
538
+ : encodedSource;
487
539
 
488
540
  if (data) {
489
541
  data.set("url", { [type]: content, ...data.get("url") });
490
542
  }
491
543
  } else {
492
- const hash = createHash(
493
- /** @type {Algorithm} */
494
- (runtimeTemplate.outputOptions.hashFunction)
544
+ const [fullContentHash, contentHash] = AssetGenerator.getFullContentHash(
545
+ module,
546
+ runtimeTemplate
495
547
  );
496
548
 
497
- if (runtimeTemplate.outputOptions.hashSalt) {
498
- hash.update(runtimeTemplate.outputOptions.hashSalt);
499
- }
500
-
501
- hash.update(/** @type {Source} */ (module.originalSource()).buffer());
502
-
503
- const fullHash =
504
- /** @type {string} */
505
- (hash.digest(runtimeTemplate.outputOptions.hashDigest));
506
-
507
549
  if (data) {
508
- data.set("fullContentHash", fullHash);
550
+ data.set("fullContentHash", fullContentHash);
551
+ data.set("contentHash", contentHash);
509
552
  }
510
553
 
511
554
  /** @type {BuildInfo} */
512
- (module.buildInfo).fullContentHash = fullHash;
513
-
514
- /** @type {string} */
515
- const contentHash = nonNumericOnlyHash(
516
- fullHash,
517
- /** @type {number} */
518
- (generateContext.runtimeTemplate.outputOptions.hashDigestLength)
519
- );
520
-
521
- if (data) {
522
- data.set("contentHash", contentHash);
523
- }
555
+ (module.buildInfo).fullContentHash = fullContentHash;
524
556
 
525
557
  const { originalFilename, filename, assetInfo } =
526
- this._getFilenameWithInfo(module, generateContext, contentHash);
558
+ AssetGenerator.getFilenameWithInfo(
559
+ module,
560
+ { filename: this.filename, outputPath: this.outputPath },
561
+ generateContext,
562
+ contentHash
563
+ );
527
564
 
528
565
  if (data) {
529
566
  data.set("filename", filename);
530
567
  }
531
568
 
532
- let { assetPath, assetInfo: newAssetInfo } = this._getAssetPathWithInfo(
533
- module,
534
- generateContext,
535
- originalFilename,
536
- assetInfo,
537
- contentHash
538
- );
569
+ let { assetPath, assetInfo: newAssetInfo } =
570
+ AssetGenerator.getAssetPathWithInfo(
571
+ module,
572
+ { publicPath: this.publicPath },
573
+ generateContext,
574
+ originalFilename,
575
+ assetInfo,
576
+ contentHash
577
+ );
539
578
 
540
- if (data && (type === "javascript" || type === "css-url")) {
579
+ if (data && (type === JAVASCRIPT_TYPE || type === CSS_URL_TYPE)) {
541
580
  data.set("url", { [type]: assetPath, ...data.get("url") });
542
581
  }
543
582
 
544
- if (data && data.get("assetInfo")) {
545
- newAssetInfo = mergeAssetInfo(data.get("assetInfo"), newAssetInfo);
583
+ if (data) {
584
+ const oldAssetInfo = data.get("assetInfo");
585
+
586
+ if (oldAssetInfo) {
587
+ newAssetInfo = mergeAssetInfo(oldAssetInfo, newAssetInfo);
588
+ }
546
589
  }
547
590
 
548
591
  if (data) {
@@ -561,14 +604,14 @@ class AssetGenerator extends Generator {
561
604
  content = assetPath;
562
605
  }
563
606
 
564
- if (type === "javascript") {
607
+ if (type === JAVASCRIPT_TYPE) {
565
608
  if (concatenationScope) {
566
609
  concatenationScope.registerNamespaceExport(
567
610
  ConcatenationScope.NAMESPACE_OBJECT_EXPORT
568
611
  );
569
612
 
570
613
  return new RawSource(
571
- `${runtimeTemplate.supportsConst() ? "const" : "var"} ${
614
+ `${runtimeTemplate.renderConst()} ${
572
615
  ConcatenationScope.NAMESPACE_OBJECT_EXPORT
573
616
  } = ${content};`
574
617
  );
@@ -576,19 +619,41 @@ class AssetGenerator extends Generator {
576
619
 
577
620
  runtimeRequirements.add(RuntimeGlobals.module);
578
621
 
579
- return new RawSource(`${RuntimeGlobals.module}.exports = ${content};`);
580
- } else if (type === "css-url") {
622
+ return new RawSource(`${module.moduleArgument}.exports = ${content};`);
623
+ } else if (type === CSS_URL_TYPE) {
581
624
  return null;
582
625
  }
583
626
 
584
627
  return /** @type {Source} */ (module.originalSource());
585
628
  }
586
629
 
630
+ /**
631
+ * @param {Error} error the error
632
+ * @param {NormalModule} module module for which the code should be generated
633
+ * @param {GenerateContext} generateContext context for generate
634
+ * @returns {Source | null} generated code
635
+ */
636
+ generateError(error, module, generateContext) {
637
+ switch (generateContext.type) {
638
+ case "asset": {
639
+ return new RawSource(error.message);
640
+ }
641
+ case JAVASCRIPT_TYPE: {
642
+ return new RawSource(
643
+ `throw new Error(${JSON.stringify(error.message)});`
644
+ );
645
+ }
646
+ default:
647
+ return null;
648
+ }
649
+ }
650
+
587
651
  /**
588
652
  * @param {NormalModule} module fresh module
589
653
  * @returns {SourceTypes} available types (do not mutate)
590
654
  */
591
655
  getTypes(module) {
656
+ /** @type {Set<string>} */
592
657
  const sourceTypes = new Set();
593
658
  const connections = this._moduleGraph.getIncomingConnections(module);
594
659
 
@@ -601,27 +666,25 @@ class AssetGenerator extends Generator {
601
666
  }
602
667
 
603
668
  if ((module.buildInfo && module.buildInfo.dataUrl) || this.emit === false) {
604
- if (sourceTypes) {
605
- if (sourceTypes.has("javascript") && sourceTypes.has("css")) {
606
- return JS_AND_CSS_URL_TYPES;
607
- } else if (sourceTypes.has("javascript")) {
608
- return JS_TYPES;
609
- } else if (sourceTypes.has("css")) {
669
+ if (sourceTypes.size > 0) {
670
+ if (sourceTypes.has(JAVASCRIPT_TYPE) && sourceTypes.has(CSS_TYPE)) {
671
+ return JAVASCRIPT_AND_CSS_URL_TYPES;
672
+ } else if (sourceTypes.has(CSS_TYPE)) {
610
673
  return CSS_URL_TYPES;
611
674
  }
675
+ return JAVASCRIPT_TYPES;
612
676
  }
613
677
 
614
678
  return NO_TYPES;
615
679
  }
616
680
 
617
- if (sourceTypes) {
618
- if (sourceTypes.has("javascript") && sourceTypes.has("css")) {
619
- return ASSET_AND_JS_AND_CSS_URL_TYPES;
620
- } else if (sourceTypes.has("javascript")) {
621
- return ASSET_AND_JS_TYPES;
622
- } else if (sourceTypes.has("css")) {
681
+ if (sourceTypes.size > 0) {
682
+ if (sourceTypes.has(JAVASCRIPT_TYPE) && sourceTypes.has(CSS_TYPE)) {
683
+ return ASSET_AND_JAVASCRIPT_AND_CSS_URL_TYPES;
684
+ } else if (sourceTypes.has(CSS_TYPE)) {
623
685
  return ASSET_AND_CSS_URL_TYPES;
624
686
  }
687
+ return ASSET_AND_JAVASCRIPT_TYPES;
625
688
  }
626
689
 
627
690
  return ASSET_TYPES;
@@ -629,7 +692,7 @@ class AssetGenerator extends Generator {
629
692
 
630
693
  /**
631
694
  * @param {NormalModule} module the module
632
- * @param {string=} type source type
695
+ * @param {SourceType=} type source type
633
696
  * @returns {number} estimate size of the module
634
697
  */
635
698
  getSize(module, type) {
@@ -669,6 +732,7 @@ class AssetGenerator extends Generator {
669
732
  */
670
733
  updateHash(hash, updateHashContext) {
671
734
  const { module } = updateHashContext;
735
+
672
736
  if (
673
737
  /** @type {BuildInfo} */
674
738
  (module.buildInfo).dataUrl
@@ -704,7 +768,7 @@ class AssetGenerator extends Generator {
704
768
  const pathData = {
705
769
  module,
706
770
  runtime,
707
- filename: this.getSourceFileName(module, runtimeTemplate),
771
+ filename: AssetGenerator.getSourceFileName(module, runtimeTemplate),
708
772
  chunkGraph,
709
773
  contentHash: runtimeTemplate.contentHashReplacement
710
774
  };
@@ -722,9 +786,7 @@ class AssetGenerator extends Generator {
722
786
  }
723
787
 
724
788
  const assetModuleFilename =
725
- this.filename ||
726
- /** @type {AssetModuleFilename} */
727
- (runtimeTemplate.outputOptions.assetModuleFilename);
789
+ this.filename || runtimeTemplate.outputOptions.assetModuleFilename;
728
790
  const { path: filename, info } =
729
791
  runtimeTemplate.compilation.getAssetPathWithInfo(
730
792
  assetModuleFilename,