@depup/webpack 5.109.0-depup.0 → 5.110.1-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 (641) hide show
  1. package/README.md +7 -7
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +10 -10
  4. package/lib/APIPlugin.js +123 -17
  5. package/lib/AsyncDependenciesBlock.js +10 -7
  6. package/lib/AutomaticPrefetchPlugin.js +1 -1
  7. package/lib/BannerPlugin.js +10 -6
  8. package/lib/CacheFacade.js +6 -6
  9. package/lib/Chunk.js +14 -11
  10. package/lib/ChunkGraph.js +43 -32
  11. package/lib/ChunkGroup.js +7 -7
  12. package/lib/ChunkTemplate.js +35 -44
  13. package/lib/CircularModulesPlugin.js +205 -28
  14. package/lib/CleanPlugin.js +15 -16
  15. package/lib/CodeGenerationResults.js +11 -8
  16. package/lib/CompatibilityPlugin.js +38 -7
  17. package/lib/Compilation.js +709 -414
  18. package/lib/Compiler.js +69 -42
  19. package/lib/ConcatenationScope.js +117 -8
  20. package/lib/ConditionalInitFragment.js +3 -3
  21. package/lib/ConstPlugin.js +13 -11
  22. package/lib/ContextExclusionPlugin.js +1 -1
  23. package/lib/ContextModule.js +146 -54
  24. package/lib/ContextModuleFactory.js +46 -14
  25. package/lib/ContextReplacementPlugin.js +12 -14
  26. package/lib/DefinePlugin.js +168 -57
  27. package/lib/DependenciesBlock.js +9 -6
  28. package/lib/Dependency.js +36 -16
  29. package/lib/DependencyTemplate.js +11 -12
  30. package/lib/DependencyTemplates.js +3 -3
  31. package/lib/DotenvPlugin.js +50 -13
  32. package/lib/DynamicEntryPlugin.js +8 -4
  33. package/lib/EntryOptionPlugin.js +8 -4
  34. package/lib/EntryPlugin.js +2 -2
  35. package/lib/Entrypoint.js +6 -2
  36. package/lib/EnvironmentPlugin.js +2 -2
  37. package/lib/EvalDevToolModulePlugin.js +8 -4
  38. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  39. package/lib/ExportsInfo.js +123 -19
  40. package/lib/ExportsInfoApiPlugin.js +2 -4
  41. package/lib/ExternalModule.js +242 -84
  42. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  43. package/lib/ExternalsPlugin.js +10 -6
  44. package/lib/FileSystemInfo.js +116 -42
  45. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  46. package/lib/FlagDependencyExportsPlugin.js +76 -19
  47. package/lib/FlagDependencyUsagePlugin.js +63 -57
  48. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  49. package/lib/Generator.js +36 -15
  50. package/lib/HotModuleReplacementPlugin.js +16 -44
  51. package/lib/IgnorePlugin.js +8 -4
  52. package/lib/IgnoreWarningsPlugin.js +2 -2
  53. package/lib/InitFragment.js +28 -36
  54. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  55. package/lib/LazyBarrel.js +3 -4
  56. package/lib/LibraryTemplatePlugin.js +10 -6
  57. package/lib/LoaderOptionsPlugin.js +7 -3
  58. package/lib/LoaderTargetPlugin.js +1 -1
  59. package/lib/MainTemplate.js +49 -42
  60. package/lib/ManifestPlugin.js +12 -11
  61. package/lib/Module.js +62 -33
  62. package/lib/ModuleFactory.js +3 -3
  63. package/lib/ModuleFilenameHelpers.js +22 -6
  64. package/lib/ModuleGraph.js +195 -21
  65. package/lib/ModuleGraphConnection.js +6 -13
  66. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  67. package/lib/ModuleTemplate.js +62 -63
  68. package/lib/MultiCompiler.js +130 -64
  69. package/lib/MultiStats.js +40 -9
  70. package/lib/MultiWatching.js +3 -3
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +29 -19
  73. package/lib/NormalModule.js +221 -156
  74. package/lib/NormalModuleFactory.js +563 -112
  75. package/lib/NormalModuleReplacementPlugin.js +5 -8
  76. package/lib/NullFactory.js +6 -2
  77. package/lib/OptionsApply.js +7 -3
  78. package/lib/Parser.js +7 -3
  79. package/lib/PlatformPlugin.js +2 -2
  80. package/lib/PrefetchPlugin.js +1 -1
  81. package/lib/ProgressPlugin.js +16 -13
  82. package/lib/ProvidePlugin.js +3 -5
  83. package/lib/RawModule.js +25 -17
  84. package/lib/RecordIdsPlugin.js +3 -3
  85. package/lib/RequestShortener.js +1 -1
  86. package/lib/ResolverFactory.js +2 -2
  87. package/lib/RuntimeGlobals.js +22 -10
  88. package/lib/RuntimeModule.js +29 -19
  89. package/lib/RuntimePlugin.js +346 -256
  90. package/lib/RuntimeTemplate.js +2792 -352
  91. package/lib/SelfModuleFactory.js +7 -3
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  93. package/lib/SourceMapDevToolPlugin.js +30 -20
  94. package/lib/Stats.js +3 -4
  95. package/lib/Template.js +55 -25
  96. package/lib/TemplatedPathPlugin.js +96 -14
  97. package/lib/UseStrictPlugin.js +4 -6
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  99. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  100. package/lib/WarnNoModeSetPlugin.js +1 -1
  101. package/lib/WatchIgnorePlugin.js +8 -6
  102. package/lib/Watching.js +8 -8
  103. package/lib/WebpackIsIncludedPlugin.js +2 -4
  104. package/lib/WebpackOptionsApply.js +308 -18
  105. package/lib/WebpackOptionsDefaulter.js +6 -2
  106. package/lib/asset/AssetBytesGenerator.js +12 -10
  107. package/lib/asset/AssetBytesParser.js +2 -4
  108. package/lib/asset/AssetGenerator.js +188 -95
  109. package/lib/asset/AssetModule.js +7 -3
  110. package/lib/asset/AssetModulesPlugin.js +110 -38
  111. package/lib/asset/AssetParser.js +9 -7
  112. package/lib/asset/AssetSourceGenerator.js +60 -13
  113. package/lib/asset/AssetSourceParser.js +2 -4
  114. package/lib/asset/RawDataUrlModule.js +24 -16
  115. package/lib/asset/WebManifestGenerator.js +8 -10
  116. package/lib/asset/WebManifestParser.js +24 -10
  117. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  118. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  119. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  120. package/lib/async-modules/isGeneratorLowered.js +4 -4
  121. package/lib/buildChunkGraph.js +36 -27
  122. package/lib/bun/BunTargetPlugin.js +1 -1
  123. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  124. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  125. package/lib/cache/IdleFileCachePlugin.js +2 -2
  126. package/lib/cache/MemoryCachePlugin.js +18 -10
  127. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  128. package/lib/cache/PackFileCacheStrategy.js +289 -28
  129. package/lib/cache/ResolverCachePlugin.js +38 -18
  130. package/lib/cache/getLazyHashedEtag.js +1 -2
  131. package/lib/cache/mergeEtags.js +1 -1
  132. package/lib/cli.js +1 -3
  133. package/lib/config/browserslistTargetHandler.js +41 -5
  134. package/lib/config/defaults.js +282 -81
  135. package/lib/config/defineConfig.js +10 -2
  136. package/lib/config/getClaimedAssetTypes.js +65 -0
  137. package/lib/config/normalization.js +36 -16
  138. package/lib/config/target.js +46 -3
  139. package/lib/container/ContainerEntryDependency.js +1 -1
  140. package/lib/container/ContainerEntryModule.js +24 -15
  141. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  142. package/lib/container/ContainerPlugin.js +9 -10
  143. package/lib/container/ContainerReferencePlugin.js +6 -2
  144. package/lib/container/FallbackDependency.js +1 -1
  145. package/lib/container/FallbackModule.js +24 -17
  146. package/lib/container/FallbackModuleFactory.js +7 -3
  147. package/lib/container/HoistContainerReferencesPlugin.js +53 -66
  148. package/lib/container/ModuleFederationPlugin.js +7 -18
  149. package/lib/container/RemoteModule.js +27 -19
  150. package/lib/container/RemoteRuntimeModule.js +10 -8
  151. package/lib/container/moduleFederationHooks.js +32 -0
  152. package/lib/css/CssGenerator.js +178 -44
  153. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  154. package/lib/css/CssLoadingRuntimeModule.js +82 -36
  155. package/lib/css/CssModule.js +10 -7
  156. package/lib/css/CssModulesPlugin.js +197 -106
  157. package/lib/css/CssParser.js +1248 -618
  158. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  159. package/lib/css/cssMinify.js +168 -0
  160. package/lib/css/data.js +5324 -0
  161. package/lib/css/syntax.js +10396 -952
  162. package/lib/debug/ProfilingPlugin.js +14 -9
  163. package/lib/deno/DenoTargetPlugin.js +1 -1
  164. package/lib/dependencies/AMDDefineDependency.js +112 -87
  165. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  166. package/lib/dependencies/AMDPlugin.js +9 -7
  167. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  168. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  169. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  170. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  171. package/lib/dependencies/AMDRequireDependency.js +8 -7
  172. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  173. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  174. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  175. package/lib/dependencies/CachedConstDependency.js +11 -8
  176. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  177. package/lib/dependencies/CommonJsExportRequireDependency.js +140 -45
  178. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  179. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  180. package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
  181. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
  182. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  183. package/lib/dependencies/CommonJsPlugin.js +35 -6
  184. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  185. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  186. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  187. package/lib/dependencies/ConstDependency.js +8 -9
  188. package/lib/dependencies/ContextDependency.js +12 -8
  189. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  190. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  191. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  192. package/lib/dependencies/ContextElementDependency.js +31 -12
  193. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  194. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  195. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  196. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  197. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  198. package/lib/dependencies/CssImportDependency.js +18 -9
  199. package/lib/dependencies/CssUrlDependency.js +17 -13
  200. package/lib/dependencies/DllEntryDependency.js +1 -1
  201. package/lib/dependencies/DynamicExports.js +2 -2
  202. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  203. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  204. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  205. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  206. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  207. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  208. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  209. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  210. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +15 -11
  211. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  212. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  213. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  214. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
  215. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  216. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  217. package/lib/dependencies/HarmonyExports.js +7 -4
  218. package/lib/dependencies/HarmonyImportDependency.js +28 -20
  219. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  220. package/lib/dependencies/HarmonyImportGuard.js +21 -30
  221. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  222. package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
  223. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  224. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  225. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  226. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  227. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  228. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  229. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  230. package/lib/dependencies/ImportContextDependency.js +2 -2
  231. package/lib/dependencies/ImportDependency.js +24 -20
  232. package/lib/dependencies/ImportEagerDependency.js +6 -9
  233. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  234. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  235. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  236. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  237. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  238. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  239. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  241. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  242. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  243. package/lib/dependencies/ImportParserPlugin.js +49 -35
  244. package/lib/dependencies/ImportPhase.js +12 -5
  245. package/lib/dependencies/ImportPlugin.js +7 -3
  246. package/lib/dependencies/ImportWeakDependency.js +6 -9
  247. package/lib/dependencies/JsonExportsDependency.js +11 -7
  248. package/lib/dependencies/LoaderDependency.js +2 -2
  249. package/lib/dependencies/LoaderImportDependency.js +2 -2
  250. package/lib/dependencies/LoaderPlugin.js +11 -7
  251. package/lib/dependencies/LocalModuleDependency.js +5 -5
  252. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  253. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  254. package/lib/dependencies/ModuleDependency.js +9 -6
  255. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  256. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  257. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  258. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  259. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  260. package/lib/dependencies/NullDependency.js +3 -3
  261. package/lib/dependencies/ProvidedDependency.js +14 -10
  262. package/lib/dependencies/PureExpressionDependency.js +9 -10
  263. package/lib/dependencies/RequireContextDependency.js +2 -2
  264. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  265. package/lib/dependencies/RequireContextPlugin.js +8 -4
  266. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  267. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  268. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  269. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  270. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  271. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  272. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  273. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  274. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  275. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  276. package/lib/dependencies/RequireResolveDependency.js +4 -4
  277. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  278. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  279. package/lib/dependencies/StaticExportsDependency.js +2 -2
  280. package/lib/dependencies/SystemPlugin.js +10 -6
  281. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  282. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  283. package/lib/dependencies/URLContextDependency.js +2 -2
  284. package/lib/dependencies/URLDependency.js +110 -64
  285. package/lib/dependencies/URLPlugin.js +7 -3
  286. package/lib/dependencies/UnsupportedDependency.js +4 -4
  287. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  288. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  289. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  290. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  291. package/lib/dependencies/WorkerDependency.js +28 -22
  292. package/lib/dependencies/WorkletDependency.js +15 -14
  293. package/lib/dependencies/getFunctionExpression.js +8 -4
  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/DuplicateModulesWarning.js +45 -0
  316. package/lib/errors/DynamicExportsWarning.js +30 -0
  317. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  318. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  319. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  320. package/lib/errors/EvalUsageWarning.js +28 -0
  321. package/lib/errors/HookWebpackError.js +5 -5
  322. package/lib/errors/HotspotsWarning.js +57 -0
  323. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  324. package/lib/errors/InlinedAssetsWarning.js +36 -0
  325. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  326. package/lib/errors/LargeModulesWarning.js +45 -0
  327. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  328. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  329. package/lib/errors/MixedExportsWarning.js +41 -0
  330. package/lib/errors/ModuleDependencyError.js +13 -16
  331. package/lib/errors/ModuleDependencyWarning.js +5 -15
  332. package/lib/errors/ModuleHashingError.js +1 -1
  333. package/lib/errors/ModuleNotFoundError.js +2 -2
  334. package/lib/errors/ModuleParseError.js +1 -2
  335. package/lib/errors/ModuleRestoreError.js +1 -1
  336. package/lib/errors/ModuleStoreError.js +1 -1
  337. package/lib/errors/NodeStuffInWebError.js +1 -1
  338. package/lib/errors/OsDependentRuleWarning.js +31 -0
  339. package/lib/errors/PureAnnotationsWarning.js +36 -0
  340. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  341. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  342. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  343. package/lib/errors/TinyChunksWarning.js +40 -0
  344. package/lib/errors/TopLevelThisWarning.js +34 -0
  345. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  346. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  347. package/lib/errors/UnusedAliasesWarning.js +29 -0
  348. package/lib/errors/UnusedDefinesWarning.js +29 -0
  349. package/lib/errors/UnusedExternalsWarning.js +29 -0
  350. package/lib/errors/UnusedReexportsWarning.js +42 -0
  351. package/lib/errors/UnusedRuleWarning.js +29 -0
  352. package/lib/errors/WebpackError.js +9 -5
  353. package/lib/errors/deriveStackFromNestedError.js +90 -0
  354. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  355. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  356. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  357. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
  358. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  359. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  360. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  361. package/lib/hmr/lazyCompilationBackend.js +28 -10
  362. package/lib/hmr/parserHooks.js +56 -0
  363. package/lib/html/HtmlGenerator.js +299 -79
  364. package/lib/html/HtmlModule.js +7 -3
  365. package/lib/html/HtmlModulesPlugin.js +312 -174
  366. package/lib/html/HtmlParser.js +31 -86
  367. package/lib/html/data.js +1928 -0
  368. package/lib/html/htmlMinify.js +288 -0
  369. package/lib/html/syntax.js +7819 -3331
  370. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  371. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  372. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  373. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  374. package/lib/ids/IdHelpers.js +31 -18
  375. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  376. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  377. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  378. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  379. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  380. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  381. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  382. package/lib/index.js +10 -0
  383. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  384. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  385. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  386. package/lib/javascript/ChunkHelpers.js +1 -1
  387. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  388. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  389. package/lib/javascript/JavascriptGenerator.js +65 -165
  390. package/lib/javascript/JavascriptModule.js +9 -3
  391. package/lib/javascript/JavascriptModulesPlugin.js +181 -162
  392. package/lib/javascript/JavascriptParser.js +291 -112
  393. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  394. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  395. package/lib/javascript/StartupHelpers.js +55 -9
  396. package/lib/javascript/syntax.js +3403 -300
  397. package/lib/json/JsonData.js +8 -4
  398. package/lib/json/JsonGenerator.js +38 -16
  399. package/lib/json/JsonModule.js +7 -3
  400. package/lib/json/JsonModulesPlugin.js +1 -1
  401. package/lib/json/JsonParser.js +5 -6
  402. package/lib/library/AbstractLibraryPlugin.js +20 -14
  403. package/lib/library/AmdLibraryPlugin.js +11 -7
  404. package/lib/library/AssignLibraryPlugin.js +19 -13
  405. package/lib/library/EnableLibraryPlugin.js +2 -2
  406. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  407. package/lib/library/JsonpLibraryPlugin.js +11 -7
  408. package/lib/library/ModuleLibraryPlugin.js +256 -64
  409. package/lib/library/SystemLibraryPlugin.js +12 -8
  410. package/lib/library/UmdLibraryPlugin.js +62 -25
  411. package/lib/loaders/LoaderRunner.js +14 -1
  412. package/lib/loaders/loadLoader.js +8 -4
  413. package/lib/logging/createConsoleLogger.js +7 -4
  414. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  415. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  416. package/lib/node/NodeSourcePlugin.js +1 -1
  417. package/lib/node/NodeTargetPlugin.js +4 -3
  418. package/lib/node/NodeTemplatePlugin.js +1 -1
  419. package/lib/node/NodeWatchFileSystem.js +70 -9
  420. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  421. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +81 -20
  422. package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
  423. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  424. package/lib/node/nodeConsole.js +7 -3
  425. package/lib/optimize/AggressiveMergingPlugin.js +21 -17
  426. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  427. package/lib/optimize/ConcatenatedModule.js +996 -477
  428. package/lib/optimize/ConstExportsPlugin.js +11 -7
  429. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  430. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  431. package/lib/optimize/InlineExports.js +9 -5
  432. package/lib/optimize/InnerGraph.js +28 -12
  433. package/lib/optimize/InnerGraphPlugin.js +23 -18
  434. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  435. package/lib/optimize/MangleExportsPlugin.js +7 -8
  436. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  437. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  438. package/lib/optimize/ModuleConcatenationPlugin.js +124 -59
  439. package/lib/optimize/RealContentHashPlugin.js +20 -13
  440. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  441. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  442. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  443. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  444. package/lib/optimize/SplitChunksPlugin.js +232 -68
  445. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  446. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  447. package/lib/performance/BroadContextsPlugin.js +142 -0
  448. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  449. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  450. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  451. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  452. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  453. package/lib/performance/DynamicExportsPlugin.js +120 -0
  454. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  455. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  456. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  457. package/lib/performance/EvalUsagePlugin.js +115 -0
  458. package/lib/performance/HotspotsPlugin.js +296 -0
  459. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  460. package/lib/performance/LargeModulesPlugin.js +126 -0
  461. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  462. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  463. package/lib/performance/MixedExportsPlugin.js +136 -0
  464. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  465. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  466. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  467. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  468. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  469. package/lib/performance/SizeLimitsPlugin.js +139 -7
  470. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  471. package/lib/performance/TinyChunksPlugin.js +128 -0
  472. package/lib/performance/TopLevelThisPlugin.js +208 -0
  473. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  474. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  475. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  476. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  477. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  478. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  479. package/lib/performance/getModuleSize.js +22 -0
  480. package/lib/performance/getSourceModules.js +22 -0
  481. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  482. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  483. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  484. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  485. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  487. package/lib/prefetch/ResourceHintPlugin.js +377 -136
  488. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  489. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  490. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  491. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  492. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  493. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  494. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  495. package/lib/rules/RuleSetCompiler.js +146 -12
  496. package/lib/rules/UseEffectRulePlugin.js +18 -11
  497. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  498. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  499. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  500. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  501. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  502. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  503. package/lib/runtime/CompatRuntimeModule.js +5 -3
  504. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  505. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  506. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  507. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  508. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  509. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  510. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  511. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  512. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  513. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  514. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  515. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  516. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  517. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  518. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  519. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  520. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  521. package/lib/runtime/NonceRuntimeModule.js +10 -0
  522. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  523. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  524. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  525. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  526. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  527. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  528. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  529. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  530. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  531. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  532. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  533. package/lib/runtime/baseUri.js +63 -0
  534. package/lib/schemes/DataUriPlugin.js +1 -1
  535. package/lib/schemes/FileUriPlugin.js +1 -1
  536. package/lib/schemes/HttpUriPlugin.js +24 -15
  537. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  538. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  539. package/lib/serialization/BinaryMiddleware.js +274 -942
  540. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  541. package/lib/serialization/FileMiddleware.js +305 -66
  542. package/lib/serialization/ObjectMiddleware.js +139 -114
  543. package/lib/serialization/PlainObjectSerializer.js +19 -16
  544. package/lib/sharing/ConsumeSharedModule.js +30 -21
  545. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  546. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  547. package/lib/sharing/ProvideSharedModule.js +25 -16
  548. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  549. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  550. package/lib/sharing/SharePlugin.js +17 -5
  551. package/lib/sharing/ShareRuntimeModule.js +4 -4
  552. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  553. package/lib/sharing/utils.js +1 -3
  554. package/lib/stats/DefaultStatsFactoryPlugin.js +253 -226
  555. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  556. package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
  557. package/lib/stats/StatsFactory.js +56 -35
  558. package/lib/stats/StatsPrinter.js +16 -12
  559. package/lib/typescript/TypeScriptPlugin.js +12 -14
  560. package/lib/url/URLParserPlugin.js +26 -13
  561. package/lib/util/AsyncQueue.js +4 -3
  562. package/lib/util/Hash.js +5 -1
  563. package/lib/util/LazySet.js +35 -22
  564. package/lib/util/LocConverter.js +36 -13
  565. package/lib/util/SourceProcessor.js +1050 -24
  566. package/lib/util/StringXor.js +1 -1
  567. package/lib/util/chainedImports.js +9 -5
  568. package/lib/util/cleverMerge.js +1 -1
  569. package/lib/util/comparators.js +45 -14
  570. package/lib/util/concatenate.js +203 -77
  571. package/lib/util/conventions.js +5 -1
  572. package/lib/util/createHash.js +2 -2
  573. package/lib/util/createHooksRegistry.js +8 -10
  574. package/lib/util/dataURL.js +225 -1
  575. package/lib/util/extractSourceMap.js +4 -3
  576. package/lib/util/findCaseMismatch.js +139 -0
  577. package/lib/util/formatLocation.js +1 -2
  578. package/lib/util/fs.js +22 -5
  579. package/lib/util/globUtils.js +298 -24
  580. package/lib/util/hash/BatchedHash.js +5 -1
  581. package/lib/util/hash/BulkUpdateHash.js +5 -1
  582. package/lib/util/hash/DebugHash.js +5 -1
  583. package/lib/util/hash/hash-digest.js +6 -2
  584. package/lib/util/identifier.js +25 -1
  585. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  586. package/lib/util/internalSerializables.js +6 -0
  587. package/lib/util/lazyModule.js +56 -0
  588. package/lib/util/makeSerializable.js +7 -3
  589. package/lib/util/matchAlias.js +25 -0
  590. package/lib/util/mimeTypes.js +11 -5
  591. package/lib/util/nonNumericOnlyHash.js +4 -3
  592. package/lib/util/parseJson.js +5 -3
  593. package/lib/util/preloadModuleType.js +32 -0
  594. package/lib/util/registerExternalSerializer.js +7 -5
  595. package/lib/util/runtime.js +2 -2
  596. package/lib/util/semver.js +1 -1
  597. package/lib/util/serialization.js +28 -28
  598. package/lib/util/source.js +2 -2
  599. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  600. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  601. package/lib/wasm/wasmModuleFilename.js +54 -0
  602. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  603. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  604. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  605. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  606. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  607. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  608. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  609. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  610. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  611. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  612. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  613. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  614. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  615. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  616. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  617. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  618. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  619. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  620. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  621. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  622. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  623. package/lib/web/JsonpTemplatePlugin.js +2 -2
  624. package/lib/webpack.js +22 -11
  625. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  626. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  627. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  628. package/module.d.ts +1 -0
  629. package/package.json +37 -30
  630. package/schemas/WebpackOptions.check.js +1 -1
  631. package/schemas/WebpackOptions.json +780 -91
  632. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  634. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  635. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  636. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  637. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  639. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  640. package/types.d.ts +4013 -738
  641. 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.
@@ -361,30 +367,6 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
361
367
  rules: options.module.rules
362
368
  });
363
369
 
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
370
  const futureDefaults =
389
371
  /** @type {NonNullable<ExperimentsNormalized["futureDefaults"]>} */
390
372
  (options.experiments.futureDefaults);
@@ -436,6 +418,36 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
436
418
  (options.experiments.asyncWebAssembly)
437
419
  });
438
420
 
421
+ // Placed after `applyOutputDefaults`, which settles `enabledLibraryTypes`. A library
422
+ // is read by another bundler, where an eval wrapper hides `import.meta` from it.
423
+ const noDevSourceMap = /** @type {LibraryType[]} */ (
424
+ options.output.enabledLibraryTypes
425
+ ).some(
426
+ (type) => futureDefaults || type === "module" || type === "modern-module"
427
+ );
428
+
429
+ F(
430
+ options,
431
+ "devtool",
432
+ () =>
433
+ /** @type {Devtool} */ (
434
+ development && !noDevSourceMap
435
+ ? [
436
+ options.experiments.css
437
+ ? {
438
+ type: "css",
439
+ use: "source-map"
440
+ }
441
+ : undefined,
442
+ {
443
+ type: "javascript",
444
+ use: "eval"
445
+ }
446
+ ].filter(Boolean)
447
+ : false
448
+ )
449
+ );
450
+
439
451
  applyModuleDefaults(options.module, {
440
452
  cache,
441
453
  hashSalt: /** @type {NonNullable<Output["hashSalt"]>} */ (
@@ -511,7 +523,13 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
511
523
  /** @type {NonNullable<WebpackOptionsNormalized["loader"]>} */ (
512
524
  options.loader
513
525
  ),
514
- { targetProperties, environment: options.output.environment }
526
+ {
527
+ targetProperties,
528
+ environment: options.output.environment,
529
+ outputModule:
530
+ /** @type {NonNullable<WebpackOptionsNormalized["output"]["module"]>} */
531
+ (options.output.module)
532
+ }
515
533
  );
516
534
 
517
535
  F(options, "externalsType", () => {
@@ -628,11 +646,15 @@ const applyExperimentsDefaults = (
628
646
  "asyncWebAssembly",
629
647
  experiments.futureDefaults ? true : "auto"
630
648
  );
631
- // the universal target (web + node, neither specific) only works as ESM
649
+ // the universal target (web + node, neither specific) only works as ESM —
650
+ // unless the target cannot read one, which no output format can repair, so
651
+ // leave `output.chunkFormat` to say so rather than emitting a module the
652
+ // target has already reported it will not load
632
653
  const universal =
633
654
  Boolean(targetProperties) &&
634
655
  /** @type {TargetProperties} */ (targetProperties).node === null &&
635
- /** @type {TargetProperties} */ (targetProperties).web === null;
656
+ /** @type {TargetProperties} */ (targetProperties).web === null &&
657
+ /** @type {TargetProperties} */ (targetProperties).module !== false;
636
658
  // the deno and bun targets only emit ECMAScript modules
637
659
  const deno =
638
660
  Boolean(targetProperties) &&
@@ -1683,6 +1705,9 @@ const applyOutputDefaults = (
1683
1705
  "const",
1684
1706
  () => tp && optimistic(/** @type {boolean | undefined} */ (tp.const))
1685
1707
  );
1708
+ // Only the browserslist target reports these; everywhere else they stay
1709
+ // unset, which `optimistic` reads as the modern spelling being available —
1710
+ // the same policy the JS features above follow.
1686
1711
  // `let` was added after `const`; targets predating it report only `const`,
1687
1712
  // so fall back to `const` when `let` is unreported (undefined). Targets that
1688
1713
  // do report `let` (browserslist, built-ins) keep their own accurate value.
@@ -1727,6 +1752,14 @@ const applyOutputDefaults = (
1727
1752
  "forOf",
1728
1753
  () => tp && optimistic(/** @type {boolean | undefined} */ (tp.forOf))
1729
1754
  );
1755
+ // Stage 3 syntax, so these are the one pair read pessimistically: a preset that
1756
+ // says nothing means unavailable, and the phase keeps webpack's own form.
1757
+ F(environment, "deferImport", () =>
1758
+ Boolean(tp && /** @type {boolean | undefined} */ (tp.deferImport))
1759
+ );
1760
+ F(environment, "sourceImport", () =>
1761
+ Boolean(tp && /** @type {boolean | undefined} */ (tp.sourceImport))
1762
+ );
1730
1763
  F(
1731
1764
  environment,
1732
1765
  "destructuring",
@@ -1811,6 +1844,7 @@ const applyOutputDefaults = (
1811
1844
  output.resourceHints = {};
1812
1845
  }
1813
1846
  if (output.resourceHints) {
1847
+ D(output.resourceHints, "dedupe", false);
1814
1848
  if (output.module) D(output.resourceHints, "initial", true);
1815
1849
  // `modulePreloadPolyfill` defaults from the target's modulepreload
1816
1850
  // support: inject the polyfill iff the environment lacks it.
@@ -1912,10 +1946,15 @@ const applyOutputDefaults = (
1912
1946
  if (tp) {
1913
1947
  if (tp.global) return "global";
1914
1948
  if (tp.globalThis) return "globalThis";
1915
- // Universal target (web + node) with no reported accessor: `globalThis`
1916
- // is the only one defined everywhere (`null` = mixed support → `self`).
1917
- if (tp.web === null && tp.node === null && tp.globalThis === undefined) {
1918
- return "globalThis";
1949
+ // Universal target (web + node): no one identifier is defined on both
1950
+ // sides, so `globalThis` where the target reports nothing against it,
1951
+ // and a guarded pair where it does — `self` covers window and worker
1952
+ // scopes, `global` covers Node.js. Naming either alone leaves the other
1953
+ // platform reading an undeclared binding.
1954
+ if (tp.web === null && tp.node === null) {
1955
+ return tp.globalThis === undefined
1956
+ ? "globalThis"
1957
+ : 'typeof self !== "undefined" ? self : global';
1919
1958
  }
1920
1959
  }
1921
1960
  return "self";
@@ -2048,7 +2087,9 @@ const applyOutputDefaults = (
2048
2087
  "hotUpdateMainFilename",
2049
2088
  // Only `chunkLoading: "import"` loads the manifest via `import()` (needs an
2050
2089
  // `export default` ES module); every other loader fetches it as raw JSON.
2051
- `[runtime].[fullhash].hot-update.${output.chunkLoading === "import" ? "json.mjs" : "json"}`
2090
+ `[runtime].[fullhash].hot-update.${
2091
+ output.chunkLoading === "import" ? "json.mjs" : "json"
2092
+ }`
2052
2093
  );
2053
2094
  D(output, "crossOriginLoading", false);
2054
2095
  F(output, "scriptType", () => (output.module ? "module" : false));
@@ -2189,6 +2230,8 @@ const applyExternalsPresetsDefaults = (
2189
2230
  isUniversal("node"))
2190
2231
  )
2191
2232
  );
2233
+ // Opt-in only: never auto-externalize installed packages, it would change existing builds.
2234
+ D(externalsPresets, "nodeModules", false);
2192
2235
  D(
2193
2236
  externalsPresets,
2194
2237
  "deno",
@@ -2251,9 +2294,13 @@ const applyExternalsPresetsDefaults = (
2251
2294
  * @param {object} options options
2252
2295
  * @param {TargetProperties | false} options.targetProperties target properties
2253
2296
  * @param {Environment} options.environment environment
2297
+ * @param {boolean} options.outputModule is output type is module
2254
2298
  * @returns {void}
2255
2299
  */
2256
- const applyLoaderDefaults = (loader, { targetProperties, environment }) => {
2300
+ const applyLoaderDefaults = (
2301
+ loader,
2302
+ { targetProperties, environment, outputModule }
2303
+ ) => {
2257
2304
  F(loader, "target", () => {
2258
2305
  if (targetProperties) {
2259
2306
  if (targetProperties.electron) {
@@ -2267,6 +2314,15 @@ const applyLoaderDefaults = (loader, { targetProperties, environment }) => {
2267
2314
  if (targetProperties.bun) return "bun";
2268
2315
  if (targetProperties.node) return "node";
2269
2316
  if (targetProperties.web) return "web";
2317
+ // no single platform to report: the bundle runs on both (target
2318
+ // `"universal"` / `["web", "node"]`), so loaders get `"universal"`
2319
+ if (
2320
+ outputModule &&
2321
+ targetProperties.node === null &&
2322
+ targetProperties.web === null
2323
+ ) {
2324
+ return "universal";
2325
+ }
2270
2326
  }
2271
2327
  });
2272
2328
  D(loader, "environment", environment);
@@ -2329,6 +2385,39 @@ const applyPerformanceDefaults = (performance, { production }) => {
2329
2385
  if (performance === false) return;
2330
2386
  D(performance, "maxAssetSize", 250000);
2331
2387
  D(performance, "maxEntrypointSize", 250000);
2388
+ // Stands in for every check left unset, so an explicit one still wins.
2389
+ const all = performance.all !== undefined ? performance.all : false;
2390
+
2391
+ D(performance, "asyncChunkWaterfalls", all);
2392
+ D(performance, "broadContexts", all);
2393
+ D(performance, "cacheEffectiveness", all);
2394
+ D(performance, "circularDependencies", all);
2395
+ D(performance, "conflictingResourceHints", all);
2396
+ D(performance, "duplicateModules", all);
2397
+ D(performance, "duplicatePackages", all);
2398
+ D(performance, "dynamicExports", all);
2399
+ D(performance, "entrypointOverlap", all);
2400
+ D(performance, "embeddedSourceMaps", all);
2401
+ D(performance, "evalUsage", all);
2402
+ D(performance, "hotspots", all);
2403
+ D(performance, "legacyJavascript", all);
2404
+ D(performance, "largeModules", all);
2405
+ D(performance, "inlinedAssets", all);
2406
+ D(performance, "mixedExports", all);
2407
+ D(performance, "missingSideEffects", all);
2408
+ D(performance, "osDependentRules", all);
2409
+ D(performance, "pureAnnotations", all);
2410
+ D(performance, "redundantDynamicImports", all);
2411
+ D(performance, "scopeHoistingBailouts", all);
2412
+ D(performance, "splitChunksCapped", all);
2413
+ D(performance, "tinyChunks", all);
2414
+ D(performance, "topLevelThis", all);
2415
+ D(performance, "unsplitVendors", all);
2416
+ D(performance, "unusedAliases", all);
2417
+ D(performance, "unusedDefines", all);
2418
+ D(performance, "unusedExternals", all);
2419
+ D(performance, "unusedReexports", all);
2420
+ D(performance, "unusedRules", all);
2332
2421
  F(performance, "hints", () => (production ? "warning" : false));
2333
2422
  };
2334
2423
 
@@ -2374,19 +2463,131 @@ const applyOptimizationDefaults = (
2374
2463
  D(optimization, "mangleWasmImports", false);
2375
2464
  D(optimization, "portableRecords", records);
2376
2465
  D(optimization, "realContentHash", production);
2377
- D(optimization, "minimize", production);
2466
+ F(optimization, "minimize", () => (production ? {} : false));
2467
+ // A plugin can assign the `true` shorthand in `apply()`, which runs after
2468
+ // `getNormalizedOptimizationMinimize` and so never gets normalized. The
2469
+ // normalized type does not allow it, hence the cast.
2470
+ if (/** @type {unknown} */ (optimization.minimize) === true) {
2471
+ optimization.minimize = {};
2472
+ }
2473
+ const { minimize } = optimization;
2474
+ if (minimize) {
2475
+ // Canonicalize the object form: the JS minimizer's defaults become
2476
+ // visible in the resolved config rather than hidden in the wiring.
2477
+ F(minimize, "javascript", () => ({ compress: { passes: 2 } }));
2478
+ F(minimize, "css", () => ({}));
2479
+ F(minimize, "html", () => ({}));
2480
+ }
2378
2481
  A(optimization, "minimizer", () => [
2379
2482
  {
2380
2483
  apply: (compiler) => {
2381
2484
  // Lazy load the minimizer plugin
2382
2485
  const TerserPlugin = require("minimizer-webpack-plugin");
2383
2486
 
2487
+ // One minimizer instance (one worker-thread pool) handles JS and, when
2488
+ // native CSS / HTML is enabled, those assets too — an array of minify
2489
+ // functions each dispatched by its own `filter` (terser -> JS,
2490
+ // cssMinify -> CSS, htmlMinify -> HTML). The CSS / HTML serializers stay
2491
+ // worker-safe by resolving their parser with `require("webpack/…")` in
2492
+ // the worker, so all three share the same pool. `test` is widened to let
2493
+ // CSS / HTML assets reach the dispatcher.
2494
+ // Step aside for a minimizer the user already configured for these
2495
+ // types: whichever of the two ran first would mark the asset
2496
+ // `minimized` and silently disable the other, so webpack only claims
2497
+ // what nothing else does. Their asset matchers are read directly rather
2498
+ // than resolved per asset — a coarse check, but it keeps the outcome
2499
+ // independent of tap order and of the plugin version in use.
2500
+ const claimedByOtherMinimizer = require("./getClaimedAssetTypes")(
2501
+ compiler
2502
+ );
2503
+
2504
+ // Normalized + defaulted `optimization.minimize` is the per-asset-type
2505
+ // object here: `false` disables a type, an object is its options.
2506
+ const minimizeByType = /** @type {OptimizationMinimizeOptions} */ (
2507
+ compiler.options.optimization.minimize
2508
+ );
2509
+ const terserOptions = minimizeByType.javascript || {
2510
+ compress: { passes: 2 }
2511
+ };
2512
+
2513
+ const { css, html } = compiler.options.experiments;
2514
+ const minifyJs = minimizeByType.javascript !== false;
2515
+ const minifyCss =
2516
+ Boolean(css) &&
2517
+ !claimedByOtherMinimizer.css &&
2518
+ minimizeByType.css !== false;
2519
+ const minifyHtml =
2520
+ Boolean(html) &&
2521
+ !claimedByOtherMinimizer.html &&
2522
+ minimizeByType.html !== false;
2523
+ if (!minifyJs && !minifyCss && !minifyHtml) return;
2524
+ if (minifyJs && !minifyCss && !minifyHtml) {
2525
+ new TerserPlugin({ terserOptions }).apply(
2526
+ /** @type {EXPECTED_ANY} */ (compiler)
2527
+ );
2528
+ return;
2529
+ }
2530
+ /** @type {(typeof TerserPlugin.terserMinify | typeof import("../css/cssMinify") | typeof import("../html/htmlMinify"))[]} */
2531
+ const minify = [];
2532
+ /** @type {EXPECTED_OBJECT[]} */
2533
+ const minimizerOptions = [];
2534
+ /** @type {string[]} */
2535
+ const extensions = [];
2536
+ // `minimize.css` follows the CSS minifier wherever it runs: the HTML
2537
+ // entry gets the same options, like the shared environment below.
2538
+ const cssOptions =
2539
+ typeof minimizeByType.css === "object"
2540
+ ? minimizeByType.css
2541
+ : undefined;
2542
+ // The browserslist selection, when the target is one. It decides both the
2543
+ // prefixes and every spelling a target can read, so `vendorPrefixes`
2544
+ // turns off the first alone — resolving it is what the second needs.
2545
+ const { target } = compiler.options;
2546
+ const browsers = target
2547
+ ? getTargetsBrowsers(
2548
+ Array.isArray(target) ? target : [target],
2549
+ /** @type {Context} */ (compiler.options.context)
2550
+ )
2551
+ : undefined;
2552
+ const cssEnvironment = {
2553
+ browsers,
2554
+ vendorPrefixes:
2555
+ cssOptions === undefined || cssOptions.vendorPrefixes !== false
2556
+ };
2557
+ const htmlOptions =
2558
+ typeof minimizeByType.html === "object"
2559
+ ? minimizeByType.html
2560
+ : undefined;
2561
+ if (minifyJs) {
2562
+ minify.push(TerserPlugin.terserMinify);
2563
+ minimizerOptions.push(terserOptions);
2564
+ extensions.push("[cm]?js");
2565
+ }
2566
+ if (minifyCss) {
2567
+ minify.push(require("../css/cssMinify"));
2568
+ minimizerOptions.push({
2569
+ environment: cssEnvironment,
2570
+ ...cssOptions
2571
+ });
2572
+ extensions.push("css");
2573
+ }
2574
+ if (minifyHtml) {
2575
+ minify.push(require("../html/htmlMinify"));
2576
+ // `minimize.css` rides along under its own key rather than spread
2577
+ // beside the HTML options: the two name some of the same switches
2578
+ // (`quotes`, `comments`), and one flat object would hand
2579
+ // each language the other's answer.
2580
+ minimizerOptions.push({
2581
+ environment: cssEnvironment,
2582
+ css: cssOptions,
2583
+ ...htmlOptions
2584
+ });
2585
+ extensions.push("html");
2586
+ }
2384
2587
  new TerserPlugin({
2385
- terserOptions: {
2386
- compress: {
2387
- passes: 2
2388
- }
2389
- }
2588
+ test: new RegExp(`\\.(?:${extensions.join("|")})(\\?.*)?$`, "i"),
2589
+ minify,
2590
+ minimizerOptions
2390
2591
  }).apply(/** @type {EXPECTED_ANY} */ (compiler));
2391
2592
  }
2392
2593
  }
@@ -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,7 @@ const getNormalizedWebpackOptions = (config) => ({
326
331
  cacheGroups: cloneObject(splitChunks.cacheGroups)
327
332
  }
328
333
  ),
334
+ minimize: getNormalizedOptimizationMinimize(optimization.minimize),
329
335
  minimizer:
330
336
  optimization.minimizer !== undefined
331
337
  ? /** @type {OptimizationNormalized["minimizer"]} */ (
@@ -419,6 +425,7 @@ const getNormalizedWebpackOptions = (config) => ({
419
425
  ? output.libraryExport
420
426
  : libraryBase.export,
421
427
  name: libraryBase.name,
428
+ umdAmdContainer: libraryBase.umdAmdContainer,
422
429
  umdNamedDefine:
423
430
  output.umdNamedDefine !== undefined
424
431
  ? output.umdNamedDefine
@@ -604,6 +611,19 @@ const getNormalizedEntryStatic = (entry) => {
604
611
  return result;
605
612
  };
606
613
 
614
+ /**
615
+ * Gets normalized optimization minimize: the `true` shorthand becomes an empty
616
+ * per-asset-type object, so downstream only sees `false` or the object form.
617
+ * @param {Optimization["minimize"]} minimize minimize option
618
+ * @returns {OptimizationNormalized["minimize"]} normalized minimize option
619
+ */
620
+ const getNormalizedOptimizationMinimize = (minimize) => {
621
+ if (minimize === undefined) return;
622
+ if (minimize === false) return false;
623
+ if (minimize === true) return {};
624
+ return cloneObject(minimize);
625
+ };
626
+
607
627
  /**
608
628
  * Gets normalized optimization runtime chunk.
609
629
  * @param {OptimizationRuntimeChunk=} runtimeChunk runtimeChunk option