@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
@@ -36,51 +36,57 @@ const { cleverMerge } = require("../util/cleverMerge");
36
36
  const {
37
37
  getDefaultTarget,
38
38
  getTargetProperties,
39
+ getTargetsBrowsers,
39
40
  getTargetsProperties
40
41
  } = require("./target");
41
42
 
42
- /** @typedef {import("../../declarations/WebpackOptions").CacheOptionsNormalized} CacheOptionsNormalized */
43
- /** @typedef {import("../../declarations/WebpackOptions").Context} Context */
44
- /** @typedef {import("../../declarations/WebpackOptions").DevTool} Devtool */
45
- /** @typedef {import("../../declarations/WebpackOptions").CssGeneratorOptions} CssGeneratorOptions */
46
- /** @typedef {import("../../declarations/WebpackOptions").EntryDescription} EntryDescription */
47
- /** @typedef {import("../../declarations/WebpackOptions").EntryNormalized} Entry */
48
- /** @typedef {import("../../declarations/WebpackOptions").Environment} Environment */
49
- /** @typedef {import("../../declarations/WebpackOptions").Experiments} Experiments */
50
- /** @typedef {import("../../declarations/WebpackOptions").ExperimentsNormalized} ExperimentsNormalized */
51
- /** @typedef {import("../../declarations/WebpackOptions").ExternalsPresets} ExternalsPresets */
52
- /** @typedef {import("../../declarations/WebpackOptions").ExternalsType} ExternalsType */
53
- /** @typedef {import("../../declarations/WebpackOptions").FileCacheOptions} FileCacheOptions */
54
- /** @typedef {import("../../declarations/WebpackOptions").GeneratorOptionsByModuleTypeKnown} GeneratorOptionsByModuleTypeKnown */
55
- /** @typedef {import("../../declarations/WebpackOptions").InfrastructureLogging} InfrastructureLogging */
56
- /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
57
- /** @typedef {import("../../declarations/WebpackOptions").JsonGeneratorOptions} JsonGeneratorOptions */
58
- /** @typedef {import("../../declarations/WebpackOptions").Library} Library */
59
- /** @typedef {import("../../declarations/WebpackOptions").LibraryName} LibraryName */
60
- /** @typedef {import("../../declarations/WebpackOptions").LibraryType} LibraryType */
61
- /** @typedef {import("../../declarations/WebpackOptions").Loader} Loader */
62
- /** @typedef {import("../../declarations/WebpackOptions").Mode} Mode */
63
- /** @typedef {import("../../declarations/WebpackOptions").HashFunction} HashFunction */
64
- /** @typedef {import("../../declarations/WebpackOptions").HashSalt} HashSalt */
65
- /** @typedef {import("../../declarations/WebpackOptions").HashDigest} HashDigest */
66
- /** @typedef {import("../../declarations/WebpackOptions").HashDigestLength} HashDigestLength */
67
- /** @typedef {import("../../declarations/WebpackOptions").ModuleOptionsNormalized} ModuleOptions */
68
- /** @typedef {import("../../declarations/WebpackOptions").Node} WebpackNode */
69
- /** @typedef {import("../../declarations/WebpackOptions").OptimizationNormalized} Optimization */
70
- /** @typedef {import("../../declarations/WebpackOptions").OptimizationSplitChunksOptions} OptimizationSplitChunksOptions */
71
- /** @typedef {import("../../declarations/WebpackOptions").OutputNormalized} Output */
72
- /** @typedef {import("../../declarations/WebpackOptions").ParserOptionsByModuleTypeKnown} ParserOptionsByModuleTypeKnown */
73
- /** @typedef {import("../../declarations/WebpackOptions").Performance} Performance */
74
- /** @typedef {import("../../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
75
- /** @typedef {import("../../declarations/WebpackOptions").RuleSetRule} RuleSetRule */
76
- /** @typedef {import("../../declarations/WebpackOptions").RuleSetRules} RuleSetRules */
77
- /** @typedef {import("../../declarations/WebpackOptions").SnapshotOptions} SnapshotOptions */
78
- /** @typedef {import("../../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptionsNormalized */
79
- /** @typedef {import("../Module")} Module */
80
- /** @typedef {import("../javascript/EnableChunkLoadingPlugin").ChunkLoadingTypes} ChunkLoadingTypes */
81
- /** @typedef {import("../wasm/EnableWasmLoadingPlugin").WasmLoadingTypes} WasmLoadingTypes */
82
- /** @typedef {import("./target").PlatformTargetProperties} PlatformTargetProperties */
83
- /** @typedef {import("./target").TargetProperties} TargetProperties */
43
+ /**
44
+ * @import {
45
+ * CacheOptionsNormalized,
46
+ * Context,
47
+ * DevTool as Devtool,
48
+ * CssGeneratorOptions,
49
+ * EntryDescription,
50
+ * EntryNormalized as Entry,
51
+ * Environment,
52
+ * Experiments,
53
+ * ExperimentsNormalized,
54
+ * ExternalsPresets,
55
+ * ExternalsType,
56
+ * FileCacheOptions,
57
+ * GeneratorOptionsByModuleTypeKnown,
58
+ * InfrastructureLogging,
59
+ * JavascriptParserOptions,
60
+ * JsonGeneratorOptions,
61
+ * Library,
62
+ * LibraryName,
63
+ * LibraryType,
64
+ * Loader,
65
+ * Mode,
66
+ * HashFunction,
67
+ * HashSalt,
68
+ * ModuleOptionsNormalized as ModuleOptions,
69
+ * Node as WebpackNode,
70
+ * OptimizationMinimizeOptions,
71
+ * OptimizationNormalized as Optimization,
72
+ * OptimizationSplitChunksOptions,
73
+ * OutputNormalized as Output,
74
+ * ParserOptionsByModuleTypeKnown,
75
+ * Performance,
76
+ * ResolveOptions,
77
+ * RuleSetRules,
78
+ * SnapshotOptions,
79
+ * WebpackOptionsNormalized
80
+ * } from "../../declarations/WebpackOptions"
81
+ */
82
+ /** @import Module from "../Module" */
83
+ /**
84
+ * @import {
85
+ * ChunkLoadingTypes
86
+ * } from "../javascript/EnableChunkLoadingPlugin"
87
+ */
88
+ /** @import { WasmLoadingTypes } from "../wasm/EnableWasmLoadingPlugin" */
89
+ /** @import { PlatformTargetProperties, TargetProperties } from "./target" */
84
90
 
85
91
  /**
86
92
  * Defines the recursive non nullable type used by this module.
@@ -173,6 +179,7 @@ const {
173
179
  * portableRecords: NonNullable<Optimization["portableRecords"]>,
174
180
  * realContentHash: NonNullable<Optimization["realContentHash"]>,
175
181
  * minimize: NonNullable<Optimization["minimize"]>,
182
+ * minimizeOptions: NonNullable<Optimization["minimizeOptions"]>,
176
183
  * minimizer: NonNullable<Exclude<Optimization["minimizer"], "...">>,
177
184
  * nodeEnv: NonNullable<Optimization["nodeEnv"]>,
178
185
  * }} OptimizationNormalizedWithDefaults
@@ -361,30 +368,6 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
361
368
  rules: options.module.rules
362
369
  });
363
370
 
364
- // After experiments are resolved: the default dev source map depends on the
365
- // (possibly "auto"-resolved) `experiments.css` value.
366
- F(
367
- options,
368
- "devtool",
369
- () =>
370
- /** @type {Devtool} */ (
371
- development
372
- ? [
373
- options.experiments.css
374
- ? {
375
- type: "css",
376
- use: "source-map"
377
- }
378
- : undefined,
379
- {
380
- type: "javascript",
381
- use: "eval"
382
- }
383
- ].filter(Boolean)
384
- : false
385
- )
386
- );
387
-
388
371
  const futureDefaults =
389
372
  /** @type {NonNullable<ExperimentsNormalized["futureDefaults"]>} */
390
373
  (options.experiments.futureDefaults);
@@ -436,6 +419,36 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
436
419
  (options.experiments.asyncWebAssembly)
437
420
  });
438
421
 
422
+ // Placed after `applyOutputDefaults`, which settles `enabledLibraryTypes`. A library
423
+ // is read by another bundler, where an eval wrapper hides `import.meta` from it.
424
+ const noDevSourceMap = /** @type {LibraryType[]} */ (
425
+ options.output.enabledLibraryTypes
426
+ ).some(
427
+ (type) => futureDefaults || type === "module" || type === "modern-module"
428
+ );
429
+
430
+ F(
431
+ options,
432
+ "devtool",
433
+ () =>
434
+ /** @type {Devtool} */ (
435
+ development && !noDevSourceMap
436
+ ? [
437
+ options.experiments.css
438
+ ? {
439
+ type: "css",
440
+ use: "source-map"
441
+ }
442
+ : undefined,
443
+ {
444
+ type: "javascript",
445
+ use: "eval"
446
+ }
447
+ ].filter(Boolean)
448
+ : false
449
+ )
450
+ );
451
+
439
452
  applyModuleDefaults(options.module, {
440
453
  cache,
441
454
  hashSalt: /** @type {NonNullable<Output["hashSalt"]>} */ (
@@ -634,11 +647,15 @@ const applyExperimentsDefaults = (
634
647
  "asyncWebAssembly",
635
648
  experiments.futureDefaults ? true : "auto"
636
649
  );
637
- // the universal target (web + node, neither specific) only works as ESM
650
+ // the universal target (web + node, neither specific) only works as ESM —
651
+ // unless the target cannot read one, which no output format can repair, so
652
+ // leave `output.chunkFormat` to say so rather than emitting a module the
653
+ // target has already reported it will not load
638
654
  const universal =
639
655
  Boolean(targetProperties) &&
640
656
  /** @type {TargetProperties} */ (targetProperties).node === null &&
641
- /** @type {TargetProperties} */ (targetProperties).web === null;
657
+ /** @type {TargetProperties} */ (targetProperties).web === null &&
658
+ /** @type {TargetProperties} */ (targetProperties).module !== false;
642
659
  // the deno and bun targets only emit ECMAScript modules
643
660
  const deno =
644
661
  Boolean(targetProperties) &&
@@ -1689,6 +1706,9 @@ const applyOutputDefaults = (
1689
1706
  "const",
1690
1707
  () => tp && optimistic(/** @type {boolean | undefined} */ (tp.const))
1691
1708
  );
1709
+ // Only the browserslist target reports these; everywhere else they stay
1710
+ // unset, which `optimistic` reads as the modern spelling being available —
1711
+ // the same policy the JS features above follow.
1692
1712
  // `let` was added after `const`; targets predating it report only `const`,
1693
1713
  // so fall back to `const` when `let` is unreported (undefined). Targets that
1694
1714
  // do report `let` (browserslist, built-ins) keep their own accurate value.
@@ -1728,11 +1748,21 @@ const applyOutputDefaults = (
1728
1748
  "generator",
1729
1749
  () => tp && optimistic(/** @type {boolean | undefined} */ (tp.generator))
1730
1750
  );
1751
+ // No `topLevelAwait` here: the option is held back from the patch release,
1752
+ // so nothing derives it from `tp` yet. Reapply by reverting #21881.
1731
1753
  F(
1732
1754
  environment,
1733
1755
  "forOf",
1734
1756
  () => tp && optimistic(/** @type {boolean | undefined} */ (tp.forOf))
1735
1757
  );
1758
+ // Stage 3 syntax, so these are the one pair read pessimistically: a preset that
1759
+ // says nothing means unavailable, and the phase keeps webpack's own form.
1760
+ F(environment, "deferImport", () =>
1761
+ Boolean(tp && /** @type {boolean | undefined} */ (tp.deferImport))
1762
+ );
1763
+ F(environment, "sourceImport", () =>
1764
+ Boolean(tp && /** @type {boolean | undefined} */ (tp.sourceImport))
1765
+ );
1736
1766
  F(
1737
1767
  environment,
1738
1768
  "destructuring",
@@ -1817,6 +1847,7 @@ const applyOutputDefaults = (
1817
1847
  output.resourceHints = {};
1818
1848
  }
1819
1849
  if (output.resourceHints) {
1850
+ D(output.resourceHints, "dedupe", false);
1820
1851
  if (output.module) D(output.resourceHints, "initial", true);
1821
1852
  // `modulePreloadPolyfill` defaults from the target's modulepreload
1822
1853
  // support: inject the polyfill iff the environment lacks it.
@@ -1918,10 +1949,15 @@ const applyOutputDefaults = (
1918
1949
  if (tp) {
1919
1950
  if (tp.global) return "global";
1920
1951
  if (tp.globalThis) return "globalThis";
1921
- // Universal target (web + node) with no reported accessor: `globalThis`
1922
- // is the only one defined everywhere (`null` = mixed support → `self`).
1923
- if (tp.web === null && tp.node === null && tp.globalThis === undefined) {
1924
- return "globalThis";
1952
+ // Universal target (web + node): no one identifier is defined on both
1953
+ // sides, so `globalThis` where the target reports nothing against it,
1954
+ // and a guarded pair where it does — `self` covers window and worker
1955
+ // scopes, `global` covers Node.js. Naming either alone leaves the other
1956
+ // platform reading an undeclared binding.
1957
+ if (tp.web === null && tp.node === null) {
1958
+ return tp.globalThis === undefined
1959
+ ? "globalThis"
1960
+ : 'typeof self !== "undefined" ? self : global';
1925
1961
  }
1926
1962
  }
1927
1963
  return "self";
@@ -2054,7 +2090,9 @@ const applyOutputDefaults = (
2054
2090
  "hotUpdateMainFilename",
2055
2091
  // Only `chunkLoading: "import"` loads the manifest via `import()` (needs an
2056
2092
  // `export default` ES module); every other loader fetches it as raw JSON.
2057
- `[runtime].[fullhash].hot-update.${output.chunkLoading === "import" ? "json.mjs" : "json"}`
2093
+ `[runtime].[fullhash].hot-update.${
2094
+ output.chunkLoading === "import" ? "json.mjs" : "json"
2095
+ }`
2058
2096
  );
2059
2097
  D(output, "crossOriginLoading", false);
2060
2098
  F(output, "scriptType", () => (output.module ? "module" : false));
@@ -2195,6 +2233,8 @@ const applyExternalsPresetsDefaults = (
2195
2233
  isUniversal("node"))
2196
2234
  )
2197
2235
  );
2236
+ // Opt-in only: never auto-externalize installed packages, it would change existing builds.
2237
+ D(externalsPresets, "nodeModules", false);
2198
2238
  D(
2199
2239
  externalsPresets,
2200
2240
  "deno",
@@ -2348,6 +2388,39 @@ const applyPerformanceDefaults = (performance, { production }) => {
2348
2388
  if (performance === false) return;
2349
2389
  D(performance, "maxAssetSize", 250000);
2350
2390
  D(performance, "maxEntrypointSize", 250000);
2391
+ // Stands in for every check left unset, so an explicit one still wins.
2392
+ const all = performance.all !== undefined ? performance.all : false;
2393
+
2394
+ D(performance, "asyncChunkWaterfalls", all);
2395
+ D(performance, "broadContexts", all);
2396
+ D(performance, "cacheEffectiveness", all);
2397
+ D(performance, "circularDependencies", all);
2398
+ D(performance, "conflictingResourceHints", all);
2399
+ D(performance, "duplicateModules", all);
2400
+ D(performance, "duplicatePackages", all);
2401
+ D(performance, "dynamicExports", all);
2402
+ D(performance, "entrypointOverlap", all);
2403
+ D(performance, "embeddedSourceMaps", all);
2404
+ D(performance, "evalUsage", all);
2405
+ D(performance, "hotspots", all);
2406
+ D(performance, "legacyJavascript", all);
2407
+ D(performance, "largeModules", all);
2408
+ D(performance, "inlinedAssets", all);
2409
+ D(performance, "mixedExports", all);
2410
+ D(performance, "missingSideEffects", all);
2411
+ D(performance, "osDependentRules", all);
2412
+ D(performance, "pureAnnotations", all);
2413
+ D(performance, "redundantDynamicImports", all);
2414
+ D(performance, "scopeHoistingBailouts", all);
2415
+ D(performance, "splitChunksCapped", all);
2416
+ D(performance, "tinyChunks", all);
2417
+ D(performance, "topLevelThis", all);
2418
+ D(performance, "unsplitVendors", all);
2419
+ D(performance, "unusedAliases", all);
2420
+ D(performance, "unusedDefines", all);
2421
+ D(performance, "unusedExternals", all);
2422
+ D(performance, "unusedReexports", all);
2423
+ D(performance, "unusedRules", all);
2351
2424
  F(performance, "hints", () => (production ? "warning" : false));
2352
2425
  };
2353
2426
 
@@ -2393,19 +2466,138 @@ const applyOptimizationDefaults = (
2393
2466
  D(optimization, "mangleWasmImports", false);
2394
2467
  D(optimization, "portableRecords", records);
2395
2468
  D(optimization, "realContentHash", production);
2469
+ // A plugin assigning the object shorthand in `apply()` runs after
2470
+ // normalization: it replaces `minimizeOptions`, keeping `minimize` boolean.
2471
+ const minimizeAssignedInApply = /** @type {unknown} */ (
2472
+ optimization.minimize
2473
+ );
2474
+ if (typeof minimizeAssignedInApply === "object") {
2475
+ optimization.minimizeOptions = /** @type {OptimizationMinimizeOptions} */ (
2476
+ minimizeAssignedInApply
2477
+ );
2478
+ optimization.minimize = true;
2479
+ }
2396
2480
  D(optimization, "minimize", production);
2481
+ F(optimization, "minimizeOptions", () => ({}));
2482
+ const minimizeOptions =
2483
+ /** @type {NonNullable<Optimization["minimizeOptions"]>} */
2484
+ (optimization.minimizeOptions);
2485
+ if (optimization.minimize) {
2486
+ // Canonicalize the per-asset-type options: the JS minimizer's defaults
2487
+ // become visible in the resolved config rather than hidden in the wiring.
2488
+ F(minimizeOptions, "javascript", () => ({ compress: { passes: 2 } }));
2489
+ F(minimizeOptions, "css", () => ({}));
2490
+ F(minimizeOptions, "html", () => ({}));
2491
+ }
2397
2492
  A(optimization, "minimizer", () => [
2398
2493
  {
2399
2494
  apply: (compiler) => {
2400
2495
  // Lazy load the minimizer plugin
2401
2496
  const TerserPlugin = require("minimizer-webpack-plugin");
2402
2497
 
2498
+ // One minimizer instance (one worker-thread pool) handles JS and, when
2499
+ // native CSS / HTML is enabled, those assets too — an array of minify
2500
+ // functions each dispatched by its own `filter` (terser -> JS,
2501
+ // cssMinify -> CSS, htmlMinify -> HTML). The CSS / HTML serializers stay
2502
+ // worker-safe by resolving their parser with `require("webpack/…")` in
2503
+ // the worker, so all three share the same pool. `test` is widened to let
2504
+ // CSS / HTML assets reach the dispatcher.
2505
+ // Step aside for a minimizer the user already configured for these
2506
+ // types: whichever of the two ran first would mark the asset
2507
+ // `minimized` and silently disable the other, so webpack only claims
2508
+ // what nothing else does. Their asset matchers are read directly rather
2509
+ // than resolved per asset — a coarse check, but it keeps the outcome
2510
+ // independent of tap order and of the plugin version in use.
2511
+ const claimedByOtherMinimizer = require("./getClaimedAssetTypes")(
2512
+ compiler
2513
+ );
2514
+
2515
+ // Per asset type: `false` disables that type, an object is its options.
2516
+ const minimizeByType = /** @type {OptimizationMinimizeOptions} */ (
2517
+ compiler.options.optimization.minimizeOptions
2518
+ );
2519
+ const terserOptions = minimizeByType.javascript || {
2520
+ compress: { passes: 2 }
2521
+ };
2522
+
2523
+ const { css, html } = compiler.options.experiments;
2524
+ const minifyJs = minimizeByType.javascript !== false;
2525
+ const minifyCss =
2526
+ Boolean(css) &&
2527
+ !claimedByOtherMinimizer.css &&
2528
+ minimizeByType.css !== false;
2529
+ const minifyHtml =
2530
+ Boolean(html) &&
2531
+ !claimedByOtherMinimizer.html &&
2532
+ minimizeByType.html !== false;
2533
+ if (!minifyJs && !minifyCss && !minifyHtml) return;
2534
+ if (minifyJs && !minifyCss && !minifyHtml) {
2535
+ new TerserPlugin({ terserOptions }).apply(
2536
+ /** @type {EXPECTED_ANY} */ (compiler)
2537
+ );
2538
+ return;
2539
+ }
2540
+ /** @type {(typeof TerserPlugin.terserMinify | typeof import("../css/cssMinify") | typeof import("../html/htmlMinify"))[]} */
2541
+ const minify = [];
2542
+ /** @type {EXPECTED_OBJECT[]} */
2543
+ const minimizerOptions = [];
2544
+ /** @type {string[]} */
2545
+ const extensions = [];
2546
+ // `minimize.css` follows the CSS minifier wherever it runs: the HTML
2547
+ // entry gets the same options, like the shared environment below.
2548
+ const cssOptions =
2549
+ typeof minimizeByType.css === "object"
2550
+ ? minimizeByType.css
2551
+ : undefined;
2552
+ // The browserslist selection, when the target is one. It decides both the
2553
+ // prefixes and every spelling a target can read, so `vendorPrefixes`
2554
+ // turns off the first alone — resolving it is what the second needs.
2555
+ const { target } = compiler.options;
2556
+ const browsers = target
2557
+ ? getTargetsBrowsers(
2558
+ Array.isArray(target) ? target : [target],
2559
+ /** @type {Context} */ (compiler.options.context)
2560
+ )
2561
+ : undefined;
2562
+ const cssEnvironment = {
2563
+ browsers,
2564
+ vendorPrefixes:
2565
+ cssOptions === undefined || cssOptions.vendorPrefixes !== false
2566
+ };
2567
+ const htmlOptions =
2568
+ typeof minimizeByType.html === "object"
2569
+ ? minimizeByType.html
2570
+ : undefined;
2571
+ if (minifyJs) {
2572
+ minify.push(TerserPlugin.terserMinify);
2573
+ minimizerOptions.push(terserOptions);
2574
+ extensions.push("[cm]?js");
2575
+ }
2576
+ if (minifyCss) {
2577
+ minify.push(require("../css/cssMinify"));
2578
+ minimizerOptions.push({
2579
+ environment: cssEnvironment,
2580
+ ...cssOptions
2581
+ });
2582
+ extensions.push("css");
2583
+ }
2584
+ if (minifyHtml) {
2585
+ minify.push(require("../html/htmlMinify"));
2586
+ // `minimize.css` rides along under its own key rather than spread
2587
+ // beside the HTML options: the two name some of the same switches
2588
+ // (`quotes`, `comments`), and one flat object would hand
2589
+ // each language the other's answer.
2590
+ minimizerOptions.push({
2591
+ environment: cssEnvironment,
2592
+ css: cssOptions,
2593
+ ...htmlOptions
2594
+ });
2595
+ extensions.push("html");
2596
+ }
2403
2597
  new TerserPlugin({
2404
- terserOptions: {
2405
- compress: {
2406
- passes: 2
2407
- }
2408
- }
2598
+ test: new RegExp(`\\.(?:${extensions.join("|")})(\\?.*)?$`, "i"),
2599
+ minify,
2600
+ minimizerOptions
2409
2601
  }).apply(/** @type {EXPECTED_ANY} */ (compiler));
2410
2602
  }
2411
2603
  }
@@ -5,8 +5,16 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("../../declarations/WebpackOptions").WebpackOptions} Configuration */
9
- /** @typedef {import("../MultiCompiler").MultiWebpackOptions} MultiConfiguration */
8
+ /**
9
+ * @import {
10
+ * WebpackOptions as Configuration
11
+ * } from "../../declarations/WebpackOptions"
12
+ */
13
+ /**
14
+ * @import {
15
+ * MultiWebpackOptions as MultiConfiguration
16
+ * } from "../MultiCompiler"
17
+ */
10
18
 
11
19
  /**
12
20
  * @template T
@@ -0,0 +1,65 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author sheo13666q @sheo13666q
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const { matchObject } = require("../ModuleFilenameHelpers");
9
+
10
+ /** @import Compiler from "../Compiler" */
11
+ /** @import { MatchObject } from "../ModuleFilenameHelpers" */
12
+ /** @typedef {MatchObject & { minimizer?: EXPECTED_OBJECT }} MinimizerOptions */
13
+
14
+ /**
15
+ * @param {unknown} candidate a configured plugin or minimizer entry
16
+ * @param {string} file probe filename
17
+ * @returns {boolean} whether the candidate minimizes that file
18
+ */
19
+ const claims = (candidate, file) => {
20
+ // Every minimizer in the `minimizer-webpack-plugin` family (itself,
21
+ // `css-minimizer-webpack-plugin`, `html-minimizer-webpack-plugin`, …) keeps
22
+ // the minify implementation on `options.minimizer` and its asset matcher
23
+ // alongside it in the shape `matchObject` reads. The matcher alone is not
24
+ // enough to recognize one: `BannerPlugin` and `SourceMapDevToolPlugin` carry
25
+ // the same three keys, and `LoaderOptionsPlugin` defaults `test` to match
26
+ // every file — reading those as minimizers would disable minification.
27
+ const { options } = /** @type {{ options?: MinimizerOptions }} */ (candidate);
28
+ if (!options || !options.minimizer) return false;
29
+ // `test`/`include` say which types it handles, `exclude` only narrows the
30
+ // files within them — honouring that narrowing would make a minimizer scoped
31
+ // to a subdirectory claim nothing, and webpack would then race it on the very
32
+ // files it was configured for.
33
+ const { test, include } = options;
34
+ return (
35
+ (test !== undefined && matchObject({ test }, file)) ||
36
+ (include !== undefined && matchObject({ include }, file))
37
+ );
38
+ };
39
+
40
+ /**
41
+ * Which asset types the user's own configuration already minimizes, so webpack's
42
+ * default minimizer can leave those alone instead of racing the user's plugin
43
+ * for them (the loser is skipped via `minimized` asset info, so without this
44
+ * whichever tapped first would win). Deliberately coarse: it reads a plugin's
45
+ * matcher rather than resolving it per emitted asset, so a minimizer restricted
46
+ * to some of a type's files still claims the whole type.
47
+ * @param {Compiler} compiler the compiler
48
+ * @returns {{ css: boolean, html: boolean }} types another minimizer handles
49
+ */
50
+ module.exports = (compiler) => {
51
+ const { optimization, plugins } = compiler.options;
52
+ let css = false;
53
+ let html = false;
54
+ // Both lists are normalized arrays with falsy entries already filtered out,
55
+ // and `minimizer` was filled in by the defaults before any plugin applies.
56
+ const minimizer =
57
+ /** @type {NonNullable<typeof optimization.minimizer>} */
58
+ (optimization.minimizer);
59
+ for (const candidate of [...minimizer, ...plugins]) {
60
+ if (!css) css = claims(candidate, "file.css");
61
+ if (!html) html = claims(candidate, "file.html");
62
+ if (css && html) break;
63
+ }
64
+ return { css, html };
65
+ };
@@ -7,22 +7,27 @@
7
7
 
8
8
  const util = require("util");
9
9
 
10
- /** @typedef {import("../../declarations/WebpackOptions").CacheOptionsNormalized} CacheOptions */
11
- /** @typedef {import("../../declarations/WebpackOptions").EntryDescriptionNormalized} EntryDescriptionNormalized */
12
- /** @typedef {import("../../declarations/WebpackOptions").EntryStatic} EntryStatic */
13
- /** @typedef {import("../../declarations/WebpackOptions").EntryStaticNormalized} EntryStaticNormalized */
14
- /** @typedef {import("../../declarations/WebpackOptions").Externals} Externals */
15
- /** @typedef {import("../../declarations/WebpackOptions").LibraryName} LibraryName */
16
- /** @typedef {import("../../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
17
- /** @typedef {import("../../declarations/WebpackOptions").ModuleOptionsNormalized} ModuleOptionsNormalized */
18
- /** @typedef {import("../../declarations/WebpackOptions").OptimizationNormalized} OptimizationNormalized */
19
- /** @typedef {import("../../declarations/WebpackOptions").OptimizationRuntimeChunk} OptimizationRuntimeChunk */
20
- /** @typedef {import("../../declarations/WebpackOptions").OptimizationRuntimeChunkNormalized} OptimizationRuntimeChunkNormalized */
21
- /** @typedef {import("../../declarations/WebpackOptions").OutputNormalized} OutputNormalized */
22
- /** @typedef {import("../../declarations/WebpackOptions").PluginsNormalized} PluginsNormalized */
23
- /** @typedef {import("../../declarations/WebpackOptions").WebpackOptions} WebpackOptions */
24
- /** @typedef {import("../../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptionsNormalized */
25
- /** @typedef {import("../errors/WebpackError")} WebpackError */
10
+ /**
11
+ * @import {
12
+ * CacheOptionsNormalized as CacheOptions,
13
+ * EntryDescriptionNormalized,
14
+ * EntryStatic,
15
+ * EntryStaticNormalized,
16
+ * Externals,
17
+ * LibraryName,
18
+ * LibraryOptions,
19
+ * ModuleOptionsNormalized,
20
+ * Optimization,
21
+ * OptimizationNormalized,
22
+ * OptimizationRuntimeChunk,
23
+ * OptimizationRuntimeChunkNormalized,
24
+ * OutputNormalized,
25
+ * PluginsNormalized,
26
+ * WebpackOptions,
27
+ * WebpackOptionsNormalized
28
+ * } from "../../declarations/WebpackOptions"
29
+ */
30
+ /** @import WebpackError from "../errors/WebpackError" */
26
31
 
27
32
  /**
28
33
  * Defines the webpack options interception type used by this module.
@@ -326,6 +331,14 @@ const getNormalizedWebpackOptions = (config) => ({
326
331
  cacheGroups: cloneObject(splitChunks.cacheGroups)
327
332
  }
328
333
  ),
334
+ // TODO webpack 6: normalize `minimize` to the per-asset-type object and
335
+ // drop `minimizeOptions` — a breaking change for what plugins read back.
336
+ minimize:
337
+ typeof optimization.minimize === "object" ? true : optimization.minimize,
338
+ minimizeOptions: getNormalizedOptimizationMinimizeOptions(
339
+ optimization.minimize,
340
+ optimization.minimizeOptions
341
+ ),
329
342
  minimizer:
330
343
  optimization.minimizer !== undefined
331
344
  ? /** @type {OptimizationNormalized["minimizer"]} */ (
@@ -419,6 +432,7 @@ const getNormalizedWebpackOptions = (config) => ({
419
432
  ? output.libraryExport
420
433
  : libraryBase.export,
421
434
  name: libraryBase.name,
435
+ umdAmdContainer: libraryBase.umdAmdContainer,
422
436
  umdNamedDefine:
423
437
  output.umdNamedDefine !== undefined
424
438
  ? output.umdNamedDefine
@@ -604,6 +618,22 @@ const getNormalizedEntryStatic = (entry) => {
604
618
  return result;
605
619
  };
606
620
 
621
+ /**
622
+ * Gets the per-asset-type minimize options. `minimize` itself stays a boolean,
623
+ * and its object form is a shorthand an explicit `minimizeOptions` overrides.
624
+ * @param {Optimization["minimize"]} minimize minimize option
625
+ * @param {Optimization["minimizeOptions"]} minimizeOptions minimizeOptions option
626
+ * @returns {OptimizationNormalized["minimizeOptions"]} normalized minimize options
627
+ */
628
+ const getNormalizedOptimizationMinimizeOptions = (
629
+ minimize,
630
+ minimizeOptions
631
+ ) => {
632
+ if (minimizeOptions !== undefined) return cloneObject(minimizeOptions);
633
+ if (typeof minimize !== "object") return;
634
+ return cloneObject(minimize);
635
+ };
636
+
607
637
  /**
608
638
  * Gets normalized optimization runtime chunk.
609
639
  * @param {OptimizationRuntimeChunk=} runtimeChunk runtimeChunk option