@depup/webpack 5.111.1-depup.2 → 5.112.0-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 (775) hide show
  1. package/README.md +4 -8
  2. package/changes.json +3 -19
  3. package/lib/Chunk.js +3 -966
  4. package/lib/Compilation.js +224 -106
  5. package/lib/Compiler.js +19 -19
  6. package/lib/Dependency.js +3 -551
  7. package/lib/DependencyTemplate.js +3 -70
  8. package/lib/EntryPlugin.js +3 -68
  9. package/lib/Entrypoint.js +3 -121
  10. package/lib/ExternalsPlugin.js +3 -92
  11. package/lib/FileSystemInfo.js +3 -4629
  12. package/lib/InitFragment.js +3 -204
  13. package/lib/LibraryTemplatePlugin.js +3 -46
  14. package/lib/ModuleFilenameHelpers.js +3 -400
  15. package/lib/ModuleNotFoundError.js +2 -2
  16. package/lib/MultiCompiler.js +37 -8
  17. package/lib/NormalModule.js +3 -2242
  18. package/lib/NullFactory.js +3 -22
  19. package/lib/ProgressPlugin.js +3 -908
  20. package/lib/RawModule.js +3 -197
  21. package/lib/RequestShortener.js +3 -37
  22. package/lib/SingleEntryPlugin.js +1 -1
  23. package/lib/WebpackError.js +2 -2
  24. package/lib/asset/AssetBytesGenerator.js +8 -8
  25. package/lib/asset/AssetBytesParser.js +3 -3
  26. package/lib/asset/AssetGenerator.js +36 -22
  27. package/lib/asset/AssetModule.js +2 -2
  28. package/lib/asset/AssetModulesPlugin.js +6 -9
  29. package/lib/asset/AssetParser.js +3 -3
  30. package/lib/asset/AssetSourceGenerator.js +8 -8
  31. package/lib/asset/AssetSourceParser.js +3 -3
  32. package/lib/asset/RawDataUrlModule.js +17 -10
  33. package/lib/asset/WebManifestGenerator.js +7 -7
  34. package/lib/asset/WebManifestParser.js +5 -5
  35. package/lib/async-modules/AsyncModuleHelpers.js +6 -5
  36. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
  37. package/lib/async-modules/InferAsyncModulesPlugin.js +4 -3
  38. package/lib/async-modules/isGeneratorLowered.js +3 -3
  39. package/lib/bun/BunTargetPlugin.js +1 -1
  40. package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
  41. package/lib/{Cache.js → cache/Cache.js} +1 -1
  42. package/lib/{CacheFacade.js → cache/CacheFacade.js} +5 -5
  43. package/lib/cache/IdleFileCachePlugin.js +2 -2
  44. package/lib/cache/MemoryCachePlugin.js +2 -2
  45. package/lib/cache/MemoryWithGcCachePlugin.js +2 -2
  46. package/lib/cache/PackFileCacheStrategy.js +8 -10
  47. package/lib/cache/ResolverCachePlugin.js +8 -4
  48. package/lib/cache/mergeEtags.js +1 -1
  49. package/lib/{OptionsApply.js → config/OptionsApply.js} +3 -3
  50. package/lib/{PlatformPlugin.js → config/PlatformPlugin.js} +2 -2
  51. package/lib/{WebpackOptionsApply.js → config/WebpackOptionsApply.js} +217 -200
  52. package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
  53. package/lib/config/browserslistTargetHandler.js +1 -1
  54. package/lib/{cli.js → config/cli.js} +5 -158
  55. package/lib/config/defaults.js +144 -48
  56. package/lib/config/getClaimedAssetTypes.js +21 -13
  57. package/lib/config/normalization.js +18 -7
  58. package/lib/config/target.js +10 -0
  59. package/lib/container/ContainerEntryDependency.js +1 -1
  60. package/lib/container/ContainerEntryModule.js +13 -11
  61. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  62. package/lib/container/ContainerExposedDependency.js +1 -1
  63. package/lib/container/ContainerPlugin.js +178 -5
  64. package/lib/container/ContainerReferencePlugin.js +75 -14
  65. package/lib/container/FallbackDependency.js +1 -1
  66. package/lib/container/FallbackItemDependency.js +1 -1
  67. package/lib/container/FallbackModule.js +12 -10
  68. package/lib/container/FallbackModuleFactory.js +2 -2
  69. package/lib/container/HoistContainerReferencesPlugin.js +10 -11
  70. package/lib/container/ModuleFederationPlugin.js +306 -7
  71. package/lib/container/RemoteModule.js +14 -10
  72. package/lib/container/RemoteRuntimeModule.js +5 -5
  73. package/lib/container/RemoteToExternalDependency.js +1 -1
  74. package/lib/container/moduleFederationHooks.js +1 -1
  75. package/lib/context/ContextModule.js +36 -25
  76. package/lib/context/ContextModuleFactory.js +13 -10
  77. package/lib/context/ContextReplacementPlugin.js +3 -3
  78. package/lib/css/CssGenerator.js +38 -31
  79. package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
  80. package/lib/css/CssLoadingRuntimeModule.js +77 -44
  81. package/lib/css/CssModule.js +27 -29
  82. package/lib/css/CssModulesPlugin.js +128 -44
  83. package/lib/css/CssParser.js +682 -291
  84. package/lib/css/CssServerStylesRuntimeModule.js +3 -3
  85. package/lib/css/cssMinify.js +110 -37
  86. package/lib/css/data.js +6985 -5125
  87. package/lib/css/syntax-parser.js +19873 -0
  88. package/lib/css/syntax-printer.js +6037 -0
  89. package/lib/css/syntax.js +37 -18686
  90. package/lib/debug/ProfilingPlugin.js +52 -19
  91. package/lib/{DefinePlugin.js → define/DefinePlugin.js} +407 -41
  92. package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +9 -9
  93. package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +2 -2
  94. package/lib/deno/DenoTargetPlugin.js +1 -1
  95. package/lib/dependencies/ConstDependency.js +3 -120
  96. package/lib/dependencies/ContextElementDependency.js +5 -172
  97. package/lib/dependencies/NullDependency.js +3 -37
  98. package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
  99. package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -10
  100. package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
  101. package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
  102. package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
  103. package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
  104. package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +10 -10
  105. package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
  106. package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
  107. package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
  108. package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
  109. package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
  110. package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
  111. package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
  112. package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
  113. package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
  114. package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +166 -33
  115. package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
  116. package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +138 -61
  117. package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
  118. package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +35 -30
  119. package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +13 -12
  120. package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +47 -35
  121. package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
  122. package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
  123. package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +17 -16
  124. package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
  125. package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
  126. package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +5 -5
  127. package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
  128. package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
  129. package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
  130. package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
  131. package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
  132. package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
  133. package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
  134. package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
  135. package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
  136. package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
  137. package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
  138. package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
  139. package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +31 -9
  140. package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
  141. package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
  142. package/lib/dependencies/context/ContextElementDependency.js +198 -0
  143. package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
  144. package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +9 -9
  145. package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
  146. package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
  147. package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +4 -4
  148. package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +9 -9
  149. package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
  150. package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
  151. package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
  152. package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +12 -11
  153. package/lib/dependencies/core/ConstDependency.js +131 -0
  154. package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
  155. package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
  156. package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
  157. package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
  158. package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
  159. package/lib/dependencies/core/NullDependency.js +44 -0
  160. package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
  161. package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
  162. package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +369 -92
  163. package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +23 -16
  164. package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
  165. package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
  166. package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +23 -16
  167. package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
  168. package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
  169. package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
  170. package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +29 -21
  171. package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +19 -17
  172. package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
  173. package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +60 -89
  174. package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +80 -45
  175. package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
  176. package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
  177. package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +133 -118
  178. package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +48 -30
  179. package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +60 -36
  180. package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -4
  181. package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
  182. package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +74 -71
  183. package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +99 -84
  184. package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +26 -29
  185. package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +83 -39
  186. package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +94 -59
  187. package/lib/dependencies/esm/ESMModulesPlugin.js +207 -0
  188. package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
  189. package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -11
  190. package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +2 -2
  191. package/lib/{util → dependencies/helpers}/chainedImports.js +5 -5
  192. package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
  193. package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
  194. package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
  195. package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
  196. package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
  197. package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
  198. package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +51 -141
  199. package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -12
  200. package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +69 -19
  201. package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +50 -15
  202. package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
  203. package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
  204. package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
  205. package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
  206. package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +20 -20
  207. package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
  208. package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
  209. package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
  210. package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
  211. package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
  212. package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +119 -98
  213. package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
  214. package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
  215. package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
  216. package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
  217. package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +28 -20
  218. package/lib/{url → dependencies/url}/URLParserPlugin.js +16 -18
  219. package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
  220. package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
  221. package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
  222. package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
  223. package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +31 -33
  224. package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +22 -15
  225. package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +19 -18
  226. package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
  227. package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
  228. package/lib/devtool/ModuleFilenameHelpers.js +413 -0
  229. package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
  230. package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +154 -26
  231. package/lib/{util → devtool}/generateDebugId.js +1 -1
  232. package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
  233. package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
  234. package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
  235. package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
  236. package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
  237. package/lib/dll/DelegatedModule.js +20 -18
  238. package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
  239. package/lib/dll/DelegatedPlugin.js +1 -1
  240. package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
  241. package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
  242. package/lib/dll/DllEntryPlugin.js +3 -3
  243. package/lib/dll/DllModule.js +11 -9
  244. package/lib/dll/DllModuleFactory.js +3 -3
  245. package/lib/dll/DllPlugin.js +18 -6
  246. package/lib/dll/DllReferencePlugin.js +102 -26
  247. package/lib/dll/LibManifestPlugin.js +9 -7
  248. package/lib/electron/ElectronTargetPlugin.js +2 -2
  249. package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
  250. package/lib/{dependencies → entry}/EntryDependency.js +11 -2
  251. package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
  252. package/lib/entry/EntryPlugin.js +75 -0
  253. package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
  254. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  255. package/lib/errors/BuildCycleError.js +1 -1
  256. package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
  257. package/lib/errors/ChunkRenderError.js +1 -1
  258. package/lib/errors/CodeGenerationError.js +1 -1
  259. package/lib/errors/CommentCompilationWarning.js +1 -1
  260. package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
  261. package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
  262. package/lib/errors/DeprecatedOptionWarning.js +30 -0
  263. package/lib/errors/DllManifestError.js +26 -0
  264. package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
  265. package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
  266. package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
  267. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  268. package/lib/{ErrorHelpers.js → errors/ErrorHelpers.js} +7 -5
  269. package/lib/errors/ExternalStarReexportError.js +2 -2
  270. package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
  271. package/lib/errors/HookWebpackError.js +4 -4
  272. package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
  273. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  274. package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
  275. package/lib/errors/ModuleBuildError.js +1 -1
  276. package/lib/errors/ModuleDependencyError.js +2 -2
  277. package/lib/errors/ModuleDependencyWarning.js +2 -2
  278. package/lib/errors/ModuleError.js +1 -1
  279. package/lib/errors/ModuleHashingError.js +1 -1
  280. package/lib/errors/ModuleNotFoundError.js +3 -3
  281. package/lib/errors/ModuleParseError.js +1 -1
  282. package/lib/errors/ModuleRestoreError.js +1 -1
  283. package/lib/errors/ModuleStoreError.js +1 -1
  284. package/lib/errors/ModuleWarning.js +1 -1
  285. package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
  286. package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
  287. package/lib/errors/NodeStuffInWebError.js +7 -2
  288. package/lib/errors/PathVariableError.js +31 -0
  289. package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
  290. package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
  291. package/lib/errors/RuntimeModuleGenerationError.js +51 -0
  292. package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
  293. package/lib/errors/SystemImportDeprecationWarning.js +43 -0
  294. package/lib/errors/UnmergeableEntryExportsError.js +34 -0
  295. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  296. package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
  297. package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
  298. package/lib/errors/WebpackError.js +12 -3
  299. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
  300. package/lib/esm/ModuleChunkFormatPlugin.js +19 -19
  301. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
  302. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
  303. package/lib/{ExternalModule.js → externals/ExternalModule.js} +79 -55
  304. package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +41 -39
  305. package/lib/externals/ExternalsPlugin.js +99 -0
  306. package/lib/fs/FileSystemInfo.js +4642 -0
  307. package/lib/{util → fs}/fs.js +22 -9
  308. package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
  309. package/lib/graph/Chunk.js +985 -0
  310. package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +187 -80
  311. package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
  312. package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
  313. package/lib/graph/Dependency.js +628 -0
  314. package/lib/graph/Entrypoint.js +136 -0
  315. package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +130 -82
  316. package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
  317. package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +30 -30
  318. package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
  319. package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +152 -57
  320. package/lib/{util → graph}/findGraphRoots.js +14 -8
  321. package/lib/graph/isDependencyKind.js +23 -0
  322. package/lib/hmr/HotModuleReplacement.runtime.js +2 -2
  323. package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +47 -47
  324. package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
  325. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +10 -8
  326. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
  327. package/lib/hmr/LazyCompilationPlugin.js +31 -21
  328. package/lib/html/HtmlGenerator.js +107 -43
  329. package/lib/html/HtmlModule.js +6 -2
  330. package/lib/html/HtmlModulesPlugin.js +172 -76
  331. package/lib/html/HtmlParser.js +503 -153
  332. package/lib/html/builtinEmbeddedRenderer.js +60 -13
  333. package/lib/html/data.js +2 -1
  334. package/lib/html/htmlMinify.js +111 -41
  335. package/lib/html/syntax-parser.js +15796 -0
  336. package/lib/html/syntax-printer.js +1034 -0
  337. package/lib/html/syntax.js +37 -13952
  338. package/lib/html/xmlMinify.js +67 -0
  339. package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
  340. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  341. package/lib/ids/HashedModuleIdsPlugin.js +31 -4
  342. package/lib/ids/IdHelpers.js +4 -4
  343. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  344. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
  345. package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
  346. package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
  347. package/lib/ids/SyncModuleIdsPlugin.js +3 -3
  348. package/lib/{util → ids}/numberHash.js +1 -1
  349. package/lib/index.js +303 -97
  350. package/lib/{APIPlugin.js → javascript/APIPlugin.js} +25 -25
  351. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
  352. package/lib/javascript/BasicEvaluatedExpression.js +4 -4
  353. package/lib/javascript/ChunkHelpers.js +64 -4
  354. package/lib/javascript/CommonJsChunkFormatPlugin.js +4 -7
  355. package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +7 -7
  356. package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +74 -7
  357. package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
  358. package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
  359. package/lib/javascript/JavascriptGenerator.js +17 -17
  360. package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +7 -7
  361. package/lib/javascript/JavascriptModule.js +4 -3
  362. package/lib/javascript/JavascriptModulesPlugin.js +440 -211
  363. package/lib/javascript/JavascriptParser.js +220 -134
  364. package/lib/javascript/JavascriptParserHelpers.js +1 -1
  365. package/lib/javascript/MergedEntryExports.js +196 -0
  366. package/lib/javascript/ScopeAnalyzer.js +3840 -5
  367. package/lib/javascript/StartupHelpers.js +6 -6
  368. package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +12 -15
  369. package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
  370. package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
  371. package/lib/javascript/data.js +533 -122
  372. package/lib/javascript/jsMinify.js +272 -0
  373. package/lib/javascript/regexp.js +67 -32
  374. package/lib/javascript/syntax-parser.js +18561 -0
  375. package/lib/javascript/syntax-printer-data.js +933 -0
  376. package/lib/javascript/syntax-printer.js +47106 -0
  377. package/lib/javascript/syntax.js +20 -11274
  378. package/lib/json/JsonData.js +1 -1
  379. package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
  380. package/lib/json/JsonGenerator.js +10 -10
  381. package/lib/json/JsonModule.js +2 -2
  382. package/lib/json/JsonModulesPlugin.js +1 -1
  383. package/lib/json/JsonParser.js +5 -5
  384. package/lib/json/jsonMinify.js +69 -0
  385. package/lib/library/AbstractLibraryPlugin.js +28 -15
  386. package/lib/library/AmdLibraryPlugin.js +4 -4
  387. package/lib/library/AssignLibraryPlugin.js +27 -11
  388. package/lib/library/EnableLibraryPlugin.js +1 -1
  389. package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
  390. package/lib/library/JsonpLibraryPlugin.js +1 -1
  391. package/lib/library/LibraryTemplatePlugin.js +53 -0
  392. package/lib/library/ModuleLibraryPlugin.js +160 -166
  393. package/lib/library/SystemLibraryPlugin.js +6 -8
  394. package/lib/library/UmdLibraryPlugin.js +3 -4
  395. package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
  396. package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
  397. package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
  398. package/lib/{dependencies → loaders}/LoaderPlugin.js +2 -2
  399. package/lib/loaders/LoaderRunner.js +31 -21
  400. package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
  401. package/lib/logging/Logger.js +7 -9
  402. package/lib/logging/ProgressPlugin.js +957 -0
  403. package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
  404. package/lib/{Generator.js → module/Generator.js} +16 -14
  405. package/lib/{Module.js → module/Module.js} +119 -51
  406. package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
  407. package/lib/module/NormalModule.js +2348 -0
  408. package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +53 -54
  409. package/lib/module/NullFactory.js +29 -0
  410. package/lib/{Parser.js → module/Parser.js} +3 -3
  411. package/lib/module/RawModule.js +208 -0
  412. package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
  413. package/lib/{util → module}/extractSourceMap.js +2 -2
  414. package/lib/{util → module}/findCaseMismatch.js +2 -2
  415. package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
  416. package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
  417. package/lib/{dependencies → node}/ExternalModuleInitFragment.js +6 -5
  418. package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
  419. package/lib/node/NodeEnvironmentPlugin.js +11 -1
  420. package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
  421. package/lib/node/NodeTargetPlugin.js +1 -1
  422. package/lib/node/NodeWatchFileSystem.js +58 -6
  423. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
  424. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +9 -7
  425. package/lib/node/ReadFileCompileWasmPlugin.js +7 -5
  426. package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
  427. package/lib/node/nodeConsole.js +2 -4
  428. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  429. package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
  430. package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +13 -13
  431. package/lib/optimize/ConcatenatedModule.js +229 -214
  432. package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
  433. package/lib/optimize/ConstExportsPlugin.js +7 -7
  434. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  435. package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
  436. package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +17 -17
  437. package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +17 -17
  438. package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
  439. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
  440. package/lib/optimize/InlineExports.js +11 -3
  441. package/lib/optimize/InnerGraph.js +5 -13
  442. package/lib/optimize/InnerGraphPlugin.js +10 -10
  443. package/lib/optimize/LazyBarrels.js +584 -0
  444. package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
  445. package/lib/optimize/LimitChunkCountPlugin.js +16 -7
  446. package/lib/optimize/MangleExportsPlugin.js +5 -5
  447. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
  448. package/lib/optimize/MinChunkSizePlugin.js +9 -6
  449. package/lib/optimize/ModuleConcatenationPlugin.js +20 -12
  450. package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
  451. package/lib/optimize/RealContentHashPlugin.js +16 -7
  452. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  453. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  454. package/lib/optimize/SideEffectsFlagPlugin.js +18 -18
  455. package/lib/optimize/SplitChunksPlugin.js +713 -155
  456. package/lib/{util → optimize}/TupleQueue.js +9 -9
  457. package/lib/optimize/chunkSetIntersections.js +437 -0
  458. package/lib/{util → optimize}/deterministicGrouping.js +17 -17
  459. package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
  460. package/lib/{CleanPlugin.js → output/CleanPlugin.js} +66 -24
  461. package/lib/{CopyPlugin.js → output/CopyPlugin.js} +142 -67
  462. package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
  463. package/lib/output/SSRManifestPlugin.js +349 -0
  464. package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
  465. package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
  466. package/lib/performance/BroadContextsPlugin.js +4 -4
  467. package/lib/performance/CacheEffectivenessPlugin.js +2 -3
  468. package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
  469. package/lib/performance/DuplicateModulesPlugin.js +3 -4
  470. package/lib/performance/DuplicatePackagesPlugin.js +3 -3
  471. package/lib/performance/DynamicExportsPlugin.js +2 -2
  472. package/lib/performance/EvalUsagePlugin.js +3 -3
  473. package/lib/performance/HotspotsPlugin.js +11 -10
  474. package/lib/performance/LargeModulesPlugin.js +2 -3
  475. package/lib/performance/LegacyJavascriptPlugin.js +1 -2
  476. package/lib/performance/MissingSideEffectsPlugin.js +2 -3
  477. package/lib/performance/MissingSourceMapsPlugin.js +5 -6
  478. package/lib/performance/PureAnnotationsPlugin.js +3 -3
  479. package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
  480. package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
  481. package/lib/performance/SizeLimitsPlugin.js +11 -12
  482. package/lib/performance/TopLevelThisPlugin.js +8 -7
  483. package/lib/performance/UnsplitVendorsPlugin.js +1 -2
  484. package/lib/performance/UnusedAliasesPlugin.js +6 -7
  485. package/lib/performance/UnusedAssetsPlugin.js +5 -5
  486. package/lib/performance/UnusedDefinesPlugin.js +2 -2
  487. package/lib/performance/UnusedExternalsPlugin.js +3 -4
  488. package/lib/performance/UnusedFederationPlugin.js +2 -4
  489. package/lib/performance/UnusedModulesPlugin.js +5 -4
  490. package/lib/performance/getModuleSize.js +1 -1
  491. package/lib/performance/hasOnlyUnusedExports.js +4 -4
  492. package/lib/performance/isOnlyReexported.js +7 -6
  493. package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
  494. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
  495. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -1
  496. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
  497. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
  498. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
  499. package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
  500. package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
  501. package/lib/prefetch/ResourceHintPlugin.js +65 -44
  502. package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
  503. package/lib/prefetch/StartupAssetHintRuntimeModule.js +3 -3
  504. package/lib/prefetch/parseResourceHintOptions.js +4 -3
  505. package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
  506. package/lib/{dependencies → provide}/ProvidedDependency.js +14 -13
  507. package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
  508. package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
  509. package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
  510. package/lib/resolve/getResolveOptionsKey.js +59 -0
  511. package/lib/rules/RuleSetCompiler.js +27 -46
  512. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
  513. package/lib/runtime/AsyncModuleRuntimeModule.js +7 -4
  514. package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
  515. package/lib/runtime/BaseUriRuntimeModule.js +3 -3
  516. package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
  517. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
  518. package/lib/runtime/CompatRuntimeModule.js +4 -4
  519. package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
  520. package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
  521. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  522. package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
  523. package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
  524. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
  525. package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
  526. package/lib/runtime/GetChunkFilenameRuntimeModule.js +6 -6
  527. package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
  528. package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
  529. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
  530. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
  531. package/lib/runtime/GlobalRuntimeModule.js +3 -3
  532. package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
  533. package/lib/runtime/HelperRuntimeModule.js +16 -1
  534. package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
  535. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +80 -17
  536. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
  537. package/lib/runtime/NonceRuntimeModule.js +2 -2
  538. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
  539. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  540. package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
  541. package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +18 -1
  542. package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
  543. package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
  544. package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +48 -50
  545. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
  546. package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
  547. package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
  548. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
  549. package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
  550. package/lib/runtime/SystemContextRuntimeModule.js +2 -2
  551. package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
  552. package/lib/runtime/WorkerRuntimeModule.js +1 -1
  553. package/lib/runtime/baseUri.js +1 -1
  554. package/lib/schemes/DataUriPlugin.js +1 -1
  555. package/lib/schemes/HttpUriPlugin.js +67 -11
  556. package/lib/schemes/VirtualUrlPlugin.js +50 -16
  557. package/lib/serialization/AggregateErrorSerializer.js +2 -2
  558. package/lib/serialization/FileMiddleware.js +3 -3
  559. package/lib/serialization/ObjectMiddleware.js +47 -16
  560. package/lib/serialization/SerializerMiddleware.js +2 -2
  561. package/lib/serialization/SingleItemMiddleware.js +4 -2
  562. package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
  563. package/lib/sharing/ConsumeSharedModule.js +18 -14
  564. package/lib/sharing/ConsumeSharedPlugin.js +148 -42
  565. package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
  566. package/lib/sharing/ProvideForSharedDependency.js +9 -1
  567. package/lib/sharing/ProvideSharedDependency.js +1 -1
  568. package/lib/sharing/ProvideSharedModule.js +11 -9
  569. package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
  570. package/lib/sharing/ProvideSharedPlugin.js +111 -20
  571. package/lib/sharing/SharePlugin.js +102 -9
  572. package/lib/sharing/ShareRuntimeModule.js +6 -6
  573. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  574. package/lib/{util → sharing}/semver.js +14 -16
  575. package/lib/sharing/utils.js +59 -2
  576. package/lib/stats/DefaultStatsFactoryPlugin.js +22 -19
  577. package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
  578. package/lib/stats/DefaultStatsPrinterPlugin.js +3 -3
  579. package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
  580. package/lib/{Stats.js → stats/Stats.js} +4 -4
  581. package/lib/stats/StatsFactory.js +14 -13
  582. package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
  583. package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
  584. package/lib/template/DependencyTemplate.js +77 -0
  585. package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
  586. package/lib/template/InitFragment.js +223 -0
  587. package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
  588. package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
  589. package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
  590. package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +145 -63
  591. package/lib/{Template.js → template/Template.js} +13 -11
  592. package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +19 -23
  593. package/lib/typescript/TypeScriptPlugin.js +3 -3
  594. package/lib/util/RequestShortener.js +44 -0
  595. package/lib/util/SortableSet.js +87 -22
  596. package/lib/util/SourceProcessor.js +349 -44
  597. package/lib/util/TupleSet.js +27 -27
  598. package/lib/util/WeakTupleMap.js +10 -12
  599. package/lib/util/buildDiagnostics.js +2 -2
  600. package/lib/util/comparators.js +10 -10
  601. package/lib/util/concatenate.js +28 -147
  602. package/lib/util/createMappings.js +111 -0
  603. package/lib/util/dataURL.js +94 -15
  604. package/lib/util/deprecation.js +1 -1
  605. package/lib/util/extractComments.js +118 -0
  606. package/lib/util/formatLocation.js +1 -1
  607. package/lib/util/globUtils.js +197 -16
  608. package/lib/util/haltVisitors.js +51 -0
  609. package/lib/util/handlerKeys.js +2 -2
  610. package/lib/util/identifier.js +117 -1
  611. package/lib/util/implicitTypeLoaderFallback.js +6 -4
  612. package/lib/util/internalSerializables.js +294 -102
  613. package/lib/util/magicComment.js +12 -7
  614. package/lib/util/makeSerializable.js +23 -4
  615. package/lib/util/parseJson.js +1 -1
  616. package/lib/util/preloadModuleType.js +5 -2
  617. package/lib/util/registerExternalSerializer.js +2 -2
  618. package/lib/util/removeBOM.js +1 -1
  619. package/lib/util/runtime.js +1 -1
  620. package/lib/util/serialization.js +4 -1
  621. package/lib/util/source.js +2 -2
  622. package/lib/util/terminalColors.js +161 -0
  623. package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
  624. package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
  625. package/lib/{wasm-async → wasm}/AsyncWasmModule.js +9 -5
  626. package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +5 -5
  627. package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +11 -10
  628. package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
  629. package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +8 -8
  630. package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
  631. package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +9 -7
  632. package/lib/wasm/wasmModuleFilename.js +2 -2
  633. package/lib/wasm-sync/SyncWasmModule.js +3 -3
  634. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +8 -8
  635. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
  636. package/lib/wasm-sync/WebAssemblyGenerator.js +9 -8
  637. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +14 -15
  638. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
  639. package/lib/wasm-sync/WebAssemblyParser.js +6 -6
  640. package/lib/wasm-sync/WebAssemblyUtils.js +6 -5
  641. package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
  642. package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
  643. package/lib/{Watching.js → watch/Watching.js} +8 -8
  644. package/lib/web/FetchCompileAsyncWasmPlugin.js +8 -6
  645. package/lib/web/FetchCompileWasmPlugin.js +6 -4
  646. package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
  647. package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
  648. package/lib/web/JsonpTemplatePlugin.js +1 -1
  649. package/lib/webpack.js +27 -17
  650. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
  651. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
  652. package/package.json +48 -41
  653. package/schemas/WebpackOptions.check.js +2 -1
  654. package/schemas/WebpackOptions.d.json.ts +2 -0
  655. package/schemas/WebpackOptions.json +294 -74
  656. package/schemas/plugins/BannerPlugin.check.js +2 -1
  657. package/schemas/plugins/BannerPlugin.json +29 -2
  658. package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -0
  659. package/schemas/plugins/HtmlParserOptions.check.js +2 -1
  660. package/schemas/plugins/IgnorePlugin.check.js +1 -0
  661. package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
  662. package/schemas/plugins/IgnorePlugin.json +1 -1
  663. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -0
  664. package/schemas/plugins/ManifestPlugin.check.js +1 -0
  665. package/schemas/plugins/ManifestPlugin.json +3 -3
  666. package/schemas/plugins/ProgressPlugin.check.js +2 -1
  667. package/schemas/plugins/ProgressPlugin.json +2 -7
  668. package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
  669. package/schemas/plugins/SSRManifestPlugin.json +20 -0
  670. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -1
  671. package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
  672. package/schemas/plugins/WatchIgnorePlugin.check.js +2 -1
  673. package/schemas/plugins/WatchIgnorePlugin.json +12 -3
  674. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -0
  675. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -0
  676. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -0
  677. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -0
  678. package/schemas/plugins/container/ContainerPlugin.check.js +2 -1
  679. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  680. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -0
  681. package/schemas/plugins/container/ExternalsType.check.js +1 -0
  682. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -1
  683. package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
  684. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -0
  685. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -0
  686. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -0
  687. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -0
  688. package/schemas/plugins/css/CssParserOptions.check.js +1 -0
  689. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -0
  690. package/schemas/plugins/dll/DllPlugin.check.js +1 -0
  691. package/schemas/plugins/dll/DllReferencePlugin.check.js +2 -1
  692. package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
  693. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -0
  694. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -0
  695. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -0
  696. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +1 -0
  697. package/schemas/plugins/json/JsonModulesPluginParser.check.js +1 -0
  698. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -0
  699. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -0
  700. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -0
  701. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -0
  702. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -0
  703. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +1 -0
  704. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +2 -1
  705. package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
  706. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +2 -1
  707. package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
  708. package/schemas/plugins/sharing/SharePlugin.check.js +2 -1
  709. package/schemas/plugins/sharing/SharePlugin.json +32 -0
  710. package/types.d.ts +19355 -13873
  711. package/lib/LazyBarrel.js +0 -388
  712. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
  713. package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
  714. package/lib/javascript/ChunkFormatHelpers.js +0 -72
  715. package/lib/javascript/grammar.js +0 -5546
  716. package/lib/javascript/parser.js +0 -1500
  717. package/lib/javascript/regexpData.js +0 -51
  718. package/lib/performance/getSourceModules.js +0 -22
  719. package/lib/util/Semaphore.js +0 -65
  720. package/lib/util/objectToMap.js +0 -15
  721. package/schemas/WebpackOptions.check.d.ts +0 -7
  722. package/schemas/_container.json +0 -155
  723. package/schemas/_sharing.json +0 -118
  724. package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
  725. package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
  726. package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
  727. package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
  728. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
  729. package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
  730. package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
  731. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
  732. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
  733. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
  734. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
  735. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
  736. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
  737. package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
  738. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
  739. package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
  740. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
  741. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
  742. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
  743. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
  744. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
  745. package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
  746. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
  747. package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
  748. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
  749. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
  750. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
  751. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
  752. package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
  753. package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
  754. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
  755. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
  756. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
  757. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
  758. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
  759. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
  760. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
  761. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
  762. package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
  763. /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
  764. /package/lib/{util → css}/conventions.js +0 -0
  765. /package/lib/{util → css}/topologicalSort.js +0 -0
  766. /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
  767. /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
  768. /package/lib/{util → fs}/StackedCacheMap.js +0 -0
  769. /package/lib/{util → javascript}/StackedMap.js +0 -0
  770. /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
  771. /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
  772. /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
  773. /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
  774. /package/lib/{util → optimize}/Queue.js +0 -0
  775. /package/lib/{util → stats}/smartGrouping.js +0 -0
@@ -5,14 +5,14 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const { applyWebpackOptionsDefaults } = require("./config/defaults");
9
- const { getNormalizedWebpackOptions } = require("./config/normalization");
8
+ const { applyWebpackOptionsDefaults } = require("./defaults");
9
+ const { getNormalizedWebpackOptions } = require("./normalization");
10
10
 
11
11
  /**
12
12
  * @import {
13
13
  * WebpackOptions,
14
14
  * WebpackOptionsNormalized
15
- * } from "../declarations/WebpackOptions"
15
+ * } from "../../declarations/WebpackOptions"
16
16
  */
17
17
 
18
18
  class WebpackOptionsDefaulter {
@@ -122,7 +122,7 @@ const resolve = (browsers) => {
122
122
  return Number(parsedMajor) >= requiredVersion;
123
123
  }
124
124
  return requiredVersion[0] === Number(parsedMajor)
125
- ? Number(parserMinor) >= requiredVersion[1]
125
+ ? Number(parserMinor || 0) >= requiredVersion[1]
126
126
  : Number(parsedMajor) > requiredVersion[0];
127
127
  });
128
128
  const anyNode = browsers.some((b) => b.startsWith("node "));
@@ -6,10 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  const path = require("path");
9
- const tty = require("tty");
10
- const webpackSchema =
11
- /** @type {EXPECTED_ANY} */
12
- (require("../schemas/WebpackOptions.json"));
9
+ const webpackSchema = require("../../schemas/WebpackOptions.json");
13
10
 
14
11
  /** @import { JSONSchema4, JSONSchema6, JSONSchema7 } from "json-schema" */
15
12
  /** @typedef {JSONSchema4 | JSONSchema6 | JSONSchema7} JSONSchema */
@@ -504,7 +501,9 @@ const getArguments = (schema = webpackSchema) => {
504
501
  return flags;
505
502
  };
506
503
 
507
- /** @type {WeakMap<EXPECTED_OBJECT, number>} */
504
+ /** @typedef {ObjectConfiguration | ParsedValue | undefined} ConfigurationValue */
505
+
506
+ /** @type {WeakMap<ConfigurationValue[], number>} */
508
507
  const cliAddedItems = new WeakMap();
509
508
 
510
509
  /** @typedef {string | number} Property */
@@ -522,7 +521,7 @@ const isUnsafeKey = (name) =>
522
521
  * @param {ObjectConfiguration} config configuration
523
522
  * @param {string} schemaPath path in the config
524
523
  * @param {number | undefined} index index of value when multiple values are provided, otherwise undefined
525
- * @returns {{ problem?: LocalProblem, object?: ObjectConfiguration, property?: Property, value?: EXPECTED_OBJECT | EXPECTED_ANY[] }} problem or object with property and value
524
+ * @returns {{ problem?: LocalProblem, object?: ObjectConfiguration, property?: Property, value?: ConfigurationValue }} problem or object with property and value
526
525
  */
527
526
  const getObjectAndProperty = (config, schemaPath, index = 0) => {
528
527
  if (!schemaPath) return { value: config };
@@ -825,157 +824,5 @@ const processArguments = (args, config, values) => {
825
824
  return problems;
826
825
  };
827
826
 
828
- /**
829
- * Checks whether this object is color supported.
830
- * @returns {boolean} true when colors supported, otherwise false
831
- */
832
- const isColorSupported = () => {
833
- const { env = {}, argv = [], platform = "" } = process;
834
-
835
- // Read values instead of using `in`: Deno's and Bun's `process.env` honor
836
- // property access but not the `in`/`has` trap, so `"X" in env` is unreliable.
837
- const isDisabled = env.NO_COLOR !== undefined || argv.includes("--no-color");
838
- const isForced = env.FORCE_COLOR !== undefined || argv.includes("--color");
839
- const isWindows = platform === "win32";
840
- const isDumbTerminal = env.TERM === "dumb";
841
-
842
- const isCompatibleTerminal = tty.isatty(1) && env.TERM && !isDumbTerminal;
843
-
844
- const isCI =
845
- env.CI !== undefined &&
846
- (env.GITHUB_ACTIONS !== undefined ||
847
- env.GITLAB_CI !== undefined ||
848
- env.CIRCLECI !== undefined);
849
-
850
- return (
851
- !isDisabled &&
852
- (isForced || (isWindows && !isDumbTerminal) || isCompatibleTerminal || isCI)
853
- );
854
- };
855
-
856
- /**
857
- * Returns result.
858
- * @param {number} index index
859
- * @param {string} string string
860
- * @param {string} close close
861
- * @param {string=} replace replace
862
- * @param {string=} head head
863
- * @param {string=} tail tail
864
- * @param {number=} next next
865
- * @returns {string} result
866
- */
867
- const replaceClose = (
868
- index,
869
- string,
870
- close,
871
- replace,
872
- head = string.slice(0, Math.max(0, index)) + replace,
873
- tail = string.slice(Math.max(0, index + close.length)),
874
- next = tail.indexOf(close)
875
- ) => head + (next < 0 ? tail : replaceClose(next, tail, close, replace));
876
-
877
- /**
878
- * Returns result.
879
- * @param {number} index index to replace
880
- * @param {string} string string
881
- * @param {string} open open string
882
- * @param {string} close close string
883
- * @param {string=} replace extra replace
884
- * @returns {string} result
885
- */
886
- const clearBleed = (index, string, open, close, replace) =>
887
- index < 0
888
- ? open + string + close
889
- : open + replaceClose(index, string, close, replace) + close;
890
-
891
- /** @typedef {(value: EXPECTED_ANY) => string} PrintFunction */
892
-
893
- /**
894
- * Returns function to create color.
895
- * @param {string} open open string
896
- * @param {string} close close string
897
- * @param {string=} replace extra replace
898
- * @param {number=} at at
899
- * @returns {PrintFunction} function to create color
900
- */
901
- const filterEmpty =
902
- (open, close, replace = open, at = open.length + 1) =>
903
- (string) =>
904
- string || !(string === "" || string === undefined)
905
- ? clearBleed(`${string}`.indexOf(close, at), string, open, close, replace)
906
- : "";
907
-
908
- /**
909
- * Returns result.
910
- * @param {number} open open code
911
- * @param {number} close close code
912
- * @param {string=} replace extra replace
913
- * @returns {PrintFunction} result
914
- */
915
- const init = (open, close, replace) =>
916
- filterEmpty(`\u001B[${open}m`, `\u001B[${close}m`, replace);
917
-
918
- /**
919
- * Defines the colors type used by this module.
920
- * @typedef {{ reset: PrintFunction, bold: PrintFunction, dim: PrintFunction, italic: PrintFunction, underline: PrintFunction, inverse: PrintFunction, hidden: PrintFunction, strikethrough: PrintFunction, black: PrintFunction, red: PrintFunction, green: PrintFunction, yellow: PrintFunction, blue: PrintFunction, magenta: PrintFunction, cyan: PrintFunction, white: PrintFunction, gray: PrintFunction, bgBlack: PrintFunction, bgRed: PrintFunction, bgGreen: PrintFunction, bgYellow: PrintFunction, bgBlue: PrintFunction, bgMagenta: PrintFunction, bgCyan: PrintFunction, bgWhite: PrintFunction, blackBright: PrintFunction, redBright: PrintFunction, greenBright: PrintFunction, yellowBright: PrintFunction, blueBright: PrintFunction, magentaBright: PrintFunction, cyanBright: PrintFunction, whiteBright: PrintFunction, bgBlackBright: PrintFunction, bgRedBright: PrintFunction, bgGreenBright: PrintFunction, bgYellowBright: PrintFunction, bgBlueBright: PrintFunction, bgMagentaBright: PrintFunction, bgCyanBright: PrintFunction, bgWhiteBright: PrintFunction }} Colors
921
- */
922
-
923
- /**
924
- * Defines the colors options type used by this module.
925
- * @typedef {object} ColorsOptions
926
- * @property {boolean=} useColor force use colors
927
- */
928
-
929
- /**
930
- * Creates a colors from the provided colors option.
931
- * @param {ColorsOptions=} options options
932
- * @returns {Colors} colors
933
- */
934
- const createColors = ({ useColor = isColorSupported() } = {}) => ({
935
- reset: useColor ? init(0, 0) : String,
936
- bold: useColor ? init(1, 22, "\u001B[22m\u001B[1m") : String,
937
- dim: useColor ? init(2, 22, "\u001B[22m\u001B[2m") : String,
938
- italic: useColor ? init(3, 23) : String,
939
- underline: useColor ? init(4, 24) : String,
940
- inverse: useColor ? init(7, 27) : String,
941
- hidden: useColor ? init(8, 28) : String,
942
- strikethrough: useColor ? init(9, 29) : String,
943
- black: useColor ? init(30, 39) : String,
944
- red: useColor ? init(31, 39) : String,
945
- green: useColor ? init(32, 39) : String,
946
- yellow: useColor ? init(33, 39) : String,
947
- blue: useColor ? init(34, 39) : String,
948
- magenta: useColor ? init(35, 39) : String,
949
- cyan: useColor ? init(36, 39) : String,
950
- white: useColor ? init(37, 39) : String,
951
- gray: useColor ? init(90, 39) : String,
952
- bgBlack: useColor ? init(40, 49) : String,
953
- bgRed: useColor ? init(41, 49) : String,
954
- bgGreen: useColor ? init(42, 49) : String,
955
- bgYellow: useColor ? init(43, 49) : String,
956
- bgBlue: useColor ? init(44, 49) : String,
957
- bgMagenta: useColor ? init(45, 49) : String,
958
- bgCyan: useColor ? init(46, 49) : String,
959
- bgWhite: useColor ? init(47, 49) : String,
960
- blackBright: useColor ? init(90, 39) : String,
961
- redBright: useColor ? init(91, 39) : String,
962
- greenBright: useColor ? init(92, 39) : String,
963
- yellowBright: useColor ? init(93, 39) : String,
964
- blueBright: useColor ? init(94, 39) : String,
965
- magentaBright: useColor ? init(95, 39) : String,
966
- cyanBright: useColor ? init(96, 39) : String,
967
- whiteBright: useColor ? init(97, 39) : String,
968
- bgBlackBright: useColor ? init(100, 49) : String,
969
- bgRedBright: useColor ? init(101, 49) : String,
970
- bgGreenBright: useColor ? init(102, 49) : String,
971
- bgYellowBright: useColor ? init(103, 49) : String,
972
- bgBlueBright: useColor ? init(104, 49) : String,
973
- bgMagentaBright: useColor ? init(105, 49) : String,
974
- bgCyanBright: useColor ? init(106, 49) : String,
975
- bgWhiteBright: useColor ? init(107, 49) : String
976
- });
977
-
978
- module.exports.createColors = createColors;
979
827
  module.exports.getArguments = getArguments;
980
- module.exports.isColorSupported = isColorSupported;
981
828
  module.exports.processArguments = processArguments;
@@ -11,7 +11,7 @@ const {
11
11
  CSS_TYPE,
12
12
  JAVASCRIPT_TYPE,
13
13
  UNKNOWN_TYPE
14
- } = require("../ModuleSourceTypeConstants");
14
+ } = require("../module/ModuleSourceTypeConstants");
15
15
  const {
16
16
  ASSET_MODULE_TYPE,
17
17
  ASSET_MODULE_TYPE_BYTES,
@@ -29,9 +29,9 @@ const {
29
29
  JSON_MODULE_TYPE,
30
30
  WEBASSEMBLY_MODULE_TYPE_ASYNC,
31
31
  WEBASSEMBLY_MODULE_TYPE_SYNC
32
- } = require("../ModuleTypeConstants");
33
- const Template = require("../Template");
32
+ } = require("../module/ModuleTypeConstants");
34
33
  const RuleSetCompiler = require("../rules/RuleSetCompiler");
34
+ const Template = require("../template/Template");
35
35
  const { cleverMerge } = require("../util/cleverMerge");
36
36
  const {
37
37
  getDefaultTarget,
@@ -79,7 +79,7 @@ const {
79
79
  * WebpackOptionsNormalized
80
80
  * } from "../../declarations/WebpackOptions"
81
81
  */
82
- /** @import Module from "../Module" */
82
+ /** @import Module from "../module/Module" */
83
83
  /**
84
84
  * @import {
85
85
  * ChunkLoadingTypes
@@ -228,7 +228,7 @@ const {
228
228
  const NODE_MODULES_REGEXP = /[\\/]node_modules[\\/]/i;
229
229
  const DEFAULT_CACHE_NAME = "default";
230
230
  const DEFAULTS = {
231
- // TODO webpack 6 - use xxhash64
231
+ // TODO in the next major release: use xxhash64
232
232
  HASH_FUNCTION: "md4"
233
233
  };
234
234
 
@@ -386,7 +386,7 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
386
386
 
387
387
  F(options, "validate", () => !(futureDefaults === true && production));
388
388
 
389
- // Progress lives on infrastructureLogging; webpack@6 shows the interactive
389
+ // Progress lives on infrastructureLogging; the next major release shows the interactive
390
390
  // bar by default (`"auto"` = TTY only), webpack@5 stays opt-in.
391
391
  D(options.infrastructureLogging, "progress", futureDefaults ? "auto" : false);
392
392
 
@@ -536,15 +536,19 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
536
536
  );
537
537
 
538
538
  F(options, "externalsType", () => {
539
- const validExternalTypes = require("../../schemas/WebpackOptions.json")
540
- .definitions.ExternalsType.enum;
541
-
542
- return options.output.library &&
543
- validExternalTypes.includes(options.output.library.type)
544
- ? /** @type {ExternalsType} */ (options.output.library.type)
545
- : options.output.module
546
- ? "module-import"
547
- : "var";
539
+ const libraryType = options.output.library && options.output.library.type;
540
+ if (libraryType !== undefined) {
541
+ // The schema states which types are externals types, and reading it
542
+ // costs 498 KB of objects, so only a build naming one pays for that.
543
+ const validExternalTypes = require("../../schemas/WebpackOptions.json")
544
+ .definitions.ExternalsType.enum;
545
+
546
+ if (validExternalTypes.includes(libraryType)) {
547
+ return /** @type {ExternalsType} */ (libraryType);
548
+ }
549
+ }
550
+
551
+ return options.output.module ? "module-import" : "var";
548
552
  });
549
553
 
550
554
  applyNodeDefaults(options.node, {
@@ -575,9 +579,14 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
575
579
  applyOptimizationDefaults(options.optimization, {
576
580
  development,
577
581
  production,
582
+ futureDefaults,
578
583
  css:
579
584
  /** @type {boolean} */
580
585
  (options.experiments.css),
586
+ esmLibrary:
587
+ /** @type {string[]} */
588
+ (options.output.enabledLibraryTypes).length > 0 &&
589
+ Boolean(options.output.module),
581
590
  records: Boolean(options.recordsInputPath || options.recordsOutputPath)
582
591
  });
583
592
 
@@ -641,7 +650,7 @@ const applyExperimentsDefaults = (
641
650
  ) => {
642
651
  D(experiments, "futureDefaults", false);
643
652
  D(experiments, "backCompat", !experiments.futureDefaults);
644
- // TODO do we need sync web assembly in webpack@6?
653
+ // TODO in the next major release: do we need sync web assembly?
645
654
  D(experiments, "syncWebAssembly", false);
646
655
  D(
647
656
  experiments,
@@ -665,7 +674,7 @@ const applyExperimentsDefaults = (
665
674
 
666
675
  // Enabled implicitly the value stays `"auto"`, and the plugins then step
667
676
  // aside per module for requests loaders were applied to.
668
- // TODO webpack 6: css/html default to `true`, drop the `"auto"` marker.
677
+ // TODO in the next major release: css/html/asyncWebAssembly default to `true`, drop the `"auto"` marker.
669
678
  if (experiments.css === "auto") {
670
679
  experiments.css =
671
680
  !(
@@ -694,7 +703,8 @@ const applyExperimentsDefaults = (
694
703
  if (experiments.asyncWebAssembly === "auto") {
695
704
  experiments.asyncWebAssembly =
696
705
  !experiments.syncWebAssembly &&
697
- !RuleSetCompiler.hasRuleForResource(rules, "/file.wasm");
706
+ !RuleSetCompiler.hasRuleForResource(rules, "/file.wasm") &&
707
+ "auto";
698
708
  }
699
709
 
700
710
  if (typeof experiments.buildHttp === "object") {
@@ -776,7 +786,12 @@ const applyCacheDefaults = (
776
786
  /** @type {NonNullable<FileCacheOptions["buildDependencies"]>} */
777
787
  (cache.buildDependencies),
778
788
  "defaultWebpack",
779
- [path.resolve(__dirname, "..") + path.sep]
789
+ [
790
+ {
791
+ dependency: path.resolve(__dirname, "..") + path.sep,
792
+ optional: false
793
+ }
794
+ ]
780
795
  );
781
796
  break;
782
797
  case "memory":
@@ -1687,7 +1702,7 @@ const applyOutputDefaults = (
1687
1702
  ((tp.node === null && tp.web === null && tp.module !== false) ||
1688
1703
  tp.deno === true ||
1689
1704
  tp.bun === true ||
1690
- // webpack@6 emits ESM wherever the target reads one — a browserslist
1705
+ // the next major release emits ESM wherever the target reads one — a browserslist
1691
1706
  // query (or `esX`/`nodeX`) without ESM support keeps script output
1692
1707
  (futureDefaults && tp.module !== false && !hasScriptLibrary))
1693
1708
  )
@@ -2368,7 +2383,7 @@ const applyNodeDefaults = (
2368
2383
  });
2369
2384
 
2370
2385
  const handlerForNames = () => {
2371
- // TODO webpack@6 remove `node-module` in favor of `eval-only`
2386
+ // TODO in the next major release: remove `node-module` in favor of `eval-only`
2372
2387
  if (targetProperties) {
2373
2388
  if (targetProperties.node) {
2374
2389
  return "eval-only";
@@ -2384,7 +2399,7 @@ const applyNodeDefaults = (
2384
2399
  }
2385
2400
  }
2386
2401
 
2387
- // TODO webpack@6 should we use `warn-even-only`?
2402
+ // TODO in the next major release: should we use `warn-even-only`?
2388
2403
  return futureDefaults ? "warn-mock" : "mock";
2389
2404
  };
2390
2405
 
@@ -2444,12 +2459,14 @@ const applyPerformanceDefaults = (performance, { production }) => {
2444
2459
  * @param {boolean} options.production is production
2445
2460
  * @param {boolean} options.development is development
2446
2461
  * @param {boolean} options.css is css enabled
2462
+ * @param {boolean} options.esmLibrary whether the output is an ECMAScript module consumed as a library
2447
2463
  * @param {boolean} options.records using records
2464
+ * @param {boolean} options.futureDefaults use defaults of the next major version
2448
2465
  * @returns {void}
2449
2466
  */
2450
2467
  const applyOptimizationDefaults = (
2451
2468
  optimization,
2452
- { production, development, css, records }
2469
+ { production, development, css, esmLibrary, records, futureDefaults }
2453
2470
  ) => {
2454
2471
  D(optimization, "removeAvailableModules", false);
2455
2472
  D(optimization, "removeEmptyChunks", true);
@@ -2496,25 +2513,36 @@ const applyOptimizationDefaults = (
2496
2513
  /** @type {NonNullable<Optimization["minimizeOptions"]>} */
2497
2514
  (optimization.minimizeOptions);
2498
2515
  if (optimization.minimize) {
2499
- // Canonicalize the per-asset-type options: the JS minimizer's defaults
2500
- // become visible in the resolved config rather than hidden in the wiring.
2501
- F(minimizeOptions, "javascript", () => ({ compress: { passes: 2 } }));
2516
+ // Only ESM output carries these annotations, and only a consumer that
2517
+ // re-bundles it reads them; terser drops them everywhere else, which is
2518
+ // what a script-loaded output — a federation container — wants.
2519
+ F(minimizeOptions, "javascript", () =>
2520
+ esmLibrary
2521
+ ? {
2522
+ compress: { passes: 2 },
2523
+ // eslint-disable-next-line camelcase
2524
+ format: { preserve_annotations: true }
2525
+ }
2526
+ : { compress: { passes: 2 } }
2527
+ );
2502
2528
  F(minimizeOptions, "css", () => ({}));
2503
2529
  F(minimizeOptions, "html", () => ({}));
2530
+ D(minimizeOptions, "json", futureDefaults);
2531
+ if (futureDefaults) F(minimizeOptions, "xml", () => ({}));
2504
2532
  }
2505
2533
  A(optimization, "minimizer", () => [
2506
2534
  {
2507
2535
  apply: (compiler) => {
2508
2536
  // Lazy load the minimizer plugin
2509
- const TerserPlugin = require("minimizer-webpack-plugin");
2537
+ const MinimizerPlugin = require("minimizer-webpack-plugin");
2510
2538
 
2511
2539
  // WHY: one minimizer instance, so one worker-thread pool, handles JS and
2512
2540
  // — where native CSS and HTML are enabled — those assets too, as an array
2513
- // of minify functions each dispatched by its own `filter`: terser to JS,
2514
- // `cssMinify` to CSS, `htmlMinify` to HTML. The CSS and HTML serializers
2515
- // stay worker-safe by resolving their parser with `require("webpack/…")`
2516
- // in the worker, so all three share the pool, and `test` is widened to let
2517
- // those assets reach the dispatcher.
2541
+ // of minify functions each dispatched by its own `filter`: the JS one
2542
+ // to JS, `cssMinify` to CSS, `htmlMinify` to HTML. The CSS and
2543
+ // HTML serializers stay worker-safe by resolving their parser with
2544
+ // `require("webpack/…")` in the worker, so all three share the pool, and
2545
+ // `test` is widened to let those assets reach the dispatcher.
2518
2546
 
2519
2547
  // Step aside for a minimizer the user configured for these types:
2520
2548
  // whichever ran first would mark the asset `minimized` and silently
@@ -2527,9 +2555,18 @@ const applyOptimizationDefaults = (
2527
2555
  const minimizeByType = /** @type {OptimizationMinimizeOptions} */ (
2528
2556
  compiler.options.optimization.minimizeOptions
2529
2557
  );
2530
- const terserOptions = minimizeByType.javascript || {
2558
+ const javascriptOptions = minimizeByType.javascript || {
2531
2559
  compress: { passes: 2 }
2532
2560
  };
2561
+ // webpack's printer, held to what terser writes, replaces terser; until
2562
+ // proven on real builds it is a future default, and terser as the plugin
2563
+ // publishes it minifies JS everywhere else.
2564
+ const javascriptMinify = futureDefaults
2565
+ ? require.resolve("../javascript/jsMinify")
2566
+ : {
2567
+ path: require.resolve("minimizer-webpack-plugin"),
2568
+ export: "terserMinify"
2569
+ };
2533
2570
 
2534
2571
  const { css, html } = compiler.options.experiments;
2535
2572
  const minifyJs = minimizeByType.javascript !== false;
@@ -2541,16 +2578,47 @@ const applyOptimizationDefaults = (
2541
2578
  Boolean(html) &&
2542
2579
  !claimedByOtherMinimizer.html &&
2543
2580
  minimizeByType.html !== false;
2544
- if (!minifyJs && !minifyCss && !minifyHtml) return;
2545
- if (minifyJs && !minifyCss && !minifyHtml) {
2546
- new TerserPlugin({ terserOptions }).apply(
2547
- /** @type {EXPECTED_ANY} */ (compiler)
2548
- );
2581
+ // `=== true` rather than `!== false`: outside `futureDefaults`, JSON is opt-in.
2582
+ const minifyJson =
2583
+ minimizeByType.json === true && !claimedByOtherMinimizer.json;
2584
+ // Off unless asked for: only an object, which futureDefaults supplies.
2585
+ const minifyXml =
2586
+ !claimedByOtherMinimizer.xml &&
2587
+ typeof minimizeByType.xml === "object";
2588
+ if (
2589
+ !minifyJs &&
2590
+ !minifyCss &&
2591
+ !minifyHtml &&
2592
+ !minifyJson &&
2593
+ !minifyXml
2594
+ ) {
2595
+ return;
2596
+ }
2597
+ // An asset name keeps the query and the fragment its filename template
2598
+ // wrote (`[query][fragment]`, `main.js#[contenthash]`), so both may follow.
2599
+ /**
2600
+ * @param {string[]} extensions extension patterns
2601
+ * @returns {RegExp} matcher for asset names with those extensions
2602
+ */
2603
+ const assetNameTest = (extensions) =>
2604
+ new RegExp(`^[^?#]*\\.(?:${extensions.join("|")})(?:[?#].*)?$`, "i");
2605
+ if (
2606
+ minifyJs &&
2607
+ !minifyCss &&
2608
+ !minifyHtml &&
2609
+ !minifyJson &&
2610
+ !minifyXml
2611
+ ) {
2612
+ new MinimizerPlugin({
2613
+ test: assetNameTest(["[cm]?js"]),
2614
+ minify: javascriptMinify,
2615
+ minimizerOptions: javascriptOptions
2616
+ }).apply(/** @type {EXPECTED_ANY} */ (compiler));
2549
2617
  return;
2550
2618
  }
2551
- /** @type {(typeof TerserPlugin.terserMinify | typeof import("../css/cssMinify") | typeof import("../html/htmlMinify"))[]} */
2619
+ /** @type {(typeof javascriptMinify | string)[]} */
2552
2620
  const minify = [];
2553
- /** @type {EXPECTED_OBJECT[]} */
2621
+ /** @type {(typeof javascriptOptions | NonNullable<Parameters<typeof import("../css/cssMinify")>[1]> | NonNullable<Parameters<typeof import("../html/htmlMinify")>[1]> | Record<string, never>)[]} */
2554
2622
  const minimizerOptions = [];
2555
2623
  /** @type {string[]} */
2556
2624
  const extensions = [];
@@ -2564,12 +2632,21 @@ const applyOptimizationDefaults = (
2564
2632
  // prefixes and every spelling a target can read, so `vendorPrefixes`
2565
2633
  // turns off the first alone — resolving it is what the second needs.
2566
2634
  const { target } = compiler.options;
2567
- const browsers = target
2635
+ const context = /** @type {Context} */ (compiler.options.context);
2636
+ const named = target
2568
2637
  ? getTargetsBrowsers(
2569
2638
  Array.isArray(target) ? target : [target],
2570
- /** @type {Context} */ (compiler.options.context)
2639
+ context
2571
2640
  )
2572
2641
  : undefined;
2642
+ // A target naming no browsers is still served to some: browserslist's own
2643
+ // `defaults` are them, where none would read as "every current engine" —
2644
+ // unless `dropOverriddenDeclarations` asks for exactly that assumption.
2645
+ const browsers =
2646
+ named ||
2647
+ (cssOptions !== undefined && cssOptions.dropOverriddenDeclarations
2648
+ ? undefined
2649
+ : getTargetsBrowsers(["browserslist:defaults"], context));
2573
2650
  const cssEnvironment = {
2574
2651
  browsers,
2575
2652
  vendorPrefixes:
@@ -2580,32 +2657,50 @@ const applyOptimizationDefaults = (
2580
2657
  ? minimizeByType.html
2581
2658
  : undefined;
2582
2659
  if (minifyJs) {
2583
- minify.push(TerserPlugin.terserMinify);
2584
- minimizerOptions.push(terserOptions);
2660
+ minify.push(javascriptMinify);
2661
+ minimizerOptions.push(javascriptOptions);
2585
2662
  extensions.push("[cm]?js");
2586
2663
  }
2587
2664
  if (minifyCss) {
2588
- minify.push(require("../css/cssMinify"));
2665
+ minify.push(require.resolve("../css/cssMinify"));
2666
+ // An SVG `data:` URL is minified as the `.svg` assets are, or left alone.
2589
2667
  minimizerOptions.push({
2590
2668
  environment: cssEnvironment,
2669
+ svg: minifyXml,
2591
2670
  ...cssOptions
2592
2671
  });
2593
2672
  extensions.push("css");
2594
2673
  }
2595
2674
  if (minifyHtml) {
2596
- minify.push(require("../html/htmlMinify"));
2675
+ minify.push(require.resolve("../html/htmlMinify"));
2597
2676
  // `minimize.css` rides under its own key rather than spread beside the
2598
2677
  // HTML options: the two name some of the same switches, so one flat
2599
2678
  // object would hand each language the other's answer.
2600
2679
  minimizerOptions.push({
2601
2680
  environment: cssEnvironment,
2602
2681
  css: cssOptions,
2682
+ svg: minifyXml,
2603
2683
  ...htmlOptions
2604
2684
  });
2605
2685
  extensions.push("html");
2606
2686
  }
2607
- new TerserPlugin({
2608
- test: new RegExp(`\\.(?:${extensions.join("|")})(\\?.*)?$`, "i"),
2687
+ if (minifyJson) {
2688
+ minify.push(require.resolve("../json/jsonMinify"));
2689
+ minimizerOptions.push({});
2690
+ // A web app manifest is JSON under its own extension.
2691
+ extensions.push("json", "webmanifest");
2692
+ }
2693
+ if (minifyXml) {
2694
+ minify.push(require.resolve("../html/xmlMinify"));
2695
+ minimizerOptions.push({
2696
+ environment: cssEnvironment,
2697
+ css: cssOptions,
2698
+ ...minimizeByType.xml
2699
+ });
2700
+ extensions.push("svg", "xml");
2701
+ }
2702
+ new MinimizerPlugin({
2703
+ test: assetNameTest(extensions),
2609
2704
  minify,
2610
2705
  minimizerOptions
2611
2706
  }).apply(/** @type {EXPECTED_ANY} */ (compiler));
@@ -2625,6 +2720,7 @@ const applyOptimizationDefaults = (
2625
2720
  : [JAVASCRIPT_TYPE, UNKNOWN_TYPE]
2626
2721
  );
2627
2722
  D(splitChunks, "hidePathInfo", production);
2723
+ D(splitChunks, "dedupDepth", futureDefaults ? 1 : 0);
2628
2724
  D(splitChunks, "chunks", "async");
2629
2725
  D(splitChunks, "usedExports", optimization.usedExports === true);
2630
2726
  D(splitChunks, "minChunks", 1);
@@ -5,11 +5,11 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const { matchObject } = require("../ModuleFilenameHelpers");
8
+ const { matchObject } = require("../devtool/ModuleFilenameHelpers");
9
9
 
10
10
  /** @import Compiler from "../Compiler" */
11
- /** @import { MatchObject } from "../ModuleFilenameHelpers" */
12
- /** @typedef {MatchObject & { minimizer?: EXPECTED_OBJECT }} MinimizerOptions */
11
+ /** @import { MatchObject } from "../devtool/ModuleFilenameHelpers" */
12
+ /** @typedef {MatchObject & { minimizer?: import("minimizer-webpack-plugin").InternalPluginOptions<EXPECTED_ANY>["minimizer"] }} MinimizerOptions */
13
13
 
14
14
  /**
15
15
  * @param {unknown} candidate a configured plugin or minimizer entry
@@ -26,14 +26,12 @@ const claims = (candidate, file) => {
26
26
  // so reading those as minimizers would disable minification.
27
27
  const { options } = /** @type {{ options?: MinimizerOptions }} */ (candidate);
28
28
  if (!options || !options.minimizer) return false;
29
- // `test` and `include` say which types it handles, while `exclude` only
30
- // narrows the files within them: honoring that narrowing would let a minimizer
31
- // scoped to a subdirectory claim nothing, and webpack would then race it.
29
+ // `test` and `include` say which types it handles, and the minimizer takes a
30
+ // file only when both match. `exclude` merely narrows the files within them:
31
+ // honoring it would let a subdirectory-scoped minimizer claim nothing.
32
32
  const { test, include } = options;
33
- return (
34
- (test !== undefined && matchObject({ test }, file)) ||
35
- (include !== undefined && matchObject({ include }, file))
36
- );
33
+ if (test === undefined && include === undefined) return false;
34
+ return matchObject({ test, include }, file);
37
35
  };
38
36
 
39
37
  /**
@@ -44,12 +42,14 @@ const claims = (candidate, file) => {
44
42
  * matcher rather than resolving it per emitted asset, so a minimizer restricted
45
43
  * to some of a type's files still claims the whole type.
46
44
  * @param {Compiler} compiler the compiler
47
- * @returns {{ css: boolean, html: boolean }} types another minimizer handles
45
+ * @returns {{ css: boolean, html: boolean, json: boolean, xml: boolean }} types another minimizer handles
48
46
  */
49
47
  module.exports = (compiler) => {
50
48
  const { optimization, plugins } = compiler.options;
51
49
  let css = false;
52
50
  let html = false;
51
+ let json = false;
52
+ let xml = false;
53
53
  // Both lists are normalized arrays with falsy entries already filtered out,
54
54
  // and `minimizer` was filled in by the defaults before any plugin applies.
55
55
  const minimizer =
@@ -58,7 +58,15 @@ module.exports = (compiler) => {
58
58
  for (const candidate of [...minimizer, ...plugins]) {
59
59
  if (!css) css = claims(candidate, "file.css");
60
60
  if (!html) html = claims(candidate, "file.html");
61
- if (css && html) break;
61
+ // The JSON minifier takes web app manifests too, so claiming either stops it.
62
+ if (!json) {
63
+ json =
64
+ claims(candidate, "file.json") || claims(candidate, "file.webmanifest");
65
+ }
66
+ if (!xml) {
67
+ xml = claims(candidate, "file.svg") || claims(candidate, "file.xml");
68
+ }
69
+ if (css && html && json && xml) break;
62
70
  }
63
- return { css, html };
71
+ return { css, html, json, xml };
64
72
  };