webpack 5.111.0 → 5.112.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (781) hide show
  1. package/README.md +1 -1
  2. package/lib/Chunk.js +3 -966
  3. package/lib/Compilation.js +237 -138
  4. package/lib/Compiler.js +23 -24
  5. package/lib/Dependency.js +3 -551
  6. package/lib/DependencyTemplate.js +3 -69
  7. package/lib/EntryPlugin.js +3 -68
  8. package/lib/Entrypoint.js +3 -121
  9. package/lib/ExternalsPlugin.js +3 -92
  10. package/lib/FileSystemInfo.js +3 -4629
  11. package/lib/InitFragment.js +3 -204
  12. package/lib/LibraryTemplatePlugin.js +3 -46
  13. package/lib/ModuleFilenameHelpers.js +3 -400
  14. package/lib/ModuleNotFoundError.js +2 -2
  15. package/lib/MultiCompiler.js +43 -24
  16. package/lib/NormalModule.js +3 -2190
  17. package/lib/NullFactory.js +3 -22
  18. package/lib/ProgressPlugin.js +3 -908
  19. package/lib/RawModule.js +3 -197
  20. package/lib/RequestShortener.js +3 -37
  21. package/lib/SingleEntryPlugin.js +1 -1
  22. package/lib/WebpackError.js +2 -2
  23. package/lib/asset/AssetBytesGenerator.js +15 -9
  24. package/lib/asset/AssetBytesParser.js +3 -3
  25. package/lib/asset/AssetGenerator.js +61 -38
  26. package/lib/asset/AssetModule.js +2 -2
  27. package/lib/asset/AssetModulesPlugin.js +6 -9
  28. package/lib/asset/AssetParser.js +3 -3
  29. package/lib/asset/AssetSourceGenerator.js +15 -9
  30. package/lib/asset/AssetSourceParser.js +3 -3
  31. package/lib/asset/RawDataUrlModule.js +17 -10
  32. package/lib/asset/WebManifestGenerator.js +7 -7
  33. package/lib/asset/WebManifestParser.js +5 -5
  34. package/lib/async-modules/AsyncModuleHelpers.js +6 -5
  35. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
  36. package/lib/async-modules/InferAsyncModulesPlugin.js +4 -3
  37. package/lib/async-modules/isGeneratorLowered.js +3 -3
  38. package/lib/bun/BunTargetPlugin.js +1 -1
  39. package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
  40. package/lib/{Cache.js → cache/Cache.js} +1 -1
  41. package/lib/{CacheFacade.js → cache/CacheFacade.js} +5 -5
  42. package/lib/cache/IdleFileCachePlugin.js +2 -2
  43. package/lib/cache/MemoryCachePlugin.js +6 -6
  44. package/lib/cache/MemoryWithGcCachePlugin.js +9 -10
  45. package/lib/cache/PackFileCacheStrategy.js +11 -28
  46. package/lib/cache/ResolverCachePlugin.js +8 -4
  47. package/lib/cache/getLazyHashedEtag.js +3 -5
  48. package/lib/cache/mergeEtags.js +1 -1
  49. package/lib/{OptionsApply.js → config/OptionsApply.js} +3 -3
  50. package/lib/{PlatformPlugin.js → config/PlatformPlugin.js} +2 -2
  51. package/lib/{WebpackOptionsApply.js → config/WebpackOptionsApply.js} +217 -200
  52. package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
  53. package/lib/config/browserslistTargetHandler.js +3 -9
  54. package/lib/{cli.js → config/cli.js} +5 -158
  55. package/lib/config/defaults.js +192 -122
  56. package/lib/config/getClaimedAssetTypes.js +28 -21
  57. package/lib/config/normalization.js +18 -7
  58. package/lib/config/target.js +13 -4
  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/{ContextExclusionPlugin.js → context/ContextExclusionPlugin.js} +1 -1
  76. package/lib/{ContextModule.js → context/ContextModule.js} +50 -36
  77. package/lib/{ContextModuleFactory.js → context/ContextModuleFactory.js} +25 -24
  78. package/lib/{ContextReplacementPlugin.js → context/ContextReplacementPlugin.js} +4 -4
  79. package/lib/css/CssGenerator.js +57 -42
  80. package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
  81. package/lib/css/CssLoadingRuntimeModule.js +77 -44
  82. package/lib/css/CssModule.js +27 -29
  83. package/lib/css/CssModulesPlugin.js +128 -44
  84. package/lib/css/CssParser.js +700 -311
  85. package/lib/css/CssServerStylesRuntimeModule.js +3 -3
  86. package/lib/css/cssMinify.js +130 -54
  87. package/lib/css/data.js +7017 -4648
  88. package/lib/css/syntax-parser.js +19873 -0
  89. package/lib/css/syntax-printer.js +6037 -0
  90. package/lib/css/syntax.js +37 -17370
  91. package/lib/debug/ProfilingPlugin.js +55 -23
  92. package/lib/{DefinePlugin.js → define/DefinePlugin.js} +407 -41
  93. package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +25 -29
  94. package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +2 -2
  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 -10
  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} +10 -10
  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} +176 -44
  116. package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
  117. package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +138 -61
  118. package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
  119. package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +39 -35
  120. package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +13 -12
  121. package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +47 -35
  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} +19 -20
  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} +5 -5
  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} +34 -18
  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} +9 -9
  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} +4 -4
  149. package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +9 -9
  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} +12 -11
  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 -100
  164. package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +26 -22
  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} +26 -21
  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} +40 -41
  172. package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +22 -21
  173. package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
  174. package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +62 -93
  175. package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +83 -49
  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} +136 -122
  179. package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +68 -43
  180. package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +68 -65
  181. package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -4
  182. package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
  183. package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +74 -71
  184. package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +199 -97
  185. package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +26 -29
  186. package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +86 -43
  187. package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +110 -61
  188. package/lib/dependencies/esm/ESMModulesPlugin.js +207 -0
  189. package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
  190. package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -11
  191. package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +2 -2
  192. package/lib/{util → dependencies/helpers}/chainedImports.js +8 -9
  193. package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
  194. package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
  195. package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
  196. package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
  197. package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
  198. package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
  199. package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +125 -243
  200. package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -12
  201. package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +72 -23
  202. package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +53 -19
  203. package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
  204. package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
  205. package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
  206. package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
  207. package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +20 -20
  208. package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
  209. package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
  210. package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
  211. package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
  212. package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
  213. package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +126 -107
  214. package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
  215. package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
  216. package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
  217. package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
  218. package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +34 -25
  219. package/lib/{url → dependencies/url}/URLParserPlugin.js +22 -26
  220. package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
  221. package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
  222. package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
  223. package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
  224. package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +46 -54
  225. package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +28 -20
  226. package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +25 -27
  227. package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
  228. package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
  229. package/lib/devtool/ModuleFilenameHelpers.js +413 -0
  230. package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
  231. package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +207 -129
  232. package/lib/{util → devtool}/generateDebugId.js +1 -1
  233. package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
  234. package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
  235. package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
  236. package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
  237. package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
  238. package/lib/dll/DelegatedModule.js +20 -18
  239. package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
  240. package/lib/dll/DelegatedPlugin.js +1 -1
  241. package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
  242. package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
  243. package/lib/dll/DllEntryPlugin.js +3 -3
  244. package/lib/dll/DllModule.js +11 -9
  245. package/lib/dll/DllModuleFactory.js +3 -3
  246. package/lib/dll/DllPlugin.js +18 -6
  247. package/lib/dll/DllReferencePlugin.js +102 -26
  248. package/lib/dll/LibManifestPlugin.js +9 -7
  249. package/lib/electron/ElectronTargetPlugin.js +2 -2
  250. package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
  251. package/lib/{dependencies → entry}/EntryDependency.js +11 -2
  252. package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
  253. package/lib/entry/EntryPlugin.js +75 -0
  254. package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
  255. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  256. package/lib/errors/BuildCycleError.js +1 -1
  257. package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
  258. package/lib/errors/ChunkRenderError.js +1 -1
  259. package/lib/errors/CodeGenerationError.js +1 -1
  260. package/lib/errors/CommentCompilationWarning.js +1 -1
  261. package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
  262. package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
  263. package/lib/errors/DeprecatedOptionWarning.js +30 -0
  264. package/lib/errors/DllManifestError.js +26 -0
  265. package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
  266. package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
  267. package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
  268. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  269. package/lib/errors/ErrorHelpers.js +222 -0
  270. package/lib/errors/ExternalStarReexportError.js +2 -2
  271. package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
  272. package/lib/errors/HookWebpackError.js +6 -5
  273. package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
  274. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  275. package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
  276. package/lib/errors/ModuleBuildError.js +1 -1
  277. package/lib/errors/ModuleDependencyError.js +2 -2
  278. package/lib/errors/ModuleDependencyWarning.js +2 -2
  279. package/lib/errors/ModuleError.js +1 -1
  280. package/lib/errors/ModuleHashingError.js +1 -1
  281. package/lib/errors/ModuleNotFoundError.js +3 -3
  282. package/lib/errors/ModuleParseError.js +1 -1
  283. package/lib/errors/ModuleRestoreError.js +1 -1
  284. package/lib/errors/ModuleStoreError.js +1 -1
  285. package/lib/errors/ModuleWarning.js +1 -1
  286. package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
  287. package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
  288. package/lib/errors/NodeStuffInWebError.js +7 -2
  289. package/lib/errors/PathVariableError.js +31 -0
  290. package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
  291. package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
  292. package/lib/errors/RuntimeModuleGenerationError.js +51 -0
  293. package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
  294. package/lib/errors/SystemImportDeprecationWarning.js +43 -0
  295. package/lib/errors/UnmergeableEntryExportsError.js +34 -0
  296. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  297. package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
  298. package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
  299. package/lib/errors/WebpackError.js +12 -3
  300. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
  301. package/lib/esm/ModuleChunkFormatPlugin.js +19 -19
  302. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
  303. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
  304. package/lib/{ExternalModule.js → externals/ExternalModule.js} +85 -63
  305. package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +41 -39
  306. package/lib/externals/ExternalsPlugin.js +99 -0
  307. package/lib/fs/FileSystemInfo.js +4642 -0
  308. package/lib/{util → fs}/fs.js +22 -9
  309. package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
  310. package/lib/graph/Chunk.js +985 -0
  311. package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +187 -80
  312. package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
  313. package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
  314. package/lib/graph/Dependency.js +628 -0
  315. package/lib/graph/Entrypoint.js +136 -0
  316. package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +151 -99
  317. package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
  318. package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +36 -39
  319. package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
  320. package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +163 -72
  321. package/lib/{util → graph}/findGraphRoots.js +20 -21
  322. package/lib/graph/isDependencyKind.js +23 -0
  323. package/lib/hmr/HotModuleReplacement.runtime.js +2 -2
  324. package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +49 -47
  325. package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
  326. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +10 -8
  327. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
  328. package/lib/hmr/LazyCompilationPlugin.js +34 -26
  329. package/lib/html/HtmlGenerator.js +168 -125
  330. package/lib/html/HtmlModule.js +6 -2
  331. package/lib/html/HtmlModulesPlugin.js +260 -215
  332. package/lib/html/HtmlParser.js +598 -292
  333. package/lib/html/builtinEmbeddedRenderer.js +60 -13
  334. package/lib/html/data.js +23 -1
  335. package/lib/html/htmlMinify.js +120 -51
  336. package/lib/html/syntax-parser.js +15796 -0
  337. package/lib/html/syntax-printer.js +1034 -0
  338. package/lib/html/syntax.js +37 -14062
  339. package/lib/html/xmlMinify.js +67 -0
  340. package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
  341. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  342. package/lib/ids/HashedModuleIdsPlugin.js +31 -4
  343. package/lib/ids/IdHelpers.js +4 -4
  344. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  345. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
  346. package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
  347. package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
  348. package/lib/ids/SyncModuleIdsPlugin.js +3 -3
  349. package/lib/{util → ids}/numberHash.js +1 -1
  350. package/lib/index.js +348 -99
  351. package/lib/{APIPlugin.js → javascript/APIPlugin.js} +29 -30
  352. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
  353. package/lib/javascript/BasicEvaluatedExpression.js +4 -4
  354. package/lib/javascript/ChunkHelpers.js +64 -4
  355. package/lib/javascript/CommonJsChunkFormatPlugin.js +4 -7
  356. package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +10 -11
  357. package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +90 -139
  358. package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
  359. package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
  360. package/lib/javascript/JavascriptGenerator.js +25 -18
  361. package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +7 -7
  362. package/lib/javascript/JavascriptModule.js +4 -3
  363. package/lib/javascript/JavascriptModulesPlugin.js +458 -256
  364. package/lib/javascript/JavascriptParser.js +916 -287
  365. package/lib/javascript/JavascriptParserHelpers.js +1 -1
  366. package/lib/javascript/MergedEntryExports.js +196 -0
  367. package/lib/javascript/ScopeAnalyzer.js +3840 -5
  368. package/lib/javascript/StartupHelpers.js +6 -6
  369. package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +12 -15
  370. package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
  371. package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
  372. package/lib/javascript/data.js +533 -122
  373. package/lib/javascript/jsMinify.js +272 -0
  374. package/lib/javascript/regexp.js +67 -32
  375. package/lib/javascript/syntax-parser.js +18561 -0
  376. package/lib/javascript/syntax-printer-data.js +933 -0
  377. package/lib/javascript/syntax-printer.js +47106 -0
  378. package/lib/javascript/syntax.js +20 -10946
  379. package/lib/json/JsonData.js +1 -1
  380. package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
  381. package/lib/json/JsonGenerator.js +17 -11
  382. package/lib/json/JsonModule.js +2 -2
  383. package/lib/json/JsonModulesPlugin.js +1 -1
  384. package/lib/json/JsonParser.js +5 -5
  385. package/lib/json/jsonMinify.js +69 -0
  386. package/lib/library/AbstractLibraryPlugin.js +28 -15
  387. package/lib/library/AmdLibraryPlugin.js +4 -4
  388. package/lib/library/AssignLibraryPlugin.js +27 -11
  389. package/lib/library/EnableLibraryPlugin.js +1 -1
  390. package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
  391. package/lib/library/JsonpLibraryPlugin.js +1 -1
  392. package/lib/library/LibraryTemplatePlugin.js +53 -0
  393. package/lib/library/ModuleLibraryPlugin.js +207 -285
  394. package/lib/library/SystemLibraryPlugin.js +6 -8
  395. package/lib/library/UmdLibraryPlugin.js +3 -4
  396. package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
  397. package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
  398. package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
  399. package/lib/{dependencies → loaders}/LoaderPlugin.js +27 -2
  400. package/lib/loaders/LoaderRunner.js +160 -22
  401. package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
  402. package/lib/logging/Logger.js +7 -9
  403. package/lib/logging/ProgressPlugin.js +957 -0
  404. package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
  405. package/lib/{Generator.js → module/Generator.js} +38 -14
  406. package/lib/{Module.js → module/Module.js} +122 -54
  407. package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
  408. package/lib/module/NormalModule.js +2348 -0
  409. package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +53 -54
  410. package/lib/module/NullFactory.js +29 -0
  411. package/lib/{Parser.js → module/Parser.js} +3 -3
  412. package/lib/module/RawModule.js +208 -0
  413. package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
  414. package/lib/{util → module}/extractSourceMap.js +2 -2
  415. package/lib/{util → module}/findCaseMismatch.js +2 -2
  416. package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
  417. package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
  418. package/lib/{dependencies → node}/ExternalModuleInitFragment.js +6 -5
  419. package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
  420. package/lib/node/NodeEnvironmentPlugin.js +11 -1
  421. package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
  422. package/lib/node/NodeTargetPlugin.js +1 -1
  423. package/lib/node/NodeWatchFileSystem.js +61 -15
  424. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
  425. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +9 -7
  426. package/lib/node/ReadFileCompileWasmPlugin.js +7 -5
  427. package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
  428. package/lib/node/nodeConsole.js +2 -4
  429. package/lib/optimize/AggressiveMergingPlugin.js +5 -7
  430. package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
  431. package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +13 -13
  432. package/lib/optimize/ConcatenatedModule.js +305 -309
  433. package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
  434. package/lib/optimize/ConstExportsPlugin.js +7 -7
  435. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  436. package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
  437. package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +25 -30
  438. package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +26 -30
  439. package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
  440. package/lib/optimize/FlagIncludedChunksPlugin.js +5 -13
  441. package/lib/optimize/InlineExports.js +11 -3
  442. package/lib/optimize/InnerGraph.js +5 -13
  443. package/lib/optimize/InnerGraphPlugin.js +17 -23
  444. package/lib/optimize/LazyBarrels.js +584 -0
  445. package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
  446. package/lib/optimize/LimitChunkCountPlugin.js +21 -15
  447. package/lib/optimize/MangleExportsPlugin.js +8 -9
  448. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
  449. package/lib/optimize/MinChunkSizePlugin.js +9 -6
  450. package/lib/optimize/ModuleConcatenationPlugin.js +23 -16
  451. package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
  452. package/lib/optimize/RealContentHashPlugin.js +16 -7
  453. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  454. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  455. package/lib/optimize/SideEffectsFlagPlugin.js +25 -37
  456. package/lib/optimize/SplitChunksPlugin.js +715 -159
  457. package/lib/{util → optimize}/TupleQueue.js +9 -9
  458. package/lib/optimize/chunkSetIntersections.js +437 -0
  459. package/lib/{util → optimize}/deterministicGrouping.js +25 -30
  460. package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
  461. package/lib/{CleanPlugin.js → output/CleanPlugin.js} +66 -24
  462. package/lib/{CopyPlugin.js → output/CopyPlugin.js} +142 -67
  463. package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
  464. package/lib/output/SSRManifestPlugin.js +349 -0
  465. package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
  466. package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
  467. package/lib/performance/BroadContextsPlugin.js +4 -4
  468. package/lib/performance/CacheEffectivenessPlugin.js +5 -7
  469. package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
  470. package/lib/performance/DuplicateModulesPlugin.js +3 -4
  471. package/lib/performance/DuplicatePackagesPlugin.js +3 -3
  472. package/lib/performance/DynamicExportsPlugin.js +2 -2
  473. package/lib/performance/EvalUsagePlugin.js +3 -3
  474. package/lib/performance/HotspotsPlugin.js +11 -10
  475. package/lib/performance/LargeModulesPlugin.js +2 -3
  476. package/lib/performance/LegacyJavascriptPlugin.js +1 -2
  477. package/lib/performance/MissingSideEffectsPlugin.js +2 -3
  478. package/lib/performance/MissingSourceMapsPlugin.js +5 -6
  479. package/lib/performance/PureAnnotationsPlugin.js +3 -3
  480. package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
  481. package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
  482. package/lib/performance/SizeLimitsPlugin.js +13 -16
  483. package/lib/performance/TopLevelThisPlugin.js +8 -7
  484. package/lib/performance/UnsplitVendorsPlugin.js +1 -2
  485. package/lib/performance/UnusedAliasesPlugin.js +6 -7
  486. package/lib/performance/UnusedAssetsPlugin.js +5 -5
  487. package/lib/performance/UnusedDefinesPlugin.js +2 -2
  488. package/lib/performance/UnusedExternalsPlugin.js +3 -4
  489. package/lib/performance/UnusedFederationPlugin.js +2 -4
  490. package/lib/performance/UnusedModulesPlugin.js +5 -4
  491. package/lib/performance/getModuleSize.js +1 -1
  492. package/lib/performance/hasOnlyUnusedExports.js +4 -4
  493. package/lib/performance/isOnlyReexported.js +7 -6
  494. package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
  495. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
  496. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +7 -9
  497. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
  498. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
  499. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
  500. package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
  501. package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
  502. package/lib/prefetch/ResourceHintPlugin.js +82 -65
  503. package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
  504. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -13
  505. package/lib/prefetch/parseResourceHintOptions.js +4 -3
  506. package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
  507. package/lib/{dependencies → provide}/ProvidedDependency.js +14 -13
  508. package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
  509. package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
  510. package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
  511. package/lib/resolve/getResolveOptionsKey.js +59 -0
  512. package/lib/rules/RuleSetCompiler.js +27 -46
  513. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
  514. package/lib/runtime/AsyncModuleRuntimeModule.js +10 -9
  515. package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
  516. package/lib/runtime/BaseUriRuntimeModule.js +3 -3
  517. package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
  518. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
  519. package/lib/runtime/CompatRuntimeModule.js +4 -4
  520. package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
  521. package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
  522. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  523. package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
  524. package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
  525. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
  526. package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
  527. package/lib/runtime/GetChunkFilenameRuntimeModule.js +9 -10
  528. package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
  529. package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
  530. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
  531. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
  532. package/lib/runtime/GlobalRuntimeModule.js +5 -7
  533. package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
  534. package/lib/runtime/HelperRuntimeModule.js +16 -1
  535. package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
  536. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +135 -102
  537. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
  538. package/lib/runtime/NonceRuntimeModule.js +2 -2
  539. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
  540. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  541. package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
  542. package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +18 -1
  543. package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
  544. package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
  545. package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +48 -50
  546. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
  547. package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
  548. package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
  549. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
  550. package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
  551. package/lib/runtime/SystemContextRuntimeModule.js +2 -2
  552. package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
  553. package/lib/runtime/WorkerRuntimeModule.js +1 -1
  554. package/lib/runtime/baseUri.js +1 -1
  555. package/lib/schemes/DataUriPlugin.js +4 -7
  556. package/lib/schemes/HttpUriPlugin.js +67 -11
  557. package/lib/schemes/VirtualUrlPlugin.js +50 -16
  558. package/lib/serialization/AggregateErrorSerializer.js +2 -2
  559. package/lib/serialization/BinaryMiddleware.js +9 -9
  560. package/lib/serialization/FileMiddleware.js +19 -19
  561. package/lib/serialization/ObjectMiddleware.js +77 -49
  562. package/lib/serialization/SerializerMiddleware.js +2 -2
  563. package/lib/serialization/SingleItemMiddleware.js +4 -2
  564. package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
  565. package/lib/sharing/ConsumeSharedModule.js +18 -14
  566. package/lib/sharing/ConsumeSharedPlugin.js +148 -42
  567. package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
  568. package/lib/sharing/ProvideForSharedDependency.js +9 -1
  569. package/lib/sharing/ProvideSharedDependency.js +1 -1
  570. package/lib/sharing/ProvideSharedModule.js +11 -9
  571. package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
  572. package/lib/sharing/ProvideSharedPlugin.js +111 -20
  573. package/lib/sharing/SharePlugin.js +102 -9
  574. package/lib/sharing/ShareRuntimeModule.js +6 -6
  575. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  576. package/lib/{util → sharing}/semver.js +19 -19
  577. package/lib/sharing/utils.js +59 -2
  578. package/lib/stats/DefaultStatsFactoryPlugin.js +25 -23
  579. package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
  580. package/lib/stats/DefaultStatsPrinterPlugin.js +3 -3
  581. package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
  582. package/lib/{Stats.js → stats/Stats.js} +4 -4
  583. package/lib/stats/StatsFactory.js +14 -13
  584. package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
  585. package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
  586. package/lib/template/DependencyTemplate.js +77 -0
  587. package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
  588. package/lib/template/InitFragment.js +223 -0
  589. package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
  590. package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
  591. package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
  592. package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +178 -106
  593. package/lib/{Template.js → template/Template.js} +13 -11
  594. package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +35 -82
  595. package/lib/typescript/TypeScriptPlugin.js +5 -6
  596. package/lib/util/LocConverter.js +4 -7
  597. package/lib/util/RequestShortener.js +44 -0
  598. package/lib/util/SortableSet.js +87 -22
  599. package/lib/util/SourceProcessor.js +364 -66
  600. package/lib/util/TupleSet.js +27 -27
  601. package/lib/util/WeakTupleMap.js +10 -12
  602. package/lib/util/buildDiagnostics.js +2 -2
  603. package/lib/util/comparators.js +10 -10
  604. package/lib/util/concatenate.js +32 -151
  605. package/lib/util/createHooksRegistry.js +1 -2
  606. package/lib/util/createMappings.js +111 -0
  607. package/lib/util/dataURL.js +96 -18
  608. package/lib/util/deprecation.js +1 -1
  609. package/lib/util/extractComments.js +118 -0
  610. package/lib/util/formatLocation.js +1 -1
  611. package/lib/util/globUtils.js +197 -16
  612. package/lib/util/haltVisitors.js +51 -0
  613. package/lib/util/handlerKeys.js +2 -2
  614. package/lib/util/hash/wasm-hash.js +3 -4
  615. package/lib/util/identifier.js +117 -1
  616. package/lib/util/implicitTypeLoaderFallback.js +6 -4
  617. package/lib/util/internalSerializables.js +295 -103
  618. package/lib/util/magicComment.js +12 -7
  619. package/lib/util/makeSerializable.js +23 -4
  620. package/lib/util/parseJson.js +1 -1
  621. package/lib/util/preloadModuleType.js +5 -2
  622. package/lib/util/registerExternalSerializer.js +2 -2
  623. package/lib/util/removeBOM.js +1 -1
  624. package/lib/util/runtime.js +1 -1
  625. package/lib/util/serialization.js +4 -1
  626. package/lib/util/source.js +2 -2
  627. package/lib/util/terminalColors.js +161 -0
  628. package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
  629. package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
  630. package/lib/{wasm-async → wasm}/AsyncWasmModule.js +9 -5
  631. package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +11 -6
  632. package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +16 -11
  633. package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
  634. package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +8 -8
  635. package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
  636. package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +9 -7
  637. package/lib/wasm/wasmModuleFilename.js +2 -2
  638. package/lib/wasm-sync/SyncWasmModule.js +3 -3
  639. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +11 -12
  640. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
  641. package/lib/wasm-sync/WebAssemblyGenerator.js +15 -9
  642. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +19 -16
  643. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
  644. package/lib/wasm-sync/WebAssemblyParser.js +6 -6
  645. package/lib/wasm-sync/WebAssemblyUtils.js +8 -9
  646. package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
  647. package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
  648. package/lib/{Watching.js → watch/Watching.js} +8 -8
  649. package/lib/web/FetchCompileAsyncWasmPlugin.js +8 -6
  650. package/lib/web/FetchCompileWasmPlugin.js +6 -4
  651. package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
  652. package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
  653. package/lib/web/JsonpTemplatePlugin.js +1 -1
  654. package/lib/webpack.js +27 -17
  655. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
  656. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
  657. package/package.json +70 -40
  658. package/schemas/WebpackOptions.check.js +2 -1
  659. package/schemas/WebpackOptions.d.json.ts +2 -0
  660. package/schemas/WebpackOptions.json +294 -74
  661. package/schemas/plugins/BannerPlugin.check.js +2 -1
  662. package/schemas/plugins/BannerPlugin.json +29 -2
  663. package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -0
  664. package/schemas/plugins/HtmlParserOptions.check.js +2 -1
  665. package/schemas/plugins/IgnorePlugin.check.js +1 -0
  666. package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
  667. package/schemas/plugins/IgnorePlugin.json +1 -1
  668. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -0
  669. package/schemas/plugins/ManifestPlugin.check.js +1 -0
  670. package/schemas/plugins/ManifestPlugin.json +3 -3
  671. package/schemas/plugins/ProgressPlugin.check.js +2 -1
  672. package/schemas/plugins/ProgressPlugin.json +2 -7
  673. package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
  674. package/schemas/plugins/SSRManifestPlugin.json +20 -0
  675. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -1
  676. package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
  677. package/schemas/plugins/WatchIgnorePlugin.check.js +2 -1
  678. package/schemas/plugins/WatchIgnorePlugin.json +12 -3
  679. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -0
  680. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -0
  681. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -0
  682. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -0
  683. package/schemas/plugins/container/ContainerPlugin.check.js +2 -1
  684. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  685. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -0
  686. package/schemas/plugins/container/ExternalsType.check.js +1 -0
  687. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -1
  688. package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
  689. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -0
  690. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -0
  691. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -0
  692. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -0
  693. package/schemas/plugins/css/CssParserOptions.check.js +1 -0
  694. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -0
  695. package/schemas/plugins/dll/DllPlugin.check.js +1 -0
  696. package/schemas/plugins/dll/DllReferencePlugin.check.js +2 -1
  697. package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
  698. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -0
  699. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -0
  700. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -0
  701. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +1 -0
  702. package/schemas/plugins/json/JsonModulesPluginParser.check.js +1 -0
  703. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -0
  704. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -0
  705. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -0
  706. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -0
  707. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -0
  708. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +1 -0
  709. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +2 -1
  710. package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
  711. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +2 -1
  712. package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
  713. package/schemas/plugins/sharing/SharePlugin.check.js +2 -1
  714. package/schemas/plugins/sharing/SharePlugin.json +32 -0
  715. package/types.d.ts +13915 -8414
  716. package/lib/ErrorHelpers.js +0 -107
  717. package/lib/LazyBarrel.js +0 -388
  718. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
  719. package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
  720. package/lib/javascript/ChunkFormatHelpers.js +0 -71
  721. package/lib/javascript/grammar.js +0 -5546
  722. package/lib/javascript/parser.js +0 -1494
  723. package/lib/javascript/regexpData.js +0 -51
  724. package/lib/performance/getSourceModules.js +0 -22
  725. package/lib/util/Semaphore.js +0 -65
  726. package/lib/util/objectToMap.js +0 -15
  727. package/schemas/WebpackOptions.check.d.ts +0 -7
  728. package/schemas/_container.json +0 -155
  729. package/schemas/_sharing.json +0 -118
  730. package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
  731. package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
  732. package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
  733. package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
  734. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
  735. package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
  736. package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
  737. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
  738. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
  739. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
  740. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
  741. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
  742. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
  743. package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
  744. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
  745. package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
  746. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
  747. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
  748. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
  749. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
  750. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
  751. package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
  752. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
  753. package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
  754. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
  755. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
  756. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
  757. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
  758. package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
  759. package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
  760. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
  761. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
  762. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
  763. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
  764. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
  765. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
  766. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
  767. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
  768. package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
  769. /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
  770. /package/lib/{util → css}/conventions.js +0 -0
  771. /package/lib/{util → css}/topologicalSort.js +0 -0
  772. /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
  773. /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
  774. /package/lib/{util → fs}/StackedCacheMap.js +0 -0
  775. /package/lib/{util → javascript}/StackedMap.js +0 -0
  776. /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
  777. /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
  778. /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
  779. /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
  780. /package/lib/{util → optimize}/Queue.js +0 -0
  781. /package/lib/{util → stats}/smartGrouping.js +0 -0
@@ -6,29 +6,29 @@
6
6
  "use strict";
7
7
 
8
8
  const util = require("util");
9
+ const { ImportPhaseUtils } = require("../dependencies/core/ImportPhase");
10
+ const SortableSet = require("../util/SortableSet");
11
+ const WeakTupleMap = require("../util/WeakTupleMap");
12
+ const { sortWithSourceOrder } = require("../util/comparators");
9
13
  const ExportsInfo = require("./ExportsInfo");
10
14
  const ModuleGraphConnection = require("./ModuleGraphConnection");
11
- const HarmonyImportDependency = require("./dependencies/HarmonyImportDependency");
12
- const { ImportPhaseUtils } = require("./dependencies/ImportPhase");
13
- const SortableSet = require("./util/SortableSet");
14
- const WeakTupleMap = require("./util/WeakTupleMap");
15
- const { sortWithSourceOrder } = require("./util/comparators");
15
+ const isDependencyKind = require("./isDependencyKind");
16
16
 
17
- /** @import { ModuleMemCaches } from "./Compilation" */
17
+ /** @import { ModuleMemCaches } from "../Compilation" */
18
18
  /** @import DependenciesBlock from "./DependenciesBlock" */
19
19
  /** @import Dependency, { ExportInfoName } from "./Dependency" */
20
20
  /** @import { ExportInfo } from "./ExportsInfo" */
21
- /** @import Module from "./Module" */
22
- /** @import ModuleProfile from "./ModuleProfile" */
23
- /** @import RequestShortener from "./RequestShortener" */
24
- /** @import { RuntimeSpec } from "./util/runtime" */
25
- /** @import HarmonyImportSideEffectDependency from "./dependencies/HarmonyImportSideEffectDependency" */
21
+ /** @import Module from "../module/Module" */
22
+ /** @import ModuleProfile from "../module/ModuleProfile" */
23
+ /** @import RequestShortener from "../util/RequestShortener" */
24
+ /** @import { RuntimeSpec } from "../util/runtime" */
25
+ /** @import ESMImportSideEffectDependency from "../dependencies/esm/ESMImportSideEffectDependency" */
26
26
  /**
27
- * @import HarmonyImportSpecifierDependency, {
28
- * idsSymbol as HarmonyImportSpecifierDependencyIDsSymbol
29
- * } from "./dependencies/HarmonyImportSpecifierDependency"
27
+ * @import ESMImportSpecifierDependency, {
28
+ * idsSymbol as ESMImportSpecifierDependencyIDsSymbol
29
+ * } from "../dependencies/esm/ESMImportSpecifierDependency"
30
30
  */
31
- /** @import { DependencySourceOrder } from "./util/comparators" */
31
+ /** @import { DependencySourceOrder } from "../util/comparators" */
32
32
 
33
33
  /**
34
34
  * Defines the optimization bailout function callback.
@@ -130,12 +130,12 @@ class ModuleGraphModule {
130
130
  /**
131
131
  * @import {
132
132
  * idsSymbol as CommonJsExportRequireDependencyIDsSymbol
133
- * } from "./dependencies/CommonJsExportRequireDependency"
133
+ * } from "../dependencies/commonjs/CommonJsExportRequireDependency"
134
134
  */
135
135
  /**
136
136
  * @import {
137
- * idsSymbol as HarmonyExportImportedSpecifierDependencyIDsSymbol
138
- * } from "./dependencies/HarmonyExportImportedSpecifierDependency"
137
+ * idsSymbol as ESMExportImportedSpecifierDependencyIDsSymbol
138
+ * } from "../dependencies/esm/ESMExportImportedSpecifierDependency"
139
139
  */
140
140
 
141
141
  /**
@@ -143,9 +143,10 @@ class ModuleGraphModule {
143
143
  * @typedef {object} KnownMeta
144
144
  * @property {Map<Module, string>=} importVarMap
145
145
  * @property {Map<Module, string>=} deferredImportVarMap
146
+ * @property {boolean=} onDemandExports generate export definitions on demand
146
147
  */
147
148
 
148
- /** @typedef {KnownMeta & Record<CommonJsExportRequireDependencyIDsSymbol | HarmonyImportSpecifierDependencyIDsSymbol | HarmonyExportImportedSpecifierDependencyIDsSymbol, string[]> & Record<string, EXPECTED_ANY>} Meta */
149
+ /** @typedef {KnownMeta & Record<CommonJsExportRequireDependencyIDsSymbol | ESMImportSpecifierDependencyIDsSymbol | ESMExportImportedSpecifierDependencyIDsSymbol, string[]> & Record<string, EXPECTED_ANY>} Meta */
149
150
 
150
151
  class ModuleGraph {
151
152
  constructor() {
@@ -342,29 +343,25 @@ class ModuleGraph {
342
343
  }
343
344
  const originDependency = connection.dependency;
344
345
 
345
- // src/index.js
346
- // import { c } from "lib/c" -> c = 0
347
- // import { a, b } from "lib" -> a and b have the same source order -> a = b = 1
348
- // import { d } from "lib/d" -> d = 2
346
+ // Specifiers of one import statement share its source order, so `a` and `b`
347
+ // of `import { a, b } from "lib"` both take the statement's index.
349
348
  const currentSourceOrder =
350
- /** @type {HarmonyImportSideEffectDependency | HarmonyImportSpecifierDependency} */
349
+ /** @type {ESMImportSideEffectDependency | ESMImportSpecifierDependency} */
351
350
  (dependency).sourceOrder;
352
351
 
353
352
  // lib/index.js (reexport)
354
353
  // import { a } from "lib/a" -> a = 0
355
354
  // import { b } from "lib/b" -> b = 1
356
355
  const originSourceOrder =
357
- /** @type {HarmonyImportSideEffectDependency | HarmonyImportSpecifierDependency} */
356
+ /** @type {ESMImportSideEffectDependency | ESMImportSpecifierDependency} */
358
357
  (originDependency).sourceOrder;
359
358
  if (
360
359
  typeof currentSourceOrder === "number" &&
361
360
  typeof originSourceOrder === "number"
362
361
  ) {
363
- // src/index.js
364
- // import { c } from "lib/c" -> c = 0
365
- // import { a } from "lib/a" -> a = 1.0 = 1(main) + 0.0(sub)
366
- // import { b } from "lib/b" -> b = 1.1 = 1(main) + 0.1(sub)
367
- // import { d } from "lib/d" -> d = 2
362
+ // A re-exported specifier keeps the importing statement's order as `main`
363
+ // and its own position as `sub`, so the pair orders it within that
364
+ // statement without disturbing the statements around it.
368
365
  this._dependencySourceOrderMap.set(dependency, {
369
366
  main: currentSourceOrder,
370
367
  sub: originSourceOrder
@@ -384,7 +381,7 @@ class ModuleGraph {
384
381
  return;
385
382
  }
386
383
  for (const mod of this._modulesNeedingSort) {
387
- // If dependencies like HarmonyImportSideEffectDependency and HarmonyImportSpecifierDependency have a SourceOrder,
384
+ // If dependencies like ESMImportSideEffectDependency and ESMImportSpecifierDependency have a SourceOrder,
388
385
  // we sort based on it; otherwise, we preserve the original order.
389
386
  sortWithSourceOrder(
390
387
  mod.dependencies,
@@ -464,7 +461,7 @@ class ModuleGraph {
464
461
  connection
465
462
  );
466
463
  }
467
- pending.length = 0;
464
+ mgm._unassignedConnections = undefined;
468
465
  }
469
466
 
470
467
  /**
@@ -742,7 +739,7 @@ class ModuleGraph {
742
739
  foundConnection = connection;
743
740
  }
744
741
  }
745
- mgm._unassignedConnections.length = 0;
742
+ mgm._unassignedConnections = undefined;
746
743
  if (foundConnection !== undefined) {
747
744
  return foundConnection;
748
745
  }
@@ -1090,7 +1087,7 @@ class ModuleGraph {
1090
1087
  for (const connection of connections) {
1091
1088
  if (
1092
1089
  !connection.dependency ||
1093
- !(connection.dependency instanceof HarmonyImportDependency)
1090
+ !isDependencyKind(connection.dependency, "esm-import")
1094
1091
  ) {
1095
1092
  continue;
1096
1093
  }
@@ -1197,7 +1194,7 @@ class ModuleGraph {
1197
1194
  );
1198
1195
  }
1199
1196
 
1200
- // TODO remove in webpack 6
1197
+ // TODO in the next major release: remove
1201
1198
  /**
1202
1199
  * Gets module graph for module.
1203
1200
  * @deprecated
@@ -1231,7 +1228,7 @@ class ModuleGraph {
1231
1228
  return newFn(module);
1232
1229
  }
1233
1230
 
1234
- // TODO remove in webpack 6
1231
+ // TODO in the next major release: remove
1235
1232
  /**
1236
1233
  * Sets module graph for module.
1237
1234
  * @deprecated
@@ -1243,7 +1240,7 @@ class ModuleGraph {
1243
1240
  moduleGraphForModuleMap.set(module, moduleGraph);
1244
1241
  }
1245
1242
 
1246
- // TODO remove in webpack 6
1243
+ // TODO in the next major release: remove
1247
1244
  /**
1248
1245
  * Clear module graph for module.
1249
1246
  * @deprecated
@@ -1255,11 +1252,11 @@ class ModuleGraph {
1255
1252
  }
1256
1253
  }
1257
1254
 
1258
- // TODO remove in webpack 6
1255
+ // TODO in the next major release: remove
1259
1256
  /** @type {WeakMap<Module, ModuleGraph>} */
1260
1257
  const moduleGraphForModuleMap = new WeakMap();
1261
1258
 
1262
- // TODO remove in webpack 6
1259
+ // TODO in the next major release: remove
1263
1260
  /** @type {Map<string, (module: Module) => ModuleGraph>} */
1264
1261
  const deprecateMap = new Map();
1265
1262
 
@@ -6,8 +6,8 @@
6
6
  "use strict";
7
7
 
8
8
  /** @import Dependency, { GetConditionFn } from "./Dependency" */
9
- /** @import Module from "./Module" */
10
- /** @import { RuntimeSpec } from "./util/runtime" */
9
+ /** @import Module from "../module/Module" */
10
+ /** @import { RuntimeSpec } from "../util/runtime" */
11
11
 
12
12
  /**
13
13
  * Module itself is not connected, but transitive modules are connected transitively.
@@ -5,27 +5,27 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const ModuleGraphConnection = require("./ModuleGraphConnection");
9
- const memoize = require("./util/memoize");
8
+ const memoize = require("../util/memoize");
10
9
 
11
- const { getEntryRuntime, mergeRuntime } = require("./util/runtime");
10
+ const { getEntryRuntime, mergeRuntime } = require("../util/runtime");
11
+ const ModuleGraphConnection = require("./ModuleGraphConnection");
12
12
 
13
13
  const getAsyncDependencyToInitialChunkError = memoize(() =>
14
- require("./errors/AsyncDependencyToInitialChunkError")
14
+ require("../errors/AsyncDependencyToInitialChunkError")
15
15
  );
16
16
 
17
17
  /** @import AsyncDependenciesBlock from "./AsyncDependenciesBlock" */
18
18
  /** @import Chunk from "./Chunk" */
19
19
  /** @import ChunkGroup from "./ChunkGroup" */
20
- /** @import Compilation from "./Compilation" */
20
+ /** @import Compilation from "../Compilation" */
21
21
  /** @import DependenciesBlock from "./DependenciesBlock" */
22
22
  /** @import { DependencyLocation } from "./Dependency" */
23
23
  /** @import Entrypoint, { EntryOptions } from "./Entrypoint" */
24
- /** @import Module from "./Module" */
24
+ /** @import Module from "../module/Module" */
25
25
  /** @import ModuleGraph from "./ModuleGraph" */
26
26
  /** @import { ConnectionState } from "./ModuleGraphConnection" */
27
- /** @import { Logger } from "./logging/Logger" */
28
- /** @import { RuntimeSpec } from "./util/runtime" */
27
+ /** @import { Logger } from "../logging/Logger" */
28
+ /** @import { RuntimeSpec } from "../util/runtime" */
29
29
 
30
30
  /**
31
31
  * Defines the queue item type used by this module.
@@ -43,13 +43,14 @@ const getAsyncDependencyToInitialChunkError = memoize(() =>
43
43
  * @typedef {object} ChunkGroupInfo
44
44
  * @property {ChunkGroup} chunkGroup the chunk group
45
45
  * @property {RuntimeSpec} runtime the runtimes
46
- * @property {boolean} initialized is this chunk group initialized
47
46
  * @property {bigint | undefined} minAvailableModules current minimal set of modules available at this point
48
47
  * @property {bigint[]} availableModulesToBeMerged enqueued updates to the minimal set of available modules
49
- * @property {Set<Module>=} skippedItems modules that were skipped because module is already available in parent chunks (need to reconsider when minAvailableModules is shrinking)
48
+ * @property {Set<Module>=} skippedItems modules that were skipped because module is already available in parent chunks (need to reconsider when minAvailableModules changes)
50
49
  * @property {Set<[Module, ModuleGraphConnection[]]>=} skippedModuleConnections referenced modules that where skipped because they were not active in this runtime
51
50
  * @property {bigint | undefined} resultingAvailableModules set of modules available including modules from this chunk group
52
- * @property {Set<ChunkGroupInfo> | undefined} children set of children chunk groups, that will be revisited when availableModules shrink
51
+ * @property {bigint | undefined} connectedAvailableModules resultingAvailableModules last passed to children, to detect when it grows
52
+ * @property {Set<ChunkGroupInfo> | undefined} children set of children chunk groups, that will be revisited when resultingAvailableModules changes
53
+ * @property {Set<ChunkGroupInfo> | undefined} parents set of parent chunk groups, whose resultingAvailableModules intersect to minAvailableModules
53
54
  * @property {Set<ChunkGroupInfo> | undefined} availableSources set of chunk groups that are the source for minAvailableModules
54
55
  * @property {Set<ChunkGroupInfo> | undefined} availableChildren set of chunk groups which depend on the this chunk group as availableSource
55
56
  * @property {number} preOrderIndex next pre order index
@@ -358,10 +359,21 @@ const visitModules = (
358
359
  const module = /** @type {Module} */ (block.getRootBlock());
359
360
  const memCache = moduleMemCaches && moduleMemCaches.get(module);
360
361
  if (memCache !== undefined) {
362
+ // an optimization (e.g. side effects) can flip a connection's active
363
+ // state without the module changing — key the cache by the states too
364
+ let stateEtag = "";
365
+ for (const connection of moduleGraph.getOutgoingConnections(module)) {
366
+ if (!connection.dependency || !connection.module || connection.weak) {
367
+ continue;
368
+ }
369
+ const state = connection.getActiveState(runtime);
370
+ stateEtag += state === true ? "T" : state === false ? "F" : "O";
371
+ }
361
372
  /** @type {BlockModulesMap} */
362
373
  const map = memCache.provide(
363
374
  "bundleChunkGraph.blockModules",
364
375
  runtime,
376
+ stateEtag,
365
377
  () => {
366
378
  logger.time("visitModules: prepare");
367
379
  const map = new Map();
@@ -421,7 +433,7 @@ const visitModules = (
421
433
  const blockChunkGroups = new Map();
422
434
 
423
435
  /** @type {Map<ChunkGroupInfo, Set<DependenciesBlock>>} */
424
- const blocksByChunkGroups = new Map();
436
+ const blocksByChunkGroupInfo = new Map();
425
437
 
426
438
  /** @typedef {Map<string, ChunkGroupInfo>} NamedChunkGroup */
427
439
 
@@ -452,6 +464,8 @@ const visitModules = (
452
464
  const queueConnect = new Map();
453
465
  /** @type {Set<ChunkGroupInfo>} */
454
466
  const chunkGroupsForCombining = new Set();
467
+ /** @type {Set<ChunkGroupInfo>} */
468
+ const chunkGroupsForGrowing = new Set();
455
469
 
456
470
  // Fill queue with entrypoint modules
457
471
  // Create ChunkGroupInfo for entrypoints
@@ -465,14 +479,15 @@ const visitModules = (
465
479
  const chunkGroupInfo = {
466
480
  depModule: null,
467
481
  circular: false,
468
- initialized: false,
469
482
  chunkGroup,
470
483
  runtime,
471
484
  minAvailableModules: undefined,
472
485
  availableModulesToBeMerged: [],
473
486
  skippedItems: undefined,
474
487
  resultingAvailableModules: undefined,
488
+ connectedAvailableModules: undefined,
475
489
  children: undefined,
490
+ parents: undefined,
476
491
  availableSources: undefined,
477
492
  availableChildren: undefined,
478
493
  preOrderIndex: 0,
@@ -597,7 +612,6 @@ const visitModules = (
597
612
  depModule,
598
613
  circular: b.circular,
599
614
  chunkGroup: entrypoint,
600
- initialized: false,
601
615
  runtime:
602
616
  entrypoint.options.runtime ||
603
617
  /** @type {string | undefined} */ (entrypoint.name),
@@ -605,7 +619,9 @@ const visitModules = (
605
619
  availableModulesToBeMerged: [],
606
620
  skippedItems: undefined,
607
621
  resultingAvailableModules: undefined,
622
+ connectedAvailableModules: undefined,
608
623
  children: undefined,
624
+ parents: undefined,
609
625
  availableSources: undefined,
610
626
  availableChildren: undefined,
611
627
  preOrderIndex: 0,
@@ -641,16 +657,13 @@ const visitModules = (
641
657
  }
642
658
  } else {
643
659
  entrypoint = /** @type {Entrypoint} */ (cgi.chunkGroup);
644
- // Fill in options the existing entrypoint hasn't set yet. We never
645
- // overwrite: blocks that dedupe to one entrypoint (e.g. several
646
- // workers pointing at the same module) legitimately carry distinct
647
- // values such as `runtime`, so the first block to create the
648
- // entrypoint wins and later ones only contribute missing keys.
649
- // `name` is excluded: it is the entrypoint's identity, fixed at
650
- // creation (and used to key namedChunkGroups), so back-filling it
651
- // from a block that deduped in via its module would leave
652
- // `entrypoint.name` out of sync and make module codegen
653
- // order-dependent, which breaks persistent caching.
660
+ // Fill in only the options still unset: blocks deduping to one
661
+ // entrypoint may carry different values, so the first to create it
662
+ // wins.
663
+
664
+ // `name` is excluded, being the entrypoint's identity and fixed at
665
+ // creation. Back-filling it would make codegen order-dependent, which
666
+ // breaks persistent caching.
654
667
  const existingOptions = entrypoint.options;
655
668
  for (const key_ of Object.keys(entryOptions)) {
656
669
  const key =
@@ -703,14 +716,15 @@ const visitModules = (
703
716
  cgi = {
704
717
  depModule,
705
718
  circular: b.circular,
706
- initialized: false,
707
719
  chunkGroup: c,
708
720
  runtime: chunkGroupInfo.runtime,
709
721
  minAvailableModules: undefined,
710
722
  availableModulesToBeMerged: [],
711
723
  skippedItems: undefined,
712
724
  resultingAvailableModules: undefined,
725
+ connectedAvailableModules: undefined,
713
726
  children: undefined,
727
+ parents: undefined,
714
728
  availableSources: undefined,
715
729
  availableChildren: undefined,
716
730
  preOrderIndex: 0,
@@ -956,6 +970,12 @@ const visitModules = (
956
970
  let chunkMask = /** @type {bigint} */ (maskByChunk.get(chunk));
957
971
  chunkMask |= ONE_BIGINT << BigInt(moduleOrdinal);
958
972
  maskByChunk.set(chunk, chunkMask);
973
+ if (chunkGroupInfo.resultingAvailableModules !== undefined) {
974
+ // A later block reached this chunk group after its children read this value,
975
+ // we clear it and mark outdated so the children reconnect and drop it
976
+ chunkGroupInfo.resultingAvailableModules = undefined;
977
+ outdatedChunkGroupInfo.add(chunkGroupInfo);
978
+ }
959
979
  }
960
980
  // fallthrough
961
981
  case ENTER_MODULE: {
@@ -1012,6 +1032,19 @@ const visitModules = (
1012
1032
  }
1013
1033
  };
1014
1034
 
1035
+ /**
1036
+ * Get the modules in the chunks of a chunk group.
1037
+ * @param {ChunkGroupInfo} chunkGroupInfo The info object for the chunk group
1038
+ * @returns {bigint} The mask of modules in the chunks of the chunk group
1039
+ */
1040
+ const getChunkGroupMask = (chunkGroupInfo) => {
1041
+ let mask = ZERO_BIGINT;
1042
+ for (const chunk of chunkGroupInfo.chunkGroup.chunks) {
1043
+ mask |= /** @type {bigint} */ (maskByChunk.get(chunk));
1044
+ }
1045
+ return mask;
1046
+ };
1047
+
1015
1048
  /**
1016
1049
  * Calculate resulting available modules.
1017
1050
  * @param {ChunkGroupInfo} chunkGroupInfo The info object for the chunk group
@@ -1022,18 +1055,9 @@ const visitModules = (
1022
1055
  return chunkGroupInfo.resultingAvailableModules;
1023
1056
  }
1024
1057
 
1025
- let resultingAvailableModules = /** @type {bigint} */ (
1026
- chunkGroupInfo.minAvailableModules
1027
- );
1028
-
1029
- // add the modules from the chunk group to the set
1030
- for (const chunk of chunkGroupInfo.chunkGroup.chunks) {
1031
- const mask = /** @type {bigint} */ (maskByChunk.get(chunk));
1032
- resultingAvailableModules |= mask;
1033
- }
1034
-
1035
1058
  return (chunkGroupInfo.resultingAvailableModules =
1036
- resultingAvailableModules);
1059
+ /** @type {bigint} */ (chunkGroupInfo.minAvailableModules) |
1060
+ getChunkGroupMask(chunkGroupInfo));
1037
1061
  };
1038
1062
 
1039
1063
  const processConnectQueue = () => {
@@ -1051,13 +1075,30 @@ const visitModules = (
1051
1075
  // 2. Calculate resulting available modules
1052
1076
  const resultingAvailableModules =
1053
1077
  calculateResultingAvailableModules(chunkGroupInfo);
1078
+ const connectedAvailableModules =
1079
+ chunkGroupInfo.connectedAvailableModules;
1080
+ // Merging only intersects, so when this grew all children need the growing phase
1081
+ if (
1082
+ connectedAvailableModules !== undefined &&
1083
+ resultingAvailableModules !== connectedAvailableModules &&
1084
+ (resultingAvailableModules & ~connectedAvailableModules) !== ZERO_BIGINT
1085
+ ) {
1086
+ for (const child of chunkGroupInfo.children) {
1087
+ if (!child.chunkGroup.isInitial()) chunkGroupsForGrowing.add(child);
1088
+ }
1089
+ }
1090
+ chunkGroupInfo.connectedAvailableModules = resultingAvailableModules;
1054
1091
 
1055
1092
  const runtime = chunkGroupInfo.runtime;
1056
1093
 
1057
1094
  // 3. Update chunk group info
1058
- for (const [target, processBlock] of targets) {
1095
+ for (const [target, queueItem] of targets) {
1096
+ if (target.parents === undefined) {
1097
+ target.parents = new Set();
1098
+ }
1099
+ target.parents.add(chunkGroupInfo);
1059
1100
  target.availableModulesToBeMerged.push(resultingAvailableModules);
1060
- chunkGroupsForMerging.add([target, processBlock]);
1101
+ chunkGroupsForMerging.add([target, queueItem]);
1061
1102
  const oldRuntime = target.runtime;
1062
1103
  const newRuntime = mergeRuntime(oldRuntime, runtime);
1063
1104
  if (oldRuntime !== newRuntime) {
@@ -1075,7 +1116,7 @@ const visitModules = (
1075
1116
  statProcessedChunkGroupsForMerging += chunkGroupsForMerging.size;
1076
1117
 
1077
1118
  // Execute the merge
1078
- for (const [info, processBlock] of chunkGroupsForMerging) {
1119
+ for (const [info, queueItem] of chunkGroupsForMerging) {
1079
1120
  const availableModulesToBeMerged = info.availableModulesToBeMerged;
1080
1121
  const cachedMinAvailableModules = info.minAvailableModules;
1081
1122
  let minAvailableModules = cachedMinAvailableModules;
@@ -1102,25 +1143,17 @@ const visitModules = (
1102
1143
  outdatedChunkGroupInfo.add(info);
1103
1144
  }
1104
1145
 
1105
- if (processBlock) {
1106
- let blocks = blocksByChunkGroups.get(info);
1107
- if (!blocks) {
1108
- blocksByChunkGroups.set(info, (blocks = new Set()));
1109
- }
1110
-
1111
- // Whether to walk block depends on minAvailableModules and input block.
1112
- // We can treat creating chunk group as a function with 2 input, entry block and minAvailableModules
1113
- // If input is the same, we can skip re-walk
1114
- let needWalkBlock = !info.initialized || changed;
1115
- if (!blocks.has(processBlock.block)) {
1116
- needWalkBlock = true;
1117
- blocks.add(processBlock.block);
1146
+ if (queueItem !== null) {
1147
+ let blocks = blocksByChunkGroupInfo.get(info);
1148
+ if (blocks === undefined) {
1149
+ blocks = new Set();
1150
+ blocksByChunkGroupInfo.set(info, blocks);
1118
1151
  }
1119
1152
 
1120
- if (needWalkBlock) {
1121
- info.initialized = true;
1122
- queueDelayed.push(processBlock);
1123
- }
1153
+ // A walk depends only on the block and minAvailableModules: skip it when both are seen
1154
+ const newBlock = !blocks.has(queueItem.block);
1155
+ if (newBlock) blocks.add(queueItem.block);
1156
+ if (newBlock || changed) queueDelayed.push(queueItem);
1124
1157
  }
1125
1158
  }
1126
1159
  chunkGroupsForMerging.clear();
@@ -1155,6 +1188,47 @@ const visitModules = (
1155
1188
  chunkGroupsForCombining.clear();
1156
1189
  };
1157
1190
 
1191
+ const processChunkGroupsForGrowing = () => {
1192
+ for (const info of chunkGroupsForGrowing) {
1193
+ /** @type {bigint | undefined} */
1194
+ let availableModules;
1195
+ for (const parent of /** @type {Set<ChunkGroupInfo>} */ (info.parents)) {
1196
+ const resultingAvailableModules =
1197
+ calculateResultingAvailableModules(parent);
1198
+ availableModules =
1199
+ availableModules === undefined
1200
+ ? resultingAvailableModules
1201
+ : availableModules & resultingAvailableModules;
1202
+ // Each parent covers minAvailableModules, so the intersection cannot drop below it
1203
+ if (availableModules === info.minAvailableModules) break;
1204
+ }
1205
+ if (availableModules === info.minAvailableModules) continue;
1206
+ info.minAvailableModules = availableModules;
1207
+ info.resultingAvailableModules = undefined;
1208
+ outdatedChunkGroupInfo.add(info);
1209
+ // Reverse of revisiting skipped items: move the own modules now available
1210
+ // to skippedItems, where they are added back if it shrinks again
1211
+ for (const chunk of info.chunkGroup.chunks) {
1212
+ let chunkMask = /** @type {bigint} */ (maskByChunk.get(chunk));
1213
+ const coveredModules =
1214
+ chunkMask & /** @type {bigint} */ (availableModules);
1215
+ if (coveredModules === ZERO_BIGINT) continue;
1216
+ if (info.skippedItems === undefined) {
1217
+ info.skippedItems = new Set();
1218
+ }
1219
+ for (const module of chunkGraph.getChunkModules(chunk)) {
1220
+ const ordinal = getModuleOrdinal(module);
1221
+ if (!isOrdinalSetInMask(coveredModules, ordinal)) continue;
1222
+ chunkGraph.disconnectChunkAndModule(chunk, module);
1223
+ chunkMask &= ~(ONE_BIGINT << BigInt(ordinal));
1224
+ info.skippedItems.add(module);
1225
+ }
1226
+ maskByChunk.set(chunk, chunkMask);
1227
+ }
1228
+ }
1229
+ chunkGroupsForGrowing.clear();
1230
+ };
1231
+
1158
1232
  const processOutdatedChunkGroupInfo = () => {
1159
1233
  statChunkGroupInfoUpdated += outdatedChunkGroupInfo.size;
1160
1234
  // Revisit skipped elements
@@ -1212,21 +1286,21 @@ const visitModules = (
1212
1286
  }
1213
1287
  }
1214
1288
 
1215
- // 2. Reconsider children chunk groups
1216
- if (info.children !== undefined) {
1289
+ // 3. Reconsider children chunk groups
1290
+ if (info.children !== undefined && info.children.size > 0) {
1217
1291
  statChildChunkGroupsReconnected += info.children.size;
1292
+ let connectList = queueConnect.get(info);
1293
+ if (connectList === undefined) {
1294
+ /** @type {ConnectList} */
1295
+ connectList = new Set();
1296
+ queueConnect.set(info, connectList);
1297
+ }
1218
1298
  for (const cgi of info.children) {
1219
- let connectList = queueConnect.get(info);
1220
- if (connectList === undefined) {
1221
- /** @type {ConnectList} */
1222
- connectList = new Set();
1223
- queueConnect.set(info, connectList);
1224
- }
1225
1299
  connectList.add([cgi, null]);
1226
1300
  }
1227
1301
  }
1228
1302
 
1229
- // 3. Reconsider chunk groups for combining
1303
+ // 4. Reconsider chunk groups for combining
1230
1304
  if (info.availableChildren !== undefined) {
1231
1305
  for (const cgi of info.availableChildren) {
1232
1306
  chunkGroupsForCombining.add(cgi);
@@ -1239,7 +1313,12 @@ const visitModules = (
1239
1313
 
1240
1314
  // Iterative traversal of the Module graph
1241
1315
  // Recursive would be simpler to write but could result in Stack Overflows
1242
- while (queue.length || queueConnect.size) {
1316
+ while (
1317
+ queue.length ||
1318
+ queueConnect.size ||
1319
+ outdatedChunkGroupInfo.size ||
1320
+ chunkGroupsForCombining.size
1321
+ ) {
1243
1322
  logger.time("visitModules: visiting");
1244
1323
  processQueue();
1245
1324
  logger.timeAggregateEnd("visitModules: prepare");
@@ -1277,12 +1356,25 @@ const visitModules = (
1277
1356
  queue = queueDelayed.reverse();
1278
1357
  queueDelayed = tempQueue;
1279
1358
  }
1359
+
1360
+ // Grow only after the shrinking phase finishes, so growth
1361
+ // reads each parent's final `resultingAvailableModules`
1362
+ if (
1363
+ queue.length === 0 &&
1364
+ queueConnect.size === 0 &&
1365
+ chunkGroupsForCombining.size === 0 &&
1366
+ chunkGroupsForGrowing.size > 0
1367
+ ) {
1368
+ logger.time("visitModules: growing available modules");
1369
+ processChunkGroupsForGrowing();
1370
+ logger.timeEnd("visitModules: growing available modules");
1371
+ }
1280
1372
  }
1281
1373
 
1282
1374
  for (const info of outdatedOrderIndexChunkGroups) {
1283
1375
  const { chunkGroup, runtime } = info;
1284
1376
 
1285
- const blocks = blocksByChunkGroups.get(info);
1377
+ const blocks = blocksByChunkGroupInfo.get(info);
1286
1378
 
1287
1379
  if (!blocks) {
1288
1380
  continue;
@@ -1370,11 +1462,10 @@ const connectChunkGroups = (
1370
1462
 
1371
1463
  // For each edge in the basic chunk graph
1372
1464
  for (const [block, connections] of blockConnections) {
1373
- // 1. Check if connection is needed
1374
- // When none of the dependencies need to be connected
1375
- // we can skip all of them
1376
- // It's not possible to filter each item so it doesn't create inconsistent
1377
- // connections and modules can only create one version
1465
+ // Skip the whole set when no dependency needs connecting. They cannot be
1466
+ // filtered one by one without inconsistent connections, since a module can
1467
+ // only carry one version.
1468
+
1378
1469
  // TODO maybe decide this per runtime
1379
1470
  if (
1380
1471
  // Blocks with nested blocks must stay connected — skipping orphans the