webpack 5.111.1 → 5.112.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (793) hide show
  1. package/README.md +1 -1
  2. package/bin/webpack.js +13 -7
  3. package/lib/Chunk.js +3 -966
  4. package/lib/Compilation.js +373 -163
  5. package/lib/Compiler.js +31 -44
  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 +21 -13
  25. package/lib/asset/AssetBytesParser.js +12 -10
  26. package/lib/asset/AssetGenerator.js +71 -69
  27. package/lib/asset/AssetModule.js +13 -2
  28. package/lib/asset/AssetModulesPlugin.js +10 -12
  29. package/lib/asset/AssetParser.js +10 -10
  30. package/lib/asset/AssetSourceGenerator.js +23 -15
  31. package/lib/asset/AssetSourceParser.js +12 -10
  32. package/lib/asset/RawDataUrlModule.js +17 -10
  33. package/lib/asset/WebManifestGenerator.js +17 -12
  34. package/lib/asset/WebManifestParser.js +8 -8
  35. package/lib/async-modules/AsyncModuleHelpers.js +12 -5
  36. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
  37. package/lib/async-modules/InferAsyncModulesPlugin.js +9 -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} +6 -6
  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 +13 -19
  47. package/lib/cache/ResolverCachePlugin.js +65 -11
  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} +209 -212
  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} +14 -164
  55. package/lib/config/defaults.js +166 -59
  56. package/lib/config/getClaimedAssetTypes.js +22 -14
  57. package/lib/config/normalization.js +18 -7
  58. package/lib/config/target.js +11 -1
  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 +37 -26
  76. package/lib/context/ContextModuleFactory.js +14 -11
  77. package/lib/context/ContextReplacementPlugin.js +6 -12
  78. package/lib/css/CssGenerator.js +78 -68
  79. package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
  80. package/lib/css/CssLoadingRuntimeModule.js +77 -44
  81. package/lib/css/CssModule.js +37 -29
  82. package/lib/css/CssModulesPlugin.js +129 -45
  83. package/lib/css/CssParser.js +714 -322
  84. package/lib/css/CssServerStylesRuntimeModule.js +3 -3
  85. package/lib/{util → css}/conventions.js +1 -1
  86. package/lib/css/cssMinify.js +110 -37
  87. package/lib/css/data.js +6990 -5125
  88. package/lib/css/syntax-parser.js +20734 -0
  89. package/lib/css/syntax-printer.js +6092 -0
  90. package/lib/css/syntax.js +37 -18686
  91. package/lib/debug/ProfilingPlugin.js +106 -51
  92. package/lib/{DefinePlugin.js → define/DefinePlugin.js} +416 -55
  93. package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +19 -15
  94. package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +6 -4
  95. package/lib/deno/DenoTargetPlugin.js +1 -1
  96. package/lib/dependencies/ConstDependency.js +3 -120
  97. package/lib/dependencies/ContextElementDependency.js +5 -172
  98. package/lib/dependencies/NullDependency.js +3 -37
  99. package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
  100. package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -11
  101. package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
  102. package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
  103. package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
  104. package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
  105. package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +14 -11
  106. package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
  107. package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
  108. package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
  109. package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
  110. package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
  111. package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
  112. package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
  113. package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
  114. package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
  115. package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +166 -36
  116. package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
  117. package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +154 -92
  118. package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
  119. package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +36 -33
  120. package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +17 -16
  121. package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +48 -39
  122. package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
  123. package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
  124. package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +17 -16
  125. package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
  126. package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
  127. package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +9 -6
  128. package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
  129. package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
  130. package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
  131. package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
  132. package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
  133. package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
  134. package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
  135. package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
  136. package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
  137. package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
  138. package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
  139. package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
  140. package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +31 -9
  141. package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
  142. package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
  143. package/lib/dependencies/context/ContextElementDependency.js +198 -0
  144. package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
  145. package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +10 -11
  146. package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
  147. package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
  148. package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +7 -10
  149. package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +17 -19
  150. package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
  151. package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
  152. package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
  153. package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +21 -17
  154. package/lib/dependencies/core/ConstDependency.js +131 -0
  155. package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
  156. package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
  157. package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
  158. package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
  159. package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
  160. package/lib/dependencies/core/NullDependency.js +44 -0
  161. package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
  162. package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
  163. package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +375 -99
  164. package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +24 -19
  165. package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
  166. package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
  167. package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +25 -22
  168. package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
  169. package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
  170. package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
  171. package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +29 -21
  172. package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +20 -20
  173. package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
  174. package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +60 -89
  175. package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +80 -45
  176. package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
  177. package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
  178. package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +146 -133
  179. package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +48 -30
  180. package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +78 -37
  181. package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -12
  182. package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
  183. package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +86 -68
  184. package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +104 -100
  185. package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +36 -51
  186. package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +83 -39
  187. package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +98 -60
  188. package/lib/dependencies/esm/ESMLiveExportDependency.js +311 -0
  189. package/lib/dependencies/esm/ESMLiveExportParserPlugin.js +862 -0
  190. package/lib/dependencies/esm/ESMModulesPlugin.js +205 -0
  191. package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
  192. package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -18
  193. package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +5 -7
  194. package/lib/{util → dependencies/helpers}/chainedImports.js +5 -5
  195. package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
  196. package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
  197. package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
  198. package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
  199. package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
  200. package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
  201. package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +52 -151
  202. package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -15
  203. package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +69 -23
  204. package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +50 -18
  205. package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
  206. package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
  207. package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
  208. package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
  209. package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +22 -25
  210. package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
  211. package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
  212. package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
  213. package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
  214. package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
  215. package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +122 -103
  216. package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
  217. package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
  218. package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
  219. package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
  220. package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +28 -20
  221. package/lib/{url → dependencies/url}/URLParserPlugin.js +17 -19
  222. package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
  223. package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
  224. package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
  225. package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
  226. package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +82 -53
  227. package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +22 -15
  228. package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +19 -18
  229. package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
  230. package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
  231. package/lib/devtool/ModuleFilenameHelpers.js +413 -0
  232. package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
  233. package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +155 -27
  234. package/lib/{util → devtool}/generateDebugId.js +1 -1
  235. package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
  236. package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
  237. package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
  238. package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
  239. package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
  240. package/lib/dll/DelegatedModule.js +23 -21
  241. package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
  242. package/lib/dll/DelegatedPlugin.js +1 -1
  243. package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
  244. package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
  245. package/lib/dll/DllEntryPlugin.js +3 -3
  246. package/lib/dll/DllModule.js +14 -10
  247. package/lib/dll/DllModuleFactory.js +3 -3
  248. package/lib/dll/DllPlugin.js +18 -6
  249. package/lib/dll/DllReferencePlugin.js +103 -30
  250. package/lib/dll/LibManifestPlugin.js +9 -7
  251. package/lib/electron/ElectronTargetPlugin.js +2 -2
  252. package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
  253. package/lib/{dependencies → entry}/EntryDependency.js +11 -2
  254. package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
  255. package/lib/entry/EntryPlugin.js +75 -0
  256. package/lib/errors/AbstractMethodError.js +1 -1
  257. package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
  258. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  259. package/lib/errors/BuildCycleError.js +1 -1
  260. package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
  261. package/lib/errors/ChunkRenderError.js +1 -1
  262. package/lib/errors/CodeGenerationError.js +1 -1
  263. package/lib/errors/CommentCompilationWarning.js +1 -1
  264. package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
  265. package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
  266. package/lib/errors/DeprecatedOptionWarning.js +30 -0
  267. package/lib/errors/DllManifestError.js +26 -0
  268. package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
  269. package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
  270. package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
  271. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  272. package/lib/{ErrorHelpers.js → errors/ErrorHelpers.js} +9 -6
  273. package/lib/errors/ExternalStarReexportError.js +2 -2
  274. package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
  275. package/lib/errors/HookWebpackError.js +6 -5
  276. package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
  277. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  278. package/lib/errors/JSONParseError.js +4 -4
  279. package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
  280. package/lib/errors/ModuleBuildError.js +1 -1
  281. package/lib/errors/ModuleDependencyError.js +2 -2
  282. package/lib/errors/ModuleDependencyWarning.js +2 -2
  283. package/lib/errors/ModuleError.js +1 -1
  284. package/lib/errors/ModuleHashingError.js +1 -1
  285. package/lib/errors/ModuleNotFoundError.js +3 -3
  286. package/lib/errors/ModuleParseError.js +1 -1
  287. package/lib/errors/ModuleRestoreError.js +1 -1
  288. package/lib/errors/ModuleStoreError.js +1 -1
  289. package/lib/errors/ModuleWarning.js +1 -1
  290. package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
  291. package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
  292. package/lib/errors/NodeStuffInWebError.js +7 -2
  293. package/lib/errors/PathVariableError.js +31 -0
  294. package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
  295. package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
  296. package/lib/errors/RuntimeModuleGenerationError.js +51 -0
  297. package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
  298. package/lib/errors/SystemImportDeprecationWarning.js +43 -0
  299. package/lib/errors/UnmergeableEntryExportsError.js +34 -0
  300. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  301. package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
  302. package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
  303. package/lib/errors/WebpackError.js +13 -3
  304. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
  305. package/lib/esm/ModuleChunkFormatPlugin.js +55 -20
  306. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
  307. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
  308. package/lib/{ExternalModule.js → externals/ExternalModule.js} +90 -63
  309. package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +42 -41
  310. package/lib/externals/ExternalsPlugin.js +99 -0
  311. package/lib/fs/FileSystemInfo.js +4642 -0
  312. package/lib/{util → fs}/fs.js +22 -9
  313. package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
  314. package/lib/graph/Chunk.js +985 -0
  315. package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +192 -80
  316. package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
  317. package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
  318. package/lib/graph/Dependency.js +634 -0
  319. package/lib/graph/Entrypoint.js +136 -0
  320. package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +131 -83
  321. package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
  322. package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +44 -33
  323. package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
  324. package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +169 -76
  325. package/lib/{util → graph}/findGraphRoots.js +15 -9
  326. package/lib/graph/isDependencyKind.js +23 -0
  327. package/lib/hmr/HotModuleReplacement.runtime.js +12 -11
  328. package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +51 -57
  329. package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
  330. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +25 -26
  331. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
  332. package/lib/hmr/LazyCompilationPlugin.js +32 -28
  333. package/lib/html/HtmlGenerator.js +132 -60
  334. package/lib/html/HtmlModule.js +16 -2
  335. package/lib/html/HtmlModulesPlugin.js +184 -87
  336. package/lib/html/HtmlParser.js +511 -160
  337. package/lib/html/builtinEmbeddedRenderer.js +70 -25
  338. package/lib/html/data.js +44 -22
  339. package/lib/html/htmlMinify.js +114 -41
  340. package/lib/html/syntax-parser.js +15795 -0
  341. package/lib/html/syntax-printer.js +1033 -0
  342. package/lib/html/syntax.js +37 -13952
  343. package/lib/html/xmlMinify.js +70 -0
  344. package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
  345. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  346. package/lib/ids/HashedModuleIdsPlugin.js +32 -5
  347. package/lib/ids/IdHelpers.js +4 -4
  348. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  349. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
  350. package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
  351. package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
  352. package/lib/ids/SyncModuleIdsPlugin.js +3 -3
  353. package/lib/{util → ids}/numberHash.js +1 -1
  354. package/lib/index.js +312 -105
  355. package/lib/{APIPlugin.js → javascript/APIPlugin.js} +31 -37
  356. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
  357. package/lib/javascript/BasicEvaluatedExpression.js +9 -9
  358. package/lib/javascript/ChunkHelpers.js +64 -4
  359. package/lib/javascript/CommonJsChunkFormatPlugin.js +5 -13
  360. package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +7 -7
  361. package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +75 -8
  362. package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
  363. package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
  364. package/lib/javascript/JavascriptGenerator.js +32 -27
  365. package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +8 -20
  366. package/lib/javascript/JavascriptModule.js +14 -3
  367. package/lib/javascript/JavascriptModulesPlugin.js +441 -214
  368. package/lib/javascript/JavascriptParser.js +318 -144
  369. package/lib/javascript/JavascriptParserHelpers.js +1 -1
  370. package/lib/javascript/MergedEntryExports.js +196 -0
  371. package/lib/javascript/ScopeAnalyzer.js +3924 -13
  372. package/lib/javascript/StartupHelpers.js +6 -6
  373. package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +13 -19
  374. package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
  375. package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
  376. package/lib/javascript/data.js +533 -122
  377. package/lib/javascript/jsMinify.js +272 -0
  378. package/lib/javascript/regexp.js +67 -32
  379. package/lib/javascript/syntax-parser.js +19169 -0
  380. package/lib/javascript/syntax-printer-data.js +1099 -0
  381. package/lib/javascript/syntax-printer.js +53878 -0
  382. package/lib/javascript/syntax.js +20 -11274
  383. package/lib/json/JsonData.js +1 -1
  384. package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
  385. package/lib/json/JsonGenerator.js +24 -16
  386. package/lib/json/JsonModule.js +13 -2
  387. package/lib/json/JsonModulesPlugin.js +1 -1
  388. package/lib/json/JsonParser.js +11 -10
  389. package/lib/json/jsonMinify.js +69 -0
  390. package/lib/library/AbstractLibraryPlugin.js +28 -15
  391. package/lib/library/AmdLibraryPlugin.js +4 -4
  392. package/lib/library/AssignLibraryPlugin.js +28 -12
  393. package/lib/library/EnableLibraryPlugin.js +1 -1
  394. package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
  395. package/lib/library/JsonpLibraryPlugin.js +2 -2
  396. package/lib/library/LibraryTemplatePlugin.js +53 -0
  397. package/lib/library/ModuleLibraryPlugin.js +557 -187
  398. package/lib/library/SystemLibraryPlugin.js +6 -8
  399. package/lib/library/UmdLibraryPlugin.js +3 -4
  400. package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
  401. package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
  402. package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
  403. package/lib/{dependencies → loaders}/LoaderPlugin.js +2 -2
  404. package/lib/loaders/LoaderRunner.js +94 -46
  405. package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
  406. package/lib/loaders/loadLoader.js +16 -10
  407. package/lib/logging/Logger.js +7 -9
  408. package/lib/logging/ProgressPlugin.js +957 -0
  409. package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
  410. package/lib/{Generator.js → module/Generator.js} +33 -23
  411. package/lib/{Module.js → module/Module.js} +121 -53
  412. package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
  413. package/lib/module/NormalModule.js +2350 -0
  414. package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +64 -71
  415. package/lib/module/NullFactory.js +29 -0
  416. package/lib/{Parser.js → module/Parser.js} +12 -5
  417. package/lib/module/RawModule.js +208 -0
  418. package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
  419. package/lib/{util → module}/extractSourceMap.js +71 -20
  420. package/lib/{util → module}/findCaseMismatch.js +4 -4
  421. package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
  422. package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
  423. package/lib/{dependencies → node}/ExternalModuleInitFragment.js +7 -6
  424. package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
  425. package/lib/node/NodeEnvironmentPlugin.js +11 -1
  426. package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
  427. package/lib/node/NodeTargetPlugin.js +1 -1
  428. package/lib/node/NodeWatchFileSystem.js +58 -6
  429. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
  430. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -19
  431. package/lib/node/ReadFileCompileWasmPlugin.js +9 -11
  432. package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
  433. package/lib/node/nodeConsole.js +6 -7
  434. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  435. package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
  436. package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +14 -14
  437. package/lib/optimize/ConcatenatedModule.js +231 -220
  438. package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
  439. package/lib/optimize/ConstExportsPlugin.js +7 -7
  440. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  441. package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
  442. package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +23 -28
  443. package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +44 -19
  444. package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
  445. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
  446. package/lib/optimize/InlineExports.js +12 -7
  447. package/lib/optimize/InnerGraph.js +5 -13
  448. package/lib/optimize/InnerGraphPlugin.js +10 -10
  449. package/lib/optimize/LazyBarrels.js +620 -0
  450. package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
  451. package/lib/optimize/LimitChunkCountPlugin.js +16 -7
  452. package/lib/optimize/MangleExportsPlugin.js +5 -5
  453. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
  454. package/lib/optimize/MinChunkSizePlugin.js +9 -6
  455. package/lib/optimize/ModuleConcatenationPlugin.js +28 -22
  456. package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
  457. package/lib/optimize/RealContentHashPlugin.js +18 -13
  458. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  459. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  460. package/lib/optimize/SideEffectsFlagPlugin.js +24 -38
  461. package/lib/optimize/SplitChunksPlugin.js +719 -174
  462. package/lib/{util → optimize}/TupleQueue.js +9 -9
  463. package/lib/optimize/chunkSetIntersections.js +437 -0
  464. package/lib/{util → optimize}/deterministicGrouping.js +17 -17
  465. package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
  466. package/lib/{CleanPlugin.js → output/CleanPlugin.js} +69 -25
  467. package/lib/{CopyPlugin.js → output/CopyPlugin.js} +144 -70
  468. package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
  469. package/lib/output/SSRManifestPlugin.js +349 -0
  470. package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
  471. package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
  472. package/lib/performance/BroadContextsPlugin.js +4 -4
  473. package/lib/performance/CacheEffectivenessPlugin.js +2 -3
  474. package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
  475. package/lib/performance/DuplicateModulesPlugin.js +3 -4
  476. package/lib/performance/DuplicatePackagesPlugin.js +3 -3
  477. package/lib/performance/DynamicExportsPlugin.js +2 -2
  478. package/lib/performance/EvalUsagePlugin.js +4 -6
  479. package/lib/performance/HotspotsPlugin.js +39 -14
  480. package/lib/performance/LargeModulesPlugin.js +2 -3
  481. package/lib/performance/LegacyJavascriptPlugin.js +1 -2
  482. package/lib/performance/MissingSideEffectsPlugin.js +2 -3
  483. package/lib/performance/MissingSourceMapsPlugin.js +5 -6
  484. package/lib/performance/PureAnnotationsPlugin.js +19 -13
  485. package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
  486. package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
  487. package/lib/performance/SizeLimitsPlugin.js +11 -12
  488. package/lib/performance/TopLevelThisPlugin.js +22 -13
  489. package/lib/performance/UnsplitVendorsPlugin.js +1 -2
  490. package/lib/performance/UnusedAliasesPlugin.js +6 -7
  491. package/lib/performance/UnusedAssetsPlugin.js +5 -5
  492. package/lib/performance/UnusedDefinesPlugin.js +2 -2
  493. package/lib/performance/UnusedExternalsPlugin.js +3 -4
  494. package/lib/performance/UnusedFederationPlugin.js +2 -4
  495. package/lib/performance/UnusedModulesPlugin.js +5 -4
  496. package/lib/performance/getModuleSize.js +1 -1
  497. package/lib/performance/hasOnlyUnusedExports.js +4 -4
  498. package/lib/performance/isOnlyReexported.js +7 -6
  499. package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
  500. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
  501. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -1
  502. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
  503. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
  504. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
  505. package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
  506. package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
  507. package/lib/prefetch/ResourceHintPlugin.js +66 -45
  508. package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
  509. package/lib/prefetch/StartupAssetHintRuntimeModule.js +3 -3
  510. package/lib/prefetch/parseResourceHintOptions.js +4 -3
  511. package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
  512. package/lib/{dependencies → provide}/ProvidedDependency.js +50 -17
  513. package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
  514. package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
  515. package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
  516. package/lib/resolve/getResolveOptionsKey.js +59 -0
  517. package/lib/rules/BasicEffectRulePlugin.js +1 -1
  518. package/lib/rules/RuleSetCompiler.js +42 -51
  519. package/lib/rules/UseEffectRulePlugin.js +1 -3
  520. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
  521. package/lib/runtime/AsyncModuleRuntimeModule.js +14 -5
  522. package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
  523. package/lib/runtime/BaseUriRuntimeModule.js +3 -3
  524. package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
  525. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
  526. package/lib/runtime/CompatRuntimeModule.js +4 -4
  527. package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
  528. package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
  529. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  530. package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
  531. package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
  532. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
  533. package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
  534. package/lib/runtime/GetChunkFilenameRuntimeModule.js +7 -11
  535. package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
  536. package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
  537. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
  538. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
  539. package/lib/runtime/GlobalRuntimeModule.js +3 -3
  540. package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
  541. package/lib/runtime/HelperRuntimeModule.js +16 -1
  542. package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
  543. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +80 -17
  544. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
  545. package/lib/runtime/NonceRuntimeModule.js +2 -2
  546. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
  547. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  548. package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
  549. package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +24 -1
  550. package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
  551. package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
  552. package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +50 -50
  553. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
  554. package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
  555. package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
  556. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
  557. package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
  558. package/lib/runtime/SystemContextRuntimeModule.js +2 -2
  559. package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
  560. package/lib/runtime/WorkerRuntimeModule.js +1 -1
  561. package/lib/runtime/baseUri.js +1 -1
  562. package/lib/schemes/DataUriPlugin.js +1 -1
  563. package/lib/schemes/HttpUriPlugin.js +68 -13
  564. package/lib/schemes/VirtualUrlPlugin.js +52 -16
  565. package/lib/serialization/AggregateErrorSerializer.js +4 -4
  566. package/lib/serialization/BinaryMiddleware.js +4 -1
  567. package/lib/serialization/ErrorObjectSerializer.js +2 -5
  568. package/lib/serialization/FileMiddleware.js +3 -3
  569. package/lib/serialization/ObjectMiddleware.js +62 -29
  570. package/lib/serialization/PlainObjectSerializer.js +3 -7
  571. package/lib/serialization/Serializer.js +21 -11
  572. package/lib/serialization/SerializerMiddleware.js +10 -8
  573. package/lib/serialization/SingleItemMiddleware.js +4 -2
  574. package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
  575. package/lib/sharing/ConsumeSharedModule.js +18 -14
  576. package/lib/sharing/ConsumeSharedPlugin.js +148 -42
  577. package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
  578. package/lib/sharing/ProvideForSharedDependency.js +9 -1
  579. package/lib/sharing/ProvideSharedDependency.js +1 -1
  580. package/lib/sharing/ProvideSharedModule.js +11 -9
  581. package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
  582. package/lib/sharing/ProvideSharedPlugin.js +111 -20
  583. package/lib/sharing/SharePlugin.js +102 -9
  584. package/lib/sharing/ShareRuntimeModule.js +6 -6
  585. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  586. package/lib/{util → sharing}/semver.js +14 -16
  587. package/lib/sharing/utils.js +59 -2
  588. package/lib/stats/DefaultStatsFactoryPlugin.js +57 -54
  589. package/lib/stats/DefaultStatsPresetPlugin.js +3 -7
  590. package/lib/stats/DefaultStatsPrinterPlugin.js +15 -14
  591. package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
  592. package/lib/{Stats.js → stats/Stats.js} +4 -4
  593. package/lib/stats/StatsFactory.js +208 -37
  594. package/lib/stats/StatsPrinter.js +126 -13
  595. package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
  596. package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
  597. package/lib/template/DependencyTemplate.js +77 -0
  598. package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
  599. package/lib/template/InitFragment.js +223 -0
  600. package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
  601. package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
  602. package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
  603. package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +158 -95
  604. package/lib/{Template.js → template/Template.js} +14 -12
  605. package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +19 -23
  606. package/lib/typescript/TypeScriptPlugin.js +3 -3
  607. package/lib/util/RequestShortener.js +44 -0
  608. package/lib/util/SortableSet.js +87 -22
  609. package/lib/util/SourceProcessor.js +439 -51
  610. package/lib/util/TupleSet.js +27 -27
  611. package/lib/util/WeakTupleMap.js +20 -16
  612. package/lib/util/buildDiagnostics.js +2 -2
  613. package/lib/util/cleverMerge.js +61 -33
  614. package/lib/util/comparators.js +19 -15
  615. package/lib/util/concatenate.js +28 -147
  616. package/lib/util/createMappings.js +111 -0
  617. package/lib/util/dataURL.js +96 -15
  618. package/lib/util/deprecation.js +5 -4
  619. package/lib/util/extractComments.js +118 -0
  620. package/lib/util/formatLocation.js +1 -1
  621. package/lib/util/globUtils.js +198 -20
  622. package/lib/util/haltVisitors.js +51 -0
  623. package/lib/util/handlerKeys.js +2 -2
  624. package/lib/util/identifier.js +117 -1
  625. package/lib/util/implicitTypeLoaderFallback.js +6 -4
  626. package/lib/util/internalSerializables.js +296 -102
  627. package/lib/util/magicComment.js +12 -7
  628. package/lib/util/makeSerializable.js +28 -7
  629. package/lib/util/memoize.js +1 -1
  630. package/lib/util/parseJson.js +2 -2
  631. package/lib/util/preloadModuleType.js +5 -2
  632. package/lib/util/registerExternalSerializer.js +2 -2
  633. package/lib/util/removeBOM.js +1 -1
  634. package/lib/util/runtime.js +1 -1
  635. package/lib/util/serialization.js +35 -28
  636. package/lib/util/source.js +2 -2
  637. package/lib/util/terminalColors.js +161 -0
  638. package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
  639. package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
  640. package/lib/{wasm-async → wasm}/AsyncWasmModule.js +19 -5
  641. package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +17 -9
  642. package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +24 -15
  643. package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
  644. package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +14 -12
  645. package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
  646. package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +11 -13
  647. package/lib/wasm/wasmModuleFilename.js +2 -2
  648. package/lib/wasm-sync/SyncWasmModule.js +18 -3
  649. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +8 -8
  650. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
  651. package/lib/wasm-sync/WebAssemblyGenerator.js +22 -16
  652. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +28 -21
  653. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
  654. package/lib/wasm-sync/WebAssemblyParser.js +15 -17
  655. package/lib/wasm-sync/WebAssemblyUtils.js +6 -5
  656. package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
  657. package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
  658. package/lib/{Watching.js → watch/Watching.js} +8 -8
  659. package/lib/web/FetchCompileAsyncWasmPlugin.js +12 -18
  660. package/lib/web/FetchCompileWasmPlugin.js +8 -10
  661. package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
  662. package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
  663. package/lib/web/JsonpTemplatePlugin.js +1 -1
  664. package/lib/webpack.js +27 -17
  665. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
  666. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
  667. package/package.json +57 -36
  668. package/schemas/WebpackOptions.check.js +4 -3
  669. package/schemas/WebpackOptions.d.json.ts +2 -0
  670. package/schemas/WebpackOptions.json +295 -75
  671. package/schemas/plugins/BannerPlugin.check.js +4 -3
  672. package/schemas/plugins/BannerPlugin.json +29 -2
  673. package/schemas/plugins/HtmlGeneratorOptions.check.js +4 -3
  674. package/schemas/plugins/HtmlParserOptions.check.js +4 -3
  675. package/schemas/plugins/IgnorePlugin.check.js +4 -3
  676. package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
  677. package/schemas/plugins/IgnorePlugin.json +1 -1
  678. package/schemas/plugins/LoaderOptionsPlugin.check.js +4 -3
  679. package/schemas/plugins/ManifestPlugin.check.js +4 -3
  680. package/schemas/plugins/ManifestPlugin.json +3 -3
  681. package/schemas/plugins/ProgressPlugin.check.js +4 -3
  682. package/schemas/plugins/ProgressPlugin.json +2 -7
  683. package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
  684. package/schemas/plugins/SSRManifestPlugin.json +20 -0
  685. package/schemas/plugins/SourceMapDevToolPlugin.check.js +4 -3
  686. package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
  687. package/schemas/plugins/WatchIgnorePlugin.check.js +4 -3
  688. package/schemas/plugins/WatchIgnorePlugin.json +12 -3
  689. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +4 -3
  690. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +4 -3
  691. package/schemas/plugins/asset/AssetParserOptions.check.js +4 -3
  692. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +4 -3
  693. package/schemas/plugins/container/ContainerPlugin.check.js +4 -3
  694. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  695. package/schemas/plugins/container/ContainerReferencePlugin.check.js +4 -3
  696. package/schemas/plugins/container/ExternalsType.check.js +4 -3
  697. package/schemas/plugins/container/ModuleFederationPlugin.check.js +4 -3
  698. package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
  699. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +4 -3
  700. package/schemas/plugins/css/CssGeneratorOptions.check.js +4 -3
  701. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +4 -3
  702. package/schemas/plugins/css/CssModuleParserOptions.check.js +4 -3
  703. package/schemas/plugins/css/CssParserOptions.check.js +4 -3
  704. package/schemas/plugins/debug/ProfilingPlugin.check.js +4 -3
  705. package/schemas/plugins/define/DotenvPluginOptions.check.js +7 -0
  706. package/schemas/plugins/define/DotenvPluginOptions.json +3 -0
  707. package/schemas/plugins/dll/DllPlugin.check.js +4 -3
  708. package/schemas/plugins/dll/DllReferencePlugin.check.js +4 -3
  709. package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
  710. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +4 -3
  711. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +4 -3
  712. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +4 -3
  713. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +4 -3
  714. package/schemas/plugins/json/JsonModulesPluginParser.check.js +4 -3
  715. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +4 -3
  716. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +4 -3
  717. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +4 -3
  718. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +4 -3
  719. package/schemas/plugins/output/CleanOptions.check.js +7 -0
  720. package/schemas/plugins/output/CleanOptions.json +3 -0
  721. package/schemas/plugins/schemes/HttpUriPlugin.check.js +4 -3
  722. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +4 -3
  723. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +4 -3
  724. package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
  725. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +4 -3
  726. package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
  727. package/schemas/plugins/sharing/SharePlugin.check.js +4 -3
  728. package/schemas/plugins/sharing/SharePlugin.json +32 -0
  729. package/types.d.ts +20780 -14174
  730. package/lib/LazyBarrel.js +0 -388
  731. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
  732. package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
  733. package/lib/javascript/ChunkFormatHelpers.js +0 -72
  734. package/lib/javascript/grammar.js +0 -5546
  735. package/lib/javascript/parser.js +0 -1500
  736. package/lib/javascript/regexpData.js +0 -51
  737. package/lib/performance/getSourceModules.js +0 -22
  738. package/lib/util/Semaphore.js +0 -65
  739. package/lib/util/objectToMap.js +0 -15
  740. package/schemas/WebpackOptions.check.d.ts +0 -7
  741. package/schemas/_container.json +0 -155
  742. package/schemas/_sharing.json +0 -118
  743. package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
  744. package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
  745. package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
  746. package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
  747. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
  748. package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
  749. package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
  750. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
  751. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
  752. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
  753. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
  754. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
  755. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
  756. package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
  757. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
  758. package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
  759. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
  760. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
  761. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
  762. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
  763. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
  764. package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
  765. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
  766. package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
  767. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
  768. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
  769. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
  770. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
  771. package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
  772. package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
  773. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
  774. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
  775. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
  776. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
  777. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
  778. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
  779. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
  780. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
  781. package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
  782. /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
  783. /package/lib/{util → css}/topologicalSort.js +0 -0
  784. /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
  785. /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
  786. /package/lib/{util → fs}/StackedCacheMap.js +0 -0
  787. /package/lib/{util → javascript}/StackedMap.js +0 -0
  788. /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
  789. /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
  790. /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
  791. /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
  792. /package/lib/{util → optimize}/Queue.js +0 -0
  793. /package/lib/{util → stats}/smartGrouping.js +0 -0
@@ -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
@@ -87,6 +87,8 @@ const {
87
87
  */
88
88
  /** @import { WasmLoadingTypes } from "../wasm/EnableWasmLoadingPlugin" */
89
89
  /** @import { PlatformTargetProperties, TargetProperties } from "./target" */
90
+ /** @import Compiler from "../Compiler" */
91
+ /** @typedef {Parameters<import("minimizer-webpack-plugin")["apply"]>[0]} MinimizerCompiler */
90
92
 
91
93
  /**
92
94
  * Defines the recursive non nullable type used by this module.
@@ -228,7 +230,7 @@ const {
228
230
  const NODE_MODULES_REGEXP = /[\\/]node_modules[\\/]/i;
229
231
  const DEFAULT_CACHE_NAME = "default";
230
232
  const DEFAULTS = {
231
- // TODO webpack 6 - use xxhash64
233
+ // TODO in the next major release: use xxhash64
232
234
  HASH_FUNCTION: "md4"
233
235
  };
234
236
 
@@ -279,18 +281,20 @@ const A = (obj, prop, factory) => {
279
281
  if (value === undefined) {
280
282
  obj[prop] = factory();
281
283
  } else if (Array.isArray(value)) {
282
- /** @type {EXPECTED_ANY[] | undefined} */
284
+ /** @type {(T[P] extends (infer E)[] ? E : never)[] | undefined} */
283
285
  let newArray;
284
286
  for (let i = 0; i < value.length; i++) {
285
287
  const item = value[i];
286
288
  if (item === "...") {
287
289
  if (newArray === undefined) {
288
290
  newArray = value.slice(0, i);
289
- obj[prop] = /** @type {T[P]} */ (/** @type {unknown} */ (newArray));
291
+ obj[prop] = /** @type {T[P]} */ (
292
+ /** @type {T[P] | NonNullable<typeof newArray>} */ (newArray)
293
+ );
290
294
  }
291
295
  const items =
292
- /** @type {EXPECTED_ANY[]} */
293
- (/** @type {unknown} */ (factory()));
296
+ /** @type {NonNullable<typeof newArray>} */
297
+ (/** @type {T[P] | NonNullable<typeof newArray>} */ (factory()));
294
298
  if (items !== undefined) {
295
299
  for (const item of items) {
296
300
  newArray.push(item);
@@ -386,7 +390,7 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
386
390
 
387
391
  F(options, "validate", () => !(futureDefaults === true && production));
388
392
 
389
- // Progress lives on infrastructureLogging; webpack@6 shows the interactive
393
+ // Progress lives on infrastructureLogging; the next major release shows the interactive
390
394
  // bar by default (`"auto"` = TTY only), webpack@5 stays opt-in.
391
395
  D(options.infrastructureLogging, "progress", futureDefaults ? "auto" : false);
392
396
 
@@ -536,15 +540,19 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
536
540
  );
537
541
 
538
542
  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";
543
+ const libraryType = options.output.library && options.output.library.type;
544
+ if (libraryType !== undefined) {
545
+ // The schema states which types are externals types, and reading it
546
+ // costs 498 KB of objects, so only a build naming one pays for that.
547
+ const validExternalTypes = require("../../schemas/WebpackOptions.json")
548
+ .definitions.ExternalsType.enum;
549
+
550
+ if (validExternalTypes.includes(libraryType)) {
551
+ return /** @type {ExternalsType} */ (libraryType);
552
+ }
553
+ }
554
+
555
+ return options.output.module ? "module-import" : "var";
548
556
  });
549
557
 
550
558
  applyNodeDefaults(options.node, {
@@ -575,9 +583,14 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
575
583
  applyOptimizationDefaults(options.optimization, {
576
584
  development,
577
585
  production,
586
+ futureDefaults,
578
587
  css:
579
588
  /** @type {boolean} */
580
589
  (options.experiments.css),
590
+ esmLibrary:
591
+ /** @type {string[]} */
592
+ (options.output.enabledLibraryTypes).length > 0 &&
593
+ Boolean(options.output.module),
581
594
  records: Boolean(options.recordsInputPath || options.recordsOutputPath)
582
595
  });
583
596
 
@@ -641,7 +654,7 @@ const applyExperimentsDefaults = (
641
654
  ) => {
642
655
  D(experiments, "futureDefaults", false);
643
656
  D(experiments, "backCompat", !experiments.futureDefaults);
644
- // TODO do we need sync web assembly in webpack@6?
657
+ // TODO in the next major release: do we need sync web assembly?
645
658
  D(experiments, "syncWebAssembly", false);
646
659
  D(
647
660
  experiments,
@@ -665,7 +678,7 @@ const applyExperimentsDefaults = (
665
678
 
666
679
  // Enabled implicitly the value stays `"auto"`, and the plugins then step
667
680
  // aside per module for requests loaders were applied to.
668
- // TODO webpack 6: css/html default to `true`, drop the `"auto"` marker.
681
+ // TODO in the next major release: css/html/asyncWebAssembly default to `true`, drop the `"auto"` marker.
669
682
  if (experiments.css === "auto") {
670
683
  experiments.css =
671
684
  !(
@@ -694,7 +707,8 @@ const applyExperimentsDefaults = (
694
707
  if (experiments.asyncWebAssembly === "auto") {
695
708
  experiments.asyncWebAssembly =
696
709
  !experiments.syncWebAssembly &&
697
- !RuleSetCompiler.hasRuleForResource(rules, "/file.wasm");
710
+ !RuleSetCompiler.hasRuleForResource(rules, "/file.wasm") &&
711
+ "auto";
698
712
  }
699
713
 
700
714
  if (typeof experiments.buildHttp === "object") {
@@ -776,7 +790,12 @@ const applyCacheDefaults = (
776
790
  /** @type {NonNullable<FileCacheOptions["buildDependencies"]>} */
777
791
  (cache.buildDependencies),
778
792
  "defaultWebpack",
779
- [path.resolve(__dirname, "..") + path.sep]
793
+ [
794
+ {
795
+ dependency: path.resolve(__dirname, "..") + path.sep,
796
+ optional: false
797
+ }
798
+ ]
780
799
  );
781
800
  break;
782
801
  case "memory":
@@ -1687,13 +1706,13 @@ const applyOutputDefaults = (
1687
1706
  ((tp.node === null && tp.web === null && tp.module !== false) ||
1688
1707
  tp.deno === true ||
1689
1708
  tp.bun === true ||
1690
- // webpack@6 emits ESM wherever the target reads one — a browserslist
1709
+ // the next major release emits ESM wherever the target reads one — a browserslist
1691
1710
  // query (or `esX`/`nodeX`) without ESM support keeps script output
1692
1711
  (futureDefaults && tp.module !== false && !hasScriptLibrary))
1693
1712
  )
1694
1713
  );
1695
1714
 
1696
- const environment = /** @type {Environment} */ (output.environment);
1715
+ const environment = output.environment;
1697
1716
  /**
1698
1717
  * Returns true, when v is truthy or undefined.
1699
1718
  * @param {boolean | undefined} v value
@@ -2368,7 +2387,7 @@ const applyNodeDefaults = (
2368
2387
  });
2369
2388
 
2370
2389
  const handlerForNames = () => {
2371
- // TODO webpack@6 remove `node-module` in favor of `eval-only`
2390
+ // TODO in the next major release: remove `node-module` in favor of `eval-only`
2372
2391
  if (targetProperties) {
2373
2392
  if (targetProperties.node) {
2374
2393
  return "eval-only";
@@ -2384,7 +2403,7 @@ const applyNodeDefaults = (
2384
2403
  }
2385
2404
  }
2386
2405
 
2387
- // TODO webpack@6 should we use `warn-even-only`?
2406
+ // TODO in the next major release: should we use `warn-even-only`?
2388
2407
  return futureDefaults ? "warn-mock" : "mock";
2389
2408
  };
2390
2409
 
@@ -2444,12 +2463,14 @@ const applyPerformanceDefaults = (performance, { production }) => {
2444
2463
  * @param {boolean} options.production is production
2445
2464
  * @param {boolean} options.development is development
2446
2465
  * @param {boolean} options.css is css enabled
2466
+ * @param {boolean} options.esmLibrary whether the output is an ECMAScript module consumed as a library
2447
2467
  * @param {boolean} options.records using records
2468
+ * @param {boolean} options.futureDefaults use defaults of the next major version
2448
2469
  * @returns {void}
2449
2470
  */
2450
2471
  const applyOptimizationDefaults = (
2451
2472
  optimization,
2452
- { production, development, css, records }
2473
+ { production, development, css, esmLibrary, records, futureDefaults }
2453
2474
  ) => {
2454
2475
  D(optimization, "removeAvailableModules", false);
2455
2476
  D(optimization, "removeEmptyChunks", true);
@@ -2481,13 +2502,12 @@ const applyOptimizationDefaults = (
2481
2502
  D(optimization, "realContentHash", production);
2482
2503
  // A plugin assigning the object shorthand in `apply()` runs after
2483
2504
  // normalization: it replaces `minimizeOptions`, keeping `minimize` boolean.
2484
- const minimizeAssignedInApply = /** @type {unknown} */ (
2485
- optimization.minimize
2486
- );
2487
- if (typeof minimizeAssignedInApply === "object") {
2488
- optimization.minimizeOptions = /** @type {OptimizationMinimizeOptions} */ (
2489
- minimizeAssignedInApply
2505
+ const minimizeAssignedInApply =
2506
+ /** @type {Optimization["minimize"] | OptimizationMinimizeOptions} */ (
2507
+ optimization.minimize
2490
2508
  );
2509
+ if (typeof minimizeAssignedInApply === "object") {
2510
+ optimization.minimizeOptions = minimizeAssignedInApply;
2491
2511
  optimization.minimize = true;
2492
2512
  }
2493
2513
  D(optimization, "minimize", production);
@@ -2496,25 +2516,36 @@ const applyOptimizationDefaults = (
2496
2516
  /** @type {NonNullable<Optimization["minimizeOptions"]>} */
2497
2517
  (optimization.minimizeOptions);
2498
2518
  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 } }));
2519
+ // Only ESM output carries these annotations, and only a consumer that
2520
+ // re-bundles it reads them; terser drops them everywhere else, which is
2521
+ // what a script-loaded output — a federation container — wants.
2522
+ F(minimizeOptions, "javascript", () =>
2523
+ esmLibrary
2524
+ ? {
2525
+ compress: { passes: 2 },
2526
+ // eslint-disable-next-line camelcase
2527
+ format: { preserve_annotations: true }
2528
+ }
2529
+ : { compress: { passes: 2 } }
2530
+ );
2502
2531
  F(minimizeOptions, "css", () => ({}));
2503
2532
  F(minimizeOptions, "html", () => ({}));
2533
+ D(minimizeOptions, "json", futureDefaults);
2534
+ if (futureDefaults) F(minimizeOptions, "xml", () => ({}));
2504
2535
  }
2505
2536
  A(optimization, "minimizer", () => [
2506
2537
  {
2507
2538
  apply: (compiler) => {
2508
2539
  // Lazy load the minimizer plugin
2509
- const TerserPlugin = require("minimizer-webpack-plugin");
2540
+ const MinimizerPlugin = require("minimizer-webpack-plugin");
2510
2541
 
2511
2542
  // WHY: one minimizer instance, so one worker-thread pool, handles JS and
2512
2543
  // — 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.
2544
+ // of minify functions each dispatched by its own `filter`: the JS one
2545
+ // to JS, `cssMinify` to CSS, `htmlMinify` to HTML. The CSS and
2546
+ // HTML serializers stay worker-safe by resolving their parser with
2547
+ // `require("webpack/…")` in the worker, so all three share the pool, and
2548
+ // `test` is widened to let those assets reach the dispatcher.
2518
2549
 
2519
2550
  // Step aside for a minimizer the user configured for these types:
2520
2551
  // whichever ran first would mark the asset `minimized` and silently
@@ -2527,9 +2558,18 @@ const applyOptimizationDefaults = (
2527
2558
  const minimizeByType = /** @type {OptimizationMinimizeOptions} */ (
2528
2559
  compiler.options.optimization.minimizeOptions
2529
2560
  );
2530
- const terserOptions = minimizeByType.javascript || {
2561
+ const javascriptOptions = minimizeByType.javascript || {
2531
2562
  compress: { passes: 2 }
2532
2563
  };
2564
+ // webpack's printer, held to what terser writes, replaces terser; until
2565
+ // proven on real builds it is a future default, and terser as the plugin
2566
+ // publishes it minifies JS everywhere else.
2567
+ const javascriptMinify = futureDefaults
2568
+ ? require.resolve("../javascript/jsMinify")
2569
+ : {
2570
+ path: require.resolve("minimizer-webpack-plugin"),
2571
+ export: "terserMinify"
2572
+ };
2533
2573
 
2534
2574
  const { css, html } = compiler.options.experiments;
2535
2575
  const minifyJs = minimizeByType.javascript !== false;
@@ -2541,16 +2581,51 @@ const applyOptimizationDefaults = (
2541
2581
  Boolean(html) &&
2542
2582
  !claimedByOtherMinimizer.html &&
2543
2583
  minimizeByType.html !== false;
2544
- if (!minifyJs && !minifyCss && !minifyHtml) return;
2545
- if (minifyJs && !minifyCss && !minifyHtml) {
2546
- new TerserPlugin({ terserOptions }).apply(
2547
- /** @type {EXPECTED_ANY} */ (compiler)
2584
+ // `=== true` rather than `!== false`: outside `futureDefaults`, JSON is opt-in.
2585
+ const minifyJson =
2586
+ minimizeByType.json === true && !claimedByOtherMinimizer.json;
2587
+ // Off unless asked for: only an object, which futureDefaults supplies.
2588
+ const minifyXml =
2589
+ !claimedByOtherMinimizer.xml &&
2590
+ typeof minimizeByType.xml === "object";
2591
+ if (
2592
+ !minifyJs &&
2593
+ !minifyCss &&
2594
+ !minifyHtml &&
2595
+ !minifyJson &&
2596
+ !minifyXml
2597
+ ) {
2598
+ return;
2599
+ }
2600
+ // An asset name keeps the query and the fragment its filename template
2601
+ // wrote (`[query][fragment]`, `main.js#[contenthash]`), so both may follow.
2602
+ /**
2603
+ * @param {string[]} extensions extension patterns
2604
+ * @returns {RegExp} matcher for asset names with those extensions
2605
+ */
2606
+ const assetNameTest = (extensions) =>
2607
+ new RegExp(`^[^?#]*\\.(?:${extensions.join("|")})(?:[?#].*)?$`, "i");
2608
+ if (
2609
+ minifyJs &&
2610
+ !minifyCss &&
2611
+ !minifyHtml &&
2612
+ !minifyJson &&
2613
+ !minifyXml
2614
+ ) {
2615
+ new MinimizerPlugin({
2616
+ test: assetNameTest(["[cm]?js"]),
2617
+ minify: javascriptMinify,
2618
+ minimizerOptions: javascriptOptions
2619
+ }).apply(
2620
+ /** @type {MinimizerCompiler} */ (
2621
+ /** @type {Compiler | MinimizerCompiler} */ (compiler)
2622
+ )
2548
2623
  );
2549
2624
  return;
2550
2625
  }
2551
- /** @type {(typeof TerserPlugin.terserMinify | typeof import("../css/cssMinify") | typeof import("../html/htmlMinify"))[]} */
2626
+ /** @type {(typeof javascriptMinify | string)[]} */
2552
2627
  const minify = [];
2553
- /** @type {EXPECTED_OBJECT[]} */
2628
+ /** @type {(typeof javascriptOptions | NonNullable<Parameters<typeof import("../css/cssMinify")>[1]> | NonNullable<Parameters<typeof import("../html/htmlMinify")>[1]> | Record<string, never>)[]} */
2554
2629
  const minimizerOptions = [];
2555
2630
  /** @type {string[]} */
2556
2631
  const extensions = [];
@@ -2564,12 +2639,21 @@ const applyOptimizationDefaults = (
2564
2639
  // prefixes and every spelling a target can read, so `vendorPrefixes`
2565
2640
  // turns off the first alone — resolving it is what the second needs.
2566
2641
  const { target } = compiler.options;
2567
- const browsers = target
2642
+ const context = /** @type {Context} */ (compiler.options.context);
2643
+ const named = target
2568
2644
  ? getTargetsBrowsers(
2569
2645
  Array.isArray(target) ? target : [target],
2570
- /** @type {Context} */ (compiler.options.context)
2646
+ context
2571
2647
  )
2572
2648
  : undefined;
2649
+ // A target naming no browsers is still served to some: browserslist's own
2650
+ // `defaults` are them, where none would read as "every current engine" —
2651
+ // unless `dropOverriddenDeclarations` asks for exactly that assumption.
2652
+ const browsers =
2653
+ named ||
2654
+ (cssOptions !== undefined && cssOptions.dropOverriddenDeclarations
2655
+ ? undefined
2656
+ : getTargetsBrowsers(["browserslist:defaults"], context));
2573
2657
  const cssEnvironment = {
2574
2658
  browsers,
2575
2659
  vendorPrefixes:
@@ -2580,35 +2664,57 @@ const applyOptimizationDefaults = (
2580
2664
  ? minimizeByType.html
2581
2665
  : undefined;
2582
2666
  if (minifyJs) {
2583
- minify.push(TerserPlugin.terserMinify);
2584
- minimizerOptions.push(terserOptions);
2667
+ minify.push(javascriptMinify);
2668
+ minimizerOptions.push(javascriptOptions);
2585
2669
  extensions.push("[cm]?js");
2586
2670
  }
2587
2671
  if (minifyCss) {
2588
- minify.push(require("../css/cssMinify"));
2672
+ minify.push(require.resolve("../css/cssMinify"));
2673
+ // An SVG `data:` URL is minified as the `.svg` assets are, or left alone.
2589
2674
  minimizerOptions.push({
2590
2675
  environment: cssEnvironment,
2676
+ svg: minifyXml,
2591
2677
  ...cssOptions
2592
2678
  });
2593
2679
  extensions.push("css");
2594
2680
  }
2595
2681
  if (minifyHtml) {
2596
- minify.push(require("../html/htmlMinify"));
2682
+ minify.push(require.resolve("../html/htmlMinify"));
2597
2683
  // `minimize.css` rides under its own key rather than spread beside the
2598
2684
  // HTML options: the two name some of the same switches, so one flat
2599
2685
  // object would hand each language the other's answer.
2600
2686
  minimizerOptions.push({
2601
2687
  environment: cssEnvironment,
2602
2688
  css: cssOptions,
2689
+ svg: minifyXml,
2603
2690
  ...htmlOptions
2604
2691
  });
2605
2692
  extensions.push("html");
2606
2693
  }
2607
- new TerserPlugin({
2608
- test: new RegExp(`\\.(?:${extensions.join("|")})(\\?.*)?$`, "i"),
2694
+ if (minifyJson) {
2695
+ minify.push(require.resolve("../json/jsonMinify"));
2696
+ minimizerOptions.push({});
2697
+ // A web app manifest is JSON under its own extension.
2698
+ extensions.push("json", "webmanifest");
2699
+ }
2700
+ if (minifyXml) {
2701
+ minify.push(require.resolve("../html/xmlMinify"));
2702
+ minimizerOptions.push({
2703
+ environment: cssEnvironment,
2704
+ css: cssOptions,
2705
+ ...minimizeByType.xml
2706
+ });
2707
+ extensions.push("svg", "xml");
2708
+ }
2709
+ new MinimizerPlugin({
2710
+ test: assetNameTest(extensions),
2609
2711
  minify,
2610
2712
  minimizerOptions
2611
- }).apply(/** @type {EXPECTED_ANY} */ (compiler));
2713
+ }).apply(
2714
+ /** @type {MinimizerCompiler} */ (
2715
+ /** @type {Compiler | MinimizerCompiler} */ (compiler)
2716
+ )
2717
+ );
2612
2718
  }
2613
2719
  }
2614
2720
  ]);
@@ -2625,6 +2731,7 @@ const applyOptimizationDefaults = (
2625
2731
  : [JAVASCRIPT_TYPE, UNKNOWN_TYPE]
2626
2732
  );
2627
2733
  D(splitChunks, "hidePathInfo", production);
2734
+ D(splitChunks, "dedupDepth", futureDefaults ? 1 : 0);
2628
2735
  D(splitChunks, "chunks", "async");
2629
2736
  D(splitChunks, "usedExports", optimization.usedExports === true);
2630
2737
  D(splitChunks, "minChunks", 1);
@@ -5,14 +5,14 @@
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<import("terser").MinifyOptions>["minimizer"] }} MinimizerOptions */
13
13
 
14
14
  /**
15
- * @param {unknown} candidate a configured plugin or minimizer entry
15
+ * @param {NonNullable<Compiler["options"]["optimization"]["minimizer"]>[number] | Compiler["options"]["plugins"][number]} candidate a configured plugin or minimizer entry
16
16
  * @param {string} file probe filename
17
17
  * @returns {boolean} whether the candidate minimizes that file
18
18
  */
@@ -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
  };
@@ -7,6 +7,11 @@
7
7
 
8
8
  const util = require("util");
9
9
  const { fileUrlToPath } = require("../util/identifier");
10
+ const memoize = require("../util/memoize");
11
+
12
+ const getCreatePathGlobRegExp = memoize(
13
+ () => require("../util/globUtils").createPathGlobRegExp
14
+ );
10
15
 
11
16
  /**
12
17
  * @import {
@@ -24,6 +29,7 @@ const { fileUrlToPath } = require("../util/identifier");
24
29
  * OptimizationRuntimeChunkNormalized,
25
30
  * OutputNormalized,
26
31
  * PluginsNormalized,
32
+ * RawDevTool,
27
33
  * WebpackOptions,
28
34
  * WebpackOptionsNormalized
29
35
  * } from "../../declarations/WebpackOptions"
@@ -307,6 +313,10 @@ const getNormalizedWebpackOptions = (config) => ({
307
313
  ? config.ignoreWarnings.map((ignore) => {
308
314
  if (typeof ignore === "function") return ignore;
309
315
  const i = ignore instanceof RegExp ? { message: ignore } : ignore;
316
+ const file =
317
+ typeof i.file === "string"
318
+ ? getCreatePathGlobRegExp()(i.file)
319
+ : i.file;
310
320
  return (warning, { requestShortener }) => {
311
321
  if (!i.message && !i.module && !i.file) return false;
312
322
  if (i.message && !i.message.test(warning.message)) {
@@ -323,9 +333,9 @@ const getNormalizedWebpackOptions = (config) => ({
323
333
  return false;
324
334
  }
325
335
  if (
326
- i.file &&
336
+ file &&
327
337
  (!(/** @type {WebpackError} */ (warning).file) ||
328
- !i.file.test(/** @type {WebpackError} */ (warning).file))
338
+ !file.test(/** @type {WebpackError} */ (warning).file))
329
339
  ) {
330
340
  return false;
331
341
  }
@@ -344,7 +354,7 @@ const getNormalizedWebpackOptions = (config) => ({
344
354
  unsafeCache: module.unsafeCache,
345
355
  parser: keyedNestedConfig(module.parser, cloneObject, {
346
356
  javascript: (parserOptions) => ({
347
- // TODO webpack 6 remove from `ModuleOptions`, keep only `*ByModuleType`
357
+ // TODO in the next major release: remove from `ModuleOptions`, keep only `*ByModuleType`
348
358
  unknownContextRequest: module.unknownContextRequest,
349
359
  unknownContextRegExp: module.unknownContextRegExp,
350
360
  unknownContextRecursive: module.unknownContextRecursive,
@@ -390,7 +400,7 @@ const getNormalizedWebpackOptions = (config) => ({
390
400
  cacheGroups: cloneObject(splitChunks.cacheGroups)
391
401
  }
392
402
  ),
393
- // TODO webpack 6: normalize `minimize` to the per-asset-type object and
403
+ // TODO in the next major release: normalize `minimize` to the per-asset-type object and
394
404
  // drop `minimizeOptions` — a breaking change for what plugins read back.
395
405
  minimize:
396
406
  typeof optimization.minimize === "object" ? true : optimization.minimize,
@@ -475,7 +485,7 @@ const getNormalizedWebpackOptions = (config) => ({
475
485
  importFunctionName: output.importFunctionName,
476
486
  importMetaName: output.importMetaName,
477
487
  scriptType: output.scriptType,
478
- // TODO webpack 6 remove `libraryTarget`/`auxiliaryComment`/`amdContainer`/etc in favor of the `library` option
488
+ // TODO in the next major release: remove `libraryTarget`/`auxiliaryComment`/`amdContainer`/etc in favor of the `library` option
479
489
  library: libraryBase && {
480
490
  type:
481
491
  output.libraryTarget !== undefined
@@ -493,6 +503,7 @@ const getNormalizedWebpackOptions = (config) => ({
493
503
  output.libraryExport !== undefined
494
504
  ? output.libraryExport
495
505
  : libraryBase.export,
506
+ entryExports: libraryBase.entryExports,
496
507
  name: libraryBase.name,
497
508
  umdAmdContainer: libraryBase.umdAmdContainer,
498
509
  umdNamedDefine:
@@ -745,7 +756,7 @@ const applyWebpackOptionsInterception = (options) => {
745
756
  };
746
757
  }
747
758
 
748
- // TODO webpack 6 - remove compatibility logic and move `devtools` fully into `devtool` with multi-type support
759
+ // TODO in the next major release: remove compatibility logic and move `devtools` fully into `devtool` with multi-type support
749
760
  let _devtool = options.devtool;
750
761
  /** @type {WebpackOptionsNormalized["devtool"]} */
751
762
  let cached;
@@ -756,7 +767,7 @@ const applyWebpackOptionsInterception = (options) => {
756
767
  // Prefer `all`, then `javascript`, then `css`
757
768
  const match = ["all", "javascript", "css"]
758
769
  .map((type) =>
759
- /** @type {Extract<WebpackOptionsNormalized["devtool"], EXPECTED_ANY[]>} */ (
770
+ /** @type {Exclude<WebpackOptionsNormalized["devtool"], RawDevTool | undefined>} */ (
760
771
  _devtool
761
772
  ).find((item) => item.type === type)
762
773
  )
@@ -12,12 +12,22 @@ const getBrowserslistTargetHandler = memoize(() =>
12
12
  require("./browserslistTargetHandler")
13
13
  );
14
14
 
15
+ // The half of browserslist that finds a config, the same module instance the
16
+ // queries use, so its caches stay shared and a request for one costs nothing
17
+ // twice. browserslist's own entry requires it, so it resolves wherever that does
18
+ const getBrowserslistConfigLoader = memoize(() => require("browserslist/node"));
19
+
15
20
  /**
16
21
  * Gets default target.
17
22
  * @param {string} context the context directory
18
23
  * @returns {string} default target
19
24
  */
20
25
  const getDefaultTarget = (context) => {
26
+ // WHY: the default only turns on whether a browserslist config exists, and
27
+ // the config half answers that without the caniuse data the queries read —
28
+ // 1.3 MB that a build with no such config never uses.
29
+ const config = getBrowserslistConfigLoader().loadConfig({ path: context });
30
+ if (!config) return "web";
21
31
  const browsers = getBrowserslistTargetHandler().load(undefined, context);
22
32
  return browsers ? "browserslist" : "web";
23
33
  };
@@ -110,7 +120,7 @@ const getDefaultTarget = (context) => {
110
120
  */
111
121
  const versionDependent = (major, minor) => {
112
122
  if (!major) {
113
- return () => /** @type {undefined} */ (undefined);
123
+ return () => undefined;
114
124
  }
115
125
  /** @type {number} */
116
126
  const nMajor = Number(major);
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const Dependency = require("../Dependency");
8
+ const Dependency = require("../graph/Dependency");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
 
11
11
  /** @import { ExposesList } from "./ContainerEntryModule" */