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
@@ -6,11 +6,9 @@
6
6
  "use strict";
7
7
 
8
8
  const util = require("util");
9
- const Entrypoint = require("./Entrypoint");
10
- const ModuleGraphConnection = require("./ModuleGraphConnection");
11
- const { DEFAULTS } = require("./config/defaults");
12
- const { first } = require("./util/SetHelpers");
13
- const SortableSet = require("./util/SortableSet");
9
+ const { DEFAULTS } = require("../config/defaults");
10
+ const { first } = require("../util/SetHelpers");
11
+ const SortableSet = require("../util/SortableSet");
14
12
  const {
15
13
  compareIds,
16
14
  compareIterables,
@@ -18,37 +16,39 @@ const {
18
16
  compareModulesByIdentifier,
19
17
  compareSelect,
20
18
  concatComparators
21
- } = require("./util/comparators");
22
- const createHash = require("./util/createHash");
23
- const findGraphRoots = require("./util/findGraphRoots");
19
+ } = require("../util/comparators");
20
+ const createHash = require("../util/createHash");
24
21
  const {
25
22
  RuntimeSpecMap,
26
23
  RuntimeSpecSet,
27
- forEachRuntime,
28
24
  mergeRuntime,
29
25
  runtimeToString
30
- } = require("./util/runtime");
26
+ } = require("../util/runtime");
27
+ const ModuleGraphConnection = require("./ModuleGraphConnection");
28
+ const findGraphRoots = require("./findGraphRoots");
31
29
 
32
30
  /** @import AsyncDependenciesBlock from "./AsyncDependenciesBlock" */
33
31
  /** @import Chunk, { Chunks, Entrypoints, ChunkId } from "./Chunk" */
34
32
  /** @import ChunkGroup from "./ChunkGroup" */
33
+ /** @import Dependency from "./Dependency" */
34
+ /** @import Entrypoint from "./Entrypoint" */
35
35
  /**
36
36
  * @import Module, {
37
37
  * SourceType,
38
38
  * SourceTypes,
39
39
  * ReadOnlyRuntimeRequirements,
40
40
  * RuntimeRequirements
41
- * } from "./Module"
41
+ * } from "../module/Module"
42
42
  */
43
43
  /** @import ModuleGraph from "./ModuleGraph" */
44
44
  /** @import { ConnectionState } from "./ModuleGraphConnection" */
45
- /** @import RuntimeModule from "./RuntimeModule" */
46
- /** @import { HashFunction } from "./util/Hash" */
47
- /** @import { RuntimeSpec } from "./util/runtime" */
45
+ /** @import RuntimeModule from "../runtime/RuntimeModule" */
46
+ /** @import { HashFunction } from "../util/Hash" */
47
+ /** @import { RuntimeSpec } from "../util/runtime" */
48
48
  /**
49
49
  * @import {
50
50
  * JavascriptModuleBuildMeta
51
- * } from "./javascript/JavascriptModule"
51
+ * } from "../javascript/JavascriptModule"
52
52
  */
53
53
 
54
54
  /** @type {ReadonlySet<string>} */
@@ -71,6 +71,15 @@ const activeStateToString = (state) => {
71
71
 
72
72
  const compareModuleIterables = compareIterables(compareModulesByIdentifier);
73
73
 
74
+ /** @type {(a: RuntimeModule, b: RuntimeModule) => -1 | 0 | 1} */
75
+ const compareRuntimeModulesByStage = concatComparators(
76
+ compareSelect(
77
+ (module) => /** @type {RuntimeModule} */ (module).stage,
78
+ compareIds
79
+ ),
80
+ compareModulesByIdentifier
81
+ );
82
+
74
83
  /** @typedef {(c: Chunk, chunkGraph: ChunkGraph) => boolean} ChunkFilterPredicate */
75
84
  /** @typedef {(m: Module) => boolean} ModuleFilterPredicate */
76
85
  /** @typedef {[Module, Entrypoint | undefined]} EntryModuleWithChunkGroup */
@@ -106,7 +115,7 @@ const getArray = (set) => [...set];
106
115
 
107
116
  /**
108
117
  * Gets module runtimes.
109
- * @param {SortableChunks} chunks the chunks
118
+ * @param {SortableChunks | readonly Chunk[]} chunks the chunks
110
119
  * @returns {RuntimeSpecSet} runtimes
111
120
  */
112
121
  const getModuleRuntimes = (chunks) => {
@@ -155,6 +164,12 @@ const modulesBySourceType = (sourceTypesByModule) => (set) => {
155
164
  /** @type {ModulesBySourceType} */
156
165
  const defaultModulesBySourceType = modulesBySourceType(undefined);
157
166
 
167
+ // What `getModuleChunksIterable` answers for a module in no chunk. Frozen, so a
168
+ // caller ignoring "do not modify" throws here rather than corrupting the answer
169
+ // every such module shares.
170
+ /** @type {readonly Chunk[]} */
171
+ const EMPTY_CHUNKS = Object.freeze([]);
172
+
158
173
  /**
159
174
  * Defines the module set to array function type used by this module.
160
175
  * @typedef {(set: SortableSet<Module>) => Module[]} ModuleSetToArrayFunction
@@ -242,8 +257,15 @@ const isAvailableChunk = (a, b) => {
242
257
 
243
258
  class ChunkGraphModule {
244
259
  constructor() {
245
- /** @type {SortableChunks} */
246
- this.chunks = new SortableSet();
260
+ // Most modules are in no chunk or one, so: nothing, an array holding that one
261
+ // chunk, a SortableSet once a second arrives. A set costs 200 bytes against
262
+ // an array's 56, and of 950 modules 948 hold none, 934 one in development.
263
+ /** @type {SortableChunks | readonly Chunk[] | undefined} */
264
+ this.chunks = undefined;
265
+ // What `getModuleRuntimes` answered, for the states holding no set to cache
266
+ // in. Dropped wherever `chunks` changes, as the set's own cache is.
267
+ /** @type {RuntimeSpecSet | undefined} */
268
+ this.runtimes = undefined;
247
269
  /** @type {EntryInChunks | undefined} */
248
270
  this.entryInChunks = undefined;
249
271
  /** @type {RuntimeInChunks | undefined} */
@@ -339,6 +361,9 @@ class ChunkGraph {
339
361
 
340
362
  /** @type {HashFunction} */
341
363
  this._hashFunction = hashFunction;
364
+ // lets the per-module override lookup bail out until something sets one
365
+ /** @type {boolean} */
366
+ this._hasOverwrittenSourceTypes = false;
342
367
 
343
368
  this._getGraphRoots = this._getGraphRoots.bind(this);
344
369
  }
@@ -406,6 +431,45 @@ class ChunkGraph {
406
431
  ].sort(compareModulesByIdentifier);
407
432
  }
408
433
 
434
+ /**
435
+ * Records that a chunk contains a module, growing what the record holds from
436
+ * nothing to the one chunk to a set.
437
+ * @param {ChunkGraphModule} cgm the module's chunk graph record
438
+ * @param {Chunk} chunk the chunk containing it
439
+ * @returns {void}
440
+ */
441
+ static _addModuleChunk(cgm, chunk) {
442
+ const { chunks } = cgm;
443
+ cgm.runtimes = undefined;
444
+ if (chunks === undefined) {
445
+ // Frozen because `getModuleChunks` hands this very array out: nothing here
446
+ // writes to it after this, and a caller ignoring "do not modify" would
447
+ // otherwise change membership without the chunk side hearing of it.
448
+ cgm.chunks = Object.freeze([chunk]);
449
+ } else if (chunks instanceof Set) {
450
+ chunks.add(chunk);
451
+ } else if (chunks[0] !== chunk) {
452
+ const set = new SortableSet(chunks);
453
+ set.add(chunk);
454
+ cgm.chunks = set;
455
+ }
456
+ }
457
+
458
+ /**
459
+ * Records that a chunk no longer contains a module. A set is not shrunk back
460
+ * to an array, so a module that was in two chunks keeps the set.
461
+ * @param {ChunkGraphModule} cgm the module's chunk graph record
462
+ * @param {Chunk} chunk the chunk that no longer contains it
463
+ * @returns {void}
464
+ */
465
+ static _removeModuleChunk(cgm, chunk) {
466
+ const { chunks } = cgm;
467
+ if (chunks === undefined) return;
468
+ cgm.runtimes = undefined;
469
+ if (chunks instanceof Set) chunks.delete(chunk);
470
+ else if (chunks[0] === chunk) cgm.chunks = undefined;
471
+ }
472
+
409
473
  /**
410
474
  * Connects chunk and module.
411
475
  * @param {Chunk} chunk the new chunk
@@ -415,7 +479,7 @@ class ChunkGraph {
415
479
  connectChunkAndModule(chunk, module) {
416
480
  const cgm = this._getChunkGraphModule(module);
417
481
  const cgc = this._getChunkGraphChunk(chunk);
418
- cgm.chunks.add(chunk);
482
+ ChunkGraph._addModuleChunk(cgm, chunk);
419
483
  cgc.modules.add(module);
420
484
  }
421
485
 
@@ -431,7 +495,7 @@ class ChunkGraph {
431
495
  cgc.modules.delete(module);
432
496
  // No need to invalidate cgc._modulesBySourceType because we modified cgc.modules anyway
433
497
  if (cgc.sourceTypesByModule) cgc.sourceTypesByModule.delete(module);
434
- cgm.chunks.delete(chunk);
498
+ ChunkGraph._removeModuleChunk(cgm, chunk);
435
499
  }
436
500
 
437
501
  /**
@@ -443,7 +507,7 @@ class ChunkGraph {
443
507
  const cgc = this._getChunkGraphChunk(chunk);
444
508
  for (const module of cgc.modules) {
445
509
  const cgm = this._getChunkGraphModule(module);
446
- cgm.chunks.delete(chunk);
510
+ ChunkGraph._removeModuleChunk(cgm, chunk);
447
511
  }
448
512
  cgc.modules.clear();
449
513
  chunk.disconnectFromGroups();
@@ -516,13 +580,16 @@ class ChunkGraph {
516
580
  const oldCgm = this._getChunkGraphModule(oldModule);
517
581
  const newCgm = this._getChunkGraphModule(newModule);
518
582
 
519
- for (const chunk of oldCgm.chunks) {
520
- const cgc = this._getChunkGraphChunk(chunk);
521
- cgc.modules.delete(oldModule);
522
- cgc.modules.add(newModule);
523
- newCgm.chunks.add(chunk);
583
+ if (oldCgm.chunks !== undefined) {
584
+ for (const chunk of oldCgm.chunks) {
585
+ const cgc = this._getChunkGraphChunk(chunk);
586
+ cgc.modules.delete(oldModule);
587
+ cgc.modules.add(newModule);
588
+ ChunkGraph._addModuleChunk(newCgm, chunk);
589
+ }
590
+ oldCgm.chunks = undefined;
591
+ oldCgm.runtimes = undefined;
524
592
  }
525
- oldCgm.chunks.clear();
526
593
 
527
594
  if (oldCgm.entryInChunks !== undefined) {
528
595
  if (newCgm.entryInChunks === undefined) {
@@ -618,8 +685,8 @@ class ChunkGraph {
618
685
  * @returns {Iterable<Chunk>} iterable of chunks (do not modify)
619
686
  */
620
687
  getModuleChunksIterable(module) {
621
- const cgm = this._getChunkGraphModule(module);
622
- return cgm.chunks;
688
+ const { chunks } = this._getChunkGraphModule(module);
689
+ return chunks === undefined ? EMPTY_CHUNKS : chunks;
623
690
  }
624
691
 
625
692
  /**
@@ -629,9 +696,12 @@ class ChunkGraph {
629
696
  * @returns {Iterable<Chunk>} iterable of chunks (do not modify)
630
697
  */
631
698
  getOrderedModuleChunksIterable(module, sortFn) {
632
- const cgm = this._getChunkGraphModule(module);
633
- cgm.chunks.sortWith(sortFn);
634
- return cgm.chunks;
699
+ const { chunks } = this._getChunkGraphModule(module);
700
+ if (chunks === undefined) return EMPTY_CHUNKS;
701
+ // One chunk is in order whatever the comparer says.
702
+ if (!(chunks instanceof Set)) return chunks;
703
+ chunks.sortWith(sortFn);
704
+ return chunks;
635
705
  }
636
706
 
637
707
  /**
@@ -640,8 +710,13 @@ class ChunkGraph {
640
710
  * @returns {Chunk[]} array of chunks (cached, do not modify)
641
711
  */
642
712
  getModuleChunks(module) {
643
- const cgm = this._getChunkGraphModule(module);
644
- return cgm.chunks.getFromCache(getArray);
713
+ const { chunks } = this._getChunkGraphModule(module);
714
+ if (chunks === undefined) return /** @type {Chunk[]} */ (EMPTY_CHUNKS);
715
+ // The array a module in one chunk holds is already the answer, and frozen,
716
+ // as the type this returns cannot say.
717
+ return chunks instanceof Set
718
+ ? chunks.getFromCache(getArray)
719
+ : /** @type {Chunk[]} */ (chunks);
645
720
  }
646
721
 
647
722
  /**
@@ -650,8 +725,9 @@ class ChunkGraph {
650
725
  * @returns {number} the number of chunk which contain the module
651
726
  */
652
727
  getNumberOfModuleChunks(module) {
653
- const cgm = this._getChunkGraphModule(module);
654
- return cgm.chunks.size;
728
+ const { chunks } = this._getChunkGraphModule(module);
729
+ if (chunks === undefined) return 0;
730
+ return chunks instanceof Set ? chunks.size : chunks.length;
655
731
  }
656
732
 
657
733
  /**
@@ -661,7 +737,18 @@ class ChunkGraph {
661
737
  */
662
738
  getModuleRuntimes(module) {
663
739
  const cgm = this._getChunkGraphModule(module);
664
- return cgm.chunks.getFromUnorderedCache(getModuleRuntimes);
740
+ const { chunks } = cgm;
741
+ if (chunks instanceof Set) {
742
+ return chunks.getFromUnorderedCache(getModuleRuntimes);
743
+ }
744
+ // Kept on the record, which neither an array nor nothing can do: a build asks
745
+ // this of every module several times, and scope hoisting leaves most of them
746
+ // in no chunk at all.
747
+ if (cgm.runtimes === undefined) {
748
+ cgm.runtimes =
749
+ chunks === undefined ? new RuntimeSpecSet() : getModuleRuntimes(chunks);
750
+ }
751
+ return cgm.runtimes;
665
752
  }
666
753
 
667
754
  /**
@@ -720,6 +807,7 @@ class ChunkGraph {
720
807
  cgc.sourceTypesByModule = new WeakMap();
721
808
  }
722
809
  cgc.sourceTypesByModule.set(module, sourceTypes);
810
+ this._hasOverwrittenSourceTypes = true;
723
811
  // Update cgc._modulesBySourceType to invalidate the cache
724
812
  cgc._modulesBySourceType = modulesBySourceType(cgc.sourceTypesByModule);
725
813
  }
@@ -755,6 +843,7 @@ class ChunkGraph {
755
843
  * @returns {SourceTypes | undefined} source types
756
844
  */
757
845
  _getOverwrittenModuleSourceTypes(module) {
846
+ if (!this._hasOverwrittenSourceTypes) return;
758
847
  let newSet = false;
759
848
  /** @type {Set<SourceType> | undefined} */
760
849
  let sourceTypes;
@@ -846,6 +935,7 @@ class ChunkGraph {
846
935
  getChunkModuleIdMap(chunk, filterFn, includeAllChunks = false) {
847
936
  /** @type {ChunkModuleIdMap} */
848
937
  const chunkModuleIdMap = Object.create(null);
938
+ const comparator = compareModulesById(this);
849
939
 
850
940
  for (const asyncChunk of includeAllChunks
851
941
  ? chunk.getAllReferencedChunks()
@@ -854,7 +944,7 @@ class ChunkGraph {
854
944
  let array;
855
945
  for (const module of this.getOrderedChunkModulesIterable(
856
946
  asyncChunk,
857
- compareModulesById(this)
947
+ comparator
858
948
  )) {
859
949
  if (filterFn(module)) {
860
950
  if (array === undefined) {
@@ -886,6 +976,7 @@ class ChunkGraph {
886
976
  ) {
887
977
  /** @type {ChunkModuleHashMap} */
888
978
  const chunkModuleHashMap = Object.create(null);
979
+ const comparator = compareModulesById(this);
889
980
 
890
981
  for (const asyncChunk of includeAllChunks
891
982
  ? chunk.getAllReferencedChunks()
@@ -894,7 +985,7 @@ class ChunkGraph {
894
985
  let idToHashMap;
895
986
  for (const module of this.getOrderedChunkModulesIterable(
896
987
  asyncChunk,
897
- compareModulesById(this)
988
+ comparator
898
989
  )) {
899
990
  if (filterFn(module)) {
900
991
  if (idToHashMap === undefined) {
@@ -1350,7 +1441,7 @@ class ChunkGraph {
1350
1441
  /** @type {Chunks} */
1351
1442
  const set = new Set();
1352
1443
  for (const chunkGroup of chunk.groupsIterable) {
1353
- if (chunkGroup instanceof Entrypoint) {
1444
+ if (chunkGroup.isEntrypoint()) {
1354
1445
  const entrypointChunk = chunkGroup.getEntrypointChunk();
1355
1446
  const cgc = this._getChunkGraphChunk(entrypointChunk);
1356
1447
  for (const chunkGroup of cgc.entryModules.values()) {
@@ -1379,7 +1470,7 @@ class ChunkGraph {
1379
1470
  const entrypoints = new Set();
1380
1471
 
1381
1472
  for (const chunkGroup of chunk.groupsIterable) {
1382
- if (chunkGroup instanceof Entrypoint) {
1473
+ if (chunkGroup.isEntrypoint()) {
1383
1474
  if (entrypoints.has(chunkGroup)) continue;
1384
1475
  entrypoints.add(chunkGroup);
1385
1476
  // `entrypoints` doubles as the visited set: a diamond of `dependOn`
@@ -1389,7 +1480,7 @@ class ChunkGraph {
1389
1480
  const current = queue[i];
1390
1481
  let hasChildrenEntrypoint = false;
1391
1482
  for (const child of current.childrenIterable) {
1392
- if (child instanceof Entrypoint && child.dependOn(current)) {
1483
+ if (child.isEntrypoint() && child.dependOn(current)) {
1393
1484
  hasChildrenEntrypoint = true;
1394
1485
  if (!entrypoints.has(child)) {
1395
1486
  entrypoints.add(child);
@@ -1458,15 +1549,7 @@ class ChunkGraph {
1458
1549
  getChunkRuntimeModulesInOrder(chunk) {
1459
1550
  const cgc = this._getChunkGraphChunk(chunk);
1460
1551
  const array = [...cgc.runtimeModules];
1461
- array.sort(
1462
- concatComparators(
1463
- compareSelect(
1464
- (r) => /** @type {RuntimeModule} */ (r).stage,
1465
- compareIds
1466
- ),
1467
- compareModulesByIdentifier
1468
- )
1469
- );
1552
+ array.sort(compareRuntimeModulesByStage);
1470
1553
  return array;
1471
1554
  }
1472
1555
 
@@ -1860,6 +1943,22 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1860
1943
  const activeNamespaceModules = new Set();
1861
1944
  /** @type {Map<string, Module | Set<Module>>} */
1862
1945
  const connectedModules = new Map();
1946
+ // a dependency whose target is missing has no connection, so without
1947
+ // these it hashes like one whose target is inactive, while templates
1948
+ // print a missing-module throw only for the first
1949
+ /** @type {string[] | undefined} */
1950
+ let inactiveRequests;
1951
+ /**
1952
+ * Records an inactive connection by its request, as templates print nothing of its target.
1953
+ * @param {ModuleGraphConnection} connection inactive connection
1954
+ */
1955
+ const addInactive = (connection) => {
1956
+ // only connections without an origin module lack a dependency
1957
+ const dependency = /** @type {Dependency} */ (connection.dependency);
1958
+ (inactiveRequests || (inactiveRequests = [])).push(
1959
+ `${dependency.getResourceIdentifier()}`
1960
+ );
1961
+ };
1863
1962
  /**
1864
1963
  * Process connection.
1865
1964
  * @param {ModuleGraphConnection} connection connection
@@ -1885,37 +1984,49 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1885
1984
  if (runtime === undefined || typeof runtime === "string") {
1886
1985
  for (const connection of connections) {
1887
1986
  const state = connection.getActiveState(runtime);
1888
- if (state === false) continue;
1987
+ if (state === false) {
1988
+ addInactive(connection);
1989
+ continue;
1990
+ }
1889
1991
  processConnection(connection, state === true ? "T" : "O");
1890
1992
  }
1891
1993
  } else {
1892
1994
  // cspell:word Tnamespace
1995
+ // the runtime is sorted once, so every connection reads it in the same order
1996
+ runtime.sort();
1893
1997
  for (const connection of connections) {
1894
- /** @type {Set<ConnectionState>} */
1895
- const states = new Set();
1998
+ /** @type {ConnectionState | undefined} */
1999
+ let firstState;
2000
+ let sameState = true;
1896
2001
  let stateInfo = "";
1897
- forEachRuntime(
1898
- runtime,
1899
- (runtime) => {
1900
- const state = connection.getActiveState(runtime);
1901
- states.add(state);
1902
- stateInfo += activeStateToString(state) + runtime;
1903
- },
1904
- true
1905
- );
1906
- if (states.size === 1) {
1907
- const state = first(states);
1908
- if (state === false) continue;
2002
+ for (const runtimeName of runtime) {
2003
+ const state = connection.getActiveState(runtimeName);
2004
+ if (firstState === undefined) {
2005
+ firstState = state;
2006
+ } else if (state !== firstState) {
2007
+ sameState = false;
2008
+ }
2009
+ stateInfo += activeStateToString(state) + runtimeName;
2010
+ }
2011
+ if (sameState) {
2012
+ if (firstState === false) {
2013
+ addInactive(connection);
2014
+ continue;
2015
+ }
1909
2016
  stateInfo = activeStateToString(
1910
2017
  /** @type {ConnectionState} */
1911
- (state)
2018
+ (firstState)
1912
2019
  );
1913
2020
  }
1914
2021
  processConnection(connection, stateInfo);
1915
2022
  }
1916
2023
  }
1917
2024
  // cspell:word Tnamespace
1918
- if (activeNamespaceModules.size === 0 && connectedModules.size === 0) {
2025
+ if (
2026
+ activeNamespaceModules.size === 0 &&
2027
+ connectedModules.size === 0 &&
2028
+ inactiveRequests === undefined
2029
+ ) {
1919
2030
  return graphHash;
1920
2031
  }
1921
2032
  const connectedModulesInOrder =
@@ -1966,6 +2077,11 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1966
2077
  addModuleToHash(modules);
1967
2078
  }
1968
2079
  }
2080
+ if (inactiveRequests !== undefined) {
2081
+ // connections arrive as resolutions finish, so sort like connectedModules
2082
+ if (inactiveRequests.length > 1) inactiveRequests.sort();
2083
+ hash.update(JSON.stringify(inactiveRequests));
2084
+ }
1969
2085
  hash.update(graphHash);
1970
2086
  return hash.digest("hex");
1971
2087
  });
@@ -1981,7 +2097,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
1981
2097
  return cgc.runtimeRequirementsInTree;
1982
2098
  }
1983
2099
 
1984
- // TODO remove in webpack 6
2100
+ // TODO in the next major release: remove
1985
2101
  /**
1986
2102
  * Gets chunk graph for module.
1987
2103
  * @deprecated
@@ -2003,9 +2119,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
2003
2119
  const chunkGraph = chunkGraphForModuleMap.get(module);
2004
2120
  if (!chunkGraph) {
2005
2121
  throw new Error(
2006
- `${
2007
- deprecateMessage
2008
- }: There was no ChunkGraph assigned to the Module for backward-compat (Use the new API)`
2122
+ `${deprecateMessage}: There was no ChunkGraph assigned to the Module for backward-compat (Use the new API)`
2009
2123
  );
2010
2124
  }
2011
2125
  return chunkGraph;
@@ -2017,7 +2131,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
2017
2131
  return newFn(module);
2018
2132
  }
2019
2133
 
2020
- // TODO remove in webpack 6
2134
+ // TODO in the next major release: remove
2021
2135
  // BACKWARD-COMPAT START
2022
2136
  /**
2023
2137
  * Sets chunk graph for module.
@@ -2061,9 +2175,7 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
2061
2175
  const chunkGraph = chunkGraphForChunkMap.get(chunk);
2062
2176
  if (!chunkGraph) {
2063
2177
  throw new Error(
2064
- `${
2065
- deprecateMessage
2066
- }There was no ChunkGraph assigned to the Chunk for backward-compat (Use the new API)`
2178
+ `${deprecateMessage}There was no ChunkGraph assigned to the Chunk for backward-compat (Use the new API)`
2067
2179
  );
2068
2180
  }
2069
2181
  return chunkGraph;
@@ -2098,19 +2210,19 @@ Caller might not support runtime-dependent code generation (opt-out via optimiza
2098
2210
  // BACKWARD-COMPAT END
2099
2211
  }
2100
2212
 
2101
- // TODO remove in webpack 6
2213
+ // TODO in the next major release: remove
2102
2214
  /** @type {WeakMap<Module, ChunkGraph>} */
2103
2215
  const chunkGraphForModuleMap = new WeakMap();
2104
2216
 
2105
- // TODO remove in webpack 6
2217
+ // TODO in the next major release: remove
2106
2218
  /** @type {WeakMap<Chunk, ChunkGraph>} */
2107
2219
  const chunkGraphForChunkMap = new WeakMap();
2108
2220
 
2109
- // TODO remove in webpack 6
2221
+ // TODO in the next major release: remove
2110
2222
  /** @type {Map<string, (module: Module) => ChunkGraph>} */
2111
2223
  const deprecateGetChunkGraphForModuleMap = new Map();
2112
2224
 
2113
- // TODO remove in webpack 6
2225
+ // TODO in the next major release: remove
2114
2226
  /** @type {Map<string, (chunk: Chunk) => ChunkGraph>} */
2115
2227
  const deprecateGetChunkGraphForChunkMap = new Map();
2116
2228
 
@@ -6,19 +6,19 @@
6
6
  "use strict";
7
7
 
8
8
  const util = require("util");
9
- const SortableSet = require("./util/SortableSet");
9
+ const SortableSet = require("../util/SortableSet");
10
10
  const {
11
11
  compareChunks,
12
12
  compareIterables,
13
13
  compareLocations
14
- } = require("./util/comparators");
14
+ } = require("../util/comparators");
15
15
 
16
16
  /** @import AsyncDependenciesBlock from "./AsyncDependenciesBlock" */
17
17
  /** @import Chunk from "./Chunk" */
18
18
  /** @import ChunkGraph from "./ChunkGraph" */
19
19
  /** @import { DependencyLocation } from "./Dependency" */
20
20
  /** @import Entrypoint from "./Entrypoint" */
21
- /** @import Module from "./Module" */
21
+ /** @import Module from "../module/Module" */
22
22
  /** @import ModuleGraph from "./ModuleGraph" */
23
23
 
24
24
  /** @typedef {{ module: Module | null, loc: DependencyLocation, request: string }} OriginRecord */
@@ -299,6 +299,14 @@ class ChunkGroup {
299
299
  return false;
300
300
  }
301
301
 
302
+ /**
303
+ * Returns whether this chunk group is an entrypoint, an async one (e.g. a worker) included.
304
+ * @returns {this is Entrypoint} true for an entrypoint
305
+ */
306
+ isEntrypoint() {
307
+ return false;
308
+ }
309
+
302
310
  /**
303
311
  * Adds a child chunk group to the current group.
304
312
  * @param {ChunkGroup} group chunk group to add
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const makeSerializable = require("./util/makeSerializable");
8
+ const makeSerializable = require("../util/makeSerializable");
9
9
 
10
10
  /** @import AsyncDependenciesBlock from "./AsyncDependenciesBlock" */
11
11
  /** @import Dependency, { UpdateHashContext } from "./Dependency" */
@@ -13,9 +13,9 @@ const makeSerializable = require("./util/makeSerializable");
13
13
  * @import {
14
14
  * ObjectDeserializerContext,
15
15
  * ObjectSerializerContext
16
- * } from "./serialization/ObjectMiddleware"
16
+ * } from "../serialization/ObjectMiddleware"
17
17
  */
18
- /** @import Hash from "./util/Hash" */
18
+ /** @import Hash from "../util/Hash" */
19
19
 
20
20
  /** @typedef {(d: Dependency) => boolean} DependencyFilterFunction */
21
21
 
@@ -37,6 +37,14 @@ class DependenciesBlock {
37
37
  this.parent = undefined;
38
38
  }
39
39
 
40
+ /**
41
+ * Returns whether this block is an async block, loaded on demand in its own chunk group.
42
+ * @returns {this is AsyncDependenciesBlock} true for an AsyncDependenciesBlock
43
+ */
44
+ isAsyncBlock() {
45
+ return false;
46
+ }
47
+
40
48
  getRootBlock() {
41
49
  /** @type {DependenciesBlock} */
42
50
  let current = this;
@@ -123,6 +131,10 @@ class DependenciesBlock {
123
131
  }
124
132
  }
125
133
 
126
- makeSerializable(DependenciesBlock, "webpack/lib/DependenciesBlock");
134
+ makeSerializable(DependenciesBlock, [
135
+ "webpack/lib/graph/DependenciesBlock",
136
+ // TODO in the next major release: remove, they restore pre-move cache packs
137
+ "webpack/lib/DependenciesBlock"
138
+ ]);
127
139
 
128
140
  module.exports = DependenciesBlock;