@depup/webpack 5.109.2-depup.0 → 5.110.3-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (647) hide show
  1. package/README.md +5 -5
  2. package/changes.json +7 -7
  3. package/lib/APIPlugin.js +123 -17
  4. package/lib/AsyncDependenciesBlock.js +10 -7
  5. package/lib/AutomaticPrefetchPlugin.js +1 -1
  6. package/lib/BannerPlugin.js +10 -6
  7. package/lib/CacheFacade.js +6 -6
  8. package/lib/Chunk.js +14 -11
  9. package/lib/ChunkGraph.js +46 -35
  10. package/lib/ChunkGroup.js +7 -7
  11. package/lib/ChunkTemplate.js +35 -44
  12. package/lib/CircularModulesPlugin.js +205 -28
  13. package/lib/CleanPlugin.js +4 -7
  14. package/lib/CodeGenerationResults.js +11 -8
  15. package/lib/CompatibilityPlugin.js +7 -7
  16. package/lib/Compilation.js +688 -409
  17. package/lib/Compiler.js +53 -38
  18. package/lib/ConcatenationScope.js +107 -8
  19. package/lib/ConditionalInitFragment.js +3 -3
  20. package/lib/ConstPlugin.js +13 -11
  21. package/lib/ContextExclusionPlugin.js +1 -1
  22. package/lib/ContextModule.js +146 -54
  23. package/lib/ContextModuleFactory.js +46 -14
  24. package/lib/ContextReplacementPlugin.js +12 -14
  25. package/lib/DefinePlugin.js +121 -37
  26. package/lib/DependenciesBlock.js +9 -6
  27. package/lib/Dependency.js +36 -16
  28. package/lib/DependencyTemplate.js +11 -12
  29. package/lib/DependencyTemplates.js +3 -3
  30. package/lib/DotenvPlugin.js +91 -26
  31. package/lib/DynamicEntryPlugin.js +8 -4
  32. package/lib/EntryOptionPlugin.js +8 -4
  33. package/lib/EntryPlugin.js +2 -2
  34. package/lib/Entrypoint.js +6 -2
  35. package/lib/EnvironmentPlugin.js +2 -2
  36. package/lib/EvalDevToolModulePlugin.js +8 -4
  37. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  38. package/lib/ExportsInfo.js +111 -14
  39. package/lib/ExportsInfoApiPlugin.js +2 -4
  40. package/lib/ExternalModule.js +232 -77
  41. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  42. package/lib/ExternalsPlugin.js +10 -6
  43. package/lib/FileSystemInfo.js +44 -70
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  45. package/lib/FlagDependencyExportsPlugin.js +76 -19
  46. package/lib/FlagDependencyUsagePlugin.js +40 -49
  47. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  48. package/lib/Generator.js +36 -15
  49. package/lib/HotModuleReplacementPlugin.js +16 -44
  50. package/lib/IgnorePlugin.js +8 -4
  51. package/lib/IgnoreWarningsPlugin.js +2 -2
  52. package/lib/InitFragment.js +8 -4
  53. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  54. package/lib/LazyBarrel.js +3 -4
  55. package/lib/LibraryTemplatePlugin.js +10 -6
  56. package/lib/LoaderOptionsPlugin.js +7 -3
  57. package/lib/LoaderTargetPlugin.js +1 -1
  58. package/lib/MainTemplate.js +49 -42
  59. package/lib/ManifestPlugin.js +12 -11
  60. package/lib/Module.js +62 -33
  61. package/lib/ModuleFactory.js +3 -3
  62. package/lib/ModuleFilenameHelpers.js +9 -4
  63. package/lib/ModuleGraph.js +195 -21
  64. package/lib/ModuleGraphConnection.js +6 -13
  65. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  66. package/lib/ModuleTemplate.js +62 -63
  67. package/lib/MultiCompiler.js +130 -64
  68. package/lib/MultiStats.js +40 -9
  69. package/lib/MultiWatching.js +3 -3
  70. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  71. package/lib/NodeStuffPlugin.js +29 -19
  72. package/lib/NormalModule.js +152 -103
  73. package/lib/NormalModuleFactory.js +555 -110
  74. package/lib/NormalModuleReplacementPlugin.js +5 -8
  75. package/lib/NullFactory.js +6 -2
  76. package/lib/OptionsApply.js +7 -3
  77. package/lib/Parser.js +7 -3
  78. package/lib/PlatformPlugin.js +2 -2
  79. package/lib/PrefetchPlugin.js +1 -1
  80. package/lib/ProgressPlugin.js +16 -13
  81. package/lib/ProvidePlugin.js +3 -5
  82. package/lib/RawModule.js +25 -17
  83. package/lib/RecordIdsPlugin.js +3 -3
  84. package/lib/RequestShortener.js +1 -1
  85. package/lib/ResolverFactory.js +2 -2
  86. package/lib/RuntimeGlobals.js +22 -10
  87. package/lib/RuntimeModule.js +29 -19
  88. package/lib/RuntimePlugin.js +335 -169
  89. package/lib/RuntimeTemplate.js +2761 -316
  90. package/lib/SelfModuleFactory.js +7 -3
  91. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  92. package/lib/SourceMapDevToolPlugin.js +30 -20
  93. package/lib/Stats.js +3 -4
  94. package/lib/Template.js +32 -22
  95. package/lib/TemplatedPathPlugin.js +96 -14
  96. package/lib/UseStrictPlugin.js +4 -6
  97. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  98. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  99. package/lib/WarnNoModeSetPlugin.js +1 -1
  100. package/lib/WatchIgnorePlugin.js +8 -6
  101. package/lib/Watching.js +8 -8
  102. package/lib/WebpackIsIncludedPlugin.js +2 -4
  103. package/lib/WebpackOptionsApply.js +308 -18
  104. package/lib/WebpackOptionsDefaulter.js +6 -2
  105. package/lib/asset/AssetBytesGenerator.js +12 -10
  106. package/lib/asset/AssetBytesParser.js +2 -4
  107. package/lib/asset/AssetGenerator.js +188 -95
  108. package/lib/asset/AssetModule.js +7 -3
  109. package/lib/asset/AssetModulesPlugin.js +110 -38
  110. package/lib/asset/AssetParser.js +9 -7
  111. package/lib/asset/AssetSourceGenerator.js +60 -13
  112. package/lib/asset/AssetSourceParser.js +2 -4
  113. package/lib/asset/RawDataUrlModule.js +24 -16
  114. package/lib/asset/WebManifestGenerator.js +8 -10
  115. package/lib/asset/WebManifestParser.js +24 -10
  116. package/lib/async-modules/AsyncModuleHelpers.js +12 -6
  117. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  118. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  119. package/lib/async-modules/isGeneratorLowered.js +4 -4
  120. package/lib/buildChunkGraph.js +36 -27
  121. package/lib/bun/BunTargetPlugin.js +1 -1
  122. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  123. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  124. package/lib/cache/IdleFileCachePlugin.js +2 -2
  125. package/lib/cache/MemoryCachePlugin.js +18 -10
  126. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  127. package/lib/cache/PackFileCacheStrategy.js +30 -23
  128. package/lib/cache/ResolverCachePlugin.js +38 -18
  129. package/lib/cache/getLazyHashedEtag.js +1 -2
  130. package/lib/cache/mergeEtags.js +1 -1
  131. package/lib/cli.js +1 -3
  132. package/lib/config/browserslistTargetHandler.js +41 -5
  133. package/lib/config/defaults.js +270 -78
  134. package/lib/config/defineConfig.js +10 -2
  135. package/lib/config/getClaimedAssetTypes.js +65 -0
  136. package/lib/config/normalization.js +46 -16
  137. package/lib/config/target.js +46 -3
  138. package/lib/container/ContainerEntryDependency.js +1 -1
  139. package/lib/container/ContainerEntryModule.js +24 -15
  140. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  141. package/lib/container/ContainerPlugin.js +9 -10
  142. package/lib/container/ContainerReferencePlugin.js +6 -2
  143. package/lib/container/FallbackDependency.js +1 -1
  144. package/lib/container/FallbackModule.js +24 -17
  145. package/lib/container/FallbackModuleFactory.js +7 -3
  146. package/lib/container/HoistContainerReferencesPlugin.js +6 -11
  147. package/lib/container/ModuleFederationPlugin.js +7 -24
  148. package/lib/container/RemoteModule.js +27 -19
  149. package/lib/container/RemoteRuntimeModule.js +10 -8
  150. package/lib/container/moduleFederationHooks.js +32 -0
  151. package/lib/css/CssGenerator.js +171 -43
  152. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  153. package/lib/css/CssLoadingRuntimeModule.js +84 -32
  154. package/lib/css/CssModule.js +10 -7
  155. package/lib/css/CssModulesPlugin.js +172 -100
  156. package/lib/css/CssParser.js +1113 -568
  157. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  158. package/lib/css/cssMinify.js +168 -0
  159. package/lib/css/data.js +5334 -0
  160. package/lib/css/syntax.js +9647 -232
  161. package/lib/debug/ProfilingPlugin.js +14 -9
  162. package/lib/deno/DenoTargetPlugin.js +1 -1
  163. package/lib/dependencies/AMDDefineDependency.js +112 -87
  164. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  165. package/lib/dependencies/AMDPlugin.js +9 -7
  166. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  167. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  168. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  169. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  170. package/lib/dependencies/AMDRequireDependency.js +8 -7
  171. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  172. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  173. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  174. package/lib/dependencies/CachedConstDependency.js +11 -8
  175. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  176. package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
  177. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  178. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  179. package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
  180. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
  181. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  182. package/lib/dependencies/CommonJsPlugin.js +35 -6
  183. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  184. package/lib/dependencies/CommonJsRequireDependency.js +170 -27
  185. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  186. package/lib/dependencies/ConstDependency.js +8 -9
  187. package/lib/dependencies/ContextDependency.js +12 -8
  188. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  189. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  190. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +24 -11
  191. package/lib/dependencies/ContextElementDependency.js +31 -12
  192. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  193. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  194. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  195. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  196. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  197. package/lib/dependencies/CssImportDependency.js +18 -9
  198. package/lib/dependencies/CssUrlDependency.js +17 -13
  199. package/lib/dependencies/DllEntryDependency.js +1 -1
  200. package/lib/dependencies/DynamicExports.js +2 -2
  201. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  202. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  203. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  204. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  205. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  206. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  207. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  208. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  209. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +23 -14
  210. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
  211. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  212. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  213. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
  214. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  215. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  216. package/lib/dependencies/HarmonyExports.js +7 -4
  217. package/lib/dependencies/HarmonyImportDependency.js +121 -60
  218. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
  219. package/lib/dependencies/HarmonyImportGuard.js +20 -30
  220. package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -9
  221. package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
  222. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  223. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  224. package/lib/dependencies/HtmlEntryDependency.js +49 -31
  225. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  226. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  227. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  228. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  229. package/lib/dependencies/ImportContextDependency.js +45 -5
  230. package/lib/dependencies/ImportDependency.js +33 -50
  231. package/lib/dependencies/ImportEagerDependency.js +6 -9
  232. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  233. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  234. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  235. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  236. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  237. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  238. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  239. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  241. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  242. package/lib/dependencies/ImportParserPlugin.js +73 -49
  243. package/lib/dependencies/ImportPhase.js +12 -5
  244. package/lib/dependencies/ImportPlugin.js +7 -3
  245. package/lib/dependencies/ImportWeakDependency.js +6 -9
  246. package/lib/dependencies/JsonExportsDependency.js +11 -7
  247. package/lib/dependencies/LoaderDependency.js +2 -2
  248. package/lib/dependencies/LoaderImportDependency.js +2 -2
  249. package/lib/dependencies/LoaderPlugin.js +11 -7
  250. package/lib/dependencies/LocalModuleDependency.js +5 -5
  251. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  252. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  253. package/lib/dependencies/ModuleDependency.js +9 -6
  254. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  255. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  256. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  257. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  258. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  259. package/lib/dependencies/NullDependency.js +3 -3
  260. package/lib/dependencies/ProvidedDependency.js +14 -10
  261. package/lib/dependencies/PureExpressionDependency.js +9 -10
  262. package/lib/dependencies/RequireContextDependency.js +2 -2
  263. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  264. package/lib/dependencies/RequireContextPlugin.js +8 -4
  265. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  266. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  267. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  268. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  269. package/lib/dependencies/RequireHeaderDependency.js +50 -12
  270. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  271. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  272. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  273. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  274. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  275. package/lib/dependencies/RequireResolveDependency.js +4 -4
  276. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  277. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  278. package/lib/dependencies/StaticExportsDependency.js +2 -2
  279. package/lib/dependencies/SystemPlugin.js +10 -6
  280. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  281. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  282. package/lib/dependencies/URLContextDependency.js +2 -2
  283. package/lib/dependencies/URLDependency.js +110 -64
  284. package/lib/dependencies/URLPlugin.js +7 -3
  285. package/lib/dependencies/UnsupportedDependency.js +4 -4
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  287. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  289. package/lib/dependencies/WorkerAndWorkletPlugin.js +47 -28
  290. package/lib/dependencies/WorkerDependency.js +22 -22
  291. package/lib/dependencies/WorkletDependency.js +18 -21
  292. package/lib/dependencies/getFunctionExpression.js +8 -4
  293. package/lib/dependencies/importOptionsCheck.js +47 -0
  294. package/lib/dependencies/processExportInfo.js +5 -5
  295. package/lib/dll/DelegatedModule.js +34 -22
  296. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  297. package/lib/dll/DelegatedPlugin.js +2 -2
  298. package/lib/dll/DllEntryPlugin.js +2 -2
  299. package/lib/dll/DllModule.js +22 -15
  300. package/lib/dll/DllModuleFactory.js +7 -3
  301. package/lib/dll/DllPlugin.js +7 -5
  302. package/lib/dll/DllReferencePlugin.js +10 -7
  303. package/lib/dll/LibManifestPlugin.js +5 -5
  304. package/lib/electron/ElectronTargetPlugin.js +53 -49
  305. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  306. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  307. package/lib/errors/BroadContextsWarning.js +43 -0
  308. package/lib/errors/BuildCycleError.js +1 -1
  309. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  310. package/lib/errors/ChunkRenderError.js +1 -1
  311. package/lib/errors/CircularDependenciesWarning.js +38 -0
  312. package/lib/errors/CodeGenerationError.js +1 -1
  313. package/lib/errors/CommentCompilationWarning.js +1 -1
  314. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  315. package/lib/errors/DotenvFileError.js +29 -0
  316. package/lib/errors/DuplicateModulesWarning.js +45 -0
  317. package/lib/errors/DynamicExportsWarning.js +30 -0
  318. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  319. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  320. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  321. package/lib/errors/EvalUsageWarning.js +28 -0
  322. package/lib/errors/HookWebpackError.js +5 -5
  323. package/lib/errors/HotspotsWarning.js +57 -0
  324. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  325. package/lib/errors/ImportedBindingAssignmentError.js +30 -0
  326. package/lib/errors/InlinedAssetsWarning.js +36 -0
  327. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  328. package/lib/errors/LargeModulesWarning.js +45 -0
  329. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  330. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  331. package/lib/errors/MixedExportsWarning.js +41 -0
  332. package/lib/errors/ModuleDependencyError.js +13 -16
  333. package/lib/errors/ModuleDependencyWarning.js +5 -15
  334. package/lib/errors/ModuleHashingError.js +1 -1
  335. package/lib/errors/ModuleNotFoundError.js +2 -2
  336. package/lib/errors/ModuleParseError.js +1 -2
  337. package/lib/errors/ModuleRestoreError.js +1 -1
  338. package/lib/errors/ModuleStoreError.js +1 -1
  339. package/lib/errors/NodeStuffInWebError.js +1 -1
  340. package/lib/errors/OsDependentRuleWarning.js +31 -0
  341. package/lib/errors/PureAnnotationsWarning.js +36 -0
  342. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  343. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  344. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  345. package/lib/errors/TinyChunksWarning.js +40 -0
  346. package/lib/errors/TopLevelThisWarning.js +34 -0
  347. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  348. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  349. package/lib/errors/UnusedAliasesWarning.js +29 -0
  350. package/lib/errors/UnusedDefinesWarning.js +29 -0
  351. package/lib/errors/UnusedExternalsWarning.js +29 -0
  352. package/lib/errors/UnusedReexportsWarning.js +42 -0
  353. package/lib/errors/UnusedRuleWarning.js +29 -0
  354. package/lib/errors/WebpackError.js +9 -5
  355. package/lib/errors/deriveStackFromNestedError.js +90 -0
  356. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  357. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  358. package/lib/esm/ModuleChunkLoadingPlugin.js +86 -51
  359. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
  360. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  361. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  362. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  363. package/lib/hmr/lazyCompilationBackend.js +9 -6
  364. package/lib/hmr/parserHooks.js +56 -0
  365. package/lib/html/HtmlGenerator.js +277 -77
  366. package/lib/html/HtmlModule.js +7 -3
  367. package/lib/html/HtmlModulesPlugin.js +366 -200
  368. package/lib/html/HtmlParser.js +31 -86
  369. package/lib/html/data.js +1928 -0
  370. package/lib/html/htmlMinify.js +288 -0
  371. package/lib/html/syntax.js +6034 -1384
  372. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  373. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  374. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  375. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  376. package/lib/ids/IdHelpers.js +7 -8
  377. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  378. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  379. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  380. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  381. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  382. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  383. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  384. package/lib/index.js +10 -0
  385. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  386. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  387. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  388. package/lib/javascript/ChunkHelpers.js +1 -1
  389. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  390. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  391. package/lib/javascript/JavascriptGenerator.js +65 -165
  392. package/lib/javascript/JavascriptModule.js +9 -3
  393. package/lib/javascript/JavascriptModulesPlugin.js +103 -123
  394. package/lib/javascript/JavascriptParser.js +242 -99
  395. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  396. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  397. package/lib/javascript/StartupHelpers.js +55 -9
  398. package/lib/javascript/syntax.js +2678 -232
  399. package/lib/json/JsonData.js +8 -4
  400. package/lib/json/JsonGenerator.js +38 -16
  401. package/lib/json/JsonModule.js +7 -3
  402. package/lib/json/JsonModulesPlugin.js +1 -1
  403. package/lib/json/JsonParser.js +5 -6
  404. package/lib/library/AbstractLibraryPlugin.js +20 -14
  405. package/lib/library/AmdLibraryPlugin.js +11 -7
  406. package/lib/library/AssignLibraryPlugin.js +19 -13
  407. package/lib/library/EnableLibraryPlugin.js +2 -2
  408. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  409. package/lib/library/JsonpLibraryPlugin.js +11 -7
  410. package/lib/library/ModuleLibraryPlugin.js +256 -64
  411. package/lib/library/SystemLibraryPlugin.js +12 -8
  412. package/lib/library/UmdLibraryPlugin.js +62 -25
  413. package/lib/loaders/LoaderRunner.js +47 -6
  414. package/lib/loaders/loadLoader.js +8 -4
  415. package/lib/logging/createConsoleLogger.js +7 -4
  416. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  417. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  418. package/lib/node/NodeSourcePlugin.js +1 -1
  419. package/lib/node/NodeTargetPlugin.js +4 -3
  420. package/lib/node/NodeTemplatePlugin.js +1 -1
  421. package/lib/node/NodeWatchFileSystem.js +70 -9
  422. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  423. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +65 -19
  424. package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
  425. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  426. package/lib/node/nodeConsole.js +7 -3
  427. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  428. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  429. package/lib/optimize/ConcatenatedModule.js +1030 -476
  430. package/lib/optimize/ConstExportsPlugin.js +16 -7
  431. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  432. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  433. package/lib/optimize/InlineExports.js +130 -5
  434. package/lib/optimize/InnerGraph.js +28 -12
  435. package/lib/optimize/InnerGraphPlugin.js +23 -18
  436. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  437. package/lib/optimize/MangleExportsPlugin.js +7 -8
  438. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  439. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  440. package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
  441. package/lib/optimize/RealContentHashPlugin.js +121 -41
  442. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  443. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  444. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  445. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  446. package/lib/optimize/SplitChunksPlugin.js +86 -24
  447. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  448. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  449. package/lib/performance/BroadContextsPlugin.js +142 -0
  450. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  451. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  452. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  453. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  454. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  455. package/lib/performance/DynamicExportsPlugin.js +120 -0
  456. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  457. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  458. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  459. package/lib/performance/EvalUsagePlugin.js +115 -0
  460. package/lib/performance/HotspotsPlugin.js +296 -0
  461. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  462. package/lib/performance/LargeModulesPlugin.js +126 -0
  463. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  464. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  465. package/lib/performance/MixedExportsPlugin.js +136 -0
  466. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  467. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  468. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  469. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  470. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  471. package/lib/performance/SizeLimitsPlugin.js +139 -7
  472. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  473. package/lib/performance/TinyChunksPlugin.js +128 -0
  474. package/lib/performance/TopLevelThisPlugin.js +208 -0
  475. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  476. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  477. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  478. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  479. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  480. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  481. package/lib/performance/getModuleSize.js +22 -0
  482. package/lib/performance/getSourceModules.js +22 -0
  483. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  484. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  485. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  486. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  487. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  488. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  489. package/lib/prefetch/ResourceHintPlugin.js +295 -79
  490. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  491. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  492. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  493. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  494. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  495. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  496. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  497. package/lib/rules/RuleSetCompiler.js +146 -12
  498. package/lib/rules/UseEffectRulePlugin.js +18 -11
  499. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  500. package/lib/runtime/AsyncModuleRuntimeModule.js +6 -2
  501. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  502. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  503. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  504. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  505. package/lib/runtime/CompatRuntimeModule.js +5 -3
  506. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  507. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  508. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  509. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  510. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  511. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  512. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  513. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  514. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  515. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  516. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  517. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  518. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  519. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  520. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  521. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +34 -7
  522. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  523. package/lib/runtime/NonceRuntimeModule.js +10 -0
  524. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  525. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  526. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  527. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  528. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  529. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  530. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  531. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  532. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  533. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  534. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  535. package/lib/runtime/baseUri.js +63 -0
  536. package/lib/schemes/DataUriPlugin.js +1 -1
  537. package/lib/schemes/FileUriPlugin.js +1 -1
  538. package/lib/schemes/HttpUriPlugin.js +46 -20
  539. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  540. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  541. package/lib/serialization/BinaryMiddleware.js +4 -4
  542. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  543. package/lib/serialization/FileMiddleware.js +22 -9
  544. package/lib/serialization/ObjectMiddleware.js +139 -114
  545. package/lib/serialization/PlainObjectSerializer.js +19 -16
  546. package/lib/sharing/ConsumeSharedModule.js +30 -21
  547. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  548. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  549. package/lib/sharing/ProvideSharedModule.js +25 -16
  550. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  551. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  552. package/lib/sharing/SharePlugin.js +17 -5
  553. package/lib/sharing/ShareRuntimeModule.js +4 -4
  554. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  555. package/lib/sharing/utils.js +1 -3
  556. package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
  557. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  558. package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
  559. package/lib/stats/StatsFactory.js +25 -26
  560. package/lib/stats/StatsPrinter.js +16 -12
  561. package/lib/typescript/TypeScriptPlugin.js +20 -24
  562. package/lib/url/URLParserPlugin.js +26 -13
  563. package/lib/util/ArrayQueue.js +3 -3
  564. package/lib/util/AsyncQueue.js +4 -3
  565. package/lib/util/Hash.js +5 -1
  566. package/lib/util/LazySet.js +35 -22
  567. package/lib/util/LocConverter.js +36 -13
  568. package/lib/util/SourceProcessor.js +1066 -24
  569. package/lib/util/StringXor.js +1 -1
  570. package/lib/util/URLAbsoluteSpecifier.js +3 -1
  571. package/lib/util/chainedImports.js +9 -5
  572. package/lib/util/cleverMerge.js +1 -1
  573. package/lib/util/comparators.js +45 -14
  574. package/lib/util/concatenate.js +203 -77
  575. package/lib/util/conventions.js +10 -2
  576. package/lib/util/createHash.js +2 -2
  577. package/lib/util/createHooksRegistry.js +8 -10
  578. package/lib/util/createMappings.js +25 -3
  579. package/lib/util/dataURL.js +225 -1
  580. package/lib/util/extractSourceMap.js +4 -3
  581. package/lib/util/findCaseMismatch.js +139 -0
  582. package/lib/util/formatLocation.js +1 -2
  583. package/lib/util/fs.js +22 -5
  584. package/lib/util/globUtils.js +298 -24
  585. package/lib/util/hash/BatchedHash.js +5 -1
  586. package/lib/util/hash/BulkUpdateHash.js +5 -1
  587. package/lib/util/hash/DebugHash.js +5 -1
  588. package/lib/util/hash/hash-digest.js +6 -2
  589. package/lib/util/identifier.js +4 -0
  590. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  591. package/lib/util/internalSerializables.js +8 -0
  592. package/lib/util/lazyModule.js +56 -0
  593. package/lib/util/makeSerializable.js +7 -3
  594. package/lib/util/matchAlias.js +25 -0
  595. package/lib/util/mimeTypes.js +11 -5
  596. package/lib/util/nonNumericOnlyHash.js +4 -3
  597. package/lib/util/parseJson.js +5 -3
  598. package/lib/util/preloadModuleType.js +32 -0
  599. package/lib/util/registerExternalSerializer.js +7 -5
  600. package/lib/util/removeBOM.js +82 -1
  601. package/lib/util/runtime.js +2 -2
  602. package/lib/util/semver.js +1 -1
  603. package/lib/util/serialization.js +28 -28
  604. package/lib/util/source.js +2 -2
  605. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  607. package/lib/wasm/wasmModuleFilename.js +54 -0
  608. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +43 -21
  609. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -21
  610. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  611. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  612. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  613. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  614. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  615. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +29 -8
  616. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  623. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +105 -19
  626. package/lib/web/FetchCompileWasmPlugin.js +48 -16
  627. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  629. package/lib/web/JsonpTemplatePlugin.js +2 -2
  630. package/lib/webpack.js +22 -11
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +1 -0
  635. package/package.json +32 -25
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +667 -34
  638. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  639. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  640. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  641. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  642. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  643. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  644. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  645. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  646. package/types.d.ts +3223 -465
  647. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -16,19 +16,18 @@ const {
16
16
  ASSET_TYPES,
17
17
  ASSET_URL_TYPE,
18
18
  ASSET_URL_TYPES,
19
- CSS_TYPE,
20
- HTML_TYPE,
21
19
  JAVASCRIPT_AND_ASSET_URL_TYPES,
22
20
  JAVASCRIPT_TYPE,
23
21
  JAVASCRIPT_TYPES,
24
22
  NO_TYPES
25
23
  } = require("../ModuleSourceTypeConstants");
26
- const {
27
- ASSET_MODULE_TYPE,
28
- ASSET_MODULE_TYPE_WEBMANIFEST
29
- } = require("../ModuleTypeConstants");
24
+ const { ASSET_MODULE_TYPE } = require("../ModuleTypeConstants");
30
25
  const RuntimeGlobals = require("../RuntimeGlobals");
26
+ const { toTemplateSourceFileName } = require("../TemplatedPathPlugin");
27
+ const URLDependency = require("../dependencies/URLDependency");
28
+ const { getScheme } = require("../util/URLAbsoluteSpecifier");
31
29
  const createHash = require("../util/createHash");
30
+ const { languageOfMediaType } = require("../util/dataURL");
32
31
  const { makePathsRelative } = require("../util/identifier");
33
32
  const memoize = require("../util/memoize");
34
33
  const nonNumericOnlyHash = require("../util/nonNumericOnlyHash");
@@ -40,47 +39,36 @@ const { updateHashFromSource } = require("../util/source");
40
39
 
41
40
  const getMimeTypes = memoize(() => require("../util/mimeTypes"));
42
41
 
43
- /** @typedef {import("webpack-sources").Source} Source */
44
- /** @typedef {import("../../declarations/WebpackOptions").AssetGeneratorDataUrlOptions} AssetGeneratorDataUrlOptions */
45
- /** @typedef {import("../../declarations/WebpackOptions").AssetGeneratorOptions} AssetGeneratorOptions */
46
- /** @typedef {import("../../declarations/WebpackOptions").AssetModuleFilename} AssetModuleFilename */
47
- /** @typedef {import("../../declarations/WebpackOptions").AssetModuleOutputPath} AssetModuleOutputPath */
48
- /** @typedef {import("../../declarations/WebpackOptions").AssetResourceGeneratorOptions} AssetResourceGeneratorOptions */
49
- /** @typedef {import("../../declarations/WebpackOptions").RawPublicPath} RawPublicPath */
50
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
51
- /** @typedef {import("../Compilation")} Compilation */
52
- /** @typedef {import("../Compilation").AssetInfo} AssetInfo */
53
- /** @typedef {import("../Generator").GenerateContext} GenerateContext */
54
- /** @typedef {import("../Generator").UpdateHashContext} UpdateHashContext */
55
- /** @typedef {import("../Module")} Module */
56
- /** @typedef {import("../Module").NameForCondition} NameForCondition */
57
- /** @typedef {import("./AssetModule").AssetModuleBuildInfo} AssetModuleBuildInfo */
58
- /** @typedef {import("../Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
59
- /** @typedef {import("../Module").SourceType} SourceType */
60
- /** @typedef {import("../Module").SourceTypes} SourceTypes */
61
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
62
- /** @typedef {import("../NormalModule")} NormalModule */
63
- /** @typedef {import("../dependencies/URLDependency")} URLDependency */
64
- /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
65
- /** @typedef {import("../util/Hash")} Hash */
66
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
67
-
68
- /** @typedef {(source: string | Buffer, context: { filename: string, module: Module }) => string} DataUrlFunction */
69
-
70
- // slash separating a module type from its subtype (`css/auto` -> `css`)
71
- const TYPE_SEPARATOR_CHAR_CODE = 47;
72
-
42
+ /** @import { Source } from "webpack-sources" */
43
+ /**
44
+ * @import {
45
+ * AssetGeneratorDataUrlOptions,
46
+ * AssetGeneratorOptions,
47
+ * AssetModuleFilename,
48
+ * AssetModuleOutputPath,
49
+ * AssetResourceGeneratorOptions,
50
+ * RawPublicPath
51
+ * } from "../../declarations/WebpackOptions"
52
+ */
53
+ /** @import ChunkGraph from "../ChunkGraph" */
54
+ /** @import Compilation, { AssetInfo } from "../Compilation" */
55
+ /** @import { GenerateContext, UpdateHashContext } from "../Generator" */
73
56
  /**
74
- * Whether a module type's prefix (the part before `/`) equals `prefix`, without
75
- * allocating the substring `type.split("/")[0]` would produce.
76
- * @param {string} type module type (e.g. `javascript/auto`)
77
- * @param {string} prefix expected prefix (e.g. `javascript`)
78
- * @returns {boolean} whether the type's prefix equals `prefix`
57
+ * @import Module, {
58
+ * NameForCondition,
59
+ * ConcatenationBailoutReasonContext,
60
+ * SourceType,
61
+ * SourceTypes
62
+ * } from "../Module"
79
63
  */
80
- const typePrefixEquals = (type, prefix) =>
81
- type.startsWith(prefix) &&
82
- (type.length === prefix.length ||
83
- type.charCodeAt(prefix.length) === TYPE_SEPARATOR_CHAR_CODE);
64
+ /** @import { AssetModuleBuildInfo } from "./AssetModule" */
65
+ /** @import ModuleGraph from "../ModuleGraph" */
66
+ /** @import NormalModule from "../NormalModule" */
67
+ /** @import RuntimeTemplate from "../RuntimeTemplate" */
68
+ /** @import Hash from "../util/Hash" */
69
+ /** @import { RuntimeSpec } from "../util/runtime" */
70
+
71
+ /** @typedef {(source: string | Buffer, context: { filename: string, module: Module }) => string} DataUrlFunction */
84
72
 
85
73
  /**
86
74
  * Merges maybe arrays.
@@ -268,6 +256,22 @@ class AssetGenerator extends Generator {
268
256
  ).replace(/^\.\//, "");
269
257
  }
270
258
 
259
+ /**
260
+ * Gets the source file name as seen by a filename template. With
261
+ * `experiments.futureDefaults` (webpack 6 default) `[path]` and `[file]` of a
262
+ * module outside of `context` behave like `[containedpath]`/`[containedfile]`,
263
+ * so they can't emit the asset outside of `output.path`.
264
+ * @param {NormalModule} module module
265
+ * @param {RuntimeTemplate} runtimeTemplate runtime template
266
+ * @returns {string} source file name for the filename template
267
+ */
268
+ static getTemplateSourceFileName(module, runtimeTemplate) {
269
+ return toTemplateSourceFileName(
270
+ AssetGenerator.getSourceFileName(module, runtimeTemplate),
271
+ runtimeTemplate.compilation
272
+ );
273
+ }
274
+
271
275
  /**
272
276
  * Gets full content hash.
273
277
  * @param {NormalModule} module module
@@ -323,7 +327,9 @@ class AssetGenerator extends Generator {
323
327
  generatorOptions.filename ||
324
328
  runtimeTemplate.outputOptions.assetModuleFilename;
325
329
 
326
- const sourceFilename = AssetGenerator.getSourceFileName(
330
+ // Both templates decide where the asset is written, so they see the
331
+ // contained path.
332
+ const templateSourceFilename = AssetGenerator.getTemplateSourceFileName(
327
333
  module,
328
334
  runtimeTemplate
329
335
  );
@@ -331,7 +337,7 @@ class AssetGenerator extends Generator {
331
337
  runtimeTemplate.compilation.getAssetPathWithInfo(assetModuleFilename, {
332
338
  module,
333
339
  runtime,
334
- filename: sourceFilename,
340
+ filename: templateSourceFilename,
335
341
  chunkGraph,
336
342
  contentHash,
337
343
  contentHashFull: fullContentHash
@@ -346,7 +352,7 @@ class AssetGenerator extends Generator {
346
352
  {
347
353
  module,
348
354
  runtime,
349
- filename: sourceFilename,
355
+ filename: templateSourceFilename,
350
356
  chunkGraph,
351
357
  contentHash,
352
358
  contentHashFull: fullContentHash
@@ -379,6 +385,8 @@ class AssetGenerator extends Generator {
379
385
  contentHash,
380
386
  fullContentHash
381
387
  ) {
388
+ // A public path is a url prefix, it doesn't decide where the asset is
389
+ // written, so `[path]` stays the real path of the source file here.
382
390
  const sourceFilename = AssetGenerator.getSourceFileName(
383
391
  module,
384
392
  runtimeTemplate
@@ -419,12 +427,34 @@ class AssetGenerator extends Generator {
419
427
  assetInfo = mergeAssetInfo(assetInfo, info);
420
428
  assetPath = path + filename;
421
429
  } else if (type === JAVASCRIPT_TYPE) {
422
- // add __webpack_require__.p
423
- runtimeRequirements.add(RuntimeGlobals.publicPath);
424
- assetPath = runtimeTemplate.concatenation(
425
- { expr: RuntimeGlobals.publicPath },
426
- filename
427
- );
430
+ // `auto` reads `.p` as this asset's own directory url, which the absolute
431
+ // `href` spells too; a complete url of its own is already the whole string.
432
+ const constant = runtimeTemplate.constantPublicPath();
433
+ const whole =
434
+ constant !== undefined &&
435
+ (constant.startsWith("//") || getScheme(constant) !== undefined);
436
+ const analyzable =
437
+ (runtimeTemplate.outputOptions.publicPath === "auto" || whole) &&
438
+ runtimeTemplate.supportsAnalyzable("url", chunkGraph, module)
439
+ ? runtimeTemplate.getAnalyzableAssetUrl(
440
+ module,
441
+ chunkGraph,
442
+ filename,
443
+ runtime
444
+ )
445
+ : null;
446
+ if (analyzable !== null) {
447
+ assetPath = whole
448
+ ? analyzable
449
+ : `${runtimeTemplate.importMetaUrl(analyzable)}.href`;
450
+ } else {
451
+ // add __webpack_require__.p
452
+ runtimeRequirements.add(RuntimeGlobals.publicPath);
453
+ assetPath = runtimeTemplate.concatenation(
454
+ { expr: RuntimeGlobals.publicPath },
455
+ filename
456
+ );
457
+ }
428
458
  } else if (type === ASSET_URL_TYPE) {
429
459
  const compilation = runtimeTemplate.compilation;
430
460
  const path =
@@ -510,13 +540,45 @@ class AssetGenerator extends Generator {
510
540
  return /** @type {string} */ (mimeType);
511
541
  }
512
542
 
543
+ /**
544
+ * Offer the payload to `renderEmbeddedSource` before it is encoded, so the
545
+ * encoding covers what came back. Declines what names no language, and a
546
+ * `dataUrl` function, which is handed the source itself.
547
+ * @param {NormalModule} module the module holding the payload
548
+ * @param {GenerateContext["runtimeTemplate"]} runtimeTemplate runtime template
549
+ * @returns {Source | undefined} the rendered payload, when one came back
550
+ */
551
+ _renderEmbedded(module, runtimeTemplate) {
552
+ if (!runtimeTemplate || typeof this.dataUrlOptions === "function") {
553
+ return undefined;
554
+ }
555
+ // Untapped, nothing can change: no mime lookup and no copy of the payload.
556
+ const { compilation } = runtimeTemplate;
557
+ if (compilation.hooks.renderEmbeddedSource.taps.length === 0) {
558
+ return undefined;
559
+ }
560
+ const type = languageOfMediaType(this.getMimeType(module));
561
+ if (type === undefined) return undefined;
562
+ // An asset's source holds bytes; the hook is offered text, and the language
563
+ // above is only ever one written as text.
564
+ const content = /** @type {Source} */ (module.originalSource()).source();
565
+ return compilation._resolveEmbeddedSource(
566
+ new RawSource(
567
+ typeof content === "string" ? content : content.toString("utf8")
568
+ ),
569
+ { type, hostType: JAVASCRIPT_TYPE, module }
570
+ );
571
+ }
572
+
513
573
  /**
514
574
  * Generates data uri.
515
575
  * @param {NormalModule} module module for which the code should be generated
576
+ * @param {Source=} renderedSource the payload to encode, when a hook rendered it
516
577
  * @returns {string} DataURI
517
578
  */
518
- generateDataUri(module) {
519
- const source = /** @type {Source} */ (module.originalSource());
579
+ generateDataUri(module, renderedSource) {
580
+ const source =
581
+ renderedSource || /** @type {Source} */ (module.originalSource());
520
582
 
521
583
  /** @type {string} */
522
584
  let encodedSource;
@@ -597,7 +659,14 @@ class AssetGenerator extends Generator {
597
659
  (module.buildInfo).dataUrl &&
598
660
  needContent
599
661
  ) {
600
- const encodedSource = this.generateDataUri(module);
662
+ // A payload bound for CSS or HTML is offered by their serializers, which
663
+ // see the `url()` it ends up in; only the JavaScript one is ours.
664
+ const encodedSource = this.generateDataUri(
665
+ module,
666
+ type === JAVASCRIPT_TYPE
667
+ ? this._renderEmbedded(module, runtimeTemplate)
668
+ : undefined
669
+ );
601
670
  content =
602
671
  type === JAVASCRIPT_TYPE
603
672
  ? JSON.stringify(encodedSource)
@@ -708,9 +777,7 @@ class AssetGenerator extends Generator {
708
777
  return new RawSource(error.message);
709
778
  }
710
779
  case JAVASCRIPT_TYPE: {
711
- return new RawSource(
712
- `throw new Error(${JSON.stringify(error.message)});`
713
- );
780
+ return new RawSource(Generator.throwBuildErrorCode(error));
714
781
  }
715
782
  default:
716
783
  return null;
@@ -745,11 +812,25 @@ class AssetGenerator extends Generator {
745
812
  getTypes(module) {
746
813
  const connections = this._moduleGraph.getIncomingConnections(module);
747
814
 
748
- // Only ESM output can drop a bare `new URL()` to an analyzable asset-url; without
815
+ // One that emits nothing has no name to build a literal from, so expose its url.
816
+ const emits =
817
+ !(
818
+ module.buildInfo &&
819
+ /** @type {AssetModuleBuildInfo} */ (module.buildInfo).dataUrl
820
+ ) && this.emit !== false;
821
+
822
+ // Only analyzable ESM output can drop a bare `new URL()` to an asset-url; without
749
823
  // it every JS consumer needs the wrapper, so skip the per-connection dependency
750
- // probe entirely and keep the pre-existing cheap path.
824
+ // probe entirely and keep the pre-existing cheap path. Must match the condition
825
+ // `URLDependency` uses to emit the literal, or the wrapper is dropped while the
826
+ // call site still requires the module — except where the fallback spells the name
827
+ // itself (`.p + <file>`), which needs no wrapper to read it out of.
828
+ // Build-time execution instead emulates the wrapper (`AssetModulesPlugin`).
751
829
  const isModule = Boolean(
752
- this._compilation && this._compilation.outputOptions.module
830
+ this._compilation &&
831
+ this._compilation.runtimeTemplate.supportsAnalyzable(
832
+ emits ? "url-inline" : "url"
833
+ )
753
834
  );
754
835
 
755
836
  // Collapse the incoming origin types into flags instead of a Set of prefixes:
@@ -769,45 +850,38 @@ class AssetGenerator extends Generator {
769
850
  continue;
770
851
  }
771
852
  hasOrigin = true;
772
- const originType = originModule.type;
773
- if (originType === ASSET_MODULE_TYPE_WEBMANIFEST) {
853
+ // The dependency says how the asset is read, so a reference added later answers
854
+ // for itself; concatenation re-points the origin module, so it cannot.
855
+ const dependency = connection.dependency;
856
+ if (dependency && dependency.referencedSourceType === ASSET_URL_TYPE) {
774
857
  hasUrl = true;
775
- } else if (typePrefixEquals(originType, JAVASCRIPT_TYPE)) {
776
- // Only a bare `new URL()` becomes the analyzable literal; relative and
777
- // prefetch/preload refs keep the runtime form and still need the wrapper.
778
- const dependency = isModule && connection.dependency;
779
- if (
780
- dependency &&
781
- dependency.type === "new URL()" &&
782
- !(/** @type {URLDependency} */ (dependency).relative) &&
783
- !(/** @type {URLDependency} */ (dependency).prefetch) &&
784
- !(/** @type {URLDependency} */ (dependency).preload)
785
- ) {
786
- hasUrlJs = true;
787
- } else {
788
- hasOtherJs = true;
789
- }
790
858
  } else if (
791
- typePrefixEquals(originType, CSS_TYPE) ||
792
- typePrefixEquals(originType, HTML_TYPE)
859
+ // Only a bare `new URL()` becomes the analyzable literal; a relative ref
860
+ // keeps the runtime form and still needs the wrapper. Prefetch/preload
861
+ // refs don't: their `<link>` is emitted at chunk startup, which resolves
862
+ // the href from the asset filename when there is no wrapper.
863
+ isModule &&
864
+ dependency instanceof URLDependency &&
865
+ !dependency.relative
793
866
  ) {
794
- hasUrl = true;
867
+ hasUrlJs = true;
868
+ } else {
869
+ hasOtherJs = true;
795
870
  }
796
871
  // Once a non-URL JS consumer and a url consumer coexist the result is fixed.
797
872
  if (hasOtherJs && hasUrl) break;
798
873
  }
799
874
 
875
+ // Every javascript consumer names the file itself, so nothing reads the wrapper.
876
+ // Only an absolute public path settles one url for all of them to share.
877
+ const jsWrapperUnused = isModule && hasUrlJs && !hasOtherJs;
800
878
  const jsAsAssetUrl =
801
- isModule && hasUrlJs && !hasOtherJs && this._hasAbsolutePublicPath();
802
- // JS wrapper is needed for non-URL JS consumers, or URL consumers not dropped to asset-url.
803
- const wantJs = hasOtherJs || (hasUrlJs && !jsAsAssetUrl);
879
+ jsWrapperUnused && (!emits || this._hasAbsolutePublicPath());
880
+ // JS wrapper is needed for non-URL JS consumers, or URL consumers still reading it.
881
+ const wantJs = hasOtherJs || (hasUrlJs && !jsWrapperUnused);
804
882
  const wantUrl = hasUrl || jsAsAssetUrl;
805
883
 
806
- if (
807
- (module.buildInfo &&
808
- /** @type {AssetModuleBuildInfo} */ (module.buildInfo).dataUrl) ||
809
- this.emit === false
810
- ) {
884
+ if (!emits) {
811
885
  if (hasOrigin) {
812
886
  if (wantJs && wantUrl) {
813
887
  return JAVASCRIPT_AND_ASSET_URL_TYPES;
@@ -825,6 +899,9 @@ class AssetGenerator extends Generator {
825
899
  return ASSET_AND_JAVASCRIPT_AND_ASSET_URL_TYPES;
826
900
  } else if (wantUrl) {
827
901
  return ASSET_AND_ASSET_URL_TYPES;
902
+ } else if (jsWrapperUnused) {
903
+ // Every javascript consumer names the file itself, so nothing reads it.
904
+ return ASSET_TYPES;
828
905
  }
829
906
  return ASSET_AND_JAVASCRIPT_TYPES;
830
907
  }
@@ -892,6 +969,14 @@ class AssetGenerator extends Generator {
892
969
  (module.buildInfo).dataUrl
893
970
  ) {
894
971
  hash.update("data-url");
972
+ // What a tap varies on has to reach the key, or a changed option replays.
973
+ const { runtimeTemplate } = updateHashContext;
974
+ if (
975
+ runtimeTemplate &&
976
+ runtimeTemplate.compilation.hooks.renderEmbeddedSource.taps.length > 0
977
+ ) {
978
+ runtimeTemplate.compilation.hooks.embeddedSourceHash.call(module, hash);
979
+ }
895
980
  // this.dataUrlOptions as function should be pure and only depend on input source and filename
896
981
  // therefore it doesn't need to be hashed
897
982
  if (typeof this.dataUrlOptions === "function") {
@@ -941,11 +1026,19 @@ class AssetGenerator extends Generator {
941
1026
 
942
1027
  const assetModuleFilename =
943
1028
  this.filename || runtimeTemplate.outputOptions.assetModuleFilename;
1029
+ // Hash what generation emits: the filename template sees the contained
1030
+ // path, unlike the public path above.
944
1031
  const { path: filename, info } =
945
- runtimeTemplate.compilation.getAssetPathWithInfo(
946
- assetModuleFilename,
947
- pathData
948
- );
1032
+ runtimeTemplate.compilation.getAssetPathWithInfo(assetModuleFilename, {
1033
+ module,
1034
+ runtime,
1035
+ filename: AssetGenerator.getTemplateSourceFileName(
1036
+ module,
1037
+ runtimeTemplate
1038
+ ),
1039
+ chunkGraph,
1040
+ contentHash: runtimeTemplate.contentHashReplacement
1041
+ });
949
1042
  hash.update(filename);
950
1043
  hash.update(JSON.stringify(info));
951
1044
  }
@@ -7,9 +7,13 @@
7
7
  const NormalModule = require("../NormalModule");
8
8
  const makeSerializable = require("../util/makeSerializable");
9
9
 
10
- /** @typedef {import("../Compilation").AssetInfo} AssetInfo */
11
- /** @typedef {import("../NormalModule").NormalModuleBuildInfo} NormalModuleBuildInfo */
12
- /** @typedef {import("../NormalModule").NormalModuleCreateData} NormalModuleCreateData */
10
+ /** @import { AssetInfo } from "../Compilation" */
11
+ /**
12
+ * @import {
13
+ * NormalModuleBuildInfo,
14
+ * NormalModuleCreateData
15
+ * } from "../NormalModule"
16
+ */
13
17
 
14
18
  /**
15
19
  * Defines the build info properties specific to asset modules.